@reforma/components 0.4.1 → 0.6.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 (126) hide show
  1. package/dist/RichInput/RichInput.d.ts +1 -1
  2. package/dist/RichInput/RichInput.d.ts.map +1 -1
  3. package/dist/RichInput/RichInput.js +126 -123
  4. package/dist/RichInput/RichInput.js.map +1 -1
  5. package/dist/SortableList/SortableList.d.ts +9 -3
  6. package/dist/SortableList/SortableList.d.ts.map +1 -1
  7. package/dist/SortableList/SortableList.js +178 -163
  8. package/dist/SortableList/SortableList.js.map +1 -1
  9. package/dist/chat/ComposerBanner/ComposerBanner.d.ts +6 -1
  10. package/dist/chat/ComposerBanner/ComposerBanner.d.ts.map +1 -1
  11. package/dist/chat/ComposerBanner/ComposerBanner.js +60 -40
  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 +13 -9
  15. package/dist/chat/ComposerBanner/ComposerBanner.module.css.js.map +1 -1
  16. package/dist/chat/Conversation/ConversationPendingLoader.d.ts.map +1 -1
  17. package/dist/chat/Conversation/ConversationPendingLoader.js +1 -1
  18. package/dist/chat/Conversation/ConversationPendingLoader.js.map +1 -1
  19. package/dist/chat/Message/normalize/normalizeMessageParts.d.ts +1 -1
  20. package/dist/chat/Message/normalize/normalizeMessageParts.d.ts.map +1 -1
  21. package/dist/chat/Message/normalize/normalizeMessageParts.js +1 -1
  22. package/dist/chat/Message/normalize/normalizeMessageParts.js.map +1 -1
  23. package/dist/chat/Message/parts/MessagePart.d.ts.map +1 -1
  24. package/dist/chat/Message/parts/MessagePart.js +1 -1
  25. package/dist/chat/Message/parts/MessagePart.js.map +1 -1
  26. package/dist/chat/Message/parts/backgroundResultPart.js +1 -1
  27. package/dist/chat/Message/parts/backgroundResultPart.js.map +1 -1
  28. package/dist/chat/Message/parts/collectMessageSources.d.ts +1 -1
  29. package/dist/chat/Message/parts/collectMessageSources.d.ts.map +1 -1
  30. package/dist/chat/Message/parts/collectMessageSources.js +1 -1
  31. package/dist/chat/Message/parts/collectMessageSources.js.map +1 -1
  32. package/dist/chat/Message/parts/contextCompactionPart.js +1 -1
  33. package/dist/chat/Message/parts/contextCompactionPart.js.map +1 -1
  34. package/dist/chat/Message/segments/analyzeGroupedSegment.js +5 -5
  35. package/dist/chat/Message/segments/analyzeGroupedSegment.js.map +1 -1
  36. package/dist/chat/Message/segments/recentStreamingPhaseToolGroups.js +1 -1
  37. package/dist/chat/Message/segments/recentStreamingPhaseToolGroups.js.map +1 -1
  38. package/dist/chat/Message/turn/workedCollapse.js +1 -1
  39. package/dist/chat/Message/turn/workedCollapse.js.map +1 -1
  40. package/dist/chat/Tool/Tool.js +1 -1
  41. package/dist/chat/Tool/Tool.js.map +1 -1
  42. package/dist/chat/Tool/agent/AgentTool.d.ts.map +1 -1
  43. package/dist/chat/Tool/agent/AgentTool.js +73 -73
  44. package/dist/chat/Tool/agent/AgentTool.js.map +1 -1
  45. package/dist/chat/Tool/bash/BashTool.d.ts.map +1 -1
  46. package/dist/chat/Tool/bash/BashTool.js +42 -48
  47. package/dist/chat/Tool/bash/BashTool.js.map +1 -1
  48. package/dist/chat/Tool/bash/BashTool.module.css +1 -1
  49. package/dist/chat/Tool/bash/BashTool.module.css.js +6 -8
  50. package/dist/chat/Tool/bash/BashTool.module.css.js.map +1 -1
  51. package/dist/chat/Tool/create-directory/CreateDirectoryTool.js +1 -1
  52. package/dist/chat/Tool/create-directory/CreateDirectoryTool.js.map +1 -1
  53. package/dist/chat/Tool/default/Default.d.ts.map +1 -1
  54. package/dist/chat/Tool/default/Default.js +1 -1
  55. package/dist/chat/Tool/default/Default.js.map +1 -1
  56. package/dist/chat/Tool/dev-server/DevServerRestartTool.js +1 -1
  57. package/dist/chat/Tool/dev-server/DevServerRestartTool.js.map +1 -1
  58. package/dist/chat/Tool/dev-server/DevServerStatusTool.js +1 -1
  59. package/dist/chat/Tool/dev-server/DevServerStatusTool.js.map +1 -1
  60. package/dist/chat/Tool/edit/EditTool.js +1 -1
  61. package/dist/chat/Tool/edit/EditTool.js.map +1 -1
  62. package/dist/chat/Tool/fetch/FetchTool.js +1 -1
  63. package/dist/chat/Tool/fetch/FetchTool.js.map +1 -1
  64. package/dist/chat/Tool/fileChangesFromToolParts.js +1 -1
  65. package/dist/chat/Tool/fileChangesFromToolParts.js.map +1 -1
  66. package/dist/chat/Tool/get-background-result/GetBackgroundResultTool.js +1 -1
  67. package/dist/chat/Tool/get-background-result/GetBackgroundResultTool.js.map +1 -1
  68. package/dist/chat/Tool/get-errors/GetErrorsTool.js +1 -1
  69. package/dist/chat/Tool/get-errors/GetErrorsTool.js.map +1 -1
  70. package/dist/chat/Tool/glob/GlobTool.js +1 -1
  71. package/dist/chat/Tool/glob/GlobTool.js.map +1 -1
  72. package/dist/chat/Tool/grep/GrepTool.js +1 -1
  73. package/dist/chat/Tool/grep/GrepTool.js.map +1 -1
  74. package/dist/chat/Tool/helpers.d.ts +1 -1
  75. package/dist/chat/Tool/helpers.d.ts.map +1 -1
  76. package/dist/chat/Tool/helpers.js +1 -1
  77. package/dist/chat/Tool/helpers.js.map +1 -1
  78. package/dist/chat/Tool/image-asset/ImageAssetTool.js +1 -1
  79. package/dist/chat/Tool/image-asset/ImageAssetTool.js.map +1 -1
  80. package/dist/chat/Tool/install-dependencies/InstallDependenciesTool.js +1 -1
  81. package/dist/chat/Tool/install-dependencies/InstallDependenciesTool.js.map +1 -1
  82. package/dist/chat/Tool/install-plugin/InstallPlugin.js +1 -1
  83. package/dist/chat/Tool/install-plugin/InstallPlugin.js.map +1 -1
  84. package/dist/chat/Tool/integration-card/IntegrationActionCard.d.ts +3 -1
  85. package/dist/chat/Tool/integration-card/IntegrationActionCard.d.ts.map +1 -1
  86. package/dist/chat/Tool/integration-card/IntegrationActionCard.js +88 -82
  87. package/dist/chat/Tool/integration-card/IntegrationActionCard.js.map +1 -1
  88. package/dist/chat/Tool/list-directory/normalizeListDirectoryTools.js +1 -1
  89. package/dist/chat/Tool/list-directory/normalizeListDirectoryTools.js.map +1 -1
  90. package/dist/chat/Tool/mcp-tools/CallDynamicTool.js +1 -1
  91. package/dist/chat/Tool/mcp-tools/CallDynamicTool.js.map +1 -1
  92. package/dist/chat/Tool/mcp-tools/GetDynamicToolsTool.js +1 -1
  93. package/dist/chat/Tool/mcp-tools/GetDynamicToolsTool.js.map +1 -1
  94. package/dist/chat/Tool/mcp-tools/GetMcpResourcesTool.js +1 -1
  95. package/dist/chat/Tool/mcp-tools/GetMcpResourcesTool.js.map +1 -1
  96. package/dist/chat/Tool/mcp-tools/McpAuth.js +1 -1
  97. package/dist/chat/Tool/mcp-tools/McpAuth.js.map +1 -1
  98. package/dist/chat/Tool/memory/MemoryTool.js +1 -1
  99. package/dist/chat/Tool/memory/MemoryTool.js.map +1 -1
  100. package/dist/chat/Tool/move-file/MoveFileTool.js +1 -1
  101. package/dist/chat/Tool/move-file/MoveFileTool.js.map +1 -1
  102. package/dist/chat/Tool/plan/CreatePlanTool.js +1 -1
  103. package/dist/chat/Tool/plan/CreatePlanTool.js.map +1 -1
  104. package/dist/chat/Tool/preamble/PreambleTool.js +1 -1
  105. package/dist/chat/Tool/preamble/PreambleTool.js.map +1 -1
  106. package/dist/chat/Tool/project-build/BuildTool.js +1 -1
  107. package/dist/chat/Tool/project-build/BuildTool.js.map +1 -1
  108. package/dist/chat/Tool/project-env/ProjectEnvTool.js +1 -1
  109. package/dist/chat/Tool/project-env/ProjectEnvTool.js.map +1 -1
  110. package/dist/chat/Tool/read/normalizeReadTools.js +1 -1
  111. package/dist/chat/Tool/read/normalizeReadTools.js.map +1 -1
  112. package/dist/chat/Tool/read-lints/ReadLintsTool.js +1 -1
  113. package/dist/chat/Tool/read-lints/ReadLintsTool.js.map +1 -1
  114. package/dist/chat/Tool/remove-file/RemoveFileTool.js +1 -1
  115. package/dist/chat/Tool/remove-file/RemoveFileTool.js.map +1 -1
  116. package/dist/chat/Tool/scaffold-project/ScaffoldProjectTool.js +1 -1
  117. package/dist/chat/Tool/scaffold-project/ScaffoldProjectTool.js.map +1 -1
  118. package/dist/chat/Tool/screenshot/CaptureScreenshotTool.js +3 -3
  119. package/dist/chat/Tool/screenshot/CaptureScreenshotTool.js.map +1 -1
  120. package/dist/chat/Tool/skill/SkillTool.js +1 -1
  121. package/dist/chat/Tool/skill/SkillTool.js.map +1 -1
  122. package/dist/chat/Tool/waiting/WaitingTool.js +1 -1
  123. package/dist/chat/Tool/waiting/WaitingTool.js.map +1 -1
  124. package/dist/chat/Tool/web-search/WebSearchTool.js +1 -1
  125. package/dist/chat/Tool/web-search/WebSearchTool.js.map +1 -1
  126. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"CaptureScreenshotTool.js","sources":["../../../../src/chat/Tool/screenshot/CaptureScreenshotTool.tsx"],"sourcesContent":["import { isScreenshotTool } from '@reforma/types/sandbox';\nimport { getToolName } from 'ai';\n\nimport { Box } from '../../../Box';\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport { getToolFailureRowState, isToolInvocationInProgress } from '../helpers';\nimport {\n ImageAssetCardTitle,\n ImageAssetThumbFan,\n type ImageAssetFanSlot,\n} from '../image-asset';\nimport styles from '../image-asset/ImageAssetTool.module.css';\nimport { ToolShellCard } from '../shell';\nimport { useToolProgress } from '../shell/toolProgress';\nimport shellStyles from '../shell/ToolShellCard.module.css';\nimport {\n screenshotAttachmentLabel,\n screenshotPageAddress,\n} from './parseCaptureScreenshotTool';\n\nimport type { AttachmentData, CaptureScreenshotOutput } from '@reforma/types';\nimport type { ToolRendererProps } from '../types';\n\nconst PROGRESS = 'Capturing screenshot';\nconst IDLE = 'Captured';\nconst FAILED = 'Couldn\\'t capture the screenshot';\n\nfunction screenshotSrc(attachment: AttachmentData): string | undefined {\n const src = attachment.preview?.trim() || attachment.url?.trim();\n\n return src || undefined;\n}\n\nfunction captureScreenshotErrorFromOutput(output: unknown): string | undefined {\n if (typeof output !== 'object' || output === null || !('ok' in output) || output.ok !== false) {\n return undefined;\n }\n\n const error = (output as { error?: unknown }).error;\n\n return typeof error === 'string' ? (error.trim() || undefined) : undefined;\n}\n\n/** PageScreenshot: same thumb card as ImageGen, with the page address as the caption. */\nexport function CaptureScreenshotTool({ part }: ToolRendererProps) {\n const { live, stalled } = useToolProgress(part.state);\n\n if (!isScreenshotTool(getToolName(part))) {\n return null;\n }\n\n const state = part.state;\n const failure = getToolFailureRowState(part);\n const done = state === 'output-available';\n const output = part.output as CaptureScreenshotOutput | undefined;\n const success = (done && output?.ok === true) ? output : undefined;\n const outputError = done ? captureScreenshotErrorFromOutput(part.output) : undefined;\n const error = outputError ?? failure.tooltip;\n const address = screenshotPageAddress(part.input);\n const inProgress = isToolInvocationInProgress(state);\n const shots = success?.attachments ?? [];\n const failedEmpty = !inProgress && shots.length === 0;\n const slots: ImageAssetFanSlot[] = failedEmpty\n ? [{ key: 'failed', alt: FAILED }]\n : shots.length > 0\n ? shots.map((attachment, index) => {\n const src = screenshotSrc(attachment);\n\n return {\n key: src || attachment.id || `shot-${ index }`,\n src,\n alt: screenshotAttachmentLabel(attachment),\n };\n })\n : [{ key: 'pending', alt: PROGRESS }];\n\n return (\n <ToolShellCard\n aria-busy={ live }\n className={ shellStyles.tool }\n collapsible={ false }\n data-slot=\"capture-screenshot-tool\"\n >\n <Box direction=\"row\" fullWidth gap=\"md\" padding=\"md\">\n <ImageAssetThumbFan\n badge={ live ? 'loader' : failedEmpty ? 'error' : undefined }\n slots={ slots }\n />\n <Box gap=\"xxs\" grow>\n <ImageAssetCardTitle\n failed={ !failedEmpty && Boolean(error) }\n idle={ failedEmpty ? FAILED : IDLE }\n live={ live }\n progress={ PROGRESS }\n stalled={ stalled }\n statusDetail={ error }\n />\n <Show when={ address }>\n <Text className={ styles.caption } color=\"secondary\" variant=\"sm\">\n { address }\n </Text>\n </Show>\n </Box>\n </Box>\n </ToolShellCard>\n );\n}\n"],"names":["PROGRESS","IDLE","FAILED","screenshotSrc","attachment","captureScreenshotErrorFromOutput","output","error","CaptureScreenshotTool","part","live","stalled","useToolProgress","isScreenshotTool","getToolName","state","failure","getToolFailureRowState","done","success","address","screenshotPageAddress","inProgress","isToolInvocationInProgress","shots","failedEmpty","slots","index","src","screenshotAttachmentLabel","ToolShellCard","shellStyles","Box","_jsx","ImageAssetThumbFan","_jsxs","ImageAssetCardTitle","Show","Text","styles"],"mappings":";;;;;;;;;;;;;AAaA,MAAMA,IAAW,wBACXC,IAAO,YACPC,IAAS;AACf,SAASC,EAAcC,GAAY;AAEjC,SADYA,EAAW,SAAS,UAAUA,EAAW,KAAK,KAAA,KAC5C;AAChB;AACA,SAASC,EAAiCC,GAAQ;AAChD,MAAI,OAAOA,KAAW,YAAYA,MAAW,QAAQ,EAAE,QAAQA,MAAWA,EAAO,OAAO;AACtF;AAEF,QAAMC,IAAQD,EAAO;AACrB,SAAO,OAAOC,KAAU,YAAWA,EAAM,KAAA,KAAU;AACrD;AAGO,SAASC,EAAsB;AAAA,EACpC,MAAAC;AACF,GAAG;AACD,QAAM;AAAA,IACJ,MAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEC,EAAgBH,EAAK,KAAK;AAC9B,MAAI,CAACI,EAAiBC,EAAYL,CAAI,CAAC;AACrC,WAAO;AAET,QAAMM,IAAQN,EAAK,OACbO,IAAUC,EAAuBR,CAAI,GACrCS,IAAOH,MAAU,oBACjBT,IAASG,EAAK,QACdU,IAAUD,KAAQZ,GAAQ,OAAO,KAAOA,IAAS,QAEjDC,KADcW,IAAOb,EAAiCI,EAAK,MAAM,IAAI,WAC9CO,EAAQ,SAC/BI,IAAUC,EAAsBZ,EAAK,KAAK,GAC1Ca,IAAaC,EAA2BR,CAAK,GAC7CS,IAAQL,GAAS,eAAe,CAAA,GAChCM,IAAc,CAACH,KAAcE,EAAM,WAAW,GAC9CE,IAAQD,IAAc,CAAC;AAAA,IAC3B,KAAK;AAAA,IACL,KAAKvB;AAAA,EAAA,CACN,IAAIsB,EAAM,SAAS,IAAIA,EAAM,IAAI,CAACpB,GAAYuB,MAAU;AACvD,UAAMC,IAAMzB,EAAcC,CAAU;AACpC,WAAO;AAAA,MACL,KAAKwB,KAAOxB,EAAW,MAAM,QAAQuB,CAAK;AAAA,MAC1C,KAAAC;AAAA,MACA,KAAKC,EAA0BzB,CAAU;AAAA,IAAA;AAAA,EAE7C,CAAC,IAAI,CAAC;AAAA,IACJ,KAAK;AAAA,IACL,KAAKJ;AAAA,EAAA,CACN;AACD,2BAAyB8B,GAAe;AAAA,IACtC,aAAapB;AAAA,IACb,WAAWqB,EAAY;AAAA,IACvB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,4BAA6BC,GAAK;AAAA,MAChC,WAAW;AAAA,MACX,WAAW;AAAA,MACX,KAAK;AAAA,MACL,SAAS;AAAA,MACT,UAAU,CAAcC,gBAAAA,EAAKC,GAAoB;AAAA,QAC/C,OAAOxB,IAAO,WAAWe,IAAc,UAAU;AAAA,QACjD,OAAAC;AAAA,MAAA,CACD,GAAgBS,gBAAAA,EAAMH,GAAK;AAAA,QAC1B,KAAK;AAAA,QACL,MAAM;AAAA,QACN,UAAU,CAAcC,gBAAAA,EAAKG,GAAqB;AAAA,UAChD,QAAQ,CAACX,KAAe,EAAQlB;AAAA,UAChC,MAAMkB,IAAcvB,IAASD;AAAA,UAC7B,MAAAS;AAAA,UACA,UAAUV;AAAA,UACV,SAAAW;AAAA,UACA,cAAcJ;AAAA,QAAA,CACf,GAAgB0B,gBAAAA,EAAKI,GAAM;AAAA,UAC1B,MAAMjB;AAAA,UACN,4BAA4BkB,GAAM;AAAA,YAChC,WAAWC,EAAO;AAAA,YAClB,OAAO;AAAA,YACP,SAAS;AAAA,YACT,UAAUnB;AAAA,UAAA,CACX;AAAA,QAAA,CACF,CAAC;AAAA,MAAA,CACH,CAAC;AAAA,IAAA,CACH;AAAA,EAAA,CACF;AACH;"}
