@telora/daemon 0.14.1 → 0.14.3

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 (81) hide show
  1. package/build-info.json +2 -2
  2. package/dist/completion-handler.d.ts.map +1 -1
  3. package/dist/completion-handler.js +3 -0
  4. package/dist/completion-handler.js.map +1 -1
  5. package/dist/control-state.d.ts.map +1 -1
  6. package/dist/control-state.js +2 -0
  7. package/dist/control-state.js.map +1 -1
  8. package/dist/crash-recovery-cleanup.d.ts.map +1 -1
  9. package/dist/crash-recovery-cleanup.js +1 -0
  10. package/dist/crash-recovery-cleanup.js.map +1 -1
  11. package/dist/crash-recovery.d.ts.map +1 -1
  12. package/dist/crash-recovery.js +2 -0
  13. package/dist/crash-recovery.js.map +1 -1
  14. package/dist/qa-orchestrator.d.ts.map +1 -1
  15. package/dist/qa-orchestrator.js +7 -5
  16. package/dist/qa-orchestrator.js.map +1 -1
  17. package/dist/queries/schemas.d.ts +4 -0
  18. package/dist/queries/schemas.d.ts.map +1 -1
  19. package/dist/queries/schemas.js +1 -0
  20. package/dist/queries/schemas.js.map +1 -1
  21. package/dist/queries/sessions.d.ts +1 -0
  22. package/dist/queries/sessions.d.ts.map +1 -1
  23. package/dist/queries/sessions.js +2 -0
  24. package/dist/queries/sessions.js.map +1 -1
  25. package/dist/session-lifecycle.d.ts.map +1 -1
  26. package/dist/session-lifecycle.js +2 -0
  27. package/dist/session-lifecycle.js.map +1 -1
  28. package/dist/spawner-lifecycle.d.ts +43 -0
  29. package/dist/spawner-lifecycle.d.ts.map +1 -0
  30. package/dist/spawner-lifecycle.js +152 -0
  31. package/dist/spawner-lifecycle.js.map +1 -0
  32. package/dist/spawner-liveness.d.ts.map +1 -1
  33. package/dist/spawner-liveness.js +1 -0
  34. package/dist/spawner-liveness.js.map +1 -1
  35. package/dist/spawner-stream-handlers.d.ts +67 -0
  36. package/dist/spawner-stream-handlers.d.ts.map +1 -0
  37. package/dist/spawner-stream-handlers.js +193 -0
  38. package/dist/spawner-stream-handlers.js.map +1 -0
  39. package/dist/spawner.d.ts +15 -36
  40. package/dist/spawner.d.ts.map +1 -1
  41. package/dist/spawner.js +29 -327
  42. package/dist/spawner.js.map +1 -1
  43. package/dist/strategy-completion-event.d.ts +29 -0
  44. package/dist/strategy-completion-event.d.ts.map +1 -0
  45. package/dist/strategy-completion-event.js +69 -0
  46. package/dist/strategy-completion-event.js.map +1 -0
  47. package/dist/strategy-completion.d.ts.map +1 -1
  48. package/dist/strategy-completion.js +8 -0
  49. package/dist/strategy-completion.js.map +1 -1
  50. package/dist/strategy-executor.d.ts +8 -45
  51. package/dist/strategy-executor.d.ts.map +1 -1
  52. package/dist/strategy-executor.js +24 -422
  53. package/dist/strategy-executor.js.map +1 -1
  54. package/dist/strategy-spawn-helpers.d.ts +67 -0
  55. package/dist/strategy-spawn-helpers.d.ts.map +1 -0
  56. package/dist/strategy-spawn-helpers.js +160 -0
  57. package/dist/strategy-spawn-helpers.js.map +1 -0
  58. package/dist/strategy-team-lifecycle.d.ts +50 -0
  59. package/dist/strategy-team-lifecycle.d.ts.map +1 -0
  60. package/dist/strategy-team-lifecycle.js +218 -0
  61. package/dist/strategy-team-lifecycle.js.map +1 -0
  62. package/dist/types/session.d.ts +2 -0
  63. package/dist/types/session.d.ts.map +1 -1
  64. package/dist/types/strategy.d.ts +1 -1
  65. package/dist/types/strategy.d.ts.map +1 -1
  66. package/dist/unified-engine-lifecycle.d.ts +36 -0
  67. package/dist/unified-engine-lifecycle.d.ts.map +1 -0
  68. package/dist/unified-engine-lifecycle.js +250 -0
  69. package/dist/unified-engine-lifecycle.js.map +1 -0
  70. package/dist/unified-shell-config.d.ts +25 -0
  71. package/dist/unified-shell-config.d.ts.map +1 -1
  72. package/dist/unified-shell-config.js +45 -0
  73. package/dist/unified-shell-config.js.map +1 -1
  74. package/dist/unified-shell-status.d.ts.map +1 -1
  75. package/dist/unified-shell-status.js +16 -2
  76. package/dist/unified-shell-status.js.map +1 -1
  77. package/dist/unified-shell.d.ts +2 -15
  78. package/dist/unified-shell.d.ts.map +1 -1
  79. package/dist/unified-shell.js +18 -619
  80. package/dist/unified-shell.js.map +1 -1
  81. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"spawner.d.ts","sourceRoot":"","sources":["../src/spawner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAmB,YAAY,EAAY,MAAM,YAAY,CAAC;AAQnG,OAAO,EAA+F,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAczJ,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAExD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAE5D;AAsJD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Mf;AAmND;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA2BzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAOD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkFhD;AAKD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"spawner.d.ts","sourceRoot":"","sources":["../src/spawner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAmB,YAAY,EAAY,MAAM,YAAY,CAAC;AAOnG,OAAO,EAAuE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAiBjI,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAExD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAE5D;AAID,iCAAiC;AACjC,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,oCAAoC;AACpC,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,6CAA6C;AAC7C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAmI3E;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Mf"}
package/dist/spawner.js CHANGED
@@ -8,23 +8,24 @@
8
8
  *
9
9
  * Each agent runs in an isolated git worktree created from the integration branch.
10
10
  * On successful completion, the agent's branch is merged into integration.
11
+ *
12
+ * Stream/process handling: ./spawner-stream-handlers.ts
13
+ * Lifecycle management: ./spawner-lifecycle.ts
11
14
  */
12
15
  import { spawn } from 'node:child_process';
13
16
  import { mkdirSync, existsSync } from 'node:fs';
14
17
  import { join } from 'node:path';
15
- import { runGitSync } from './git-types.js';
16
18
  import { updateSession, createSession, getDeliveryContext, fetchEffectiveWorkflow, getResolvedTransitionBlockForDelivery, reportGitState } from './supabase.js';
17
19
  import { buildSpawnEnvironment } from './spawn-environment.js';
18
20
  import { sanitizeGitSegment } from './git-utils.js';
19
21
  import { createWorktree, removeWorktree, syncIntegrationWithMain } from './git.js';
20
22
  import { getRunningAgents as _getRunningAgents, recordActivity } from './agent-state.js';
21
23
  import { getStageByName } from './workflow-engine.js';
22
- import { StreamJsonParser, sendMessage, buildStreamJsonArgs, stripClaudeCodeEnvVars, createLogStream } from '@telora/daemon-core';
24
+ import { StreamJsonParser, sendMessage, buildStreamJsonArgs, createLogStream } from '@telora/daemon-core';
23
25
  import { CompletionDetector } from './completion-detector.js';
24
26
  import { buildDeliveryPrompt } from './prompt-builder.js';
25
- import { handleAgentCompletion } from './completion-handler.js';
26
- import { formatEventForLog } from '@telora/daemon-core';
27
- import { ActivityTracker } from './activity-tracker.js';
27
+ import { attachStreamHandlers, attachProcessHandlers, safeSendSignal, safeCloseStdin } from './spawner-stream-handlers.js';
28
+ import { terminateAgent as _terminateAgent, terminateAllAgents as _terminateAllAgents, isAgentRunning as _isAgentRunning, getRunningAgentCount as _getRunningAgentCount, } from './spawner-lifecycle.js';
28
29
  // Running agents map: shared via agent-state module
29
30
  const runningAgents = _getRunningAgents();
30
31
  // Resource governor (optional, injected by StrategyEngine)
@@ -40,28 +41,28 @@ export function initGovernor(gov) {
40
41
  export function getRunningAgents() {
41
42
  return runningAgents;
42
43
  }
43
- /**
44
- * Safely send a signal to a process, ignoring errors if the process has already exited.
45
- */
46
- function safeSendSignal(pid, signal) {
47
- try {
48
- process.kill(pid, signal);
49
- }
50
- catch (e) {
51
- console.debug(`[spawner] safeSendSignal(${pid}, ${signal}) failed (process may have exited):`, e.message);
52
- }
44
+ // ── Re-exports with module-level state bound ────────────────────────
45
+ /** Terminate a running agent. */
46
+ export function terminateAgent(sessionId) {
47
+ return _terminateAgent(sessionId, runningAgents);
53
48
  }
54
- /**
55
- * Safely close a writable stdin stream, ignoring errors if already closed.
56
- */
57
- function safeCloseStdin(stdin) {
58
- try {
59
- stdin.end();
60
- }
61
- catch (e) {
62
- console.debug('[spawner] safeCloseStdin failed (stdin may already be closed):', e.message);
63
- }
49
+ /** Terminate all running agents. */
50
+ export function terminateAllAgents() {
51
+ _terminateAllAgents(runningAgents);
64
52
  }
53
+ /** Check if an agent is running for a session. */
54
+ export function isAgentRunning(sessionId) {
55
+ return _isAgentRunning(sessionId, runningAgents);
56
+ }
57
+ /** Get count of running agents. */
58
+ export function getRunningAgentCount() {
59
+ return _getRunningAgentCount(runningAgents);
60
+ }
61
+ /** Re-export spawnResolutionAgent (no module state needed). */
62
+ export { spawnResolutionAgent } from './spawner-lifecycle.js';
63
+ /** Re-export stale agent liveness checks. */
64
+ export { isProcessAlive, checkAgentLiveness } from './spawner-liveness.js';
65
+ // ── Spawn helpers ───────────────────────────────────────────────────
65
66
  /**
66
67
  * Build Claude Code CLI arguments for stream-json I/O.
67
68
  *
@@ -157,6 +158,7 @@ function generateBranchName(role, deliveryName) {
157
158
  const sanitizedDeliveryName = sanitizeGitSegment(deliveryName);
158
159
  return `agent/${sanitizedRoleName}/${sanitizedDeliveryName}`;
159
160
  }
161
+ // ── Core spawn function ─────────────────────────────────────────────
160
162
  /**
161
163
  * Spawn a Claude Code agent to work on a delivery.
162
164
  *
@@ -329,7 +331,7 @@ export async function spawnAgentForDelivery(config, deliveryId, role, strategyId
329
331
  const activityTracker = attachStreamHandlers({
330
332
  proc, streamParser, completionDetector, runningAgent,
331
333
  deliveryId, deliveryName: context.delivery.name, branchName,
332
- stdoutLogStream, jsonlStream,
334
+ stdoutLogStream, jsonlStream, runningAgents,
333
335
  });
334
336
  // Send the initial prompt via stdin as stream-json
335
337
  sendMessage(proc.stdin, prompt);
@@ -348,307 +350,7 @@ export async function spawnAgentForDelivery(config, deliveryId, role, strategyId
348
350
  branchName, worktreePath, deliveryId,
349
351
  sessionId: session.id, completionDetector, activityTracker,
350
352
  stdoutLogStream, stderrStream, jsonlStream,
351
- getTimedOut,
352
- });
353
- }
354
- /**
355
- * Attach stream parser, logging, activity tracking, and completion detection
356
- * event handlers to a spawned agent process.
357
- */
358
- function attachStreamHandlers(params) {
359
- const { proc, streamParser, completionDetector, runningAgent, deliveryId, deliveryName, branchName, stdoutLogStream, jsonlStream } = params;
360
- streamParser.attach(proc.stdout);
361
- completionDetector.attach(streamParser);
362
- const activityTracker = new ActivityTracker(runningAgent.sessionId);
363
- activityTracker.attach(streamParser);
364
- // Raw NDJSON log
365
- streamParser.on('event', (event) => {
366
- jsonlStream.write(JSON.stringify(event) + '\n');
367
- });
368
- // Human-readable log
369
- streamParser.on('event', (event) => {
370
- const line = formatEventForLog(event);
371
- if (line)
372
- stdoutLogStream.write(line + '\n');
373
- });
374
- // Session state tracking
375
- streamParser.on('init', (event) => {
376
- runningAgent.claudeSessionId = event.session_id;
377
- runningAgent.streamState = 'active';
378
- console.log(` Session initialized (model: ${event.model}, tools: ${event.tools.length})`);
379
- reportGitState(deliveryId, 'worktree_active', branchName).catch(err => console.warn('[spawner] reportGitState worktree_active failed:', err.message));
380
- });
381
- streamParser.on('teammate', (event) => {
382
- if (event.subtype === 'teammate_spawned') {
383
- console.log(` [team] Teammate spawned: ${event.agent_name}`);
384
- }
385
- else if (event.subtype === 'teammate_completed') {
386
- const status = event.is_error ? 'FAILED' : 'completed';
387
- console.log(` [team] Teammate ${status}: ${event.agent_name}`);
388
- }
389
- const state = completionDetector.getState();
390
- runningAgent.activeTeammateCount = state.activeTeammateCount;
391
- runningAgent.activeTeammates = state.activeTeammates;
392
- });
393
- streamParser.on('result', (result) => {
394
- const cost = result.total_cost_usd?.toFixed(4) ?? '?';
395
- console.log(` [result] ${result.is_error ? 'ERROR' : 'Success'}: ${result.num_turns} turns, $${cost}`);
396
- });
397
- streamParser.on('error', (err, line) => {
398
- console.warn(` [stream-json] Parse error: ${err.message} — line: ${line.slice(0, 200)}`);
399
- });
400
- completionDetector.on('complete', (info) => {
401
- console.log(`Agent for "${deliveryName}" completed: ` +
402
- `${info.turnCount} turns, $${info.totalCostUsd.toFixed(4)}, ` +
403
- `all teammates done: ${info.allTeammatesComplete}`);
404
- runningAgent.streamState = 'idle';
405
- initiateGracefulShutdown(runningAgent, deliveryName);
406
- });
407
- completionDetector.on('idle', (info) => {
408
- console.warn(`Agent for "${deliveryName}" idle for ${info.idleDurationMs / 1000}s ` +
409
- `with ${info.activeTeammateCount} active teammates`);
410
- });
411
- return activityTracker;
412
- }
413
- /**
414
- * Attach process close and error handlers to a spawned agent.
415
- */
416
- function attachProcessHandlers(params) {
417
- const { proc, config, context, runningAgent, workflow, branchName, worktreePath, deliveryId, sessionId, completionDetector, activityTracker, stdoutLogStream, stderrStream, jsonlStream, getTimedOut, } = params;
418
- const codingStage = getStageByName(workflow, 'coding');
419
- const currentStageId = codingStage?.id;
420
- proc.on('close', async (code, signal) => {
421
- governor?.releaseSlot('strategy');
422
- try {
423
- await activityTracker.finalFlush();
424
- }
425
- catch (err) {
426
- console.warn('[spawner] activityTracker.finalFlush failed:', err.message);
427
- }
428
- handleAgentCompletion(code, signal, {
429
- config,
430
- context,
431
- runningAgent,
432
- workflow,
433
- branchName,
434
- currentStageId,
435
- timedOut: getTimedOut(),
436
- timeoutMs: config.sessionTimeoutMs,
437
- sessionId,
438
- deliveryId,
439
- completionDetector,
440
- stdoutLogStream,
441
- stderrStream,
442
- jsonlStream,
443
- runningAgents,
444
- });
445
- });
446
- proc.on('error', async (err) => {
447
- console.error(`Agent for "${context.delivery.name}" error:`, err.message);
448
- governor?.releaseSlot('strategy');
449
- if (runningAgent.warningTimer)
450
- clearTimeout(runningAgent.warningTimer);
451
- if (runningAgent.timeoutTimer)
452
- clearTimeout(runningAgent.timeoutTimer);
453
- completionDetector?.destroy();
454
- runningAgents.delete(sessionId);
455
- removeWorktree(config.repoPath, worktreePath, {
456
- branchName,
457
- integrationBranch: config.integrationBranch,
458
- deliveryName: context.delivery.name,
459
- mergeSucceeded: false,
460
- });
461
- await updateSession(sessionId, {
462
- status: 'failed',
463
- exit_reason: 'Agent process error',
464
- ended_at: new Date().toISOString(),
465
- });
466
- });
467
- }
468
- /**
469
- * Initiate graceful shutdown for an agent session.
470
- *
471
- * Sends a wrap-up message via stdin, waits for the process to exit,
472
- * and escalates to SIGTERM/SIGKILL if needed.
473
- */
474
- function initiateGracefulShutdown(agent, deliveryName) {
475
- const GRACE_PERIOD_MS = 60000; // 60s for agent to wrap up
476
- const ESCALATION_STEP_MS = 10000; // 10s between escalation steps
477
- // Send wrap-up message
478
- sendMessage(agent.stdin, 'All work is complete. Please commit any remaining changes, clean up, and exit.');
479
- // Flat escalation chain using absolute offsets from now
480
- // Step 1: Close stdin after grace period
481
- const graceTimer = setTimeout(() => {
482
- if (!runningAgents.has(agent.sessionId))
483
- return;
484
- console.warn(`[shutdown] Agent for "${deliveryName}" did not exit within grace period. Closing stdin...`);
485
- safeCloseStdin(agent.stdin);
486
- }, GRACE_PERIOD_MS);
487
- // Step 2: SIGTERM after grace period + one escalation step
488
- setTimeout(() => {
489
- if (!runningAgents.has(agent.sessionId))
490
- return;
491
- console.warn(`[shutdown] Agent for "${deliveryName}" did not exit after stdin close. Sending SIGTERM...`);
492
- safeSendSignal(agent.pid, 'SIGTERM');
493
- }, GRACE_PERIOD_MS + ESCALATION_STEP_MS);
494
- // Step 3: SIGKILL after grace period + two escalation steps
495
- setTimeout(() => {
496
- if (!runningAgents.has(agent.sessionId))
497
- return;
498
- console.error(`[shutdown] Agent for "${deliveryName}" still running. Sending SIGKILL...`);
499
- safeSendSignal(agent.pid, 'SIGKILL');
500
- }, GRACE_PERIOD_MS + ESCALATION_STEP_MS * 2);
501
- // Clean up timer if process exits before grace period
502
- const checkExit = setInterval(() => {
503
- if (!runningAgents.has(agent.sessionId)) {
504
- clearTimeout(graceTimer);
505
- clearInterval(checkExit);
506
- }
507
- }, 1000);
508
- }
509
- /**
510
- * Terminate a running agent.
511
- * Sends a shutdown message via stdin, then escalates to SIGTERM/SIGKILL.
512
- */
513
- export function terminateAgent(sessionId) {
514
- const agent = runningAgents.get(sessionId);
515
- if (!agent)
516
- return false;
517
- // Clear timeout timers since we're manually terminating
518
- if (agent.warningTimer)
519
- clearTimeout(agent.warningTimer);
520
- if (agent.timeoutTimer)
521
- clearTimeout(agent.timeoutTimer);
522
- try {
523
- // Send shutdown message, then escalate with flat setTimeout chain
524
- agent.streamState = 'shutting_down';
525
- sendMessage(agent.stdin, 'Session is being terminated. Commit your work and exit immediately.');
526
- // Step 1: Close stdin after 5s
527
- setTimeout(() => safeCloseStdin(agent.stdin), 5000);
528
- // Step 2: SIGTERM after 10s (5s after stdin close)
529
- setTimeout(() => {
530
- if (!runningAgents.has(sessionId))
531
- return;
532
- safeSendSignal(agent.pid, 'SIGTERM');
533
- }, 10000);
534
- return true;
535
- }
536
- catch (err) {
537
- console.error(`Failed to terminate agent ${sessionId}:`, err instanceof Error ? err.message : String(err));
538
- return false;
539
- }
540
- }
541
- /**
542
- * Terminate all running agents.
543
- */
544
- export function terminateAllAgents() {
545
- for (const [sessionId] of runningAgents) {
546
- terminateAgent(sessionId);
547
- }
548
- }
549
- /**
550
- * Check if an agent is running for a session.
551
- */
552
- export function isAgentRunning(sessionId) {
553
- return runningAgents.has(sessionId);
554
- }
555
- /**
556
- * Get count of running agents.
557
- */
558
- export function getRunningAgentCount() {
559
- return runningAgents.size;
560
- }
561
- // ── Merge Conflict Resolution Agent ──────────────────────────────────
562
- /** Timeout for the resolution agent (10 minutes). */
563
- const RESOLUTION_AGENT_TIMEOUT_MS = 10 * 60 * 1000;
564
- /**
565
- * Spawn a short-lived, single-purpose Claude Code agent for merge conflict resolution.
566
- *
567
- * Used when no active team exists for a strategy but merge conflicts need resolution.
568
- * The agent receives a focused prompt with conflict details, resolves in the existing
569
- * worktree, and exits. No session DB record, no streaming, no team mode.
570
- */
571
- export async function spawnResolutionAgent(params) {
572
- const { config, worktreePath, branchName, integrationBranch, conflictFiles, strategyDescription } = params;
573
- const prompt = [
574
- `You are resolving merge conflicts in a git worktree.`,
575
- ``,
576
- `**Worktree:** ${worktreePath}`,
577
- `**Branch:** ${branchName}`,
578
- `**Merge source:** origin/${integrationBranch}`,
579
- ``,
580
- `**Conflicted files:**`,
581
- ...conflictFiles.map(f => `- ${f}`),
582
- ``,
583
- `**Strategy context:** ${strategyDescription}`,
584
- ``,
585
- `**Instructions:**`,
586
- `1. Open each conflicted file and resolve the conflict markers (<<<<<<< / ======= / >>>>>>>)`,
587
- `2. Stage each resolved file with: git add <file>`,
588
- `3. Commit the merge resolution: git commit --no-edit`,
589
- `4. Run: npm run build && npm test`,
590
- `5. If build or test fails, fix the issues, commit, and re-run until passing`,
591
- ``,
592
- `Do NOT run git merge --abort. Your goal is to produce a clean merge commit that passes build and tests.`,
593
- `Follow the coding standards in CLAUDE.md.`,
594
- ].join('\n');
595
- const args = [
596
- '--print',
597
- '--dangerously-skip-permissions',
598
- '--setting-sources', 'project,local',
599
- prompt,
600
- ];
601
- // Build a clean environment (strip Claude Code session vars)
602
- const spawnEnv = stripClaudeCodeEnvVars(process.env);
603
- console.log(`[spawner] Spawning resolution agent for branch ${branchName} (${conflictFiles.length} conflicts)`);
604
- return new Promise((resolve) => {
605
- const proc = spawn(config.claudeCodePath, args, {
606
- cwd: worktreePath,
607
- env: spawnEnv,
608
- stdio: ['pipe', 'pipe', 'pipe'],
609
- });
610
- // Close stdin immediately -- prompt is passed as CLI arg
611
- proc.stdin?.end();
612
- // Timeout with escalating shutdown
613
- const timeout = setTimeout(() => {
614
- console.warn(`[spawner] Resolution agent timed out after ${RESOLUTION_AGENT_TIMEOUT_MS / 1000}s, killing`);
615
- try {
616
- process.kill(proc.pid, 'SIGTERM');
617
- }
618
- catch { /* ignore */ }
619
- setTimeout(() => {
620
- try {
621
- process.kill(proc.pid, 'SIGKILL');
622
- }
623
- catch { /* ignore */ }
624
- }, 10000);
625
- }, RESOLUTION_AGENT_TIMEOUT_MS);
626
- proc.on('close', (code) => {
627
- clearTimeout(timeout);
628
- // Verify resolution by checking for remaining unmerged files
629
- const unmergedResult = runGitSync(['diff', '--name-only', '--diff-filter=U'], worktreePath);
630
- const unmergedFiles = unmergedResult.success
631
- ? unmergedResult.output.split('\n').filter(Boolean)
632
- : [];
633
- if (unmergedFiles.length === 0) {
634
- console.log(`[spawner] Resolution agent succeeded for branch ${branchName} (exit code: ${code})`);
635
- resolve({ success: true });
636
- }
637
- else {
638
- const msg = `Conflicts remain in: ${unmergedFiles.join(', ')}`;
639
- console.warn(`[spawner] Resolution agent failed for branch ${branchName}: ${msg}`);
640
- resolve({ success: false, error: msg });
641
- }
642
- });
643
- proc.on('error', (err) => {
644
- clearTimeout(timeout);
645
- console.error(`[spawner] Resolution agent spawn error: ${err.message}`);
646
- resolve({ success: false, error: `Spawn error: ${err.message}` });
647
- });
353
+ getTimedOut, runningAgents, governor,
648
354
  });
649
355
  }
650
- // ── Stale Agent Process Detection ────────────────────────────────────
651
- // Canonical implementations live in spawner-liveness.ts (dependency-injected).
652
- // Re-export for backwards compatibility with existing consumers (e.g. tests).
653
- export { isProcessAlive, checkAgentLiveness } from './spawner-liveness.js';
654
356
  //# sourceMappingURL=spawner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../src/spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../src/spawner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Strategy completion event handler - reacts to CompletionDetector events.
3
+ *
4
+ * Extracted from strategy-executor.ts. Handles the decision logic when a
5
+ * team lead completes a work cycle: terminate if done, or send more work.
6
+ */
7
+ import type { ChildProcess } from 'node:child_process';
8
+ import type { StrategyTeamState } from './types.js';
9
+ import { CompletionDetector, type CompletionInfo } from './completion-detector.js';
10
+ export interface CompletionEventContext {
11
+ strategyId: string;
12
+ strategyName: string;
13
+ teamState: StrategyTeamState;
14
+ completionDetector: CompletionDetector;
15
+ proc: ChildProcess;
16
+ completionInfo: CompletionInfo;
17
+ }
18
+ /**
19
+ * Handle a 'complete' event from the CompletionDetector.
20
+ *
21
+ * Queries current delivery and issue state to decide whether to:
22
+ * - Terminate the team (all deliveries terminal or no open issues remain), or
23
+ * - Send a mid-strategy handoff message with remaining work.
24
+ *
25
+ * Extracted from the inline event callback in spawnStrategyTeam to eliminate
26
+ * deep nesting inside an async Promise chain inside an event listener.
27
+ */
28
+ export declare function handleCompletionEvent(ctx: CompletionEventContext): Promise<void>;
29
+ //# sourceMappingURL=strategy-completion-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-completion-event.d.ts","sourceRoot":"","sources":["../src/strategy-completion-event.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AASnF,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;CAChC;AAID;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEtF"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Strategy completion event handler - reacts to CompletionDetector events.
3
+ *
4
+ * Extracted from strategy-executor.ts. Handles the decision logic when a
5
+ * team lead completes a work cycle: terminate if done, or send more work.
6
+ */
7
+ import { sendMessage } from '@telora/daemon-core';
8
+ import { isStatusTerminal, isStatusAgentActionable } from './stage-classifier.js';
9
+ import { getStrategyDeliveries, getStrategyIssues } from './queries/strategies.js';
10
+ import { buildWakeMessage } from './strategy-prompt-builder.js';
11
+ import { OPEN_ISSUE_STATUSES } from './constants.js';
12
+ import { terminateTeam } from './strategy-team-lifecycle.js';
13
+ // ── Handler ─────────────────────────────────────────────────────────────
14
+ /**
15
+ * Handle a 'complete' event from the CompletionDetector.
16
+ *
17
+ * Queries current delivery and issue state to decide whether to:
18
+ * - Terminate the team (all deliveries terminal or no open issues remain), or
19
+ * - Send a mid-strategy handoff message with remaining work.
20
+ *
21
+ * Extracted from the inline event callback in spawnStrategyTeam to eliminate
22
+ * deep nesting inside an async Promise chain inside an event listener.
23
+ */
24
+ export async function handleCompletionEvent(ctx) {
25
+ const { strategyId, strategyName, teamState, completionDetector, proc } = ctx;
26
+ const [currentDeliveries, currentIssues] = await Promise.all([
27
+ getStrategyDeliveries(strategyId),
28
+ getStrategyIssues(strategyId),
29
+ ]);
30
+ // If all deliveries are terminal, shut down.
31
+ const allTerminal = currentDeliveries.every(d => isStatusTerminal(d.executionStatus ?? ''));
32
+ if (allTerminal) {
33
+ console.log(`[strategy-executor] All deliveries terminal for "${strategyName}" -- terminating team`);
34
+ teamState.shutdownReason = 'work_complete';
35
+ terminateTeam(strategyId);
36
+ return;
37
+ }
38
+ // Check if there are actionable deliveries with open issues.
39
+ const actionableDeliveryIds = new Set(currentDeliveries
40
+ .filter(d => isStatusAgentActionable(d.executionStatus ?? ''))
41
+ .map(d => d.id));
42
+ if (actionableDeliveryIds.size === 0) {
43
+ console.log(`[strategy-executor] No actionable deliveries for "${strategyName}" -- terminating team`);
44
+ teamState.shutdownReason = 'work_complete';
45
+ terminateTeam(strategyId);
46
+ return;
47
+ }
48
+ // Check for open issues across actionable deliveries.
49
+ const hasOpenIssues = currentIssues.some(i => actionableDeliveryIds.has(i.deliveryId) && OPEN_ISSUE_STATUSES.has(i.status));
50
+ if (!hasOpenIssues) {
51
+ console.log(`[strategy-executor] Actionable deliveries have no open issues for "${strategyName}" -- ` +
52
+ `terminating team. Auto-advance will handle verify transition.`);
53
+ teamState.shutdownReason = 'work_complete';
54
+ terminateTeam(strategyId);
55
+ return;
56
+ }
57
+ // Mid-strategy handoff: actionable work with open issues remains.
58
+ // Send work immediately and reset the completion detector for the next cycle.
59
+ console.log(`[strategy-executor] Mid-strategy handoff for "${strategyName}" -- sending new work`);
60
+ const message = buildWakeMessage(currentDeliveries, currentIssues, teamState.knownDeliveryIds);
61
+ // Update tracking state
62
+ for (const d of currentDeliveries) {
63
+ teamState.knownDeliveryIds.add(d.id);
64
+ teamState.deliveryStageIds.set(d.id, d.currentWorkflowStageId);
65
+ }
66
+ completionDetector.reset();
67
+ sendMessage(proc.stdin, message);
68
+ }
69
+ //# sourceMappingURL=strategy-completion-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-completion-event.js","sourceRoot":"","sources":["../src/strategy-completion-event.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"strategy-completion.d.ts","sourceRoot":"","sources":["../src/strategy-completion.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,EACR,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAcpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAelE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIlF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2RtF;AAID;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC/E,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC5H,uBAAuB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7H,oBAAoB,EAAE,CAAC,MAAM,EAAE;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnC;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,mBAAiC,GACtC,OAAO,CAAC,IAAI,CAAC,CAkHf"}
1
+ {"version":3,"file":"strategy-completion.d.ts","sourceRoot":"","sources":["../src/strategy-completion.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,EACR,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAcpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAelE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIlF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoStF;AAID;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC/E,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC5H,uBAAuB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7H,oBAAoB,EAAE,CAAC,MAAM,EAAE;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnC;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,mBAAiC,GACtC,OAAO,CAAC,IAAI,CAAC,CAkHf"}
@@ -104,6 +104,7 @@ export async function handleTeamCompletion(params) {
104
104
  await withRetry(() => updateSession(sessionId, {
105
105
  status: 'failed',
106
106
  exit_reason: exitReason,
107
+ exit_category: 'error',
107
108
  ended_at: new Date().toISOString(),
108
109
  }), { maxAttempts: 3, baseDelayMs: 1000, label: 'session-update-readonly-violation' });
109
110
  }
@@ -206,11 +207,18 @@ export async function handleTeamCompletion(params) {
206
207
  catch (err) {
207
208
  console.debug(`[strategy-executor] Failed to compute git diff stats for "${strategyName}":`, err.message);
208
209
  }
210
+ // Determine exit category for failed sessions
211
+ const exitCategory = succeeded
212
+ ? null
213
+ : teamState.shutdownReason === 'user_stopped'
214
+ ? 'user_stopped'
215
+ : 'error';
209
216
  // Update session
210
217
  try {
211
218
  await withRetry(() => updateSession(sessionId, {
212
219
  status: succeeded ? 'completed' : 'failed',
213
220
  exit_reason: exitReason,
221
+ ...(exitCategory ? { exit_category: exitCategory } : {}),
214
222
  ended_at: new Date().toISOString(),
215
223
  lines_added: diffStats.linesAdded,
216
224
  lines_removed: diffStats.linesRemoved,