@parhelia/core 0.1.12787 → 0.1.12789

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 (131) hide show
  1. package/dist/agents-view/AgentCard.d.ts +6 -2
  2. package/dist/agents-view/AgentCard.js +81 -146
  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 -6
  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 +33 -255
  12. package/dist/agents-view/AgentsView.js.map +1 -1
  13. package/dist/agents-view/AgentsWorkspaceView.js +62 -44
  14. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  15. package/dist/agents-view/ProfileAgentsGroup.d.ts +2 -2
  16. package/dist/agents-view/ProfileAgentsGroup.js +9 -5
  17. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  18. package/dist/agents-view/agentsNavStore.d.ts +8 -0
  19. package/dist/agents-view/agentsNavStore.js +24 -0
  20. package/dist/agents-view/agentsNavStore.js.map +1 -0
  21. package/dist/components/PageHeader.d.ts +5 -1
  22. package/dist/components/PageHeader.js +2 -2
  23. package/dist/components/PageHeader.js.map +1 -1
  24. package/dist/components/ui/PlaceholderInput.d.ts +0 -8
  25. package/dist/components/ui/PlaceholderInput.js +1 -42
  26. package/dist/components/ui/PlaceholderInput.js.map +1 -1
  27. package/dist/components/ui/PlaceholderInputParser.d.ts +9 -0
  28. package/dist/components/ui/PlaceholderInputParser.js +98 -0
  29. package/dist/components/ui/PlaceholderInputParser.js.map +1 -0
  30. package/dist/components/ui/PlaceholderInputTypes.d.ts +1 -1
  31. package/dist/editor/GlobalMenuBar.js +9 -6
  32. package/dist/editor/GlobalMenuBar.js.map +1 -1
  33. package/dist/editor/ai/Agents.js +2 -3
  34. package/dist/editor/ai/Agents.js.map +1 -1
  35. package/dist/editor/ai/InlineAiDialog.d.ts +5 -0
  36. package/dist/editor/ai/InlineAiDialog.js +77 -64
  37. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  38. package/dist/editor/ai/terminal/agentSessionState.d.ts +1 -0
  39. package/dist/editor/ai/terminal/agentSessionState.js +18 -4
  40. package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
  41. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +5 -1
  42. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +2 -2
  43. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  44. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.d.ts +5 -1
  45. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js +12 -12
  46. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js.map +1 -1
  47. package/dist/editor/ai/terminal/types.d.ts +1 -0
  48. package/dist/editor/ai/terminal/useAgentContentChunkHandler.js +1 -0
  49. package/dist/editor/ai/terminal/useAgentContentChunkHandler.js.map +1 -1
  50. package/dist/editor/ai/terminal/useAgentSessionCommandBindings.js +1 -1
  51. package/dist/editor/ai/terminal/useAgentSessionCommandBindings.js.map +1 -1
  52. package/dist/editor/ai/terminal/useAgentSessionSync.d.ts +9 -1
  53. package/dist/editor/ai/terminal/useAgentSessionSync.js +7 -1
  54. package/dist/editor/ai/terminal/useAgentSessionSync.js.map +1 -1
  55. package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +2 -1
  56. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +125 -4
  57. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
  58. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.d.ts +1 -0
  59. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js +2 -1
  60. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js.map +1 -1
  61. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js +1 -0
  62. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js.map +1 -1
  63. package/dist/editor/ai/terminal/useAgentTerminalActions.js +2 -0
  64. package/dist/editor/ai/terminal/useAgentTerminalActions.js.map +1 -1
  65. package/dist/editor/ai/terminal/useAgentTerminalController.js +32 -1
  66. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  67. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +1 -1
  68. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  69. package/dist/editor/services/agentService.d.ts +17 -0
  70. package/dist/editor/services/agentService.js +32 -0
  71. package/dist/editor/services/agentService.js.map +1 -1
  72. package/dist/editor/settings/SettingsBreadcrumb.js +1 -1
  73. package/dist/editor/settings/SettingsBreadcrumb.js.map +1 -1
  74. package/dist/editor/settings/SettingsView.js +1 -1
  75. package/dist/editor/settings/SettingsView.js.map +1 -1
  76. package/dist/editor/sidebar/WorkspaceRail.js +23 -22
  77. package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
  78. package/dist/editor/sidebar/WorkspaceRailMobile.js +4 -13
  79. package/dist/editor/sidebar/WorkspaceRailMobile.js.map +1 -1
  80. package/dist/index.d.ts +3 -0
  81. package/dist/index.js +3 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/revision.d.ts +2 -2
  84. package/dist/revision.js +2 -2
  85. package/dist/task-board/components/ProjectSelector.js +1 -1
  86. package/dist/task-board/components/ProjectSelector.js.map +1 -1
  87. package/dist/task-board/components/TaskBoardTitlebar.js +1 -1
  88. package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
  89. package/package.json +1 -1
  90. package/dist/agents-view/AgentsInbox.d.ts +0 -26
  91. package/dist/agents-view/AgentsInbox.js +0 -31
  92. package/dist/agents-view/AgentsInbox.js.map +0 -1
  93. package/dist/editor/ai/agentDiagnostics.test.d.ts +0 -1
  94. package/dist/editor/ai/agentDiagnostics.test.js +0 -298
  95. package/dist/editor/ai/agentDiagnostics.test.js.map +0 -1
  96. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.d.ts +0 -1
  97. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.js +0 -109
  98. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.js.map +0 -1
  99. package/dist/editor/ai/terminal/agentSessionSelectors.test.d.ts +0 -1
  100. package/dist/editor/ai/terminal/agentSessionSelectors.test.js +0 -219
  101. package/dist/editor/ai/terminal/agentSessionSelectors.test.js.map +0 -1
  102. package/dist/editor/ai/terminal/agentSessionSnapshot.test.d.ts +0 -1
  103. package/dist/editor/ai/terminal/agentSessionSnapshot.test.js +0 -136
  104. package/dist/editor/ai/terminal/agentSessionSnapshot.test.js.map +0 -1
  105. package/dist/editor/ai/terminal/agentSessionState.test.d.ts +0 -1
  106. package/dist/editor/ai/terminal/agentSessionState.test.js +0 -456
  107. package/dist/editor/ai/terminal/agentSessionState.test.js.map +0 -1
  108. package/dist/editor/ai/terminal/useAgentInitialPrompt.test.d.ts +0 -1
  109. package/dist/editor/ai/terminal/useAgentInitialPrompt.test.js +0 -63
  110. package/dist/editor/ai/terminal/useAgentInitialPrompt.test.js.map +0 -1
  111. package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.d.ts +0 -1
  112. package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.js +0 -80
  113. package/dist/editor/ai/terminal/useAgentPendingDialogRecovery.test.js.map +0 -1
  114. package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.d.ts +0 -1
  115. package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.js +0 -135
  116. package/dist/editor/ai/terminal/useAgentQuestionnaireDialogRecovery.test.js.map +0 -1
  117. package/dist/editor/ai/terminal/useAgentSession.test.d.ts +0 -1
  118. package/dist/editor/ai/terminal/useAgentSession.test.js +0 -181
  119. package/dist/editor/ai/terminal/useAgentSession.test.js.map +0 -1
  120. package/dist/editor/ai/useAgentPanes.test.d.ts +0 -1
  121. package/dist/editor/ai/useAgentPanes.test.js +0 -198
  122. package/dist/editor/ai/useAgentPanes.test.js.map +0 -1
  123. package/dist/editor/services/agentDialogService.test.d.ts +0 -1
  124. package/dist/editor/services/agentDialogService.test.js +0 -56
  125. package/dist/editor/services/agentDialogService.test.js.map +0 -1
  126. package/dist/editor/services/agentSubscriptionRegistry.test.d.ts +0 -1
  127. package/dist/editor/services/agentSubscriptionRegistry.test.js +0 -104
  128. package/dist/editor/services/agentSubscriptionRegistry.test.js.map +0 -1
  129. package/dist/test/setup.d.ts +0 -0
  130. package/dist/test/setup.js +0 -37
  131. package/dist/test/setup.js.map +0 -1
