@parhelia/core 0.1.12788 → 0.1.12790

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 (408) hide show
  1. package/dist/agents-view/AgentCard.d.ts +6 -2
  2. package/dist/agents-view/AgentCard.js +79 -147
  3. package/dist/agents-view/AgentCard.js.map +1 -1
  4. package/dist/agents-view/AgentsSidebar.d.ts +4 -9
  5. package/dist/agents-view/AgentsSidebar.js +10 -13
  6. package/dist/agents-view/AgentsSidebar.js.map +1 -1
  7. package/dist/agents-view/AgentsTitlebar.d.ts +3 -3
  8. package/dist/agents-view/AgentsTitlebar.js +10 -7
  9. package/dist/agents-view/AgentsTitlebar.js.map +1 -1
  10. package/dist/agents-view/AgentsView.d.ts +20 -7
  11. package/dist/agents-view/AgentsView.js +79 -255
  12. package/dist/agents-view/AgentsView.js.map +1 -1
  13. package/dist/agents-view/AgentsWorkspaceView.d.ts +1 -1
  14. package/dist/agents-view/AgentsWorkspaceView.js +66 -53
  15. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  16. package/dist/agents-view/DateAgentsGroup.d.ts +17 -0
  17. package/dist/agents-view/DateAgentsGroup.js +8 -0
  18. package/dist/agents-view/DateAgentsGroup.js.map +1 -0
  19. package/dist/agents-view/ProfileAgentsGroup.d.ts +2 -2
  20. package/dist/agents-view/ProfileAgentsGroup.js +9 -5
  21. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  22. package/dist/agents-view/agentsNavStore.d.ts +8 -0
  23. package/dist/agents-view/agentsNavStore.js +24 -0
  24. package/dist/agents-view/agentsNavStore.js.map +1 -0
  25. package/dist/components/PageHeader.d.ts +5 -1
  26. package/dist/components/PageHeader.js +2 -2
  27. package/dist/components/PageHeader.js.map +1 -1
  28. package/dist/components/ui/LanguageSelector.d.ts +3 -1
  29. package/dist/components/ui/LanguageSelector.js +8 -4
  30. package/dist/components/ui/LanguageSelector.js.map +1 -1
  31. package/dist/components/ui/PlaceholderInput.d.ts +0 -8
  32. package/dist/components/ui/PlaceholderInput.js +1 -42
  33. package/dist/components/ui/PlaceholderInput.js.map +1 -1
  34. package/dist/components/ui/PlaceholderInputParser.d.ts +9 -0
  35. package/dist/components/ui/PlaceholderInputParser.js +98 -0
  36. package/dist/components/ui/PlaceholderInputParser.js.map +1 -0
  37. package/dist/components/ui/PlaceholderInputTypes.d.ts +1 -1
  38. package/dist/components/ui/UserPicker.d.ts +34 -0
  39. package/dist/components/ui/UserPicker.js +73 -0
  40. package/dist/components/ui/UserPicker.js.map +1 -0
  41. package/dist/components/ui/copy-button.js +2 -1
  42. package/dist/components/ui/copy-button.js.map +1 -1
  43. package/dist/components/ui/popover.js +22 -4
  44. package/dist/components/ui/popover.js.map +1 -1
  45. package/dist/components/ui/select.js +1 -2
  46. package/dist/components/ui/select.js.map +1 -1
  47. package/dist/config/config.js +15 -2
  48. package/dist/config/config.js.map +1 -1
  49. package/dist/editor/ContentTree.d.ts +14 -1
  50. package/dist/editor/ContentTree.js +69 -19
  51. package/dist/editor/ContentTree.js.map +1 -1
  52. package/dist/editor/Editor.js +5 -8
  53. package/dist/editor/Editor.js.map +1 -1
  54. package/dist/editor/EditorLoadingOverlay.d.ts +1 -0
  55. package/dist/editor/EditorLoadingOverlay.js +7 -0
  56. package/dist/editor/EditorLoadingOverlay.js.map +1 -0
  57. package/dist/editor/FieldActionsOverlay.js +31 -4
  58. package/dist/editor/FieldActionsOverlay.js.map +1 -1
  59. package/dist/editor/FieldListField.js +6 -1
  60. package/dist/editor/FieldListField.js.map +1 -1
  61. package/dist/editor/GlobalMenuBar.js +9 -6
  62. package/dist/editor/GlobalMenuBar.js.map +1 -1
  63. package/dist/editor/ai/AgentSharingSection.js +15 -2
  64. package/dist/editor/ai/AgentSharingSection.js.map +1 -1
  65. package/dist/editor/ai/Agents.js +2 -3
  66. package/dist/editor/ai/Agents.js.map +1 -1
  67. package/dist/editor/ai/InlineAiDialog.d.ts +5 -0
  68. package/dist/editor/ai/InlineAiDialog.js +77 -64
  69. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  70. package/dist/editor/ai/InlineAiTrigger.js +4 -0
  71. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  72. package/dist/editor/ai/agentTodoExtraction.d.ts +7 -1
  73. package/dist/editor/ai/agentTodoExtraction.js +33 -0
  74. package/dist/editor/ai/agentTodoExtraction.js.map +1 -1
  75. package/dist/editor/ai/terminal/components/AgentDocumentList.d.ts +13 -0
  76. package/dist/editor/ai/terminal/components/AgentDocumentList.js +61 -46
  77. package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
  78. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.d.ts +4 -3
  79. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js +6 -9
  80. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js.map +1 -1
  81. package/dist/editor/ai/terminal/components/AgentPromptInputArea.d.ts +10 -2
  82. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +42 -9
  83. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
  84. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.d.ts +19 -0
  85. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +71 -0
  86. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -0
  87. package/dist/editor/ai/terminal/components/AgentSettingsContent.d.ts +4 -3
  88. package/dist/editor/ai/terminal/components/AgentSettingsContent.js +2 -2
  89. package/dist/editor/ai/terminal/components/AgentSettingsContent.js.map +1 -1
  90. package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.d.ts +2 -0
  91. package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.js.map +1 -1
  92. package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js +4 -2
  93. package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js.map +1 -1
  94. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.d.ts +3 -1
  95. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +2 -2
  96. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
  97. package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.d.ts +1 -1
  98. package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.js +2 -2
  99. package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.js.map +1 -1
  100. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +5 -1
  101. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +2 -2
  102. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  103. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.d.ts +2 -1
  104. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +2 -2
  105. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
  106. package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +2 -1
  107. package/dist/editor/ai/terminal/components/AgentTerminalView.js +7 -2
  108. package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
  109. package/dist/editor/ai/terminal/components/ContextInfoBar.d.ts +3 -1
  110. package/dist/editor/ai/terminal/components/ContextInfoBar.js +12 -3
  111. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  112. package/dist/editor/ai/terminal/components/EditOperationsPanel.d.ts +3 -1
  113. package/dist/editor/ai/terminal/components/EditOperationsPanel.js +13 -2
  114. package/dist/editor/ai/terminal/components/EditOperationsPanel.js.map +1 -1
  115. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.d.ts +5 -1
  116. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js +12 -12
  117. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js.map +1 -1
  118. package/dist/editor/ai/terminal/components/SpawnedAgentsPanel.d.ts +2 -1
  119. package/dist/editor/ai/terminal/components/SpawnedAgentsPanel.js +18 -14
  120. package/dist/editor/ai/terminal/components/SpawnedAgentsPanel.js.map +1 -1
  121. package/dist/editor/ai/terminal/components/TodoListPanel.d.ts +2 -1
  122. package/dist/editor/ai/terminal/components/TodoListPanel.js +10 -6
  123. package/dist/editor/ai/terminal/components/TodoListPanel.js.map +1 -1
  124. package/dist/editor/ai/terminal/useAgentPromptComposerSurface.d.ts +3 -2
  125. package/dist/editor/ai/terminal/useAgentSessionSync.d.ts +9 -1
  126. package/dist/editor/ai/terminal/useAgentSessionSync.js +7 -1
  127. package/dist/editor/ai/terminal/useAgentSessionSync.js.map +1 -1
  128. package/dist/editor/ai/terminal/useAgentSettingsNavigation.d.ts +3 -2
  129. package/dist/editor/ai/terminal/useAgentSettingsNavigation.js +3 -21
  130. package/dist/editor/ai/terminal/useAgentSettingsNavigation.js.map +1 -1
  131. package/dist/editor/ai/terminal/useAgentSettingsPanel.d.ts +3 -2
  132. package/dist/editor/ai/terminal/useAgentSettingsPanel.js +1 -2
  133. package/dist/editor/ai/terminal/useAgentSettingsPanel.js.map +1 -1
  134. package/dist/editor/ai/terminal/useAgentSettingsSelectOptions.js +2 -2
  135. package/dist/editor/ai/terminal/useAgentSettingsSelectOptions.js.map +1 -1
  136. package/dist/editor/ai/terminal/useAgentStatusBarContent.js +1 -1
  137. package/dist/editor/ai/terminal/useAgentStatusBarContent.js.map +1 -1
  138. package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +2 -1
  139. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +122 -2
  140. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
  141. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.d.ts +1 -0
  142. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js +2 -1
  143. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js.map +1 -1
  144. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js +1 -0
  145. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js.map +1 -1
  146. package/dist/editor/ai/terminal/useAgentTerminalActions.d.ts +6 -5
  147. package/dist/editor/ai/terminal/useAgentTerminalActions.js +3 -10
  148. package/dist/editor/ai/terminal/useAgentTerminalActions.js.map +1 -1
  149. package/dist/editor/ai/terminal/useAgentTerminalController.js +45 -6
  150. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  151. package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -0
  152. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js +2 -1
  153. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
  154. package/dist/editor/ai/terminal/useAgentTextareaDropHandlers.d.ts +25 -0
  155. package/dist/editor/ai/terminal/useAgentTextareaDropHandlers.js +187 -0
  156. package/dist/editor/ai/terminal/useAgentTextareaDropHandlers.js.map +1 -0
  157. package/dist/editor/client/AboutDialog.js +2 -1
  158. package/dist/editor/client/AboutDialog.js.map +1 -1
  159. package/dist/editor/client/EditorShell.js +118 -30
  160. package/dist/editor/client/EditorShell.js.map +1 -1
  161. package/dist/editor/client/editContext.d.ts +4 -1
  162. package/dist/editor/client/editContext.js.map +1 -1
  163. package/dist/editor/client/fieldModificationStore.d.ts +5 -2
  164. package/dist/editor/client/fieldModificationStore.js +31 -21
  165. package/dist/editor/client/fieldModificationStore.js.map +1 -1
  166. package/dist/editor/client/hooks/useEditorWebSocket.js +0 -47
  167. package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
  168. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +1 -0
  169. package/dist/editor/client/hooks/useSocketMessageHandler.js +47 -49
  170. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  171. package/dist/editor/client/itemsRepository.d.ts +8 -5
  172. package/dist/editor/client/itemsRepository.js +30 -37
  173. package/dist/editor/client/itemsRepository.js.map +1 -1
  174. package/dist/editor/client/operations.d.ts +8 -1
  175. package/dist/editor/client/operations.js +29 -9
  176. package/dist/editor/client/operations.js.map +1 -1
  177. package/dist/editor/client/ui/EditorChrome.js +7 -1
  178. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  179. package/dist/editor/commands/createVersionCommand.js +8 -2
  180. package/dist/editor/commands/createVersionCommand.js.map +1 -1
  181. package/dist/editor/field-types/DropLinkEditor.js +4 -1
  182. package/dist/editor/field-types/DropLinkEditor.js.map +1 -1
  183. package/dist/editor/field-types/MultiLineText.js +3 -1
  184. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  185. package/dist/editor/field-types/NameValueListEditor.js +4 -1
  186. package/dist/editor/field-types/NameValueListEditor.js.map +1 -1
  187. package/dist/editor/field-types/PictureFieldEditor.js +8 -4
  188. package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
  189. package/dist/editor/field-types/RichTextEditorComponent.js +6 -2
  190. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  191. package/dist/editor/field-types/SingleLineText.js +3 -1
  192. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  193. package/dist/editor/field-types/TreeListEditor.js +6 -1
  194. package/dist/editor/field-types/TreeListEditor.js.map +1 -1
  195. package/dist/editor/field-types/richtext/contextMenuFactory.d.ts +2 -1
  196. package/dist/editor/field-types/richtext/contextMenuFactory.js +7 -5
  197. package/dist/editor/field-types/richtext/contextMenuFactory.js.map +1 -1
  198. package/dist/editor/hooks/useNavigationPanelLogic.d.ts +3 -3
  199. package/dist/editor/hooks/useNavigationPanelLogic.js +5 -5
  200. package/dist/editor/hooks/useNavigationPanelLogic.js.map +1 -1
  201. package/dist/editor/menubar/ItemLanguageVersion.d.ts +4 -1
  202. package/dist/editor/menubar/ItemLanguageVersion.js +11 -3
  203. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  204. package/dist/editor/menubar/VersionPreviewCard.js +26 -6
  205. package/dist/editor/menubar/VersionPreviewCard.js.map +1 -1
  206. package/dist/editor/menubar/VersionSelector.js +17 -6
  207. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  208. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.d.ts +7 -0
  209. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +37 -0
  210. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -0
  211. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +2 -2
  212. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  213. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +7 -11
  214. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  215. package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
  216. package/dist/editor/menubar/toolbar-sections/index.js +1 -0
  217. package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
  218. package/dist/editor/notifications/useNotifications.js +11 -4
  219. package/dist/editor/notifications/useNotifications.js.map +1 -1
  220. package/dist/editor/page-editor-chrome/FieldEditedIndicator.js +3 -1
  221. package/dist/editor/page-editor-chrome/FieldEditedIndicator.js.map +1 -1
  222. package/dist/editor/page-editor-chrome/FrameMenu.d.ts +4 -2
  223. package/dist/editor/page-editor-chrome/FrameMenu.js +33 -9
  224. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  225. package/dist/editor/page-editor-chrome/InlineEditor.d.ts +4 -2
  226. package/dist/editor/page-editor-chrome/InlineEditor.js +125 -20
  227. package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
  228. package/dist/editor/page-editor-chrome/PageEditorChrome.d.ts +4 -2
  229. package/dist/editor/page-editor-chrome/PageEditorChrome.js +16 -3
  230. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  231. package/dist/editor/page-editor-chrome/PictureEditorOverlay.js +36 -13
  232. package/dist/editor/page-editor-chrome/PictureEditorOverlay.js.map +1 -1
  233. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +24 -4
  234. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
  235. package/dist/editor/page-editor-chrome/useInlineAICompletion.js +52 -22
  236. package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
  237. package/dist/editor/page-viewer/MiniMap.js +29 -21
  238. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  239. package/dist/editor/page-viewer/PageViewer.d.ts +4 -2
  240. package/dist/editor/page-viewer/PageViewer.js +14 -6
  241. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  242. package/dist/editor/page-viewer/PageViewerFrame.d.ts +4 -2
  243. package/dist/editor/page-viewer/PageViewerFrame.js +171 -52
  244. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  245. package/dist/editor/reviews/Comment.js +24 -0
  246. package/dist/editor/reviews/Comment.js.map +1 -1
  247. package/dist/editor/services/agentService.d.ts +18 -1
  248. package/dist/editor/services/agentService.js +34 -3
  249. package/dist/editor/services/agentService.js.map +1 -1
  250. package/dist/editor/services/aiService.d.ts +0 -36
  251. package/dist/editor/services/aiService.js +7 -64
  252. package/dist/editor/services/aiService.js.map +1 -1
  253. package/dist/editor/services/manualService.d.ts +31 -0
  254. package/dist/editor/services/manualService.js +77 -0
  255. package/dist/editor/services/manualService.js.map +1 -0
  256. package/dist/editor/services/serviceHelper.js +0 -14
  257. package/dist/editor/services/serviceHelper.js.map +1 -1
  258. package/dist/editor/services/systemService.d.ts +4 -0
  259. package/dist/editor/services/systemService.js +3 -0
  260. package/dist/editor/services/systemService.js.map +1 -1
  261. package/dist/editor/services/userService.d.ts +6 -0
  262. package/dist/editor/services/userService.js +13 -0
  263. package/dist/editor/services/userService.js.map +1 -0
  264. package/dist/editor/settings/About.js +178 -1
  265. package/dist/editor/settings/About.js.map +1 -1
  266. package/dist/editor/settings/QuotaInfo.js +7 -7
  267. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  268. package/dist/editor/settings/QuotaUserPicker.js +15 -55
  269. package/dist/editor/settings/QuotaUserPicker.js.map +1 -1
  270. package/dist/editor/settings/SettingsBreadcrumb.js +1 -1
  271. package/dist/editor/settings/SettingsBreadcrumb.js.map +1 -1
  272. package/dist/editor/settings/SettingsView.js +1 -1
  273. package/dist/editor/settings/SettingsView.js.map +1 -1
  274. package/dist/editor/settings/panels/AgentProfileConfigPanel.d.ts +2 -1
  275. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +4 -2
  276. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
  277. package/dist/editor/settings/panels/AgentProfileEditorPanel.d.ts +1 -0
  278. package/dist/editor/settings/panels/AgentProfileEditorPanel.js +1 -1
  279. package/dist/editor/settings/panels/AgentProfileEditorPanel.js.map +1 -1
  280. package/dist/editor/settings/panels/AgentsPanel.js +15 -10
  281. package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
  282. package/dist/editor/settings/panels/ClusterInstancesPanel.js +37 -10
  283. package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
  284. package/dist/editor/settings/panels/CreateMcpServerDialog.d.ts +7 -0
  285. package/dist/editor/settings/panels/CreateMcpServerDialog.js +71 -0
  286. package/dist/editor/settings/panels/CreateMcpServerDialog.js.map +1 -0
  287. package/dist/editor/settings/panels/JavaScriptToolsPanel.js +13 -17
  288. package/dist/editor/settings/panels/JavaScriptToolsPanel.js.map +1 -1
  289. package/dist/editor/settings/panels/McpToolsPanel.js +17 -8
  290. package/dist/editor/settings/panels/McpToolsPanel.js.map +1 -1
  291. package/dist/editor/settings/panels/ModelsPanel.js +92 -56
  292. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  293. package/dist/editor/settings/panels/ProvidersPanel.js +46 -47
  294. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  295. package/dist/editor/settings/panels/SearchConfigPanel.js +2 -2
  296. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  297. package/dist/editor/settings/panels/UserPreferencesPanel.d.ts +2 -0
  298. package/dist/editor/settings/panels/UserPreferencesPanel.js +17 -0
  299. package/dist/editor/settings/panels/UserPreferencesPanel.js.map +1 -0
  300. package/dist/editor/settings/panels/index.d.ts +1 -0
  301. package/dist/editor/settings/panels/index.js +1 -0
  302. package/dist/editor/settings/panels/index.js.map +1 -1
  303. package/dist/editor/sidebar/EditHistory.js +18 -3
  304. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  305. package/dist/editor/sidebar/LabelButton.d.ts +3 -3
  306. package/dist/editor/sidebar/LabelButton.js +4 -4
  307. package/dist/editor/sidebar/LabelButton.js.map +1 -1
  308. package/dist/editor/sidebar/MobileWorkspacePopover.d.ts +2 -2
  309. package/dist/editor/sidebar/MobileWorkspacePopover.js +2 -2
  310. package/dist/editor/sidebar/MobileWorkspacePopover.js.map +1 -1
  311. package/dist/editor/sidebar/NavigationPanelItem.js +3 -3
  312. package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
  313. package/dist/editor/sidebar/WorkspaceButton.d.ts +3 -1
  314. package/dist/editor/sidebar/WorkspaceButton.js +15 -7
  315. package/dist/editor/sidebar/WorkspaceButton.js.map +1 -1
  316. package/dist/editor/sidebar/WorkspaceRail.js +6 -5
  317. package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
  318. package/dist/editor/sidebar/WorkspaceRailMobile.js +2 -2
  319. package/dist/editor/sidebar/WorkspaceRailMobile.js.map +1 -1
  320. package/dist/editor/ui/ItemCollectionEditor.d.ts +27 -3
  321. package/dist/editor/ui/ItemCollectionEditor.js +44 -5
  322. package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
  323. package/dist/editor/ui/PerfectTree.js +1 -1
  324. package/dist/editor/ui/PerfectTree.js.map +1 -1
  325. package/dist/editor/utils.js +33 -11
  326. package/dist/editor/utils.js.map +1 -1
  327. package/dist/editor/version-diff/versionDiffTargets.js +7 -1
  328. package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
  329. package/dist/editor/views/EditorSlot.js +3 -2
  330. package/dist/editor/views/EditorSlot.js.map +1 -1
  331. package/dist/editor/views/ItemEditorPane.d.ts +11 -0
  332. package/dist/editor/views/ItemEditorPane.js +19 -0
  333. package/dist/editor/views/ItemEditorPane.js.map +1 -0
  334. package/dist/editor/views/editorSlotContext.d.ts +2 -0
  335. package/dist/editor/views/editorSlotContext.js +3 -0
  336. package/dist/editor/views/editorSlotContext.js.map +1 -1
  337. package/dist/index.d.ts +10 -0
  338. package/dist/index.js +7 -0
  339. package/dist/index.js.map +1 -1
  340. package/dist/revision.d.ts +2 -2
  341. package/dist/revision.js +2 -2
  342. package/dist/setup/services/setupWizardService.d.ts +10 -0
  343. package/dist/setup/services/setupWizardService.js +7 -0
  344. package/dist/setup/services/setupWizardService.js.map +1 -1
  345. package/dist/task-board/TaskBoardWorkspace.js +1 -0
  346. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  347. package/dist/task-board/components/ProjectExecutionUserPicker.js +15 -61
  348. package/dist/task-board/components/ProjectExecutionUserPicker.js.map +1 -1
  349. package/dist/task-board/components/ProjectListContent.d.ts +1 -0
  350. package/dist/task-board/components/ProjectListContent.js.map +1 -1
  351. package/dist/task-board/components/ProjectSelector.d.ts +1 -0
  352. package/dist/task-board/components/ProjectSelector.js +7 -1
  353. package/dist/task-board/components/ProjectSelector.js.map +1 -1
  354. package/dist/task-board/components/TaskBoardTitlebar.js +1 -1
  355. package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
  356. package/dist/task-board/taskBoardNavStore.d.ts +1 -0
  357. package/dist/task-board/taskBoardNavStore.js +1 -0
  358. package/dist/task-board/taskBoardNavStore.js.map +1 -1
  359. package/dist/types.d.ts +2 -1
  360. package/package.json +1 -1
  361. package/dist/agents-view/AgentsInbox.d.ts +0 -26
  362. package/dist/agents-view/AgentsInbox.js +0 -31
  363. package/dist/agents-view/AgentsInbox.js.map +0 -1
  364. package/dist/editor/ai/agentDiagnostics.test.d.ts +0 -1
  365. package/dist/editor/ai/agentDiagnostics.test.js +0 -298
  366. package/dist/editor/ai/agentDiagnostics.test.js.map +0 -1
  367. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.d.ts +0 -1
  368. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.js +0 -109
  369. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.js.map +0 -1
  370. package/dist/editor/ai/terminal/agentSessionSelectors.test.d.ts +0 -1
  371. package/dist/editor/ai/terminal/agentSessionSelectors.test.js +0 -219
  372. package/dist/editor/ai/terminal/agentSessionSelectors.test.js.map +0 -1
  373. package/dist/editor/ai/terminal/agentSessionSnapshot.test.d.ts +0 -1
  374. package/dist/editor/ai/terminal/agentSessionSnapshot.test.js +0 -136
  375. package/dist/editor/ai/terminal/agentSessionSnapshot.test.js.map +0 -1
  376. package/dist/editor/ai/terminal/agentSessionState.test.d.ts +0 -1
  377. package/dist/editor/ai/terminal/agentSessionState.test.js +0 -476
  378. package/dist/editor/ai/terminal/agentSessionState.test.js.map +0 -1
  379. package/dist/editor/ai/terminal/useAgentInitialPrompt.test.d.ts +0 -1
  380. package/dist/editor/ai/terminal/useAgentInitialPrompt.test.js +0 -63
  381. package/dist/editor/ai/terminal/useAgentInitialPrompt.test.js.map +0 -1
  382. package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.d.ts +0 -1
  383. package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.js +0 -80
  384. package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.js.map +0 -1
  385. package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.d.ts +0 -1
  386. package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.js +0 -135
  387. package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.js.map +0 -1
  388. package/dist/editor/ai/terminal/useAgentSession.test.d.ts +0 -1
  389. package/dist/editor/ai/terminal/useAgentSession.test.js +0 -181
  390. package/dist/editor/ai/terminal/useAgentSession.test.js.map +0 -1
  391. package/dist/editor/ai/terminal/useAgentSubmitHandlers.test.d.ts +0 -1
  392. package/dist/editor/ai/terminal/useAgentSubmitHandlers.test.js +0 -88
  393. package/dist/editor/ai/terminal/useAgentSubmitHandlers.test.js.map +0 -1
  394. package/dist/editor/ai/useAgentPanes.test.d.ts +0 -1
  395. package/dist/editor/ai/useAgentPanes.test.js +0 -198
  396. package/dist/editor/ai/useAgentPanes.test.js.map +0 -1
  397. package/dist/editor/debugSessionLog.d.ts +0 -9
  398. package/dist/editor/debugSessionLog.js +0 -19
  399. package/dist/editor/debugSessionLog.js.map +0 -1
  400. package/dist/editor/services/agentDialogService.test.d.ts +0 -1
  401. package/dist/editor/services/agentDialogService.test.js +0 -56
  402. package/dist/editor/services/agentDialogService.test.js.map +0 -1
  403. package/dist/editor/services/agentSubscriptionRegistry.test.d.ts +0 -1
  404. package/dist/editor/services/agentSubscriptionRegistry.test.js +0 -104
  405. package/dist/editor/services/agentSubscriptionRegistry.test.js.map +0 -1
  406. package/dist/test/setup.d.ts +0 -0
  407. package/dist/test/setup.js +0 -37
  408. package/dist/test/setup.js.map +0 -1
