@kenkaiiii/gg-boss 4.3.140 → 4.3.141

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 (162) hide show
  1. package/dist/{chunk-JVQDTPYR.js → chunk-3EWLK53W.js} +18 -9
  2. package/dist/{chunk-JVQDTPYR.js.map → chunk-3EWLK53W.js.map} +1 -1
  3. package/dist/{chunk-5WNYQQPQ.js → chunk-QT366Y52.js} +4 -3
  4. package/dist/{chunk-5WNYQQPQ.js.map → chunk-QT366Y52.js.map} +1 -1
  5. package/dist/{chunk-PQAHDHVY.js → chunk-WJ4S4TOY.js} +3 -2
  6. package/dist/{chunk-PQAHDHVY.js.map → chunk-WJ4S4TOY.js.map} +1 -1
  7. package/dist/{chunk-B2WQ5E5J.js → chunk-YNWFCUMR.js} +2 -1
  8. package/dist/{chunk-B2WQ5E5J.js.map → chunk-YNWFCUMR.js.map} +1 -1
  9. package/dist/cli.js +2246 -182
  10. package/dist/cli.js.map +1 -1
  11. package/dist/{devtools-VBUDNGEI.js → devtools-4TI4D7F2.js} +3 -2
  12. package/dist/{devtools-VBUDNGEI.js.map → devtools-4TI4D7F2.js.map} +1 -1
  13. package/dist/{dist-7DAPKZGX.js → dist-VXOVSHZ5.js} +3 -2
  14. package/dist/{dist-7DAPKZGX.js.map → dist-VXOVSHZ5.js.map} +1 -1
  15. package/dist/{ignore-3AEIALHQ.js → ignore-76P4EAAU.js} +3 -2
  16. package/dist/{ignore-3AEIALHQ.js.map → ignore-76P4EAAU.js.map} +1 -1
  17. package/dist/index.js +21 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/{out-D65DTPFZ.js → out-XEXARMKS.js} +3 -2
  20. package/dist/{out-D65DTPFZ.js.map → out-XEXARMKS.js.map} +1 -1
  21. package/dist/pixel-WPYTQADG.js +14 -0
  22. package/dist/{pixel-fix-ALWXCLTS.js → pixel-fix-4WGZAJ5W.js} +4 -3
  23. package/dist/{pixel-fix-ALWXCLTS.js.map → pixel-fix-4WGZAJ5W.js.map} +1 -1
  24. package/package.json +10 -11
  25. package/dist/audio.d.ts +0 -21
  26. package/dist/audio.d.ts.map +0 -1
  27. package/dist/audio.js +0 -231
  28. package/dist/audio.js.map +0 -1
  29. package/dist/audio.test.d.ts +0 -2
  30. package/dist/audio.test.d.ts.map +0 -1
  31. package/dist/audio.test.js +0 -13
  32. package/dist/audio.test.js.map +0 -1
  33. package/dist/auto-update.d.ts +0 -24
  34. package/dist/auto-update.d.ts.map +0 -1
  35. package/dist/auto-update.js +0 -231
  36. package/dist/auto-update.js.map +0 -1
  37. package/dist/banner.d.ts +0 -17
  38. package/dist/banner.d.ts.map +0 -1
  39. package/dist/banner.js +0 -25
  40. package/dist/banner.js.map +0 -1
  41. package/dist/boss-footer.d.ts +0 -25
  42. package/dist/boss-footer.d.ts.map +0 -1
  43. package/dist/boss-footer.js +0 -107
  44. package/dist/boss-footer.js.map +0 -1
  45. package/dist/boss-phrases.d.ts +0 -9
  46. package/dist/boss-phrases.d.ts.map +0 -1
  47. package/dist/boss-phrases.js +0 -71
  48. package/dist/boss-phrases.js.map +0 -1
  49. package/dist/boss-store.d.ts +0 -245
  50. package/dist/boss-store.d.ts.map +0 -1
  51. package/dist/boss-store.js +0 -623
  52. package/dist/boss-store.js.map +0 -1
  53. package/dist/boss-system-prompt.d.ts +0 -3
  54. package/dist/boss-system-prompt.d.ts.map +0 -1
  55. package/dist/boss-system-prompt.js +0 -180
  56. package/dist/boss-system-prompt.js.map +0 -1
  57. package/dist/boss-tasks-overlay.d.ts +0 -22
  58. package/dist/boss-tasks-overlay.d.ts.map +0 -1
  59. package/dist/boss-tasks-overlay.js +0 -157
  60. package/dist/boss-tasks-overlay.js.map +0 -1
  61. package/dist/branding.d.ts +0 -32
  62. package/dist/branding.d.ts.map +0 -1
  63. package/dist/branding.js +0 -59
  64. package/dist/branding.js.map +0 -1
  65. package/dist/cli.d.ts +0 -3
  66. package/dist/cli.d.ts.map +0 -1
  67. package/dist/cli.smoke.test.d.ts +0 -2
  68. package/dist/cli.smoke.test.d.ts.map +0 -1
  69. package/dist/cli.smoke.test.js +0 -48
  70. package/dist/cli.smoke.test.js.map +0 -1
  71. package/dist/colors.d.ts +0 -14
  72. package/dist/colors.d.ts.map +0 -1
  73. package/dist/colors.js +0 -31
  74. package/dist/colors.js.map +0 -1
  75. package/dist/discover.d.ts +0 -13
  76. package/dist/discover.d.ts.map +0 -1
  77. package/dist/discover.js +0 -92
  78. package/dist/discover.js.map +0 -1
  79. package/dist/event-queue.d.ts +0 -16
  80. package/dist/event-queue.d.ts.map +0 -1
  81. package/dist/event-queue.js +0 -39
  82. package/dist/event-queue.js.map +0 -1
  83. package/dist/index.d.ts +0 -6
  84. package/dist/index.d.ts.map +0 -1
  85. package/dist/link-command.d.ts +0 -2
  86. package/dist/link-command.d.ts.map +0 -1
  87. package/dist/link-command.js +0 -120
  88. package/dist/link-command.js.map +0 -1
  89. package/dist/links.d.ts +0 -11
  90. package/dist/links.d.ts.map +0 -1
  91. package/dist/links.js +0 -22
  92. package/dist/links.js.map +0 -1
  93. package/dist/logger.d.ts +0 -41
  94. package/dist/logger.d.ts.map +0 -1
  95. package/dist/logger.js +0 -112
  96. package/dist/logger.js.map +0 -1
  97. package/dist/orchestrator-app.d.ts +0 -15
  98. package/dist/orchestrator-app.d.ts.map +0 -1
  99. package/dist/orchestrator-app.js +0 -599
  100. package/dist/orchestrator-app.js.map +0 -1
  101. package/dist/orchestrator.d.ts +0 -147
  102. package/dist/orchestrator.d.ts.map +0 -1
  103. package/dist/orchestrator.js +0 -707
  104. package/dist/orchestrator.js.map +0 -1
  105. package/dist/orchestrator.test.d.ts +0 -2
  106. package/dist/orchestrator.test.d.ts.map +0 -1
  107. package/dist/orchestrator.test.js +0 -55
  108. package/dist/orchestrator.test.js.map +0 -1
  109. package/dist/pixel-WB6VRJWP.js +0 -13
  110. package/dist/radio-picker.d.ts +0 -20
  111. package/dist/radio-picker.d.ts.map +0 -1
  112. package/dist/radio-picker.js +0 -31
  113. package/dist/radio-picker.js.map +0 -1
  114. package/dist/radio.d.ts +0 -43
  115. package/dist/radio.d.ts.map +0 -1
  116. package/dist/radio.js +0 -150
  117. package/dist/radio.js.map +0 -1
  118. package/dist/sessions.d.ts +0 -21
  119. package/dist/sessions.d.ts.map +0 -1
  120. package/dist/sessions.js +0 -122
  121. package/dist/sessions.js.map +0 -1
  122. package/dist/settings.d.ts +0 -11
  123. package/dist/settings.d.ts.map +0 -1
  124. package/dist/settings.js +0 -38
  125. package/dist/settings.js.map +0 -1
  126. package/dist/slash-commands.d.ts +0 -19
  127. package/dist/slash-commands.d.ts.map +0 -1
  128. package/dist/slash-commands.js +0 -76
  129. package/dist/slash-commands.js.map +0 -1
  130. package/dist/splash.d.ts +0 -21
  131. package/dist/splash.d.ts.map +0 -1
  132. package/dist/splash.js +0 -137
  133. package/dist/splash.js.map +0 -1
  134. package/dist/task-tools.d.ts +0 -18
  135. package/dist/task-tools.d.ts.map +0 -1
  136. package/dist/task-tools.js +0 -172
  137. package/dist/task-tools.js.map +0 -1
  138. package/dist/tasks-store.d.ts +0 -66
  139. package/dist/tasks-store.d.ts.map +0 -1
  140. package/dist/tasks-store.js +0 -199
  141. package/dist/tasks-store.js.map +0 -1
  142. package/dist/tasks-store.test.d.ts +0 -2
  143. package/dist/tasks-store.test.d.ts.map +0 -1
  144. package/dist/tasks-store.test.js +0 -138
  145. package/dist/tasks-store.test.js.map +0 -1
  146. package/dist/tool-formatters.d.ts +0 -7
  147. package/dist/tool-formatters.d.ts.map +0 -1
  148. package/dist/tool-formatters.js +0 -111
  149. package/dist/tool-formatters.js.map +0 -1
  150. package/dist/tools.d.ts +0 -26
  151. package/dist/tools.d.ts.map +0 -1
  152. package/dist/tools.js +0 -133
  153. package/dist/tools.js.map +0 -1
  154. package/dist/types.d.ts +0 -32
  155. package/dist/types.d.ts.map +0 -1
  156. package/dist/types.js +0 -2
  157. package/dist/types.js.map +0 -1
  158. package/dist/worker.d.ts +0 -47
  159. package/dist/worker.d.ts.map +0 -1
  160. package/dist/worker.js +0 -123
  161. package/dist/worker.js.map +0 -1
  162. /package/dist/{pixel-WB6VRJWP.js.map → pixel-WPYTQADG.js.map} +0 -0
