@parhelia/core 0.1.12025 → 0.1.12045

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 (231) hide show
  1. package/dist/agents-view/AgentCard.d.ts +6 -4
  2. package/dist/agents-view/AgentCard.js +97 -10
  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 +7 -81
  6. package/dist/agents-view/AgentsInbox.js.map +1 -1
  7. package/dist/agents-view/AgentsView.d.ts +6 -7
  8. package/dist/agents-view/AgentsView.js +64 -26
  9. package/dist/agents-view/AgentsView.js.map +1 -1
  10. package/dist/agents-view/AgentsWorkspaceView.d.ts +2 -6
  11. package/dist/agents-view/AgentsWorkspaceView.js +242 -112
  12. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  13. package/dist/agents-view/ProfileAgentsGroup.d.ts +2 -1
  14. package/dist/agents-view/ProfileAgentsGroup.js +2 -2
  15. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  16. package/dist/components/FilterInput.d.ts +1 -1
  17. package/dist/components/FilterInput.js +1 -1
  18. package/dist/components/FilterInput.js.map +1 -1
  19. package/dist/components/ui/LanguageSelector.js +1 -1
  20. package/dist/components/ui/LanguageSelector.js.map +1 -1
  21. package/dist/components/ui/alert-dialog.d.ts +1 -1
  22. package/dist/components/ui/alert-dialog.js +6 -10
  23. package/dist/components/ui/alert-dialog.js.map +1 -1
  24. package/dist/components/ui/button.d.ts +2 -2
  25. package/dist/components/ui/button.js +3 -1
  26. package/dist/components/ui/button.js.map +1 -1
  27. package/dist/components/ui/dialog.d.ts +1 -1
  28. package/dist/components/ui/dialog.js +8 -129
  29. package/dist/components/ui/dialog.js.map +1 -1
  30. package/dist/components/ui/popover.js +1 -9
  31. package/dist/components/ui/popover.js.map +1 -1
  32. package/dist/components/ui/portal-container-context.d.ts +3 -0
  33. package/dist/components/ui/portal-container-context.js +23 -0
  34. package/dist/components/ui/portal-container-context.js.map +1 -0
  35. package/dist/components/ui/select.js +1 -1
  36. package/dist/components/ui/select.js.map +1 -1
  37. package/dist/components/ui/styled-dialog-title.js +1 -1
  38. package/dist/components/ui/styled-dialog-title.js.map +1 -1
  39. package/dist/config/config.js +14 -10
  40. package/dist/config/config.js.map +1 -1
  41. package/dist/editor/ContentTree.js +10 -3
  42. package/dist/editor/ContentTree.js.map +1 -1
  43. package/dist/editor/FieldListField.js +1 -1
  44. package/dist/editor/FieldListField.js.map +1 -1
  45. package/dist/editor/GlobalMenuBar.js +1 -1
  46. package/dist/editor/GlobalMenuBar.js.map +1 -1
  47. package/dist/editor/MainLayout.js +1 -2
  48. package/dist/editor/MainLayout.js.map +1 -1
  49. package/dist/editor/MigrationsView.js +29 -5
  50. package/dist/editor/MigrationsView.js.map +1 -1
  51. package/dist/editor/MobileLayout.js +37 -12
  52. package/dist/editor/MobileLayout.js.map +1 -1
  53. package/dist/editor/Titlebar.js +6 -1
  54. package/dist/editor/Titlebar.js.map +1 -1
  55. package/dist/editor/ai/AgentStatusBadge.d.ts +1 -1
  56. package/dist/editor/ai/AgentStatusBadge.js +18 -2
  57. package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
  58. package/dist/editor/ai/AgentTerminal.js +320 -69
  59. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  60. package/dist/editor/ai/AgentTerminalStatusBar.d.ts +2 -1
  61. package/dist/editor/ai/AgentTerminalStatusBar.js +8 -5
  62. package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
  63. package/dist/editor/ai/AiResponseMessage.js +46 -4
  64. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  65. package/dist/editor/ai/ContextInfoBar.js +148 -5
  66. package/dist/editor/ai/ContextInfoBar.js.map +1 -1
  67. package/dist/editor/ai/InlineAiDialog.js +516 -174
  68. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  69. package/dist/editor/ai/InlineAiTrigger.js +15 -4
  70. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  71. package/dist/editor/ai/ManualPanel.d.ts +5 -0
  72. package/dist/editor/ai/ManualPanel.js +16 -0
  73. package/dist/editor/ai/ManualPanel.js.map +1 -0
  74. package/dist/editor/ai/dialogs/AgentDialogHandler.js +184 -23
  75. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  76. package/dist/editor/ai/dialogs/QuestionnaireInline.js +119 -22
  77. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  78. package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +26 -0
  79. package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
  80. package/dist/editor/ai/useAgentStatus.d.ts +1 -0
  81. package/dist/editor/ai/useAgentStatus.js +74 -29
  82. package/dist/editor/ai/useAgentStatus.js.map +1 -1
  83. package/dist/editor/client/EditorShell.js +183 -11
  84. package/dist/editor/client/EditorShell.js.map +1 -1
  85. package/dist/editor/client/editContext.d.ts +4 -0
  86. package/dist/editor/client/editContext.js.map +1 -1
  87. package/dist/editor/client/helpers.js +6 -0
  88. package/dist/editor/client/helpers.js.map +1 -1
  89. package/dist/editor/client/hooks/useEditorWebSocket.d.ts +1 -0
  90. package/dist/editor/client/hooks/useEditorWebSocket.js +10 -1
  91. package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
  92. package/dist/editor/client/hooks/useQuota.d.ts +7 -0
  93. package/dist/editor/client/hooks/useQuota.js.map +1 -1
  94. package/dist/editor/client/hooks/useSocketMessageHandler.js +19 -1
  95. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  96. package/dist/editor/client/operations.d.ts +1 -1
  97. package/dist/editor/client/operations.js +75 -8
  98. package/dist/editor/client/operations.js.map +1 -1
  99. package/dist/editor/client/pageModelBuilder.js +3 -30
  100. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  101. package/dist/editor/client/ui/EditorChrome.js +51 -56
  102. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  103. package/dist/editor/commands/componentCommands.js +106 -6
  104. package/dist/editor/commands/componentCommands.js.map +1 -1
  105. package/dist/editor/commands/itemCommands.d.ts +1 -0
  106. package/dist/editor/commands/itemCommands.js +28 -1
  107. package/dist/editor/commands/itemCommands.js.map +1 -1
  108. package/dist/editor/media-selector/MediaSelector.js +7 -1
  109. package/dist/editor/media-selector/MediaSelector.js.map +1 -1
  110. package/dist/editor/media-selector/TreeSelector.js +37 -31
  111. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  112. package/dist/editor/menubar/ActiveUsers.js +1 -1
  113. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  114. package/dist/editor/menubar/ItemLanguageVersion.d.ts +3 -1
  115. package/dist/editor/menubar/ItemLanguageVersion.js +12 -5
  116. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  117. package/dist/editor/menubar/PageSelector.js +17 -133
  118. package/dist/editor/menubar/PageSelector.js.map +1 -1
  119. package/dist/editor/menubar/VersionSelector.js +1 -1
  120. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  121. package/dist/editor/menubar/WorkflowButton.js +31 -4
  122. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  123. package/dist/editor/menubar/toolbar-sections/HelpButton.js +1 -0
  124. package/dist/editor/menubar/toolbar-sections/HelpButton.js.map +1 -1
  125. package/dist/editor/menubar/toolbar-sections/ManualBrowser.d.ts +3 -1
  126. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +231 -59
  127. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  128. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +1 -1
  129. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  130. package/dist/editor/page-editor-chrome/InlineEditor.js +9 -3
  131. package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
  132. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +27 -6
  133. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  134. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +17 -11
  135. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  136. package/dist/editor/page-viewer/EditorForm.js +50 -8
  137. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  138. package/dist/editor/page-viewer/MiniMap.js +1 -1
  139. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  140. package/dist/editor/page-viewer/PageViewerFrame.js +234 -100
  141. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  142. package/dist/editor/pageModel.d.ts +2 -1
  143. package/dist/editor/reviews/CreateReviewDialog.js +260 -173
  144. package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
  145. package/dist/editor/reviews/DecisionsMatrix.js +96 -25
  146. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  147. package/dist/editor/reviews/MultiReviewManager.js +25 -3
  148. package/dist/editor/reviews/MultiReviewManager.js.map +1 -1
  149. package/dist/editor/reviews/PagesPanel.js +31 -15
  150. package/dist/editor/reviews/PagesPanel.js.map +1 -1
  151. package/dist/editor/reviews/ReviewCard.js +13 -7
  152. package/dist/editor/reviews/ReviewCard.js.map +1 -1
  153. package/dist/editor/reviews/ReviewDetail.js +2 -2
  154. package/dist/editor/reviews/ReviewDetail.js.map +1 -1
  155. package/dist/editor/reviews/ReviewsList.js +7 -3
  156. package/dist/editor/reviews/ReviewsList.js.map +1 -1
  157. package/dist/editor/services/agentService.d.ts +15 -1
  158. package/dist/editor/services/agentService.js +36 -2
  159. package/dist/editor/services/agentService.js.map +1 -1
  160. package/dist/editor/services/aiService.d.ts +41 -1
  161. package/dist/editor/services/aiService.js +12 -2
  162. package/dist/editor/services/aiService.js.map +1 -1
  163. package/dist/editor/services/editService.d.ts +4 -0
  164. package/dist/editor/services/editService.js +5 -0
  165. package/dist/editor/services/editService.js.map +1 -1
  166. package/dist/editor/services/serviceHelper.d.ts +2 -1
  167. package/dist/editor/services/serviceHelper.js +12 -1
  168. package/dist/editor/services/serviceHelper.js.map +1 -1
  169. package/dist/editor/settings/About.js +1 -1
  170. package/dist/editor/settings/About.js.map +1 -1
  171. package/dist/editor/settings/QuotaInfo.js +202 -4
  172. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  173. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +1 -1
  174. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +1 -1
  175. package/dist/editor/settings/status/coreStatusChecks.js +82 -6
  176. package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
  177. package/dist/editor/settings/status/useStartupChecks.js +2 -1
  178. package/dist/editor/settings/status/useStartupChecks.js.map +1 -1
  179. package/dist/editor/sidebar/ComponentTree.js +19 -6
  180. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  181. package/dist/editor/sidebar/MorePanelsButton.js +9 -3
  182. package/dist/editor/sidebar/MorePanelsButton.js.map +1 -1
  183. package/dist/editor/sidebar/SidebarPanel.js +2 -2
  184. package/dist/editor/sidebar/SidebarPanel.js.map +1 -1
  185. package/dist/editor/sidebar/WorkspaceRail.d.ts +0 -1
  186. package/dist/editor/sidebar/WorkspaceRail.js +56 -168
  187. package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
  188. package/dist/editor/tree-indicators/GutterSelector.js +1 -1
  189. package/dist/editor/tree-indicators/GutterSelector.js.map +1 -1
  190. package/dist/editor/ui/ItemNameDialogNew.js +1 -1
  191. package/dist/editor/ui/SharedFolderSelectorDialog.js +18 -2
  192. package/dist/editor/ui/SharedFolderSelectorDialog.js.map +1 -1
  193. package/dist/editor/ui/SimpleIconButton.js +1 -1
  194. package/dist/editor/ui/SimpleIconButton.js.map +1 -1
  195. package/dist/editor/ui/Splitter.js +4 -2
  196. package/dist/editor/ui/Splitter.js.map +1 -1
  197. package/dist/editor/ui/TreeListSelector.d.ts +2 -1
  198. package/dist/editor/ui/TreeListSelector.js +2 -2
  199. package/dist/editor/ui/TreeListSelector.js.map +1 -1
  200. package/dist/editor/views/EditorSlot.js +7 -8
  201. package/dist/editor/views/EditorSlot.js.map +1 -1
  202. package/dist/editor/views/SingleEditView.js +1 -1
  203. package/dist/editor/views/SingleEditView.js.map +1 -1
  204. package/dist/editor/views/editorSlotContext.js.map +1 -1
  205. package/dist/revision.d.ts +2 -2
  206. package/dist/revision.js +2 -2
  207. package/dist/setup/wizard/steps/ImportModelDialog.js +24 -22
  208. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
  209. package/dist/splash-screen/ParheliaAssistantChat.js +2 -2
  210. package/dist/splash-screen/ParheliaAssistantChat.js.map +1 -1
  211. package/dist/splash-screen/RecentPages.js +1 -1
  212. package/dist/splash-screen/RecentPages.js.map +1 -1
  213. package/dist/task-board/TaskBoardWorkspace.js +26 -5
  214. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  215. package/dist/task-board/components/ProjectSelector.d.ts +19 -0
  216. package/dist/task-board/components/ProjectSelector.js +51 -0
  217. package/dist/task-board/components/ProjectSelector.js.map +1 -0
  218. package/dist/task-board/components/TaskBoardTitlebar.js +9 -50
  219. package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
  220. package/dist/task-board/components/TaskDetailPanel.js +126 -6
  221. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  222. package/dist/task-board/index.d.ts +2 -3
  223. package/dist/task-board/index.js +1 -2
  224. package/dist/task-board/index.js.map +1 -1
  225. package/dist/task-board/services/taskService.d.ts +6 -1
  226. package/dist/task-board/services/taskService.js +47 -2
  227. package/dist/task-board/services/taskService.js.map +1 -1
  228. package/dist/task-board/taskBoardNavStore.d.ts +4 -0
  229. package/dist/task-board/taskBoardNavStore.js +3 -0
  230. package/dist/task-board/taskBoardNavStore.js.map +1 -1
  231. package/package.json +1 -1
