@vertesia/ui 1.4.0-dev.20260615.042549Z → 1.4.0-dev.20260629.130134Z

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 (337) hide show
  1. package/lib/core/components/shadcn/dropdown.d.ts.map +1 -1
  2. package/lib/core/components/shadcn/dropdown.js +6 -2
  3. package/lib/core/components/shadcn/dropdown.js.map +1 -1
  4. package/lib/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
  5. package/lib/core/components/shadcn/filters/filterBar.js +9 -2
  6. package/lib/core/components/shadcn/filters/filterBar.js.map +1 -1
  7. package/lib/core/components/shadcn/modal/ConfirmModal.d.ts +16 -1
  8. package/lib/core/components/shadcn/modal/ConfirmModal.d.ts.map +1 -1
  9. package/lib/core/components/shadcn/modal/ConfirmModal.js +25 -3
  10. package/lib/core/components/shadcn/modal/ConfirmModal.js.map +1 -1
  11. package/lib/core/components/shadcn/modal/dialog.js +1 -1
  12. package/lib/core/components/shadcn/modal/dialog.js.map +1 -1
  13. package/lib/core/components/shadcn/popover.d.ts.map +1 -1
  14. package/lib/core/components/shadcn/popover.js +3 -1
  15. package/lib/core/components/shadcn/popover.js.map +1 -1
  16. package/lib/core/components/shadcn/switch.js +3 -3
  17. package/lib/core/components/shadcn/switch.js.map +1 -1
  18. package/lib/core/components/shadcn/tabs.js +1 -1
  19. package/lib/core/components/shadcn/tabs.js.map +1 -1
  20. package/lib/core/components/shadcn/tooltip.d.ts.map +1 -1
  21. package/lib/core/components/shadcn/tooltip.js +3 -1
  22. package/lib/core/components/shadcn/tooltip.js.map +1 -1
  23. package/lib/env/index.d.ts +0 -19
  24. package/lib/env/index.d.ts.map +1 -1
  25. package/lib/env/index.js +0 -6
  26. package/lib/env/index.js.map +1 -1
  27. package/lib/features/agent/PayloadBuilder.d.ts +4 -0
  28. package/lib/features/agent/PayloadBuilder.d.ts.map +1 -1
  29. package/lib/features/agent/PayloadBuilder.js +16 -0
  30. package/lib/features/agent/PayloadBuilder.js.map +1 -1
  31. package/lib/features/agent/chat/AgentApprovalModeSelector.d.ts +10 -0
  32. package/lib/features/agent/chat/AgentApprovalModeSelector.d.ts.map +1 -0
  33. package/lib/features/agent/chat/AgentApprovalModeSelector.js +50 -0
  34. package/lib/features/agent/chat/AgentApprovalModeSelector.js.map +1 -0
  35. package/lib/features/agent/chat/AgentChatFixtureReplay.d.ts +2 -1
  36. package/lib/features/agent/chat/AgentChatFixtureReplay.d.ts.map +1 -1
  37. package/lib/features/agent/chat/AgentChatFixtureReplay.js +3 -3
  38. package/lib/features/agent/chat/AgentChatFixtureReplay.js.map +1 -1
  39. package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts +5 -2
  40. package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts.map +1 -1
  41. package/lib/features/agent/chat/AgentRequestInputOverlay.js +41 -7
  42. package/lib/features/agent/chat/AgentRequestInputOverlay.js.map +1 -1
  43. package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
  44. package/lib/features/agent/chat/AgentRightPanel.js +133 -12
  45. package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
  46. package/lib/features/agent/chat/AnimatedThinkingDots.js +1 -1
  47. package/lib/features/agent/chat/AnimatedThinkingDots.js.map +1 -1
  48. package/lib/features/agent/chat/ArtifactsTab.d.ts.map +1 -1
  49. package/lib/features/agent/chat/ArtifactsTab.js +11 -65
  50. package/lib/features/agent/chat/ArtifactsTab.js.map +1 -1
  51. package/lib/features/agent/chat/AskUserWidget.d.ts +3 -1
  52. package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
  53. package/lib/features/agent/chat/AskUserWidget.js +4 -3
  54. package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
  55. package/lib/features/agent/chat/ModernAgentConversation.d.ts +10 -2
  56. package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  57. package/lib/features/agent/chat/ModernAgentConversation.js +526 -117
  58. package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
  59. package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.d.ts +8 -0
  60. package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.d.ts.map +1 -0
  61. package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.js +19 -0
  62. package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.js.map +1 -0
  63. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +8 -2
  64. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  65. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +551 -92
  66. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  67. package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.d.ts.map +1 -1
  68. package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js +7 -6
  69. package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js.map +1 -1
  70. package/lib/features/agent/chat/ModernAgentOutput/Header.js +2 -2
  71. package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  72. package/lib/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.d.ts +8 -0
  73. package/lib/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.d.ts.map +1 -0
  74. package/lib/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.js +61 -0
  75. package/lib/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.js.map +1 -0
  76. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts +15 -2
  77. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
  78. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +28 -38
  79. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
  80. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +1 -1
  81. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  82. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +3 -2
  83. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  84. package/lib/features/agent/chat/ModernAgentOutput/SlideInPanel.js +2 -1
  85. package/lib/features/agent/chat/ModernAgentOutput/SlideInPanel.js.map +1 -1
  86. package/lib/features/agent/chat/ModernAgentOutput/SlidingMessages.js +1 -1
  87. package/lib/features/agent/chat/ModernAgentOutput/SlidingMessages.js.map +1 -1
  88. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.d.ts +5 -0
  89. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.d.ts.map +1 -1
  90. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js +59 -4
  91. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js.map +1 -1
  92. package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +2 -2
  93. package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
  94. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts +9 -0
  95. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts.map +1 -1
  96. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js +180 -0
  97. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js.map +1 -1
  98. package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts +6 -0
  99. package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
  100. package/lib/features/agent/chat/ModernAgentOutput/utils.js +92 -2
  101. package/lib/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
  102. package/lib/features/agent/chat/clipboardFiles.d.ts +15 -0
  103. package/lib/features/agent/chat/clipboardFiles.d.ts.map +1 -0
  104. package/lib/features/agent/chat/clipboardFiles.js +35 -0
  105. package/lib/features/agent/chat/clipboardFiles.js.map +1 -0
  106. package/lib/features/agent/chat/hooks/useAgentStream.d.ts +6 -0
  107. package/lib/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
  108. package/lib/features/agent/chat/hooks/useAgentStream.js +218 -37
  109. package/lib/features/agent/chat/hooks/useAgentStream.js.map +1 -1
  110. package/lib/features/agent/chat/hooks/useArtifacts.d.ts +1 -8
  111. package/lib/features/agent/chat/hooks/useArtifacts.d.ts.map +1 -1
  112. package/lib/features/agent/chat/hooks/useArtifacts.js +10 -28
  113. package/lib/features/agent/chat/hooks/useArtifacts.js.map +1 -1
  114. package/lib/features/agent/chat/index.d.ts +2 -1
  115. package/lib/features/agent/chat/index.d.ts.map +1 -1
  116. package/lib/features/agent/chat/index.js +2 -1
  117. package/lib/features/agent/chat/index.js.map +1 -1
  118. package/lib/features/agent/chat/workstreams.d.ts +1 -0
  119. package/lib/features/agent/chat/workstreams.d.ts.map +1 -1
  120. package/lib/features/agent/chat/workstreams.js +28 -0
  121. package/lib/features/agent/chat/workstreams.js.map +1 -1
  122. package/lib/features/facets/AgentRunnerFacetsNav.d.ts +10 -1
  123. package/lib/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
  124. package/lib/features/facets/AgentRunnerFacetsNav.js +6 -3
  125. package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
  126. package/lib/features/facets/CollectionsFacetsNav.d.ts +10 -1
  127. package/lib/features/facets/CollectionsFacetsNav.d.ts.map +1 -1
  128. package/lib/features/facets/CollectionsFacetsNav.js +14 -5
  129. package/lib/features/facets/CollectionsFacetsNav.js.map +1 -1
  130. package/lib/features/facets/PromptsFacetsNav.d.ts +10 -1
  131. package/lib/features/facets/PromptsFacetsNav.d.ts.map +1 -1
  132. package/lib/features/facets/PromptsFacetsNav.js +14 -5
  133. package/lib/features/facets/PromptsFacetsNav.js.map +1 -1
  134. package/lib/features/facets/RunsFacetsNav.d.ts +10 -1
  135. package/lib/features/facets/RunsFacetsNav.d.ts.map +1 -1
  136. package/lib/features/facets/RunsFacetsNav.js +14 -5
  137. package/lib/features/facets/RunsFacetsNav.js.map +1 -1
  138. package/lib/features/index.d.ts +0 -1
  139. package/lib/features/index.d.ts.map +1 -1
  140. package/lib/features/index.js +0 -1
  141. package/lib/features/index.js.map +1 -1
  142. package/lib/features/oauth/McpConnectionsButton.d.ts +30 -0
  143. package/lib/features/oauth/McpConnectionsButton.d.ts.map +1 -0
  144. package/lib/features/oauth/McpConnectionsButton.js +70 -0
  145. package/lib/features/oauth/McpConnectionsButton.js.map +1 -0
  146. package/lib/features/oauth/McpConnectionsDialog.d.ts +25 -0
  147. package/lib/features/oauth/McpConnectionsDialog.d.ts.map +1 -0
  148. package/lib/features/oauth/McpConnectionsDialog.js +26 -0
  149. package/lib/features/oauth/McpConnectionsDialog.js.map +1 -0
  150. package/lib/features/oauth/RemoteMcpConnectionButton.d.ts.map +1 -1
  151. package/lib/features/oauth/RemoteMcpConnectionButton.js +14 -6
  152. package/lib/features/oauth/RemoteMcpConnectionButton.js.map +1 -1
  153. package/lib/features/oauth/index.d.ts +3 -0
  154. package/lib/features/oauth/index.d.ts.map +1 -1
  155. package/lib/features/oauth/index.js +3 -0
  156. package/lib/features/oauth/index.js.map +1 -1
  157. package/lib/features/oauth/useMcpConnections.d.ts +44 -0
  158. package/lib/features/oauth/useMcpConnections.d.ts.map +1 -0
  159. package/lib/features/oauth/useMcpConnections.js +168 -0
  160. package/lib/features/oauth/useMcpConnections.js.map +1 -0
  161. package/lib/features/permissions/UserPermissionsProvider.d.ts +4 -6
  162. package/lib/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
  163. package/lib/features/permissions/UserPermissionsProvider.js +40 -42
  164. package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
  165. package/lib/features/store/objects/DocumentPreviewPanel.d.ts.map +1 -1
  166. package/lib/features/store/objects/DocumentPreviewPanel.js +2 -1
  167. package/lib/features/store/objects/DocumentPreviewPanel.js.map +1 -1
  168. package/lib/features/store/objects/DocumentQuickFilter.d.ts +23 -0
  169. package/lib/features/store/objects/DocumentQuickFilter.d.ts.map +1 -0
  170. package/lib/features/store/objects/DocumentQuickFilter.js +30 -0
  171. package/lib/features/store/objects/DocumentQuickFilter.js.map +1 -0
  172. package/lib/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
  173. package/lib/features/store/objects/DocumentSearchResults.js +17 -1
  174. package/lib/features/store/objects/DocumentSearchResults.js.map +1 -1
  175. package/lib/features/store/objects/components/ContentOverview.d.ts.map +1 -1
  176. package/lib/features/store/objects/components/ContentOverview.js +17 -74
  177. package/lib/features/store/objects/components/ContentOverview.js.map +1 -1
  178. package/lib/features/store/objects/layout/DocumentTableColumn.d.ts +7 -1
  179. package/lib/features/store/objects/layout/DocumentTableColumn.d.ts.map +1 -1
  180. package/lib/features/store/objects/layout/DocumentTableColumn.js +27 -3
  181. package/lib/features/store/objects/layout/DocumentTableColumn.js.map +1 -1
  182. package/lib/features/store/objects/layout/documentLayout.js +1 -1
  183. package/lib/features/store/objects/layout/renderers.d.ts +2 -1
  184. package/lib/features/store/objects/layout/renderers.d.ts.map +1 -1
  185. package/lib/features/store/objects/layout/renderers.js +27 -20
  186. package/lib/features/store/objects/layout/renderers.js.map +1 -1
  187. package/lib/features/store/types/ContentObjectTypesSearch.d.ts.map +1 -1
  188. package/lib/features/store/types/ContentObjectTypesSearch.js +4 -1
  189. package/lib/features/store/types/ContentObjectTypesSearch.js.map +1 -1
  190. package/lib/features/store/types/ContentObjectTypesTable.d.ts +2 -1
  191. package/lib/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
  192. package/lib/features/store/types/ContentObjectTypesTable.js +8 -3
  193. package/lib/features/store/types/ContentObjectTypesTable.js.map +1 -1
  194. package/lib/i18n/instance.d.ts.map +1 -1
  195. package/lib/i18n/instance.js +1 -0
  196. package/lib/i18n/instance.js.map +1 -1
  197. package/lib/i18n/locales/ar.json +72 -45
  198. package/lib/i18n/locales/de.json +65 -34
  199. package/lib/i18n/locales/en.json +63 -47
  200. package/lib/i18n/locales/es.json +65 -35
  201. package/lib/i18n/locales/fr.json +65 -35
  202. package/lib/i18n/locales/it.json +72 -42
  203. package/lib/i18n/locales/ja.json +72 -41
  204. package/lib/i18n/locales/ko.json +72 -41
  205. package/lib/i18n/locales/pt.json +72 -42
  206. package/lib/i18n/locales/ru.json +72 -43
  207. package/lib/i18n/locales/tr.json +72 -41
  208. package/lib/i18n/locales/zh-TW.json +72 -41
  209. package/lib/i18n/locales/zh.json +72 -41
  210. package/lib/session/UserSession.d.ts +0 -6
  211. package/lib/session/UserSession.d.ts.map +1 -1
  212. package/lib/session/UserSession.js +0 -15
  213. package/lib/session/UserSession.js.map +1 -1
  214. package/lib/session/UserSessionProvider.d.ts.map +1 -1
  215. package/lib/session/UserSessionProvider.js +39 -98
  216. package/lib/session/UserSessionProvider.js.map +1 -1
  217. package/lib/session/auth/composable.d.ts.map +1 -1
  218. package/lib/session/auth/composable.js +3 -33
  219. package/lib/session/auth/composable.js.map +1 -1
  220. package/lib/shell/login/SignInPrimitives.d.ts.map +1 -1
  221. package/lib/shell/login/SignInPrimitives.js +3 -2
  222. package/lib/shell/login/SignInPrimitives.js.map +1 -1
  223. package/lib/vertesia-ui-core.js +1 -1
  224. package/lib/vertesia-ui-core.js.map +1 -1
  225. package/lib/vertesia-ui-env.js +1 -1
  226. package/lib/vertesia-ui-env.js.map +1 -1
  227. package/lib/vertesia-ui-features.js +1 -1
  228. package/lib/vertesia-ui-features.js.map +1 -1
  229. package/lib/vertesia-ui-i18n.js +1 -1
  230. package/lib/vertesia-ui-i18n.js.map +1 -1
  231. package/lib/vertesia-ui-session.js +1 -1
  232. package/lib/vertesia-ui-session.js.map +1 -1
  233. package/lib/vertesia-ui-shell.js +1 -1
  234. package/lib/vertesia-ui-shell.js.map +1 -1
  235. package/lib/vertesia-ui-widgets.js +1 -1
  236. package/lib/vertesia-ui-widgets.js.map +1 -1
  237. package/lib/widgets/schema-editor/editor/Editable.js +1 -1
  238. package/lib/widgets/schema-editor/editor/Editable.js.map +1 -1
  239. package/llms.txt +70 -70
  240. package/package.json +35 -32
  241. package/src/core/components/shadcn/dropdown.tsx +2 -0
  242. package/src/core/components/shadcn/filters/filterBar.tsx +9 -2
  243. package/src/core/components/shadcn/modal/ConfirmModal.tsx +65 -3
  244. package/src/core/components/shadcn/modal/dialog.tsx +1 -1
  245. package/src/core/components/shadcn/popover.tsx +1 -0
  246. package/src/core/components/shadcn/switch.tsx +4 -4
  247. package/src/core/components/shadcn/tabs.tsx +1 -1
  248. package/src/core/components/shadcn/tooltip.tsx +1 -0
  249. package/src/env/index.ts +0 -24
  250. package/src/features/agent/PayloadBuilder.tsx +18 -0
  251. package/src/features/agent/chat/AgentApprovalModeSelector.tsx +130 -0
  252. package/src/features/agent/chat/AgentChatFixtureReplay.test.tsx +22 -2
  253. package/src/features/agent/chat/AgentChatFixtureReplay.tsx +33 -27
  254. package/src/features/agent/chat/AgentRequestInputOverlay.test.tsx +122 -0
  255. package/src/features/agent/chat/AgentRequestInputOverlay.tsx +91 -17
  256. package/src/features/agent/chat/AgentRightPanel.tsx +238 -50
  257. package/src/features/agent/chat/AnimatedThinkingDots.tsx +1 -1
  258. package/src/features/agent/chat/ArtifactsTab.tsx +21 -155
  259. package/src/features/agent/chat/AskUserWidget.tsx +6 -2
  260. package/src/features/agent/chat/ModernAgentConversation.test.tsx +1157 -47
  261. package/src/features/agent/chat/ModernAgentConversation.tsx +703 -136
  262. package/src/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.tsx +74 -0
  263. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +1420 -126
  264. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +934 -111
  265. package/src/features/agent/chat/ModernAgentOutput/AttachmentPreview.tsx +31 -40
  266. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +28 -28
  267. package/src/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.tsx +83 -0
  268. package/src/features/agent/chat/ModernAgentOutput/MessageInput.test.tsx +38 -2
  269. package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +121 -98
  270. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +7 -1
  271. package/src/features/agent/chat/ModernAgentOutput/SlideInPanel.tsx +3 -3
  272. package/src/features/agent/chat/ModernAgentOutput/SlidingMessages.tsx +1 -1
  273. package/src/features/agent/chat/ModernAgentOutput/SummaryConversation.ts +82 -2
  274. package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +2 -2
  275. package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.ts +216 -0
  276. package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +149 -0
  277. package/src/features/agent/chat/ModernAgentOutput/utils.ts +103 -2
  278. package/src/features/agent/chat/clipboardFiles.ts +33 -0
  279. package/src/features/agent/chat/hooks/useAgentStream.test.tsx +355 -4
  280. package/src/features/agent/chat/hooks/useAgentStream.ts +270 -43
  281. package/src/features/agent/chat/hooks/useArtifacts.ts +11 -44
  282. package/src/features/agent/chat/index.ts +10 -1
  283. package/src/features/agent/chat/workstreams.ts +42 -0
  284. package/src/features/facets/AgentRunnerFacetsNav.tsx +23 -3
  285. package/src/features/facets/CollectionsFacetsNav.tsx +30 -5
  286. package/src/features/facets/PromptsFacetsNav.tsx +30 -5
  287. package/src/features/facets/RunsFacetsNav.tsx +32 -5
  288. package/src/features/index.ts +0 -1
  289. package/src/features/oauth/McpConnectionsButton.test.tsx +248 -0
  290. package/src/features/oauth/McpConnectionsButton.tsx +269 -0
  291. package/src/features/oauth/McpConnectionsDialog.tsx +142 -0
  292. package/src/features/oauth/RemoteMcpConnectionButton.tsx +37 -14
  293. package/src/features/oauth/index.ts +3 -0
  294. package/src/features/oauth/useMcpConnections.test.ts +94 -0
  295. package/src/features/oauth/useMcpConnections.ts +210 -0
  296. package/src/features/permissions/UserPermissionsProvider.tsx +41 -59
  297. package/src/features/store/objects/DocumentPreviewPanel.tsx +4 -2
  298. package/src/features/store/objects/DocumentQuickFilter.tsx +72 -0
  299. package/src/features/store/objects/DocumentSearchResults.tsx +30 -11
  300. package/src/features/store/objects/components/ContentOverview.tsx +30 -99
  301. package/src/features/store/objects/layout/DocumentTableColumn.tsx +29 -4
  302. package/src/features/store/objects/layout/documentLayout.tsx +1 -1
  303. package/src/features/store/objects/layout/renderers.tsx +80 -20
  304. package/src/features/store/types/ContentObjectTypesSearch.tsx +7 -1
  305. package/src/features/store/types/ContentObjectTypesTable.tsx +34 -4
  306. package/src/i18n/instance.ts +1 -0
  307. package/src/i18n/locales/ar.json +72 -45
  308. package/src/i18n/locales/de.json +65 -34
  309. package/src/i18n/locales/en.json +63 -47
  310. package/src/i18n/locales/es.json +65 -35
  311. package/src/i18n/locales/fr.json +65 -35
  312. package/src/i18n/locales/it.json +72 -42
  313. package/src/i18n/locales/ja.json +72 -41
  314. package/src/i18n/locales/ko.json +72 -41
  315. package/src/i18n/locales/pt.json +72 -42
  316. package/src/i18n/locales/ru.json +72 -43
  317. package/src/i18n/locales/tr.json +72 -41
  318. package/src/i18n/locales/zh-TW.json +72 -41
  319. package/src/i18n/locales/zh.json +72 -41
  320. package/src/i18n/rtl.test.ts +57 -1
  321. package/src/session/UserSession.ts +0 -16
  322. package/src/session/UserSessionProvider.tsx +51 -123
  323. package/src/session/auth/composable.ts +3 -34
  324. package/src/shell/login/SignInPrimitives.tsx +3 -2
  325. package/src/widgets/schema-editor/editor/Editable.tsx +1 -1
  326. package/lib/features/document-viewer/UniversalDocumentViewer.d.ts +0 -73
  327. package/lib/features/document-viewer/UniversalDocumentViewer.d.ts.map +0 -1
  328. package/lib/features/document-viewer/UniversalDocumentViewer.js +0 -415
  329. package/lib/features/document-viewer/UniversalDocumentViewer.js.map +0 -1
  330. package/lib/features/document-viewer/index.d.ts +0 -2
  331. package/lib/features/document-viewer/index.d.ts.map +0 -1
  332. package/lib/features/document-viewer/index.js +0 -2
  333. package/lib/features/document-viewer/index.js.map +0 -1
  334. package/src/features/document-viewer/UniversalDocumentViewer.test.tsx +0 -123
  335. package/src/features/document-viewer/UniversalDocumentViewer.tsx +0 -746
  336. package/src/features/document-viewer/index.ts +0 -1
  337. package/src/session/auth/composable.test.ts +0 -79
