diff --git a/packages/web/src/components/Share.tsx b/packages/web/src/components/Share.tsx index 9831504c..e7ab477d 100644 --- a/packages/web/src/components/Share.tsx +++ b/packages/web/src/components/Share.tsx @@ -16,6 +16,7 @@ import { IconOpenAI, IconGemini, IconAnthropic } from "./icons/custom" import { IconCpuChip, IconSparkles, + IconGlobeAlt, IconQueueList, IconUserCircle, IconChevronDown, @@ -1283,6 +1284,78 @@ export default function Share(props: { api: string }) { ) }} + {/* Fetch tool */} + + {(part) => { + const metadata = createMemo(() => msg.metadata?.tool[part().toolInvocation.toolCallId]) + const args = part().toolInvocation.args + const url = args.url + const format = args.format + const hasError = metadata()?.error + const result = part().toolInvocation.state === "result" && part().toolInvocation.result + + const duration = createMemo(() => + DateTime.fromMillis(metadata()?.time.end || 0).diff( + DateTime.fromMillis(metadata()?.time.start || 0), + ).toMillis(), + ) + + return ( +
+
+
+ +
+
+
+
+
+ + Fetch + {url} + + + +
+ +
+
+ +
+ showResults((e) => !e)} + /> + +
+ +
+
+
+
+
+
+ +
+
+ ) + }} +
{/* Tool call */} [data-section="content"] > [data-part-tool-body] { gap: 0.5rem; } @@ -349,7 +350,8 @@ } } - [data-part-type="tool-read"] { + [data-part-type="tool-read"], + [data-part-type="tool-fetch"] { [data-part-tool-result] { [data-part-tool-code] { border: 1px solid var(--sl-color-divider); @@ -359,6 +361,8 @@ pre { line-height: 1.6; font-size: 0.75rem; + white-space: pre-wrap; + word-break: break-word; } } }