1
+ {"version":3,"file":"CaptureScreenshotTool.js","sources":["../../../../src/chat/Tool/screenshot/CaptureScreenshotTool.tsx"],"sourcesContent":["import { getToolName } from '@reforma/types';\nimport { isScreenshotTool } from '@reforma/types/sandbox';\n\nimport { Box } from '../../../Box';\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport { getToolFailureRowState, isToolInvocationInProgress } from '../helpers';\nimport {\n ImageAssetCardTitle,\n ImageAssetThumbFan,\n type ImageAssetFanSlot,\n} from '../image-asset';\nimport styles from '../image-asset/ImageAssetTool.module.css';\nimport { ToolShellCard } from '../shell';\nimport { useToolProgress } from '../shell/toolProgress';\nimport shellStyles from '../shell/ToolShellCard.module.css';\nimport {\n screenshotAttachmentLabel,\n screenshotPageAddress,\n} from './parseCaptureScreenshotTool';\n\nimport type { AttachmentData, CaptureScreenshotOutput } from '@reforma/types';\nimport type { ToolRendererProps } from '../types';\n\nconst PROGRESS = 'Capturing screenshot';\nconst IDLE = 'Captured';\nconst FAILED = 'Couldn\\'t capture the screenshot';\n\nfunction screenshotSrc(attachment: AttachmentData): string | undefined {\n const src = attachment.preview?.trim() || attachment.url?.trim();\n\n return src || undefined;\n}\n\nfunction captureScreenshotErrorFromOutput(output: unknown): string | undefined {\n if (typeof output !== 'object' || output === null || !('ok' in output) || output.ok !== false) {\n return undefined;\n }\n\n const error = (output as { error?: unknown }).error;\n\n return typeof error === 'string' ? (error.trim() || undefined) : undefined;\n}\n\n/** PageScreenshot: same thumb card as ImageGen, with the page address as the caption. */\nexport function CaptureScreenshotTool({ part }: ToolRendererProps) {\n const { live, stalled } = useToolProgress(part.state);\n\n if (!isScreenshotTool(getToolName(part))) {\n return null;\n }\n\n const state = part.state;\n const failure = getToolFailureRowState(part);\n const done = state === 'output-available';\n const output = part.output as CaptureScreenshotOutput | undefined;\n const success = (done && output?.ok === true) ? output : undefined;\n const outputError = done ? captureScreenshotErrorFromOutput(part.output) : undefined;\n const error = outputError ?? failure.tooltip;\n const address = screenshotPageAddress(part.input);\n const inProgress = isToolInvocationInProgress(state);\n const shots = success?.attachments ?? [];\n const failedEmpty = !inProgress && shots.length === 0;\n const slots: ImageAssetFanSlot[] = failedEmpty\n ? [{ key: 'failed', alt: FAILED }]\n : shots.length > 0\n ? shots.map((attachment, index) => {\n const src = screenshotSrc(attachment);\n\n return {\n key: src || attachment.id || `shot-${ index }`,\n src,\n alt: screenshotAttachmentLabel(attachment),\n };\n })\n : [{ key: 'pending', alt: PROGRESS }];\n\n return (\n <ToolShellCard\n aria-busy={ live }\n className={ shellStyles.tool }\n collapsible={ false }\n data-slot=\"capture-screenshot-tool\"\n >\n <Box direction=\"row\" fullWidth gap=\"md\" padding=\"md\">\n <ImageAssetThumbFan\n badge={ live ? 'loader' : failedEmpty ? 'error' : undefined }\n slots={ slots }\n />\n <Box gap=\"xxs\" grow>\n <ImageAssetCardTitle\n failed={ !failedEmpty && Boolean(error) }\n idle={ failedEmpty ? FAILED : IDLE }\n live={ live }\n progress={ PROGRESS }\n stalled={ stalled }\n statusDetail={ error }\n />\n <Show when={ address }>\n <Text className={ styles.caption } color=\"secondary\" variant=\"sm\">\n { address }\n </Text>\n </Show>\n </Box>\n </Box>\n </ToolShellCard>\n );\n}\n"],"names":["PROGRESS","IDLE","FAILED","screenshotSrc","attachment","captureScreenshotErrorFromOutput","output","error","CaptureScreenshotTool","part","live","stalled","useToolProgress","isScreenshotTool","getToolName","state","failure","getToolFailureRowState","done","success","address","screenshotPageAddress","inProgress","isToolInvocationInProgress","shots","failedEmpty","slots","index","src","screenshotAttachmentLabel","ToolShellCard","shellStyles","Box","_jsx","ImageAssetThumbFan","_jsxs","ImageAssetCardTitle","Show","Text","styles"],"mappings":";;;;;;;;;;;;;AAaA,MAAMA,IAAW,wBACXC,IAAO,YACPC,IAAS;AACf,SAASC,EAAcC,GAAY;AAEjC,SADYA,EAAW,SAAS,UAAUA,EAAW,KAAK,KAAA,KAC5C;AAChB;AACA,SAASC,EAAiCC,GAAQ;AAChD,MAAI,OAAOA,KAAW,YAAYA,MAAW,QAAQ,EAAE,QAAQA,MAAWA,EAAO,OAAO;AACtF;AAEF,QAAMC,IAAQD,EAAO;AACrB,SAAO,OAAOC,KAAU,YAAWA,EAAM,KAAA,KAAU;AACrD;AAGO,SAASC,EAAsB;AAAA,EACpC,MAAAC;AACF,GAAG;AACD,QAAM;AAAA,IACJ,MAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEC,EAAgBH,EAAK,KAAK;AAC9B,MAAI,CAACI,EAAiBC,EAAYL,CAAI,CAAC;AACrC,WAAO;AAET,QAAMM,IAAQN,EAAK,OACbO,IAAUC,EAAuBR,CAAI,GACrCS,IAAOH,MAAU,oBACjBT,IAASG,EAAK,QACdU,IAAUD,KAAQZ,GAAQ,OAAO,KAAOA,IAAS,QAEjDC,KADcW,IAAOb,EAAiCI,EAAK,MAAM,IAAI,WAC9CO,EAAQ,SAC/BI,IAAUC,EAAsBZ,EAAK,KAAK,GAC1Ca,IAAaC,EAA2BR,CAAK,GAC7CS,IAAQL,GAAS,eAAe,CAAA,GAChCM,IAAc,CAACH,KAAcE,EAAM,WAAW,GAC9CE,IAAQD,IAAc,CAAC;AAAA,IAC3B,KAAK;AAAA,IACL,KAAKvB;AAAA,EAAA,CACN,IAAIsB,EAAM,SAAS,IAAIA,EAAM,IAAI,CAACpB,GAAYuB,MAAU;AACvD,UAAMC,IAAMzB,EAAcC,CAAU;AACpC,WAAO;AAAA,MACL,KAAKwB,KAAOxB,EAAW,MAAM,QAAQuB,CAAK;AAAA,MAC1C,KAAAC;AAAA,MACA,KAAKC,EAA0BzB,CAAU;AAAA,IAAA;AAAA,EAE7C,CAAC,IAAI,CAAC;AAAA,IACJ,KAAK;AAAA,IACL,KAAKJ;AAAA,EAAA,CACN;AACD,2BAAyB8B,GAAe;AAAA,IACtC,aAAapB;AAAA,IACb,WAAWqB,EAAY;AAAA,IACvB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,4BAA6BC,GAAK;AAAA,MAChC,WAAW;AAAA,MACX,WAAW;AAAA,MACX,KAAK;AAAA,MACL,SAAS;AAAA,MACT,UAAU,CAAcC,gBAAAA,EAAKC,GAAoB;AAAA,QAC/C,OAAOxB,IAAO,WAAWe,IAAc,UAAU;AAAA,QACjD,OAAAC;AAAA,MAAA,CACD,GAAgBS,gBAAAA,EAAMH,GAAK;AAAA,QAC1B,KAAK;AAAA,QACL,MAAM;AAAA,QACN,UAAU,CAAcC,gBAAAA,EAAKG,GAAqB;AAAA,UAChD,QAAQ,CAACX,KAAe,EAAQlB;AAAA,UAChC,MAAMkB,IAAcvB,IAASD;AAAA,UAC7B,MAAAS;AAAA,UACA,UAAUV;AAAA,UACV,SAAAW;AAAA,UACA,cAAcJ;AAAA,QAAA,CACf,GAAgB0B,gBAAAA,EAAKI,GAAM;AAAA,UAC1B,MAAMjB;AAAA,UACN,4BAA4BkB,GAAM;AAAA,YAChC,WAAWC,EAAO;AAAA,YAClB,OAAO;AAAA,YACP,SAAS;AAAA,YACT,UAAUnB;AAAA,UAAA,CACX;AAAA,QAAA,CACF,CAAC;AAAA,MAAA,CACH,CAAC;AAAA,IAAA,CACH;AAAA,EAAA,CACF;AACH;"}
@@ -1,5 +1,5 @@
1
1
  import { Book as a } from "@reforma/icons/14";