@@ -1,8 +1,9 @@
1
- import { Button } from '@vertesia/ui/core';
1
+ import { Button, VTooltip } from '@vertesia/ui/core';
2
2
  import dayjs from 'dayjs';
3
3
  import LocalizedFormat from 'dayjs/plugin/localizedFormat';
4
4
  import RelativeTime from 'dayjs/plugin/relativeTime';
5
5
  import { ExternalLink, Eye } from 'lucide-react';
6
+ import type { ReactNode } from 'react';
6
7
  import { shortId } from '../../../utils';
7
8
 
8
9
  dayjs.extend(RelativeTime);
@@ -32,7 +33,10 @@ function renderableValue(value: unknown): React.ReactNode {
32
33
 
33
34
  const renderers: Record<
34
35
  string,
35
- (params?: URLSearchParams, onClick?: (id: string) => void) => (value: unknown, index: number) => React.ReactNode
36
+ (
37
+ params?: URLSearchParams,
38
+ onClick?: (id: string) => void,
39
+ ) => (value: unknown, index: number, actions?: ReactNode) => React.ReactNode
36
40
  > = {
37
41
  string(params?: URLSearchParams, _onClick?: (id: string) => void) {
38
42
  const transforms: ((value: string) => string)[] = [];
@@ -58,7 +62,7 @@ const renderers: Record<
58
62
  transforms.push((value: string) => `${value}...`);
59
63
  }
60
64
  }
61
- return (value: unknown, index: number) => {
65
+ return (value: unknown, index: number, actions?: ReactNode) => {
62
66
  let v: string;
63
67
  if (value) {
64
68
  v = String(value);
@@ -71,7 +75,18 @@ const renderers: Record<
71
75
  v = '';
72
76
  }
73
77
 
74
- return <td key={index}>{v}</td>;
78
+ return (
79
+ <td key={index} className="group/field">
80
+ {actions ? (
81
+ <div className="flex items-center gap-2 min-w-0">
82
+ <span className="truncate">{v}</span>
83
+ {actions}
84
+ </div>
85
+ ) : (
86
+ v
87
+ )}
88
+ </td>
89
+ );
75
90
  };
76
91
  },
77
92
 
@@ -92,7 +107,11 @@ const renderers: Record<
92
107
  fileSize = String(value);
93
108
  }
