@reforma/components 0.1.5 → 0.2.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.
Files changed (129) hide show
  1. package/dist/Scrollable/Scrollable.d.ts +1 -2
  2. package/dist/Scrollable/Scrollable.d.ts.map +1 -1
  3. package/dist/Scrollable/Scrollable.js +45 -38
  4. package/dist/Scrollable/Scrollable.js.map +1 -1
  5. package/dist/Scrollable/useScrollChrome.d.ts +1 -2
  6. package/dist/Scrollable/useScrollChrome.d.ts.map +1 -1
  7. package/dist/Scrollable/useScrollChrome.js +125 -110
  8. package/dist/Scrollable/useScrollChrome.js.map +1 -1
  9. package/dist/chat/ComposerBanner/ComposerBanner.d.ts +2 -1
  10. package/dist/chat/ComposerBanner/ComposerBanner.d.ts.map +1 -1
  11. package/dist/chat/ComposerBanner/ComposerBanner.js +37 -29
  12. package/dist/chat/ComposerBanner/ComposerBanner.js.map +1 -1
  13. package/dist/chat/ComposerBanner/ComposerBanner.module.css +1 -1
  14. package/dist/chat/ComposerBanner/ComposerBanner.module.css.js +5 -3
  15. package/dist/chat/ComposerBanner/ComposerBanner.module.css.js.map +1 -1
  16. package/dist/chat/Tool/agent/AgentTool.d.ts.map +1 -1
  17. package/dist/chat/Tool/agent/AgentTool.js +89 -90
  18. package/dist/chat/Tool/agent/AgentTool.js.map +1 -1
  19. package/dist/chat/Tool/edit/EditTool.js +1 -1
  20. package/dist/chat/Tool/edit/EditTool.js.map +1 -1
  21. package/dist/node_modules/zod/v4/classic/errors.js +38 -0
  22. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  23. package/dist/node_modules/zod/v4/classic/parse.js +21 -0
  24. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  25. package/dist/node_modules/zod/v4/classic/schemas.js +822 -0
  26. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  27. package/dist/node_modules/zod/v4/core/api.js +561 -0
  28. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  29. package/dist/node_modules/zod/v4/core/checks.js +262 -0
  30. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  31. package/dist/node_modules/zod/v4/core/core.js +97 -0
  32. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  33. package/dist/node_modules/zod/v4/core/doc.js +35 -0
  34. package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
  35. package/dist/node_modules/zod/v4/core/errors.js +79 -0
  36. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  37. package/dist/node_modules/zod/v4/core/json-schema-processors.js +308 -0
  38. package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +1 -0
  39. package/dist/node_modules/zod/v4/core/memoizer.js +203 -0
  40. package/dist/node_modules/zod/v4/core/memoizer.js.map +1 -0
  41. package/dist/node_modules/zod/v4/core/parse.js +113 -0
  42. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  43. package/dist/node_modules/zod/v4/core/regexes.js +59 -0
  44. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  45. package/dist/node_modules/zod/v4/core/registries.js +41 -0
  46. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  47. package/dist/node_modules/zod/v4/core/schemas.js +1104 -0
  48. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  49. package/dist/node_modules/zod/v4/core/to-json-schema.js +380 -0
  50. package/dist/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
  51. package/dist/node_modules/zod/v4/core/util.js +465 -0
  52. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  53. package/dist/node_modules/zod/v4/core/versions.js +9 -0
  54. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  55. package/dist/node_modules/zod/v4/locales/en.js +97 -0
  56. package/dist/node_modules/zod/v4/locales/en.js.map +1 -0
  57. package/dist/openui/actions.d.ts +16 -0
  58. package/dist/openui/actions.d.ts.map +1 -0
  59. package/dist/openui/actions.js +58 -0
  60. package/dist/openui/actions.js.map +1 -0
  61. package/dist/openui/components/controls.d.ts +34 -0
  62. package/dist/openui/components/controls.d.ts.map +1 -0
  63. package/dist/openui/components/controls.js +40 -0
  64. package/dist/openui/components/controls.js.map +1 -0
  65. package/dist/openui/components/layout.d.ts +74 -0
  66. package/dist/openui/components/layout.d.ts.map +1 -0
  67. package/dist/openui/components/layout.js +154 -0
  68. package/dist/openui/components/layout.js.map +1 -0
  69. package/dist/openui/components/list.d.ts +17 -0
  70. package/dist/openui/components/list.d.ts.map +1 -0
  71. package/dist/openui/components/list.js +96 -0
  72. package/dist/openui/components/list.js.map +1 -0
  73. package/dist/openui/components/svg.d.ts +100 -0
  74. package/dist/openui/components/svg.d.ts.map +1 -0
  75. package/dist/openui/components/svg.js +246 -0
  76. package/dist/openui/components/svg.js.map +1 -0
  77. package/dist/openui/components/table.d.ts +6 -0
  78. package/dist/openui/components/table.d.ts.map +1 -0
  79. package/dist/openui/components/table.js +54 -0
  80. package/dist/openui/components/table.js.map +1 -0
  81. package/dist/openui/components/text.d.ts +89 -0
  82. package/dist/openui/components/text.d.ts.map +1 -0
  83. package/dist/openui/components/text.js +181 -0
  84. package/dist/openui/components/text.js.map +1 -0
  85. package/dist/openui/functions/colors.d.ts +12 -0
  86. package/dist/openui/functions/colors.d.ts.map +1 -0
  87. package/dist/openui/functions/colors.js +32 -0
  88. package/dist/openui/functions/colors.js.map +1 -0
  89. package/dist/openui/functions/data.d.ts +170 -0
  90. package/dist/openui/functions/data.d.ts.map +1 -0
  91. package/dist/openui/functions/data.js +308 -0
  92. package/dist/openui/functions/data.js.map +1 -0
  93. package/dist/openui/functions/dates.d.ts +57 -0
  94. package/dist/openui/functions/dates.d.ts.map +1 -0
  95. package/dist/openui/functions/dates.js +184 -0
  96. package/dist/openui/functions/dates.js.map +1 -0
  97. package/dist/openui/functions/index.d.ts +136 -0
  98. package/dist/openui/functions/index.d.ts.map +1 -0
  99. package/dist/openui/functions/index.js +11 -0
  100. package/dist/openui/functions/index.js.map +1 -0
  101. package/dist/openui/functions/lists.d.ts +102 -0
  102. package/dist/openui/functions/lists.d.ts.map +1 -0
  103. package/dist/openui/functions/lists.js +305 -0
  104. package/dist/openui/functions/lists.js.map +1 -0
  105. package/dist/openui/functions/numbers.d.ts +72 -0
  106. package/dist/openui/functions/numbers.d.ts.map +1 -0
  107. package/dist/openui/functions/numbers.js +201 -0
  108. package/dist/openui/functions/numbers.js.map +1 -0
  109. package/dist/openui/functions/shared.d.ts +28 -0
  110. package/dist/openui/functions/shared.d.ts.map +1 -0
  111. package/dist/openui/functions/shared.js +69 -0
  112. package/dist/openui/functions/shared.js.map +1 -0
  113. package/dist/openui/functions/text.d.ts +97 -0
  114. package/dist/openui/functions/text.d.ts.map +1 -0
  115. package/dist/openui/functions/text.js +223 -0
  116. package/dist/openui/functions/text.js.map +1 -0
  117. package/dist/openui/index.d.ts +5 -0
  118. package/dist/openui/index.d.ts.map +1 -0
  119. package/dist/openui/index.js +14 -0
  120. package/dist/openui/index.js.map +1 -0
  121. package/dist/openui/library.d.ts +8 -0
  122. package/dist/openui/library.d.ts.map +1 -0
  123. package/dist/openui/library.js +37 -0
  124. package/dist/openui/library.js.map +1 -0
  125. package/dist/openui/schema.d.ts +36 -0
  126. package/dist/openui/schema.d.ts.map +1 -0
  127. package/dist/openui/schema.js +24 -0
  128. package/dist/openui/schema.js.map +1 -0
  129. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"AgentTool.js","sources":["../../../../src/chat/Tool/agent/AgentTool.tsx"],"sourcesContent":["import { Message } from '@reforma/icons/14';\nimport { ProgressLoader } from '@reforma/icons/assets';\nimport { basename, humanizeString, plural } from '@reforma/lib';\nimport { getToolName, isToolUIPart } from 'ai';\nimport { observer } from 'mobx-react-lite';\n\nimport { Box } from '../../../Box';\nimport { Pressable } from '../../../Pressable';\nimport { Shimmer } from '../../../Shimmer';\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport { useChat } from '../../ChatContext';\nimport { useMessageTurn } from '../../Message/turn/messageTurnContext';\nimport { getToolFailureRowState, TOOL_INTERRUPTED_MESSAGE } from '../helpers';\nimport { ToolShellCard } from '../shell';\nimport { useToolProgress } from '../shell/toolProgress';\nimport shellStyles from '../shell/ToolShellCard.module.css';\nimport styles from './AgentTool.module.css';\n\nimport type { AgentToolInput, AgentToolOutput } from '@reforma/types/sandbox';\nimport type { ToolRendererProps } from '../types';\n\n/** User-facing labels for known subagent ids (fallback: capitalized id). */\nconst SUBAGENT_LABELS: Record<string, string> = {\n research: 'Explore',\n shell: 'Shell',\n verify: 'Verify',\n plan: 'Plan',\n};\n\nconst SUBAGENT_LIVE: Record<string, string> = {\n research: 'Exploring',\n shell: 'Running',\n verify: 'Verifying',\n plan: 'Planning',\n};\n\nfunction agentErrorFromOutput(output: unknown): string | undefined {\n if (output == null || typeof output !== 'object') {\n return undefined;\n }\n\n const error = (output as AgentToolOutput).error;\n\n return (typeof error === 'string' && error.trim().length > 0) ? error.trim() : undefined;\n}\n\nfunction agentNameFromPart(part: { input?: unknown; output?: unknown }): string | undefined {\n for (const source of [part.output, part.input]) {\n if (source == null || typeof source !== 'object') {\n continue;\n }\n\n const name = (source as AgentToolInput | AgentToolOutput).name;\n\n if (typeof name === 'string' && name.trim().length > 0) {\n return name.trim();\n }\n }\n\n return undefined;\n}\n\nfunction subagentLabel(name: string | undefined): string {\n const id = name?.trim() || 'research';\n const mapped = SUBAGENT_LABELS[id];\n\n if (mapped) {\n return mapped;\n }\n\n return id.charAt(0).toUpperCase() + id.slice(1);\n}\n\nfunction agentPhaseCopy(name: string | undefined): { live: string; done: string } {\n const id = name?.trim() || 'research';\n const label = subagentLabel(name);\n\n return {\n live: SUBAGENT_LIVE[id] ?? `Running ${ label }`,\n done: `Ran ${ label } agent`,\n };\n}\n\nfunction fieldString(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n\n const trimmed = value.trim();\n\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction fileLabel(input: Record<string, unknown>): string | undefined {\n const path = fieldString(input.path);\n\n if (path) {\n return basename(path);\n }\n\n if (!Array.isArray(input.paths)) {\n return undefined;\n }\n\n const files = input.paths.filter((item): item is string => typeof item === 'string' && item.trim().length > 0);\n\n if (files.length === 1) {\n return basename(files[0]);\n }\n\n if (files.length > 1) {\n return plural(files.length, 'file', 'files');\n }\n\n return undefined;\n}\n\nfunction fileActivity(verb: string, fallback: string) {\n return (input: Record<string, unknown>) => `${ verb } ${ fileLabel(input) ?? fallback }`;\n}\n\nconst TOOL_ACTIVITY: Record<string, (input: Record<string, unknown>) => string | undefined> = {\n Read: fileActivity('Reading', 'file'),\n Write: fileActivity('Writing', 'file'),\n Edit: fileActivity('Editing', 'file'),\n ListDirectory: fileActivity('Listing', 'files'),\n CreateDirectory: fileActivity('Creating', 'folder'),\n MoveFile: fileActivity('Moving', 'file'),\n RemoveFile: fileActivity('Removing', 'file'),\n Grep: input => `Grepping ${ fieldString(input.pattern) ?? 'code' }`,\n Glob: input => `Finding ${ fieldString(input.glob) ?? 'files' }`,\n GetBackgroundResult: () => 'Background task',\n Bash: (input) => {\n const command = fieldString(input.command);\n\n return command ? `Running ${ command }` : 'Running command';\n },\n Fetch: input => `Fetching ${ fieldString(input.url) ?? 'page' }`,\n Skill: input => `Loading ${ fieldString(input.name) ?? 'skill' }`,\n GetMcpResources: (input) => {\n const uri = fieldString(input.uri);\n\n if (uri) {\n const tail = uri.replace(/\\/+$/, '').split('/').pop()?.trim();\n\n return `Reading ${ tail || uri }`;\n }\n\n return 'Listing MCP resources';\n },\n Preamble: input => fieldString(input.content),\n ReadLints: () => 'Checking lints',\n PageScreenshot: () => 'Capturing screenshot',\n DevServerStatus: () => 'Checking project',\n ImportAsset: () => 'Importing asset',\n CreatePlan: () => 'Creating plan',\n EditPlan: () => 'Editing plan',\n ReadPlan: () => 'Reading plan',\n};\n\n/** One composer strip: who is running, and the child thread Show opens. */\nexport function subagentComposerCopy(\n part: { input?: unknown; output?: unknown },\n patch: Record<string, unknown> | undefined\n): { text: string; label: string; childThreadId?: string; waiting: boolean } {\n const name = agentNameFromPart(part);\n const label = subagentLabel(name);\n const waiting = patch?.needsUser === true;\n const activity = subagentActivityLabel(patch);\n const live = agentPhaseCopy(name).live;\n const childThreadId = fieldString((part.output as AgentToolOutput | undefined)?.childThreadId)\n ?? fieldString(patch?.childThreadId);\n\n let text = live;\n\n if (waiting) {\n text = `${ label } · Waiting for you`;\n }\n else if (activity) {\n text = `${ label } · ${ activity }`;\n }\n\n return { text, label, childThreadId, waiting };\n}\n\n/** Live subtitle for a tool — same copy for Agent rows and the compact rail task. */\nexport function subagentActivityLabel(patch: Record<string, unknown> | undefined): string | undefined {\n if (!patch) {\n return undefined;\n }\n\n if (patch.type === 'text') {\n return 'Finishing reply';\n }\n\n if (patch.type === 'reasoning') {\n return 'Thinking…';\n }\n\n const toolName = fieldString(patch.toolName);\n\n if (!toolName) {\n return undefined;\n }\n\n const rawInput = patch.input;\n const input = (rawInput != null && typeof rawInput === 'object' && !Array.isArray(rawInput))\n ? rawInput as Record<string, unknown>\n : {};\n\n return TOOL_ACTIVITY[toolName]?.(input)\n ?? `Using ${ fieldString(patch.title) ?? humanizeString(toolName) }`;\n}\n\n/** Live/waiting subtitle. Done rows stay quiet — no empty \"Completed\". */\nexport function agentStatusLine(input: {\n live: boolean;\n failed: boolean;\n stalled?: boolean;\n needsUser?: boolean;\n activity?: string;\n}): string | undefined {\n if (input.failed || input.stalled) {\n return undefined;\n }\n\n if (input.needsUser) {\n return 'Waiting for you';\n }\n\n if (!input.live) {\n return undefined;\n }\n\n return input.activity ?? 'Starting…';\n}\n\n/** Subagent card. Running: loader, shimmer title, gray activity. Finished: same frame, quiet title. */\nfunction AgentCard({\n title,\n activity,\n errorText,\n running,\n stalled,\n onOpen,\n}: {\n title: string;\n activity?: string;\n errorText?: string;\n running: boolean;\n stalled: boolean;\n onOpen?: () => void;\n}) {\n const heading = stalled ? TOOL_INTERRUPTED_MESSAGE : title;\n const copy = (\n <Box align=\"center\" direction=\"row\" fullWidth gap=\"md\" padding=\"md\">\n <Show\n when={ running }\n fallback={ <Message aria-hidden /> }\n >\n <ProgressLoader aria-hidden size={ 14 } />\n </Show>\n <Box gap=\"xxs\" grow>\n <Show\n when={ running }\n fallback={ (\n <Text className={ styles.title } color={ stalled ? 'danger' : undefined }>\n { heading }\n </Text>\n ) }\n >\n <Shimmer as=\"span\" className={ styles.title } duration={ 1 }>\n { heading }\n </Shimmer>\n </Show>\n <Show when={ running ? activity : undefined }>\n { line => (\n <Text color=\"secondary\" truncate variant=\"sm\">\n { line }\n </Text>\n ) }\n </Show>\n <Show when={ errorText }>\n { line => (\n <Text color=\"danger\" variant=\"xs\">{ line }</Text>\n ) }\n </Show>\n </Box>\n </Box>\n );\n\n return (\n <ToolShellCard\n aria-busy={ running || undefined }\n className={ shellStyles.tool }\n collapsible={ false }\n data-slot=\"agent-tool\"\n >\n <Show\n when={ onOpen }\n fallback={ copy }\n >\n { open => (\n <Pressable\n aria-label={ activity ? `${ heading }. ${ activity }` : heading }\n className={ styles.hit }\n onPress={ open }\n >\n { copy }\n </Pressable>\n ) }\n </Show>\n </ToolShellCard>\n );\n}\n\n/** Agent subagent card. Opens the child thread. */\nexport const AgentTool = observer(({ part }: ToolRendererProps) => {\n const turn = useMessageTurn();\n const { onOpenSubagent } = useChat();\n const patch = turn?.getToolMeta?.(part.toolCallId)?.patch;\n const needsUser = patch?.needsUser === true;\n const { live, stalled } = useToolProgress(part.state, needsUser);\n\n if (!isToolUIPart(part) || getToolName(part) !== 'Agent') {\n return null;\n }\n\n const failure = getToolFailureRowState(part);\n const logicalError = part.state === 'output-available'\n ? agentErrorFromOutput(part.output)\n : undefined;\n const failed = failure.useFailureLabel || Boolean(logicalError);\n const agentName = agentNameFromPart(part);\n const label = subagentLabel(agentName);\n const phase = agentPhaseCopy(agentName);\n const activity = subagentActivityLabel(patch);\n const statusLine = agentStatusLine({\n live,\n failed,\n stalled,\n needsUser,\n activity,\n });\n const childThreadId = fieldString((part.output as AgentToolOutput | undefined)?.childThreadId)\n ?? fieldString(patch?.childThreadId);\n const canOpen = Boolean(childThreadId && onOpenSubagent && !failed);\n const errorText = logicalError ?? failure.problemText ?? failure.tooltip;\n const openChild = canOpen\n ? () => onOpenSubagent?.(childThreadId!, label)\n : undefined;\n\n return (\n <AgentCard\n activity={ statusLine }\n errorText={ errorText }\n onOpen={ openChild }\n running={ live && !failed && !stalled }\n stalled={ stalled }\n title={ live && !failed && !stalled ? phase.live : phase.done }\n />\n );\n});\n"],"names":["SUBAGENT_LABELS","SUBAGENT_LIVE","agentErrorFromOutput","output","error","agentNameFromPart","part","source","name","subagentLabel","id","mapped","agentPhaseCopy","label","fieldString","value","trimmed","fileLabel","input","path","basename","files","item","plural","fileActivity","verb","fallback","TOOL_ACTIVITY","command","uri","subagentComposerCopy","patch","waiting","activity","subagentActivityLabel","live","childThreadId","text","toolName","rawInput","humanizeString","agentStatusLine","AgentCard","title","errorText","running","stalled","onOpen","heading","TOOL_INTERRUPTED_MESSAGE","copy","Box","_jsx","Show","Message","ProgressLoader","_jsxs","Text","styles","Shimmer","line","ToolShellCard","shellStyles","open","Pressable","AgentTool","observer","turn","useMessageTurn","onOpenSubagent","useChat","needsUser","useToolProgress","isToolUIPart","getToolName","failure","getToolFailureRowState","logicalError","failed","agentName","phase","statusLine","canOpen"],"mappings":"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"}
