@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":"strategy-completion.js","sourceRoot":"","sources":["../src/strategy-completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strategy-completion.js","sourceRoot":"","sources":["../src/strategy-completion.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,12 @@
13
13
  * 5. Terminates when all work is done; fresh team spawned for new work
14
14
  *
15
15
  * This module is the orchestration entry point. Pure logic is extracted to:
16
- * - strategy-team-state.ts -- active teams map, config derivation
17
- * - strategy-merge.ts -- branch merge logic
18
- * - strategy-completion.ts -- post-execution completion handling
16
+ * - strategy-team-state.ts -- active teams map, config derivation
17
+ * - strategy-merge.ts -- branch merge logic
18
+ * - strategy-completion.ts -- post-execution completion handling
19
+ * - strategy-spawn-helpers.ts -- log streams, stream handlers, process close
20
+ * - strategy-team-lifecycle.ts -- terminate, wait, detect deactivated, merge checks
21
+ * - strategy-completion-event.ts -- completion event handler
19
22
  */
20
23
  import type { DaemonConfig, AgentRole, PipelineConfig } from './types.js';
21
24
  import { type ResourceGovernor } from '@telora/daemon-core';
@@ -24,6 +27,8 @@ export { getActiveTeams, hasActiveTeam, getActiveTeamCount, } from './strategy-t
24
27
  export { mergeStrategyBranch, } from './strategy-merge.js';
25
28
  export { handleTeamCompletion, advanceDeliveryStatuses, isStatusTerminal, isStatusAgentActionable, } from './strategy-completion.js';
26
29
  export type { TeamCompletionParams } from './strategy-completion.js';
30
+ export { terminateTeam, waitForTeamExit, terminateAllTeams, detectDeactivatedStrategies, checkAndMergeCompletedDeliveries, } from './strategy-team-lifecycle.js';
31
+ export type { CompletionEventContext } from './strategy-completion-event.js';
27
32
  /** Inject the resource governor for global concurrency limiting. */
28
33
  export declare function initGovernor(gov: ResourceGovernor): void;
29
34
  /**
@@ -47,46 +52,4 @@ export interface SpawnStrategyTeamParams {
47
52
  * and issues, builds a task DAG, and coordinates worker execution.
48
53
  */
49
54
  export declare function spawnStrategyTeam(params: SpawnStrategyTeamParams): Promise<void>;
50
- /**
51
- * Terminate a strategy team.
52
- *
53
- * Sends a deactivation message via stdin (if open) before SIGTERM
54
- * to allow the team lead to process the shutdown gracefully.
55
- */
56
- export declare function terminateTeam(strategyId: string): boolean;
57
- /**
58
- * Wait for a team's process to exit (leave activeTeams).
59
- *
60
- * Polls activeTeams until the strategy is no longer present,
61
- * which happens when handleTeamCompletion runs on the 'close' event.
62
- * If the timeout expires, sends SIGKILL and waits briefly.
63
- *
64
- * @param strategyId - Strategy to wait for
65
- * @param timeoutMs - Max wait time in ms (default 30s)
66
- * @returns true if team exited within timeout, false if forced
67
- */
68
- export declare function waitForTeamExit(strategyId: string, timeoutMs?: number): Promise<boolean>;
69
- /**
70
- * Terminate all active teams.
71
- */
72
- export declare function terminateAllTeams(): void;
73
- /**
74
- * Detect strategies that have been deactivated (agent role removed)
75
- * and shut down their active teams.
76
- */
77
- export declare function detectDeactivatedStrategies(config: DaemonConfig): Promise<void>;
78
- /**
79
- * Check active teams for newly completed deliveries and merge
80
- * the strategy branch to integration incrementally.
81
- *
82
- * Called from the poll loop. For each active team, queries delivery
83
- * statuses and triggers a merge when any delivery reaches verify/done
84
- * that hasn't already been merged mid-flight.
85
- *
86
- * After processing merges, checks if ALL active deliveries are terminal
87
- * and merged. If so, terminates the team proactively since no more work
88
- * remains. The strategy stays active in the DB -- if new deliveries
89
- * arrive later, the next poll cycle spawns a fresh team.
90
- */
91
- export declare function checkAndMergeCompletedDeliveries(config: DaemonConfig): Promise<void>;
92
55
  //# sourceMappingURL=strategy-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"strategy-executor.d.ts","sourceRoot":"","sources":["../src/strategy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EAET,cAAc,EACf,MAAM,YAAY,CAAC;AAUpB,OAAO,EAA0D,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAcpH,OAAO,yBAAyB,CAAC;AAKjC,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAkBrE,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAExD;AA6UD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK5G;AA+BD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAiZf;AAID;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA2CzD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,SAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAsB7F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Ff"}
