From 8ad5ecae2a5ec8cc1aa0cad793abfbce24802812 Mon Sep 17 00:00:00 2001 From: James Long Date: Wed, 8 Jul 2026 14:12:14 +0000 Subject: [PATCH] fix(tui): keep shell input streaming --- packages/tui/src/context/data.tsx | 8 ++++---- packages/tui/test/cli/tui/data.test.tsx | 8 ++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/tui/src/context/data.tsx b/packages/tui/src/context/data.tsx index adefd3487f..24376ce073 100644 --- a/packages/tui/src/context/data.tsx +++ b/packages/tui/src/context/data.tsx @@ -497,7 +497,7 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({ id: event.data.callID, name: event.data.name, time: { created: event.created }, - state: { status: "pending", input: "" }, + state: { status: "streaming", input: "" }, }) }) break @@ -507,7 +507,7 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({ message.assistant(draft, index, event.data.assistantMessageID), event.data.callID, ) - if (match?.state.status === "pending") match.state.input += event.data.delta + if (match?.state.status === "streaming") match.state.input += event.data.delta }) break case "session.tool.input.ended": @@ -516,7 +516,7 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({ message.assistant(draft, index, event.data.assistantMessageID), event.data.callID, ) - if (match?.state.status === "pending") match.state.input = event.data.text + if (match?.state.status === "streaming") match.state.input = event.data.text }) break case "session.tool.called": @@ -568,7 +568,7 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({ message.assistant(draft, index, event.data.assistantMessageID), event.data.callID, ) - if (!match || (match.state.status !== "pending" && match.state.status !== "running")) return + if (!match || (match.state.status !== "streaming" && match.state.status !== "running")) return match.state = { status: "error", error: event.data.error, diff --git a/packages/tui/test/cli/tui/data.test.tsx b/packages/tui/test/cli/tui/data.test.tsx index b17e6eea57..a2e0e38c73 100644 --- a/packages/tui/test/cli/tui/data.test.tsx +++ b/packages/tui/test/cli/tui/data.test.tsx @@ -1751,6 +1751,14 @@ test("settles pending tools when a live failure arrives", async () => { name: "bash", }, }) + await wait(() => { + const assistant = sync.session.message.get("session-1", "msg_explicit_assistant_9") + return ( + assistant?.type === "assistant" && + assistant.content[0]?.type === "tool" && + assistant.content[0].state.status === "streaming" + ) + }) emitEvent(events, { id: "evt_called_1", created: 0,