@vertesia/ui 1.5.0-dev.20260717.131047Z → 1.5.0-dev.20260725.083715Z

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 (567) hide show
  1. package/lib/core/components/SidePanel.js +1 -1
  2. package/lib/core/components/SidePanel.js.map +1 -1
  3. package/lib/core/components/shadcn/button.d.ts +10 -3
  4. package/lib/core/components/shadcn/button.d.ts.map +1 -1
  5. package/lib/core/components/shadcn/button.js +41 -9
  6. package/lib/core/components/shadcn/button.js.map +1 -1
  7. package/lib/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
  8. package/lib/core/components/shadcn/filters/filterBar.js +1 -1
  9. package/lib/core/components/shadcn/filters/filterBar.js.map +1 -1
  10. package/lib/core/components/shadcn/modal/dialog.d.ts +1 -1
  11. package/lib/core/components/shadcn/modal/dialog.d.ts.map +1 -1
  12. package/lib/core/components/shadcn/modal/dialog.js +3 -1
  13. package/lib/core/components/shadcn/modal/dialog.js.map +1 -1
  14. package/lib/core/components/shadcn/tabs.d.ts +12 -1
  15. package/lib/core/components/shadcn/tabs.d.ts.map +1 -1
  16. package/lib/core/components/shadcn/tabs.js +12 -4
  17. package/lib/core/components/shadcn/tabs.js.map +1 -1
  18. package/lib/core/components/shadcn/theme/ThemeSwitcher.js +1 -1
  19. package/lib/core/components/shadcn/theme/ThemeSwitcher.js.map +1 -1
  20. package/lib/features/agent/chat/AgentChatPlaybackControls.d.ts.map +1 -1
  21. package/lib/features/agent/chat/AgentChatPlaybackControls.js +2 -2
  22. package/lib/features/agent/chat/AgentChatPlaybackControls.js.map +1 -1
  23. package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts.map +1 -1
  24. package/lib/features/agent/chat/AgentRequestInputOverlay.js +2 -2
  25. package/lib/features/agent/chat/AgentRequestInputOverlay.js.map +1 -1
  26. package/lib/features/agent/chat/AgentRightPanel.d.ts +5 -1
  27. package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
  28. package/lib/features/agent/chat/AgentRightPanel.js +2 -2
  29. package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
  30. package/lib/features/agent/chat/ArtifactsTab.d.ts +5 -1
  31. package/lib/features/agent/chat/ArtifactsTab.d.ts.map +1 -1
  32. package/lib/features/agent/chat/ArtifactsTab.js +53 -13
  33. package/lib/features/agent/chat/ArtifactsTab.js.map +1 -1
  34. package/lib/features/agent/chat/DocumentEditingActionCard.d.ts +6 -0
  35. package/lib/features/agent/chat/DocumentEditingActionCard.d.ts.map +1 -0
  36. package/lib/features/agent/chat/DocumentEditingActionCard.js +129 -0
  37. package/lib/features/agent/chat/DocumentEditingActionCard.js.map +1 -0
  38. package/lib/features/agent/chat/ImageLightbox.d.ts.map +1 -1
  39. package/lib/features/agent/chat/ImageLightbox.js +1 -1
  40. package/lib/features/agent/chat/ImageLightbox.js.map +1 -1
  41. package/lib/features/agent/chat/ModernAgentConversation.d.ts +19 -1
  42. package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  43. package/lib/features/agent/chat/ModernAgentConversation.js +125 -27
  44. package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
  45. package/lib/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.d.ts +45 -0
  46. package/lib/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.d.ts.map +1 -0
  47. package/lib/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.js +40 -0
  48. package/lib/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.js.map +1 -0
  49. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +3 -1
  50. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  51. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +96 -51
  52. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  53. package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.d.ts +2 -1
  54. package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.d.ts.map +1 -1
  55. package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js +9 -5
  56. package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js.map +1 -1
  57. package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.d.ts +25 -0
  58. package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.d.ts.map +1 -0
  59. package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.js +33 -0
  60. package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.js.map +1 -0
  61. package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  62. package/lib/features/agent/chat/ModernAgentOutput/Header.js +4 -2
  63. package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  64. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
  65. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +2 -2
  66. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
  67. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +3 -1
  68. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  69. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +23 -24
  70. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  71. package/lib/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.d.ts +14 -0
  72. package/lib/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.d.ts.map +1 -0
  73. package/lib/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.js +21 -0
  74. package/lib/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.js.map +1 -0
  75. package/lib/features/agent/chat/ModernAgentOutput/ResourceChip.d.ts +30 -0
  76. package/lib/features/agent/chat/ModernAgentOutput/ResourceChip.d.ts.map +1 -0
  77. package/lib/features/agent/chat/ModernAgentOutput/ResourceChip.js +53 -0
  78. package/lib/features/agent/chat/ModernAgentOutput/ResourceChip.js.map +1 -0
  79. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
  80. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +21 -2
  81. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
  82. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts +6 -0
  83. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts.map +1 -1
  84. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js +15 -1
  85. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js.map +1 -1
  86. package/lib/features/agent/chat/ModernAgentOutput/resourceLinks.d.ts +6 -0
  87. package/lib/features/agent/chat/ModernAgentOutput/resourceLinks.d.ts.map +1 -0
  88. package/lib/features/agent/chat/ModernAgentOutput/resourceLinks.js +29 -0
  89. package/lib/features/agent/chat/ModernAgentOutput/resourceLinks.js.map +1 -0
  90. package/lib/features/agent/chat/ModernAgentOutput/resourceSummary.d.ts +33 -0
  91. package/lib/features/agent/chat/ModernAgentOutput/resourceSummary.d.ts.map +1 -0
  92. package/lib/features/agent/chat/ModernAgentOutput/resourceSummary.js +129 -0
  93. package/lib/features/agent/chat/ModernAgentOutput/resourceSummary.js.map +1 -0
  94. package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts +7 -0
  95. package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
  96. package/lib/features/agent/chat/ModernAgentOutput/utils.js +11 -1
  97. package/lib/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
  98. package/lib/features/agent/chat/hooks/useAgentStream.d.ts +1 -1
  99. package/lib/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
  100. package/lib/features/agent/chat/hooks/useAgentStream.js +24 -9
  101. package/lib/features/agent/chat/hooks/useAgentStream.js.map +1 -1
  102. package/lib/features/agent/chat/index.d.ts +2 -1
  103. package/lib/features/agent/chat/index.d.ts.map +1 -1
  104. package/lib/features/agent/chat/index.js +3 -0
  105. package/lib/features/agent/chat/index.js.map +1 -1
  106. package/lib/features/environment/SelectEnvironment.d.ts +28 -0
  107. package/lib/features/environment/SelectEnvironment.d.ts.map +1 -0
  108. package/lib/features/environment/SelectEnvironment.js +97 -0
  109. package/lib/features/environment/SelectEnvironment.js.map +1 -0
  110. package/lib/features/environment/index.d.ts +2 -0
  111. package/lib/features/environment/index.d.ts.map +1 -0
  112. package/lib/features/environment/index.js +2 -0
  113. package/lib/features/environment/index.js.map +1 -0
  114. package/lib/features/index.d.ts +2 -0
  115. package/lib/features/index.d.ts.map +1 -1
  116. package/lib/features/index.js +2 -0
  117. package/lib/features/index.js.map +1 -1
  118. package/lib/features/magic-pdf/AnnotatedImageSlider.js +12 -12
  119. package/lib/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
  120. package/lib/features/magic-pdf/DownloadPopover.d.ts.map +1 -1
  121. package/lib/features/magic-pdf/DownloadPopover.js +3 -17
  122. package/lib/features/magic-pdf/DownloadPopover.js.map +1 -1
  123. package/lib/features/magic-pdf/ExtractedContentView.js +2 -6
  124. package/lib/features/magic-pdf/ExtractedContentView.js.map +1 -1
  125. package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.d.ts +25 -0
  126. package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.d.ts.map +1 -0
  127. package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.js +42 -0
  128. package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.js.map +1 -0
  129. package/lib/features/magic-pdf/GroundedExtractionView.d.ts +27 -0
  130. package/lib/features/magic-pdf/GroundedExtractionView.d.ts.map +1 -0
  131. package/lib/features/magic-pdf/GroundedExtractionView.js +377 -0
  132. package/lib/features/magic-pdf/GroundedExtractionView.js.map +1 -0
  133. package/lib/features/magic-pdf/MagicPdfProvider.d.ts +0 -2
  134. package/lib/features/magic-pdf/MagicPdfProvider.d.ts.map +1 -1
  135. package/lib/features/magic-pdf/MagicPdfProvider.js +15 -42
  136. package/lib/features/magic-pdf/MagicPdfProvider.js.map +1 -1
  137. package/lib/features/magic-pdf/MagicPdfView.d.ts.map +1 -1
  138. package/lib/features/magic-pdf/MagicPdfView.js +2 -19
  139. package/lib/features/magic-pdf/MagicPdfView.js.map +1 -1
  140. package/lib/features/magic-pdf/index.d.ts +1 -0
  141. package/lib/features/magic-pdf/index.d.ts.map +1 -1
  142. package/lib/features/magic-pdf/index.js +1 -0
  143. package/lib/features/magic-pdf/index.js.map +1 -1
  144. package/lib/features/magic-pdf/types.d.ts +1 -1
  145. package/lib/features/magic-pdf/types.d.ts.map +1 -1
  146. package/lib/features/oauth/McpConnectionsButton.d.ts.map +1 -1
  147. package/lib/features/oauth/McpConnectionsButton.js +2 -2
  148. package/lib/features/oauth/McpConnectionsButton.js.map +1 -1
  149. package/lib/features/oauth/McpConnectionsDialog.d.ts.map +1 -1
  150. package/lib/features/oauth/McpConnectionsDialog.js +1 -1
  151. package/lib/features/oauth/McpConnectionsDialog.js.map +1 -1
  152. package/lib/features/oauth/RemoteMcpConnectionButton.d.ts.map +1 -1
  153. package/lib/features/oauth/RemoteMcpConnectionButton.js +1 -1
  154. package/lib/features/oauth/RemoteMcpConnectionButton.js.map +1 -1
  155. package/lib/features/pdf-viewer/PdfPageSlider.js +2 -2
  156. package/lib/features/pdf-viewer/PdfPageSlider.js.map +1 -1
  157. package/lib/features/pdf-viewer/SimplePdfViewer.d.ts.map +1 -1
  158. package/lib/features/pdf-viewer/SimplePdfViewer.js +3 -3
  159. package/lib/features/pdf-viewer/SimplePdfViewer.js.map +1 -1
  160. package/lib/features/permissions/UserPermissionsProvider.js +1 -1
  161. package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
  162. package/lib/features/store/objects/DocumentQuickFilter.d.ts.map +1 -1
  163. package/lib/features/store/objects/DocumentQuickFilter.js +5 -5
  164. package/lib/features/store/objects/DocumentQuickFilter.js.map +1 -1
  165. package/lib/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
  166. package/lib/features/store/objects/DocumentSearchResults.js +4 -4
  167. package/lib/features/store/objects/DocumentSearchResults.js.map +1 -1
  168. package/lib/features/store/objects/components/ContentDispositionButton.d.ts.map +1 -1
  169. package/lib/features/store/objects/components/ContentDispositionButton.js +1 -1
  170. package/lib/features/store/objects/components/ContentDispositionButton.js.map +1 -1
  171. package/lib/features/store/objects/components/ContentOverview.d.ts +2 -1
  172. package/lib/features/store/objects/components/ContentOverview.d.ts.map +1 -1
  173. package/lib/features/store/objects/components/ContentOverview.js +159 -31
  174. package/lib/features/store/objects/components/ContentOverview.js.map +1 -1
  175. package/lib/features/store/objects/components/DocumentEditingConfigurationSelector.d.ts +16 -0
  176. package/lib/features/store/objects/components/DocumentEditingConfigurationSelector.d.ts.map +1 -0
  177. package/lib/features/store/objects/components/DocumentEditingConfigurationSelector.js +116 -0
  178. package/lib/features/store/objects/components/DocumentEditingConfigurationSelector.js.map +1 -0
  179. package/lib/features/store/objects/components/DocumentEditingLockStatus.d.ts +7 -0
  180. package/lib/features/store/objects/components/DocumentEditingLockStatus.d.ts.map +1 -0
  181. package/lib/features/store/objects/components/DocumentEditingLockStatus.js +13 -0
  182. package/lib/features/store/objects/components/DocumentEditingLockStatus.js.map +1 -0
  183. package/lib/features/store/objects/components/DocumentEditingPanel.d.ts +48 -0
  184. package/lib/features/store/objects/components/DocumentEditingPanel.d.ts.map +1 -0
  185. package/lib/features/store/objects/components/DocumentEditingPanel.js +720 -0
  186. package/lib/features/store/objects/components/DocumentEditingPanel.js.map +1 -0
  187. package/lib/features/store/objects/components/DocumentIcon.js +1 -1
  188. package/lib/features/store/objects/components/TextEditorPanel.d.ts.map +1 -1
  189. package/lib/features/store/objects/components/TextEditorPanel.js +22 -9
  190. package/lib/features/store/objects/components/TextEditorPanel.js.map +1 -1
  191. package/lib/features/store/objects/components/VectorSearchWidget.js +1 -1
  192. package/lib/features/store/objects/components/VectorSearchWidget.js.map +1 -1
  193. package/lib/features/store/objects/components/documentArtifactRefs.d.ts +26 -0
  194. package/lib/features/store/objects/components/documentArtifactRefs.d.ts.map +1 -0
  195. package/lib/features/store/objects/components/documentArtifactRefs.js +52 -0
  196. package/lib/features/store/objects/components/documentArtifactRefs.js.map +1 -0
  197. package/lib/features/store/objects/components/documentEditingAgentConfig.d.ts +4 -0
  198. package/lib/features/store/objects/components/documentEditingAgentConfig.d.ts.map +1 -0
  199. package/lib/features/store/objects/components/documentEditingAgentConfig.js +40 -0
  200. package/lib/features/store/objects/components/documentEditingAgentConfig.js.map +1 -0
  201. package/lib/features/store/objects/components/documentEditingPrompts.d.ts +3 -0
  202. package/lib/features/store/objects/components/documentEditingPrompts.d.ts.map +1 -0
  203. package/lib/features/store/objects/components/documentEditingPrompts.js +13 -0
  204. package/lib/features/store/objects/components/documentEditingPrompts.js.map +1 -0
  205. package/lib/features/store/objects/components/documentEditingRun.d.ts +27 -0
  206. package/lib/features/store/objects/components/documentEditingRun.d.ts.map +1 -0
  207. package/lib/features/store/objects/components/documentEditingRun.js +126 -0
  208. package/lib/features/store/objects/components/documentEditingRun.js.map +1 -0
  209. package/lib/features/store/objects/components/documentEditingTarget.d.ts +20 -0
  210. package/lib/features/store/objects/components/documentEditingTarget.d.ts.map +1 -0
  211. package/lib/features/store/objects/components/documentEditingTarget.js +40 -0
  212. package/lib/features/store/objects/components/documentEditingTarget.js.map +1 -0
  213. package/lib/features/store/objects/components/index.d.ts +1 -0
  214. package/lib/features/store/objects/components/index.d.ts.map +1 -1
  215. package/lib/features/store/objects/components/index.js +1 -0
  216. package/lib/features/store/objects/components/index.js.map +1 -1
  217. package/lib/features/store/objects/components/useContentPanelHooks.d.ts +6 -3
  218. package/lib/features/store/objects/components/useContentPanelHooks.d.ts.map +1 -1
  219. package/lib/features/store/objects/components/useContentPanelHooks.js +57 -37
  220. package/lib/features/store/objects/components/useContentPanelHooks.js.map +1 -1
  221. package/lib/features/store/objects/components/useDownloadFile.d.ts +2 -1
  222. package/lib/features/store/objects/components/useDownloadFile.d.ts.map +1 -1
  223. package/lib/features/store/objects/components/useDownloadFile.js +3 -0
  224. package/lib/features/store/objects/components/useDownloadFile.js.map +1 -1
  225. package/lib/features/store/objects/layout/renderers.d.ts.map +1 -1
  226. package/lib/features/store/objects/layout/renderers.js +2 -2
  227. package/lib/features/store/objects/layout/renderers.js.map +1 -1
  228. package/lib/features/store/objects/selection/SelectionActions.js +1 -1
  229. package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
  230. package/lib/features/store/objects/selection/actions/StartWorkflowButton.js +1 -1
  231. package/lib/features/store/objects/selection/actions/StartWorkflowButton.js.map +1 -1
  232. package/lib/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
  233. package/lib/features/store/types/ContentObjectTypesTable.js +4 -4
  234. package/lib/features/store/types/ContentObjectTypesTable.js.map +1 -1
  235. package/lib/features/store/types/IntakePolicyEditor.d.ts +15 -0
  236. package/lib/features/store/types/IntakePolicyEditor.d.ts.map +1 -0
  237. package/lib/features/store/types/IntakePolicyEditor.js +455 -0
  238. package/lib/features/store/types/IntakePolicyEditor.js.map +1 -0
  239. package/lib/features/store/types/IntakePolicyForm.d.ts +11 -0
  240. package/lib/features/store/types/IntakePolicyForm.d.ts.map +1 -0
  241. package/lib/features/store/types/IntakePolicyForm.js +91 -0
  242. package/lib/features/store/types/IntakePolicyForm.js.map +1 -0
  243. package/lib/features/store/types/SelectContentTypeModal.js +1 -1
  244. package/lib/features/store/types/SelectContentTypeModal.js.map +1 -1
  245. package/lib/features/store/types/index.d.ts +2 -0
  246. package/lib/features/store/types/index.d.ts.map +1 -1
  247. package/lib/features/store/types/index.js +2 -0
  248. package/lib/features/store/types/index.js.map +1 -1
  249. package/lib/features/store/types/intake-policy-editor.logic.d.ts +7 -0
  250. package/lib/features/store/types/intake-policy-editor.logic.d.ts.map +1 -0
  251. package/lib/features/store/types/intake-policy-editor.logic.js +60 -0
  252. package/lib/features/store/types/intake-policy-editor.logic.js.map +1 -0
  253. package/lib/features/store/types/typeCatalogCache.d.ts +5 -0
  254. package/lib/features/store/types/typeCatalogCache.d.ts.map +1 -0
  255. package/lib/features/store/types/typeCatalogCache.js +40 -0
  256. package/lib/features/store/types/typeCatalogCache.js.map +1 -0
  257. package/lib/features/user/UserInfo.js +7 -3
  258. package/lib/features/user/UserInfo.js.map +1 -1
  259. package/lib/features/views/ViewExperience.d.ts +20 -0
  260. package/lib/features/views/ViewExperience.d.ts.map +1 -0
  261. package/lib/features/views/ViewExperience.js +188 -0
  262. package/lib/features/views/ViewExperience.js.map +1 -0
  263. package/lib/features/views/ViewNavigation.d.ts +3 -0
  264. package/lib/features/views/ViewNavigation.d.ts.map +1 -0
  265. package/lib/features/views/ViewNavigation.js +36 -0
  266. package/lib/features/views/ViewNavigation.js.map +1 -0
  267. package/lib/features/views/ViewResults.d.ts +9 -0
  268. package/lib/features/views/ViewResults.d.ts.map +1 -0
  269. package/lib/features/views/ViewResults.js +229 -0
  270. package/lib/features/views/ViewResults.js.map +1 -0
  271. package/lib/features/views/ViewSearch.d.ts +3 -0
  272. package/lib/features/views/ViewSearch.d.ts.map +1 -0
  273. package/lib/features/views/ViewSearch.js +74 -0
  274. package/lib/features/views/ViewSearch.js.map +1 -0
  275. package/lib/features/views/index.d.ts +7 -0
  276. package/lib/features/views/index.d.ts.map +1 -0
  277. package/lib/features/views/index.js +7 -0
  278. package/lib/features/views/index.js.map +1 -0
  279. package/lib/features/views/types.d.ts +39 -0
  280. package/lib/features/views/types.d.ts.map +1 -0
  281. package/lib/features/views/types.js +2 -0
  282. package/lib/features/views/types.js.map +1 -0
  283. package/lib/features/views/viewState.d.ts +14 -0
  284. package/lib/features/views/viewState.d.ts.map +1 -0
  285. package/lib/features/views/viewState.js +117 -0
  286. package/lib/features/views/viewState.js.map +1 -0
  287. package/lib/i18n/locales/ar.json +134 -1
  288. package/lib/i18n/locales/de.json +130 -1
  289. package/lib/i18n/locales/en.json +363 -33
  290. package/lib/i18n/locales/es.json +131 -1
  291. package/lib/i18n/locales/fr.json +131 -1
  292. package/lib/i18n/locales/it.json +131 -1
  293. package/lib/i18n/locales/ja.json +129 -1
  294. package/lib/i18n/locales/ko.json +129 -1
  295. package/lib/i18n/locales/pt.json +131 -1
  296. package/lib/i18n/locales/ru.json +132 -1
  297. package/lib/i18n/locales/tr.json +130 -1
  298. package/lib/i18n/locales/zh-TW.json +129 -1
  299. package/lib/i18n/locales/zh.json +129 -1
  300. package/lib/rich-text/EditorToolbar.d.ts +37 -0
  301. package/lib/rich-text/EditorToolbar.d.ts.map +1 -0
  302. package/lib/rich-text/EditorToolbar.js +215 -0
  303. package/lib/rich-text/EditorToolbar.js.map +1 -0
  304. package/lib/rich-text/VertesiaRichTextEditor.d.ts +26 -0
  305. package/lib/rich-text/VertesiaRichTextEditor.d.ts.map +1 -0
  306. package/lib/rich-text/VertesiaRichTextEditor.js +67 -0
  307. package/lib/rich-text/VertesiaRichTextEditor.js.map +1 -0
  308. package/lib/rich-text/index.d.ts +2 -0
  309. package/lib/rich-text/index.d.ts.map +1 -0
  310. package/lib/rich-text/index.js +2 -0
  311. package/lib/rich-text/index.js.map +1 -0
  312. package/lib/router/HistoryNavigator.d.ts.map +1 -1
  313. package/lib/router/HistoryNavigator.js +23 -13
  314. package/lib/router/HistoryNavigator.js.map +1 -1
  315. package/lib/router/Nav.d.ts.map +1 -1
  316. package/lib/router/Nav.js +15 -6
  317. package/lib/router/Nav.js.map +1 -1
  318. package/lib/session/UserSession.d.ts.map +1 -1
  319. package/lib/session/UserSession.js +5 -3
  320. package/lib/session/UserSession.js.map +1 -1
  321. package/lib/vertesia-ui-core.js +4 -4
  322. package/lib/vertesia-ui-core.js.map +1 -1
  323. package/lib/vertesia-ui-features.js +40 -28
  324. package/lib/vertesia-ui-features.js.map +1 -1
  325. package/lib/vertesia-ui-i18n.js +15 -15
  326. package/lib/vertesia-ui-i18n.js.map +1 -1
  327. package/lib/vertesia-ui-rich-text.js +5 -0
  328. package/lib/vertesia-ui-rich-text.js.map +1 -0
  329. package/lib/vertesia-ui-router.js +1 -1
  330. package/lib/vertesia-ui-router.js.map +1 -1
  331. package/lib/vertesia-ui-session.js +1 -1
  332. package/lib/vertesia-ui-session.js.map +1 -1
  333. package/lib/vertesia-ui-shell.js +1 -1
  334. package/lib/vertesia-ui-shell.js.map +1 -1
  335. package/lib/vertesia-ui-widgets.js +25 -7
  336. package/lib/vertesia-ui-widgets.js.map +1 -1
  337. package/lib/widgets/form/Form.js +1 -1
  338. package/lib/widgets/form/Form.js.map +1 -1
  339. package/lib/widgets/json-view/JSONSwitcher.js +1 -1
  340. package/lib/widgets/json-view/JSONSwitcher.js.map +1 -1
  341. package/lib/widgets/json-view/JSONView.js +6 -6
  342. package/lib/widgets/json-view/JSONView.js.map +1 -1
  343. package/lib/widgets/markdown/AgentResourceResolver.d.ts +31 -0
  344. package/lib/widgets/markdown/AgentResourceResolver.d.ts.map +1 -0
  345. package/lib/widgets/markdown/AgentResourceResolver.js +39 -0
  346. package/lib/widgets/markdown/AgentResourceResolver.js.map +1 -0
  347. package/lib/widgets/markdown/ArtifactEditingSurface.d.ts +63 -0
  348. package/lib/widgets/markdown/ArtifactEditingSurface.d.ts.map +1 -0
  349. package/lib/widgets/markdown/ArtifactEditingSurface.js +582 -0
  350. package/lib/widgets/markdown/ArtifactEditingSurface.js.map +1 -0
  351. package/lib/widgets/markdown/CollaborativeMarkdownRenderer.d.ts +69 -0
  352. package/lib/widgets/markdown/CollaborativeMarkdownRenderer.d.ts.map +1 -0
  353. package/lib/widgets/markdown/CollaborativeMarkdownRenderer.js +374 -0
  354. package/lib/widgets/markdown/CollaborativeMarkdownRenderer.js.map +1 -0
  355. package/lib/widgets/markdown/MarkdownLink.d.ts +3 -1
  356. package/lib/widgets/markdown/MarkdownLink.d.ts.map +1 -1
  357. package/lib/widgets/markdown/MarkdownLink.js +41 -14
  358. package/lib/widgets/markdown/MarkdownLink.js.map +1 -1
  359. package/lib/widgets/markdown/MarkdownRenderer.d.ts +8 -1
  360. package/lib/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
  361. package/lib/widgets/markdown/MarkdownRenderer.js +20 -4
  362. package/lib/widgets/markdown/MarkdownRenderer.js.map +1 -1
  363. package/lib/widgets/markdown/index.d.ts +5 -1
  364. package/lib/widgets/markdown/index.d.ts.map +1 -1
  365. package/lib/widgets/markdown/index.js +5 -1
  366. package/lib/widgets/markdown/index.js.map +1 -1
  367. package/lib/widgets/markdown/normalizeCustomSchemeLinks.d.ts.map +1 -1
  368. package/lib/widgets/markdown/normalizeCustomSchemeLinks.js +14 -2
  369. package/lib/widgets/markdown/normalizeCustomSchemeLinks.js.map +1 -1
  370. package/lib/widgets/markdown/textDiff.d.ts +52 -0
  371. package/lib/widgets/markdown/textDiff.d.ts.map +1 -0
  372. package/lib/widgets/markdown/textDiff.js +362 -0
  373. package/lib/widgets/markdown/textDiff.js.map +1 -0
  374. package/lib/widgets/markdown/useArtifactContent.d.ts +5 -3
  375. package/lib/widgets/markdown/useArtifactContent.d.ts.map +1 -1
  376. package/lib/widgets/markdown/useArtifactContent.js +6 -3
  377. package/lib/widgets/markdown/useArtifactContent.js.map +1 -1
  378. package/lib/widgets/markdown/useResolvedUrl.d.ts +1 -5
  379. package/lib/widgets/markdown/useResolvedUrl.d.ts.map +1 -1
  380. package/lib/widgets/markdown/useResolvedUrl.js +19 -31
  381. package/lib/widgets/markdown/useResolvedUrl.js.map +1 -1
  382. package/lib/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
  383. package/lib/widgets/monacoEditor/MonacoEditor.js +29 -0
  384. package/lib/widgets/monacoEditor/MonacoEditor.js.map +1 -1
  385. package/lib/widgets/schema-editor/ManagedSchema.d.ts +8 -0
  386. package/lib/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
  387. package/lib/widgets/schema-editor/ManagedSchema.js +16 -0
  388. package/lib/widgets/schema-editor/ManagedSchema.js.map +1 -1
  389. package/lib/widgets/schema-editor/editor/EditableSchemaProperty.d.ts +2 -0
  390. package/lib/widgets/schema-editor/editor/EditableSchemaProperty.d.ts.map +1 -1
  391. package/lib/widgets/schema-editor/editor/EditableSchemaProperty.js +1 -0
  392. package/lib/widgets/schema-editor/editor/EditableSchemaProperty.js.map +1 -1
  393. package/lib/widgets/schema-editor/editor/PropertyViewer.d.ts.map +1 -1
  394. package/lib/widgets/schema-editor/editor/PropertyViewer.js +4 -1
  395. package/lib/widgets/schema-editor/editor/PropertyViewer.js.map +1 -1
  396. package/lib/widgets/schema-editor/editor/SchemaEditor.d.ts.map +1 -1
  397. package/lib/widgets/schema-editor/editor/SchemaEditor.js +22 -11
  398. package/lib/widgets/schema-editor/editor/SchemaEditor.js.map +1 -1
  399. package/lib/widgets/xml-viewer/hooks/useXMLViewer.d.ts +9 -0
  400. package/lib/widgets/xml-viewer/hooks/useXMLViewer.d.ts.map +1 -1
  401. package/lib/widgets/xml-viewer/hooks/useXMLViewer.js +20 -17
  402. package/lib/widgets/xml-viewer/hooks/useXMLViewer.js.map +1 -1
  403. package/package.json +37 -33
  404. package/src/__tests__/a11y.test.tsx +77 -1
  405. package/src/__tests__/axe-helper.ts +17 -7
  406. package/src/__tests__/setup.ts +25 -0
  407. package/src/core/components/SidePanel.tsx +1 -1
  408. package/src/core/components/shadcn/button.tsx +67 -12
  409. package/src/core/components/shadcn/filters/filterBar.tsx +1 -0
  410. package/src/core/components/shadcn/modal/dialog.tsx +4 -2
  411. package/src/core/components/shadcn/tabs.test.tsx +65 -0
  412. package/src/core/components/shadcn/tabs.tsx +25 -3
  413. package/src/core/components/shadcn/theme/ThemeSwitcher.tsx +1 -1
  414. package/src/features/agent/chat/AgentChatPlaybackControls.tsx +0 -5
  415. package/src/features/agent/chat/AgentRequestInputOverlay.test.tsx +31 -0
  416. package/src/features/agent/chat/AgentRequestInputOverlay.tsx +6 -2
  417. package/src/features/agent/chat/AgentRightPanel.tsx +16 -1
  418. package/src/features/agent/chat/ArtifactsTab.test.tsx +55 -0
  419. package/src/features/agent/chat/ArtifactsTab.tsx +222 -61
  420. package/src/features/agent/chat/DocumentEditingActionCard.test.tsx +105 -0
  421. package/src/features/agent/chat/DocumentEditingActionCard.tsx +210 -0
  422. package/src/features/agent/chat/ImageLightbox.tsx +0 -1
  423. package/src/features/agent/chat/ModernAgentConversation.test.tsx +285 -40
  424. package/src/features/agent/chat/ModernAgentConversation.tsx +247 -77
  425. package/src/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.test.tsx +79 -0
  426. package/src/features/agent/chat/ModernAgentOutput/AgentMarkdownAnchor.tsx +94 -0
  427. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +263 -35
  428. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +236 -118
  429. package/src/features/agent/chat/ModernAgentOutput/AttachmentPreview.tsx +17 -0
  430. package/src/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.test.tsx +44 -0
  431. package/src/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.tsx +88 -0
  432. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +3 -3
  433. package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +0 -2
  434. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +34 -47
  435. package/src/features/agent/chat/ModernAgentOutput/ResourceChangeSummary.tsx +40 -0
  436. package/src/features/agent/chat/ModernAgentOutput/ResourceChip.test.tsx +148 -0
  437. package/src/features/agent/chat/ModernAgentOutput/ResourceChip.tsx +141 -0
  438. package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +33 -1
  439. package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.test.ts +80 -0
  440. package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.ts +21 -1
  441. package/src/features/agent/chat/ModernAgentOutput/resourceLinks.tsx +43 -0
  442. package/src/features/agent/chat/ModernAgentOutput/resourceSummary.test.ts +229 -0
  443. package/src/features/agent/chat/ModernAgentOutput/resourceSummary.ts +152 -0
  444. package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +17 -0
  445. package/src/features/agent/chat/ModernAgentOutput/utils.ts +14 -1
  446. package/src/features/agent/chat/hooks/useAgentStream.test.tsx +188 -0
  447. package/src/features/agent/chat/hooks/useAgentStream.ts +28 -8
  448. package/src/features/agent/chat/index.ts +11 -0
  449. package/src/features/environment/SelectEnvironment.tsx +186 -0
  450. package/src/features/environment/index.ts +1 -0
  451. package/src/features/index.ts +2 -0
  452. package/src/features/magic-pdf/AnnotatedImageSlider.tsx +62 -66
  453. package/src/features/magic-pdf/DownloadPopover.tsx +5 -48
  454. package/src/features/magic-pdf/ExtractedContentView.tsx +2 -14
  455. package/src/features/magic-pdf/GroundedExtractionAssistantPanel.tsx +86 -0
  456. package/src/features/magic-pdf/GroundedExtractionView.test.tsx +65 -0
  457. package/src/features/magic-pdf/GroundedExtractionView.tsx +1055 -0
  458. package/src/features/magic-pdf/MagicPdfProvider.tsx +17 -47
  459. package/src/features/magic-pdf/MagicPdfView.tsx +3 -51
  460. package/src/features/magic-pdf/index.ts +1 -0
  461. package/src/features/magic-pdf/types.ts +1 -1
  462. package/src/features/oauth/McpConnectionsButton.tsx +0 -2
  463. package/src/features/oauth/McpConnectionsDialog.tsx +0 -1
  464. package/src/features/oauth/RemoteMcpConnectionButton.tsx +0 -1
  465. package/src/features/pdf-viewer/PdfPageSlider.tsx +5 -5
  466. package/src/features/pdf-viewer/SimplePdfViewer.tsx +11 -12
  467. package/src/features/permissions/UserPermissionsProvider.tsx +1 -1
  468. package/src/features/store/objects/DocumentQuickFilter.tsx +13 -15
  469. package/src/features/store/objects/DocumentSearchResults.tsx +5 -8
  470. package/src/features/store/objects/components/ContentDispositionButton.tsx +5 -1
  471. package/src/features/store/objects/components/ContentOverview.tsx +356 -105
  472. package/src/features/store/objects/components/DocumentEditingConfigurationSelector.test.ts +34 -0
  473. package/src/features/store/objects/components/DocumentEditingConfigurationSelector.tsx +211 -0
  474. package/src/features/store/objects/components/DocumentEditingLockStatus.test.tsx +32 -0
  475. package/src/features/store/objects/components/DocumentEditingLockStatus.tsx +45 -0
  476. package/src/features/store/objects/components/DocumentEditingPanel.test.tsx +336 -0
  477. package/src/features/store/objects/components/DocumentEditingPanel.tsx +1236 -0
  478. package/src/features/store/objects/components/DocumentIcon.tsx +1 -1
  479. package/src/features/store/objects/components/TextEditorPanel.test.tsx +48 -0
  480. package/src/features/store/objects/components/TextEditorPanel.tsx +41 -20
  481. package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
  482. package/src/features/store/objects/components/documentArtifactRefs.test.ts +65 -0
  483. package/src/features/store/objects/components/documentArtifactRefs.ts +72 -0
  484. package/src/features/store/objects/components/documentEditingAgentConfig.test.ts +28 -0
  485. package/src/features/store/objects/components/documentEditingAgentConfig.ts +41 -0
  486. package/src/features/store/objects/components/documentEditingPrompts.test.ts +26 -0
  487. package/src/features/store/objects/components/documentEditingPrompts.ts +12 -0
  488. package/src/features/store/objects/components/documentEditingRun.test.ts +176 -0
  489. package/src/features/store/objects/components/documentEditingRun.ts +184 -0
  490. package/src/features/store/objects/components/documentEditingTarget.test.ts +96 -0
  491. package/src/features/store/objects/components/documentEditingTarget.ts +63 -0
  492. package/src/features/store/objects/components/index.ts +1 -0
  493. package/src/features/store/objects/components/useContentPanelHooks.ts +55 -42
  494. package/src/features/store/objects/components/useDownloadFile.test.ts +20 -0
  495. package/src/features/store/objects/components/useDownloadFile.ts +5 -1
  496. package/src/features/store/objects/layout/renderers.tsx +1 -2
  497. package/src/features/store/objects/selection/SelectionActions.tsx +1 -1
  498. package/src/features/store/objects/selection/actions/StartWorkflowButton.tsx +2 -2
  499. package/src/features/store/types/ContentObjectTypesTable.tsx +12 -14
  500. package/src/features/store/types/IntakePolicyEditor.tsx +679 -0
  501. package/src/features/store/types/IntakePolicyForm.tsx +838 -0
  502. package/src/features/store/types/SelectContentTypeModal.tsx +2 -2
  503. package/src/features/store/types/index.ts +2 -0
  504. package/src/features/store/types/intake-policy-editor.logic.test.ts +109 -0
  505. package/src/features/store/types/intake-policy-editor.logic.ts +87 -0
  506. package/src/features/store/types/typeCatalogCache.ts +45 -0
  507. package/src/features/user/UserInfo.tsx +7 -7
  508. package/src/features/views/ViewExperience.test.tsx +273 -0
  509. package/src/features/views/ViewExperience.tsx +408 -0
  510. package/src/features/views/ViewNavigation.test.tsx +86 -0
  511. package/src/features/views/ViewNavigation.tsx +187 -0
  512. package/src/features/views/ViewResults.test.ts +82 -0
  513. package/src/features/views/ViewResults.tsx +609 -0
  514. package/src/features/views/ViewSearch.test.tsx +147 -0
  515. package/src/features/views/ViewSearch.tsx +205 -0
  516. package/src/features/views/index.ts +6 -0
  517. package/src/features/views/types.ts +57 -0
  518. package/src/features/views/viewState.test.ts +111 -0
  519. package/src/features/views/viewState.ts +132 -0
  520. package/src/i18n/locales/ar.json +134 -1
  521. package/src/i18n/locales/de.json +130 -1
  522. package/src/i18n/locales/en.json +1083 -753
  523. package/src/i18n/locales/es.json +131 -1
  524. package/src/i18n/locales/fr.json +131 -1
  525. package/src/i18n/locales/it.json +131 -1
  526. package/src/i18n/locales/ja.json +129 -1
  527. package/src/i18n/locales/ko.json +129 -1
  528. package/src/i18n/locales/pt.json +131 -1
  529. package/src/i18n/locales/ru.json +132 -1
  530. package/src/i18n/locales/tr.json +130 -1
  531. package/src/i18n/locales/zh-TW.json +129 -1
  532. package/src/i18n/locales/zh.json +129 -1
  533. package/src/rich-text/EditorToolbar.tsx +708 -0
  534. package/src/rich-text/VertesiaRichTextEditor.test.tsx +211 -0
  535. package/src/rich-text/VertesiaRichTextEditor.tsx +241 -0
  536. package/src/rich-text/index.ts +9 -0
  537. package/src/router/HistoryNavigator.test.ts +48 -0
  538. package/src/router/HistoryNavigator.ts +24 -13
  539. package/src/router/Nav.tsx +18 -8
  540. package/src/session/UserSession.test.ts +39 -0
  541. package/src/session/UserSession.ts +5 -3
  542. package/src/widgets/form/Form.tsx +1 -1
  543. package/src/widgets/json-view/JSONSwitcher.tsx +2 -2
  544. package/src/widgets/json-view/JSONView.tsx +7 -7
  545. package/src/widgets/markdown/AgentResourceResolver.test.ts +24 -0
  546. package/src/widgets/markdown/AgentResourceResolver.tsx +70 -0
  547. package/src/widgets/markdown/ArtifactEditingSurface.test.tsx +537 -0
  548. package/src/widgets/markdown/ArtifactEditingSurface.tsx +878 -0
  549. package/src/widgets/markdown/CollaborativeMarkdownRenderer.test.tsx +484 -0
  550. package/src/widgets/markdown/CollaborativeMarkdownRenderer.tsx +825 -0
  551. package/src/widgets/markdown/MarkdownLink.test.tsx +122 -0
  552. package/src/widgets/markdown/MarkdownLink.tsx +102 -17
  553. package/src/widgets/markdown/MarkdownRenderer.tsx +30 -3
  554. package/src/widgets/markdown/index.ts +39 -1
  555. package/src/widgets/markdown/normalizeCustomSchemeLinks.ts +15 -2
  556. package/src/widgets/markdown/textDiff.test.ts +156 -0
  557. package/src/widgets/markdown/textDiff.ts +399 -0
  558. package/src/widgets/markdown/useArtifactContent.ts +9 -3
  559. package/src/widgets/markdown/useResolvedUrl.test.ts +29 -40
  560. package/src/widgets/markdown/useResolvedUrl.ts +33 -35
  561. package/src/widgets/monacoEditor/MonacoEditor.tsx +29 -0
  562. package/src/widgets/schema-editor/ManagedSchema.ts +22 -0
  563. package/src/widgets/schema-editor/editor/EditableSchemaProperty.tsx +3 -0
  564. package/src/widgets/schema-editor/editor/PropertyViewer.tsx +14 -3
  565. package/src/widgets/schema-editor/editor/SchemaEditor.tsx +80 -29
  566. package/src/widgets/xml-viewer/hooks/useXMLViewer.test.ts +26 -0
  567. package/src/widgets/xml-viewer/hooks/useXMLViewer.ts +23 -18
