@telora/daemon 0.22.104 → 0.22.131

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 (478) hide show
  1. package/build-info.json +4 -3
  2. package/dist/completion/commit-verdict-release.d.ts +49 -0
  3. package/dist/completion/commit-verdict-release.d.ts.map +1 -0
  4. package/dist/completion/commit-verdict-release.js +240 -0
  5. package/dist/completion/commit-verdict-release.js.map +1 -0
  6. package/dist/completion/completion-phase-registry.d.ts +10 -4
  7. package/dist/completion/completion-phase-registry.d.ts.map +1 -1
  8. package/dist/completion/completion-phase-registry.js +19 -7
  9. package/dist/completion/completion-phase-registry.js.map +1 -1
  10. package/dist/completion/detector.d.ts.map +1 -1
  11. package/dist/completion/detector.js +1 -0
  12. package/dist/completion/detector.js.map +1 -1
  13. package/dist/completion/event-entry-phases.d.ts +6 -3
  14. package/dist/completion/event-entry-phases.d.ts.map +1 -1
  15. package/dist/completion/event-entry-phases.js +135 -76
  16. package/dist/completion/event-entry-phases.js.map +1 -1
  17. package/dist/completion/event-phases.d.ts +24 -3
  18. package/dist/completion/event-phases.d.ts.map +1 -1
  19. package/dist/completion/event-phases.js +9 -9
  20. package/dist/completion/event-phases.js.map +1 -1
  21. package/dist/completion/event.d.ts +8 -0
  22. package/dist/completion/event.d.ts.map +1 -1
  23. package/dist/completion/event.js +47 -21
  24. package/dist/completion/event.js.map +1 -1
  25. package/dist/completion/exit-classification.d.ts.map +1 -1
  26. package/dist/completion/exit-classification.js +1 -0
  27. package/dist/completion/exit-classification.js.map +1 -1
  28. package/dist/completion/merge-phase.d.ts +21 -9
  29. package/dist/completion/merge-phase.d.ts.map +1 -1
  30. package/dist/completion/merge-phase.js +35 -10
  31. package/dist/completion/merge-phase.js.map +1 -1
  32. package/dist/completion/review-auto-approval-record.d.ts +19 -0
  33. package/dist/completion/review-auto-approval-record.d.ts.map +1 -0
  34. package/dist/completion/review-auto-approval-record.js +102 -0
  35. package/dist/completion/review-auto-approval-record.js.map +1 -0
  36. package/dist/completion/review-cycle-cap.d.ts +62 -0
  37. package/dist/completion/review-cycle-cap.d.ts.map +1 -0
  38. package/dist/completion/review-cycle-cap.js +180 -0
  39. package/dist/completion/review-cycle-cap.js.map +1 -0
  40. package/dist/completion/review-exit-deps.d.ts +17 -2
  41. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  42. package/dist/completion/review-exit-deps.js +19 -2
  43. package/dist/completion/review-exit-deps.js.map +1 -1
  44. package/dist/completion/review-exit-escalations.d.ts +45 -23
  45. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  46. package/dist/completion/review-exit-escalations.js +15 -74
  47. package/dist/completion/review-exit-escalations.js.map +1 -1
  48. package/dist/completion/review-exit-evidence.d.ts +9 -0
  49. package/dist/completion/review-exit-evidence.d.ts.map +1 -1
  50. package/dist/completion/review-exit-evidence.js +4 -1
  51. package/dist/completion/review-exit-evidence.js.map +1 -1
  52. package/dist/completion/review-exit-foreign-findings.d.ts +151 -0
  53. package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -0
  54. package/dist/completion/review-exit-foreign-findings.js +474 -0
  55. package/dist/completion/review-exit-foreign-findings.js.map +1 -0
  56. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  57. package/dist/completion/review-exit-phase.js +71 -64
  58. package/dist/completion/review-exit-phase.js.map +1 -1
  59. package/dist/completion/review-exit-progress.d.ts +20 -0
  60. package/dist/completion/review-exit-progress.d.ts.map +1 -1
  61. package/dist/completion/review-exit-progress.js +28 -19
  62. package/dist/completion/review-exit-progress.js.map +1 -1
  63. package/dist/completion/review-exit-rehoming.d.ts +5 -0
  64. package/dist/completion/review-exit-rehoming.d.ts.map +1 -1
  65. package/dist/completion/review-exit-rehoming.js.map +1 -1
  66. package/dist/completion/review-exit-verdict-gate.d.ts +202 -0
  67. package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -0
  68. package/dist/completion/review-exit-verdict-gate.js +228 -0
  69. package/dist/completion/review-exit-verdict-gate.js.map +1 -0
  70. package/dist/completion/review-next-step.d.ts +62 -0
  71. package/dist/completion/review-next-step.d.ts.map +1 -0
  72. package/dist/completion/review-next-step.js +63 -0
  73. package/dist/completion/review-next-step.js.map +1 -0
  74. package/dist/completion/session-hold-sweep-deps.d.ts +17 -0
  75. package/dist/completion/session-hold-sweep-deps.d.ts.map +1 -0
  76. package/dist/completion/session-hold-sweep-deps.js +89 -0
  77. package/dist/completion/session-hold-sweep-deps.js.map +1 -0
  78. package/dist/completion/session-hold.d.ts +180 -0
  79. package/dist/completion/session-hold.d.ts.map +1 -0
  80. package/dist/completion/session-hold.js +238 -0
  81. package/dist/completion/session-hold.js.map +1 -0
  82. package/dist/completion/state-cascade.d.ts +19 -0
  83. package/dist/completion/state-cascade.d.ts.map +1 -1
  84. package/dist/completion/state-cascade.js +85 -31
  85. package/dist/completion/state-cascade.js.map +1 -1
  86. package/dist/completion/team-lifecycle.d.ts +35 -2
  87. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  88. package/dist/completion/team-lifecycle.js +165 -94
  89. package/dist/completion/team-lifecycle.js.map +1 -1
  90. package/dist/completion/team-phase.d.ts +27 -15
  91. package/dist/completion/team-phase.d.ts.map +1 -1
  92. package/dist/completion/team-phase.js +34 -15
  93. package/dist/completion/team-phase.js.map +1 -1
  94. package/dist/delivery/commit-verdict-hold.d.ts +55 -0
  95. package/dist/delivery/commit-verdict-hold.d.ts.map +1 -0
  96. package/dist/delivery/commit-verdict-hold.js +118 -0
  97. package/dist/delivery/commit-verdict-hold.js.map +1 -0
  98. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  99. package/dist/directive/directive-dispatch.js +10 -3
  100. package/dist/directive/directive-dispatch.js.map +1 -1
  101. package/dist/directive/directive-executor.d.ts.map +1 -1
  102. package/dist/directive/directive-executor.js +1 -0
  103. package/dist/directive/directive-executor.js.map +1 -1
  104. package/dist/directive/directive-queue.d.ts.map +1 -1
  105. package/dist/directive/directive-queue.js +6 -1
  106. package/dist/directive/directive-queue.js.map +1 -1
  107. package/dist/directive/phase-sync.d.ts +29 -2
  108. package/dist/directive/phase-sync.d.ts.map +1 -1
  109. package/dist/directive/phase-sync.js +30 -6
  110. package/dist/directive/phase-sync.js.map +1 -1
  111. package/dist/drift/artifact-ref-shape.d.ts +34 -0
  112. package/dist/drift/artifact-ref-shape.d.ts.map +1 -0
  113. package/dist/drift/artifact-ref-shape.js +94 -0
  114. package/dist/drift/artifact-ref-shape.js.map +1 -0
  115. package/dist/drift/drift-eval-loop.d.ts +7 -0
  116. package/dist/drift/drift-eval-loop.d.ts.map +1 -1
  117. package/dist/drift/drift-eval-loop.js +34 -5
  118. package/dist/drift/drift-eval-loop.js.map +1 -1
  119. package/dist/drift/drift-evaluator.d.ts.map +1 -1
  120. package/dist/drift/drift-evaluator.js +8 -3
  121. package/dist/drift/drift-evaluator.js.map +1 -1
  122. package/dist/focus/awaiting-slot.d.ts +34 -0
  123. package/dist/focus/awaiting-slot.d.ts.map +1 -0
  124. package/dist/focus/awaiting-slot.js +26 -0
  125. package/dist/focus/awaiting-slot.js.map +1 -0
  126. package/dist/focus/focus-lifecycle.js +2 -2
  127. package/dist/focus/focus-lifecycle.js.map +1 -1
  128. package/dist/focus/focus-phase.d.ts.map +1 -1
  129. package/dist/focus/focus-phase.js +3 -1
  130. package/dist/focus/focus-phase.js.map +1 -1
  131. package/dist/focus/focus-spawn-decision.d.ts +62 -0
  132. package/dist/focus/focus-spawn-decision.d.ts.map +1 -0
  133. package/dist/focus/focus-spawn-decision.js +41 -0
  134. package/dist/focus/focus-spawn-decision.js.map +1 -0
  135. package/dist/focus/focus-team-state.d.ts.map +1 -1
  136. package/dist/focus/focus-team-state.js +1 -13
  137. package/dist/focus/focus-team-state.js.map +1 -1
  138. package/dist/focus/listener-spawn.d.ts +16 -55
  139. package/dist/focus/listener-spawn.d.ts.map +1 -1
  140. package/dist/focus/listener-spawn.js +102 -64
  141. package/dist/focus/listener-spawn.js.map +1 -1
  142. package/dist/focus/listener-state.d.ts.map +1 -1
  143. package/dist/focus/listener-state.js +4 -1
  144. package/dist/focus/listener-state.js.map +1 -1
  145. package/dist/focus/listener.d.ts +41 -2
  146. package/dist/focus/listener.d.ts.map +1 -1
  147. package/dist/focus/listener.js +135 -83
  148. package/dist/focus/listener.js.map +1 -1
  149. package/dist/focus/pending-spawn-pass-deps.d.ts +69 -0
  150. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -0
  151. package/dist/focus/pending-spawn-pass-deps.js +34 -0
  152. package/dist/focus/pending-spawn-pass-deps.js.map +1 -0
  153. package/dist/focus/pending-spawn-review-next-step.d.ts +83 -0
  154. package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -0
  155. package/dist/focus/pending-spawn-review-next-step.js +325 -0
  156. package/dist/focus/pending-spawn-review-next-step.js.map +1 -0
  157. package/dist/focus/review-cycle-cap-hold.d.ts +132 -0
  158. package/dist/focus/review-cycle-cap-hold.d.ts.map +1 -0
  159. package/dist/focus/review-cycle-cap-hold.js +178 -0
  160. package/dist/focus/review-cycle-cap-hold.js.map +1 -0
  161. package/dist/focus/team-actionable-work.js +2 -2
  162. package/dist/focus/verify-open-issues.d.ts +22 -0
  163. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  164. package/dist/focus/verify-open-issues.js +118 -57
  165. package/dist/focus/verify-open-issues.js.map +1 -1
  166. package/dist/focus/verify-routing-passes.d.ts +32 -0
  167. package/dist/focus/verify-routing-passes.d.ts.map +1 -0
  168. package/dist/focus/verify-routing-passes.js +18 -0
  169. package/dist/focus/verify-routing-passes.js.map +1 -0
  170. package/dist/git/index.d.ts.map +1 -1
  171. package/dist/git/index.js +9 -5
  172. package/dist/git/index.js.map +1 -1
  173. package/dist/merge/focus-merge.d.ts +16 -2
  174. package/dist/merge/focus-merge.d.ts.map +1 -1
  175. package/dist/merge/focus-merge.js +53 -30
  176. package/dist/merge/focus-merge.js.map +1 -1
  177. package/dist/merge/merge-back-loop.d.ts +5 -0
  178. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  179. package/dist/merge/merge-back-loop.js +17 -8
  180. package/dist/merge/merge-back-loop.js.map +1 -1
  181. package/dist/merge/merge-gate-coverage.d.ts +94 -0
  182. package/dist/merge/merge-gate-coverage.d.ts.map +1 -0
  183. package/dist/merge/merge-gate-coverage.js +217 -0
  184. package/dist/merge/merge-gate-coverage.js.map +1 -0
  185. package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
  186. package/dist/prompt/focus-prompt-builder.js +6 -0
  187. package/dist/prompt/focus-prompt-builder.js.map +1 -1
  188. package/dist/prompt/prompt-listing.d.ts.map +1 -1
  189. package/dist/prompt/prompt-listing.js +8 -0
  190. package/dist/prompt/prompt-listing.js.map +1 -1
  191. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  192. package/dist/prompt/team-prompt-base.js +5 -1
  193. package/dist/prompt/team-prompt-base.js.map +1 -1
  194. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  195. package/dist/prompt-sections/execution-sections.js +14 -39
  196. package/dist/prompt-sections/execution-sections.js.map +1 -1
  197. package/dist/prompt-sections/gate-ownership.d.ts +36 -0
  198. package/dist/prompt-sections/gate-ownership.d.ts.map +1 -0
  199. package/dist/prompt-sections/gate-ownership.js +68 -0
  200. package/dist/prompt-sections/gate-ownership.js.map +1 -0
  201. package/dist/prompt-sections/gate-verdict-section.d.ts +58 -0
  202. package/dist/prompt-sections/gate-verdict-section.d.ts.map +1 -0
  203. package/dist/prompt-sections/gate-verdict-section.js +88 -0
  204. package/dist/prompt-sections/gate-verdict-section.js.map +1 -0
  205. package/dist/prompt-sections/persona-sections.d.ts +10 -0
  206. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  207. package/dist/prompt-sections/persona-sections.js +35 -11
  208. package/dist/prompt-sections/persona-sections.js.map +1 -1
  209. package/dist/prompt-sections/shared.js +1 -1
  210. package/dist/prompt-sections/shared.js.map +1 -1
  211. package/dist/queries/agent-resolvable-promotion.d.ts +6 -3
  212. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  213. package/dist/queries/agent-resolvable-promotion.js +20 -9
  214. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  215. package/dist/queries/deliveries.d.ts +46 -4
  216. package/dist/queries/deliveries.d.ts.map +1 -1
  217. package/dist/queries/deliveries.js +69 -16
  218. package/dist/queries/deliveries.js.map +1 -1
  219. package/dist/queries/delivery-gate-state.d.ts +151 -1
  220. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  221. package/dist/queries/delivery-gate-state.js +95 -14
  222. package/dist/queries/delivery-gate-state.js.map +1 -1
  223. package/dist/queries/delivery-write-discipline.d.ts +65 -0
  224. package/dist/queries/delivery-write-discipline.d.ts.map +1 -0
  225. package/dist/queries/delivery-write-discipline.js +101 -0
  226. package/dist/queries/delivery-write-discipline.js.map +1 -0
  227. package/dist/queries/escalation-consumption.d.ts +11 -0
  228. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  229. package/dist/queries/escalation-consumption.js +22 -0
  230. package/dist/queries/escalation-consumption.js.map +1 -1
  231. package/dist/queries/escalation-spool.d.ts +75 -0
  232. package/dist/queries/escalation-spool.d.ts.map +1 -0
  233. package/dist/queries/escalation-spool.js +232 -0
  234. package/dist/queries/escalation-spool.js.map +1 -0
  235. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  236. package/dist/queries/escalation-suppression.js +2 -0
  237. package/dist/queries/escalation-suppression.js.map +1 -1
  238. package/dist/queries/escalations.js +1 -1
  239. package/dist/queries/filing-observation.d.ts.map +1 -1
  240. package/dist/queries/filing-observation.js +2 -0
  241. package/dist/queries/filing-observation.js.map +1 -1
  242. package/dist/queries/focus-discovery.d.ts +4 -4
  243. package/dist/queries/focus-discovery.d.ts.map +1 -1
  244. package/dist/queries/focus-discovery.js +1 -0
  245. package/dist/queries/focus-discovery.js.map +1 -1
  246. package/dist/queries/focus-review-approval.d.ts +84 -0
  247. package/dist/queries/focus-review-approval.d.ts.map +1 -0
  248. package/dist/queries/focus-review-approval.js +158 -0
  249. package/dist/queries/focus-review-approval.js.map +1 -0
  250. package/dist/queries/focuses.d.ts +6 -5
  251. package/dist/queries/focuses.d.ts.map +1 -1
  252. package/dist/queries/focuses.js +9 -5
  253. package/dist/queries/focuses.js.map +1 -1
  254. package/dist/queries/incident-correlation.d.ts +5 -4
  255. package/dist/queries/incident-correlation.d.ts.map +1 -1
  256. package/dist/queries/incident-correlation.js +11 -5
  257. package/dist/queries/incident-correlation.js.map +1 -1
  258. package/dist/queries/issues.d.ts.map +1 -1
  259. package/dist/queries/issues.js +2 -1
  260. package/dist/queries/issues.js.map +1 -1
  261. package/dist/queries/loop-refusal-observation.d.ts +64 -0
  262. package/dist/queries/loop-refusal-observation.d.ts.map +1 -0
  263. package/dist/queries/loop-refusal-observation.js +137 -0
  264. package/dist/queries/loop-refusal-observation.js.map +1 -0
  265. package/dist/queries/schemas.d.ts +9 -0
  266. package/dist/queries/schemas.d.ts.map +1 -1
  267. package/dist/queries/schemas.js +11 -3
  268. package/dist/queries/schemas.js.map +1 -1
  269. package/dist/queries/shared.js +1 -1
  270. package/dist/queries/verification.d.ts.map +1 -1
  271. package/dist/queries/verification.js +1 -15
  272. package/dist/queries/verification.js.map +1 -1
  273. package/dist/queries/wire-contract.generated.d.ts +3 -0
  274. package/dist/queries/wire-contract.generated.d.ts.map +1 -1
  275. package/dist/queries/wire-contract.generated.js +3 -0
  276. package/dist/queries/wire-contract.generated.js.map +1 -1
  277. package/dist/resolvers/assembly-engine.d.ts.map +1 -1
  278. package/dist/resolvers/assembly-engine.js +3 -1
  279. package/dist/resolvers/assembly-engine.js.map +1 -1
  280. package/dist/resolvers/git-diff-against-base.d.ts +5 -2
  281. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  282. package/dist/resolvers/git-diff-against-base.js +121 -39
  283. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  284. package/dist/resolvers/shared/git-diff.d.ts +2 -0
  285. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  286. package/dist/resolvers/shared/git-diff.js +5 -1
  287. package/dist/resolvers/shared/git-diff.js.map +1 -1
  288. package/dist/resolvers/shared/review-window-commits.d.ts +96 -0
  289. package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -0
  290. package/dist/resolvers/shared/review-window-commits.js +262 -0
  291. package/dist/resolvers/shared/review-window-commits.js.map +1 -0
  292. package/dist/session/session-lineage.d.ts.map +1 -1
  293. package/dist/session/session-lineage.js +4 -1
  294. package/dist/session/session-lineage.js.map +1 -1
  295. package/dist/shell/fail-stop.d.ts +18 -0
  296. package/dist/shell/fail-stop.d.ts.map +1 -0
  297. package/dist/shell/fail-stop.js +53 -0
  298. package/dist/shell/fail-stop.js.map +1 -0
  299. package/dist/shell/graceful-shutdown.d.ts +48 -0
  300. package/dist/shell/graceful-shutdown.d.ts.map +1 -0
  301. package/dist/shell/graceful-shutdown.js +152 -0
  302. package/dist/shell/graceful-shutdown.js.map +1 -0
  303. package/dist/shell/heartbeat.d.ts.map +1 -1
  304. package/dist/shell/heartbeat.js +5 -4
  305. package/dist/shell/heartbeat.js.map +1 -1
  306. package/dist/shell/log.d.ts.map +1 -1
  307. package/dist/shell/log.js +4 -1
  308. package/dist/shell/log.js.map +1 -1
  309. package/dist/shell/stop-request.d.ts.map +1 -1
  310. package/dist/shell/stop-request.js +2 -1
  311. package/dist/shell/stop-request.js.map +1 -1
  312. package/dist/shell/unified-shell.d.ts.map +1 -1
  313. package/dist/shell/unified-shell.js +41 -114
  314. package/dist/shell/unified-shell.js.map +1 -1
  315. package/dist/spawn/lifecycle.d.ts +12 -0
  316. package/dist/spawn/lifecycle.d.ts.map +1 -1
  317. package/dist/spawn/lifecycle.js +25 -21
  318. package/dist/spawn/lifecycle.js.map +1 -1
  319. package/dist/spawn/prompt-assembly.d.ts +19 -1
  320. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  321. package/dist/spawn/prompt-assembly.js +70 -21
  322. package/dist/spawn/prompt-assembly.js.map +1 -1
  323. package/dist/spawn/review-hold-park.d.ts.map +1 -1
  324. package/dist/spawn/review-hold-park.js +18 -8
  325. package/dist/spawn/review-hold-park.js.map +1 -1
  326. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  327. package/dist/spawn/spawn-cooldown.js +4 -0
  328. package/dist/spawn/spawn-cooldown.js.map +1 -1
  329. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  330. package/dist/spawn/spawn-decision.js +2 -1
  331. package/dist/spawn/spawn-decision.js.map +1 -1
  332. package/dist/spawn/worktree-session.d.ts +6 -0
  333. package/dist/spawn/worktree-session.d.ts.map +1 -1
  334. package/dist/spawn/worktree-session.js +15 -2
  335. package/dist/spawn/worktree-session.js.map +1 -1
  336. package/dist/testing/fixtures/index.d.ts +10 -1
  337. package/dist/testing/fixtures/index.d.ts.map +1 -1
  338. package/dist/testing/fixtures/index.js +59 -1
  339. package/dist/testing/fixtures/index.js.map +1 -1
  340. package/dist/testing/fixtures/pending-spawn-world.d.ts +34 -0
  341. package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -0
  342. package/dist/testing/fixtures/pending-spawn-world.js +92 -0
  343. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -0
  344. package/dist/types/index.js +1 -1
  345. package/dist/verify/commit-gate-configured.d.ts +86 -0
  346. package/dist/verify/commit-gate-configured.d.ts.map +1 -0
  347. package/dist/verify/commit-gate-configured.js +234 -0
  348. package/dist/verify/commit-gate-configured.js.map +1 -0
  349. package/dist/verify/commit-verdict-record.d.ts +98 -0
  350. package/dist/verify/commit-verdict-record.d.ts.map +1 -0
  351. package/dist/verify/commit-verdict-record.js +297 -0
  352. package/dist/verify/commit-verdict-record.js.map +1 -0
  353. package/dist/verify/explicit-gate-outcome.d.ts +161 -0
  354. package/dist/verify/explicit-gate-outcome.d.ts.map +1 -0
  355. package/dist/verify/explicit-gate-outcome.js +215 -0
  356. package/dist/verify/explicit-gate-outcome.js.map +1 -0
  357. package/dist/verify/explicit-rearm.d.ts +27 -0
  358. package/dist/verify/explicit-rearm.d.ts.map +1 -0
  359. package/dist/verify/explicit-rearm.js +161 -0
  360. package/dist/verify/explicit-rearm.js.map +1 -0
  361. package/dist/verify/explicit-run-ledger.d.ts +26 -0
  362. package/dist/verify/explicit-run-ledger.d.ts.map +1 -0
  363. package/dist/verify/explicit-run-ledger.js +93 -0
  364. package/dist/verify/explicit-run-ledger.js.map +1 -0
  365. package/dist/verify/failure-signature.d.ts.map +1 -1
  366. package/dist/verify/failure-signature.js +5 -1
  367. package/dist/verify/failure-signature.js.map +1 -1
  368. package/dist/verify/gate-run-registry.d.ts +105 -0
  369. package/dist/verify/gate-run-registry.d.ts.map +1 -0
  370. package/dist/verify/gate-run-registry.js +111 -0
  371. package/dist/verify/gate-run-registry.js.map +1 -0
  372. package/dist/verify/gate-verdict-source.d.ts +68 -0
  373. package/dist/verify/gate-verdict-source.d.ts.map +1 -0
  374. package/dist/verify/gate-verdict-source.js +143 -0
  375. package/dist/verify/gate-verdict-source.js.map +1 -0
  376. package/dist/verify/judged-commit-gate.d.ts +11 -0
  377. package/dist/verify/judged-commit-gate.d.ts.map +1 -0
  378. package/dist/verify/judged-commit-gate.js +48 -0
  379. package/dist/verify/judged-commit-gate.js.map +1 -0
  380. package/dist/verify/rework-judgment.d.ts +58 -0
  381. package/dist/verify/rework-judgment.d.ts.map +1 -0
  382. package/dist/verify/rework-judgment.js +54 -0
  383. package/dist/verify/rework-judgment.js.map +1 -0
  384. package/dist/verify/verification-attribution.d.ts +105 -0
  385. package/dist/verify/verification-attribution.d.ts.map +1 -0
  386. package/dist/verify/verification-attribution.js +322 -0
  387. package/dist/verify/verification-attribution.js.map +1 -0
  388. package/dist/verify/verification-baseline-run.d.ts +123 -0
  389. package/dist/verify/verification-baseline-run.d.ts.map +1 -0
  390. package/dist/verify/verification-baseline-run.js +386 -0
  391. package/dist/verify/verification-baseline-run.js.map +1 -0
  392. package/dist/verify/verification-baseline.d.ts +75 -33
  393. package/dist/verify/verification-baseline.d.ts.map +1 -1
  394. package/dist/verify/verification-baseline.js +92 -105
  395. package/dist/verify/verification-baseline.js.map +1 -1
  396. package/dist/verify/verification-checkout.d.ts +13 -0
  397. package/dist/verify/verification-checkout.d.ts.map +1 -1
  398. package/dist/verify/verification-checkout.js +39 -2
  399. package/dist/verify/verification-checkout.js.map +1 -1
  400. package/dist/verify/verification-commit-sharing.d.ts +84 -0
  401. package/dist/verify/verification-commit-sharing.d.ts.map +1 -0
  402. package/dist/verify/verification-commit-sharing.js +416 -0
  403. package/dist/verify/verification-commit-sharing.js.map +1 -0
  404. package/dist/verify/verification-config.d.ts.map +1 -1
  405. package/dist/verify/verification-config.js +12 -2
  406. package/dist/verify/verification-config.js.map +1 -1
  407. package/dist/verify/verification-default-on.d.ts +27 -11
  408. package/dist/verify/verification-default-on.d.ts.map +1 -1
  409. package/dist/verify/verification-default-on.js +155 -29
  410. package/dist/verify/verification-default-on.js.map +1 -1
  411. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  412. package/dist/verify/verification-deps-default.js +49 -42
  413. package/dist/verify/verification-deps-default.js.map +1 -1
  414. package/dist/verify/verification-deps.d.ts +69 -4
  415. package/dist/verify/verification-deps.d.ts.map +1 -1
  416. package/dist/verify/verification-deterministic.d.ts +15 -2
  417. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  418. package/dist/verify/verification-deterministic.js +12 -3
  419. package/dist/verify/verification-deterministic.js.map +1 -1
  420. package/dist/verify/verification-diagnostics.d.ts +16 -0
  421. package/dist/verify/verification-diagnostics.d.ts.map +1 -0
  422. package/dist/verify/verification-diagnostics.js +219 -0
  423. package/dist/verify/verification-diagnostics.js.map +1 -0
  424. package/dist/verify/verification-engine.d.ts +12 -8
  425. package/dist/verify/verification-engine.d.ts.map +1 -1
  426. package/dist/verify/verification-engine.js +110 -92
  427. package/dist/verify/verification-engine.js.map +1 -1
  428. package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
  429. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  430. package/dist/verify/verification-evidence-unavailable-feedback.js +13 -4
  431. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  432. package/dist/verify/verification-feedback.d.ts +21 -34
  433. package/dist/verify/verification-feedback.d.ts.map +1 -1
  434. package/dist/verify/verification-feedback.js +37 -88
  435. package/dist/verify/verification-feedback.js.map +1 -1
  436. package/dist/verify/verification-gate-stages.d.ts +110 -0
  437. package/dist/verify/verification-gate-stages.d.ts.map +1 -0
  438. package/dist/verify/verification-gate-stages.js +179 -0
  439. package/dist/verify/verification-gate-stages.js.map +1 -0
  440. package/dist/verify/verification-history-reset.d.ts +61 -0
  441. package/dist/verify/verification-history-reset.d.ts.map +1 -0
  442. package/dist/verify/verification-history-reset.js +90 -0
  443. package/dist/verify/verification-history-reset.js.map +1 -0
  444. package/dist/verify/verification-manifest.d.ts.map +1 -1
  445. package/dist/verify/verification-manifest.js +2 -1
  446. package/dist/verify/verification-manifest.js.map +1 -1
  447. package/dist/verify/verification-rework-messages.d.ts +19 -0
  448. package/dist/verify/verification-rework-messages.d.ts.map +1 -0
  449. package/dist/verify/verification-rework-messages.js +52 -0
  450. package/dist/verify/verification-rework-messages.js.map +1 -0
  451. package/dist/worktree/install-inputs.d.ts +89 -0
  452. package/dist/worktree/install-inputs.d.ts.map +1 -0
  453. package/dist/worktree/install-inputs.js +625 -0
  454. package/dist/worktree/install-inputs.js.map +1 -0
  455. package/dist/worktree/install-script-effects.d.ts +30 -0
  456. package/dist/worktree/install-script-effects.d.ts.map +1 -0
  457. package/dist/worktree/install-script-effects.js +524 -0
  458. package/dist/worktree/install-script-effects.js.map +1 -0
  459. package/dist/worktree/install-script-tokens.d.ts +57 -0
  460. package/dist/worktree/install-script-tokens.d.ts.map +1 -0
  461. package/dist/worktree/install-script-tokens.js +299 -0
  462. package/dist/worktree/install-script-tokens.js.map +1 -0
  463. package/dist/worktree/provision.d.ts +27 -4
  464. package/dist/worktree/provision.d.ts.map +1 -1
  465. package/dist/worktree/provision.js +46 -7
  466. package/dist/worktree/provision.js.map +1 -1
  467. package/dist/worktree/safety.d.ts +11 -0
  468. package/dist/worktree/safety.d.ts.map +1 -1
  469. package/dist/worktree/safety.js +20 -3
  470. package/dist/worktree/safety.js.map +1 -1
  471. package/dist/worktree/verify-interlock.d.ts.map +1 -1
  472. package/dist/worktree/verify-interlock.js +3 -1
  473. package/dist/worktree/verify-interlock.js.map +1 -1
  474. package/dist/worktree/worktree-package-provisioning.d.ts +75 -0
  475. package/dist/worktree/worktree-package-provisioning.d.ts.map +1 -0
  476. package/dist/worktree/worktree-package-provisioning.js +362 -0
  477. package/dist/worktree/worktree-package-provisioning.js.map +1 -0
  478. package/package.json +1 -1