1
+ {"version":3,"file":"AgentTool.js","sources":["../../../../src/chat/Tool/agent/AgentTool.tsx"],"sourcesContent":["import { Message } from '@reforma/icons/14';\nimport { ProgressLoader } from '@reforma/icons/assets';\nimport { basename, humanizeString, plural } from '@reforma/lib';\nimport { getToolName, isToolUIPart } from 'ai';\nimport { observer } from 'mobx-react-lite';\n\nimport { Box } from '../../../Box';\nimport { Pressable } from '../../../Pressable';\nimport { Shimmer } from '../../../Shimmer';\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport { useChat } from '../../ChatContext';\nimport { useMessageTurn } from '../../Message/turn/messageTurnContext';\nimport { getToolFailureRowState, TOOL_INTERRUPTED_MESSAGE } from '../helpers';\nimport { ToolShellCard } from '../shell';\nimport { useToolProgress } from '../shell/toolProgress';\nimport shellStyles from '../shell/ToolShellCard.module.css';\nimport styles from './AgentTool.module.css';\n\nimport type { AgentToolInput, AgentToolOutput } from '@reforma/types/sandbox';\nimport type { ToolRendererProps } from '../types';\n\n/** User-facing labels for known subagent ids (fallback: capitalized id). */\nconst SUBAGENT_LABELS: Record<string, string> = {\n research: 'Explore',\n shell: 'Shell',\n verify: 'Verify',\n plan: 'Plan',\n};\n\nconst SUBAGENT_LIVE: Record<string, string> = {\n research: 'Exploring',\n shell: 'Running',\n verify: 'Verifying',\n plan: 'Planning',\n};\n\nfunction agentErrorFromOutput(output: unknown): string | undefined {\n if (output == null || typeof output !== 'object') {\n return undefined;\n }\n\n const error = (output as AgentToolOutput).error;\n\n return (typeof error === 'string' && error.trim().length > 0) ? error.trim() : undefined;\n}\n\nfunction agentNameFromPart(part: { input?: unknown; output?: unknown }): string | undefined {\n for (const source of [part.output, part.input]) {\n if (source == null || typeof source !== 'object') {\n continue;\n }\n\n const name = (source as AgentToolInput | AgentToolOutput).name;\n\n if (typeof name === 'string' && name.trim().length > 0) {\n return name.trim();\n }\n }\n\n return undefined;\n}\n\nfunction subagentLabel(name: string | undefined): string {\n const id = name?.trim() || 'research';\n const mapped = SUBAGENT_LABELS[id];\n\n if (mapped) {\n return mapped;\n }\n\n return id.charAt(0).toUpperCase() + id.slice(1);\n}\n\nfunction agentPhaseCopy(name: string | undefined): { live: string; done: string } {\n const id = name?.trim() || 'research';\n const label = subagentLabel(name);\n\n return {\n live: SUBAGENT_LIVE[id] ?? `Running ${ label }`,\n done: `Ran ${ label } agent`,\n };\n}\n\nfunction fieldString(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n\n const trimmed = value.trim();\n\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction fileLabel(input: Record<string, unknown>): string | undefined {\n const path = fieldString(input.path);\n\n if (path) {\n return basename(path);\n }\n\n if (!Array.isArray(input.paths)) {\n return undefined;\n }\n\n const files = input.paths.filter((item): item is string => typeof item === 'string' && item.trim().length > 0);\n\n if (files.length === 1) {\n return basename(files[0]);\n }\n\n if (files.length > 1) {\n return plural(files.length, 'file', 'files');\n }\n\n return undefined;\n}\n\nfunction fileActivity(verb: string, fallback: string) {\n return (input: Record<string, unknown>) => `${ verb } ${ fileLabel(input) ?? fallback }`;\n}\n\nconst TOOL_ACTIVITY: Record<string, (input: Record<string, unknown>) => string | undefined> = {\n Read: fileActivity('Reading', 'file'),\n Write: fileActivity('Writing', 'file'),\n Edit: fileActivity('Editing', 'file'),\n ListDirectory: fileActivity('Listing', 'files'),\n CreateDirectory: fileActivity('Creating', 'folder'),\n MoveFile: fileActivity('Moving', 'file'),\n RemoveFile: fileActivity('Removing', 'file'),\n Grep: input => `Grepping ${ fieldString(input.pattern) ?? 'code' }`,\n Glob: input => `Finding ${ fieldString(input.glob) ?? 'files' }`,\n GetBackgroundResult: () => 'Background task',\n Bash: (input) => {\n const command = fieldString(input.command);\n\n return command ? `Running ${ command }` : 'Running command';\n },\n Fetch: input => `Fetching ${ fieldString(input.url) ?? 'page' }`,\n Skill: input => `Loading ${ fieldString(input.name) ?? 'skill' }`,\n GetMcpResources: (input) => {\n const uri = fieldString(input.uri);\n\n if (uri) {\n const tail = uri.replace(/\\/+$/, '').split('/').pop()?.trim();\n\n return `Reading ${ tail || uri }`;\n }\n\n return 'Listing MCP resources';\n },\n Preamble: input => fieldString(input.content),\n ReadLints: () => 'Checking lints',\n PageScreenshot: () => 'Capturing screenshot',\n DevServerStatus: () => 'Checking project',\n ImportAsset: () => 'Importing asset',\n CreatePlan: () => 'Creating plan',\n EditPlan: () => 'Editing plan',\n ReadPlan: () => 'Reading plan',\n};\n\n/** One composer strip: who is running, and the child thread Show opens. */\nexport function subagentComposerCopy(\n part: { input?: unknown; output?: unknown },\n patch: Record<string, unknown> | undefined\n): { text: string; label: string; childThreadId?: string; waiting: boolean } {\n const name = agentNameFromPart(part);\n const label = subagentLabel(name);\n const waiting = patch?.needsUser === true;\n const childThreadId = fieldString((part.output as AgentToolOutput | undefined)?.childThreadId)\n ?? fieldString(patch?.childThreadId);\n const text = waiting\n ? `${ label } · Waiting for you`\n : `${ label } Agent working`;\n\n return { text, label, childThreadId, waiting };\n}\n\n/** Live subtitle for a tool — same copy for Agent rows and the compact rail task. */\nexport function subagentActivityLabel(patch: Record<string, unknown> | undefined): string | undefined {\n if (!patch) {\n return undefined;\n }\n\n if (patch.type === 'text') {\n return 'Finishing reply';\n }\n\n if (patch.type === 'reasoning') {\n return 'Thinking…';\n }\n\n const toolName = fieldString(patch.toolName);\n\n if (!toolName) {\n return undefined;\n }\n\n const rawInput = patch.input;\n const input = (rawInput != null && typeof rawInput === 'object' && !Array.isArray(rawInput))\n ? rawInput as Record<string, unknown>\n : {};\n\n return TOOL_ACTIVITY[toolName]?.(input)\n ?? `Using ${ fieldString(patch.title) ?? humanizeString(toolName) }`;\n}\n\n/** Live/waiting subtitle. Done rows stay quiet — no empty \"Completed\". */\nexport function agentStatusLine(input: {\n live: boolean;\n failed: boolean;\n stalled?: boolean;\n needsUser?: boolean;\n activity?: string;\n}): string | undefined {\n if (input.failed || input.stalled) {\n return undefined;\n }\n\n if (input.needsUser) {\n return 'Waiting for you';\n }\n\n if (!input.live) {\n return undefined;\n }\n\n return input.activity ?? 'Starting…';\n}\n\n/** Subagent card. Running: loader, shimmer title, gray activity. Finished: same frame, quiet title. */\nfunction AgentCard({\n title,\n activity,\n errorText,\n running,\n stalled,\n onOpen,\n}: {\n title: string;\n activity?: string;\n errorText?: string;\n running: boolean;\n stalled: boolean;\n onOpen?: () => void;\n}) {\n const heading = stalled ? TOOL_INTERRUPTED_MESSAGE : title;\n const copy = (\n <Box align=\"center\" direction=\"row\" fullWidth gap=\"md\" padding=\"md\">\n <Show\n when={ running }\n fallback={ <Message aria-hidden /> }\n >\n <ProgressLoader aria-hidden size={ 14 } />\n </Show>\n <Box gap=\"xxs\" grow>\n <Show\n when={ running }\n fallback={ (\n <Text className={ styles.title } color={ stalled ? 'danger' : undefined }>\n { heading }\n </Text>\n ) }\n >\n <Shimmer as=\"span\" className={ styles.title } duration={ 1 }>\n { heading }\n </Shimmer>\n </Show>\n <Show when={ running ? activity : undefined }>\n { line => (\n <Text color=\"secondary\" truncate variant=\"sm\">\n { line }\n </Text>\n ) }\n </Show>\n <Show when={ errorText }>\n { line => (\n <Text color=\"danger\" variant=\"xs\">{ line }</Text>\n ) }\n </Show>\n </Box>\n </Box>\n );\n\n return (\n <ToolShellCard\n aria-busy={ running || undefined }\n className={ shellStyles.tool }\n collapsible={ false }\n data-slot=\"agent-tool\"\n >\n <Show\n when={ onOpen }\n fallback={ copy }\n >\n { open => (\n <Pressable\n aria-label={ activity ? `${ heading }. ${ activity }` : heading }\n className={ styles.hit }\n onPress={ open }\n >\n { copy }\n </Pressable>\n ) }\n </Show>\n </ToolShellCard>\n );\n}\n\n/** Agent subagent card. Opens the child thread. */\nexport const AgentTool = observer(({ part }: ToolRendererProps) => {\n const turn = useMessageTurn();\n const { onOpenSubagent } = useChat();\n const patch = turn?.getToolMeta?.(part.toolCallId)?.patch;\n const needsUser = patch?.needsUser === true;\n const { live, stalled } = useToolProgress(part.state, needsUser);\n\n if (!isToolUIPart(part) || getToolName(part) !== 'Agent') {\n return null;\n }\n\n const failure = getToolFailureRowState(part);\n const logicalError = part.state === 'output-available'\n ? agentErrorFromOutput(part.output)\n : undefined;\n const failed = failure.useFailureLabel || Boolean(logicalError);\n const agentName = agentNameFromPart(part);\n const label = subagentLabel(agentName);\n const phase = agentPhaseCopy(agentName);\n const activity = subagentActivityLabel(patch);\n const statusLine = agentStatusLine({\n live,\n failed,\n stalled,\n needsUser,\n activity,\n });\n const childThreadId = fieldString((part.output as AgentToolOutput | undefined)?.childThreadId)\n ?? fieldString(patch?.childThreadId);\n const canOpen = Boolean(childThreadId && onOpenSubagent && !failed);\n const errorText = logicalError ?? failure.problemText ?? failure.tooltip;\n const openChild = canOpen\n ? () => onOpenSubagent?.(childThreadId!, label)\n : undefined;\n\n return (\n <AgentCard\n activity={ statusLine }\n errorText={ errorText }\n onOpen={ openChild }\n running={ live && !failed && !stalled }\n stalled={ stalled }\n title={ live && !failed && !stalled ? phase.live : phase.done }\n />\n );\n});\n"],"names":["SUBAGENT_LABELS","SUBAGENT_LIVE","agentErrorFromOutput","output","error","agentNameFromPart","part","source","name","subagentLabel","id","mapped","agentPhaseCopy","label","fieldString","value","trimmed","fileLabel","input","path","basename","files","item","plural","fileActivity","verb","fallback","TOOL_ACTIVITY","command","uri","subagentComposerCopy","patch","waiting","childThreadId","subagentActivityLabel","toolName","rawInput","humanizeString","agentStatusLine","AgentCard","title","activity","errorText","running","stalled","onOpen","heading","TOOL_INTERRUPTED_MESSAGE","copy","Box","_jsx","Show","Message","ProgressLoader","_jsxs","Text","styles","Shimmer","line","ToolShellCard","shellStyles","open","Pressable","AgentTool","observer","turn","useMessageTurn","onOpenSubagent","useChat","needsUser","live","useToolProgress","isToolUIPart","getToolName","failure","getToolFailureRowState","logicalError","failed","agentName","phase","statusLine","canOpen"],"mappings":"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"}
@@ -17,7 +17,7 @@ import C from "./EditTool.module.css.js";
17
17
  import { writeToolLineCounts as Q, editToolLineCounts as U, editToolCodeForHighlighter as V } from "./formatEditDiff.js";