@@ -1 +1 @@
1
- {"version":3,"file":"vertesia-ui-i18n.js","names":["ar","de","en","es","fr","it","ja","ko","pt","ru","tr","zh","zhTW","_jsx","_jsx"],"sources":["i18n/locales/ar.json","i18n/locales/de.json","i18n/locales/en.json","i18n/locales/es.json","i18n/locales/fr.json","i18n/locales/it.json","i18n/locales/ja.json","i18n/locales/ko.json","i18n/locales/pt.json","i18n/locales/ru.json","i18n/locales/tr.json","i18n/locales/zh.json","i18n/locales/zh-TW.json","i18n/instance.js","i18n/rtl.js","i18n/LanguageProvider.js","i18n/useLocaleFormat.js","i18n/index.js"],"sourcesContent":["","","","","","","","","","","","","","import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport ar from './locales/ar.json';\nimport de from './locales/de.json';\nimport en from './locales/en.json';\nimport es from './locales/es.json';\nimport fr from './locales/fr.json';\nimport it from './locales/it.json';\nimport ja from './locales/ja.json';\nimport ko from './locales/ko.json';\nimport pt from './locales/pt.json';\nimport ru from './locales/ru.json';\nimport tr from './locales/tr.json';\nimport zh from './locales/zh.json';\nimport zhTW from './locales/zh-TW.json';\nexport const NAMESPACE = 'vertesia.ui';\n// Scoped instance — does NOT touch the global i18next singleton\nconst i18nInstance = i18next.createInstance();\nvoid i18nInstance.use(initReactI18next).init({\n resources: {\n ar: { [NAMESPACE]: ar },\n de: { [NAMESPACE]: de },\n en: { [NAMESPACE]: en },\n es: { [NAMESPACE]: es },\n fr: { [NAMESPACE]: fr },\n it: { [NAMESPACE]: it },\n ja: { [NAMESPACE]: ja },\n ko: { [NAMESPACE]: ko },\n pt: { [NAMESPACE]: pt },\n ru: { [NAMESPACE]: ru },\n tr: { [NAMESPACE]: tr },\n zh: { [NAMESPACE]: zh },\n 'zh-TW': { [NAMESPACE]: zhTW },\n },\n fallbackLng: 'en',\n returnEmptyString: false,\n ns: [NAMESPACE],\n defaultNS: NAMESPACE,\n interpolation: {\n escapeValue: false, // React already escapes\n },\n react: {\n useSuspense: false, // Translations are bundled, no async loading\n },\n});\nexport { i18nInstance };\n//# sourceMappingURL=instance.js.map","/**\n * RTL detection and language resolution for the @vertesia/ui locale set.\n *\n * SUPPORTED_LANGUAGES is the single source of truth for what locales the\n * switcher offers, and must stay in sync with the resources registered in\n * `./instance.ts`. A divergence-guard test (`./rtl.test.ts`) fails the build\n * if the two diverge.\n *\n * RTL_LANGUAGES is deliberately broader than SUPPORTED_LANGUAGES so that\n * dir=\"rtl\" handling is forward-compatible when new RTL locales (he, fa, ur,\n * ...) are added to instance.ts later.\n */\nexport const SUPPORTED_LANGUAGES = [\n 'ar',\n 'de',\n 'en',\n 'es',\n 'fr',\n 'it',\n 'ja',\n 'ko',\n 'pt',\n 'ru',\n 'tr',\n 'zh',\n 'zh-TW',\n];\nexport const RTL_LANGUAGES = new Set(['ar', 'he', 'fa', 'ur']);\nexport function isRTL(lng) {\n if (!lng)\n return false;\n return RTL_LANGUAGES.has(lng.split('-')[0].toLowerCase());\n}\n/**\n * Resolve any raw language code (BCP-47 or bare) to a SupportedLanguage:\n * 1. exact match against SUPPORTED_LANGUAGES (preserves `zh-TW` vs `zh`)\n * 2. base-language fallback (`pt-BR` -> `pt`)\n * 3. `'en'` fallback\n *\n * The inline FOUC script in `index.html` must reimplement this same logic\n * verbatim (it cannot import ESM before bundle load).\n */\nexport function resolveLanguage(raw) {\n if (!raw)\n return 'en';\n const list = SUPPORTED_LANGUAGES;\n if (list.includes(raw))\n return raw;\n const base = raw.split('-')[0];\n if (list.includes(base))\n return base;\n return 'en';\n}\n//# sourceMappingURL=rtl.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { DirectionProvider } from '@radix-ui/react-direction';\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react';\nimport { isRTL, resolveLanguage } from './rtl.js';\nconst initialState = {\n language: 'en',\n setLanguage: () => null,\n isRTL: false,\n};\nconst LanguageProviderContext = createContext(initialState);\nexport { LanguageProviderContext };\nfunction readInitialLanguage(storageKey, defaultLanguage) {\n if (typeof window === 'undefined')\n return defaultLanguage;\n const stored = window.localStorage?.getItem(storageKey);\n if (stored)\n return resolveLanguage(stored);\n const nav = window.navigator?.language;\n if (nav)\n return resolveLanguage(nav);\n return defaultLanguage;\n}\nexport function LanguageProvider({ children, defaultLanguage = 'en', storageKey = 'vertesia-ui-language', ...props }) {\n const [language, setLanguage] = useState(() => readInitialLanguage(storageKey, defaultLanguage));\n const rtl = isRTL(language);\n useEffect(() => {\n const root = window.document.documentElement;\n root.lang = language;\n root.dir = rtl ? 'rtl' : 'ltr';\n }, [language, rtl]);\n const value = useMemo(() => ({\n language,\n isRTL: rtl,\n setLanguage: (next) => {\n window.localStorage?.setItem(storageKey, next);\n setLanguage(next);\n },\n }), [language, rtl, storageKey]);\n return (_jsx(LanguageProviderContext.Provider, { ...props, value: value, children: _jsx(DirectionProvider, { dir: rtl ? 'rtl' : 'ltr', children: children }) }));\n}\nexport function useLanguage() {\n const context = useContext(LanguageProviderContext);\n if (context === undefined) {\n throw new Error('useLanguage must be used within a LanguageProvider');\n }\n return context;\n}\n//# sourceMappingURL=LanguageProvider.js.map","import { useMemo } from 'react';\nimport { useLanguage } from './LanguageProvider.js';\nfunction toDate(input) {\n if (input == null)\n return null;\n const d = input instanceof Date ? input : new Date(input);\n return Number.isNaN(d.getTime()) ? null : d;\n}\nconst PLACEHOLDER = '—';\nconst RELATIVE_UNITS = [\n { unit: 'year', seconds: 31536000 },\n { unit: 'month', seconds: 2628000 },\n { unit: 'week', seconds: 604800 },\n { unit: 'day', seconds: 86400 },\n { unit: 'hour', seconds: 3600 },\n { unit: 'minute', seconds: 60 },\n { unit: 'second', seconds: 1 },\n];\nexport function useLocaleFormat() {\n const { language } = useLanguage();\n return useMemo(() => {\n // dateStyle: 'long' so each locale shows its native flavor — Japanese\n // gets 年月日 markers, English gets \"May 11, 2026\", Arabic gets month\n // names, etc. The 'short' style is too aggressively numeric (it\n // renders Japanese as \"2026/05/11\", which is correct per CLDR but\n // doesn't feel localized to users). Call sites that want compact\n // numeric output can pass `{ dateStyle: 'short' }` explicitly.\n const dateLong = new Intl.DateTimeFormat(language, { dateStyle: 'long' });\n const dateTimeLong = new Intl.DateTimeFormat(language, { dateStyle: 'long', timeStyle: 'short' });\n const timeShort = new Intl.DateTimeFormat(language, { timeStyle: 'short' });\n const numberDefault = new Intl.NumberFormat(language);\n const relativeDefault = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n const listDefault = new Intl.ListFormat(language);\n return {\n language,\n formatDate: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : dateLong.format(d);\n },\n formatDateTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : dateTimeLong.format(d);\n },\n formatTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : timeShort.format(d);\n },\n formatNumber: (value, options) => {\n if (value == null || Number.isNaN(value))\n return PLACEHOLDER;\n return options ? new Intl.NumberFormat(language, options).format(value) : numberDefault.format(value);\n },\n formatRelativeTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n const diffSeconds = (d.getTime() - Date.now()) / 1000;\n const abs = Math.abs(diffSeconds);\n const { unit, seconds } = RELATIVE_UNITS.find((u) => abs >= u.seconds) ?? RELATIVE_UNITS[RELATIVE_UNITS.length - 1];\n const value = Math.round(diffSeconds / seconds);\n const formatter = options ? new Intl.RelativeTimeFormat(language, options) : relativeDefault;\n return formatter.format(value, unit);\n },\n formatList: (items, options) => {\n const filtered = items.filter((v) => v != null && v !== '');\n if (filtered.length === 0)\n return '';\n return options ? new Intl.ListFormat(language, options).format(filtered) : listDefault.format(filtered);\n },\n };\n }, [language]);\n}\n//# sourceMappingURL=useLocaleFormat.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport { I18nextProvider, Trans, useTranslation } from 'react-i18next';\nimport { i18nInstance, NAMESPACE } from './instance.js';\nimport { useLanguage } from './LanguageProvider.js';\nexport { Trans };\nfunction detectLanguage(lng) {\n return lng ?? navigator.language?.split('-')[0] ?? 'en';\n}\nexport function I18nProvider({ lng, children }) {\n // Set language synchronously on first render to avoid flash of wrong language\n const language = detectLanguage(lng);\n if (i18nInstance.language !== language) {\n void i18nInstance.changeLanguage(language);\n }\n // Also react to prop changes\n useEffect(() => {\n const lang = detectLanguage(lng);\n if (i18nInstance.language !== lang) {\n void i18nInstance.changeLanguage(lang);\n }\n }, [lng]);\n return _jsx(I18nextProvider, { i18n: i18nInstance, children: children });\n}\n/**\n * Binds i18next to the language reported by the surrounding `LanguageProvider`.\n * Use this inside `VertesiaShell` (or wherever a `LanguageProvider` ancestor is\n * available) so language changes propagate to all `useUITranslation()` callers\n * without a static `lng` prop.\n */\nexport function LanguageBoundI18nProvider({ children }) {\n const { language } = useLanguage();\n return _jsx(I18nProvider, { lng: language, children: children });\n}\n/**\n * Hook for components inside @vertesia/ui to get translation functions.\n * Always binds to the 'vertesia.ui' namespace on the scoped instance.\n */\nexport function useUITranslation() {\n return useTranslation(NAMESPACE, { i18n: i18nInstance });\n}\nexport { i18nInstance, NAMESPACE } from './instance.js';\nexport { LanguageProvider, LanguageProviderContext, useLanguage, } from './LanguageProvider.js';\nexport { isRTL, RTL_LANGUAGES, resolveLanguage, SUPPORTED_LANGUAGES, } from './rtl.js';\nexport { useLocaleFormat } from './useLocaleFormat.js';\n//# sourceMappingURL=index.js.map"],"mappings":"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"}
1
+ {"version":3,"file":"vertesia-ui-i18n.js","names":["ar","de","en","es","fr","it","ja","ko","pt","ru","tr","zh","zhTW","_jsx","_jsx"],"sources":["i18n/locales/ar.json","i18n/locales/de.json","i18n/locales/en.json","i18n/locales/es.json","i18n/locales/fr.json","i18n/locales/it.json","i18n/locales/ja.json","i18n/locales/ko.json","i18n/locales/pt.json","i18n/locales/ru.json","i18n/locales/tr.json","i18n/locales/zh.json","i18n/locales/zh-TW.json","i18n/instance.js","i18n/rtl.js","i18n/LanguageProvider.js","i18n/useLocaleFormat.js","i18n/index.js"],"sourcesContent":["","","","","","","","","","","","","","import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport ar from './locales/ar.json';\nimport de from './locales/de.json';\nimport en from './locales/en.json';\nimport es from './locales/es.json';\nimport fr from './locales/fr.json';\nimport it from './locales/it.json';\nimport ja from './locales/ja.json';\nimport ko from './locales/ko.json';\nimport pt from './locales/pt.json';\nimport ru from './locales/ru.json';\nimport tr from './locales/tr.json';\nimport zh from './locales/zh.json';\nimport zhTW from './locales/zh-TW.json';\nexport const NAMESPACE = 'vertesia.ui';\n// Scoped instance — does NOT touch the global i18next singleton\nconst i18nInstance = i18next.createInstance();\nvoid i18nInstance.use(initReactI18next).init({\n resources: {\n ar: { [NAMESPACE]: ar },\n de: { [NAMESPACE]: de },\n en: { [NAMESPACE]: en },\n es: { [NAMESPACE]: es },\n fr: { [NAMESPACE]: fr },\n it: { [NAMESPACE]: it },\n ja: { [NAMESPACE]: ja },\n ko: { [NAMESPACE]: ko },\n pt: { [NAMESPACE]: pt },\n ru: { [NAMESPACE]: ru },\n tr: { [NAMESPACE]: tr },\n zh: { [NAMESPACE]: zh },\n 'zh-TW': { [NAMESPACE]: zhTW },\n },\n fallbackLng: 'en',\n returnEmptyString: false,\n ns: [NAMESPACE],\n defaultNS: NAMESPACE,\n interpolation: {\n escapeValue: false, // React already escapes\n },\n react: {\n useSuspense: false, // Translations are bundled, no async loading\n },\n});\nexport { i18nInstance };\n//# sourceMappingURL=instance.js.map","/**\n * RTL detection and language resolution for the @vertesia/ui locale set.\n *\n * SUPPORTED_LANGUAGES is the single source of truth for what locales the\n * switcher offers, and must stay in sync with the resources registered in\n * `./instance.ts`. A divergence-guard test (`./rtl.test.ts`) fails the build\n * if the two diverge.\n *\n * RTL_LANGUAGES is deliberately broader than SUPPORTED_LANGUAGES so that\n * dir=\"rtl\" handling is forward-compatible when new RTL locales (he, fa, ur,\n * ...) are added to instance.ts later.\n */\nexport const SUPPORTED_LANGUAGES = [\n 'ar',\n 'de',\n 'en',\n 'es',\n 'fr',\n 'it',\n 'ja',\n 'ko',\n 'pt',\n 'ru',\n 'tr',\n 'zh',\n 'zh-TW',\n];\nexport const RTL_LANGUAGES = new Set(['ar', 'he', 'fa', 'ur']);\nexport function isRTL(lng) {\n if (!lng)\n return false;\n return RTL_LANGUAGES.has(lng.split('-')[0].toLowerCase());\n}\n/**\n * Resolve any raw language code (BCP-47 or bare) to a SupportedLanguage:\n * 1. exact match against SUPPORTED_LANGUAGES (preserves `zh-TW` vs `zh`)\n * 2. base-language fallback (`pt-BR` -> `pt`)\n * 3. `'en'` fallback\n *\n * The inline FOUC script in `index.html` must reimplement this same logic\n * verbatim (it cannot import ESM before bundle load).\n */\nexport function resolveLanguage(raw) {\n if (!raw)\n return 'en';\n const list = SUPPORTED_LANGUAGES;\n if (list.includes(raw))\n return raw;\n const base = raw.split('-')[0];\n if (list.includes(base))\n return base;\n return 'en';\n}\n//# sourceMappingURL=rtl.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { DirectionProvider } from '@radix-ui/react-direction';\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react';\nimport { isRTL, resolveLanguage } from './rtl.js';\nconst initialState = {\n language: 'en',\n setLanguage: () => null,\n isRTL: false,\n};\nconst LanguageProviderContext = createContext(initialState);\nexport { LanguageProviderContext };\nfunction readInitialLanguage(storageKey, defaultLanguage) {\n if (typeof window === 'undefined')\n return defaultLanguage;\n const stored = window.localStorage?.getItem(storageKey);\n if (stored)\n return resolveLanguage(stored);\n const nav = window.navigator?.language;\n if (nav)\n return resolveLanguage(nav);\n return defaultLanguage;\n}\nexport function LanguageProvider({ children, defaultLanguage = 'en', storageKey = 'vertesia-ui-language', ...props }) {\n const [language, setLanguage] = useState(() => readInitialLanguage(storageKey, defaultLanguage));\n const rtl = isRTL(language);\n useEffect(() => {\n const root = window.document.documentElement;\n root.lang = language;\n root.dir = rtl ? 'rtl' : 'ltr';\n }, [language, rtl]);\n const value = useMemo(() => ({\n language,\n isRTL: rtl,\n setLanguage: (next) => {\n window.localStorage?.setItem(storageKey, next);\n setLanguage(next);\n },\n }), [language, rtl, storageKey]);\n return (_jsx(LanguageProviderContext.Provider, { ...props, value: value, children: _jsx(DirectionProvider, { dir: rtl ? 'rtl' : 'ltr', children: children }) }));\n}\nexport function useLanguage() {\n const context = useContext(LanguageProviderContext);\n if (context === undefined) {\n throw new Error('useLanguage must be used within a LanguageProvider');\n }\n return context;\n}\n//# sourceMappingURL=LanguageProvider.js.map","import { useMemo } from 'react';\nimport { useLanguage } from './LanguageProvider.js';\nfunction toDate(input) {\n if (input == null)\n return null;\n const d = input instanceof Date ? input : new Date(input);\n return Number.isNaN(d.getTime()) ? null : d;\n}\nconst PLACEHOLDER = '—';\nconst RELATIVE_UNITS = [\n { unit: 'year', seconds: 31536000 },\n { unit: 'month', seconds: 2628000 },\n { unit: 'week', seconds: 604800 },\n { unit: 'day', seconds: 86400 },\n { unit: 'hour', seconds: 3600 },\n { unit: 'minute', seconds: 60 },\n { unit: 'second', seconds: 1 },\n];\nexport function useLocaleFormat() {\n const { language } = useLanguage();\n return useMemo(() => {\n // dateStyle: 'long' so each locale shows its native flavor — Japanese\n // gets 年月日 markers, English gets \"May 11, 2026\", Arabic gets month\n // names, etc. The 'short' style is too aggressively numeric (it\n // renders Japanese as \"2026/05/11\", which is correct per CLDR but\n // doesn't feel localized to users). Call sites that want compact\n // numeric output can pass `{ dateStyle: 'short' }` explicitly.\n const dateLong = new Intl.DateTimeFormat(language, { dateStyle: 'long' });\n const dateTimeLong = new Intl.DateTimeFormat(language, { dateStyle: 'long', timeStyle: 'short' });\n const timeShort = new Intl.DateTimeFormat(language, { timeStyle: 'short' });\n const numberDefault = new Intl.NumberFormat(language);\n const relativeDefault = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n const listDefault = new Intl.ListFormat(language);\n return {\n language,\n formatDate: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : dateLong.format(d);\n },\n formatDateTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : dateTimeLong.format(d);\n },\n formatTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : timeShort.format(d);\n },\n formatNumber: (value, options) => {\n if (value == null || Number.isNaN(value))\n return PLACEHOLDER;\n return options ? new Intl.NumberFormat(language, options).format(value) : numberDefault.format(value);\n },\n formatRelativeTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n const diffSeconds = (d.getTime() - Date.now()) / 1000;\n const abs = Math.abs(diffSeconds);\n const { unit, seconds } = RELATIVE_UNITS.find((u) => abs >= u.seconds) ?? RELATIVE_UNITS[RELATIVE_UNITS.length - 1];\n const value = Math.round(diffSeconds / seconds);\n const formatter = options ? new Intl.RelativeTimeFormat(language, options) : relativeDefault;\n return formatter.format(value, unit);\n },\n formatList: (items, options) => {\n const filtered = items.filter((v) => v != null && v !== '');\n if (filtered.length === 0)\n return '';\n return options ? new Intl.ListFormat(language, options).format(filtered) : listDefault.format(filtered);\n },\n };\n }, [language]);\n}\n//# sourceMappingURL=useLocaleFormat.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport { I18nextProvider, Trans, useTranslation } from 'react-i18next';\nimport { i18nInstance, NAMESPACE } from './instance.js';\nimport { useLanguage } from './LanguageProvider.js';\nexport { Trans };\nfunction detectLanguage(lng) {\n return lng ?? navigator.language?.split('-')[0] ?? 'en';\n}\nexport function I18nProvider({ lng, children }) {\n // Set language synchronously on first render to avoid flash of wrong language\n const language = detectLanguage(lng);\n if (i18nInstance.language !== language) {\n void i18nInstance.changeLanguage(language);\n }\n // Also react to prop changes\n useEffect(() => {\n const lang = detectLanguage(lng);\n if (i18nInstance.language !== lang) {\n void i18nInstance.changeLanguage(lang);\n }\n }, [lng]);\n return _jsx(I18nextProvider, { i18n: i18nInstance, children: children });\n}\n/**\n * Binds i18next to the language reported by the surrounding `LanguageProvider`.\n * Use this inside `VertesiaShell` (or wherever a `LanguageProvider` ancestor is\n * available) so language changes propagate to all `useUITranslation()` callers\n * without a static `lng` prop.\n */\nexport function LanguageBoundI18nProvider({ children }) {\n const { language } = useLanguage();\n return _jsx(I18nProvider, { lng: language, children: children });\n}\n/**\n * Hook for components inside @vertesia/ui to get translation functions.\n * Always binds to the 'vertesia.ui' namespace on the scoped instance.\n */\nexport function useUITranslation() {\n return useTranslation(NAMESPACE, { i18n: i18nInstance });\n}\nexport { i18nInstance, NAMESPACE } from './instance.js';\nexport { LanguageProvider, LanguageProviderContext, useLanguage, } from './LanguageProvider.js';\nexport { isRTL, RTL_LANGUAGES, resolveLanguage, SUPPORTED_LANGUAGES, } from './rtl.js';\nexport { useLocaleFormat } from './useLocaleFormat.js';\n//# sourceMappingURL=index.js.map"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import{Fragment as e,jsx as t,jsxs as n}from"react/jsx-runtime";import{MarkdownComponentEditor as r,MarkdownDocumentEditor as i,MarkdownRichTextEditor as a,getMarkdownCompatibility as o}from"@vertesia/rich-text";import{Button as s,DropdownMenu as c,DropdownMenuContent as l,DropdownMenuItem as u,DropdownMenuTrigger as d,Modal as f,ModalBody as p,ModalFooter as m,ModalTitle as h,Spinner as g,Textarea as _,VTooltip as v,cn as y,usePortalContainer as b,useToast as x}from"@vertesia/ui/core";import{useUITranslation as S}from"@vertesia/ui/i18n";import C,{createContext as w,memo as T,useCallback as E,useContext as D,useEffect as O,useId as k,useMemo as A,useRef as j,useState as M}from"react";import*as N from"@radix-ui/react-dialog";import{useUserSession as P}from"@vertesia/ui/session";import{BarChart3 as F,Bold as ee,Check as te,ChevronDown as ne,Code as I,Copy as re,Download as L,FileText as R,GitBranch as z,Image as ie,Italic as B,Link as ae,List as oe,ListOrdered as se,Loader2 as ce,Maximize2 as le,MessageSquare as V,MessageSquarePlus as H,Minimize2 as ue,Minus as de,Quote as fe,Redo2 as U,Send as W,SquareCode as pe,Strikethrough as me,Table as he,Undo2 as ge,X as _e}from"lucide-react";import ve from"papaparse";import{VegaEmbed as ye}from"react-vega";import{clsx as be}from"clsx";import{twMerge as xe}from"tailwind-merge";import{FusionFragmentHandler as Se,FusionFragmentProvider as G}from"@vertesia/fusion-ux";import Ce from"dompurify";import we from"mermaid";import Te,{defaultUrlTransform as Ee}from"react-markdown";import De from"rehype-katex";import{defListHastHandlers as Oe,remarkDefinitionList as ke}from"remark-definition-list";import Ae from"remark-directive";import je from"remark-gfm";import Me from"remark-github-blockquote-alert";import Ne from"remark-math";import Pe from"remark-supersub";import{SKIP as Fe,visit as Ie}from"unist-util-visit";import{FloatingPortal as Le,autoUpdate as Re,flip as ze,offset as Be,shift as Ve,useFloating as He}from"@floating-ui/react";const Ue=C.createContext({});function We({children:e,artifactRunId:n,onProposalSelect:r,onProposalSubmit:i,MarkdownRenderer:a}){let o=A(()=>({artifactRunId:n,onProposalSelect:r,onProposalSubmit:i,MarkdownRenderer:a}),[n,r,i,a]);return t(Ue.Provider,{value:o,children:e})}function K(){return C.useContext(Ue)}const Ge=w(null);function Ke(){return D(Ge)}function qe(...e){return xe(be(e))}const Je=w(null);function Ye(){return D(Je)}function Xe(e){return e.startsWith(`agents/`)||e.startsWith(`documents/`)}function Ze(e,t,n=`inline`){return`artifact:${e}:${t}:${n}`}function Qe(e){return`file:${e}`}function $e({error:e,chartTitle:r}){return t(`div`,{className:`flex items-center justify-center h-full bg-red-50 dark:bg-red-950 rounded-md p-4`,children:n(`div`,{className:`text-center`,children:[n(`p`,{className:`text-sm font-medium text-red-600 dark:text-red-400`,children:[`Cannot render `,r||`Vega-Lite`,` chart`]}),t(`p`,{className:`text-xs text-red-500 dark:text-red-500 mt-1 max-w-xs truncate`,children:e})]})})}function et({isOpen:e,onClose:r,title:i,description:a,children:o}){let{t:c}=S();return t(N.Root,{open:e,onOpenChange:e=>!e&&r(),children:n(N.Portal,{children:[t(N.Overlay,{className:`fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-all duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`}),n(N.Content,{className:`fixed inset-2 sm:inset-4 z-50 flex flex-col bg-white dark:bg-gray-900 rounded-xl shadow-2xl transition-all duration-300 ease-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-98 data-[state=closed]:slide-out-to-bottom-2 data-[state=open]:slide-in-from-bottom-2`,onEscapeKeyDown:r,children:[t(N.Close,{asChild:!0,children:t(s,{variant:`unstyled`,onClick:r,className:`absolute top-3 end-3 z-10 p-2 rounded-lg bg-white/80 dark:bg-gray-800/80 backdrop-blur-sm hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors duration-150 shadow-sm`,"aria-label":c(`agent.closeFullscreen`),children:t(_e,{className:`w-5 h-5 text-gray-600 dark:text-gray-300`})})}),t(`div`,{className:`flex-1 overflow-auto p-4 sm:p-6 animate-in fade-in-0 duration-500 delay-150`,children:o}),t(`div`,{className:`flex items-center justify-between px-4 sm:px-6 py-3 border-t border-gray-200 dark:border-gray-800 bg-gray-50/50 dark:bg-gray-800/50 rounded-b-xl`,children:n(`div`,{className:`flex flex-col`,children:[t(N.Title,{className:`text-base font-semibold text-gray-900 dark:text-gray-100`,children:i||c(`agent.dashboard`)}),a&&t(N.Description,{className:`text-sm text-gray-500 dark:text-gray-400 mt-0.5`,children:a})]})})]})]})})}function tt(e,t){if(t===`chart`)return 280;let n=1;if(e.vconcat)n=Array.isArray(e.vconcat)?e.vconcat.length:1;else if(e.concat){let t=e.columns||2,r=Array.isArray(e.concat)?e.concat.length:1;n=Math.ceil(r/t)}else e.facet&&(n=2);return Math.max(500,n*280+40)}const nt={categorical:[`#6366f1`,`#8b5cf6`,`#ec4899`,`#f43f5e`,`#f97316`,`#eab308`,`#22c55e`,`#14b8a6`,`#06b6d4`,`#3b82f6`],blues:[`#dbeafe`,`#93c5fd`,`#3b82f6`,`#1d4ed8`,`#1e3a8a`],purples:[`#f3e8ff`,`#c4b5fd`,`#8b5cf6`,`#6d28d9`,`#4c1d95`],greens:[`#dcfce7`,`#86efac`,`#22c55e`,`#15803d`,`#14532d`],diverging:[`#ef4444`,`#fca5a5`,`#fef3c7`,`#86efac`,`#22c55e`]};function rt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function it(e){return rt(e)}function at(e){let t=JSON.parse(JSON.stringify(e)),n=[`vconcat`,`hconcat`,`concat`];if(!n.some(e=>Array.isArray(t[e])))return t;let r=[];if(Array.isArray(t.params))for(let e of t.params)e&&typeof e==`object`&&e.name&&e.select&&r.push({name:e.name,param:e});if(r.length===0)return t;for(let{name:e,param:i}of r){let r=i.select?.fields||[],a=i.select?.bind===`legend`,o=null;for(let e of n)if(Array.isArray(t[e])){o=t[e];break}if(!o||o.length===0)continue;let s=0;for(let e=0;e<o.length;e++){let t=o[e];if(st(t,r)||a&&ct(t,r)){s=e;break}}let c=o[s];c.params||=[],c.params.push(i),t.params=(t.params??[]).filter(t=>t.name!==e)}return Array.isArray(t.params)&&t.params.length===0&&delete t.params,t}function ot(e,t){if(!t||Object.keys(t).length===0)return e;let n=JSON.parse(JSON.stringify(e)),r=e=>{for(let n of e)n.name&&n.name in t&&(n.value=t[n.name])};Array.isArray(n.params)&&r(n.params);let i=e=>{if(Array.isArray(e)){for(let t of e)if(Array.isArray(t.params)&&r(t.params),t.vconcat&&i(t.vconcat),t.hconcat&&i(t.hconcat),t.concat&&i(t.concat),Array.isArray(t.layer))for(let e of t.layer)Array.isArray(e.params)&&r(e.params)}};if(n.vconcat&&i(n.vconcat),n.hconcat&&i(n.hconcat),n.concat&&i(n.concat),Array.isArray(n.layer))for(let e of n.layer)e&&Array.isArray(e.params)&&r(e.params);return n}function st(e,t){if(!e?.encoding)return!1;for(let n of t)for(let t of Object.values(e.encoding))if(t.field===n)return!0;if(Array.isArray(e.layer)){for(let n of e.layer)if(st(n,t))return!0}return!1}function ct(e,t){if(!e)return!1;let n=e=>{if(!e)return!1;let n=e.color?.field;return!!n&&t.includes(n)};if(n(e.encoding))return!0;if(Array.isArray(e.layer)){for(let t of e.layer)if(n(t.encoding))return!0}return!1}function lt(e,t=[]){let n=[];if(!e||typeof e!=`object`)return n;if(e.data&&typeof e.data==`object`){let r=e.data.url;typeof r==`string`&&r.startsWith(`artifact:`)&&n.push({path:[...t,`data`],artifactPath:r.replace(/^artifact:/,``).trim()})}for(let r of[`layer`,`vconcat`,`hconcat`,`concat`,`spec`,`repeat`,`facet`])if(r in e){let i=e[r];Array.isArray(i)?i.forEach((e,i)=>{it(e)&&n.push(...lt(e,[...t,r,String(i)]))}):it(i)&&n.push(...lt(i,[...t,r]))}return n}function ut(e,t){let n=JSON.parse(JSON.stringify(e));for(let[e,r]of t){let t=e.split(`.`),i=n;for(let e=0;e<t.length-1;e++){let n=i[t[e]];if(!rt(n))break;i=n}let a=t[t.length-1],o=i[a];rt(o)&&(delete o.url,o.values=r)}return n}function dt(e){let t={background:`transparent`,view:{stroke:`transparent`},range:{category:nt.categorical,diverging:nt.diverging,heatmap:nt.purples,ramp:nt.blues},mark:{tooltip:!0},bar:{tooltip:!0,cornerRadiusTopLeft:4,cornerRadiusTopRight:4},line:{tooltip:!0,strokeWidth:2.5,strokeCap:`round`},point:{tooltip:!0,size:60,filled:!0},area:{tooltip:!0,fillOpacity:.7,line:!0},rect:{tooltip:!0,cornerRadius:2},arc:{tooltip:!0,cornerRadius:4},circle:{tooltip:!0,size:80}};return e?{...t,axis:{labelColor:`#a1a1aa`,titleColor:`#e4e4e7`,gridColor:`#3f3f46`,domainColor:`#52525b`,tickColor:`#52525b`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,titleFontWeight:500},legend:{labelColor:`#a1a1aa`,titleColor:`#e4e4e7`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,symbolSize:100},title:{color:`#fafafa`,font:`Inter, system-ui, sans-serif`,fontSize:14,fontWeight:600}}:{...t,axis:{labelColor:`#71717a`,titleColor:`#3f3f46`,gridColor:`#e4e4e7`,domainColor:`#d4d4d8`,tickColor:`#d4d4d8`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,titleFontWeight:500},legend:{labelColor:`#71717a`,titleColor:`#3f3f46`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,symbolSize:100},title:{color:`#18181b`,font:`Inter, system-ui, sans-serif`,fontSize:14,fontWeight:600}}}const q=T(function({spec:r,artifactRunId:i}){let{t:a}=S(),{title:o,description:c,options:l}=r,u=r.spec,[d,f]=M(!1),[p,m]=M(!1),[h,g]=M(null),[_,v]=M(!1),y=j(null),b=j(null),x=j(null),{client:C}=P(),w=Ye(),T=j(C);T.current=C;let D=j(w);D.current=w;let[k,N]=M(null),[F,ee]=M(!1),[ne,I]=M(null),R=l?.mode||`chart`,z=R===`dashboard`,ie=l?.enableFullscreen??z,B=l?.height||tt(u,R);O(()=>{let e=lt(u);if(e.length===0){N(u),ee(!1),I(null);return}i?console.info(`[VegaLiteChart] resolving artifacts with runId:`,i,e.map(e=>e.artifactPath)):console.warn(`[VegaLiteChart] artifact references found but artifactRunId is missing!`,{references:e.map(e=>e.artifactPath),artifactRunId:i});let t=!1;return ee(!0),I(null),(async()=>{let n=new Map,r=T.current,a=D.current;for(let o of e)try{let e=o.path.join(`.`),t;if(i&&!Xe(o.artifactPath)){let e=Ze(i,o.artifactPath,`inline`);t=a?await a.getOrFetch(e,async()=>(await r.files.getArtifactDownloadUrl(i,o.artifactPath,`inline`)).url):(await r.files.getArtifactDownloadUrl(i,o.artifactPath,`inline`)).url}else{let e=Qe(o.artifactPath);t=a?await a.getOrFetch(e,async()=>(await r.files.getDownloadUrl(o.artifactPath)).url):(await r.files.getDownloadUrl(o.artifactPath)).url}let s=await fetch(t);if(!s.ok)throw Error(`Failed to fetch artifact data: ${s.statusText}`);let c=o.artifactPath.toLowerCase().endsWith(`.csv`),l;if(c){let e=await s.text();l=ve.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0}).data}else{let e=await s.json();l=Array.isArray(e)?e:[e]}n.set(e,l)}catch(e){console.error(`Failed to resolve artifact: ${o.artifactPath}`,e),t||I(`Failed to load data from artifact: ${o.artifactPath}`);return}if(!t){let e=ut(u,n);N(e),ee(!1)}})(),()=>{t=!0}},[u,i]);let[ae,oe]=M(!1),se=j(!1);O(()=>{let e=()=>{let e=document.documentElement.classList.contains(`dark`);e!==se.current&&(se.current=e,oe(e))};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>t.disconnect()},[]);let[V,H]=M(0),de=j(0);O(()=>{if(!x.current)return;let e,t=new ResizeObserver(t=>{clearTimeout(e),e=setTimeout(()=>{let e=t[0]?.contentRect.width;e&&e!==de.current&&(de.current=e,H(e))},100)});t.observe(x.current);let n=x.current.clientWidth;return de.current=n,H(n),()=>{clearTimeout(e),t.disconnect()}},[]);let fe=A(()=>lt(u).length>0,[u]),U=A(()=>{if(fe&&!k)return null;let e=k||u;return e?(l?.parameterValues&&(e=ot(e,l.parameterValues)),at(e)):null},[k,u,fe,l?.parameterValues]),W=E((e,t)=>{if(!e||typeof e!=`object`)return e;if(e.hconcat&&Array.isArray(e.hconcat)){let n=e.hconcat.length,r=(e.spacing??10)*(n-1),i=Math.floor((t-r)/n);return{...e,hconcat:e.hconcat.map(e=>W(e,i))}}if(e.vconcat&&Array.isArray(e.vconcat))return{...e,vconcat:e.vconcat.map(e=>W(e,t))};if(e.concat&&Array.isArray(e.concat)){let n=e.columns??e.concat.length,r=(e.spacing??10)*(n-1),i=Math.floor((t-r)/n);return{...e,concat:e.concat.map(e=>W(e,i))}}let n=e.width;return n===`container`||typeof n==`number`&&n>t?{...e,width:t}:e},[]),pe=E((e,t=!1)=>{if(!U)return null;let n=dt(ae),r=t?typeof window<`u`?Math.min(window.innerWidth-80,1400):1200:V>0?V-24:500,i=`vconcat`in U||`hconcat`in U||`concat`in U,a=i?{type:`pad`,contains:`padding`}:{type:`fit`,contains:`padding`},s=U;i&&r&&(s=W(U,r));let c=s.width,l=i?void 0:c===`container`?r:c??r,{width:u,...d}=s;return{$schema:`https://vega.github.io/schema/vega-lite/v6.json`,...!i&&l?{width:l}:{},height:t?void 0:e,autosize:a,...i?s:d,...o&&!U.title?{title:o}:{},config:{...n,...U.config}}},[U,o,ae,V,W]),me=E(async()=>{let e=_?b.current:y.current;if(!(!e||p))try{(await e.toCanvas(2)).toBlob(async e=>{e&&(await navigator.clipboard.write([new ClipboardItem({"image/png":e})]),m(!0),setTimeout(()=>m(!1),2e3))},`image/png`)}catch(e){console.error(`Failed to copy chart:`,e)}},[p,_]),he=E(async()=>{let e=_?b.current:y.current;if(!(!e||d)){f(!0);try{let t=await e.toImageURL(`png`,2),n=document.createElement(`a`);n.download=`${o||`chart`}.png`,n.href=t,n.click()}catch(e){console.error(`Failed to export chart:`,e)}finally{f(!1)}}},[o,d,_]),ge=E(e=>{y.current=e,g(null)},[]),_e=E(e=>{b.current=e},[]),be=E(e=>{console.error(`Vega-Lite rendering error:`,e),g(e instanceof Error?e.message:`Unknown error`)},[]),xe=E(()=>{v(e=>!e)},[]);O(()=>{g(null)},[u]);let Se=({className:e})=>n(`div`,{className:qe(`flex items-center gap-2`,e),children:[n(s,{variant:`unstyled`,onClick:me,disabled:p,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors disabled:opacity-50 flex items-center gap-1`,title:a(`agent.copyToClipboard`),children:[t(p?te:re,{className:`w-3 h-3`}),a(p?`agent.copied`:`agent.copy`)]}),n(s,{variant:`unstyled`,onClick:he,disabled:d,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1`,title:a(`agent.exportAsPng`),children:[t(L,{className:`w-3 h-3`}),a(d?`agent.exporting`:`agent.export`)]}),ie&&n(s,{variant:`unstyled`,onClick:xe,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors flex items-center gap-1`,title:a(_?`agent.exitFullscreen`:`agent.fullscreen`),children:[t(_?ue:le,{className:`w-3 h-3`}),a(_?`agent.exit`:`agent.fullscreen`)]})]});if(F||fe&&!k)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{className:`flex items-center justify-center bg-gray-50 dark:bg-gray-800 rounded`,style:{width:`100%`,height:B},children:n(`div`,{className:`flex items-center gap-2 text-gray-500 dark:text-gray-400`,children:[t(ce,{className:`w-5 h-5 animate-spin`}),t(`span`,{className:`text-sm`,children:`Loading data from artifacts...`})]})})]})});if(ne)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{style:{width:`100%`,height:B},children:t($e,{error:ne,chartTitle:o})})]})});if(h)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{style:{width:`100%`,height:B},children:t($e,{error:h,chartTitle:o})})]})});let G=pe(B),Ce=pe(0,!0);return G?(typeof window<`u`&&localStorage.getItem(`DEBUG_VEGA_RENDERS`)&&console.log(`VegaLite rendering with spec:`,{title:o,hasData:!!G.data?.values,dataLength:G.data?.values?.length}),n(e,{children:[t(`div`,{className:qe(`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,z&&`border-2`),children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[n(`div`,{className:`flex items-center justify-between`,children:[n(`div`,{className:`flex items-center gap-2`,children:[t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||(z?`Dashboard`:`Chart`)}),z&&t(`span`,{className:`text-xs px-2 py-0.5 rounded-full bg-indigo-100 dark:bg-indigo-900 text-indigo-700 dark:text-indigo-300`,children:`Interactive`})]}),t(Se,{})]}),c&&t(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:c}),t(`div`,{ref:x,className:`bg-white dark:bg-gray-900 rounded overflow-hidden`,style:{width:`100%`,height:B,minWidth:0},children:t(ye,{spec:G,onEmbed:e=>ge(e.view),onError:be,options:{renderer:l?.renderer||`canvas`,actions:!1}})})]})}),n(et,{isOpen:_,onClose:()=>v(!1),title:o||(z?`Dashboard`:`Chart`),description:c,children:[t(`div`,{className:`w-full h-full min-h-[calc(100vh-200px)]`,children:Ce&&t(ye,{spec:Ce,onEmbed:e=>_e(e.view),onError:be,options:{renderer:l?.renderer||`canvas`,actions:!1}})}),t(`div`,{className:`absolute bottom-6 end-6`,children:t(Se,{className:`bg-white dark:bg-gray-800 rounded-lg shadow-lg p-2 border border-gray-200 dark:border-gray-700`})})]})]})):null},(e,t)=>JSON.stringify(e.spec)===JSON.stringify(t.spec)&&e.artifactRunId===t.artifactRunId),ft={chart:{icon:F,label:`chart`,defaultHeight:200},mermaid:{icon:z,label:`diagram`,defaultHeight:150},proposal:{icon:V,label:`options`,defaultHeight:100},code:{icon:I,label:`code`,defaultHeight:80},image:{icon:ie,label:`image`,defaultHeight:150},link:{icon:ae,label:`link`,defaultHeight:24},expand:{icon:L,label:`content`,defaultHeight:100},table:{icon:he,label:`table`,defaultHeight:150},markdown:{icon:R,label:`content`,defaultHeight:100},"fusion-fragment":{icon:I,label:`fragment`,defaultHeight:150}};function J({type:e,error:r,onRetry:i,message:a,height:o}){let c=ft[e],l=o??c.defaultHeight,u=e===`link`;if(r)return n(`div`,{className:`flex items-center gap-2 rounded border border-destructive/30 bg-destructive/5 text-destructive ${u?`inline-flex px-2 py-1 text-sm`:`p-4`}`,style:u?void 0:{minHeight:l},children:[n(`span`,{className:`text-destructive`,children:[`Failed to load `,c.label]}),i&&t(s,{variant:`unstyled`,onClick:i,className:`ms-2 rounded bg-destructive/10 px-2 py-1 text-xs hover:bg-destructive/20 transition-colors text-destructive`,children:`Retry`})]});let d=c.icon;return u?n(`span`,{className:`inline-flex items-center gap-1 text-muted animate-pulse`,children:[t(d,{className:`h-3 w-3`}),t(`span`,{children:a||`Loading ${c.label}...`})]}):n(`div`,{className:`flex flex-col items-center justify-center gap-3 rounded border border-border bg-muted/30 animate-pulse`,style:{minHeight:l},children:[t(d,{className:`h-8 w-8 text-muted`}),t(`span`,{className:`text-sm text-muted`,children:a||`Loading ${c.label}...`}),t(`div`,{className:`flex gap-1`,children:[...[,,,]].map((e,n)=>t(`div`,{className:`h-2 w-2 rounded-full bg-muted animate-bounce`,style:{animationDelay:`${n*150}ms`}},`dot-${n}`))})]})}var Y=class extends C.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`CodeBlock rendering error (${this.props.type}):`,e,t),this.props.onError?.(e)}handleRetry=()=>{this.setState({hasError:!1,error:void 0})};render(){if(this.state.hasError){let{type:e,fallbackCode:r}=this.props;return n(`div`,{className:`space-y-2`,children:[t(J,{type:e,error:this.state.error?.message||`Rendering failed`,onRetry:this.handleRetry}),r&&n(`details`,{className:`text-sm`,children:[t(`summary`,{className:`cursor-pointer text-muted hover:text-foreground`,children:`Show raw content`}),t(`pre`,{className:`mt-2 overflow-x-auto rounded bg-muted/50 p-2 text-xs`,children:t(`code`,{children:r})})]})]})}return this.props.children}};function pt(e,t,n){let r=t.split(`.`).pop()?.toLowerCase();if(r===`svg`)return`mockup`;if([`png`,`jpg`,`jpeg`,`gif`,`webp`].includes(r||``))return`image`;if(r===`md`)return`markdown`;if(r===`csv`)return`table`;if(n===`json`&&typeof e==`object`&&e){let t=e;if(typeof t.$schema==`string`&&t.$schema.includes(`vega`)||t.library===`vega-lite`&&`spec`in t)return`vega-lite`;if(`template`in t&&`data`in t)return`fusion-fragment`;if(Array.isArray(e)&&e.length>0&&typeof e[0]==`object`)return`table`}return`code`}function mt(e){if(typeof e!=`object`||!e)return null;let t=e;return t.library===`vega-lite`&&`spec`in t&&typeof t.spec==`object`&&t.spec!==null?t:typeof t.$schema==`string`&&t.$schema.includes(`vega`)?{library:`vega-lite`,spec:t}:null}function ht({content:e}){let{headers:r,rows:i}=A(()=>{if(!Array.isArray(e)||e.length===0)return{headers:[],rows:[]};let t=e[0];if(typeof t!=`object`||!t)return{headers:[],rows:[]};let n=Object.keys(t);return{headers:n,rows:e.map(e=>n.map(t=>{let n=e[t];return n==null?``:typeof n==`object`?JSON.stringify(n):String(n)}))}},[e]);return r.length===0?t(J,{type:`table`,error:`No table data found`}):n(`div`,{className:`overflow-x-auto`,children:[n(`table`,{className:`min-w-full text-sm border-collapse`,children:[t(`thead`,{children:t(`tr`,{className:`border-b`,children:r.map(e=>t(`th`,{className:`px-3 py-2 text-start font-medium text-muted`,children:e},e))})}),t(`tbody`,{children:i.slice(0,100).map((e,n)=>t(`tr`,{className:`border-b border-muted/20`,children:e.map((e,n)=>t(`td`,{className:`px-3 py-2`,children:e},`cell-${n}`))},`row-${n}`))})]}),i.length>100&&n(`div`,{className:`text-sm text-muted py-2`,children:[`Showing 100 of `,i.length,` rows`]})]})}function gt({content:e,path:n}){let r=n.split(`.`).pop()?.toLowerCase()||``,i=typeof e==`string`?e:JSON.stringify(e,null,2);return t(`pre`,{className:`overflow-x-auto p-3 bg-muted/10 rounded text-sm`,children:t(`code`,{className:`language-${r}`,children:i})})}function _t(e){return Ce.sanitize(e,{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:[`use`],FORBID_TAGS:[`foreignObject`]})}function vt(e){return e.replace(/<svg([^>]*)>/i,(e,t)=>{let n=t;if(!/viewBox/i.test(n)){let e=/\swidth\s*=\s*["']?(\d+(?:\.\d+)?)/i.exec(n),t=/\sheight\s*=\s*["']?(\d+(?:\.\d+)?)/i.exec(n);e&&t&&(n+=` viewBox="0 0 ${e[1]} ${t[1]}"`)}return n=n.replace(/\swidth\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/i,``).replace(/\sheight\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/i,``),/style="/i.test(n)?n=n.replace(/style="([^"]*)"/i,(e,t)=>`style="${t};width:100%;height:auto;display:block;max-width:100%;"`):n+=` style="width:100%;height:auto;display:block;max-width:100%;"`,/preserveAspectRatio=/i.test(n)||(n+=` preserveAspectRatio="xMidYMid meet"`),`<svg${n}>`})}function yt({content:e}){let n=A(()=>{let t=typeof e==`string`?e.trim():``;return t?vt(_t(t)):null},[e]);return n?t(`div`,{style:{margin:`16px 0`,width:`100%`,overflowX:`auto`},dangerouslySetInnerHTML:{__html:n}}):t(J,{type:`expand`,error:`Empty mockup`})}function bt({content:e,path:n}){return t(`img`,{src:typeof e==`string`?e:``,alt:n.split(`/`).pop()||`Artifact image`,className:`max-w-full h-auto rounded`,loading:`lazy`})}function xt({content:e,renderType:n,path:r,runId:i,contentType:a}){let{MarkdownRenderer:o}=K();switch(A(()=>n===`auto`?pt(e,r,a):n,[e,r,a,n])){case`chart`:{let n=mt(e);return n?t(Y,{type:`chart`,fallbackCode:JSON.stringify(e,null,2),children:t(q,{spec:n,artifactRunId:i})}):t(J,{type:`chart`,error:`Only Vega-Lite charts are supported. Recharts rendering has been retired.`})}case`vega-lite`:{let n=mt(e);return n?t(Y,{type:`chart`,fallbackCode:JSON.stringify(e,null,2),children:t(q,{spec:n,artifactRunId:i})}):t(J,{type:`chart`,error:`Invalid Vega-Lite specification`})}case`fusion-fragment`:{let n=e;return console.log(`[ArtifactContentRenderer] fusion-fragment:`,{hasTemplate:!!n.template,hasData:!!n.data,runId:i,hasVegaLiteChart:!!q}),n.template&&n.data?t(Y,{type:`fusion-fragment`,fallbackCode:JSON.stringify(e,null,2),children:t(G,{data:n.data,ChartComponent:q,artifactRunId:i,children:t(Se,{code:JSON.stringify(n.template),data:n.data})})}):t(Y,{type:`fusion-fragment`,fallbackCode:JSON.stringify(e,null,2),children:t(Se,{code:JSON.stringify(e)})})}case`table`:return t(Y,{type:`table`,fallbackCode:JSON.stringify(e,null,2),children:t(ht,{content:e})});case`markdown`:{let n=typeof e==`string`?e:String(e);return t(Y,{type:`markdown`,fallbackCode:n,children:o?t(o,{artifactRunId:i,children:n}):t(`pre`,{className:`overflow-x-auto p-3 bg-muted/10 rounded text-sm`,children:t(`code`,{children:n})})})}case`mockup`:return t(Y,{type:`expand`,fallbackCode:typeof e==`string`?e:r,children:t(yt,{content:e})});case`image`:return t(Y,{type:`image`,fallbackCode:r,children:t(bt,{content:e,path:r})});default:return t(gt,{content:e,path:r})}}const St=`Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`;function Ct(e){let t=e.trim(),n=``,r=!1,i=!1;for(let e=0;e<t.length;e++){let a=t[e],o=e>0?t[e-1]:``;if(a===`"`&&!i&&o!==`\\`){r=!r,n+=a;continue}if(a===`'`&&!r&&o!==`\\`){i=!i,n+=a;continue}if((r||i)&&a===`\\`){let r=e;for(;t[r]===`\\`;)r++;if(t[r]===`n`){n+=`<br/>`,e=r;continue}}n+=a}return n}function wt(e){return e.replace(/<svg([^<>]*)>/i,(e,t)=>{let n=t.replace(/\swidth="[^"]*"/i,``).replace(/\sheight="[^"]*"/i,``);return/style="/i.test(n)?n=n.replace(/style="([^"]*)"/i,(e,t)=>`style="${t};width:100%;height:auto;display:block;max-width:100%;"`):n+=` style="width:100%;height:auto;display:block;max-width:100%;"`,/preserveAspectRatio=/i.test(n)||(n+=` preserveAspectRatio="xMidYMid meet"`),`<svg${n}>`})}we.initialize({startOnLoad:!1,theme:`default`,securityLevel:`loose`,fontFamily:St,suppressErrorRendering:!0,flowchart:{htmlLabels:!0,useMaxWidth:!0,nodeSpacing:40,rankSpacing:50,padding:12},sequence:{useMaxWidth:!0},themeVariables:{fontFamily:St}});function Tt({code:e,className:n}){let r=j(null),[i,a]=M(null),[o,s]=M(null),c=k().replace(/:/g,`_`);return O(()=>{let t=!1;return(async()=>{if(!e.trim()){a(null),s(null);return}try{s(null);let n=`mermaid-${c}-${Date.now()}`,r=Ct(e),{svg:i}=await we.render(n,r),o=wt(i);t||a(o)}catch(e){if(!t){let t=e instanceof Error?e.message:`Failed to render mermaid diagram`;s(t),a(null)}}})(),()=>{t=!0}},[e,c]),o?null:i?t(`div`,{ref:r,className:`my-4 w-full overflow-x-auto [&_svg]:mx-auto [&_svg]:w-full [&_svg]:h-auto [&_svg]:max-w-full ${n||``}`,dangerouslySetInnerHTML:{__html:i}}):t(`div`,{className:`my-4 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg animate-pulse ${n||``}`,children:t(`div`,{className:`h-32 bg-gray-200 dark:bg-gray-700 rounded`})})}function Et(e){switch(e.split(`.`).pop()?.toLowerCase()){case`json`:return`json`;case`md`:case`txt`:case`csv`:case`yaml`:case`yml`:return`text`;case`png`:case`jpg`:case`jpeg`:case`gif`:case`webp`:case`pdf`:return`binary`;default:return`text`}}function Dt({runId:e,path:t,parseJson:n=!0}){let{client:r}=P(),i=Ye(),a=j(r);a.current=r;let o=j(i);o.current=i;let[s,c]=M({data:void 0,rawContent:void 0,isLoading:!0,error:void 0,contentType:void 0}),l=E(async()=>{if(!e){c({data:void 0,rawContent:void 0,isLoading:!1,error:`No run ID provided`,contentType:void 0});return}if(!t){c({data:void 0,rawContent:void 0,isLoading:!1,error:`No artifact path provided`,contentType:void 0});return}c(e=>({...e,isLoading:!0,error:void 0}));let r=a.current,i=o.current,s=Et(t);try{let a=Ze(e,t,`inline`),o;o=i?await i.getOrFetch(a,async()=>(await r.files.getArtifactDownloadUrl(e,t,`inline`)).url):(await r.files.getArtifactDownloadUrl(e,t,`inline`)).url;let l=await fetch(o);if(!l.ok)throw Error(`Failed to fetch artifact: ${l.status} ${l.statusText}`);if(s===`binary`){c({data:o,rawContent:void 0,isLoading:!1,error:void 0,contentType:s,etag:l.headers.get(`etag`)?.replace(/^"(.*)"$/,`$1`)});return}let u=await l.text(),d;if(n&&s===`json`)try{d=JSON.parse(u)}catch{d=u}else d=u;c({data:d,rawContent:u,isLoading:!1,error:void 0,contentType:s,etag:l.headers.get(`etag`)?.replace(/^"(.*)"$/,`$1`)})}catch(e){let n=e instanceof Error?e.message:`Failed to fetch artifact`;console.error(`Failed to fetch artifact content:`,t,e),c({data:void 0,rawContent:void 0,isLoading:!1,error:n,contentType:s})}},[e,t,n]);O(()=>{l()},[l]);let u=E(()=>{c({data:void 0,rawContent:void 0,isLoading:!0,error:void 0,contentType:void 0}),l()},[l]);return{data:s.data,rawContent:s.rawContent,isLoading:s.isLoading,error:s.error,contentType:s.contentType,etag:s.etag,retry:u}}function Ot(e){let t=e.trim();if(t.length<2)return!0;if(!t.startsWith(`{`))return!1;try{return JSON.parse(t),!1}catch(e){let n=e instanceof Error?e.message:``,r=[`unexpected end`,`unterminated string`,`expected`,`unexpected token`],i=n.toLowerCase();if(r.some(e=>i.includes(e))){let e=0,n=0,r=!1,i=!1;for(let a of t){if(i){i=!1;continue}if(a===`\\`){i=!0;continue}if(a===`"`){r=!r;continue}r||(a===`{`?e++:a===`}`?e--:a===`[`?n++:a===`]`&&n--)}return e>0||n>0||r}return!1}}function kt(e){try{let t=e.trim(),n=t.indexOf(`{`),r=t.lastIndexOf(`}`);return n!==-1&&r>n&&(t=t.slice(n,r+1)),JSON.parse(t)}catch{return null}}function At(e){let t=typeof e.$schema==`string`&&e.$schema.includes(`vega`),n=e.library===`vega-lite`&&`spec`in e;return t||n?`vega-lite`:null}function jt({code:e}){let{artifactRunId:n}=K();n||console.warn(`[VegaLiteCodeBlockHandler] artifactRunId is missing from CodeBlockContext`);let r=A(()=>Ot(e),[e]),i=A(()=>{if(r)return null;let t=kt(e);return t?{library:`vega-lite`,spec:t}:null},[e,r]);return r?t(J,{type:`chart`,message:`Loading chart...`}):i?t(Y,{type:`chart`,fallbackCode:e,children:t(q,{spec:i,artifactRunId:n})}):t(J,{type:`chart`,error:`Invalid Vega-Lite specification`})}function Mt({code:e}){let{artifactRunId:n}=K();n||console.warn(`[ChartCodeBlockHandler] artifactRunId is missing from CodeBlockContext`);let r=A(()=>Ot(e),[e]),i=A(()=>{if(r)return null;let t=kt(e);return!t||!At(t)?null:t.library===`vega-lite`&&`spec`in t&&typeof t.spec==`object`?t:{library:`vega-lite`,spec:t}},[e,r]);return r?t(J,{type:`chart`,message:`Loading chart...`}):i?t(Y,{type:`chart`,fallbackCode:e,children:t(q,{spec:i,artifactRunId:n})}):t(J,{type:`chart`,error:`Invalid Vega-Lite chart specification`})}function Nt({code:e}){let n=e.trim();return n?t(Y,{type:`mermaid`,fallbackCode:e,children:t(Tt,{code:n})}):t(J,{type:`mermaid`,error:`Empty diagram`})}function Pt({code:e}){let n=A(()=>{let t=e.trim();return t?vt(_t(t)):null},[e]);return n?t(Y,{type:`code`,fallbackCode:e,children:t(`div`,{style:{margin:`16px 0`,width:`100%`,overflowX:`auto`},dangerouslySetInnerHTML:{__html:n}})}):t(J,{type:`code`,error:`Empty mockup`})}function Ft({code:e,language:n}){let{artifactRunId:r}=K(),i=e.trim(),a=A(()=>{if(!n?.includes(`:`))return`auto`;let e=n.split(`:`)[1];return[`chart`,`vega-lite`,`table`,`markdown`,`fusion-fragment`,`mockup`,`code`,`image`,`auto`].includes(e)?e:`auto`},[n]),{data:o,isLoading:s,error:c,contentType:l}=Dt({runId:r,path:i});return r?s?t(J,{type:`expand`,message:`Loading ${i}...`}):c?t(J,{type:`expand`,error:`Failed to load artifact: ${c}`}):o===void 0?t(J,{type:`expand`,error:`No content found in artifact`}):t(xt,{content:o,renderType:a,path:i,runId:r,contentType:l}):t(J,{type:`expand`,error:`No artifact run ID available`})}function It(e){return e?.startsWith(`expand`)??!1}function Lt(){return{chart:Mt,"vega-lite":jt,vegalite:jt,mermaid:Nt,mockup:Pt,svg:Pt}}const Rt=new Set([`store`,`document`,`collection`,`interaction`,`prompt`,`agent`,`workflow`,`process`,`run`]);function zt(e){return e.trim().replace(/^\/+/,``)}function Bt(e){if(e.startsWith(`artifact:`))return{scheme:`artifact`,path:e.slice(9).trim()};if(e.startsWith(`image:`))return{scheme:`image`,path:e.slice(6).trim()};let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);if(Rt.has(n))return{scheme:n,path:zt(e.slice(t+1))}}return{scheme:`standard`,path:e}}function Vt({rawUrl:e,artifactRunId:t,disposition:n=`inline`}){let{client:r}=P(),i=Ye(),a=j(r);a.current=r;let o=j(i);o.current=i;let{scheme:s,path:c}=Bt(e),[l,u]=M(()=>{if(s===`standard`)return{url:e,isLoading:!1,error:void 0};if(i&&(s===`artifact`||s===`image`)){let e;e=s===`artifact`&&t&&!Xe(c)?Ze(t,c,n):Qe(c);let r=i.getUrl(e);if(r)return{url:r,isLoading:!1,error:void 0}}return{url:void 0,isLoading:!0,error:void 0}}),d=E(async()=>{if(s===`standard`)return;if(s!==`artifact`&&s!==`image`){u({url:void 0,isLoading:!1,error:`Unknown scheme: ${s}`});return}u(e=>({...e,isLoading:!0,error:void 0}));let e=a.current,r=o.current;try{let i;if(s===`artifact`)if(t&&!Xe(c)){let a=Ze(t,c,n);i=r?await r.getOrFetch(a,async()=>(await e.files.getArtifactDownloadUrl(t,c,n)).url):(await e.files.getArtifactDownloadUrl(t,c,n)).url}else{let t=Qe(c);i=r?await r.getOrFetch(t,async()=>(await e.files.getDownloadUrl(c)).url):(await e.files.getDownloadUrl(c)).url}else{let t=Qe(c);i=r?await r.getOrFetch(t,async()=>(await e.files.getDownloadUrl(c)).url):(await e.files.getDownloadUrl(c)).url}u({url:i,isLoading:!1,error:void 0})}catch(e){let t=e instanceof Error?e.message:`Failed to resolve URL`;console.error(`Failed to resolve URL:`,c,e),u({url:void 0,isLoading:!1,error:t})}},[s,c,t,n]);O(()=>{if(l.url&&!l.error)return;let e=!1;return e||(async()=>{await d()})(),()=>{e=!0}},[d,l.url,l.error]);let f=E(()=>{u({url:void 0,isLoading:!0,error:void 0}),d()},[d]);return{url:l.url,isLoading:l.isLoading,error:l.error,scheme:s,retry:f}}function Ht({src:e,alt:r,caption:i,className:a,artifactRunId:o}){let s=e||``,{scheme:c}=Bt(s);return c===`standard`?n(`figure`,{className:`my-4`,children:[t(`img`,{src:e,alt:r,className:a}),t(`figcaption`,{className:`mt-2 text-sm text-muted text-center italic`,children:i})]}):t(Ut,{rawSrc:s,alt:r,caption:i,artifactRunId:o,className:a})}function Ut({rawSrc:e,alt:r,caption:i,artifactRunId:a,className:o}){let{url:s,isLoading:c,error:l,retry:u}=Vt({rawUrl:e,artifactRunId:a,disposition:`inline`});return c?t(J,{type:`image`,message:r?`Loading ${r}...`:void 0}):l?t(J,{type:`image`,error:l,onRetry:u}):s?n(`figure`,{className:`my-4`,children:[t(`img`,{src:s,alt:r,className:o}),t(`figcaption`,{className:`mt-2 text-sm text-muted text-center italic`,children:i})]}):null}function Wt({node:e,src:n,alt:r,className:i,artifactRunId:a,ExistingImg:o,...s}){let c=n||``,{scheme:l}=Bt(c);return l===`standard`?typeof o==`function`?t(o,{node:e,src:n,alt:r,...s}):t(`img`,{src:n,alt:r,className:i,...s}):t(Gt,{rawSrc:c,alt:r,artifactRunId:a,className:i,rest:s})}function Gt({rawSrc:e,alt:n,artifactRunId:r,className:i,rest:a}){let{url:o,isLoading:s,error:c,retry:l}=Vt({rawUrl:e,artifactRunId:r,disposition:`inline`});return s?t(J,{type:`image`,message:n?`Loading ${n}...`:void 0}):c?t(J,{type:`image`,error:c,onRetry:l}):o?t(`img`,{src:o,alt:n,className:i,...a}):null}const Kt=w(()=>({kind:`none`}));Kt.Provider;function qt(){return D(Kt)}const Jt={store:`document`,document:`document`,collection:`collection`,interaction:`interaction`,prompt:`prompt`,agent:`agent`,workflow:`workflow`,process:`process`,run:`interaction_run`};function Yt(e){let t=e.indexOf(`:`);if(t<=0)return;let n=e.slice(0,t);if(!Object.hasOwn(Jt,n))return;let r=e.slice(t+1).trim().replace(/^\/+/,``);if(r)return{type:Jt[n],id:r}}function Xt({node:e,href:n,children:r,className:i,artifactRunId:a,onArtifactOpen:o,ExistingLink:s,...c}){let l=n||``,u=Yt(l);if(u)return t(Zt,{resource:u,rawHref:l,artifactRunId:a,className:i,ExistingLink:s,rest:c,children:r});let{scheme:d,path:f}=Bt(l);return d===`standard`?typeof s==`function`?t(s,{node:e,href:n,className:i,...c,children:r}):t(`a`,{href:n,...c,className:i,target:`_blank`,rel:`noopener noreferrer`,children:r}):t(Qt,{rawHref:l,artifactRunId:a,artifactPath:d===`artifact`?f:void 0,onArtifactOpen:o,className:i,rest:c,children:r})}function Zt({resource:e,rawHref:n,artifactRunId:r,className:i,children:a,ExistingLink:o,rest:c}){let l=qt()(e,{workflowRunId:r,source:`markdown`,rawHref:n});return l.kind===`navigate`?typeof o==`function`?t(o,{href:l.href,className:i,...c,children:a}):t(`a`,{href:l.href,...c,className:i,target:`_blank`,rel:`noopener noreferrer`,children:a}):l.kind===`activate`?t(s,{variant:`link`,size:`none`,className:i,onClick:l.onActivate,children:a}):t(`span`,{className:i,children:a})}function Qt({rawHref:e,artifactRunId:n,artifactPath:r,onArtifactOpen:i,className:a,children:o,rest:s}){let{url:c,isLoading:l,error:u,retry:d}=Vt({rawUrl:e,artifactRunId:n,disposition:`attachment`});return l?t(`span`,{className:`inline-flex items-center gap-1 text-muted`,children:t(J,{type:`link`})}):u?t(`span`,{className:`inline-flex items-center gap-1`,children:t(J,{type:`link`,error:u,onRetry:d})}):t(`a`,{href:c||`#`,...s,className:a,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>{r&&/\.md$/i.test(r)&&i&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&e.button===0&&(e.preventDefault(),i(r))},children:o})}const $t=[`artifact:`,`image:`,`store:`,`document://`,`collection:`,`interaction:`,`prompt:`,`agent:`,`workflow:`,`process:`,`run:`],en=/(!?\[[^[\]\n]*\]\()((?:artifact:|image:|store:|document:\/\/|collection:|interaction:|prompt:|agent:|workflow:|process:|run:)[^)[\n]+)(\))/g,tn=/`[^`\n]*`/g,nn=/(^|\n)(`{3,}|~{3,})[^\n]*\n[\s\S]*?\n\2(?=\n|$)/g,rn=/\s+("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\([^)]*\))\s*$/;function an(e){return $t.some(t=>e.startsWith(t))}function on(e){let t=e.trim();if(t.startsWith(`<`)){let n=t.indexOf(`>`);if(n>0&&an(t.slice(1,n).trim()))return e}let n=t.match(rn)?.index??-1,r=(n>=0?t.slice(0,n):t).trim(),i=n>=0?t.slice(n):``;return an(r)?`<${r}>${i}`:e}function sn(e){return e.replace(en,(e,t,n,r)=>`${t}${on(n)}${r}`)}function cn(e){let t=``,n=0;for(let r of e.matchAll(tn))t+=sn(e.slice(n,r.index)),t+=r[0],n=r.index+r[0].length;return t+=sn(e.slice(n)),t}function ln(e){if(!e||!$t.some(t=>e.includes(t)))return e;let t=``,n=0;for(let r of e.matchAll(nn))t+=cn(e.slice(n,r.index)),t+=r[0],n=r.index+r[0].length;return t+=cn(e.slice(n)),t}const un=/^([ \t]*):::([^\n]*?):::[ \t]*$/gm,dn=/^\w+/;function fn(e){return e?.includes(`:::`)?e.replace(un,(e,t,n)=>{let r=n.trim(),i=dn.exec(r);if(!i)return e;let a=i[0],o=r.slice(a.length).trim();return o?`${t}:::${a}\n${t}${o}\n${t}:::`:`${t}::${a}`}):e}const pn=/(^|\n)(`{3,}|~{3,})[^\n]*\n[\s\S]*?\n\2(?=\n|$)/g,mn=/`[^`\n]*`/g,hn=/\\\$/g,gn=/\\[^\s]/,_n=/[{}]/,vn=/[_^][\w{]/,yn=/^[a-zA-Z]$/,bn=/^[a-zA-Z]\s*=/,xn=/^\s/,Sn=/\s$/,Cn=/[+*/-]$/,wn=/\^[+-]$/;function Tn(e){return gn.test(e)||_n.test(e)||vn.test(e)||yn.test(e)||bn.test(e)}function En(e){return!!(xn.test(e)||Sn.test(e)||Cn.test(e)&&!wn.test(e))}function Dn(e){let t=[];for(let n=0;n<e.length;n++)if(e[n]===`$`&&!(n>0&&e[n-1]===`\\`)){if(n+1<e.length&&e[n+1]===`$`){n++;continue}n>0&&e[n-1]===`$`&&(n<2||e[n-2]!==`\\`)||t.push(n)}return t}function On(e,t,n){let r=e.slice(t+1,n);return r.length===0||r.includes(`
2
+ `)?null:r}function kn(e){let t=Dn(e);if(t.length<2)return e;let n=new Set,r=new Set,i=Array(t.length-1);for(let n=0;n<t.length-1;n++)i[n]=On(e,t[n],t[n+1]);let a=[];for(let e=0;e<t.length-1;e++){if(n.has(e))continue;let r=i[e];r!==null&&Tn(r)&&(n.add(e),n.add(e+1),a.push([t[e],t[e+1]]))}let o=0;for(;o<t.length;){if(n.has(o)){o++;continue}let e=o+1;for(;e<t.length&&n.has(e);)e++;if(e>=t.length)break;if(e>o+1){r.add(t[o]),o++;continue}let a=i[o];if(a===null){o++;continue}En(a)&&(r.add(t[o]),r.add(t[e])),n.add(o),n.add(e),o=e+1}for(let e=0;e<t.length;e++)n.has(e)||e+1<t.length&&n.has(e+1)&&r.add(t[e]);if(r.size===0&&a.length===0)return e;let s=[],c=0,l=Array.from(r).sort((e,t)=>e-t),u=0,d=0;for(;u<l.length||d<a.length;){let t=u<l.length?l[u]:1/0;if(t<(d<a.length?a[d][0]:1/0))t>c&&s.push(e.slice(c,t)),s.push(`\\$`),c=t+1,u++;else{let[t,n]=a[d];t>c&&s.push(e.slice(c,t));let r=e.slice(t,n+1);for(s.push(r.replace(hn,`\\text{\\textdollar}`)),c=n+1;u<l.length&&l[u]<=n;)u++;d++}}return c<e.length&&s.push(e.slice(c)),s.join(``)}function An(e){let t=[],n=0;for(let r of e.matchAll(mn))t.push(kn(e.slice(n,r.index))),t.push(r[0]),n=r.index+r[0].length;return t.push(kn(e.slice(n))),t.join(``)}function jn(e){if(!e?.includes(`$`))return e;let t=[],n=0;for(let r of e.matchAll(pn))t.push(An(e.slice(n,r.index))),t.push(r[0]),n=r.index+r[0].length;return t.push(An(e.slice(n))),t.join(``)}const Mn={note:`md-callout-info`,tip:`md-callout-info`,warning:`md-callout-attention`,important:`md-callout-attention`,caution:`md-callout-destructive`},Nn={note:`Note`,tip:`Tip`,warning:`Warning`,important:`Important`,caution:`Caution`};function Pn(){return e=>{Ie(e,e=>{if(e.type!==`containerDirective`&&e.type!==`leafDirective`&&e.type!==`textDirective`)return;let t=e;t.data||={};let n=t.data,r=t.attributes||{},i=t.name;if(i===`pagebreak`){n.hName=`hr`,n.hProperties={className:`md-pagebreak`};return}if(i===`columns`){n.hName=`div`,n.hProperties={className:`md-columns`};return}if(i===`column`){n.hName=`div`;let e={className:`md-column`};r.width&&(e.style=`flex-basis:${r.width};flex-grow:0;flex-shrink:0`),n.hProperties=e;return}if(i in Mn){n.hName=`div`,n.hProperties={className:`md-callout ${Mn[i]}`,"data-callout-type":i};let e=Nn[i];if(e&&t.children){let n={type:`paragraph`,data:{hName:`p`,hProperties:{className:`md-callout-title`}},children:[{type:`text`,value:e}]};t.children.unshift(n)}return}n.hName=`div`,n.hProperties={className:`md-${i}`,...Object.fromEntries(Object.entries(r).filter(([e])=>e!==`class`))},r.class&&(n.hProperties.className+=` ${r.class}`)})}}const Fn=[`artifact:`,`image:`,`store:`,`document:`,`document://`,`collection:`,`interaction:`,`prompt:`,`agent:`,`workflow:`,`process:`,`run:`];function In(e){return Fn.some(t=>e.startsWith(t))?e:Ee(e)}function Ln(){return e=>{Ie(e,`html`,(e,t,n)=>{let r=e,i=n;if(typeof r.value==`string`&&/<!--[\s\S]*?-->/.test(r.value)&&i?.children&&typeof t==`number`)return i.children.splice(t,1),[Fe,t]})}}const Rn=Lt();function X({children:e,components:n,remarkPlugins:r=[],removeComments:i=!0,artifactRunId:a,onArtifactOpen:o,className:s,codeClassName:c,inlineCodeClassName:l,linkClassName:u,imageClassName:d,onProposalSelect:f,onProposalSubmit:p,preserveSourcePositions:m=!1}){let h=Ke(),g=C.useMemo(()=>m?e:fn(ln(jn(e))),[e,m]),_=t(We,{artifactRunId:a,onProposalSelect:f,onProposalSubmit:p,MarkdownRenderer:X,children:t(Te,{remarkPlugins:C.useMemo(()=>{let e=[je,Ae,Pn,Me,ke,Pe,Ne,...r];return i&&e.push(Ln),e},[r,i]),rehypePlugins:C.useMemo(()=>[De],[]),remarkRehypeOptions:C.useMemo(()=>({handlers:{...Oe}}),[]),components:C.useMemo(()=>{let e=n||{},r=e.code,i=e.a,s=e.img,f=({node:e,className:n,children:i,...a})=>{let o=/language-([\w-]+)/.exec(n||``),s=!o,u=o?o[1]:``;if(!s&&u){if(h){let e=h.getComponent(u);if(e)return t(e,{code:String(i||``).trim(),language:u})}if(It(u))return t(Ft,{code:String(i||``).trim(),language:u});let e=Rn[u];if(e)return t(e,{code:String(i||``).trim(),language:u})}return typeof r==`function`?t(r,{node:e,className:n,...a,children:i}):t(`code`,{...a,className:s?`px-1.5 py-0.5 rounded ${l||``}`:` ${c||``}`,children:i})},p=e=>{let{node:n,href:r,children:s,...c}=e;return t(Xt,{node:n,href:r,className:u,artifactRunId:a,onArtifactOpen:o,ExistingLink:typeof i==`function`?i:void 0,...c,children:s})},m=e=>{let{node:n,src:r,alt:i,title:o,...c}=e;return o?t(Ht,{src:r,alt:i,caption:o,className:d,artifactRunId:a}):t(Wt,{node:n,src:r,alt:i,className:d,artifactRunId:a,ExistingImg:typeof s==`function`?s:void 0,...c})};return{...e,code:f,a:p,img:m}},[n,a,o,h,c,l,u,d]),urlTransform:In,children:g})});return s?t(`div`,{className:`md-content ${s}`,children:_}):t(`div`,{className:`md-content`,children:_})}const Z=e=>e.chain(),zn=e=>e.can().chain();function Bn(e){let[,t]=M(0);O(()=>{if(!e)return;let n=()=>t(e=>e+1);return e.on(`transaction`,n),e.on(`selectionUpdate`,n),()=>{e.off(`transaction`,n),e.off(`selectionUpdate`,n)}},[e])}const Q=e=>e.preventDefault();function Vn(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`c-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Hn(e){let{from:t,to:n}=e.state.selection;if(t>=n)return null;let r=e.state.doc.textBetween(t,n,`
3
+ `,` `).trim();if(!r)return null;let i=e.state.doc.resolve(t),a=`paragraph`;for(let e=i.depth;e>=0;e--){let t=i.node(e).type.name;if(t===`heading`){a=`heading`;break}if(t===`codeBlock`||t===`vertesiaCodeBlock`){a=`code block`;break}if(t===`blockquote`){a=`quote`;break}if(t===`listItem`||t===`taskItem`){a=`list item`;break}if(t===`table`){a=`table`;break}}return{blockLabel:a,quote:r,from:t,to:n}}function Un(e){let t=e.length,n=e.map((e,t)=>`${t+1}. On the ${e.blockLabel} “${e.quote}”:\n ${e.comment}`);return[`I've left ${t} comment${t===1?``:`s`} on the document:`,``,...n,``,`Please revise the document to address each comment, preserving everything else.`].join(`
4
+ `)}function Wn(e,t){return{contextElement:e.view.dom,getBoundingClientRect:()=>{try{let n=e.view.coordsAtPos(t.to),r=Math.max(1,n.bottom-n.top);return new DOMRect(n.right,n.top,1,r)}catch{return e.view.dom.getBoundingClientRect()}}}}function Gn({editor:e,selection:r,composing:i,draft:a,onStart:o,onDraftChange:c,onCancel:l,onAdd:u}){let{t:d}=S(),f=b(),{refs:p,floatingStyles:m}=He({placement:`right-start`,strategy:`fixed`,middleware:[Be(8),ze({fallbackPlacements:[`left-start`,`bottom-start`]}),Ve({padding:12})],whileElementsMounted:Re}),h=A(()=>Wn(e,r),[e,r]);return O(()=>{p.setPositionReference(h)},[h,p]),t(Le,{root:f,children:t(`div`,{ref:p.setFloating,style:m,className:`pointer-events-auto z-100`,children:i?n(`div`,{role:`dialog`,"aria-label":d(`agent.commentOnSelection`),className:`w-80 max-w-[calc(100vw-1.5rem)] space-y-2 rounded-lg border border-mixer-muted/25 bg-popover p-3 text-popover-foreground shadow-lg`,children:[n(`div`,{className:`line-clamp-2 text-xs text-muted`,children:[t(`span`,{className:`font-medium text-foreground`,children:d(`agent.commentingOn`)}),` `,n(`span`,{className:`italic`,children:[`“`,r.quote,`”`]})]}),t(_,{value:a,onChange:e=>c(e.target.value),placeholder:d(`agent.commentOnSelectionPlaceholder`),rows:3,autoFocus:!0,onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),l();return}e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),u())}}),n(`div`,{className:`flex justify-end gap-2`,children:[t(s,{variant:`outline`,size:`sm`,onClick:l,children:d(`store.cancelEdit`)}),t(s,{size:`sm`,onClick:u,disabled:!a.trim(),children:d(`agent.addComment`)})]})]}):t(v,{description:d(`agent.commentOnSelection`),asChild:!0,children:t(s,{variant:`secondary`,size:`sm`,onMouseDown:Q,onClick:o,"aria-label":d(`agent.commentOnSelection`),className:`size-9 rounded-full p-0 shadow-md`,children:t(H,{className:`size-4`})})})})})}function $({icon:e,label:n,active:r=!1,disabled:i=!1,onClick:a}){return t(s,{variant:`ghost`,size:`sm`,"aria-label":n,title:n,"aria-pressed":r,disabled:i,onMouseDown:Q,onClick:a,className:y(`size-8 shrink-0 rounded-md p-0 text-foreground hover:bg-muted/60`,r&&`bg-muted text-foreground`),children:t(e,{className:`size-4`})})}function Kn(){return t(`div`,{className:`mx-0.5 h-5 w-px shrink-0 bg-mixer-muted/30`,"aria-hidden":!0})}function qn({onSend:e,hasUnsentChanges:r,isSending:i,disabled:a}){let{t:o}=S();return n(s,{variant:r?`primary`:`ghost`,size:`sm`,className:y(`h-8 gap-1.5`,!r&&`text-muted`),onMouseDown:Q,onClick:()=>void e(),disabled:a||!r||i,children:[i?t(g,{size:`sm`}):t(W,{className:`size-3.5`}),o(`agent.sendChangesToAgent`)]})}function Jn({editor:r,className:i,editable:a=!0,onSendComment:o,onSendChangesToAgent:f,hasUnsentChanges:p=!1,isSendingChanges:m=!1,sendChangesDisabled:h=!1,toolbarStatus:g}){let{t:_}=S(),v=x();Bn(r);let[b,C]=M(!1),[w,T]=M(``),[D,k]=M(null),[A,N]=M(null),[P,F]=M([]),[te,re]=M(!1),[L,R]=M(!1),z=j(null);O(()=>{if(!r||!o)return;let e=()=>{let e=Hn(r);N(e),e&&(z.current=e)};return e(),r.on(`selectionUpdate`,e),r.on(`transaction`,e),()=>{r.off(`selectionUpdate`,e),r.off(`transaction`,e)}},[r,o]);let ie=E(()=>{let e=z.current;if(!e){v({status:`info`,title:_(`agent.selectTextToComment`),duration:2500});return}k(e),T(``),C(!0)},[_,v]),ae=E(()=>{C(!1),k(null),T(``)},[]),ce=E(()=>{let e=w.trim();!D||!e||(F(t=>[...t,{id:Vn(),...D,comment:e}]),C(!1),k(null),T(``),re(!0))},[w,D]),le=E(e=>{F(t=>t.filter(t=>t.id!==e))},[]),V=E(async()=>{if(!(!o||P.length===0||L)){R(!0);try{await o(Un(P)),F([]),re(!1)}finally{R(!1)}}},[L,o,P]);if(!r)return null;let H=[1,2,3].find(e=>r.isActive(`heading`,{level:e})),ue=_(H===1?`richText.heading1`:H===2?`richText.heading2`:H===3?`richText.heading3`:`richText.paragraph`),ve=r.isActive(`table`),ye=D??A;return n(e,{children:[n(`div`,{role:`toolbar`,"aria-label":_(`richText.blockStyle`),className:y(`flex min-h-10 shrink-0 items-center gap-0.5 overflow-x-auto border-b border-mixer-muted/25 px-1.5 py-1`,i),children:[t($,{icon:ge,label:_(`richText.undo`),disabled:!a||!zn(r).focus().undo().run(),onClick:()=>Z(r).focus().undo().run()}),t($,{icon:U,label:_(`richText.redo`),disabled:!a||!zn(r).focus().redo().run(),onClick:()=>Z(r).focus().redo().run()}),t(Kn,{}),n(c,{children:[t(d,{asChild:!0,children:n(s,{variant:`ghost`,size:`sm`,disabled:!a,onMouseDown:Q,className:`h-8 shrink-0 gap-1 px-2 text-xs font-medium text-foreground hover:bg-muted/60`,children:[ue,t(ne,{className:`size-3 opacity-60`})]})}),n(l,{align:`start`,children:[t(u,{onClick:()=>Z(r).focus().setParagraph().run(),children:_(`richText.paragraph`)}),t(u,{onClick:()=>Z(r).focus().setHeading({level:1}).run(),children:_(`richText.heading1`)}),t(u,{onClick:()=>Z(r).focus().setHeading({level:2}).run(),children:_(`richText.heading2`)}),t(u,{onClick:()=>Z(r).focus().setHeading({level:3}).run(),children:_(`richText.heading3`)})]})]}),t(Kn,{}),t($,{icon:ee,label:_(`richText.bold`),active:r.isActive(`bold`),disabled:!a,onClick:()=>Z(r).focus().toggleBold().run()}),t($,{icon:B,label:_(`richText.italic`),active:r.isActive(`italic`),disabled:!a,onClick:()=>Z(r).focus().toggleItalic().run()}),t($,{icon:me,label:_(`richText.strike`),active:r.isActive(`strike`),disabled:!a,onClick:()=>Z(r).focus().toggleStrike().run()}),t($,{icon:I,label:_(`richText.inlineCode`),active:r.isActive(`code`),disabled:!a,onClick:()=>Z(r).focus().toggleCode().run()}),t(Kn,{}),t($,{icon:oe,label:_(`richText.bulletList`),active:r.isActive(`bulletList`),disabled:!a,onClick:()=>Z(r).focus().toggleBulletList().run()}),t($,{icon:se,label:_(`richText.orderedList`),active:r.isActive(`orderedList`),disabled:!a,onClick:()=>Z(r).focus().toggleOrderedList().run()}),t($,{icon:fe,label:_(`richText.blockquote`),active:r.isActive(`blockquote`),disabled:!a,onClick:()=>Z(r).focus().toggleBlockquote().run()}),t($,{icon:pe,label:_(`richText.codeBlock`),active:r.isActive(`codeBlock`),disabled:!a,onClick:()=>Z(r).focus().toggleCodeBlock().run()}),t(Kn,{}),t($,{icon:de,label:_(`richText.horizontalRule`),disabled:!a,onClick:()=>Z(r).focus().setHorizontalRule().run()}),n(c,{children:[t(d,{asChild:!0,children:t(s,{variant:`ghost`,size:`sm`,disabled:!a,"aria-label":_(`richText.tableActions`),title:_(ve?`richText.tableActions`:`richText.table`),onMouseDown:Q,className:y(`size-8 shrink-0 rounded-md p-0 text-foreground hover:bg-muted/60`,ve&&`bg-muted`),children:t(he,{className:`size-4`})})}),t(l,{align:`start`,children:ve?n(e,{children:[t(u,{onClick:()=>Z(r).focus().addRowBefore().run(),children:_(`richText.addRowAbove`)}),t(u,{onClick:()=>Z(r).focus().addRowAfter().run(),children:_(`richText.addRowBelow`)}),t(u,{onClick:()=>Z(r).focus().deleteRow().run(),children:_(`richText.deleteRow`)}),t(u,{onClick:()=>Z(r).focus().addColumnBefore().run(),children:_(`richText.addColumnLeft`)}),t(u,{onClick:()=>Z(r).focus().addColumnAfter().run(),children:_(`richText.addColumnRight`)}),t(u,{onClick:()=>Z(r).focus().deleteColumn().run(),children:_(`richText.deleteColumn`)}),t(u,{onClick:()=>Z(r).focus().deleteTable().run(),children:_(`richText.deleteTable`)})]}):t(u,{onClick:()=>Z(r).focus().insertTable({rows:3,cols:3,withHeaderRow:!0}).run(),children:_(`richText.table`)})})]}),o||f?n(`div`,{className:`ms-auto flex shrink-0 items-center gap-1 ps-1`,children:[P.length>0?n(e,{children:[n(s,{variant:`ghost`,size:`sm`,className:`h-8 px-2 text-xs text-muted`,onClick:()=>re(e=>!e),children:[_(`agent.comments`),` (`,P.length,`)`]}),n(s,{size:`sm`,className:`h-8`,onClick:()=>void V(),disabled:L,children:[t(W,{className:`me-1 size-4`}),_(`agent.sendToAgent`)]})]}):null,f?n(e,{children:[g,t(qn,{onSend:f,hasUnsentChanges:p,isSending:m,disabled:h})]}):null]}):null]}),o&&ye?t(Gn,{editor:r,selection:ye,composing:b,draft:w,onStart:ie,onDraftChange:T,onCancel:ae,onAdd:ce}):null,te&&P.length>0?t(`ul`,{className:`max-h-48 shrink-0 space-y-1.5 overflow-y-auto border-b border-mixer-muted/15 px-3 py-2`,children:P.map(e=>n(`li`,{className:`flex items-start gap-2 rounded-md border border-mixer-muted/20 bg-muted/10 px-2 py-1.5`,children:[n(`div`,{className:`min-w-0 flex-1`,children:[n(`div`,{className:`truncate text-[11px] italic text-muted`,children:[`“`,e.quote,`”`]}),t(`div`,{className:`whitespace-pre-wrap text-xs text-foreground`,children:e.comment})]}),t(s,{variant:`ghost`,size:`sm`,"aria-label":_(`agent.deleteComment`),title:_(`agent.deleteComment`),className:`size-6 shrink-0 p-0 text-muted`,onClick:()=>le(e.id),children:t(_e,{className:`size-3.5`})})]},e.id))}):null]})}const Yn=Lt();function Xn({code:e,language:n}){let r=Ke(),i=n?r?.getComponent(n):void 0,a=n?Yn[n]:void 0,o=n?.startsWith(`expand:`)?Ft:i??a;return o?t(o,{code:e,language:n}):null}function Zn({src:e,alt:n,title:r}){let{artifactRunId:i}=K();return r?t(Ht,{src:e,alt:n,caption:r,artifactRunId:i}):t(Wt,{src:e,alt:n,artifactRunId:i})}function Qn({href:e,title:n,children:r}){let{artifactRunId:i}=K();return t(Xt,{href:e,artifactRunId:i,children:t(`span`,{title:n,children:r})})}function $n({raw:e}){let{artifactRunId:n}=K();return t(X,{artifactRunId:n,children:e})}const er={codeBlock:Xn,image:Zn,link:Qn,opaqueBlock:$n};function tr({artifactRunId:e,...n}){return t(We,{artifactRunId:e,MarkdownRenderer:X,children:t(a,{...n,...er})})}function nr({artifactRunId:e,className:i,contentClassName:a,editorClassName:o,onEditor:s,...c}){let[l,u]=M(null),d=E(e=>{u(e),s?.(e)},[s]);return t(We,{artifactRunId:e,MarkdownRenderer:X,children:n(`div`,{className:y(`overflow-hidden rounded-md border border-mixer-muted/30 bg-background`,i),children:[t(Jn,{editor:l,editable:c.editable!==!1}),t(r,{...c,...er,onEditor:d,contentClassName:y(`max-h-80 overflow-auto`,a),editorClassName:y(`vprose prose-sm min-h-24 max-w-none px-3 py-2 outline-none`,o)})]})})}function rr({artifactRunId:e,className:r,contentClassName:a,editorClassName:c,onEditor:l,onSendComment:u,onSendChangesToAgent:d,hasUnsentChanges:g=!1,isSendingChanges:v=!1,sendChangesDisabled:b=!1,toolbarStatus:x,...C}){let{t:w}=S(),[T,D]=M(null),O=E(e=>{D(e),l?.(e)},[l]),[k,A]=M(()=>o(C.value)===`lossy`?`choose`:`rich-text`);return n(We,{artifactRunId:e,MarkdownRenderer:X,children:[(k===`choose`?`source`:k)===`rich-text`?n(`div`,{className:y(`flex h-full min-h-0 flex-col bg-background`,r),children:[t(Jn,{editor:T,editable:C.editable!==!1,onSendComment:u,onSendChangesToAgent:d,hasUnsentChanges:g,isSendingChanges:v,sendChangesDisabled:b,toolbarStatus:x}),t(i,{...C,...er,onEditor:O,ariaLabel:C.ariaLabel??w(`richText.documentEditor`),className:`flex min-h-0 flex-1 flex-col`,contentClassName:y(`min-h-0 flex-1 overflow-auto`,a),editorClassName:y(`vprose prose-sm mx-auto min-h-full w-full max-w-5xl px-6 py-5 outline-none`,c)})]}):n(`div`,{className:y(`flex h-full min-h-0 flex-col bg-background`,r),children:[d?n(`div`,{className:`flex min-h-10 shrink-0 items-center justify-end gap-1 border-b border-mixer-muted/25 px-1.5 py-1`,children:[x,t(qn,{onSend:d,hasUnsentChanges:g,isSending:v,disabled:b})]}):null,t(_,{value:C.value,onChange:e=>C.onChange?.(e.target.value),onFocus:()=>C.onFocusChange?.(!0),onBlur:()=>C.onFocusChange?.(!1),disabled:C.editable===!1,"aria-label":w(`richText.markdownSourceEditor`),className:y(`vertesia-markdown-document-editor-content min-h-0 flex-1 resize-none rounded-none`,`border-0 px-6 py-5 font-mono text-sm leading-6 outline-none focus-visible:ring-0`,a,c)})]}),n(f,{isOpen:k===`choose`,onClose:()=>A(`source`),className:`sm:max-w-lg`,disableCloseOnClickOutside:!0,children:[t(h,{children:w(`richText.sourceCompatibilityWarningTitle`)}),t(p,{children:t(`p`,{className:`text-sm text-muted`,children:w(`richText.sourceCompatibilityWarningDescription`)})}),n(m,{align:`right`,children:[t(s,{variant:`outline`,onClick:()=>A(`source`),children:w(`richText.editMarkdownSource`)}),t(s,{variant:`secondary`,onClick:()=>A(`rich-text`),children:w(`richText.continueRichText`)})]})]})]})}export{nr as VertesiaMarkdownComponentEditor,rr as VertesiaMarkdownDocumentEditor,tr as VertesiaMarkdownRichTextEditor,er as vertesiaRichTextRenderers};
5
+ //# sourceMappingURL=vertesia-ui-rich-text.js.map