@@ -1,39 +1,24 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState, useEffect, useMemo, useCallback } from "react";
3
- import { sanitizeSvg } from "../lib/sanitize";
4
- import { getAgentsGrouped, getClosedAgentsByProfile, cancelAgent, closeAgent, deleteAgent, } from "../editor/services/agentService";
3
+ import { getAgentsGrouped, getClosedAgentsByProfile, closeAgent, deleteAgent, } from "../editor/services/agentService";
5
4
  import { isRunningAgentStatus, parseAgentRunStatusData, shouldIgnoreReplayRunStart, } from "../editor/services/agentStatus";
6
5
  import { cn } from "../lib/utils";
7
- import { RefreshCw, List, Layers, Square } from "lucide-react";
8
- import { SimpleIconButton } from "../editor/ui/SimpleIconButton";
6
+ import { RefreshCw, List, Layers, Plus, ArrowLeft } from "lucide-react";
9
7
  import { FilterInput } from "../components/FilterInput";
10
8
  import { PageHeader } from "../components/PageHeader";
11
9
  import { useEditContext } from "../editor/client/editContext";
12
10
  import { AgentCard } from "./AgentCard";
13
11
  import { ProfileAgentsGroup } from "./ProfileAgentsGroup";
14
- import { Checkbox } from "../components/ui/checkbox";
15
- import { SimpleTabs } from "../editor/ui/SimpleTabs";
16
- import { AgentsInbox, agentNeedsAttention } from "./AgentsInbox";
12
+ import { DateAgentsGroup } from "./DateAgentsGroup";
13
+ import { Switch } from "../components/ui/switch";
17
14
  import { CreateAgentView } from "./CreateAgentView";
