Multi-agent audit + aggressive cleanup across server/web/coder/booterm, delivered behind a DEFER discipline so none of the in-flight files were touched. Removes dead code/deps/columns, dedups server + coder helpers, and splits the oversized modules (tools.ts, opencode-server.ts, sentinel-summaries, turn.ts, TerminalPane.tsx) behind stable contracts. Adds 78 parity/unit tests (server 587, coder 323); fixes two latent bugs (ChatPane queue keys, FileViewerOverlay blank-line parity). Intended tag: v2.7.12-audit-cleanup. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
24 lines
1.2 KiB
TypeScript
24 lines
1.2 KiB
TypeScript
/**
|
|
* normalize-agent-status (#10) — clean-room vendor-event → bucket mapping.
|
|
*
|
|
* Different coding agents (claude, opencode, codex/gemini, goose, qwen) emit
|
|
* lifecycle hook events under inconsistent names: PascalCase (`SessionStart`),
|
|
* snake_case (`session_start`), camelCase (`sessionStart`), and a handful of
|
|
* provider-specific approval events (`exec_approval_request`). This module
|
|
* collapses every known event name into one of three coarse signals:
|
|
*
|
|
* working — the agent is actively progressing a turn
|
|
* blocked — the agent is waiting on a human (permission / approval / question)
|
|
* done — the turn / session ended cleanly
|
|
*
|
|
* `null` is returned for anything unrecognized so callers can ignore noise.
|
|
*
|
|
* Built now for the scoped status-publish, but specifically shaped for reuse by
|
|
* the documented config-injection follow-on: a future notify-hook injected into
|
|
* each agent's native config will POST the RAW vendor event name to a BooCoder
|
|
* endpoint, which runs this helper to derive the normalized status. The names
|
|
* below are facts about each agent's hook surface — not copied vendor code.
|
|
*/
|
|
|
|
export type AgentStatus = 'working' | 'blocked' | 'idle' | 'error';
|