From ca6ee91c5e1167b1929eedbb96c76dfa24e7d026 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Wed, 27 May 2026 18:35:18 +0900 Subject: refactor: ChatMessage.chunks[] union — interleaved thinking, tool batching, error/system chunks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/lib/components/ChatMessage.svelte | 76 +++++++++++++++------- .../src/lib/components/ToolCallDisplay.svelte | 4 +- 2 files changed, 55 insertions(+), 25 deletions(-) (limited to 'packages/frontend/src/lib/components') diff --git a/packages/frontend/src/lib/components/ChatMessage.svelte b/packages/frontend/src/lib/components/ChatMessage.svelte index c6b6034..0c85349 100644 --- a/packages/frontend/src/lib/components/ChatMessage.svelte +++ b/packages/frontend/src/lib/components/ChatMessage.svelte @@ -1,7 +1,7 @@ -{#if isSystem} -
-
- {#each message.content as segment} - {#if segment.type === "text"} - {segment.text} - {/if} - {/each} -
-
-{:else} -
-
- {#if message.thinking} +{#snippet renderChunks(chunks: Chunk[], streaming: boolean | undefined)} + {#each chunks as chunk, i (chunkKey(chunk, i))} + {#if chunk.type === "text"} + + {:else if chunk.type === "thinking"}
Thinking...
-

{message.thinking}

+

{chunk.text}

+ {:else if chunk.type === "tool-batch"} + {#each chunk.calls as call (call.id)} + + {/each} + {:else if chunk.type === "error"} +
+
+ {chunk.message} + {#if chunk.statusCode !== undefined} + status {chunk.statusCode} + {/if} +
+
+ {:else if chunk.type === "system"} +
+ {SYSTEM_KIND_LABEL[chunk.kind]}: + {chunk.text} +
{/if} - {#each message.content as segment, i (segment.type === "tool-call" ? segment.id : i)} - {#if segment.type === "text"} - - {:else if segment.type === "tool-call"} - - {/if} - {/each} + {/each} +{/snippet} + +{#if isSystem} +
+
+ {@render renderChunks(message.chunks, false)} +
+
+{:else} +
+
+ {@render renderChunks(message.chunks, message.isStreaming)} {#if message.isStreaming} {/if} diff --git a/packages/frontend/src/lib/components/ToolCallDisplay.svelte b/packages/frontend/src/lib/components/ToolCallDisplay.svelte index 7c7aef6..1b4ebca 100644 --- a/packages/frontend/src/lib/components/ToolCallDisplay.svelte +++ b/packages/frontend/src/lib/components/ToolCallDisplay.svelte @@ -1,8 +1,8 @@