2
- import { isToolUIPart as m, getToolName as s } from "ai";
2
+ import { isToolUIPart as m, getToolName as s } from "@reforma/types";
3
3
  import { Show as d } from "../../../Show/Show.js";
4
4
  import { Text as u } from "../../../Text/Text.js";
5
5
  import { getToolFailureRowState as c } from "../helpers.js";
@@ -1 +1 @@
1
- {"version":3,"file":"SkillTool.js","sources":["../../../../src/chat/Tool/skill/SkillTool.tsx"],"sourcesContent":["import { Book } from '@reforma/icons/14';\nimport { getToolName, isToolUIPart } from 'ai';\n\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\n// import { MessageText } from '../../Message/streamdown/MessageText';\nimport { getToolFailureRowState } from '../helpers';\nimport {\n // ToolHoverCard,\n ToolShell,\n ToolShellFooter,\n ToolShellHeader,\n ToolSummaryBadges,\n} from '../shell';\nimport { skillErrorFromOutput, skillNameFromInput } from './parseSkillTool';\n// import { skillContentFromOutput } from './parseSkillTool';\n// import styles from './SkillTool.module.css';\n\nimport type { ToolRendererProps } from '../types';\n\n/** Skill: badge with skill name. */\nexport function SkillTool({ part }: ToolRendererProps) {\n if (!isToolUIPart(part) || getToolName(part) !== 'Skill') {\n return null;\n }\n\n const state = part.state;\n const failure = getToolFailureRowState(part);\n const name = skillNameFromInput(part.input);\n const done = state === 'output-available';\n const logicalError = done ? skillErrorFromOutput(part.output) : undefined;\n\n // Skill playbook preview (hover card) — hidden from users for now.\n // const content = done ? skillContentFromOutput(part.output) : undefined;\n // const showPreview = done && content != null && logicalError == null;\n\n const nameBadges = (\n <ToolSummaryBadges labels={ name ? [name] : [] } aria-label=\"Skill\" />\n );\n\n return (\n <ToolShell data-slot=\"skill-tool\">\n <ToolShellHeader\n state={ state }\n statusDetail={ failure.tooltip }\n title=\"Loaded skill\"\n titleInProgress=\"Loading skill\"\n icon={ <Book aria-hidden /> }\n >\n {/* <Show when={ showPreview }>\n <ToolHoverCard trigger={ nameBadges } scrollableClassName={ styles.scrollable }>\n <div className={ styles.preview }>\n <MessageText mode=\"static\">{content}</MessageText>\n </div>\n </ToolHoverCard>\n </Show>\n\n <Show when={ !showPreview }>\n {nameBadges}\n </Show> */}\n\n {nameBadges}\n </ToolShellHeader>\n\n <Show when={ logicalError ?? failure.problemText }>\n <ToolShellFooter>\n <Text color=\"danger\" variant=\"xs\">{logicalError ?? failure.problemText}</Text>\n </ToolShellFooter>\n </Show>\n </ToolShell>\n );\n}\n"],"names":["SkillTool","part","isToolUIPart","getToolName","state","failure","getToolFailureRowState","name","skillNameFromInput","logicalError","skillErrorFromOutput","nameBadges","ToolSummaryBadges","ToolShell","_jsx","ToolShellHeader","Book","Show","ToolShellFooter","Text"],"mappings":";;;;;;;;;AAcO,SAASA,EAAU;AAAA,EACxB,MAAAC;AACF,GAAG;AACD,MAAI,CAACC,EAAaD,CAAI,KAAKE,EAAYF,CAAI,MAAM;AAC/C,WAAO;AAET,QAAMG,IAAQH,EAAK,OACbI,IAAUC,EAAuBL,CAAI,GACrCM,IAAOC,EAAmBP,EAAK,KAAK,GAEpCQ,IADOL,MAAU,qBACKM,EAAqBT,EAAK,MAAM,IAAI,QAM1DU,sBAA+BC,GAAmB;AAAA,IACtD,QAAQL,IAAO,CAACA,CAAI,IAAI,CAAA;AAAA,IACxB,cAAc;AAAA,EAAA,CACf;AACD,2BAA0BM,GAAW;AAAA,IACnC,aAAa;AAAA,IACb,UAAU,CAAcC,gBAAAA,EAAKC,GAAiB;AAAA,MAC5C,OAAAX;AAAA,MACA,cAAcC,EAAQ;AAAA,MACtB,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,wBAAwBW,GAAM;AAAA,QAC5B,eAAe;AAAA,MAAA,CAChB;AAAA,MACD,UAAUL;AAAA,IAAA,CACX,GAAgBG,gBAAAA,EAAKG,GAAM;AAAA,MAC1B,MAAMR,KAAgBJ,EAAQ;AAAA,MAC9B,4BAA4Ba,GAAiB;AAAA,QAC3C,4BAA4BC,GAAM;AAAA,UAChC,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAUV,KAAgBJ,EAAQ;AAAA,QAAA,CACnC;AAAA,MAAA,CACF;AAAA,IAAA,CACF,CAAC;AAAA,EAAA,CACH;AACH;"}
1
+ {"version":3,"file":"SkillTool.js","sources":["../../../../src/chat/Tool/skill/SkillTool.tsx"],"sourcesContent":["import { Book } from '@reforma/icons/14';\nimport { getToolName, isToolUIPart } from '@reforma/types';\n\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\n// import { MessageText } from '../../Message/streamdown/MessageText';\nimport { getToolFailureRowState } from '../helpers';\nimport {\n // ToolHoverCard,\n ToolShell,\n ToolShellFooter,\n ToolShellHeader,\n ToolSummaryBadges,\n} from '../shell';\nimport { skillErrorFromOutput, skillNameFromInput } from './parseSkillTool';\n// import { skillContentFromOutput } from './parseSkillTool';\n// import styles from './SkillTool.module.css';\n\nimport type { ToolRendererProps } from '../types';\n\n/** Skill: badge with skill name. */\nexport function SkillTool({ part }: ToolRendererProps) {\n if (!isToolUIPart(part) || getToolName(part) !== 'Skill') {\n return null;\n }\n\n const state = part.state;\n const failure = getToolFailureRowState(part);\n const name = skillNameFromInput(part.input);\n const done = state === 'output-available';\n const logicalError = done ? skillErrorFromOutput(part.output) : undefined;\n\n // Skill playbook preview (hover card) — hidden from users for now.\n // const content = done ? skillContentFromOutput(part.output) : undefined;\n // const showPreview = done && content != null && logicalError == null;\n\n const nameBadges = (\n <ToolSummaryBadges labels={ name ? [name] : [] } aria-label=\"Skill\" />\n );\n\n return (\n <ToolShell data-slot=\"skill-tool\">\n <ToolShellHeader\n state={ state }\n statusDetail={ failure.tooltip }\n title=\"Loaded skill\"\n titleInProgress=\"Loading skill\"\n icon={ <Book aria-hidden /> }\n >\n {/* <Show when={ showPreview }>\n <ToolHoverCard trigger={ nameBadges } scrollableClassName={ styles.scrollable }>\n <div className={ styles.preview }>\n <MessageText mode=\"static\">{content}</MessageText>\n </div>\n </ToolHoverCard>\n </Show>\n\n <Show when={ !showPreview }>\n {nameBadges}\n </Show> */}\n\n {nameBadges}\n </ToolShellHeader>\n\n <Show when={ logicalError ?? failure.problemText }>\n <ToolShellFooter>\n <Text color=\"danger\" variant=\"xs\">{logicalError ?? failure.problemText}</Text>\n </ToolShellFooter>\n </Show>\n </ToolShell>\n );\n}\n"],"names":["SkillTool","part","isToolUIPart","getToolName","state","failure","getToolFailureRowState","name","skillNameFromInput","logicalError","skillErrorFromOutput","nameBadges","ToolSummaryBadges","ToolShell","_jsx","ToolShellHeader","Book","Show","ToolShellFooter","Text"],"mappings":";;;;;;;;;AAcO,SAASA,EAAU;AAAA,EACxB,MAAAC;AACF,GAAG;AACD,MAAI,CAACC,EAAaD,CAAI,KAAKE,EAAYF,CAAI,MAAM;AAC/C,WAAO;AAET,QAAMG,IAAQH,EAAK,OACbI,IAAUC,EAAuBL,CAAI,GACrCM,IAAOC,EAAmBP,EAAK,KAAK,GAEpCQ,IADOL,MAAU,qBACKM,EAAqBT,EAAK,MAAM,IAAI,QAM1DU,sBAA+BC,GAAmB;AAAA,IACtD,QAAQL,IAAO,CAACA,CAAI,IAAI,CAAA;AAAA,IACxB,cAAc;AAAA,EAAA,CACf;AACD,2BAA0BM,GAAW;AAAA,IACnC,aAAa;AAAA,IACb,UAAU,CAAcC,gBAAAA,EAAKC,GAAiB;AAAA,MAC5C,OAAAX;AAAA,MACA,cAAcC,EAAQ;AAAA,MACtB,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,wBAAwBW,GAAM;AAAA,QAC5B,eAAe;AAAA,MAAA,CAChB;AAAA,MACD,UAAUL;AAAA,IAAA,CACX,GAAgBG,gBAAAA,EAAKG,GAAM;AAAA,MAC1B,MAAMR,KAAgBJ,EAAQ;AAAA,MAC9B,4BAA4Ba,GAAiB;AAAA,QAC3C,4BAA4BC,GAAM;AAAA,UAChC,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAUV,KAAgBJ,EAAQ;AAAA,QAAA,CACnC;AAAA,MAAA,CACF;AAAA,IAAA,CACF,CAAC;AAAA,EAAA,CACH;AACH;"}
@@ -1,5 +1,5 @@
1
1
  import { Oclock as h } from "@reforma/icons/14";
