@vertesia/ui 1.5.0-dev.20260714.072725Z → 1.5.0-dev.20260722.120446Z

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 (393) 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/modal/dialog.js +1 -1
  8. package/lib/core/components/shadcn/modal/dialog.js.map +1 -1
  9. package/lib/core/components/shadcn/theme/ThemeSwitcher.js +1 -1
  10. package/lib/core/components/shadcn/theme/ThemeSwitcher.js.map +1 -1
  11. package/lib/env/index.d.ts +19 -0
  12. package/lib/env/index.d.ts.map +1 -1
  13. package/lib/env/index.js +6 -0
  14. package/lib/env/index.js.map +1 -1
  15. package/lib/features/agent/chat/AgentChatPlaybackControls.d.ts.map +1 -1
  16. package/lib/features/agent/chat/AgentChatPlaybackControls.js +2 -2
  17. package/lib/features/agent/chat/AgentChatPlaybackControls.js.map +1 -1
  18. package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts.map +1 -1
  19. package/lib/features/agent/chat/AgentRequestInputOverlay.js +2 -2
  20. package/lib/features/agent/chat/AgentRequestInputOverlay.js.map +1 -1
  21. package/lib/features/agent/chat/ArtifactsTab.d.ts.map +1 -1
  22. package/lib/features/agent/chat/ArtifactsTab.js +68 -11
  23. package/lib/features/agent/chat/ArtifactsTab.js.map +1 -1
  24. package/lib/features/agent/chat/ImageLightbox.d.ts.map +1 -1
  25. package/lib/features/agent/chat/ImageLightbox.js +1 -1
  26. package/lib/features/agent/chat/ImageLightbox.js.map +1 -1
  27. package/lib/features/agent/chat/ModernAgentConversation.js +52 -49
  28. package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
  29. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  30. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +5 -5
  31. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  32. package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  33. package/lib/features/agent/chat/ModernAgentOutput/Header.js +4 -2
  34. package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  35. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
  36. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +2 -2
  37. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
  38. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  39. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +2 -1
  40. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  41. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts +6 -0
  42. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts.map +1 -1
  43. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js +15 -1
  44. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js.map +1 -1
  45. package/lib/features/agent/chat/hooks/useArtifacts.d.ts +8 -1
  46. package/lib/features/agent/chat/hooks/useArtifacts.d.ts.map +1 -1
  47. package/lib/features/agent/chat/hooks/useArtifacts.js +28 -10
  48. package/lib/features/agent/chat/hooks/useArtifacts.js.map +1 -1
  49. package/lib/features/document-viewer/UniversalDocumentViewer.d.ts +73 -0
  50. package/lib/features/document-viewer/UniversalDocumentViewer.d.ts.map +1 -0
  51. package/lib/features/document-viewer/UniversalDocumentViewer.js +415 -0
  52. package/lib/features/document-viewer/UniversalDocumentViewer.js.map +1 -0
  53. package/lib/features/document-viewer/index.d.ts +2 -0
  54. package/lib/features/document-viewer/index.d.ts.map +1 -0
  55. package/lib/features/document-viewer/index.js +2 -0
  56. package/lib/features/document-viewer/index.js.map +1 -0
  57. package/lib/features/environment/SelectEnvironment.d.ts +28 -0
  58. package/lib/features/environment/SelectEnvironment.d.ts.map +1 -0
  59. package/lib/features/environment/SelectEnvironment.js +97 -0
  60. package/lib/features/environment/SelectEnvironment.js.map +1 -0
  61. package/lib/features/environment/index.d.ts +2 -0
  62. package/lib/features/environment/index.d.ts.map +1 -0
  63. package/lib/features/environment/index.js +2 -0
  64. package/lib/features/environment/index.js.map +1 -0
  65. package/lib/features/index.d.ts +3 -0
  66. package/lib/features/index.d.ts.map +1 -1
  67. package/lib/features/index.js +3 -0
  68. package/lib/features/index.js.map +1 -1
  69. package/lib/features/magic-pdf/AnnotatedImageSlider.js +12 -12
  70. package/lib/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
  71. package/lib/features/magic-pdf/DownloadPopover.d.ts.map +1 -1
  72. package/lib/features/magic-pdf/DownloadPopover.js +3 -17
  73. package/lib/features/magic-pdf/DownloadPopover.js.map +1 -1
  74. package/lib/features/magic-pdf/ExtractedContentView.js +2 -6
  75. package/lib/features/magic-pdf/ExtractedContentView.js.map +1 -1
  76. package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.d.ts +25 -0
  77. package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.d.ts.map +1 -0
  78. package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.js +42 -0
  79. package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.js.map +1 -0
  80. package/lib/features/magic-pdf/GroundedExtractionView.d.ts +27 -0
  81. package/lib/features/magic-pdf/GroundedExtractionView.d.ts.map +1 -0
  82. package/lib/features/magic-pdf/GroundedExtractionView.js +377 -0
  83. package/lib/features/magic-pdf/GroundedExtractionView.js.map +1 -0
  84. package/lib/features/magic-pdf/MagicPdfProvider.d.ts +0 -2
  85. package/lib/features/magic-pdf/MagicPdfProvider.d.ts.map +1 -1
  86. package/lib/features/magic-pdf/MagicPdfProvider.js +15 -42
  87. package/lib/features/magic-pdf/MagicPdfProvider.js.map +1 -1
  88. package/lib/features/magic-pdf/MagicPdfView.d.ts.map +1 -1
  89. package/lib/features/magic-pdf/MagicPdfView.js +2 -19
  90. package/lib/features/magic-pdf/MagicPdfView.js.map +1 -1
  91. package/lib/features/magic-pdf/index.d.ts +1 -0
  92. package/lib/features/magic-pdf/index.d.ts.map +1 -1
  93. package/lib/features/magic-pdf/index.js +1 -0
  94. package/lib/features/magic-pdf/index.js.map +1 -1
  95. package/lib/features/magic-pdf/types.d.ts +1 -1
  96. package/lib/features/magic-pdf/types.d.ts.map +1 -1
  97. package/lib/features/oauth/McpConnectionsButton.d.ts.map +1 -1
  98. package/lib/features/oauth/McpConnectionsButton.js +2 -2
  99. package/lib/features/oauth/McpConnectionsButton.js.map +1 -1
  100. package/lib/features/oauth/McpConnectionsDialog.d.ts.map +1 -1
  101. package/lib/features/oauth/McpConnectionsDialog.js +1 -1
  102. package/lib/features/oauth/McpConnectionsDialog.js.map +1 -1
  103. package/lib/features/oauth/RemoteMcpConnectionButton.d.ts.map +1 -1
  104. package/lib/features/oauth/RemoteMcpConnectionButton.js +1 -1
  105. package/lib/features/oauth/RemoteMcpConnectionButton.js.map +1 -1
  106. package/lib/features/pdf-viewer/PdfPageSlider.js +2 -2
  107. package/lib/features/pdf-viewer/PdfPageSlider.js.map +1 -1
  108. package/lib/features/pdf-viewer/SimplePdfViewer.d.ts.map +1 -1
  109. package/lib/features/pdf-viewer/SimplePdfViewer.js +3 -3
  110. package/lib/features/pdf-viewer/SimplePdfViewer.js.map +1 -1
  111. package/lib/features/permissions/UserPermissionsProvider.d.ts +2 -3
  112. package/lib/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
  113. package/lib/features/permissions/UserPermissionsProvider.js +31 -38
  114. package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
  115. package/lib/features/store/objects/DocumentQuickFilter.d.ts.map +1 -1
  116. package/lib/features/store/objects/DocumentQuickFilter.js +5 -5
  117. package/lib/features/store/objects/DocumentQuickFilter.js.map +1 -1
  118. package/lib/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
  119. package/lib/features/store/objects/DocumentSearchResults.js +2 -2
  120. package/lib/features/store/objects/DocumentSearchResults.js.map +1 -1
  121. package/lib/features/store/objects/components/ContentDispositionButton.d.ts.map +1 -1
  122. package/lib/features/store/objects/components/ContentDispositionButton.js +1 -1
  123. package/lib/features/store/objects/components/ContentDispositionButton.js.map +1 -1
  124. package/lib/features/store/objects/components/ContentOverview.d.ts.map +1 -1
  125. package/lib/features/store/objects/components/ContentOverview.js +148 -31
  126. package/lib/features/store/objects/components/ContentOverview.js.map +1 -1
  127. package/lib/features/store/objects/components/DocumentIcon.js +1 -1
  128. package/lib/features/store/objects/components/VectorSearchWidget.js +1 -1
  129. package/lib/features/store/objects/components/VectorSearchWidget.js.map +1 -1
  130. package/lib/features/store/objects/components/useContentPanelHooks.d.ts +1 -2
  131. package/lib/features/store/objects/components/useContentPanelHooks.d.ts.map +1 -1
  132. package/lib/features/store/objects/components/useContentPanelHooks.js +4 -8
  133. package/lib/features/store/objects/components/useContentPanelHooks.js.map +1 -1
  134. package/lib/features/store/objects/layout/renderers.d.ts.map +1 -1
  135. package/lib/features/store/objects/layout/renderers.js +2 -2
  136. package/lib/features/store/objects/layout/renderers.js.map +1 -1
  137. package/lib/features/store/objects/selection/SelectionActions.js +1 -1
  138. package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
  139. package/lib/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
  140. package/lib/features/store/types/ContentObjectTypesTable.js +4 -4
  141. package/lib/features/store/types/ContentObjectTypesTable.js.map +1 -1
  142. package/lib/features/store/types/IntakePolicyEditor.d.ts +15 -0
  143. package/lib/features/store/types/IntakePolicyEditor.d.ts.map +1 -0
  144. package/lib/features/store/types/IntakePolicyEditor.js +455 -0
  145. package/lib/features/store/types/IntakePolicyEditor.js.map +1 -0
  146. package/lib/features/store/types/IntakePolicyForm.d.ts +11 -0
  147. package/lib/features/store/types/IntakePolicyForm.d.ts.map +1 -0
  148. package/lib/features/store/types/IntakePolicyForm.js +91 -0
  149. package/lib/features/store/types/IntakePolicyForm.js.map +1 -0
  150. package/lib/features/store/types/SelectContentTypeModal.js +1 -1
  151. package/lib/features/store/types/SelectContentTypeModal.js.map +1 -1
  152. package/lib/features/store/types/index.d.ts +2 -0
  153. package/lib/features/store/types/index.d.ts.map +1 -1
  154. package/lib/features/store/types/index.js +2 -0
  155. package/lib/features/store/types/index.js.map +1 -1
  156. package/lib/features/store/types/intake-policy-editor.logic.d.ts +7 -0
  157. package/lib/features/store/types/intake-policy-editor.logic.d.ts.map +1 -0
  158. package/lib/features/store/types/intake-policy-editor.logic.js +60 -0
  159. package/lib/features/store/types/intake-policy-editor.logic.js.map +1 -0
  160. package/lib/features/store/types/typeCatalogCache.d.ts +5 -0
  161. package/lib/features/store/types/typeCatalogCache.d.ts.map +1 -0
  162. package/lib/features/store/types/typeCatalogCache.js +40 -0
  163. package/lib/features/store/types/typeCatalogCache.js.map +1 -0
  164. package/lib/features/user/UserInfo.js +7 -3
  165. package/lib/features/user/UserInfo.js.map +1 -1
  166. package/lib/features/views/ViewExperience.d.ts +20 -0
  167. package/lib/features/views/ViewExperience.d.ts.map +1 -0
  168. package/lib/features/views/ViewExperience.js +188 -0
  169. package/lib/features/views/ViewExperience.js.map +1 -0
  170. package/lib/features/views/ViewNavigation.d.ts +3 -0
  171. package/lib/features/views/ViewNavigation.d.ts.map +1 -0
  172. package/lib/features/views/ViewNavigation.js +36 -0
  173. package/lib/features/views/ViewNavigation.js.map +1 -0
  174. package/lib/features/views/ViewResults.d.ts +9 -0
  175. package/lib/features/views/ViewResults.d.ts.map +1 -0
  176. package/lib/features/views/ViewResults.js +229 -0
  177. package/lib/features/views/ViewResults.js.map +1 -0
  178. package/lib/features/views/ViewSearch.d.ts +3 -0
  179. package/lib/features/views/ViewSearch.d.ts.map +1 -0
  180. package/lib/features/views/ViewSearch.js +74 -0
  181. package/lib/features/views/ViewSearch.js.map +1 -0
  182. package/lib/features/views/index.d.ts +7 -0
  183. package/lib/features/views/index.d.ts.map +1 -0
  184. package/lib/features/views/index.js +7 -0
  185. package/lib/features/views/index.js.map +1 -0
  186. package/lib/features/views/types.d.ts +39 -0
  187. package/lib/features/views/types.d.ts.map +1 -0
  188. package/lib/features/views/types.js +2 -0
  189. package/lib/features/views/types.js.map +1 -0
  190. package/lib/features/views/viewState.d.ts +14 -0
  191. package/lib/features/views/viewState.d.ts.map +1 -0
  192. package/lib/features/views/viewState.js +117 -0
  193. package/lib/features/views/viewState.js.map +1 -0
  194. package/lib/i18n/locales/ar.json +18 -0
  195. package/lib/i18n/locales/de.json +14 -0
  196. package/lib/i18n/locales/en.json +246 -32
  197. package/lib/i18n/locales/es.json +15 -0
  198. package/lib/i18n/locales/fr.json +15 -0
  199. package/lib/i18n/locales/it.json +15 -0
  200. package/lib/i18n/locales/ja.json +13 -0
  201. package/lib/i18n/locales/ko.json +13 -0
  202. package/lib/i18n/locales/pt.json +15 -0
  203. package/lib/i18n/locales/ru.json +16 -0
  204. package/lib/i18n/locales/tr.json +14 -0
  205. package/lib/i18n/locales/zh-TW.json +13 -0
  206. package/lib/i18n/locales/zh.json +13 -0
  207. package/lib/router/HistoryNavigator.d.ts.map +1 -1
  208. package/lib/router/HistoryNavigator.js +27 -14
  209. package/lib/router/HistoryNavigator.js.map +1 -1
  210. package/lib/router/Nav.d.ts.map +1 -1
  211. package/lib/router/Nav.js +21 -6
  212. package/lib/router/Nav.js.map +1 -1
  213. package/lib/router/Router.d.ts.map +1 -1
  214. package/lib/router/Router.js +19 -4
  215. package/lib/router/Router.js.map +1 -1
  216. package/lib/router/path.d.ts +15 -0
  217. package/lib/router/path.d.ts.map +1 -1
  218. package/lib/router/path.js +43 -0
  219. package/lib/router/path.js.map +1 -1
  220. package/lib/session/UserSession.d.ts +6 -0
  221. package/lib/session/UserSession.d.ts.map +1 -1
  222. package/lib/session/UserSession.js +36 -12
  223. package/lib/session/UserSession.js.map +1 -1
  224. package/lib/session/UserSessionProvider.d.ts.map +1 -1
  225. package/lib/session/UserSessionProvider.js +111 -49
  226. package/lib/session/UserSessionProvider.js.map +1 -1
  227. package/lib/session/auth/composable.d.ts.map +1 -1
  228. package/lib/session/auth/composable.js +52 -3
  229. package/lib/session/auth/composable.js.map +1 -1
  230. package/lib/session/auth/domainRouting.d.ts +25 -0
  231. package/lib/session/auth/domainRouting.d.ts.map +1 -1
  232. package/lib/session/auth/domainRouting.js +36 -0
  233. package/lib/session/auth/domainRouting.js.map +1 -1
  234. package/lib/shell/login/SignInRestrictedEnvStep.d.ts +1 -1
  235. package/lib/shell/login/SignInRestrictedEnvStep.js +1 -1
  236. package/lib/shell/login/SigninScreen.js +9 -1
  237. package/lib/shell/login/SigninScreen.js.map +1 -1
  238. package/lib/shell/login/productionUrl.d.ts +0 -14
  239. package/lib/shell/login/productionUrl.d.ts.map +1 -1
  240. package/lib/shell/login/productionUrl.js +14 -5
  241. package/lib/shell/login/productionUrl.js.map +1 -1
  242. package/lib/vertesia-ui-core.js +4 -4
  243. package/lib/vertesia-ui-core.js.map +1 -1
  244. package/lib/vertesia-ui-env.js +1 -1
  245. package/lib/vertesia-ui-env.js.map +1 -1
  246. package/lib/vertesia-ui-features.js +35 -28
  247. package/lib/vertesia-ui-features.js.map +1 -1
  248. package/lib/vertesia-ui-i18n.js +15 -15
  249. package/lib/vertesia-ui-i18n.js.map +1 -1
  250. package/lib/vertesia-ui-router.js +1 -1
  251. package/lib/vertesia-ui-router.js.map +1 -1
  252. package/lib/vertesia-ui-session.js +1 -1
  253. package/lib/vertesia-ui-session.js.map +1 -1
  254. package/lib/vertesia-ui-shell.js +1 -1
  255. package/lib/vertesia-ui-shell.js.map +1 -1
  256. package/lib/vertesia-ui-widgets.js +7 -7
  257. package/lib/vertesia-ui-widgets.js.map +1 -1
  258. package/lib/widgets/form/Form.js +1 -1
  259. package/lib/widgets/form/Form.js.map +1 -1
  260. package/lib/widgets/json-view/JSONSwitcher.js +1 -1
  261. package/lib/widgets/json-view/JSONSwitcher.js.map +1 -1
  262. package/lib/widgets/json-view/JSONView.js +6 -6
  263. package/lib/widgets/json-view/JSONView.js.map +1 -1
  264. package/lib/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
  265. package/lib/widgets/monacoEditor/MonacoEditor.js +29 -0
  266. package/lib/widgets/monacoEditor/MonacoEditor.js.map +1 -1
  267. package/lib/widgets/schema-editor/ManagedSchema.d.ts +8 -0
  268. package/lib/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
  269. package/lib/widgets/schema-editor/ManagedSchema.js +16 -0
  270. package/lib/widgets/schema-editor/ManagedSchema.js.map +1 -1
  271. package/lib/widgets/schema-editor/editor/EditableSchemaProperty.d.ts +2 -0
  272. package/lib/widgets/schema-editor/editor/EditableSchemaProperty.d.ts.map +1 -1
  273. package/lib/widgets/schema-editor/editor/EditableSchemaProperty.js +1 -0
  274. package/lib/widgets/schema-editor/editor/EditableSchemaProperty.js.map +1 -1
  275. package/lib/widgets/schema-editor/editor/PropertyViewer.d.ts.map +1 -1
  276. package/lib/widgets/schema-editor/editor/PropertyViewer.js +4 -1
  277. package/lib/widgets/schema-editor/editor/PropertyViewer.js.map +1 -1
  278. package/lib/widgets/schema-editor/editor/SchemaEditor.d.ts.map +1 -1
  279. package/lib/widgets/schema-editor/editor/SchemaEditor.js +22 -11
  280. package/lib/widgets/schema-editor/editor/SchemaEditor.js.map +1 -1
  281. package/llms.txt +70 -70
  282. package/package.json +33 -32
  283. package/src/__tests__/a11y.test.tsx +73 -0
  284. package/src/core/components/SidePanel.tsx +1 -1
  285. package/src/core/components/shadcn/button.tsx +67 -12
  286. package/src/core/components/shadcn/modal/dialog.tsx +1 -1
  287. package/src/core/components/shadcn/theme/ThemeSwitcher.tsx +1 -1
  288. package/src/env/index.ts +24 -0
  289. package/src/features/agent/chat/AgentChatPlaybackControls.tsx +0 -5
  290. package/src/features/agent/chat/AgentRequestInputOverlay.test.tsx +31 -0
  291. package/src/features/agent/chat/AgentRequestInputOverlay.tsx +6 -2
  292. package/src/features/agent/chat/ArtifactsTab.tsx +165 -21
  293. package/src/features/agent/chat/ImageLightbox.tsx +0 -1
  294. package/src/features/agent/chat/ModernAgentConversation.test.tsx +48 -0
  295. package/src/features/agent/chat/ModernAgentConversation.tsx +53 -51
  296. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +6 -1
  297. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +21 -15
  298. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +3 -3
  299. package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +0 -2
  300. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +4 -1
  301. package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.test.ts +80 -0
  302. package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.ts +21 -1
  303. package/src/features/agent/chat/hooks/useArtifacts.ts +44 -11
  304. package/src/features/document-viewer/UniversalDocumentViewer.test.tsx +123 -0
  305. package/src/features/document-viewer/UniversalDocumentViewer.tsx +746 -0
  306. package/src/features/document-viewer/index.ts +1 -0
  307. package/src/features/environment/SelectEnvironment.tsx +186 -0
  308. package/src/features/environment/index.ts +1 -0
  309. package/src/features/index.ts +3 -0
  310. package/src/features/magic-pdf/AnnotatedImageSlider.tsx +62 -66
  311. package/src/features/magic-pdf/DownloadPopover.tsx +5 -48
  312. package/src/features/magic-pdf/ExtractedContentView.tsx +2 -14
  313. package/src/features/magic-pdf/GroundedExtractionAssistantPanel.tsx +86 -0
  314. package/src/features/magic-pdf/GroundedExtractionView.test.tsx +65 -0
  315. package/src/features/magic-pdf/GroundedExtractionView.tsx +1055 -0
  316. package/src/features/magic-pdf/MagicPdfProvider.tsx +17 -47
  317. package/src/features/magic-pdf/MagicPdfView.tsx +3 -51
  318. package/src/features/magic-pdf/index.ts +1 -0
  319. package/src/features/magic-pdf/types.ts +1 -1
  320. package/src/features/oauth/McpConnectionsButton.tsx +0 -2
  321. package/src/features/oauth/McpConnectionsDialog.tsx +0 -1
  322. package/src/features/oauth/RemoteMcpConnectionButton.tsx +0 -1
  323. package/src/features/pdf-viewer/PdfPageSlider.tsx +5 -5
  324. package/src/features/pdf-viewer/SimplePdfViewer.tsx +11 -12
  325. package/src/features/permissions/UserPermissionsProvider.tsx +36 -39
  326. package/src/features/store/objects/DocumentQuickFilter.tsx +13 -15
  327. package/src/features/store/objects/DocumentSearchResults.tsx +3 -6
  328. package/src/features/store/objects/components/ContentDispositionButton.tsx +5 -1
  329. package/src/features/store/objects/components/ContentOverview.tsx +240 -67
  330. package/src/features/store/objects/components/DocumentIcon.tsx +1 -1
  331. package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
  332. package/src/features/store/objects/components/useContentPanelHooks.ts +3 -15
  333. package/src/features/store/objects/layout/renderers.tsx +1 -2
  334. package/src/features/store/objects/selection/SelectionActions.tsx +1 -1
  335. package/src/features/store/types/ContentObjectTypesTable.tsx +12 -14
  336. package/src/features/store/types/IntakePolicyEditor.tsx +679 -0
  337. package/src/features/store/types/IntakePolicyForm.tsx +838 -0
  338. package/src/features/store/types/SelectContentTypeModal.tsx +2 -2
  339. package/src/features/store/types/index.ts +2 -0
  340. package/src/features/store/types/intake-policy-editor.logic.test.ts +109 -0
  341. package/src/features/store/types/intake-policy-editor.logic.ts +87 -0
  342. package/src/features/store/types/typeCatalogCache.ts +45 -0
  343. package/src/features/user/UserInfo.tsx +7 -7
  344. package/src/features/views/ViewExperience.test.tsx +273 -0
  345. package/src/features/views/ViewExperience.tsx +408 -0
  346. package/src/features/views/ViewNavigation.test.tsx +86 -0
  347. package/src/features/views/ViewNavigation.tsx +187 -0
  348. package/src/features/views/ViewResults.test.ts +82 -0
  349. package/src/features/views/ViewResults.tsx +609 -0
  350. package/src/features/views/ViewSearch.test.tsx +147 -0
  351. package/src/features/views/ViewSearch.tsx +205 -0
  352. package/src/features/views/index.ts +6 -0
  353. package/src/features/views/types.ts +57 -0
  354. package/src/features/views/viewState.test.ts +111 -0
  355. package/src/features/views/viewState.ts +132 -0
  356. package/src/i18n/locales/ar.json +18 -0
  357. package/src/i18n/locales/de.json +14 -0
  358. package/src/i18n/locales/en.json +965 -751
  359. package/src/i18n/locales/es.json +15 -0
  360. package/src/i18n/locales/fr.json +15 -0
  361. package/src/i18n/locales/it.json +15 -0
  362. package/src/i18n/locales/ja.json +13 -0
  363. package/src/i18n/locales/ko.json +13 -0
  364. package/src/i18n/locales/pt.json +15 -0
  365. package/src/i18n/locales/ru.json +16 -0
  366. package/src/i18n/locales/tr.json +14 -0
  367. package/src/i18n/locales/zh-TW.json +13 -0
  368. package/src/i18n/locales/zh.json +13 -0
  369. package/src/router/HistoryNavigator.test.ts +48 -0
  370. package/src/router/HistoryNavigator.ts +28 -14
  371. package/src/router/Nav.tsx +24 -8
  372. package/src/router/Router.tsx +18 -4
  373. package/src/router/path.test.ts +87 -0
  374. package/src/router/path.ts +38 -0
  375. package/src/session/UserSession.test.ts +39 -0
  376. package/src/session/UserSession.ts +37 -12
  377. package/src/session/UserSessionProvider.tsx +138 -62
  378. package/src/session/auth/composable.test.ts +111 -0
  379. package/src/session/auth/composable.ts +58 -3
  380. package/src/session/auth/domainRouting.test.ts +28 -1
  381. package/src/session/auth/domainRouting.ts +38 -0
  382. package/src/shell/login/SignInRestrictedEnvStep.tsx +1 -1
  383. package/src/shell/login/SigninScreen.tsx +9 -1
  384. package/src/shell/login/productionUrl.test.ts +8 -5
  385. package/src/shell/login/productionUrl.ts +15 -5
  386. package/src/widgets/form/Form.tsx +1 -1
  387. package/src/widgets/json-view/JSONSwitcher.tsx +2 -2
  388. package/src/widgets/json-view/JSONView.tsx +7 -7
  389. package/src/widgets/monacoEditor/MonacoEditor.tsx +29 -0
  390. package/src/widgets/schema-editor/ManagedSchema.ts +22 -0
  391. package/src/widgets/schema-editor/editor/EditableSchemaProperty.tsx +3 -0
  392. package/src/widgets/schema-editor/editor/PropertyViewer.tsx +14 -3
  393. package/src/widgets/schema-editor/editor/SchemaEditor.tsx +80 -29
