@parhelia/core 0.1.12565 → 0.1.12570

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 (575) hide show
  1. package/dist/agents-view/AgentCard.d.ts +4 -6
  2. package/dist/agents-view/AgentCard.js +24 -143
  3. package/dist/agents-view/AgentCard.js.map +1 -1
  4. package/dist/agents-view/AgentsInbox.d.ts +1 -1
  5. package/dist/agents-view/AgentsInbox.js +92 -7
  6. package/dist/agents-view/AgentsInbox.js.map +1 -1
  7. package/dist/agents-view/AgentsTitlebar.js +2 -3
  8. package/dist/agents-view/AgentsTitlebar.js.map +1 -1
  9. package/dist/agents-view/AgentsView.d.ts +7 -6
  10. package/dist/agents-view/AgentsView.js +99 -191
  11. package/dist/agents-view/AgentsView.js.map +1 -1
  12. package/dist/agents-view/AgentsWorkspaceView.d.ts +6 -2
  13. package/dist/agents-view/AgentsWorkspaceView.js +113 -266
  14. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  15. package/dist/agents-view/ProfileAgentsGroup.d.ts +1 -2
  16. package/dist/agents-view/ProfileAgentsGroup.js +3 -4
  17. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  18. package/dist/components/ActionButton.d.ts +1 -1
  19. package/dist/components/ActionButton.js.map +1 -1
  20. package/dist/components/FilterInput.d.ts +1 -1
  21. package/dist/components/FilterInput.js +1 -1
  22. package/dist/components/FilterInput.js.map +1 -1
  23. package/dist/components/ui/LanguageSelector.js +4 -2
  24. package/dist/components/ui/LanguageSelector.js.map +1 -1
  25. package/dist/components/ui/PlaceholderInput.js +3 -3
  26. package/dist/components/ui/PlaceholderInput.js.map +1 -1
  27. package/dist/components/ui/PlaceholderInputTypes.js +1 -1
  28. package/dist/components/ui/PlaceholderInputTypes.js.map +1 -1
  29. package/dist/components/ui/alert-dialog.d.ts +1 -1
  30. package/dist/components/ui/alert-dialog.js +10 -6
  31. package/dist/components/ui/alert-dialog.js.map +1 -1
  32. package/dist/components/ui/button.d.ts +4 -4
  33. package/dist/components/ui/button.js +1 -4
  34. package/dist/components/ui/button.js.map +1 -1
  35. package/dist/components/ui/context-menu.d.ts +1 -1
  36. package/dist/components/ui/context-menu.js +4 -12
  37. package/dist/components/ui/context-menu.js.map +1 -1
  38. package/dist/components/ui/copy-button.d.ts +1 -2
  39. package/dist/components/ui/copy-button.js +2 -2
  40. package/dist/components/ui/copy-button.js.map +1 -1
  41. package/dist/components/ui/dialog.d.ts +1 -1
  42. package/dist/components/ui/dialog.js +126 -21
  43. package/dist/components/ui/dialog.js.map +1 -1
  44. package/dist/components/ui/input.d.ts +1 -1
  45. package/dist/components/ui/input.js +3 -5
  46. package/dist/components/ui/input.js.map +1 -1
  47. package/dist/components/ui/paste-button.d.ts +1 -2
  48. package/dist/components/ui/paste-button.js +2 -2
  49. package/dist/components/ui/paste-button.js.map +1 -1
  50. package/dist/components/ui/popover.js +9 -1
  51. package/dist/components/ui/popover.js.map +1 -1
  52. package/dist/components/ui/select.js +1 -1
  53. package/dist/components/ui/select.js.map +1 -1
  54. package/dist/components/ui/styled-dialog-title.js +1 -1
  55. package/dist/components/ui/styled-dialog-title.js.map +1 -1
  56. package/dist/components/ui/tabs.d.ts +1 -1
  57. package/dist/components/ui/tabs.js +11 -4
  58. package/dist/components/ui/tabs.js.map +1 -1
  59. package/dist/config/config.d.ts +2 -4
  60. package/dist/config/config.js +70 -250
  61. package/dist/config/config.js.map +1 -1
  62. package/dist/config/types/workspace.d.ts +0 -6
  63. package/dist/config/types.d.ts +12 -63
  64. package/dist/config/types.js.map +1 -1
  65. package/dist/editor/ComponentInfo.d.ts +4 -0
  66. package/dist/editor/ComponentInfo.js +41 -0
  67. package/dist/editor/ComponentInfo.js.map +1 -0
  68. package/dist/editor/ConfirmationDialog.js +4 -20
  69. package/dist/editor/ConfirmationDialog.js.map +1 -1
  70. package/dist/editor/ContentTree.d.ts +1 -2
  71. package/dist/editor/ContentTree.js +32 -93
  72. package/dist/editor/ContentTree.js.map +1 -1
  73. package/dist/editor/Editor.js +22 -87
  74. package/dist/editor/Editor.js.map +1 -1
  75. package/dist/editor/FieldHistory.js +36 -84
  76. package/dist/editor/FieldHistory.js.map +1 -1
  77. package/dist/editor/FieldListField.js +9 -21
  78. package/dist/editor/FieldListField.js.map +1 -1
  79. package/dist/editor/FieldListFieldWithFallbacks.js +2 -23
  80. package/dist/editor/FieldListFieldWithFallbacks.js.map +1 -1
  81. package/dist/editor/GlobalMenuBar.js +2 -29
  82. package/dist/editor/GlobalMenuBar.js.map +1 -1
  83. package/dist/editor/ImageEditor.js +2 -5
  84. package/dist/editor/ImageEditor.js.map +1 -1
  85. package/dist/editor/ItemInfo.js +1 -36
  86. package/dist/editor/ItemInfo.js.map +1 -1
  87. package/dist/editor/LinkEditorDialog.js +0 -3
  88. package/dist/editor/LinkEditorDialog.js.map +1 -1
  89. package/dist/editor/MainLayout.d.ts +2 -0
  90. package/dist/editor/MainLayout.js +8 -65
  91. package/dist/editor/MainLayout.js.map +1 -1
  92. package/dist/editor/MigrationsView.js +5 -29
  93. package/dist/editor/MigrationsView.js.map +1 -1
  94. package/dist/editor/MobileLayout.js +12 -37
  95. package/dist/editor/MobileLayout.js.map +1 -1
  96. package/dist/editor/PictureCropper.js +45 -54
  97. package/dist/editor/PictureCropper.js.map +1 -1
  98. package/dist/editor/PictureEditor.js +15 -17
  99. package/dist/editor/PictureEditor.js.map +1 -1
  100. package/dist/editor/QuickItemSwitcher.js +21 -21
  101. package/dist/editor/QuickItemSwitcher.js.map +1 -1
  102. package/dist/editor/SetupWizard.js +12 -52
  103. package/dist/editor/SetupWizard.js.map +1 -1
  104. package/dist/editor/Titlebar.js +2 -7
  105. package/dist/editor/Titlebar.js.map +1 -1
  106. package/dist/editor/ai/AgentCostDisplay.d.ts +0 -1
  107. package/dist/editor/ai/AgentCostDisplay.js +1 -1
  108. package/dist/editor/ai/AgentCostDisplay.js.map +1 -1
  109. package/dist/editor/ai/AgentDocumentList.js +14 -32
  110. package/dist/editor/ai/AgentDocumentList.js.map +1 -1
  111. package/dist/editor/ai/AgentGreeting.js +2 -3
  112. package/dist/editor/ai/AgentGreeting.js.map +1 -1
  113. package/dist/editor/ai/AgentProfileSelector.js +1 -2
  114. package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
  115. package/dist/editor/ai/AgentStatusBadge.d.ts +5 -0
  116. package/dist/editor/ai/AgentStatusBadge.js +65 -67
  117. package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
  118. package/dist/editor/ai/AgentTerminal.d.ts +2 -14
  119. package/dist/editor/ai/AgentTerminal.js +496 -2406
  120. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  121. package/dist/editor/ai/AgentTerminalStatusBar.d.ts +3 -8
  122. package/dist/editor/ai/AgentTerminalStatusBar.js +56 -481
  123. package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
  124. package/dist/editor/ai/Agents.js +113 -161
  125. package/dist/editor/ai/Agents.js.map +1 -1
  126. package/dist/editor/ai/AiResponseMessage.d.ts +1 -10
  127. package/dist/editor/ai/AiResponseMessage.js +26 -267
  128. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  129. package/dist/editor/ai/ContextInfoBar.d.ts +3 -2
  130. package/dist/editor/ai/ContextInfoBar.js +7 -64
  131. package/dist/editor/ai/ContextInfoBar.js.map +1 -1
  132. package/dist/editor/ai/GuidanceOverlay.js +11 -17
  133. package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
  134. package/dist/editor/ai/HelpTerminal.d.ts +5 -0
  135. package/dist/editor/ai/HelpTerminal.js +166 -0
  136. package/dist/editor/ai/HelpTerminal.js.map +1 -0
  137. package/dist/editor/ai/InlineAiDialog.d.ts +1 -1
  138. package/dist/editor/ai/InlineAiDialog.js +192 -514
  139. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  140. package/dist/editor/ai/InlineAiTrigger.js +12 -115
  141. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  142. package/dist/editor/ai/MediaImage.js +8 -40
  143. package/dist/editor/ai/MediaImage.js.map +1 -1
  144. package/dist/editor/ai/SpawnedAgentsPanel.js +12 -10
  145. package/dist/editor/ai/SpawnedAgentsPanel.js.map +1 -1
  146. package/dist/editor/ai/ToolCallDisplay.d.ts +2 -22
  147. package/dist/editor/ai/ToolCallDisplay.js +150 -542
  148. package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
  149. package/dist/editor/ai/dialogs/AgentDialogHandler.d.ts +8 -1
  150. package/dist/editor/ai/dialogs/AgentDialogHandler.js +42 -379
  151. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  152. package/dist/editor/ai/dialogs/QuestionnaireInline.d.ts +1 -5
  153. package/dist/editor/ai/dialogs/QuestionnaireInline.js +60 -628
  154. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  155. package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +0 -115
  156. package/dist/editor/ai/dialogs/agentDialogTypes.js +0 -2
  157. package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
  158. package/dist/editor/ai/types.d.ts +1 -3
  159. package/dist/editor/ai/useAgentStatus.d.ts +1 -2
  160. package/dist/editor/ai/useAgentStatus.js +100 -90
  161. package/dist/editor/ai/useAgentStatus.js.map +1 -1
  162. package/dist/editor/ai/useInlineAiPosition.js +5 -45
  163. package/dist/editor/ai/useInlineAiPosition.js.map +1 -1
  164. package/dist/editor/client/AboutDialog.js +2 -4
  165. package/dist/editor/client/AboutDialog.js.map +1 -1
  166. package/dist/editor/client/EditorShell.d.ts +1 -4
  167. package/dist/editor/client/EditorShell.js +237 -770
  168. package/dist/editor/client/EditorShell.js.map +1 -1
  169. package/dist/editor/client/editContext.d.ts +19 -33
  170. package/dist/editor/client/editContext.js.map +1 -1
  171. package/dist/editor/client/helpers.js +0 -6
  172. package/dist/editor/client/helpers.js.map +1 -1
  173. package/dist/editor/client/hooks/useEditorUrlSync.js +2 -1
  174. package/dist/editor/client/hooks/useEditorUrlSync.js.map +1 -1
  175. package/dist/editor/client/hooks/useEditorWebSocket.d.ts +0 -10
  176. package/dist/editor/client/hooks/useEditorWebSocket.js +14 -209
  177. package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
  178. package/dist/editor/client/hooks/useQuota.d.ts +0 -8
  179. package/dist/editor/client/hooks/useQuota.js.map +1 -1
  180. package/dist/editor/client/hooks/useSocketMessageHandler.js +15 -73
  181. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  182. package/dist/editor/client/itemsRepository.js +6 -10
  183. package/dist/editor/client/itemsRepository.js.map +1 -1
  184. package/dist/editor/client/operations.d.ts +3 -6
  185. package/dist/editor/client/operations.js +30 -208
  186. package/dist/editor/client/operations.js.map +1 -1
  187. package/dist/editor/client/pageModelBuilder.js +31 -4
  188. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  189. package/dist/editor/client/ui/DevModeIndicator.js +2 -2
  190. package/dist/editor/client/ui/DevModeIndicator.js.map +1 -1
  191. package/dist/editor/client/ui/EditorChrome.d.ts +6 -0
  192. package/dist/editor/client/ui/EditorChrome.js +72 -55
  193. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  194. package/dist/editor/client/ui/FullscreenControls.js +3 -5
  195. package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
  196. package/dist/editor/commands/commands.d.ts +1 -11
  197. package/dist/editor/commands/commands.js +1 -12
  198. package/dist/editor/commands/commands.js.map +1 -1
  199. package/dist/editor/commands/componentCommands.js +55 -109
  200. package/dist/editor/commands/componentCommands.js.map +1 -1
  201. package/dist/editor/commands/customCommandConverter.d.ts +1 -8
  202. package/dist/editor/commands/customCommandConverter.js +5 -35
  203. package/dist/editor/commands/customCommandConverter.js.map +1 -1
  204. package/dist/editor/commands/handlers/agentHandler.js +1 -2
  205. package/dist/editor/commands/handlers/agentHandler.js.map +1 -1
  206. package/dist/editor/commands/itemCommands.d.ts +0 -3
  207. package/dist/editor/commands/itemCommands.js +10 -93
  208. package/dist/editor/commands/itemCommands.js.map +1 -1
  209. package/dist/editor/commands/undo.d.ts +15 -9
  210. package/dist/editor/commands/undo.js +0 -24
  211. package/dist/editor/commands/undo.js.map +1 -1
  212. package/dist/editor/context-menu/InsertMenu.js +39 -83
  213. package/dist/editor/context-menu/InsertMenu.js.map +1 -1
  214. package/dist/editor/field-types/MultiLineText.js +1 -1
  215. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  216. package/dist/editor/field-types/RawEditor.js +1 -1
  217. package/dist/editor/field-types/ReactQuill.d.ts +125 -0
  218. package/dist/editor/field-types/ReactQuill.js +385 -0
  219. package/dist/editor/field-types/ReactQuill.js.map +1 -0
  220. package/dist/editor/field-types/RichTextEditor.js +5 -13
  221. package/dist/editor/field-types/RichTextEditor.js.map +1 -1
  222. package/dist/editor/field-types/RichTextEditorComponent.js +3 -37
  223. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  224. package/dist/editor/field-types/SingleLineText.js +1 -1
  225. package/dist/editor/field-types/TreeListEditor.js +2 -3
  226. package/dist/editor/field-types/TreeListEditor.js.map +1 -1
  227. package/dist/editor/field-types/richtext/components/ReactSlate.css +5 -23
  228. package/dist/editor/field-types/richtext/components/ReactSlate.d.ts +0 -2
  229. package/dist/editor/field-types/richtext/components/ReactSlate.js +4 -28
  230. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  231. package/dist/editor/field-types/richtext/components/ToolbarButton.js +2 -4
  232. package/dist/editor/field-types/richtext/components/ToolbarButton.js.map +1 -1
  233. package/dist/editor/field-types/richtext/contextMenuFactory.d.ts +0 -13
  234. package/dist/editor/field-types/richtext/contextMenuFactory.js +24 -181
  235. package/dist/editor/field-types/richtext/contextMenuFactory.js.map +1 -1
  236. package/dist/editor/field-types/richtext/types.d.ts +0 -2
  237. package/dist/editor/field-types/richtext/types.js.map +1 -1
  238. package/dist/editor/field-types/richtext/utils/plugins.js +0 -4
  239. package/dist/editor/field-types/richtext/utils/plugins.js.map +1 -1
  240. package/dist/editor/field-types/textContextMenuFactory.js +2 -3
  241. package/dist/editor/field-types/textContextMenuFactory.js.map +1 -1
  242. package/dist/editor/media-selector/AiImageSearchPrompt.js +2 -4
  243. package/dist/editor/media-selector/AiImageSearchPrompt.js.map +1 -1
  244. package/dist/editor/media-selector/MediaFolderBrowser.js +1 -1
  245. package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
  246. package/dist/editor/media-selector/MediaSelector.js +1 -7
  247. package/dist/editor/media-selector/MediaSelector.js.map +1 -1
  248. package/dist/editor/media-selector/TreeSelector.js +35 -40
  249. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  250. package/dist/editor/menubar/ActiveUsers.js +1 -1
  251. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  252. package/dist/editor/menubar/GenericToolbar.js +2 -4
  253. package/dist/editor/menubar/GenericToolbar.js.map +1 -1
  254. package/dist/editor/menubar/ItemLanguageVersion.js +2 -2
  255. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  256. package/dist/editor/menubar/PageSelector.js +147 -26
  257. package/dist/editor/menubar/PageSelector.js.map +1 -1
  258. package/dist/editor/menubar/Separator.js +1 -1
  259. package/dist/editor/menubar/VersionSelector.js +4 -2
  260. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  261. package/dist/editor/menubar/WorkflowButton.js +12 -39
  262. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  263. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +38 -16
  264. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js.map +1 -1
  265. package/dist/editor/menubar/toolbar-sections/EditControls.js +3 -3
  266. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  267. package/dist/editor/menubar/toolbar-sections/HelpButton.js +0 -1
  268. package/dist/editor/menubar/toolbar-sections/HelpButton.js.map +1 -1
  269. package/dist/editor/menubar/toolbar-sections/ManualBrowser.d.ts +10 -6
  270. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +220 -597
  271. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  272. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +2 -13
  273. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  274. package/dist/editor/page-editor-chrome/CommentHighlighting.js +1 -42
  275. package/dist/editor/page-editor-chrome/CommentHighlighting.js.map +1 -1
  276. package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
  277. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  278. package/dist/editor/page-editor-chrome/InlineEditor.js +48 -97
  279. package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
  280. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +17 -38
  281. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  282. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +11 -17
  283. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  284. package/dist/editor/page-editor-chrome/useInlineAICompletion.js +301 -301
  285. package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
  286. package/dist/editor/page-viewer/DeviceToolbar.js +1 -1
  287. package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
  288. package/dist/editor/page-viewer/EditorForm.js +11 -69
  289. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  290. package/dist/editor/page-viewer/MiniMap.d.ts +4 -2
  291. package/dist/editor/page-viewer/MiniMap.js +28 -91
  292. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  293. package/dist/editor/page-viewer/PageViewer.d.ts +1 -3
  294. package/dist/editor/page-viewer/PageViewer.js +19 -92
  295. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  296. package/dist/editor/page-viewer/PageViewerFrame.d.ts +1 -2
  297. package/dist/editor/page-viewer/PageViewerFrame.js +115 -348
  298. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  299. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +49 -114
  300. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
  301. package/dist/editor/page-viewer/pageViewContext.d.ts +0 -1
  302. package/dist/editor/page-viewer/pageViewContext.js +14 -51
  303. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  304. package/dist/editor/pageModel.d.ts +1 -14
  305. package/dist/editor/reviews/Comment.js +12 -26
  306. package/dist/editor/reviews/Comment.js.map +1 -1
  307. package/dist/editor/reviews/CommentDisplayPopover.js +5 -7
  308. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  309. package/dist/editor/reviews/CommentView.js +4 -19
  310. package/dist/editor/reviews/CommentView.js.map +1 -1
  311. package/dist/editor/reviews/Comments.js +72 -89
  312. package/dist/editor/reviews/Comments.js.map +1 -1
  313. package/dist/editor/reviews/CreateReviewDialog.js +177 -281
  314. package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
  315. package/dist/editor/reviews/DecisionsMatrix.js +25 -96
  316. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  317. package/dist/editor/reviews/DiffView.js +14 -7
  318. package/dist/editor/reviews/DiffView.js.map +1 -1
  319. package/dist/editor/reviews/EditReviewSettingsDialog.js +4 -6
  320. package/dist/editor/reviews/EditReviewSettingsDialog.js.map +1 -1
  321. package/dist/editor/reviews/MultiReviewManager.js +3 -25
  322. package/dist/editor/reviews/MultiReviewManager.js.map +1 -1
  323. package/dist/editor/reviews/PagesPanel.js +15 -31
  324. package/dist/editor/reviews/PagesPanel.js.map +1 -1
  325. package/dist/editor/reviews/PreviewInfo.js +4 -1
  326. package/dist/editor/reviews/PreviewInfo.js.map +1 -1
  327. package/dist/editor/reviews/ReviewCard.js +7 -13
  328. package/dist/editor/reviews/ReviewCard.js.map +1 -1
  329. package/dist/editor/reviews/ReviewDetail.js +2 -3
  330. package/dist/editor/reviews/ReviewDetail.js.map +1 -1
  331. package/dist/editor/reviews/ReviewsList.js +3 -7
  332. package/dist/editor/reviews/ReviewsList.js.map +1 -1
  333. package/dist/editor/reviews/SuggestedEdit.js +3 -34
  334. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  335. package/dist/editor/reviews/SuggestionDisplayPopover.js +5 -31
  336. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  337. package/dist/editor/reviews/commentAi.js +6 -25
  338. package/dist/editor/reviews/commentAi.js.map +1 -1
  339. package/dist/editor/reviews/reviewCommands.js +1 -4
  340. package/dist/editor/reviews/reviewCommands.js.map +1 -1
  341. package/dist/editor/reviews/useMultiReview.js +2 -2
  342. package/dist/editor/reviews/useMultiReview.js.map +1 -1
  343. package/dist/editor/reviews/useReviews.d.ts +2 -2
  344. package/dist/editor/reviews/useReviews.js +30 -12
  345. package/dist/editor/reviews/useReviews.js.map +1 -1
  346. package/dist/editor/services/agentService.d.ts +5 -229
  347. package/dist/editor/services/agentService.js +39 -292
  348. package/dist/editor/services/agentService.js.map +1 -1
  349. package/dist/editor/services/aiService.d.ts +1 -57
  350. package/dist/editor/services/aiService.js +6 -79
  351. package/dist/editor/services/aiService.js.map +1 -1
  352. package/dist/editor/services/contentService.d.ts +3 -6
  353. package/dist/editor/services/contentService.js +12 -13
  354. package/dist/editor/services/contentService.js.map +1 -1
  355. package/dist/editor/services/editService.d.ts +1 -52
  356. package/dist/editor/services/editService.js +2 -94
  357. package/dist/editor/services/editService.js.map +1 -1
  358. package/dist/editor/services/indexService.js +1 -1
  359. package/dist/editor/services/indexService.js.map +1 -1
  360. package/dist/editor/services/reviewsService.d.ts +6 -3
  361. package/dist/editor/services/reviewsService.js +11 -2
  362. package/dist/editor/services/reviewsService.js.map +1 -1
  363. package/dist/editor/services/serviceHelper.d.ts +1 -2
  364. package/dist/editor/services/serviceHelper.js +20 -112
  365. package/dist/editor/services/serviceHelper.js.map +1 -1
  366. package/dist/editor/services/systemService.d.ts +1 -2
  367. package/dist/editor/services/systemService.js +0 -3
  368. package/dist/editor/services/systemService.js.map +1 -1
  369. package/dist/editor/services-server/api.d.ts +2 -1
  370. package/dist/editor/services-server/api.js +6 -11
  371. package/dist/editor/services-server/api.js.map +1 -1
  372. package/dist/editor/services-server/graphQL.d.ts +29 -0
  373. package/dist/editor/services-server/graphQL.js +53 -0
  374. package/dist/editor/services-server/graphQL.js.map +1 -0
  375. package/dist/editor/settings/About.js +3 -317
  376. package/dist/editor/settings/About.js.map +1 -1
  377. package/dist/editor/settings/AllAgentsPanel.d.ts +5 -0
  378. package/dist/editor/settings/AllAgentsPanel.js +139 -0
  379. package/dist/editor/settings/AllAgentsPanel.js.map +1 -0
  380. package/dist/editor/settings/LatestFeedback.d.ts +1 -0
  381. package/dist/editor/settings/LatestFeedback.js +136 -0
  382. package/dist/editor/settings/LatestFeedback.js.map +1 -0
  383. package/dist/editor/settings/QuotaInfo.js +4 -210
  384. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  385. package/dist/editor/settings/SettingsView.js +23 -25
  386. package/dist/editor/settings/SettingsView.js.map +1 -1
  387. package/dist/editor/settings/Setup.d.ts +1 -0
  388. package/dist/editor/settings/Setup.js +211 -0
  389. package/dist/editor/settings/Setup.js.map +1 -0
  390. package/dist/editor/settings/Status.js +6 -7
  391. package/dist/editor/settings/Status.js.map +1 -1
  392. package/dist/editor/settings/index/useIndexStatus.js +22 -20
  393. package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
  394. package/dist/editor/settings/panels/AgentsPanel.d.ts +4 -0
  395. package/dist/editor/settings/panels/AgentsPanel.js +121 -95
  396. package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
  397. package/dist/editor/settings/panels/DatabasePanel.d.ts +6 -0
  398. package/dist/editor/settings/panels/DatabasePanel.js +50 -0
  399. package/dist/editor/settings/panels/DatabasePanel.js.map +1 -0
  400. package/dist/editor/settings/panels/ModelsPanel.js +108 -329
  401. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  402. package/dist/editor/settings/panels/ProvidersPanel.d.ts +1 -1
  403. package/dist/editor/settings/panels/ProvidersPanel.js +59 -86
  404. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  405. package/dist/editor/settings/panels/SearchConfigPanel.js +4 -4
  406. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  407. package/dist/editor/settings/panels/index.d.ts +2 -3
  408. package/dist/editor/settings/panels/index.js +2 -3
  409. package/dist/editor/settings/panels/index.js.map +1 -1
  410. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.d.ts +2 -0
  411. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js +195 -0
  412. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js.map +1 -0
  413. package/dist/editor/settings/setup-steps/AiSetupStep/index.d.ts +2 -0
  414. package/dist/editor/settings/setup-steps/AiSetupStep/index.js +21 -0
  415. package/dist/editor/settings/setup-steps/AiSetupStep/index.js.map +1 -0
  416. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.d.ts +1 -0
  417. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js +233 -0
  418. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js.map +1 -0
  419. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.d.ts +15 -0
  420. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js +14 -0
  421. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js.map +1 -0
  422. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.d.ts +1 -0
  423. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +94 -0
  424. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +1 -0
  425. package/dist/editor/settings/setup-steps/AiSetupStep/types.d.ts +1 -0
  426. package/dist/editor/settings/setup-steps/AiSetupStep/types.js +2 -0
  427. package/dist/editor/settings/setup-steps/AiSetupStep/types.js.map +1 -0
  428. package/dist/editor/settings/setup-steps/AiSetupStep/utils.d.ts +5 -0
  429. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js +44 -0
  430. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js.map +1 -0
  431. package/dist/editor/settings/setup-steps/IndexSetupStep.d.ts +2 -0
  432. package/dist/editor/settings/setup-steps/IndexSetupStep.js +36 -0
  433. package/dist/editor/settings/setup-steps/IndexSetupStep.js.map +1 -0
  434. package/dist/editor/settings/setup-steps/SettingsSetupStep.d.ts +2 -0
  435. package/dist/editor/settings/setup-steps/SettingsSetupStep.js +111 -0
  436. package/dist/editor/settings/setup-steps/SettingsSetupStep.js.map +1 -0
  437. package/dist/editor/settings/setup-steps/SetupOverview.d.ts +14 -0
  438. package/dist/editor/settings/setup-steps/SetupOverview.js +38 -0
  439. package/dist/editor/settings/setup-steps/SetupOverview.js.map +1 -0
  440. package/dist/editor/settings/status/coreStatusChecks.js +19 -124
  441. package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
  442. package/dist/editor/settings/status/useStartupChecks.d.ts +1 -3
  443. package/dist/editor/settings/status/useStartupChecks.js +5 -9
  444. package/dist/editor/settings/status/useStartupChecks.js.map +1 -1
  445. package/dist/editor/setup-wizard/steps/CompleteStep.d.ts +1 -2
  446. package/dist/editor/setup-wizard/steps/CompleteStep.js +1 -2
  447. package/dist/editor/setup-wizard/steps/CompleteStep.js.map +1 -1
  448. package/dist/editor/sidebar/ComponentPalette.js +1 -2
  449. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  450. package/dist/editor/sidebar/ComponentTree.d.ts +1 -8
  451. package/dist/editor/sidebar/ComponentTree.js +69 -216
  452. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  453. package/dist/editor/sidebar/Debug.d.ts +1 -0
  454. package/dist/editor/sidebar/Debug.js +70 -0
  455. package/dist/editor/sidebar/Debug.js.map +1 -0
  456. package/dist/editor/sidebar/EditHistory.js +46 -22
  457. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  458. package/dist/editor/sidebar/Favorites.js +8 -4
  459. package/dist/editor/sidebar/Favorites.js.map +1 -1
  460. package/dist/editor/sidebar/GraphQL.d.ts +2 -0
  461. package/dist/editor/sidebar/GraphQL.js +234 -0
  462. package/dist/editor/sidebar/GraphQL.js.map +1 -0
  463. package/dist/editor/sidebar/LeftToolbar.d.ts +1 -0
  464. package/dist/editor/sidebar/LeftToolbar.js +12 -0
  465. package/dist/editor/sidebar/LeftToolbar.js.map +1 -0
  466. package/dist/editor/sidebar/MainContentTree.js +3 -4
  467. package/dist/editor/sidebar/MainContentTree.js.map +1 -1
  468. package/dist/editor/sidebar/NavigationSidebar.d.ts +4 -0
  469. package/dist/editor/sidebar/NavigationSidebar.js +254 -0
  470. package/dist/editor/sidebar/NavigationSidebar.js.map +1 -0
  471. package/dist/editor/sidebar/OperationItem.js +7 -21
  472. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  473. package/dist/editor/sidebar/SidebarPanel.d.ts +1 -3
  474. package/dist/editor/sidebar/SidebarPanel.js +12 -44
  475. package/dist/editor/sidebar/SidebarPanel.js.map +1 -1
  476. package/dist/editor/sidebar/SidebarStack.d.ts +1 -2
  477. package/dist/editor/sidebar/SidebarStack.js +3 -4
  478. package/dist/editor/sidebar/SidebarStack.js.map +1 -1
  479. package/dist/editor/sidebar/Validation.js +12 -24
  480. package/dist/editor/sidebar/Validation.js.map +1 -1
  481. package/dist/editor/sidebar/Workbox.js +3 -53
  482. package/dist/editor/sidebar/Workbox.js.map +1 -1
  483. package/dist/editor/sidebar/WorkspaceRail.d.ts +1 -0
  484. package/dist/editor/sidebar/WorkspaceRail.js +167 -56
  485. package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
  486. package/dist/editor/tree-indicators/GutterColumns.d.ts +1 -3
  487. package/dist/editor/tree-indicators/GutterColumns.js +5 -26
  488. package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
  489. package/dist/editor/tree-indicators/GutterContext.d.ts +0 -4
  490. package/dist/editor/tree-indicators/GutterContext.js +0 -23
  491. package/dist/editor/tree-indicators/GutterContext.js.map +1 -1
  492. package/dist/editor/tree-indicators/GutterSelector.d.ts +5 -0
  493. package/dist/editor/tree-indicators/GutterSelector.js +91 -0
  494. package/dist/editor/tree-indicators/GutterSelector.js.map +1 -0
  495. package/dist/editor/tree-indicators/index.d.ts +1 -0
  496. package/dist/editor/tree-indicators/index.js +1 -0
  497. package/dist/editor/tree-indicators/index.js.map +1 -1
  498. package/dist/editor/tree-indicators/types.d.ts +1 -12
  499. package/dist/editor/ui/CopyMoveTargetSelectorDialog.js +1 -1
  500. package/dist/editor/ui/CopyMoveTargetSelectorDialog.js.map +1 -1
  501. package/dist/editor/ui/Icons.js +1 -1
  502. package/dist/editor/ui/Icons.js.map +1 -1
  503. package/dist/editor/ui/ItemNameDialogNew.d.ts +0 -2
  504. package/dist/editor/ui/ItemNameDialogNew.js +17 -33
  505. package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
  506. package/dist/editor/ui/ItemSearch.js +11 -7
  507. package/dist/editor/ui/ItemSearch.js.map +1 -1
  508. package/dist/editor/ui/SimpleIconButton.js +1 -1
  509. package/dist/editor/ui/SimpleIconButton.js.map +1 -1
  510. package/dist/editor/ui/SimpleTabs.d.ts +0 -1
  511. package/dist/editor/ui/SimpleTabs.js +25 -45
  512. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  513. package/dist/editor/ui/Splitter.d.ts +0 -1
  514. package/dist/editor/ui/Splitter.js +86 -102
  515. package/dist/editor/ui/Splitter.js.map +1 -1
  516. package/dist/editor/ui/TemplateSelectorDialog.js +4 -4
  517. package/dist/editor/ui/TemplateSelectorDialog.js.map +1 -1
  518. package/dist/editor/ui/TreeListSelector.d.ts +1 -6
  519. package/dist/editor/ui/TreeListSelector.js +2 -2
  520. package/dist/editor/ui/TreeListSelector.js.map +1 -1
  521. package/dist/editor/utils/keyboardNavigation.d.ts +20 -6
  522. package/dist/editor/utils/keyboardNavigation.js +140 -48
  523. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  524. package/dist/editor/utils.js +9 -19
  525. package/dist/editor/utils.js.map +1 -1
  526. package/dist/editor/views/CompareView.d.ts +1 -3
  527. package/dist/editor/views/CompareView.js +5 -7
  528. package/dist/editor/views/CompareView.js.map +1 -1
  529. package/dist/editor/views/EditView.js +1 -1
  530. package/dist/editor/views/EditView.js.map +1 -1
  531. package/dist/editor/views/EditorSlot.js +34 -27
  532. package/dist/editor/views/EditorSlot.js.map +1 -1
  533. package/dist/editor/views/ItemEditor.js +3 -7
  534. package/dist/editor/views/ItemEditor.js.map +1 -1
  535. package/dist/editor/views/MediaFolderEditView.js +1 -1
  536. package/dist/editor/views/MediaFolderEditView.js.map +1 -1
  537. package/dist/editor/views/ParheliaView.js +6 -5
  538. package/dist/editor/views/ParheliaView.js.map +1 -1
  539. package/dist/editor/views/SingleEditView.d.ts +1 -2
  540. package/dist/editor/views/SingleEditView.js +8 -10
  541. package/dist/editor/views/SingleEditView.js.map +1 -1
  542. package/dist/editor/views/editorSlotContext.js +6 -35
  543. package/dist/editor/views/editorSlotContext.js.map +1 -1
  544. package/dist/index.d.ts +2 -16
  545. package/dist/index.js +0 -11
  546. package/dist/index.js.map +1 -1
  547. package/dist/revision.d.ts +2 -2
  548. package/dist/revision.js +2 -2
  549. package/dist/setup/services/setupWizardService.d.ts +13 -40
  550. package/dist/setup/services/setupWizardService.js +17 -32
  551. package/dist/setup/services/setupWizardService.js.map +1 -1
  552. package/dist/setup/wizard/steps/AddModelDialog.js +3 -12
  553. package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -1
  554. package/dist/setup/wizard/steps/ImportModelDialog.js +22 -39
  555. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
  556. package/dist/splash-screen/ModernSplashScreen.js +32 -112
  557. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  558. package/dist/splash-screen/NewPage.js +50 -33
  559. package/dist/splash-screen/NewPage.js.map +1 -1
  560. package/dist/splash-screen/OpenPage.js +6 -2
  561. package/dist/splash-screen/OpenPage.js.map +1 -1
  562. package/dist/splash-screen/ParheliaAssistantChat.js +29 -12
  563. package/dist/splash-screen/ParheliaAssistantChat.js.map +1 -1
  564. package/dist/splash-screen/ParheliaLogo.js +37 -87
  565. package/dist/splash-screen/ParheliaLogo.js.map +1 -1
  566. package/dist/splash-screen/RecentPages.js +3 -3
  567. package/dist/splash-screen/RecentPages.js.map +1 -1
  568. package/dist/tour/Tour.d.ts +1 -2
  569. package/dist/tour/Tour.js +75 -256
  570. package/dist/tour/Tour.js.map +1 -1
  571. package/dist/tour/default-tour.js +96 -222
  572. package/dist/tour/default-tour.js.map +1 -1
  573. package/dist/types.d.ts +29 -63
  574. package/package.json +15 -19
  575. package/styles.css +10 -39