18
15
  import { SecretAgentIcon } from "../editor/ui/Icons";
19
16
  import { Spinner } from "../editor/ui/Spinner";
20
17
  /**
21
- * Agents overview view with tab-based navigation:
22
- * - Inbox: Agents requiring user attention
23
- * - All Agents: Active and closed agents with search/filter
24
- * - Create New: Profile selection to start a new agent
18
+ * Unified agents overview: search/filter, active agents and closed history.
19
+ * Creating a new agent happens in a modal accessed from the toolbar.
25
20
  */
26
- const SECTION_TO_INDEX = {
27
- inbox: 0,
28
- all: 1,
29
- create: 2,
30
- };
31
- const SECTION_LABELS = {
32
- inbox: "Inbox",
33
- all: "All Agents",
34
- create: "Create New",
35
- };
36
- export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, activeSection: controlledSection, onInboxCountChange, } = {}) {
21
+ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, onRequestCreateAgent, hideNewAgentButton = false, } = {}) {
37
22
  const getAgentSortDate = useCallback((agent) => agent.lastMessageDate || agent.updatedDate, []);
38
23
  const sortAgentsByRecentActivity = useCallback((agents) => [...agents].sort((a, b) => new Date(getAgentSortDate(b)).getTime() -
39
24
  new Date(getAgentSortDate(a)).getTime()), [getAgentSortDate]);
@@ -42,29 +27,28 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
42
27
  agents: sortAgentsByRecentActivity(group.agents),
43
28
  })), [sortAgentsByRecentActivity]);
