@telora/daemon 0.21.83 → 0.21.134

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 (267) hide show
  1. package/build-info.json +10 -3
  2. package/dist/audit/audit-hooks.d.ts +106 -0
  3. package/dist/audit/audit-hooks.d.ts.map +1 -1
  4. package/dist/audit/audit-hooks.js +149 -17
  5. package/dist/audit/audit-hooks.js.map +1 -1
  6. package/dist/ci/ci-sensor-loop.d.ts +6 -0
  7. package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
  8. package/dist/ci/ci-sensor-loop.js +50 -3
  9. package/dist/ci/ci-sensor-loop.js.map +1 -1
  10. package/dist/ci/ci-status.d.ts +63 -11
  11. package/dist/ci/ci-status.d.ts.map +1 -1
  12. package/dist/ci/ci-status.js +94 -27
  13. package/dist/ci/ci-status.js.map +1 -1
  14. package/dist/completion/coverage-drift-state.d.ts +29 -2
  15. package/dist/completion/coverage-drift-state.d.ts.map +1 -1
  16. package/dist/completion/coverage-drift-state.js +42 -2
  17. package/dist/completion/coverage-drift-state.js.map +1 -1
  18. package/dist/completion/coverage-stabilized.d.ts +58 -0
  19. package/dist/completion/coverage-stabilized.d.ts.map +1 -0
  20. package/dist/completion/coverage-stabilized.js +84 -0
  21. package/dist/completion/coverage-stabilized.js.map +1 -0
  22. package/dist/completion/delivery-advancement-guard.d.ts +21 -0
  23. package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
  24. package/dist/completion/delivery-advancement-guard.js +31 -3
  25. package/dist/completion/delivery-advancement-guard.js.map +1 -1
  26. package/dist/completion/event-escalations.d.ts +15 -0
  27. package/dist/completion/event-escalations.d.ts.map +1 -1
  28. package/dist/completion/event-escalations.js +42 -4
  29. package/dist/completion/event-escalations.js.map +1 -1
  30. package/dist/completion/event-phases.d.ts.map +1 -1
  31. package/dist/completion/event-phases.js +10 -5
  32. package/dist/completion/event-phases.js.map +1 -1
  33. package/dist/completion/machine-remediable-demotion.d.ts +74 -0
  34. package/dist/completion/machine-remediable-demotion.d.ts.map +1 -0
  35. package/dist/completion/machine-remediable-demotion.js +147 -0
  36. package/dist/completion/machine-remediable-demotion.js.map +1 -0
  37. package/dist/completion/review-exit-escalations.d.ts +36 -1
  38. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  39. package/dist/completion/review-exit-escalations.js +81 -0
  40. package/dist/completion/review-exit-escalations.js.map +1 -1
  41. package/dist/completion/review-exit-phase.d.ts +4 -2
  42. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  43. package/dist/completion/review-exit-phase.js +49 -54
  44. package/dist/completion/review-exit-phase.js.map +1 -1
  45. package/dist/completion/settle-injection-sweep.d.ts +55 -0
  46. package/dist/completion/settle-injection-sweep.d.ts.map +1 -0
  47. package/dist/completion/settle-injection-sweep.js +88 -0
  48. package/dist/completion/settle-injection-sweep.js.map +1 -0
  49. package/dist/completion/state-cascade.d.ts.map +1 -1
  50. package/dist/completion/state-cascade.js +41 -0
  51. package/dist/completion/state-cascade.js.map +1 -1
  52. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  53. package/dist/completion/status-advance-phase.js +28 -30
  54. package/dist/completion/status-advance-phase.js.map +1 -1
  55. package/dist/completion/team-lifecycle.d.ts +42 -0
  56. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  57. package/dist/completion/team-lifecycle.js +79 -2
  58. package/dist/completion/team-lifecycle.js.map +1 -1
  59. package/dist/delivery/delivery-lifecycle.d.ts +19 -33
  60. package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
  61. package/dist/delivery/delivery-lifecycle.js +26 -160
  62. package/dist/delivery/delivery-lifecycle.js.map +1 -1
  63. package/dist/delivery/delivery-merge-ops.d.ts +46 -0
  64. package/dist/delivery/delivery-merge-ops.d.ts.map +1 -0
  65. package/dist/delivery/delivery-merge-ops.js +154 -0
  66. package/dist/delivery/delivery-merge-ops.js.map +1 -0
  67. package/dist/delivery/delivery-reconciler-apply.d.ts +108 -66
  68. package/dist/delivery/delivery-reconciler-apply.d.ts.map +1 -1
  69. package/dist/delivery/delivery-reconciler-apply.js +87 -61
  70. package/dist/delivery/delivery-reconciler-apply.js.map +1 -1
  71. package/dist/delivery/delivery-reconciler.d.ts +7 -2
  72. package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
  73. package/dist/delivery/delivery-reconciler.js +34 -5
  74. package/dist/delivery/delivery-reconciler.js.map +1 -1
  75. package/dist/delivery/external-hold-surface.d.ts +32 -0
  76. package/dist/delivery/external-hold-surface.d.ts.map +1 -0
  77. package/dist/delivery/external-hold-surface.js +67 -0
  78. package/dist/delivery/external-hold-surface.js.map +1 -0
  79. package/dist/delivery/external-hold.d.ts +38 -0
  80. package/dist/delivery/external-hold.d.ts.map +1 -1
  81. package/dist/delivery/external-hold.js +69 -6
  82. package/dist/delivery/external-hold.js.map +1 -1
  83. package/dist/delivery/operator-hold.d.ts +1 -2
  84. package/dist/delivery/operator-hold.d.ts.map +1 -1
  85. package/dist/delivery/operator-hold.js +1 -2
  86. package/dist/delivery/operator-hold.js.map +1 -1
  87. package/dist/delivery/paused-revival.d.ts +140 -0
  88. package/dist/delivery/paused-revival.d.ts.map +1 -0
  89. package/dist/delivery/paused-revival.js +229 -0
  90. package/dist/delivery/paused-revival.js.map +1 -0
  91. package/dist/delivery/wait-reachability.d.ts +149 -0
  92. package/dist/delivery/wait-reachability.d.ts.map +1 -0
  93. package/dist/delivery/wait-reachability.js +193 -0
  94. package/dist/delivery/wait-reachability.js.map +1 -0
  95. package/dist/directive/close-loop-dispatcher.d.ts +16 -263
  96. package/dist/directive/close-loop-dispatcher.d.ts.map +1 -1
  97. package/dist/directive/close-loop-dispatcher.js +21 -259
  98. package/dist/directive/close-loop-dispatcher.js.map +1 -1
  99. package/dist/directive/directive-dispatch.d.ts +19 -0
  100. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  101. package/dist/directive/directive-dispatch.js +18 -0
  102. package/dist/directive/directive-dispatch.js.map +1 -1
  103. package/dist/directive/directive-executor.d.ts +1 -3
  104. package/dist/directive/directive-executor.d.ts.map +1 -1
  105. package/dist/directive/directive-executor.js +23 -21
  106. package/dist/directive/directive-executor.js.map +1 -1
  107. package/dist/directive/phase-sync.d.ts +28 -15
  108. package/dist/directive/phase-sync.d.ts.map +1 -1
  109. package/dist/directive/phase-sync.js +28 -36
  110. package/dist/directive/phase-sync.js.map +1 -1
  111. package/dist/directive/resolver-dispatch.d.ts +19 -92
  112. package/dist/directive/resolver-dispatch.d.ts.map +1 -1
  113. package/dist/directive/resolver-dispatch.js +19 -65
  114. package/dist/directive/resolver-dispatch.js.map +1 -1
  115. package/dist/focus/focus-engine.d.ts.map +1 -1
  116. package/dist/focus/focus-engine.js +26 -0
  117. package/dist/focus/focus-engine.js.map +1 -1
  118. package/dist/focus/focus-executor.d.ts.map +1 -1
  119. package/dist/focus/focus-executor.js +290 -256
  120. package/dist/focus/focus-executor.js.map +1 -1
  121. package/dist/focus/focus-loop-registry.d.ts.map +1 -1
  122. package/dist/focus/focus-loop-registry.js +43 -1
  123. package/dist/focus/focus-loop-registry.js.map +1 -1
  124. package/dist/focus/focus-respawn-guard.d.ts.map +1 -1
  125. package/dist/focus/focus-respawn-guard.js +11 -2
  126. package/dist/focus/focus-respawn-guard.js.map +1 -1
  127. package/dist/focus/focus-team-state.d.ts +11 -0
  128. package/dist/focus/focus-team-state.d.ts.map +1 -1
  129. package/dist/focus/focus-team-state.js +17 -0
  130. package/dist/focus/focus-team-state.js.map +1 -1
  131. package/dist/focus/listener-auto-advance.d.ts +13 -1
  132. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  133. package/dist/focus/listener-auto-advance.js +112 -76
  134. package/dist/focus/listener-auto-advance.js.map +1 -1
  135. package/dist/focus/listener.d.ts.map +1 -1
  136. package/dist/focus/listener.js +141 -75
  137. package/dist/focus/listener.js.map +1 -1
  138. package/dist/focus/tick-deadline.d.ts +55 -0
  139. package/dist/focus/tick-deadline.d.ts.map +1 -0
  140. package/dist/focus/tick-deadline.js +91 -0
  141. package/dist/focus/tick-deadline.js.map +1 -0
  142. package/dist/focus-stage-lifecycle/index.d.ts +18 -25
  143. package/dist/focus-stage-lifecycle/index.d.ts.map +1 -1
  144. package/dist/focus-stage-lifecycle/index.js +26 -38
  145. package/dist/focus-stage-lifecycle/index.js.map +1 -1
  146. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.d.ts +52 -0
  147. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.d.ts.map +1 -0
  148. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.js +94 -0
  149. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.js.map +1 -0
  150. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +18 -1
  151. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  152. package/dist/focus-stage-lifecycle/wedge-watchdog.js +57 -7
  153. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  154. package/dist/git/merge.d.ts.map +1 -1
  155. package/dist/git/merge.js +12 -3
  156. package/dist/git/merge.js.map +1 -1
  157. package/dist/guard/condition-evaluators.d.ts +9 -0
  158. package/dist/guard/condition-evaluators.d.ts.map +1 -1
  159. package/dist/guard/condition-evaluators.js +15 -0
  160. package/dist/guard/condition-evaluators.js.map +1 -1
  161. package/dist/guard/guard-evaluator.d.ts +17 -1
  162. package/dist/guard/guard-evaluator.d.ts.map +1 -1
  163. package/dist/guard/guard-evaluator.js +61 -2
  164. package/dist/guard/guard-evaluator.js.map +1 -1
  165. package/dist/guard/trigger-executor.d.ts +30 -18
  166. package/dist/guard/trigger-executor.d.ts.map +1 -1
  167. package/dist/guard/trigger-executor.js +55 -31
  168. package/dist/guard/trigger-executor.js.map +1 -1
  169. package/dist/prompt/team-prompt-base.d.ts +1 -1
  170. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  171. package/dist/prompt/team-prompt-base.js +1 -1
  172. package/dist/prompt/team-prompt-base.js.map +1 -1
  173. package/dist/prompt-sections/persona-sections.d.ts +0 -32
  174. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  175. package/dist/prompt-sections/persona-sections.js +19 -88
  176. package/dist/prompt-sections/persona-sections.js.map +1 -1
  177. package/dist/queries/deliveries.d.ts +33 -0
  178. package/dist/queries/deliveries.d.ts.map +1 -1
  179. package/dist/queries/deliveries.js +7 -0
  180. package/dist/queries/deliveries.js.map +1 -1
  181. package/dist/queries/focuses.d.ts +46 -0
  182. package/dist/queries/focuses.d.ts.map +1 -1
  183. package/dist/queries/focuses.js +60 -0
  184. package/dist/queries/focuses.js.map +1 -1
  185. package/dist/queries/guards.d.ts +10 -0
  186. package/dist/queries/guards.d.ts.map +1 -1
  187. package/dist/queries/guards.js +14 -1
  188. package/dist/queries/guards.js.map +1 -1
  189. package/dist/queries/issues.d.ts +65 -1
  190. package/dist/queries/issues.d.ts.map +1 -1
  191. package/dist/queries/issues.js +135 -2
  192. package/dist/queries/issues.js.map +1 -1
  193. package/dist/queries/schemas.d.ts +53 -0
  194. package/dist/queries/schemas.d.ts.map +1 -1
  195. package/dist/queries/schemas.js +38 -0
  196. package/dist/queries/schemas.js.map +1 -1
  197. package/dist/queries/verification.d.ts +5 -6
  198. package/dist/queries/verification.d.ts.map +1 -1
  199. package/dist/queries/verification.js +5 -6
  200. package/dist/queries/verification.js.map +1 -1
  201. package/dist/resolvers/loop-persona.d.ts +1 -11
  202. package/dist/resolvers/loop-persona.d.ts.map +1 -1
  203. package/dist/resolvers/loop-persona.js +2 -16
  204. package/dist/resolvers/loop-persona.js.map +1 -1
  205. package/dist/shell/heartbeat.d.ts +7 -0
  206. package/dist/shell/heartbeat.d.ts.map +1 -1
  207. package/dist/shell/heartbeat.js +1 -1
  208. package/dist/shell/heartbeat.js.map +1 -1
  209. package/dist/shell/unified-shell-provisioning.d.ts +40 -0
  210. package/dist/shell/unified-shell-provisioning.d.ts.map +1 -1
  211. package/dist/shell/unified-shell-provisioning.js +72 -0
  212. package/dist/shell/unified-shell-provisioning.js.map +1 -1
  213. package/dist/shell/unified-shell.d.ts.map +1 -1
  214. package/dist/shell/unified-shell.js +18 -1
  215. package/dist/shell/unified-shell.js.map +1 -1
  216. package/dist/spawn/helpers.d.ts.map +1 -1
  217. package/dist/spawn/helpers.js +6 -1
  218. package/dist/spawn/helpers.js.map +1 -1
  219. package/dist/spawn/process-spawn.d.ts.map +1 -1
  220. package/dist/spawn/process-spawn.js +7 -0
  221. package/dist/spawn/process-spawn.js.map +1 -1
  222. package/dist/spawn/respawn-cycle-escalation.d.ts +41 -0
  223. package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -0
  224. package/dist/spawn/respawn-cycle-escalation.js +83 -0
  225. package/dist/spawn/respawn-cycle-escalation.js.map +1 -0
  226. package/dist/spawn/spawn-cooldown.d.ts +119 -2
  227. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  228. package/dist/spawn/spawn-cooldown.js +120 -10
  229. package/dist/spawn/spawn-cooldown.js.map +1 -1
  230. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  231. package/dist/spawn/spawn-decision.js +33 -1
  232. package/dist/spawn/spawn-decision.js.map +1 -1
  233. package/dist/testing/fixtures/index.d.ts +64 -0
  234. package/dist/testing/fixtures/index.d.ts.map +1 -0
  235. package/dist/testing/fixtures/index.js +220 -0
  236. package/dist/testing/fixtures/index.js.map +1 -0
  237. package/dist/update/build-info.d.ts +1 -0
  238. package/dist/update/build-info.d.ts.map +1 -1
  239. package/dist/update/build-info.js +1 -1
  240. package/dist/update/build-info.js.map +1 -1
  241. package/dist/verify/stall-detector-config.d.ts +8 -0
  242. package/dist/verify/stall-detector-config.d.ts.map +1 -1
  243. package/dist/verify/stall-detector-config.js +40 -0
  244. package/dist/verify/stall-detector-config.js.map +1 -1
  245. package/dist/verify/stall-detectors.d.ts +57 -14
  246. package/dist/verify/stall-detectors.d.ts.map +1 -1
  247. package/dist/verify/stall-detectors.js +72 -55
  248. package/dist/verify/stall-detectors.js.map +1 -1
  249. package/dist/verify/verification-feedback.d.ts +3 -4
  250. package/dist/verify/verification-feedback.d.ts.map +1 -1
  251. package/dist/verify/verification-feedback.js +3 -12
  252. package/dist/verify/verification-feedback.js.map +1 -1
  253. package/dist/workflow/gate-failure-policy.d.ts +48 -0
  254. package/dist/workflow/gate-failure-policy.d.ts.map +1 -0
  255. package/dist/workflow/gate-failure-policy.js +57 -0
  256. package/dist/workflow/gate-failure-policy.js.map +1 -0
  257. package/dist/workflow/pipeline-config.d.ts +2 -2
  258. package/dist/workflow/pipeline-config.js +2 -2
  259. package/package.json +3 -3
  260. package/dist/directive/close-loop-stage.d.ts +0 -50
  261. package/dist/directive/close-loop-stage.d.ts.map +0 -1
  262. package/dist/directive/close-loop-stage.js +0 -210
  263. package/dist/directive/close-loop-stage.js.map +0 -1
  264. package/dist/focus-stage-lifecycle/review-convergence.d.ts +0 -133
  265. package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +0 -1
  266. package/dist/focus-stage-lifecycle/review-convergence.js +0 -237
  267. package/dist/focus-stage-lifecycle/review-convergence.js.map +0 -1
