- Added runId?: string to ExecEventBase type in exec-events.ts - Added runId to all three emitExecEvent calls (exec.started, exec.output, exec.completed) - Fixes Crabwalk mismatch where it expects exec.runId but Gateway sent context.runId - runId is sourced from session.execEvents.context?.runId for backward compatibility Resolves: Crabwalk exec nodes not displaying due to schema mismatch
2.0 KiB
2.0 KiB
CONTINUITY.md — Exec Events E2E Fix
Goal
Make exec events (Codex, Claude, etc.) visible in Crabwalk UI as distinct "EXEC" nodes — not "agent" or "chat".
Success Criteria
- When Codex runs, Crabwalk shows an "EXEC" labeled node (not "AGENT")
- Exec events flow: Gateway emits → WebSocket broadcasts → Crabwalk receives → UI renders
- All changes have test coverage
- Clean git history with meaningful commits
Constraints/Assumptions
- Gateway code:
/home/clawdbot/dev/clawdbot-exec-events/ - Crabwalk code:
/home/clawdbot/apps/crabwalk/ - Config already has
hooks.exec.emitEvents: trueand whitelist - Must use test-driven approach
Key Decisions
- Rolled back cowboy changes (2026-01-27)
- Starting fresh with proper beads model
State
Done
- Rolled back uncommitted changes
- Created CONTINUITY.md
- Bead 1: Audit — Full E2E flow audit complete (see AUDIT_REPORT.md)
Now
- Bead 2: Write failing test for top-level runId in exec events
Next
- Bead 3: Update Gateway exec-events.ts types (add top-level runId)
- Bead 4: Update bash-tools.exec.ts emission call sites
- Bead 5: E2E validation with Crabwalk
Open Questions (RESOLVED)
- ✅ CONFIRMED: Exec events ARE being emitted (Line 406-408, server.impl.ts)
- ✅ CONFIRMED: Crabwalk HAS distinct ExecNode.tsx component (not reusing AgentNode)
- ✅ CONFIRMED: runId IS required for session linking but optional in Gateway
- ✅ ROOT CAUSE: Gateway sends
context.runId(nested, optional), Crabwalk expectsexec.runId(top-level, required)
Working Set
- Gateway exec emission:
src/agents/bash-tools.exec.ts - Gateway broadcast:
src/gateway/server.impl.ts - Exec event types:
src/infra/exec-events.ts - Crabwalk parser:
/home/clawdbot/apps/crabwalk/src/integrations/clawdbot/parser.ts - Crabwalk UI:
/home/clawdbot/apps/crabwalk/src/components/monitor/ExecNode.tsx - Crabwalk graph:
/home/clawdbot/apps/crabwalk/src/components/monitor/ActionGraph.tsx