From 0ae805b28b5160b8d9fb43635fa172961f6550cc Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Tue, 19 May 2026 21:29:08 +0900 Subject: feat: inline tool display and thinking/reasoning support - Tool calls now appear at their stream position within messages (ContentSegment model) - Added reasoning/thinking display: collapsible
block above content - Set DeepSeek V4 Flash reasoningEffort to max via providerOptions - ChatMessage.content changed from string to ContentSegment[] (text | tool-call) - Agent handles AI SDK reasoning events, yields reasoning-delta - Fixed duplicate key in ChatMessage.svelte each block --- .../frontend/src/lib/components/ChatMessage.svelte | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 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 447bb29..5212790 100644 --- a/packages/frontend/src/lib/components/ChatMessage.svelte +++ b/packages/frontend/src/lib/components/ChatMessage.svelte @@ -9,18 +9,21 @@ const isUser = $derived(message.role === "user");
- {#if message.content} - {message.content} + {#if message.thinking} +
+ Thinking... +

{message.thinking}

+
{/if} + {#each message.content as segment, i (segment.type === "tool-call" ? segment.id : i)} + {#if segment.type === "text"} + {segment.text} + {:else if segment.type === "tool-call"} + + {/if} + {/each} {#if message.isStreaming} {/if} - {#if message.toolCalls && message.toolCalls.length > 0} -
- {#each message.toolCalls as toolCall (toolCall.id)} - - {/each} -
- {/if}
-- cgit v1.2.3