diff --git a/packages/paperclip-runner/src/cli/opencode-app-server-proxy.ts b/packages/paperclip-runner/src/cli/opencode-app-server-proxy.ts index 00bac836112..92391091de1 100644 --- a/packages/paperclip-runner/src/cli/opencode-app-server-proxy.ts +++ b/packages/paperclip-runner/src/cli/opencode-app-server-proxy.ts @@ -223,8 +223,7 @@ async function pumpEvents(opened: HarnessSession): Promise { // The inner OpenCode driver publishes session-scoped model metadata as // an item before any turn exists. The outer Codex protocol facade emits // its own model item, so forwarding this unbound duplicate would quite - // correctly trip the facade's strict turn-binding validator. Token - // deltas runnerd does not consume stay here; see the predicate. + // correctly trip the facade's strict turn-binding validator. if ( !shouldForwardOpenCodeProxyItem({ eventType: event.eventType, diff --git a/packages/paperclip-runner/src/cli/opencode-proxy-events.test.ts b/packages/paperclip-runner/src/cli/opencode-proxy-events.test.ts index afac016bd10..ee2de334279 100644 --- a/packages/paperclip-runner/src/cli/opencode-proxy-events.test.ts +++ b/packages/paperclip-runner/src/cli/opencode-proxy-events.test.ts @@ -23,9 +23,6 @@ describe("OpenCode runnerd proxy event boundary", () => { }); it("keeps per-token deltas runnerd discards from queueing ahead of a tool call", () => { - // One provider step: streamed reasoning and tool output, a completed - // reasoning item, then the tool call request. runnerd pays a durable state - // save for every frame it reads, in order, before it reaches the request. const framesBeforeToolCall = (tokens: number) => { vi.useFakeTimers(); try { diff --git a/packages/paperclip-runner/src/cli/opencode-proxy-events.ts b/packages/paperclip-runner/src/cli/opencode-proxy-events.ts index ad80b81769e..04de0faf752 100644 --- a/packages/paperclip-runner/src/cli/opencode-proxy-events.ts +++ b/packages/paperclip-runner/src/cli/opencode-proxy-events.ts @@ -19,16 +19,6 @@ export function openCodeProxyToolNotification(input: { } }; } -/** - * runnerd reads this proxy's frames in order, only after its controller - * acknowledges earlier events, and saves its whole durable provider state - * (including every tool result retained in the turn) for each frame it reads. - * Its Codex facade turns only assistant text deltas into events; it discards - * every other `item/delta`. OpenCode reports reasoning and tool output one - * token at a time, so forwarding those deltas queued each tool call behind - * hundreds of discarded frames, and the wait grew with every result the turn - * retained. Completed reasoning and tool items still arrive as item/completed. - */ export function shouldForwardOpenCodeProxyItem(input: { eventType?: string; turnId?: string;