@@ -156,266 +156,300 @@ export async function spawnFocusTeam(params) {
156
156
  focusId, focusName, role, config, executionConfig, pipelineConfig, branchName, readOnly,
157
157
  });
158
158
  activeTeams.set(focusId, teamState);
159
- logSpawnHeader({ config, focusId, focusName, role, pipelineConfig, executionConfig, branchName, readOnly });
160
- // --- Phase 1: fetch all spawn context (deliveries/issues/product-context/
161
- // deployment-profile/loop-context) + PRD milestone push-down. null => the
162
- // context fetch rejected; tear down the freshly-inserted team and return.
163
- const spawnContext = await fetchSpawnContext(config, focusId, focusName);
164
- if (!spawnContext) {
165
- activeTeams.delete(focusId);
166
- return;
167
- }
168
- const { deliveries, issues, deploymentProfileSnapshot, answeredEscalations, prdMilestoneContext, prdMilestoneManifest, assemblyManifest, } = spawnContext;
169
- // --- Phase 2: consume any pending directive, run the rank-ordered pre-spawn
170
- // guard, and record known-delivery bookkeeping on the team state. 'skip' =>
171
- // no actionable work; tear down and return (the map stays orchestrator-owned).
172
- const resolution = resolveActionableDeliveries({
173
- focusId, focusName, deliveries, issues, forceSpawn, teamState,
174
- });
175
- if (resolution.kind === 'skip') {
176
- activeTeams.delete(focusId);
177
- return;
178
- }
179
- const { pendingDirective } = resolution;
180
- // Ensure log directory exists
181
- if (!existsSync(config.logDir)) {
182
- mkdirSync(config.logDir, { recursive: true, mode: 0o700 });
183
- }
184
- // --- Phase: resolve the focus worktree (reuse + rebase, or inline-create).
185
- // null => cannot spawn (no commits / create failed); the helper already tore
186
- // down (activeTeams.delete + recordFocusTeardown).
187
- const worktreePath = await resolveSpawnWorktree({ config, focusId, focusName, branchName, readOnly });
188
- if (!worktreePath)
189
- return;
190
- teamState.worktreePath = worktreePath;
191
- // Pin the integration tip NOW -- after the worktree rebased onto integration,
192
- // before any mid-flight or completion merges advance the ref. This is the diff
193
- // base for the session's git output at finalize; the live integration ref
194
- // cannot be used because merging the focus branch makes `integration..branch`
195
- // empty (real merges preserve ancestry).
196
- teamState.integrationBaseSha = resolveRef(worktreePath, config.integrationBranch);
197
- recordActivity();
198
- // Best-effort review context: review-filed open count + prior findings (the
199
- // remediation working set) + the focus description for the prompt.
200
- const { reviewFiledOpenCount, priorFindings, focusDescription, agentResolvableItems } = await resolveReviewContext({
201
- config, focusId, focusName, issues,
202
- });
203
- // --- Phase A: resolve the directive body + spawn metadata (no prompt yet) ---
204
- // The engine backend is resolved per-pass (Phase B) before the prompt is
205
- // built (Phase C), so the lead prompt's orchestration vocabulary matches the
206
- // engine that will actually run this pass.
207
- const { directiveBody, directiveModel, directiveEngine, directiveLocalModel, pendingFocusOverrideModel, spawnStageName, spawnDirectiveDeclared, useLegacyFullPrompt, } = await resolveDirectiveOrFallback({
208
- config, focusId, focusName, worktreePath, pendingDirective, assemblyManifest,
209
- claudeSessionIds, deliveries, issues, readOnly,
210
- });
211
- // --- Phase B: resolve the session lineage (pass) and the engine backend
212
- // (stamps lineage + sessionType onto the team state). The stage directive's
213
- // engine is the Workflow layer of the unified Focus > Workflow > Default. ---
214
- const { spawnSpec, enginePass, resolvedEngine, backend } = resolveEngineForPass({
215
- spawnDirectiveDeclared, spawnStageName, engineOverride, stageDirectiveEngine: directiveEngine,
216
- config, orgDefaultEngine, focusName, teamState,
217
- });
218
- // Pin the focus-branch tip THIS review pass is covering (spawn-tip), captured
219
- // now (post-rebase, before any mid-review commits). Carried to completion so
220
- // the coverage watermark is stamped from what the review actually saw, and so
221
- // the auto-approve gate can detect mid-review drift (spawn-tip != exit-tip).
222
- // Review lineage only; coding teams leave it null.
223
- if (teamState.sessionType === 'review') {
224
- const spawnTip = resolveRef(worktreePath, branchName);
225
- if (shouldAbortReviewSpawnForUnresolvableCoverage(teamState.sessionType, spawnTip)) {
226
- // Hard-fail: a review pass whose coverage anchor cannot be resolved must
227
- // NOT open a session. If it did, the review would run to a succeeded exit
228
- // with coverageComplete=false (a null spawn-tip can never be
229
- // coverage-complete -- review-exit-phase.ts:233), auto-approve would be
230
- // withheld as apparent drift, and a full-pass re-review armed every cycle
231
- // -- structurally forever (the 224-rejection loop shape from the
232
- // 2026-08-06 incident). Stop here with a specific signal naming the
233
- // unresolvable ref; tear down the freshly-inserted team (the worktree is
234
- // focus-owned and left intact). No session opens, so the focus never
235
- // enters the unknown-coverage re-review cycle.
236
- log.error(`[focus-executor] Review spawn ABORTED for "${focusName}": coverage ref ` +
237
- `"${branchName}" could not be resolved in ${worktreePath}. No session opened ` +
238
- `(a review over an unresolvable coverage anchor would loop as unknown-coverage drift).`);
239
- activeTeams.delete(focusId);
159
+ // Structural release guarantee (TEL-1). The team is registered above and MUST
160
+ // be released on EVERY exit path out of the spawn -- every early return, and
161
+ // any unhandled throw from a helper below (fetchSpawnContext / getBackend /
162
+ // resolveAssemblyRecipe on an empty registry / mkdirSync / the process-spawn
163
+ // re-throw) -- until the child process actually launches and assumes ownership
164
+ // of the lifecycle (teamCommitted = true). Without this, a throw leaves an
165
+ // activeTeams entry that outlives the process it names, and the double-spawn
166
+ // guard above then refuses every later spawn for this focus forever. This
167
+ // single finally REPLACES the hand-placed activeTeams.delete calls in the body;
168
+ // the delete now happens exactly once, here, on any non-committed exit. The
169
+ // catch keeps a throw from one focus's spawn from aborting its sibling focuses
170
+ // in the same poll tick (processReadyFocuses walks focuses in one loop) or from
171
+ // silencing the recovery paths that read team presence.
172
+ let teamCommitted = false;
173
+ try {
174
+ logSpawnHeader({ config, focusId, focusName, role, pipelineConfig, executionConfig, branchName, readOnly });
175
+ // --- Phase 1: fetch all spawn context (deliveries/issues/product-context/
176
+ // deployment-profile/loop-context) + PRD milestone push-down. null => the
177
+ // context fetch rejected; tear down the freshly-inserted team and return.
178
+ const spawnContext = await fetchSpawnContext(config, focusId, focusName);
179
+ if (!spawnContext) {
240
180
  return;
241
181
  }
242
- teamState.reviewSpawnTip = spawnTip;
243
- }
244
- // --- Phase: create the team-lead session. Opened AFTER Phase B so the
245
- // (focus, lineage) pass is resolved on the authoritative lineage
246
- // (teamState.sessionType), not a stale 'coding' default -- a 'review'-lineage
247
- // spawn without a pending directive would otherwise open a 'coding' pass while
248
- // the segment carried 'review'. null => createSession failed (the helper
249
- // already removed the team from activeTeams; worktree is focus-owned). Nothing
250
- // between Phase B above and here uses session.id; the first real use is the
251
- // modelResolution updateSession below.
252
- const session = await createTeamSession({
253
- config, role, focusId, focusName, branchName, sessionType: teamState.sessionType, teamState,
254
- });
255
- if (!session)
256
- return;
257
- // Legacy loop-context: resolved ONLY when the legacy full prompt will render it
258
- // (the directive path drops it, so resolving there was a dead fetch + a
259
- // duplicate focus.injections resolution). Empty string on the directive path.
260
- let loopContext = '';
261
- if (useLegacyFullPrompt) {
262
- const loopContextResult = await resolveLegacyLoopContext(config, focusId);
263
- loopContext = loopContextResult.content;
264
- assemblyManifest.push(...loopContextResult.manifest);
265
- }
266
- // --- Phase C: build the prompt with the resolved engine's vocabulary ---
267
- const promptContext = buildFocusPromptContext({
268
- config, focusId, focusName, focusDescription, deliveries, issues, executionConfig,
269
- pipelineConfig, deploymentProfileSnapshot, readOnly, loopContext,
270
- reviewFiledOpenCount, engineId: backend.id,
271
- // agent_resolvable filings are CODING work: hand them only to a coding pass,
272
- // never a review pass (a reviewer does not fix; it would mis-task them).
273
- agentResolvableItems: teamState.sessionType === 'review' ? [] : agentResolvableItems,
274
- });
275
- const prompt = buildSpawnPrompt({
276
- role, promptContext, useLegacyFullPrompt, directiveBody, prdMilestoneContext,
277
- answeredEscalationsSection: answeredEscalations.section,
278
- isReviewPass: teamState.sessionType === 'review',
279
- // Hand the review agent its own Telora agent_sessions.id so it stamps the
280
- // outcome with the exact id product-api validates against (review.ts).
281
- agentSessionId: session.id,
282
- });
283
- // Set up log file streams
284
- const logs = setupTeamLogStreams(config.logDir, branchName, focusName);
285
- // Build args and env.
286
- // Resolve the resume id from the focus's per-lineage session map (INJ-A),
287
- // keyed by the spawn's declared lineage, honoring its declared continuity
288
- // policy (INJ-B). continuity=fresh -> null; resume -> the lineage's stored id.
289
- const rawResumeId = resolveResumeId({
290
- sessionMap: claudeSessionIds,
291
- lineage: spawnSpec.lineage,
292
- continuity: spawnSpec.continuity,
293
- });
294
- // Force the spawn FRESH when an executable focus has queued CG-only deliveries
295
- // that need scoping: the scoping directive must land on a NEW session, not
296
- // resume a concluded one that no-ops (the spawn-loop wedge). resumeId is nulled
297
- // BEFORE arg-building so no --resume flag reaches the process. Discovery-only
298
- // (readOnly) focuses pass through unchanged.
299
- const scopingResume = resolveScopingSpawnResume({
300
- readOnly,
301
- deliveries,
302
- issues,
303
- resumeId: rawResumeId,
304
- });
305
- const resumeId = scopingResume.resumeId;
306
- if (scopingResume.isScopingSpawn) {
307
- log.info(`[focus-executor] Forcing fresh scoping spawn for "${focusName}" ` +
308
- `(dropping resume id ${rawResumeId ?? 'none'}; queued CG-only deliveries need Task/Bug scoping)`);
309
- }
310
- // --- Phase: resolve CODEX_HOME + per-pass local-model routing + model
311
- // selection + CLI args.
312
- // Surface (do not silently thrash) two different local models pinned to the
313
- // coding vs review pass on one GPU host (#9). Best-effort + deduped per focus;
314
- // never blocks the spawn. Runs before model resolution so the operator sees the
315
- // conflict regardless of which pass spawns first.
316
- await surfaceSingleHostModelConflict({
317
- focusId, focusName,
318
- organizationId: config.organizationId,
319
- productId: config.productId,
320
- localModelOverride,
321
- }).catch(err => {
322
- log.warn(`single-host model-conflict check failed for "${focusName}":`, err.message);
323
- });
324
- const modelResolution = await resolveSpawnModel({
325
- resolvedEngine, enginePass, localModelOverride, stageDirectiveLocalModel: directiveLocalModel,
326
- config, directiveModel,
327
- pendingFocusOverrideModel, pipelineConfig, backend, worktreePath, resumeId,
328
- role, readOnly, focusName, focusId,
329
- });
330
- if (modelResolution.kind === 'skip_load') {
331
- // Host-control swap failed (D2): do NOT spawn against a not-yet-loaded model.
332
- // Conservative -- mark the just-created session terminal (transient host-swap
333
- // failure, NOT a key/config defect) and release the in-memory slot so the 30s
334
- // poll cleanly re-attempts. No escalation: the failure is operationally
335
- // transient (host unreachable / model not yet loaded) and self-healing.
336
- const { coords, dbMessage } = modelResolution;
337
- await updateSession(session.id, {
338
- status: 'failed',
339
- exit_reason: `Host-control model swap failed for "${coords.name}": ${dbMessage}`,
340
- exit_category: 'local_model_swap_failed',
341
- ended_at: new Date().toISOString(),
342
- }).catch(updateErr => {
343
- log.warn(`Failed to update session after local-model swap failure:`, updateErr.message);
182
+ const { deliveries, issues, deploymentProfileSnapshot, answeredEscalations, prdMilestoneContext, prdMilestoneManifest, assemblyManifest, } = spawnContext;
183
+ // --- Phase 2: consume any pending directive, run the rank-ordered pre-spawn
184
+ // guard, and record known-delivery bookkeeping on the team state. 'skip' =>
185
+ // no actionable work; tear down and return (the map stays orchestrator-owned).
186
+ const resolution = resolveActionableDeliveries({
187
+ focusId, focusName, deliveries, issues, forceSpawn, teamState,
344
188
  });
345
- // Reset host-control state: a failed/timed-out load must not leave a residency
346
- // lock pinned to this focus (the swap-manager clears its own entry on the
347
- // failed observe; this is the defense-in-depth release on the spawn-teardown
348
- // path, which -- unlike a normal team completion -- never reaches
349
- // handleTeamCompletion). The next poll then re-evaluates the host cleanly.
350
- releaseHostByFocus(focusId);
351
- activeTeams.delete(focusId);
352
- return;
353
- }
354
- if (modelResolution.kind === 'still_loading') {
355
- // The per-host model swap is running OFF the poll loop (#3), or the host is
356
- // held by another focus's running pass (#4). This is NOT a failure: mark the
357
- // just-created session benign-terminal and release the in-memory slot so the
358
- // 30s poll cleanly re-attempts -- the detached load keeps running and a later
359
- // tick spawns once the model is ready / the host frees. The poll loop is not
360
- // stalled because the load was never awaited here. No escalation.
361
- const { coords, reason } = modelResolution;
362
- await updateSession(session.id, {
363
- status: 'failed',
364
- exit_reason: `Host-control swap deferred for "${coords.name}" (${reason}); retrying next poll`,
365
- exit_category: 'local_model_swap_deferred',
366
- ended_at: new Date().toISOString(),
367
- }).catch(updateErr => {
368
- log.warn(`Failed to update session after local-model swap deferral:`, updateErr.message);
189
+ if (resolution.kind === 'skip') {
190
+ return;
191
+ }
192
+ const { pendingDirective } = resolution;
193
+ // Ensure log directory exists
194
+ if (!existsSync(config.logDir)) {
195
+ mkdirSync(config.logDir, { recursive: true, mode: 0o700 });
196
+ }
197
+ // --- Phase: resolve the focus worktree (reuse + rebase, or inline-create).
198
+ // null => cannot spawn (no commits / create failed); the helper already tore
199
+ // down (activeTeams.delete + recordFocusTeardown).
200
+ const worktreePath = await resolveSpawnWorktree({ config, focusId, focusName, branchName, readOnly });
201
+ if (!worktreePath)
202
+ return;
203
+ teamState.worktreePath = worktreePath;
204
+ // Pin the integration tip NOW -- after the worktree rebased onto integration,
205
+ // before any mid-flight or completion merges advance the ref. This is the diff
206
+ // base for the session's git output at finalize; the live integration ref
207
+ // cannot be used because merging the focus branch makes `integration..branch`
208
+ // empty (real merges preserve ancestry).
209
+ teamState.integrationBaseSha = resolveRef(worktreePath, config.integrationBranch);
210
+ recordActivity();
211
+ // Best-effort review context: review-filed open count + prior findings (the
212
+ // remediation working set) + the focus description for the prompt.
213
+ const { reviewFiledOpenCount, priorFindings, focusDescription, agentResolvableItems } = await resolveReviewContext({
214
+ config, focusId, focusName, issues,
369
215
  });
370
- activeTeams.delete(focusId);
371
- return;
216
+ // --- Phase A: resolve the directive body + spawn metadata (no prompt yet) ---
217
+ // The engine backend is resolved per-pass (Phase B) before the prompt is
218
+ // built (Phase C), so the lead prompt's orchestration vocabulary matches the
219
+ // engine that will actually run this pass.
220
+ const { directiveBody, directiveModel, directiveEngine, directiveLocalModel, pendingFocusOverrideModel, spawnStageName, spawnDirectiveDeclared, useLegacyFullPrompt, } = await resolveDirectiveOrFallback({
221
+ config, focusId, focusName, worktreePath, pendingDirective, assemblyManifest,
222
+ claudeSessionIds, deliveries, issues, readOnly,
223
+ });
224
+ // --- Phase B: resolve the session lineage (pass) and the engine backend
225
+ // (stamps lineage + sessionType onto the team state). The stage directive's
226
+ // engine is the Workflow layer of the unified Focus > Workflow > Default. ---
227
+ const { spawnSpec, enginePass, resolvedEngine, backend } = resolveEngineForPass({
228
+ spawnDirectiveDeclared, spawnStageName, engineOverride, stageDirectiveEngine: directiveEngine,
229
+ config, orgDefaultEngine, focusName, teamState,
230
+ });
231
+ // Pin the focus-branch tip THIS review pass is covering (spawn-tip), captured
232
+ // now (post-rebase, before any mid-review commits). Carried to completion so
233
+ // the coverage watermark is stamped from what the review actually saw, and so
234
+ // the auto-approve gate can detect mid-review drift (spawn-tip != exit-tip).
235
+ // Review lineage only; coding teams leave it null.
236
+ if (teamState.sessionType === 'review') {
237
+ const spawnTip = resolveRef(worktreePath, branchName);
238
+ if (shouldAbortReviewSpawnForUnresolvableCoverage(teamState.sessionType, spawnTip)) {
239
+ // Hard-fail: a review pass whose coverage anchor cannot be resolved must
240
+ // NOT open a session. If it did, the review would run to a succeeded exit
241
+ // with coverageComplete=false (a null spawn-tip can never be
242
+ // coverage-complete -- review-exit-phase.ts:233), auto-approve would be
243
+ // withheld as apparent drift, and a full-pass re-review armed every cycle
244
+ // -- structurally forever (the 224-rejection loop shape from the
245
+ // 2026-08-06 incident). Stop here with a specific signal naming the
246
+ // unresolvable ref; tear down the freshly-inserted team (the worktree is
247
+ // focus-owned and left intact). No session opens, so the focus never
248
+ // enters the unknown-coverage re-review cycle.
249
+ log.error(`[focus-executor] Review spawn ABORTED for "${focusName}": coverage ref ` +
250
+ `"${branchName}" could not be resolved in ${worktreePath}. No session opened ` +
251
+ `(a review over an unresolvable coverage anchor would loop as unknown-coverage drift).`);
252
+ return;
253
+ }
254
+ teamState.reviewSpawnTip = spawnTip;
255
+ }
256
+ // --- Phase: create the team-lead session. Opened AFTER Phase B so the
257
+ // (focus, lineage) pass is resolved on the authoritative lineage
258
+ // (teamState.sessionType), not a stale 'coding' default -- a 'review'-lineage
259
+ // spawn without a pending directive would otherwise open a 'coding' pass while
260
+ // the segment carried 'review'. null => createSession failed (the helper
261
+ // already removed the team from activeTeams; worktree is focus-owned). Nothing
262
+ // between Phase B above and here uses session.id; the first real use is the
263
+ // modelResolution updateSession below.
264
+ const session = await createTeamSession({
265
+ config, role, focusId, focusName, branchName, sessionType: teamState.sessionType, teamState,
266
+ });
267
+ if (!session)
268
+ return;
269
+ // Legacy loop-context: resolved ONLY when the legacy full prompt will render it
270
+ // (the directive path drops it, so resolving there was a dead fetch + a
271
+ // duplicate focus.injections resolution). Empty string on the directive path.
272
+ let loopContext = '';
273
+ if (useLegacyFullPrompt) {
274
+ const loopContextResult = await resolveLegacyLoopContext(config, focusId);
275
+ loopContext = loopContextResult.content;
276
+ assemblyManifest.push(...loopContextResult.manifest);
277
+ }
278
+ // --- Phase C: build the prompt with the resolved engine's vocabulary ---
279
+ const promptContext = buildFocusPromptContext({
280
+ config, focusId, focusName, focusDescription, deliveries, issues, executionConfig,
281
+ pipelineConfig, deploymentProfileSnapshot, readOnly, loopContext,
282
+ reviewFiledOpenCount, engineId: backend.id,
283
+ // agent_resolvable filings are CODING work: hand them only to a coding pass,
284
+ // never a review pass (a reviewer does not fix; it would mis-task them).
285
+ agentResolvableItems: teamState.sessionType === 'review' ? [] : agentResolvableItems,
286
+ });
287
+ const prompt = buildSpawnPrompt({
288
+ role, promptContext, useLegacyFullPrompt, directiveBody, prdMilestoneContext,
289
+ answeredEscalationsSection: answeredEscalations.section,
290
+ isReviewPass: teamState.sessionType === 'review',
291
+ // Hand the review agent its own Telora agent_sessions.id so it stamps the
292
+ // outcome with the exact id product-api validates against (review.ts).
293
+ agentSessionId: session.id,
294
+ });
295
+ // Set up log file streams
296
+ const logs = setupTeamLogStreams(config.logDir, branchName, focusName);
297
+ // Build args and env.
298
+ // Resolve the resume id from the focus's per-lineage session map (INJ-A),
299
+ // keyed by the spawn's declared lineage, honoring its declared continuity
300
+ // policy (INJ-B). continuity=fresh -> null; resume -> the lineage's stored id.
301
+ const rawResumeId = resolveResumeId({
302
+ sessionMap: claudeSessionIds,
303
+ lineage: spawnSpec.lineage,
304
+ continuity: spawnSpec.continuity,
305
+ });
306
+ // Force the spawn FRESH when an executable focus has queued CG-only deliveries
307
+ // that need scoping: the scoping directive must land on a NEW session, not
308
+ // resume a concluded one that no-ops (the spawn-loop wedge). resumeId is nulled
309
+ // BEFORE arg-building so no --resume flag reaches the process. Discovery-only
310
+ // (readOnly) focuses pass through unchanged.
311
+ const scopingResume = resolveScopingSpawnResume({
312
+ readOnly,
313
+ deliveries,
314
+ issues,
315
+ resumeId: rawResumeId,
316
+ });
317
+ const resumeId = scopingResume.resumeId;
318
+ if (scopingResume.isScopingSpawn) {
319
+ log.info(`[focus-executor] Forcing fresh scoping spawn for "${focusName}" ` +
320
+ `(dropping resume id ${rawResumeId ?? 'none'}; queued CG-only deliveries need Task/Bug scoping)`);
321
+ }
322
+ // --- Phase: resolve CODEX_HOME + per-pass local-model routing + model
323
+ // selection + CLI args.
324
+ // Surface (do not silently thrash) two different local models pinned to the
325
+ // coding vs review pass on one GPU host (#9). Best-effort + deduped per focus;
326
+ // never blocks the spawn. Runs before model resolution so the operator sees the
327
+ // conflict regardless of which pass spawns first.
328
+ await surfaceSingleHostModelConflict({
329
+ focusId, focusName,
330
+ organizationId: config.organizationId,
331
+ productId: config.productId,
332
+ localModelOverride,
333
+ }).catch(err => {
334
+ log.warn(`single-host model-conflict check failed for "${focusName}":`, err.message);
335
+ });
336
+ const modelResolution = await resolveSpawnModel({
337
+ resolvedEngine, enginePass, localModelOverride, stageDirectiveLocalModel: directiveLocalModel,
338
+ config, directiveModel,
339
+ pendingFocusOverrideModel, pipelineConfig, backend, worktreePath, resumeId,
340
+ role, readOnly, focusName, focusId,
341
+ });
342
+ if (modelResolution.kind === 'skip_load') {
343
+ // Host-control swap failed (D2): do NOT spawn against a not-yet-loaded model.
344
+ // Conservative -- mark the just-created session terminal (transient host-swap
345
+ // failure, NOT a key/config defect) and release the in-memory slot so the 30s
346
+ // poll cleanly re-attempts. No escalation: the failure is operationally
347
+ // transient (host unreachable / model not yet loaded) and self-healing.
348
+ const { coords, dbMessage } = modelResolution;
349
+ await updateSession(session.id, {
350
+ status: 'failed',
351
+ exit_reason: `Host-control model swap failed for "${coords.name}": ${dbMessage}`,
352
+ exit_category: 'local_model_swap_failed',
353
+ ended_at: new Date().toISOString(),
354
+ }).catch(updateErr => {
355
+ log.warn(`Failed to update session after local-model swap failure:`, updateErr.message);
356
+ });
357
+ // Reset host-control state: a failed/timed-out load must not leave a residency
358
+ // lock pinned to this focus (the swap-manager clears its own entry on the
359
+ // failed observe; this is the defense-in-depth release on the spawn-teardown
360
+ // path, which -- unlike a normal team completion -- never reaches
361
+ // handleTeamCompletion). The next poll then re-evaluates the host cleanly.
362
+ releaseHostByFocus(focusId);
363
+ return;
364
+ }
365
+ if (modelResolution.kind === 'still_loading') {
366
+ // The per-host model swap is running OFF the poll loop (#3), or the host is
367
+ // held by another focus's running pass (#4). This is NOT a failure: mark the
368
+ // just-created session benign-terminal and release the in-memory slot so the
369
+ // 30s poll cleanly re-attempts -- the detached load keeps running and a later
370
+ // tick spawns once the model is ready / the host frees. The poll loop is not
371
+ // stalled because the load was never awaited here. No escalation.
372
+ const { coords, reason } = modelResolution;
373
+ await updateSession(session.id, {
374
+ status: 'failed',
375
+ exit_reason: `Host-control swap deferred for "${coords.name}" (${reason}); retrying next poll`,
376
+ exit_category: 'local_model_swap_deferred',
377
+ ended_at: new Date().toISOString(),
378
+ }).catch(updateErr => {
379
+ log.warn(`Failed to update session after local-model swap deferral:`, updateErr.message);
380
+ });
381
+ return;
382
+ }
383
+ const { args, effectiveModel, spawnCodexHome, spawnLocalModelKey, isLocalModelPass } = modelResolution;
384
+ // Attach the local-model translating proxy (if engaged) to the team state so
385
+ // every teardown path can close it and the close handler can read its
386
+ // reception guard. Null for hosted/Claude/flag-off spawns.
387
+ teamState.mcpProxy = modelResolution.mcpProxy ?? null;
388
+ // On resume, send an incremental delta instead of the full prompt (INJ-D);
389
+ // a fresh spawn sends the composed prompt unchanged. The git.diff manifest the
390
+ // resume delta delivers is captured here for the delivered-manifest record.
391
+ const gitDiffManifest = [];
392
+ const messageToSend = await buildSpawnMessage({
393
+ prompt, resumeId, readOnlyFocus: readOnly, role, promptContext, spawnSpec, config, focusId, focusName, deliveries, issues, worktreePath, priorFindings,
394
+ answeredEscalationsSection: answeredEscalations.section,
395
+ gitDiffManifestSink: gitDiffManifest,
396
+ // Hand a RESUMED review pass its own active Telora session id too (the
397
+ // fresh-prompt shape already carries it) so a review that runs across resumes
398
+ // stamps focus_review_complete with the exact id product-api validates,
399
+ // instead of a stale/completed one it cannot discover.
400
+ agentSessionId: session.id,
401
+ });
402
+ // Assemble the DELIVERED manifest: the sources actually composed into the
403
+ // message just built, per its shape (agent_context_assembly truthfulness).
404
+ // assemblyManifest already carries only the directive recipe (fresh directive)
405
+ // or the loop-context recipe (fresh legacy) -- empty on resume-delta / scoping.
406
+ const spawnShape = scopingResume.isScopingSpawn
407
+ ? 'scoping'
408
+ : resumeId != null
409
+ ? 'resume-delta'
410
+ : useLegacyFullPrompt
411
+ ? 'fresh-legacy'
412
+ : 'fresh-directive';
413
+ const deliveredManifest = buildDeliveredManifest({
414
+ shape: spawnShape,
415
+ promptRecipeManifest: assemblyManifest,
416
+ answeredEscalationsSection: answeredEscalations.section,
417
+ prdMilestoneManifest,
418
+ gitDiffManifest,
419
+ });
420
+ // --- Final phase: build the spawn env, persist the manifest, write the
421
+ // session lifecycle, acquire the governor slot, sandbox-wrap, spawn the child,
422
+ // write stdin, and attach handlers. Owns its governor-denied / sandbox-
423
+ // unavailable cleanups (session failed-write + slot release + activeTeams.delete).
424
+ await spawnTeamProcess({
425
+ config, focusId, focusName, session, teamState, backend, args, messageToSend,
426
+ logs, worktreePath, resumeId, assemblyManifest: deliveredManifest, spawnCodexHome, spawnLocalModelKey, isLocalModelPass,
427
+ effectiveModel, pendingDirective, spawnStageName, params, governor, spawnFocusTeam,
428
+ answeredEscalationIds: answeredEscalations.ids,
429
+ });
430
+ // The child process now owns the team lifecycle: the registration must
431
+ // SURVIVE this return (completion/error handlers remove it). spawnTeamProcess
432
+ // owns its own governor-denied / sandbox-unavailable teardown (which deletes
433
+ // the entry itself); in those cases this flag is a no-op because the entry is
434
+ // already gone. Only a genuine spawn hands the registration off.
435
+ teamCommitted = true;
436
+ }
437
+ catch (err) {
438
+ // An unhandled throw from any helper above (e.g. the PRD milestone push-down,
439
+ // getBackend on an unknown engine id, the assembly engine on an empty
440
+ // registry, mkdirSync, or the process-spawn re-throw) reaches here. Log it
441
+ // against this focus and abandon THIS spawn -- the finally releases the
442
+ // registration, and the next poll tick re-attempts. Swallowing (rather than
443
+ // re-throwing) keeps one focus's spawn failure from aborting its sibling
444
+ // focuses in the same processReadyFocuses loop and from silencing the
445
+ // presence-reading recovery paths (TEL-4).
446
+ log.error(`[focus-executor] Spawn ABANDONED for "${focusName}" on an unhandled error; ` +
447
+ `team registration released, will re-attempt next poll: ${err.message}`);
448
+ }
449
+ finally {
450
+ if (!teamCommitted) {
451
+ activeTeams.delete(focusId);
452
+ }
372
453
  }
373
- const { args, effectiveModel, spawnCodexHome, spawnLocalModelKey, isLocalModelPass } = modelResolution;
374
- // Attach the local-model translating proxy (if engaged) to the team state so
375
- // every teardown path can close it and the close handler can read its
376
- // reception guard. Null for hosted/Claude/flag-off spawns.
377
- teamState.mcpProxy = modelResolution.mcpProxy ?? null;
378
- // On resume, send an incremental delta instead of the full prompt (INJ-D);
379
- // a fresh spawn sends the composed prompt unchanged. The git.diff manifest the
380
- // resume delta delivers is captured here for the delivered-manifest record.
381
- const gitDiffManifest = [];
382
- const messageToSend = await buildSpawnMessage({
383
- prompt, resumeId, readOnlyFocus: readOnly, role, promptContext, spawnSpec, config, focusId, focusName, deliveries, issues, worktreePath, priorFindings,
384
- answeredEscalationsSection: answeredEscalations.section,
385
- gitDiffManifestSink: gitDiffManifest,
386
- // Hand a RESUMED review pass its own active Telora session id too (the
387
- // fresh-prompt shape already carries it) so a review that runs across resumes
388
- // stamps focus_review_complete with the exact id product-api validates,
389
- // instead of a stale/completed one it cannot discover.
390
- agentSessionId: session.id,
391
- });
392
- // Assemble the DELIVERED manifest: the sources actually composed into the
393
- // message just built, per its shape (agent_context_assembly truthfulness).
394
- // assemblyManifest already carries only the directive recipe (fresh directive)
395
- // or the loop-context recipe (fresh legacy) -- empty on resume-delta / scoping.
396
- const spawnShape = scopingResume.isScopingSpawn
397
- ? 'scoping'
398
- : resumeId != null
399
- ? 'resume-delta'
400
- : useLegacyFullPrompt
401
- ? 'fresh-legacy'
402
- : 'fresh-directive';
403
- const deliveredManifest = buildDeliveredManifest({
404
- shape: spawnShape,
405
- promptRecipeManifest: assemblyManifest,
406
- answeredEscalationsSection: answeredEscalations.section,
407
- prdMilestoneManifest,
408
- gitDiffManifest,
409
- });
410
- // --- Final phase: build the spawn env, persist the manifest, write the
411
- // session lifecycle, acquire the governor slot, sandbox-wrap, spawn the child,
412
- // write stdin, and attach handlers. Owns its governor-denied / sandbox-
413
- // unavailable cleanups (session failed-write + slot release + activeTeams.delete).
414
- await spawnTeamProcess({
415
- config, focusId, focusName, session, teamState, backend, args, messageToSend,
416
- logs, worktreePath, resumeId, assemblyManifest: deliveredManifest, spawnCodexHome, spawnLocalModelKey, isLocalModelPass,
417
- effectiveModel, pendingDirective, spawnStageName, params, governor, spawnFocusTeam,
418
- answeredEscalationIds: answeredEscalations.ids,
419
- });
420
454
  }
421
455
  //# sourceMappingURL=focus-executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus-executor.js","sourceRoot":"","sources":["../../src/focus/focus-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-executor.js","sourceRoot":"","sources":["../../src/focus/focus-executor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"focus-loop-registry.d.ts","sourceRoot":"","sources":["../../src/focus/focus-loop-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAoBtD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,SAAS,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9D;AAED,eAAO,MAAM,aAAa,EAAE,cAAc,EAgYzC,CAAC"}
1
+ {"version":3,"file":"focus-loop-registry.d.ts","sourceRoot":"","sources":["../../src/focus/focus-loop-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAqBtD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,SAAS,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9D;AAED,eAAO,MAAM,aAAa,EAAE,cAAc,EA+azC,CAAC"}