diff options
Diffstat (limited to 'packages/ui/src/components')
| -rw-r--r-- | packages/ui/src/components/message-part.tsx | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx index 22aeaa3d5..83847a533 100644 --- a/packages/ui/src/components/message-part.tsx +++ b/packages/ui/src/components/message-part.tsx @@ -876,16 +876,18 @@ ToolRegistry.register({ render(props) { const data = useData() const i18n = useI18n() - const summary = () => - (props.metadata.summary ?? []) as { id: string; tool: string; state: { status: string; title?: string } }[] + const childSessionId = () => props.metadata.sessionId as string | undefined + const childToolParts = createMemo(() => { + const sessionId = childSessionId() + if (!sessionId) return [] + return getSessionToolParts(data.store, sessionId) + }) const autoScroll = createAutoScroll({ working: () => true, overflowAnchor: "auto", }) - const childSessionId = () => props.metadata.sessionId as string | undefined - const childPermission = createMemo(() => { const sessionId = childSessionId() if (!sessionId) return undefined @@ -1006,15 +1008,21 @@ ToolRegistry.register({ data-scrollable > <div ref={autoScroll.contentRef} data-component="task-tools"> - <For each={summary()}> + <For each={childToolParts()}> {(item) => { - const info = getToolInfo(item.tool) + const info = createMemo(() => getToolInfo(item.tool, item.state.input)) + const subtitle = createMemo(() => { + if (info().subtitle) return info().subtitle + if (item.state.status === "completed" || item.state.status === "running") { + return item.state.title + } + }) return ( <div data-slot="task-tool-item"> - <Icon name={info.icon} size="small" /> - <span data-slot="task-tool-title">{info.title}</span> - <Show when={item.state.title}> - <span data-slot="task-tool-subtitle">{item.state.title}</span> + <Icon name={info().icon} size="small" /> + <span data-slot="task-tool-title">{info().title}</span> + <Show when={subtitle()}> + <span data-slot="task-tool-subtitle">{subtitle()}</span> </Show> </div> ) |
