From db6e889009d4192e189e2b9a3de3de54132373de Mon Sep 17 00:00:00 2001 From: Lyon <88232613+pikasTech@users.noreply.github.com> Date: Wed, 24 Jun 2026 04:38:15 +0800 Subject: [PATCH] fix(workbench): pass projection context to message writer (#2012) --- internal/cloud/code-agent-trace-store.test.ts | 7 +++++-- internal/cloud/code-agent-trace-store.ts | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/cloud/code-agent-trace-store.test.ts b/internal/cloud/code-agent-trace-store.test.ts index a7b5a449..85c6440d 100644 --- a/internal/cloud/code-agent-trace-store.test.ts +++ b/internal/cloud/code-agent-trace-store.test.ts @@ -45,7 +45,7 @@ test("code agent trace store dedupes repeated AgentRun source events", () => { assert.deepEqual(snapshot.events.map((item) => item.label), ["agentrun:backend:resource-bundle-materialized", "agentrun:assistant:message"]); }); -test("durable code agent trace store projects appended events without counting assistant deltas", () => { +test("durable code agent trace store projects appended events without counting assistant deltas", async () => { const writes = []; const workbenchWrites = []; const baseStore = createCodeAgentTraceStore({ maxEvents: 20 }); @@ -66,6 +66,8 @@ test("durable code agent trace store projects appended events without counting a traceStore.append(traceId, { type: "request", status: "accepted", label: "request:accepted", sessionId: "ses_trace_store_durable" }); traceStore.appendAssistantDelta(traceId, { itemId: "assistant", chunk: "hello" }); + await Promise.resolve(); + await Promise.resolve(); const snapshot = traceStore.snapshot(traceId); assert.equal(snapshot.eventCount, 1); @@ -76,7 +78,8 @@ test("durable code agent trace store projects appended events without counting a assert.equal(writes[0].requestMeta.agentSessionId, "ses_trace_store_durable"); assert.equal(workbenchWrites.length, 1); assert.equal(workbenchWrites[0].event.traceId, traceId); - assert.equal(workbenchWrites[0].requestMeta.sessionId, undefined); + assert.equal(workbenchWrites[0].requestMeta.sessionId, "ses_trace_store_durable"); + assert.equal(workbenchWrites[0].requestMeta.agentSessionId, "ses_trace_store_durable"); }); test("code agent trace store retains six thousand regular events", () => { diff --git a/internal/cloud/code-agent-trace-store.ts b/internal/cloud/code-agent-trace-store.ts index 1d0bf22e..f1d0e594 100644 --- a/internal/cloud/code-agent-trace-store.ts +++ b/internal/cloud/code-agent-trace-store.ts @@ -265,7 +265,7 @@ async function persistTraceEventAsync(traceEventStore, event, meta = {}, workben } if (typeof workbenchEventWriter === "function") { try { - await workbenchEventWriter(event, meta); + await workbenchEventWriter(event, projectionContext); } catch (error) { console.error(`[workbench-projection] workbench event writer failed: traceId=${event.traceId} error=${error?.message ?? error}`); }