@@ -1,623 +0,0 @@
1
- import { useSyncExternalStore } from "react";
2
- let nextId = 1;
3
- const id = () => `i${nextId++}`;
4
- function isText(p) {
5
- return p.type === "text";
6
- }
7
- function isToolCall(p) {
8
- return p.type === "tool_call";
9
- }
10
- function userMessageText(content) {
11
- if (typeof content === "string")
12
- return content;
13
- return content
14
- .filter((c) => c.type === "text")
15
- .map((c) => c.text)
16
- .join("");
17
- }
18
- function toolResultText(content) {
19
- if (typeof content === "string")
20
- return content;
21
- return content
22
- .filter((c) => c.type === "text")
23
- .map((c) => c.text)
24
- .join("");
25
- }
26
- const initialState = {
27
- bossProvider: "anthropic",
28
- bossModel: "",
29
- workerProvider: "anthropic",
30
- workerModel: "",
31
- loggedInProviders: [],
32
- history: [],
33
- pendingFlush: [],
34
- flushGeneration: 0,
35
- pendingEndOfTurnInfos: [],
36
- streaming: null,
37
- phase: "idle",
38
- activityPhase: "idle",
39
- retryInfo: null,
40
- compaction: null,
41
- bossInputTokens: 0,
42
- runStartMs: null,
43
- workers: [],
44
- pendingUserMessages: 0,
45
- exitPending: false,
46
- scope: "all",
47
- };
48
- let state = initialState;
49
- const listeners = new Set();
50
- function notify() {
51
- for (const fn of listeners)
52
- fn();
53
- }
54
- function subscribe(fn) {
55
- listeners.add(fn);
56
- return () => {
57
- listeners.delete(fn);
58
- };
59
- }
60
- function getSnapshot() {
61
- return state;
62
- }
63
- export function useBossState() {
64
- return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
65
- }
66
- // ── Mutations (called by orchestrator/worker) ──────────────
67
- export const bossStore = {
68
- init(opts) {
69
- state = {
70
- ...initialState,
71
- bossProvider: opts.bossProvider,
72
- bossModel: opts.bossModel,
73
- bossThinkingLevel: opts.bossThinkingLevel,
74
- workerProvider: opts.workerProvider,
75
- workerModel: opts.workerModel,
76
- loggedInProviders: opts.loggedInProviders,
77
- workers: opts.workers.map((w) => ({
78
- name: w.name,
79
- cwd: w.cwd,
80
- status: "idle",
81
- workStartedAt: null,
82
- })),
83
- };
84
- notify();
85
- },
86
- setBossThinking(level) {
87
- state = { ...state, bossThinkingLevel: level };
88
- notify();
89
- },
90
- setBossModel(provider, model) {
91
- state = { ...state, bossProvider: provider, bossModel: model };
92
- notify();
93
- },
94
- setWorkerModel(provider, model) {
95
- state = { ...state, workerProvider: provider, workerModel: model };
96
- notify();
97
- },
98
- setLoggedInProviders(providers) {
99
- state = { ...state, loggedInProviders: providers };
100
- notify();
101
- },
102
- appendUser(text) {
103
- state = {
104
- ...state,
105
- history: [...state.history, { kind: "user", id: id(), text, timestamp: Date.now() }],
106
- };
107
- notify();
108
- },
109
- appendTaskDispatch(tasks) {
110
- if (tasks.length === 0)
111
- return;
112
- state = {
113
- ...state,
114
- history: [
115
- ...state.history,
116
- { kind: "task_dispatch", id: id(), tasks, timestamp: Date.now() },
117
- ],
118
- };
119
- notify();
120
- },
121
- appendInfo(text, level = "info") {
122
- state = {
123
- ...state,
124
- history: [...state.history, { kind: "info", id: id(), text, level }],
125
- };
126
- notify();
127
- },
128
- /**
129
- * Queue an info message to be appended AFTER the boss's current turn ends.
130
- * Used by tools (like add_task's keybind hint) that fire mid-turn and would
131
- * otherwise interleave their announcement between the boss's tool calls,
132
- * making it read like the boss issued the message itself.
133
- */
134
- queueEndOfTurnInfo(text, level = "info") {
135
- state = { ...state, pendingEndOfTurnInfos: [...state.pendingEndOfTurnInfos, { text, level }] };
136
- notify();
137
- },
138
- /** Flush any deferred infos as real history rows. Called from the boss's
139
- * turn_end event handler in the orchestrator. */
140
- flushEndOfTurnInfos() {
141
- if (state.pendingEndOfTurnInfos.length === 0)
142
- return;
143
- const newRows = state.pendingEndOfTurnInfos.map(({ text, level }) => ({
144
- kind: "info",
145
- id: id(),
146
- text,
147
- level,
148
- }));
149
- state = {
150
- ...state,
151
- history: [...state.history, ...newRows],
152
- pendingEndOfTurnInfos: [],
153
- };
154
- notify();
155
- },
156
- setPendingMessages(n) {
157
- if (state.pendingUserMessages === n)
158
- return;
159
- state = { ...state, pendingUserMessages: n };
160
- notify();
161
- },
162
- startStreaming() {
163
- state = {
164
- ...state,
165
- phase: "working",
166
- activityPhase: "waiting",
167
- retryInfo: null,
168
- runStartMs: Date.now(),
169
- streaming: {
170
- text: "",
171
- thinking: "",
172
- thinkingMs: 0,
173
- tools: [],
174
- startedAt: Date.now(),
175
- thinkingStartedAt: null,
176
- },
177
- };
178
- notify();
179
- },
180
- appendStreamText(text) {
181
- if (!state.streaming)
182
- return;
183
- // If we were thinking, stop the thinking timer and bank elapsed.
184
- const thinking = state.streaming.thinking;
185
- let thinkingMs = state.streaming.thinkingMs;
186
- let thinkingStartedAt = state.streaming.thinkingStartedAt;
187
- if (thinkingStartedAt != null) {
188
- thinkingMs += Date.now() - thinkingStartedAt;
189
- thinkingStartedAt = null;
190
- }
191
- state = {
192
- ...state,
193
- activityPhase: "generating",
194
- streaming: {
195
- ...state.streaming,
196
- text: state.streaming.text + text,
197
- thinking,
198
- thinkingMs,
199
- thinkingStartedAt,
200
- },
201
- };
202
- notify();
203
- },
204
- appendStreamThinking(text) {
205
- if (!state.streaming)
206
- return;
207
- const startedAt = state.streaming.thinkingStartedAt ?? Date.now();
208
- state = {
209
- ...state,
210
- activityPhase: "thinking",
211
- streaming: {
212
- ...state.streaming,
213
- thinking: state.streaming.thinking + text,
214
- thinkingStartedAt: startedAt,
215
- },
216
- };
217
- notify();
218
- },
219
- setActivityPhase(phase) {
220
- if (state.activityPhase === phase)
221
- return;
222
- state = { ...state, activityPhase: phase };
223
- notify();
224
- },
225
- setRetryInfo(info) {
226
- state = {
227
- ...state,
228
- retryInfo: info,
229
- activityPhase: info ? "retrying" : state.activityPhase,
230
- };
231
- notify();
232
- },
233
- startCompaction() {
234
- state = {
235
- ...state,
236
- compaction: {
237
- state: "running",
238
- originalCount: 0,
239
- newCount: 0,
240
- tokensBefore: state.bossInputTokens,
241
- tokensAfter: 0,
242
- },
243
- };
244
- notify();
245
- },
246
- endCompaction(originalCount, newCount) {
247
- const before = state.compaction?.tokensBefore ?? state.bossInputTokens;
248
- state = {
249
- ...state,
250
- compaction: {
251
- state: "done",
252
- originalCount,
253
- newCount,
254
- tokensBefore: before,
255
- tokensAfter: state.bossInputTokens,
256
- },
257
- };
258
- notify();
259
- },
260
- cancelCompaction() {
261
- state = { ...state, compaction: null };
262
- notify();
263
- },
264
- /** Read-only accessor for the orchestrator (which lives outside React). */
265
- getInputTokens() {
266
- return state.bossInputTokens;
267
- },
268
- setBossInputTokens(tokens) {
269
- if (state.bossInputTokens === tokens)
270
- return;
271
- state = { ...state, bossInputTokens: tokens };
272
- notify();
273
- },
274
- startTool(toolCallId, name, args) {
275
- if (!state.streaming)
276
- return;
277
- const tool = {
278
- toolCallId,
279
- name,
280
- args,
281
- status: "running",
282
- startedAt: Date.now(),
283
- };
284
- state = {
285
- ...state,
286
- streaming: { ...state.streaming, tools: [...state.streaming.tools, tool] },
287
- };
288
- notify();
289
- },
290
- endTool(toolCallId, isError, durationMs, result, details) {
291
- if (!state.streaming)
292
- return;
293
- const tool = state.streaming.tools.find((t) => t.toolCallId === toolCallId);
294
- const remaining = state.streaming.tools.filter((t) => t.toolCallId !== toolCallId);
295
- if (!tool) {
296
- notify();
297
- return;
298
- }
299
- const historyItem = {
300
- kind: "tool",
301
- id: id(),
302
- toolCallId: tool.toolCallId,
303
- name: tool.name,
304
- args: tool.args,
305
- isError,
306
- durationMs,
307
- result,
308
- details,
309
- };
310
- // Phase 1: shrink the live area (remove from streaming.tools), queue the
311
- // committed tool for Static. Phase 2 happens in BossApp's useEffect.
312
- state = {
313
- ...state,
314
- streaming: { ...state.streaming, tools: remaining },
315
- pendingFlush: [...state.pendingFlush, historyItem],
316
- flushGeneration: state.flushGeneration + 1,
317
- };
318
- notify();
319
- },
320
- /**
321
- * Flush any pending streaming text into the pendingFlush queue. The actual
322
- * commit to history happens on the next render cycle (two-phase flush) so
323
- * Ink doesn't clip long responses.
324
- * Called on tool_call_start and turn_end so text/tool order is preserved.
325
- */
326
- flushPendingText() {
327
- if (!state.streaming)
328
- return;
329
- const text = state.streaming.text.trim();
330
- if (!text)
331
- return;
332
- const thinking = state.streaming.thinking.trim();
333
- const item = {
334
- kind: "assistant",
335
- id: id(),
336
- text,
337
- durationMs: Date.now() - state.streaming.startedAt,
338
- thinking: thinking ? thinking : undefined,
339
- thinkingMs: thinking ? state.streaming.thinkingMs : undefined,
340
- };
341
- state = {
342
- ...state,
343
- streaming: {
344
- ...state.streaming,
345
- text: "",
346
- thinking: "",
347
- thinkingMs: 0,
348
- thinkingStartedAt: null,
349
- startedAt: Date.now(),
350
- },
351
- pendingFlush: [...state.pendingFlush, item],
352
- flushGeneration: state.flushGeneration + 1,
353
- };
354
- notify();
355
- },
356
- /**
357
- * Phase 2 of the two-phase flush. Move queued items into history. Called by
358
- * a useEffect in BossApp when flushGeneration changes — guaranteed to run
359
- * AFTER React has painted the live-area shrinkage from phase 1.
360
- */
361
- commitPendingFlush() {
362
- if (state.pendingFlush.length === 0)
363
- return;
364
- state = {
365
- ...state,
366
- history: [...state.history, ...state.pendingFlush],
367
- pendingFlush: [],
368
- };
369
- notify();
370
- },
371
- /**
372
- * Called when the user interrupts (ESC / Ctrl+C while running). Stops all
373
- * in-flight running tools, queueing them in pendingFlush as errored "Stopped."
374
- * entries — matches ggcoder's onAborted behavior so the user sees the same
375
- * visual feedback for an aborted run.
376
- */
377
- interruptStreaming() {
378
- if (!state.streaming)
379
- return;
380
- const stoppedItems = [];
381
- const remainingTools = [];
382
- for (const t of state.streaming.tools) {
383
- if (t.status === "running") {
384
- stoppedItems.push({
385
- kind: "tool",
386
- id: id(),
387
- toolCallId: t.toolCallId,
388
- name: t.name,
389
- args: t.args,
390
- isError: true,
391
- durationMs: 0,
392
- result: "Stopped.",
393
- });
394
- }
395
- else {
396
- remainingTools.push(t);
397
- }
398
- }
399
- if (stoppedItems.length === 0)
400
- return;
401
- state = {
402
- ...state,
403
- streaming: { ...state.streaming, tools: remainingTools },
404
- pendingFlush: [...state.pendingFlush, ...stoppedItems],
405
- flushGeneration: state.flushGeneration + 1,
406
- };
407
- notify();
408
- },
409
- /**
410
- * Tear down the streaming session. By this point, tool_call_end and turn_end
411
- * handlers have already flushed text + tools into pendingFlush in proper order.
412
- * Anything left is a final text tail (no tool followed it) — also goes through
413
- * the two-phase queue so it doesn't clip.
414
- */
415
- finishStreaming() {
416
- if (!state.streaming) {
417
- state = { ...state, phase: "idle" };
418
- notify();
419
- return;
420
- }
421
- const items = [];
422
- const tail = state.streaming.text.trim();
423
- if (tail) {
424
- const thinking = state.streaming.thinking.trim();
425
- items.push({
426
- kind: "assistant",
427
- id: id(),
428
- text: tail,
429
- durationMs: Date.now() - state.streaming.startedAt,
430
- thinking: thinking ? thinking : undefined,
431
- thinkingMs: thinking ? state.streaming.thinkingMs : undefined,
432
- });
433
- }
434
- // Defensive: any running tools without a tool_call_end (shouldn't happen).
435
- for (const t of state.streaming.tools) {
436
- items.push({
437
- kind: "tool",
438
- id: id(),
439
- toolCallId: t.toolCallId,
440
- name: t.name,
441
- args: t.args,
442
- isError: t.status === "error",
443
- durationMs: t.durationMs ?? 0,
444
- result: t.result ?? "",
445
- details: t.details,
446
- });
447
- }
448
- state = {
449
- ...state,
450
- streaming: null,
451
- phase: "idle",
452
- activityPhase: "idle",
453
- retryInfo: null,
454
- runStartMs: null,
455
- pendingFlush: items.length > 0 ? [...state.pendingFlush, ...items] : state.pendingFlush,
456
- flushGeneration: items.length > 0 ? state.flushGeneration + 1 : state.flushGeneration,
457
- };
458
- notify();
459
- },
460
- setWorkerStatus(name, status) {
461
- state = {
462
- ...state,
463
- workers: state.workers.map((w) => {
464
- if (w.name !== name)
465
- return w;
466
- const nowWorking = status === "working";
467
- const wasWorking = w.status === "working";
468
- return {
469
- ...w,
470
- status,
471
- workStartedAt: nowWorking ? (wasWorking ? w.workStartedAt : Date.now()) : null,
472
- };
473
- }),
474
- };
475
- notify();
476
- },
477
- appendWorkerEvent(summary) {
478
- state = {
479
- ...state,
480
- history: [
481
- ...state.history,
482
- {
483
- kind: "worker_event",
484
- id: id(),
485
- project: summary.project,
486
- status: summary.status,
487
- finalText: summary.finalText,
488
- toolsUsed: summary.toolsUsed,
489
- turnIndex: summary.turnIndex,
490
- timestamp: summary.timestamp,
491
- },
492
- ],
493
- workers: state.workers.map((w) => w.name === summary.project
494
- ? { ...w, status: summary.status, workStartedAt: null, lastSummary: summary }
495
- : w),
496
- };
497
- notify();
498
- },
499
- appendWorkerError(project, message, timestamp) {
500
- state = {
501
- ...state,
502
- history: [...state.history, { kind: "worker_error", id: id(), project, message, timestamp }],
503
- workers: state.workers.map((w) => w.name === project ? { ...w, status: "error", workStartedAt: null } : w),
504
- };
505
- notify();
506
- },
507
- setScope(scope) {
508
- if (state.scope === scope)
509
- return;
510
- state = { ...state, scope };
511
- notify();
512
- },
513
- /** Cycle scope through ["all", ...worker names]. Wraps around. */
514
- cycleScope() {
515
- const names = ["all", ...state.workers.map((w) => w.name)];
516
- if (names.length === 0)
517
- return;
518
- const idx = names.indexOf(state.scope);
519
- const next = names[(idx + 1) % names.length] ?? "all";
520
- state = { ...state, scope: next };
521
- notify();
522
- },
523
- setExitPending(pending) {
524
- if (state.exitPending === pending)
525
- return;
526
- state = { ...state, exitPending: pending };
527
- notify();
528
- },
529
- reset() {
530
- state = initialState;
531
- notify();
532
- },
533
- /**
534
- * Rebuild the visible chat history from a persisted Message[] (boss session
535
- * resume). Pairs assistant tool_use blocks with their tool_result blocks
536
- * so completed tools render in scrollback as if they'd just happened.
537
- */
538
- restoreHistory(messages) {
539
- const toolResults = new Map();
540
- for (const m of messages) {
541
- if (m.role === "tool") {
542
- for (const tr of m.content)
543
- toolResults.set(tr.toolCallId, tr);
544
- }
545
- }
546
- const items = [];
547
- for (const m of messages) {
548
- if (m.role === "user") {
549
- const text = userMessageText(m.content);
550
- if (!text)
551
- continue;
552
- // Strip the scope prefix the user never typed — only the boss sees it.
553
- const cleaned = text.replace(/^\[scope:[^\]]+\]\s*/, "");
554
- items.push({ kind: "user", id: id(), text: cleaned, timestamp: Date.now() });
555
- }
556
- else if (m.role === "assistant") {
557
- const parts = Array.isArray(m.content)
558
- ? m.content
559
- : [{ type: "text", text: m.content }];
560
- let textBuf = "";
561
- for (const p of parts) {
562
- if (isText(p)) {
563
- textBuf += p.text;
564
- }
565
- else if (isToolCall(p)) {
566
- // Flush any preceding text as a single assistant block first.
567
- if (textBuf.trim()) {
568
- items.push({
569
- kind: "assistant",
570
- id: id(),
571
- text: textBuf.trim(),
572
- durationMs: 0,
573
- });
574
- textBuf = "";
575
- }
576
- const result = toolResults.get(p.id);
577
- const resultText = result ? toolResultText(result.content) : "";
578
- items.push({
579
- kind: "tool",
580
- id: id(),
581
- toolCallId: p.id,
582
- name: p.name,
583
- args: p.args,
584
- isError: result?.isError ?? false,
585
- durationMs: 0,
586
- result: resultText,
587
- });
588
- }
589
- // thinking / image / server_tool / raw — skipped for restore.
590
- }
591
- if (textBuf.trim()) {
592
- items.push({
593
- kind: "assistant",
594
- id: id(),
595
- text: textBuf.trim(),
596
- durationMs: 0,
597
- });
598
- }
599
- }
600
- // tool messages handled via the toolResults map above; skip.
601
- }
602
- state = { ...state, history: [...state.history, ...items] };
603
- notify();
604
- },
605
- /** /clear handler: wipe history but keep workers, model info, etc. */
606
- clearHistory() {
607
- state = {
608
- ...state,
609
- history: [],
610
- pendingFlush: [],
611
- flushGeneration: state.flushGeneration + 1,
612
- streaming: null,
613
- phase: "idle",
614
- activityPhase: "idle",
615
- retryInfo: null,
616
- compaction: null,
617
- bossInputTokens: 0,
618
- runStartMs: null,
619
- };
620
- notify();
621
- },
622
- };
623
- //# sourceMappingURL=boss-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boss-store.js","sourceRoot":"","sources":["../src/boss-store.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ProjectSpec } from "./types.js";
2
- export declare function buildBossSystemPrompt(projects: ProjectSpec[]): string;
3
- //# sourceMappingURL=boss-system-prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boss-system-prompt.d.ts","sourceRoot":"","sources":["../src/boss-system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CA4KrE"}