codekin 0.6.4 → 0.7.0

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 (86) hide show
  1. package/README.md +8 -5
  2. package/bin/codekin.mjs +69 -6
  3. package/dist/assets/index-CLuQVRRb.css +1 -0
  4. package/dist/assets/index-JVnFWiSw.js +185 -0
  5. package/dist/index.html +2 -2
  6. package/package.json +6 -4
  7. package/server/dist/anthropic-models.d.ts +40 -0
  8. package/server/dist/anthropic-models.js +212 -0
  9. package/server/dist/anthropic-models.js.map +1 -0
  10. package/server/dist/claude-process.d.ts +32 -3
  11. package/server/dist/claude-process.js +129 -9
  12. package/server/dist/claude-process.js.map +1 -1
  13. package/server/dist/codex-process.d.ts +147 -0
  14. package/server/dist/codex-process.js +741 -0
  15. package/server/dist/codex-process.js.map +1 -0
  16. package/server/dist/coding-process.d.ts +16 -4
  17. package/server/dist/coding-process.js +10 -0
  18. package/server/dist/coding-process.js.map +1 -1
  19. package/server/dist/commit-event-handler.d.ts +14 -1
  20. package/server/dist/commit-event-handler.js +40 -8
  21. package/server/dist/commit-event-handler.js.map +1 -1
  22. package/server/dist/config.d.ts +25 -0
  23. package/server/dist/config.js +42 -0
  24. package/server/dist/config.js.map +1 -1
  25. package/server/dist/opencode-process.d.ts +142 -5
  26. package/server/dist/opencode-process.js +664 -84
  27. package/server/dist/opencode-process.js.map +1 -1
  28. package/server/dist/orchestrator-children.d.ts +94 -7
  29. package/server/dist/orchestrator-children.js +375 -65
  30. package/server/dist/orchestrator-children.js.map +1 -1
  31. package/server/dist/orchestrator-manager.d.ts +10 -0
  32. package/server/dist/orchestrator-manager.js +70 -18
  33. package/server/dist/orchestrator-manager.js.map +1 -1
  34. package/server/dist/orchestrator-monitor.d.ts +7 -1
  35. package/server/dist/orchestrator-monitor.js +62 -19
  36. package/server/dist/orchestrator-monitor.js.map +1 -1
  37. package/server/dist/orchestrator-notify.d.ts +42 -0
  38. package/server/dist/orchestrator-notify.js +42 -0
  39. package/server/dist/orchestrator-notify.js.map +1 -0
  40. package/server/dist/orchestrator-outbox.d.ts +48 -0
  41. package/server/dist/orchestrator-outbox.js +154 -0
  42. package/server/dist/orchestrator-outbox.js.map +1 -0
  43. package/server/dist/orchestrator-session-router.js +43 -1
  44. package/server/dist/orchestrator-session-router.js.map +1 -1
  45. package/server/dist/prompt-router.d.ts +22 -1
  46. package/server/dist/prompt-router.js +94 -11
  47. package/server/dist/prompt-router.js.map +1 -1
  48. package/server/dist/session-archive.js +11 -1
  49. package/server/dist/session-archive.js.map +1 -1
  50. package/server/dist/session-lifecycle.d.ts +1 -0
  51. package/server/dist/session-lifecycle.js +37 -0
  52. package/server/dist/session-lifecycle.js.map +1 -1
  53. package/server/dist/session-manager.d.ts +49 -2
  54. package/server/dist/session-manager.js +221 -33
  55. package/server/dist/session-manager.js.map +1 -1
  56. package/server/dist/session-naming.d.ts +4 -0
  57. package/server/dist/session-naming.js +26 -5
  58. package/server/dist/session-naming.js.map +1 -1
  59. package/server/dist/session-routes.js +42 -2
  60. package/server/dist/session-routes.js.map +1 -1
  61. package/server/dist/stepflow-handler.js +2 -2
  62. package/server/dist/stepflow-handler.js.map +1 -1
  63. package/server/dist/tsconfig.tsbuildinfo +1 -1
  64. package/server/dist/types.d.ts +24 -3
  65. package/server/dist/types.js +1 -9
  66. package/server/dist/types.js.map +1 -1
  67. package/server/dist/upload-routes.d.ts +7 -0
  68. package/server/dist/upload-routes.js +85 -28
  69. package/server/dist/upload-routes.js.map +1 -1
  70. package/server/dist/webhook-handler.js +3 -3
  71. package/server/dist/webhook-handler.js.map +1 -1
  72. package/server/dist/workflow-config.d.ts +2 -2
  73. package/server/dist/workflow-engine.d.ts +20 -0
  74. package/server/dist/workflow-engine.js +52 -15
  75. package/server/dist/workflow-engine.js.map +1 -1
  76. package/server/dist/workflow-loader.d.ts +5 -5
  77. package/server/dist/workflow-loader.js +169 -54
  78. package/server/dist/workflow-loader.js.map +1 -1
  79. package/server/dist/workflow-routes.js +36 -2
  80. package/server/dist/workflow-routes.js.map +1 -1
  81. package/server/dist/ws-message-handler.js +24 -9
  82. package/server/dist/ws-message-handler.js.map +1 -1
  83. package/server/dist/ws-server.js +53 -11
  84. package/server/dist/ws-server.js.map +1 -1
  85. package/dist/assets/index-BRB_Ksyk.js +0 -182
  86. package/dist/assets/index-Q2WSVlHo.css +0 -1
@@ -6,14 +6,37 @@
6
6
  * and result polling.
7
7
  */
