]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/blob
38724e8d7717381e4dd47b41d898fca88eda44d9
[pkg/ggml/sources/llama.cpp] /
1 <script lang="ts">
2 import { parseRunJavascriptMeta } from './parsers/run-javascript';
3 import ToolCallBlock from './ToolCallBlock.svelte';
4 import { Terminal, XCircle } from '@lucide/svelte';
5 import { SyntaxHighlightedCode } from '$lib/components/app';
6 import { MAX_HEIGHT_CODE_BLOCK } from '$lib/constants';
7 import { FileTypeText } from '$lib/enums';
8 import { type AgenticSection, getBuiltinToolUi } from '$lib/utils';
9
10 interface Props {
11 section: AgenticSection;
12 open: boolean;
13 isStreaming: boolean;
14 onToggle?: () => void;
15 }
16
17 let { isStreaming, onToggle, open, section }: Props = $props();
18
19 const runJsMeta = $derived(parseRunJavascriptMeta(section));
20 const title = $derived(getBuiltinToolUi(section.toolName)?.label ?? section.toolName ?? '');
21 </script>
22
23 <ToolCallBlock {section} {open} {isStreaming} meta={runJsMeta} {title} {onToggle}>
24 {#snippet children(meta, ctx)}
25 {#if ctx.isPending}
26 <div class="rounded bg-muted/20 p-2 text-xs text-muted-foreground/70 italic">Running...</div>
27 {:else if meta?.errorMessage}
28 <div
29 class="flex items-start gap-2 rounded bg-red-500/10 p-2 text-xs text-red-600 italic dark:text-red-400"
30 >
31 <XCircle class="mt-0.5 h-3 w-3 shrink-0" />
32 <span>{meta.errorMessage}</span>
33 </div>
34 <div class="mt-3">
35 <SyntaxHighlightedCode
36 code={meta.code}
37 language={FileTypeText.JAVASCRIPT}
38 maxHeight={MAX_HEIGHT_CODE_BLOCK}
39 streaming={ctx.isCodeStreaming}
40 />
41 </div>
42 {:else if meta}
43 <SyntaxHighlightedCode
44 code={meta.code}
45 language={FileTypeText.JAVASCRIPT}
46 maxHeight={MAX_HEIGHT_CODE_BLOCK}
47 streaming={ctx.isCodeStreaming}
48 />
49 <div class="mb-2 mt-3 flex items-center gap-2 text-xs text-muted-foreground/70">
50 <Terminal class="h-3 w-3" />
51 <span>Console</span>
52 {#if meta.timeoutMs != null}
53 <span class="font-mono">&middot;&nbsp;timeout&nbsp;{meta.timeoutMs}&nbsp;ms</span>
54 {/if}
55 </div>
56 {#if section.toolResult}
57 <div class="mt-1">
58 <SyntaxHighlightedCode
59 code={section.toolResult}
60 language={FileTypeText.JAVASCRIPT}
61 maxHeight={MAX_HEIGHT_CODE_BLOCK}
62 />
63 </div>
64 {:else}
65 <div class="rounded bg-muted/20 p-2 text-xs text-muted-foreground/70 italic">No output</div>
66 {/if}
67 {/if}
68 {/snippet}
69 </ToolCallBlock>