@@ -3,12 +3,14 @@ import { Agent } from "../editor/services/agentService";
3
3
  interface AgentCardProps {
4
4
  agent: Agent;
5
5
  onClick: (agent: Agent) => void;
6
- onResume: (agent: Agent) => void;
7
- onClose: (agentId: string, agentName: string) => void;
8
- onDelete: (agentId: string, agentName: string, event: React.MouseEvent) => void;
6
+ onResume?: (agent: Agent) => void;
7
+ onClose?: (agentId: string, agentName: string) => void;
8
+ onDelete?: (agentId: string, agentName: string, event: React.MouseEvent) => void;
9
+ onDismiss?: (agentId: string, agentName: string) => void;
9
10
  formatDateTime: (dateString: string) => string;
10
11
  /** Whether this card is selected */
11
12
  selected?: boolean;
12
13
  }
13
- export declare function AgentCard({ agent, onClick, onResume, onClose, onDelete, formatDateTime, selected, }: AgentCardProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function getInboxAttentionPriority(agent: Agent): number;
15
+ export declare function AgentCard({ agent, onClick, onResume, onClose, onDelete, onDismiss, formatDateTime, selected, }: AgentCardProps): import("react/jsx-runtime").JSX.Element;
14
16
  export {};
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { getAgentStatusConfig } from "../editor/ai/AgentStatusBadge";
3
3
  import { cn } from "../lib/utils";
4
- import { Trash, X, Play, Users, AlertCircle, Clock, DollarSign, MessageSquare, } from "lucide-react";
4
+ import { Trash, X, Play, Users, AlertCircle, Clock, DollarSign, MessageSquare, HelpCircle, } from "lucide-react";
5
5
  import { SimpleIconButton } from "../editor/ui/SimpleIconButton";
6
6
  import { SecretAgentIcon } from "../editor/ui/Icons";
7
7
  /**
@@ -38,12 +38,97 @@ function getAttentionIndicator(agent) {
38
38
  }
39
39
  return null;
40
40
  }
41
- export function AgentCard({ agent, onClick, onResume, onClose, onDelete, formatDateTime, selected = false, }) {
41
+ function getInboxAttentionInfo(agent) {
42
+ const status = agent.status;
43
+ if (status === "waitingForApproval" || status === 2) {
44
+ return {
45
+ priority: 1,
46
+ };
47
+ }
48
+ if (status === "waitingForInput" || status === 8) {
49
+ return {
50
+ priority: 0,
51
+ };
52
+ }
53
+ if (status === "costLimitReached" || status === 7) {
54
+ return {
55
+ priority: 2,
56
+ };
57
+ }
58
+ if (status === "error" || status === 4) {
59
+ return {
60
+ priority: 3,
61
+ };
62
+ }
63
+ if (status === "completed" || status === 3) {
64
+ return {
65
+ priority: 5,
66
+ };
67
+ }
68
+ return {
69
+ priority: 4,
70
+ };
71
+ }
72
+ export function getInboxAttentionPriority(agent) {
73
+ return getInboxAttentionInfo(agent).priority;
74
+ }
75
+ function getSelectedCardClass(agent) {
76
+ const status = agent.status;
77
+ if (status === "running" || status === 1) {
78
+ return "border-theme-secondary bg-theme-secondary/10 ring-2 ring-theme-secondary";
79
+ }
80
+ if (status === "waitingForApproval" || status === 2) {
81
+ return "border-amber-300 bg-amber-50/30 ring-2 ring-amber-500";
82
+ }
83
+ if (status === "waitingForInput" || status === 8) {
84
+ return "border-purple-300 bg-purple-50/30 ring-2 ring-purple-500";
85
+ }
86
+ if (status === "completed" || status === 3) {
87
+ return "border-green-300 bg-green-50/30 ring-2 ring-green-500";
88
+ }
89
+ if (status === "error" || status === 4) {
90
+ return "border-red-300 bg-red-50/30 ring-2 ring-red-500";
91
+ }
92
+ if (status === "costLimitReached" || status === 7) {
93
+ return "border-amber-300 bg-amber-50/30 ring-2 ring-amber-500";
94
+ }
95
+ if (status === "idle" || status === 6) {
96
+ return "border-amber-300 bg-amber-50/30 ring-2 ring-amber-500";
97
+ }
98
+ return "border-gray-300 bg-gray-50/50 ring-2 ring-gray-400";
99
+ }
100
+ export function AgentCard({ agent, onClick, onResume, onClose, onDelete, onDismiss, formatDateTime, selected = false, }) {
42
101
  const statusConfig = getAgentStatusConfig(agent);
43
102
  const isClosed = agent.status === "closed" || agent.status === 5;
44
- const attentionIndicator = getAttentionIndicator(agent);
103
+ const attentionIndicator = getAttentionIndicator(agent) ??
104
+ (agent.status === "waitingForInput" || agent.status === 8
105
+ ? {
106
+ show: true,
107
+ icon: _jsx(HelpCircle, { className: "size-3", strokeWidth: 2 }),
108
+ label: "Input Required",
109
+ colorClass: "bg-purple-50 text-purple-700 border-purple-100",
110
+ accentColor: "bg-purple-500",
111
+ }
112
+ : agent.status === "idle" || agent.status === 6
113
+ ? {
114
+ show: true,
115
+ icon: _jsx(MessageSquare, { className: "size-3", strokeWidth: 2 }),
116
+ label: "Awaiting Response",
117
+ colorClass: "bg-amber-50 text-amber-700 border-amber-100",
118
+ accentColor: "bg-amber-500",
119
+ }
120
+ : agent.status === "completed" || agent.status === 3
121
+ ? {
122
+ show: true,
123
+ icon: _jsx(MessageSquare, { className: "size-3", strokeWidth: 2 }),
124
+ label: "Ready",
125
+ colorClass: "bg-green-50 text-green-700 border-green-100",
126
+ accentColor: "bg-green-500",
127
+ }
128
+ : null);
129
+ const selectedClass = getSelectedCardClass(agent);
45
130
  const handleCardClick = () => {
46
- if (isClosed) {
131
+ if (isClosed && onResume) {
47
132
  onResume(agent);
48
133
  }
49
134
  else {
@@ -52,17 +137,19 @@ export function AgentCard({ agent, onClick, onResume, onClose, onDelete, formatD
52
137
  };
53
138
  return (_jsxs("div", { className: cn("group relative cursor-pointer overflow-hidden rounded-xl border bg-white p-4 transition-all hover:border-gray-300 hover:shadow-[0_4px_12px_rgba(0,0,0,0.05)]", attentionIndicator
54
139
  ? "border-gray-200"
55
- : "border-gray-100 shadow-[0_1px_2px_rgba(0,0,0,0.02)]", selected &&
56
- "border-emerald-300 bg-emerald-50/30 ring-2 ring-emerald-500"), onClick: handleCardClick, children: [attentionIndicator && (_jsx("div", { className: cn("absolute inset-y-0 left-0 w-1", attentionIndicator.accentColor) })), _jsxs("div", { className: "flex items-start justify-between", children: [_jsx("div", { className: "mr-4 shrink-0", children: _jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-gray-50 text-gray-400 ring-1 ring-gray-100 transition-colors group-hover:bg-gray-100", children: agent.profileSvgIcon ? (_jsx("div", { className: "h-6 w-6 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
140
+ : "border-gray-100 shadow-[0_1px_2px_rgba(0,0,0,0.02)]", selected && selectedClass), onClick: handleCardClick, children: [attentionIndicator && (_jsx("div", { className: cn("absolute inset-y-0 left-0 w-1", attentionIndicator.accentColor) })), _jsxs("div", { className: "flex items-start justify-between", children: [_jsx("div", { className: "mr-4 shrink-0", children: _jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-gray-50 text-gray-400 ring-1 ring-gray-100 transition-colors group-hover:bg-gray-100", children: agent.profileSvgIcon ? (_jsx("div", { className: "h-6 w-6 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
57
141
  __html: agent.profileSvgIcon,
58
142
  } })) : (_jsx(SecretAgentIcon, { size: 24, strokeWidth: 1.5, className: "text-gray-400" })) }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "mb-1 flex items-center gap-2", children: [_jsx("h4", { className: "truncate text-sm font-semibold tracking-tight text-gray-900", children: agent.name }), _jsx("div", { className: cn("h-1.5 w-1.5 shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label }), agent.isShared && (_jsx("div", { className: "flex items-center gap-1 rounded-full bg-blue-50/80 px-2 py-0.5 text-[10px] font-bold tracking-wider text-blue-600 uppercase ring-1 ring-blue-100 ring-inset", children: _jsx("span", { children: "Shared" }) }))] }), _jsxs("div", { className: "mb-1 font-mono text-[10px] text-gray-400", children: ["ID: ", agent.id] }), attentionIndicator && (_jsxs("div", { className: cn("mb-3 inline-flex items-center gap-1.5 rounded-md border px-2 py-0.5 text-[11px] font-semibold tracking-tight", attentionIndicator.colorClass), children: [attentionIndicator.icon, _jsx("span", { children: attentionIndicator.label })] })), agent.description ? (_jsx("p", { className: "mb-3 line-clamp-1 text-[13px] leading-relaxed text-gray-500", children: agent.description })) : (_jsx("div", { className: "mb-2" })), _jsxs("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1 text-[11px] font-medium text-gray-400", children: [agent.nextRunAt && (_jsxs("div", { className: "flex items-center gap-1 text-amber-600", children: [_jsx(Clock, { className: "size-3", strokeWidth: 2 }), _jsxs("span", { children: ["Wake: ", formatDateTime(agent.nextRunAt)] })] })), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Clock, { className: "size-3", strokeWidth: 2 }), _jsx("span", { children: agent.lastMessageDate
59
143
  ? formatDateTime(agent.lastMessageDate)
60
144
  : formatDateTime(agent.updatedDate) })] }), agent.isShared && agent.ownerName && (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Users, { className: "size-3", strokeWidth: 2 }), _jsxs("span", { children: ["By ", agent.ownerName] })] })), agent.messageCount !== undefined && agent.messageCount > 0 && (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx(MessageSquare, { className: "size-3", strokeWidth: 2 }), _jsxs("span", { children: [agent.messageCount, " msg"] })] })), agent.totalCost !== undefined && agent.totalCost > 0 && (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx(DollarSign, { className: "size-3", strokeWidth: 2 }), _jsxs("span", { children: ["$", agent.totalCost.toFixed(2)] })] }))] })] }), _jsxs("div", { className: "ml-4 flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100", children: [isClosed && (_jsx(SimpleIconButton, { onClick: (e) => {
61
145
  e.stopPropagation();
62
- onResume(agent);
63
- }, icon: _jsx(Play, { className: "size-4", strokeWidth: 2 }), label: "Resume Agent", className: "h-8 w-8 rounded-full bg-blue-50 text-blue-600 shadow-sm hover:bg-blue-100" })), !isClosed && (_jsx(SimpleIconButton, { onClick: (e) => {
146
+ onResume?.(agent);
147
+ }, icon: _jsx(Play, { className: "size-4", strokeWidth: 2 }), label: "Resume Agent", className: "h-8 w-8 rounded-full bg-blue-50 text-blue-600 shadow-sm hover:bg-blue-100" })), !isClosed && !onDismiss && (_jsx(SimpleIconButton, { onClick: (e) => {
148
+ e.stopPropagation();
149
+ onClose?.(agent.id, agent.name);
150
+ }, icon: _jsx(X, { className: "size-4", strokeWidth: 2 }), label: "Close Agent", className: "h-8 w-8 rounded-full bg-gray-50 text-gray-600 shadow-sm hover:bg-gray-100" })), onDismiss ? (_jsx(SimpleIconButton, { onClick: (e) => {
64
151
  e.stopPropagation();
65
- onClose(agent.id, agent.name);
66
- }, icon: _jsx(X, { className: "size-4", strokeWidth: 2 }), label: "Close Agent", className: "h-8 w-8 rounded-full bg-gray-50 text-gray-600 shadow-sm hover:bg-gray-100" })), _jsx(SimpleIconButton, { onClick: (e) => onDelete(agent.id, agent.name, e), icon: _jsx(Trash, { className: "size-4", strokeWidth: 2 }), label: "Delete Agent", className: "h-8 w-8 rounded-full bg-red-50 text-red-600 shadow-sm hover:bg-red-100" })] })] })] }, agent.id));
152
+ onDismiss(agent.id, agent.name);
153
+ }, icon: _jsx(X, { className: "size-4", strokeWidth: 2 }), label: "Dismiss", className: "h-8 w-8 rounded-full bg-gray-50 text-gray-600 shadow-sm hover:bg-gray-100" })) : (_jsx(SimpleIconButton, { onClick: (e) => onDelete?.(agent.id, agent.name, e), icon: _jsx(Trash, { className: "size-4", strokeWidth: 2 }), label: "Delete Agent", className: "h-8 w-8 rounded-full bg-red-50 text-red-600 shadow-sm hover:bg-red-100" }))] })] })] }, agent.id));
67
154
  }
68
155
  //# sourceMappingURL=AgentCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentCard.js","sourceRoot":"","sources":["../../src/agents-view/AgentCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentCard.js","sourceRoot":"","sources":["../../src/agents-view/AgentCard.tsx"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ interface AgentsInboxProps {
11
11
  }
12
12
  /**
13
13
  * Helper to check if an agent needs attention
14
- * Includes: waitingForApproval, costLimitReached, error, idle, completed (ready for next prompt)
14
+ * Includes: waitingForApproval, waitingForInput, costLimitReached, error, idle, completed (ready for next prompt)
15
15
  */
16
16
  export declare function agentNeedsAttention(agent: Agent): boolean;
17
17
  /**
@@ -1,17 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { getAgentStatusConfig } from "../editor/ai/AgentStatusBadge";
3
- import { cn } from "../lib/utils";
4
- import { AlertCircle, Clock, DollarSign, MessageSquare, X } from "lucide-react";
5
- import { SimpleIconButton } from "../editor/ui/SimpleIconButton";
6
- import { SecretAgentIcon } from "../editor/ui/Icons";
2
+ import { MessageSquare, X } from "lucide-react";
3
+ import { AgentCard, getInboxAttentionPriority } from "./AgentCard";
7
4
  /**
8
5
  * Helper to check if an agent needs attention
9
- * Includes: waitingForApproval, costLimitReached, error, idle, completed (ready for next prompt)
6
+ * Includes: waitingForApproval, waitingForInput, costLimitReached, error, idle, completed (ready for next prompt)
10
7
  */
11
8
  export function agentNeedsAttention(agent) {
12
9
  const status = agent.status;
13
10
  return (status === "waitingForApproval" ||
14
11
  status === 2 ||
12
+ status === "waitingForInput" ||
13
+ status === 8 ||
15
14
  status === "costLimitReached" ||
16
15
  status === 7 ||
17
16
  status === "error" ||
@@ -21,66 +20,6 @@ export function agentNeedsAttention(agent) {
21
20
  status === "completed" ||
22
21
  status === 3);
23
22
  }
24
- /**
25
- * Get attention-specific info for display
26
- */
27
- function getAttentionInfo(agent) {
28
- const status = agent.status;
29
- if (status === "waitingForApproval" || status === 2) {
30
- return {
31
- icon: _jsx(Clock, { className: "size-4", strokeWidth: 2 }),
32
- label: "Needs Approval",
33
- description: "Waiting for you to approve an action",
34
- priority: 1,
35
- accentColor: "bg-amber-500",
36
- badgeClass: "text-amber-700 bg-amber-50 ring-1 ring-amber-100",
37
- bgColor: "bg-white",
38
- };
39
- }
40
- if (status === "costLimitReached" || status === 7) {
41
- return {
42
- icon: _jsx(DollarSign, { className: "size-4", strokeWidth: 2 }),
43
- label: "Budget Exceeded",
44
- description: "Cost limit reached - extend to continue",
45
- priority: 2,
46
- accentColor: "bg-orange-500",
47
- badgeClass: "text-orange-700 bg-orange-50 ring-1 ring-orange-100",
48
- bgColor: "bg-white",
49
- };
50
- }
51
- if (status === "error" || status === 4) {
52
- return {
53
- icon: _jsx(AlertCircle, { className: "size-4", strokeWidth: 2 }),
54
- label: "Error",
55
- description: agent.statusMessage || "An error occurred",
56
- priority: 3,
57
- accentColor: "bg-red-500",
58
- badgeClass: "text-red-700 bg-red-50 ring-1 ring-red-100",
59
- bgColor: "bg-white",
60
- };
61
- }
62
- if (status === "completed" || status === 3) {
63
- return {
64
- icon: _jsx(MessageSquare, { className: "size-4", strokeWidth: 2 }),
65
- label: "Ready",
66
- description: "Finished - ready for your next message",
67
- priority: 5,
68
- accentColor: "bg-green-500",
69
- badgeClass: "text-green-700 bg-green-50 ring-1 ring-green-100",
70
- bgColor: "bg-white",
71
- };
72
- }
73
- // idle
74
- return {
75
- icon: _jsx(MessageSquare, { className: "size-4", strokeWidth: 2 }),
76
- label: "Awaiting Response",
77
- description: "Waiting for your input",
78
- priority: 4,
79
- accentColor: "bg-gray-400",
80
- badgeClass: "text-gray-600 bg-gray-50 ring-1 ring-gray-100",
81
- bgColor: "bg-white",
82
- };
83
- }
84
23
  /**
85
24
  * Inbox view showing agents that need user attention.
86
25
  * Displays agents with statuses: waitingForApproval, costLimitReached, error, idle
@@ -89,26 +28,13 @@ export function AgentsInbox({ agents, onOpenAgent, onDismissAgent, onCloseAll, f
89
28
  // Filter and sort agents by priority
90
29
  const inboxAgents = agents
91
30
  .filter(agentNeedsAttention)
92
- .map((agent) => ({
93
- agent,
94
- ...getAttentionInfo(agent),
95
- }))
96
- .sort((a, b) => a.priority - b.priority);
31
+ .sort((a, b) => getInboxAttentionPriority(a) - getInboxAttentionPriority(b));
97
32
  if (loading) {
98
33
  return (_jsx("div", { className: "flex h-64 items-center justify-center", children: _jsx("div", { className: "text-sm text-gray-500", children: "Loading..." }) }));
99
34
  }
100
35
  if (inboxAgents.length === 0) {
101
36
  return (_jsxs("div", { className: "flex h-[400px] flex-col items-center justify-center p-6 text-center", children: [_jsxs("div", { className: "relative mb-6", children: [_jsx("div", { className: "absolute inset-0 scale-150 rounded-full bg-green-400 opacity-20 blur-3xl" }), _jsx("div", { className: "relative flex h-20 w-20 items-center justify-center rounded-full bg-green-50 shadow-[0_0_40px_rgba(74,222,128,0.15)] ring-1 ring-green-100", children: _jsx(MessageSquare, { className: "size-10 text-green-500", strokeWidth: 1 }) })] }), _jsx("h3", { className: "mb-2 text-xl font-bold tracking-tight text-gray-900", children: "All caught up!" }), _jsx("p", { className: "max-w-[240px] text-[15px] leading-relaxed text-gray-500", children: "No agents need your attention right now. You're doing great!" })] }));
102
37
  }
103
- return (_jsxs("div", { className: "flex flex-col gap-6 p-6", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-lg font-semibold tracking-tight text-gray-900", children: "Action Required" }), _jsxs("p", { className: "text-[13px] text-gray-500", children: [inboxAgents.length, " agent", inboxAgents.length !== 1 ? "s" : "", " need attention"] })] }), onCloseAll && inboxAgents.length > 1 && (_jsxs("button", { onClick: onCloseAll, className: "flex items-center gap-2 rounded-full border border-gray-200 bg-white px-3 py-1.5 text-xs font-medium text-gray-600 transition-all hover:bg-gray-50 hover:text-gray-900", children: [_jsx(X, { className: "size-3.5", strokeWidth: 2 }), "Close All"] }))] }), _jsx("div", { className: "grid gap-4", children: inboxAgents.map(({ agent, icon, label, description, accentColor, badgeClass, bgColor, }) => {
104
- const statusConfig = getAgentStatusConfig(agent);
105
- return (_jsxs("div", { className: cn("group relative cursor-pointer overflow-hidden rounded-xl border border-gray-100 p-5 transition-all hover:border-gray-200 hover:shadow-[0_4px_20px_rgba(0,0,0,0.04)]", bgColor, selectedAgentId === agent.id &&
106
- "border-emerald-300 bg-emerald-50/30 ring-2 ring-emerald-500"), onClick: () => onOpenAgent(agent), children: [_jsx("div", { className: cn("absolute inset-y-0 left-0 w-1", accentColor) }), _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-xl bg-gray-50 text-gray-500 ring-1 ring-gray-100 transition-colors group-hover:bg-gray-100", children: agent.profileSvgIcon ? (_jsx("div", { className: "h-7 w-7 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
107
- __html: agent.profileSvgIcon,
108
- } })) : (_jsx(SecretAgentIcon, { size: 32, strokeWidth: 1.5, className: "text-gray-400" })) }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx("h4", { className: "truncate text-[15px] font-semibold tracking-tight text-gray-900", children: agent.name }), _jsx("div", { className: cn("h-1.5 w-1.5 flex-shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse") })] }), _jsxs("div", { className: "mb-3 flex flex-wrap items-center gap-2", children: [_jsxs("div", { className: cn("inline-flex items-center gap-1.5 rounded-md px-2 py-0.5 text-[11px] font-bold tracking-tight uppercase", badgeClass), children: [icon, _jsx("span", { children: label })] }), _jsx("span", { className: "text-[13px] text-gray-600", children: description })] }), _jsx("div", { className: "flex items-center gap-4 text-[11px] font-medium text-gray-400", children: _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Clock, { className: "size-3", strokeWidth: 2 }), _jsx("span", { children: formatDateTime(agent.updatedDate) })] }) })] }), _jsx("div", { className: "flex shrink-0 self-center opacity-0 transition-opacity group-hover:opacity-100", children: _jsx(SimpleIconButton, { onClick: (e) => {
109
- e.stopPropagation();
110
- onDismissAgent(agent.id, agent.name);
111
- }, icon: _jsx(X, { className: "size-4", strokeWidth: 2 }), label: "Dismiss", className: "h-9 w-9 rounded-full bg-gray-50 text-gray-500 shadow-sm hover:bg-gray-100 hover:text-gray-900" }) })] })] }, agent.id));
112
- }) })] }));
38
+ return (_jsxs("div", { className: "flex flex-col gap-6 p-6", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-lg font-semibold tracking-tight text-gray-900", children: "Action Required" }), _jsxs("p", { className: "text-[13px] text-gray-500", children: [inboxAgents.length, " agent", inboxAgents.length !== 1 ? "s" : "", " need attention"] })] }), onCloseAll && inboxAgents.length > 1 && (_jsxs("button", { onClick: onCloseAll, className: "flex items-center gap-2 rounded-full border border-gray-200 bg-white px-3 py-1.5 text-xs font-medium text-gray-600 transition-all hover:bg-gray-50 hover:text-gray-900", children: [_jsx(X, { className: "size-3.5", strokeWidth: 2 }), "Close All"] }))] }), _jsx("div", { className: "grid gap-4", children: inboxAgents.map((agent) => (_jsx(AgentCard, { agent: agent, onClick: onOpenAgent, onDismiss: onDismissAgent, formatDateTime: formatDateTime, selected: selectedAgentId === agent.id }, agent.id))) })] }));
113
39
  }
114
40
  //# sourceMappingURL=AgentsInbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentsInbox.js","sourceRoot":"","sources":["../../src/agents-view/AgentsInbox.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentsInbox.js","sourceRoot":"","sources":["../../src/agents-view/AgentsInbox.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAanE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAY;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,CACL,MAAM,KAAK,oBAAoB;QAC/B,MAAM,KAAK,CAAC;QACZ,MAAM,KAAK,iBAAiB;QAC5B,MAAM,KAAK,CAAC;QACZ,MAAM,KAAK,kBAAkB;QAC7B,MAAM,KAAK,CAAC;QACZ,MAAM,KAAK,OAAO;QAClB,MAAM,KAAK,CAAC;QACZ,MAAM,KAAK,MAAM;QACjB,MAAM,KAAK,CAAC;QACZ,MAAM,KAAK,WAAW;QACtB,MAAM,KAAK,CAAC,CACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,WAAW,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,OAAO,EACP,eAAe,GACE;IACjB,qCAAqC;IACrC,MAAM,WAAW,GAAG,MAAM;SACvB,MAAM,CAAC,mBAAmB,CAAC;SAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/E,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,cAAK,SAAS,EAAC,uCAAuC,YACpD,cAAK,SAAS,EAAC,uBAAuB,2BAAiB,GACnD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CACL,eAAK,SAAS,EAAC,qEAAqE,aAClF,eAAK,SAAS,EAAC,eAAe,aAC5B,cAAK,SAAS,EAAC,0EAA0E,GAAG,EAC5F,cAAK,SAAS,EAAC,4IAA4I,YACzJ,KAAC,aAAa,IAAC,SAAS,EAAC,wBAAwB,EAAC,WAAW,EAAE,CAAC,GAAI,GAChE,IACF,EACN,aAAI,SAAS,EAAC,qDAAqD,+BAE9D,EACL,YAAG,SAAS,EAAC,yDAAyD,6EAElE,IACA,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAK,SAAS,EAAC,mCAAmC,aAChD,0BACE,aAAI,SAAS,EAAC,oDAAoD,gCAE7D,EACL,aAAG,SAAS,EAAC,2BAA2B,aACrC,WAAW,CAAC,MAAM,YAAQ,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,uBAE5D,IACA,EACL,UAAU,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CACvC,kBACE,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,wKAAwK,aAElL,KAAC,CAAC,IAAC,SAAS,EAAC,UAAU,EAAC,WAAW,EAAE,CAAC,GAAI,iBAEnC,CACV,IACG,EAEN,cAAK,SAAS,EAAC,YAAY,YACxB,WAAW,CAAC,GAAG,CACd,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,KAAC,SAAS,IAER,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,KAAK,KAAK,CAAC,EAAE,IALjC,KAAK,CAAC,EAAE,CAMb,CACH,CACF,GACG,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Agent } from "../editor/services/agentService";
2
+ export type AgentsViewSection = "inbox" | "all" | "create";
2
3
  /**
3
4
  * Props for AgentsView component
4
5
  */
@@ -9,12 +10,10 @@ interface AgentsViewProps {
9
10
  selectedAgentId?: string;
10
11
  /** Whether to show a compact version without the header */
11
12
  compact?: boolean;
13
+ /** When set, section is controlled by parent (e.g. AgentsWorkspaceView sidebar); no internal tab bar */
14
+ activeSection?: AgentsViewSection;
15
+ /** Called when inbox count changes (for sidebar badge) */
16
+ onInboxCountChange?: (count: number) => void;
12
17
  }
13
- /**
14
- * Agents overview view with tab-based navigation:
15
- * - Inbox: Agents requiring user attention
16
- * - All Agents: Active and closed agents with search/filter
17
- * - Create New: Profile selection to start a new agent
18
- */
19
- export declare function AgentsView({ onSelectAgent, selectedAgentId, compact, }?: AgentsViewProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function AgentsView({ onSelectAgent, selectedAgentId, compact, activeSection: controlledSection, onInboxCountChange, }?: AgentsViewProps): import("react/jsx-runtime").JSX.Element;
20
19
  export {};
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect, useCallback, useMemo } from "react";
2
+ import { useState, useEffect, useMemo, useCallback } from "react";
3
3
  import { getAgentsGrouped, getClosedAgentsByProfile, closeAgent, deleteAgent, } from "../editor/services/agentService";
4
4
  import { cn } from "../lib/utils";
5
5
  import { RefreshCw, List, Layers } from "lucide-react";
@@ -21,9 +21,26 @@ import { Spinner } from "../editor/ui/Spinner";
21
21
  * - All Agents: Active and closed agents with search/filter
22
22
  * - Create New: Profile selection to start a new agent
23
23
  */
24
- export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, } = {}) {
24
+ const SECTION_TO_INDEX = {
25
+ inbox: 0,
26
+ all: 1,
27
+ create: 2,
28
+ };
29
+ const SECTION_LABELS = {
30
+ inbox: "Inbox",
31
+ all: "All Agents",
32
+ create: "Create New",
33
+ };
34
+ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, activeSection: controlledSection, onInboxCountChange, } = {}) {
25
35
  const editContext = useEditContext();
26
- const [activeTabIndex, setActiveTabIndex] = useState(0);
36
+ const [internalTabIndex, setInternalTabIndex] = useState(1);
37
+ const activeTabIndex = controlledSection !== undefined
38
+ ? SECTION_TO_INDEX[controlledSection]
39
+ : internalTabIndex;
40
+ const setActiveTabIndex = (index) => {
41
+ if (controlledSection === undefined)
42
+ setInternalTabIndex(index);
43
+ };
27
44
  const [activeAgents, setActiveAgents] = useState([]);
28
45
  const [profileGroups, setProfileGroups] = useState([]);
29
46
  const [expandedProfiles, setExpandedProfiles] = useState(new Set());
@@ -61,7 +78,7 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, }
61
78
  setRefreshing(false);
