From 23fcdefea6ec6e87ff9d56dfc3215ab0b76d4443 Mon Sep 17 00:00:00 2001 From: "Grace (Clawdbot)" Date: Wed, 28 Jan 2026 02:04:28 +0100 Subject: [PATCH] feat(exec-events): add top-level sessionKey to payload --- CONTINUITY.md | 11 +++++++---- src/agents/bash-tools.exec.ts | 3 +++ src/infra/exec-events.ts | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CONTINUITY.md b/CONTINUITY.md index 9be937ec5..471eb4bb1 100644 --- a/CONTINUITY.md +++ b/CONTINUITY.md @@ -25,14 +25,17 @@ Make exec events (Codex, Claude, etc.) visible in Crabwalk UI as distinct "EXEC" - [x] Rolled back uncommitted changes - [x] Created CONTINUITY.md - [x] **Bead 1: Audit** — Full E2E flow audit complete (see AUDIT_REPORT.md) +- [x] **Bead 2: Add top-level runId** — Commit `e49b41503` (2026-01-27) + - Added `runId?: string` to ExecEventBase type + - Updated all 3 emitExecEvent calls to include `runId: execEventsState.context?.runId` + - Build passes ### Now -- [ ] Bead 2: Write failing test for top-level runId in exec events +- [ ] E2E validation with Crabwalk ### 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 +- [ ] Push to GitHub (failed earlier due to token permissions) +- [ ] Add test coverage for top-level runId ## Open Questions (RESOLVED) - ✅ CONFIRMED: Exec events ARE being emitted (Line 406-408, server.impl.ts) diff --git a/src/agents/bash-tools.exec.ts b/src/agents/bash-tools.exec.ts index a13f59074..3a894bdc9 100644 --- a/src/agents/bash-tools.exec.ts +++ b/src/agents/bash-tools.exec.ts @@ -577,6 +577,7 @@ async function runExecProcess(opts: { emitExecEvent("exec.output", { sessionId, runId: execEventsState.context?.runId, + sessionKey: execEventsState.context?.sessionKey, pid: session.pid, command: session.command, commandName: execEventsState.commandName, @@ -596,6 +597,7 @@ async function runExecProcess(opts: { emitExecEvent("exec.started", { sessionId, runId: execEventsState.context?.runId, + sessionKey: execEventsState.context?.sessionKey, pid: session.pid, command: session.command, commandName: execEventsState.commandName, @@ -620,6 +622,7 @@ async function runExecProcess(opts: { emitExecEvent("exec.completed", { sessionId, runId: execEventsState.context?.runId, + sessionKey: execEventsState.context?.sessionKey, pid: session.pid, command: session.command, commandName: execEventsState.commandName, diff --git a/src/infra/exec-events.ts b/src/infra/exec-events.ts index 081110c04..dc75e964f 100644 --- a/src/infra/exec-events.ts +++ b/src/infra/exec-events.ts @@ -15,6 +15,7 @@ type ExecEventBase = { seq: number; sessionId: string; runId?: string; + sessionKey?: string; pid?: number; command: string; commandName?: string;