From 50f3e74d0589c8b6120d329ca35dfe74ef94e5e0 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 10 Feb 2026 15:28:42 -0600 Subject: fix(app): task tool rendering --- packages/ui/src/components/message-part.tsx | 102 +++++++++++++++++++--------- 1 file changed, 70 insertions(+), 32 deletions(-) (limited to 'packages/ui/src/components') diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx index 83847a533..3f61b3186 100644 --- a/packages/ui/src/components/message-part.tsx +++ b/packages/ui/src/components/message-part.tsx @@ -877,6 +877,74 @@ ToolRegistry.register({ const data = useData() const i18n = useI18n() const childSessionId = () => props.metadata.sessionId as string | undefined + + const href = createMemo(() => { + const sessionId = childSessionId() + if (!sessionId) return + + const direct = data.sessionHref?.(sessionId) + if (direct) return direct + + if (typeof window === "undefined") return + const path = window.location.pathname + const idx = path.indexOf("/session") + if (idx === -1) return + return `${path.slice(0, idx)}/session/${sessionId}` + }) + + createEffect(() => { + const sessionId = childSessionId() + if (!sessionId) return + const sync = data.syncSession + if (!sync) return + Promise.resolve(sync(sessionId)).catch(() => undefined) + }) + + const handleLinkClick = (e: MouseEvent) => { + const sessionId = childSessionId() + const url = href() + if (!sessionId || !url) return + + e.stopPropagation() + + if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return + + const nav = data.navigateToSession + if (!nav || typeof window === "undefined") return + + e.preventDefault() + const before = window.location.pathname + window.location.search + window.location.hash + nav(sessionId) + setTimeout(() => { + const after = window.location.pathname + window.location.search + window.location.hash + if (after === before) window.location.assign(url) + }, 50) + } + + const trigger = () => ( +
+
+ + {i18n.t("ui.tool.agent", { type: props.input.subagent_type || props.tool })} + + + + + {(url) => ( + + {props.input.description} + + )} + + + {props.input.description} + + + +
+
+ ) + const childToolParts = createMemo(() => { const sessionId = childSessionId() if (!sessionId) return [] @@ -924,13 +992,6 @@ ToolRegistry.register({ }) } - const handleSubtitleClick = () => { - const sessionId = childSessionId() - if (sessionId && data.navigateToSession) { - data.navigateToSession(sessionId) - } - } - const renderChildToolPart = () => { const toolData = childToolPart() if (!toolData) return null @@ -958,21 +1019,7 @@ ToolRegistry.register({ <> - - } - > + }> {renderChildToolPart()}
@@ -991,16 +1038,7 @@ ToolRegistry.register({ - +