@@ -3,12 +3,9 @@ import React, { useState, useRef, useEffect, useMemo } from "react";
3
3
  import { SimpleIconButton } from "../ui/SimpleIconButton";
4
4
  import { Plus, X, MoreVertical } from "lucide-react";
5
5
  import { cn } from "../../lib/utils";
6
- import { sanitizeSvg } from "../../lib/sanitize";
7
6
  import { getAgentStatusConfig } from "./AgentStatusBadge";
8
7
  import { Popover, PopoverContent, PopoverTrigger, } from "../../components/ui/popover";
9
8
  import { getActiveAgents, closeAgent as closeAgentService, } from "../services/agentService";
10
- import { isExecutingAgentStatus, isRunningAgentStatus, parseAgentStatus, shouldIgnoreReplayRunStart, } from "../services/agentStatus";
11
- import { toUserFacingAgentErrorMessage } from "../services/agentErrorMessage";
12
9
  import { AgentTerminal } from "./AgentTerminal";
13
10
  import { useEditContext } from "../client/editContext";
14
11
  import { Tooltip, TooltipContent, TooltipTrigger, } from "../../components/ui/tooltip";
@@ -20,8 +17,6 @@ import { AgentsView } from "../../agents-view/AgentsView";
20
17
  import { agentNeedsAttention } from "../../agents-view/AgentsInbox";
