@telora/factory 0.4.5

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 (301) hide show
  1. package/dist/audit.d.ts +69 -0
  2. package/dist/audit.d.ts.map +1 -0
  3. package/dist/audit.js +376 -0
  4. package/dist/audit.js.map +1 -0
  5. package/dist/builder-completion.d.ts +35 -0
  6. package/dist/builder-completion.d.ts.map +1 -0
  7. package/dist/builder-completion.js +375 -0
  8. package/dist/builder-completion.js.map +1 -0
  9. package/dist/builder-spawner.d.ts +40 -0
  10. package/dist/builder-spawner.d.ts.map +1 -0
  11. package/dist/builder-spawner.js +493 -0
  12. package/dist/builder-spawner.js.map +1 -0
  13. package/dist/completion-gate.d.ts +52 -0
  14. package/dist/completion-gate.d.ts.map +1 -0
  15. package/dist/completion-gate.js +336 -0
  16. package/dist/completion-gate.js.map +1 -0
  17. package/dist/completion-report.d.ts +36 -0
  18. package/dist/completion-report.d.ts.map +1 -0
  19. package/dist/completion-report.js +348 -0
  20. package/dist/completion-report.js.map +1 -0
  21. package/dist/completion.d.ts +58 -0
  22. package/dist/completion.d.ts.map +1 -0
  23. package/dist/completion.js +287 -0
  24. package/dist/completion.js.map +1 -0
  25. package/dist/config.d.ts +16 -0
  26. package/dist/config.d.ts.map +1 -0
  27. package/dist/config.js +57 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/context-manager.d.ts +152 -0
  30. package/dist/context-manager.d.ts.map +1 -0
  31. package/dist/context-manager.js +421 -0
  32. package/dist/context-manager.js.map +1 -0
  33. package/dist/crash-detection.d.ts +70 -0
  34. package/dist/crash-detection.d.ts.map +1 -0
  35. package/dist/crash-detection.js +123 -0
  36. package/dist/crash-detection.js.map +1 -0
  37. package/dist/crash-recovery.d.ts +83 -0
  38. package/dist/crash-recovery.d.ts.map +1 -0
  39. package/dist/crash-recovery.js +522 -0
  40. package/dist/crash-recovery.js.map +1 -0
  41. package/dist/crash-resolution.d.ts +34 -0
  42. package/dist/crash-resolution.d.ts.map +1 -0
  43. package/dist/crash-resolution.js +382 -0
  44. package/dist/crash-resolution.js.map +1 -0
  45. package/dist/escalation.d.ts +150 -0
  46. package/dist/escalation.d.ts.map +1 -0
  47. package/dist/escalation.js +352 -0
  48. package/dist/escalation.js.map +1 -0
  49. package/dist/execution-target.d.ts +31 -0
  50. package/dist/execution-target.d.ts.map +1 -0
  51. package/dist/execution-target.js +71 -0
  52. package/dist/execution-target.js.map +1 -0
  53. package/dist/execution-unit-init.d.ts +28 -0
  54. package/dist/execution-unit-init.d.ts.map +1 -0
  55. package/dist/execution-unit-init.js +115 -0
  56. package/dist/execution-unit-init.js.map +1 -0
  57. package/dist/execution.d.ts +17 -0
  58. package/dist/execution.d.ts.map +1 -0
  59. package/dist/execution.js +20 -0
  60. package/dist/execution.js.map +1 -0
  61. package/dist/factory-engine.d.ts +100 -0
  62. package/dist/factory-engine.d.ts.map +1 -0
  63. package/dist/factory-engine.js +243 -0
  64. package/dist/factory-engine.js.map +1 -0
  65. package/dist/gap-detection.d.ts +43 -0
  66. package/dist/gap-detection.d.ts.map +1 -0
  67. package/dist/gap-detection.js +149 -0
  68. package/dist/gap-detection.js.map +1 -0
  69. package/dist/gate-context.d.ts +23 -0
  70. package/dist/gate-context.d.ts.map +1 -0
  71. package/dist/gate-context.js +63 -0
  72. package/dist/gate-context.js.map +1 -0
  73. package/dist/gate-engine.d.ts +55 -0
  74. package/dist/gate-engine.d.ts.map +1 -0
  75. package/dist/gate-engine.js +191 -0
  76. package/dist/gate-engine.js.map +1 -0
  77. package/dist/gates/adversarial.d.ts +59 -0
  78. package/dist/gates/adversarial.d.ts.map +1 -0
  79. package/dist/gates/adversarial.js +426 -0
  80. package/dist/gates/adversarial.js.map +1 -0
  81. package/dist/gates/adversary-spawner.d.ts +35 -0
  82. package/dist/gates/adversary-spawner.d.ts.map +1 -0
  83. package/dist/gates/adversary-spawner.js +286 -0
  84. package/dist/gates/adversary-spawner.js.map +1 -0
  85. package/dist/gates/adversary-test-dir.d.ts +41 -0
  86. package/dist/gates/adversary-test-dir.d.ts.map +1 -0
  87. package/dist/gates/adversary-test-dir.js +150 -0
  88. package/dist/gates/adversary-test-dir.js.map +1 -0
  89. package/dist/gates/behavioral-parser.d.ts +32 -0
  90. package/dist/gates/behavioral-parser.d.ts.map +1 -0
  91. package/dist/gates/behavioral-parser.js +190 -0
  92. package/dist/gates/behavioral-parser.js.map +1 -0
  93. package/dist/gates/behavioral-runner.d.ts +36 -0
  94. package/dist/gates/behavioral-runner.d.ts.map +1 -0
  95. package/dist/gates/behavioral-runner.js +306 -0
  96. package/dist/gates/behavioral-runner.js.map +1 -0
  97. package/dist/gates/behavioral.d.ts +37 -0
  98. package/dist/gates/behavioral.d.ts.map +1 -0
  99. package/dist/gates/behavioral.js +485 -0
  100. package/dist/gates/behavioral.js.map +1 -0
  101. package/dist/gates/deterministic.d.ts +24 -0
  102. package/dist/gates/deterministic.d.ts.map +1 -0
  103. package/dist/gates/deterministic.js +186 -0
  104. package/dist/gates/deterministic.js.map +1 -0
  105. package/dist/git-factory.d.ts +59 -0
  106. package/dist/git-factory.d.ts.map +1 -0
  107. package/dist/git-factory.js +102 -0
  108. package/dist/git-factory.js.map +1 -0
  109. package/dist/guard-evaluation.d.ts +48 -0
  110. package/dist/guard-evaluation.d.ts.map +1 -0
  111. package/dist/guard-evaluation.js +416 -0
  112. package/dist/guard-evaluation.js.map +1 -0
  113. package/dist/index.d.ts +30 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +39 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/instance-completion.d.ts +34 -0
  118. package/dist/instance-completion.d.ts.map +1 -0
  119. package/dist/instance-completion.js +366 -0
  120. package/dist/instance-completion.js.map +1 -0
  121. package/dist/instance-lifecycle.d.ts +15 -0
  122. package/dist/instance-lifecycle.d.ts.map +1 -0
  123. package/dist/instance-lifecycle.js +18 -0
  124. package/dist/instance-lifecycle.js.map +1 -0
  125. package/dist/instance-phase-dispatch.d.ts +75 -0
  126. package/dist/instance-phase-dispatch.d.ts.map +1 -0
  127. package/dist/instance-phase-dispatch.js +674 -0
  128. package/dist/instance-phase-dispatch.js.map +1 -0
  129. package/dist/instance-poll-loop.d.ts +43 -0
  130. package/dist/instance-poll-loop.d.ts.map +1 -0
  131. package/dist/instance-poll-loop.js +360 -0
  132. package/dist/instance-poll-loop.js.map +1 -0
  133. package/dist/instance-state-machine.d.ts +52 -0
  134. package/dist/instance-state-machine.d.ts.map +1 -0
  135. package/dist/instance-state-machine.js +235 -0
  136. package/dist/instance-state-machine.js.map +1 -0
  137. package/dist/log-manager.d.ts +28 -0
  138. package/dist/log-manager.d.ts.map +1 -0
  139. package/dist/log-manager.js +71 -0
  140. package/dist/log-manager.js.map +1 -0
  141. package/dist/pipeline-evaluator.d.ts +61 -0
  142. package/dist/pipeline-evaluator.d.ts.map +1 -0
  143. package/dist/pipeline-evaluator.js +107 -0
  144. package/dist/pipeline-evaluator.js.map +1 -0
  145. package/dist/pipeline-metrics.d.ts +52 -0
  146. package/dist/pipeline-metrics.d.ts.map +1 -0
  147. package/dist/pipeline-metrics.js +40 -0
  148. package/dist/pipeline-metrics.js.map +1 -0
  149. package/dist/pipeline-traversal.d.ts +43 -0
  150. package/dist/pipeline-traversal.d.ts.map +1 -0
  151. package/dist/pipeline-traversal.js +68 -0
  152. package/dist/pipeline-traversal.js.map +1 -0
  153. package/dist/plan-parser.d.ts +76 -0
  154. package/dist/plan-parser.d.ts.map +1 -0
  155. package/dist/plan-parser.js +223 -0
  156. package/dist/plan-parser.js.map +1 -0
  157. package/dist/planning-phase.d.ts +52 -0
  158. package/dist/planning-phase.d.ts.map +1 -0
  159. package/dist/planning-phase.js +444 -0
  160. package/dist/planning-phase.js.map +1 -0
  161. package/dist/planning-prompt.d.ts +64 -0
  162. package/dist/planning-prompt.d.ts.map +1 -0
  163. package/dist/planning-prompt.js +251 -0
  164. package/dist/planning-prompt.js.map +1 -0
  165. package/dist/planning.d.ts +16 -0
  166. package/dist/planning.d.ts.map +1 -0
  167. package/dist/planning.js +17 -0
  168. package/dist/planning.js.map +1 -0
  169. package/dist/process-runner.d.ts +41 -0
  170. package/dist/process-runner.d.ts.map +1 -0
  171. package/dist/process-runner.js +81 -0
  172. package/dist/process-runner.js.map +1 -0
  173. package/dist/product-config.d.ts +34 -0
  174. package/dist/product-config.d.ts.map +1 -0
  175. package/dist/product-config.js +43 -0
  176. package/dist/product-config.js.map +1 -0
  177. package/dist/queries/cycle-evaluations.d.ts +23 -0
  178. package/dist/queries/cycle-evaluations.d.ts.map +1 -0
  179. package/dist/queries/cycle-evaluations.js +37 -0
  180. package/dist/queries/cycle-evaluations.js.map +1 -0
  181. package/dist/queries/escalations.d.ts +30 -0
  182. package/dist/queries/escalations.d.ts.map +1 -0
  183. package/dist/queries/escalations.js +42 -0
  184. package/dist/queries/escalations.js.map +1 -0
  185. package/dist/queries/execution-units.d.ts +76 -0
  186. package/dist/queries/execution-units.d.ts.map +1 -0
  187. package/dist/queries/execution-units.js +109 -0
  188. package/dist/queries/execution-units.js.map +1 -0
  189. package/dist/queries/gate-results.d.ts +32 -0
  190. package/dist/queries/gate-results.d.ts.map +1 -0
  191. package/dist/queries/gate-results.js +44 -0
  192. package/dist/queries/gate-results.js.map +1 -0
  193. package/dist/queries/instances.d.ts +51 -0
  194. package/dist/queries/instances.d.ts.map +1 -0
  195. package/dist/queries/instances.js +77 -0
  196. package/dist/queries/instances.js.map +1 -0
  197. package/dist/queries/sessions.d.ts +50 -0
  198. package/dist/queries/sessions.d.ts.map +1 -0
  199. package/dist/queries/sessions.js +81 -0
  200. package/dist/queries/sessions.js.map +1 -0
  201. package/dist/queries/shared.d.ts +38 -0
  202. package/dist/queries/shared.d.ts.map +1 -0
  203. package/dist/queries/shared.js +119 -0
  204. package/dist/queries/shared.js.map +1 -0
  205. package/dist/queries/specs.d.ts +12 -0
  206. package/dist/queries/specs.d.ts.map +1 -0
  207. package/dist/queries/specs.js +21 -0
  208. package/dist/queries/specs.js.map +1 -0
  209. package/dist/queries/strategies.d.ts +14 -0
  210. package/dist/queries/strategies.d.ts.map +1 -0
  211. package/dist/queries/strategies.js +18 -0
  212. package/dist/queries/strategies.js.map +1 -0
  213. package/dist/queries/work-units.d.ts +42 -0
  214. package/dist/queries/work-units.d.ts.map +1 -0
  215. package/dist/queries/work-units.js +57 -0
  216. package/dist/queries/work-units.js.map +1 -0
  217. package/dist/queries/workflows.d.ts +29 -0
  218. package/dist/queries/workflows.d.ts.map +1 -0
  219. package/dist/queries/workflows.js +103 -0
  220. package/dist/queries/workflows.js.map +1 -0
  221. package/dist/remediation-units.d.ts +40 -0
  222. package/dist/remediation-units.d.ts.map +1 -0
  223. package/dist/remediation-units.js +263 -0
  224. package/dist/remediation-units.js.map +1 -0
  225. package/dist/replanning.d.ts +72 -0
  226. package/dist/replanning.d.ts.map +1 -0
  227. package/dist/replanning.js +403 -0
  228. package/dist/replanning.js.map +1 -0
  229. package/dist/resource-limits.d.ts +62 -0
  230. package/dist/resource-limits.d.ts.map +1 -0
  231. package/dist/resource-limits.js +322 -0
  232. package/dist/resource-limits.js.map +1 -0
  233. package/dist/scheduler.d.ts +98 -0
  234. package/dist/scheduler.d.ts.map +1 -0
  235. package/dist/scheduler.js +203 -0
  236. package/dist/scheduler.js.map +1 -0
  237. package/dist/session-adapter.d.ts +89 -0
  238. package/dist/session-adapter.d.ts.map +1 -0
  239. package/dist/session-adapter.js +108 -0
  240. package/dist/session-adapter.js.map +1 -0
  241. package/dist/sop-generator.d.ts +29 -0
  242. package/dist/sop-generator.d.ts.map +1 -0
  243. package/dist/sop-generator.js +235 -0
  244. package/dist/sop-generator.js.map +1 -0
  245. package/dist/spec-profiles.d.ts +41 -0
  246. package/dist/spec-profiles.d.ts.map +1 -0
  247. package/dist/spec-profiles.js +131 -0
  248. package/dist/spec-profiles.js.map +1 -0
  249. package/dist/strategy-design-graph.d.ts +23 -0
  250. package/dist/strategy-design-graph.d.ts.map +1 -0
  251. package/dist/strategy-design-graph.js +205 -0
  252. package/dist/strategy-design-graph.js.map +1 -0
  253. package/dist/strategy-design-prompt.d.ts +28 -0
  254. package/dist/strategy-design-prompt.d.ts.map +1 -0
  255. package/dist/strategy-design-prompt.js +108 -0
  256. package/dist/strategy-design-prompt.js.map +1 -0
  257. package/dist/strategy-design-schema.d.ts +767 -0
  258. package/dist/strategy-design-schema.d.ts.map +1 -0
  259. package/dist/strategy-design-schema.js +126 -0
  260. package/dist/strategy-design-schema.js.map +1 -0
  261. package/dist/strategy-design.d.ts +69 -0
  262. package/dist/strategy-design.d.ts.map +1 -0
  263. package/dist/strategy-design.js +411 -0
  264. package/dist/strategy-design.js.map +1 -0
  265. package/dist/strategy-gating.d.ts +31 -0
  266. package/dist/strategy-gating.d.ts.map +1 -0
  267. package/dist/strategy-gating.js +276 -0
  268. package/dist/strategy-gating.js.map +1 -0
  269. package/dist/team-prompt-builder.d.ts +47 -0
  270. package/dist/team-prompt-builder.d.ts.map +1 -0
  271. package/dist/team-prompt-builder.js +362 -0
  272. package/dist/team-prompt-builder.js.map +1 -0
  273. package/dist/trace-engine.d.ts +40 -0
  274. package/dist/trace-engine.d.ts.map +1 -0
  275. package/dist/trace-engine.js +344 -0
  276. package/dist/trace-engine.js.map +1 -0
  277. package/dist/types.d.ts +612 -0
  278. package/dist/types.d.ts.map +1 -0
  279. package/dist/types.js +9 -0
  280. package/dist/types.js.map +1 -0
  281. package/dist/unit-session-lifecycle.d.ts +78 -0
  282. package/dist/unit-session-lifecycle.d.ts.map +1 -0
  283. package/dist/unit-session-lifecycle.js +141 -0
  284. package/dist/unit-session-lifecycle.js.map +1 -0
  285. package/dist/unit-session.d.ts +30 -0
  286. package/dist/unit-session.d.ts.map +1 -0
  287. package/dist/unit-session.js +370 -0
  288. package/dist/unit-session.js.map +1 -0
  289. package/dist/watchdogs.d.ts +33 -0
  290. package/dist/watchdogs.d.ts.map +1 -0
  291. package/dist/watchdogs.js +170 -0
  292. package/dist/watchdogs.js.map +1 -0
  293. package/dist/work-unit-scheduler.d.ts +34 -0
  294. package/dist/work-unit-scheduler.d.ts.map +1 -0
  295. package/dist/work-unit-scheduler.js +91 -0
  296. package/dist/work-unit-scheduler.js.map +1 -0
  297. package/dist/workflow-transition.d.ts +90 -0
  298. package/dist/workflow-transition.d.ts.map +1 -0
  299. package/dist/workflow-transition.js +340 -0
  300. package/dist/workflow-transition.js.map +1 -0
  301. package/package.json +65 -0