@@ -125,6 +125,7 @@
125
125
  "agent.noPlanAvailable": "Sin plan disponible",
126
126
  "agent.noPlanDetected": "Aún no se ha detectado ningún plan",
127
127
  "agent.olderPlan": "Plan anterior",
128
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
128
129
  "agent.openDocument": "Abrir documento",
129
130
  "agent.openInNewTab": "Abrir en nueva pestaña",
130
131
  "agent.panelRenderError": "No se pudo renderizar {{name}}",
@@ -172,6 +173,7 @@
172
173
  "agent.showLess": "Mostrar menos",
173
174
  "agent.showMore": "Mostrar más",
174
175
  "agent.showSidebar": "Mostrar panel",
176
+ "agent.showSystemArtifacts": "System files",
175
177
  "agent.staged": "Preparado",
176
178
  "agent.startAgent": "Iniciar agente",
177
179
  "agent.startingAgent": "Iniciando agente...",
@@ -273,6 +275,7 @@
273
275
  "filter.selectRange": "Seleccionar rango",
274
276
  "filter.to": "Hasta:",
275
277
  "form.filter": "Filtrar...",
278
+ "grounded.checkerboard": "Cuadrícula",
276
279
  "language.label": "Idioma",
277
280
  "language.placeholder": "Elegir idioma",