21
18
  import { SecretAgentIcon } from "../ui/Icons";
22
19
  import { Spinner } from "../ui/Spinner";
23
- import { localStorageService } from "../services/localStorageService";
24
- import { LicenseFeatures, useFeature } from "../../licensing";
25
20
  // function convertAgentMessagesToTerminalMessages(
26
21
  // agentMessages: AgentChatMessage[],
27
22
  // ): Message[] {
@@ -46,20 +41,6 @@ import { LicenseFeatures, useFeature } from "../../licensing";
46
41
  // }));
47
42
  // }
48
43
  const ACTIVE_AGENT_STORAGE_KEY = "editor.activeAgentId";
49
- const TASKBOARD_PROJECT_QUERY_KEY = "tbProjectId";
50
- const TASKBOARD_TASK_QUERY_KEY = "tbTaskId";
51
- function readTaskboardLinkageFromUrl() {
52
- if (typeof window === "undefined") {
53
- return {};
54
- }
55
- const params = new URLSearchParams(window.location.search);
56
- const projectId = params.get(TASKBOARD_PROJECT_QUERY_KEY)?.trim() || "";
57
- const taskId = params.get(TASKBOARD_TASK_QUERY_KEY)?.trim() || "";
58
- return {
59
- projectId: projectId || undefined,
60
- taskId: taskId || undefined,
61
- };
62
- }
63
44
  export const Agents = React.memo(function Agents({ closeButton, }) {
64
45
  const [agents, setAgents] = useState([]);
65
46
  const [activeAgentId, setActiveAgentId] = useState(""); // "" = show profile selector, null = show overview, string = agent ID
@@ -74,7 +55,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
74
55
  const [selectedProfileId, setSelectedProfileId] = useState("");
75
56
  const [loadingProfiles, setLoadingProfiles] = useState(false);
76
57
  const editContext = useEditContext();
77
- const canUseAi = useFeature(LicenseFeatures.AI);
78
58
  // Group agents by profile for profile-based tabs
79
59
  const agentsGroupedByProfile = useMemo(() => {
80
60
  const profileMap = new Map();
@@ -153,17 +133,14 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
153
133
  setActiveAgentId(agentId);
154
134
  activeAgentIdRef.current = agentId;
155
135
  if (agentId) {
156
- localStorageService.setString(ACTIVE_AGENT_STORAGE_KEY, agentId);
136
+ localStorage.setItem(ACTIVE_AGENT_STORAGE_KEY, agentId);
157
137
  }
158
138
  else {
159
- localStorageService.removeItem(ACTIVE_AGENT_STORAGE_KEY);
139
+ localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
160
140
  }
161
141
  };
162
142
  // Open an agent from history (or switch to it if already open)
163
143
  const openAgentFromHistory = React.useCallback(async (agent) => {
164
- if (!canUseAi) {
165
- return;
166
- }
167
144
  // Check if this agent is already open as a terminal
168
145
  // Use functional check pattern to get latest agents state
169
146
  let alreadyOpen = false;
@@ -218,23 +195,11 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
218
195
  };
219
196
  setAgents((prev) => [...prev, reopenedAgent]);
220
197
  setActiveAgentIdWithStorage(reopenedAgent.id);
221
- }, [canUseAi]);
198
+ }, []);
222
199
  // Load agents from backend on mount
