mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-05-07 02:37:28 +08:00
autonomy M1 phase2: expose idle-run source and block reasons in task queue; add whitelist policy plumbing
This commit is contained in:
@@ -361,6 +361,10 @@ func (al *AgentLoop) appendTaskAuditEvent(taskID string, msg bus.InboundMessage,
|
||||
}
|
||||
path := filepath.Join(al.workspace, "memory", "task-audit.jsonl")
|
||||
_ = os.MkdirAll(filepath.Dir(path), 0755)
|
||||
source := "direct"
|
||||
if msg.Metadata != nil && msg.Metadata["trigger"] != "" {
|
||||
source = msg.Metadata["trigger"]
|
||||
}
|
||||
row := map[string]interface{}{
|
||||
"task_id": taskID,
|
||||
"time": time.Now().UTC().Format(time.RFC3339),
|
||||
@@ -369,6 +373,8 @@ func (al *AgentLoop) appendTaskAuditEvent(taskID string, msg bus.InboundMessage,
|
||||
"chat_id": msg.ChatID,
|
||||
"sender_id": msg.SenderID,
|
||||
"status": status,
|
||||
"source": source,
|
||||
"idle_run": source == "autonomy",
|
||||
"duration_ms": durationMs,
|
||||
"suppressed": suppressed,
|
||||
"retry_count": 0,
|
||||
|
||||
@@ -1436,6 +1436,43 @@ func (s *RegistryServer) handleWebUITaskQueue(w http.ResponseWriter, r *http.Req
|
||||
running = append(running, row)
|
||||
}
|
||||
}
|
||||
|
||||
// Merge autonomy queue states (including waiting/blocked-by-user) for full audit visibility.
|
||||
tasksPath := filepath.Join(strings.TrimSpace(s.workspacePath), "memory", "tasks.json")
|
||||
if tb, err := os.ReadFile(tasksPath); err == nil {
|
||||
var tasks []map[string]interface{}
|
||||
if json.Unmarshal(tb, &tasks) == nil {
|
||||
seen := map[string]struct{}{}
|
||||
for _, it := range items {
|
||||
seen[fmt.Sprintf("%v", it["task_id"])] = struct{}{}
|
||||
}
|
||||
for _, t := range tasks {
|
||||
id := fmt.Sprintf("%v", t["id"])
|
||||
if id == "" {
|
||||
continue
|
||||
}
|
||||
if _, ok := seen[id]; ok {
|
||||
continue
|
||||
}
|
||||
row := map[string]interface{}{
|
||||
"task_id": id,
|
||||
"time": t["updated_at"],
|
||||
"status": t["status"],
|
||||
"source": t["source"],
|
||||
"idle_run": true,
|
||||
"input_preview": t["content"],
|
||||
"block_reason": t["block_reason"],
|
||||
"logs": []string{fmt.Sprintf("autonomy state: %v", t["status"])},
|
||||
"retry_count": 0,
|
||||
}
|
||||
items = append(items, row)
|
||||
if fmt.Sprintf("%v", row["status"]) == "running" {
|
||||
running = append(running, row)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_ = json.NewEncoder(w).Encode(map[string]interface{}{"ok": true, "running": running, "items": items})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user