278
281
  "layout.pageNotFound": "Página no encontrada",
@@ -742,6 +745,18 @@
742
745
  "user.unnamedGroup": "Grupo sin nombre",
743
746
  "user.user": "Usuario",
744
747
  "user.userId": "ID de usuario",
748
+ "view.display": "Visualización",
749
+ "view.from": "Desde",
750
+ "view.pagination": "Páginas de resultados",
751
+ "view.ranges": "Rangos",
752
+ "view.removeSelection": "Quitar {{value}}",
753
+ "view.resultsCount_one": "{{count}} resultado",
754
+ "view.resultsCount_many": "{{count}} resultados",
755
+ "view.resultsCount_other": "{{count}} resultados",
756
+ "view.searchFields": "Campos de búsqueda",
757
+ "view.sort": "Ordenar",
758
+ "view.to": "Hasta",
759
+ "view.warning": "Aviso de vista",
745
760
  "widgets.schema.editDescription": "Editar descripción",
746
761
  "widgets.schema.invalidPropertyDeclaration": "Declaración de propiedad inválida"
747
762
  }
@@ -125,6 +125,7 @@
125
125
  "agent.noPlanAvailable": "Aucun plan disponible",
126
126
  "agent.noPlanDetected": "Aucun plan détecté pour le moment",