8
8
  import { randomUUID } from 'crypto';
9
+ import { execFile } from 'child_process';
9
10
  import { getAgentDisplayName } from './config.js';
11
+ import { sendOrchestratorNotification, } from './orchestrator-notify.js';
12
+ /** Statuses considered terminal — once entered, the child is done. */
13
+ const TERMINAL_STATUSES = new Set([
14
+ 'completed',
15
+ 'failed',
16
+ 'timed_out',
17
+ ]);
18
+ const defaultExec = (cmd, args, cwd) => new Promise((resolvePromise, rejectPromise) => {
19
+ execFile(cmd, args, { cwd, timeout: 15_000, maxBuffer: 1024 * 1024 }, (err, stdout) => {
20
+ if (err)
21
+ rejectPromise(err instanceof Error ? err : new Error(`${cmd} failed`));
22
+ else
23
+ resolvePromise(stdout);
24
+ });
25
+ });
10
26
  // ---------------------------------------------------------------------------
11
27
  // Constants
12
28
  // ---------------------------------------------------------------------------
13
29
  const MAX_CONCURRENT = 5;
14
- const DEFAULT_TIMEOUT_MS = 600_000; // 10 minutes
30
+ const DEFAULT_TIMEOUT_MS = 1_800_000; // 30 minutes of working time
31
+ /**
32
+ * Separate budget for time spent blocked on a pending approval or question.
33
+ * The working-time clock is paused while blocked; this cap ensures a child
34
+ * waiting on an answer that never comes still terminates eventually.
35
+ */
36
+ const MAX_BLOCKED_MS = 1_800_000; // 30 minutes
15
37
  const CHILD_RETENTION_MS = 3_600_000; // keep completed/failed children for 1 hour
16
38
  const MAX_RETAINED_CHILDREN = 100; // hard cap on total entries
39
+ const MAX_NOTIFIED_PROMPT_IDS = 500; // cap on the blocked-prompt dedup set
17
40
  /**
18
41
  * Default allowed tools for agent child sessions. Covers standard dev
19
42
  * operations without granting arbitrary shell access. Destructive commands
@@ -34,6 +57,12 @@ export const AGENT_CHILD_ALLOWED_TOOLS = [
34
57
  // Build / lint / test tools
35
58
  'Bash(node:*)', 'Bash(tsc:*)', 'Bash(eslint:*)', 'Bash(prettier:*)',
36
59
  'Bash(cargo:*)', 'Bash(go:*)', 'Bash(make:*)', 'Bash(pip:*)',
60
+ // Python toolchain (linting/tests in Python repos)
61
+ 'Bash(python3:*)', 'Bash(pytest:*)',
62
+ // Text/data processing (read-only or scoped to working dir)
63
+ 'Bash(sed:*)', 'Bash(rg:*)', 'Bash(jq:*)',
64
+ // Non-destructive file management (no rm — deletion still needs approval)
65
+ 'Bash(mkdir:*)', 'Bash(cp:*)', 'Bash(mv:*)', 'Bash(touch:*)',
37
66
  // Safe filesystem inspection (read-only)
38
67
  'Bash(ls:*)', 'Bash(cat:*)', 'Bash(wc:*)',
39
68
  'Bash(head:*)', 'Bash(tail:*)', 'Bash(sort:*)', 'Bash(diff:*)',
@@ -47,8 +76,107 @@ export const AGENT_CHILD_ALLOWED_TOOLS = [
47
76
  export class OrchestratorChildManager {
48
77
  children = new Map();
49
78
  sessions;
50
- constructor(sessions) {
79
+ notify;
80
+ /** Prompt requestIds already reported to the parent (single-fire per prompt). */
81
+ notifiedPromptIds = new Set();
82
+ /**
83
+ * Per-child timeout controllers — lets the prompt handler pause the
84
+ * working-time clock the moment a child blocks on an approval/question,
85
+ * instead of waiting for the next monitor event.
86
+ */
87
+ timeoutControllers = new Map();
88
+ exec;
89
+ constructor(sessions, opts) {
51
90
  this.sessions = sessions;
91
+ this.notify = opts?.notify ?? ((args) => sendOrchestratorNotification(sessions, args));
92
+ this.exec = opts?.exec ?? defaultExec;
93
+ // Push a realtime notification to the parent orchestrator whenever one of
94
+ // our children blocks on a tool approval or question. Without this, a
95
+ // blocked child would silently sit until its timeout killed it.
96
+ this.sessions.onSessionPrompt((sessionId, promptType, toolName, requestId) => {
97
+ this.handleChildPrompt(sessionId, promptType, toolName, requestId);
98
+ });
99
+ }
100
+ /**
101
+ * Handle a prompt event from any session: if it belongs to one of our
102
+ * active children, mark the child as blocked and notify the parent
103
+ * orchestrator with everything it needs to unblock the child.
104
+ */
105
+ handleChildPrompt(sessionId, promptType, toolName, requestId) {
106
+ const child = this.children.get(sessionId);
107
+ if (!child || TERMINAL_STATUSES.has(child.status))
108
+ return;
109
+ child.status = 'blocked';
110
+ // Pause the working-time clock while the child waits for an answer.
111
+ this.timeoutControllers.get(sessionId)?.pause();
112
+ // Single-fire per requestId (re-broadcasts on client join would otherwise
113
+ // spam the parent). Prompts without a requestId can't be deduped or
114
+ // responded to by ID — still notify, but only describe them generically.
115
+ const dedupKey = requestId ?? `${sessionId}:${toolName ?? 'unknown'}`;
116
+ if (this.notifiedPromptIds.has(dedupKey))
117
+ return;
118
+ this.notifiedPromptIds.add(dedupKey);
119
+ if (this.notifiedPromptIds.size > MAX_NOTIFIED_PROMPT_IDS) {
120
+ // Drop oldest entries (Set preserves insertion order)
121
+ for (const id of this.notifiedPromptIds) {
122
+ this.notifiedPromptIds.delete(id);
123
+ if (this.notifiedPromptIds.size <= MAX_NOTIFIED_PROMPT_IDS)
124
+ break;
125
+ }
126
+ }
127
+ const parentSessionId = child.request.parentSessionId;
128
+ if (!parentSessionId)
129
+ return;
130
+ try {
131
+ this.notify({
132
+ parentSessionId,
133
+ label: 'Child Session Blocked',
134
+ title: `Session: ${getAgentDisplayName().toLowerCase()}:${child.request.branchName} (${child.id})`,
135
+ body: this.buildBlockedNotificationBody(child, promptType, toolName, requestId),
136
+ });
137
+ }
138
+ catch (err) {
139
+ console.warn(`[orchestrator-child] Failed to notify parent about blocked child ${child.id}:`, err);
140
+ }
141
+ }
142
+ /** Build the body for a blocked-child notification, including the exact
143
+ * API call the orchestrator can use to respond. */
144
+ buildBlockedNotificationBody(child, promptType, toolName, requestId) {
145
+ const lines = [
146
+ 'Status: blocked — waiting for a response',
147
+ `Branch: ${child.request.branchName}`,
148
+ `Repo: ${child.request.repo}`,
149
+ `Prompt: ${promptType}${toolName ? ` (${toolName})` : ''}`,
150
+ ];
151
+ // Include a one-line summary of what the tool wants to do, if available.
152
+ const detail = this.describePendingPrompt(child.id, requestId);
153
+ if (detail)
154
+ lines.push(`Detail: ${detail}`);
155
+ if (requestId) {
156
+ lines.push(`RequestId: ${requestId}`, 'Respond with:', `curl -s -X POST "http://localhost:$CODEKIN_PORT/api/orchestrator/sessions/${child.id}/respond" \\`, ' -H "Authorization: Bearer $CODEKIN_AUTH_TOKEN" -H "Content-Type: application/json" \\', promptType === 'question'
157
+ ? ` -d '{"requestId": "${requestId}", "value": "YOUR_ANSWER"}'`
158
+ : ` -d '{"requestId": "${requestId}", "value": "allow"}' # or "deny"`);
159
+ }
160
+ lines.push('Unanswered permission prompts are auto-denied after 5 minutes. If unsure, ask the user.');
161
+ return lines.join('\n');
162
+ }
163
+ /** One-line summary of the pending prompt's tool input (e.g. the Bash command). */
164
+ describePendingPrompt(sessionId, requestId) {
165
+ if (!requestId)
166
+ return null;
167
+ const session = this.sessions.get(sessionId);
168
+ if (!session)
169
+ return null;
170
+ const pending = session.pendingToolApprovals.get(requestId) ?? session.pendingControlRequests.get(requestId);
171
+ if (!pending)
172
+ return null;
173
+ const input = pending.toolInput;
174
+ if (typeof input.command === 'string')
175
+ return `$ ${input.command.split('\n')[0].slice(0, 200)}`;
176
+ if (typeof input.file_path === 'string')
177
+ return input.file_path;
178
+ const json = JSON.stringify(input);
179
+ return json.length > 2 ? json.slice(0, 200) : null;
52
180
  }