62
79
  setInitialLoad(false);
63
80
  }
64
- }, [showOnlyMyAgents, debouncedSearchTerm]);
81
+ }, [debouncedSearchTerm, showOnlyMyAgents]);
65
82
  // Initial load and reload when filters change
66
83
  useEffect(() => {
67
84
  loadAgents();
@@ -208,6 +225,10 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, }
208
225
  const inboxCount = useMemo(() => {
209
226
  return activeAgents.filter(agentNeedsAttention).length;
210
227
  }, [activeAgents]);
228
+ // Report inbox count to parent for sidebar badge
229
+ useEffect(() => {
230
+ onInboxCountChange?.(inboxCount);
231
+ }, [inboxCount, onInboxCountChange]);
211
232
  // Calculate running agents (agents that are currently executing)
212
233
  // Excludes agents waiting for tool call approval - they're shown in inbox
213
234
  const runningAgents = useMemo(() => {
@@ -421,35 +442,52 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, }
421
442
  return new Date(dateB).getTime() - new Date(dateA).getTime();
422
443
  });
423
444
  }, [profileGroups]);
424
- // Show full-screen loading only on initial load
425
- if (initialLoad && loading) {
445
+ const currentSection = controlledSection ??
446
+ (activeTabIndex === 0 ? "inbox" : activeTabIndex === 1 ? "all" : "create");
447
+ const pageHeaderDescription = useMemo(() => {
448
+ if (selectedAgentId) {
449
+ const fromActive = activeAgents.find((agent) => agent.id === selectedAgentId);
450
+ if (fromActive?.name)
451
+ return fromActive.name;
452
+ for (const group of profileGroups) {
453
+ const agent = group.agents.find((agent) => agent.id === selectedAgentId);
454
+ if (agent?.name)
455
+ return agent.name;
456
+ }
457
+ }
458
+ return SECTION_LABELS[currentSection];
459
+ }, [selectedAgentId, activeAgents, profileGroups, currentSection]);
460
+ // Show full-screen loading only on initial load (skip for "create" – that view loads its own data)
461
+ if (initialLoad && loading && currentSection !== "create") {
426
462
  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..." })] }));
427
463
  }
428
- // Build tabs for SimpleTabs - include badge count in inbox label
429
- const inboxLabel = inboxCount > 0 ? `Inbox (${inboxCount})` : "Inbox";
430
- const tabs = [
431
- {
432
- id: "inbox",
433
- label: inboxLabel,
434
- content: null,
435
- testId: "agents-tab-inbox",
436
- },
437
- { id: "all", label: "All Agents", content: null, testId: "agents-tab-all" },
438
- {
439
- id: "create",
440
- label: "Create New",
441
- content: null,
442
- testId: "agents-tab-create",
443
- },
444
- ];
445
- 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: "Manage, monitor, and deploy your intelligent assistant workforce" })), runningAgents.length > 0 && (_jsxs("div", { className: "flex-shrink-0 border-b border-gray-100 bg-gradient-to-r from-emerald-50 to-teal-50 px-4 py-3", children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx("div", { className: "h-2 w-2 animate-pulse rounded-full bg-emerald-500" }), _jsxs("span", { className: "text-xs font-semibold tracking-wide text-emerald-700 uppercase", children: ["Running Now (", runningAgents.length, ")"] })] }), _jsx("div", { className: "max-h-[200px] overflow-y-auto pr-1", children: _jsx("div", { className: "flex flex-col gap-1.5", children: runningAgents.map((agent) => {
464
+ 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 && (_jsxs("div", { className: "shrink-0 border-b border-gray-100 bg-linear-to-r from-emerald-50 to-teal-50 px-4 py-3", children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx("div", { className: "h-2 w-2 animate-pulse rounded-full bg-emerald-500" }), _jsxs("span", { className: "text-xs font-semibold tracking-wide text-emerald-700 uppercase", children: ["Running Now (", runningAgents.length, ")"] })] }), _jsx("div", { className: "max-h-[200px] overflow-y-auto pr-1", children: _jsx("div", { className: "flex flex-col gap-1.5", children: runningAgents.map((agent) => {
446
465
  const isSelected = selectedAgentId === agent.id;
447
466
  return (_jsxs("button", { onClick: () => handleAgentClick(agent), className: cn("flex w-full items-center gap-3 rounded-lg border px-3 py-2 text-xs transition-all", isSelected
448
467
  ? "border-emerald-500 bg-emerald-100 text-emerald-800 shadow-sm"
449
468
  : "border-gray-200 bg-white text-gray-700 hover:border-emerald-300 hover:bg-emerald-50"), children: [agent.profileSvgIcon ? (_jsx("div", { className: "h-4 w-4 shrink-0 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
450
469
  __html: agent.profileSvgIcon,
451
470
  } })) : (_jsx(SecretAgentIcon, { size: 14, strokeWidth: 1.5, className: "shrink-0" })), _jsx("span", { className: "flex-1 truncate text-left font-medium", children: agent.name }), _jsx("div", { className: "h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-emerald-500" })] }, agent.id));
452
- }) }) })] })), _jsx("div", { className: "flex-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: tabs, 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 }) })), activeTabIndex === 1 && (_jsxs("div", { className: "absolute inset-0 flex flex-col", children: [_jsxs("div", { className: "flex-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 or description...", 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"
471
+ }) }) })] })), 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: [
472
+ {
473
+ id: "inbox",
474
+ label: inboxCount > 0 ? `Inbox (${inboxCount})` : "Inbox",
475
+ content: null,
476
+ testId: "agents-tab-inbox",
477
+ },
478
+ {
479
+ id: "all",
480
+ label: "All Agents",
481
+ content: null,
482
+ testId: "agents-tab-all",
483
+ },
484
+ {
485
+ id: "create",
486
+ label: "Create New",
487
+ content: null,
488
+ testId: "agents-tab-create",
489
+ },
490
+ ], 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 }) })), 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 or description...", 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"
453
491
  ? "bg-white text-gray-900 shadow-sm"
454
492
  : "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"
455
493
  ? "bg-white text-gray-900 shadow-sm"
@@ -465,7 +503,7 @@ export function AgentsView({ onSelectAgent, selectedAgentId, compact = false, }
465
503
  const isLoadingMore = loadingMoreForProfile === profileGroup.profileId;
466
504
  const hasMore = profileGroup.agents.length <
467
505
  profileGroup.totalClosedCount;
468
- 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 }, profileKey));
506
+ 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));
469
507
  })) : (
470
508
  // Flat list view (newest first)
471
509
  _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 }) }))] })] }));