@@ -1,5 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/completion/dead-process-reaper.test.ts,
3
+ // packages/daemon/src/completion/mid-flight-merge-gate.test.ts,
4
+ // packages/daemon/src/completion/session-hold.test.ts,
3
5
  // packages/daemon/src/completion/stuck-shutdown-watchdog.test.ts
4
6
  // PINNED-BY-END
5
7
  import { getReadyFocuses } from '../queries/focus-discovery.js';
@@ -11,6 +13,7 @@ import { getActiveTeams, markShuttingDown, getShuttingDownAt, clearShuttingDown,
11
13
  import { resolveIdleTeamStallHours } from '../verify/stall-detector-config.js';
12
14
  import { describeTeamClockLiveness, formatClockNote, describeIdleWithWorkRemaining } from './team-liveness-log.js';
13
15
  import { mergeFocusBranch } from '../merge/focus-merge.js';
16
+ import { readMergeGateHold } from '../merge/merge-gate-coverage.js';
14
17
  import { escalateMergeConflict } from '../merge/merge-conflict-escalation.js';
15
18
  import { runCiMergeToMain } from './merge-phase.js';
16
19
  import { isStatusAgentActionable, isStatusBlocking, isStatusExcludedFromCascade } from '../workflow/stage-classifier.js';
@@ -21,6 +24,18 @@ import { isProcessAlive } from '../spawn/liveness.js';
21
24
  import { createLogger } from '../shell/log.js';
22
25
  const log = createLogger({ module: 'focus-executor' });
23
26
  // ── Team lifecycle ──────────────────────────────────────────────────────
27
+ /**
28
+ * Cancel any pending handoff-floor self re-drive so no stale timer fires
29
+ * against a torn-down team. Inlined here (not via event.ts's
30
+ * cancelPendingReDrive) to avoid a runtime import cycle event.ts <-> team-lifecycle.ts.
31
+ */
32
+ function cancelReDrive(team) {
33
+ if (!team.reDriveCancel)
34
+ return;
35
+ const cancel = team.reDriveCancel;
36
+ team.reDriveCancel = undefined;
37
+ cancel();
38
+ }
24
39
  /**
25
40
  * Terminate a focus team.
26
41
  *
@@ -43,14 +58,7 @@ export function terminateTeam(focusId, shutdownReason) {
43
58
  if (shutdownReason) {
44
59
  team.shutdownReason = shutdownReason;
45
60
  }
46
- // Cancel any pending handoff-floor self re-drive so no stale timer fires
47
- // against a torn-down team. Inlined (not via event.ts's cancelPendingReDrive)
48
- // to avoid a runtime import cycle event.ts <-> team-lifecycle.ts.
49
- if (team.reDriveCancel) {
50
- const cancel = team.reDriveCancel;
51
- team.reDriveCancel = undefined;
52
- cancel();
53
- }
61
+ cancelReDrive(team);
54
62
  // Warn if terminating while conflict resolution is in progress
55
63
  if (team.resolvingMergeConflict) {
56
64
  log.warn(`Terminating team "${team.focusName}" while merge conflict resolution is in progress`);
@@ -164,6 +172,53 @@ export function terminateAllTeams() {
164
172
  function forceReleaseSlot(focusId, governor) {
165
173
  return releaseFocusSlot(focusId, governor);
166
174
  }
175
+ const defaultKill = (pid, signal) => { process.kill(pid, signal); };
176
+ /**
177
+ * Reclaim ONE team's registration -- the body every reaper shares: best-effort
178
+ * SIGKILL of a lingering lead pid, force-release the governor slot (once, via
179
+ * the consumed slot token), mark the team terminated, drop it from activeTeams,
180
+ * and clear its per-focus side-state so a fresh team can spawn.
181
+ */
182
+ function reclaimTeamRegistration(focusId, team, governor, kill, killFailedNote) {
183
+ if (team.leadPid) {
184
+ try {
185
+ kill(team.leadPid, 'SIGKILL');
186
+ }
187
+ catch (e) {
188
+ log.debug(killFailedNote, e.message);
189
+ }
190
+ }
191
+ forceReleaseSlot(focusId, governor);
192
+ team.phase = 'terminated';
193
+ getActiveTeams().delete(focusId);
194
+ clearShuttingDown(focusId);
195
+ clearTeamActivity(focusId);
196
+ clearFocusClock(focusId);
197
+ clearStdinTurnTracking(focusId);
198
+ }
199
+ /**
200
+ * Force-reclaim ONE focus's team registration after the normal teardown could
201
+ * not signal its lead (terminateTeam returned false: no lead pid, or the signal
202
+ * threw). Without it such a registration pins the focus: the pending-spawn pass
203
+ * skips any focus with an active team, and neither reaper covers an `executing`
204
+ * team that has no pid. Performs the same reclamation the dead-process and
205
+ * stuck-shutdown reapers do (reclaimTeamRegistration), after stamping the
206
+ * controlled-stop reason and cancelling a pending re-drive -- so a late close
207
+ * event classifies as a stop, and the slot release cannot double-decrement.
208
+ * Returns false when no team is registered for the focus.
209
+ */
210
+ export function forceReapTeam(focusId, shutdownReason, deps) {
211
+ const team = getActiveTeams().get(focusId);
212
+ if (!team)
213
+ return false;
214
+ if (shutdownReason)
215
+ team.shutdownReason = shutdownReason;
216
+ cancelReDrive(team);
217
+ log.warn(`[force-reap] Reclaiming team "${team.focusName}" (pid ${team.leadPid ?? 'none'}, phase ${team.phase}) -- ` +
218
+ 'its teardown could not signal the lead; force-releasing its session slot and dropping the registration');
219
+ reclaimTeamRegistration(focusId, team, deps.governor, deps.kill ?? defaultKill, '[force-reap] SIGKILL failed (process may already be gone):');
220
+ return true;
221
+ }
167
222
  /**
168
223
  * Stuck-team watchdog: reap teams wedged in `shutting_down`.
169
224
  *
@@ -185,7 +240,7 @@ function forceReleaseSlot(focusId, governor) {
185
240
  export function reapStuckShuttingDownTeams(deps) {
186
241
  const { governor, thresholdMs } = deps;
187
242
  const now = deps.now ?? Date.now();
188
- const kill = deps.kill ?? ((pid, signal) => process.kill(pid, signal));
243
+ const kill = deps.kill ?? defaultKill;
189
244
  const activeTeams = getActiveTeams();
190
245
  const reapedFocusIds = [];
191
246
  for (const [focusId, team] of activeTeams) {
@@ -200,25 +255,9 @@ export function reapStuckShuttingDownTeams(deps) {
200
255
  log.warn(`[focus-executor] Team "${team.focusName}" stuck in shutting_down for ` +
201
256
  `${Math.round(stuckMs / 1000)}s (> ${Math.round(thresholdMs / 1000)}s threshold) ` +
202
257
  '-- force-killing and reclaiming its session slot');
203
- // 1. SIGKILL the wedged lead process now (best-effort).
204
- if (team.leadPid) {
205
- try {
206
- kill(team.leadPid, 'SIGKILL');
207
- }
208
- catch (e) {
209
- log.debug('[focus-executor] stuck-shutdown SIGKILL failed (process may already be gone):', e.message);
210
- }
211
- }
212
- // 2. Force-release the governor slot (once).
213
- forceReleaseSlot(focusId, governor);
214
- // 3. Mark terminated and drop from the active map so a fresh team can spawn.
215
- team.phase = 'terminated';
216
- activeTeams.delete(focusId);
217
- // 4. Clear shutdown side-state for this focus.
218
- clearShuttingDown(focusId);
219
- clearTeamActivity(focusId);
220
- clearFocusClock(focusId);
221
- clearStdinTurnTracking(focusId);
258
+ // SIGKILL the wedged lead now, release the slot once, mark terminated, drop
259
+ // it from the active map, and clear its shutdown side-state.
260
+ reclaimTeamRegistration(focusId, team, governor, kill, '[focus-executor] stuck-shutdown SIGKILL failed (process may already be gone):');
222
261
  reapedFocusIds.push(focusId);
223
262
  }
224
263
  return { reaped: reapedFocusIds.length, reapedFocusIds };
@@ -248,7 +287,7 @@ export function reapDeadProcessTeams(deps) {
248
287
  const { governor, initStallMs } = deps;
249
288
  const now = deps.now ?? Date.now();
250
289
  const isAlive = deps.isAlive ?? isProcessAlive;
251
- const kill = deps.kill ?? ((pid, signal) => process.kill(pid, signal));
290
+ const kill = deps.kill ?? defaultKill;
252
291
  const activeTeams = getActiveTeams();
253
292
  const reapedFocusIds = [];
254
293
  for (const [focusId, team] of activeTeams) {
@@ -275,22 +314,8 @@ export function reapDeadProcessTeams(deps) {
275
314
  log.warn(`[dead-process-reaper] Reclaiming team "${team.focusName}" -- ${reclaimReason}; ` +
276
315
  'force-releasing its session slot and dropping the registration so a fresh team can spawn');
277
316
  // Best-effort SIGKILL for a lingering zombie pid (no-op / throws for a pid
278
- // already gone, which is the common case here).
279
- if (team.leadPid) {
280
- try {
281
- kill(team.leadPid, 'SIGKILL');
282
- }
283
- catch (e) {
284
- log.debug('[dead-process-reaper] SIGKILL failed (process already gone):', e.message);
285
- }
286
- }
287
- forceReleaseSlot(focusId, governor);
288
- team.phase = 'terminated';
289
- activeTeams.delete(focusId);
290
- clearShuttingDown(focusId);
291
- clearTeamActivity(focusId);
292
- clearFocusClock(focusId);
293
- clearStdinTurnTracking(focusId);
317
+ // already gone, which is the common case here), then reclaim.
318
+ reclaimTeamRegistration(focusId, team, governor, kill, '[dead-process-reaper] SIGKILL failed (process already gone):');
294
319
  reapedFocusIds.push(focusId);
295
320
  }
296
321
  return { reaped: reapedFocusIds.length, reapedFocusIds };
@@ -376,20 +401,111 @@ function logTeamProgressOrPark(team, teamWorkCount) {
376
401
  `team continues (${clockNote})`);
377
402
  }
378
403
  }
404
+ export function defaultMidFlightMergeDeps() {
405
+ return {
406
+ getFocusDeliveries,
407
+ mergeFocusBranch,
408
+ readMergeGateHold: (target) => readMergeGateHold(target),
409
+ };
410
+ }
411
+ /**
412
+ * The hold reason last logged at info per team. The hold is re-read every 30s
413
+ * poll tick; an unchanged reason logs at debug so it does not spam the log, and
414
+ * the entry dies with the team state.
415
+ */
416
+ const loggedMidFlightHolds = new WeakMap();
417
+ function logMidFlightHold(team, hold, integrationBranch) {
418
+ const line = `[merge-gate] Not merging ${team.branchName} into ${integrationBranch} mid-flight for "${team.focusName}": ` +
419
+ `${hold}. The commits stay on the focus branch until a review or verify gate covers them.`;
420
+ if (loggedMidFlightHolds.get(team) === hold) {
421
+ log.debug(line);
422
+ return;
423
+ }
424
+ loggedMidFlightHolds.set(team, hold);
425
+ log.info(line, { focusId: team.focusId });
426
+ }
427
+ /**
428
+ * The MID-FLIGHT merge of a team's newly verify/done deliveries. One merge
429
+ * covers them all (same branch); the newly-completed IDs are passed so git
430
+ * state is recorded only for these -- never for queued/planning deliveries on
431
+ * the same branch.
432
+ *
433
+ * Held unless every commit the merge would add has passed the focus's review or
434
+ * verify gate (merge/merge-gate-coverage.ts) -- a WIP capture a previously
435
+ * stopped team left on the branch, or any other unreviewed commit, would
436
+ * otherwise ride this delivery's merge to integration. A hold merges nothing,
437
+ * marks nothing merged and files nothing; the next tick asks again.
438
+ */
439
+ async function mergeCompletedMidFlight(teamConfig, team, newlyCompleted, deliveries, deps) {
440
+ const { integrationBranch } = teamConfig;
441
+ const hold = await deps.readMergeGateHold({
442
+ organizationId: team.organizationId,
443
+ productId: team.productId,
444
+ focusId: team.focusId,
445
+ branchName: team.branchName,
446
+ integrationBranch,
447
+ repoPath: teamConfig.repoPath,
448
+ });
449
+ if (hold !== null) {
450
+ logMidFlightHold(team, hold, integrationBranch);
451
+ return;
452
+ }
453
+ loggedMidFlightHolds.delete(team);
454
+ const completedNames = newlyCompleted.map(d => d.name).join(', ');
455
+ log.info(`[focus-executor] ${newlyCompleted.length} delivery(ies) completed mid-flight for "${team.focusName}": ${completedNames} -- merging to integration`);
456
+ // The team is still executing and no wip-preserve runs ahead of this merge
457
+ // (an ungated commit already on the branch is held above). A dirty worktree
458
+ // here is a live agent still writing, not a fault, so use the 'defer' policy:
459
+ // the guard skips the merge and files nothing, and the next tick retries once
460
+ // the agent commits (or the exit pipeline's wip-preserve captures the work).
461
+ // The escalate policy is reserved for the exit / merge-back callers.
462
+ const mergeResult = await deps.mergeFocusBranch(teamConfig, team, team.leadSessionId ?? '', team.branchName, newlyCompleted.map(d => d.id), 'defer');
463
+ if (mergeResult.mergeSucceeded) {
464
+ // Track merged deliveries (git state already reported by mergeFocusBranch)
465
+ for (const d of newlyCompleted) {
466
+ team.mergedDeliveryIds.add(d.id);
467
+ }
468
+ await maybeRunEagerCiMerge(teamConfig, team, deliveries);
469
+ }
470
+ else if (mergeResult.exitReason === 'merge_deferred_dirty_worktree') {
471
+ // Live agent still writing -- not a fault. The guard filed nothing; don't
472
+ // mark merged; the next poll retries.
473
+ log.debug(`[focus-executor] Deferred mid-flight merge for "${team.focusName}": ` +
474
+ `worktree dirty while the team is still executing -- will retry next tick.`);
475
+ }
476
+ else {
477
+ log.warn(`[focus-executor] Mid-flight merge failed for "${team.focusName}": ${mergeResult.exitReason}`);
478
+ // Escalate merge conflict for each unmerged delivery
479
+ for (const d of newlyCompleted) {
480
+ escalateMergeConflict({
481
+ organizationId: team.organizationId,
482
+ sessionId: team.leadSessionId ?? '',
483
+ deliveryId: d.id,
484
+ deliveryName: d.name,
485
+ focusId: team.focusId,
486
+ branchName: team.branchName,
487
+ integrationBranch,
488
+ mergeError: mergeResult.exitReason,
489
+ }).catch(err => log.warn(`escalateMergeConflict failed for ${d.id}:`, err.message));
490
+ }
491
+ // Don't mark as merged -- will retry next poll. Team continues working.
492
+ }
493
+ }
379
494
  /**
380
495
  * Check active teams for newly completed deliveries and merge
381
496
  * the focus branch to integration incrementally.
382
497
  *
383
498
  * Called from the poll loop. For each active team, queries delivery
384
499
  * statuses and triggers a merge when any delivery reaches verify/done
385
- * that hasn't already been merged mid-flight.
500
+ * that hasn't already been merged mid-flight -- unless a commit on the branch
501
+ * has not passed the focus's review or verify gate (mergeCompletedMidFlight).
386
502
  *
387
503
  * After processing merges, checks if ALL active deliveries are terminal
388
504
  * and merged. If so, terminates the team proactively since no more work
389
505
  * remains. The focus stays active in the DB -- if new deliveries
390
506
  * arrive later, the next poll cycle spawns a fresh team.
391
507
  */
392
- export async function checkAndMergeCompletedDeliveries(config) {
508
+ export async function checkAndMergeCompletedDeliveries(config, deps = defaultMidFlightMergeDeps()) {
393
509
  const activeTeams = getActiveTeams();
394
510
  if (activeTeams.size === 0)
395
511
  return;
@@ -406,57 +522,12 @@ export async function checkAndMergeCompletedDeliveries(config) {
406
522
  const teamProduct = findProduct(config, team.productId);
407
523
  const teamConfig = teamProduct ? configForProduct(config, teamProduct) : config;
408
524
  try {
409
- const deliveries = await getFocusDeliveries(focusId);
525
+ const deliveries = await deps.getFocusDeliveries(focusId);
410
526
  // Find deliveries in verify/done that we haven't merged for yet
411
527
  const newlyCompleted = deliveries.filter(d => !isStatusAgentActionable(d.executionStatus ?? '') && !isStatusBlocking(d.executionStatus ?? '')
412
528
  && !team.mergedDeliveryIds.has(d.id));
413
529
  if (newlyCompleted.length > 0) {
414
- const completedNames = newlyCompleted.map(d => d.name).join(', ');
415
- log.info(`[focus-executor] ${newlyCompleted.length} delivery(ies) completed mid-flight for "${team.focusName}": ${completedNames} -- merging to integration`);
416
- // One merge covers all completed deliveries (same branch).
417
- // Pass the newly-completed IDs so git state is recorded only for
418
- // these — never for queued/planning deliveries on the same branch.
419
- //
420
- // This is the MID-FLIGHT merge: the team is still executing
421
- // (phase === 'executing', guaranteed above) and there is no WIP-capture
422
- // ahead of it. A dirty worktree here is a live agent still writing, not
423
- // a fault, so use the 'defer' policy: the guard skips the merge and
424
- // files nothing, and the next tick retries once the agent commits (or
425
- // the exit pipeline's wip-preserve captures the work). The escalate
426
- // policy is reserved for the exit / merge-back callers.
427
- const mergeResult = await mergeFocusBranch(teamConfig, team, team.leadSessionId ?? '', team.branchName, newlyCompleted.map(d => d.id), 'defer');
428
- if (mergeResult.mergeSucceeded) {
429
- // Track merged deliveries (git state already reported by mergeFocusBranch)
430
- for (const d of newlyCompleted) {
431
- team.mergedDeliveryIds.add(d.id);
432
- }
433
- await maybeRunEagerCiMerge(teamConfig, team, deliveries);
434
- }
435
- else if (mergeResult.exitReason === 'merge_deferred_dirty_worktree') {
436
- // Live agent still writing -- the normal state of a still-executing
437
- // team mid-flight, not a fault. The guard filed nothing; defer to a
438
- // later tick (once the agent commits or the exit pipeline's
439
- // wip-preserve runs). Don't mark merged; the next poll retries.
440
- log.debug(`[focus-executor] Deferred mid-flight merge for "${team.focusName}": ` +
441
- `worktree dirty while the team is still executing -- will retry next tick.`);
442
- }
443
- else {
444
- log.warn(`[focus-executor] Mid-flight merge failed for "${team.focusName}": ${mergeResult.exitReason}`);
445
- // Escalate merge conflict for each unmerged delivery
446
- for (const d of newlyCompleted) {
447
- escalateMergeConflict({
448
- organizationId: team.organizationId,
449
- sessionId: team.leadSessionId ?? '',
450
- deliveryId: d.id,
451
- deliveryName: d.name,
452
- focusId: team.focusId,
453
- branchName: team.branchName,
454
- integrationBranch: config.integrationBranch,
455
- mergeError: mergeResult.exitReason,
456
- }).catch(err => log.warn(`escalateMergeConflict failed for ${d.id}:`, err.message));
457
- }
458
- // Don't mark as merged -- will retry next poll. Team continues working.
459
- }
530
+ await mergeCompletedMidFlight(teamConfig, team, newlyCompleted, deliveries, deps);
460
531
  }
461
532
  // ── All-done detection ──────────────────────────────────────
462
533
  // If any delivery is queued or running, the team still has work.
@@ -1 +1 @@
1
- {"version":3,"file":"team-lifecycle.js","sourceRoot":"","sources":["../../src/completion/team-lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-lifecycle.js","sourceRoot":"","sources":["../../src/completion/team-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * The published team lifecycle phase for a focus. `executing` is the only
3
- * phase that means "work outstanding" (a stale clock here is a real wedge);
4
- * the other three are legitimate parked states that must NOT read as
5
- * unresponsive.
3
+ * phase that means "a team is running with work outstanding" (a stale clock here
4
+ * is a real wedge); `awaiting_slot` means work is outstanding but no team can
5
+ * start until a session slot frees; the other three are legitimate parked
6
+ * states. None but `executing` may read as unresponsive.
6
7
  */
7
- export type FocusLifecyclePhase = 'executing' | 'idle_complete' | 'directive_pending' | 'cooldown';
8
+ export type FocusLifecyclePhase = 'executing' | 'awaiting_slot' | 'idle_complete' | 'directive_pending' | 'cooldown';
8
9
  /** Latch a focus as idle-after-completion (all deliveries terminal, team torn down cleanly). */
9
10
  export declare function markFocusIdleComplete(focusId: string): void;
10
11
  /** Clear a focus's idle-complete latch (e.g. it took on new work). */
@@ -14,15 +15,24 @@ export declare function isFocusIdleComplete(focusId: string): boolean;
14
15
  /** Test-only: clear the idle-complete latch so state never leaks across files. */
15
16
  export declare function __resetTeamPhaseForTesting(): void;
16
17
  /**
17
- * Pure phase decision from the four in-memory signals, in precedence order:
18
- * a live team dominates (executing), then a queued spawn (directive_pending),
19
- * then the cooldown backoff window (cooldown), then the clean-completion latch
20
- * (idle_complete). No signal -> undefined (the focus is not published).
21
- * Precedence among the three parked states is diagnostic only -- the badge
22
- * collapses all three to a single honest "parked" label.
18
+ * Pure phase decision from the in-memory signals, in precedence order: a live
19
+ * team dominates (executing), then a slot-blocked spawn (awaiting_slot), then a
20
+ * queued spawn (directive_pending), then the cooldown backoff window (cooldown),
21
+ * then the clean-completion latch (idle_complete). No signal -> undefined (the
22
+ * focus is not published).
23
+ *
24
+ * awaiting_slot outranks the parked states because it is the reason the focus
25
+ * is not moving: a queued directive or a stale completion latch on a focus the
26
+ * spawn pass left waiting for a slot cannot start until a team exits, so
27
+ * labelling it "awaiting next stage" would hide the cause. The spawn passes
28
+ * never record a focus that is in spawn cooldown, so awaiting_slot and cooldown
29
+ * do not co-occur from a single pass. Precedence among the three parked states
30
+ * is diagnostic only -- the badge collapses them to a single "parked" label.
31
+ * `awaitingSlot` is optional so a caller predating the signal reads it as absent.
23
32
  */
24
33
  export declare function resolveTeamPhase(signals: {
25
34
  hasActiveTeam: boolean;
35
+ awaitingSlot?: boolean;
26
36
  hasPendingDirective: boolean;
27
37
  inCooldown: boolean;
28
38
  idleComplete: boolean;
@@ -36,6 +46,8 @@ export declare function resolveTeamPhase(signals: {
36
46
  export interface TeamPhaseSources {
37
47
  getActiveTeamFocusIds(): Iterable<string>;
38
48
  hasActiveTeam(focusId: string): boolean;
49
+ getAwaitingSlotFocusIds(): Iterable<string>;
50
+ isAwaitingSlot(focusId: string): boolean;
39
51
  getPendingSpawnFocusIds(): string[];
40
52
  hasPendingSpawnDirective(focusId: string): boolean;
41
53
  getSpawnCooldownFocusIds(): string[];
@@ -43,11 +55,11 @@ export interface TeamPhaseSources {
43
55
  }
44
56
  /**
45
57
  * Recompute the per-focus phase map from live in-memory state. The candidate
46
- * focus set is the union of every source (active teams, pending directives,
47
- * cooldown entries, idle-complete latches); each candidate resolves to exactly
48
- * one phase via resolveTeamPhase, and a candidate that resolves to undefined is
49
- * omitted. Pruning the idle-complete latch for any focus with a live team keeps
50
- * the latch set bounded.
58
+ * focus set is the union of every source (active teams, awaiting-slot records,
59
+ * pending directives, cooldown entries, idle-complete latches); each candidate
60
+ * resolves to exactly one phase via resolveTeamPhase, and a candidate that
61
+ * resolves to undefined is omitted. Pruning the idle-complete latch for any
62
+ * focus with a live team keeps the latch set bounded.
51
63
  */
52
64
  export declare function buildTeamPhaseMap(sources?: TeamPhaseSources): Record<string, FocusLifecyclePhase>;
53
65
  //# sourceMappingURL=team-phase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"team-phase.d.ts","sourceRoot":"","sources":["../../src/completion/team-phase.ts"],"names":[],"mappings":"AA6CA;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,eAAe,GAAG,mBAAmB,GAAG,UAAU,CAAC;AAcnG,gGAAgG;AAChG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,mBAAmB,GAAG,SAAS,CAMlC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,uBAAuB,IAAI,MAAM,EAAE,CAAC;IACpC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACnD,wBAAwB,IAAI,MAAM,EAAE,CAAC;IACrC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7C;AAWD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,gBAA0C,GAClD,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAsBrC"}
1
+ {"version":3,"file":"team-phase.d.ts","sourceRoot":"","sources":["../../src/completion/team-phase.ts"],"names":[],"mappings":"AAkDA;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,GAAG,UAAU,CAAC;AAcrH,gGAAgG;AAChG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,mBAAmB,GAAG,SAAS,CAOlC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,uBAAuB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,uBAAuB,IAAI,MAAM,EAAE,CAAC;IACpC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACnD,wBAAwB,IAAI,MAAM,EAAE,CAAC;IACrC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7C;AAaD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,gBAA0C,GAClD,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAwBrC"}
@@ -1,6 +1,6 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/completion/no-actionable-work-exit.test.ts,
3
- // packages/daemon/src/completion/team-phase.test.ts,
3
+ // packages/daemon/src/completion/team-phase.test.ts, packages/daemon/src/focus/awaiting-slot.test.ts,
4
4
  // packages/daemon/src/shell/heartbeat-team-phases.test.ts
5
5
  // PINNED-BY-END
6
6
  /**
@@ -16,12 +16,16 @@
16
16
  * narrations map, so the UI can label parked states honestly while RESERVING the
17
17
  * "unresponsive" diagnosis for silence with work outstanding (phase === executing).
18
18
  *
19
- * The four phases are a COMPOSITE, not a field. FocusTeamState.phase is
19
+ * The five phases are a COMPOSITE, not a field. FocusTeamState.phase is
20
20
  * deliberately {initializing,executing,shutting_down,terminated} with no idle
21
- * state (a team terminates when its work is done), so the parked phases are
22
- * derived from three other in-memory sources:
21
+ * state (a team terminates when its work is done), so the non-executing phases
22
+ * are derived from other in-memory sources:
23
23
  * - executing -- a live team is in activeTeams (initializing/executing/
24
24
  * shutting_down all read as "work in flight")
25
+ * - awaiting_slot -- a spawn pass would have started a team for this armed
26
+ * focus but every session slot is in use
27
+ * (focus/awaiting-slot.ts). NOT parked: the focus has
28
+ * work to do and starts the moment a slot frees
25
29
  * - directive_pending -- a spawn directive is queued for the focus (a spawn is
26
30
  * imminent -- e.g. a review pass waiting to start)
27
31
  * - cooldown -- the focus is inside its spawn-cooldown backoff window
@@ -40,6 +44,7 @@
40
44
  import { getActiveTeams, hasActiveTeam } from '../focus/focus-team-state.js';
41
45
  import { getPendingSpawnFocusIds, hasPendingSpawnDirective } from '../directive/directive-queue.js';
42
46
  import { getSpawnCooldownFocusIds, isInSpawnCooldown } from '../spawn/spawn-cooldown.js';
47
+ import { getAwaitingSlotFocusIds, isAwaitingSlot } from '../focus/awaiting-slot.js';
43
48
  // ── idle_complete latch ──────────────────────────────────────────────
44
49
  //
45
50
  // A clean completion (all deliveries terminal) tears the team down WITHOUT
@@ -68,16 +73,26 @@ export function __resetTeamPhaseForTesting() {
68
73
  idleCompleteFocuses.clear();
69
74
  }
70
75
  /**
71
- * Pure phase decision from the four in-memory signals, in precedence order:
72
- * a live team dominates (executing), then a queued spawn (directive_pending),
73
- * then the cooldown backoff window (cooldown), then the clean-completion latch
74
- * (idle_complete). No signal -> undefined (the focus is not published).
75
- * Precedence among the three parked states is diagnostic only -- the badge
76
- * collapses all three to a single honest "parked" label.
76
+ * Pure phase decision from the in-memory signals, in precedence order: a live
77
+ * team dominates (executing), then a slot-blocked spawn (awaiting_slot), then a
78
+ * queued spawn (directive_pending), then the cooldown backoff window (cooldown),
79
+ * then the clean-completion latch (idle_complete). No signal -> undefined (the
80
+ * focus is not published).
81
+ *
82
+ * awaiting_slot outranks the parked states because it is the reason the focus
83
+ * is not moving: a queued directive or a stale completion latch on a focus the
84
+ * spawn pass left waiting for a slot cannot start until a team exits, so
85
+ * labelling it "awaiting next stage" would hide the cause. The spawn passes
86
+ * never record a focus that is in spawn cooldown, so awaiting_slot and cooldown
87
+ * do not co-occur from a single pass. Precedence among the three parked states
88
+ * is diagnostic only -- the badge collapses them to a single "parked" label.
89
+ * `awaitingSlot` is optional so a caller predating the signal reads it as absent.
77
90
  */
78
91
  export function resolveTeamPhase(signals) {
79
92
  if (signals.hasActiveTeam)
80
93
  return 'executing';
94
+ if (signals.awaitingSlot)
95
+ return 'awaiting_slot';
81
96
  if (signals.hasPendingDirective)
82
97
  return 'directive_pending';
83
98
  if (signals.inCooldown)
@@ -89,6 +104,8 @@ export function resolveTeamPhase(signals) {
89
104
  const defaultTeamPhaseSources = {
90
105
  getActiveTeamFocusIds: () => getActiveTeams().keys(),
91
106
  hasActiveTeam,
107
+ getAwaitingSlotFocusIds,
108
+ isAwaitingSlot,
92
109
  getPendingSpawnFocusIds,
93
110
  hasPendingSpawnDirective,
94
111
  getSpawnCooldownFocusIds,
@@ -96,15 +113,16 @@ const defaultTeamPhaseSources = {
96
113
  };
97
114
  /**
98
115
  * Recompute the per-focus phase map from live in-memory state. The candidate
99
- * focus set is the union of every source (active teams, pending directives,
100
- * cooldown entries, idle-complete latches); each candidate resolves to exactly
101
- * one phase via resolveTeamPhase, and a candidate that resolves to undefined is
102
- * omitted. Pruning the idle-complete latch for any focus with a live team keeps
103
- * the latch set bounded.
116
+ * focus set is the union of every source (active teams, awaiting-slot records,
117
+ * pending directives, cooldown entries, idle-complete latches); each candidate
118
+ * resolves to exactly one phase via resolveTeamPhase, and a candidate that
119
+ * resolves to undefined is omitted. Pruning the idle-complete latch for any
120
+ * focus with a live team keeps the latch set bounded.
104
121
  */
105
122
  export function buildTeamPhaseMap(sources = defaultTeamPhaseSources) {
106
123
  const candidates = new Set([
107
124
  ...sources.getActiveTeamFocusIds(),
125
+ ...sources.getAwaitingSlotFocusIds(),
108
126
  ...sources.getPendingSpawnFocusIds(),
109
127
  ...sources.getSpawnCooldownFocusIds(),
110
128
  ...idleCompleteFocuses,
@@ -118,6 +136,7 @@ export function buildTeamPhaseMap(sources = defaultTeamPhaseSources) {
118
136
  idleCompleteFocuses.delete(focusId);
119
137
  const phase = resolveTeamPhase({
120
138
  hasActiveTeam: teamActive,
139
+ awaitingSlot: sources.isAwaitingSlot(focusId),
121
140
  hasPendingDirective: sources.hasPendingSpawnDirective(focusId),
122
141
  inCooldown: sources.isInSpawnCooldown(focusId),
123
142
  idleComplete: idleCompleteFocuses.has(focusId),
@@ -1 +1 @@
1
- {"version":3,"file":"team-phase.js","sourceRoot":"","sources":["../../src/completion/team-phase.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,6EAA6E;AAC7E,uDAAuD;AACvD,4DAA4D;AAC5D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAUzF,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,8EAA8E;AAC9E,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE9C,gGAAgG;AAChG,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,0BAA0B;IACxC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAKhC;IACC,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,WAAW,CAAC;IAC9C,IAAI,OAAO,CAAC,mBAAmB;QAAE,OAAO,mBAAmB,CAAC;IAC5D,IAAI,OAAO,CAAC,UAAU;QAAE,OAAO,UAAU,CAAC;IAC1C,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,eAAe,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAiBD,MAAM,uBAAuB,GAAqB;IAChD,qBAAqB,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE;IACpD,aAAa;IACb,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,iBAAiB;CAClB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAA4B,uBAAuB;IAEnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS;QACjC,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAClC,GAAG,OAAO,CAAC,uBAAuB,EAAE;QACpC,GAAG,OAAO,CAAC,wBAAwB,EAAE;QACrC,GAAG,mBAAmB;KACvB,CAAC,CAAC;IACH,MAAM,GAAG,GAAwC,EAAE,CAAC;IACpD,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAClD,0EAA0E;QAC1E,uEAAuE;QACvE,IAAI,UAAU;YAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,gBAAgB,CAAC;YAC7B,aAAa,EAAE,UAAU;YACzB,mBAAmB,EAAE,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC;YAC9D,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC9C,YAAY,EAAE,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC;SAC/C,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"team-phase.js","sourceRoot":"","sources":["../../src/completion/team-phase.ts"],"names":[],"mappings":"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"}