127
127
  "agent.olderPlan": "Plan précédent",
128
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
128
129
  "agent.openDocument": "Ouvrir le document",
129
130
  "agent.openInNewTab": "Ouvrir dans un nouvel onglet",
130
131
  "agent.panelRenderError": "{{name}} n'a pas pu être affiché",
@@ -172,6 +173,7 @@
172
173
  "agent.showLess": "Afficher moins",
173
174
  "agent.showMore": "Afficher plus",
174
175
  "agent.showSidebar": "Afficher le panneau",
176
+ "agent.showSystemArtifacts": "System files",
175
177
  "agent.staged": "En attente",
176
178
  "agent.startAgent": "Démarrer l'agent",
177
179
  "agent.startingAgent": "Démarrage de l'agent...",
@@ -273,6 +275,7 @@
273
275
  "filter.selectRange": "Sélectionner une plage",
274
276
  "filter.to": "À :",
275
277
  "form.filter": "Filtrer...",
278
+ "grounded.checkerboard": "Quadrillage",
276
279
  "language.label": "Langue",
277
280
  "language.placeholder": "Choisir la langue",
278
281
  "layout.pageNotFound": "Page non trouvée",
@@ -742,6 +745,18 @@
742
745
  "user.unnamedGroup": "Groupe sans nom",
