@mastra/playground-ui 53.0.0-alpha.6 → 53.0.0-alpha.7

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.
@@ -118,6 +118,7 @@ const ToolCallDisclosure = ({ className, children, ...props }) => {
118
118
  ) });
119
119
  };
120
120
  const ToolCallPresentedHeader = ({
121
+ leading,
121
122
  icon: Icon,
122
123
  label,
123
124
  detail,
@@ -126,6 +127,7 @@ const ToolCallPresentedHeader = ({
126
127
  }) => {
127
128
  const { status } = useToolCall();
128
129
  return /* @__PURE__ */ jsxRuntime.jsxs(ToolCallHeader, { ...props, children: [
130
+ leading,
129
131
  /* @__PURE__ */ jsxRuntime.jsx(ToolCallIcon, { children: /* @__PURE__ */ jsxRuntime.jsx(
130
132
  Icon,
131
133
  {
@@ -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 } 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 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 icon: Icon,\n label,\n detail,\n disclosure = true,\n ...props\n}: ToolCallPresentedHeaderProps) => {\n const { status } = useToolCall();\n\n return (\n <ToolCallHeader {...props}>\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":"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"}
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":"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"}
@@ -114,6 +114,7 @@ const ToolCallDisclosure = ({ className, children, ...props }) => {
114
114
  ) });
115
115
  };
116
116
  const ToolCallPresentedHeader = ({
117
+ leading,
117
118
  icon: Icon,
118
119
  label,
119
120
  detail,
@@ -122,6 +123,7 @@ const ToolCallPresentedHeader = ({
122
123
  }) => {
123
124
  const { status } = useToolCall();
124
125
  return /* @__PURE__ */ jsxs(ToolCallHeader, { ...props, children: [
126
+ leading,
125
127
  /* @__PURE__ */ jsx(ToolCallIcon, { children: /* @__PURE__ */ jsx(
126
128
  Icon,
127
129
  {
@@ -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 } 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 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 icon: Icon,\n label,\n detail,\n disclosure = true,\n ...props\n}: ToolCallPresentedHeaderProps) => {\n const { status } = useToolCall();\n\n return (\n <ToolCallHeader {...props}>\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":"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"}
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":"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"}
@@ -1,5 +1,5 @@
1
1
  import { LucideIcon } from 'lucide-react';
2
- import { ComponentProps } from 'react';
2
+ import { ComponentProps, ReactNode } from 'react';
3
3
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../Collapsible';
4
4
  import { Txt } from '../../Txt';
5
5
  type ToolCallStatus = 'idle' | 'running' | 'error';
@@ -23,13 +23,15 @@ export declare const ToolCallSpacer: ({ rule, className, ...props }: ToolCallSpa
23
23
  export declare const ToolCallTrailing: ({ className, ...props }: ComponentProps<"span">) => import("react").JSX.Element;
24
24
  export declare const ToolCallDisclosure: ({ className, children, ...props }: ComponentProps<"span">) => import("react").JSX.Element;
25
25
  export interface ToolCallPresentedHeaderProps extends Omit<ComponentProps<typeof ToolCallHeader>, 'children'> {
26
+ /** Rendered ahead of the icon, e.g. a timestamp. */
27
+ leading?: ReactNode;
26
28
  icon: LucideIcon;
27
29
  label: string;
28
30
  detail?: string;
29
31
  disclosure?: boolean;
30
32
  }
31
33
  /** The canonical header of a presented tool call: icon, label, detail, failure mark, chevron. */
32
- export declare const ToolCallPresentedHeader: ({ icon: Icon, label, detail, disclosure, ...props }: ToolCallPresentedHeaderProps) => import("react").JSX.Element;
34
+ export declare const ToolCallPresentedHeader: ({ leading, icon: Icon, label, detail, disclosure, ...props }: ToolCallPresentedHeaderProps) => import("react").JSX.Element;
33
35
  export declare const ToolCallContent: ({ className, children, ...props }: ComponentProps<typeof CollapsibleContent>) => import("react").JSX.Element;
34
36
  export interface ToolCallMonoProps extends ComponentProps<'pre'> {
35
37
  copyText: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mastra/playground-ui",
3
3
  "type": "module",
4
- "version": "53.0.0-alpha.6",
4
+ "version": "53.0.0-alpha.7",
5
5
  "description": "Mastra Playground components",
6
6
  "sideEffects": [
7
7
  "**/*.css"
@@ -160,8 +160,8 @@
160
160
  "react": ">=19.0.0",
161
161
  "react-dom": ">=19.0.0",
162
162
  "tailwindcss": "^4.0.0",
163
- "@mastra/client-js": "^1.44.0-alpha.6",
164
- "@mastra/react": "1.4.11-alpha.6"
163
+ "@mastra/client-js": "^1.44.0-alpha.7",
164
+ "@mastra/react": "1.4.11-alpha.7"
165
165
  },
166
166
  "devDependencies": {
167
167
  "@storybook/addon-a11y": "^10.4.1",
@@ -202,11 +202,11 @@
202
202
  "vite-plugin-dts": "^4.5.4",
203
203
  "vite-plugin-lib-inject-css": "^2.2.2",
204
204
  "vitest": "4.1.10",
205
- "@mastra/client-js": "^1.44.0-alpha.6",
206
- "@mastra/memory": "1.28.3-alpha.2",
207
- "@mastra/core": "1.65.0-alpha.6",
208
205
  "@internal/lint": "0.0.130",
209
- "@mastra/react": "1.4.11-alpha.6"
206
+ "@mastra/core": "1.65.0-alpha.7",
207
+ "@mastra/client-js": "^1.44.0-alpha.7",
208
+ "@mastra/memory": "1.28.3-alpha.2",
209
+ "@mastra/react": "1.4.11-alpha.7"
210
210
  },
211
211
  "homepage": "https://mastra.ai",
212
212
  "repository": {