44
29
  const editContext = useEditContext();
45
- const [internalTabIndex, setInternalTabIndex] = useState(1);
46
- const activeTabIndex = controlledSection !== undefined
47
- ? SECTION_TO_INDEX[controlledSection]
48
- : internalTabIndex;
49
- const setActiveTabIndex = (index) => {
50
- if (controlledSection === undefined)
51
- setInternalTabIndex(index);
52
- };
53
30
  const [activeAgents, setActiveAgents] = useState([]);
54
31
  const [profileGroups, setProfileGroups] = useState([]);
55
32
  const [expandedProfiles, setExpandedProfiles] = useState(new Set());
33
+ const [collapsedDateBuckets, setCollapsedDateBuckets] = useState(new Set());
56
34
  const [loadingMoreForProfile, setLoadingMoreForProfile] = useState(null);
57
35
  const [loading, setLoading] = useState(true);
58
36
  const [initialLoad, setInitialLoad] = useState(true);
59
37
  const [error, setError] = useState(null);
60
- const [refreshing, setRefreshing] = useState(false);
61
- const [stoppingAgentIds, setStoppingAgentIds] = useState(new Set());
38
+ const [, setRefreshing] = useState(false);
62
39
  const [searchTerm, setSearchTerm] = useState("");
63
40
  const [debouncedSearchTerm, setDebouncedSearchTerm] = useState("");
64
- // Single shared toggle for both the Inbox and All Agents tabs.
65
- // Defaults to true so the inbox's "Close All" can't sweep up agents shared with you.
66
41
  const [showOnlyMyAgents, setShowOnlyMyAgents] = useState(true);
67
42
  const [historyViewMode, setHistoryViewMode] = useState("grouped");
43
+ const [viewMode, setViewMode] = useState("list");
44
+ const handleNewAgentClick = () => {
45
+ if (onRequestCreateAgent) {
46
+ onRequestCreateAgent();
47
+ }
48
+ else {
49
+ setViewMode("create");
50
+ }
51
+ };
68
52
  // Debounce search term
