From a3358089cd693e4522967280b38d3f2029bec67e Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 23 Sep 2025 19:07:58 -0400 Subject: [PATCH] tui: improve message display and add finish reason tracking --- packages/opencode/src/cli/cmd/tui/session.tsx | 21 +++++++------------ packages/opencode/src/session/message-v2.ts | 1 + packages/opencode/src/session/prompt.ts | 1 + packages/sdk/js/src/gen/types.gen.ts | 1 + 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/session.tsx b/packages/opencode/src/cli/cmd/tui/session.tsx index 771841935..e284ff038 100644 --- a/packages/opencode/src/cli/cmd/tui/session.tsx +++ b/packages/opencode/src/cli/cmd/tui/session.tsx @@ -232,10 +232,15 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[] }) { borderColor={Theme.backgroundElement} > {Locale.titlecase(props.message.mode)} - - {props.message.providerID}/{props.message.modelID} + + + + + + + {Locale.titlecase(props.message.mode)}{" "} + {props.message.providerID + "/" + props.message.modelID} - @@ -264,19 +269,9 @@ function resize(el: BoxRenderable) { } function TextPart(props: { part: TextPart; message: AssistantMessage }) { - const sync = useSync() - const agent = createMemo(() => sync.data.agent.find((x) => x.name === props.message.mode)!) - const local = useLocal() - return ( {props.part.text.trim()} - - - {Locale.titlecase(agent().name)}{" "} - {props.message.providerID + "/" + props.message.modelID} - - ) } diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 896ec90d7..d92dc3048 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -282,6 +282,7 @@ export namespace MessageV2 { cwd: z.string(), root: z.string(), }), + finish: z.string().optional(), summary: z.boolean().optional(), cost: z.number(), tokens: z.object({ diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 415db7f06..01c61e3f6 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1080,6 +1080,7 @@ export namespace SessionPrompt { case "finish": assistantMsg.time.completed = Date.now() + assistantMsg.finish = value.finishReason await Session.updateMessage(assistantMsg) break diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts index ac1d51422..19af9b0d0 100644 --- a/packages/sdk/js/src/gen/types.gen.ts +++ b/packages/sdk/js/src/gen/types.gen.ts @@ -624,6 +624,7 @@ export type AssistantMessage = { cwd: string root: string } + finish?: string summary?: boolean cost: number tokens: {