From 8676bd29452f7539622901cb5ae703a3fdaebd07 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Thu, 15 Oct 2026 08:27:26 +0900 Subject: feat(tool-call-cards): pair calls and results in summarized collapsible bubbles --- src/features/chat/ui/ToolCard.svelte | 111 +++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 src/features/chat/ui/ToolCard.svelte (limited to 'src/features/chat/ui/ToolCard.svelte') diff --git a/src/features/chat/ui/ToolCard.svelte b/src/features/chat/ui/ToolCard.svelte new file mode 100644 index 0000000..8c6e325 --- /dev/null +++ b/src/features/chat/ui/ToolCard.svelte @@ -0,0 +1,111 @@ + + + + {#snippet title()} + {#if card.status === "pending"} + + {:else if card.status === "error"} + ✗ + {:else} + ✓ + {/if} + + {card.name} + {card.callSummary} + {#each card.callBadges as badge} + {badge} + {/each} + {#if card.resultSummary !== null} + + → {card.resultSummary} + + {/if} + {/snippet} +
+
+
Call
+ {#if card.callDetail.kind === "command"} +
$ {card.callDetail.text}
+ {:else if card.callDetail.kind === "edit"} +
{card.callDetail.path}
+
+
− old
+
{card.callDetail.oldText}
+
+ new
+
{card.callDetail.newText}
+
+ {:else} +
+ {#each card.callDetail.fields as field} +
+
{field.key}
+
+
{field.value}
+
+
+ {/each} +
+ {/if} +
+
+
Response
+ {#if card.output === null} + running… + {:else} +
+ {#if card.output.kind === "full"} +
{card.output.lines.join("\n") || "(no output)"}
+ {:else} + {#if showAll} +
{card.output.all.join("\n")}
+ {:else} +
{card.output.head.join("\n")}
+ {/if} + + {#if !showAll} +
{card.output.tail.join("\n")}
+ {/if} + {/if} +
+ {/if} +
+
+
-- cgit v1.2.3