@@ -2,8 +2,8 @@ import React from "react";
2
2
  import { Agent } from "../editor/services/agentService";
3
3
  interface AgentCardProps {
4
4
  agent: Agent;
5
- onClick: (agent: Agent) => void;
6
- onResume?: (agent: Agent) => void;
5
+ onClick: (agent: Agent, event?: React.MouseEvent) => void;
6
+ onResume?: (agent: Agent, event?: React.MouseEvent) => void;
7
7
  onClose?: (agentId: string, agentName: string) => void;
8
8
  onDelete?: (agentId: string, agentName: string, event: React.MouseEvent) => void;
9
9
  onDismiss?: (agentId: string, agentName: string) => void;
@@ -11,6 +11,10 @@ interface AgentCardProps {
11
11
  /** Whether this card is selected */
12
12
  selected?: boolean;
13
13
  }
14
+ /**
15
+ * Priority order used by the inbox to sort agents.
16
+ * Lower number = shown higher in the list.
17
+ */
14
18
  export declare function getInboxAttentionPriority(agent: Agent): number;
15
19
  export declare function AgentCard({ agent, onClick, onResume, onClose, onDelete, onDismiss, formatDateTime, selected, }: AgentCardProps): import("react/jsx-runtime").JSX.Element;
16
20
  export {};
@@ -1,108 +1,72 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import { getAgentTriggerSubscriptions, isAgentReadOnly, } from "../editor/services/agentService";
4
- import { isAgentClosed } from "../editor/services/agentStatus";
4
+ import { isAgentClosed, isRunningAgentStatus, } from "../editor/services/agentStatus";
5
5
  import { getAgentStatusConfig } from "../editor/ai/AgentStatusBadge";
6
6
  import { cn } from "../lib/utils";
7
7
  import { sanitizeSvg } from "../lib/sanitize";
8
8
  import { Trash, X, Play, Users, AlertCircle, Clock, DollarSign, Coins, MessageSquare, HelpCircle, Bell, } from "lucide-react";
9
9
  import { SimpleIconButton } from "../editor/ui/SimpleIconButton";
10
10
  import { SecretAgentIcon } from "../editor/ui/Icons";
11
+ import { Spinner } from "../editor/ui/Spinner";
11
12
  /**
12
- * Get attention indicator info for an agent
13
+ * Returns visual treatment for genuinely actionable states only.
14
+ * Plain "completed" / "idle" agents are intentionally NOT highlighted as needing
15
+ * attention — the status dot already conveys their state and the row should stay quiet.
13
16
  */
14
- function getAttentionIndicator(agent) {
15
- const status = agent.status;
16
- if (status === "waitingForApproval") {
17
- return {
18
- show: true,
19
- icon: _jsx(Clock, { className: "size-3", strokeWidth: 2 }),
20
- label: "Needs Approval",
21
- colorClass: "bg-amber-50 text-amber-700 border-amber-100",
22
- accentBorderClass: "border-l-4 border-l-amber-500",
23
- hoverClass: "hover:border-amber-200 hover:bg-amber-50/30",
24
- };
25
- }
26
- if (status === "costLimitReached") {
27
- return {
28
- show: true,
29
- icon: _jsx(DollarSign, { className: "size-3", strokeWidth: 2 }),
30
- label: "Budget Exceeded",
31
- colorClass: "bg-orange-50 text-orange-700 border-orange-100",
32
- accentBorderClass: "border-l-4 border-l-orange-500",
33
- hoverClass: "hover:border-orange-200 hover:bg-orange-50/30",
34
- };
35
- }
36
- if (status === "error") {
37
- return {
38
- show: true,
39
- icon: _jsx(AlertCircle, { className: "size-3", strokeWidth: 2 }),
40
- label: "Error",
41
- colorClass: "bg-red-50 text-red-700 border-red-100",
42
- accentBorderClass: "border-l-4 border-l-red-500",
43
- hoverClass: "hover:border-red-200 hover:bg-red-50/30",
44
- };
45
- }
46
- return null;
47
- }
48
- function getInboxAttentionInfo(agent) {
49
- const status = agent.status;
50
- if (status === "waitingForApproval") {
51
- return {
52
- priority: 1,
53
- };
54
- }
55
- if (status === "waitingForInput") {
56
- return {
57
- priority: 0,
58
- };
59
- }
60
- if (status === "costLimitReached") {
61
- return {
62
- priority: 2,
63
- };
64
- }
65
- if (status === "error") {
66
- return {
67
- priority: 3,
68
- };
69
- }
70
- if (status === "completed") {
71
- return {
72
- priority: 5,
73
- };
17
+ function getAttentionInfo(agent) {
18
+ switch (agent.status) {
19
+ case "waitingForApproval":
20
+ return {
21
+ icon: _jsx(Clock, { className: "size-3", strokeWidth: 2 }),
22
+ label: "Needs Approval",
23
+ chipClass: "bg-amber-50 text-amber-700",
24
+ barClass: "bg-amber-500",
25
+ rowTintClass: "bg-amber-50/30 hover:bg-amber-50/60",
26
+ priority: 1,
27
+ };
28
+ case "waitingForInput":
29
+ return {
30
+ icon: _jsx(HelpCircle, { className: "size-3", strokeWidth: 2 }),
31
+ label: "Input Required",
32
+ chipClass: "bg-amber-50 text-amber-700",
33
+ barClass: "bg-amber-500",
34
+ rowTintClass: "bg-amber-50/30 hover:bg-amber-50/60",
35
+ priority: 0,
36
+ };
37
+ case "costLimitReached":
38
+ return {
39
+ icon: _jsx(DollarSign, { className: "size-3", strokeWidth: 2 }),
40
+ label: "Budget Exceeded",
41
+ chipClass: "bg-orange-50 text-orange-700",
42
+ barClass: "bg-orange-500",
43
+ rowTintClass: "bg-orange-50/30 hover:bg-orange-50/60",
44
+ priority: 2,
45
+ };
46
+ case "error":
47
+ return {
48
+ icon: _jsx(AlertCircle, { className: "size-3", strokeWidth: 2 }),
49
+ label: "Error",
50
+ chipClass: "bg-red-50 text-red-700",
51
+ barClass: "bg-red-500",
52
+ rowTintClass: "bg-red-50/30 hover:bg-red-50/60",
53
+ priority: 3,
54
+ };
55
+ default:
56
+ return null;
74
57
  }
75
- return {
76
- priority: 4,
77
- };
78
58
  }
59
+ /**
60
+ * Priority order used by the inbox to sort agents.
61
+ * Lower number = shown higher in the list.
62
+ */
79
63
  export function getInboxAttentionPriority(agent) {
80
- return getInboxAttentionInfo(agent).priority;
81
- }
82
- function getSelectedCardClass(agent) {
83
- const status = agent.status;
84
- if (status === "running") {
85
- return "border-theme-secondary bg-theme-secondary/10 ring-2 ring-theme-secondary";
86
- }
87
- if (status === "waitingForApproval") {
88
- return "border-amber-300 bg-amber-50/30 ring-2 ring-amber-500";
89
- }
90
- if (status === "waitingForInput") {
91
- return "border-amber-300 bg-amber-50/30 ring-2 ring-amber-500";
92
- }
93
- if (status === "completed") {
94
- return "border-green-300 bg-green-50/30 ring-2 ring-green-500";
95
- }
96
- if (status === "error") {
97
- return "border-red-300 bg-red-50/30 ring-2 ring-red-500";
98
- }
99
- if (status === "costLimitReached") {
100
- return "border-amber-300 bg-amber-50/30 ring-2 ring-amber-500";
101
- }
102
- if (status === "idle") {
103
- return "border-amber-300 bg-amber-50/30 ring-2 ring-amber-500";
104
- }
105
- return "border-gray-300 bg-gray-50/50 ring-2 ring-gray-400";
64
+ const info = getAttentionInfo(agent);
65
+ if (info)
66
+ return info.priority;
67
+ if (agent.status === "completed")
68
+ return 5;
69
+ return 4;
106
70
  }
107
71
  export function AgentCard({ agent, onClick, onResume, onClose, onDelete, onDismiss, formatDateTime, selected = false, }) {
108
72
  const [loadedTriggerCount, setLoadedTriggerCount] = React.useState(agent.triggerSubscriptionCount ?? null);
@@ -129,65 +93,36 @@ export function AgentCard({ agent, onClick, onResume, onClose, onDelete, onDismi
129
93
  }, [agent.id, agent.triggerSubscriptionCount]);
130
94
  const statusConfig = getAgentStatusConfig(agent);
131
95
  const isClosed = isAgentClosed(agent.status);
132
- const attentionIndicator = getAttentionIndicator(agent) ??
133
- (agent.status === "waitingForInput"
134
- ? {
135
- show: true,
136
- icon: _jsx(HelpCircle, { className: "size-3", strokeWidth: 2 }),
137
- label: "Input Required",
138
- colorClass: "bg-amber-50 text-amber-700 border-amber-100",
139
- accentBorderClass: "border-l-4 border-l-amber-500",
140
- hoverClass: "hover:border-amber-200 hover:bg-amber-50/30",
141
- }
142
- : agent.status === "idle"
143
- ? {
144
- show: true,
145
- icon: _jsx(MessageSquare, { className: "size-3", strokeWidth: 2 }),
146
- label: "Awaiting Response",
147
- colorClass: "bg-amber-50 text-amber-700 border-amber-100",
148
- accentBorderClass: "border-l-4 border-l-amber-500",
149
- hoverClass: "hover:border-amber-200 hover:bg-amber-50/30",
150
- }
151
- : agent.status === "completed"
152
- ? {
153
- show: true,
154
- icon: _jsx(MessageSquare, { className: "size-3", strokeWidth: 2 }),
155
- label: "Ready",
156
- colorClass: "bg-green-50 text-green-700 border-green-100",
157
- accentBorderClass: "border-l-4 border-l-green-500",
158
- hoverClass: "hover:border-green-200 hover:bg-green-50/30",
159
- }
160
- : null);
161
- const selectedClass = getSelectedCardClass(agent);
162
- const handleCardClick = () => {
96
+ const isRunning = isRunningAgentStatus(agent.status);
97
+ const attention = getAttentionInfo(agent);
98
+ const handleCardClick = (event) => {
163
99
  if (isClosed && onResume) {
164
- onResume(agent);
100
+ onResume(agent, event);
165
101
  }
166
102
  else {
167
- onClick(agent);
103
+ onClick(agent, event);
168
104
  }
169
105
  };
170
- return (_jsx("div", { className: cn("group relative cursor-pointer overflow-hidden rounded-lg border bg-white px-3 py-2.5 transition-all hover:shadow-[0_2px_8px_rgba(0,0,0,0.04)]", attentionIndicator
171
- ? "border-gray-200"
172
- : "border-gray-100 hover:border-gray-200", attentionIndicator?.accentBorderClass, attentionIndicator?.hoverClass, selected && selectedClass), onClick: handleCardClick, title: `ID: ${agent.id}`, children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-gray-50 text-gray-400", children: agent.profileSvgIcon ? (_jsx("div", { className: "h-4 w-4 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
173
- __html: sanitizeSvg(agent.profileSvgIcon),
174
- } })) : (_jsx(SecretAgentIcon, { size: 16, strokeWidth: 1.5, className: "text-gray-400" })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h4", { className: "truncate text-[13px] 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("span", { className: "rounded-full bg-blue-50 px-1.5 py-px text-[9px] font-bold tracking-wider text-blue-500 uppercase", children: "Shared" }))] }), (attentionIndicator || agent.description) && (_jsxs("div", { className: "mt-0.5 flex items-center gap-2", children: [attentionIndicator && (_jsxs("span", { className: cn("inline-flex items-center gap-1 rounded px-1.5 py-px text-[10px] font-semibold", attentionIndicator.colorClass), children: [attentionIndicator.icon, attentionIndicator.label] })), agent.description && (_jsx("p", { className: "min-w-0 truncate text-xs text-gray-400", children: agent.description }))] })), _jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-x-3 text-[10px] text-gray-400", children: [agent.nextRunAt && (_jsxs("span", { className: "flex items-center gap-0.5 text-amber-600", children: [_jsx(Clock, { className: "size-2.5", strokeWidth: 2 }), "Wake: ", formatDateTime(agent.nextRunAt)] })), _jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Clock, { className: "size-2.5", strokeWidth: 2 }), agent.lastMessageDate
175
- ? formatDateTime(agent.lastMessageDate)
176
- : formatDateTime(agent.updatedDate)] }), agent.isShared && agent.ownerName && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Users, { className: "size-2.5", strokeWidth: 2 }), "By ", agent.ownerName] })), agent.messageCount !== undefined && agent.messageCount > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(MessageSquare, { className: "size-2.5", strokeWidth: 2 }), agent.messageCount, " msg"] })), loadedTriggerCount !== null && loadedTriggerCount > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Bell, { className: "size-2.5", strokeWidth: 2 }), loadedTriggerCount, " trigger", loadedTriggerCount !== 1 ? "s" : ""] })), agent.totalCost !== undefined && agent.totalCost > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Coins, { className: "size-2.5", strokeWidth: 2 }), "$", agent.totalCost.toFixed(2)] }))] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100", children: [isClosed && (_jsx(SimpleIconButton, { onClick: (e) => {
177
- e.stopPropagation();
178
- onResume?.(agent);
179
- }, icon: _jsx(Play, { className: "size-3.5", strokeWidth: 2 }), label: "Resume Agent", className: "h-7 w-7 rounded-md text-gray-400 hover:bg-blue-50 hover:text-blue-600" })), !isClosed && !onDismiss && !isAgentReadOnly(agent) && (_jsx(SimpleIconButton, { onClick: (e) => {
180
- e.stopPropagation();
181
- if (isAgentReadOnly(agent))
182
- return;
183
- onClose?.(agent.id, agent.name);
184
- }, icon: _jsx(X, { className: "size-3.5", strokeWidth: 2 }), label: "Close Agent", className: "h-7 w-7 rounded-md text-gray-400 hover:bg-gray-100 hover:text-gray-600" })), onDismiss ? (_jsx(SimpleIconButton, { onClick: (e) => {
185
- e.stopPropagation();
186
- onDismiss(agent.id, agent.name);
187
- }, icon: _jsx(X, { className: "size-3.5", strokeWidth: 2 }), label: "Dismiss", className: "h-7 w-7 rounded-md text-gray-400 hover:bg-gray-100 hover:text-gray-600" })) : (!isAgentReadOnly(agent) && (_jsx(SimpleIconButton, { onClick: (e) => {
188
- if (isAgentReadOnly(agent))
189
- return;
190
- onDelete?.(agent.id, agent.name, e);
191
- }, icon: _jsx(Trash, { className: "size-3.5", strokeWidth: 2 }), label: "Delete Agent", className: "h-7 w-7 rounded-md text-gray-400 hover:bg-red-50 hover:text-red-600" })))] })] }) }, agent.id));
106
+ const lastActivity = agent.lastMessageDate
107
+ ? formatDateTime(agent.lastMessageDate)
108
+ : formatDateTime(agent.updatedDate);
109
+ return (_jsxs("div", { className: cn("group relative flex cursor-pointer items-start gap-3 px-3 py-2.5 transition-colors", attention ? attention.rowTintClass : "hover:bg-gray-50/80", selected && !attention && "bg-gray-50"), onClick: handleCardClick, "data-testid": "agent-list-row", "data-agent-id": agent.id, title: `${agent.name}\nID: ${agent.id}\nAlt-click to open in a new pane`, children: [(selected || attention) && (_jsx("div", { className: cn("absolute top-2 bottom-2 left-0 w-0.5 rounded-r", selected ? "bg-gray-900" : attention?.barClass) })), _jsx("div", { className: "mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center text-gray-500", children: agent.profileSvgIcon ? (_jsx("div", { className: "h-6 w-6 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
110
+ __html: sanitizeSvg(agent.profileSvgIcon),
111
+ } })) : (_jsx(SecretAgentIcon, { size: 22, strokeWidth: 1.5, className: "text-gray-500" })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h4", { className: "truncate text-[13px] font-medium text-gray-900", children: agent.name }), !isRunning && (_jsx("span", { className: cn("h-1.5 w-1.5 shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label })), attention && (_jsxs("span", { className: cn("inline-flex shrink-0 items-center gap-1 rounded px-1.5 py-px text-[10px] font-semibold", attention.chipClass), children: [attention.icon, attention.label] })), agent.isShared && (_jsx("span", { className: "shrink-0 rounded-full bg-blue-50 px-1.5 py-px text-[9px] font-bold tracking-wider text-blue-500 uppercase", children: "Shared" }))] }), agent.description && (_jsx("p", { className: "mt-0.5 truncate text-[12px] text-gray-500", children: agent.description })), _jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[10px] text-gray-400", children: [agent.nextRunAt && (_jsxs("span", { className: "flex items-center gap-0.5 text-amber-600", children: [_jsx(Clock, { className: "size-2.5", strokeWidth: 2 }), "Wake: ", formatDateTime(agent.nextRunAt)] })), _jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Clock, { className: "size-2.5", strokeWidth: 2 }), lastActivity] }), agent.isShared && agent.ownerName && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Users, { className: "size-2.5", strokeWidth: 2 }), "By ", agent.ownerName] })), agent.messageCount !== undefined && agent.messageCount > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(MessageSquare, { className: "size-2.5", strokeWidth: 2 }), agent.messageCount, " msg"] })), loadedTriggerCount !== null && loadedTriggerCount > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Bell, { className: "size-2.5", strokeWidth: 2 }), loadedTriggerCount, " trigger", loadedTriggerCount !== 1 ? "s" : ""] })), agent.totalCost !== undefined && agent.totalCost > 0 && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Coins, { className: "size-2.5", strokeWidth: 2 }), "$", agent.totalCost.toFixed(2)] }))] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1 self-center opacity-0 transition-opacity group-hover:opacity-100", children: [isClosed && (_jsx(SimpleIconButton, { onClick: (e) => {
112
+ e.stopPropagation();
113
+ onResume?.(agent);
114
+ }, icon: _jsx(Play, { className: "size-3.5", strokeWidth: 2 }), label: "Resume Agent", className: "h-7 w-7 rounded-md text-gray-400 hover:bg-blue-50 hover:text-blue-600" })), !isClosed && !onDismiss && !isAgentReadOnly(agent) && (_jsx(SimpleIconButton, { onClick: (e) => {
115
+ e.stopPropagation();
116
+ if (isAgentReadOnly(agent))
117
+ return;
118
+ onClose?.(agent.id, agent.name);
119
+ }, icon: _jsx(X, { className: "size-3.5", strokeWidth: 2 }), label: "Close Agent", className: "h-7 w-7 rounded-md text-gray-400 hover:bg-gray-100 hover:text-gray-600" })), onDismiss ? (_jsx(SimpleIconButton, { onClick: (e) => {
120
+ e.stopPropagation();
121
+ onDismiss(agent.id, agent.name);
122
+ }, icon: _jsx(X, { className: "size-3.5", strokeWidth: 2 }), label: "Dismiss", className: "h-7 w-7 rounded-md text-gray-400 hover:bg-gray-100 hover:text-gray-600" })) : (!isAgentReadOnly(agent) && (_jsx(SimpleIconButton, { onClick: (e) => {
123
+ if (isAgentReadOnly(agent))
124
+ return;
125
+ onDelete?.(agent.id, agent.name, e);
126
+ }, icon: _jsx(Trash, { className: "size-3.5", strokeWidth: 2 }), label: "Delete Agent", className: "h-7 w-7 rounded-md text-gray-400 hover:bg-red-50 hover:text-red-600" })))] }), isRunning && (_jsx("span", { title: statusConfig.label, className: "flex shrink-0 items-center self-center px-1 text-gray-700", children: _jsx(Spinner, { size: "sm" }) }))] }, agent.id));
192
127
  }
