From 2dc55b5cc7daa1640f142fcaae3ae787f7888998 Mon Sep 17 00:00:00 2001 From: DBT Date: Tue, 24 Feb 2026 03:39:41 +0000 Subject: [PATCH] improve autonomy status visibility and gateway autonomy status output --- cmd/clawgo/cmd_gateway.go | 7 ++++++- cmd/clawgo/cmd_status.go | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/cmd/clawgo/cmd_gateway.go b/cmd/clawgo/cmd_gateway.go index d4712e8..bcab3b2 100644 --- a/cmd/clawgo/cmd_gateway.go +++ b/cmd/clawgo/cmd_gateway.go @@ -342,16 +342,21 @@ func gatewayAutonomyControlCmd(args []string) error { return nil case "status": enabled := true + reason := "default" if data, err := os.ReadFile(ctrlPath); err == nil { var c struct{ Enabled bool `json:"enabled"` } if json.Unmarshal(data, &c) == nil { enabled = c.Enabled + if !c.Enabled { + reason = "control_file" + } } } if _, err := os.Stat(pausePath); err == nil { enabled = false + reason = "pause_file" } - fmt.Printf("Autonomy status: %v\n", enabled) + fmt.Printf("Autonomy status: %v (%s)\n", enabled, reason) fmt.Printf("Control file: %s\n", ctrlPath) fmt.Printf("Pause file: %s\n", pausePath) return nil diff --git a/cmd/clawgo/cmd_status.go b/cmd/clawgo/cmd_status.go index bf7d086..0c6b7e4 100644 --- a/cmd/clawgo/cmd_status.go +++ b/cmd/clawgo/cmd_status.go @@ -94,6 +94,9 @@ func statusCmd() { triggerStats := filepath.Join(workspace, "memory", "trigger-stats.json") if data, err := os.ReadFile(triggerStats); err == nil { fmt.Printf("Trigger Stats: %s\n", strings.TrimSpace(string(data))) + if summary := summarizeAutonomyActions(data); summary != "" { + fmt.Printf("Autonomy Action Stats: %s\n", summary) + } } auditPath := filepath.Join(workspace, "memory", "trigger-audit.jsonl") if errs, err := collectRecentTriggerErrors(auditPath, 5); err == nil && len(errs) > 0 { @@ -165,6 +168,23 @@ func printTemplateField(name, current, def string) { fmt.Printf(" %s: %s\n", name, state) } +func summarizeAutonomyActions(statsJSON []byte) string { + var payload struct { + Counts map[string]int `json:"counts"` + } + if err := json.Unmarshal(statsJSON, &payload); err != nil || payload.Counts == nil { + return "" + } + keys := []string{"autonomy:dispatch", "autonomy:waiting", "autonomy:resume", "autonomy:blocked", "autonomy:complete"} + parts := make([]string, 0, len(keys)) + for _, k := range keys { + if v, ok := payload.Counts[k]; ok { + parts = append(parts, fmt.Sprintf("%s=%d", strings.TrimPrefix(k, "autonomy:"), v)) + } + } + return strings.Join(parts, " ") +} + func autonomyControlState(workspace string) string { memDir := filepath.Join(workspace, "memory") pausePath := filepath.Join(memDir, "autonomy.pause")