@agi-cli/web-sdk 0.1.110 → 0.1.112

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/components/chat/ChatInput.d.ts.map +1 -1
  2. package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
  3. package/dist/components/messages/UserMessageGroup.js +1 -1
  4. package/dist/components/messages/UserMessageGroup.js.map +1 -1
  5. package/dist/components/messages/renderers/BashRenderer.d.ts.map +1 -1
  6. package/dist/components/messages/renderers/BashRenderer.js +30 -26
  7. package/dist/components/messages/renderers/BashRenderer.js.map +1 -1
  8. package/dist/components/messages/renderers/GitStatusRenderer.d.ts.map +1 -1
  9. package/dist/components/messages/renderers/GitStatusRenderer.js +7 -3
  10. package/dist/components/messages/renderers/GitStatusRenderer.js.map +1 -1
  11. package/dist/components/messages/renderers/ListRenderer.d.ts.map +1 -1
  12. package/dist/components/messages/renderers/ListRenderer.js +9 -4
  13. package/dist/components/messages/renderers/ListRenderer.js.map +1 -1
  14. package/dist/components/messages/renderers/ReasoningRenderer.js +1 -1
  15. package/dist/components/messages/renderers/ReasoningRenderer.js.map +1 -1
  16. package/dist/components/messages/renderers/SearchRenderer.d.ts.map +1 -1
  17. package/dist/components/messages/renderers/SearchRenderer.js +10 -26
  18. package/dist/components/messages/renderers/SearchRenderer.js.map +1 -1
  19. package/dist/components/messages/renderers/TreeRenderer.d.ts.map +1 -1
  20. package/dist/components/messages/renderers/TreeRenderer.js +7 -3
  21. package/dist/components/messages/renderers/TreeRenderer.js.map +1 -1
  22. package/dist/components/messages/renderers/shared/CopyButton.d.ts +7 -0
  23. package/dist/components/messages/renderers/shared/CopyButton.d.ts.map +1 -0
  24. package/dist/components/messages/renderers/shared/CopyButton.js +17 -0
  25. package/dist/components/messages/renderers/shared/CopyButton.js.map +1 -0
  26. package/dist/components/messages/renderers/shared/ToolContentBox.d.ts +13 -0
  27. package/dist/components/messages/renderers/shared/ToolContentBox.d.ts.map +1 -0
  28. package/dist/components/messages/renderers/shared/ToolContentBox.js +9 -0
  29. package/dist/components/messages/renderers/shared/ToolContentBox.js.map +1 -0
  30. package/dist/components/messages/renderers/shared/ToolHeader.d.ts +29 -0
  31. package/dist/components/messages/renderers/shared/ToolHeader.d.ts.map +1 -0
  32. package/dist/components/messages/renderers/shared/ToolHeader.js +69 -0
  33. package/dist/components/messages/renderers/shared/ToolHeader.js.map +1 -0
  34. package/dist/components/messages/renderers/shared/index.d.ts +4 -0
  35. package/dist/components/messages/renderers/shared/index.d.ts.map +1 -0
  36. package/dist/components/messages/renderers/shared/index.js +4 -0
  37. package/dist/components/messages/renderers/shared/index.js.map +1 -0
  38. package/dist/components/messages/renderers/types.d.ts +26 -1
  39. package/dist/components/messages/renderers/types.d.ts.map +1 -1
  40. package/dist/components/messages/renderers/utils.d.ts +15 -0
  41. package/dist/components/messages/renderers/utils.d.ts.map +1 -1
  42. package/dist/components/messages/renderers/utils.js +42 -0
  43. package/dist/components/messages/renderers/utils.js.map +1 -1
  44. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatInput.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,OAAO,CAAC;AAapE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,UAAU,cAAc;IACvB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,SAAS;WACD,MAAM,IAAI;GAqZ9B,CAAC"}
1
+ {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatInput.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,OAAO,CAAC;AAazD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,UAAU,cAAc;IACvB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,SAAS;WACD,MAAM,IAAI;GAqZ9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,qBAAqB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACjB;AAOD,eAAO,MAAM,gBAAgB,6DAsI5B,CAAC"}
1
+ {"version":3,"file":"UserMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,qBAAqB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACjB;AAOD,eAAO,MAAM,gBAAgB,6DA0I5B,CAAC"}
@@ -47,7 +47,7 @@ export const UserMessageGroup = memo(function UserMessageGroup({ message }) {
47
47
  const hasImages = images.length > 0;
48
48
  if (!hasContent && !hasImages)
49
49
  return null;
50
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "relative pb-8 pt-6", children: _jsxs("div", { className: "flex gap-3 md:gap-4 justify-end", children: [_jsxs("div", { className: "flex flex-col items-end min-w-0 flex-1 max-w-[calc(100%-3rem)] md:max-w-2xl", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground pb-2 justify-end", children: [_jsx("span", { className: "font-medium text-emerald-700 dark:text-emerald-300", children: "You" }), message.createdAt && _jsx("span", { children: "\u00B7" }), message.createdAt && (_jsx("span", { children: formatTime(message.createdAt) }))] }), _jsxs("div", { className: "inline-block max-w-full text-sm text-foreground leading-relaxed bg-emerald-500/5 border border-emerald-500/20 rounded-xl px-4 py-3 [word-break:break-word] overflow-hidden", children: [hasImages && (_jsx("div", { className: "flex flex-wrap gap-2 mb-2", children: images.map((img) => (_jsx("button", { type: "button", onClick: () => setExpandedImage(img.src), className: "w-16 h-16 rounded-lg overflow-hidden bg-muted hover:ring-2 hover:ring-primary/50 transition-all", children: _jsx("img", { src: img.src, alt: "Attachment", className: "w-full h-full object-cover" }) }, img.id))) })), hasContent && (_jsx("div", { className: "prose prose-invert prose-sm [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 [&_*]:[word-break:break-word] [&_*]:overflow-wrap-anywhere", children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: content }) }))] })] }), _jsx("div", { className: "flex-shrink-0 w-8 flex items-start justify-center", children: _jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 border-emerald-500/50 bg-emerald-500/20 dark:bg-emerald-500/10 relative bg-background", children: _jsx(User, { className: "h-4 w-4 text-emerald-700 dark:text-emerald-300" }) }) })] }) }), expandedImage && (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4", onClick: () => setExpandedImage(null), onKeyDown: (e) => e.key === 'Escape' && setExpandedImage(null), children: [_jsx("button", { type: "button", onClick: () => setExpandedImage(null), className: "absolute top-4 right-4 p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors", children: _jsx(X, { className: "w-6 h-6 text-white" }) }), _jsx("img", { src: expandedImage, alt: "Expanded attachment", className: "max-w-full max-h-full object-contain rounded-lg", onClick: (e) => e.stopPropagation() })] }))] }));
50
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "relative pb-8 pt-6", children: _jsxs("div", { className: "flex gap-3 md:gap-4 justify-end", children: [_jsxs("div", { className: "flex flex-col items-end min-w-0 flex-1 max-w-[calc(100%-3rem)] md:max-w-2xl", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground pb-2 justify-end", children: [_jsx("span", { className: "font-medium text-emerald-700 dark:text-emerald-300", children: "You" }), message.createdAt && _jsx("span", { children: "\u00B7" }), message.createdAt && (_jsx("span", { children: formatTime(message.createdAt) }))] }), _jsxs("div", { className: "inline-block max-w-full text-sm text-foreground leading-relaxed bg-emerald-500/5 border border-emerald-500/20 rounded-xl px-4 py-3 [word-break:break-word] overflow-hidden", children: [hasImages && (_jsx("div", { className: "flex flex-wrap gap-2 mb-2", children: images.map((img) => (_jsx("button", { type: "button", onClick: () => setExpandedImage(img.src), className: "w-16 h-16 rounded-lg overflow-hidden bg-muted hover:ring-2 hover:ring-primary/50 transition-all", children: _jsx("img", { src: img.src, alt: "Attachment", className: "w-full h-full object-cover" }) }, img.id))) })), hasContent && (_jsx("div", { className: "prose prose-invert prose-sm [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 [&_*]:[word-break:break-word] [&_*]:overflow-wrap-anywhere", children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: content }) }))] })] }), _jsx("div", { className: "flex-shrink-0 w-8 flex items-start justify-center", children: _jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 border-emerald-500/50 bg-emerald-500/20 dark:bg-emerald-500/10 relative bg-background", children: _jsx(User, { className: "h-4 w-4 text-emerald-700 dark:text-emerald-300" }) }) })] }) }), expandedImage && (_jsxs("div", { role: "dialog", "aria-modal": "true", className: "fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4", onClick: () => setExpandedImage(null), onKeyDown: (e) => e.key === 'Escape' && setExpandedImage(null), tabIndex: -1, children: [_jsx("button", { type: "button", onClick: () => setExpandedImage(null), className: "absolute top-4 right-4 p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors", children: _jsx(X, { className: "w-6 h-6 text-white" }) }), _jsx("img", { src: expandedImage, alt: "Expanded attachment", className: "max-w-full max-h-full object-contain rounded-lg", onClick: (e) => e.stopPropagation(), onKeyDown: (e) => e.key === 'Enter' && e.stopPropagation() })] }))] }));
51
51
  }, (prevProps, nextProps) => {
52
52
  const prevFirstPart = prevProps.message.parts?.[0];
53
53
  const nextFirstPart = nextProps.message.parts?.[0];
@@ -1 +1 @@
1
- {"version":3,"file":"UserMessageGroup.js","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserMessageGroup.js","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BashRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/BashRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,wBAAgB,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CAqIf"}
1
+ {"version":3,"file":"BashRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/BashRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C,wBAAgB,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CA8Jf"}
@@ -1,13 +1,13 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ChevronDown, ChevronRight, AlertCircle } from 'lucide-react';
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Terminal } from 'lucide-react';
3
3
  import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