743
746
  "user.user": "Utilisateur",
744
747
  "user.userId": "ID utilisateur",
748
+ "view.display": "Affichage",
749
+ "view.from": "De",
750
+ "view.pagination": "Pages de résultats",
751
+ "view.ranges": "Plages",
752
+ "view.removeSelection": "Supprimer {{value}}",
753
+ "view.resultsCount_one": "{{count}} résultat",
754
+ "view.resultsCount_many": "{{count}} résultats",
755
+ "view.resultsCount_other": "{{count}} résultats",
756
+ "view.searchFields": "Champs de recherche",
757
+ "view.sort": "Trier",
758
+ "view.to": "À",
759
+ "view.warning": "Avis sur la vue",
745
760
  "widgets.schema.editDescription": "Modifier la description",
746
761
  "widgets.schema.invalidPropertyDeclaration": "Déclaration de propriété invalide"
747
762
  }
@@ -125,6 +125,7 @@
125
125
  "agent.noPlanAvailable": "Nessun piano disponibile",
126
126
  "agent.noPlanDetected": "Nessun piano rilevato",
127
127
  "agent.olderPlan": "Piano precedente",
128
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
128
129
  "agent.openDocument": "Apri documento",
129
130
  "agent.openInNewTab": "Apri in nuova scheda",
130
131
  "agent.panelRenderError": "Impossibile renderizzare {{name}}",
@@ -172,6 +173,7 @@
172
173
  "agent.showLess": "Mostra meno",
173
174
  "agent.showMore": "Mostra altro",
174
175
  "agent.showSidebar": "Mostra pannello",
176
+ "agent.showSystemArtifacts": "System files",
175
177
  "agent.staged": "In attesa",
176
178
  "agent.startAgent": "Avvia agente",
177
179
  "agent.startingAgent": "Avvio dell'agente...",
@@ -273,6 +275,7 @@
273
275
  "filter.selectRange": "Seleziona intervallo",
274
276
  "filter.to": "A:",
275
277
  "form.filter": "Filtra...",
278
+ "grounded.checkerboard": "Griglia",
276
279
  "language.label": "Lingua",
277
280
  "language.placeholder": "Scegli lingua",
278
281
  "layout.pageNotFound": "Pagina non trovata",
@@ -742,6 +745,18 @@
742
745
  "user.unnamedGroup": "Gruppo senza nome",
743
746
  "user.user": "Utente",
744
747
  "user.userId": "ID utente",
748
+ "view.display": "Visualizzazione",
749
+ "view.from": "Da",
750
+ "view.pagination": "Pagine dei risultati",
751
+ "view.ranges": "Intervalli",
752
+ "view.removeSelection": "Rimuovi {{value}}",
753
+ "view.resultsCount_one": "{{count}} risultato",
754
+ "view.resultsCount_many": "{{count}} risultati",
755
+ "view.resultsCount_other": "{{count}} risultati",
756
+ "view.searchFields": "Campi di ricerca",
757
+ "view.sort": "Ordina",
758
+ "view.to": "A",
759
+ "view.warning": "Avviso vista",
745
760
  "widgets.schema.editDescription": "Modifica descrizione",
746
761
  "widgets.schema.invalidPropertyDeclaration": "Dichiarazione di proprietà non valida"
747
762
  }
@@ -124,6 +124,7 @@
124
124
  "agent.noPlanAvailable": "利用可能なプランなし",
125
125
  "agent.noPlanDetected": "まだプランが検出されていません",
126
126
  "agent.olderPlan": "古いプラン",
127
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
127
128
  "agent.openDocument": "ドキュメントを開く",
128
129
  "agent.openInNewTab": "新しいタブで開く",
129
130
  "agent.panelRenderError": "{{name}} を表示できませんでした",
@@ -171,6 +172,7 @@
171
172
  "agent.showLess": "表示を減らす",
172
173
  "agent.showMore": "さらに表示",
173
174
  "agent.showSidebar": "サイドバーを表示",
175
+ "agent.showSystemArtifacts": "System files",
174
176
  "agent.staged": "ステージ済み",
175
177
  "agent.startAgent": "エージェントを開始",
176
178
  "agent.startingAgent": "エージェントを起動中...",
@@ -271,6 +273,7 @@
271
273
  "filter.selectRange": "範囲を選択",
272
274
  "filter.to": "終了:",
273
275
  "form.filter": "フィルター...",
276
+ "grounded.checkerboard": "チェッカーボード",
274
277
  "language.label": "言語",
275
278
  "language.placeholder": "言語を選択",
276
279
  "layout.pageNotFound": "ページが見つかりません",
@@ -732,6 +735,16 @@
732
735
  "user.unnamedGroup": "名前なしグループ",
733
736
  "user.user": "ユーザー",
734
737
  "user.userId": "ユーザーID",
738
+ "view.display": "表示",
739
+ "view.from": "開始",
740
+ "view.pagination": "結果ページ",
741
+ "view.ranges": "範囲",
742
+ "view.removeSelection": "{{value}}を削除",
743
+ "view.resultsCount_other": "{{count}} 件の結果",
744
+ "view.searchFields": "検索フィールド",
745
+ "view.sort": "並べ替え",
746
+ "view.to": "終了",
747
+ "view.warning": "ビューのお知らせ",
735
748
  "widgets.schema.editDescription": "説明を編集",
736
749
  "widgets.schema.invalidPropertyDeclaration": "無効なプロパティ宣言"
737
750
  }
@@ -124,6 +124,7 @@
124
124
  "agent.noPlanAvailable": "사용 가능한 계획 없음",
125
125
  "agent.noPlanDetected": "아직 계획이 감지되지 않았습니다",
126
126
  "agent.olderPlan": "이전 계획",
127
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
127
128
  "agent.openDocument": "문서 열기",
128
129
  "agent.openInNewTab": "새 탭에서 열기",
129
130
  "agent.panelRenderError": "{{name}}을(를) 렌더링할 수 없습니다",
@@ -171,6 +172,7 @@
171
172
  "agent.showLess": "덜 보기",
172
173
  "agent.showMore": "더 보기",
173
174
  "agent.showSidebar": "사이드바 표시",
175
+ "agent.showSystemArtifacts": "System files",
174
176
  "agent.staged": "준비됨",
175
177
  "agent.startAgent": "에이전트 시작",
176
178
  "agent.startingAgent": "에이전트 시작 중...",
@@ -271,6 +273,7 @@
271
273
  "filter.selectRange": "범위 선택",
272
274
  "filter.to": "끝:",
273
275
  "form.filter": "필터...",
276
+ "grounded.checkerboard": "체커보드",
274
277
  "language.label": "언어",
275
278
  "language.placeholder": "언어 선택",
276
279
  "layout.pageNotFound": "페이지를 찾을 수 없음",
@@ -732,6 +735,16 @@
732
735
  "user.unnamedGroup": "이름 없는 그룹",
733
736
  "user.user": "사용자",
734
737
  "user.userId": "사용자 ID",
