@mastra/playground-ui 53.0.0-alpha.9 → 53.0.0
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.
- package/dist/{code-DRGJVroV.js → code-D4Vw_fYq.js} +22 -16
- package/dist/code-D4Vw_fYq.js.map +1 -0
- package/dist/{code-BJMC6T9D.cjs → code-DhrdtZce.cjs} +22 -15
- package/dist/code-DhrdtZce.cjs.map +1 -0
- package/dist/{code-block-CBJhDEeB.js → code-block-DeksY23p.js} +2 -2
- package/dist/{code-block-CBJhDEeB.js.map → code-block-DeksY23p.js.map} +1 -1
- package/dist/{code-block-fmv8bHoT.cjs → code-block-DgHrBuR8.cjs} +2 -2
- package/dist/{code-block-fmv8bHoT.cjs.map → code-block-DgHrBuR8.cjs.map} +1 -1
- package/dist/{command-DWFd0d4c.js → command-Be-KrIAX.js} +2 -2
- package/dist/{command-DWFd0d4c.js.map → command-Be-KrIAX.js.map} +1 -1
- package/dist/{command-CUev1UxH.cjs → command-DsTBCmQq.cjs} +2 -2
- package/dist/{command-CUev1UxH.cjs.map → command-DsTBCmQq.cjs.map} +1 -1
- package/dist/components/ChatShell.cjs.js +20 -1
- package/dist/components/ChatShell.cjs.js.map +1 -1
- package/dist/components/ChatShell.es.js +20 -1
- package/dist/components/ChatShell.es.js.map +1 -1
- package/dist/components/Code.cjs.js +3 -1
- package/dist/components/Code.cjs.js.map +1 -1
- package/dist/components/Code.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.cjs.js +2 -1
- package/dist/components/CodeEditor.cjs.js.map +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/Dialog.cjs.js +181 -2
- package/dist/components/Dialog.cjs.js.map +1 -1
- package/dist/components/Dialog.es.js +183 -1
- package/dist/components/Dialog.es.js.map +1 -1
- package/dist/components/HorizontalBars.cjs.js +1 -1
- package/dist/components/HorizontalBars.es.js +1 -1
- package/dist/components/IntegrationDialog.cjs.js +105 -0
- package/dist/components/IntegrationDialog.cjs.js.map +1 -0
- package/dist/components/IntegrationDialog.d.ts +2 -0
- package/dist/components/IntegrationDialog.es.js +101 -0
- package/dist/components/IntegrationDialog.es.js.map +1 -0
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/ThreadRail.cjs.js +19 -0
- package/dist/components/ThreadRail.cjs.js.map +1 -1
- package/dist/components/ThreadRail.es.js +19 -1
- package/dist/components/ThreadRail.es.js.map +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +165 -0
- package/dist/components/ai/tool-call.cjs.js.map +1 -1
- package/dist/components/ai/tool-call.es.js +159 -3
- package/dist/components/ai/tool-call.es.js.map +1 -1
- package/dist/{data-code-section-D5I0m1cS.cjs → data-code-section-B_lg_J_0.cjs} +2 -2
- package/dist/{data-code-section-D5I0m1cS.cjs.map → data-code-section-B_lg_J_0.cjs.map} +1 -1
- package/dist/{data-code-section-d3NffL3V.js → data-code-section-Cm_W_XhO.js} +2 -2
- package/dist/{data-code-section-d3NffL3V.js.map → data-code-section-Cm_W_XhO.js.map} +1 -1
- package/dist/{data-panel-Bo2HCylZ.cjs → data-panel-Cv9j_IGQ.cjs} +2 -2
- package/dist/{data-panel-Bo2HCylZ.cjs.map → data-panel-Cv9j_IGQ.cjs.map} +1 -1
- package/dist/{data-panel-T3vp7wTD.js → data-panel-DXxeSnL1.js} +2 -2
- package/dist/{data-panel-T3vp7wTD.js.map → data-panel-DXxeSnL1.js.map} +1 -1
- package/dist/dialog-CZMPDVUj.js +259 -0
- package/dist/dialog-CZMPDVUj.js.map +1 -0
- package/dist/dialog-D-7Hkb3j.cjs +293 -0
- package/dist/dialog-D-7Hkb3j.cjs.map +1 -0
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +1 -1
- package/dist/domains/traces/hooks/use-branch.cjs.js +2 -6
- package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-branch.es.js +2 -6
- package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +4 -1
- package/dist/domains/traces/hooks/use-download-trace-json.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-download-trace-json.es.js +4 -1
- package/dist/domains/traces/hooks/use-download-trace-json.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js +10 -7
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.es.js +10 -7
- package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
- package/dist/{highlight-CSJjjoqh.js → highlight-BmpoELR4.js} +6 -2
- package/dist/{highlight-CSJjjoqh.js.map → highlight-BmpoELR4.js.map} +1 -1
- package/dist/{highlight-CEt2vhD8.cjs → highlight-DK1dn-Fh.cjs} +6 -1
- package/dist/{highlight-CEt2vhD8.cjs.map → highlight-DK1dn-Fh.cjs.map} +1 -1
- package/dist/{horizontal-bars-DZ5J4TKv.js → horizontal-bars-CyP-B-BX.js} +37 -4
- package/dist/horizontal-bars-CyP-B-BX.js.map +1 -0
- package/dist/{horizontal-bars-CE1O-Y6G.cjs → horizontal-bars-Dgq3PYsg.cjs} +37 -4
- package/dist/horizontal-bars-Dgq3PYsg.cjs.map +1 -0
- package/dist/{markdown-renderer-DiJBbnYG.js → markdown-renderer-CaFpZTFS.js} +2 -2
- package/dist/{markdown-renderer-DiJBbnYG.js.map → markdown-renderer-CaFpZTFS.js.map} +1 -1
- package/dist/{markdown-renderer-DGIzNAQY.cjs → markdown-renderer-GVtZLunG.cjs} +2 -2
- package/dist/{markdown-renderer-DGIzNAQY.cjs.map → markdown-renderer-GVtZLunG.cjs.map} +1 -1
- package/dist/src/domains/traces/hooks/use-trace-spans.d.ts +3 -1
- package/dist/src/ds/components/ChatShell/chat-shell.d.ts +19 -2
- package/dist/src/ds/components/ChatShell/index.d.ts +3 -2
- package/dist/src/ds/components/Code/index.d.ts +1 -0
- package/dist/src/ds/components/Code/use-highlight.d.ts +10 -0
- package/dist/src/ds/components/CodeEditor/highlight.d.ts +1 -0
- package/dist/src/ds/components/CodeEditor/index.d.ts +1 -1
- package/dist/src/ds/components/Dialog/dialog-action.d.ts +9 -0
- package/dist/src/ds/components/Dialog/dialog-context.d.ts +16 -0
- package/dist/src/ds/components/Dialog/dialog-new-variant.stories.d.ts +64 -0
- package/dist/src/ds/components/Dialog/dialog.d.ts +15 -6
- package/dist/src/ds/components/Dialog/index.d.ts +2 -0
- package/dist/src/ds/components/HorizontalBars/horizontal-bars.stories.d.ts +2 -0
- package/dist/src/ds/components/IntegrationDialog/__fixtures__/integrations-catalog.d.ts +2 -0
- package/dist/src/ds/components/IntegrationDialog/index.d.ts +2 -0
- package/dist/src/ds/components/IntegrationDialog/integration-dialog.d.ts +28 -0
- package/dist/src/ds/components/IntegrationDialog/integration-dialog.stories.d.ts +24 -0
- package/dist/src/ds/components/ThreadRail/index.d.ts +1 -0
- package/dist/src/ds/components/ThreadRail/turn-groups.d.ts +19 -0
- package/dist/src/ds/components/ai/tool-call/ansi.d.ts +2 -0
- package/dist/src/ds/components/ai/tool-call/group-consecutive.d.ts +17 -0
- package/dist/src/ds/components/ai/tool-call/index.d.ts +4 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-edit.d.ts +4 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-group.d.ts +14 -0
- package/dist/src/ds/components/ai/tool-call/tool-call.d.ts +4 -0
- package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +10 -0
- package/dist/style.css +138 -0
- package/package.json +8 -8
- package/dist/code-BJMC6T9D.cjs.map +0 -1
- package/dist/code-DRGJVroV.js.map +0 -1
- package/dist/dialog-CESxLg8S.js +0 -76
- package/dist/dialog-CESxLg8S.js.map +0 -1
- package/dist/dialog-K0q0KOOW.cjs +0 -107
- package/dist/dialog-K0q0KOOW.cjs.map +0 -1
- package/dist/horizontal-bars-CE1O-Y6G.cjs.map +0 -1
- package/dist/horizontal-bars-DZ5J4TKv.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call.cjs.js","sources":["../../../src/ds/components/ai/tool-call/tool-call.tsx","../../../src/ds/components/ai/tool-call/tool-presentation.ts"],"sourcesContent":["import { ChevronRight, X } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport { createContext, useContext, useId, useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useArriving } from '@/ds/components/Arrival';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { Shimmer } from '@/ds/components/Shimmer';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\ntype ToolCallStatus = 'idle' | 'running' | 'error';\n\ninterface ToolCallContextValue {\n open: boolean;\n status: ToolCallStatus;\n}\n\nconst ToolCallContext = createContext<ToolCallContextValue | undefined>(undefined);\n\n// Stryker disable next-line ArrowFunction: the default callback is intentionally behaviorless.\nconst noopOpenChange = () => {};\n\nfunction useToolCall() {\n const context = useContext(ToolCallContext);\n if (!context) throw new Error('ToolCall compounds must be rendered within ToolCall');\n return context;\n}\n\nexport interface ToolCallProps extends Omit<\n ComponentProps<typeof Collapsible>,\n 'defaultOpen' | 'onOpenChange' | 'open'\n> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n status?: ToolCallStatus;\n}\n\nexport function ToolCall({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange = noopOpenChange,\n status = 'idle',\n className,\n children,\n ...props\n}: ToolCallProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = controlledOpen ?? uncontrolledOpen;\n const statusId = useId();\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen);\n onOpenChange(nextOpen);\n };\n\n return (\n <ToolCallContext.Provider value={{ open, status }}>\n <Collapsible\n open={open}\n onOpenChange={handleOpenChange}\n className={cn('max-w-full min-w-0', className)}\n role=\"group\"\n aria-busy={status === 'running'}\n aria-invalid={status === 'error' || undefined}\n aria-describedby={status === 'idle' ? undefined : statusId}\n data-status={status}\n {...props}\n >\n {children}\n {status !== 'idle' && (\n <span id={statusId} className=\"sr-only\">\n {status === 'running' ? 'Tool call running' : 'Tool call failed'}\n </span>\n )}\n </Collapsible>\n </ToolCallContext.Provider>\n );\n}\n\nexport const ToolCallTrigger = ({ className, ...props }: ComponentProps<typeof CollapsibleTrigger>) => (\n <CollapsibleTrigger\n className={cn(\n 'group/row w-full cursor-pointer rounded-md text-left transition-colors hover:bg-neutral6/5 focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:outline-hidden motion-reduce:transition-none',\n className,\n )}\n {...props}\n />\n);\n\nexport const ToolCallHeader = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { status } = useToolCall();\n\n return (\n <Shimmer\n active={status === 'running'}\n className={cn('flex w-full min-w-0 items-center gap-2 px-1.5 py-1', className)}\n {...props}\n >\n {children}\n </Shimmer>\n );\n};\n\nexport const ToolCallIcon = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props} />\n);\n\nexport const ToolCallLabel = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" variant=\"ui-sm\" className={cn('text-icon3 max-w-[55%] shrink-0 truncate', className)} {...props} />\n);\n\nexport const ToolCallDetail = ({ className, ...props }: ComponentProps<typeof Txt>) => {\n const arriving = useArriving();\n\n return (\n <Txt\n as=\"span\"\n variant=\"ui-xs\"\n font=\"mono\"\n className={cn('text-icon3 min-w-0 truncate', arriving, className)}\n {...props}\n />\n );\n};\n\nexport const ToolCallSummary = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex min-w-0 items-center gap-1', className)} {...props} />\n);\n\nexport interface ToolCallSpacerProps extends ComponentProps<'span'> {\n rule?: boolean;\n}\n\nexport const ToolCallSpacer = ({ rule, className, ...props }: ToolCallSpacerProps) => (\n <span\n aria-hidden\n className={cn('min-w-2 flex-1', rule && 'h-px bg-border1 mask-r-from-[calc(100%-min(100%,160px))]', className)}\n {...props}\n />\n);\n\nexport const ToolCallTrailing = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex shrink-0 items-center', className)} {...props} />\n);\n\nexport const ToolCallDisclosure = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { open } = useToolCall();\n\n return (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props}>\n <span\n aria-hidden\n className={cn(\n 'text-icon3 flex shrink-0 items-center opacity-0 transition duration-150 motion-reduce:transition-none',\n 'group-hover/row:opacity-100 group-focus-visible/row:opacity-100',\n open && 'rotate-90 opacity-100',\n )}\n >\n {children ?? <ChevronRight size={13} />}\n </span>\n </span>\n );\n};\n\nexport interface ToolCallPresentedHeaderProps extends Omit<ComponentProps<typeof ToolCallHeader>, 'children'> {\n /** Rendered ahead of the icon, e.g. a timestamp. */\n leading?: ReactNode;\n icon: LucideIcon;\n label: string;\n detail?: string;\n disclosure?: boolean;\n}\n\n/** The canonical header of a presented tool call: icon, label, detail, failure mark, chevron. */\nexport const ToolCallPresentedHeader = ({\n leading,\n icon: Icon,\n label,\n detail,\n disclosure = true,\n ...props\n}: ToolCallPresentedHeaderProps) => {\n const { status } = useToolCall();\n\n return (\n <ToolCallHeader {...props}>\n {leading}\n <ToolCallIcon>\n <Icon\n size={14}\n strokeWidth={1.75}\n aria-hidden\n className={status === 'error' ? 'text-error/80' : 'text-icon2'}\n />\n </ToolCallIcon>\n <ToolCallLabel>{label}</ToolCallLabel>\n {detail && <ToolCallDetail>{detail}</ToolCallDetail>}\n <ToolCallSpacer />\n {status === 'error' && (\n <ToolCallTrailing>\n <X size={13} role=\"img\" aria-label=\"Failed\" className=\"text-error shrink-0\" />\n </ToolCallTrailing>\n )}\n {disclosure && <ToolCallDisclosure />}\n </ToolCallHeader>\n );\n};\n\nexport const ToolCallContent = ({ className, children, ...props }: ComponentProps<typeof CollapsibleContent>) => (\n <CollapsibleContent className=\"max-w-full min-w-0\" {...props}>\n <div\n className={cn(\n \"relative ml-[14px] flex max-w-full min-w-0 flex-col gap-1.5 py-1.5 pr-1 pl-4 before:absolute before:inset-y-0 before:left-0 before:w-px before:bg-border1 before:mask-b-from-[calc(100%-min(40%,80px))] before:content-['']\",\n className,\n )}\n >\n {children}\n </div>\n </CollapsibleContent>\n);\n\nexport interface ToolCallMonoProps extends ComponentProps<'pre'> {\n copyText: string;\n}\n\n/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */\nexport const ToolCallMono = ({ copyText, className, children, ...props }: ToolCallMonoProps) => (\n <div className=\"group/block relative max-w-full min-w-0\">\n <pre\n className={cn(\n 'm-0 max-h-60 max-w-full overflow-auto rounded-md bg-neutral6/5 px-3 py-2 font-mono text-xs leading-normal break-words whitespace-pre-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </pre>\n <CopyButton\n content={copyText}\n size=\"sm\"\n variant=\"ghost\"\n className=\"absolute top-1 right-1 opacity-0 transition-opacity group-hover/block:opacity-100 focus-visible:opacity-100\"\n />\n </div>\n);\n\nexport type { ToolCallStatus };\n","import {\n BookOpen,\n Braces,\n CircleStop,\n Eye,\n FileSearch,\n FolderPlus,\n FolderSearch,\n Globe,\n ScrollText,\n Search,\n SquarePen,\n SquareTerminal,\n Trash2,\n Wrench,\n} from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\n\nexport interface ToolPresentation {\n icon: LucideIcon;\n label: string;\n /** Salient argument shown next to the label: command, path, pattern… */\n detail?: string;\n /** Shell command, when the tool is terminal-style. Drives the expanded body. */\n command?: string;\n}\n\n/** Tool arguments and results as the mono body shows them: strings verbatim, the rest pretty JSON. */\nexport function stringifyToolValue(value: unknown): string {\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n}\n\nfunction hasProperty<K extends string>(value: object, key: K): value is object & Record<K, unknown> {\n return key in value;\n}\n\nfunction stringArg(args: unknown, key: string): string | undefined {\n if (!args || typeof args !== 'object' || !hasProperty(args, key)) return undefined;\n const value = args[key];\n if (typeof value === 'number') return String(value);\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction firstStringArg(args: unknown, keys: string[]): string | undefined {\n for (const key of keys) {\n const value = stringArg(args, key);\n if (value) return value;\n }\n return undefined;\n}\n\ninterface ToolStyle {\n icon: LucideIcon;\n label: string;\n detailKeys?: string[];\n isCommand?: boolean;\n}\n\nconst TOOL_STYLES: Record<string, ToolStyle> = {\n view: { icon: Eye, label: 'Read', detailKeys: ['path'] },\n read_file: { icon: Eye, label: 'Read', detailKeys: ['path'] },\n write_file: { icon: SquarePen, label: 'Write', detailKeys: ['path'] },\n create_file: { icon: SquarePen, label: 'Write', detailKeys: ['path'] },\n edit_file: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n string_replace: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n str_replace: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n ast_edit: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n execute_command: { icon: SquareTerminal, label: 'Run', detailKeys: ['command'], isCommand: true },\n get_process_output: { icon: ScrollText, label: 'Process output', detailKeys: ['pid'] },\n kill_process: { icon: CircleStop, label: 'Stop process', detailKeys: ['pid'] },\n find_files: { icon: FolderSearch, label: 'Find files', detailKeys: ['pattern', 'path'] },\n list_files: { icon: FolderSearch, label: 'List files', detailKeys: ['pattern', 'path'] },\n grep: { icon: Search, label: 'Search', detailKeys: ['pattern', 'path'] },\n search_content: { icon: Search, label: 'Search', detailKeys: ['pattern', 'query'] },\n search: { icon: Search, label: 'Search', detailKeys: ['query'] },\n web_search: { icon: Globe, label: 'Search the web', detailKeys: ['query'] },\n lsp_inspect: { icon: Braces, label: 'Inspect code', detailKeys: ['path'] },\n file_stat: { icon: FileSearch, label: 'File info', detailKeys: ['path'] },\n delete: { icon: Trash2, label: 'Delete', detailKeys: ['path'] },\n delete_file: { icon: Trash2, label: 'Delete', detailKeys: ['path'] },\n mkdir: { icon: FolderPlus, label: 'New folder', detailKeys: ['path'] },\n skill: { icon: BookOpen, label: 'Skill', detailKeys: ['name'] },\n skill_search: { icon: BookOpen, label: 'Search skills', detailKeys: ['query'] },\n skill_read: { icon: BookOpen, label: 'Skill file', detailKeys: ['path'] },\n};\n\nfunction prettifyToolName(toolName: string): string {\n const words = toolName.replace(/[_-]+/g, ' ').trim();\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : toolName;\n}\n\n/** Agents prefix commands with `cd <workspace> &&`, which crowds out the command itself on a one-line row. */\nfunction withoutCdPrefix(command: string): string {\n return command.replace(/^\\s*cd\\s+(?:'[^']*'|\"[^\"]*\"|[^\\s&|;]+)\\s*&&\\s*/, '') || command;\n}\n\nexport function presentTool(toolName: string, args: unknown): ToolPresentation {\n const style = TOOL_STYLES[toolName.replace(/^mastra_workspace_/, '')];\n if (!style) return { icon: Wrench, label: prettifyToolName(toolName) };\n\n const detail = style.detailKeys ? firstStringArg(args, style.detailKeys) : undefined;\n if (!detail) return { icon: style.icon, label: style.label };\n if (!style.isCommand) return { icon: style.icon, label: style.label, detail };\n return { icon: style.icon, label: style.label, detail: withoutCdPrefix(detail), command: detail };\n}\n"],"names":["createContext","useContext","useState","useId","jsx","jsxs","Collapsible","cn","CollapsibleTrigger","Shimmer","Txt","useArriving","ChevronRight","X","CollapsibleContent","CopyButton","Eye","SquarePen","SquareTerminal","ScrollText","CircleStop","FolderSearch","Search","Globe","Braces","FileSearch","Trash2","FolderPlus","BookOpen","Wrench"],"mappings":";;;;;;;;;;;;;;AAkBA,MAAM,eAAA,GAAkBA,oBAAgD,MAAS,CAAA;AAGjF,MAAM,iBAAiB,MAAM;AAAC,CAAA;AAE9B,SAAS,WAAA,GAAc;AACrB,EAAA,MAAM,OAAA,GAAUC,iBAAW,eAAe,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,qDAAqD,CAAA;AACnF,EAAA,OAAO,OAAA;AACT;AAYO,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA,EAAM,cAAA;AAAA,EACN,WAAA,GAAc,KAAA;AAAA,EACd,YAAA,GAAe,cAAA;AAAA,EACf,MAAA,GAAS,MAAA;AAAA,EACT,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIC,eAAS,WAAW,CAAA;AACpE,EAAA,MAAM,OAAO,cAAA,IAAkB,gBAAA;AAC/B,EAAA,MAAM,WAAWC,WAAA,EAAM;AAEvB,EAAA,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAsB;AAC9C,IAAA,IAAI,cAAA,KAAmB,MAAA,EAAW,mBAAA,CAAoB,QAAQ,CAAA;AAC9D,IAAA,YAAA,CAAa,QAAQ,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,uBACEC,cAAA,CAAC,gBAAgB,QAAA,EAAhB,EAAyB,OAAO,EAAE,IAAA,EAAM,QAAO,EAC9C,QAAA,kBAAAC,eAAA;AAAA,IAACC,uBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA,EAAc,gBAAA;AAAA,MACd,SAAA,EAAWC,WAAA,CAAG,oBAAA,EAAsB,SAAS,CAAA;AAAA,MAC7C,IAAA,EAAK,OAAA;AAAA,MACL,aAAW,MAAA,KAAW,SAAA;AAAA,MACtB,cAAA,EAAc,WAAW,OAAA,IAAW,MAAA;AAAA,MACpC,kBAAA,EAAkB,MAAA,KAAW,MAAA,GAAS,MAAA,GAAY,QAAA;AAAA,MAClD,aAAA,EAAa,MAAA;AAAA,MACZ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,MAAA,KAAW,MAAA,oBACVH,cAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,QAAA,EAAU,SAAA,EAAU,SAAA,EAC3B,QAAA,EAAA,MAAA,KAAW,SAAA,GAAY,mBAAA,GAAsB,kBAAA,EAChD;AAAA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AAEO,MAAM,kBAAkB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBACpDA,cAAA;AAAA,EAACI,8BAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAWD,WAAA;AAAA,MACT,uMAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAGK,MAAM,iBAAiB,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,OAAM,KAA8B;AAC3F,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,EAAY;AAE/B,EAAA,uBACEH,cAAA;AAAA,IAACK,eAAA;AAAA,IAAA;AAAA,MACC,QAAQ,MAAA,KAAW,SAAA;AAAA,MACnB,SAAA,EAAWF,WAAA,CAAG,oDAAA,EAAsD,SAAS,CAAA;AAAA,MAC5E,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAEO,MAAM,YAAA,GAAe,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,qBACjDH,cAAA,CAAC,MAAA,EAAA,EAAK,WAAWG,WAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAG1F,MAAM,gBAAgB,CAAC,EAAE,WAAW,GAAG,KAAA,uBAC5CH,cAAA,CAACM,OAAA,EAAA,EAAI,IAAG,MAAA,EAAO,OAAA,EAAQ,SAAQ,SAAA,EAAWH,WAAA,CAAG,4CAA4C,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAG3G,MAAM,iBAAiB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,KAAkC;AACrF,EAAA,MAAM,WAAWI,sBAAA,EAAY;AAE7B,EAAA,uBACEP,cAAA;AAAA,IAACM,OAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,OAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAWH,WAAA,CAAG,6BAAA,EAA+B,QAAA,EAAU,SAAS,CAAA;AAAA,MAC/D,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,MAAM,eAAA,GAAkB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,qBACpDH,cAAA,CAAC,MAAA,EAAA,EAAK,WAAWG,WAAA,CAAG,iCAAA,EAAmC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAOzE,MAAM,iBAAiB,CAAC,EAAE,MAAM,SAAA,EAAW,GAAG,OAAM,qBACzDH,cAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,aAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAWG,WAAA,CAAG,gBAAA,EAAkB,IAAA,IAAQ,4DAA4D,SAAS,CAAA;AAAA,IAC5G,GAAG;AAAA;AACN;AAGK,MAAM,gBAAA,GAAmB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,qBACrDH,cAAA,CAAC,MAAA,EAAA,EAAK,WAAWG,WAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAGpE,MAAM,qBAAqB,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,OAAM,KAA8B;AAC/F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,WAAA,EAAY;AAE7B,EAAA,uBACEH,cAAA,CAAC,UAAK,SAAA,EAAWG,WAAA,CAAG,oDAAoD,SAAS,CAAA,EAAI,GAAG,KAAA,EACtF,QAAA,kBAAAH,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAWG,WAAA;AAAA,QACT,uGAAA;AAAA,QACA,iEAAA;AAAA,QACA,IAAA,IAAQ;AAAA,OACV;AAAA,MAEC,QAAA,EAAA,QAAA,oBAAYH,cAAA,CAACQ,wBAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA,GACvC,EACF,CAAA;AAEJ;AAYO,MAAM,0BAA0B,CAAC;AAAA,EACtC,OAAA;AAAA,EACA,IAAA,EAAM,IAAA;AAAA,EACN,KAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,GAAG;AACL,CAAA,KAAoC;AAClC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,EAAY;AAE/B,EAAA,uBACEP,eAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,KAAA,EACjB,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,mCACA,YAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,EAAA;AAAA,QACN,WAAA,EAAa,IAAA;AAAA,QACb,aAAA,EAAW,IAAA;AAAA,QACX,SAAA,EAAW,MAAA,KAAW,OAAA,GAAU,eAAA,GAAkB;AAAA;AAAA,KACpD,EACF,CAAA;AAAA,oBACAA,cAAA,CAAC,iBAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACrB,MAAA,oBAAUA,cAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,mCAClC,cAAA,EAAA,EAAe,CAAA;AAAA,IACf,MAAA,KAAW,OAAA,oBACVA,cAAA,CAAC,gBAAA,EAAA,EACC,yCAACS,aAAA,EAAA,EAAE,IAAA,EAAM,EAAA,EAAI,IAAA,EAAK,KAAA,EAAM,YAAA,EAAW,QAAA,EAAS,SAAA,EAAU,uBAAsB,CAAA,EAC9E,CAAA;AAAA,IAED,UAAA,mCAAe,kBAAA,EAAA,EAAmB;AAAA,GAAA,EACrC,CAAA;AAEJ;AAEO,MAAM,eAAA,GAAkB,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,qBAC9DT,cAAA,CAACU,8BAAA,EAAA,EAAmB,SAAA,EAAU,oBAAA,EAAsB,GAAG,KAAA,EACrD,QAAA,kBAAAV,cAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAWG,WAAA;AAAA,MACT,6NAAA;AAAA,MACA;AAAA,KACF;AAAA,IAEC;AAAA;AACH,CAAA,EACF;AAQK,MAAM,YAAA,GAAe,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,qBACrEF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,kBAAAD,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWG,WAAA;AAAA,QACT,2IAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAAA,kBACAH,cAAA;AAAA,IAACW,qBAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAK,IAAA;AAAA,MACL,OAAA,EAAQ,OAAA;AAAA,MACR,SAAA,EAAU;AAAA;AAAA;AACZ,CAAA,EACF;;ACzNK,SAAS,mBAAmB,KAAA,EAAwB;AACzD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI;AACF,IAAA,OAAO,KAAK,SAAA,CAAU,KAAA,EAAO,MAAM,CAAC,CAAA,IAAK,OAAO,KAAK,CAAA;AAAA,EACvD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AACF;AAEA,SAAS,WAAA,CAA8B,OAAe,GAAA,EAA8C;AAClG,EAAA,OAAO,GAAA,IAAO,KAAA;AAChB;AAEA,SAAS,SAAA,CAAU,MAAe,GAAA,EAAiC;AACjE,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,IAAY,CAAC,WAAA,CAAY,IAAA,EAAM,GAAG,CAAA,EAAG,OAAO,MAAA;AACzE,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAG,CAAA;AACtB,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,OAAO,KAAK,CAAA;AAClD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,MAAA,GAAS,IAAI,KAAA,GAAQ,MAAA;AACjE;AAEA,SAAS,cAAA,CAAe,MAAe,IAAA,EAAoC;AACzE,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,IAAA,EAAM,GAAG,CAAA;AACjC,IAAA,IAAI,OAAO,OAAO,KAAA;AAAA,EACpB;AACA,EAAA,OAAO,MAAA;AACT;AASA,MAAM,WAAA,GAAyC;AAAA,EAC7C,IAAA,EAAM,EAAE,IAAA,EAAMC,eAAA,EAAK,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACvD,SAAA,EAAW,EAAE,IAAA,EAAMA,eAAA,EAAK,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EAC5D,UAAA,EAAY,EAAE,IAAA,EAAMC,qBAAA,EAAW,OAAO,OAAA,EAAS,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACpE,WAAA,EAAa,EAAE,IAAA,EAAMA,qBAAA,EAAW,OAAO,OAAA,EAAS,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACrE,SAAA,EAAW,EAAE,IAAA,EAAMA,qBAAA,EAAW,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EAClE,cAAA,EAAgB,EAAE,IAAA,EAAMA,qBAAA,EAAW,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACvE,WAAA,EAAa,EAAE,IAAA,EAAMA,qBAAA,EAAW,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACpE,QAAA,EAAU,EAAE,IAAA,EAAMA,qBAAA,EAAW,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACjE,eAAA,EAAiB,EAAE,IAAA,EAAMC,0BAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,UAAA,EAAY,CAAC,SAAS,CAAA,EAAG,SAAA,EAAW,IAAA,EAAK;AAAA,EAChG,kBAAA,EAAoB,EAAE,IAAA,EAAMC,sBAAA,EAAY,OAAO,gBAAA,EAAkB,UAAA,EAAY,CAAC,KAAK,CAAA,EAAE;AAAA,EACrF,YAAA,EAAc,EAAE,IAAA,EAAMC,sBAAA,EAAY,OAAO,cAAA,EAAgB,UAAA,EAAY,CAAC,KAAK,CAAA,EAAE;AAAA,EAC7E,UAAA,EAAY,EAAE,IAAA,EAAMC,wBAAA,EAAc,KAAA,EAAO,cAAc,UAAA,EAAY,CAAC,SAAA,EAAW,MAAM,CAAA,EAAE;AAAA,EACvF,UAAA,EAAY,EAAE,IAAA,EAAMA,wBAAA,EAAc,KAAA,EAAO,cAAc,UAAA,EAAY,CAAC,SAAA,EAAW,MAAM,CAAA,EAAE;AAAA,EACvF,IAAA,EAAM,EAAE,IAAA,EAAMC,kBAAA,EAAQ,KAAA,EAAO,UAAU,UAAA,EAAY,CAAC,SAAA,EAAW,MAAM,CAAA,EAAE;AAAA,EACvE,cAAA,EAAgB,EAAE,IAAA,EAAMA,kBAAA,EAAQ,KAAA,EAAO,UAAU,UAAA,EAAY,CAAC,SAAA,EAAW,OAAO,CAAA,EAAE;AAAA,EAClF,MAAA,EAAQ,EAAE,IAAA,EAAMA,kBAAA,EAAQ,OAAO,QAAA,EAAU,UAAA,EAAY,CAAC,OAAO,CAAA,EAAE;AAAA,EAC/D,UAAA,EAAY,EAAE,IAAA,EAAMC,iBAAA,EAAO,OAAO,gBAAA,EAAkB,UAAA,EAAY,CAAC,OAAO,CAAA,EAAE;AAAA,EAC1E,WAAA,EAAa,EAAE,IAAA,EAAMC,kBAAA,EAAQ,OAAO,cAAA,EAAgB,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACzE,SAAA,EAAW,EAAE,IAAA,EAAMC,sBAAA,EAAY,OAAO,WAAA,EAAa,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACxE,MAAA,EAAQ,EAAE,IAAA,EAAMC,kBAAA,EAAQ,OAAO,QAAA,EAAU,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EAC9D,WAAA,EAAa,EAAE,IAAA,EAAMA,kBAAA,EAAQ,OAAO,QAAA,EAAU,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACnE,KAAA,EAAO,EAAE,IAAA,EAAMC,sBAAA,EAAY,OAAO,YAAA,EAAc,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACrE,KAAA,EAAO,EAAE,IAAA,EAAMC,oBAAA,EAAU,OAAO,OAAA,EAAS,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EAC9D,YAAA,EAAc,EAAE,IAAA,EAAMA,oBAAA,EAAU,OAAO,eAAA,EAAiB,UAAA,EAAY,CAAC,OAAO,CAAA,EAAE;AAAA,EAC9E,UAAA,EAAY,EAAE,IAAA,EAAMA,oBAAA,EAAU,OAAO,YAAA,EAAc,UAAA,EAAY,CAAC,MAAM,CAAA;AACxE,CAAA;AAEA,SAAS,iBAAiB,QAAA,EAA0B;AAClD,EAAA,MAAM,QAAQ,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,GAAG,EAAE,IAAA,EAAK;AACnD,EAAA,OAAO,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,CAAE,aAAY,GAAI,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,QAAA;AAClE;AAGA,SAAS,gBAAgB,OAAA,EAAyB;AAChD,EAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,gDAAA,EAAkD,EAAE,CAAA,IAAK,OAAA;AAClF;AAEO,SAAS,WAAA,CAAY,UAAkB,IAAA,EAAiC;AAC7E,EAAA,MAAM,QAAQ,WAAA,CAAY,QAAA,CAAS,OAAA,CAAQ,oBAAA,EAAsB,EAAE,CAAC,CAAA;AACpE,EAAA,IAAI,CAAC,OAAO,OAAO,EAAE,MAAMC,kBAAA,EAAQ,KAAA,EAAO,gBAAA,CAAiB,QAAQ,CAAA,EAAE;AAErE,EAAA,MAAM,SAAS,KAAA,CAAM,UAAA,GAAa,eAAe,IAAA,EAAM,KAAA,CAAM,UAAU,CAAA,GAAI,MAAA;AAC3E,EAAA,IAAI,CAAC,QAAQ,OAAO,EAAE,MAAM,KAAA,CAAM,IAAA,EAAM,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AAC3D,EAAA,IAAI,CAAC,KAAA,CAAM,SAAA,EAAW,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,MAAA,EAAO;AAC5E,EAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ,eAAA,CAAgB,MAAM,CAAA,EAAG,OAAA,EAAS,MAAA,EAAO;AAClG;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"tool-call.cjs.js","sources":["../../../src/ds/components/ai/tool-call/ansi.ts","../../../src/ds/components/ai/tool-call/group-consecutive.ts","../../../src/ds/components/ai/tool-call/tool-call.tsx","../../../src/ds/components/ai/tool-call/tool-call-edit.tsx","../../../src/ds/components/ai/tool-call/tool-presentation.ts","../../../src/ds/components/ai/tool-call/tool-call-group.tsx"],"sourcesContent":["// Sandbox commands run in a PTY, so CLIs emit color escapes even under NO_COLOR.\n// eslint-disable-next-line no-control-regex\nconst ANSI_RE =\n /[\\u001b\\u009b][[\\]()#;?]*(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d/#&.:=?%@~_]*)*)?\\u0007|(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~])/g;\n\n// The same sequences once JSON.stringify escaped the bytes; an even backslash run before the `u` is source text spelling the escape, kept.\nconst ESCAPED_ANSI_RE = /(?<!\\\\)((?:\\\\\\\\)*)\\\\u001[bB](?:\\[[0-9;?<=>]*[a-zA-Z]|\\][\\s\\S]*?(?:\\\\u0007|\\\\u001[bB]\\\\\\\\))/g;\n\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_RE, '');\n}\n\nexport function stripSerializedAnsi(text: string): string {\n return stripAnsi(text).replace(ESCAPED_ANSI_RE, '$1');\n}\n","export interface ConsecutiveGroups<T> {\n /** Each run, keyed by its first member. */\n byFirstKey: Map<string, T[]>;\n /** The members after the first, which draw nothing of their own. */\n memberKeys: Set<string>;\n}\n\nexport interface ConsecutiveRules<T, U extends T> {\n key: (item: U) => string;\n /** Whether an item extends the run; anything else ends it. */\n joins: (item: T) => item is U;\n /** Runs shorter than this stay individual rows. */\n min?: number;\n}\n\n/** Consecutive tool calls this long fold into one group row. */\nexport const TOOL_GROUP_MIN = 3;\n\n/** Cuts a list into runs of joining items, keeping only the runs long enough to fold. */\nexport function groupConsecutive<T, U extends T>(\n items: readonly T[],\n { key, joins, min = TOOL_GROUP_MIN }: ConsecutiveRules<T, U>,\n): ConsecutiveGroups<U> {\n const byFirstKey = new Map<string, U[]>();\n const memberKeys = new Set<string>();\n let run: U[] = [];\n\n const flush = () => {\n if (run.length >= min) {\n for (const [index, item] of run.entries()) {\n if (index === 0) byFirstKey.set(key(item), run);\n else memberKeys.add(key(item));\n }\n }\n run = [];\n };\n\n for (const item of items) {\n if (joins(item)) run.push(item);\n else flush();\n }\n flush();\n\n return { byFirstKey, memberKeys };\n}\n","import { ChevronRight, X } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport { createContext, useContext, useId, useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useArriving } from '@/ds/components/Arrival';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { Shimmer } from '@/ds/components/Shimmer';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\ntype ToolCallStatus = 'idle' | 'running' | 'error';\n\ninterface ToolCallContextValue {\n open: boolean;\n status: ToolCallStatus;\n}\n\nconst ToolCallContext = createContext<ToolCallContextValue | undefined>(undefined);\n\n// Stryker disable next-line ArrowFunction: the default callback is intentionally behaviorless.\nconst noopOpenChange = () => {};\n\nfunction useToolCall() {\n const context = useContext(ToolCallContext);\n if (!context) throw new Error('ToolCall compounds must be rendered within ToolCall');\n return context;\n}\n\nexport interface ToolCallProps extends Omit<\n ComponentProps<typeof Collapsible>,\n 'defaultOpen' | 'onOpenChange' | 'open'\n> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n status?: ToolCallStatus;\n}\n\nexport function ToolCall({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange = noopOpenChange,\n status = 'idle',\n className,\n children,\n ...props\n}: ToolCallProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = controlledOpen ?? uncontrolledOpen;\n const statusId = useId();\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen);\n onOpenChange(nextOpen);\n };\n\n return (\n <ToolCallContext.Provider value={{ open, status }}>\n <Collapsible\n open={open}\n onOpenChange={handleOpenChange}\n className={cn('max-w-full min-w-0', className)}\n role=\"group\"\n aria-busy={status === 'running'}\n aria-invalid={status === 'error' || undefined}\n aria-describedby={status === 'idle' ? undefined : statusId}\n data-status={status}\n {...props}\n >\n {children}\n {status !== 'idle' && (\n <span id={statusId} className=\"sr-only\">\n {status === 'running' ? 'Tool call running' : 'Tool call failed'}\n </span>\n )}\n </Collapsible>\n </ToolCallContext.Provider>\n );\n}\n\nexport const ToolCallTrigger = ({ className, ...props }: ComponentProps<typeof CollapsibleTrigger>) => (\n <CollapsibleTrigger\n className={cn(\n 'group/row w-full cursor-pointer rounded-md text-left transition-colors hover:bg-neutral6/5 focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:outline-hidden motion-reduce:transition-none',\n className,\n )}\n {...props}\n />\n);\n\nexport const ToolCallHeader = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { status } = useToolCall();\n\n return (\n <Shimmer\n active={status === 'running'}\n className={cn('flex w-full min-w-0 items-center gap-2 px-1.5 py-1', className)}\n {...props}\n >\n {children}\n </Shimmer>\n );\n};\n\nexport const ToolCallIcon = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props} />\n);\n\nexport const ToolCallLabel = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" variant=\"ui-sm\" className={cn('text-icon3 max-w-[55%] shrink-0 truncate', className)} {...props} />\n);\n\nexport const ToolCallDetail = ({ className, ...props }: ComponentProps<typeof Txt>) => {\n const arriving = useArriving();\n\n return (\n <Txt\n as=\"span\"\n variant=\"ui-xs\"\n font=\"mono\"\n className={cn('text-icon3 min-w-0 truncate', arriving, className)}\n {...props}\n />\n );\n};\n\nexport const ToolCallSummary = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex min-w-0 items-center gap-1', className)} {...props} />\n);\n\nexport interface ToolCallSpacerProps extends ComponentProps<'span'> {\n rule?: boolean;\n}\n\nexport const ToolCallSpacer = ({ rule, className, ...props }: ToolCallSpacerProps) => (\n <span\n aria-hidden\n className={cn('min-w-2 flex-1', rule && 'h-px bg-border1 mask-r-from-[calc(100%-min(100%,160px))]', className)}\n {...props}\n />\n);\n\nexport const ToolCallTrailing = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex shrink-0 items-center', className)} {...props} />\n);\n\nexport const ToolCallDisclosure = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { open } = useToolCall();\n\n return (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props}>\n <span\n aria-hidden\n className={cn(\n 'text-icon3 flex shrink-0 items-center opacity-0 transition duration-150 motion-reduce:transition-none',\n 'group-hover/row:opacity-100 group-focus-visible/row:opacity-100',\n open && 'rotate-90 opacity-100',\n )}\n >\n {children ?? <ChevronRight size={13} />}\n </span>\n </span>\n );\n};\n\nexport interface ToolCallPresentedHeaderProps extends Omit<ComponentProps<typeof ToolCallHeader>, 'children'> {\n /** Rendered ahead of the icon, e.g. a timestamp. */\n leading?: ReactNode;\n icon: LucideIcon;\n label: string;\n detail?: string;\n disclosure?: boolean;\n}\n\n/** The canonical header of a presented tool call: icon, label, detail, failure mark, chevron. */\nexport const ToolCallPresentedHeader = ({\n leading,\n icon: Icon,\n label,\n detail,\n disclosure = true,\n ...props\n}: ToolCallPresentedHeaderProps) => {\n const { status } = useToolCall();\n\n return (\n <ToolCallHeader {...props}>\n {leading}\n <ToolCallIcon>\n <Icon\n size={14}\n strokeWidth={1.75}\n aria-hidden\n className={status === 'error' ? 'text-error/80' : 'text-icon2'}\n />\n </ToolCallIcon>\n <ToolCallLabel>{label}</ToolCallLabel>\n {detail && <ToolCallDetail>{detail}</ToolCallDetail>}\n <ToolCallSpacer />\n {status === 'error' && (\n <ToolCallTrailing>\n <X size={13} role=\"img\" aria-label=\"Failed\" className=\"text-error shrink-0\" />\n </ToolCallTrailing>\n )}\n {disclosure && <ToolCallDisclosure />}\n </ToolCallHeader>\n );\n};\n\nexport const ToolCallContent = ({ className, children, ...props }: ComponentProps<typeof CollapsibleContent>) => (\n <CollapsibleContent className=\"max-w-full min-w-0\" {...props}>\n <div\n className={cn(\n \"relative ml-[14px] flex max-w-full min-w-0 flex-col gap-1.5 py-1.5 pr-1 pl-4 before:absolute before:inset-y-0 before:left-0 before:w-px before:bg-border1 before:mask-b-from-[calc(100%-min(40%,80px))] before:content-['']\",\n className,\n )}\n >\n {children}\n </div>\n </CollapsibleContent>\n);\n\nexport interface ToolCallMonoProps extends ComponentProps<'pre'> {\n copyText: string;\n}\n\n/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */\nexport const ToolCallMono = ({ copyText, className, children, ...props }: ToolCallMonoProps) => (\n <div className=\"group/block relative max-w-full min-w-0\">\n <pre\n className={cn(\n 'm-0 max-h-60 max-w-full overflow-auto rounded-md bg-neutral6/5 px-3 py-2 font-mono text-xs leading-normal break-words whitespace-pre-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </pre>\n <CopyButton\n content={copyText}\n size=\"sm\"\n variant=\"ghost\"\n className=\"absolute top-1 right-1 opacity-0 transition-opacity group-hover/block:opacity-100 focus-visible:opacity-100\"\n />\n </div>\n);\n\n/** A shell command as the body shows it: `$` in the margin, the copy takes the command alone. */\nexport const ToolCallCommand = ({ command }: { command: string }) => (\n <ToolCallMono copyText={command} className=\"text-icon5\">\n <span className=\"text-icon3 select-none\">$ </span>\n {command}\n </ToolCallMono>\n);\n\nexport type { ToolCallStatus };\n","import type { ToolEdit } from './tool-presentation';\nimport { tokenStyle, useHighlight } from '@/ds/components/Code';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { languageForPath } from '@/ds/components/CodeEditor/highlight';\nimport { truncateString } from '@/lib/truncate-string';\nimport { cn } from '@/lib/utils';\n\nconst DIFF_MAX_LINES = 200;\nconst WRITTEN_FILE_MAX_CHARS = 2000;\n\nconst DIFF_SIDES = {\n removed: { sign: '-', row: 'bg-error/10', gutter: 'text-error' },\n added: { sign: '+', row: 'bg-accent1/10', gutter: 'text-accent1' },\n} as const;\n\nfunction boundedLines(text: string): { lines: string[]; hidden: number } {\n const lines = text.split('\\n');\n return { lines: lines.slice(0, DIFF_MAX_LINES), hidden: Math.max(0, lines.length - DIFF_MAX_LINES) };\n}\n\nfunction DiffSide({ lines, side, lang }: { lines: string[]; side: keyof typeof DIFF_SIDES; lang: string | undefined }) {\n const { sign, row, gutter } = DIFF_SIDES[side];\n const code = lines.join('\\n');\n const highlighted = useHighlight(code, lang);\n const tokens = highlighted?.code === code ? highlighted.tokens : undefined;\n\n return (\n <>\n {lines.map((line, index) => (\n <div key={index} className={cn('flex whitespace-pre', row)}>\n <span className={cn('w-5 shrink-0 text-center opacity-70 select-none', gutter)}>{sign}</span>\n <span className=\"text-icon6 flex-1 pr-2.5\">\n {tokens?.[index]?.map((token, tokenIndex) => (\n <span key={tokenIndex} className=\"shiki-token\" style={tokenStyle(token)}>\n {token.content}\n </span>\n )) ?? line}\n </span>\n </div>\n ))}\n </>\n );\n}\n\nexport function ToolCallEdit({ edit }: { edit: ToolEdit }) {\n const lang = languageForPath(edit.path);\n\n if ('content' in edit) {\n return (\n <CodeBlock\n code={truncateString(edit.content, WRITTEN_FILE_MAX_CHARS)}\n lang={lang}\n fileName={edit.path ?? 'Change'}\n overflow=\"scroll\"\n />\n );\n }\n\n const removed = boundedLines(edit.oldText);\n const added = boundedLines(edit.newText);\n const hidden = removed.hidden + added.hidden;\n\n return (\n <div\n className=\"border-border1 bg-neutral6/5 max-w-full min-w-0 overflow-x-auto rounded-md border font-mono text-xs leading-normal\"\n role=\"group\"\n aria-label=\"File change\"\n >\n <DiffSide lines={removed.lines} side=\"removed\" lang={lang} />\n <DiffSide lines={added.lines} side=\"added\" lang={lang} />\n {hidden > 0 && <div className=\"text-icon3 px-2.5 py-1 select-none\">… {hidden} more lines</div>}\n </div>\n );\n}\n","import {\n BookOpen,\n Braces,\n CircleStop,\n Eye,\n FileSearch,\n FolderPlus,\n FolderSearch,\n Globe,\n ScrollText,\n Search,\n SquarePen,\n SquareTerminal,\n Trash2,\n Wrench,\n} from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\n\nexport interface ToolPresentation {\n icon: LucideIcon;\n label: string;\n /** Salient argument shown next to the label: command, path, pattern… */\n detail?: string;\n /** Shell command, when the tool is terminal-style. Drives the expanded body. */\n command?: string;\n}\n\n/** Tool arguments and results as the mono body shows them: strings verbatim, the rest pretty JSON. */\nexport function stringifyToolValue(value: unknown): string {\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n}\n\nfunction hasProperty<K extends string>(value: object, key: K): value is object & Record<K, unknown> {\n return key in value;\n}\n\nfunction stringArg(args: unknown, key: string): string | undefined {\n if (!args || typeof args !== 'object' || !hasProperty(args, key)) return undefined;\n const value = args[key];\n if (typeof value === 'number') return String(value);\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction firstStringArg(args: unknown, keys: string[]): string | undefined {\n for (const key of keys) {\n const value = stringArg(args, key);\n if (value) return value;\n }\n return undefined;\n}\n\ninterface ToolStyle {\n icon: LucideIcon;\n label: string;\n detailKeys?: string[];\n isCommand?: boolean;\n}\n\nconst TOOL_STYLES: Record<string, ToolStyle> = {\n view: { icon: Eye, label: 'Read', detailKeys: ['path'] },\n read_file: { icon: Eye, label: 'Read', detailKeys: ['path'] },\n write_file: { icon: SquarePen, label: 'Write', detailKeys: ['path'] },\n create_file: { icon: SquarePen, label: 'Write', detailKeys: ['path'] },\n edit_file: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n string_replace: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n str_replace: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n ast_edit: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n execute_command: { icon: SquareTerminal, label: 'Run', detailKeys: ['command'], isCommand: true },\n get_process_output: { icon: ScrollText, label: 'Process output', detailKeys: ['pid'] },\n kill_process: { icon: CircleStop, label: 'Stop process', detailKeys: ['pid'] },\n find_files: { icon: FolderSearch, label: 'Find files', detailKeys: ['pattern', 'path'] },\n list_files: { icon: FolderSearch, label: 'List files', detailKeys: ['pattern', 'path'] },\n grep: { icon: Search, label: 'Search', detailKeys: ['pattern', 'path'] },\n search_content: { icon: Search, label: 'Search', detailKeys: ['pattern', 'query'] },\n search: { icon: Search, label: 'Search', detailKeys: ['query'] },\n web_search: { icon: Globe, label: 'Search the web', detailKeys: ['query'] },\n lsp_inspect: { icon: Braces, label: 'Inspect code', detailKeys: ['path'] },\n file_stat: { icon: FileSearch, label: 'File info', detailKeys: ['path'] },\n delete: { icon: Trash2, label: 'Delete', detailKeys: ['path'] },\n delete_file: { icon: Trash2, label: 'Delete', detailKeys: ['path'] },\n mkdir: { icon: FolderPlus, label: 'New folder', detailKeys: ['path'] },\n skill: { icon: BookOpen, label: 'Skill', detailKeys: ['name'] },\n skill_search: { icon: BookOpen, label: 'Search skills', detailKeys: ['query'] },\n skill_read: { icon: BookOpen, label: 'Skill file', detailKeys: ['path'] },\n};\n\nfunction prettifyToolName(toolName: string): string {\n const words = toolName.replace(/[_-]+/g, ' ').trim();\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : toolName;\n}\n\n/** Agents prefix commands with `cd <workspace> &&`, which crowds out the command itself on a one-line row. */\nfunction withoutCdPrefix(command: string): string {\n return command.replace(/^\\s*cd\\s+(?:'[^']*'|\"[^\"]*\"|[^\\s&|;]+)\\s*&&\\s*/, '') || command;\n}\n\nexport function presentTool(toolName: string, args: unknown): ToolPresentation {\n const style = TOOL_STYLES[toolName.replace(/^mastra_workspace_/, '')];\n if (!style) return { icon: Wrench, label: prettifyToolName(toolName) };\n\n const detail = style.detailKeys ? firstStringArg(args, style.detailKeys) : undefined;\n if (!detail) return { icon: style.icon, label: style.label };\n if (!style.isCommand) return { icon: style.icon, label: style.label, detail };\n return { icon: style.icon, label: style.label, detail: withoutCdPrefix(detail), command: detail };\n}\n\nexport type ToolEdit = { path?: string } & ({ oldText: string; newText: string } | { content: string });\n\nfunction stringField(args: unknown, key: string): string | undefined {\n if (!args || typeof args !== 'object' || !hasProperty(args, key)) return undefined;\n return typeof args[key] === 'string' ? args[key] : undefined;\n}\n\nexport function toolEdit(toolName: string, args: unknown): ToolEdit | undefined {\n const path = stringField(args, 'path');\n const newText = stringField(args, 'new_string');\n if (/string_replace|str_replace|edit_file/i.test(toolName) && newText !== undefined) {\n return { path, oldText: stringField(args, 'old_string') ?? '', newText };\n }\n const content = stringField(args, 'content');\n if (/write_file|create_file/i.test(toolName) && content !== undefined) return { path, content };\n return undefined;\n}\n\n/** Task tools draw in the docked task list, never as a transcript row. */\nconst TASK_TOOLS = new Set(['task_write', 'task_update', 'task_complete', 'task_check']);\n\nexport function isTaskTool(toolName: string): boolean {\n return TASK_TOOLS.has(toolName);\n}\n","import { FoldVertical, X } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport {\n ToolCall,\n ToolCallContent,\n ToolCallDetail,\n ToolCallDisclosure,\n ToolCallHeader,\n ToolCallIcon,\n ToolCallLabel,\n ToolCallSpacer,\n ToolCallSummary,\n ToolCallTrailing,\n ToolCallTrigger,\n} from './tool-call';\nimport type { ToolCallStatus } from './tool-call';\nimport { presentTool } from './tool-presentation';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface ToolCallGroupStep {\n toolName: string;\n args: unknown;\n status: ToolCallStatus;\n}\n\nexport interface ToolCallGroupProps {\n steps: ToolCallGroupStep[];\n /** Rendered ahead of the icon, e.g. the time the first step began. */\n leading?: ReactNode;\n children: ReactNode;\n}\n\nconst MAX_KIND_GLYPHS = 4;\n\nexport function ToolCallGroup({ steps, leading, children }: ToolCallGroupProps) {\n const running = steps.find(step => step.status === 'running');\n const liveDetail = running && presentTool(running.toolName, running.args).detail;\n\n return (\n <ToolCall status={running ? 'running' : 'idle'} aria-label={`Tool group: ${steps.length} steps`}>\n <ToolCallTrigger>\n <ToolCallHeader>\n {leading}\n <ToolCallIcon>\n <FoldVertical size={14} strokeWidth={1.75} aria-hidden className=\"text-icon2\" />\n </ToolCallIcon>\n <ToolCallLabel>{steps.length} steps</ToolCallLabel>\n {liveDetail && <ToolCallDetail>{liveDetail}</ToolCallDetail>}\n <GroupKinds steps={steps} />\n <ToolCallSpacer rule />\n <ToolCallTrailing>\n <GroupProgress steps={steps} />\n </ToolCallTrailing>\n <ToolCallDisclosure />\n </ToolCallHeader>\n </ToolCallTrigger>\n <ToolCallContent className=\"py-0.5 pr-0 pl-2.5\">\n <ScrollArea maxHeight=\"18rem\" autoScroll={Boolean(running)} revealScrollbarOnHover={false}>\n {children}\n </ScrollArea>\n </ToolCallContent>\n </ToolCall>\n );\n}\n\nfunction GroupProgress({ steps }: { steps: ToolCallGroupStep[] }) {\n const done = steps.filter(step => step.status !== 'running').length;\n if (done < steps.length) {\n return (\n <Txt as=\"span\" variant=\"ui-xs\" className=\"text-icon3 shrink-0 tabular-nums\">\n {done}/{steps.length}\n </Txt>\n );\n }\n if (steps.some(step => step.status === 'error')) {\n return <X size={13} role=\"img\" aria-label=\"Failed\" className=\"text-error shrink-0\" />;\n }\n return null;\n}\n\nfunction GroupKinds({ steps }: { steps: ToolCallGroupStep[] }) {\n const iconByLabel = new Map(\n steps.map(step => presentTool(step.toolName, step.args)).map(({ label, icon }) => [label, icon]),\n );\n const kinds = [...iconByLabel].slice(0, MAX_KIND_GLYPHS);\n\n return (\n <ToolCallSummary role=\"img\" aria-label={kinds.map(([label]) => label).join(', ')} className=\"shrink-0 gap-1.5\">\n {kinds.map(([label, Kind]) => (\n <Kind key={label} size={12} strokeWidth={1.75} className=\"text-icon2\" />\n ))}\n </ToolCallSummary>\n );\n}\n"],"names":["createContext","useContext","useState","useId","jsx","jsxs","Collapsible","cn","CollapsibleTrigger","Shimmer","Txt","useArriving","ChevronRight","X","CollapsibleContent","CopyButton","code","useHighlight","Fragment","tokenStyle","languageForPath","CodeBlock","truncateString","Eye","SquarePen","SquareTerminal","ScrollText","CircleStop","FolderSearch","Search","Globe","Braces","FileSearch","Trash2","FolderPlus","BookOpen","Wrench","FoldVertical","ScrollArea"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { ChevronRight, X, BookOpen, FolderPlus, Trash2, FileSearch, Braces, Globe, Search, FolderSearch, CircleStop, ScrollText, SquareTerminal, SquarePen, Eye, Wrench } from 'lucide-react';
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { ChevronRight, X, BookOpen, FolderPlus, Trash2, FileSearch, Braces, Globe, Search, FolderSearch, CircleStop, ScrollText, SquareTerminal, SquarePen, Eye, Wrench, FoldVertical } from 'lucide-react';
|
|
3
3
|
import { useState, useId, createContext, useContext } from 'react';
|
|
4
4
|
import { u as useArriving } from '../../use-watched-CG9KoWl3.js';
|
|
5
5
|
import { C as Collapsible, a as CollapsibleContent, b as CollapsibleTrigger } from '../../collapsible-igib7hFh.js';
|
|
@@ -7,6 +7,42 @@ import { C as CopyButton } from '../../copy-button-BHmcGzIz.js';
|
|
|
7
7
|
import { S as Shimmer } from '../../shimmer-DV3ZgmuP.js';
|
|
8
8
|
import { T as Txt } from '../../Txt-ByUf-9Ic.js';
|
|
9
9
|
import { c as cn } from '../../cn-B4oPhFx9.js';
|
|
10
|
+
import { u as useHighlight, t as tokenStyle } from '../../code-D4Vw_fYq.js';
|
|
11
|
+
import { C as CodeBlock } from '../../code-block-DeksY23p.js';
|
|
12
|
+
import { l as languageForPath } from '../../highlight-BmpoELR4.js';
|
|
13
|
+
import { truncateString } from '../../utils/truncate-string.es.js';
|
|
14
|
+
import { S as ScrollArea } from '../../scroll-area-BiHnOfzg.js';
|
|
15
|
+
|
|
16
|
+
const ANSI_RE = /[\u001b\u009b][[\]()#;?]*(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d/#&.:=?%@~_]*)*)?\u0007|(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~])/g;
|
|
17
|
+
const ESCAPED_ANSI_RE = /(?<!\\)((?:\\\\)*)\\u001[bB](?:\[[0-9;?<=>]*[a-zA-Z]|\][\s\S]*?(?:\\u0007|\\u001[bB]\\\\))/g;
|
|
18
|
+
function stripAnsi(text) {
|
|
19
|
+
return text.replace(ANSI_RE, "");
|
|
20
|
+
}
|
|
21
|
+
function stripSerializedAnsi(text) {
|
|
22
|
+
return stripAnsi(text).replace(ESCAPED_ANSI_RE, "$1");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const TOOL_GROUP_MIN = 3;
|
|
26
|
+
function groupConsecutive(items, { key, joins, min = TOOL_GROUP_MIN }) {
|
|
27
|
+
const byFirstKey = /* @__PURE__ */ new Map();
|
|
28
|
+
const memberKeys = /* @__PURE__ */ new Set();
|
|
29
|
+
let run = [];
|
|
30
|
+
const flush = () => {
|
|
31
|
+
if (run.length >= min) {
|
|
32
|
+
for (const [index, item] of run.entries()) {
|
|
33
|
+
if (index === 0) byFirstKey.set(key(item), run);
|
|
34
|
+
else memberKeys.add(key(item));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
run = [];
|
|
38
|
+
};
|
|
39
|
+
for (const item of items) {
|
|
40
|
+
if (joins(item)) run.push(item);
|
|
41
|
+
else flush();
|
|
42
|
+
}
|
|
43
|
+
flush();
|
|
44
|
+
return { byFirstKey, memberKeys };
|
|
45
|
+
}
|
|
10
46
|
|
|
11
47
|
const ToolCallContext = createContext(void 0);
|
|
12
48
|
const noopOpenChange = () => {
|
|
@@ -172,6 +208,65 @@ const ToolCallMono = ({ copyText, className, children, ...props }) => /* @__PURE
|
|
|
172
208
|
}
|
|
173
209
|
)
|
|
174
210
|
] });
|
|
211
|
+
const ToolCallCommand = ({ command }) => /* @__PURE__ */ jsxs(ToolCallMono, { copyText: command, className: "text-icon5", children: [
|
|
212
|
+
/* @__PURE__ */ jsx("span", { className: "text-icon3 select-none", children: "$ " }),
|
|
213
|
+
command
|
|
214
|
+
] });
|
|
215
|
+
|
|
216
|
+
const DIFF_MAX_LINES = 200;
|
|
217
|
+
const WRITTEN_FILE_MAX_CHARS = 2e3;
|
|
218
|
+
const DIFF_SIDES = {
|
|
219
|
+
removed: { sign: "-", row: "bg-error/10", gutter: "text-error" },
|
|
220
|
+
added: { sign: "+", row: "bg-accent1/10", gutter: "text-accent1" }
|
|
221
|
+
};
|
|
222
|
+
function boundedLines(text) {
|
|
223
|
+
const lines = text.split("\n");
|
|
224
|
+
return { lines: lines.slice(0, DIFF_MAX_LINES), hidden: Math.max(0, lines.length - DIFF_MAX_LINES) };
|
|
225
|
+
}
|
|
226
|
+
function DiffSide({ lines, side, lang }) {
|
|
227
|
+
const { sign, row, gutter } = DIFF_SIDES[side];
|
|
228
|
+
const code = lines.join("\n");
|
|
229
|
+
const highlighted = useHighlight(code, lang);
|
|
230
|
+
const tokens = highlighted?.code === code ? highlighted.tokens : void 0;
|
|
231
|
+
return /* @__PURE__ */ jsx(Fragment, { children: lines.map((line, index) => /* @__PURE__ */ jsxs("div", { className: cn("flex whitespace-pre", row), children: [
|
|
232
|
+
/* @__PURE__ */ jsx("span", { className: cn("w-5 shrink-0 text-center opacity-70 select-none", gutter), children: sign }),
|
|
233
|
+
/* @__PURE__ */ jsx("span", { className: "text-icon6 flex-1 pr-2.5", children: tokens?.[index]?.map((token, tokenIndex) => /* @__PURE__ */ jsx("span", { className: "shiki-token", style: tokenStyle(token), children: token.content }, tokenIndex)) ?? line })
|
|
234
|
+
] }, index)) });
|
|
235
|
+
}
|
|
236
|
+
function ToolCallEdit({ edit }) {
|
|
237
|
+
const lang = languageForPath(edit.path);
|
|
238
|
+
if ("content" in edit) {
|
|
239
|
+
return /* @__PURE__ */ jsx(
|
|
240
|
+
CodeBlock,
|
|
241
|
+
{
|
|
242
|
+
code: truncateString(edit.content, WRITTEN_FILE_MAX_CHARS),
|
|
243
|
+
lang,
|
|
244
|
+
fileName: edit.path ?? "Change",
|
|
245
|
+
overflow: "scroll"
|
|
246
|
+
}
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
const removed = boundedLines(edit.oldText);
|
|
250
|
+
const added = boundedLines(edit.newText);
|
|
251
|
+
const hidden = removed.hidden + added.hidden;
|
|
252
|
+
return /* @__PURE__ */ jsxs(
|
|
253
|
+
"div",
|
|
254
|
+
{
|
|
255
|
+
className: "border-border1 bg-neutral6/5 max-w-full min-w-0 overflow-x-auto rounded-md border font-mono text-xs leading-normal",
|
|
256
|
+
role: "group",
|
|
257
|
+
"aria-label": "File change",
|
|
258
|
+
children: [
|
|
259
|
+
/* @__PURE__ */ jsx(DiffSide, { lines: removed.lines, side: "removed", lang }),
|
|
260
|
+
/* @__PURE__ */ jsx(DiffSide, { lines: added.lines, side: "added", lang }),
|
|
261
|
+
hidden > 0 && /* @__PURE__ */ jsxs("div", { className: "text-icon3 px-2.5 py-1 select-none", children: [
|
|
262
|
+
"… ",
|
|
263
|
+
hidden,
|
|
264
|
+
" more lines"
|
|
265
|
+
] })
|
|
266
|
+
]
|
|
267
|
+
}
|
|
268
|
+
);
|
|
269
|
+
}
|
|
175
270
|
|
|
176
271
|
function stringifyToolValue(value) {
|
|
177
272
|
if (typeof value === "string") return value;
|
|
@@ -239,6 +334,67 @@ function presentTool(toolName, args) {
|
|
|
239
334
|
if (!style.isCommand) return { icon: style.icon, label: style.label, detail };
|
|
240
335
|
return { icon: style.icon, label: style.label, detail: withoutCdPrefix(detail), command: detail };
|
|
241
336
|
}
|
|
337
|
+
function stringField(args, key) {
|
|
338
|
+
if (!args || typeof args !== "object" || !hasProperty(args, key)) return void 0;
|
|
339
|
+
return typeof args[key] === "string" ? args[key] : void 0;
|
|
340
|
+
}
|
|
341
|
+
function toolEdit(toolName, args) {
|
|
342
|
+
const path = stringField(args, "path");
|
|
343
|
+
const newText = stringField(args, "new_string");
|
|
344
|
+
if (/string_replace|str_replace|edit_file/i.test(toolName) && newText !== void 0) {
|
|
345
|
+
return { path, oldText: stringField(args, "old_string") ?? "", newText };
|
|
346
|
+
}
|
|
347
|
+
const content = stringField(args, "content");
|
|
348
|
+
if (/write_file|create_file/i.test(toolName) && content !== void 0) return { path, content };
|
|
349
|
+
return void 0;
|
|
350
|
+
}
|
|
351
|
+
const TASK_TOOLS = /* @__PURE__ */ new Set(["task_write", "task_update", "task_complete", "task_check"]);
|
|
352
|
+
function isTaskTool(toolName) {
|
|
353
|
+
return TASK_TOOLS.has(toolName);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
const MAX_KIND_GLYPHS = 4;
|
|
357
|
+
function ToolCallGroup({ steps, leading, children }) {
|
|
358
|
+
const running = steps.find((step) => step.status === "running");
|
|
359
|
+
const liveDetail = running && presentTool(running.toolName, running.args).detail;
|
|
360
|
+
return /* @__PURE__ */ jsxs(ToolCall, { status: running ? "running" : "idle", "aria-label": `Tool group: ${steps.length} steps`, children: [
|
|
361
|
+
/* @__PURE__ */ jsx(ToolCallTrigger, { children: /* @__PURE__ */ jsxs(ToolCallHeader, { children: [
|
|
362
|
+
leading,
|
|
363
|
+
/* @__PURE__ */ jsx(ToolCallIcon, { children: /* @__PURE__ */ jsx(FoldVertical, { size: 14, strokeWidth: 1.75, "aria-hidden": true, className: "text-icon2" }) }),
|
|
364
|
+
/* @__PURE__ */ jsxs(ToolCallLabel, { children: [
|
|
365
|
+
steps.length,
|
|
366
|
+
" steps"
|
|
367
|
+
] }),
|
|
368
|
+
liveDetail && /* @__PURE__ */ jsx(ToolCallDetail, { children: liveDetail }),
|
|
369
|
+
/* @__PURE__ */ jsx(GroupKinds, { steps }),
|
|
370
|
+
/* @__PURE__ */ jsx(ToolCallSpacer, { rule: true }),
|
|
371
|
+
/* @__PURE__ */ jsx(ToolCallTrailing, { children: /* @__PURE__ */ jsx(GroupProgress, { steps }) }),
|
|
372
|
+
/* @__PURE__ */ jsx(ToolCallDisclosure, {})
|
|
373
|
+
] }) }),
|
|
374
|
+
/* @__PURE__ */ jsx(ToolCallContent, { className: "py-0.5 pr-0 pl-2.5", children: /* @__PURE__ */ jsx(ScrollArea, { maxHeight: "18rem", autoScroll: Boolean(running), revealScrollbarOnHover: false, children }) })
|
|
375
|
+
] });
|
|
376
|
+
}
|
|
377
|
+
function GroupProgress({ steps }) {
|
|
378
|
+
const done = steps.filter((step) => step.status !== "running").length;
|
|
379
|
+
if (done < steps.length) {
|
|
380
|
+
return /* @__PURE__ */ jsxs(Txt, { as: "span", variant: "ui-xs", className: "text-icon3 shrink-0 tabular-nums", children: [
|
|
381
|
+
done,
|
|
382
|
+
"/",
|
|
383
|
+
steps.length
|
|
384
|
+
] });
|
|
385
|
+
}
|
|
386
|
+
if (steps.some((step) => step.status === "error")) {
|
|
387
|
+
return /* @__PURE__ */ jsx(X, { size: 13, role: "img", "aria-label": "Failed", className: "text-error shrink-0" });
|
|
388
|
+
}
|
|
389
|
+
return null;
|
|
390
|
+
}
|
|
391
|
+
function GroupKinds({ steps }) {
|
|
392
|
+
const iconByLabel = new Map(
|
|
393
|
+
steps.map((step) => presentTool(step.toolName, step.args)).map(({ label, icon }) => [label, icon])
|
|
394
|
+
);
|
|
395
|
+
const kinds = [...iconByLabel].slice(0, MAX_KIND_GLYPHS);
|
|
396
|
+
return /* @__PURE__ */ jsx(ToolCallSummary, { role: "img", "aria-label": kinds.map(([label]) => label).join(", "), className: "shrink-0 gap-1.5", children: kinds.map(([label, Kind]) => /* @__PURE__ */ jsx(Kind, { size: 12, strokeWidth: 1.75, className: "text-icon2" }, label)) });
|
|
397
|
+
}
|
|
242
398
|
|
|
243
|
-
export { ToolCall, ToolCallContent, ToolCallDetail, ToolCallDisclosure, ToolCallHeader, ToolCallIcon, ToolCallLabel, ToolCallMono, ToolCallPresentedHeader, ToolCallSpacer, ToolCallSummary, ToolCallTrailing, ToolCallTrigger, presentTool, stringifyToolValue };
|
|
399
|
+
export { TOOL_GROUP_MIN, ToolCall, ToolCallCommand, ToolCallContent, ToolCallDetail, ToolCallDisclosure, ToolCallEdit, ToolCallGroup, ToolCallHeader, ToolCallIcon, ToolCallLabel, ToolCallMono, ToolCallPresentedHeader, ToolCallSpacer, ToolCallSummary, ToolCallTrailing, ToolCallTrigger, groupConsecutive, isTaskTool, presentTool, stringifyToolValue, stripAnsi, stripSerializedAnsi, toolEdit };
|
|
244
400
|
//# sourceMappingURL=tool-call.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call.es.js","sources":["../../../src/ds/components/ai/tool-call/tool-call.tsx","../../../src/ds/components/ai/tool-call/tool-presentation.ts"],"sourcesContent":["import { ChevronRight, X } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport { createContext, useContext, useId, useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useArriving } from '@/ds/components/Arrival';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { Shimmer } from '@/ds/components/Shimmer';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\ntype ToolCallStatus = 'idle' | 'running' | 'error';\n\ninterface ToolCallContextValue {\n open: boolean;\n status: ToolCallStatus;\n}\n\nconst ToolCallContext = createContext<ToolCallContextValue | undefined>(undefined);\n\n// Stryker disable next-line ArrowFunction: the default callback is intentionally behaviorless.\nconst noopOpenChange = () => {};\n\nfunction useToolCall() {\n const context = useContext(ToolCallContext);\n if (!context) throw new Error('ToolCall compounds must be rendered within ToolCall');\n return context;\n}\n\nexport interface ToolCallProps extends Omit<\n ComponentProps<typeof Collapsible>,\n 'defaultOpen' | 'onOpenChange' | 'open'\n> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n status?: ToolCallStatus;\n}\n\nexport function ToolCall({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange = noopOpenChange,\n status = 'idle',\n className,\n children,\n ...props\n}: ToolCallProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = controlledOpen ?? uncontrolledOpen;\n const statusId = useId();\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen);\n onOpenChange(nextOpen);\n };\n\n return (\n <ToolCallContext.Provider value={{ open, status }}>\n <Collapsible\n open={open}\n onOpenChange={handleOpenChange}\n className={cn('max-w-full min-w-0', className)}\n role=\"group\"\n aria-busy={status === 'running'}\n aria-invalid={status === 'error' || undefined}\n aria-describedby={status === 'idle' ? undefined : statusId}\n data-status={status}\n {...props}\n >\n {children}\n {status !== 'idle' && (\n <span id={statusId} className=\"sr-only\">\n {status === 'running' ? 'Tool call running' : 'Tool call failed'}\n </span>\n )}\n </Collapsible>\n </ToolCallContext.Provider>\n );\n}\n\nexport const ToolCallTrigger = ({ className, ...props }: ComponentProps<typeof CollapsibleTrigger>) => (\n <CollapsibleTrigger\n className={cn(\n 'group/row w-full cursor-pointer rounded-md text-left transition-colors hover:bg-neutral6/5 focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:outline-hidden motion-reduce:transition-none',\n className,\n )}\n {...props}\n />\n);\n\nexport const ToolCallHeader = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { status } = useToolCall();\n\n return (\n <Shimmer\n active={status === 'running'}\n className={cn('flex w-full min-w-0 items-center gap-2 px-1.5 py-1', className)}\n {...props}\n >\n {children}\n </Shimmer>\n );\n};\n\nexport const ToolCallIcon = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props} />\n);\n\nexport const ToolCallLabel = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" variant=\"ui-sm\" className={cn('text-icon3 max-w-[55%] shrink-0 truncate', className)} {...props} />\n);\n\nexport const ToolCallDetail = ({ className, ...props }: ComponentProps<typeof Txt>) => {\n const arriving = useArriving();\n\n return (\n <Txt\n as=\"span\"\n variant=\"ui-xs\"\n font=\"mono\"\n className={cn('text-icon3 min-w-0 truncate', arriving, className)}\n {...props}\n />\n );\n};\n\nexport const ToolCallSummary = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex min-w-0 items-center gap-1', className)} {...props} />\n);\n\nexport interface ToolCallSpacerProps extends ComponentProps<'span'> {\n rule?: boolean;\n}\n\nexport const ToolCallSpacer = ({ rule, className, ...props }: ToolCallSpacerProps) => (\n <span\n aria-hidden\n className={cn('min-w-2 flex-1', rule && 'h-px bg-border1 mask-r-from-[calc(100%-min(100%,160px))]', className)}\n {...props}\n />\n);\n\nexport const ToolCallTrailing = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex shrink-0 items-center', className)} {...props} />\n);\n\nexport const ToolCallDisclosure = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { open } = useToolCall();\n\n return (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props}>\n <span\n aria-hidden\n className={cn(\n 'text-icon3 flex shrink-0 items-center opacity-0 transition duration-150 motion-reduce:transition-none',\n 'group-hover/row:opacity-100 group-focus-visible/row:opacity-100',\n open && 'rotate-90 opacity-100',\n )}\n >\n {children ?? <ChevronRight size={13} />}\n </span>\n </span>\n );\n};\n\nexport interface ToolCallPresentedHeaderProps extends Omit<ComponentProps<typeof ToolCallHeader>, 'children'> {\n /** Rendered ahead of the icon, e.g. a timestamp. */\n leading?: ReactNode;\n icon: LucideIcon;\n label: string;\n detail?: string;\n disclosure?: boolean;\n}\n\n/** The canonical header of a presented tool call: icon, label, detail, failure mark, chevron. */\nexport const ToolCallPresentedHeader = ({\n leading,\n icon: Icon,\n label,\n detail,\n disclosure = true,\n ...props\n}: ToolCallPresentedHeaderProps) => {\n const { status } = useToolCall();\n\n return (\n <ToolCallHeader {...props}>\n {leading}\n <ToolCallIcon>\n <Icon\n size={14}\n strokeWidth={1.75}\n aria-hidden\n className={status === 'error' ? 'text-error/80' : 'text-icon2'}\n />\n </ToolCallIcon>\n <ToolCallLabel>{label}</ToolCallLabel>\n {detail && <ToolCallDetail>{detail}</ToolCallDetail>}\n <ToolCallSpacer />\n {status === 'error' && (\n <ToolCallTrailing>\n <X size={13} role=\"img\" aria-label=\"Failed\" className=\"text-error shrink-0\" />\n </ToolCallTrailing>\n )}\n {disclosure && <ToolCallDisclosure />}\n </ToolCallHeader>\n );\n};\n\nexport const ToolCallContent = ({ className, children, ...props }: ComponentProps<typeof CollapsibleContent>) => (\n <CollapsibleContent className=\"max-w-full min-w-0\" {...props}>\n <div\n className={cn(\n \"relative ml-[14px] flex max-w-full min-w-0 flex-col gap-1.5 py-1.5 pr-1 pl-4 before:absolute before:inset-y-0 before:left-0 before:w-px before:bg-border1 before:mask-b-from-[calc(100%-min(40%,80px))] before:content-['']\",\n className,\n )}\n >\n {children}\n </div>\n </CollapsibleContent>\n);\n\nexport interface ToolCallMonoProps extends ComponentProps<'pre'> {\n copyText: string;\n}\n\n/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */\nexport const ToolCallMono = ({ copyText, className, children, ...props }: ToolCallMonoProps) => (\n <div className=\"group/block relative max-w-full min-w-0\">\n <pre\n className={cn(\n 'm-0 max-h-60 max-w-full overflow-auto rounded-md bg-neutral6/5 px-3 py-2 font-mono text-xs leading-normal break-words whitespace-pre-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </pre>\n <CopyButton\n content={copyText}\n size=\"sm\"\n variant=\"ghost\"\n className=\"absolute top-1 right-1 opacity-0 transition-opacity group-hover/block:opacity-100 focus-visible:opacity-100\"\n />\n </div>\n);\n\nexport type { ToolCallStatus };\n","import {\n BookOpen,\n Braces,\n CircleStop,\n Eye,\n FileSearch,\n FolderPlus,\n FolderSearch,\n Globe,\n ScrollText,\n Search,\n SquarePen,\n SquareTerminal,\n Trash2,\n Wrench,\n} from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\n\nexport interface ToolPresentation {\n icon: LucideIcon;\n label: string;\n /** Salient argument shown next to the label: command, path, pattern… */\n detail?: string;\n /** Shell command, when the tool is terminal-style. Drives the expanded body. */\n command?: string;\n}\n\n/** Tool arguments and results as the mono body shows them: strings verbatim, the rest pretty JSON. */\nexport function stringifyToolValue(value: unknown): string {\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n}\n\nfunction hasProperty<K extends string>(value: object, key: K): value is object & Record<K, unknown> {\n return key in value;\n}\n\nfunction stringArg(args: unknown, key: string): string | undefined {\n if (!args || typeof args !== 'object' || !hasProperty(args, key)) return undefined;\n const value = args[key];\n if (typeof value === 'number') return String(value);\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction firstStringArg(args: unknown, keys: string[]): string | undefined {\n for (const key of keys) {\n const value = stringArg(args, key);\n if (value) return value;\n }\n return undefined;\n}\n\ninterface ToolStyle {\n icon: LucideIcon;\n label: string;\n detailKeys?: string[];\n isCommand?: boolean;\n}\n\nconst TOOL_STYLES: Record<string, ToolStyle> = {\n view: { icon: Eye, label: 'Read', detailKeys: ['path'] },\n read_file: { icon: Eye, label: 'Read', detailKeys: ['path'] },\n write_file: { icon: SquarePen, label: 'Write', detailKeys: ['path'] },\n create_file: { icon: SquarePen, label: 'Write', detailKeys: ['path'] },\n edit_file: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n string_replace: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n str_replace: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n ast_edit: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n execute_command: { icon: SquareTerminal, label: 'Run', detailKeys: ['command'], isCommand: true },\n get_process_output: { icon: ScrollText, label: 'Process output', detailKeys: ['pid'] },\n kill_process: { icon: CircleStop, label: 'Stop process', detailKeys: ['pid'] },\n find_files: { icon: FolderSearch, label: 'Find files', detailKeys: ['pattern', 'path'] },\n list_files: { icon: FolderSearch, label: 'List files', detailKeys: ['pattern', 'path'] },\n grep: { icon: Search, label: 'Search', detailKeys: ['pattern', 'path'] },\n search_content: { icon: Search, label: 'Search', detailKeys: ['pattern', 'query'] },\n search: { icon: Search, label: 'Search', detailKeys: ['query'] },\n web_search: { icon: Globe, label: 'Search the web', detailKeys: ['query'] },\n lsp_inspect: { icon: Braces, label: 'Inspect code', detailKeys: ['path'] },\n file_stat: { icon: FileSearch, label: 'File info', detailKeys: ['path'] },\n delete: { icon: Trash2, label: 'Delete', detailKeys: ['path'] },\n delete_file: { icon: Trash2, label: 'Delete', detailKeys: ['path'] },\n mkdir: { icon: FolderPlus, label: 'New folder', detailKeys: ['path'] },\n skill: { icon: BookOpen, label: 'Skill', detailKeys: ['name'] },\n skill_search: { icon: BookOpen, label: 'Search skills', detailKeys: ['query'] },\n skill_read: { icon: BookOpen, label: 'Skill file', detailKeys: ['path'] },\n};\n\nfunction prettifyToolName(toolName: string): string {\n const words = toolName.replace(/[_-]+/g, ' ').trim();\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : toolName;\n}\n\n/** Agents prefix commands with `cd <workspace> &&`, which crowds out the command itself on a one-line row. */\nfunction withoutCdPrefix(command: string): string {\n return command.replace(/^\\s*cd\\s+(?:'[^']*'|\"[^\"]*\"|[^\\s&|;]+)\\s*&&\\s*/, '') || command;\n}\n\nexport function presentTool(toolName: string, args: unknown): ToolPresentation {\n const style = TOOL_STYLES[toolName.replace(/^mastra_workspace_/, '')];\n if (!style) return { icon: Wrench, label: prettifyToolName(toolName) };\n\n const detail = style.detailKeys ? firstStringArg(args, style.detailKeys) : undefined;\n if (!detail) return { icon: style.icon, label: style.label };\n if (!style.isCommand) return { icon: style.icon, label: style.label, detail };\n return { icon: style.icon, label: style.label, detail: withoutCdPrefix(detail), command: detail };\n}\n"],"names":[],"mappings":";;;;;;;;;;AAkBA,MAAM,eAAA,GAAkB,cAAgD,MAAS,CAAA;AAGjF,MAAM,iBAAiB,MAAM;AAAC,CAAA;AAE9B,SAAS,WAAA,GAAc;AACrB,EAAA,MAAM,OAAA,GAAU,WAAW,eAAe,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,qDAAqD,CAAA;AACnF,EAAA,OAAO,OAAA;AACT;AAYO,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA,EAAM,cAAA;AAAA,EACN,WAAA,GAAc,KAAA;AAAA,EACd,YAAA,GAAe,cAAA;AAAA,EACf,MAAA,GAAS,MAAA;AAAA,EACT,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,WAAW,CAAA;AACpE,EAAA,MAAM,OAAO,cAAA,IAAkB,gBAAA;AAC/B,EAAA,MAAM,WAAW,KAAA,EAAM;AAEvB,EAAA,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAsB;AAC9C,IAAA,IAAI,cAAA,KAAmB,MAAA,EAAW,mBAAA,CAAoB,QAAQ,CAAA;AAC9D,IAAA,YAAA,CAAa,QAAQ,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,uBACE,GAAA,CAAC,gBAAgB,QAAA,EAAhB,EAAyB,OAAO,EAAE,IAAA,EAAM,QAAO,EAC9C,QAAA,kBAAA,IAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA,EAAc,gBAAA;AAAA,MACd,SAAA,EAAW,EAAA,CAAG,oBAAA,EAAsB,SAAS,CAAA;AAAA,MAC7C,IAAA,EAAK,OAAA;AAAA,MACL,aAAW,MAAA,KAAW,SAAA;AAAA,MACtB,cAAA,EAAc,WAAW,OAAA,IAAW,MAAA;AAAA,MACpC,kBAAA,EAAkB,MAAA,KAAW,MAAA,GAAS,MAAA,GAAY,QAAA;AAAA,MAClD,aAAA,EAAa,MAAA;AAAA,MACZ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,MAAA,KAAW,MAAA,oBACV,GAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,QAAA,EAAU,SAAA,EAAU,SAAA,EAC3B,QAAA,EAAA,MAAA,KAAW,SAAA,GAAY,mBAAA,GAAsB,kBAAA,EAChD;AAAA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AAEO,MAAM,kBAAkB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBACpD,GAAA;AAAA,EAAC,kBAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,uMAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAGK,MAAM,iBAAiB,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,OAAM,KAA8B;AAC3F,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,EAAY;AAE/B,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,QAAQ,MAAA,KAAW,SAAA;AAAA,MACnB,SAAA,EAAW,EAAA,CAAG,oDAAA,EAAsD,SAAS,CAAA;AAAA,MAC5E,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAEO,MAAM,YAAA,GAAe,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,qBACjD,GAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAG1F,MAAM,gBAAgB,CAAC,EAAE,WAAW,GAAG,KAAA,uBAC5C,GAAA,CAAC,GAAA,EAAA,EAAI,IAAG,MAAA,EAAO,OAAA,EAAQ,SAAQ,SAAA,EAAW,EAAA,CAAG,4CAA4C,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAG3G,MAAM,iBAAiB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,KAAkC;AACrF,EAAA,MAAM,WAAW,WAAA,EAAY;AAE7B,EAAA,uBACE,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,OAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,QAAA,EAAU,SAAS,CAAA;AAAA,MAC/D,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,MAAM,eAAA,GAAkB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,qBACpD,GAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,iCAAA,EAAmC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAOzE,MAAM,iBAAiB,CAAC,EAAE,MAAM,SAAA,EAAW,GAAG,OAAM,qBACzD,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,aAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,IAAA,IAAQ,4DAA4D,SAAS,CAAA;AAAA,IAC5G,GAAG;AAAA;AACN;AAGK,MAAM,gBAAA,GAAmB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,qBACrD,GAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAGpE,MAAM,qBAAqB,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,OAAM,KAA8B;AAC/F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,WAAA,EAAY;AAE7B,EAAA,uBACE,GAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,oDAAoD,SAAS,CAAA,EAAI,GAAG,KAAA,EACtF,QAAA,kBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,uGAAA;AAAA,QACA,iEAAA;AAAA,QACA,IAAA,IAAQ;AAAA,OACV;AAAA,MAEC,QAAA,EAAA,QAAA,oBAAY,GAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA,GACvC,EACF,CAAA;AAEJ;AAYO,MAAM,0BAA0B,CAAC;AAAA,EACtC,OAAA;AAAA,EACA,IAAA,EAAM,IAAA;AAAA,EACN,KAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,GAAG;AACL,CAAA,KAAoC;AAClC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,EAAY;AAE/B,EAAA,uBACE,IAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,KAAA,EACjB,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,wBACA,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,EAAA;AAAA,QACN,WAAA,EAAa,IAAA;AAAA,QACb,aAAA,EAAW,IAAA;AAAA,QACX,SAAA,EAAW,MAAA,KAAW,OAAA,GAAU,eAAA,GAAkB;AAAA;AAAA,KACpD,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,iBAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACrB,MAAA,oBAAU,GAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,wBAClC,cAAA,EAAA,EAAe,CAAA;AAAA,IACf,MAAA,KAAW,OAAA,oBACV,GAAA,CAAC,gBAAA,EAAA,EACC,8BAAC,CAAA,EAAA,EAAE,IAAA,EAAM,EAAA,EAAI,IAAA,EAAK,KAAA,EAAM,YAAA,EAAW,QAAA,EAAS,SAAA,EAAU,uBAAsB,CAAA,EAC9E,CAAA;AAAA,IAED,UAAA,wBAAe,kBAAA,EAAA,EAAmB;AAAA,GAAA,EACrC,CAAA;AAEJ;AAEO,MAAM,eAAA,GAAkB,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,qBAC9D,GAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAU,oBAAA,EAAsB,GAAG,KAAA,EACrD,QAAA,kBAAA,GAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,6NAAA;AAAA,MACA;AAAA,KACF;AAAA,IAEC;AAAA;AACH,CAAA,EACF;AAQK,MAAM,YAAA,GAAe,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,qBACrE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,2IAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAAA,kBACA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAK,IAAA;AAAA,MACL,OAAA,EAAQ,OAAA;AAAA,MACR,SAAA,EAAU;AAAA;AAAA;AACZ,CAAA,EACF;;ACzNK,SAAS,mBAAmB,KAAA,EAAwB;AACzD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI;AACF,IAAA,OAAO,KAAK,SAAA,CAAU,KAAA,EAAO,MAAM,CAAC,CAAA,IAAK,OAAO,KAAK,CAAA;AAAA,EACvD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AACF;AAEA,SAAS,WAAA,CAA8B,OAAe,GAAA,EAA8C;AAClG,EAAA,OAAO,GAAA,IAAO,KAAA;AAChB;AAEA,SAAS,SAAA,CAAU,MAAe,GAAA,EAAiC;AACjE,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,IAAY,CAAC,WAAA,CAAY,IAAA,EAAM,GAAG,CAAA,EAAG,OAAO,MAAA;AACzE,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAG,CAAA;AACtB,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,OAAO,KAAK,CAAA;AAClD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,MAAA,GAAS,IAAI,KAAA,GAAQ,MAAA;AACjE;AAEA,SAAS,cAAA,CAAe,MAAe,IAAA,EAAoC;AACzE,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,IAAA,EAAM,GAAG,CAAA;AACjC,IAAA,IAAI,OAAO,OAAO,KAAA;AAAA,EACpB;AACA,EAAA,OAAO,MAAA;AACT;AASA,MAAM,WAAA,GAAyC;AAAA,EAC7C,IAAA,EAAM,EAAE,IAAA,EAAM,GAAA,EAAK,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACvD,SAAA,EAAW,EAAE,IAAA,EAAM,GAAA,EAAK,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EAC5D,UAAA,EAAY,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,OAAA,EAAS,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACpE,WAAA,EAAa,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,OAAA,EAAS,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACrE,SAAA,EAAW,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EAClE,cAAA,EAAgB,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACvE,WAAA,EAAa,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACpE,QAAA,EAAU,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,MAAA,EAAQ,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACjE,eAAA,EAAiB,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,UAAA,EAAY,CAAC,SAAS,CAAA,EAAG,SAAA,EAAW,IAAA,EAAK;AAAA,EAChG,kBAAA,EAAoB,EAAE,IAAA,EAAM,UAAA,EAAY,OAAO,gBAAA,EAAkB,UAAA,EAAY,CAAC,KAAK,CAAA,EAAE;AAAA,EACrF,YAAA,EAAc,EAAE,IAAA,EAAM,UAAA,EAAY,OAAO,cAAA,EAAgB,UAAA,EAAY,CAAC,KAAK,CAAA,EAAE;AAAA,EAC7E,UAAA,EAAY,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,cAAc,UAAA,EAAY,CAAC,SAAA,EAAW,MAAM,CAAA,EAAE;AAAA,EACvF,UAAA,EAAY,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,cAAc,UAAA,EAAY,CAAC,SAAA,EAAW,MAAM,CAAA,EAAE;AAAA,EACvF,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,UAAU,UAAA,EAAY,CAAC,SAAA,EAAW,MAAM,CAAA,EAAE;AAAA,EACvE,cAAA,EAAgB,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,UAAU,UAAA,EAAY,CAAC,SAAA,EAAW,OAAO,CAAA,EAAE;AAAA,EAClF,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,QAAA,EAAU,UAAA,EAAY,CAAC,OAAO,CAAA,EAAE;AAAA,EAC/D,UAAA,EAAY,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,gBAAA,EAAkB,UAAA,EAAY,CAAC,OAAO,CAAA,EAAE;AAAA,EAC1E,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,cAAA,EAAgB,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACzE,SAAA,EAAW,EAAE,IAAA,EAAM,UAAA,EAAY,OAAO,WAAA,EAAa,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACxE,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,QAAA,EAAU,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EAC9D,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,QAAA,EAAU,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACnE,KAAA,EAAO,EAAE,IAAA,EAAM,UAAA,EAAY,OAAO,YAAA,EAAc,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EACrE,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,OAAO,OAAA,EAAS,UAAA,EAAY,CAAC,MAAM,CAAA,EAAE;AAAA,EAC9D,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,OAAO,eAAA,EAAiB,UAAA,EAAY,CAAC,OAAO,CAAA,EAAE;AAAA,EAC9E,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,OAAO,YAAA,EAAc,UAAA,EAAY,CAAC,MAAM,CAAA;AACxE,CAAA;AAEA,SAAS,iBAAiB,QAAA,EAA0B;AAClD,EAAA,MAAM,QAAQ,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,GAAG,EAAE,IAAA,EAAK;AACnD,EAAA,OAAO,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,CAAE,aAAY,GAAI,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,QAAA;AAClE;AAGA,SAAS,gBAAgB,OAAA,EAAyB;AAChD,EAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,gDAAA,EAAkD,EAAE,CAAA,IAAK,OAAA;AAClF;AAEO,SAAS,WAAA,CAAY,UAAkB,IAAA,EAAiC;AAC7E,EAAA,MAAM,QAAQ,WAAA,CAAY,QAAA,CAAS,OAAA,CAAQ,oBAAA,EAAsB,EAAE,CAAC,CAAA;AACpE,EAAA,IAAI,CAAC,OAAO,OAAO,EAAE,MAAM,MAAA,EAAQ,KAAA,EAAO,gBAAA,CAAiB,QAAQ,CAAA,EAAE;AAErE,EAAA,MAAM,SAAS,KAAA,CAAM,UAAA,GAAa,eAAe,IAAA,EAAM,KAAA,CAAM,UAAU,CAAA,GAAI,MAAA;AAC3E,EAAA,IAAI,CAAC,QAAQ,OAAO,EAAE,MAAM,KAAA,CAAM,IAAA,EAAM,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AAC3D,EAAA,IAAI,CAAC,KAAA,CAAM,SAAA,EAAW,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,MAAA,EAAO;AAC5E,EAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ,eAAA,CAAgB,MAAM,CAAA,EAAG,OAAA,EAAS,MAAA,EAAO;AAClG;;;;"}
|
|
1
|
+
{"version":3,"file":"tool-call.es.js","sources":["../../../src/ds/components/ai/tool-call/ansi.ts","../../../src/ds/components/ai/tool-call/group-consecutive.ts","../../../src/ds/components/ai/tool-call/tool-call.tsx","../../../src/ds/components/ai/tool-call/tool-call-edit.tsx","../../../src/ds/components/ai/tool-call/tool-presentation.ts","../../../src/ds/components/ai/tool-call/tool-call-group.tsx"],"sourcesContent":["// Sandbox commands run in a PTY, so CLIs emit color escapes even under NO_COLOR.\n// eslint-disable-next-line no-control-regex\nconst ANSI_RE =\n /[\\u001b\\u009b][[\\]()#;?]*(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d/#&.:=?%@~_]*)*)?\\u0007|(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~])/g;\n\n// The same sequences once JSON.stringify escaped the bytes; an even backslash run before the `u` is source text spelling the escape, kept.\nconst ESCAPED_ANSI_RE = /(?<!\\\\)((?:\\\\\\\\)*)\\\\u001[bB](?:\\[[0-9;?<=>]*[a-zA-Z]|\\][\\s\\S]*?(?:\\\\u0007|\\\\u001[bB]\\\\\\\\))/g;\n\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_RE, '');\n}\n\nexport function stripSerializedAnsi(text: string): string {\n return stripAnsi(text).replace(ESCAPED_ANSI_RE, '$1');\n}\n","export interface ConsecutiveGroups<T> {\n /** Each run, keyed by its first member. */\n byFirstKey: Map<string, T[]>;\n /** The members after the first, which draw nothing of their own. */\n memberKeys: Set<string>;\n}\n\nexport interface ConsecutiveRules<T, U extends T> {\n key: (item: U) => string;\n /** Whether an item extends the run; anything else ends it. */\n joins: (item: T) => item is U;\n /** Runs shorter than this stay individual rows. */\n min?: number;\n}\n\n/** Consecutive tool calls this long fold into one group row. */\nexport const TOOL_GROUP_MIN = 3;\n\n/** Cuts a list into runs of joining items, keeping only the runs long enough to fold. */\nexport function groupConsecutive<T, U extends T>(\n items: readonly T[],\n { key, joins, min = TOOL_GROUP_MIN }: ConsecutiveRules<T, U>,\n): ConsecutiveGroups<U> {\n const byFirstKey = new Map<string, U[]>();\n const memberKeys = new Set<string>();\n let run: U[] = [];\n\n const flush = () => {\n if (run.length >= min) {\n for (const [index, item] of run.entries()) {\n if (index === 0) byFirstKey.set(key(item), run);\n else memberKeys.add(key(item));\n }\n }\n run = [];\n };\n\n for (const item of items) {\n if (joins(item)) run.push(item);\n else flush();\n }\n flush();\n\n return { byFirstKey, memberKeys };\n}\n","import { ChevronRight, X } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport { createContext, useContext, useId, useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useArriving } from '@/ds/components/Arrival';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { Shimmer } from '@/ds/components/Shimmer';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\ntype ToolCallStatus = 'idle' | 'running' | 'error';\n\ninterface ToolCallContextValue {\n open: boolean;\n status: ToolCallStatus;\n}\n\nconst ToolCallContext = createContext<ToolCallContextValue | undefined>(undefined);\n\n// Stryker disable next-line ArrowFunction: the default callback is intentionally behaviorless.\nconst noopOpenChange = () => {};\n\nfunction useToolCall() {\n const context = useContext(ToolCallContext);\n if (!context) throw new Error('ToolCall compounds must be rendered within ToolCall');\n return context;\n}\n\nexport interface ToolCallProps extends Omit<\n ComponentProps<typeof Collapsible>,\n 'defaultOpen' | 'onOpenChange' | 'open'\n> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n status?: ToolCallStatus;\n}\n\nexport function ToolCall({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange = noopOpenChange,\n status = 'idle',\n className,\n children,\n ...props\n}: ToolCallProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = controlledOpen ?? uncontrolledOpen;\n const statusId = useId();\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen);\n onOpenChange(nextOpen);\n };\n\n return (\n <ToolCallContext.Provider value={{ open, status }}>\n <Collapsible\n open={open}\n onOpenChange={handleOpenChange}\n className={cn('max-w-full min-w-0', className)}\n role=\"group\"\n aria-busy={status === 'running'}\n aria-invalid={status === 'error' || undefined}\n aria-describedby={status === 'idle' ? undefined : statusId}\n data-status={status}\n {...props}\n >\n {children}\n {status !== 'idle' && (\n <span id={statusId} className=\"sr-only\">\n {status === 'running' ? 'Tool call running' : 'Tool call failed'}\n </span>\n )}\n </Collapsible>\n </ToolCallContext.Provider>\n );\n}\n\nexport const ToolCallTrigger = ({ className, ...props }: ComponentProps<typeof CollapsibleTrigger>) => (\n <CollapsibleTrigger\n className={cn(\n 'group/row w-full cursor-pointer rounded-md text-left transition-colors hover:bg-neutral6/5 focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:outline-hidden motion-reduce:transition-none',\n className,\n )}\n {...props}\n />\n);\n\nexport const ToolCallHeader = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { status } = useToolCall();\n\n return (\n <Shimmer\n active={status === 'running'}\n className={cn('flex w-full min-w-0 items-center gap-2 px-1.5 py-1', className)}\n {...props}\n >\n {children}\n </Shimmer>\n );\n};\n\nexport const ToolCallIcon = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props} />\n);\n\nexport const ToolCallLabel = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" variant=\"ui-sm\" className={cn('text-icon3 max-w-[55%] shrink-0 truncate', className)} {...props} />\n);\n\nexport const ToolCallDetail = ({ className, ...props }: ComponentProps<typeof Txt>) => {\n const arriving = useArriving();\n\n return (\n <Txt\n as=\"span\"\n variant=\"ui-xs\"\n font=\"mono\"\n className={cn('text-icon3 min-w-0 truncate', arriving, className)}\n {...props}\n />\n );\n};\n\nexport const ToolCallSummary = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex min-w-0 items-center gap-1', className)} {...props} />\n);\n\nexport interface ToolCallSpacerProps extends ComponentProps<'span'> {\n rule?: boolean;\n}\n\nexport const ToolCallSpacer = ({ rule, className, ...props }: ToolCallSpacerProps) => (\n <span\n aria-hidden\n className={cn('min-w-2 flex-1', rule && 'h-px bg-border1 mask-r-from-[calc(100%-min(100%,160px))]', className)}\n {...props}\n />\n);\n\nexport const ToolCallTrailing = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex shrink-0 items-center', className)} {...props} />\n);\n\nexport const ToolCallDisclosure = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { open } = useToolCall();\n\n return (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props}>\n <span\n aria-hidden\n className={cn(\n 'text-icon3 flex shrink-0 items-center opacity-0 transition duration-150 motion-reduce:transition-none',\n 'group-hover/row:opacity-100 group-focus-visible/row:opacity-100',\n open && 'rotate-90 opacity-100',\n )}\n >\n {children ?? <ChevronRight size={13} />}\n </span>\n </span>\n );\n};\n\nexport interface ToolCallPresentedHeaderProps extends Omit<ComponentProps<typeof ToolCallHeader>, 'children'> {\n /** Rendered ahead of the icon, e.g. a timestamp. */\n leading?: ReactNode;\n icon: LucideIcon;\n label: string;\n detail?: string;\n disclosure?: boolean;\n}\n\n/** The canonical header of a presented tool call: icon, label, detail, failure mark, chevron. */\nexport const ToolCallPresentedHeader = ({\n leading,\n icon: Icon,\n label,\n detail,\n disclosure = true,\n ...props\n}: ToolCallPresentedHeaderProps) => {\n const { status } = useToolCall();\n\n return (\n <ToolCallHeader {...props}>\n {leading}\n <ToolCallIcon>\n <Icon\n size={14}\n strokeWidth={1.75}\n aria-hidden\n className={status === 'error' ? 'text-error/80' : 'text-icon2'}\n />\n </ToolCallIcon>\n <ToolCallLabel>{label}</ToolCallLabel>\n {detail && <ToolCallDetail>{detail}</ToolCallDetail>}\n <ToolCallSpacer />\n {status === 'error' && (\n <ToolCallTrailing>\n <X size={13} role=\"img\" aria-label=\"Failed\" className=\"text-error shrink-0\" />\n </ToolCallTrailing>\n )}\n {disclosure && <ToolCallDisclosure />}\n </ToolCallHeader>\n );\n};\n\nexport const ToolCallContent = ({ className, children, ...props }: ComponentProps<typeof CollapsibleContent>) => (\n <CollapsibleContent className=\"max-w-full min-w-0\" {...props}>\n <div\n className={cn(\n \"relative ml-[14px] flex max-w-full min-w-0 flex-col gap-1.5 py-1.5 pr-1 pl-4 before:absolute before:inset-y-0 before:left-0 before:w-px before:bg-border1 before:mask-b-from-[calc(100%-min(40%,80px))] before:content-['']\",\n className,\n )}\n >\n {children}\n </div>\n </CollapsibleContent>\n);\n\nexport interface ToolCallMonoProps extends ComponentProps<'pre'> {\n copyText: string;\n}\n\n/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */\nexport const ToolCallMono = ({ copyText, className, children, ...props }: ToolCallMonoProps) => (\n <div className=\"group/block relative max-w-full min-w-0\">\n <pre\n className={cn(\n 'm-0 max-h-60 max-w-full overflow-auto rounded-md bg-neutral6/5 px-3 py-2 font-mono text-xs leading-normal break-words whitespace-pre-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </pre>\n <CopyButton\n content={copyText}\n size=\"sm\"\n variant=\"ghost\"\n className=\"absolute top-1 right-1 opacity-0 transition-opacity group-hover/block:opacity-100 focus-visible:opacity-100\"\n />\n </div>\n);\n\n/** A shell command as the body shows it: `$` in the margin, the copy takes the command alone. */\nexport const ToolCallCommand = ({ command }: { command: string }) => (\n <ToolCallMono copyText={command} className=\"text-icon5\">\n <span className=\"text-icon3 select-none\">$ </span>\n {command}\n </ToolCallMono>\n);\n\nexport type { ToolCallStatus };\n","import type { ToolEdit } from './tool-presentation';\nimport { tokenStyle, useHighlight } from '@/ds/components/Code';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { languageForPath } from '@/ds/components/CodeEditor/highlight';\nimport { truncateString } from '@/lib/truncate-string';\nimport { cn } from '@/lib/utils';\n\nconst DIFF_MAX_LINES = 200;\nconst WRITTEN_FILE_MAX_CHARS = 2000;\n\nconst DIFF_SIDES = {\n removed: { sign: '-', row: 'bg-error/10', gutter: 'text-error' },\n added: { sign: '+', row: 'bg-accent1/10', gutter: 'text-accent1' },\n} as const;\n\nfunction boundedLines(text: string): { lines: string[]; hidden: number } {\n const lines = text.split('\\n');\n return { lines: lines.slice(0, DIFF_MAX_LINES), hidden: Math.max(0, lines.length - DIFF_MAX_LINES) };\n}\n\nfunction DiffSide({ lines, side, lang }: { lines: string[]; side: keyof typeof DIFF_SIDES; lang: string | undefined }) {\n const { sign, row, gutter } = DIFF_SIDES[side];\n const code = lines.join('\\n');\n const highlighted = useHighlight(code, lang);\n const tokens = highlighted?.code === code ? highlighted.tokens : undefined;\n\n return (\n <>\n {lines.map((line, index) => (\n <div key={index} className={cn('flex whitespace-pre', row)}>\n <span className={cn('w-5 shrink-0 text-center opacity-70 select-none', gutter)}>{sign}</span>\n <span className=\"text-icon6 flex-1 pr-2.5\">\n {tokens?.[index]?.map((token, tokenIndex) => (\n <span key={tokenIndex} className=\"shiki-token\" style={tokenStyle(token)}>\n {token.content}\n </span>\n )) ?? line}\n </span>\n </div>\n ))}\n </>\n );\n}\n\nexport function ToolCallEdit({ edit }: { edit: ToolEdit }) {\n const lang = languageForPath(edit.path);\n\n if ('content' in edit) {\n return (\n <CodeBlock\n code={truncateString(edit.content, WRITTEN_FILE_MAX_CHARS)}\n lang={lang}\n fileName={edit.path ?? 'Change'}\n overflow=\"scroll\"\n />\n );\n }\n\n const removed = boundedLines(edit.oldText);\n const added = boundedLines(edit.newText);\n const hidden = removed.hidden + added.hidden;\n\n return (\n <div\n className=\"border-border1 bg-neutral6/5 max-w-full min-w-0 overflow-x-auto rounded-md border font-mono text-xs leading-normal\"\n role=\"group\"\n aria-label=\"File change\"\n >\n <DiffSide lines={removed.lines} side=\"removed\" lang={lang} />\n <DiffSide lines={added.lines} side=\"added\" lang={lang} />\n {hidden > 0 && <div className=\"text-icon3 px-2.5 py-1 select-none\">… {hidden} more lines</div>}\n </div>\n );\n}\n","import {\n BookOpen,\n Braces,\n CircleStop,\n Eye,\n FileSearch,\n FolderPlus,\n FolderSearch,\n Globe,\n ScrollText,\n Search,\n SquarePen,\n SquareTerminal,\n Trash2,\n Wrench,\n} from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\n\nexport interface ToolPresentation {\n icon: LucideIcon;\n label: string;\n /** Salient argument shown next to the label: command, path, pattern… */\n detail?: string;\n /** Shell command, when the tool is terminal-style. Drives the expanded body. */\n command?: string;\n}\n\n/** Tool arguments and results as the mono body shows them: strings verbatim, the rest pretty JSON. */\nexport function stringifyToolValue(value: unknown): string {\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n}\n\nfunction hasProperty<K extends string>(value: object, key: K): value is object & Record<K, unknown> {\n return key in value;\n}\n\nfunction stringArg(args: unknown, key: string): string | undefined {\n if (!args || typeof args !== 'object' || !hasProperty(args, key)) return undefined;\n const value = args[key];\n if (typeof value === 'number') return String(value);\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction firstStringArg(args: unknown, keys: string[]): string | undefined {\n for (const key of keys) {\n const value = stringArg(args, key);\n if (value) return value;\n }\n return undefined;\n}\n\ninterface ToolStyle {\n icon: LucideIcon;\n label: string;\n detailKeys?: string[];\n isCommand?: boolean;\n}\n\nconst TOOL_STYLES: Record<string, ToolStyle> = {\n view: { icon: Eye, label: 'Read', detailKeys: ['path'] },\n read_file: { icon: Eye, label: 'Read', detailKeys: ['path'] },\n write_file: { icon: SquarePen, label: 'Write', detailKeys: ['path'] },\n create_file: { icon: SquarePen, label: 'Write', detailKeys: ['path'] },\n edit_file: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n string_replace: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n str_replace: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n ast_edit: { icon: SquarePen, label: 'Edit', detailKeys: ['path'] },\n execute_command: { icon: SquareTerminal, label: 'Run', detailKeys: ['command'], isCommand: true },\n get_process_output: { icon: ScrollText, label: 'Process output', detailKeys: ['pid'] },\n kill_process: { icon: CircleStop, label: 'Stop process', detailKeys: ['pid'] },\n find_files: { icon: FolderSearch, label: 'Find files', detailKeys: ['pattern', 'path'] },\n list_files: { icon: FolderSearch, label: 'List files', detailKeys: ['pattern', 'path'] },\n grep: { icon: Search, label: 'Search', detailKeys: ['pattern', 'path'] },\n search_content: { icon: Search, label: 'Search', detailKeys: ['pattern', 'query'] },\n search: { icon: Search, label: 'Search', detailKeys: ['query'] },\n web_search: { icon: Globe, label: 'Search the web', detailKeys: ['query'] },\n lsp_inspect: { icon: Braces, label: 'Inspect code', detailKeys: ['path'] },\n file_stat: { icon: FileSearch, label: 'File info', detailKeys: ['path'] },\n delete: { icon: Trash2, label: 'Delete', detailKeys: ['path'] },\n delete_file: { icon: Trash2, label: 'Delete', detailKeys: ['path'] },\n mkdir: { icon: FolderPlus, label: 'New folder', detailKeys: ['path'] },\n skill: { icon: BookOpen, label: 'Skill', detailKeys: ['name'] },\n skill_search: { icon: BookOpen, label: 'Search skills', detailKeys: ['query'] },\n skill_read: { icon: BookOpen, label: 'Skill file', detailKeys: ['path'] },\n};\n\nfunction prettifyToolName(toolName: string): string {\n const words = toolName.replace(/[_-]+/g, ' ').trim();\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : toolName;\n}\n\n/** Agents prefix commands with `cd <workspace> &&`, which crowds out the command itself on a one-line row. */\nfunction withoutCdPrefix(command: string): string {\n return command.replace(/^\\s*cd\\s+(?:'[^']*'|\"[^\"]*\"|[^\\s&|;]+)\\s*&&\\s*/, '') || command;\n}\n\nexport function presentTool(toolName: string, args: unknown): ToolPresentation {\n const style = TOOL_STYLES[toolName.replace(/^mastra_workspace_/, '')];\n if (!style) return { icon: Wrench, label: prettifyToolName(toolName) };\n\n const detail = style.detailKeys ? firstStringArg(args, style.detailKeys) : undefined;\n if (!detail) return { icon: style.icon, label: style.label };\n if (!style.isCommand) return { icon: style.icon, label: style.label, detail };\n return { icon: style.icon, label: style.label, detail: withoutCdPrefix(detail), command: detail };\n}\n\nexport type ToolEdit = { path?: string } & ({ oldText: string; newText: string } | { content: string });\n\nfunction stringField(args: unknown, key: string): string | undefined {\n if (!args || typeof args !== 'object' || !hasProperty(args, key)) return undefined;\n return typeof args[key] === 'string' ? args[key] : undefined;\n}\n\nexport function toolEdit(toolName: string, args: unknown): ToolEdit | undefined {\n const path = stringField(args, 'path');\n const newText = stringField(args, 'new_string');\n if (/string_replace|str_replace|edit_file/i.test(toolName) && newText !== undefined) {\n return { path, oldText: stringField(args, 'old_string') ?? '', newText };\n }\n const content = stringField(args, 'content');\n if (/write_file|create_file/i.test(toolName) && content !== undefined) return { path, content };\n return undefined;\n}\n\n/** Task tools draw in the docked task list, never as a transcript row. */\nconst TASK_TOOLS = new Set(['task_write', 'task_update', 'task_complete', 'task_check']);\n\nexport function isTaskTool(toolName: string): boolean {\n return TASK_TOOLS.has(toolName);\n}\n","import { FoldVertical, X } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport {\n ToolCall,\n ToolCallContent,\n ToolCallDetail,\n ToolCallDisclosure,\n ToolCallHeader,\n ToolCallIcon,\n ToolCallLabel,\n ToolCallSpacer,\n ToolCallSummary,\n ToolCallTrailing,\n ToolCallTrigger,\n} from './tool-call';\nimport type { ToolCallStatus } from './tool-call';\nimport { presentTool } from './tool-presentation';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface ToolCallGroupStep {\n toolName: string;\n args: unknown;\n status: ToolCallStatus;\n}\n\nexport interface ToolCallGroupProps {\n steps: ToolCallGroupStep[];\n /** Rendered ahead of the icon, e.g. the time the first step began. */\n leading?: ReactNode;\n children: ReactNode;\n}\n\nconst MAX_KIND_GLYPHS = 4;\n\nexport function ToolCallGroup({ steps, leading, children }: ToolCallGroupProps) {\n const running = steps.find(step => step.status === 'running');\n const liveDetail = running && presentTool(running.toolName, running.args).detail;\n\n return (\n <ToolCall status={running ? 'running' : 'idle'} aria-label={`Tool group: ${steps.length} steps`}>\n <ToolCallTrigger>\n <ToolCallHeader>\n {leading}\n <ToolCallIcon>\n <FoldVertical size={14} strokeWidth={1.75} aria-hidden className=\"text-icon2\" />\n </ToolCallIcon>\n <ToolCallLabel>{steps.length} steps</ToolCallLabel>\n {liveDetail && <ToolCallDetail>{liveDetail}</ToolCallDetail>}\n <GroupKinds steps={steps} />\n <ToolCallSpacer rule />\n <ToolCallTrailing>\n <GroupProgress steps={steps} />\n </ToolCallTrailing>\n <ToolCallDisclosure />\n </ToolCallHeader>\n </ToolCallTrigger>\n <ToolCallContent className=\"py-0.5 pr-0 pl-2.5\">\n <ScrollArea maxHeight=\"18rem\" autoScroll={Boolean(running)} revealScrollbarOnHover={false}>\n {children}\n </ScrollArea>\n </ToolCallContent>\n </ToolCall>\n );\n}\n\nfunction GroupProgress({ steps }: { steps: ToolCallGroupStep[] }) {\n const done = steps.filter(step => step.status !== 'running').length;\n if (done < steps.length) {\n return (\n <Txt as=\"span\" variant=\"ui-xs\" className=\"text-icon3 shrink-0 tabular-nums\">\n {done}/{steps.length}\n </Txt>\n );\n }\n if (steps.some(step => step.status === 'error')) {\n return <X size={13} role=\"img\" aria-label=\"Failed\" className=\"text-error shrink-0\" />;\n }\n return null;\n}\n\nfunction GroupKinds({ steps }: { steps: ToolCallGroupStep[] }) {\n const iconByLabel = new Map(\n steps.map(step => presentTool(step.toolName, step.args)).map(({ label, icon }) => [label, icon]),\n );\n const kinds = [...iconByLabel].slice(0, MAX_KIND_GLYPHS);\n\n return (\n <ToolCallSummary role=\"img\" aria-label={kinds.map(([label]) => label).join(', ')} className=\"shrink-0 gap-1.5\">\n {kinds.map(([label, Kind]) => (\n <Kind key={label} size={12} strokeWidth={1.75} className=\"text-icon2\" />\n ))}\n </ToolCallSummary>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ const Button = require('./Button-D10WB4vc.cjs');
|
|
|
16
16
|
const buttonsGroup = require('./buttons-group-Cn36DWYX.cjs');
|
|
17
17
|
const copyButton = require('./copy-button-BtnbaMvl.cjs');
|
|
18
18
|
const utils_cn = require('./cn-DCPcv4xv.cjs');
|
|
19
|
-
const dialog = require('./dialog-
|
|
19
|
+
const dialog = require('./dialog-D-7Hkb3j.cjs');
|
|
20
20
|
const searchFieldBlock = require('./search-field-block-CiinIsub.cjs');
|
|
21
21
|
const themeProvider = require('./theme-provider-aO5-jZVp.cjs');
|
|
22
22
|
|
|
@@ -361,4 +361,4 @@ function containsInnerNewline(obj) {
|
|
|
361
361
|
|
|
362
362
|
exports.DataCodeSection = DataCodeSection;
|
|
363
363
|
exports.DataPanelSectionHeading = DataPanelSectionHeading;
|
|
364
|
-
//# sourceMappingURL=data-code-section-
|
|
364
|
+
//# sourceMappingURL=data-code-section-B_lg_J_0.cjs.map
|