193
128
  //# 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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"}
@@ -1,20 +1,15 @@
1
1
  import React from "react";
2
2
  import { Agent } from "../editor/services/agentService";
3
3
  export declare const ACTIVE_AGENT_PREFIX = "active-agent:";
4
- export type AgentsSidebarNavId = "inbox" | "all" | "create";
5
- export interface AgentsSidebarNavItem {
6
- id: AgentsSidebarNavId;
7
- label: string;
8
- }
9
4
  export interface AgentsSidebarProps {
10
- mainNavItems: AgentsSidebarNavItem[];
11
5
  activeAgents: Agent[];
12
- activeSidebarKey: string | null;
6
+ activeSidebarKey: string;
13
7
  onNavClick: (id: string) => void;
14
8
  onCloseAgent: (agentId: string, e: React.MouseEvent) => void;
15
9
  }
16
10
  /**
17
11
  * Sidebar content for the agents workspace (mobile only).
18
- * Renders two groups: "Agents" (Inbox, All Agents, Create New) and "Active Agents" (open agents with close button).
12
+ * Shows currently active agents plus an "All Agents" link to return to the
13
+ * overview when no agent is open.
19
14
  */
20
- export declare function AgentsSidebar({ mainNavItems, activeAgents, activeSidebarKey, onNavClick, onCloseAgent, }: AgentsSidebarProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function AgentsSidebar({ activeAgents, activeSidebarKey, onNavClick, onCloseAgent, }: AgentsSidebarProps): import("react/jsx-runtime").JSX.Element;
@@ -1,21 +1,18 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { X } from "lucide-react";
3
3
  import { cn } from "../lib/utils";
4
4
  export const ACTIVE_AGENT_PREFIX = "active-agent:";
5
5
  /**
6
6
  * Sidebar content for the agents workspace (mobile only).
7
- * Renders two groups: "Agents" (Inbox, All Agents, Create New) and "Active Agents" (open agents with close button).
7
+ * Shows currently active agents plus an "All Agents" link to return to the
8
+ * overview when no agent is open.
8
9
  */
9
- export function AgentsSidebar({ mainNavItems, activeAgents, activeSidebarKey, onNavClick, onCloseAgent, }) {
10
- return (_jsxs("div", { className: "flex min-h-0 flex-1 flex-col overflow-auto p-4", children: [_jsx("div", { className: "mb-3 px-2 text-sm font-semibold tracking-wide text-gray-600 uppercase", children: "Agents" }), _jsx("div", { className: "flex flex-col gap-1", children: mainNavItems.map((item) => {
11
- const isActive = activeSidebarKey === item.id &&
12
- !activeSidebarKey.startsWith(ACTIVE_AGENT_PREFIX);
13
- return (_jsx("button", { type: "button", className: cn("flex w-full cursor-pointer items-center gap-3 rounded-lg py-2.5 pl-5 pr-3 text-left text-sm transition-all", "text-gray-700 hover:bg-gray-100 hover:text-gray-900", "focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:outline-none", isActive && "bg-theme-secondary-light text-theme-secondary"), onClick: () => onNavClick(item.id), children: _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: item.label }) }, item.id));
14
- }) }), activeAgents.length > 0 && (_jsx(_Fragment, { children: _jsxs("div", { className: "mt-6 border-t border-gray-200 pt-4", children: [_jsx("div", { className: "mb-3 px-2 text-sm font-semibold tracking-wide text-gray-600 uppercase", children: "Active Agents" }), _jsx("div", { className: "flex flex-col gap-1", children: activeAgents.map((a) => {
15
- const key = `${ACTIVE_AGENT_PREFIX}${a.id}`;
16
- const isActive = activeSidebarKey === key;
17
- return (_jsxs("div", { className: cn("group flex items-center gap-2 rounded-lg py-2.5 pl-5 pr-2 text-left text-sm transition-all", "text-gray-700 hover:bg-gray-100 hover:text-gray-900", isActive &&
18
- "bg-theme-secondary-light text-theme-secondary"), children: [_jsx("button", { type: "button", className: "min-w-0 flex-1 truncate text-left font-medium", onClick: () => onNavClick(key), title: a.name || "Untitled", children: a.name || "Untitled" }), _jsx("button", { type: "button", className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-700", onClick: (e) => onCloseAgent(a.id, e), "aria-label": `Close ${a.name || "agent"}`, title: "Close", children: _jsx(X, { className: "h-4 w-4", strokeWidth: 2 }) })] }, a.id));
19
- }) })] }) }))] }));
10
+ export function AgentsSidebar({ activeAgents, activeSidebarKey, onNavClick, onCloseAgent, }) {
11
+ const isAllAgentsActive = !activeSidebarKey || !activeSidebarKey.startsWith(ACTIVE_AGENT_PREFIX);
12
+ return (_jsxs("div", { className: "flex min-h-0 flex-1 flex-col overflow-auto p-4", children: [_jsx("div", { className: "mb-3 px-2 text-sm font-semibold tracking-wide text-gray-600 uppercase", children: "Agents" }), _jsx("button", { type: "button", className: cn("flex w-full cursor-pointer items-center gap-3 rounded-lg py-2.5 pl-5 pr-3 text-left text-sm transition-all", "text-gray-700 hover:bg-gray-100 hover:text-gray-900", "focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:outline-none", isAllAgentsActive && "bg-theme-secondary-light text-theme-secondary"), onClick: () => onNavClick(""), children: _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: "All Agents" }) }), activeAgents.length > 0 && (_jsxs("div", { className: "mt-6 border-t border-gray-200 pt-4", children: [_jsx("div", { className: "mb-3 px-2 text-sm font-semibold tracking-wide text-gray-600 uppercase", children: "Active Agents" }), _jsx("div", { className: "flex flex-col gap-1", children: activeAgents.map((a) => {
13
+ const key = `${ACTIVE_AGENT_PREFIX}${a.id}`;
14
+ const isActive = activeSidebarKey === key;
15
+ return (_jsxs("div", { className: cn("group flex items-center gap-2 rounded-lg py-2.5 pl-5 pr-2 text-left text-sm transition-all", "text-gray-700 hover:bg-gray-100 hover:text-gray-900", isActive && "bg-theme-secondary-light text-theme-secondary"), children: [_jsx("button", { type: "button", className: "min-w-0 flex-1 truncate text-left font-medium", onClick: () => onNavClick(key), title: a.name || "Untitled", children: a.name || "Untitled" }), _jsx("button", { type: "button", className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-700", onClick: (e) => onCloseAgent(a.id, e), "aria-label": `Close ${a.name || "agent"}`, title: "Close", children: _jsx(X, { className: "h-4 w-4", strokeWidth: 2 }) })] }, a.id));
16
+ }) })] }))] }));
20
17
  }
21
18
  //# sourceMappingURL=AgentsSidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentsSidebar.js","sourceRoot":"","sources":["../../src/agents-view/AgentsSidebar.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAiBnD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,YAAY,GACO;IACnB,OAAO,CACL,eAAK,SAAS,EAAC,gDAAgD,aAC7D,cAAK,SAAS,EAAC,uEAAuE,uBAEhF,EACN,cAAK,SAAS,EAAC,qBAAqB,YACjC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,MAAM,QAAQ,GACZ,gBAAgB,KAAK,IAAI,CAAC,EAAE;wBAC5B,CAAC,gBAAgB,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;oBACpD,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,qDAAqD,EACrD,+EAA+E,EAC/E,QAAQ,IAAI,+CAA+C,CAC5D,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,YAElC,eAAM,SAAS,EAAC,qCAAqC,YAClD,IAAI,CAAC,KAAK,GACN,IAZF,IAAI,CAAC,EAAE,CAaL,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,EAEL,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1B,4BACE,eAAK,SAAS,EAAC,oCAAoC,aACjD,cAAK,SAAS,EAAC,uEAAuE,8BAEhF,EACN,cAAK,SAAS,EAAC,qBAAqB,YACjC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gCACtB,MAAM,GAAG,GAAG,GAAG,mBAAmB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;gCAC5C,MAAM,QAAQ,GAAG,gBAAgB,KAAK,GAAG,CAAC;gCAC1C,OAAO,CACL,eAEE,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,qDAAqD,EACrD,QAAQ;wCACN,+CAA+C,CAClD,aAED,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,+CAA+C,EACzD,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAC9B,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,UAAU,YAE1B,CAAC,CAAC,IAAI,IAAI,UAAU,GACd,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,oIAAoI,EAC9I,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBACzB,SAAS,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,EACxC,KAAK,EAAC,OAAO,YAEb,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,GAClC,KAxBJ,CAAC,CAAC,EAAE,CAyBL,CACP,CAAC;4BACJ,CAAC,CAAC,GACE,IACF,GACL,CACJ,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AgentsSidebar.js","sourceRoot":"","sources":["../../src/agents-view/AgentsSidebar.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AASnD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,YAAY,GACO;IACnB,MAAM,iBAAiB,GACrB,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAEzE,OAAO,CACL,eAAK,SAAS,EAAC,gDAAgD,aAC7D,cAAK,SAAS,EAAC,uEAAuE,uBAEhF,EACN,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,qDAAqD,EACrD,+EAA+E,EAC/E,iBAAiB,IAAI,+CAA+C,CACrE,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAE7B,eAAM,SAAS,EAAC,qCAAqC,2BAAkB,GAChE,EAER,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1B,eAAK,SAAS,EAAC,oCAAoC,aACjD,cAAK,SAAS,EAAC,uEAAuE,8BAEhF,EACN,cAAK,SAAS,EAAC,qBAAqB,YACjC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;4BACtB,MAAM,GAAG,GAAG,GAAG,mBAAmB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;4BAC5C,MAAM,QAAQ,GAAG,gBAAgB,KAAK,GAAG,CAAC;4BAC1C,OAAO,CACL,eAEE,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,qDAAqD,EACrD,QAAQ,IAAI,+CAA+C,CAC5D,aAED,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,+CAA+C,EACzD,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAC9B,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,UAAU,YAE1B,CAAC,CAAC,IAAI,IAAI,UAAU,GACd,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,oIAAoI,EAC9I,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBACzB,SAAS,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,EACxC,KAAK,EAAC,OAAO,YAEb,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,GAClC,KAvBJ,CAAC,CAAC,EAAE,CAwBL,CACP,CAAC;wBACJ,CAAC,CAAC,GACE,IACF,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * AgentsTitlebar - Titlebar content for the Agents workspace
3
- * Contains a toggle button for showing/hiding the editor preview panel
4
- * When editor is visible, also shows the page/language/version selector
2
+ * AgentsTitlebar - Titlebar content for the Agents workspace.
3
+ * Shows the workspace identity (icon + title + subtitle) on the left,
4
+ * and the +New Agent + show/hide editor toggle on the right.
5
5
  */
6
6
  export declare function AgentsTitlebar(): import("react/jsx-runtime").JSX.Element | null;
@@ -1,19 +1,23 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { SquarePen } from "lucide-react";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useSyncExternalStore } from "react";
3
+ import { Plus, SquarePen } from "lucide-react";
3
4
  import { SimpleIconButton } from "../editor/ui/SimpleIconButton";
4
5
  import { useEditContext } from "../editor/client/editContext";
5
6
  import { ItemLanguageVersion } from "../editor/menubar/ItemLanguageVersion";
6
7
  import { cn } from "../lib/utils";
8
+ import { subscribeAgentsNav, getAgentsNavSnapshot, } from "./agentsNavStore";
7
9
  /**
8
- * AgentsTitlebar - Titlebar content for the Agents workspace
9
- * Contains a toggle button for showing/hiding the editor preview panel
10
- * When editor is visible, also shows the page/language/version selector
10
+ * AgentsTitlebar - Titlebar content for the Agents workspace.
11
+ * Shows the workspace identity (icon + title + subtitle) on the left,
12
+ * and the +New Agent + show/hide editor toggle on the right.
11
13
  */
12
14
  export function AgentsTitlebar() {
13
15
  const editContext = useEditContext();
16
+ const nav = useSyncExternalStore(subscribeAgentsNav, getAgentsNavSnapshot, getAgentsNavSnapshot);
14
17
  if (!editContext?.workspace)
15
18
  return null;
16
19
  const { showAgentsWorkspaceEditor, setShowAgentsWorkspaceEditor } = editContext;
17
- return (_jsxs("div", { className: cn("flex w-full flex-row items-center", editContext.isMobile && "border-b px-1.5 py-1"), children: [showAgentsWorkspaceEditor && _jsx(ItemLanguageVersion, {}), _jsx("div", { className: "flex-1" }), !editContext.isMobile && (_jsx("div", { className: "flex items-center gap-2", children: _jsx(SimpleIconButton, { icon: _jsx(SquarePen, { className: "h-5 w-5", strokeWidth: 1 }), label: showAgentsWorkspaceEditor ? "Hide Editor" : "Show Editor", size: "large", "data-testid": "editor-panel-toggle", selected: showAgentsWorkspaceEditor, onClick: () => setShowAgentsWorkspaceEditor(!showAgentsWorkspaceEditor) }) }))] }));
20
+ const showSubtitle = !editContext.isMobile;
21
+ return (_jsxs("div", { className: cn("flex w-full flex-row items-center gap-3 pl-2", editContext.isMobile && "border-b px-1.5 py-1"), children: [_jsxs("div", { className: "flex min-w-0 flex-1 flex-col items-start justify-center leading-tight", "data-testid": "agents-titlebar-identity", children: [_jsx("span", { className: "truncate text-sm font-medium leading-tight text-gray-900", children: "AI Agents" }), showSubtitle && (_jsx("span", { className: "truncate text-[11px] leading-tight text-gray-500", children: "Build, run and orchestrate your AI workforce" }))] }), showAgentsWorkspaceEditor && _jsx(ItemLanguageVersion, {}), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [nav.onCreateAgent && (_jsxs("button", { type: "button", onClick: () => nav.onCreateAgent?.(), className: "inline-flex items-center gap-1.5 rounded-lg bg-theme-secondary px-3 py-1.5 text-[13px] font-medium text-white shadow-sm transition-colors hover:bg-theme-secondary/90", "data-testid": "agents-titlebar-new-agent-button", children: [_jsx(Plus, { className: "size-4", strokeWidth: 2.25 }), "New Agent"] })), !editContext.isMobile && (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-1 h-6 w-px bg-gray-200", "aria-hidden": "true" }), _jsx(SimpleIconButton, { icon: _jsx(SquarePen, { className: "h-5 w-5", strokeWidth: 1 }), label: showAgentsWorkspaceEditor ? "Hide Editor" : "Show Editor", size: "large", "data-testid": "editor-panel-toggle", selected: showAgentsWorkspaceEditor, onClick: () => setShowAgentsWorkspaceEditor(!showAgentsWorkspaceEditor) })] }))] })] }));
18
22
  }
19
23
  //# sourceMappingURL=AgentsTitlebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentsTitlebar.js","sourceRoot":"","sources":["../../src/agents-view/AgentsTitlebar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,IAAI,CAAC,WAAW,EAAE,SAAS;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,GAAG,WAAW,CAAC;IAEhF,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,mCAAmC,EACnC,WAAW,CAAC,QAAQ,IAAI,sBAAsB,CAC/C,aAGA,yBAAyB,IAAI,KAAC,mBAAmB,KAAG,EAGrD,cAAK,SAAS,EAAC,QAAQ,GAAG,EAGzB,CAAC,WAAW,CAAC,QAAQ,IAAI,CACxB,cAAK,SAAS,EAAC,yBAAyB,YACtC,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EACvD,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAChE,IAAI,EAAC,OAAO,iBACA,qBAAqB,EACjC,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,GAAG,EAAE,CACZ,4BAA4B,CAAC,CAAC,yBAAyB,CAAC,GAE1D,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AgentsTitlebar.js","sourceRoot":"","sources":["../../src/agents-view/AgentsTitlebar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,oBAAoB,CAC9B,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,CACrB,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,SAAS;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,GAC/D,WAAW,CAAC;IACd,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;IAE3C,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,8CAA8C,EAC9C,WAAW,CAAC,QAAQ,IAAI,sBAAsB,CAC/C,aAED,eACE,SAAS,EAAC,uEAAuE,iBACrE,0BAA0B,aAEtC,eAAM,SAAS,EAAC,0DAA0D,0BAEnE,EACN,YAAY,IAAI,CACf,eAAM,SAAS,EAAC,kDAAkD,6DAE3D,CACR,IACG,EAEL,yBAAyB,IAAI,KAAC,mBAAmB,KAAG,EAErD,eAAK,SAAS,EAAC,kCAAkC,aAC9C,GAAG,CAAC,aAAa,IAAI,CACpB,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,EACpC,SAAS,EAAC,uKAAuK,iBACrK,kCAAkC,aAE9C,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,WAAW,EAAE,IAAI,GAAI,iBAEvC,CACV,EACA,CAAC,WAAW,CAAC,QAAQ,IAAI,CACxB,8BACE,cACE,SAAS,EAAC,2BAA2B,iBACzB,MAAM,GAClB,EACF,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EACvD,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAChE,IAAI,EAAC,OAAO,iBACA,qBAAqB,EACjC,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,GAAG,EAAE,CACZ,4BAA4B,CAAC,CAAC,yBAAyB,CAAC,GAE1D,IACD,CACJ,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,19 +1,32 @@
1
1
  import { Agent } from "../editor/services/agentService";
2
- export type AgentsViewSection = "inbox" | "all" | "create";
3
2
  /**
4
3
  * Props for AgentsView component
5
4
  */
6
5
  interface AgentsViewProps {
7
6
  /** Optional callback when an agent is selected (for workspace integration) */
8
- onSelectAgent?: (agent: Agent) => void;
7
+ onSelectAgent?: (agent: Agent, options?: {
8
+ split?: boolean;
9
+ }) => void;
9
10
  /** Currently selected agent ID (for highlighting) */
10
11
  selectedAgentId?: string;
11
12
  /** Whether to show a compact version without the header */
12
13
  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;
14
+ /**
15
+ * Optional callback invoked when the user clicks "+ New Agent".
16
+ * When provided, the parent is responsible for showing the profile picker
17
+ * (e.g. inside the agent terminal pane in the workspace). When omitted,
18
+ * AgentsView falls back to its inline profile-picker view.
19
+ */
20
+ onRequestCreateAgent?: () => void;
21
+ /**
22
+ * Hide the +New Agent button. Used when an outer chrome (e.g. the workspace
23
+ * titlebar) already provides it.
24
+ */
25
+ hideNewAgentButton?: boolean;
17
26
  }
18
- export declare function AgentsView({ onSelectAgent, selectedAgentId, compact, activeSection: controlledSection, onInboxCountChange, }?: AgentsViewProps): import("react/jsx-runtime").JSX.Element;
27
+ /**
28
+ * Unified agents overview: search/filter, active agents and closed history.
29
+ * Creating a new agent happens in a modal accessed from the toolbar.
30
+ */
31
+ export declare function AgentsView({ onSelectAgent, selectedAgentId, compact, onRequestCreateAgent, hideNewAgentButton, }?: AgentsViewProps): import("react/jsx-runtime").JSX.Element;
19
32
  export {};