223
200
  useEffect(() => {
224
- if (!canUseAi) {
225
- setAgents([]);
226
- setInactiveAgents([]);
227
- setAvailableProfiles([]);
228
- setActiveAgentId(null);
229
- activeAgentIdRef.current = null;
230
- setSelectedProfileId("");
231
- setLoadingAgents(false);
232
- setLoadingProfiles(false);
233
- localStorageService.removeItem(ACTIVE_AGENT_STORAGE_KEY);
234
- return;
235
- }
236
201
  loadAgentsFromBackend();
237
- }, [canUseAi]);
202
+ }, []);
238
203
  // When no agents are present (empty state) or when switching to the profile selector,
239
204
  // keep selection state consistent without triggering extra fetches.
240
205
  useEffect(() => {
@@ -249,11 +214,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
249
214
  }, [activeAgentId, agents.length]);
250
215
  // Function to reload profiles
251
216
  const reloadProfiles = React.useCallback(async () => {
252
- if (!canUseAi) {
253
- setAvailableProfiles([]);
254
- setLoadingProfiles(false);
255
- return;
256
- }
257
217
  try {
258
218
  setLoadingProfiles(true);
259
219
  const profiles = await loadAiProfiles(editContext?.currentItemDescriptor);
@@ -265,15 +225,10 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
265
225
  finally {
266
226
  setLoadingProfiles(false);
267
227
  }
268
- }, [canUseAi, editContext?.currentItemDescriptor]);
228
+ }, [editContext?.currentItemDescriptor]);
269
229
  // Ensure profiles are loaded once for terminals (centralized load)
