@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
@@ -1,298 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { buildAgentTerminalRunDiagnosticsSnapshot, getBackendLatestSeq, interpretAgentRunDiagnostics, isStreamStalled, shouldReloadAfterDiagnostics, STREAM_STALLED_AFTER_MS, } from "./agentDiagnostics";
3
- const AGENT_ID = "agent-1";
4
- function makeSnapshot(overrides = {}) {
5
- return {
6
- agentId: AGENT_ID,
7
- isSubmitting: false,
8
- isConnecting: false,
9
- isWaitingForResponse: false,
10
- isAgentThinking: false,
11
- isExecuting: true,
12
- lastStatusReason: null,
13
- lastStatusMessage: null,
14
- hasActiveStreaming: true,
15
- isSubscribed: true,
16
- lastSeq: 5,
17
- lastEventType: "agent:run:delta",
18
- lastEventAt: null,
19
- recentEvents: [],
20
- currentRunReceivedSeqs: [1, 2, 3, 4, 5],
21
- currentRunMissingSeqs: [],
22
- currentRunTotalEventCount: 5,
23
- assistantMessageCount: 0,
24
- assistantGroupCount: 0,
25
- assistantGroupsWithRenderableToolCalls: 0,
26
- messagesWithToolCalls: 0,
27
- totalToolCallCount: 0,
28
- incompleteToolCallCount: 0,
29
- recentToolUiEvents: [],
30
- ...overrides,
31
- };
32
- }
33
- function makeDiagnostics(overrides = {}) {
34
- return {
35
- agentId: AGENT_ID,
36
- execution: { status: "running", isInMemoryExecution: true },
37
- transport: {
38
- targetSessionCount: 1,
39
- successfulSessionCount: 1,
40
- failedSessionCount: 0,
41
- connectedSubscriberCount: 1,
42
- recentEvents: [],
43
- lastSeq: 5,
44
- },
45
- currentSession: {
46
- sessionFound: true,
47
- browserMatched: true,
48
- isConnected: true,
49
- isSubscribed: true,
50
- lastDelivery: { lastSeq: 5 },
51
- },
52
- persistentLogs: [],
53
- pendingDialogs: [],
54
- pendingDialogCount: 0,
55
- ...overrides,
56
- };
57
- }
58
- describe("isStreamStalled", () => {
59
- const baseParams = {
60
- isExecuting: true,
61
- isVisible: true,
62
- isStopping: false,
63
- isWaitingForCapacity: false,
64
- lastUpdateAt: 0,
65
- now: 0,
66
- };
67
- it("returns false while silence is under the threshold", () => {
68
- expect(isStreamStalled({
69
- ...baseParams,
70
- lastUpdateAt: 1_000,
71
- now: 1_000 + STREAM_STALLED_AFTER_MS,
72
- })).toBe(false);
73
- expect(isStreamStalled({
74
- ...baseParams,
75
- lastUpdateAt: 1_000,
76
- now: 1_000 + STREAM_STALLED_AFTER_MS - 1,
77
- })).toBe(false);
78
- });
79
- it("returns true once silence exceeds the threshold and all guards pass", () => {
80
- expect(isStreamStalled({
81
- ...baseParams,
82
- lastUpdateAt: 1_000,
83
- now: 1_000 + STREAM_STALLED_AFTER_MS + 1,
84
- })).toBe(true);
85
- });
86
- it("returns false when not visible", () => {
87
- expect(isStreamStalled({
88
- ...baseParams,
89
- isVisible: false,
90
- lastUpdateAt: 1_000,
91
- now: 1_000 + STREAM_STALLED_AFTER_MS + 5_000,
92
- })).toBe(false);
93
- });
94
- it("returns false when not executing", () => {
95
- expect(isStreamStalled({
96
- ...baseParams,
97
- isExecuting: false,
98
- lastUpdateAt: 1_000,
99
- now: 1_000 + STREAM_STALLED_AFTER_MS + 5_000,
100
- })).toBe(false);
101
- });
102
- it("returns false while a stop request is in flight", () => {
103
- expect(isStreamStalled({
104
- ...baseParams,
105
- isStopping: true,
106
- lastUpdateAt: 1_000,
107
- now: 1_000 + STREAM_STALLED_AFTER_MS + 5_000,
108
- })).toBe(false);
109
- });
110
- it("returns false when the run is waiting for machine capacity", () => {
111
- expect(isStreamStalled({
112
- ...baseParams,
113
- isWaitingForCapacity: true,
114
- lastUpdateAt: 1_000,
115
- now: 1_000 + STREAM_STALLED_AFTER_MS + 5_000,
116
- })).toBe(false);
117
- });
118
- it("returns false before any update has been recorded", () => {
119
- expect(isStreamStalled({
120
- ...baseParams,
121
- lastUpdateAt: 0,
122
- now: 60_000,
123
- })).toBe(false);
124
- });
125
- });
126
- describe("shouldReloadAfterDiagnostics", () => {
127
- it("returns false when backend seq is unknown", () => {
128
- expect(shouldReloadAfterDiagnostics({ localSeq: 5, backendSeq: null })).toBe(false);
129
- });
130
- it("returns false when backend seq matches the client", () => {
131
- expect(shouldReloadAfterDiagnostics({ localSeq: 5, backendSeq: 5 })).toBe(false);
132
- });
133
- it("returns false when backend seq is behind the client", () => {
134
- expect(shouldReloadAfterDiagnostics({ localSeq: 7, backendSeq: 5 })).toBe(false);
135
- });
136
- it("returns true when backend seq has advanced past the client", () => {
137
- expect(shouldReloadAfterDiagnostics({ localSeq: 5, backendSeq: 6 })).toBe(true);
138
- });
139
- });
140
- describe("getBackendLatestSeq", () => {
141
- it("uses the highest known backend sequence when session delivery reports a replay/status seq", () => {
142
- expect(getBackendLatestSeq(makeDiagnostics({
143
- transport: {
144
- ...makeDiagnostics().transport,
145
- lastSeq: 124,
146
- },
147
- currentSession: {
148
- ...makeDiagnostics().currentSession,
149
- lastDelivery: { lastSeq: 0 },
150
- },
151
- }))).toBe(124);
152
- });
153
- it("returns null when no backend sequence is available", () => {
154
- expect(getBackendLatestSeq(makeDiagnostics({
155
- transport: {
156
- ...makeDiagnostics().transport,
157
- lastSeq: undefined,
158
- },
159
- currentSession: {
160
- ...makeDiagnostics().currentSession,
161
- lastDelivery: null,
162
- },
163
- }))).toBeNull();
164
- });
165
- });
166
- describe("buildAgentTerminalRunDiagnosticsSnapshot", () => {
167
- it("derives last event fields and max observed seq", () => {
168
- const snapshot = buildAgentTerminalRunDiagnosticsSnapshot({
169
- agentId: AGENT_ID,
170
- isSubmitting: false,
171
- isConnecting: false,
172
- isWaitingForResponse: true,
173
- isAgentThinking: true,
174
- isExecuting: true,
175
- lastStatusReason: "Thinking",
176
- lastStatusMessage: "Working",
177
- hasActiveStreaming: true,
178
- isSubscribed: true,
179
- lastSeq: 5,
180
- recentEvents: [
181
- {
182
- timestamp: "2026-05-05T11:00:01Z",
183
- type: "agent:run:start",
184
- seq: 1,
185
- },
186
- {
187
- timestamp: "2026-05-05T11:00:02Z",
188
- type: "agent:run:delta",
189
- seq: 8,
190
- },
191
- ],
192
- currentRunReceivedSeqs: [1, 5, 8],
193
- currentRunMissingSeqs: [2, 3, 4, 6, 7],
194
- currentRunTotalEventCount: 3,
195
- assistantMessageCount: 2,
196
- assistantGroupCount: 1,
197
- assistantGroupsWithRenderableToolCalls: 1,
198
- messagesWithToolCalls: 1,
199
- totalToolCallCount: 2,
200
- incompleteToolCallCount: 1,
201
- recentToolUiEvents: [],
202
- });
203
- expect(snapshot.lastSeq).toBe(8);
204
- expect(snapshot.lastEventType).toBe("agent:run:delta");
205
- expect(snapshot.lastEventAt).toBe("2026-05-05T11:00:02Z");
206
- expect(snapshot.currentRunMissingSeqs).toEqual([2, 3, 4, 6, 7]);
207
- });
208
- });
209
- describe("interpretAgentRunDiagnostics", () => {
210
- const SOCKET_OPEN = {
211
- sessionId: "session-1",
212
- readyState: 1,
213
- readyStateLabel: "open",
214
- lastEventType: "message",
215
- lastEventAt: "2026-05-05T11:00:57Z",
216
- lastMessageAt: null,
217
- lastOpenAt: null,
218
- lastCloseAt: null,
219
- lastCloseCode: null,
220
- lastCloseReason: null,
221
- lastErrorAt: null,
222
- lastErrorMessage: null,
223
- reconnectCount: 0,
224
- };
225
- it("treats idle backend execution as a finished run even if local state still thinks it is executing", () => {
226
- const summary = interpretAgentRunDiagnostics({
227
- socketDiagnostics: SOCKET_OPEN,
228
- localSnapshot: makeSnapshot({
229
- isWaitingForResponse: true,
230
- isAgentThinking: true,
231
- isExecuting: true,
232
- hasActiveStreaming: false,
233
- }),
234
- serverDiagnostics: makeDiagnostics({
235
- execution: { status: "idle", isInMemoryExecution: true },
236
- transport: {
237
- ...makeDiagnostics().transport,
238
- lastStatusState: "idle",
239
- lastSeq: 4,
240
- },
241
- currentSession: {
242
- ...makeDiagnostics().currentSession,
243
- lastDelivery: { lastSeq: 4 },
244
- },
245
- }),
246
- });
247
- expect(summary.code).toBe("run-finished");
248
- });
249
- it("treats completed backend execution as a finished run even if local state still thinks it is executing", () => {
250
- const summary = interpretAgentRunDiagnostics({
251
- socketDiagnostics: SOCKET_OPEN,
252
- localSnapshot: makeSnapshot({
253
- isWaitingForResponse: true,
254
- isAgentThinking: true,
255
- isExecuting: true,
256
- hasActiveStreaming: false,
257
- }),
258
- serverDiagnostics: makeDiagnostics({
259
- execution: { status: "completed", isInMemoryExecution: true },
260
- transport: {
261
- ...makeDiagnostics().transport,
262
- lastStatusState: "completed",
263
- lastSeq: 124,
264
- },
265
- currentSession: {
266
- ...makeDiagnostics().currentSession,
267
- lastDelivery: { lastSeq: 0 },
268
- },
269
- }),
270
- });
271
- expect(summary.code).toBe("run-finished");
272
- });
273
- it("treats completed backend execution as a finished run when waiting flags linger after local execution settled", () => {
274
- const summary = interpretAgentRunDiagnostics({
275
- socketDiagnostics: SOCKET_OPEN,
276
- localSnapshot: makeSnapshot({
277
- isWaitingForResponse: true,
278
- isAgentThinking: true,
279
- isExecuting: false,
280
- hasActiveStreaming: false,
281
- }),
282
- serverDiagnostics: makeDiagnostics({
283
- execution: { status: "completed", isInMemoryExecution: true },
284
- transport: {
285
- ...makeDiagnostics().transport,
286
- lastStatusState: "completed",
287
- lastSeq: 124,
288
- },
289
- currentSession: {
290
- ...makeDiagnostics().currentSession,
291
- lastDelivery: { lastSeq: 0 },
292
- },
293
- }),
294
- });
295
- expect(summary.code).toBe("run-finished");
296
- });
297
- });
298
- //# sourceMappingURL=agentDiagnostics.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentDiagnostics.test.js","sourceRoot":"","sources":["../../../src/editor/ai/agentDiagnostics.test.ts"],"names":[],"mappings":"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"}
@@ -1,109 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { buildQuestionnaireDialogFromTranscript } from "./agentQuestionnaireTranscriptRecovery";
3
- describe("buildQuestionnaireDialogFromTranscript", () => {
4
- it("rebuilds a pending questionnaire request from an incomplete ask-questionnaire tool call", () => {
5
- const recovered = buildQuestionnaireDialogFromTranscript({
6
- agentId: "agent-1",
7
- pendingDialog: {
8
- callbackId: "callback-1",
9
- dialogType: "questionnaire",
10
- title: "Recovered",
11
- createdAt: "2026-01-01T00:00:00.000Z",
12
- replayableToCurrentSession: true,
13
- },
14
- messages: [
15
- message({
16
- functionName: "ask-questionnaire",
17
- functionArguments: JSON.stringify({
18
- title: "PDF details",
19
- description: "Upload details",
20
- questions: [
21
- {
22
- id: "q1",
23
- prompt: "Which PDF?",
24
- type: "file-upload",
25
- },
26
- ],
27
- }),
28
- }),
29
- ],
30
- });
31
- expect(recovered?.request).toMatchObject({
32
- callbackId: "callback-1",
33
- agentId: "agent-1",
34
- dialogType: "questionnaire",
35
- toolCallId: "tool-1",
36
- title: "PDF details",
37
- description: "Upload details",
38
- parameters: {
39
- questions: [
40
- {
41
- id: "q1",
42
- prompt: "Which PDF?",
43
- type: "file-upload",
44
- },
45
- ],
46
- },
47
- });
48
- });
49
- it("ignores completed questionnaire tool calls", () => {
50
- const recovered = buildQuestionnaireDialogFromTranscript({
51
- agentId: "agent-1",
52
- pendingDialog: {
53
- callbackId: "callback-1",
54
- dialogType: "questionnaire",
55
- title: "Recovered",
56
- createdAt: "2026-01-01T00:00:00.000Z",
57
- replayableToCurrentSession: true,
58
- },
59
- messages: [
60
- message({
61
- functionName: "ask-questionnaire",
62
- functionArguments: JSON.stringify({
63
- questions: [{ id: "q1", prompt: "Question?" }],
64
- }),
65
- isCompleted: true,
66
- }),
67
- ],
68
- });
69
- expect(recovered).toBeNull();
70
- });
71
- });
72
- function message(toolCall) {
73
- return {
74
- id: "message-1",
75
- agentId: "agent-1",
76
- messageIndex: 0,
77
- role: "assistant",
78
- content: "",
79
- name: "agent",
80
- messageType: "streaming",
81
- isCompleted: false,
82
- model: "",
83
- tokensUsed: 0,
84
- inputTokens: 0,
85
- outputTokens: 0,
86
- cachedInputTokens: 0,
87
- inputTokenCost: 0,
88
- outputTokenCost: 0,
89
- cachedInputTokenCost: 0,
90
- totalCost: 0,
91
- currency: "USD",
92
- createdDate: "2026-01-01T00:00:00.000Z",
93
- toolCalls: [
94
- {
95
- id: "tool-1",
96
- messageId: "message-1",
97
- toolCallId: "tool-1",
98
- functionName: "",
99
- functionArguments: "",
100
- functionResult: "",
101
- functionError: "",
102
- isCompleted: false,
103
- createdDate: "2026-01-01T00:00:00.000Z",
104
- ...toolCall,
105
- },
106
- ],
107
- };
108
- }
109
- //# sourceMappingURL=agentQuestionnaireTranscriptRecovery.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentQuestionnaireTranscriptRecovery.test.js","sourceRoot":"","sources":["../../../../src/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.test.ts"],"names":[],"mappings":"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"}
@@ -1,219 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { createInitialAgentSessionState, } from "./agentSessionState";
3
- import { selectAgentCostLimit, selectEffectiveModelName, selectHasSpawnedAgents, selectHasTodoContent, selectIsExecuting, selectIsWatchdogActive, selectLatestSummaryAssistantGroup, selectMessageStats, selectPendingApprovalsFromMessages, selectReadOnly, selectShouldShowThinkingDots, selectTotalTokens, } from "./agentSessionSelectors";
4
- describe("agentSessionSelectors", () => {
5
- it("treats running and local wait flags as executing", () => {
6
- const base = createInitialAgentSessionState();
7
- const running = {
8
- ...createInitialAgentSessionState(),
9
- run: {
10
- ...base.run,
11
- isWaitingForResponse: true,
12
- },
13
- };
14
- expect(selectIsExecuting(running)).toBe(true);
15
- });
16
- it("suppresses execution while the stop guard is active", () => {
17
- const base = createInitialAgentSessionState();
18
- const stopping = {
19
- ...base,
20
- run: {
21
- ...base.run,
22
- isSubmitting: true,
23
- stopGuardActive: true,
24
- },
25
- };
26
- expect(selectIsExecuting(stopping)).toBe(false);
27
- });
28
- it("derives access, cost, model, and watchdog view state", () => {
29
- const state = {
30
- ...createInitialAgentSessionState(),
31
- loadStatus: "ready",
32
- agent: {
33
- ...createInitialAgentSessionState().agent,
34
- canManage: false,
35
- costLimit: 12,
36
- },
37
- contextWindowStatus: {
38
- contextWindowTokens: 100,
39
- estimatedInputTokens: 50,
40
- contextUsedPercent: 50,
41
- model: "context-model",
42
- },
43
- };
44
- expect(selectReadOnly(state)).toBe(true);
45
- expect(selectAgentCostLimit(state)).toBe(12);
46
- expect(selectEffectiveModelName(state)).toBe("context-model");
47
- expect(selectIsWatchdogActive({
48
- isExecuting: false,
49
- isAgentThinking: false,
50
- isSubmitting: false,
51
- isConnecting: false,
52
- isWaitingForResponse: true,
53
- hasActiveStreaming: false,
54
- isStopGuardActive: false,
55
- })).toBe(true);
56
- });
57
- it("derives spawned-agent and todo affordance state", () => {
58
- const state = {
59
- ...createInitialAgentSessionState(),
60
- metadata: {
61
- childAgents: [{ agentId: "child-1" }],
62
- additionalData: {
63
- todoList: {
64
- items: [{ text: "Check output" }],
65
- },
66
- },
67
- },
68
- };
69
- expect(selectHasSpawnedAgents(state)).toBe(true);
70
- expect(selectHasTodoContent(state)).toBe(true);
71
- expect(selectHasTodoContent({
72
- ...createInitialAgentSessionState(),
73
- transcript: [
74
- {
75
- ...messageWithToolCall("msg-1", "tool-1", true),
76
- content: "updating todo_list",
77
- isCompleted: false,
78
- },
79
- ],
80
- })).toBe(true);
81
- });
82
- it("selects unique pending approvals from transcript messages", () => {
83
- const messages = [
84
- messageWithPendingApproval("msg-1", "tool-1"),
85
- messageWithPendingApproval("msg-1", "tool-1"),
86
- messageWithCompletedApproval("msg-2", "tool-2"),
87
- ];
88
- const approvals = selectPendingApprovalsFromMessages(messages);
89
- expect(approvals).toHaveLength(1);
90
- expect(approvals[0]).toMatchObject({
91
- messageId: "msg-1",
92
- toolCallId: "tool-1",
93
- summary: "Write file",
94
- riskLevel: "medium",
95
- });
96
- });
97
- it("derives transcript stats and token totals", () => {
98
- const state = {
99
- ...createInitialAgentSessionState(),
100
- agent: {
101
- ...createInitialAgentSessionState().agent,
102
- totalImageCost: 3,
103
- },
104
- transcript: [
105
- {
106
- ...messageWithToolCall("msg-1", "tool-1", false),
107
- inputTokens: 10,
108
- outputTokens: 5,
109
- inputTokenCost: 0.01,
110
- outputTokenCost: 0.02,
111
- },
112
- messageWithCompletedApproval("msg-2", "tool-2"),
113
- ],
114
- };
115
- const stats = selectMessageStats(state);
116
- const totals = selectTotalTokens(state);
117
- expect(stats).toMatchObject({
118
- assistantMessageCount: 2,
119
- messagesWithToolCallsCount: 2,
120
- totalToolCallCount: 2,
121
- incompleteToolCallCount: 1,
122
- });
123
- expect(totals.input).toBe(10);
124
- expect(totals.output).toBe(5);
125
- expect(totals.imageCost).toBe(3);
126
- });
127
- it("selects the latest renderable summary assistant group", () => {
128
- const messages = [
129
- messageWithContent("msg-1", "First"),
130
- messageWithContent("msg-2", "\u26a0\ufe0f Cost limit reached"),
131
- messageWithContent("msg-3", "Latest"),
132
- ];
133
- const group = selectLatestSummaryAssistantGroup(messages, false);
134
- expect(group?.messages.map((message) => message.id)).toEqual([
135
- "msg-1",
136
- "msg-3",
137
- ]);
138
- expect(group?.isLastGroup).toBe(true);
139
- expect(selectLatestSummaryAssistantGroup(messages, true)).toBeNull();
140
- });
141
- it("shows global thinking dots only before renderable assistant output", () => {
142
- expect(selectShouldShowThinkingDots({
143
- activeInlineDialog: null,
144
- allPendingApprovalsCount: 0,
145
- isAgentThinking: true,
146
- isConnecting: false,
147
- isExecuting: true,
148
- isSubmitting: false,
149
- isWaitingForResponse: false,
150
- messages: [],
151
- sessionCostLimitExceeded: null,
152
- showInitialThinkingSplash: false,
153
- })).toBe(true);
154
- expect(selectShouldShowThinkingDots({
155
- activeInlineDialog: null,
156
- allPendingApprovalsCount: 0,
157
- isAgentThinking: true,
158
- isConnecting: false,
159
- isExecuting: true,
160
- isSubmitting: false,
161
- isWaitingForResponse: false,
162
- messages: [messageWithContent("assistant-1", "Working")],
163
- sessionCostLimitExceeded: null,
164
- showInitialThinkingSplash: false,
165
- })).toBe(false);
166
- });
167
- });
168
- function messageWithPendingApproval(messageId, toolCallId) {
169
- return messageWithToolCall(messageId, toolCallId, false);
170
- }
171
- function messageWithCompletedApproval(messageId, toolCallId) {
172
- return messageWithToolCall(messageId, toolCallId, true);
173
- }
174
- function messageWithToolCall(messageId, toolCallId, isCompleted) {
175
- return {
176
- id: messageId,
177
- agentId: "agent-1",
178
- messageIndex: 0,
179
- role: "assistant",
180
- content: "",
181
- name: "agent",
182
- messageType: "streaming",
183
- isCompleted: false,
184
- model: "",
185
- tokensUsed: 0,
186
- inputTokens: 0,
187
- outputTokens: 0,
188
- cachedInputTokens: 0,
189
- inputTokenCost: 0,
190
- outputTokenCost: 0,
191
- cachedInputTokenCost: 0,
192
- totalCost: 0,
193
- currency: "USD",
194
- createdDate: "2026-01-01T00:00:00.000Z",
195
- toolCalls: [
196
- {
197
- id: `${messageId}-${toolCallId}`,
198
- messageId,
199
- toolCallId,
200
- functionName: "writeFile",
201
- functionArguments: "{}",
202
- isCompleted,
203
- createdDate: "2026-01-01T00:00:00.000Z",
204
- requiresApproval: {
205
- summary: "Write file",
206
- riskLevel: "medium",
207
- },
208
- },
209
- ],
210
- };
211
- }
212
- function messageWithContent(id, content) {
213
- return {
214
- ...messageWithToolCall(id, `${id}-tool`, true),
215
- content,
216
- toolCalls: [],
217
- };
218
- }
219
- //# sourceMappingURL=agentSessionSelectors.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentSessionSelectors.test.js","sourceRoot":"","sources":["../../../../src/editor/ai/terminal/agentSessionSelectors.test.ts"],"names":[],"mappings":"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"}