69
53
  useEffect(() => {
70
54
  const timer = setTimeout(() => {
@@ -111,11 +95,9 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
111
95
  console.warn("Invalid agent:run:start message payload:", message.payload);
112
96
  return;
113
97
  }
114
- // Update or add agent in active agents list
115
98
  setActiveAgents((prevAgents) => {
116
99
  const existingAgentIndex = prevAgents.findIndex((agent) => agent.id === agentId);
117
100
  if (existingAgentIndex !== -1) {
118
- // Update existing agent
119
101
  const updatedAgents = [...prevAgents];
120
102
  const existingAgent = updatedAgents[existingAgentIndex];
121
103
  if (shouldIgnoreReplayRunStart(existingAgent.status, existingAgent.updatedDate, typeof timestamp === "string" ? timestamp : undefined)) {
@@ -130,7 +112,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
130
112
  return updatedAgents;
131
113
  }
132
114
  else {
133
- // Agent not found - reload to get full details
134
115
  loadAgents();
135
116
  return prevAgents;
136
117
  }
@@ -140,7 +121,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
140
121
  const { agentId, agentName, agentDescription } = message.payload || {};
141
122
  if (!agentId)
142
123
  return;
143
- // Update agent in active agents list
144
124
  setActiveAgents((prevAgents) => {
145
125
  const existingIndex = prevAgents.findIndex((a) => a.id === agentId);
146
126
  if (existingIndex === -1)
@@ -159,7 +139,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
159
139
  });
160
140
  }
161
141
  else if (message.type === "agent:run:closed") {
162
- // Reload agents when one is closed - it should move to closed section
163
142
  loadAgents();
164
143
  }
165
144
  else if (message.type === "agent:run:status") {
@@ -186,112 +165,18 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
186
165
  }
187
166
  else if (message.type === "agent:run:complete" ||
188
167
  message.type === "agent:run:error") {
189
- // Reload to update status when agent completes or errors
190
168
  loadAgents();
191
169
  }
192
170
  });
193
171
  return unsubscribe;
194
172
  }, [editContext?.addSocketMessageListener, loadAgents]);
195
- // Inbox shows agents that need attention. Defaults to "My agents only" so
196
- // destructive actions like "Close All" can't sweep up other people's work.
197
- const inboxAgents = useMemo(() => {
198
- return activeAgents
199
- .filter(agentNeedsAttention)
200
- .filter((agent) => !showOnlyMyAgents || !agent.isShared);
201
- }, [activeAgents, showOnlyMyAgents]);
202
- const inboxCount = inboxAgents.length;
203
- // Report inbox count to parent for sidebar badge
204
- useEffect(() => {
205
- onInboxCountChange?.(inboxCount);
206
- }, [inboxCount, onInboxCountChange]);
207
- // Sort active agents by most recent activity (newest first)
208
173
  const sortedActiveAgents = useMemo(() => {
209
174
  return sortAgentsByRecentActivity(activeAgents);
210
175
  }, [activeAgents, sortAgentsByRecentActivity]);
211
- // Calculate running agents (agents that are currently executing)
212
- // Excludes agents waiting for tool call approval - they're shown in inbox
213
- const runningAgents = useMemo(() => {
214
- return sortedActiveAgents.filter((agent) => isRunningAgentStatus(agent.status));
215
- }, [sortedActiveAgents]);
216
176
  const handleRefresh = async () => {
217
177
  setRefreshing(true);
218
178
  await loadAgents();
219
179
  };
220
- const handleStopAgent = useCallback(async (agentId, agentName) => {
221
- setStoppingAgentIds((prev) => {
222
- const next = new Set(prev);
223
- next.add(agentId);
224
- return next;
225
- });
226
- try {
227
- await cancelAgent(agentId);
228
- setActiveAgents((prevAgents) => prevAgents.map((agent) => agent.id === agentId
229
- ? {
230
- ...agent,
231
- status: "idle",
232
- updatedDate: new Date().toISOString(),
233
- }
234
- : agent));
235
- await loadAgents();
236
- }
237
- catch (err) {
238
- console.error("Failed to stop agent:", err);
239
- editContext?.showToast(`Failed to stop ${agentName}: ${err?.message || "Unknown error"}`);
240
- }
241
- finally {
242
- setStoppingAgentIds((prev) => {
243
- const next = new Set(prev);
244
- next.delete(agentId);
245
- return next;
246
- });
247
- }
248
- }, [activeAgents, editContext, loadAgents, runningAgents]);
249
- const handleStopAllRunning = useCallback(async () => {
250
- if (runningAgents.length === 0)
251
- return;
252
- const runningIds = runningAgents.map((agent) => agent.id);
253
- const runningNames = new Map(runningAgents.map((agent) => [agent.id, agent.name]));
254
- setStoppingAgentIds((prev) => {
255
- const next = new Set(prev);
256
- runningIds.forEach((id) => next.add(id));
257
- return next;
258
- });
259
- try {
260
- const results = await Promise.allSettled(runningIds.map((agentId) => cancelAgent(agentId)));
261
- const failedIds = results
262
- .map((result, index) => ({ result, agentId: runningIds[index] }))
263
- .filter((entry) => entry.result.status === "rejected")
264
- .map((entry) => entry.agentId);
265
- if (failedIds.length < runningIds.length) {
266
- const stoppedIds = new Set(runningIds.filter((id) => !failedIds.includes(id)));
267
- setActiveAgents((prevAgents) => prevAgents.map((agent) => stoppedIds.has(agent.id)
268
- ? {
269
- ...agent,
270
- status: "idle",
271
- updatedDate: new Date().toISOString(),
272
- }
273
- : agent));
274
- }
275
- if (failedIds.length > 0) {
276
- const failedNames = failedIds
277
- .map((id) => runningNames.get(id) || id)
278
- .join(", ");
279
- editContext?.showToast(`Failed to stop: ${failedNames}`);
280
- }
281
- await loadAgents();
282
- }
283
- catch (err) {
284
- console.error("Failed to stop running agents:", err);
285
- editContext?.showToast(`Failed to stop running agents: ${err?.message || "Unknown error"}`);
286
- }
287
- finally {
288
- setStoppingAgentIds((prev) => {
289
- const next = new Set(prev);
290
- runningIds.forEach((id) => next.delete(id));
291
- return next;
292
- });
293
- }
294
- }, [editContext, loadAgents, runningAgents]);
295
180
  const handleToggleProfile = (profileId) => {
296
181
  const key = profileId || "null";
297
182
  setExpandedProfiles((prev) => {
@@ -305,19 +190,28 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
305
190
  return newSet;
306
191
  });
307
192
  };
193
+ const handleToggleDateBucket = (key) => {
194
+ setCollapsedDateBuckets((prev) => {
195
+ const newSet = new Set(prev);
196
+ if (newSet.has(key)) {
197
+ newSet.delete(key);
198
+ }
199
+ else {
200
+ newSet.add(key);
201
+ }
202
+ return newSet;
203
+ });
204
+ };
308
205
  const handleLoadMoreForProfile = async (profileId) => {
309
206
  if (!profileId || loadingMoreForProfile)
310
207
  return;
311
208
  try {
312
209
  setLoadingMoreForProfile(profileId);
313
- // Find the current profile group
314
210
  const profileGroup = profileGroups.find((g) => g.profileId === profileId);
315
211
  if (!profileGroup)
316
212
  return;
317
213
  const currentCount = profileGroup.agents.length;
318
- // Load more agents for this profile
319
214
  const response = await getClosedAgentsByProfile(profileId, currentCount, 10, debouncedSearchTerm || undefined);
320
- // Update the profile group with new agents
321
215
  setProfileGroups((prevGroups) => prevGroups.map((group) => {
322
216
  if (group.profileId === profileId) {
323
217
  return {
@@ -339,15 +233,12 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
339
233
  setLoadingMoreForProfile(null);
340
234
  }
341
235
  };
342
- const handleOpenAgent = (agent) => {
343
- // If onSelectAgent callback is provided, use it directly
236
+ const handleOpenAgent = (agent, event) => {
344
237
  if (onSelectAgent) {
345
- onSelectAgent(agent);
238
+ onSelectAgent(agent, { split: !!event?.altKey });
346
239
  return;
347
240
  }
348
- // Ensure agents panel is visible, but don't switch views
349
241
  editContext?.setShowAgentsPanel?.(true);
350
- // Delay briefly for any UI updates, then dispatch event to open existing agent
351
242
  setTimeout(() => {
352
243
  window.dispatchEvent(new CustomEvent("editor:openAgent", {
353
244
  detail: { agentId: agent.id },
@@ -355,13 +246,11 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
355
246
  }, 100);
356
247
  };
357
248
  const handleCloseAgent = async (agentId, agentName) => {
358
- // Find the agent to check its status
359
249
  const agent = activeAgents.find((a) => a.id === agentId);
360
250
  const isRunning = isRunningAgentStatus(agent?.status);
361
251
  const doClose = async () => {
362
252
  try {
363
253
  await closeAgent(agentId);
364
- // Reload to move agent from active to closed section
365
254
  loadAgents();
366
255
  }
367
256
  catch (err) {
@@ -369,7 +258,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
369
258
  editContext?.showToast(`Failed to close agent: ${err?.message || "Unknown error"}`);
370
259
  }
371
260
  };
372
- // Only confirm if agent is running
373
261
  if (isRunning) {
374
262
  editContext?.confirm({
375
263
  header: "Close Agent",
@@ -380,49 +268,9 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
380
268
  });
381
269
  }
382
270
  else {
383
- // Close immediately without confirmation
384
271
  await doClose();
385
272
  }
386
273
  };
387
- const handleCloseAllInbox = () => {
388
- // Only close agents currently visible in the inbox — respects the
389
- // "Show shared agents" toggle so we never close someone else's agent
390
- // unless the user has explicitly opted in.
391
- const agentsToClose = inboxAgents;
392
- if (agentsToClose.length === 0)
393
- return;
394
- const runningAgents = agentsToClose.filter((a) => isRunningAgentStatus(a.status));
395
- const doCloseAll = async () => {
396
- try {
397
- await Promise.all(agentsToClose.map((agent) => closeAgent(agent.id)));
398
- loadAgents();
399
- }
400
- catch (err) {
401
- console.error("Failed to close all agents:", err);
402
- editContext?.showToast(`Failed to close some agents: ${err?.message || "Unknown error"}`);
403
- }
404
- };
405
- const sharedCount = agentsToClose.filter((a) => a.isShared).length;
406
- const sharedWarning = sharedCount > 0
407
- ? ` This includes ${sharedCount} shared agent${sharedCount !== 1 ? "s" : ""} that other users may be working with.`
408
- : "";
409
- // Confirm if any agents are running, or whenever shared agents are about to be closed.
410
- if (runningAgents.length > 0 || sharedCount > 0) {
411
- const runningPart = runningAgents.length > 0
412
- ? ` ${runningAgents.length} running agent${runningAgents.length !== 1 ? "s" : ""} will be stopped.`
413
- : "";
414
- editContext?.confirm({
415
- header: "Close All Agents",
416
- message: `Are you sure you want to close all ${agentsToClose.length} agents in your inbox?${runningPart}${sharedWarning}`,
417
- acceptLabel: "Close All",
418
- accept: doCloseAll,
419
- showCancel: true,
420
- });
421
- }
422
- else {
423
- doCloseAll();
424
- }
425
- };
426
274
  const handleDeleteAgent = async (agentId, agentName, event) => {
427
275
  event.stopPropagation();
428
276
  editContext?.confirm({
@@ -432,7 +280,6 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
432
280
  accept: async () => {
433
281
  try {
434
282
  await deleteAgent(agentId);
435
- // Remove from both active and closed lists
436
283
  setActiveAgents((prev) => prev.filter((a) => a.id !== agentId));
437
284
  setProfileGroups((prevGroups) => prevGroups.map((group) => ({
438
285
  ...group,
@@ -448,18 +295,17 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
448
295
  showCancel: true,
449
296
  });
450
297
  };
451
- const handleAgentClick = (agent) => {
452
- // If onSelectAgent callback is provided, use it directly
298
+ const handleAgentClick = (agent, event) => {
453
299
  if (onSelectAgent) {
454
- onSelectAgent(agent);
300
+ onSelectAgent(agent, { split: !!event?.altKey });
455
301
  return;
456
302
  }
457
- // Otherwise, dispatch event for the agents panel
458
303
  window.dispatchEvent(new CustomEvent("editor:selectAgent", {
459
304
  detail: { agentId: agent.id },
460
305
  }));
461
306
  };
462
307
  const handleCreateAgent = (profile) => {
308
+ setViewMode("list");
463
309
  const agentDisplayName = profile.agentName || profile.displayTitle || profile.name;
464
310
  const agentId = crypto.randomUUID();
465
311
  const newAgent = {
@@ -472,12 +318,10 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
472
318
  profileName: profile.name,
473
319
  profileSvgIcon: profile.svgIcon,
474
320
  };
475
- // If onSelectAgent callback is provided (workspace mode), use it directly
476
321
  if (onSelectAgent) {
477
322
  onSelectAgent(newAgent);
478
323
  return;
479
324
  }
480
- // Otherwise, open the agents panel with the new agent via event
481
325
  editContext?.setShowAgentsPanel?.(true);
482
326
  setTimeout(() => {
483
327
  window.dispatchEvent(new CustomEvent("editor:createAgentWithProfile", {
@@ -496,86 +340,66 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, ac
496
340
  };
497
341
  const totalActiveCount = activeAgents.length;
498
342
  const totalClosedCount = profileGroups.reduce((sum, group) => sum + group.totalClosedCount, 0);
499
- const isStoppingAllRunning = runningAgents.length > 0 &&
500
- runningAgents.every((agent) => stoppingAgentIds.has(agent.id));
501
343
  // Flatten all closed agents from all profile groups and sort by date (newest first)
502
344
  const flatClosedAgents = useMemo(() => {
503
345
  const allAgents = [];
504
346
  profileGroups.forEach((group) => {
505
347
  allAgents.push(...group.agents);
506
348
  });
507
- // Sort by lastMessageDate if available, otherwise by updatedDate (newest first)
508
349
  return allAgents.sort((a, b) => new Date(getAgentSortDate(b)).getTime() -
509
350
  new Date(getAgentSortDate(a)).getTime());
510
351
  }, [profileGroups, getAgentSortDate]);
511
- const currentSection = controlledSection ??
512
- (activeTabIndex === 0 ? "inbox" : activeTabIndex === 1 ? "all" : "create");
513
- const pageHeaderDescription = useMemo(() => {
514
- if (selectedAgentId) {
515
- const fromActive = activeAgents.find((agent) => agent.id === selectedAgentId);
516
- if (fromActive?.name)
517
- return fromActive.name;
518
- for (const group of profileGroups) {
519
- const agent = group.agents.find((agent) => agent.id === selectedAgentId);
520
- if (agent?.name)
521
- return agent.name;
522
- }
352
+ // Bucket flat closed agents by recency. Empty buckets are omitted.
353
+ const dateBuckets = useMemo(() => {
354
+ const startOfToday = new Date();
355
+ startOfToday.setHours(0, 0, 0, 0);
356
+ const startOfYesterday = new Date(startOfToday);
357
+ startOfYesterday.setDate(startOfYesterday.getDate() - 1);
358
+ const sevenDaysAgo = new Date(startOfToday);
359
+ sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
360
+ const thirtyDaysAgo = new Date(startOfToday);
361
+ thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
362
+ const buckets = [
363
+ { key: "today", label: "Today", agents: [] },
364
+ { key: "yesterday", label: "Yesterday", agents: [] },
365
+ { key: "last7", label: "Last 7 Days", agents: [] },
366
+ { key: "last30", label: "Last 30 Days", agents: [] },
367
+ { key: "older", label: "Older", agents: [] },
368
+ ];
369
+ for (const agent of flatClosedAgents) {
370
+ const d = new Date(getAgentSortDate(agent));
371
+ if (d >= startOfToday)
372
+ buckets[0].agents.push(agent);
373
+ else if (d >= startOfYesterday)
374
+ buckets[1].agents.push(agent);
375
+ else if (d >= sevenDaysAgo)
376
+ buckets[2].agents.push(agent);
377
+ else if (d >= thirtyDaysAgo)
378
+ buckets[3].agents.push(agent);
379
+ else
380
+ buckets[4].agents.push(agent);
523
381
  }
524
- return SECTION_LABELS[currentSection];
525
- }, [selectedAgentId, activeAgents, profileGroups, currentSection]);
526
- // Show full-screen loading only on initial load (skip for "create" – that view loads its own data)
527
- if (initialLoad && loading && currentSection !== "create") {
382
+ return buckets.filter((b) => b.agents.length > 0);
383
+ }, [flatClosedAgents, getAgentSortDate]);
384
+ if (initialLoad && loading) {
528
385
  return (_jsxs("div", { className: "flex h-full items-center justify-center gap-2", children: [_jsx(Spinner, { size: "sm" }), _jsx("div", { className: "text-sm text-gray-500", children: "Loading agents..." })] }));
529
386
  }
530
- return (_jsxs("div", { className: "absolute inset-0 flex flex-col bg-[#fcfcfc]", children: [!compact && (_jsx(PageHeader, { icon: _jsx(SecretAgentIcon, { size: 28, strokeWidth: 1.5 }), title: "AI Agents", description: pageHeaderDescription, variant: "compact" })), runningAgents.length > 0 && currentSection !== "create" && (_jsxs("div", { className: "shrink-0 border-b border-gray-100 bg-white px-4 pt-3 pb-2", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2 text-emerald-600", children: [_jsx(Spinner, { size: "xs" }), _jsxs("span", { className: "text-xs font-semibold tracking-wide text-emerald-700", children: [runningAgents.length, " running"] })] }), _jsxs("button", { onClick: () => void handleStopAllRunning(), disabled: isStoppingAllRunning, className: "flex shrink-0 items-center gap-1.5 rounded-md px-2 py-1 text-[11px] font-medium text-gray-500 transition-colors hover:bg-red-50 hover:text-red-600 disabled:cursor-not-allowed disabled:opacity-60", children: [isStoppingAllRunning ? (_jsx(Spinner, { size: "sm" })) : (_jsx(Square, { className: "size-3 fill-current", strokeWidth: 2 })), _jsx("span", { children: "Stop All" })] })] }), _jsx("div", { className: "max-h-[200px] overflow-y-auto", children: _jsx("div", { className: "flex flex-col gap-px", children: runningAgents.map((agent) => {
531
- const isSelected = selectedAgentId === agent.id;
532
- const isStopping = stoppingAgentIds.has(agent.id);
533
- return (_jsxs("div", { className: cn("group flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors", isSelected
534
- ? "bg-emerald-100/80 text-emerald-800"
535
- : "text-gray-700 hover:bg-gray-50"), children: [_jsxs("button", { onClick: () => handleAgentClick(agent), className: "flex min-w-0 flex-1 items-center gap-2 text-xs", children: [agent.profileSvgIcon ? (_jsx("div", { className: "h-4 w-4 shrink-0 opacity-60 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
536
- __html: sanitizeSvg(agent.profileSvgIcon),
537
- } })) : (_jsx(SecretAgentIcon, { size: 14, strokeWidth: 1.5, className: "shrink-0 opacity-60" })), _jsx("span", { className: "flex-1 truncate text-left font-medium", children: agent.name })] }), _jsx("button", { onClick: (event) => {
538
- event.stopPropagation();
539
- void handleStopAgent(agent.id, agent.name);
540
- }, disabled: isStopping, title: "Stop agent", className: "flex shrink-0 items-center justify-center rounded p-1 text-gray-400 opacity-0 transition-all group-hover:opacity-100 hover:bg-red-50 hover:text-red-500 disabled:cursor-not-allowed disabled:opacity-60", children: isStopping ? (_jsx(Spinner, { size: "sm" })) : (_jsx(Square, { className: "size-3 fill-current", strokeWidth: 2 })) })] }, agent.id));
541
- }) }) })] })), controlledSection === undefined && (_jsx("div", { className: "shrink-0 border-b border-gray-100 bg-white px-6 shadow-[0_1px_2px_rgba(0,0,0,0.03)]", children: _jsx(SimpleTabs, { tabs: [
542
- {
543
- id: "inbox",
544
- label: inboxCount > 0 ? `Inbox (${inboxCount})` : "Inbox",
545
- content: null,
546
- testId: "agents-tab-inbox",
547
- },
548
- {
549
- id: "all",
550
- label: "All Agents",
551
- content: null,
552
- testId: "agents-tab-all",
553
- },
554
- {
555
- id: "create",
556
- label: "Create New",
557
- content: null,
558
- testId: "agents-tab-create",
559
- },
560
- ], activeTab: activeTabIndex, setActiveTab: setActiveTabIndex, hideContent: true, variant: "elegant", className: "gap-6" }) })), _jsxs("div", { className: "relative flex-1 overflow-hidden", children: [activeTabIndex === 0 && (_jsx("div", { className: "absolute inset-0 overflow-y-auto", children: _jsx(AgentsInbox, { agents: activeAgents, onOpenAgent: handleOpenAgent, onDismissAgent: handleCloseAgent, onCloseAll: handleCloseAllInbox, formatDateTime: formatDateTime, loading: loading && initialLoad, selectedAgentId: selectedAgentId, showOnlyMyAgents: showOnlyMyAgents, onShowOnlyMyAgentsChange: setShowOnlyMyAgents }) })), activeTabIndex === 1 && (_jsxs("div", { className: "absolute inset-0 flex flex-col", children: [_jsxs("div", { className: "shrink-0 border-b border-gray-100 bg-white p-6", children: [_jsxs("div", { className: "mb-4 flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-lg font-semibold tracking-tight text-gray-900", children: "Agent History" }), _jsxs("p", { className: "text-[13px] text-gray-500", children: [totalActiveCount, " active, ", totalClosedCount, " closed agents"] })] }), _jsx(SimpleIconButton, { onClick: handleRefresh, icon: _jsx(RefreshCw, { className: cn("size-4 text-gray-400", refreshing && "animate-spin"), strokeWidth: 2 }), label: "Refresh list", disabled: refreshing, className: "h-9 w-9 rounded-full bg-gray-50 shadow-sm transition-colors hover:bg-gray-100" })] }), _jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:items-center", children: [_jsx("div", { className: "flex-1", children: _jsx(FilterInput, { value: searchTerm, onChange: setSearchTerm, placeholder: "Search by name, description, or agent ID (GUID)...", loading: loading && !initialLoad, size: "md", className: "border-gray-100 shadow-sm focus-within:border-gray-300" }) }), _jsxs("div", { className: "flex items-center gap-2", children: [profileGroups.length > 0 && (_jsxs("div", { className: "flex items-center gap-1 rounded-lg border border-gray-100 bg-gray-50/50 p-1", children: [_jsxs("button", { onClick: () => setHistoryViewMode("grouped"), className: cn("flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-[12px] font-medium transition-colors", historyViewMode === "grouped"
561
- ? "bg-white text-gray-900 shadow-sm"
562
- : "text-gray-600 hover:text-gray-900"), title: "Grouped by profile", children: [_jsx(Layers, { className: "size-3.5", strokeWidth: 2 }), _jsx("span", { children: "Grouped" })] }), _jsxs("button", { onClick: () => setHistoryViewMode("flat"), className: cn("flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-[12px] font-medium transition-colors", historyViewMode === "flat"
563
- ? "bg-white text-gray-900 shadow-sm"
564
- : "text-gray-600 hover:text-gray-900"), title: "Flat list (newest first)", children: [_jsx(List, { className: "size-3.5", strokeWidth: 2 }), _jsx("span", { children: "Flat" })] })] })), _jsxs("label", { className: "flex cursor-pointer items-center gap-2.5 rounded-lg border border-gray-100 bg-gray-50/50 px-3 py-2 text-sm transition-colors hover:bg-gray-100", children: [_jsx(Checkbox, { checked: showOnlyMyAgents, onCheckedChange: (checked) => setShowOnlyMyAgents(checked === true), className: "border-gray-300 data-[state=checked]:border-black data-[state=checked]:bg-black" }), _jsx("span", { className: "text-[13px] font-medium text-gray-700 select-none", children: "My agents only" })] })] })] })] }), _jsxs("div", { className: "relative flex-1 overflow-y-auto", children: [loading && !initialLoad && (_jsx("div", { className: "absolute top-2 left-1/2 z-10 -translate-x-1/2 rounded-md bg-white px-3 py-1.5 shadow-md", children: _jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-600", children: [_jsx(RefreshCw, { className: "size-3 animate-spin", strokeWidth: 1 }), _jsx("span", { children: "Loading..." })] }) })), error ? (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mb-4 text-sm text-red-600", children: error }), _jsx("button", { onClick: handleRefresh, className: "rounded bg-blue-500 px-4 py-2 text-xs text-white hover:bg-blue-600", children: "Retry" })] }) })) : totalActiveCount === 0 &&
565
- totalClosedCount === 0 &&
566
- !loading ? (_jsx("div", { className: "flex h-full items-center justify-center text-sm text-gray-500", children: searchTerm.trim()
567
- ? "No agents match your search"
568
- : "No agents found" })) : (_jsxs("div", { className: cn("space-y-4 p-4", loading && "opacity-60"), children: [activeAgents.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-700", children: "Active Agents" }), sortedActiveAgents.map((agent) => (_jsx(AgentCard, { agent: agent, onClick: handleAgentClick, onResume: handleOpenAgent, onClose: handleCloseAgent, onDelete: handleDeleteAgent, formatDateTime: formatDateTime, selected: selectedAgentId === agent.id }, agent.id)))] })), profileGroups.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-700", children: "History" }), historyViewMode === "grouped" ? (
569
- // Grouped by profile view
570
- profileGroups.map((profileGroup) => {
387
+ const newAgentButton = viewMode === "list" && !hideNewAgentButton && (_jsxs("button", { type: "button", onClick: handleNewAgentClick, className: "inline-flex items-center gap-1.5 rounded-lg bg-theme-secondary px-3 py-2 text-[13px] font-medium text-white shadow-sm transition-colors hover:bg-theme-secondary/90", "data-testid": "agents-new-agent-button", children: [_jsx(Plus, { className: "size-4", strokeWidth: 2.25 }), "New Agent"] }));
388
+ return (_jsxs("div", { className: "absolute inset-0 flex flex-col bg-[#fcfcfc]", children: [!compact && (_jsx(PageHeader, { icon: _jsx(SecretAgentIcon, { size: 28, strokeWidth: 1.5 }), title: "AI Agents", description: "Build, run and orchestrate your AI workforce", variant: "compact", actions: newAgentButton })), _jsx("div", { className: "relative flex flex-1 flex-col overflow-hidden", children: viewMode === "create" ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "shrink-0 border-b border-gray-100 bg-white px-6 py-4", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("button", { type: "button", onClick: () => setViewMode("list"), className: "inline-flex items-center gap-1.5 rounded-md px-2 py-1.5 text-[13px] font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900", "data-testid": "agents-create-back-button", children: [_jsx(ArrowLeft, { className: "size-4", strokeWidth: 2 }), "Back"] }), _jsx("span", { className: "text-gray-300", children: "/" }), _jsx("h2", { className: "text-[15px] font-semibold tracking-tight text-gray-900", children: "New Agent" }), _jsx("p", { className: "ml-1 hidden text-[12px] text-gray-500 sm:inline", children: "Pick a profile to start with" })] }) }), _jsx("div", { className: "relative flex-1 overflow-y-auto bg-white", children: _jsx(CreateAgentView, { onCreateAgent: handleCreateAgent }) })] })) : (_jsxs(_Fragment, { children: [compact && newAgentButton && (_jsx("div", { className: "flex shrink-0 items-center justify-end border-b border-gray-100 bg-white px-6 py-3", children: newAgentButton })), _jsx("div", { className: "shrink-0 border-b border-gray-100 bg-white px-4 py-1.5", children: _jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center", children: [_jsx("div", { className: "min-w-0 flex-1", children: _jsx(FilterInput, { value: searchTerm, onChange: setSearchTerm, placeholder: "Search agents\u2026", loading: loading && !initialLoad, size: "md", className: "border-gray-200" }) }), _jsxs("div", { className: "flex items-center gap-2", children: [profileGroups.length > 0 && (_jsxs("div", { className: "flex h-8 items-center rounded-md border border-gray-200 p-0.5", children: [_jsx("button", { onClick: () => setHistoryViewMode("grouped"), className: cn("flex size-6 items-center justify-center rounded transition-colors", historyViewMode === "grouped"
389
+ ? "bg-gray-100 text-gray-900"
390
+ : "text-gray-500 hover:text-gray-900"), title: "Grouped by profile", "aria-label": "Grouped by profile", children: _jsx(Layers, { className: "size-3.5", strokeWidth: 2 }) }), _jsx("button", { onClick: () => setHistoryViewMode("flat"), className: cn("flex size-6 items-center justify-center rounded transition-colors", historyViewMode === "flat"
391
+ ? "bg-gray-100 text-gray-900"
392
+ : "text-gray-500 hover:text-gray-900"), title: "Grouped by date", "aria-label": "Grouped by date", children: _jsx(List, { className: "size-3.5", strokeWidth: 2 }) })] })), _jsxs("label", { className: "flex h-8 cursor-pointer items-center gap-2 rounded-md px-2 text-[12px] font-medium text-gray-600 transition-colors hover:text-gray-900", children: [_jsx(Switch, { checked: showOnlyMyAgents, onCheckedChange: (checked) => setShowOnlyMyAgents(checked === true) }), _jsx("span", { className: "select-none", children: "My agents" })] })] })] }) }), _jsxs("div", { className: "relative flex-1 overflow-y-auto", children: [loading && !initialLoad && (_jsx("div", { className: "absolute top-2 left-1/2 z-10 -translate-x-1/2 rounded-md bg-white px-3 py-1.5 shadow-md", children: _jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-600", children: [_jsx(RefreshCw, { className: "size-3 animate-spin", strokeWidth: 1 }), _jsx("span", { children: "Loading..." })] }) })), error ? (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mb-4 text-sm text-red-600", children: error }), _jsx("button", { onClick: handleRefresh, className: "rounded bg-blue-500 px-4 py-2 text-xs text-white hover:bg-blue-600", children: "Retry" })] }) })) : totalActiveCount === 0 &&
393
+ totalClosedCount === 0 &&
394
+ !loading ? (_jsx("div", { className: "flex h-full items-center justify-center text-sm text-gray-500", children: searchTerm.trim()
395
+ ? "No agents match your search"
396
+ : "No agents found" })) : (_jsxs("div", { className: cn("space-y-4 p-4", loading && "opacity-60"), children: [activeAgents.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-700", children: "Active Agents" }), _jsx("div", { className: "divide-y divide-gray-100 overflow-hidden rounded-lg border border-gray-100 bg-white", children: sortedActiveAgents.map((agent) => (_jsx(AgentCard, { agent: agent, onClick: handleAgentClick, onResume: handleOpenAgent, onClose: handleCloseAgent, onDelete: handleDeleteAgent, formatDateTime: formatDateTime, selected: selectedAgentId === agent.id }, agent.id))) })] })), profileGroups.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-700", children: "History" }), historyViewMode === "grouped" ? (_jsx("div", { className: "divide-y divide-gray-100 overflow-hidden rounded-lg border border-gray-100 bg-white", children: profileGroups.map((profileGroup) => {
571
397
  const profileKey = profileGroup.profileId || "null";
572
398
  const isExpanded = expandedProfiles.has(profileKey);
573
399
  const isLoadingMore = loadingMoreForProfile === profileGroup.profileId;
574
400
  const hasMore = profileGroup.agents.length <
575
401
  profileGroup.totalClosedCount;
576
402
  return (_jsx(ProfileAgentsGroup, { profileGroup: profileGroup, isExpanded: isExpanded, isLoadingMore: isLoadingMore, hasMore: hasMore, onToggle: () => handleToggleProfile(profileGroup.profileId), onLoadMore: () => handleLoadMoreForProfile(profileGroup.profileId), onAgentClick: handleAgentClick, onResumeAgent: handleOpenAgent, onCloseAgent: handleCloseAgent, onDeleteAgent: handleDeleteAgent, formatDateTime: formatDateTime, selectedAgentId: selectedAgentId }, profileKey));
577
- })) : (
578
- // Flat list view (newest first)
579
- _jsx("div", { className: "space-y-3", children: flatClosedAgents.map((agent) => (_jsx(AgentCard, { agent: agent, onClick: handleAgentClick, onResume: handleOpenAgent, onClose: handleCloseAgent, onDelete: handleDeleteAgent, formatDateTime: formatDateTime, selected: selectedAgentId === agent.id }, agent.id))) }))] }))] }))] })] })), activeTabIndex === 2 && (_jsx("div", { className: "absolute inset-0 overflow-y-auto bg-white p-2", children: _jsx(CreateAgentView, { onCreateAgent: handleCreateAgent }) }))] })] }));
403
+ }) })) : (_jsx("div", { className: "space-y-3", children: dateBuckets.map((bucket) => (_jsx(DateAgentsGroup, { bucketKey: bucket.key, label: bucket.label, agents: bucket.agents, isExpanded: !collapsedDateBuckets.has(bucket.key), onToggle: () => handleToggleDateBucket(bucket.key), onAgentClick: handleAgentClick, onResumeAgent: handleOpenAgent, onCloseAgent: handleCloseAgent, onDeleteAgent: handleDeleteAgent, formatDateTime: formatDateTime, selectedAgentId: selectedAgentId }, bucket.key))) }))] }))] }))] })] })) })] }));
580
404
  }
581
405
  //# sourceMappingURL=AgentsView.js.map