53
181
  /** Get all active/recent child sessions. */
54
182
  list() {
@@ -64,7 +192,7 @@ export class OrchestratorChildManager {
64
192
  purgeStaleChildren() {
65
193
  const now = Date.now();
66
194
  for (const [id, child] of this.children) {
67
- if (child.status === 'starting' || child.status === 'running')
195
+ if (!TERMINAL_STATUSES.has(child.status))
68
196
  continue;
69
197
  if (child.completedAt && now - new Date(child.completedAt).getTime() > CHILD_RETENTION_MS) {
70
198
  this.children.delete(id);
@@ -73,7 +201,7 @@ export class OrchestratorChildManager {
73
201
  // Hard cap: if still over limit, remove oldest completed entries
74
202
  if (this.children.size > MAX_RETAINED_CHILDREN) {
75
203
  const completed = Array.from(this.children.entries())
76
- .filter(([, c]) => c.status !== 'starting' && c.status !== 'running')
204
+ .filter(([, c]) => TERMINAL_STATUSES.has(c.status))
77
205
  .sort((a, b) => (a[1].completedAt ?? '').localeCompare(b[1].completedAt ?? ''));
78
206
  while (this.children.size > MAX_RETAINED_CHILDREN && completed.length > 0) {
79
207
  const [id] = completed.shift();
@@ -84,7 +212,7 @@ export class OrchestratorChildManager {
84
212
  /** Count currently active (non-terminal) child sessions. */
85
213
  activeCount() {
86
214
  return Array.from(this.children.values())
87
- .filter(c => c.status === 'starting' || c.status === 'running')
215
+ .filter(c => !TERMINAL_STATUSES.has(c.status))
88
216
  .length;
89
217
  }
90
218
  /**
@@ -107,6 +235,9 @@ export class OrchestratorChildManager {
107
235
  completedAt: null,
108
236
  result: null,
109
237
  error: null,
238
+ terminalNotifiedAt: null,
239
+ worktree: request.useWorktree ? 'failed' : 'none', // upgraded to 'active' on success
240
+ worktreePath: null,
110
241
  };
111
242
  this.children.set(sessionId, child);
112
243
  try {
@@ -126,7 +257,11 @@ export class OrchestratorChildManager {
126
257
  let worktreeFailed = false;
127
258
  if (request.useWorktree) {
128
259
  const wtPath = await this.sessions.createWorktree(sessionId, request.repo, request.branchName);
129
- if (!wtPath) {
260
+ if (wtPath) {
261
+ child.worktree = 'active';
262
+ child.worktreePath = wtPath;
263
+ }
264
+ else {
130
265
  worktreeFailed = true;
131
266
  console.warn(`[orchestrator-child] Failed to create worktree for ${sessionId}, falling back to main directory`);
132
267
  }
@@ -145,9 +280,84 @@ export class OrchestratorChildManager {
145
280
  child.status = 'failed';
146
281
  child.error = err instanceof Error ? err.message : String(err);
147
282
  child.completedAt = new Date().toISOString();
283
+ this.notifyTerminal(child);
148
284
  return child;
149
285
  }
150
286
  }
287
+ /**
288
+ * Deliver a single terminal-state notification to the parent orchestrator
289
+ * session. No-op (and idempotent) when the child has no parent, the status
290
+ * is not terminal, or a notification has already been delivered.
291
+ */
292
+ notifyTerminal(child) {
293
+ if (child.terminalNotifiedAt)
294
+ return;
295
+ if (!TERMINAL_STATUSES.has(child.status))
296
+ return;
297
+ const parentSessionId = child.request.parentSessionId;
298
+ if (!parentSessionId)
299
+ return;
300
+ const args = {
301
+ parentSessionId,
302
+ label: 'Child Session Stopped',
303
+ title: `Session: ${getAgentDisplayName().toLowerCase()}:${child.request.branchName} (${child.id})`,
304
+ body: this.buildTerminalNotificationBody(child),
305
+ };
306
+ // `notify` returns true on immediate delivery AND when the notification
307
+ // was queued in the persistent outbox (the outbox owns replay from that
308
+ // point on) — both count as handled, so we stamp `terminalNotifiedAt`.
309
+ // It returns false only when queueing itself failed; we leave the stamp
310
+ // unset so a later terminal-path call can retry. Idempotency is still
311
+ // enforced by the early-return on terminalNotifiedAt at the top.
312
+ let delivered = false;
313
+ try {
314
+ delivered = this.notify(args);
315
+ }
316
+ catch (err) {
317
+ console.warn(`[orchestrator-child] Failed to notify parent ${parentSessionId} for ${child.id}:`, err);
318
+ }
319
+ if (delivered) {
320
+ child.terminalNotifiedAt = new Date().toISOString();
321
+ }
322
+ }
323
+ /**
324
+ * Build the multi-line body for a terminal-state notification: status,
325
+ * branch, repo, optional error string, and an action hint tailored to
326
+ * the terminal status.
327
+ */
328
+ buildTerminalNotificationBody(child) {
329
+ const lines = [
330
+ `Status: ${child.status}`,
331
+ `Branch: ${child.request.branchName}`,
332
+ `Repo: ${child.request.repo}`,
333
+ ];
334
+ if (child.error)
335
+ lines.push(`Error: ${child.error}`);
336
+ lines.push(this.buildHintLine(child));
337
+ return lines.join('\n');
338
+ }
339
+ /**
340
+ * Build a single-line hint about how to proceed, tailored to the status:
341
+ * - timed_out / failed → point at the worktree so partial work can be salvaged
342
+ * - completed → remind that the PR may still need to be opened
343
+ */
344
+ buildHintLine(child) {
345
+ const session = this.sessions.get(child.id);
346
+ const worktreePath = session?.worktreePath;
347
+ if (child.status === 'timed_out' || child.status === 'failed') {
348
+ const where = worktreePath ?? `${child.request.repo} (no worktree)`;
349
+ return `Inspect worktree at ${where} for partial work.`;
350
+ }
351
+ if (child.status === 'completed') {
352
+ const policy = child.request.completionPolicy;
353
+ if (policy === 'pr')
354
+ return 'Verify the PR was opened — push and create one if not.';
355
+ if (policy === 'merge')
356
+ return 'Verify the branch was pushed.';
357
+ return 'Verify changes were committed locally as expected.';
358
+ }
359
+ return 'Review the child session output before deciding next steps.';
360
+ }
151
361
  /**
152
362
  * Build a focused task prompt for a child session.
153
363
  */
@@ -197,7 +407,6 @@ export class OrchestratorChildManager {
197
407
  let unsubResult;
198
408
  let unsubExit;
199
409
  const nudgedIds = new Set();
200
- const supersededMsgs = new Set();
201
410
  try {
202
411
  await new Promise((resolve) => {
203
412
  let settled = false;
@@ -205,48 +414,130 @@ export class OrchestratorChildManager {
205
414
  settled = true;
206
415
  resolve();
207
416
  } };
208
- // Timeout handler
209
- const timer = setTimeout(() => {
417
+ // Re-read after awaits — a timeout may settle while a ground-truth
418
+ // check is in flight (also defeats overly-eager type narrowing).
419
+ const isSettled = () => settled;
420
+ // ---- Pausable working-time clock -----------------------------------
421
+ // The working budget (timeoutMs) only burns while the child is doing
422
+ // work. When the child blocks on an approval/question, the clock is
423
+ // paused and a separate blocked-time cap (MAX_BLOCKED_MS) takes over
424
+ // so an unanswered prompt still terminates the child eventually.
425
+ let remainingMs = timeoutMs;
426
+ let workStartedAt = Date.now();
427
+ let workTimer = null;
428
+ let blockedTimer = null;
429
+ const clearTimers = () => {
430
+ if (workTimer) {
431
+ clearTimeout(workTimer);
432
+ workTimer = null;
433
+ }
434
+ if (blockedTimer) {
435
+ clearTimeout(blockedTimer);
436
+ blockedTimer = null;
437
+ }
438
+ };
439
+ const fireTimeout = (error) => {
210
440
  if (settled)
211
441
  return;
212
442
  child.status = 'timed_out';
213
- child.error = `Timed out after ${timeoutMs}ms`;
443
+ child.error = error;
214
444
  child.completedAt = new Date().toISOString();
445
+ clearTimers();
215
446
  const session = this.sessions.get(child.id);
216
447
  if (session?.claudeProcess?.isAlive()) {
217
448
  session.claudeProcess.stop();
218
449
  }
219
450
  settle();
220
- }, timeoutMs);
451
+ };
452
+ const pause = () => {
453
+ if (settled || !workTimer)
454
+ return;
455
+ clearTimeout(workTimer);
456
+ workTimer = null;
457
+ remainingMs = Math.max(0, remainingMs - (Date.now() - workStartedAt));
458
+ blockedTimer ??= setTimeout(() => {
459
+ fireTimeout(`Timed out after waiting ${MAX_BLOCKED_MS}ms for a pending approval/answer`);
460
+ }, MAX_BLOCKED_MS);
461
+ };
462
+ const resume = () => {
463
+ if (settled || workTimer)
464
+ return;
465
+ if (blockedTimer) {
466
+ clearTimeout(blockedTimer);
467
+ blockedTimer = null;
468
+ }
469
+ workStartedAt = Date.now();
470
+ workTimer = setTimeout(() => {
471
+ fireTimeout(`Timed out after ${timeoutMs}ms of working time`);
472
+ }, remainingMs);
473
+ };
474
+ // Expose pause/resume to the prompt handler (handleChildPrompt).
475
+ this.timeoutControllers.set(child.id, { pause, resume });
476
+ // Start the working clock.
477
+ workStartedAt = Date.now();
478
+ workTimer = setTimeout(() => {
479
+ fireTimeout(`Timed out after ${timeoutMs}ms of working time`);
480
+ }, remainingMs);
481
+ // Guard against overlapping async ground-truth checks when result
482
+ // events arrive in quick succession.
483
+ let verifying = false;
221
484
  // Result hook: Claude completed a turn
222
485
  const onResult = (sessionId, isError) => {
223
- if (sessionId !== child.id || settled)
486
+ if (sessionId !== child.id || settled || verifying)
224
487
  return;
225
488
  const session = this.sessions.get(child.id);
226
489
  if (!session) {
227
490
  child.status = 'failed';
228
491
  child.error = 'Session was deleted';
229
492
  child.completedAt = new Date().toISOString();
230
- clearTimeout(timer);
493
+ clearTimers();
231
494
  settle();
232
495
  return;
233
496
  }
234
- const text = this.extractText(session.outputHistory);
235
- // Check if the final step was done; if not, nudge (keep listening)
236
- if (this.ensureFinalStep(child, session, text, nudgedIds, supersededMsgs))
497
+ // Don't mark as completed (or nudge) while the session still has
498
+ // pending tool approvals or control requests the Claude process
499
+ // may still be alive and blocked on an approval (e.g. git push).
500
+ // Nudging here would waste the single nudge on a child that cannot
501
+ // act. Keep monitoring; the next result/exit event re-evaluates.
502
+ if (session.pendingToolApprovals.size > 0 || session.pendingControlRequests.size > 0) {
503
+ child.status = 'blocked';
504
+ pause();
237
505
  return;
238
- // Don't mark as completed while the session still has pending
239
- // tool approvals or control requests — the Claude process may
240
- // still be alive and blocked on an approval (e.g. git push).
241
- // Keep monitoring; the next result/exit event will re-evaluate.
242
- if (session.pendingToolApprovals.size > 0 || session.pendingControlRequests.size > 0)
243
- return;
244
- child.status = isError ? 'failed' : 'completed';
245
- child.result = text || null;
246
- child.error = isError ? 'Claude returned an error' : null;
247
- child.completedAt = new Date().toISOString();
248
- clearTimeout(timer);
249
- settle();
506
+ }
507
+ // The prompt (if any) was answered restart the working clock so
508
+ // post-approval work draws from the remaining working budget.
509
+ resume();
510
+ if (child.status === 'blocked')
511
+ child.status = 'running';
512
+ verifying = true;
513
+ void (async () => {
514
+ try {
515
+ const text = this.extractText(session.outputHistory);
516
+ // Ground-truth check: did the final step (PR / push) really land?
517
+ const missing = await this.isFinalStepMissing(child, text);
518
+ if (isSettled())
519
+ return;
520
+ // Final step missing — nudge once, then keep monitoring.
521
+ if (missing && !isError && !nudgedIds.has(child.id) && session.claudeProcess?.isAlive()) {
522
+ nudgedIds.add(child.id);
523
+ this.sessions.sendInput(child.id, this.buildNudgeInstruction(child.request.completionPolicy));
524
+ return;
525
+ }
526
+ child.status = isError ? 'failed' : 'completed';
527
+ child.result = text || null;
528
+ child.error = isError
529
+ ? 'Claude returned an error'
530
+ : missing
531
+ ? `Completion not verified: expected ${child.request.completionPolicy === 'pr' ? 'a pull request' : 'a pushed branch'} but found none`
532
+ : null;
533
+ child.completedAt = new Date().toISOString();
534
+ clearTimers();
535
+ settle();
536
+ }
537
+ finally {
538
+ verifying = false;
539
+ }
540
+ })();
250
541
  };
251
542
  // Exit hook: Claude process exited
252
543
  const onExit = (sessionId, _code, _signal, willRestart) => {
@@ -256,12 +547,23 @@ export class OrchestratorChildManager {
256
547
  return; // Will auto-restart, keep monitoring
257
548
  const session = this.sessions.get(child.id);
258
549
  const text = session ? this.extractText(session.outputHistory) : '';
259
- child.status = text.length > 100 ? 'completed' : 'failed';
260
- child.result = text || null;
261
- child.error = text.length <= 100 ? 'Claude exited without sufficient output' : null;
262
- child.completedAt = new Date().toISOString();
263
- clearTimeout(timer);
264
- settle();
550
+ void (async () => {
551
+ // Process is gone — decide the terminal status from ground truth
552
+ // (did the PR / push land?) rather than transcript length.
553
+ let missing = session ? await this.isFinalStepMissing(child, text) : true;
554
+ // commit-only has no remote artifact to verify; an exit without
555
+ // any output cannot be considered a success.
556
+ if (child.request.completionPolicy === 'commit-only' && !text)
557
+ missing = true;
558
+ if (isSettled())
559
+ return;
560
+ child.status = missing ? 'failed' : 'completed';
561
+ child.result = text || null;
562
+ child.error = missing ? 'Claude exited before the final step could be verified' : null;
563
+ child.completedAt = new Date().toISOString();
564
+ clearTimers();
565
+ settle();
566
+ })();
265
567
  };
266
568
  unsubResult = this.sessions.onSessionResult(onResult);
267
569
  unsubExit = this.sessions.onSessionExit(onExit);
@@ -271,51 +573,59 @@ export class OrchestratorChildManager {
271
573
  // Unsubscribe listeners to prevent accumulation across spawn() calls
272
574
  unsubResult?.();
273
575
  unsubExit?.();
576
+ this.timeoutControllers.delete(child.id);
274
577
  // Safety net: ensure isProcessing is cleared when monitoring ends.
275
578
  // handleClaudeResult should have already done this, but edge cases
276
579
  // (nudge race, missed result event) can leave the flag stuck.
277
580
  this.sessions.clearProcessingFlag(child.id);
581
+ // Push-notify the parent orchestrator so it learns about the terminal
582
+ // state immediately, instead of waiting for the 30-minute polling cron.
583
+ this.notifyTerminal(child);
278
584
  }
279
585
  }
280
586
  /**
281
- * Check whether the session completed the expected final step (PR, push, deploy).
282
- * If not, send a follow-up instruction and return true so monitoring continues.
283
- * Only nudges once per child to avoid infinite loops.
587
+ * Ground-truth check for the child's expected final step. Instead of
588
+ * sniffing the transcript for keywords (which both false-positives on
589
+ * mentions and false-negatives on terse output), ask the real systems:
590
+ * - 'pr': does an open/merged PR exist for the branch? (gh pr list)
591
+ * - 'merge': does the branch exist on the remote? (git ls-remote)
592
+ * - 'commit-only': nothing remote to verify — never missing.
593
+ * Falls back to transcript keyword sniffing when the command fails
594
+ * (e.g. gh not installed, no remote configured).
284
595
  */
285
- ensureFinalStep(child, session, text, nudgedIds, supersededMsgs) {
286
- // Only nudge once per child
287
- if (nudgedIds.has(child.id))
288
- return false;
596
+ async isFinalStepMissing(child, text) {
289
597
  const policy = child.request.completionPolicy;
290
- const lowerText = text.toLowerCase();
291
- let missing = false;
292
- let instruction = '';
598
+ if (policy === 'commit-only')
599
+ return false;
600
+ const cwd = child.worktreePath ?? child.request.repo;
601
+ const branch = child.request.branchName;
293
602
  if (policy === 'pr') {
294
- // Check if a PR was created
295
- const prCreated = lowerText.includes('pull request') || lowerText.includes('created a pr') || lowerText.includes('gh pr create');
296
- if (!prCreated) {
297
- missing = true;
298
- instruction = 'You completed the code changes but did not create a Pull Request. Please push your branch and create a PR now with a clear description of what was changed and why.';
603
+ try {
604
+ const out = await this.exec('gh', ['pr', 'list', '--head', branch, '--state', 'all', '--json', 'number', '--limit', '1'], cwd);
605
+ const parsed = JSON.parse(out);
606
+ return !(Array.isArray(parsed) && parsed.length > 0);
299
607
  }
300
- }
301
- else if (policy === 'merge') {
302
- // Check if changes were pushed
303
- const pushed = lowerText.includes('git push') || lowerText.includes('pushed');
304
- if (!pushed) {
305
- missing = true;
306
- instruction = 'You completed the code changes but did not push them. Please push your changes to the remote now.';
608
+ catch {
609
+ const lower = text.toLowerCase();
610
+ return !(lower.includes('pull request') || lower.includes('created a pr') || lower.includes('gh pr create'));
307
611
  }
308
612
  }
309
- if (missing && instruction && session.claudeProcess?.isAlive()) {
310
- nudgedIds.add(child.id);
311
- // Track the result message as superseded locally rather than mutating history entries
312
- const resultMsg = session.outputHistory.find(m => m.type === 'result');
313
- if (resultMsg)
314
- supersededMsgs.add(resultMsg);
315
- this.sessions.sendInput(child.id, instruction);
316
- return true;
613
+ // policy === 'merge' verify the branch was pushed to the remote
614
+ try {
615
+ const out = await this.exec('git', ['ls-remote', '--heads', 'origin', branch], cwd);
616
+ return out.trim().length === 0;
617
+ }
618
+ catch {
619
+ const lower = text.toLowerCase();
620
+ return !(lower.includes('git push') || lower.includes('pushed'));
621
+ }
622
+ }
623
+ /** Follow-up instruction sent (once) when the final step is missing. */
624
+ buildNudgeInstruction(policy) {
625
+ if (policy === 'pr') {
626
+ return 'You completed the code changes but no Pull Request exists for your branch yet. Please push your branch and create a PR now with a clear description of what was changed and why.';
317
627
  }
318
- return false;
628
+ return 'You completed the code changes but your branch has not been pushed to the remote. Please push your changes now.';
319
629
  }
320
630
  /**
321
631
  * Extract assistant text from session output history.
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator-children.js","sourceRoot":"","sources":["../orchestrator-children.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAGnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAuCjD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,cAAc,GAAG,CAAC,CAAA;AACxB,MAAM,kBAAkB,GAAG,OAAO,CAAA,CAAE,aAAa;AACjD,MAAM,kBAAkB,GAAG,SAAS,CAAA,CAAE,4CAA4C;AAClF,MAAM,qBAAqB,GAAG,GAAG,CAAA,CAAI,4BAA4B;AAEjE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IACvC,qDAAqD;IACrD,aAAa;IACb,4CAA4C;IAC5C,YAAY;IACZ,oDAAoD;IACpD,cAAc;IACd,mBAAmB;IACnB,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa;IAC3E,4BAA4B;IAC5B,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB;IACnE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa;IAC5D,yCAAyC;IACzC,YAAY,EAAE,aAAa,EAAE,YAAY;IACzC,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9D,kBAAkB,EAAE,iBAAiB;IACrC,kBAAkB,EAAE,cAAc,EAAE,aAAa;IACjD,eAAe,EAAE,cAAc;CAChC,CAAA;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,OAAO,wBAAwB;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC1C,QAAQ,CAAgB;IAEhC,YAAY,QAAwB;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,4CAA4C;IAC5C,IAAI;QACF,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,iCAAiC;IACjC,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAA;IACtC,CAAC;IAED,uEAAuE;IAC/D,kBAAkB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAAE,SAAQ;YACvE,IAAI,KAAK,CAAC,WAAW,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,kBAAkB,EAAE,CAAC;gBAC1F,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;QACD,iEAAiE;QACjE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,qBAAqB,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBAClD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;iBACpE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAA;YACjF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,qBAAqB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1E,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,EAAG,CAAA;gBAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;aAC9D,MAAM,CAAA;IACX,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,OAA4B;QACtC,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,+BAA+B,cAAc,sCAAsC,CAAC,CAAA;QACtG,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,EAAE,CAAA;QAC9B,MAAM,WAAW,GAAG,GAAG,mBAAmB,EAAE,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAA;QAClF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAEpC,MAAM,KAAK,GAAiB;YAC1B,EAAE,EAAE,SAAS;YACb,OAAO;YACP,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;SACZ,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAEnC,IAAI,CAAC;YACH,qBAAqB;YACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE;gBAC9C,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,SAAS;gBACb,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,cAAc,EAAE,aAAa;gBAC7B,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,yBAAyB;aAChE,CAAC,CAAA;YAEF,+EAA+E;YAC/E,gFAAgF;YAChF,yEAAyE;YACzE,iEAAiE;YACjE,IAAI,cAAc,GAAG,KAAK,CAAA;YAC1B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;gBAC9F,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,cAAc,GAAG,IAAI,CAAA;oBACrB,OAAO,CAAC,IAAI,CAAC,sDAAsD,SAAS,kCAAkC,CAAC,CAAA;gBACjH,CAAC;YACH,CAAC;YAED,eAAe;YACf,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YACpC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAA;YAExB,qEAAqE;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;YACxD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAE1C,oCAAoC;YACpC,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YAE7B,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAA;YACvB,KAAK,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC9D,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,OAA4B,EAAE,cAAc,GAAG,KAAK;QACtE,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,cAAc,CAAA;QAEzD,MAAM,KAAK,GAAG;YACZ,WAAW,OAAO,CAAC,IAAI,EAAE;YACzB,EAAE;YACF,iBAAiB;YACjB,EAAE;YACF,kCAAkC,mBAAmB,EAAE,8EAA8E;YACrI,EAAE;YACF,aAAa,OAAO,CAAC,IAAI,EAAE;YAC3B,iBAAiB,OAAO,CAAC,UAAU,IAAI;YACvC,EAAE;SACH,CAAA;QAED,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CACR,yBAAyB,EACzB,EAAE,EACF,uEAAuE,OAAO,CAAC,UAAU,KAAK,EAC9F,4FAA4F,EAC5F,EAAE,EACF,2MAA2M,EAC3M,EAAE,CACH,CAAA;QACH,CAAC;QAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CACR,eAAe,EACf,EAAE,EACF,+BAA+B,EAC/B,oDAAoD,EACpD,8CAA8C,EAC9C,uEAAuE,EACvE,EAAE,CACH,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CACR,eAAe,EACf,EAAE,EACF,oCAAoC,OAAO,CAAC,UAAU,IAAI,EAC1D,+BAA+B,EAC/B,oDAAoD,EACpD,8CAA8C,EAC9C,uEAAuE,EACvE,EAAE,CACH,CAAA;YACH,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,gBAAgB,KAAK,OAAO,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CACR,eAAe,EACf,EAAE,EACF,qDAAqD,EACrD,oDAAoD,EACpD,wCAAwC,EACxC,EAAE,CACH,CAAA;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CACR,eAAe,EACf,EAAE,EACF,+BAA+B,EAC/B,oDAAoD,EACpD,sCAAsC,EACtC,EAAE,CACH,CAAA;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CACR,eAAe,EACf,EAAE,EACF,gDAAgD,EAChD,kCAAkC,EAClC,wEAAwE,EACxE,0DAA0D,CAC3D,CAAA;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CACR,EAAE,EACF,6BAA6B,EAC7B,EAAE,EACF,yGAAyG,EACzG,oHAAoH,EACpH,mBAAmB,OAAO,CAAC,UAAU,+BAA+B,EACpE,EAAE,EACF,uIAAuI,CACxI,CAAA;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,YAAY,CAAC,KAAmB;QAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAA;QAC/D,IAAI,WAAqC,CAAA;QACzC,IAAI,SAAmC,CAAA;QACvC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;QACnC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAmB,CAAA;QAEjD,IAAI,CAAC;YACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,OAAO,GAAG,KAAK,CAAA;gBACnB,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAAC,OAAO,GAAG,IAAI,CAAC;oBAAC,OAAO,EAAE,CAAA;gBAAC,CAAC,CAAC,CAAC,CAAA;gBAEpE,kBAAkB;gBAClB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,IAAI,OAAO;wBAAE,OAAM;oBACnB,KAAK,CAAC,MAAM,GAAG,WAAW,CAAA;oBAC1B,KAAK,CAAC,KAAK,GAAG,mBAAmB,SAAS,IAAI,CAAA;oBAC9C,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;oBAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBAC3C,IAAI,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;wBACtC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;oBAC9B,CAAC;oBACD,MAAM,EAAE,CAAA;gBACV,CAAC,EAAE,SAAS,CAAC,CAAA;gBAEb,uCAAuC;gBACvC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,OAAgB,EAAE,EAAE;oBACvD,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,IAAI,OAAO;wBAAE,OAAM;oBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAA;wBACvB,KAAK,CAAC,KAAK,GAAG,qBAAqB,CAAA;wBACnC,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;wBAC5C,YAAY,CAAC,KAAK,CAAC,CAAA;wBACnB,MAAM,EAAE,CAAA;wBACR,OAAM;oBACR,CAAC;oBAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;oBACpD,mEAAmE;oBACnE,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC;wBAAE,OAAM;oBAEjF,8DAA8D;oBAC9D,8DAA8D;oBAC9D,6DAA6D;oBAC7D,gEAAgE;oBAChE,IAAI,OAAO,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,sBAAsB,CAAC,IAAI,GAAG,CAAC;wBAAE,OAAM;oBAE5F,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAA;oBAC/C,KAAK,CAAC,MAAM,GAAG,IAAI,IAAI,IAAI,CAAA;oBAC3B,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAA;oBACzD,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;oBAC5C,YAAY,CAAC,KAAK,CAAC,CAAA;oBACnB,MAAM,EAAE,CAAA;gBACV,CAAC,CAAA;gBAED,mCAAmC;gBACnC,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,KAAoB,EAAE,OAAsB,EAAE,WAAoB,EAAE,EAAE;oBACvG,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,IAAI,OAAO;wBAAE,OAAM;oBAC7C,IAAI,WAAW;wBAAE,OAAM,CAAE,qCAAqC;oBAE9D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;oBACnE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;oBACzD,KAAK,CAAC,MAAM,GAAG,IAAI,IAAI,IAAI,CAAA;oBAC3B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,IAAI,CAAA;oBACnF,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;oBAC5C,YAAY,CAAC,KAAK,CAAC,CAAA;oBACnB,MAAM,EAAE,CAAA;gBACV,CAAC,CAAA;gBAED,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;gBACrD,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,qEAAqE;YACrE,WAAW,EAAE,EAAE,CAAA;YACf,SAAS,EAAE,EAAE,CAAA;YACb,mEAAmE;YACnE,mEAAmE;YACnE,8DAA8D;YAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,eAAe,CACrB,KAAmB,EACnB,OAAgB,EAChB,IAAY,EACZ,SAAsB,EACtB,cAAoC;QAEpC,4BAA4B;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAA;QAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAA;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEpC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,WAAW,GAAG,EAAE,CAAA;QAEpB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,4BAA4B;YAC5B,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;YAChI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG,IAAI,CAAA;gBACd,WAAW,GAAG,qKAAqK,CAAA;YACrL,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,+BAA+B;YAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7E,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,GAAG,IAAI,CAAA;gBACd,WAAW,GAAG,mGAAmG,CAAA;YACnH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;YAC/D,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACvB,sFAAsF;YACtF,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YACtE,IAAI,SAAS;gBAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;YAC9C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,OAA0B;QAC5C,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAqD,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;aACrF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChB,IAAI,CAAC,EAAE,CAAC,CAAA;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"orchestrator-children.js","sourceRoot":"","sources":["../orchestrator-children.ts"],"names":[],"mappings":"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"}