738
+ "view.display": "표시",
739
+ "view.from": "시작",
740
+ "view.pagination": "결과 페이지",
741
+ "view.ranges": "범위",
742
+ "view.removeSelection": "{{value}} 제거",
743
+ "view.resultsCount_other": "{{count}}개 결과",
744
+ "view.searchFields": "검색 필드",
745
+ "view.sort": "정렬",
746
+ "view.to": "종료",
747
+ "view.warning": "보기 알림",
735
748
  "widgets.schema.editDescription": "설명 편집",
736
749
  "widgets.schema.invalidPropertyDeclaration": "유효하지 않은 속성 선언"
737
750
  }
@@ -125,6 +125,7 @@
125
125
  "agent.noPlanAvailable": "Sem plano disponível",
126
126
  "agent.noPlanDetected": "Nenhum plano detectado ainda",
127
127
  "agent.olderPlan": "Plano anterior",
128
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
128
129
  "agent.openDocument": "Abrir documento",
129
130
  "agent.openInNewTab": "Abrir em nova aba",
130
131
  "agent.panelRenderError": "Não foi possível renderizar {{name}}",
@@ -172,6 +173,7 @@
172
173
  "agent.showLess": "Mostrar menos",
173
174
  "agent.showMore": "Mostrar mais",
174
175
  "agent.showSidebar": "Mostrar painel",
176
+ "agent.showSystemArtifacts": "System files",
175
177
  "agent.staged": "Preparado",
176
178
  "agent.startAgent": "Iniciar agente",
177
179
  "agent.startingAgent": "Iniciando agente...",
@@ -273,6 +275,7 @@
273
275
  "filter.selectRange": "Selecionar intervalo",
274
276
  "filter.to": "Até:",
275
277
  "form.filter": "Filtrar...",
278
+ "grounded.checkerboard": "Grade quadriculada",
276
279
  "language.label": "Idioma",
277
280
  "language.placeholder": "Escolher idioma",
278
281
  "layout.pageNotFound": "Página não encontrada",
@@ -742,6 +745,18 @@
742
745
  "user.unnamedGroup": "Grupo sem nome",
743
746
  "user.user": "Usuário",
744
747
  "user.userId": "ID do usuário",
748
+ "view.display": "Exibição",
749
+ "view.from": "De",
750
+ "view.pagination": "Páginas de resultados",
751
+ "view.ranges": "Intervalos",
752
+ "view.removeSelection": "Remover {{value}}",
753
+ "view.resultsCount_one": "{{count}} resultado",
754
+ "view.resultsCount_many": "{{count}} resultados",
755
+ "view.resultsCount_other": "{{count}} resultados",
756
+ "view.searchFields": "Campos de pesquisa",
757
+ "view.sort": "Ordenar",
758
+ "view.to": "Até",
759
+ "view.warning": "Aviso de visualização",
745
760
  "widgets.schema.editDescription": "Editar descrição",
746
761
  "widgets.schema.invalidPropertyDeclaration": "Declaração de propriedade inválida"
747
762
  }
@@ -126,6 +126,7 @@
126
126
  "agent.noPlanAvailable": "План недоступен",
127
127
  "agent.noPlanDetected": "План пока не обнаружен",
128
128
  "agent.olderPlan": "Более старый план",
129
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
129
130
  "agent.openDocument": "Открыть документ",
130
131
  "agent.openInNewTab": "Открыть в новой вкладке",
131
132
  "agent.panelRenderError": "Не удалось отобразить {{name}}",
@@ -173,6 +174,7 @@
173
174
  "agent.showLess": "Показать меньше",
174
175
  "agent.showMore": "Показать больше",
175
176
  "agent.showSidebar": "Показать боковую панель",
177
+ "agent.showSystemArtifacts": "System files",
176
178
  "agent.staged": "Подготовлено",
177
179
  "agent.startAgent": "Запустить агента",
178
180
  "agent.startingAgent": "Запуск агента...",
@@ -275,6 +277,7 @@
275
277
  "filter.selectRange": "Выбрать диапазон",
276
278
  "filter.to": "До:",
277
279
  "form.filter": "Фильтр...",
280
+ "grounded.checkerboard": "Клетчатая сетка",
278
281
  "language.label": "Язык",
279
282
  "language.placeholder": "Выберите язык",
280
283
  "layout.pageNotFound": "Страница не найдена",
@@ -752,6 +755,19 @@
752
755
  "user.unnamedGroup": "Группа без названия",
753
756
  "user.user": "Пользователь",
754
757
  "user.userId": "ID пользователя",
758
+ "view.display": "Отображение",
759
+ "view.from": "От",
760
+ "view.pagination": "Страницы результатов",
761
+ "view.ranges": "Диапазоны",
762
+ "view.removeSelection": "Удалить {{value}}",
763
+ "view.resultsCount_one": "{{count}} результат",
764
+ "view.resultsCount_few": "{{count}} результата",
765
+ "view.resultsCount_many": "{{count}} результатов",
766
+ "view.resultsCount_other": "{{count}} результата",
767
+ "view.searchFields": "Поля поиска",
768
+ "view.sort": "Сортировать",
769
+ "view.to": "До",
770
+ "view.warning": "Уведомление о представлении",
755
771
  "widgets.schema.editDescription": "Редактировать описание",
756
772
  "widgets.schema.invalidPropertyDeclaration": "Недопустимое объявление свойства"
757
773
  }
@@ -124,6 +124,7 @@
124
124
  "agent.noPlanAvailable": "Plan mevcut değil",
125
125
  "agent.noPlanDetected": "Henüz bir plan algılanmadı",
126
126
  "agent.olderPlan": "Daha eski plan",
127
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
127
128
  "agent.openDocument": "Belgeyi aç",
128
129
  "agent.openInNewTab": "Yeni sekmede aç",
129
130
  "agent.panelRenderError": "{{name}} işlenemedi",
@@ -171,6 +172,7 @@
171
172
  "agent.showLess": "Daha az göster",
172
173
  "agent.showMore": "Daha fazla göster",
173
174
  "agent.showSidebar": "Kenar çubuğunu göster",
175
+ "agent.showSystemArtifacts": "System files",
174
176
  "agent.staged": "Hazırlandı",
175
177
  "agent.startAgent": "Ajanı başlat",
176
178
  "agent.startingAgent": "Ajan başlatılıyor...",
@@ -271,6 +273,7 @@
271
273
  "filter.selectRange": "Aralık seçin",
272
274
  "filter.to": "Bitiş:",
273
275
  "form.filter": "Filtrele...",
276
+ "grounded.checkerboard": "Damalı ızgara",
274
277
  "language.label": "Dil",
275
278
  "language.placeholder": "Dil seçin",
276
279
  "layout.pageNotFound": "Sayfa Bulunamadı",
@@ -732,6 +735,17 @@
732
735
  "user.unnamedGroup": "Adsız Grup",
733
736
  "user.user": "Kullanıcı",
734
737
  "user.userId": "Kullanıcı ID",
738
+ "view.display": "Görüntüle",
739
+ "view.from": "Başlangıç",
740
+ "view.pagination": "Sonuç sayfaları",
741
+ "view.ranges": "Aralıklar",
742
+ "view.removeSelection": "{{value}} seçimini kaldır",
743
+ "view.resultsCount_one": "{{count}} sonuç",
744
+ "view.resultsCount_other": "{{count}} sonuç",
745
+ "view.searchFields": "Arama alanları",
746
+ "view.sort": "Sırala",
747
+ "view.to": "Bitiş",
748
+ "view.warning": "Görünüm bildirimi",
735
749
  "widgets.schema.editDescription": "Açıklamayı düzenle",
736
750
  "widgets.schema.invalidPropertyDeclaration": "Geçersiz özellik bildirimi"
737
751
  }