94
109
  }
95
- return <td key={index}>{fileSize}</td>;
110
+ return (
111
+ <td key={index} className="group/field">
112
+ {fileSize}
113
+ </td>
114
+ );
96
115
  };
97
116
  },
98
117
 
@@ -113,7 +132,11 @@ const renderers: Record<
113
132
  currency,
114
133
  maximumFractionDigits: digits,
115
134
  }).format(Number.isFinite(numberValue) ? numberValue : 0);
116
- return <td key={index}>{v}</td>;
135
+ return (
136
+ <td key={index} className="group/field">
137
+ {v}
138
+ </td>
139
+ );
117
140
  };
118
141
  },
119
142
  objectId(params?: URLSearchParams, onClick?: (id: string) => void) {
@@ -126,11 +149,11 @@ const renderers: Record<
126
149
  transforms.push((value) => value.slice(parseInt(slice, 10)));
127
150
  }
128
151
  }
129
- return (value: unknown, index: number) => {
152
+ return (value: unknown, index: number, actions?: ReactNode) => {
130
153
  const objectId = getObjectId(value);
131
154
  const displayValue = transforms.reduce((v, t) => t(v), objectId);
132
155
  return (
133
- <td key={index} className="flex justify-start items-center gap-2">
156
+ <td key={index} className="flex justify-start items-center gap-2 group/field">
134
157
  <Button
135
158
  variant="ghost"
136
159
  aria-label="Preview Object"
@@ -144,6 +167,7 @@ const renderers: Record<
144
167
  </Button>
145
168
  {hasSlice ? '~' : ''}
146
169
  {displayValue}
170
+ {actions}
147
171
  </td>
148
172
  );
149
173
  };
@@ -153,13 +177,25 @@ const renderers: Record<
153
177
  if (params) {
154
178
  title = params.get('title') || 'title';
155
179
  }
156
- return (value: unknown, index: number) => {
180
+ return (value: unknown, index: number, actions?: ReactNode) => {
157
181
  const properties = isRecord(value) && isRecord(value.properties) ? value.properties : undefined;
158
182
  const titleValue = properties?.[title];
159
183
  const titleText = renderableValue(titleValue);
160
184
  const name = getStringProperty(value, 'name');
161
185
  const id = getStringProperty(value, 'id');
162
- return <td key={index}>{titleText || name || (id ? shortId(id) : '')}</td>;
186
+ const content = titleText || name || (id ? shortId(id) : '');
187
+ return (
188
+ <td key={index} className="group/field">
189
+ {actions ? (
190
+ <div className="flex items-center gap-2 min-w-0">
191
+ <span className="truncate">{content}</span>
192
+ {actions}
193
+ </div>
194
+ ) : (
195
+ content
196
+ )}
197
+ </td>
198
+ );
163
199
  };
164
200
  },
165
201
  // objectLink - same implementation as objectId but defaults to slice=-7
@@ -172,7 +208,7 @@ const renderers: Record<
172
208
  const objectId = getObjectId(value);
173
209
  const displayValue = transforms.reduce((v, t) => t(v), objectId);
174
210
  return (
175
- <td key={index} className="flex justify-between items-center gap-2 max-w-48">
211
+ <td key={index} className="flex justify-between items-center gap-2 max-w-48 group/field">
176
212
  {hasSlice ? '~' : ''}
177
213
  {displayValue}
178
214
  <Button
@@ -190,8 +226,20 @@ const renderers: Record<
190
226
  };
191
227
  },