1
+ {"version":3,"file":"strategy-executor.d.ts","sourceRoot":"","sources":["../src/strategy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EAET,cAAc,EACf,MAAM,YAAY,CAAC;AASpB,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUlG,OAAO,yBAAyB,CAAC;AAuBjC,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAM7E,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAExD;AAwCD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK5G;AA+BD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAmZf"}
@@ -13,104 +13,48 @@
13
13
  * 5. Terminates when all work is done; fresh team spawned for new work
14
14
  *
15
15
  * This module is the orchestration entry point. Pure logic is extracted to:
16
- * - strategy-team-state.ts -- active teams map, config derivation
17
- * - strategy-merge.ts -- branch merge logic
18
- * - strategy-completion.ts -- post-execution completion handling
16
+ * - strategy-team-state.ts -- active teams map, config derivation
17
+ * - strategy-merge.ts -- branch merge logic
18
+ * - strategy-completion.ts -- post-execution completion handling
19
+ * - strategy-spawn-helpers.ts -- log streams, stream handlers, process close
20
+ * - strategy-team-lifecycle.ts -- terminate, wait, detect deactivated, merge checks
21
+ * - strategy-completion-event.ts -- completion event handler
19
22
  */
20
23
  import { spawn } from 'node:child_process';
21
- import { mkdirSync, existsSync, createWriteStream } from 'node:fs';
22
- import { join } from 'node:path';
23
- import { createSession, updateSession, getReadyStrategies, getActiveStrategies, } from './supabase.js';
24
+ import { mkdirSync, existsSync } from 'node:fs';
25
+ import { createSession, updateSession, getActiveStrategies, } from './supabase.js';
24
26
  import { createWorktree, runGitSync, repoHasCommits } from './git.js';
25
27
  import { installAuditPreCommitHook } from './audit-hooks.js';
26
28
  import { getStrategyWorktree, setStrategyWorktree } from './strategy-worktree-state.js';
27
- import { withRetry, StreamJsonParser, sendMessage, productLabel } from '@telora/daemon-core';
28
- import { recordActivity, setNarration, clearNarration } from './heartbeat.js';
29
- import { CompletionDetector } from './completion-detector.js';
30
- import { formatEventForLog } from '@telora/daemon-core';
31
- import { ActivityTracker } from './activity-tracker.js';
32
- import { buildStrategyTeamPrompt, buildWakeMessage } from './strategy-prompt-builder.js';
29
+ import { withRetry, sendMessage, productLabel } from '@telora/daemon-core';
30
+ import { recordActivity } from './heartbeat.js';
31
+ import { buildStrategyTeamPrompt } from './strategy-prompt-builder.js';
33
32
  import { buildRoleFrameworkPrompt } from './team-prompt-base.js';
34
- import { getStrategyDeliveries, getStrategyIssues, getProductContextForStrategy, getProductDeploymentProfileSnapshot, updateStrategyClaudeSessionId, fetchStrategyWorkflow } from './queries/strategies.js';
33
+ import { getStrategyDeliveries, getStrategyIssues, getProductContextForStrategy, getProductDeploymentProfileSnapshot, fetchStrategyWorkflow } from './queries/strategies.js';
35
34
  import { buildSpawnEnvironment } from './spawn-environment.js';
36
35
  import { sanitizeGitSegment } from './git-utils.js';
37
36
  import { recordStrategyTeardown } from './spawn-cooldown.js';
38
37
  import { consumePendingSpawnDirective, assembleDirectiveContent } from './directive-executor.js';
39
- import { OPEN_ISSUE_STATUSES } from './constants.js';
40
38
  import { resolveAssemblyRecipe } from './assembly-engine.js';
41
39
  import './assembly-resolvers.js';
42
- import { configForProduct, findProduct } from './config.js';
43
- // ── Re-exports from extracted modules (backward compatibility) ───────
40
+ import { isStatusAgentActionable, isStatusBlocking } from './stage-classifier.js';
41
+ // ── Imports from extracted modules ──────────────────────────────────────
42
+ import { getActiveTeams, deriveExecutionConfig, } from './strategy-team-state.js';
43
+ import { setupTeamLogStreams, attachStreamHandlers, handleTeamProcessClose, } from './strategy-spawn-helpers.js';
44
+ import { terminateTeam, } from './strategy-team-lifecycle.js';
45
+ import { handleCompletionEvent, } from './strategy-completion-event.js';
46
+ // ── Re-exports for backward compatibility ───────────────────────────────
44
47
  export { getActiveTeams, hasActiveTeam, getActiveTeamCount, } from './strategy-team-state.js';
45
48
  export { mergeStrategyBranch, } from './strategy-merge.js';
46
49
  export { handleTeamCompletion, advanceDeliveryStatuses, isStatusTerminal, isStatusAgentActionable, } from './strategy-completion.js';
47
- // ── Imports from extracted modules (used internally) ─────────────────
48
- import { getActiveTeams, deriveExecutionConfig, } from './strategy-team-state.js';
49
- import { mergeStrategyBranch, escalateMergeConflict } from './strategy-merge.js';
50
- import { handleTeamCompletion, } from './strategy-completion.js';
51
- import { isStatusTerminal, isStatusAgentActionable, isStatusBlocking } from './stage-classifier.js';
50
+ export { terminateTeam, waitForTeamExit, terminateAllTeams, detectDeactivatedStrategies, checkAndMergeCompletedDeliveries, } from './strategy-team-lifecycle.js';
52
51
  // ── Resource governor (optional, injected by StrategyEngine) ─────────
53
52
  let governor = null;
54
53
  /** Inject the resource governor for global concurrency limiting. */
55
54
  export function initGovernor(gov) {
56
55
  governor = gov;
57
56
  }
58
- /**
59
- * Handle a 'complete' event from the CompletionDetector.
60
- *
61
- * Queries current delivery and issue state to decide whether to:
62
- * - Terminate the team (all deliveries terminal or no open issues remain), or
63
- * - Send a mid-strategy handoff message with remaining work.
64
- *
65
- * Extracted from the inline event callback in spawnStrategyTeam to eliminate
66
- * deep nesting inside an async Promise chain inside an event listener.
67
- */
68
- async function handleCompletionEvent(ctx) {
69
- const { strategyId, strategyName, teamState, completionDetector, proc } = ctx;
70
- const [currentDeliveries, currentIssues] = await Promise.all([
71
- getStrategyDeliveries(strategyId),
72
- getStrategyIssues(strategyId),
73
- ]);
74
- // If all deliveries are terminal, shut down.
75
- const allTerminal = currentDeliveries.every(d => isStatusTerminal(d.executionStatus ?? ''));
76
- if (allTerminal) {
77
- console.log(`[strategy-executor] All deliveries terminal for "${strategyName}" -- terminating team`);
78
- teamState.shutdownReason = 'work_complete';
79
- terminateTeam(strategyId);
80
- return;
81
- }
82
- // Check if there are actionable deliveries with open issues.
83
- const actionableDeliveryIds = new Set(currentDeliveries
84
- .filter(d => isStatusAgentActionable(d.executionStatus ?? ''))
85
- .map(d => d.id));
86
- if (actionableDeliveryIds.size === 0) {
87
- console.log(`[strategy-executor] No actionable deliveries for "${strategyName}" -- terminating team`);
88
- teamState.shutdownReason = 'work_complete';
89
- terminateTeam(strategyId);
90
- return;
91
- }
92
- // Check for open issues across actionable deliveries.
93
- const hasOpenIssues = currentIssues.some(i => actionableDeliveryIds.has(i.deliveryId) && OPEN_ISSUE_STATUSES.has(i.status));
94
- if (!hasOpenIssues) {
95
- console.log(`[strategy-executor] Actionable deliveries have no open issues for "${strategyName}" -- ` +
96
- `terminating team. Auto-advance will handle verify transition.`);
97
- teamState.shutdownReason = 'work_complete';
98
- terminateTeam(strategyId);
99
- return;
100
- }
101
- // Mid-strategy handoff: actionable work with open issues remains.
102
- // Send work immediately and reset the completion detector for the next cycle.
103
- console.log(`[strategy-executor] Mid-strategy handoff for "${strategyName}" -- sending new work`);
104
- const message = buildWakeMessage(currentDeliveries, currentIssues, teamState.knownDeliveryIds);
105
- // Update tracking state
106
- for (const d of currentDeliveries) {
107
- teamState.knownDeliveryIds.add(d.id);
108
- teamState.deliveryStageIds.set(d.id, d.currentWorkflowStageId);
109
- }
110
- completionDetector.reset();
111
- sendMessage(proc.stdin, message);
112
- }
113
- // ── Private helpers for spawnStrategyTeam ─────────────────────────────
57
+ // ── Private helpers ─────────────────────────────────────────────────────
114
58
  /**
115
59
  * Pre-spawn guard: enforce rank-ordered execution.
116
60
  *
@@ -140,147 +84,6 @@ function findActionableDeliveries(deliveries, strategyName) {
140
84
  }
141
85
  return deliveries.filter(d => isStatusAgentActionable(d.executionStatus ?? ''));
142
86
  }
143
- /**
144
- * Create log file paths and writable streams for a team's output.
145
- */
146
- function setupTeamLogStreams(logDir, branchName, strategyName) {
147
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
148
- const logPrefix = `strategy-${branchName.replace(/\//g, '-')}-${timestamp}`;
149
- const stdoutPath = join(logDir, `${logPrefix}.stdout.log`);
150
- const stderrPath = join(logDir, `${logPrefix}.stderr.log`);
151
- const jsonlPath = join(logDir, `${logPrefix}.stream.jsonl`);
152
- const stdoutLogStream = createWriteStream(stdoutPath, { mode: 0o600 });
153
- const stderrStream = createWriteStream(stderrPath, { mode: 0o600 });
154
- const jsonlStream = createWriteStream(jsonlPath, { mode: 0o600 });
155
- // Attach error handlers to prevent unhandled 'error' events from crashing the daemon
156
- stdoutLogStream.on('error', (err) => {
157
- console.warn(`[strategy-executor] stdout log stream error for "${strategyName}": ${err.message}`);
158
- });
159
- stderrStream.on('error', (err) => {
160
- console.warn(`[strategy-executor] stderr log stream error for "${strategyName}": ${err.message}`);
161
- });
162
- jsonlStream.on('error', (err) => {
163
- console.warn(`[strategy-executor] jsonl log stream error for "${strategyName}": ${err.message}`);
164
- });
165
- return { stdoutPath, stderrPath, jsonlPath, stdoutLogStream, stderrStream, jsonlStream };
166
- }
167
- /**
168
- * Attach stream parser, completion detector, activity tracker, and event
169
- * handlers to the spawned team lead process.
170
- */
171
- function attachStreamHandlers(params) {
172
- const { proc, teamState, strategyId, strategyName, sessionId, logs } = params;
173
- const streamParser = new StreamJsonParser();
174
- const completionDetector = new CompletionDetector();
175
- streamParser.attach(proc.stdout);
176
- completionDetector.attach(streamParser);
177
- teamState.completionDetector = completionDetector;
178
- // Attach activity tracker for live activity snapshots
179
- const activityTracker = new ActivityTracker(sessionId);
180
- activityTracker.onNarration((text) => setNarration(strategyId, text));
181
- activityTracker.attach(streamParser);
182
- // Write raw NDJSON lines to jsonl log file
183
- streamParser.on('event', (event) => {
184
- logs.jsonlStream.write(JSON.stringify(event) + '\n');
185
- });
186
- // Write human-readable lines to stdout log
187
- streamParser.on('event', (event) => {
188
- const line = formatEventForLog(event);
189
- if (line) {
190
- logs.stdoutLogStream.write(line + '\n');
191
- }
192
- });
193
- // Track session state from stream events
194
- streamParser.on('init', (event) => {
195
- console.log(` [strategy-team] Session initialized (model: ${event.model}, tools: ${event.tools.length})`);
196
- teamState.claudeSessionId = event.session_id;
197
- // Persist session ID for --resume support on re-spawn
198
- updateStrategyClaudeSessionId(strategyId, event.session_id).catch((err) => {
199
- console.warn(`[strategy-executor] Failed to persist Claude session ID for "${strategyName}":`, err.message);
200
- });
201
- });
202
- streamParser.on('teammate', (event) => {
203
- if (event.subtype === 'teammate_spawned') {
204
- console.log(` [strategy-team] Worker spawned: ${event.agent_name}`);
205
- }
206
- else if (event.subtype === 'teammate_completed') {
207
- const status = event.is_error ? 'FAILED' : 'completed';
208
- console.log(` [strategy-team] Worker ${status}: ${event.agent_name}`);
209
- }
210
- });
211
- streamParser.on('result', (result) => {
212
- const cost = result.total_cost_usd?.toFixed(4) ?? '?';
213
- console.log(` [strategy-team] Result: ${result.is_error ? 'ERROR' : 'Success'}: ${result.num_turns} turns, $${cost}`);
214
- });
215
- // Stderr pipes to log
216
- proc.stderr?.pipe(logs.stderrStream);
217
- return { completionDetector, activityTracker };
218
- }
219
- /**
220
- * Handle the team lead process 'close' event.
221
- *
222
- * Detects --resume failures and retries without resume, otherwise
223
- * runs normal cleanup (governor release, stream close, completion handling).
224
- */
225
- async function handleTeamProcessClose(ctx) {
226
- const { code, signal, strategyName, strategyId, resumeId, spawnedAt, teamState, sessionId, config: cfg, completionDetector, activityTracker, logs, params: spawnParams, } = ctx;
227
- const activeTeams = getActiveTeams();
228
- console.log(`[strategy-executor] Team lead for "${strategyName}" exited (code: ${code}, signal: ${signal})`);
229
- // Detect --resume failure: if the process exits quickly with a non-zero
230
- // code and --resume was used, retry without resume.
231
- const RESUME_FAILURE_THRESHOLD_MS = 15_000;
232
- const elapsedMs = Date.now() - spawnedAt;
233
- if (resumeId && code !== 0 && code !== null && elapsedMs < RESUME_FAILURE_THRESHOLD_MS) {
234
- console.warn(`[strategy-executor] Resume failed for "${strategyName}" (exited in ${elapsedMs}ms), retrying without resume`);
235
- // Release governor slot and clean up minimal state
236
- governor?.releaseSlot('strategy');
237
- completionDetector.destroy();
238
- logs.stdoutLogStream.end();
239
- logs.stderrStream.end();
240
- logs.jsonlStream.end();
241
- // Clean up session and team state
242
- try {
243
- await updateSession(sessionId, {
244
- status: 'failed',
245
- exit_reason: `Resume failed (code ${code}), retrying without resume`,
246
- ended_at: new Date().toISOString(),
247
- });
248
- }
249
- catch (updateErr) {
250
- console.warn('[strategy-executor] Failed to update session after resume failure:', updateErr.message);
251
- }
252
- teamState.phase = 'terminated';
253
- activeTeams.delete(strategyId);
254
- // Re-spawn without --resume
255
- await spawnStrategyTeam({ ...spawnParams, lastClaudeSessionId: null });
256
- return;
257
- }
258
- // Release governor slot (if governor is configured)
259
- governor?.releaseSlot('strategy');
260
- // Null out stdin so post-exit merge logic falls through to the
261
- // fallback resolution agent instead of sending messages to a dead process.
262
- teamState.leadStdin = null;
263
- // Final activity flush before cleanup
264
- try {
265
- await activityTracker.finalFlush();
266
- }
267
- catch (err) {
268
- console.warn('[strategy-executor] activityTracker.finalFlush failed:', err.message);
269
- }
270
- // Clean up streams
271
- completionDetector.destroy();
272
- logs.stdoutLogStream.end();
273
- logs.stderrStream.end();
274
- logs.jsonlStream.end();
275
- recordActivity();
276
- await handleTeamCompletion({
277
- config: cfg,
278
- teamState,
279
- sessionId,
280
- code,
281
- signal,
282
- });
283
- }
284
87
  // ── Team spawning ────────────────────────────────────────────────────
285
88
  /**
286
89
  * Generate branch name for strategy-level work.
@@ -603,6 +406,7 @@ export async function spawnStrategyTeam(params) {
603
406
  await updateSession(session.id, {
604
407
  status: 'failed',
605
408
  exit_reason: 'Governor denied slot',
409
+ exit_category: 'governor_denied',
606
410
  ended_at: new Date().toISOString(),
607
411
  }).catch(updateErr => {
608
412
  console.warn(`[strategy-executor] Failed to update session after governor denial:`, updateErr.message);
@@ -651,7 +455,7 @@ export async function spawnStrategyTeam(params) {
651
455
  handleTeamProcessClose({
652
456
  code, signal, strategyName, strategyId, resumeId, spawnedAt,
653
457
  teamState, sessionId: session.id, config, completionDetector,
654
- activityTracker, logs, params,
458
+ activityTracker, logs, params, governor, spawnStrategyTeam,
655
459
  }).catch(err => {
656
460
  console.error(`[strategy-executor] handleTeamProcessClose failed for "${strategyName}":`, err.message);
657
461
  });
@@ -664,6 +468,7 @@ export async function spawnStrategyTeam(params) {
664
468
  await withRetry(() => updateSession(session.id, {
665
469
  status: 'failed',
666
470
  exit_reason: `Process error: ${err.message}`,
471
+ exit_category: 'error',
667
472
  ended_at: new Date().toISOString(),
668
473
  }), { maxAttempts: 3, baseDelayMs: 1000, label: 'session-update-error' });
669
474
  }
@@ -679,207 +484,4 @@ export async function spawnStrategyTeam(params) {
679
484
  activeTeams.delete(strategyId);
680
485
  });
681
486
  }
682
- // ── Team lifecycle management ────────────────────────────────────────
683
- /**
684
- * Terminate a strategy team.
685
- *
686
- * Sends a deactivation message via stdin (if open) before SIGTERM
687
- * to allow the team lead to process the shutdown gracefully.
688
- */
689
- export function terminateTeam(strategyId) {
690
- const activeTeams = getActiveTeams();
691
- const team = activeTeams.get(strategyId);
692
- if (!team || !team.leadPid)
693
- return false;
694
- // Warn if terminating while conflict resolution is in progress
695
- if (team.resolvingMergeConflict) {
696
- console.warn(`[strategy-executor] Terminating team "${team.strategyName}" while merge conflict resolution is in progress`);
697
- }
698
- console.log(`[strategy-executor] Terminating team for strategy "${team.strategyName}" (phase: ${team.phase})`);
699
- team.phase = 'shutting_down';
700
- clearNarration(strategyId);
701
- try {
702
- // Send a deactivation message first to let the team lead process it
703
- if (team.leadStdin) {
704
- sendMessage(team.leadStdin, 'Pipeline deactivated. Exit now.');
705
- // Close stdin after a short delay to let the message be processed
706
- setTimeout(() => {
707
- try {
708
- team.leadStdin?.end();
709
- }
710
- catch (e) {
711
- console.debug('[strategy-executor] stdin.end() failed (may already be closed):', e.message);
712
- }
713
- }, 5000);
714
- }
715
- // SIGTERM to the lead process -- it should clean up workers
716
- process.kill(team.leadPid, 'SIGTERM');
717
- // Escalate to SIGKILL after timeout
718
- setTimeout(() => {
719
- if (activeTeams.has(strategyId) && team.leadPid) {
720
- try {
721
- process.kill(team.leadPid, 'SIGKILL');
722
- }
723
- catch (e) {
724
- console.debug('[strategy-executor] SIGKILL failed (process may have exited):', e.message);
725
- }
726
- }
727
- }, 30000);
728
- return true;
729
- }
730
- catch (e) {
731
- console.debug(`[strategy-executor] terminateTeam: process may have already exited:`, e.message);
732
- return false;
733
- }
734
- }
735
- /**
736
- * Wait for a team's process to exit (leave activeTeams).
737
- *
738
- * Polls activeTeams until the strategy is no longer present,
739
- * which happens when handleTeamCompletion runs on the 'close' event.
740
- * If the timeout expires, sends SIGKILL and waits briefly.
741
- *
742
- * @param strategyId - Strategy to wait for
743
- * @param timeoutMs - Max wait time in ms (default 30s)
744
- * @returns true if team exited within timeout, false if forced
745
- */
746
- export async function waitForTeamExit(strategyId, timeoutMs = 30000) {
747
- const activeTeams = getActiveTeams();
748
- const team = activeTeams.get(strategyId);
749
- if (!team)
750
- return true; // Already gone
751
- const deadline = Date.now() + timeoutMs;
752
- const pollMs = 500;
753
- while (Date.now() < deadline) {
754
- if (!activeTeams.has(strategyId))
755
- return true;
756
- await new Promise(resolve => setTimeout(resolve, pollMs));
757
- }
758
- // Timeout expired — escalate to SIGKILL
759
- if (team.leadPid) {
760
- console.warn(`[strategy-executor] Team "${team.strategyName}" did not exit within ${timeoutMs}ms, sending SIGKILL`);
761
- try {
762
- process.kill(team.leadPid, 'SIGKILL');
763
- }
764
- catch { /* process may already be gone */ }
765
- // Brief wait for SIGKILL to take effect
766
- await new Promise(resolve => setTimeout(resolve, 2000));
767
- }
768
- return !activeTeams.has(strategyId);
769
- }
770
- /**
771
- * Terminate all active teams.
772
- */
773
- export function terminateAllTeams() {
774
- const activeTeams = getActiveTeams();
775
- for (const strategyId of activeTeams.keys()) {
776
- terminateTeam(strategyId);
777
- }
778
- }
779
- /**
780
- * Detect strategies that have been deactivated (agent role removed)
781
- * and shut down their active teams.
782
- */
783
- export async function detectDeactivatedStrategies(config) {
784
- const activeTeams = getActiveTeams();
785
- if (activeTeams.size === 0)
786
- return;
787
- try {
788
- // Aggregate ready strategies across all configured products
789
- const allReadyStrategies = [];
790
- for (const product of config.products) {
791
- const strategies = await getReadyStrategies(config.organizationId, product.id);
792
- allReadyStrategies.push(...strategies);
793
- }
794
- const activeStrategyIds = new Set(allReadyStrategies.map(s => s.strategy_id));
795
- for (const [strategyId, team] of activeTeams) {
796
- if (!activeStrategyIds.has(strategyId) && team.phase !== 'shutting_down' && team.phase !== 'terminated') {
797
- console.log(`[strategy-executor] Strategy "${team.strategyName}" deactivated -- shutting down team`);
798
- terminateTeam(strategyId);
799
- }
800
- }
801
- }
802
- catch (err) {
803
- console.warn(`[strategy-executor] Failed to check for deactivated strategies:`, err.message);
804
- }
805
- }
806
- /**
807
- * Check active teams for newly completed deliveries and merge
808
- * the strategy branch to integration incrementally.
809
- *
810
- * Called from the poll loop. For each active team, queries delivery
811
- * statuses and triggers a merge when any delivery reaches verify/done
812
- * that hasn't already been merged mid-flight.
813
- *
814
- * After processing merges, checks if ALL active deliveries are terminal
815
- * and merged. If so, terminates the team proactively since no more work
816
- * remains. The strategy stays active in the DB -- if new deliveries
817
- * arrive later, the next poll cycle spawns a fresh team.
818
- */
819
- export async function checkAndMergeCompletedDeliveries(config) {
820
- const activeTeams = getActiveTeams();
821
- if (activeTeams.size === 0)
822
- return;
823
- for (const [strategyId, team] of activeTeams) {
824
- // Only check teams that are actively executing
825
- if (team.phase !== 'executing')
826
- continue;
827
- // Skip merge attempts while team lead is resolving a merge conflict
828
- if (team.resolvingMergeConflict) {
829
- console.log(`[strategy-executor] Skipping merge check for "${team.strategyName}" -- conflict resolution in progress`);
830
- continue;
831
- }
832
- // Use product-scoped config for this team's merge operations
833
- const teamProduct = findProduct(config, team.productId);
834
- const teamConfig = teamProduct ? configForProduct(config, teamProduct) : config;
835
- try {
836
- const deliveries = await getStrategyDeliveries(strategyId);
837
- // Find deliveries in verify/done that we haven't merged for yet
838
- const newlyCompleted = deliveries.filter(d => !isStatusAgentActionable(d.executionStatus ?? '') && !isStatusBlocking(d.executionStatus ?? '')
839
- && !team.mergedDeliveryIds.has(d.id));
840
- if (newlyCompleted.length > 0) {
841
- const completedNames = newlyCompleted.map(d => d.name).join(', ');
842
- console.log(`[strategy-executor] ${newlyCompleted.length} delivery(ies) completed mid-flight for "${team.strategyName}": ${completedNames} -- merging to integration`);
843
- // One merge covers all completed deliveries (same branch)
844
- const mergeResult = await mergeStrategyBranch(teamConfig, team, team.leadSessionId ?? '', team.branchName);
845
- if (mergeResult.mergeSucceeded) {
846
- // Track merged deliveries (git state already reported by mergeStrategyBranch)
847
- for (const d of newlyCompleted) {
848
- team.mergedDeliveryIds.add(d.id);
849
- }
850
- }
851
- else {
852
- console.warn(`[strategy-executor] Mid-flight merge failed for "${team.strategyName}": ${mergeResult.exitReason}`);
853
- // Escalate merge conflict for each unmerged delivery
854
- for (const d of newlyCompleted) {
855
- escalateMergeConflict({
856
- organizationId: team.organizationId,
857
- sessionId: team.leadSessionId ?? '',
858
- deliveryId: d.id,
859
- deliveryName: d.name,
860
- branchName: team.branchName,
861
- integrationBranch: config.integrationBranch,
862
- mergeError: mergeResult.exitReason,
863
- }).catch(err => console.warn(`[strategy-executor] escalateMergeConflict failed for ${d.id}:`, err.message));
864
- }
865
- // Don't mark as merged -- will retry next poll. Team continues working.
866
- }
867
- }
868
- // ── All-done detection ──────────────────────────────────────
869
- // If any delivery is queued or running, the team still has work.
870
- // Otherwise the team is idle, waiting for the daemon to push new work.
871
- const teamWork = deliveries.filter(d => isStatusAgentActionable(d.executionStatus ?? ''));
872
- if (teamWork.length > 0) {
873
- console.log(`[strategy-executor] ${teamWork.length} delivery(ies) still queued/running for "${team.strategyName}" -- team continues`);
874
- continue;
875
- }
876
- // No queued/running deliveries -- team is idle, completion detector
877
- // handles the actual idle transition. Log for observability.
878
- console.log(`[strategy-executor] All deliveries complete for "${team.strategyName}" -- team is idle`);
879
- }
880
- catch (err) {
881
- console.warn(`[strategy-executor] Failed to check completed deliveries for "${team.strategyName}":`, err.message);
882
- }
883
- }
884
- }
885
487
  //# sourceMappingURL=strategy-executor.js.map