@@ -124,6 +124,7 @@
124
124
  "agent.noPlanAvailable": "暫無計劃",
125
125
  "agent.noPlanDetected": "尚未偵測到計劃",
126
126
  "agent.olderPlan": "較舊的計劃",
127
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
127
128
  "agent.openDocument": "開啟文件",
128
129
  "agent.openInNewTab": "在新分頁中開啟",
129
130
  "agent.panelRenderError": "無法呈現 {{name}}",
@@ -171,6 +172,7 @@
171
172
  "agent.showLess": "顯示較少",
172
173
  "agent.showMore": "顯示更多",
173
174
  "agent.showSidebar": "顯示側邊欄",
175
+ "agent.showSystemArtifacts": "System files",
174
176
  "agent.staged": "已暫存",
175
177
  "agent.startAgent": "啟動代理",
176
178
  "agent.startingAgent": "正在啟動代理...",
@@ -271,6 +273,7 @@
271
273
  "filter.selectRange": "選擇範圍",
272
274
  "filter.to": "至:",
273
275
  "form.filter": "篩選...",
276
+ "grounded.checkerboard": "棋盤格",
274
277
  "language.label": "語言",
275
278
  "language.placeholder": "選擇語言",
276
279
  "layout.pageNotFound": "頁面未找到",
@@ -732,6 +735,16 @@
732
735
  "user.unnamedGroup": "未命名群組",
733
736
  "user.user": "使用者",
734
737
  "user.userId": "使用者ID",
738
+ "view.display": "顯示",
739
+ "view.from": "起始",
740
+ "view.pagination": "結果頁面",
741
+ "view.ranges": "範圍",
742
+ "view.removeSelection": "移除 {{value}}",
743
+ "view.resultsCount_other": "{{count}} 個結果",
744
+ "view.searchFields": "搜尋欄位",
745
+ "view.sort": "排序",
746
+ "view.to": "結束",
747
+ "view.warning": "檢視通知",
735
748
  "widgets.schema.editDescription": "編輯描述",
736
749
  "widgets.schema.invalidPropertyDeclaration": "無效的屬性宣告"
737
750
  }
@@ -124,6 +124,7 @@
124
124
  "agent.noPlanAvailable": "暂无计划",
125
125
  "agent.noPlanDetected": "尚未检测到计划",
126
126
  "agent.olderPlan": "较旧的计划",
127
+ "agent.onlySystemArtifacts": "Only system files in this run. Enable \"System files\" to view them.",
127
128
  "agent.openDocument": "打开文档",
128
129
  "agent.openInNewTab": "在新标签页中打开",
129
130
  "agent.panelRenderError": "无法渲染 {{name}}",
@@ -171,6 +172,7 @@
171
172
  "agent.showLess": "显示更少",
172
173
  "agent.showMore": "显示更多",
173
174
  "agent.showSidebar": "显示侧边栏",
175
+ "agent.showSystemArtifacts": "System files",
174
176
  "agent.staged": "已暂存",
175
177
  "agent.startAgent": "启动代理",
176
178
  "agent.startingAgent": "正在启动代理...",
@@ -271,6 +273,7 @@
271
273
  "filter.selectRange": "选择范围",
272
274
  "filter.to": "至:",
273
275
  "form.filter": "筛选...",
276
+ "grounded.checkerboard": "棋盘格",
274
277
  "language.label": "语言",
275
278
  "language.placeholder": "选择语言",
276
279
  "layout.pageNotFound": "页面未找到",
@@ -732,6 +735,16 @@
732
735
  "user.unnamedGroup": "未命名群组",
733
736
  "user.user": "用户",
734
737
  "user.userId": "用户ID",
738
+ "view.display": "显示",
739
+ "view.from": "起始",
740
+ "view.pagination": "结果页面",
741
+ "view.ranges": "范围",
742
+ "view.removeSelection": "移除 {{value}}",
743
+ "view.resultsCount_other": "{{count}} 个结果",
744
+ "view.searchFields": "搜索字段",
745
+ "view.sort": "排序",
746
+ "view.to": "结束",
747
+ "view.warning": "视图通知",
735
748
  "widgets.schema.editDescription": "编辑描述",
736
749
  "widgets.schema.invalidPropertyDeclaration": "无效的属性声明"
737
750
  }
@@ -0,0 +1,48 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+ import { HistoryNavigator } from './HistoryNavigator';
3
+
4
+ describe('HistoryNavigator link interception', () => {
5
+ afterEach(() => {
6
+ document.body.replaceChildren();
7
+ vi.restoreAllMocks();
8
+ });
9
+
10
+ it('leaves targeted internal links to native browser navigation', () => {
11
+ const navigator = new HistoryNavigator();
12
+ const navigate = vi.spyOn(navigator as unknown as { _navigate: () => void }, '_navigate');
13
+ const link = document.createElement('a');
14
+ const icon = document.createElement('span');
15
+ link.href = '/store/executions/run-1?p=project&a=account';
16
+ link.target = '_blank';
17
+ link.append(icon);
18
+ document.body.append(link);
19
+ navigator.start();
20
+
21
+ const event = new MouseEvent('click', { bubbles: true, cancelable: true, button: 0 });
22
+ icon.dispatchEvent(event);
23
+
24
+ expect(event.defaultPrevented).toBe(false);
25
+ expect(navigate).not.toHaveBeenCalled();
26
+ navigator.stop();
27
+ });
28
+
29
+ it('continues to intercept ordinary same-origin links', () => {
30
+ const navigator = new HistoryNavigator();
31
+ const navigate = vi
32
+ .spyOn(navigator as unknown as { _navigate: () => void }, '_navigate')
33
+ .mockImplementation(() => undefined);
34
+ const link = document.createElement('a');
35
+ const label = document.createElement('span');
36
+ link.href = '/store/executions/run-1';
37
+ link.append(label);
38
+ document.body.append(link);
39
+ navigator.start();
40
+
41
+ const event = new MouseEvent('click', { bubbles: true, cancelable: true, button: 0 });
42
+ label.dispatchEvent(event);
43
+
44
+ expect(event.defaultPrevented).toBe(true);
45
+ expect(navigate).toHaveBeenCalledOnce();
46
+ navigator.stop();
47
+ });
48
+ });
@@ -1,5 +1,5 @@
1
1
  import { PathWithParams } from './PathWithParams';
2
- import { joinPath } from './path';
2
+ import { joinPath, withMountBasename } from './path';
3
3
 
4
4
  const BASE_PATH = Symbol('BASE_PATH');
5
5
 
@@ -72,14 +72,16 @@ export interface NavigateOptions {
72
72
  title?: string;
73
73
  }
74
74
 