192
228
  typeLink(_params?: URLSearchParams, _onClick?: (id: string) => void) {
193
- return (value: unknown, index: number) => {
194
- return <td key={index}>{getStringProperty(value, 'name') || 'n/a'}</td>;
229
+ return (value: unknown, index: number, actions?: ReactNode) => {
230
+ const content = getStringProperty(value, 'name') || 'n/a';
231
+ return (
232
+ <td key={index} className="group/field">
233
+ {actions ? (
234
+ <div className="flex items-center gap-2 min-w-0">
235
+ <span className="truncate">{content}</span>
236
+ {actions}
237
+ </div>
238
+ ) : (
239
+ content
240
+ )}
241
+ </td>
242
+ );
195
243
  };
196
244
  },
197
245
  revision(_params?: URLSearchParams, _onClick?: (id: string) => void) {
@@ -201,7 +249,7 @@ const renderers: Record<
201
249
  const root = getStringProperty(rev, 'root');
202
250
  const label = getStringProperty(rev, 'label');
203
251
  return (
204
- <td key={index}>
252
+ <td key={index} className="group/field">
205
253
  <div className="flex flex-col gap-0.5">
206
254
  {root && (
207
255
  <div className="flex items-center gap-1">
@@ -218,26 +266,38 @@ const renderers: Record<
218
266
  };
219
267
  },
220
268
  date(params?: URLSearchParams, _onClick?: (id: string) => void) {
221
- let method = 'format';
222
- let arg: string | undefined = 'LLL';
269
+ // Default: relative time ("3 hours ago") with an absolute-timestamp tooltip (DisplayDate style).
270
+ // `localized=<fmt>` keeps an absolute formatted value; `relative=fromNow|toNow` is still honored.
271
+ let method = 'fromNow';
272
+ let arg: string | undefined;
223
273
  if (params) {
224
274
  const localized = params.get('localized');
225
275
  if (localized) {
276
+ method = 'format';
226
277
  arg = localized;
227
278
  } else {
228
279
  const relative = params.get('relative');
229
280
  if (relative) {
230
281
  method = relative; // fromNow or toNow
231
- arg = undefined;
232
282
  }
233
283
  }
234
284
  }
235
- return (value: unknown, index: number) => {
285
+ return (value: unknown, index: number, actions?: ReactNode) => {
236
286
  const dateValue =
237
287
  typeof value === 'string' || typeof value === 'number' || value instanceof Date ? value : undefined;
288
+ if (dateValue === undefined) {
289
+ return <td key={index}>{actions}</td>;
290
+ }
238
291
  const date = dayjs(dateValue);
239
- const text = method === 'fromNow' ? date.fromNow() : method === 'toNow' ? date.toNow() : date.format(arg);
240
- return <td key={index}>{text}</td>;
292
+ const text = method === 'format' ? date.format(arg) : method === 'toNow' ? date.toNow() : date.fromNow();
293
+ return (
294
+ <td key={index} className="group/field">
295
+ <div className="flex items-center gap-2">
296
+ <VTooltip description={date.format('LLL')}>{text}</VTooltip>
297
+ {actions}
298
+ </div>
299
+ </td>
300
+ );
241
301
  };
242
302
  },
243
303
  };
@@ -130,7 +130,13 @@ export function ContentObjectTypesSearch({ isDirty = false }: ContentObjectTypes
130
130
  </EmptyCollection>
131
131
  ) : (
132
132
  <>
133
- <ContentObjectTypesTable objects={objects} isLoading={isLoading} />
133
+ <ContentObjectTypesTable
134
+ objects={objects}
135
+ isLoading={isLoading}
136
+ onFilter={(field, value) => {
137
+ if (field === 'name') setSearchTerm(value);
138
+ }}
139
+ />
134
140
  <div ref={loadMoreRef} className="h-4 w-full" />
135
141
  </>
136
142
  )}
@@ -1,17 +1,22 @@
1
1
  import type { ContentObjectTypeItem } from '@vertesia/common';
2
- import { Table, TBody, THead } from '@vertesia/ui/core';
2
+ import { Button, CopyButton, Table, TBody, THead, VTooltip } from '@vertesia/ui/core';
3
3
  import { useUITranslation } from '@vertesia/ui/i18n';
4
4
  import { useNavigate } from '@vertesia/ui/router';
5
5
  import dayjs from 'dayjs';
6
6
  import relativeTime from 'dayjs/plugin/relativeTime';
7
+ import { Filter } from 'lucide-react';
7
8
 
8
9
  dayjs.extend(relativeTime);
9
10
 
11
+ const ACTION_BTN_CLASS =
12
+ 'h-6 w-6 p-0 opacity-0 group-hover/field:opacity-100 text-muted hover:text-foreground transition-opacity shrink-0';
13
+
10
14
  interface ContentObjectTypesTableProps {
11
15
  objects?: ContentObjectTypeItem[];
12
16
  isLoading: boolean;
17
+ onFilter?: (field: string, value: string) => void;
13
18
  }
14
- export function ContentObjectTypesTable({ objects, isLoading }: ContentObjectTypesTableProps) {
19
+ export function ContentObjectTypesTable({ objects, isLoading, onFilter }: ContentObjectTypesTableProps) {
15
20
  const { t } = useUITranslation();
16
21
  const navigate = useNavigate();
17
22
 
@@ -32,10 +37,35 @@ export function ContentObjectTypesTable({ objects, isLoading }: ContentObjectTyp
32
37
  onClick={() => navigate(`/types/${obj.id}`)}
33
38
  className="cursor-pointer hover:bg-muted"
34
39
  >
35
- <td>{obj.name}</td>
40
+ <td className="group/field">
41
+ <div className="flex items-center gap-2 min-w-0">
42
+ <span className="truncate">{obj.name}</span>
43
+ <CopyButton content={obj.id} className={ACTION_BTN_CLASS} />
44
+ {onFilter && (
45
+ <VTooltip description={`Filter by ${obj.name}`} asChild size="xs">
46
+ <Button
47
+ variant="ghost"
48
+ size="sm"
49
+ aria-label={`Filter by ${obj.name}`}
50
+ className={ACTION_BTN_CLASS}
51
+ onClick={(e) => {
52
+ e.stopPropagation();
53
+ onFilter('name', obj.name);
54
+ }}
55
+ >
56
+ <Filter className="size-3" />
57
+ </Button>
58
+ </VTooltip>
59
+ )}
60
+ </div>
61
+ </td>
36
62
  <td>{obj.strict_mode ? 'Yes' : 'No'}</td>
37
63
  <td>{obj.is_chunkable ? 'Yes' : 'No'}</td>
38
- <td>{dayjs(obj.updated_at).fromNow()}</td>
64
+ <td>
65
+ <VTooltip description={dayjs(obj.updated_at).format('YYYY-MM-DD HH:mm:ss')}>
66
+ {dayjs(obj.updated_at).fromNow()}
67
+ </VTooltip>
68
+ </td>
39
69
  </tr>
40
70
  ))}
41
71
  </TBody>
@@ -36,6 +36,7 @@ void i18nInstance.use(initReactI18next).init({
36
36
  'zh-TW': { [NAMESPACE]: zhTW },
37
37
  },
38
38
  fallbackLng: 'en',
39
+ returnEmptyString: false,
39
40
  ns: [NAMESPACE],
40
41
  defaultNS: NAMESPACE,
41
42
  interpolation: {
@@ -5,30 +5,45 @@
5
5
  "agent.activeWorkstreams_few": "لدى الوكيل {{count}} مسارات عمل نشطة قيد التشغيل",
6
6
  "agent.activeWorkstreams_many": "لدى الوكيل {{count}} مسار عمل نشط قيد التشغيل",
7
7
  "agent.activeWorkstreams_other": "لدى الوكيل {{count}} مسار عمل نشط قيد التشغيل",
8
+ "agent.addAttachment": "إضافة مرفق",
8
9
  "agent.agentConversation": "محادثة الوكيل",
9
- "agent.agentInterrupted": "تم إيقاف الوكيل",
10
10
  "agent.agentPlan": "خطة الوكيل",
11
- "agent.agentProcessing": "الوكيل يعالج، يمكنك المتابعة بعد الانتهاء...",
12
11
  "agent.agentRunIdCopied": "تم نسخ معرف تشغيل الوكيل",
13
12
  "agent.agentStarted": "تم بدء الوكيل",
14
- "agent.agentWorking": "الوكيل يعمل... (Esc Esc للإيقاف)",
15
- "agent.agentWorkingStop": "الوكيل يعمل... اضغط Esc مرتين أو انقر إيقاف للمقاطعة",
16
13
  "agent.allMessages": "جميع الرسائل",
14
+ "agent.approvalMode.ask": "طلب الموافقة",
15
+ "agent.approvalMode.askDescription": "اطلب الموافقة قبل إجراءات التعديل أو الإجراءات المدمرة",
16
+ "agent.approvalMode.autoReview": "وافق نيابةً عني",
17
+ "agent.approvalMode.autoReviewDescription": "راجع إجراءات التعديل تلقائيًا واسأل فقط عند عدم الأمان",
18
+ "agent.approvalMode.cancel": "إلغاء",
19
+ "agent.approvalMode.changeFailed": "فشل تغيير وضع الموافقة",
20
+ "agent.approvalMode.confirmFullControl": "استخدام التحكم الكامل",
21
+ "agent.approvalMode.confirmFullControlDescription": "سينفذ الوكيل إجراءات التعديل دون طلب الموافقة في هذه المحادثة.",
22
+ "agent.approvalMode.confirmFullControlTitle": "التبديل إلى التحكم الكامل؟",
23
+ "agent.approvalMode.dropdownTitle": "كيف ينبغي الموافقة على إجراءات الوكيل؟",
24
+ "agent.approvalMode.fullControl": "تحكم كامل",
25
+ "agent.approvalMode.fullControlDescription": "تنفيذ إجراءات التعديل دون موافقة",
26
+ "agent.approvalMode.selectorLabel": "وضع موافقة الوكيل",
17
27
  "agent.artifacts": "المخرجات",
18
- "agent.askAnything": "اسأل أي شيء... (اسحب أو الصق الملفات)",
28
+ "agent.backToMainAgent": "العودة إلى الوكيل الرئيسي",
19
29
  "agent.batch": "دفعة",
20
- "agent.browserScreenshot": "",
21
- "agent.browserScreenshotPending": "",
22
- "agent.browserUse": "",
23
- "agent.browserWidgetRenderError": "",
30
+ "agent.browserPreview": "معاينة المتصفح",
31
+ "agent.browserScreenshot": "لقطة شاشة المتصفح",
32
+ "agent.browserScreenshotPending": "في انتظار لقطة شاشة المتصفح",
33
+ "agent.browserUse": "استخدام المتصفح",
34
+ "agent.browserWidgetRenderError": "تعذر عرض أداة المتصفح",
24
35
  "agent.canceled": "تم الإلغاء",
25
36
  "agent.canceling": "جار الإلغاء",
26
37
  "agent.cancelWorkflow": "إلغاء سير العمل",
38
+ "agent.clickToCompactNow": "انقر للضغط الآن.",
27
39
  "agent.clickToEnlarge": "انقر للتكبير",
28
40
  "agent.cloneConversation": "استنساخ المحادثة",
29
41
  "agent.close": "إغلاق",
30
42
  "agent.closeFullscreen": "إغلاق ملء الشاشة",
31
43
  "agent.completed": "مكتمل",
44
+ "agent.contextRemainingUntilCompact": "يتبقى {{percent}}% من السياق قبل الضغط التلقائي.",
45
+ "agent.contextTokenUsage": "حجم السياق: {{used}} / {{limit}} رمز",
46
+ "agent.contextUsageCompactLabel": "تم استخدام {{percent}}% من السياق - انقر للضغط",
32
47
  "agent.conversationCloned": "تم استنساخ المحادثة",
33
48
  "agent.copied": "تم النسخ",
34
49
  "agent.copiedAllToolCalls": "تم نسخ جميع استدعاءات الأدوات إلى الحافظة",
@@ -45,15 +60,12 @@
45
60
  "agent.dashboard": "لوحة المعلومات",
46
61
  "agent.details": "تفاصيل",
47
62
  "agent.document": "مستند",
48
- "agent.documentAttachments": "مرفقات المستند",
49
- "agent.documentAttachmentsDescription": "مستندات من المتجر مرفقة بهذه الرسالة. يمكن للوكيل استرجاعها بالمعرف في أي وقت، أو إعادة إرفاقها لتضمين المحتوى مباشرة.",
50
63
  "agent.documents": "المستندات",
51
64
  "agent.download": "تحميل",
52
65
  "agent.downloadConversation": "تحميل المحادثة",
53
66
  "agent.dropFilesToUpload": "أسقط الملفات للرفع",
54
67
  "agent.elapsed": "{{seconds}}ث مضت",
55
68
  "agent.enlargedView": "عرض مكبّر",
56
- "agent.enterToSend": "Enter للإرسال • Shift+Enter لسطر جديد",
57
69
  "agent.error": "خطأ",
58
70
  "agent.errorStarting": "خطأ في بدء سير العمل",
59
71
  "agent.exit": "خروج",
@@ -67,18 +79,13 @@
67
79
  "agent.failed": "فشل",
68
80
  "agent.failedToCancelWorkflow": "فشل إلغاء سير العمل",
69
81
  "agent.failedToCloneConversation": "فشل استنساخ المحادثة",
82
+ "agent.failedToCompactContext": "فشل ضغط السياق",
70
83
  "agent.failedToDownload": "فشل تنزيل المحادثة",
71
84
  "agent.failedToInterrupt": "فشل الإيقاف",
72
85
  "agent.failedToLoadDocument": "فشل تحميل المستند",
73
86
  "agent.failedToSend": "فشل إرسال الرسالة",
74
87
  "agent.filesProcessing": "لا تزال الملفات قيد المعالجة",
75
- "agent.filesStagedCount_zero": "لا توجد ملفات مُعدّة",
76
- "agent.filesStagedCount_one": "ملف واحد مُعدّ - سيتم رفعه عند بدء المحادثة",
77
- "agent.filesStagedCount_two": "ملفان مُعدّان - سيتم رفعهما عند بدء المحادثة",
78
- "agent.filesStagedCount_few": "{{count}} ملفات مُعدّة - سيتم رفعها عند بدء المحادثة",
79
- "agent.filesStagedCount_many": "{{count}} ملفًا مُعدًّا - سيتم رفعها عند بدء المحادثة",
80
- "agent.filesStagedCount_other": "{{count}} ملف مُعدّ - سيتم رفعها عند بدء المحادثة",
81
- "agent.filesUploadedDescription": "الملفات المرفوعة في هذه المحادثة تظل متاحة طوال الوقت. يمكن للوكيل الوصول إليها في أي وقت.",
88
+ "agent.fileStagedTooltip": "ملف مُعدّ - سيتم رفعه عند بدء المحادثة",
82
89
  "agent.fullscreen": "ملء الشاشة",
83
90
  "agent.hideDetails": "إخفاء التفاصيل",
84
91
  "agent.hideSidebar": "إخفاء الشريط الجانبي",
@@ -89,10 +96,18 @@
89
96
  "agent.loadingDocument": "جارٍ تحميل المستند...",
90
97
  "agent.main": "الرئيسي",
91
98
  "agent.mainWorkstream": "تدفق العمل الرئيسي",
99
+ "agent.mcpConnectedMessage": "لقد اتصلت بـ {{name}}.",
100
+ "agent.mcpDeclinedMessage": "لا أريد الاتصال بـ {{name}}. تابع بدون هذا الاتصال.",
101
+ "agent.messageConsumed": "تمت معالجة الرسالة",
102
+ "agent.messageFailed": "فشل إرسال الرسالة",
103
+ "agent.messageMainAgentWhileViewingWorkstream": "أرسل رسالة إلى @الوكيل الرئيسي (عرض {{workstream}})...",
104
+ "agent.messageReceived": "تم استلام الرسالة",
105
+ "agent.messageSending": "جارٍ إرسال الرسالة",
92
106
  "agent.moreActions": "المزيد من الإجراءات",
107
+ "agent.moreTabs": "المزيد",
93
108
  "agent.newerPlan": "خطة أحدث",
94
109
  "agent.no": "لا",
95
- "agent.noActiveWorkstreams": "لا توجد تدفقات عمل نشطة",
110
+ "agent.noActiveParallelTasks": "لا توجد مهام متوازية نشطة",
96
111
  "agent.noAgentRunning": "لا يوجد وكيل قيد التشغيل حالياً",
97
112
  "agent.noArtifactsYet": "لا توجد مخرجات بعد",
98
113
  "agent.noContentAvailable": "لا يوجد محتوى متاح",
@@ -104,11 +119,11 @@
104
119
  "agent.noPlanAvailable": "لا توجد خطة متاحة",
105
120
  "agent.noPlanDetected": "لم يتم اكتشاف أي خطة بعد",
106
121
  "agent.olderPlan": "خطة أقدم",
107
- "agent.onlySystemArtifacts": "",
108
122
  "agent.openDocument": "فتح المستند",
109
123
  "agent.openInNewTab": "فتح في علامة تبويب جديدة",
110
- "agent.panelRenderError": "",
111
- "agent.panelRenderErrorDescription": "",
124
+ "agent.panelRenderError": "تعذر عرض {{name}}",
125
+ "agent.panelRenderErrorDescription": "لا يزال باقي عارض الوكيل متاحًا.",
126
+ "agent.parallelWorkDescription": "مهام متوازية تعمل إلى جانب هذه المحادثة.",
112
127
  "agent.payload": "الحمولة",
113
128
  "agent.pdfExportFailed": "فشل تصدير PDF",
114
129
  "agent.pdfExportReady": "تصدير PDF جاهز",
@@ -123,26 +138,41 @@
123
138
  "agent.ready": "جاهز",
124
139
  "agent.refresh": "تحديث",
125
140
  "agent.remaining": "{{seconds}}ث متبقية",
141
+ "agent.removeFile": "إزالة {{name}}",
142
+ "agent.removeFileFailed": "فشلت إزالة الملف",
126
143
  "agent.retry": "إعادة المحاولة",
144
+ "agent.rewind.exportFixture": "تصدير نموذج إعادة التشغيل",
145
+ "agent.rewind.fixtureExported": "تم تصدير نموذج إعادة التشغيل",
146
+ "agent.rewind.fixtureMeta": "{{messageCount}} رسالة · التكرار {{loops}}",
147
+ "agent.rewind.fixtureTitle": "إعادة تشغيل محادثة الوكيل",
148
+ "agent.rewind.jumpToLatest": "الانتقال إلى أحدث رسالة",
149
+ "agent.rewind.jumpToLive": "الانتقال إلى المباشر",
150
+ "agent.rewind.jumpToStart": "الانتقال إلى أول رسالة",
151
+ "agent.rewind.label": "إعادة التشغيل",
152
+ "agent.rewind.nextMessage": "الرسالة التالية",
153
+ "agent.rewind.pause": "إيقاف مؤقت",
154
+ "agent.rewind.positionInput": "موضع التشغيل",
155
+ "agent.rewind.previousMessage": "الرسالة السابقة",
156
+ "agent.rewind.resume": "استئناف",
127
157
  "agent.runIdCopied": "تم نسخ معرّف التشغيل",
128
158
  "agent.running": "قيد التشغيل",
129
159
  "agent.searchDocuments": "البحث في المستندات",
130
160
  "agent.selectInteraction": "اختر تفاعلاً وانقر ابدأ لتشغيل الوكيل",
131
- "agent.selectRightPanelSection": "حدد قسم اللوحة اليمنى",
161
+ "agent.selectOption": "حدد خيارًا",
132
162
  "agent.send": "إرسال",
163
+ "agent.sendTooltip": "انقر أو Enter للإرسال",
133
164
  "agent.showAllMessages": "عرض جميع الرسائل",
134
165
  "agent.showDetails": "عرض التفاصيل",
135
166
  "agent.showLess": "عرض أقل",
136
167
  "agent.showMore": "عرض المزيد",
137
168
  "agent.showSidebar": "عرض الشريط الجانبي",
138
- "agent.showSystemArtifacts": "",
139
169
  "agent.staged": "مُعدّ",
140
170
  "agent.startAgent": "بدء الوكيل",
141
171
  "agent.startingAgent": "جارٍ بدء الوكيل...",
142
172
  "agent.startingAgentUploading": "جارٍ بدء الوكيل ورفع الملفات...",
143
173
  "agent.startNewConversation": "بدء محادثة جديدة",
144
174
  "agent.stepByStepPlan": "خطة خطوة بخطوة",
145
- "agent.stopAgent": "إيقاف الوكيل",
175
+ "agent.stopTooltip": "انقر أو Esc Esc للإيقاف",
146
176
  "agent.submitSelection": "إرسال الاختيار",
147
177
  "agent.submitSelectionCount_zero": "إرسال الاختيار ({{count}})",
148
178
  "agent.submitSelectionCount_one": "إرسال الاختيار ({{count}})",
@@ -151,36 +181,20 @@
151
181
  "agent.submitSelectionCount_many": "إرسال الاختيار ({{count}})",
152
182
  "agent.submitSelectionCount_other": "إرسال الاختيار ({{count}})",
153
183
  "agent.summary": "ملخص",
154
- "agent.verbose": "مفصل",
155
184
  "agent.taskProgress": "تقدم المهام",
156
185
  "agent.tasksCompleted": "{{completed}}/{{total}} مكتملة",
157
186
  "agent.timeout": "انتهت المهلة",
158
- "agent.rewind.exportFixture": "تصدير نموذج إعادة التشغيل",
159
- "agent.rewind.fixtureExported": "تم تصدير نموذج إعادة التشغيل",
160
- "agent.rewind.fixtureMeta": "{{messageCount}} رسالة · التكرار {{loops}}",
161
- "agent.rewind.fixtureTitle": "إعادة تشغيل محادثة الوكيل",
162
- "agent.rewind.jumpToLive": "الانتقال إلى المباشر",
163
- "agent.rewind.label": "إعادة التشغيل",
164
- "agent.rewind.livePosition": "مباشر {{current}}/{{total}}",
165
- "agent.rewind.nextMessage": "الرسالة التالية",
166
- "agent.rewind.nextUserTurn": "دور المستخدم التالي",
167
- "agent.rewind.pause": "إيقاف مؤقت",
168
- "agent.rewind.position": "{{current}}/{{total}}",
169
- "agent.rewind.previousMessage": "الرسالة السابقة",
170
- "agent.rewind.previousUserTurn": "دور المستخدم السابق",
171
- "agent.rewind.resume": "استئناف",
172
187
  "agent.toggleRightSidebar": "تبديل الشريط الجانبي الأيمن",
173
- "agent.typeNewInstructions": "اكتب رسالتك لإعطاء تعليمات جديدة",
174
188
  "agent.typeYourMessage": "اكتب رسالتك...",
175
189
  "agent.typeYourResponse": "اكتب ردك...",
176
190
  "agent.unableToOpenPrint": "تعذر فتح معاينة الطباعة",
177
191
  "agent.unknownError": "خطأ غير معروف",
178
192
  "agent.unknownTime": "وقت غير معروف",
179
193
  "agent.upload": "رفع",
180
- "agent.uploadedFiles": "الملفات المرفوعة",
181
194
  "agent.uploadFailed": "فشل الرفع",
182
195
  "agent.uploading": "جارٍ الرفع...",
183
196
  "agent.uploads": "المرفوعات",
197
+ "agent.verbose": "مفصل",
184
198
  "agent.waitForFiles": "انتظر حتى تنتهي معالجة الملفات",
185
199
  "agent.waitForFilesProcessing": "يرجى الانتظار حتى تنتهي معالجة جميع الملفات قبل الإرسال",
186
200
  "agent.waiting": "في الانتظار...",
@@ -188,9 +202,11 @@
188
202
  "agent.workflowCancelled": "تم إلغاء سير العمل",
189
203
  "agent.workflowRunIdCopied": "تم نسخ معرف تشغيل سير العمل",
190
204
  "agent.working": "جارٍ العمل...",
191
- "agent.workstreamRenderError": "",
205
+ "agent.workstreamProgress": "اكتمل {{percent}}%",
206
+ "agent.workstreamRenderError": "تعذر عرض مسار العمل",
192
207
  "agent.workstreams": "تدفقات العمل",
193
208
  "agent.yes": "نعم",
209
+ "agent.youStoppedAfter": "توقفت بعد {{duration}}",
194
210
  "auth.blocked.body": "{{name}} يستخدم Vertesia، لكن لم نعثر على دعوة لـ {{email}}. اطلب من المسؤول إضافتك للبدء.",
195
211
  "auth.blocked.eyebrow": "الدعوة مطلوبة",
196
212
  "auth.blocked.teamFromDomain": "مجموعة {{domain}}",
@@ -242,7 +258,6 @@
242
258
  "filter.filterPlaceholder": "تصفية...",
243
259
  "filter.from": "من:",
244
260
  "filter.noAvailableFilters": "لا توجد عوامل تصفية متاحة",
245
- "filter.noMatchingFilters": "لا توجد عوامل تصفية مطابقة",
246
261
  "filter.noResultsFound": "لم يتم العثور على نتائج.",
247
262
  "filter.selectRange": "اختر نطاقاً",
248
263
  "filter.to": "إلى:",
@@ -286,11 +301,23 @@
286
301
  "login.terminal.projectRequiredDesc": "يرجى اختيار مشروع لتفويض العميل للوصول إلى خوادم ComposablePrompts",
287
302
  "login.terminal.selectAccount": "اختر حساباً",
288
303
  "login.terminal.selectProject": "اختر مشروعاً",
304
+ "mcpConnections.activateAria": "تفعيل {{name}} لهذه المحادثة",
305
+ "mcpConnections.checkingStatus": "جارٍ التحقق من الحالة",
306
+ "mcpConnections.deactivateAria": "تعطيل {{name}} لهذه المحادثة",
307
+ "mcpConnections.disabled": "معطل",
308
+ "mcpConnections.empty": "لا توجد خوادم MCP مثبتة لهذا المشروع.",
309
+ "mcpConnections.enabled": "مفعل",
310
+ "mcpConnections.label": "MCP",
311
+ "mcpConnections.manage": "إدارة اتصالات MCP",
312
+ "mcpConnections.settings": "الإعدادات",
313
+ "mcpConnections.subtitle": "إدارة خوادم MCP المتاحة لهذه المحادثة.",
314
+ "mcpConnections.title": "MCP",
289
315
  "mcpOAuth.authenticate": "المصادقة",
290
316
  "mcpOAuth.authenticating": "جارٍ المصادقة...",
291
317
  "mcpOAuth.connect": "اتصال",
292
318
  "mcpOAuth.connected": "متصل",
293
319
  "mcpOAuth.connecting": "جارٍ الاتصال...",
320
+ "mcpOAuth.decline": "رفض",
294
321
  "mcpOAuth.disconnect": "قطع الاتصال",
295
322
  "mcpOAuth.notConnected": "غير متصل",
296
323
  "misc.copiedToClipboard": "تم النسخ إلى الحافظة",