diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index fb0836bfb78b..26eff424c84e 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -406,6 +406,10 @@ export namespace Session { part: MessageV2.ReasoningPart, delta: z.string(), }), + z.object({ + part: MessageV2.ToolPart, + delta: z.string(), + }), ]) export const updatePart = fn(UpdatePartInput, async (input) => { diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts index 27071056180a..24c3ddd49d84 100644 --- a/packages/opencode/src/session/processor.ts +++ b/packages/opencode/src/session/processor.ts @@ -117,8 +117,14 @@ export namespace SessionProcessor { toolcalls[value.id] = part as MessageV2.ToolPart break - case "tool-input-delta": + case "tool-input-delta": { + const match = toolcalls[value.id] + if (match && match.state.status === "pending") { + match.state.raw += value.delta + await Session.updatePart({ part: match, delta: value.delta }) + } break + } case "tool-input-end": break