270
230
  // Only load on mount - profiles are cached and will be reloaded via websocket when changed
271
231
  useEffect(() => {
272
- if (!canUseAi) {
273
- setAvailableProfiles([]);
274
- setLoadingProfiles(false);
275
- return;
276
- }
277
232
  let cancelled = false;
278
233
  (async () => {
279
234
  try {
@@ -295,10 +250,10 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
295
250
  cancelled = true;
296
251
  };
297
252
  // eslint-disable-next-line react-hooks/exhaustive-deps
298
- }, [canUseAi]); // Only run on mount - profiles reload via websocket when changed
253
+ }, []); // Only run on mount - profiles reload via websocket when changed
299
254
  // Listen for agent profile changes via websocket (when profiles are updated in Sitecore)
300
255
  useEffect(() => {
301
- if (!canUseAi || !editContext?.addSocketMessageListener)
256
+ if (!editContext?.addSocketMessageListener)
302
257
  return;
303
258
  const removeListener = editContext.addSocketMessageListener((message) => {
304
259
  if (message.type === "agent-profiles-changed") {
@@ -308,11 +263,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
308
263
  return () => {
309
264
  removeListener();
310
265
  };
311
- }, [canUseAi, editContext?.addSocketMessageListener, reloadProfiles]);
266
+ }, [editContext?.addSocketMessageListener, reloadProfiles]);
312
267
  // Listen for external requests to add a new agent (e.g., AI command)
313
268
  useEffect(() => {
314
- if (!canUseAi)
315
- return;
316
269
  const handleAddNewAgent = (ev) => {
317
270
  let initialMetadata = undefined;
318
271
  try {
@@ -331,11 +284,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
331
284
  };
332
285
  window.addEventListener("editor:addNewAgent", handleAddNewAgent);
333
286
  return () => window.removeEventListener("editor:addNewAgent", handleAddNewAgent);
334
- }, [canUseAi]);
287
+ }, []);
335
288
  // Listen for external requests to select an existing open agent without switching views
336
289
  useEffect(() => {
337
- if (!canUseAi)
338
- return;
339
290
  const handleSelectAgent = (ev) => {
340
291
  try {
341
292
  const ce = ev;
@@ -351,11 +302,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
351
302
  };
352
303
  window.addEventListener("editor:selectAgent", handleSelectAgent);
353
304
  return () => window.removeEventListener("editor:selectAgent", handleSelectAgent);
354
- }, [canUseAi, agents]);
305
+ }, [agents]);
355
306
  // Listen for external requests to open an existing agent
356
307
  useEffect(() => {
357
- if (!canUseAi)
358
- return;
359
308
  const handleOpenAgent = (ev) => {
360
309
  try {
361
310
  const ce = ev;
@@ -372,11 +321,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
372
321
  };
373
322
  window.addEventListener("editor:openAgent", handleOpenAgent);
374
323
  return () => window.removeEventListener("editor:openAgent", handleOpenAgent);
375
- }, [canUseAi, openAgentFromHistory]);
324
+ }, [openAgentFromHistory]);
376
325
  // Listen for external requests to create a new agent with a specific profile