2
- import { isToolUIPart as g, getToolName as p } from "ai";
2
+ import { isToolUIPart as g, getToolName as p } from "@reforma/types";
3
3
  import { observer as T } from "mobx-react-lite";
4
4
  import { useState as w, useEffect as v } from "react";
5
5
  import { Show as a } from "../../../Show/Show.js";
@@ -1 +1 @@
1
- {"version":3,"file":"WaitingTool.js","sources":["../../../../src/chat/Tool/waiting/WaitingTool.tsx"],"sourcesContent":["import { Oclock } from '@reforma/icons/14';\nimport { getToolName, isToolUIPart } from 'ai';\nimport { observer } from 'mobx-react-lite';\nimport { useEffect, useState } from 'react';\n\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport { useMessageTurn } from '../../Message/turn/messageTurnContext';\nimport { getToolFailureRowState, isToolInvocationInProgress } from '../helpers';\nimport { ToolShell, ToolShellFooter, ToolShellHeader } from '../shell';\n\nimport type { WaitingToolOutput } from '@reforma/types/sandbox';\nimport type { ToolRendererProps } from '../types';\n\nfunction waitingEndsAt(value: unknown): number | undefined {\n if (value == null || typeof value !== 'object') {\n return undefined;\n }\n\n const endsAt = (value as WaitingToolOutput).endsAt;\n\n if (typeof endsAt !== 'number' || !Number.isFinite(endsAt)) {\n return undefined;\n }\n\n return endsAt;\n}\n\n/** Waiting: clock icon + remaining seconds from the server `endsAt` unix ms. */\nexport const WaitingTool = observer(({ part }: ToolRendererProps) => {\n const turn = useMessageTurn();\n const [now, setNow] = useState(() => Date.now());\n const isWaiting = isToolUIPart(part) && getToolName(part) === 'Waiting';\n const live = isWaiting && isToolInvocationInProgress(part.state);\n const endsAt = isWaiting\n ? (waitingEndsAt(part.output) ?? waitingEndsAt(turn?.getToolMeta?.(part.toolCallId)?.patch))\n : undefined;\n\n useEffect(() => {\n if (!live) {\n return;\n }\n\n const id = setInterval(() => setNow(Date.now()), 250);\n\n return () => clearInterval(id);\n }, [live]);\n\n if (!isWaiting) {\n return null;\n }\n\n const failure = getToolFailureRowState(part);\n const remaining = (live && endsAt != null)\n ? Math.max(0, Math.ceil((endsAt - now) / 1000))\n : undefined;\n\n return (\n <ToolShell data-slot=\"waiting-tool\">\n <ToolShellHeader\n state={ part.state }\n statusDetail={ failure.tooltip }\n title=\"Waiting\"\n titleInProgress=\"Waiting\"\n icon={ <Oclock aria-hidden /> }\n >\n <Show when={ remaining != null }>\n <Text color=\"secondary\" whitespace=\"nowrap\">\n {`${ remaining }s`}\n </Text>\n </Show>\n </ToolShellHeader>\n\n <Show when={ failure.problemText }>\n <ToolShellFooter>\n <Text color=\"danger\" variant=\"xs\">{failure.problemText}</Text>\n </ToolShellFooter>\n </Show>\n </ToolShell>\n );\n});\n"],"names":["waitingEndsAt","value","endsAt","WaitingTool","observer","part","turn","useMessageTurn","now","setNow","useState","isWaiting","isToolUIPart","getToolName","live","isToolInvocationInProgress","useEffect","id","failure","getToolFailureRowState","remaining","ToolShell","_jsx","ToolShellHeader","Oclock","Show","Text","ToolShellFooter"],"mappings":";;;;;;;;;;AAUA,SAASA,EAAcC,GAAO;AAC5B,MAAIA,KAAS,QAAQ,OAAOA,KAAU;AACpC;AAEF,QAAMC,IAASD,EAAM;AACrB,MAAI,SAAOC,KAAW,YAAY,CAAC,OAAO,SAASA,CAAM;AAGzD,WAAOA;AACT;AAGO,MAAMC,IAAcC,EAAS,CAAC;AAAA,EACnC,MAAAC;AACF,MAAM;AACJ,QAAMC,IAAOC,EAAA,GACP,CAACC,GAAKC,CAAM,IAAIC,EAAS,MAAM,KAAK,KAAK,GACzCC,IAAYC,EAAaP,CAAI,KAAKQ,EAAYR,CAAI,MAAM,WACxDS,IAAOH,KAAaI,EAA2BV,EAAK,KAAK,GACzDH,IAASS,IAAYX,EAAcK,EAAK,MAAM,KAAKL,EAAcM,GAAM,cAAcD,EAAK,UAAU,GAAG,KAAK,IAAI;AAQtH,MAPAW,EAAU,MAAM;AACd,QAAI,CAACF;AACH;AAEF,UAAMG,IAAK,YAAY,MAAMR,EAAO,KAAK,IAAA,CAAK,GAAG,GAAG;AACpD,WAAO,MAAM,cAAcQ,CAAE;AAAA,EAC/B,GAAG,CAACH,CAAI,CAAC,GACL,CAACH;AACH,WAAO;AAET,QAAMO,IAAUC,EAAuBd,CAAI,GACrCe,IAAYN,KAAQZ,KAAU,OAAO,KAAK,IAAI,GAAG,KAAK,MAAMA,IAASM,KAAO,GAAI,CAAC,IAAI;AAC3F,2BAA0Ba,GAAW;AAAA,IACnC,aAAa;AAAA,IACb,UAAU,CAAcC,gBAAAA,EAAKC,GAAiB;AAAA,MAC5C,OAAOlB,EAAK;AAAA,MACZ,cAAca,EAAQ;AAAA,MACtB,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,wBAAwBM,GAAQ;AAAA,QAC9B,eAAe;AAAA,MAAA,CAChB;AAAA,MACD,4BAA4BC,GAAM;AAAA,QAChC,MAAML,KAAa;AAAA,QACnB,4BAA4BM,GAAM;AAAA,UAChC,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,UAAU,GAAGN,CAAS;AAAA,QAAA,CACvB;AAAA,MAAA,CACF;AAAA,IAAA,CACF,GAAgBE,gBAAAA,EAAKG,GAAM;AAAA,MAC1B,MAAMP,EAAQ;AAAA,MACd,4BAA4BS,GAAiB;AAAA,QAC3C,4BAA4BD,GAAM;AAAA,UAChC,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAUR,EAAQ;AAAA,QAAA,CACnB;AAAA,MAAA,CACF;AAAA,IAAA,CACF,CAAC;AAAA,EAAA,CACH;AACH,CAAC;"}
1
+ {"version":3,"file":"WaitingTool.js","sources":["../../../../src/chat/Tool/waiting/WaitingTool.tsx"],"sourcesContent":["import { Oclock } from '@reforma/icons/14';\nimport { getToolName, isToolUIPart } from '@reforma/types';\nimport { observer } from 'mobx-react-lite';\nimport { useEffect, useState } from 'react';\n\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport { useMessageTurn } from '../../Message/turn/messageTurnContext';\nimport { getToolFailureRowState, isToolInvocationInProgress } from '../helpers';\nimport { ToolShell, ToolShellFooter, ToolShellHeader } from '../shell';\n\nimport type { WaitingToolOutput } from '@reforma/types/sandbox';\nimport type { ToolRendererProps } from '../types';\n\nfunction waitingEndsAt(value: unknown): number | undefined {\n if (value == null || typeof value !== 'object') {\n return undefined;\n }\n\n const endsAt = (value as WaitingToolOutput).endsAt;\n\n if (typeof endsAt !== 'number' || !Number.isFinite(endsAt)) {\n return undefined;\n }\n\n return endsAt;\n}\n\n/** Waiting: clock icon + remaining seconds from the server `endsAt` unix ms. */\nexport const WaitingTool = observer(({ part }: ToolRendererProps) => {\n const turn = useMessageTurn();\n const [now, setNow] = useState(() => Date.now());\n const isWaiting = isToolUIPart(part) && getToolName(part) === 'Waiting';\n const live = isWaiting && isToolInvocationInProgress(part.state);\n const endsAt = isWaiting\n ? (waitingEndsAt(part.output) ?? waitingEndsAt(turn?.getToolMeta?.(part.toolCallId)?.patch))\n : undefined;\n\n useEffect(() => {\n if (!live) {\n return;\n }\n\n const id = setInterval(() => setNow(Date.now()), 250);\n\n return () => clearInterval(id);\n }, [live]);\n\n if (!isWaiting) {\n return null;\n }\n\n const failure = getToolFailureRowState(part);\n const remaining = (live && endsAt != null)\n ? Math.max(0, Math.ceil((endsAt - now) / 1000))\n : undefined;\n\n return (\n <ToolShell data-slot=\"waiting-tool\">\n <ToolShellHeader\n state={ part.state }\n statusDetail={ failure.tooltip }\n title=\"Waiting\"\n titleInProgress=\"Waiting\"\n icon={ <Oclock aria-hidden /> }\n >\n <Show when={ remaining != null }>\n <Text color=\"secondary\" whitespace=\"nowrap\">\n {`${ remaining }s`}\n </Text>\n </Show>\n </ToolShellHeader>\n\n <Show when={ failure.problemText }>\n <ToolShellFooter>\n <Text color=\"danger\" variant=\"xs\">{failure.problemText}</Text>\n </ToolShellFooter>\n </Show>\n </ToolShell>\n );\n});\n"],"names":["waitingEndsAt","value","endsAt","WaitingTool","observer","part","turn","useMessageTurn","now","setNow","useState","isWaiting","isToolUIPart","getToolName","live","isToolInvocationInProgress","useEffect","id","failure","getToolFailureRowState","remaining","ToolShell","_jsx","ToolShellHeader","Oclock","Show","Text","ToolShellFooter"],"mappings":";;;;;;;;;;AAUA,SAASA,EAAcC,GAAO;AAC5B,MAAIA,KAAS,QAAQ,OAAOA,KAAU;AACpC;AAEF,QAAMC,IAASD,EAAM;AACrB,MAAI,SAAOC,KAAW,YAAY,CAAC,OAAO,SAASA,CAAM;AAGzD,WAAOA;AACT;AAGO,MAAMC,IAAcC,EAAS,CAAC;AAAA,EACnC,MAAAC;AACF,MAAM;AACJ,QAAMC,IAAOC,EAAA,GACP,CAACC,GAAKC,CAAM,IAAIC,EAAS,MAAM,KAAK,KAAK,GACzCC,IAAYC,EAAaP,CAAI,KAAKQ,EAAYR,CAAI,MAAM,WACxDS,IAAOH,KAAaI,EAA2BV,EAAK,KAAK,GACzDH,IAASS,IAAYX,EAAcK,EAAK,MAAM,KAAKL,EAAcM,GAAM,cAAcD,EAAK,UAAU,GAAG,KAAK,IAAI;AAQtH,MAPAW,EAAU,MAAM;AACd,QAAI,CAACF;AACH;AAEF,UAAMG,IAAK,YAAY,MAAMR,EAAO,KAAK,IAAA,CAAK,GAAG,GAAG;AACpD,WAAO,MAAM,cAAcQ,CAAE;AAAA,EAC/B,GAAG,CAACH,CAAI,CAAC,GACL,CAACH;AACH,WAAO;AAET,QAAMO,IAAUC,EAAuBd,CAAI,GACrCe,IAAYN,KAAQZ,KAAU,OAAO,KAAK,IAAI,GAAG,KAAK,MAAMA,IAASM,KAAO,GAAI,CAAC,IAAI;AAC3F,2BAA0Ba,GAAW;AAAA,IACnC,aAAa;AAAA,IACb,UAAU,CAAcC,gBAAAA,EAAKC,GAAiB;AAAA,MAC5C,OAAOlB,EAAK;AAAA,MACZ,cAAca,EAAQ;AAAA,MACtB,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,wBAAwBM,GAAQ;AAAA,QAC9B,eAAe;AAAA,MAAA,CAChB;AAAA,MACD,4BAA4BC,GAAM;AAAA,QAChC,MAAML,KAAa;AAAA,QACnB,4BAA4BM,GAAM;AAAA,UAChC,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,UAAU,GAAGN,CAAS;AAAA,QAAA,CACvB;AAAA,MAAA,CACF;AAAA,IAAA,CACF,GAAgBE,gBAAAA,EAAKG,GAAM;AAAA,MAC1B,MAAMP,EAAQ;AAAA,MACd,4BAA4BS,GAAiB;AAAA,QAC3C,4BAA4BD,GAAM;AAAA,UAChC,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAUR,EAAQ;AAAA,QAAA,CACnB;AAAA,MAAA,CACF;AAAA,IAAA,CACF,CAAC;AAAA,EAAA,CACH;AACH,CAAC;"}
@@ -1,5 +1,5 @@
1
1
  import { Globe as m } from "@reforma/icons/14";
