mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-09-30 20:49:41 +02:00
Opt-in (showUltracodeAgents, default OFF) panel that visualizes ultracode / Workflow-tool runs like Claude Code's "working agents" TUI: LEFT = runs + phases (selectable tasks), RIGHT = each run's agents with model, live state, tokens burned, and tool calls. Standalone — ZERO edits to subagent-watcher.ts. A new workflow-run-watcher.ts singleton globs the run-state tree (~/.claude/projects/*/*/workflows/wf_*.json, disjoint from the transcript tree), strips the heavy script/scriptPath/result/logs fields (174KB -> ~25KB/run), and emits workflow:run_* SSE events. The LEFT list ships lightweight summaries (getLightState replay + SSE); the RIGHT pane fetches the full run (with agents[]) via GET /api/workflows/:runId on selection. Backend: workflow-run-watcher.ts, types/workflow-run.ts, config/workflow-config.ts, 3 SSE events, getLightState workflowRuns replay, GET /api/workflows[/:runId], showUltracodeAgents schema key + boot-gate (default OFF) + live toggleService. Frontend: ultracode-panel.js (debounced master-detail render, run/phase select), header launcher (btn-ultracode-agents--hidden marker -> mobile-guard-exempt), App Settings toggle (SYNCED, deliberately not in displayKeys). Agent states on disk are start|progress|done (start=queued; done has durationMs/resultPreview). Tests: workflow-run-watcher (9), workflow-routes (3). Verified: tsc/lint/prettier/frontend-syntax/public-assets/mobile-header-guard clean; full test:ci green (2986 passed); live server + Playwright e2e against 25 real runs (28-agent grid, phase filter, OFF hides launcher). Design: docs/ultracode-agent-viz-plan.md (rev. 3). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1.0 KiB
TypeScript
27 lines
1.0 KiB
TypeScript
/**
|
|
* @fileoverview Workflow (ultracode) run-watcher polling and cache configuration.
|
|
*
|
|
* Controls how frequently WorkflowRunWatcher polls
|
|
* ~/.claude/projects/<projHash>/<sessionUuid>/workflows/wf_*.json
|
|
* and how many runs are cached in memory.
|
|
*
|
|
* Distinct from the Agent-Teams config (team-config.ts). The run-state JSON is
|
|
* rewritten on every agent tick across a whole run (28+ agents), so the watcher
|
|
* relies on a per-file mtime skip; the poll itself is just N stat() calls.
|
|
*
|
|
* @module config/workflow-config
|
|
*/
|
|
|
|
/** Workflow run-state poll interval (ms). Short because a poll is just N mtime stats. */
|
|
export const WORKFLOW_RUN_POLL_INTERVAL_MS = 10_000;
|
|
|
|
/** Max cached workflow runs (LRU eviction). */
|
|
export const MAX_CACHED_WORKFLOW_RUNS = 100;
|
|
|
|
/**
|
|
* Default recency window (minutes) for getRecentRuns(). Generous enough that a
|
|
* recently-finished long run still appears in the LEFT-pane list — filtered on
|
|
* last-activity, not start time, so multi-hour runs don't vanish.
|
|
*/
|
|
export const WORKFLOW_RUN_RECENT_WINDOW_MIN = 240;
|