75
- function getElementHrefAsUrl(elem: HTMLElement) {
76
- if (elem && elem.tagName.toLowerCase() === 'a') {
77
- const href = (elem as HTMLAnchorElement)?.href.trim();
78
- if (typeof href === 'string' && href.length > 0) {
79
- return new URL(href);
80
- }
75
+ function getClosestAnchor(target: EventTarget | null): HTMLAnchorElement | null {
76
+ if (!(target instanceof Element)) {
77
+ return null;
81
78
  }
82
- return null;
79
+ return target.closest<HTMLAnchorElement>('a[href]');
80
+ }
81
+
82
+ function getElementHrefAsUrl(elem: HTMLAnchorElement) {
83
+ const href = elem.href.trim();
84
+ return href.length > 0 ? new URL(href) : null;
83
85
  }
84
86
 
85
87
  export class HistoryNavigator {
@@ -149,6 +151,9 @@ export class HistoryNavigator {
149
151
  to = joinPath(basePath, to);
150
152
  }
151
153
  to = this.addStickyParams(to);
154
+ // Keep absolute app routes under the served `<base href>` mount instead of resolving them
155
+ // against the bare origin (which collapses the URL off the mount). No-op when origin-served.
156
+ to = withMountBasename(to);
152
157
  this._navigate(new URL(to, window.location.href), 'navigate', options);
153
158
  }
154
159
 
@@ -233,16 +238,25 @@ export class HistoryNavigator {
233
238
  this.fireLocationChange(new AfterLocationChangeEvent(type, to, state));
234
239
  };
235
240
  const _linkNavListener = (ev: MouseEvent) => {
236
- const target = ev.target as HTMLElement;
237
- // Skip anchors with download attribute or blob: URLs - they are file downloads, not navigation
241
+ // Let the browser handle modifier / non-primary clicks natively (open in new tab/window,
242
+ // download). Intercepting them here would preventDefault those affordances.
243
+ if (ev.defaultPrevented || ev.metaKey || ev.altKey || ev.ctrlKey || ev.shiftKey || ev.button !== 0) {
244
+ return;
245
+ }
246
+ const anchor = getClosestAnchor(ev.target);
247
+ if (!anchor) {
248
+ return;
249
+ }
250
+ const anchorTarget = anchor.getAttribute('target');
251
+ // Downloads, blob URLs, and explicitly targeted links require native browser navigation.
238
252
  if (
239
- target.tagName.toLowerCase() === 'a' &&
240
- ((target as HTMLAnchorElement).hasAttribute('download') ||
241
- (target as HTMLAnchorElement).href?.startsWith('blob:'))
253
+ anchor.hasAttribute('download') ||
254
+ anchor.href.startsWith('blob:') ||
255
+ (!!anchorTarget && anchorTarget.toLowerCase() !== '_self')
242
256
  ) {
243
257
  return;
244
258
  }
245
- const url = getElementHrefAsUrl(target);
259
+ const url = getElementHrefAsUrl(anchor);
246
260
  if (url && url.origin === window.location.origin) {
247
261
  ev.preventDefault();
248
262
  const to = new URL(this.addStickyParams(url.href));
@@ -1,6 +1,16 @@
1
- import type { SyntheticEvent } from 'react';
1
+ import type { MouseEvent, SyntheticEvent } from 'react';
2
+ import { withMountBasename } from './path';
2
3
  import { useNavigate, useRouterContext } from './Router';
3
4
 
5
+ /**
6
+ * True when the click carries a modifier the browser uses for alternate link behavior
7
+ * (open in new tab/window, download) or is not a primary-button click. Such clicks must fall
8
+ * through to the native anchor so the browser can handle them instead of the SPA router.
9
+ */
10
+ function isModifiedClick(ev: MouseEvent): boolean {
11
+ return ev.metaKey || ev.altKey || ev.ctrlKey || ev.shiftKey || ev.button !== 0;
12
+ }
13
+
4
14
  /**
5
15
  * Wraps a <a href="..."> and perform the navigation to href through the router.
6
16
  */
@@ -70,14 +80,20 @@ export function NavLink({
70
80
  skipStickyParams,
71
81
  }: NavLinkProps) {
72
82
  const { router } = useRouterContext();
73
- // In-app route = not an external URL, `_blank` target, or bare hash. Relative paths count too —
74
- // they must be routed, else the global link listener re-applies the module base path (wrong URL).
83
+ // Resolve internal URLs even when a target makes navigation native. New-tab links still need
84
+ // the mount path and tenant sticky params, but must not be intercepted by the SPA router.
75
85
  const isAnchorOrEmpty = !href || href.startsWith('#');
76
- const isExternal = /^[a-z][a-z0-9+.-]*:/i.test(href) || href.startsWith('//') || (!!target && target !== '_self');
77
- const isInternal = !isAnchorOrEmpty && !isExternal;
78
- const resolvedHref = !skipStickyParams && isInternal ? router.getTopRouter().navigator.addStickyParams(href) : href;
79
- const _onClick = (ev: SyntheticEvent) => {
80
- if (ev.defaultPrevented || !isInternal) {
86
+ const isExternalUrl = /^[a-z][a-z0-9+.-]*:/i.test(href) || href.startsWith('//');
87
+ const isInternalUrl = !isAnchorOrEmpty && !isExternalUrl;
88
+ const isNativeNavigation = !!target && target !== '_self';
89
+ // Keep the rendered href under the served `<base href>` mount (correct middle-click / hover /
90
+ // open-in-new-tab); the onClick navigates via the router which applies the same rule. No-op when
91
+ // origin-served (Studio UI). Click handler below passes the raw `href` — navigate() re-bases it.
92
+ const resolvedHref = isInternalUrl
93
+ ? withMountBasename(!skipStickyParams ? router.getTopRouter().navigator.addStickyParams(href) : href)
94
+ : href;
95
+ const _onClick = (ev: MouseEvent) => {
96
+ if (ev.defaultPrevented || !isInternalUrl || isNativeNavigation || isModifiedClick(ev)) {
81
97
  return;
82
98
  }
83
99
  ev.stopPropagation();
@@ -1,7 +1,7 @@
1
1
  import { createContext, useContext, useEffect } from 'react';
2
2
  import { HistoryNavigator, type LocationChangeEvent, type NavigateOptions } from './HistoryNavigator';
3
3
  import { type PathMatch, PathMatcher } from './PathMatcher';
4
- import { isRootPath, joinPath, type PathMatchParams } from './path';
4
+ import { getMountBasename, isRootPath, joinPath, type PathMatchParams, stripMountBasename } from './path';
5
5
 
6
6
  export type RouteComponentProps = PathMatchParams;
7
7
  export type LazyRouteModule = { default: React.ComponentType<Record<string, never>> };
@@ -61,7 +61,8 @@ export class Router extends BaseRouter {
61
61
  }
62
62
  // only process afterChange events
63
63
  if (event.name === 'afterChange') {
64
- const match = this.match(event.location.pathname);
64
+ // Match app-relative: strip the served `<base href>` mount prefix (no-op when origin-served).
65
+ const match = this.match(stripMountBasename(event.location.pathname));
65
66
  if (match?.value) {
66
67
  updateState({
67
68
  ...match,
@@ -184,8 +185,21 @@ export function useNavigate() {
184
185
  }
185
186
 
186
187
  export function useRouterBasePath() {
187
- const { matchedRoutePath, router } = useRouterContext();
188
- return router instanceof NestedRouter ? router.basePath : matchedRoutePath;
188
+ const { router } = useRouterContext();
189
+ // The base path apps prepend to build absolute in-app links (e.g. `${base}/items/${id}`). It MUST
190
+ // include the served `<base href>` mount so links stay on the mount and match the full
191
+ // `useLocation().pathname` (which carries the mount). `getMountBasename()` is '' for the
192
+ // origin-served Studio UI and the mount (no trailing slash) for gateway-served apps.
193
+ const mount = getMountBasename();
194
+ if (router instanceof NestedRouter) {
195
+ // NestedRouter.basePath is relative to the parent router, which sits at the mount, so it must
196
+ // be mount-prefixed too. A bare nested base of '/' (an app whose NestedRouterProvider has no
197
+ // basePath) would otherwise make `${base}/items` resolve to `//items` — a protocol-relative
198
+ // URL that escapes the app. Origin-served Studio (mount '') keeps the raw nested basePath.
199
+ if (!mount) return router.basePath;
200
+ return router.basePath === '/' ? mount : joinPath(mount, router.basePath);
201
+ }
202
+ return mount;
189
203
  }
190
204
 
191
205
  type UseParamsReturn<T> = T extends string ? string : Record<string, string>;