377
326
  useEffect(() => {
378
- if (!canUseAi)
379
- return;
380
327
  const handleCreateAgentWithProfile = (ev) => {
381
328
  try {
382
329
  const ce = ev;
@@ -389,16 +336,17 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
389
336
  profileName: profile.name,
390
337
  };
391
338
  // Add preconfigured todos as todoList if the profile has them
392
- const preconfiguredTodos = profile.preconfiguredTodos;
339
+ // Backend uses [PreserveNames] so check both camelCase and PascalCase
340
+ const preconfiguredTodos = profile.preconfiguredTodos || profile.PreconfiguredTodos;
393
341
  if (preconfiguredTodos && preconfiguredTodos.length > 0) {
394
342
  additionalData.todoList = {
395
343
  title: "Preconfigured Tasks",
396
344
  items: preconfiguredTodos.map((todo) => ({
397
- id: todo.id || crypto.randomUUID(),
398
- title: todo.title,
345
+ id: todo.id || todo.Id || crypto.randomUUID(),
346
+ title: todo.title || todo.Title,
399
347
  status: "pending",
400
- instructions: todo.instructions,
401
- agentProfileId: todo.agentProfileId,
348
+ instructions: todo.instructions || todo.Instructions,
349
+ agentProfileId: todo.agentProfileId || todo.AgentProfileId,
402
350
  })),
403
351
  };
404
352
  }
@@ -435,10 +383,10 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
435
383
  };
436
384
  window.addEventListener("editor:createAgentWithProfile", handleCreateAgentWithProfile);
437
385
  return () => window.removeEventListener("editor:createAgentWithProfile", handleCreateAgentWithProfile);
438
- }, [canUseAi]);
386
+ }, []);
439
387
  // Subscribe to websocket messages for agent events