@@ -0,0 +1,375 @@
1
+ /**
2
+ * Builder completion handling and main execution cycle.
3
+ *
4
+ * Handles builder session completion (token accounting, status transitions),
5
+ * and orchestrates the main execution cycle that finds ready work units,
6
+ * spawns builders, tracks strategy progress, and detects global completion.
7
+ *
8
+ * Extracted from execution.ts for focused module boundaries.
9
+ */
10
+ import { getInstanceWorkUnits, updateWorkUnitStatus } from './queries/work-units.js';
11
+ import { updateFactorySession } from './queries/sessions.js';
12
+ import { updateInstanceStatus } from './queries/instances.js';
13
+ import { updateStrategyExecutionStatus } from './queries/strategies.js';
14
+ import { findReadyWorkUnits } from './work-unit-scheduler.js';
15
+ import { spawnBuilder, transitionWorkUnitStatus, lastGateOutputByWorkUnit, LOG_PREFIX, } from './builder-spawner.js';
16
+ // ============================================================================
17
+ // Builder completion handling
18
+ // ============================================================================
19
+ /**
20
+ * Handle builder session completion.
21
+ *
22
+ * Routes the result through the gate engine (stubbed for now), then:
23
+ * - On gate pass: marks work unit completed, unblocks dependents
24
+ * - On gate fail + retries remaining: feeds output back, increments iteration
25
+ * - On gate fail + retries exhausted: marks work unit failed, escalates
26
+ */
27
+ export async function handleBuilderCompletion(builder, exitCode, state, _config, _governor) {
28
+ const { workUnitId, sessionId } = builder;
29
+ // Remove from active builders map
30
+ state.activeBuilderSessions.delete(workUnitId);
31
+ // Build session update fields including token usage
32
+ const sessionStatus = exitCode === 0 ? 'completed' : 'failed';
33
+ const sessionFields = {
34
+ status: sessionStatus,
35
+ endedAt: new Date().toISOString(),
36
+ };
37
+ // Persist token usage from the stream-json parser (TEL-4)
38
+ if (builder.tokenUsage) {
39
+ const tokenCount = builder.tokenUsage.inputTokens + builder.tokenUsage.outputTokens;
40
+ sessionFields.tokenCount = tokenCount;
41
+ if (builder.tokenUsage.totalCostUsd !== null) {
42
+ sessionFields.costEstimate = builder.tokenUsage.totalCostUsd;
43
+ }
44
+ console.log(`${LOG_PREFIX} Builder for work unit ${workUnitId} used ` +
45
+ `${tokenCount} tokens (input: ${builder.tokenUsage.inputTokens}, ` +
46
+ `output: ${builder.tokenUsage.outputTokens}` +
47
+ `${builder.tokenUsage.totalCostUsd !== null ? `, cost: $${builder.tokenUsage.totalCostUsd.toFixed(4)}` : ''})`);
48
+ }
49
+ await updateFactorySession(sessionId, sessionFields);
50
+ // Aggregate session tokens and cost into instance-level totals
51
+ if (builder.tokenUsage) {
52
+ const sessionTokens = builder.tokenUsage.inputTokens + builder.tokenUsage.outputTokens;
53
+ state.tokensUsed += sessionTokens;
54
+ if (builder.tokenUsage.totalCostUsd !== null) {
55
+ state.costUsed += builder.tokenUsage.totalCostUsd;
56
+ }
57
+ await updateInstanceStatus(state.instanceId, state.status, {
58
+ tokensUsed: state.tokensUsed,
59
+ costUsed: state.costUsed,
60
+ });
61
+ }
62
+ console.log(`${LOG_PREFIX} Builder for work unit ${workUnitId} exited ` +
63
+ `(code: ${exitCode}, session: ${sessionId})`);
64
+ // If builder crashed (non-zero exit), treat as gate failure
65
+ if (exitCode !== 0) {
66
+ console.warn(`${LOG_PREFIX} Builder exited with non-zero code ${exitCode} ` +
67
+ `for work unit ${workUnitId}`);
68
+ }
69
+ // -- Work unit completion (gates run at strategy level, not per work unit) --
70
+ // Signal-killed builders (exit code > 128) are marked failed.
71
+ // All other exits (including non-zero) are marked completed --
72
+ // the strategy-level gates validate the actual code quality.
73
+ if (exitCode > 128) {
74
+ console.warn(`${LOG_PREFIX} Builder killed by signal (exit code ${exitCode}) ` +
75
+ `for work unit ${workUnitId} -- marking failed`);
76
+ const transitioned = await transitionWorkUnitStatus(workUnitId, 'in_progress', 'failed', state);
77
+ if (!transitioned)
78
+ await updateWorkUnitStatus(workUnitId, 'failed');
79
+ lastGateOutputByWorkUnit.delete(workUnitId);
80
+ return;
81
+ }
82
+ // Mark work unit completed -- gates will evaluate at the strategy level
83
+ const transitioned = await transitionWorkUnitStatus(workUnitId, 'in_progress', 'completed', state);
84
+ if (!transitioned) {
85
+ console.warn(`${LOG_PREFIX} Workflow blocked in_progress -> completed for ${workUnitId} ` +
86
+ `-- forcing direct status update`);
87
+ await updateWorkUnitStatus(workUnitId, 'completed');
88
+ }
89
+ lastGateOutputByWorkUnit.delete(workUnitId);
90
+ console.log(`${LOG_PREFIX} Work unit ${workUnitId} builder exited -- marked completed (gates at strategy level)`);
91
+ }
92
+ // ============================================================================
93
+ // Main execution cycle
94
+ // ============================================================================
95
+ /**
96
+ * Run a single execution cycle for a factory instance.
97
+ *
98
+ * This is the main orchestration loop called by the instance lifecycle
99
+ * manager during the "building" phase:
100
+ *
101
+ * 1. Fetch current work units from DB
102
+ * 2. Reconcile orphaned builders and stuck work units
103
+ * 3. Find work units with all dependencies satisfied
104
+ * 4. Spawn builders for ready units (skip if already active)
105
+ * 5. Track strategy progress transitions
106
+ * 6. Detect global completion (all units completed or failed)
107
+ */
108
+ export async function runExecutionCycle(state, config, governor) {
109
+ // Step 1: Fetch current work units
110
+ const workUnits = await getInstanceWorkUnits(state.instanceId);
111
+ if (workUnits.length === 0) {
112
+ console.warn(`${LOG_PREFIX} Instance ${state.instanceId} has no work units -- ` +
113
+ `nothing to execute`);
114
+ return;
115
+ }
116
+ // Step 2: Clean up stale builder state
117
+ await reconcileOrphanedBuilders(state, workUnits);
118
+ // Step 3: Build strategy context
119
+ const hasStrategies = workUnits.some((u) => u.strategyId !== null);
120
+ let strategies = [];
121
+ let strategyDeps;
122
+ if (hasStrategies) {
123
+ try {
124
+ const { getStrategiesByFactoryInstance } = await import('./strategy-design.js');
125
+ strategies = await getStrategiesByFactoryInstance(state.instanceId);
126
+ if (strategies.length > 0) {
127
+ strategyDeps = new Map();
128
+ for (const s of strategies) {
129
+ strategyDeps.set(s.id, s.dependsOn);
130
+ }
131
+ }
132
+ }
133
+ catch (err) {
134
+ console.warn(`${LOG_PREFIX} Failed to fetch strategies for instance ${state.instanceId} ` +
135
+ `(proceeding without cross-strategy blocking): ` +
136
+ `${err instanceof Error ? err.message : String(err)}`);
137
+ }
138
+ }
139
+ // Step 4: Find ready work units and spawn builders
140
+ let strategyStatuses;
141
+ if (strategies.length > 0) {
142
+ strategyStatuses = new Map(strategies.map((s) => [s.id, s.executionStatus ?? '']));
143
+ }
144
+ const readyUnits = findReadyWorkUnits(workUnits, strategyDeps, strategyStatuses);
145
+ const spawnedInThisCycle = [];
146
+ for (const unit of readyUnits) {
147
+ if (state.activeBuilderSessions.has(unit.id))
148
+ continue;
149
+ try {
150
+ await spawnBuilder(unit, state, config, governor);
151
+ spawnedInThisCycle.push(unit);
152
+ }
153
+ catch (error) {
154
+ console.error(`${LOG_PREFIX} Failed to spawn builder for work unit "${unit.title}":`, error.message);
155
+ }
156
+ }
157
+ // Step 5: Track strategy progress (in_progress transitions + completion detection)
158
+ if (hasStrategies && strategies.length > 0) {
159
+ await trackStrategyProgress(state, strategies, spawnedInThisCycle);
160
+ }
161
+ // Step 6: Log cycle summary
162
+ await logCycleSummary(state, hasStrategies, strategies);
163
+ // Step 7: Detect global completion
164
+ const allTerminal = workUnits.every((u) => u.status === 'completed' || u.status === 'failed');
165
+ if (allTerminal && state.activeBuilderSessions.size === 0) {
166
+ const failedCount = workUnits.filter((u) => u.status === 'failed').length;
167
+ if (failedCount > 0) {
168
+ console.log(`${LOG_PREFIX} Instance ${state.instanceId} execution finished ` +
169
+ `with ${failedCount} failed work unit(s) out of ${workUnits.length}`);
170
+ state.status = 'failed';
171
+ }
172
+ else {
173
+ console.log(`${LOG_PREFIX} Instance ${state.instanceId} execution complete -- ` +
174
+ `all ${workUnits.length} work unit(s) succeeded`);
175
+ state.status = 'completed';
176
+ }
177
+ }
178
+ }
179
+ // ============================================================================
180
+ // Execution cycle helpers
181
+ // ============================================================================
182
+ /**
183
+ * Reconcile in-memory builder tracking with DB work unit statuses.
184
+ *
185
+ * Kills orphaned builders whose work units were externally reset, and
186
+ * resets stuck in_progress work units that have no active builder.
187
+ */
188
+ async function reconcileOrphanedBuilders(state, workUnits) {
189
+ const activeStatuses = new Set(['in_progress']);
190
+ const dbStatusById = new Map(workUnits.map((u) => [u.id, u.status]));
191
+ // Kill builders for work units that were externally reset
192
+ for (const [workUnitId, builder] of state.activeBuilderSessions) {
193
+ const dbStatus = dbStatusById.get(workUnitId);
194
+ if (dbStatus && !activeStatuses.has(dbStatus)) {
195
+ console.log(`${LOG_PREFIX} Orphaned builder detected for work unit ${workUnitId}: ` +
196
+ `DB status is "${dbStatus}" but builder is still active (session: ${builder.sessionId}). Killing.`);
197
+ try {
198
+ process.kill(builder.pid, 'SIGTERM');
199
+ }
200
+ catch { /* Process may already be dead */ }
201
+ state.activeBuilderSessions.delete(workUnitId);
202
+ }
203
+ }
204
+ // Reset in_progress work units with no active builder
205
+ for (const unit of workUnits) {
206
+ if (unit.status === 'in_progress' && !state.activeBuilderSessions.has(unit.id)) {
207
+ console.log(`${LOG_PREFIX} Work unit ${unit.id} ("${unit.title}") is in_progress ` +
208
+ `but has no active builder -- resetting to ready`);
209
+ try {
210
+ await updateWorkUnitStatus(unit.id, 'ready');
211
+ }
212
+ catch (err) {
213
+ console.error(`${LOG_PREFIX} Failed to reset orphaned work unit ${unit.id}:`, err.message);
214
+ }
215
+ }
216
+ }
217
+ }
218
+ /**
219
+ * Track strategy execution progress:
220
+ * - Transition pending strategies to in_progress when their first work unit spawns
221
+ * - Detect per-strategy completion when all work units reach terminal states
222
+ */
223
+ async function trackStrategyProgress(state, strategies, spawnedInThisCycle) {
224
+ // Mark strategies as in_progress when their first work unit is dispatched
225
+ if (spawnedInThisCycle.length > 0) {
226
+ const strategiesById = new Map(strategies.map((s) => [s.id, s]));
227
+ const transitioned = new Set();
228
+ for (const unit of spawnedInThisCycle) {
229
+ if (unit.strategyId && !transitioned.has(unit.strategyId)) {
230
+ const strategy = strategiesById.get(unit.strategyId);
231
+ if (strategy && strategy.executionStatus === 'pending') {
232
+ transitioned.add(unit.strategyId);
233
+ try {
234
+ await updateStrategyExecutionStatus(unit.strategyId, 'in_progress');
235
+ console.log(`${LOG_PREFIX} Strategy "${strategy.name}" (${strategy.id}) -> in_progress ` +
236
+ `(first work unit dispatched)`);
237
+ }
238
+ catch (err) {
239
+ console.warn(`${LOG_PREFIX} Failed to update strategy ${strategy.id} execution status:`, err.message);
240
+ }
241
+ }
242
+ }
243
+ }
244
+ }
245
+ // Detect per-strategy completion
246
+ const freshWorkUnits = await getInstanceWorkUnits(state.instanceId);
247
+ const unitsByStrategy = new Map();
248
+ for (const unit of freshWorkUnits) {
249
+ if (unit.strategyId) {
250
+ const list = unitsByStrategy.get(unit.strategyId);
251
+ if (list)
252
+ list.push(unit);
253
+ else
254
+ unitsByStrategy.set(unit.strategyId, [unit]);
255
+ }
256
+ }
257
+ const strategiesById = new Map(strategies.map((s) => [s.id, s]));
258
+ for (const [strategyId, units] of unitsByStrategy) {
259
+ const strategy = strategiesById.get(strategyId);
260
+ if (!strategy || strategy.executionStatus !== 'in_progress')
261
+ continue;
262
+ const allTerminalInStrategy = units.every((u) => u.status === 'completed' || u.status === 'failed');
263
+ if (!allTerminalInStrategy)
264
+ continue;
265
+ const failedUnits = units.filter((u) => u.status === 'failed');
266
+ try {
267
+ if (failedUnits.length > 0) {
268
+ await updateStrategyExecutionStatus(strategyId, 'failed');
269
+ const depStrategies = strategies
270
+ .filter((s) => s.dependsOn.includes(strategyId))
271
+ .map((s) => s.name);
272
+ console.log(`${LOG_PREFIX} Strategy "${strategy.name}" (${strategyId}) -> failed ` +
273
+ `(${failedUnits.length}/${units.length} work units failed)` +
274
+ (depStrategies.length > 0
275
+ ? `. Blocking downstream: ${depStrategies.join(', ')}`
276
+ : ''));
277
+ }
278
+ else {
279
+ await updateStrategyExecutionStatus(strategyId, 'gating_deterministic');
280
+ console.log(`${LOG_PREFIX} Strategy "${strategy.name}" (${strategyId}) -> gating_deterministic ` +
281
+ `(${units.length}/${units.length} work units done, gates pending)`);
282
+ }
283
+ }
284
+ catch (err) {
285
+ console.warn(`${LOG_PREFIX} Failed to update strategy ${strategyId} completion status:`, err.message);
286
+ }
287
+ }
288
+ }
289
+ /**
290
+ * Log a human-readable cycle summary for the instance.
291
+ *
292
+ * Simple mode for instances without strategies, detailed mode with
293
+ * per-strategy builder counts and blocked dependency chains otherwise.
294
+ */
295
+ async function logCycleSummary(state, hasStrategies, strategies) {
296
+ if (!hasStrategies || strategies.length === 0) {
297
+ const freshWorkUnits = await getInstanceWorkUnits(state.instanceId);
298
+ const wuDone = freshWorkUnits.filter((u) => u.status === 'completed').length;
299
+ const wuFailed = freshWorkUnits.filter((u) => u.status === 'failed').length;
300
+ const wuActive = freshWorkUnits.filter((u) => u.status === 'in_progress').length;
301
+ const wuReady = freshWorkUnits.filter((u) => u.status === 'ready' || u.status === 'pending').length;
302
+ console.log(`${LOG_PREFIX} Cycle summary for instance ${state.instanceId}: ` +
303
+ `${wuDone} done, ${wuActive} active, ${wuReady} ready, ${wuFailed} failed ` +
304
+ `(${freshWorkUnits.length} total) | ${state.activeBuilderSessions.size} builder(s)`);
305
+ return;
306
+ }
307
+ // Re-fetch strategies for latest execution statuses
308
+ let freshStrategies = strategies;
309
+ try {
310
+ const { getStrategiesByFactoryInstance } = await import('./strategy-design.js');
311
+ freshStrategies = await getStrategiesByFactoryInstance(state.instanceId);
312
+ }
313
+ catch {
314
+ // Use stale data
315
+ }
316
+ const completedStrats = freshStrategies.filter((s) => s.executionStatus === 'completed');
317
+ const failedStrats = freshStrategies.filter((s) => s.executionStatus === 'failed');
318
+ const activeStrats = freshStrategies.filter((s) => s.executionStatus === 'in_progress' ||
319
+ s.executionStatus === 'gating_deterministic' ||
320
+ s.executionStatus === 'gating_behavioral' ||
321
+ s.executionStatus === 'gating_adversarial' ||
322
+ s.executionStatus === 'gate_fix_pending');
323
+ const pendingStrats = freshStrategies.filter((s) => s.executionStatus === 'pending');
324
+ const freshWorkUnits = await getInstanceWorkUnits(state.instanceId);
325
+ const wuDone = freshWorkUnits.filter((u) => u.status === 'completed').length;
326
+ const wuFailed = freshWorkUnits.filter((u) => u.status === 'failed').length;
327
+ const wuActive = freshWorkUnits.filter((u) => u.status === 'in_progress').length;
328
+ // Per-strategy active builder counts
329
+ const activeByStrategy = new Map();
330
+ for (const [, builder] of state.activeBuilderSessions) {
331
+ const wu = freshWorkUnits.find((u) => u.id === builder.workUnitId);
332
+ if (wu?.strategyId) {
333
+ activeByStrategy.set(wu.strategyId, (activeByStrategy.get(wu.strategyId) ?? 0) + 1);
334
+ }
335
+ }
336
+ const executingParts = [];
337
+ for (const s of activeStrats) {
338
+ const builderCount = activeByStrategy.get(s.id) ?? 0;
339
+ executingParts.push(`${s.name}: ${builderCount} active builder(s)`);
340
+ }
341
+ // Blocked strategies summary
342
+ const failedIds = new Set(failedStrats.map((s) => s.id));
343
+ const completedIds = new Set(completedStrats.map((s) => s.id));
344
+ const blockedParts = [];
345
+ for (const s of pendingStrats) {
346
+ if (s.dependsOn.length === 0)
347
+ continue;
348
+ const waitingOn = s.dependsOn
349
+ .filter((depId) => !completedIds.has(depId))
350
+ .map((depId) => {
351
+ const dep = freshStrategies.find((fs) => fs.id === depId);
352
+ const status = failedIds.has(depId) ? ' [FAILED]' : '';
353
+ return `${dep?.name ?? depId}${status}`;
354
+ });
355
+ if (waitingOn.length > 0) {
356
+ blockedParts.push(`${s.name} (waiting on: ${waitingOn.join(', ')})`);
357
+ }
358
+ }
359
+ const summaryLines = [
360
+ `${LOG_PREFIX} Cycle summary for instance ${state.instanceId}:`,
361
+ ` Strategies: ${completedStrats.length} completed, ${activeStrats.length} active, ` +
362
+ `${pendingStrats.length} pending, ${failedStrats.length} failed (${freshStrategies.length} total)`,
363
+ ` Work units: ${wuDone} done, ${wuActive} active, ${wuFailed} failed ` +
364
+ `(${freshWorkUnits.length} total)`,
365
+ ` Active builders: ${state.activeBuilderSessions.size}`,
366
+ ];
367
+ if (executingParts.length > 0) {
368
+ summaryLines.push(` Executing: ${executingParts.join('; ')}`);
369
+ }
370
+ if (blockedParts.length > 0) {
371
+ summaryLines.push(` Blocked: ${blockedParts.join('; ')}`);
372
+ }
373
+ console.log(summaryLines.join('\n'));
374
+ }
375
+ //# sourceMappingURL=builder-completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-completion.js","sourceRoot":"","sources":["../src/builder-completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Builder process lifecycle management -- spawning Claude Code sessions.
3
+ *
4
+ * Spawns a Claude Code builder session per work unit, sets up stream
5
+ * handling, signal detection, heartbeat monitoring, and wires up the
6
+ * completion handler on process exit.
7
+ *
8
+ * Extracted from execution.ts for focused module boundaries.
9
+ */
10
+ import type { ResourceGovernor } from '@telora/daemon-core';
11
+ import type { FactoryConfig, FactoryInstanceState, BuilderState, FactoryWorkUnit, WorkUnitStatus } from './types.js';
12
+ /** Default max iterations when the blueprint doesn't specify one. */
13
+ export declare const DEFAULT_MAX_ITERATIONS = 3;
14
+ /** Log prefix for all execution-phase messages. */
15
+ export declare const LOG_PREFIX = "[execution]";
16
+ /**
17
+ * In-memory cache of the last gate failure output per work unit.
18
+ * Used to provide gate feedback when re-spawning a builder with fresh context.
19
+ * Entries are cleaned up when a work unit completes or fails permanently.
20
+ */
21
+ export declare const lastGateOutputByWorkUnit: Map<string, string>;
22
+ /**
23
+ * Transition a work unit through the workflow state machine.
24
+ *
25
+ * Attempts a workflow-governed transition, falling back to direct status
26
+ * update if no workflow exists. On success, persists both the status and
27
+ * the new workflow stage ID.
28
+ */
29
+ export declare function transitionWorkUnitStatus(workUnitId: string, currentStatus: string, targetStatus: WorkUnitStatus, state: FactoryInstanceState, extraFields?: Record<string, unknown>): Promise<boolean>;
30
+ /**
31
+ * Spawn a Claude Code builder session for a single work unit.
32
+ *
33
+ * Creates a factory_sessions record, launches the `claude` CLI in
34
+ * stream-json mode, and registers the builder in the instance's
35
+ * `activeBuilderSessions` map.
36
+ *
37
+ * @returns The in-memory BuilderState for the spawned session.
38
+ */
39
+ export declare function spawnBuilder(workUnit: FactoryWorkUnit, state: FactoryInstanceState, config: FactoryConfig, governor?: ResourceGovernor | null): Promise<BuilderState>;
40
+ //# sourceMappingURL=builder-spawner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-spawner.d.ts","sourceRoot":"","sources":["../src/builder-spawner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,qBAAqB,CAAC;AAE3F,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,cAAc,EAEf,MAAM,YAAY,CAAC;AAkBpB,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,mDAAmD;AACnD,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,qBAA4B,CAAC;AA6ElE;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,cAAc,EAC5B,KAAK,EAAE,oBAAoB,EAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,OAAO,CAAC,OAAO,CAAC,CAsClB;AAyJD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,aAAa,EACrB,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACjC,OAAO,CAAC,YAAY,CAAC,CAsKvB"}