18
18
  import { parseEditWriteToolInput as X } from "./parseEditWriteInput.js";
19
19
  import { jsxs as g, jsx as t } from "react/jsx-runtime";
20
- const Y = [q()], Z = "plan.md";
20
+ const Y = [q()], Z = "plan.oui";
21
21
  function $(e, o) {
22
22
  for (const r of [o, e]) {
23
23
  if (r == null || typeof r != "object" || !("name" in r))
@@ -1 +1 @@
1
- {"version":3,"file":"EditTool.js","sources":["../../../../src/chat/Tool/edit/EditTool.tsx"],"sourcesContent":["import { EditPen, EditSquare } from '@reforma/icons/14';\nimport { getLanguageFromPath } from '@reforma/lib';\nimport { getToolName } from 'ai';\nimport { memo, useMemo } from 'react';\n\nimport { CodeHighlighter } from '../../../CodeHighlighter';\nimport { transformerNotationDiff } from '../../../CodeHighlighter/transformers';\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport {\n Approval,\n ApprovalButtons,\n ApprovalRequest,\n} from '../../Approval';\nimport { useChatHandlers } from '../../ChatContext';\nimport { Chip, chipItemFromPath } from '../../Chip';\nimport { getToolFailureRowState, isToolInvocationInProgress } from '../helpers';\nimport {\n ToolLineCounts,\n ToolShell,\n ToolShellContent,\n ToolShellFooter,\n ToolShellHeader,\n} from '../shell';\nimport styles from './EditTool.module.css';\nimport { editToolCodeForHighlighter, editToolLineCounts, writeToolLineCounts } from './formatEditDiff';\nimport { parseEditWriteToolInput } from './parseEditWriteInput';\n\nimport type { EditPlanToolInput, EditPlanToolOutput, EditToolOutput, WriteToolOutput } from '@reforma/types/sandbox';\nimport type { ToolUIPart } from 'ai';\nimport type { ToolRendererProps } from '../types';\n\nconst diffTransformers = [transformerNotationDiff()];\n\nconst PLAN_DIFF_PATH = 'plan.md';\n\nfunction planChipLabel(input: unknown, output: unknown): string {\n for (const source of [output, input]) {\n if (source == null || typeof source !== 'object' || !('name' in source)) {\n continue;\n }\n\n const name = (source as EditPlanToolInput | EditPlanToolOutput).name?.trim();\n\n if (name) {\n return name;\n }\n }\n\n return 'Plan';\n}\n\ntype DiffBodyProps = {\n toolType: 'tool-Write' | 'tool-Edit';\n partState: string;\n path: string;\n output: unknown;\n oldString: string;\n newString: string;\n};\n\n/** Shiki body — parent wraps with {@link ToolShellContent} so this mounts only when expanded. */\nconst EditToolDiffHighlighter = memo(({\n toolType,\n partState,\n path,\n output,\n oldString,\n newString,\n}: DiffBodyProps) => {\n const language = useMemo(() => getLanguageFromPath(path), [path]);\n\n const code = useMemo(\n () => editToolCodeForHighlighter(toolType, partState, output, oldString, newString),\n [toolType, partState, output, oldString, newString]\n );\n\n return (\n <CodeHighlighter\n className={ styles.editToolShikiContainer }\n language={ language }\n code={ code }\n dedent\n transformers={ diffTransformers }\n stickToBottom={ isToolInvocationInProgress(partState) }\n />\n );\n});\n\nfunction editToolCanExpandDiff(state: string): boolean {\n return (\n state === 'input-streaming'\n || state === 'input-available'\n || state === 'approval-requested'\n || state === 'output-available'\n );\n}\n\n/** `tool-Write` (full file) and `tool-Edit` (replace / diff): compact shell with optional diff body. */\nexport function EditTool(props: ToolRendererProps) {\n const part = props.part as ToolUIPart & { type: 'tool-Write' | 'tool-Edit' | 'tool-EditPlan' };\n const { onToolApprovalResponse, onOpenPath, onOpenPlan } = useChatHandlers(props);\n const toolName = getToolName(part);\n const isWrite = toolName === 'Write';\n const isPlan = toolName === 'EditPlan';\n const parsedInput = useMemo(() => parseEditWriteToolInput(part.input), [part.input]);\n const path = isPlan ? PLAN_DIFF_PATH : parsedInput.path;\n\n const state = part.state;\n const failure = getToolFailureRowState(part);\n // Row stays visible from tool-input-start (`input` may be undefined until path parses).\n const canExpandDiff = Boolean(path)\n && editToolCanExpandDiff(state)\n && (!isPlan || parsedInput.edits.length > 0);\n const isApplied = state === 'output-available';\n\n const counts = useMemo(() => {\n if (!isApplied || !path) {\n return null;\n }\n\n return isWrite\n ? writeToolLineCounts(part.output as WriteToolOutput)\n : editToolLineCounts(part.output as EditToolOutput);\n }, [isApplied, isWrite, path, part.output]);\n\n const approval = part.approval;\n\n const actionLabel = isWrite ? 'Write' : isPlan ? 'Edit plan' : 'Edit';\n const progressLabel = isWrite ? 'Writing' : isPlan ? 'Editing plan' : 'Editing';\n\n const planName = isPlan ? planChipLabel(part.input, part.output) : 'Plan';\n const chipItem = isPlan\n ? { label: planName, icon: 'nav' }\n : chipItemFromPath(parsedInput.path);\n\n return (\n <ToolShell\n collapsible={ canExpandDiff }\n data-slot=\"edit-tool\"\n >\n <ToolShellHeader\n state={ state }\n statusDetail={ failure.tooltip }\n title={ actionLabel }\n titleInProgress={ progressLabel }\n icon={ isWrite ? <EditSquare aria-hidden /> : <EditPen aria-hidden /> }\n >\n <Show when={ chipItem }>\n { item => (\n <Chip\n aria-label={ isPlan ? planName : 'File path' }\n item={ item }\n onAction={ isPlan\n ? (onOpenPlan ? () => onOpenPlan() : undefined)\n : onOpenPath }\n />\n ) }\n </Show>\n\n {counts\n ? (\n <ToolLineCounts added={ counts.added } removed={ counts.removed } />\n )\n : null}\n </ToolShellHeader>\n\n {canExpandDiff\n ? (\n <ToolShellContent className={ styles.content }>\n <EditToolDiffHighlighter\n toolType={ isWrite ? 'tool-Write' : 'tool-Edit' }\n partState={ state }\n path={ path }\n output={ part.output }\n oldString={ parsedInput.oldString }\n newString={ parsedInput.newString }\n />\n </ToolShellContent>\n )\n : null}\n\n <Show when={ failure.problemText }>\n <ToolShellFooter>\n <Text color=\"danger\" variant=\"xs\">{failure.problemText}</Text>\n </ToolShellFooter>\n </Show>\n\n <Show when={ state === 'approval-requested' }>\n <ToolShellFooter>\n <Approval\n approval={ approval }\n state={ state }\n onToolApprovalResponse={ onToolApprovalResponse }\n >\n <ApprovalRequest>\n <Text>This tool needs your approval before writing the file</Text>\n <ApprovalButtons />\n </ApprovalRequest>\n </Approval>\n </ToolShellFooter>\n </Show>\n </ToolShell>\n );\n}\n"],"names":["diffTransformers","transformerNotationDiff","PLAN_DIFF_PATH","planChipLabel","input","output","source","name","EditToolDiffHighlighter","toolType","partState","path","oldString","newString","language","useMemo","getLanguageFromPath","code","editToolCodeForHighlighter","CodeHighlighter","styles","isToolInvocationInProgress","editToolCanExpandDiff","state","EditTool","props","part","onToolApprovalResponse","onOpenPath","onOpenPlan","useChatHandlers","toolName","getToolName","isWrite","isPlan","parsedInput","parseEditWriteToolInput","failure","getToolFailureRowState","canExpandDiff","isApplied","counts","writeToolLineCounts","editToolLineCounts","approval","actionLabel","progressLabel","planName","chipItem","chipItemFromPath","ToolShell","_jsxs","ToolShellHeader","_jsx","EditSquare","EditPen","Show","item","Chip","ToolLineCounts","ToolShellContent","ToolShellFooter","Text","Approval","ApprovalRequest","ApprovalButtons"],"mappings":"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"}
1
+ {"version":3,"file":"EditTool.js","sources":["../../../../src/chat/Tool/edit/EditTool.tsx"],"sourcesContent":["import { EditPen, EditSquare } from '@reforma/icons/14';\nimport { getLanguageFromPath } from '@reforma/lib';\nimport { getToolName } from 'ai';\nimport { memo, useMemo } from 'react';\n\nimport { CodeHighlighter } from '../../../CodeHighlighter';\nimport { transformerNotationDiff } from '../../../CodeHighlighter/transformers';\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport {\n Approval,\n ApprovalButtons,\n ApprovalRequest,\n} from '../../Approval';\nimport { useChatHandlers } from '../../ChatContext';\nimport { Chip, chipItemFromPath } from '../../Chip';\nimport { getToolFailureRowState, isToolInvocationInProgress } from '../helpers';\nimport {\n ToolLineCounts,\n ToolShell,\n ToolShellContent,\n ToolShellFooter,\n ToolShellHeader,\n} from '../shell';\nimport styles from './EditTool.module.css';\nimport { editToolCodeForHighlighter, editToolLineCounts, writeToolLineCounts } from './formatEditDiff';\nimport { parseEditWriteToolInput } from './parseEditWriteInput';\n\nimport type { EditPlanToolInput, EditPlanToolOutput, EditToolOutput, WriteToolOutput } from '@reforma/types/sandbox';\nimport type { ToolUIPart } from 'ai';\nimport type { ToolRendererProps } from '../types';\n\nconst diffTransformers = [transformerNotationDiff()];\n\nconst PLAN_DIFF_PATH = 'plan.oui';\n\nfunction planChipLabel(input: unknown, output: unknown): string {\n for (const source of [output, input]) {\n if (source == null || typeof source !== 'object' || !('name' in source)) {\n continue;\n }\n\n const name = (source as EditPlanToolInput | EditPlanToolOutput).name?.trim();\n\n if (name) {\n return name;\n }\n }\n\n return 'Plan';\n}\n\ntype DiffBodyProps = {\n toolType: 'tool-Write' | 'tool-Edit';\n partState: string;\n path: string;\n output: unknown;\n oldString: string;\n newString: string;\n};\n\n/** Shiki body — parent wraps with {@link ToolShellContent} so this mounts only when expanded. */\nconst EditToolDiffHighlighter = memo(({\n toolType,\n partState,\n path,\n output,\n oldString,\n newString,\n}: DiffBodyProps) => {\n const language = useMemo(() => getLanguageFromPath(path), [path]);\n\n const code = useMemo(\n () => editToolCodeForHighlighter(toolType, partState, output, oldString, newString),\n [toolType, partState, output, oldString, newString]\n );\n\n return (\n <CodeHighlighter\n className={ styles.editToolShikiContainer }\n language={ language }\n code={ code }\n dedent\n transformers={ diffTransformers }\n stickToBottom={ isToolInvocationInProgress(partState) }\n />\n );\n});\n\nfunction editToolCanExpandDiff(state: string): boolean {\n return (\n state === 'input-streaming'\n || state === 'input-available'\n || state === 'approval-requested'\n || state === 'output-available'\n );\n}\n\n/** `tool-Write` (full file) and `tool-Edit` (replace / diff): compact shell with optional diff body. */\nexport function EditTool(props: ToolRendererProps) {\n const part = props.part as ToolUIPart & { type: 'tool-Write' | 'tool-Edit' | 'tool-EditPlan' };\n const { onToolApprovalResponse, onOpenPath, onOpenPlan } = useChatHandlers(props);\n const toolName = getToolName(part);\n const isWrite = toolName === 'Write';\n const isPlan = toolName === 'EditPlan';\n const parsedInput = useMemo(() => parseEditWriteToolInput(part.input), [part.input]);\n const path = isPlan ? PLAN_DIFF_PATH : parsedInput.path;\n\n const state = part.state;\n const failure = getToolFailureRowState(part);\n // Row stays visible from tool-input-start (`input` may be undefined until path parses).\n const canExpandDiff = Boolean(path)\n && editToolCanExpandDiff(state)\n && (!isPlan || parsedInput.edits.length > 0);\n const isApplied = state === 'output-available';\n\n const counts = useMemo(() => {\n if (!isApplied || !path) {\n return null;\n }\n\n return isWrite\n ? writeToolLineCounts(part.output as WriteToolOutput)\n : editToolLineCounts(part.output as EditToolOutput);\n }, [isApplied, isWrite, path, part.output]);\n\n const approval = part.approval;\n\n const actionLabel = isWrite ? 'Write' : isPlan ? 'Edit plan' : 'Edit';\n const progressLabel = isWrite ? 'Writing' : isPlan ? 'Editing plan' : 'Editing';\n\n const planName = isPlan ? planChipLabel(part.input, part.output) : 'Plan';\n const chipItem = isPlan\n ? { label: planName, icon: 'nav' }\n : chipItemFromPath(parsedInput.path);\n\n return (\n <ToolShell\n collapsible={ canExpandDiff }\n data-slot=\"edit-tool\"\n >\n <ToolShellHeader\n state={ state }\n statusDetail={ failure.tooltip }\n title={ actionLabel }\n titleInProgress={ progressLabel }\n icon={ isWrite ? <EditSquare aria-hidden /> : <EditPen aria-hidden /> }\n >\n <Show when={ chipItem }>\n { item => (\n <Chip\n aria-label={ isPlan ? planName : 'File path' }\n item={ item }\n onAction={ isPlan\n ? (onOpenPlan ? () => onOpenPlan() : undefined)\n : onOpenPath }\n />\n ) }\n </Show>\n\n {counts\n ? (\n <ToolLineCounts added={ counts.added } removed={ counts.removed } />\n )\n : null}\n </ToolShellHeader>\n\n {canExpandDiff\n ? (\n <ToolShellContent className={ styles.content }>\n <EditToolDiffHighlighter\n toolType={ isWrite ? 'tool-Write' : 'tool-Edit' }\n partState={ state }\n path={ path }\n output={ part.output }\n oldString={ parsedInput.oldString }\n newString={ parsedInput.newString }\n />\n </ToolShellContent>\n )\n : null}\n\n <Show when={ failure.problemText }>\n <ToolShellFooter>\n <Text color=\"danger\" variant=\"xs\">{failure.problemText}</Text>\n </ToolShellFooter>\n </Show>\n\n <Show when={ state === 'approval-requested' }>\n <ToolShellFooter>\n <Approval\n approval={ approval }\n state={ state }\n onToolApprovalResponse={ onToolApprovalResponse }\n >\n <ApprovalRequest>\n <Text>This tool needs your approval before writing the file</Text>\n <ApprovalButtons />\n </ApprovalRequest>\n </Approval>\n </ToolShellFooter>\n </Show>\n </ToolShell>\n );\n}\n"],"names":["diffTransformers","transformerNotationDiff","PLAN_DIFF_PATH","planChipLabel","input","output","source","name","EditToolDiffHighlighter","toolType","partState","path","oldString","newString","language","useMemo","getLanguageFromPath","code","editToolCodeForHighlighter","CodeHighlighter","styles","isToolInvocationInProgress","editToolCanExpandDiff","state","EditTool","props","part","onToolApprovalResponse","onOpenPath","onOpenPlan","useChatHandlers","toolName","getToolName","isWrite","isPlan","parsedInput","parseEditWriteToolInput","failure","getToolFailureRowState","canExpandDiff","isApplied","counts","writeToolLineCounts","editToolLineCounts","approval","actionLabel","progressLabel","planName","chipItem","chipItemFromPath","ToolShell","_jsxs","ToolShellHeader","_jsx","EditSquare","EditPen","Show","item","Chip","ToolLineCounts","ToolShellContent","ToolShellFooter","Text","Approval","ApprovalRequest","ApprovalButtons"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { jsonStringifyReplacer as n } from "../core/util.js";
2
+ import { $ZodError as u, formatError as f, flattenError as c } from "../core/errors.js";
3
+ import { $constructor as d } from "../core/core.js";
4
+ const a = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
5
+ function i(o, s, e) {
6
+ Object.defineProperty(o, s, {
7
+ configurable: !0,
8
+ enumerable: !1,
9
+ get() {
10
+ const r = e(this);
11
+ return Object.defineProperty(this, s, { value: r, configurable: !0, writable: !0 }), r;
12
+ },
13
+ set(r) {
14
+ Object.defineProperty(this, s, { value: r, configurable: !0, writable: !0 });
15
+ }
16
+ });
17
+ }
18
+ const p = (o, s) => {
19
+ u.init(o, s), o.name = "ZodError";
20
+ const e = Object.getPrototypeOf(o);
21
+ a.has(e) || (a.add(e), i(e, "format", (r) => (t) => f(r, t)), i(e, "flatten", (r) => (t) => c(r, t)), i(e, "addIssue", (r) => (t) => {
22
+ r.issues.push(t), r.message = JSON.stringify(r.issues, n, 2);
23
+ }), i(e, "addIssues", (r) => (t) => {
24
+ r.issues.push(...t), r.message = JSON.stringify(r.issues, n, 2);
25
+ }), Object.defineProperty(e, "isEmpty", {
26
+ configurable: !0,
27
+ enumerable: !1,
28
+ get() {
29
+ return this.issues.length === 0;
30
+ }
31
+ }));
32
+ }, g = /* @__PURE__ */ d("ZodError", p, void 0, {
33
+ Parent: Error
34
+ });
35
+ export {
36
+ g as ZodRealError
37
+ };
38
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sources":["../../../../../../../node_modules/zod/v4/classic/errors.js"],"sourcesContent":["import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\n/* Prototypes that already carry the lazy helper methods. Seeded with the\n * intrinsics so that `init` on a foreign object — it accepts any object —\n * can never install an accessor onto a prototype we do not own. */\nconst _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\n/* Helper methods live as non-enumerable lazy getters on the shared\n * prototype instead of own properties on every instance. On first\n * access the getter allocates the per-instance closure and caches it\n * as a non-enumerable own property, so detached usage still works and\n * the allocation only happens for methods actually touched. */\nfunction _lazyMethod(proto, key, make) {\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const value = make(this);\n Object.defineProperty(this, key, { value, configurable: true, writable: true });\n return value;\n },\n set(value) {\n Object.defineProperty(this, key, { value, configurable: true, writable: true });\n },\n });\n}\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n const proto = Object.getPrototypeOf(inst);\n if (_installedErrorProtos.has(proto))\n return;\n _installedErrorProtos.add(proto);\n _lazyMethod(proto, \"format\", (self) => (mapper) => core.formatError(self, mapper));\n _lazyMethod(proto, \"flatten\", (self) => (mapper) => core.flattenError(self, mapper));\n _lazyMethod(proto, \"addIssue\", (self) => (issue) => {\n self.issues.push(issue);\n self.message = JSON.stringify(self.issues, util.jsonStringifyReplacer, 2);\n });\n _lazyMethod(proto, \"addIssues\", (self) => (issues) => {\n self.issues.push(...issues);\n self.message = JSON.stringify(self.issues, util.jsonStringifyReplacer, 2);\n });\n Object.defineProperty(proto, \"isEmpty\", {\n configurable: true,\n enumerable: false,\n get() {\n return this.issues.length === 0;\n },\n });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, undefined, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n"],"names":["_installedErrorProtos","_lazyMethod","proto","key","make","value","initializer","inst","issues","$ZodError","self","mapper","core.formatError","core.flattenError","issue","util.jsonStringifyReplacer","ZodRealError","core.$constructor"],"mappings":";;;AAMA,MAAMA,IAAwC,oBAAI,QAAQ,CAAC,OAAO,WAAW,MAAM,SAAS,CAAC;AAM7F,SAASC,EAAYC,GAAOC,GAAKC,GAAM;AACnC,SAAO,eAAeF,GAAOC,GAAK;AAAA,IAC9B,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,MAAM;AACF,YAAME,IAAQD,EAAK,IAAI;AACvB,oBAAO,eAAe,MAAMD,GAAK,EAAE,OAAAE,GAAO,cAAc,IAAM,UAAU,IAAM,GACvEA;AAAA,IACX;AAAA,IACA,IAAIA,GAAO;AACP,aAAO,eAAe,MAAMF,GAAK,EAAE,OAAAE,GAAO,cAAc,IAAM,UAAU,IAAM;AAAA,IAClF;AAAA,EACR,CAAK;AACL;AACA,MAAMC,IAAc,CAACC,GAAMC,MAAW;AAClC,EAAAC,EAAU,KAAKF,GAAMC,CAAM,GAC3BD,EAAK,OAAO;AACZ,QAAML,IAAQ,OAAO,eAAeK,CAAI;AACxC,EAAIP,EAAsB,IAAIE,CAAK,MAEnCF,EAAsB,IAAIE,CAAK,GAC/BD,EAAYC,GAAO,UAAU,CAACQ,MAAS,CAACC,MAAWC,EAAiBF,GAAMC,CAAM,CAAC,GACjFV,EAAYC,GAAO,WAAW,CAACQ,MAAS,CAACC,MAAWE,EAAkBH,GAAMC,CAAM,CAAC,GACnFV,EAAYC,GAAO,YAAY,CAACQ,MAAS,CAACI,MAAU;AAChD,IAAAJ,EAAK,OAAO,KAAKI,CAAK,GACtBJ,EAAK,UAAU,KAAK,UAAUA,EAAK,QAAQK,GAA4B,CAAC;AAAA,EAC5E,CAAC,GACDd,EAAYC,GAAO,aAAa,CAACQ,MAAS,CAACF,MAAW;AAClD,IAAAE,EAAK,OAAO,KAAK,GAAGF,CAAM,GAC1BE,EAAK,UAAU,KAAK,UAAUA,EAAK,QAAQK,GAA4B,CAAC;AAAA,EAC5E,CAAC,GACD,OAAO,eAAeb,GAAO,WAAW;AAAA,IACpC,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,MAAM;AACF,aAAO,KAAK,OAAO,WAAW;AAAA,IAClC;AAAA,EACR,CAAK;AACL,GAEac,IAA6BC,gBAAAA,EAAkB,YAAYX,GAAa,QAAW;AAAA,EAC5F,QAAQ;AACZ,CAAC;","x_google_ignoreList":[0]}
@@ -0,0 +1,21 @@
1
+ import { ZodRealError as e } from "./errors.js";
2
+ import { _safeDecodeAsync as s, _safeEncodeAsync as c, _safeDecode as o, _safeEncode as n, _decodeAsync as a, _encodeAsync as d, _decode as r, _encode as t, _safeParseAsync as f, _safeParse as y, _parseAsync as A, _parse as _ } from "../core/parse.js";
3
+ import { validate as q, validateAsync as u } from "../core/parse.js";
4
+ const E = /* @__PURE__ */ _(e), i = /* @__PURE__ */ A(e), D = /* @__PURE__ */ y(e), P = /* @__PURE__ */ f(e), l = /* @__PURE__ */ t(e), v = /* @__PURE__ */ r(e), x = /* @__PURE__ */ d(e), R = /* @__PURE__ */ a(e), Z = /* @__PURE__ */ n(e), b = /* @__PURE__ */ o(e), g = /* @__PURE__ */ c(e), h = /* @__PURE__ */ s(e);
5
+ export {
6
+ v as decode,
7
+ R as decodeAsync,
8
+ l as encode,
9
+ x as encodeAsync,
10
+ E as parse,
11
+ i as parseAsync,
12
+ b as safeDecode,
13
+ h as safeDecodeAsync,
14
+ Z as safeEncode,
15
+ g as safeEncodeAsync,
16
+ D as safeParse,
17
+ P as safeParseAsync,
18
+ q as validate,
19
+ u as validateAsync
20
+ };
21
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sources":["../../../../../../../node_modules/zod/v4/classic/parse.js"],"sourcesContent":["import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\nexport { validate, validateAsync } from \"../core/index.js\";\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n"],"names":["parse","core._parse","ZodRealError","parseAsync","core._parseAsync","safeParse","core._safeParse","safeParseAsync","core._safeParseAsync","encode","core._encode","decode","core._decode","encodeAsync","core._encodeAsync","decodeAsync","core._decodeAsync","safeEncode","core._safeEncode","safeDecode","core._safeDecode","safeEncodeAsync","core._safeEncodeAsync","safeDecodeAsync","core._safeDecodeAsync"],"mappings":";;;AAEY,MAACA,IAAwBC,gBAAAA,EAAYC,CAAY,GAChDC,IAA6BC,gBAAAA,EAAiBF,CAAY,GAC1DG,IAA4BC,gBAAAA,EAAgBJ,CAAY,GACxDK,IAAiCC,gBAAAA,EAAqBN,CAAY,GAGlEO,IAAyBC,gBAAAA,EAAaR,CAAY,GAClDS,IAAyBC,gBAAAA,EAAaV,CAAY,GAClDW,IAA8BC,gBAAAA,EAAkBZ,CAAY,GAC5Da,IAA8BC,gBAAAA,EAAkBd,CAAY,GAC5De,IAA6BC,gBAAAA,EAAiBhB,CAAY,GAC1DiB,IAA6BC,gBAAAA,EAAiBlB,CAAY,GAC1DmB,IAAkCC,gBAAAA,EAAsBpB,CAAY,GACpEqB,IAAkCC,gBAAAA,EAAsBtB,CAAY;","x_google_ignoreList":[0]}