4
4
  import { prism, vscDarkPlus, } from 'react-syntax-highlighter/dist/esm/styles/prism';
5
5
  import { formatDuration } from './utils';
6
6
  import { ToolErrorDisplay } from './ToolErrorDisplay';
7
+ import { ToolHeader, ToolHeaderSeparator, ToolHeaderMeta, ToolHeaderSuccess, ToolHeaderError, ToolContentBox, } from './shared';
7
8
  export function BashRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
8
9
  const result = contentJson.result || {};
9
10
  const args = contentJson.args || {};
10
- // Check for tool execution error (ok: false)
11
11
  const hasToolError = typeof result === 'object' && 'ok' in result && result.ok === false;
12
12
  const errorMessage = hasToolError && 'error' in result && typeof result.error === 'string'
13
13
  ? result.error
@@ -19,33 +19,37 @@ export function BashRenderer({ contentJson, toolDurationMs, isExpanded, onToggle
19
19
  const stderr = String(result.stderr || '');
20
20
  const exitCode = Number(result.exitCode ?? 0);
21
21
  const cmd = String(args.cmd || '');
22
+ const cwd = args.cwd ? String(args.cwd) : undefined;
22
23
  const timeStr = formatDuration(toolDurationMs);
23
24
  const syntaxTheme = document?.documentElement.classList.contains('dark')
24
25
  ? vscDarkPlus
25
26
  : prism;
26
27
  const hasOutput = stdout.length > 0 || stderr.length > 0;
27
- const canExpand = hasOutput || hasToolError;
28
- return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: () => canExpand && onToggle(), className: `flex items-center gap-2 transition-colors w-full min-w-0 ${hasToolError
29
- ? 'text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200'
30
- : canExpand
31
- ? 'text-muted-foreground hover:text-foreground'
32
- : 'text-muted-foreground'}`, children: [canExpand &&
33
- (isExpanded ? (_jsx(ChevronDown, { className: "h-3 w-3 flex-shrink-0" })) : (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0" }))), !canExpand && _jsx("div", { className: "w-3 flex-shrink-0" }), hasToolError && (_jsx(AlertCircle, { className: "h-3 w-3 flex-shrink-0 text-red-600 dark:text-red-400" })), _jsxs("span", { className: "font-medium flex-shrink-0", children: ["bash", hasToolError ? ' error' : ''] }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), _jsx("span", { className: "text-foreground/70 truncate min-w-0", title: cmd, children: cmd }), !hasToolError && (_jsxs("span", { className: `flex-shrink-0 whitespace-nowrap ${exitCode === 0
34
- ? 'text-emerald-600 dark:text-emerald-400'
35
- : 'text-red-600 dark:text-red-400'}`, children: ["\u00B7 exit ", exitCode, " \u00B7 ", timeStr] })), hasToolError && (_jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] }))] }), isExpanded && hasToolError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true })), isExpanded && !hasToolError && hasOutput && (_jsx("div", { className: "mt-2 ml-5 bg-card/60 border border-border rounded-lg overflow-hidden max-h-96 overflow-y-auto max-w-full", children: _jsxs("div", { className: "overflow-x-auto max-w-full", children: [stdout && (_jsxs("div", { className: "mb-2", children: [_jsx("div", { className: "text-xs text-muted-foreground px-3 py-1 border-b border-border bg-muted/30", children: "stdout" }), _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
36
- margin: 0,
37
- padding: '0.75rem',
38
- fontSize: '0.75rem',
39
- lineHeight: '1.5',
40
- background: 'transparent',
41
- maxWidth: '100%',
42
- }, wrapLines: true, wrapLongLines: true, children: stdout })] })), stderr && (_jsxs("div", { children: [_jsx("div", { className: "text-xs text-red-600 dark:text-red-400 px-3 py-1 border-b border-border bg-red-500/10", children: "stderr" }), _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
43
- margin: 0,
44
- padding: '0.75rem',
45
- fontSize: '0.75rem',
46
- lineHeight: '1.5',
47
- background: 'transparent',
48
- maxWidth: '100%',
49
- }, wrapLines: true, wrapLongLines: true, children: stderr })] }))] }) }))] }));
28
+ const isError = hasToolError || exitCode !== 0;
29
+ const hasStderr = stderr.length > 0;
30
+ const combinedOutput = stdout + (stdout && stderr ? '\n' : '') + stderr;
31
+ return (_jsxs("div", { className: "text-xs", children: [_jsxs(ToolHeader, { toolName: "bash", isExpanded: isExpanded, onToggle: onToggle, isError: isError, colorVariant: "default", canExpand: true, children: [_jsx(ToolHeaderSeparator, {}), _jsx("span", { className: "text-foreground/70 min-w-0 truncate", title: cmd, children: cmd }), !hasToolError && (_jsxs(_Fragment, { children: [_jsx(ToolHeaderSeparator, {}), exitCode === 0 ? (_jsxs(ToolHeaderSuccess, { children: ["exit ", exitCode] })) : (_jsxs(ToolHeaderError, { children: ["exit ", exitCode] })), _jsx(ToolHeaderSeparator, {}), _jsx(ToolHeaderMeta, { children: timeStr })] })), hasToolError && _jsxs(ToolHeaderMeta, { children: ["\u00B7 ", timeStr] })] }), isExpanded && hasToolError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true })), isExpanded && !hasToolError && (_jsxs("div", { className: "mt-2 ml-5 flex flex-col gap-2 max-w-full", children: [_jsx(ToolContentBox, { title: "command", icon: _jsx(Terminal, { className: "h-3 w-3" }), subtitle: cwd && cwd !== '.' ? `in ${cwd}` : undefined, copyText: cmd, maxHeight: "", children: _jsx("div", { className: "px-3 py-2 font-mono text-xs bg-muted/10 break-all", children: cmd }) }), hasOutput &&
32
+ (exitCode === 0 ? (_jsx(ToolContentBox, { title: "output", copyText: combinedOutput, maxHeight: "max-h-80", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
33
+ margin: 0,
34
+ padding: '0.75rem',
35
+ fontSize: '0.75rem',
36
+ lineHeight: '1.5',
37
+ background: 'transparent',
38
+ maxWidth: '100%',
39
+ }, wrapLines: true, wrapLongLines: true, children: combinedOutput }) })) : (_jsxs(_Fragment, { children: [stdout && (_jsx(ToolContentBox, { title: "stdout", copyText: stdout, maxHeight: "max-h-40", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
40
+ margin: 0,
41
+ padding: '0.75rem',
42
+ fontSize: '0.75rem',
43
+ lineHeight: '1.5',
44
+ background: 'transparent',
45
+ maxWidth: '100%',
46
+ }, wrapLines: true, wrapLongLines: true, children: stdout }) })), hasStderr && (_jsx(ToolContentBox, { title: "stderr", copyText: stderr, variant: "error", maxHeight: "max-h-40", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
47
+ margin: 0,
48
+ padding: '0.75rem',
49
+ fontSize: '0.75rem',
50
+ lineHeight: '1.5',
51
+ background: 'transparent',
52
+ maxWidth: '100%',
53
+ }, wrapLines: true, wrapLongLines: true, children: stderr }) }))] })))] }))] }));
50
54
  }
51
55
  //# sourceMappingURL=BashRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BashRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/BashRenderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BashRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/BashRenderer.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GitStatusRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/GitStatusRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgD7C,wBAAgB,iBAAiB,CAAC,EACjC,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CA4Ef"}
1
+ {"version":3,"file":"GitStatusRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/GitStatusRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAkD7C,wBAAgB,iBAAiB,CAAC,EACjC,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CAgFf"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { ChevronRight } from 'lucide-react';
3
- import { formatDuration } from './utils';
2
+ import { formatDuration, isToolError, getErrorMessage } from './utils';
3
+ import { ToolHeader, ToolHeaderSeparator, ToolHeaderMeta } from './shared';
4
+ import { ToolErrorDisplay } from './ToolErrorDisplay';
4
5
  function parseStatusLine(line) {
5
6
  if (!line || line.length < 3)
6
7
  return null;
@@ -44,6 +45,8 @@ function getStatusColor(type) {
44
45
  }
45
46
  export function GitStatusRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
46
47
  const result = contentJson.result || {};
48
+ const hasError = isToolError(result);
49
+ const errorMessage = getErrorMessage(result);
47
50
  const staged = Number(result.staged || 0);
48
51
  const unstaged = Number(result.unstaged || 0);
49
52
  const raw = (result.raw || []);
@@ -51,6 +54,7 @@ export function GitStatusRenderer({ contentJson, toolDurationMs, isExpanded, onT
51
54
  const timeStr = formatDuration(toolDurationMs);
52
55
  const statusLines = raw.map(parseStatusLine).filter(Boolean);
53
56
  const hasChanges = staged > 0 || unstaged > 0;
54
- return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: onToggle, className: "flex items-center gap-2 text-blue-700 dark:text-blue-300 transition-colors hover:text-blue-600 dark:hover:text-blue-200 w-full", children: [_jsx(ChevronRight, { className: `h-3 w-3 flex-shrink-0 transition-transform ${isExpanded ? 'rotate-90' : ''}` }), _jsx("span", { className: "font-medium flex-shrink-0", children: "git status" }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), hasChanges ? (_jsxs(_Fragment, { children: [staged > 0 && (_jsxs("span", { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0", children: [staged, " staged"] })), unstaged > 0 && (_jsxs("span", { className: "text-amber-600 dark:text-amber-400 flex-shrink-0", children: [unstaged, " unstaged"] }))] })) : (_jsx("span", { className: "text-muted-foreground/60 flex-shrink-0", children: "clean" })), _jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] })] }), isExpanded && (statusLines.length > 0 || summary) && (_jsx("div", { className: "mt-2 ml-5", children: statusLines.length > 0 ? (_jsx("div", { className: "bg-card/60 border border-border rounded-lg overflow-hidden max-h-96 overflow-y-auto", children: _jsx("div", { className: "divide-y divide-border/50", children: statusLines.map((line, i) => (_jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5 font-mono hover:bg-muted/20", children: [_jsx("span", { className: `font-semibold w-6 flex-shrink-0 ${getStatusColor(line.type)}`, children: getStatusIcon(line.status) }), _jsx("span", { className: "text-foreground/80 break-all", children: line.file })] }, `${line.file}-${i}`))) }) })) : (summary && (_jsx("div", { className: "bg-card/60 border border-border rounded-lg p-3 text-muted-foreground", children: summary }))) }))] }));
57
+ const canExpand = statusLines.length > 0 || hasError || !!summary;
58
+ return (_jsxs("div", { className: "text-xs", children: [_jsxs(ToolHeader, { toolName: "git status", isExpanded: isExpanded, onToggle: onToggle, isError: hasError, colorVariant: "blue", canExpand: canExpand, children: [_jsx(ToolHeaderSeparator, {}), hasChanges ? (_jsxs(_Fragment, { children: [staged > 0 && (_jsxs("span", { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0", children: [staged, " staged"] })), unstaged > 0 && (_jsxs("span", { className: "text-amber-600 dark:text-amber-400 flex-shrink-0", children: [unstaged, " unstaged"] }))] })) : (_jsx("span", { className: "text-muted-foreground/60 flex-shrink-0", children: "clean" })), _jsx(ToolHeaderSeparator, {}), _jsx(ToolHeaderMeta, { children: timeStr })] }), isExpanded && hasError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage })), isExpanded && !hasError && (statusLines.length > 0 || summary) && (_jsx("div", { className: "mt-2 ml-5", children: statusLines.length > 0 ? (_jsx("div", { className: "bg-card/60 border border-border rounded-lg overflow-hidden max-h-96 overflow-y-auto", children: _jsx("div", { className: "divide-y divide-border/50", children: statusLines.map((line, i) => (_jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5 font-mono hover:bg-muted/20", children: [_jsx("span", { className: `font-semibold w-6 flex-shrink-0 ${getStatusColor(line.type)}`, children: getStatusIcon(line.status) }), _jsx("span", { className: "text-foreground/80 break-all", children: line.file })] }, `${line.file}-${i}`))) }) })) : (summary && (_jsx("div", { className: "bg-card/60 border border-border rounded-lg p-3 text-muted-foreground", children: summary }))) }))] }));
55
59
  }
56
60
  //# sourceMappingURL=GitStatusRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GitStatusRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/GitStatusRenderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitStatusRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/GitStatusRenderer.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ListRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAgB,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CA8Cf"}
1
+ {"version":3,"file":"ListRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ListRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU7C,wBAAgB,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CAuDf"}
@@ -1,14 +1,19 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ChevronDown, ChevronRight } from 'lucide-react';
3
2
  import { File, Folder } from 'lucide-react';
4
- import { formatDuration } from './utils';
3
+ import { formatDuration, isToolError, getErrorMessage } from './utils';
4
+ import { ToolHeader, ToolHeaderSeparator, ToolHeaderDetail, ToolHeaderMeta, } from './shared';
5
+ import { ToolErrorDisplay } from './ToolErrorDisplay';
5
6
  export function ListRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
6
7
  const result = contentJson.result || {};
8
+ const hasError = isToolError(result);
9
+ const errorMessage = getErrorMessage(result);
7
10
  const entries = result.entries || [];
8
11
  const timeStr = formatDuration(toolDurationMs);
9
- return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: onToggle, className: "flex items-center gap-2 text-cyan-700 dark:text-cyan-300 transition-colors hover:text-cyan-600 dark:hover:text-cyan-200", children: [isExpanded ? (_jsx(ChevronDown, { className: "h-3 w-3" })) : (_jsx(ChevronRight, { className: "h-3 w-3" })), _jsx("span", { className: "font-medium", children: "ls" }), _jsx("span", { className: "text-muted-foreground/70", children: "\u00B7" }), _jsxs("span", { className: "text-foreground/70", children: [entries.length, " ", entries.length === 1 ? 'entry' : 'entries'] }), _jsxs("span", { className: "text-muted-foreground/80", children: ["\u00B7 ", timeStr] })] }), isExpanded && (_jsx("div", { className: "mt-2 ml-5 space-y-0.5 max-h-96 overflow-y-auto", children: entries.map((entry, i) => {
12
+ const canExpand = entries.length > 0 || hasError;
13
+ return (_jsxs("div", { className: "text-xs", children: [_jsxs(ToolHeader, { toolName: "ls", isExpanded: isExpanded, onToggle: onToggle, isError: hasError, colorVariant: "cyan", canExpand: canExpand, children: [_jsx(ToolHeaderSeparator, {}), _jsxs(ToolHeaderDetail, { children: [entries.length, " ", entries.length === 1 ? 'entry' : 'entries'] }), _jsx(ToolHeaderSeparator, {}), _jsx(ToolHeaderMeta, { children: timeStr })] }), isExpanded && hasError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage })), isExpanded && !hasError && entries.length > 0 && (_jsx("div", { className: "mt-2 ml-5 space-y-0.5 max-h-96 overflow-y-auto", children: entries.map((entry, i) => {
10
14
  const e = entry;
11
- return (_jsxs("div", { className: "flex items-center gap-1.5 text-xs font-mono text-foreground/80", children: [e.isDirectory ? (_jsx(Folder, { className: "h-3 w-3 text-blue-500" })) : (_jsx(File, { className: "h-3 w-3 text-muted-foreground" })), _jsx("span", { children: e.name })] }, `${e.name}-${i}`));
15
+ const isDir = e.type === 'dir' || e.isDirectory;
16
+ return (_jsxs("div", { className: "flex items-center gap-1.5 text-xs font-mono text-foreground/80", children: [isDir ? (_jsx(Folder, { className: "h-3 w-3 text-blue-500" })) : (_jsx(File, { className: "h-3 w-3 text-muted-foreground" })), _jsx("span", { children: e.name })] }, `${e.name}-${i}`));
12
17
  }) }))] }));
13
18
  }
14
19
  //# sourceMappingURL=ListRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ListRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,UAAU,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACO;IACf,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,OAAO,GAAI,MAAM,CAAC,OAA0B,IAAI,EAAE,CAAC;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAE/C,OAAO,CACN,eAAK,SAAS,EAAC,SAAS,aACvB,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,yHAAyH,aAElI,UAAU,CAAC,CAAC,CAAC,CACb,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,GAAG,CACnC,CAAC,CAAC,CAAC,CACH,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,GAAG,CACpC,EACD,eAAM,SAAS,EAAC,aAAa,mBAAU,EACvC,eAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,gBAAM,SAAS,EAAC,oBAAoB,aAClC,OAAO,CAAC,MAAM,OAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IACtD,EACP,gBAAM,SAAS,EAAC,0BAA0B,wBAAI,OAAO,IAAQ,IACrD,EACR,UAAU,IAAI,CACd,cAAK,SAAS,EAAC,gDAAgD,YAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBACzB,MAAM,CAAC,GAAG,KAAiD,CAAC;oBAC5D,OAAO,CACN,eAEC,SAAS,EAAC,gEAAgE,aAEzE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAChB,KAAC,MAAM,IAAC,SAAS,EAAC,uBAAuB,GAAG,CAC5C,CAAC,CAAC,CAAC,CACH,KAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,GAAG,CAClD,EACD,yBAAO,CAAC,CAAC,IAAI,GAAQ,KARhB,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAShB,CACN,CAAC;gBACH,CAAC,CAAC,GACG,CACN,IACI,CACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ListRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ListRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EACN,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,GACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACO;IACf,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAI,MAAM,CAAC,OAA0B,IAAI,EAAE,CAAC;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC;IAEjD,OAAO,CACN,eAAK,SAAS,EAAC,SAAS,aACvB,MAAC,UAAU,IACV,QAAQ,EAAC,IAAI,EACb,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,QAAQ,EACjB,YAAY,EAAC,MAAM,EACnB,SAAS,EAAE,SAAS,aAEpB,KAAC,mBAAmB,KAAG,EACvB,MAAC,gBAAgB,eACf,OAAO,CAAC,MAAM,OAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAC1C,EACnB,KAAC,mBAAmB,KAAG,EACvB,KAAC,cAAc,cAAE,OAAO,GAAkB,IAC9B,EACZ,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,CAC1C,KAAC,gBAAgB,IAAC,KAAK,EAAE,YAAY,GAAI,CACzC,EACA,UAAU,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACjD,cAAK,SAAS,EAAC,gDAAgD,YAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBACzB,MAAM,CAAC,GAAG,KAIT,CAAC;oBACF,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC;oBAChD,OAAO,CACN,eAEC,SAAS,EAAC,gEAAgE,aAEzE,KAAK,CAAC,CAAC,CAAC,CACR,KAAC,MAAM,IAAC,SAAS,EAAC,uBAAuB,GAAG,CAC5C,CAAC,CAAC,CAAC,CACH,KAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,GAAG,CAClD,EACD,yBAAO,CAAC,CAAC,IAAI,GAAQ,KARhB,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAShB,CACN,CAAC;gBACH,CAAC,CAAC,GACG,CACN,IACI,CACN,CAAC;AACH,CAAC"}
@@ -16,7 +16,7 @@ export function ReasoningRenderer({ part }) {
16
16
  if (scrollRef.current && isExpanded && !part.completedAt) {
17
17
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
18
18
  }
19
- }, [content, isExpanded, part.completedAt]);
19
+ }, [isExpanded, part.completedAt]);
20
20
  if (!content || !content.trim()) {
21
21
  return null;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ReasoningRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ReasoningRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAOzD,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAA0B;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC;IAC9C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACxD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,SAAS,CAAC,OAAO,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1D,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;QAC9D,CAAC;IACF,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CACN,eAAK,SAAS,EAAC,QAAQ,aACtB,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EACzC,SAAS,EAAC,6GAA6G,aAEtH,UAAU,CAAC,CAAC,CAAC,CACb,KAAC,WAAW,IAAC,SAAS,EAAC,aAAa,GAAG,CACvC,CAAC,CAAC,CAAC,CACH,KAAC,YAAY,IAAC,SAAS,EAAC,aAAa,GAAG,CACxC,EACD,eAAM,SAAS,EAAC,aAAa,0BAAiB,EAC7C,CAAC,IAAI,CAAC,WAAW,IAAI,CACrB,eAAM,SAAS,EAAC,wCAAwC,4BAEjD,CACP,IACO,EACR,UAAU,IAAI,CACd,cACC,GAAG,EAAE,SAAS,EACd,SAAS,EAAC,+EAA+E,YAEzF,cAAK,SAAS,EAAC,6DAA6D,YAC1E,OAAO,GACH,GACD,CACN,IACI,CACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ReasoningRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ReasoningRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAOzD,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAA0B;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC;IAC9C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACxD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,SAAS,CAAC,OAAO,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1D,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;QAC9D,CAAC;IACF,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CACN,eAAK,SAAS,EAAC,QAAQ,aACtB,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EACzC,SAAS,EAAC,6GAA6G,aAEtH,UAAU,CAAC,CAAC,CAAC,CACb,KAAC,WAAW,IAAC,SAAS,EAAC,aAAa,GAAG,CACvC,CAAC,CAAC,CAAC,CACH,KAAC,YAAY,IAAC,SAAS,EAAC,aAAa,GAAG,CACxC,EACD,eAAM,SAAS,EAAC,aAAa,0BAAiB,EAC7C,CAAC,IAAI,CAAC,WAAW,IAAI,CACrB,eAAM,SAAS,EAAC,wCAAwC,4BAEjD,CACP,IACO,EACR,UAAU,IAAI,CACd,cACC,GAAG,EAAE,SAAS,EACd,SAAS,EAAC,+EAA+E,YAEzF,cAAK,SAAS,EAAC,6DAA6D,YAC1E,OAAO,GACH,GACD,CACN,IACI,CACN,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/SearchRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,wBAAgB,cAAc,CAAC,EAC9B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CA8Hf"}
1
+ {"version":3,"file":"SearchRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/SearchRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU7C,wBAAgB,cAAc,CAAC,EAC9B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CAuGf"}
@@ -1,32 +1,17 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { ChevronDown, ChevronRight, AlertCircle } from 'lucide-react';
3
- import { formatDuration } from './utils';
2
+ import { formatDuration, isToolError, getErrorMessage } from './utils';
4
3
  import { ToolErrorDisplay } from './ToolErrorDisplay';
4
+ import { ToolHeader, ToolHeaderSeparator, ToolHeaderDetail, ToolHeaderMeta, } from './shared';
5
5
  export function SearchRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
6
6
  const result = contentJson.result || {};
7
7
  const matches = result.matches || [];
8
8
  const files = result.files || [];
9
9
  const timeStr = formatDuration(toolDurationMs);
10
- // Check for errors
11
- const hasError = contentJson.error ||
12
- (result &&
13
- typeof result === 'object' &&
14
- 'ok' in result &&
15
- result.ok === false) ||
16
- (result && 'error' in result);
17
- const errorMessage = typeof contentJson.error === 'string'
18
- ? contentJson.error
19
- : result &&
20
- typeof result === 'object' &&
21
- 'error' in result &&
22
- typeof result.error === 'string'
23
- ? result.error
24
- : null;
25
- const errorStack = result &&
26
- typeof result === 'object' &&
27
- 'stack' in result &&
28
- typeof result.stack === 'string'
29
- ? result.stack
10
+ const hasError = isToolError(result) || !!contentJson.error;
11
+ const errorMessage = getErrorMessage(result) ||
12
+ (typeof contentJson.error === 'string' ? contentJson.error : null);
13
+ const errorStack = result && typeof result === 'object' && 'stack' in result
14
+ ? String(result.stack)
30
15
  : undefined;
31
16
  // Determine what to show - matches for grep/ripgrep, files for glob
32
17
  const itemCount = matches.length > 0 ? matches.length : files.length;
@@ -50,11 +35,10 @@ export function SearchRenderer({ contentJson, toolDurationMs, isExpanded, onTogg
50
35
  }
51
36
  return '';
52
37
  })();
53
- return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: onToggle, className: `flex items-center gap-2 transition-colors ${hasError
54
- ? 'text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200'
55
- : 'text-amber-700 dark:text-amber-300 hover:text-amber-600 dark:hover:text-amber-200'}`, children: [isExpanded ? (_jsx(ChevronDown, { className: "h-3 w-3" })) : (_jsx(ChevronRight, { className: "h-3 w-3" })), hasError && (_jsx(AlertCircle, { className: "h-3 w-3 flex-shrink-0 text-red-600 dark:text-red-400" })), _jsxs("span", { className: "font-medium", children: ["search", hasError ? ' error' : ''] }), searchTerm && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground/70", children: "\u00B7" }), _jsxs("span", { className: "font-mono text-foreground/90 text-[11px]", children: ["\"", searchTerm.length > 30
38
+ const canExpand = itemCount > 0 || hasError;
39
+ return (_jsxs("div", { className: "text-xs", children: [_jsxs(ToolHeader, { toolName: "search", isExpanded: isExpanded, onToggle: onToggle, isError: hasError, colorVariant: "amber", canExpand: canExpand, children: [searchTerm && (_jsxs(_Fragment, { children: [_jsx(ToolHeaderSeparator, {}), _jsxs("span", { className: "font-mono text-foreground/90 text-[11px]", children: ["\"", searchTerm.length > 30
56
40
  ? `${searchTerm.slice(0, 30)}…`
57
- : searchTerm, "\""] })] })), _jsx("span", { className: "text-muted-foreground/70", children: "\u00B7" }), _jsxs("span", { className: "text-foreground/70", children: [itemCount, " ", itemLabel] }), _jsxs("span", { className: "text-muted-foreground/80", children: ["\u00B7 ", timeStr] })] }), isExpanded && hasError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true })), isExpanded && !hasError && matches.length > 0 && (_jsx("div", { className: "mt-2 ml-5 space-y-1 max-h-96 overflow-y-auto", children: matches.map((match, i) => {
41
+ : searchTerm, "\""] })] })), _jsx(ToolHeaderSeparator, {}), _jsxs(ToolHeaderDetail, { children: [itemCount, " ", itemLabel] }), _jsx(ToolHeaderSeparator, {}), _jsx(ToolHeaderMeta, { children: timeStr })] }), isExpanded && hasError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true })), isExpanded && !hasError && matches.length > 0 && (_jsx("div", { className: "mt-2 ml-5 space-y-1 max-h-96 overflow-y-auto", children: matches.map((match, i) => {
58
42
  const m = match;
59
43
  return (_jsxs("div", { className: "text-xs font-mono bg-card/60 border border-border rounded px-2 py-1", children: [_jsxs("div", { className: "text-blue-600 dark:text-blue-400 truncate", children: [m.file, ":", m.line] }), _jsx("div", { className: "text-foreground/80 truncate", children: m.text })] }, `${m.file}-${m.line}-${i}`));
60
44
  }) })), isExpanded && !hasError && files.length > 0 && matches.length === 0 && (_jsx("div", { className: "mt-2 ml-5 space-y-0.5 max-h-96 overflow-y-auto", children: files.map((file) => (_jsx("div", { className: "text-xs font-mono text-foreground/70 truncate", children: String(file) }, String(file)))) }))] }));
@@ -1 +1 @@
1
- {"version":3,"file":"SearchRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/SearchRenderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/SearchRenderer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACN,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,GACd,MAAM,UAAU,CAAC;AAElB,MAAM,UAAU,cAAc,CAAC,EAC9B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACO;IACf,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,OAAO,GAAI,MAAM,CAAC,OAA0B,IAAI,EAAE,CAAC;IACzD,MAAM,KAAK,GAAI,MAAM,CAAC,KAAwB,IAAI,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;IAC5D,MAAM,YAAY,GACjB,eAAe,CAAC,MAAM,CAAC;QACvB,CAAC,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,UAAU,GACf,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM;QACxD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,SAAS,CAAC;IAEd,oEAAoE;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACrE,MAAM,SAAS,GACd,OAAO,CAAC,MAAM,GAAG,CAAC;QACjB,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,SAAS;QACZ,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,CAAC;IAEb,gCAAgC;IAChC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;QACxB,MAAM,IAAI,GAAG,WAAW,CAAC,IAA2C,CAAC;QACrE,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC;YAC1D,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;YACtD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC;QACnE,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC;IAE5C,OAAO,CACN,eAAK,SAAS,EAAC,SAAS,aACvB,MAAC,UAAU,IACV,QAAQ,EAAC,QAAQ,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,QAAQ,EACjB,YAAY,EAAC,OAAO,EACpB,SAAS,EAAE,SAAS,aAEnB,UAAU,IAAI,CACd,8BACC,KAAC,mBAAmB,KAAG,EACvB,gBAAM,SAAS,EAAC,0CAA0C,mBAExD,UAAU,CAAC,MAAM,GAAG,EAAE;wCACtB,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;wCAC/B,CAAC,CAAC,UAAU,UAEP,IACL,CACH,EACD,KAAC,mBAAmB,KAAG,EACvB,MAAC,gBAAgB,eACf,SAAS,OAAG,SAAS,IACJ,EACnB,KAAC,mBAAmB,KAAG,EACvB,KAAC,cAAc,cAAE,OAAO,GAAkB,IAC9B,EACZ,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,CAC1C,KAAC,gBAAgB,IAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,SAAG,CACtE,EACA,UAAU,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACjD,cAAK,SAAS,EAAC,8CAA8C,YAC3D,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBACzB,MAAM,CAAC,GAAG,KAAwD,CAAC;oBACnE,OAAO,CACN,eAEC,SAAS,EAAC,qEAAqE,aAE/E,eAAK,SAAS,EAAC,2CAA2C,aACxD,CAAC,CAAC,IAAI,OAAG,CAAC,CAAC,IAAI,IACX,EACN,cAAK,SAAS,EAAC,6BAA6B,YAAE,CAAC,CAAC,IAAI,GAAO,KANtD,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAO1B,CACN,CAAC;gBACH,CAAC,CAAC,GACG,CACN,EACA,UAAU,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CACvE,cAAK,SAAS,EAAC,gDAAgD,YAC7D,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACpB,cAEC,SAAS,EAAC,+CAA+C,YAExD,MAAM,CAAC,IAAI,CAAC,IAHR,MAAM,CAAC,IAAI,CAAC,CAIZ,CACN,CAAC,GACG,CACN,IACI,CACN,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/TreeRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAgB,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CAoDf"}
1
+ {"version":3,"file":"TreeRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/TreeRenderer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU7C,wBAAgB,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CAwDf"}
@@ -1,17 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ChevronDown, ChevronRight } from 'lucide-react';
3
2
  import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
4
3
  import { prism, vscDarkPlus, } from 'react-syntax-highlighter/dist/esm/styles/prism';
5
- import { formatDuration } from './utils';
4
+ import { formatDuration, isToolError, getErrorMessage } from './utils';
5
+ import { ToolHeader, ToolHeaderSeparator, ToolHeaderDetail, ToolHeaderMeta, } from './shared';
6
+ import { ToolErrorDisplay } from './ToolErrorDisplay';
6
7
  export function TreeRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
7
8
  const result = contentJson.result || {};
9
+ const hasError = isToolError(result);
10
+ const errorMessage = getErrorMessage(result);
8
11
  const tree = String(result.tree || '');
9
12
  const lines = tree.split('\n').length;
10
13
  const timeStr = formatDuration(toolDurationMs);
11
14
  const syntaxTheme = document?.documentElement.classList.contains('dark')
12
15
  ? vscDarkPlus
13
16
  : prism;
14
- return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: onToggle, className: "flex items-center gap-2 text-cyan-700 dark:text-cyan-300 transition-colors hover:text-cyan-600 dark:hover:text-cyan-200", children: [isExpanded ? (_jsx(ChevronDown, { className: "h-3 w-3" })) : (_jsx(ChevronRight, { className: "h-3 w-3" })), _jsx("span", { className: "font-medium", children: "tree" }), _jsx("span", { className: "text-muted-foreground/70", children: "\u00B7" }), _jsxs("span", { className: "text-foreground/70", children: [lines, " ", lines === 1 ? 'line' : 'lines'] }), _jsxs("span", { className: "text-muted-foreground/80", children: ["\u00B7 ", timeStr] })] }), isExpanded && tree && (_jsx("div", { className: "mt-2 ml-5 bg-card/60 border border-border rounded-lg overflow-hidden max-h-96 overflow-y-auto max-w-full", children: _jsx("div", { className: "overflow-x-auto max-w-full", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
17
+ const canExpand = tree.length > 0 || hasError;
18
+ return (_jsxs("div", { className: "text-xs", children: [_jsxs(ToolHeader, { toolName: "tree", isExpanded: isExpanded, onToggle: onToggle, isError: hasError, colorVariant: "cyan", canExpand: canExpand, children: [_jsx(ToolHeaderSeparator, {}), _jsxs(ToolHeaderDetail, { children: [lines, " ", lines === 1 ? 'line' : 'lines'] }), _jsx(ToolHeaderSeparator, {}), _jsx(ToolHeaderMeta, { children: timeStr })] }), isExpanded && hasError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage })), isExpanded && !hasError && tree && (_jsx("div", { className: "mt-2 ml-5 bg-card/60 border border-border rounded-lg overflow-hidden max-h-96 overflow-y-auto max-w-full", children: _jsx("div", { className: "overflow-x-auto max-w-full", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
15
19
  margin: 0,
16
20
  padding: '0.75rem',
17
21
  fontSize: '0.75rem',
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/TreeRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EACN,KAAK,EACL,WAAW,GACX,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,UAAU,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACO;IACf,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvE,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,KAAK,CAAC;IAET,OAAO,CACN,eAAK,SAAS,EAAC,SAAS,aACvB,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,yHAAyH,aAElI,UAAU,CAAC,CAAC,CAAC,CACb,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,GAAG,CACnC,CAAC,CAAC,CAAC,CACH,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,GAAG,CACpC,EACD,eAAM,SAAS,EAAC,aAAa,qBAAY,EACzC,eAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,gBAAM,SAAS,EAAC,oBAAoB,aAClC,KAAK,OAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IACjC,EACP,gBAAM,SAAS,EAAC,0BAA0B,wBAAI,OAAO,IAAQ,IACrD,EACR,UAAU,IAAI,IAAI,IAAI,CACtB,cAAK,SAAS,EAAC,0GAA0G,YACxH,cAAK,SAAS,EAAC,4BAA4B,YAC1C,KAAC,iBAAiB,IACjB,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE;4BACZ,MAAM,EAAE,CAAC;4BACT,OAAO,EAAE,SAAS;4BAClB,QAAQ,EAAE,SAAS;4BACnB,UAAU,EAAE,KAAK;4BACjB,UAAU,EAAE,aAAa;4BACzB,QAAQ,EAAE,MAAM;yBAChB,EACD,SAAS,QACT,aAAa,kBAEZ,IAAI,GACc,GACf,GACD,CACN,IACI,CACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/TreeRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EACN,KAAK,EACL,WAAW,GACX,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EACN,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,GACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACO;IACf,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvE,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,KAAK,CAAC;IACT,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC;IAE9C,OAAO,CACN,eAAK,SAAS,EAAC,SAAS,aACvB,MAAC,UAAU,IACV,QAAQ,EAAC,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,QAAQ,EACjB,YAAY,EAAC,MAAM,EACnB,SAAS,EAAE,SAAS,aAEpB,KAAC,mBAAmB,KAAG,EACvB,MAAC,gBAAgB,eACf,KAAK,OAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IACrB,EACnB,KAAC,mBAAmB,KAAG,EACvB,KAAC,cAAc,cAAE,OAAO,GAAkB,IAC9B,EACZ,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,CAC1C,KAAC,gBAAgB,IAAC,KAAK,EAAE,YAAY,GAAI,CACzC,EACA,UAAU,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,CACnC,cAAK,SAAS,EAAC,0GAA0G,YACxH,cAAK,SAAS,EAAC,4BAA4B,YAC1C,KAAC,iBAAiB,IACjB,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE;4BACZ,MAAM,EAAE,CAAC;4BACT,OAAO,EAAE,SAAS;4BAClB,QAAQ,EAAE,SAAS;4BACnB,UAAU,EAAE,KAAK;4BACjB,UAAU,EAAE,aAAa;4BACzB,QAAQ,EAAE,MAAM;yBAChB,EACD,SAAS,QACT,aAAa,kBAEZ,IAAI,GACc,GACf,GACD,CACN,IACI,CACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface CopyButtonProps {
2
+ text: string;
3
+ className?: string;
4
+ }
5
+ export declare function CopyButton({ text, className }: CopyButtonProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CopyButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../../../src/components/messages/renderers/shared/CopyButton.tsx"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,SAAc,EAAE,EAAE,eAAe,2CA0BnE"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Copy, Check } from 'lucide-react';
4
+ export function CopyButton({ text, className = '' }) {
5
+ const [copied, setCopied] = useState(false);
6
+ const handleCopy = async (e) => {
7
+ e.stopPropagation();
8
+ try {
9
+ await navigator.clipboard.writeText(text);
10
+ setCopied(true);
11
+ setTimeout(() => setCopied(false), 2000);
12
+ }
13
+ catch { }
14
+ };
15
+ return (_jsx("button", { type: "button", onClick: handleCopy, className: `p-1 rounded hover:bg-muted/50 text-muted-foreground hover:text-foreground transition-colors ${className}`, title: "Copy", children: copied ? (_jsx(Check, { className: "h-3 w-3 text-emerald-500" })) : (_jsx(Copy, { className: "h-3 w-3" })) }));
16
+ }
17
+ //# sourceMappingURL=CopyButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../../../src/components/messages/renderers/shared/CopyButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAO3C,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAmB;IACnE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,KAAK,EAAE,CAAmB,EAAE,EAAE;QAChD,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC;YACJ,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACX,CAAC,CAAC;IAEF,OAAO,CACN,iBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,+FAA+F,SAAS,EAAE,EACrH,KAAK,EAAC,MAAM,YAEX,MAAM,CAAC,CAAC,CAAC,CACT,KAAC,KAAK,IAAC,SAAS,EAAC,0BAA0B,GAAG,CAC9C,CAAC,CAAC,CAAC,CACH,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,CAC5B,GACO,CACT,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ReactNode } from 'react';
2
+ interface ToolContentBoxProps {
3
+ title: string;
4
+ icon?: ReactNode;
5
+ subtitle?: string;
6
+ copyText?: string;
7
+ variant?: 'default' | 'error';
8
+ maxHeight?: string;
9
+ children: ReactNode;
10
+ }
11
+ export declare function ToolContentBox({ title, icon, subtitle, copyText, variant, maxHeight, children, }: ToolContentBoxProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=ToolContentBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolContentBox.d.ts","sourceRoot":"","sources":["../../../../../src/components/messages/renderers/shared/ToolContentBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,UAAU,mBAAmB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC9B,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAmB,EACnB,SAAsB,EACtB,QAAQ,GACR,EAAE,mBAAmB,2CA4BrB"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CopyButton } from './CopyButton';
3
+ export function ToolContentBox({ title, icon, subtitle, copyText, variant = 'default', maxHeight = 'max-h-80', children, }) {
4
+ const isError = variant === 'error';
5
+ return (_jsxs("div", { className: `bg-card/60 border rounded-lg overflow-hidden flex flex-col ${maxHeight} ${isError ? 'border-red-500/50' : 'border-border'}`, children: [_jsxs("div", { className: `flex items-center justify-between gap-2 text-xs px-3 py-1.5 border-b border-border sticky top-0 ${isError
6
+ ? 'text-red-600 dark:text-red-400 bg-red-500/10'
7
+ : 'text-muted-foreground bg-muted/30'}`, children: [_jsxs("div", { className: "flex items-center gap-2", children: [icon, _jsx("span", { children: title }), subtitle && (_jsx("span", { className: "text-muted-foreground/60", children: subtitle }))] }), copyText && _jsx(CopyButton, { text: copyText })] }), _jsx("div", { className: "overflow-auto flex-1", children: children })] }));
8
+ }
9
+ //# sourceMappingURL=ToolContentBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolContentBox.js","sourceRoot":"","sources":["../../../../../src/components/messages/renderers/shared/ToolContentBox.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAY1C,MAAM,UAAU,cAAc,CAAC,EAC9B,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,GAAG,SAAS,EACnB,SAAS,GAAG,UAAU,EACtB,QAAQ,GACa;IACrB,MAAM,OAAO,GAAG,OAAO,KAAK,OAAO,CAAC;IAEpC,OAAO,CACN,eACC,SAAS,EAAE,8DAA8D,SAAS,IACjF,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eACjC,EAAE,aAEF,eACC,SAAS,EAAE,mGACV,OAAO;oBACN,CAAC,CAAC,8CAA8C;oBAChD,CAAC,CAAC,mCACJ,EAAE,aAEF,eAAK,SAAS,EAAC,yBAAyB,aACtC,IAAI,EACL,yBAAO,KAAK,GAAQ,EACnB,QAAQ,IAAI,CACZ,eAAM,SAAS,EAAC,0BAA0B,YAAE,QAAQ,GAAQ,CAC5D,IACI,EACL,QAAQ,IAAI,KAAC,UAAU,IAAC,IAAI,EAAE,QAAQ,GAAI,IACtC,EACN,cAAK,SAAS,EAAC,sBAAsB,YAAE,QAAQ,GAAO,IACjD,CACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { ReactNode } from 'react';
2
+ type ColorVariant = 'default' | 'blue' | 'emerald' | 'purple' | 'cyan' | 'amber' | 'red';
3
+ interface ToolHeaderProps {
4
+ toolName: string;
5
+ isExpanded: boolean;
6
+ onToggle: () => void;
7
+ isError?: boolean;
8
+ colorVariant?: ColorVariant;
9
+ canExpand?: boolean;
10
+ children?: ReactNode;
11
+ }
12
+ export declare function ToolHeader({ toolName, isExpanded, onToggle, isError, colorVariant, canExpand, children, }: ToolHeaderProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function ToolHeaderSeparator(): import("react/jsx-runtime").JSX.Element;
14
+ export declare function ToolHeaderDetail({ children, className, }: {
15
+ children: ReactNode;
16
+ className?: string;
17
+ }): import("react/jsx-runtime").JSX.Element;
18
+ export declare function ToolHeaderMeta({ children, className, }: {
19
+ children: ReactNode;
20
+ className?: string;
21
+ }): import("react/jsx-runtime").JSX.Element;
22
+ export declare function ToolHeaderSuccess({ children }: {
23
+ children: ReactNode;
24
+ }): import("react/jsx-runtime").JSX.Element;
25
+ export declare function ToolHeaderError({ children }: {
26
+ children: ReactNode;
27
+ }): import("react/jsx-runtime").JSX.Element;
28
+ export {};
29
+ //# sourceMappingURL=ToolHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/messages/renderers/shared/ToolHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,KAAK,YAAY,GACd,SAAS,GACT,MAAM,GACN,SAAS,GACT,QAAQ,GACR,MAAM,GACN,OAAO,GACP,KAAK,CAAC;AAkDT,UAAU,eAAe;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,EAC1B,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAe,EACf,YAAwB,EACxB,SAAgB,EAChB,QAAQ,GACR,EAAE,eAAe,2CA+BjB;AAED,wBAAgB,mBAAmB,4CAElC;AAED,wBAAgB,gBAAgB,CAAC,EAChC,QAAQ,EACR,SAAc,GACd,EAAE;IACF,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,2CAEA;AAED,wBAAgB,cAAc,CAAC,EAC9B,QAAQ,EACR,SAAc,GACd,EAAE;IACF,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,2CAQA;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAMtE;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAMpE"}
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDown, ChevronRight, AlertCircle } from 'lucide-react';
3
+ const colorClasses = {
4
+ default: {
5
+ normal: 'text-muted-foreground',
6
+ hover: 'hover:text-foreground',
7
+ error: 'text-red-700 dark:text-red-300',
8
+ errorHover: 'hover:text-red-600 dark:hover:text-red-200',
9
+ },
10
+ blue: {
11
+ normal: 'text-blue-700 dark:text-blue-300',
12
+ hover: 'hover:text-blue-600 dark:hover:text-blue-200',
13
+ error: 'text-red-700 dark:text-red-300',
14
+ errorHover: 'hover:text-red-600 dark:hover:text-red-200',
15
+ },
16
+ emerald: {
17
+ normal: 'text-emerald-700 dark:text-emerald-300',
18
+ hover: 'hover:text-emerald-600 dark:hover:text-emerald-200',
19
+ error: 'text-red-700 dark:text-red-300',
20
+ errorHover: 'hover:text-red-600 dark:hover:text-red-200',
21
+ },
22
+ purple: {
23
+ normal: 'text-purple-700 dark:text-purple-300',
24
+ hover: 'hover:text-purple-600 dark:hover:text-purple-200',
25
+ error: 'text-red-700 dark:text-red-300',
26
+ errorHover: 'hover:text-red-600 dark:hover:text-red-200',
27
+ },
28
+ cyan: {
29
+ normal: 'text-cyan-700 dark:text-cyan-300',
30
+ hover: 'hover:text-cyan-600 dark:hover:text-cyan-200',
31
+ error: 'text-red-700 dark:text-red-300',
32
+ errorHover: 'hover:text-red-600 dark:hover:text-red-200',
33
+ },
34
+ amber: {
35
+ normal: 'text-amber-700 dark:text-amber-300',
36
+ hover: 'hover:text-amber-600 dark:hover:text-amber-200',
37
+ error: 'text-red-700 dark:text-red-300',
38
+ errorHover: 'hover:text-red-600 dark:hover:text-red-200',
39
+ },
40
+ red: {
41
+ normal: 'text-red-700 dark:text-red-300',
42
+ hover: 'hover:text-red-600 dark:hover:text-red-200',
43
+ error: 'text-red-700 dark:text-red-300',
44
+ errorHover: 'hover:text-red-600 dark:hover:text-red-200',
45
+ },
46
+ };
47
+ export function ToolHeader({ toolName, isExpanded, onToggle, isError = false, colorVariant = 'default', canExpand = true, children, }) {
48
+ const colors = colorClasses[colorVariant];
49
+ const colorClass = isError
50
+ ? `${colors.error} ${colors.errorHover}`
51
+ : `${colors.normal} ${colors.hover}`;
52
+ return (_jsxs("button", { type: "button", onClick: () => canExpand && onToggle(), className: `flex items-center gap-2 transition-colors w-full min-w-0 ${colorClass}`, children: [canExpand ? (isExpanded ? (_jsx(ChevronDown, { className: "h-3 w-3 flex-shrink-0" })) : (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0" }))) : (_jsx("div", { className: "w-3 flex-shrink-0" })), isError && (_jsx(AlertCircle, { className: "h-3 w-3 flex-shrink-0 text-red-600 dark:text-red-400" })), _jsxs("span", { className: "font-medium flex-shrink-0", children: [toolName, isError ? ' error' : ''] }), children] }));
53
+ }
54
+ export function ToolHeaderSeparator() {
55
+ return _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" });
56
+ }
57
+ export function ToolHeaderDetail({ children, className = '', }) {
58
+ return _jsx("span", { className: `text-foreground/70 ${className}`, children: children });
59
+ }
60
+ export function ToolHeaderMeta({ children, className = '', }) {
61
+ return (_jsx("span", { className: `text-muted-foreground/80 flex-shrink-0 whitespace-nowrap ${className}`, children: children }));
62
+ }
63
+ export function ToolHeaderSuccess({ children }) {
64
+ return (_jsx("span", { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0", children: children }));
65
+ }
66
+ export function ToolHeaderError({ children }) {
67
+ return (_jsx("span", { className: "text-red-600 dark:text-red-400 flex-shrink-0", children: children }));
68
+ }
69
+ //# sourceMappingURL=ToolHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolHeader.js","sourceRoot":"","sources":["../../../../../src/components/messages/renderers/shared/ToolHeader.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { CopyButton } from './CopyButton';
2
+ export { ToolContentBox } from './ToolContentBox';
3
+ export { ToolHeader, ToolHeaderSeparator, ToolHeaderDetail, ToolHeaderMeta, ToolHeaderSuccess, ToolHeaderError, } from './ToolHeader';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/messages/renderers/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACN,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,eAAe,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { CopyButton } from './CopyButton';
2
+ export { ToolContentBox } from './ToolContentBox';
3
+ export { ToolHeader, ToolHeaderSeparator, ToolHeaderDetail, ToolHeaderMeta, ToolHeaderSuccess, ToolHeaderError, } from './ToolHeader';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/messages/renderers/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACN,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,eAAe,GACf,MAAM,cAAc,CAAC"}
@@ -1,3 +1,22 @@
1
+ export type ToolErrorType = 'validation' | 'not_found' | 'permission' | 'execution' | 'timeout' | 'unsupported';
2
+ export interface ToolErrorResponse {
3
+ ok: false;
4
+ error: string;
5
+ errorType?: ToolErrorType;
6
+ details?: {
7
+ parameter?: string;
8
+ value?: unknown;
9
+ constraint?: string;
10
+ suggestion?: string;
11
+ [key: string]: unknown;
12
+ };
13
+ stack?: string;
14
+ }
15
+ export interface ToolSuccessResponse {
16
+ ok: true;
17
+ [key: string]: unknown;
18
+ }
19
+ export type ToolResponse = ToolSuccessResponse | ToolErrorResponse;
1
20
  export interface ToolCallArgs {
2
21
  text?: string;
3
22
  message?: string;
@@ -14,9 +33,10 @@ export interface ToolCallArgs {
14
33
  }
15
34
  export interface ToolResultData {
16
35
  done?: boolean;
36
+ ok?: boolean;
37
+ error?: string;
17
38
  text?: string;
18
39
  result?: string | Record<string, unknown>;
19
- ok?: boolean;
20
40
  message?: string;
21
41
  pct?: number;
22
42
  stage?: string;
@@ -41,6 +61,11 @@ export interface ToolResultData {
41
61
  files?: unknown[];
42
62
  cwd?: string;
43
63
  output?: string;
64
+ errorType?: ToolErrorType;
65
+ details?: {
66
+ suggestion?: string;
67
+ [key: string]: unknown;
68
+ };
44
69
  diff?: string;
45
70
  summary?: string;
46
71
  changes?: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,aAAa,GACtB,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,WAAW,GACX,SAAS,GACT,aAAa,CAAC;AAGjB,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,mBAAmB;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAGD,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;IAEF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,KAAK,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,OAAO,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC,CAAC;KACH,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACF,CAAC;IAEF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IAC1D,QAAQ,EAAE,MAAM,CAAC;CACjB"}
@@ -8,4 +8,19 @@
8
8
  * formatDuration(5678) // "5.7s"
9
9
  */
10
10
  export declare function formatDuration(ms: number | undefined): string;
11
+ /**
12
+ * Check if a tool result is an error response.
13
+ * Handles both the new ok: false pattern and legacy error patterns.
14
+ */
15
+ export declare function isToolError(result: unknown): boolean;
16
+ /**
17
+ * Extract the error message from a tool result.
18
+ * Checks multiple common fields: error, stderr, message, detail, details, reason.
19
+ */
20
+ export declare function getErrorMessage(result: unknown): string | null;
21
+ /**
22
+ * Extract error details from a tool result.
23
+ * Returns the details object if present and valid.
24
+ */
25
+ export declare function getErrorDetails(result: unknown): Record<string, unknown> | null;
11
26
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM7D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAIpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAa9D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAOhC"}
@@ -15,4 +15,46 @@ export function formatDuration(ms) {
15
15
  }
16
16
  return `${ms}ms`;
17
17
  }
18
+ /**
19
+ * Check if a tool result is an error response.
20
+ * Handles both the new ok: false pattern and legacy error patterns.
21
+ */
22
+ export function isToolError(result) {
23
+ if (!result || typeof result !== 'object')
24
+ return false;
25
+ const obj = result;
26
+ return obj.ok === false || 'error' in obj || obj.success === false;
27
+ }
28
+ /**
29
+ * Extract the error message from a tool result.
30
+ * Checks multiple common fields: error, stderr, message, detail, details, reason.
31
+ */
32
+ export function getErrorMessage(result) {
33
+ if (!result || typeof result !== 'object')
34
+ return null;
35
+ const obj = result;
36
+ const keys = ['error', 'stderr', 'message', 'detail', 'details', 'reason'];
37
+ for (const key of keys) {
38
+ const value = obj[key];
39
+ if (typeof value === 'string') {
40
+ const trimmed = value.trim();
41
+ if (trimmed.length)
42
+ return trimmed;
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ /**
48
+ * Extract error details from a tool result.
49
+ * Returns the details object if present and valid.
50
+ */
51
+ export function getErrorDetails(result) {
52
+ if (!result || typeof result !== 'object')
53
+ return null;
54
+ const obj = result;
55
+ if (obj.details && typeof obj.details === 'object') {
56
+ return obj.details;
57
+ }
58
+ return null;
59
+ }
18
60
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,EAAsB;IACpD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,EAAE,IAAI,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,EAAsB;IACpD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,EAAE,IAAI,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAe;IAC1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,OAAO,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe;IAC9C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEvD,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAO,OAAO,CAAC;QACpC,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC9B,MAAe;IAEf,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,GAAG,CAAC,OAAkC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agi-cli/web-sdk",
3
- "version": "0.1.110",
3
+ "version": "0.1.112",
4
4
  "description": "Reusable React components, hooks, and utilities for building AGI CLI web interfaces",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -58,7 +58,7 @@
58
58
  "directory": "packages/web-sdk"
59
59
  },
60
60
  "dependencies": {
61
- "@agi-cli/api": "0.1.110",
61
+ "@agi-cli/api": "0.1.112",
62
62
  "@xterm/addon-fit": "^0.10.0",
63
63
  "@xterm/addon-unicode11": "^0.8.0",
64
64
  "@xterm/xterm": "^5.5.0",