2
- import { isToolUIPart as n, getToolName as s } from "ai";
2
+ import { isToolUIPart as n, getToolName as s } from "@reforma/types";
3
3
  import { Show as i } from "../../../Show/Show.js";
4
4
  import { Text as h } from "../../../Text/Text.js";
5
5
  import { getToolFailureRowState as c } from "../helpers.js";
@@ -1 +1 @@
1
- {"version":3,"file":"WebSearchTool.js","sources":["../../../../src/chat/Tool/web-search/WebSearchTool.tsx"],"sourcesContent":["import { Globe } from '@reforma/icons/14';\nimport { getToolName, isToolUIPart } from 'ai';\n\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport { getToolFailureRowState } from '../helpers';\nimport {\n ToolShell,\n ToolShellFooter,\n ToolShellHeader,\n ToolSummaryBadges,\n} from '../shell';\nimport { isWebSearchToolName, webSearchSummaryFromPart } from './parseWebSearchTool';\n\nimport type { ToolRendererProps } from '../types';\n\n/** Provider web search: action badge only (URLs live in the message Sources footer). */\nexport function WebSearchTool({ part }: ToolRendererProps) {\n if (!isToolUIPart(part) || !isWebSearchToolName(getToolName(part))) {\n return null;\n }\n\n const state = part.state;\n const failure = getToolFailureRowState(part);\n const done = state === 'output-available';\n const summary = webSearchSummaryFromPart(part.input, done ? part.output : undefined);\n\n return (\n <ToolShell data-slot=\"web-search-tool\">\n <ToolShellHeader\n state={ state }\n statusDetail={ failure.tooltip }\n title={ summary.title }\n titleInProgress={ summary.titleInProgress }\n icon={ <Globe aria-hidden /> }\n >\n <Show when={ summary.labels.length > 0 }>\n <ToolSummaryBadges\n labels={ summary.labels }\n aria-label={ summary['aria-label'] }\n />\n </Show>\n </ToolShellHeader>\n\n <Show when={ failure.problemText }>\n <ToolShellFooter>\n <Text color=\"danger\" variant=\"xs\">{failure.problemText}</Text>\n </ToolShellFooter>\n </Show>\n </ToolShell>\n );\n}\n"],"names":["WebSearchTool","part","isToolUIPart","isWebSearchToolName","getToolName","state","failure","getToolFailureRowState","done","summary","webSearchSummaryFromPart","ToolShell","_jsx","ToolShellHeader","Globe","Show","ToolSummaryBadges","ToolShellFooter","Text"],"mappings":";;;;;;;;;AASO,SAASA,EAAc;AAAA,EAC5B,MAAAC;AACF,GAAG;AACD,MAAI,CAACC,EAAaD,CAAI,KAAK,CAACE,EAAoBC,EAAYH,CAAI,CAAC;AAC/D,WAAO;AAET,QAAMI,IAAQJ,EAAK,OACbK,IAAUC,EAAuBN,CAAI,GACrCO,IAAOH,MAAU,oBACjBI,IAAUC,EAAyBT,EAAK,OAAOO,IAAOP,EAAK,SAAS,MAAS;AACnF,2BAA0BU,GAAW;AAAA,IACnC,aAAa;AAAA,IACb,UAAU,CAAcC,gBAAAA,EAAKC,GAAiB;AAAA,MAC5C,OAAAR;AAAA,MACA,cAAcC,EAAQ;AAAA,MACtB,OAAOG,EAAQ;AAAA,MACf,iBAAiBA,EAAQ;AAAA,MACzB,wBAAwBK,GAAO;AAAA,QAC7B,eAAe;AAAA,MAAA,CAChB;AAAA,MACD,4BAA4BC,GAAM;AAAA,QAChC,MAAMN,EAAQ,OAAO,SAAS;AAAA,QAC9B,4BAA4BO,GAAmB;AAAA,UAC7C,QAAQP,EAAQ;AAAA,UAChB,cAAcA,EAAQ,YAAY;AAAA,QAAA,CACnC;AAAA,MAAA,CACF;AAAA,IAAA,CACF,GAAgBG,gBAAAA,EAAKG,GAAM;AAAA,MAC1B,MAAMT,EAAQ;AAAA,MACd,4BAA4BW,GAAiB;AAAA,QAC3C,4BAA4BC,GAAM;AAAA,UAChC,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAUZ,EAAQ;AAAA,QAAA,CACnB;AAAA,MAAA,CACF;AAAA,IAAA,CACF,CAAC;AAAA,EAAA,CACH;AACH;"}
1
+ {"version":3,"file":"WebSearchTool.js","sources":["../../../../src/chat/Tool/web-search/WebSearchTool.tsx"],"sourcesContent":["import { Globe } from '@reforma/icons/14';\nimport { getToolName, isToolUIPart } from '@reforma/types';\n\nimport { Show } from '../../../Show';\nimport { Text } from '../../../Text';\nimport { getToolFailureRowState } from '../helpers';\nimport {\n ToolShell,\n ToolShellFooter,\n ToolShellHeader,\n ToolSummaryBadges,\n} from '../shell';\nimport { isWebSearchToolName, webSearchSummaryFromPart } from './parseWebSearchTool';\n\nimport type { ToolRendererProps } from '../types';\n\n/** Provider web search: action badge only (URLs live in the message Sources footer). */\nexport function WebSearchTool({ part }: ToolRendererProps) {\n if (!isToolUIPart(part) || !isWebSearchToolName(getToolName(part))) {\n return null;\n }\n\n const state = part.state;\n const failure = getToolFailureRowState(part);\n const done = state === 'output-available';\n const summary = webSearchSummaryFromPart(part.input, done ? part.output : undefined);\n\n return (\n <ToolShell data-slot=\"web-search-tool\">\n <ToolShellHeader\n state={ state }\n statusDetail={ failure.tooltip }\n title={ summary.title }\n titleInProgress={ summary.titleInProgress }\n icon={ <Globe aria-hidden /> }\n >\n <Show when={ summary.labels.length > 0 }>\n <ToolSummaryBadges\n labels={ summary.labels }\n aria-label={ summary['aria-label'] }\n />\n </Show>\n </ToolShellHeader>\n\n <Show when={ failure.problemText }>\n <ToolShellFooter>\n <Text color=\"danger\" variant=\"xs\">{failure.problemText}</Text>\n </ToolShellFooter>\n </Show>\n </ToolShell>\n );\n}\n"],"names":["WebSearchTool","part","isToolUIPart","isWebSearchToolName","getToolName","state","failure","getToolFailureRowState","done","summary","webSearchSummaryFromPart","ToolShell","_jsx","ToolShellHeader","Globe","Show","ToolSummaryBadges","ToolShellFooter","Text"],"mappings":";;;;;;;;;AASO,SAASA,EAAc;AAAA,EAC5B,MAAAC;AACF,GAAG;AACD,MAAI,CAACC,EAAaD,CAAI,KAAK,CAACE,EAAoBC,EAAYH,CAAI,CAAC;AAC/D,WAAO;AAET,QAAMI,IAAQJ,EAAK,OACbK,IAAUC,EAAuBN,CAAI,GACrCO,IAAOH,MAAU,oBACjBI,IAAUC,EAAyBT,EAAK,OAAOO,IAAOP,EAAK,SAAS,MAAS;AACnF,2BAA0BU,GAAW;AAAA,IACnC,aAAa;AAAA,IACb,UAAU,CAAcC,gBAAAA,EAAKC,GAAiB;AAAA,MAC5C,OAAAR;AAAA,MACA,cAAcC,EAAQ;AAAA,MACtB,OAAOG,EAAQ;AAAA,MACf,iBAAiBA,EAAQ;AAAA,MACzB,wBAAwBK,GAAO;AAAA,QAC7B,eAAe;AAAA,MAAA,CAChB;AAAA,MACD,4BAA4BC,GAAM;AAAA,QAChC,MAAMN,EAAQ,OAAO,SAAS;AAAA,QAC9B,4BAA4BO,GAAmB;AAAA,UAC7C,QAAQP,EAAQ;AAAA,UAChB,cAAcA,EAAQ,YAAY;AAAA,QAAA,CACnC;AAAA,MAAA,CACF;AAAA,IAAA,CACF,GAAgBG,gBAAAA,EAAKG,GAAM;AAAA,MAC1B,MAAMT,EAAQ;AAAA,MACd,4BAA4BW,GAAiB;AAAA,QAC3C,4BAA4BC,GAAM;AAAA,UAChC,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAUZ,EAAQ;AAAA,QAAA,CACnB;AAAA,MAAA,CACF;AAAA,IAAA,CACF,CAAC;AAAA,EAAA,CACH;AACH;"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@reforma/components",
3
3
  "description": "A components library for Reforma",
4
4
  "type": "module",
5
- "version": "0.4.1",
5
+ "version": "0.6.0",
6
6
  "license": "UNLICENSED",
7
7
  "author": "Reforma, Inc. <dev@reforma.ai>",
8
8
  "repository": {
@@ -69,10 +69,10 @@
69
69
  "@openuidev/react-lang": "^1.0.1",
70
70
  "@react-aria/dnd": "^3.11.6",
71
71
  "@react-stately/utils": "^3.11.0",
72
- "@reforma/constants": "1.0.1",
72
+ "@reforma/constants": "1.1.0",
73
73
  "@reforma/icons": "0.1.0",
74
- "@reforma/lib": "0.1.6",
75
- "@reforma/types": "1.4.0",
74
+ "@reforma/lib": "0.1.7",
75
+ "@reforma/types": "1.6.0",
76
76
  "@shikijs/transformers": "^4.0.2",
77
77
  "@streamdown/cjk": "1.0.3",
78
78
  "@streamdown/code": "1.1.1",