440
388
  useEffect(() => {
441
- if (!canUseAi || !editContext?.addSocketMessageListener)
389
+ if (!editContext?.addSocketMessageListener)
442
390
  return;
443
391
  const unsubscribe = editContext.addSocketMessageListener((message) => {
444
392
  // In single-agent mode, ignore events that would add or remove agents,
@@ -451,12 +399,11 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
451
399
  }
452
400
  if (message.type === "agent:run:start") {
453
401
  const payload = message.payload || {};
454
- const agentId = payload.agentId;
455
- const agentName = payload.agentName;
456
- const autoSelect = payload.autoSelect;
457
- const profileId = payload.profileId;
458
- const profileName = payload.profileName;
459
- const timestamp = payload.timestamp;
402
+ const agentId = payload.agentId || payload.AgentId;
403
+ const agentName = payload.agentName || payload.AgentName;
404
+ const autoSelect = payload.autoSelect || payload.AutoSelect;
405
+ const profileId = payload.profileId || payload.ProfileId;
406
+ const profileName = payload.profileName || payload.ProfileName;
460
407
  if (!agentId || !agentName) {
461
408
  console.warn("Invalid agent:run:start message payload:", message.payload);
462
409
  return;
@@ -468,9 +415,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
468
415
  // Update existing agent name and profile info
469
416
  const updatedAgents = [...prevAgents];
470
417
  const existingAgent = updatedAgents[existingAgentIndex];
471
- if (shouldIgnoreReplayRunStart(existingAgent.status, existingAgent.updatedDate, typeof timestamp === "string" ? timestamp : undefined)) {
472
- return prevAgents;
473
- }
474
418
  updatedAgents[existingAgentIndex] = {
475
419
  ...existingAgent,
476
420
  name: agentName,
@@ -502,9 +446,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
502
446
  }
503
447
  else if (message.type === "agent:info:updated") {
504
448
  const payload = message.payload || {};
505
- const agentId = payload.agentId;
506
- const agentName = payload.agentName;
507
- const agentDescription = payload.agentDescription;
449
+ const agentId = payload.agentId || payload.AgentId;
450
+ const agentName = payload.agentName || payload.AgentName;
451
+ const agentDescription = payload.agentDescription || payload.AgentDescription;
508
452
  if (!agentId)
509
453
  return;
510
454
  // Update the agent name and/or description in the tabs list
@@ -528,11 +472,56 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
528
472
  else if (message.type === "agent:run:status") {
529
473
  // Unified status updates (state only)
530
474
  const payload = message.payload || {};
531
- const agentId = payload.agentId;
532
- const data = payload.data;
475
+ const agentId = payload.agentId || payload.AgentId;
476
+ const data = payload.data || payload.Data;
533
477
  if (!agentId)
534
478
  return;
535
- const status = parseAgentStatus(data?.state);
479
+ const rawState = data?.state || data?.State;
480
+ const status = (() => {
481
+ if (!rawState)
482
+ return undefined;
483
+ switch (rawState) {
484
+ case "Running":
485
+ return "running";
486
+ case "WaitingForApproval":
487
+ return "waitingForApproval";
488
+ case "Completed":
489
+ return "completed";
490
+ case "Closed":
491
+ return "closed";
492
+ case "Error":
493
+ return "error";
494
+ case "Idle":
495
+ return "idle";
496
+ case "CostLimitReached":
497
+ return "costLimitReached";
498
+ // Transient notification states - not actual agent statuses
499
+ case "toolApprovalGranted":
500
+ case "toolApprovalRejected":
501
+ case "toolApprovalsRequired":
502
+ case "executingToolCalls":
503
+ case "tokenUsage":
504
+ case "streamOpen":
505
+ case "contextChanged":
506
+ case "queued":
507
+ return undefined; // ignore transient states
508
+ default:
509
+ // allow already-lowercased strings that are valid statuses
510
+ if ([
511
+ "new",
512
+ "running",
513
+ "waitingForApproval",
514
+ "completed",
515
+ "closed",
516
+ "error",
517
+ "idle",
518
+ "costLimitReached",
519
+ ].includes(rawState)) {
520
+ return rawState;
521
+ }
522
+ return undefined; // ignore unknown states
523
+ }
524
+ })();
536
525
  if (!status)
537
526
  return;
538
527
  setAgents((prevAgents) => {
@@ -586,7 +575,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
586
575
  // No agents left, show profile selector
587
576
  setActiveAgentId("");
588
577
  activeAgentIdRef.current = "";
589
- localStorageService.removeItem(ACTIVE_AGENT_STORAGE_KEY);
578
+ localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
590
579
  }
591
580
  }
592
581
  // If no agents remain, reset profile selection to placeholder
@@ -599,9 +588,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
599
588
  else if (message.type === "agent:profile:switched") {
600
589
  // Handle profile switch initiated by the agent (via switch-profile function)
601
590
  const payload = message.payload || {};
602
- const agentId = payload.agentId;
603
- const newProfileId = payload.newProfileId;
604
- const newProfileName = payload.newProfileName;
591
+ const agentId = payload.agentId || payload.AgentId;
592
+ const newProfileId = payload.newProfileId || payload.NewProfileId;
593
+ const newProfileName = payload.newProfileName || payload.NewProfileName;
605
594
  if (!agentId || !newProfileId)
606
595
  return;
607
596
  // Find the profile's icon from available profiles
@@ -624,15 +613,9 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
624
613
  }
625
614
  });
626
615
  return unsubscribe;
627
- }, [canUseAi, editContext?.addSocketMessageListener, availableProfiles]);
616
+ }, [editContext?.addSocketMessageListener, availableProfiles]);
628
617
  const loadAgentsFromBackend = async () => {
629
618
  try {
630
- if (!canUseAi) {
631
- setAgents([]);
632
- setInactiveAgents([]);
633
- setLoadingAgents(false);
634
- return;
635
- }
636
619
  // In single-agent mode, skip loading any pre-existing/open agents or history
637
620
  if (singleAgentModeRef.current) {
638
621
  setAgents([]);
@@ -653,18 +636,11 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
653
636
  excludeClosed: true, // Exclude closed and cancelled agents
654
637
  });
655
638
  const activeAgentsResult = activeAgentsResponse.agents;
656
- // Merge the backend agents with any locally added "new" agents that haven't been saved yet
657
- setAgents((prev) => {
658
- const newAgents = prev.filter((a) => a.status === "new");
659
- // Avoid duplicates if any new agents were already saved and returned in activeAgentsResult
660
- const backendIds = new Set(activeAgentsResult.map((a) => a.id));
661
- const filteredNewAgents = newAgents.filter((a) => !backendIds.has(a.id));
662
- return [...activeAgentsResult, ...filteredNewAgents];
663
- });
639
+ setAgents(activeAgentsResult);
664
640
  // Try to restore the previously active agent from localStorage if one exists
665
641
  let selectedAgentId = null;
666
642
  if (activeAgentsResult.length > 0) {
667
- const storedAgentId = localStorageService.getString(ACTIVE_AGENT_STORAGE_KEY);
643
+ const storedAgentId = localStorage.getItem(ACTIVE_AGENT_STORAGE_KEY);
668
644
  const storedAgent = activeAgentsResult.find((agent) => agent.id === storedAgentId);
669
645
  if (storedAgent) {
670
646
  selectedAgentId = storedAgent.id;
@@ -677,28 +653,13 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
677
653
  }
678
654
  // If there are no active agents after load, set to empty string to show profile selector
679
655
  if (activeAgentsResult.length === 0) {
680
- // Only if no new agent was added in the meantime
681
- setAgents((prev) => {
682
- if (prev.length === 0) {
683
- setActiveAgentId("");
684
- activeAgentIdRef.current = "";
685
- localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
686
- setSelectedProfileId("");
687
- }
688
- return prev;
689
- });
656
+ setActiveAgentId("");
657
+ activeAgentIdRef.current = "";
658
+ localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
659
+ setSelectedProfileId("");
690
660
  }
691
661
  else {
692
- // Only restore from backend/storage if no new agent is currently active
693
- // This prevents overwriting a newly created agent from a comment (especially on mobile)
694
- const currentActiveId = activeAgentIdRef.current;
695
- setAgents((prev) => {
696
- const isNewAgentActive = prev.some((a) => a.id === currentActiveId && a.status === "new");
697
- if (!isNewAgentActive) {
698
- setActiveAgentIdWithStorage(selectedAgentId);
699
- }
700
- return prev;
701
- });
662
+ setActiveAgentIdWithStorage(selectedAgentId);
702
663
  }
703
664
  // Load closed agents for history
704
665
  const response = await getActiveAgents({
@@ -707,7 +668,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
707
668
  includeOwned: true,
708
669
  });
709
670
  // Filter to only closed agents on the client side
710
- const closedAgents = response.agents.filter((agent) => agent.status === "closed");
671
+ const closedAgents = response.agents.filter((agent) => agent.status === "closed" || agent.status === 5);
711
672
  // Deduplicate agents by ID in case the backend returns duplicates
712
673
  const uniqueClosedAgents = closedAgents.filter((agent, index, self) => index === self.findIndex((a) => a.id === agent.id));
713
674
  setInactiveAgents(uniqueClosedAgents);
@@ -733,9 +694,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
733
694
  // return null;
734
695
  // };
735
696
  const addAgent = (metadata) => {
736
- if (!canUseAi) {
737
- return;
738
- }
739
697
  const newAgent = {
740
698
  status: "new",
741
699
  id: crypto.randomUUID(),
@@ -761,29 +719,24 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
761
719
  };
762
720
  const createAgentWithSelectedProfile = (profileId) => {
763
721
  const selected = availableProfiles.find((p) => p.id === profileId);
764
- const taskboardLinkage = readTaskboardLinkageFromUrl();
765
722
  // Build additionalData with preconfigured todos if available
766
723
  // Backend uses [PreserveNames] so check both camelCase and PascalCase
767
724
  const additionalData = selected
768
725
  ? {
769
726
  profileId: selected.id,
770
727
  profileName: selected.name,
771
- ...(taskboardLinkage.projectId
772
- ? { projectId: taskboardLinkage.projectId }
773
- : {}),
774
- ...(taskboardLinkage.taskId ? { taskId: taskboardLinkage.taskId } : {}),
775
728
  }
776
729
  : {};
777
- const preconfiguredTodos = selected?.preconfiguredTodos;
730
+ const preconfiguredTodos = selected?.preconfiguredTodos || selected?.PreconfiguredTodos;
778
731
  if (preconfiguredTodos && preconfiguredTodos.length > 0) {
779
732
  additionalData.todoList = {
780
733
  title: "Preconfigured Tasks",
781
734
  items: preconfiguredTodos.map((todo) => ({
782
- id: todo.id || crypto.randomUUID(),
783
- title: todo.title,
735
+ id: todo.id || todo.Id || crypto.randomUUID(),
736
+ title: todo.title || todo.Title,
784
737
  status: "pending",
785
- instructions: todo.instructions,
786
- agentProfileId: todo.agentProfileId,
738
+ instructions: todo.instructions || todo.Instructions,
739
+ agentProfileId: todo.agentProfileId || todo.AgentProfileId,
787
740
  })),
788
741
  };
789
742
  }
@@ -795,9 +748,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
795
748
  : undefined;
796
749
  addAgent(metadata);
797
750
  };
798
- const handleAgentUpdate = React.useCallback((agentId, updates) => {
799
- setAgents((prev) => prev.map((agent) => agent.id === agentId ? { ...agent, ...updates } : agent));
800
- }, []);
801
751
  const closeAgent = async (agentId) => {
802
752
  try {
803
753
  // Permanently close the agent in the backend
@@ -858,8 +808,13 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
858
808
  closeAgent(agentId);
859
809
  return;
860
810
  }
811
+ // Check if agent is in an active state (running or waiting for approval)
812
+ // Handle both string and numeric status values
813
+ // Enum: New=0, Running=1, WaitingForApproval=2, Completed=3, Error=4, Closed=5
861
814
  const isActivelyRunning = agent.status === "running" ||
862
- agent.status === "waitingForApproval";
815
+ agent.status === "waitingForApproval" ||
816
+ agent.status === 1 ||
817
+ agent.status === 2;
863
818
  // If agent is actively running, show confirmation dialog
864
819
  if (isActivelyRunning) {
865
820
  if (editContext?.confirm) {
@@ -882,12 +837,15 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
882
837
  const handleCloseProfileAgents = async (profileAgents, profileName, e) => {
883
838
  e.stopPropagation();
884
839
  const agentCount = profileAgents.length;
885
- const hasActiveAgents = profileAgents.some((agent) => isExecutingAgentStatus(agent.status));
840
+ const hasActiveAgents = profileAgents.some((agent) => agent.status === "running" ||
841
+ agent.status === "waitingForApproval" ||
842
+ agent.status === 1 ||
843
+ agent.status === 2);
886
844
  if (editContext?.confirm) {
887
845
  editContext.confirm({
888
846
  header: `Close ${agentCount} Agent${agentCount > 1 ? "s" : ""}`,
889
847
  message: hasActiveAgents
890
- ? `This will close all ${agentCount} ${profileName} agent${agentCount > 1 ? "s" : ""}, including ${profileAgents.filter((a) => isRunningAgentStatus(a.status)).length} running agent(s). Are you sure?`
848
+ ? `This will close all ${agentCount} ${profileName} agent${agentCount > 1 ? "s" : ""}, including ${profileAgents.filter((a) => a.status === "running" || a.status === 1).length} running agent(s). Are you sure?`
891
849
  : `Are you sure you want to close all ${agentCount} ${profileName} agent${agentCount > 1 ? "s" : ""}?`,
892
850
  acceptLabel: `Close ${agentCount > 1 ? "All" : "Agent"}`,
893
851
  accept: async () => {
@@ -921,7 +879,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
921
879
  // No agents left, show profile selector
922
880
  setActiveAgentId("");
923
881
  activeAgentIdRef.current = "";
924
- localStorageService.removeItem(ACTIVE_AGENT_STORAGE_KEY);
882
+ localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
925
883
  }
926
884
  }
927
885
  // Reset profile selection if no agents remain
@@ -981,9 +939,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
981
939
  },
982
940
  ];
983
941
  };
984
- if (!canUseAi) {
985
- return (_jsx("div", { className: "flex h-full items-center justify-center p-4 text-center text-sm text-gray-500", children: "AI features are unavailable with the current license." }));
986
- }
987
942
  if (loadingAgents) {
988
943
  return (_jsxs("div", { className: "flex h-full items-center justify-center gap-2", children: [_jsx(Spinner, { size: "sm" }), _jsx("div", { className: "text-xs text-gray-500", children: "Loading agents..." })] }));
989
944
  }
@@ -996,7 +951,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
996
951
  console.log("[Agents Empty State] Overview tab clicked, toggling back to profile selector", e);
997
952
  setActiveAgentId("");
998
953
  activeAgentIdRef.current = "";
999
- localStorageService.removeItem(ACTIVE_AGENT_STORAGE_KEY);
954
+ localStorage.removeItem(ACTIVE_AGENT_STORAGE_KEY);
1000
955
  }, className: cn("flex h-8 min-w-0 cursor-pointer items-center gap-2 border-r border-gray-200 px-2 text-xs", "border-b-white bg-white hover:bg-gray-50"), children: [_jsxs("div", { className: "relative", children: [_jsx(List, { className: "size-4 flex-shrink-0 text-gray-600", strokeWidth: 1 }), inboxCount > 0 && (_jsx("span", { className: "absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-amber-500 px-1 text-[9px] font-bold text-white", children: inboxCount > 9 ? "9+" : inboxCount }))] }), _jsx("span", { className: "truncate font-medium", children: "Overview" })] }) })) : (
1001
956
  /* Show Overview as a button when displaying profile selector */
1002
957
  _jsx("div", { className: "flex items-center px-1", children: _jsx(SimpleIconButton, { onClick: (e) => {
@@ -1028,10 +983,6 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
1028
983
  const statusConfig = getAgentStatusConfig({
1029
984
  status: highestStatus,
1030
985
  });
1031
- const singleAgentErrorMessage = toUserFacingAgentErrorMessage(singleAgent?.statusMessage) ||
1032
- singleAgent?.statusMessage;
1033
- const activeAgentErrorMessage = toUserFacingAgentErrorMessage(activeAgent?.statusMessage) ||
1034
- activeAgent?.statusMessage;
1035
986
  // Use agent name if: single agent OR active agent from this profile
1036
987
  const displayName = activeAgent
1037
988
  ? activeAgent.name
@@ -1057,20 +1008,21 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
1057
1008
  }
1058
1009
  // Multiple agents: popover will open via PopoverTrigger
1059
1010
  }, children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2 overflow-hidden", children: [_jsx("div", { className: "flex-shrink-0", children: displayIcon ? (_jsx("div", { className: "flex h-[18px] w-[18px] items-center justify-center text-gray-500 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
1060
- __html: sanitizeSvg(displayIcon),
1061
- } })) : (_jsx(SecretAgentIcon, { size: 18, strokeWidth: 1, className: "text-gray-500" })) }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: displayName }), agentCount > 1 && (_jsx("div", { className: "flex-shrink-0 rounded-full bg-gray-200 px-1.5 py-0.5 text-[10px] leading-none font-medium text-gray-700", children: agentCount })), _jsxs(Tooltip, { delayDuration: 1000, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: cn("h-1.5 w-1.5 flex-shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label }) }), _jsx(TooltipContent, { children: _jsxs("div", { children: [_jsx("div", { children: statusConfig.label }), singleAgent?.status === "error" ? (singleAgentErrorMessage ? (_jsx("div", { className: "mt-1 text-xs text-red-600", children: singleAgentErrorMessage })) : null) : activeAgent?.status === "error" ? (activeAgentErrorMessage ? (_jsx("div", { className: "mt-1 text-xs text-red-600", children: activeAgentErrorMessage })) : null) : null] }) })] }), agentCount > 1 && (_jsx(ChevronDown, { className: "size-3 flex-shrink-0 text-gray-500", strokeWidth: 1 }))] }), _jsx(SimpleIconButton, { onClick: (e) => singleAgent
1011
+ __html: displayIcon,
1012
+ } })) : (_jsx(SecretAgentIcon, { size: 18, strokeWidth: 1, className: "text-gray-500" })) }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: displayName }), agentCount > 1 && (_jsx("div", { className: "flex-shrink-0 rounded-full bg-gray-200 px-1.5 py-0.5 text-[10px] leading-none font-medium text-gray-700", children: agentCount })), _jsxs(Tooltip, { delayDuration: 1000, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: cn("h-1.5 w-1.5 flex-shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label }) }), _jsx(TooltipContent, { children: _jsxs("div", { children: [_jsx("div", { children: statusConfig.label }), singleAgent?.status === "error" ||
1013
+ singleAgent?.status === 4 ? (singleAgent?.statusMessage ? (_jsx("div", { className: "mt-1 text-xs text-red-600", children: singleAgent.statusMessage })) : null) : activeAgent?.status === "error" ||
1014
+ activeAgent?.status === 4 ? (activeAgent?.statusMessage ? (_jsx("div", { className: "mt-1 text-xs text-red-600", children: activeAgent.statusMessage })) : null) : null] }) })] }), agentCount > 1 && (_jsx(ChevronDown, { className: "size-3 flex-shrink-0 text-gray-500", strokeWidth: 1 }))] }), _jsx(SimpleIconButton, { onClick: (e) => singleAgent
1062
1015
  ? handleCloseAgent(singleAgent.id, e)
1063
1016
  : handleCloseProfileAgents(profileGroup.agents, profileGroup.profileName, e), icon: _jsx(X, { className: "size-3", strokeWidth: 1 }), label: agentCount > 1
1064
1017
  ? `Close all ${agentCount} agents`
1065
1018
  : "Close", className: "flex-shrink-0 opacity-60 hover:opacity-100", showTooltip: false })] }) }), agentCount > 1 && (_jsxs(PopoverContent, { className: "w-80 p-0", align: "start", children: [_jsxs("div", { className: "border-b border-gray-100 px-3 py-2 text-xs font-medium text-gray-500", children: [profileGroup.profileName, " Agents"] }), _jsx("div", { className: "max-h-64 overflow-y-auto", children: profileGroup.agents.map((agent) => {
1066
1019
  const agentStatusConfig = getAgentStatusConfig(agent);
1067
- const agentErrorMessage = toUserFacingAgentErrorMessage(agent.statusMessage) ||
1068
- agent.statusMessage;
1069
1020
  return (_jsx("div", { "data-agent-id": agent.id, className: cn("cursor-pointer border-b border-gray-50 px-3 py-2 hover:bg-gray-50", activeAgentId === agent.id && "bg-theme-secondary-light/50"), onClick: () => {
1070
1021
  setActiveAgentIdWithStorage(agent.id);
1071
1022
  setProfileTabDropdownOpen(null);
1072
1023
  }, children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: cn("h-2 w-2 flex-shrink-0 rounded-full", agentStatusConfig.color, agentStatusConfig.shouldPulse &&
1073
- "animate-pulse"), title: agentStatusConfig.label }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-xs font-medium text-gray-900", children: agent.name }), _jsx("div", { className: "text-[9px] font-mono text-gray-400", children: agent.id }), agent.status === "error" ? (agentErrorMessage ? (_jsx("div", { className: "truncate text-[11px] leading-tight text-red-600", children: agentErrorMessage })) : (agent.description && (_jsx("div", { className: "truncate text-[11px] leading-tight text-gray-400", children: agent.description })))) : (agent.description && (_jsx("div", { className: "truncate text-[11px] leading-tight text-gray-400", children: agent.description })))] }), _jsx(SimpleIconButton, { onClick: (e) => handleCloseAgent(agent.id, e), icon: _jsx(X, { className: "size-3", strokeWidth: 1 }), label: "Close", className: "opacity-60 hover:opacity-100" })] }) }, agent.id));
1024
+ "animate-pulse"), title: agentStatusConfig.label }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-xs font-medium text-gray-900", children: agent.name }), _jsx("div", { className: "text-[9px] font-mono text-gray-400", children: agent.id }), agent.status === "error" ||
1025
+ agent.status === 4 ? (agent.statusMessage ? (_jsx("div", { className: "truncate text-[11px] leading-tight text-red-600", children: agent.statusMessage })) : (agent.description && (_jsx("div", { className: "truncate text-[11px] leading-tight text-gray-400", children: agent.description })))) : (agent.description && (_jsx("div", { className: "truncate text-[11px] leading-tight text-gray-400", children: agent.description })))] }), _jsx(SimpleIconButton, { onClick: (e) => handleCloseAgent(agent.id, e), icon: _jsx(X, { className: "size-3", strokeWidth: 1 }), label: "Close", className: "opacity-60 hover:opacity-100" })] }) }, agent.id));
1074
1026
  }) })] }))] }) }, profileKey));
