task: task-1753636924-a1d4c708 - created
Change-Id: Ic78528c47ae38114b9b7504f1c4a76f95e93eb13
diff --git a/server/cmd/commands/list_agents.go b/server/cmd/commands/list_agents.go
new file mode 100644
index 0000000..7d0ac86
--- /dev/null
+++ b/server/cmd/commands/list_agents.go
@@ -0,0 +1,63 @@
+package commands
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/spf13/cobra"
+)
+
+var listAgentsCmd = &cobra.Command{
+ Use: "list-agents",
+ Short: "List all configured agents",
+ Long: `List all configured agents with their settings and status.
+
+Examples:
+ staff list-agents`,
+ RunE: runListAgents,
+}
+
+func runListAgents(cmd *cobra.Command, args []string) error {
+ if len(cfg.Agents) == 0 {
+ fmt.Println("No agents configured")
+ return nil
+ }
+
+ fmt.Printf("Found %d configured agents:\n\n", len(cfg.Agents))
+
+ // Display agents in table format
+ fmt.Printf("%-20s %-15s %-12s %-10s %-30s\n", "Name", "Model", "Temperature", "Status", "Role/Description")
+ fmt.Printf("%s\n", strings.Repeat("-", 90))
+
+ for _, agent := range cfg.Agents {
+ status := "stopped"
+ if agentManager.IsAgentRunning(agent.Name) {
+ status = "running"
+ }
+
+ role := agent.Role
+ if role == "" {
+ role = "general"
+ }
+ if len(role) > 27 {
+ role = role[:27] + "..."
+ }
+
+ temp := 0.7
+ if agent.Temperature != nil {
+ temp = *agent.Temperature
+ }
+
+ fmt.Printf("%-20s %-15s %-12.1f %-10s %-30s\n",
+ agent.Name,
+ agent.Model,
+ temp,
+ status,
+ role)
+ }
+
+ fmt.Printf("\nUse 'staff start-agent <agent-name>' to start an agent\n")
+ fmt.Printf("Use 'staff stop-agent <agent-name>' to stop a running agent\n")
+
+ return nil
+}
\ No newline at end of file