1075
1027
  })] }), activeAgentId !== null && (_jsx("div", { className: "flex items-center px-1", children: _jsx(SimpleIconButton, { onClick: () => setActiveAgentIdWithStorage(null), icon: _jsxs("div", { className: "relative", children: [_jsx(List, { className: "size-4", strokeWidth: 1 }), inboxCount > 0 && (_jsx("span", { className: "absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-amber-500 px-1 text-[9px] font-bold text-white", children: inboxCount > 9 ? "9+" : inboxCount }))] }), label: `Agent Overview${inboxCount > 0 ? ` (${inboxCount} need attention)` : ""}`, className: "text-gray-600 hover:text-gray-800" }) })), activeAgentId === null && (_jsx("div", { className: "flex items-center px-1", children: _jsxs("div", { className: cn("flex min-w-0 cursor-default items-center gap-2 border-r border-gray-200 p-2 text-xs", "border-b-white bg-white"), children: [_jsxs("div", { className: "relative", children: [_jsx(List, { className: "size-4 flex-shrink-0 text-gray-600", strokeWidth: 1 }), inboxCount > 0 && (_jsx("span", { className: "absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-amber-500 px-1 text-[9px] font-bold text-white", children: inboxCount > 9 ? "9+" : inboxCount }))] }), _jsx("span", { className: "truncate font-medium", children: "Overview" })] }) })), agents.length > 0 && (_jsx("div", { className: "flex items-center px-1", children: _jsxs(Popover, { open: menuPopoverOpen, onOpenChange: (open) => {
1076
1028
  setMenuPopoverOpen(open);
@@ -1100,7 +1052,7 @@ export const Agents = React.memo(function Agents({ closeButton, }) {
1100
1052
  const activeAgent = agents.find((a) => a.id === activeAgentId);
1101
1053
  if (!activeAgent)
1102
1054
  return null;
1103
- return (_jsx("div", { className: "absolute inset-0", children: _jsx(AgentTerminal, { agentStub: activeAgent, initialMetadata: initialMetadataMap[activeAgent.id], profiles: availableProfiles, isActive: true, onAgentUpdate: (updates) => handleAgentUpdate(activeAgent.id, updates) }) }, activeAgent.id));
1055
+ return (_jsx("div", { className: "absolute inset-0", children: _jsx(AgentTerminal, { agentStub: activeAgent, initialMetadata: initialMetadataMap[activeAgent.id], profiles: availableProfiles, isActive: true }) }, activeAgent.id));
1104
1056
  })()) })] }));
1105
1057
  });
1106
1058
  //# sourceMappingURL=Agents.js.map