@telora/daemon 0.24.17 → 0.24.26

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 (536) hide show
  1. package/build-info.json +12 -3
  2. package/dist/audit/audit-prompt.d.ts.map +1 -1
  3. package/dist/audit/audit-prompt.js +15 -0
  4. package/dist/audit/audit-prompt.js.map +1 -1
  5. package/dist/ci/candidate-failure-record.d.ts +104 -0
  6. package/dist/ci/candidate-failure-record.d.ts.map +1 -0
  7. package/dist/ci/candidate-failure-record.js +135 -0
  8. package/dist/ci/candidate-failure-record.js.map +1 -0
  9. package/dist/ci/candidate-ref.d.ts.map +1 -1
  10. package/dist/ci/candidate-ref.js +10 -3
  11. package/dist/ci/candidate-ref.js.map +1 -1
  12. package/dist/ci/ci-status-git.d.ts.map +1 -1
  13. package/dist/ci/ci-status-git.js +1 -0
  14. package/dist/ci/ci-status-git.js.map +1 -1
  15. package/dist/ci/ci-status.d.ts.map +1 -1
  16. package/dist/ci/ci-status.js +1 -0
  17. package/dist/ci/ci-status.js.map +1 -1
  18. package/dist/ci/gate-ref.d.ts +10 -1
  19. package/dist/ci/gate-ref.d.ts.map +1 -1
  20. package/dist/ci/gate-ref.js +11 -4
  21. package/dist/ci/gate-ref.js.map +1 -1
  22. package/dist/ci/product-ci-repo.d.ts.map +1 -1
  23. package/dist/ci/product-ci-repo.js +3 -2
  24. package/dist/ci/product-ci-repo.js.map +1 -1
  25. package/dist/completion/completion-event/event.d.ts +4 -3
  26. package/dist/completion/completion-event/event.d.ts.map +1 -1
  27. package/dist/completion/completion-event/event.js.map +1 -1
  28. package/dist/completion/review-cycle-budget/review-cycle-cap.d.ts +19 -11
  29. package/dist/completion/review-cycle-budget/review-cycle-cap.d.ts.map +1 -1
  30. package/dist/completion/review-cycle-budget/review-cycle-cap.js +36 -36
  31. package/dist/completion/review-cycle-budget/review-cycle-cap.js.map +1 -1
  32. package/dist/completion/review-cycle-budget/review-loop-detection.d.ts +101 -0
  33. package/dist/completion/review-cycle-budget/review-loop-detection.d.ts.map +1 -0
  34. package/dist/completion/review-cycle-budget/review-loop-detection.js +105 -0
  35. package/dist/completion/review-cycle-budget/review-loop-detection.js.map +1 -0
  36. package/dist/completion/review-cycle-budget/spent-budget-release.d.ts +70 -0
  37. package/dist/completion/review-cycle-budget/spent-budget-release.d.ts.map +1 -0
  38. package/dist/completion/review-cycle-budget/spent-budget-release.js +98 -0
  39. package/dist/completion/review-cycle-budget/spent-budget-release.js.map +1 -0
  40. package/dist/completion/review-exit/review-defect-detector.d.ts +71 -49
  41. package/dist/completion/review-exit/review-defect-detector.d.ts.map +1 -1
  42. package/dist/completion/review-exit/review-defect-detector.js +75 -69
  43. package/dist/completion/review-exit/review-defect-detector.js.map +1 -1
  44. package/dist/completion/review-exit/review-exit-attribution.d.ts +1 -1
  45. package/dist/completion/review-exit/review-exit-attribution.js +1 -1
  46. package/dist/completion/review-exit/review-exit-deps.d.ts +5 -2
  47. package/dist/completion/review-exit/review-exit-deps.d.ts.map +1 -1
  48. package/dist/completion/review-exit/review-exit-deps.js +1 -1
  49. package/dist/completion/review-exit/review-exit-evidence.d.ts +10 -1
  50. package/dist/completion/review-exit/review-exit-evidence.d.ts.map +1 -1
  51. package/dist/completion/review-exit/review-exit-evidence.js +17 -14
  52. package/dist/completion/review-exit/review-exit-evidence.js.map +1 -1
  53. package/dist/completion/review-exit/review-exit-foreign-findings.d.ts +1 -1
  54. package/dist/completion/review-exit/review-exit-foreign-findings.d.ts.map +1 -1
  55. package/dist/completion/review-exit/review-exit-phase.d.ts.map +1 -1
  56. package/dist/completion/review-exit/review-exit-phase.js +12 -8
  57. package/dist/completion/review-exit/review-exit-phase.js.map +1 -1
  58. package/dist/completion/state-cascade/review-next-step.d.ts +12 -3
  59. package/dist/completion/state-cascade/review-next-step.d.ts.map +1 -1
  60. package/dist/completion/state-cascade/review-next-step.js +10 -1
  61. package/dist/completion/state-cascade/review-next-step.js.map +1 -1
  62. package/dist/completion/state-cascade/standing-approval-convergence.d.ts +1 -1
  63. package/dist/completion/state-cascade/standing-approval-convergence.d.ts.map +1 -1
  64. package/dist/completion/state-cascade/standing-approval-convergence.js +10 -4
  65. package/dist/completion/state-cascade/standing-approval-convergence.js.map +1 -1
  66. package/dist/completion/state-cascade/state-cascade.d.ts +3 -0
  67. package/dist/completion/state-cascade/state-cascade.d.ts.map +1 -1
  68. package/dist/completion/state-cascade/state-cascade.js +16 -1
  69. package/dist/completion/state-cascade/state-cascade.js.map +1 -1
  70. package/dist/completion/team-exit/status-advance-phase.d.ts +1 -1
  71. package/dist/completion/team-exit/status-advance-phase.d.ts.map +1 -1
  72. package/dist/completion/team-exit/status-advance-phase.js +6 -4
  73. package/dist/completion/team-exit/status-advance-phase.js.map +1 -1
  74. package/dist/completion/team-outcome/apply-turn.d.ts.map +1 -1
  75. package/dist/completion/team-outcome/apply-turn.js +9 -4
  76. package/dist/completion/team-outcome/apply-turn.js.map +1 -1
  77. package/dist/completion/team-outcome/decide-turn-entry-rows.d.ts.map +1 -1
  78. package/dist/completion/team-outcome/decide-turn-entry-rows.js +28 -3
  79. package/dist/completion/team-outcome/decide-turn-entry-rows.js.map +1 -1
  80. package/dist/completion/team-outcome/decide.d.ts.map +1 -1
  81. package/dist/completion/team-outcome/decide.js +1 -0
  82. package/dist/completion/team-outcome/decide.js.map +1 -1
  83. package/dist/completion/team-outcome/exit-limits.d.ts +6 -0
  84. package/dist/completion/team-outcome/exit-limits.d.ts.map +1 -1
  85. package/dist/completion/team-outcome/exit-limits.js +6 -0
  86. package/dist/completion/team-outcome/exit-limits.js.map +1 -1
  87. package/dist/completion/team-outcome/exit-pipeline-state.d.ts +5 -0
  88. package/dist/completion/team-outcome/exit-pipeline-state.d.ts.map +1 -1
  89. package/dist/completion/team-outcome/exit-pipeline-state.js.map +1 -1
  90. package/dist/completion/team-teardown/session-hold-bounds.d.ts +10 -1
  91. package/dist/completion/team-teardown/session-hold-bounds.d.ts.map +1 -1
  92. package/dist/completion/team-teardown/session-hold-bounds.js +11 -0
  93. package/dist/completion/team-teardown/session-hold-bounds.js.map +1 -1
  94. package/dist/completion/team-teardown/session-hold.d.ts.map +1 -1
  95. package/dist/completion/team-teardown/session-hold.js +2 -0
  96. package/dist/completion/team-teardown/session-hold.js.map +1 -1
  97. package/dist/composition/engine-start-context.d.ts.map +1 -1
  98. package/dist/composition/engine-start-context.js +9 -1
  99. package/dist/composition/engine-start-context.js.map +1 -1
  100. package/dist/composition/execution-merge-context.d.ts +13 -0
  101. package/dist/composition/execution-merge-context.d.ts.map +1 -1
  102. package/dist/composition/execution-merge-context.js +76 -3
  103. package/dist/composition/execution-merge-context.js.map +1 -1
  104. package/dist/composition/execution-spawn-context.d.ts.map +1 -1
  105. package/dist/composition/execution-spawn-context.js +2 -0
  106. package/dist/composition/execution-spawn-context.js.map +1 -1
  107. package/dist/composition/focus-activity-live-sources.d.ts.map +1 -1
  108. package/dist/composition/focus-activity-live-sources.js +1 -0
  109. package/dist/composition/focus-activity-live-sources.js.map +1 -1
  110. package/dist/composition/judgement-contexts.d.ts.map +1 -1
  111. package/dist/composition/judgement-contexts.js +8 -2
  112. package/dist/composition/judgement-contexts.js.map +1 -1
  113. package/dist/composition/review-exit-context.d.ts.map +1 -1
  114. package/dist/composition/review-exit-context.js +2 -0
  115. package/dist/composition/review-exit-context.js.map +1 -1
  116. package/dist/composition/review-loop-context.d.ts +28 -0
  117. package/dist/composition/review-loop-context.d.ts.map +1 -0
  118. package/dist/composition/review-loop-context.js +147 -0
  119. package/dist/composition/review-loop-context.js.map +1 -0
  120. package/dist/composition/runtime-heartbeat-context.d.ts +11 -0
  121. package/dist/composition/runtime-heartbeat-context.d.ts.map +1 -1
  122. package/dist/composition/runtime-heartbeat-context.js +33 -2
  123. package/dist/composition/runtime-heartbeat-context.js.map +1 -1
  124. package/dist/composition/spawn-pass-deps.d.ts.map +1 -1
  125. package/dist/composition/spawn-pass-deps.js +3 -0
  126. package/dist/composition/spawn-pass-deps.js.map +1 -1
  127. package/dist/composition/state-cascade-context.d.ts.map +1 -1
  128. package/dist/composition/state-cascade-context.js +3 -1
  129. package/dist/composition/state-cascade-context.js.map +1 -1
  130. package/dist/composition/team-liveness-phase-sources.d.ts.map +1 -1
  131. package/dist/composition/team-liveness-phase-sources.js +1 -0
  132. package/dist/composition/team-liveness-phase-sources.js.map +1 -1
  133. package/dist/composition/tower-escalation-context.d.ts +12 -0
  134. package/dist/composition/tower-escalation-context.d.ts.map +1 -0
  135. package/dist/composition/tower-escalation-context.js +109 -0
  136. package/dist/composition/tower-escalation-context.js.map +1 -0
  137. package/dist/composition/verification-context.d.ts.map +1 -1
  138. package/dist/composition/verification-context.js +34 -4
  139. package/dist/composition/verification-context.js.map +1 -1
  140. package/dist/composition/workstation-intervals-context.d.ts +3 -0
  141. package/dist/composition/workstation-intervals-context.d.ts.map +1 -0
  142. package/dist/composition/workstation-intervals-context.js +33 -0
  143. package/dist/composition/workstation-intervals-context.js.map +1 -0
  144. package/dist/daemon-state/awaiting-slot.d.ts +18 -1
  145. package/dist/daemon-state/awaiting-slot.d.ts.map +1 -1
  146. package/dist/daemon-state/awaiting-slot.js +7 -0
  147. package/dist/daemon-state/awaiting-slot.js.map +1 -1
  148. package/dist/delivery/delivery-reconciler.d.ts +7 -7
  149. package/dist/delivery/recorded-concerns.d.ts +63 -28
  150. package/dist/delivery/recorded-concerns.d.ts.map +1 -1
  151. package/dist/delivery/recorded-concerns.js +72 -28
  152. package/dist/delivery/recorded-concerns.js.map +1 -1
  153. package/dist/directive/directive-queue.d.ts +8 -0
  154. package/dist/directive/directive-queue.d.ts.map +1 -1
  155. package/dist/directive/directive-queue.js +1 -1
  156. package/dist/directive/directive-queue.js.map +1 -1
  157. package/dist/focus/control-state.d.ts +6 -4
  158. package/dist/focus/control-state.d.ts.map +1 -1
  159. package/dist/focus/control-state.js +6 -4
  160. package/dist/focus/control-state.js.map +1 -1
  161. package/dist/focus/daemon-contexts-judgement.d.ts +6 -0
  162. package/dist/focus/daemon-contexts-judgement.d.ts.map +1 -1
  163. package/dist/focus/daemon-contexts.d.ts +6 -0
  164. package/dist/focus/daemon-contexts.d.ts.map +1 -1
  165. package/dist/focus/daemon-contexts.js.map +1 -1
  166. package/dist/focus/focus-engine.d.ts.map +1 -1
  167. package/dist/focus/focus-engine.js +3 -1
  168. package/dist/focus/focus-engine.js.map +1 -1
  169. package/dist/focus/focus-executor.d.ts.map +1 -1
  170. package/dist/focus/focus-executor.js +3 -2
  171. package/dist/focus/focus-executor.js.map +1 -1
  172. package/dist/focus/focus-loop-registry.d.ts.map +1 -1
  173. package/dist/focus/focus-loop-registry.js +42 -0
  174. package/dist/focus/focus-loop-registry.js.map +1 -1
  175. package/dist/focus/focus-poller-auto-advance.d.ts +4 -2
  176. package/dist/focus/focus-poller-auto-advance.d.ts.map +1 -1
  177. package/dist/focus/focus-poller-auto-advance.js +24 -18
  178. package/dist/focus/focus-poller-auto-advance.js.map +1 -1
  179. package/dist/focus/focus-poller-spawn.d.ts.map +1 -1
  180. package/dist/focus/focus-poller-spawn.js +8 -6
  181. package/dist/focus/focus-poller-spawn.js.map +1 -1
  182. package/dist/focus/heartbeat-metadata.d.ts +5 -0
  183. package/dist/focus/heartbeat-metadata.d.ts.map +1 -1
  184. package/dist/focus/heartbeat-metadata.js +12 -0
  185. package/dist/focus/heartbeat-metadata.js.map +1 -1
  186. package/dist/focus/heartbeat.d.ts +9 -2
  187. package/dist/focus/heartbeat.d.ts.map +1 -1
  188. package/dist/focus/heartbeat.js +10 -1
  189. package/dist/focus/heartbeat.js.map +1 -1
  190. package/dist/focus/host-pressure.d.ts +77 -0
  191. package/dist/focus/host-pressure.d.ts.map +1 -0
  192. package/dist/focus/host-pressure.js +83 -0
  193. package/dist/focus/host-pressure.js.map +1 -0
  194. package/dist/focus/pending-directive-gates.d.ts +14 -0
  195. package/dist/focus/pending-directive-gates.d.ts.map +1 -1
  196. package/dist/focus/pending-directive-gates.js +25 -1
  197. package/dist/focus/pending-directive-gates.js.map +1 -1
  198. package/dist/focus/pending-spawn-pass-deps.d.ts +7 -0
  199. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
  200. package/dist/focus/pending-spawn-review-next-step.d.ts +1 -1
  201. package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -1
  202. package/dist/focus/pending-spawn-review-next-step.js +2 -0
  203. package/dist/focus/pending-spawn-review-next-step.js.map +1 -1
  204. package/dist/focus/ready-focus-team-work.d.ts +9 -4
  205. package/dist/focus/ready-focus-team-work.d.ts.map +1 -1
  206. package/dist/focus/ready-focus-team-work.js +14 -3
  207. package/dist/focus/ready-focus-team-work.js.map +1 -1
  208. package/dist/focus/verify-open-issues.d.ts +3 -2
  209. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  210. package/dist/focus/verify-open-issues.js +6 -4
  211. package/dist/focus/verify-open-issues.js.map +1 -1
  212. package/dist/focus/workstation-intervals.d.ts +83 -0
  213. package/dist/focus/workstation-intervals.d.ts.map +1 -0
  214. package/dist/focus/workstation-intervals.js +81 -0
  215. package/dist/focus/workstation-intervals.js.map +1 -0
  216. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +5 -2
  217. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  218. package/dist/focus-stage-lifecycle/wedge-watchdog.js +2 -2
  219. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  220. package/dist/git/types.js +1 -1
  221. package/dist/merge/candidate-ci-failures.d.ts +72 -0
  222. package/dist/merge/candidate-ci-failures.d.ts.map +1 -0
  223. package/dist/merge/candidate-ci-failures.js +240 -0
  224. package/dist/merge/candidate-ci-failures.js.map +1 -0
  225. package/dist/merge/candidate-red-record.d.ts +44 -0
  226. package/dist/merge/candidate-red-record.d.ts.map +1 -0
  227. package/dist/merge/candidate-red-record.js +98 -0
  228. package/dist/merge/candidate-red-record.js.map +1 -0
  229. package/dist/merge/candidate-rework.d.ts +4 -3
  230. package/dist/merge/candidate-rework.d.ts.map +1 -1
  231. package/dist/merge/candidate-rework.js +46 -14
  232. package/dist/merge/candidate-rework.js.map +1 -1
  233. package/dist/merge/candidate-tip-attribution.d.ts +135 -0
  234. package/dist/merge/candidate-tip-attribution.d.ts.map +1 -0
  235. package/dist/merge/candidate-tip-attribution.js +319 -0
  236. package/dist/merge/candidate-tip-attribution.js.map +1 -0
  237. package/dist/merge/completion-merge-driver.d.ts +49 -5
  238. package/dist/merge/completion-merge-driver.d.ts.map +1 -1
  239. package/dist/merge/completion-merge-driver.js +56 -2
  240. package/dist/merge/completion-merge-driver.js.map +1 -1
  241. package/dist/merge/completion-merge-gate.d.ts +4 -1
  242. package/dist/merge/completion-merge-gate.d.ts.map +1 -1
  243. package/dist/merge/completion-merge-gate.js +9 -8
  244. package/dist/merge/completion-merge-gate.js.map +1 -1
  245. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  246. package/dist/prompt-sections/persona-sections.js +4 -1
  247. package/dist/prompt-sections/persona-sections.js.map +1 -1
  248. package/dist/prompt-sections/qa-author-section.d.ts.map +1 -1
  249. package/dist/prompt-sections/qa-author-section.js +18 -1
  250. package/dist/prompt-sections/qa-author-section.js.map +1 -1
  251. package/dist/prompt-sections/scoping-sections.d.ts +0 -12
  252. package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
  253. package/dist/prompt-sections/scoping-sections.js +16 -2
  254. package/dist/prompt-sections/scoping-sections.js.map +1 -1
  255. package/dist/prompts/bounded-universals.d.ts +13 -0
  256. package/dist/prompts/bounded-universals.d.ts.map +1 -0
  257. package/dist/prompts/bounded-universals.js +32 -0
  258. package/dist/prompts/bounded-universals.js.map +1 -0
  259. package/dist/queries/api-client/shared.d.ts +2 -1
  260. package/dist/queries/api-client/shared.d.ts.map +1 -1
  261. package/dist/queries/api-client/shared.js +36 -1
  262. package/dist/queries/api-client/shared.js.map +1 -1
  263. package/dist/queries/candidate-ci-reds/candidate-ci-reds.d.ts +35 -0
  264. package/dist/queries/candidate-ci-reds/candidate-ci-reds.d.ts.map +1 -0
  265. package/dist/queries/candidate-ci-reds/candidate-ci-reds.js +42 -0
  266. package/dist/queries/candidate-ci-reds/candidate-ci-reds.js.map +1 -0
  267. package/dist/queries/candidate-ci-reds/gate-escape-files.d.ts +16 -0
  268. package/dist/queries/candidate-ci-reds/gate-escape-files.d.ts.map +1 -0
  269. package/dist/queries/candidate-ci-reds/gate-escape-files.js +51 -0
  270. package/dist/queries/candidate-ci-reds/gate-escape-files.js.map +1 -0
  271. package/dist/queries/deliveries/issues.d.ts.map +1 -1
  272. package/dist/queries/deliveries/issues.js +1 -0
  273. package/dist/queries/deliveries/issues.js.map +1 -1
  274. package/dist/queries/escalations/escalation-consumption.d.ts +13 -0
  275. package/dist/queries/escalations/escalation-consumption.d.ts.map +1 -1
  276. package/dist/queries/escalations/escalation-consumption.js +12 -2
  277. package/dist/queries/escalations/escalation-consumption.js.map +1 -1
  278. package/dist/queries/escalations/tower-escalations.d.ts +82 -0
  279. package/dist/queries/escalations/tower-escalations.d.ts.map +1 -0
  280. package/dist/queries/escalations/tower-escalations.js +97 -0
  281. package/dist/queries/escalations/tower-escalations.js.map +1 -0
  282. package/dist/queries/focus-review/recorded-concern-ids.d.ts +48 -11
  283. package/dist/queries/focus-review/recorded-concern-ids.d.ts.map +1 -1
  284. package/dist/queries/focus-review/recorded-concern-ids.js +42 -12
  285. package/dist/queries/focus-review/recorded-concern-ids.js.map +1 -1
  286. package/dist/queries/focus-review/review-criterion-verdicts.d.ts +37 -0
  287. package/dist/queries/focus-review/review-criterion-verdicts.d.ts.map +1 -0
  288. package/dist/queries/focus-review/review-criterion-verdicts.js +64 -0
  289. package/dist/queries/focus-review/review-criterion-verdicts.js.map +1 -0
  290. package/dist/queries/focus-review/review-finding-facts.d.ts +18 -6
  291. package/dist/queries/focus-review/review-finding-facts.d.ts.map +1 -1
  292. package/dist/queries/focus-review/review-finding-facts.js +21 -8
  293. package/dist/queries/focus-review/review-finding-facts.js.map +1 -1
  294. package/dist/queries/focuses/ended-arm.d.ts +56 -13
  295. package/dist/queries/focuses/ended-arm.d.ts.map +1 -1
  296. package/dist/queries/focuses/ended-arm.js +40 -14
  297. package/dist/queries/focuses/ended-arm.js.map +1 -1
  298. package/dist/queries/focuses/focus-criteria-standing.d.ts +12 -0
  299. package/dist/queries/focuses/focus-criteria-standing.d.ts.map +1 -1
  300. package/dist/queries/focuses/focus-criteria-standing.js +13 -0
  301. package/dist/queries/focuses/focus-criteria-standing.js.map +1 -1
  302. package/dist/queries/focuses/focus-discovery.d.ts +14 -3
  303. package/dist/queries/focuses/focus-discovery.d.ts.map +1 -1
  304. package/dist/queries/focuses/focus-discovery.js +2 -19
  305. package/dist/queries/focuses/focus-discovery.js.map +1 -1
  306. package/dist/queries/focuses/focuses.d.ts +15 -12
  307. package/dist/queries/focuses/focuses.d.ts.map +1 -1
  308. package/dist/queries/focuses/focuses.js +15 -13
  309. package/dist/queries/focuses/focuses.js.map +1 -1
  310. package/dist/queries/sessions/daemon-connection.d.ts.map +1 -1
  311. package/dist/queries/sessions/daemon-connection.js +1 -0
  312. package/dist/queries/sessions/daemon-connection.js.map +1 -1
  313. package/dist/queries/sessions/sessions.d.ts.map +1 -1
  314. package/dist/queries/sessions/sessions.js +2 -1
  315. package/dist/queries/sessions/sessions.js.map +1 -1
  316. package/dist/queries/tower-decisions/tower-decisions.d.ts +103 -0
  317. package/dist/queries/tower-decisions/tower-decisions.d.ts.map +1 -0
  318. package/dist/queries/tower-decisions/tower-decisions.js +138 -0
  319. package/dist/queries/tower-decisions/tower-decisions.js.map +1 -0
  320. package/dist/queries/verification/verification.js +1 -1
  321. package/dist/queries/wire-schemas/schemas.d.ts +2 -0
  322. package/dist/queries/wire-schemas/schemas.d.ts.map +1 -1
  323. package/dist/queries/wire-schemas/schemas.js +8 -2
  324. package/dist/queries/wire-schemas/schemas.js.map +1 -1
  325. package/dist/queries/workstation-intervals/workstation-intervals.d.ts +52 -0
  326. package/dist/queries/workstation-intervals/workstation-intervals.d.ts.map +1 -0
  327. package/dist/queries/workstation-intervals/workstation-intervals.js +49 -0
  328. package/dist/queries/workstation-intervals/workstation-intervals.js.map +1 -0
  329. package/dist/resolvers/escalation-answers.d.ts +31 -0
  330. package/dist/resolvers/escalation-answers.d.ts.map +1 -1
  331. package/dist/resolvers/escalation-answers.js +31 -17
  332. package/dist/resolvers/escalation-answers.js.map +1 -1
  333. package/dist/resolvers/focus-criteria-standing.d.ts.map +1 -1
  334. package/dist/resolvers/focus-criteria-standing.js +20 -0
  335. package/dist/resolvers/focus-criteria-standing.js.map +1 -1
  336. package/dist/shell/unified-engine-lifecycle.d.ts +11 -1
  337. package/dist/shell/unified-engine-lifecycle.d.ts.map +1 -1
  338. package/dist/shell/unified-engine-lifecycle.js +10 -1
  339. package/dist/shell/unified-engine-lifecycle.js.map +1 -1
  340. package/dist/shell/unified-shell.d.ts +25 -0
  341. package/dist/shell/unified-shell.d.ts.map +1 -1
  342. package/dist/shell/unified-shell.js +26 -80
  343. package/dist/shell/unified-shell.js.map +1 -1
  344. package/dist/shell/update-restart.d.ts +47 -0
  345. package/dist/shell/update-restart.d.ts.map +1 -0
  346. package/dist/shell/update-restart.js +124 -0
  347. package/dist/shell/update-restart.js.map +1 -0
  348. package/dist/spawn/directive-dispatch.d.ts.map +1 -1
  349. package/dist/spawn/directive-dispatch.js +1 -0
  350. package/dist/spawn/directive-dispatch.js.map +1 -1
  351. package/dist/spawn/lead-continuation.d.ts +4 -3
  352. package/dist/spawn/lead-continuation.d.ts.map +1 -1
  353. package/dist/spawn/lead-continuation.js.map +1 -1
  354. package/dist/spawn/live-answer-delivery.d.ts +53 -0
  355. package/dist/spawn/live-answer-delivery.d.ts.map +1 -0
  356. package/dist/spawn/live-answer-delivery.js +26 -0
  357. package/dist/spawn/live-answer-delivery.js.map +1 -0
  358. package/dist/spawn/routing-decider-spawn.d.ts +64 -2
  359. package/dist/spawn/routing-decider-spawn.d.ts.map +1 -1
  360. package/dist/spawn/routing-decider-spawn.js +65 -20
  361. package/dist/spawn/routing-decider-spawn.js.map +1 -1
  362. package/dist/spawn/worktree-session.d.ts +7 -5
  363. package/dist/spawn/worktree-session.d.ts.map +1 -1
  364. package/dist/spawn/worktree-session.js +11 -7
  365. package/dist/spawn/worktree-session.js.map +1 -1
  366. package/dist/supervision/escalation-suppression.js +1 -1
  367. package/dist/supervision/review-cycle-cap-hold.d.ts +11 -5
  368. package/dist/supervision/review-cycle-cap-hold.d.ts.map +1 -1
  369. package/dist/supervision/review-cycle-cap-hold.js +29 -11
  370. package/dist/supervision/review-cycle-cap-hold.js.map +1 -1
  371. package/dist/supervision/review-loop-detector.d.ts +48 -0
  372. package/dist/supervision/review-loop-detector.d.ts.map +1 -0
  373. package/dist/supervision/review-loop-detector.js +13 -0
  374. package/dist/supervision/review-loop-detector.js.map +1 -0
  375. package/dist/supervision/review-loop-hold.d.ts +29 -0
  376. package/dist/supervision/review-loop-hold.d.ts.map +1 -0
  377. package/dist/supervision/review-loop-hold.js +99 -0
  378. package/dist/supervision/review-loop-hold.js.map +1 -0
  379. package/dist/supervision/stall-detector-config.d.ts +8 -0
  380. package/dist/supervision/stall-detector-config.d.ts.map +1 -1
  381. package/dist/supervision/stall-detector-config.js +14 -3
  382. package/dist/supervision/stall-detector-config.js.map +1 -1
  383. package/dist/supervision/stop-registry.d.ts +3 -0
  384. package/dist/supervision/stop-registry.d.ts.map +1 -1
  385. package/dist/supervision/stop-registry.js +3 -1
  386. package/dist/supervision/stop-registry.js.map +1 -1
  387. package/dist/supervision/stop-rows-review-loop.d.ts +35 -0
  388. package/dist/supervision/stop-rows-review-loop.d.ts.map +1 -0
  389. package/dist/supervision/stop-rows-review-loop.js +150 -0
  390. package/dist/supervision/stop-rows-review-loop.js.map +1 -0
  391. package/dist/supervision/stop-rows-team-session.d.ts +1 -1
  392. package/dist/supervision/stop-rows-team-session.d.ts.map +1 -1
  393. package/dist/supervision/stop-rows-team-session.js.map +1 -1
  394. package/dist/supervision/unreviewed-settle-detector.d.ts +7 -2
  395. package/dist/supervision/unreviewed-settle-detector.d.ts.map +1 -1
  396. package/dist/supervision/unreviewed-settle-detector.js +15 -2
  397. package/dist/supervision/unreviewed-settle-detector.js.map +1 -1
  398. package/dist/templates/agents-md.d.ts.map +1 -1
  399. package/dist/templates/agents-md.js +1 -0
  400. package/dist/templates/agents-md.js.map +1 -1
  401. package/dist/templates/claude-md.d.ts +1 -1
  402. package/dist/templates/claude-md.d.ts.map +1 -1
  403. package/dist/templates/claude-md.js +12 -0
  404. package/dist/templates/claude-md.js.map +1 -1
  405. package/dist/testing/fixtures/api-client.js +1 -1
  406. package/dist/testing/fixtures/completion-judge-stubs.d.ts +7 -2
  407. package/dist/testing/fixtures/completion-judge-stubs.d.ts.map +1 -1
  408. package/dist/testing/fixtures/completion-judge-stubs.js +11 -1
  409. package/dist/testing/fixtures/completion-judge-stubs.js.map +1 -1
  410. package/dist/testing/fixtures/index.js +1 -1
  411. package/dist/testing/fixtures/merge-log-capture.d.ts.map +1 -1
  412. package/dist/testing/fixtures/merge-log-capture.js +1 -0
  413. package/dist/testing/fixtures/merge-log-capture.js.map +1 -1
  414. package/dist/testing/fixtures/pending-spawn-world.d.ts +4 -0
  415. package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -1
  416. package/dist/testing/fixtures/pending-spawn-world.js +15 -2
  417. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
  418. package/dist/testing/fixtures/recording-api-client.js +1 -1
  419. package/dist/testing/fixtures/review-exit-deps.d.ts.map +1 -1
  420. package/dist/testing/fixtures/review-exit-deps.js +3 -1
  421. package/dist/testing/fixtures/review-exit-deps.js.map +1 -1
  422. package/dist/testing/fixtures/review-loop.d.ts +19 -0
  423. package/dist/testing/fixtures/review-loop.d.ts.map +1 -0
  424. package/dist/testing/fixtures/review-loop.js +30 -0
  425. package/dist/testing/fixtures/review-loop.js.map +1 -0
  426. package/dist/testing/fixtures/shortfall-rework-hold-deps.d.ts.map +1 -1
  427. package/dist/testing/fixtures/shortfall-rework-hold-deps.js +1 -0
  428. package/dist/testing/fixtures/shortfall-rework-hold-deps.js.map +1 -1
  429. package/dist/testing/fixtures/tower-loop.d.ts +28 -0
  430. package/dist/testing/fixtures/tower-loop.d.ts.map +1 -0
  431. package/dist/testing/fixtures/tower-loop.js +83 -0
  432. package/dist/testing/fixtures/tower-loop.js.map +1 -0
  433. package/dist/testing/fixtures/verification-deps.d.ts +7 -0
  434. package/dist/testing/fixtures/verification-deps.d.ts.map +1 -1
  435. package/dist/testing/fixtures/verification-deps.js +17 -1
  436. package/dist/testing/fixtures/verification-deps.js.map +1 -1
  437. package/dist/testing/fixtures/vitest-failure-log.d.ts.map +1 -1
  438. package/dist/testing/fixtures/vitest-failure-log.js +2 -1
  439. package/dist/testing/fixtures/vitest-failure-log.js.map +1 -1
  440. package/dist/tower/tower-escalation-gather.d.ts +33 -0
  441. package/dist/tower/tower-escalation-gather.d.ts.map +1 -0
  442. package/dist/tower/tower-escalation-gather.js +38 -0
  443. package/dist/tower/tower-escalation-gather.js.map +1 -0
  444. package/dist/tower/tower-escalation-prompt.d.ts +62 -0
  445. package/dist/tower/tower-escalation-prompt.d.ts.map +1 -0
  446. package/dist/tower/tower-escalation-prompt.js +130 -0
  447. package/dist/tower/tower-escalation-prompt.js.map +1 -0
  448. package/dist/tower/tower-escalation-routing.d.ts +49 -0
  449. package/dist/tower/tower-escalation-routing.d.ts.map +1 -0
  450. package/dist/tower/tower-escalation-routing.js +53 -0
  451. package/dist/tower/tower-escalation-routing.js.map +1 -0
  452. package/dist/tower/tower-escalation-session.d.ts +149 -0
  453. package/dist/tower/tower-escalation-session.d.ts.map +1 -0
  454. package/dist/tower/tower-escalation-session.js +238 -0
  455. package/dist/tower/tower-escalation-session.js.map +1 -0
  456. package/dist/tower/tower-supervisor-history.d.ts +129 -0
  457. package/dist/tower/tower-supervisor-history.d.ts.map +1 -0
  458. package/dist/tower/tower-supervisor-history.js +217 -0
  459. package/dist/tower/tower-supervisor-history.js.map +1 -0
  460. package/dist/tower/tower-supervisor-prompt.d.ts +21 -0
  461. package/dist/tower/tower-supervisor-prompt.d.ts.map +1 -0
  462. package/dist/tower/tower-supervisor-prompt.js +205 -0
  463. package/dist/tower/tower-supervisor-prompt.js.map +1 -0
  464. package/dist/tower/tower-supervisor-session.d.ts +220 -0
  465. package/dist/tower/tower-supervisor-session.d.ts.map +1 -0
  466. package/dist/tower/tower-supervisor-session.js +307 -0
  467. package/dist/tower/tower-supervisor-session.js.map +1 -0
  468. package/dist/tower/tower-supervisor.d.ts +86 -0
  469. package/dist/tower/tower-supervisor.d.ts.map +1 -0
  470. package/dist/tower/tower-supervisor.js +8 -0
  471. package/dist/tower/tower-supervisor.js.map +1 -0
  472. package/dist/types/index.js +1 -1
  473. package/dist/update/auto-update.d.ts +11 -5
  474. package/dist/update/auto-update.d.ts.map +1 -1
  475. package/dist/update/auto-update.js +11 -5
  476. package/dist/update/auto-update.js.map +1 -1
  477. package/dist/update/restart-contract.d.ts +62 -0
  478. package/dist/update/restart-contract.d.ts.map +1 -0
  479. package/dist/update/restart-contract.js +137 -0
  480. package/dist/update/restart-contract.js.map +1 -0
  481. package/dist/verify/attribution/verification-baseline-run.d.ts.map +1 -1
  482. package/dist/verify/attribution/verification-baseline-run.js +1 -0
  483. package/dist/verify/attribution/verification-baseline-run.js.map +1 -1
  484. package/dist/verify/ci-gate/ci-gate-dispatch.d.ts +3 -0
  485. package/dist/verify/ci-gate/ci-gate-dispatch.d.ts.map +1 -1
  486. package/dist/verify/ci-gate/ci-gate-dispatch.js +31 -9
  487. package/dist/verify/ci-gate/ci-gate-dispatch.js.map +1 -1
  488. package/dist/verify/ci-gate/ci-gate-wait-record.d.ts +6 -0
  489. package/dist/verify/ci-gate/ci-gate-wait-record.d.ts.map +1 -1
  490. package/dist/verify/ci-gate/ci-gate-wait-record.js +1 -0
  491. package/dist/verify/ci-gate/ci-gate-wait-record.js.map +1 -1
  492. package/dist/verify/deterministic-gate/verification-checkout.d.ts +12 -2
  493. package/dist/verify/deterministic-gate/verification-checkout.d.ts.map +1 -1
  494. package/dist/verify/deterministic-gate/verification-checkout.js +18 -3
  495. package/dist/verify/deterministic-gate/verification-checkout.js.map +1 -1
  496. package/dist/verify/deterministic-gate/verification-deterministic.js +1 -1
  497. package/dist/verify/deterministic-gate/verification-failure-parser.d.ts +30 -9
  498. package/dist/verify/deterministic-gate/verification-failure-parser.d.ts.map +1 -1
  499. package/dist/verify/deterministic-gate/verification-failure-parser.js +52 -8
  500. package/dist/verify/deterministic-gate/verification-failure-parser.js.map +1 -1
  501. package/dist/verify/engine/verification-commit-sharing.d.ts.map +1 -1
  502. package/dist/verify/engine/verification-commit-sharing.js +6 -2
  503. package/dist/verify/engine/verification-commit-sharing.js.map +1 -1
  504. package/dist/verify/engine/verification-deps.d.ts +9 -0
  505. package/dist/verify/engine/verification-deps.d.ts.map +1 -1
  506. package/dist/verify/engine/verification-deps.js +1 -1
  507. package/dist/verify/engine/verification-engine.d.ts.map +1 -1
  508. package/dist/verify/engine/verification-engine.js +4 -1
  509. package/dist/verify/engine/verification-engine.js.map +1 -1
  510. package/dist/verify/escaped-tests/escaped-pass-store.d.ts +19 -0
  511. package/dist/verify/escaped-tests/escaped-pass-store.d.ts.map +1 -0
  512. package/dist/verify/escaped-tests/escaped-pass-store.js +90 -0
  513. package/dist/verify/escaped-tests/escaped-pass-store.js.map +1 -0
  514. package/dist/verify/escaped-tests/escaped-test-run.d.ts +39 -0
  515. package/dist/verify/escaped-tests/escaped-test-run.d.ts.map +1 -0
  516. package/dist/verify/escaped-tests/escaped-test-run.js +156 -0
  517. package/dist/verify/escaped-tests/escaped-test-run.js.map +1 -0
  518. package/dist/verify/escaped-tests/escaped-test-set.d.ts +65 -0
  519. package/dist/verify/escaped-tests/escaped-test-set.d.ts.map +1 -0
  520. package/dist/verify/escaped-tests/escaped-test-set.js +95 -0
  521. package/dist/verify/escaped-tests/escaped-test-set.js.map +1 -0
  522. package/dist/verify/escaped-tests/escaped-tests-source.d.ts +44 -0
  523. package/dist/verify/escaped-tests/escaped-tests-source.d.ts.map +1 -0
  524. package/dist/verify/escaped-tests/escaped-tests-source.js +142 -0
  525. package/dist/verify/escaped-tests/escaped-tests-source.js.map +1 -0
  526. package/dist/verify/gate-config/verification-manifest.d.ts +12 -1
  527. package/dist/verify/gate-config/verification-manifest.d.ts.map +1 -1
  528. package/dist/verify/gate-config/verification-manifest.js +12 -1
  529. package/dist/verify/gate-config/verification-manifest.js.map +1 -1
  530. package/dist/verify/gate-verdicts/commit-verdict-record.js +1 -1
  531. package/dist/verify/outcome-routing/verification-rework-issue.d.ts +4 -4
  532. package/dist/verify/outcome-routing/verification-rework-issue.d.ts.map +1 -1
  533. package/dist/verify/outcome-routing/verification-rework-issue.js +16 -6
  534. package/dist/verify/outcome-routing/verification-rework-issue.js.map +1 -1
  535. package/package.json +3 -3
  536. package/scripts/telora-daemon-wrapper.sh +16 -7
@@ -0,0 +1,307 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/composition/tower-escalation-context.test.ts,
3
+ // packages/daemon/src/tower/tower-escalation-session.test.ts,
4
+ // packages/daemon/src/tower/tower-supervisor-session.test.ts,
5
+ // packages/daemon/src/tower/tower-supervisor.test.ts
6
+ // PINNED-BY-END
7
+ import { createLogger } from '../log/daemon-log.js';
8
+ import { heldLoopOf } from './tower-supervisor-history.js';
9
+ import { buildTowerSupervisorPrompt, parseTowerDecisionLine } from './tower-supervisor-prompt.js';
10
+ import { emptySweepCounts, } from './tower-supervisor.js';
11
+ const log = createLogger({ module: 'tower' });
12
+ export const TOWER_SUPERVISOR_MODEL = 'opus';
13
+ /** Kill a supervisor that has not exited within this window (30 minutes: it may run the disputed tests). */
14
+ export const TOWER_SUPERVISOR_TIMEOUT_MS = 30 * 60 * 1000;
15
+ /** Sessions that ran without deciding, per loop, before the daemon stops trying and files it. */
16
+ export const TOWER_SUPERVISOR_MAX_ATTEMPTS = 2;
17
+ /** Governor engine name for supervisor slots (no per-engine limit: bounded by the global session cap). */
18
+ export const TOWER_SUPERVISOR_GOVERNOR_ENGINE = 'tower-supervisor';
19
+ /**
20
+ * The scoped MCP profile the supervisor's Telora server runs under
21
+ * (mcp/telora-products profile-scope.ts TOWER_SUPERVISOR_PROFILE): the tool-level
22
+ * bound on "it never grants review budget".
23
+ */
24
+ export const TOWER_SUPERVISOR_MCP_PROFILE = 'tower_supervisor';
25
+ /** escalation_kind of the observation filed when every attempt ran without deciding. */
26
+ export const TOWER_SUPERVISOR_UNDECIDED_KIND = 'tower_supervisor_undecided';
27
+ /**
28
+ * The tools a supervisor session is pre-approved for: reading and running the
29
+ * disputed check in the worktree, and the Telora acts it decides through --
30
+ * the amendment (telora_product_focus amend_criterion), the findings and Tasks
31
+ * (telora_product_issue), the decision record (telora_product_tower), the one
32
+ * escalation (telora_agent) -- plus the context it reads. This list only
33
+ * PRE-APPROVES; what the Telora tools can DO is bounded by the scoped MCP
34
+ * profile (TOWER_SUPERVISOR_MCP_PROFILE), under which none can arm, unarm or
35
+ * grant review cycles: the budget is the daemon's.
36
+ */
37
+ export const TOWER_SUPERVISOR_MCP_TOOLS = [
38
+ 'Read', 'Grep', 'Glob', 'Bash',
39
+ 'mcp__telora-products__telora_product_focus',
40
+ 'mcp__telora-products__telora_product_issue',
41
+ 'mcp__telora-products__telora_product_delivery',
42
+ 'mcp__telora-products__telora_product_tower',
43
+ 'mcp__telora-products__telora_agent',
44
+ 'mcp__telora-products__telora_reality_tree_traverse',
45
+ 'mcp__telora-products__telora_wiki_search',
46
+ ];
47
+ /** Pure: the decisions on the record that are ABOUT a loop (evidence.loopDecisionId). */
48
+ export function decisionsAboutLoop(decisions, loopDecisionId) {
49
+ return decisions.filter((d) => {
50
+ const ev = d.evidence;
51
+ return ev !== null && typeof ev === 'object' && ev.loopDecisionId === loopDecisionId;
52
+ });
53
+ }
54
+ /**
55
+ * Pure: where a held loop stands on the record. An escalation to the operator
56
+ * wins over a bound (a supervisor that escalated did not settle it); a
57
+ * criterion_bounded decision naming the loop settles it only when the edge
58
+ * reports its bound APPLIED (an amendment of the criterion since detection);
59
+ * a bound on the record without one is `bound_unapplied`, which releases
60
+ * nothing; anything else is undecided.
61
+ */
62
+ export function settlementOf(record, loopDecisionId) {
63
+ const about = decisionsAboutLoop(record.decisions, loopDecisionId);
64
+ const escalations = about.filter((d) => d.kind === 'escalated_to_operator');
65
+ if (escalations.length > 0)
66
+ return { kind: 'awaiting_operator', escalations };
67
+ const bounded = about.filter((d) => d.kind === 'criterion_bounded');
68
+ if (bounded.length === 0)
69
+ return { kind: 'undecided' };
70
+ const applied = (record.appliedBounds ?? []).find((b) => b.loopDecisionId === loopDecisionId);
71
+ return applied && applied.amendmentIds.length > 0
72
+ ? { kind: 'bounded', bounded, amendmentIds: applied.amendmentIds }
73
+ : { kind: 'bound_unapplied', bounded };
74
+ }
75
+ /** Pure: the loop_resolved the daemon records once the criterion was bounded. */
76
+ export function loopResolvedDecision(loop, bounded, amendmentIds) {
77
+ return {
78
+ focusId: loop.focusId,
79
+ kind: 'loop_resolved',
80
+ decidedByKind: 'daemon',
81
+ summary: `Released the held review loop on criterion "${loop.criterion}": the Tower supervisor bounded it.`,
82
+ rationale: `The supervisor recorded ${bounded.length} criterion_bounded decision(s) naming this loop and applied the ` +
83
+ `bound (${amendmentIds.length} amendment(s) of the criterion since the loop was detected), so the criterion ` +
84
+ 'the loop could not converge on now reads as a closed list plus a named judge. The next review is a fresh ' +
85
+ 'session that judges the amended wording.',
86
+ evidence: {
87
+ loopDecisionId: loop.towerDecisionId,
88
+ boundDecisionIds: bounded.map((d) => d.towerDecisionId),
89
+ amendmentIds: [...amendmentIds],
90
+ supervisorSessionIds: [...new Set(bounded.map((d) => d.agentSessionId).filter((s) => s !== null))],
91
+ },
92
+ criterionKey: loop.criterionKey,
93
+ nodeId: loop.nodeId,
94
+ resolvesDecisionId: loop.towerDecisionId,
95
+ };
96
+ }
97
+ /** Pure: what a finished spawn was -- not run at all (retry, uncounted), or ran. */
98
+ export function spawnRan(result) {
99
+ return result.started && result.modelUnavailable === undefined;
100
+ }
101
+ /** Pure: a one-line account of a spawn's end. */
102
+ export function describeSpawnEnd(result) {
103
+ if (result.modelUnavailable)
104
+ return `model unavailable (${result.modelUnavailable.kind})`;
105
+ if (!result.started)
106
+ return result.errorMessage ?? 'did not start';
107
+ if (result.timedOut)
108
+ return 'timed out (killed)';
109
+ const said = parseTowerDecisionLine(result.stdout);
110
+ return `exited ${result.exitCode ?? 'null'}${result.errorMessage ? ` (${result.errorMessage})` : ''}${said ? `; said "${said}"` : ''}`;
111
+ }
112
+ /** Record loop_resolved for a bounded loop and drop the review directive queued on the old wording. */
113
+ async function release(st, loop, bounded, amendmentIds) {
114
+ await st.deps.recordTowerDecision(loopResolvedDecision(loop, bounded, amendmentIds));
115
+ const dropped = st.deps.dropPendingReviewDirective(loop.focusId);
116
+ log.info(`[tower-supervisor] released the held loop ${loop.towerDecisionId.slice(0, 8)} on "${loop.criterion}": the ` +
117
+ `criterion was bounded${dropped ? '; dropped the review directive queued on the old wording' : ''}.`);
118
+ st.attempts.delete(loop.towerDecisionId);
119
+ return 'resolved';
120
+ }
121
+ /** Every attempt ran without deciding: file the loop for a routing decider and record escalated_to_operator. */
122
+ async function giveUp(st, loop, focus, config, detail) {
123
+ const tried = st.attempts.get(loop.towerDecisionId) ?? 0;
124
+ const filed = await st.deps.fileUndecidedLoop({
125
+ organizationId: config.organizationId, productId: focus.productId, focusId: focus.focusId,
126
+ escalationKind: TOWER_SUPERVISOR_UNDECIDED_KIND,
127
+ description: `The review loop of focus "${focus.focusName}" on criterion "${loop.criterion}" is held, and the Tower ` +
128
+ `supervisor ran ${tried} time(s) without deciding it (last: ${detail}). The focus spawns no coding or ` +
129
+ 'review pass until the criterion is bounded or the operator rules.',
130
+ whatWasTried: `${tried} one-shot supervisor session(s); none recorded escalated_to_operator, or a criterion_bounded whose ` +
131
+ 'amendment of the criterion landed.',
132
+ helpNeeded: 'Decide the loop: bound the criterion (telora_product_focus amend_criterion) and record it ' +
133
+ '(telora_product_tower decision_record criterion_bounded with loopDecisionId), or escalate to the operator.',
134
+ metadata: { loopDecisionId: loop.towerDecisionId, attempts: tried, lastDetail: detail },
135
+ });
136
+ await st.deps.recordTowerDecision({
137
+ focusId: loop.focusId, kind: 'escalated_to_operator', decidedByKind: 'daemon',
138
+ summary: `Handed the held review loop on "${loop.criterion}" on: the Tower supervisor could not decide it.`,
139
+ rationale: `${tried} supervisor session(s) ran and none recorded a decision (last: ${detail}). The daemon stops ` +
140
+ 'spawning supervisors for this loop and files it for a routing decider, which makes it the operator\'s ' +
141
+ 'when only a human can rule. The loop stays held.',
142
+ evidence: { loopDecisionId: loop.towerDecisionId, attempts: tried, lastDetail: detail },
143
+ criterionKey: loop.criterionKey, nodeId: loop.nodeId, escalationId: filed.escalationId,
144
+ });
145
+ log.warn(`[tower-supervisor] gave up on the held loop ${loop.towerDecisionId.slice(0, 8)} of "${focus.focusName}" after ${tried} attempt(s); filed ${filed.escalationId ?? '(correlated)'}.`);
146
+ }
147
+ /** After a session exits: release a bounded loop, leave an escalated one held, count an undecided run. */
148
+ async function settleAfterRun(st, loop, focus, config, result) {
149
+ const detail = describeSpawnEnd(result);
150
+ const record = await st.deps.listTowerDecisions(loop.focusId);
151
+ const settled = settlementOf(record, loop.towerDecisionId);
152
+ if (settled.kind === 'bounded') {
153
+ await release(st, loop, settled.bounded, settled.amendmentIds);
154
+ return;
155
+ }
156
+ if (settled.kind === 'awaiting_operator') {
157
+ log.info(`[tower-supervisor] the held loop ${loop.towerDecisionId.slice(0, 8)} of "${focus.focusName}" was escalated to the operator; it stays held.`);
158
+ return;
159
+ }
160
+ if (!spawnRan(result)) {
161
+ log.info(`[tower-supervisor] supervisor for "${focus.focusName}" did not run (${detail}); the next sweep retries.`);
162
+ return;
163
+ }
164
+ const tried = (st.attempts.get(loop.towerDecisionId) ?? 0) + 1;
165
+ st.attempts.set(loop.towerDecisionId, tried);
166
+ const outcome = settled.kind === 'bound_unapplied'
167
+ ? `${detail}, recording criterion_bounded with no amendment of the criterion -- the bound was not applied, so the loop stays held`
168
+ : `${detail} without deciding`;
169
+ log.warn(`[tower-supervisor] supervisor for "${focus.focusName}" ${outcome} (attempt ${tried} of ${TOWER_SUPERVISOR_MAX_ATTEMPTS}).`);
170
+ if (tried >= TOWER_SUPERVISOR_MAX_ATTEMPTS)
171
+ await giveUp(st, loop, focus, config, settled.kind === 'bound_unapplied' ? `${detail}; bound recorded, never applied` : detail);
172
+ }
173
+ /** One supervisor session, inside a governor slot: gather, prompt, spawn, settle. */
174
+ async function runSession(st, loop, focus, config) {
175
+ const governor = st.deps.readGovernor();
176
+ let token = null;
177
+ if (governor) {
178
+ token = governor.tryAcquireSlot(TOWER_SUPERVISOR_GOVERNOR_ENGINE);
179
+ if (!token) {
180
+ log.info(`[tower-supervisor] no governor slot free for "${focus.focusName}"; the next sweep retries.`);
181
+ return;
182
+ }
183
+ }
184
+ try {
185
+ const repoRoot = st.deps.focusWorktreePath(focus.focusId) ?? config.repoPath;
186
+ const history = await st.deps.gatherHistory({ loop, productId: focus.productId, config, repoRoot });
187
+ const supervisorSessionId = st.deps.newSessionId();
188
+ const prompt = buildTowerSupervisorPrompt({ focus, loop, supervisorSessionId, history });
189
+ log.info(`[tower-supervisor] deciding the held loop ${loop.towerDecisionId.slice(0, 8)} of "${focus.focusName}" (session ${supervisorSessionId.slice(0, 8)}).`);
190
+ const result = await st.deps.spawn({
191
+ config, prompt, cwd: repoRoot, focusId: focus.focusId, loopDecisionId: loop.towerDecisionId,
192
+ model: TOWER_SUPERVISOR_MODEL, timeoutMs: TOWER_SUPERVISOR_TIMEOUT_MS, allowedTools: TOWER_SUPERVISOR_MCP_TOOLS,
193
+ });
194
+ await settleAfterRun(st, loop, focus, config, result);
195
+ }
196
+ finally {
197
+ if (token && governor)
198
+ governor.releaseSlot(token);
199
+ }
200
+ }
201
+ /** One supervision step for one held loop; starts a session in the background when one is owed. Never throws. */
202
+ async function supervise(st, loopDecision, productId, known) {
203
+ const loopId = loopDecision.towerDecisionId;
204
+ if (st.inFlight.has(loopId))
205
+ return 'in_flight';
206
+ try {
207
+ const loop = heldLoopOf(loopDecision);
208
+ const config = st.deps.readConfig();
209
+ if (!loop || !config)
210
+ return 'skipped';
211
+ const record = known ?? await st.deps.listTowerDecisions(loop.focusId);
212
+ if (!record.openLoopDecisionIds.includes(loopId))
213
+ return 'not_open';
214
+ const settled = settlementOf(record, loopId);
215
+ if (settled.kind === 'bounded')
216
+ return await release(st, loop, settled.bounded, settled.amendmentIds);
217
+ if (settled.kind === 'awaiting_operator')
218
+ return 'awaiting_operator';
219
+ const repeat = await st.deps.escalateRepeatReviewLoop({ focusId: loop.focusId, loopDecisionId: loopId });
220
+ if (repeat.repeat) {
221
+ log.warn(`[tower-supervisor] the loop ${loopId.slice(0, 8)} on "${loop.criterion}" repeats a criterion the supervisor ` +
222
+ `already bounded under this arm: no second supervisor; filed to the operator (${repeat.escalationId ?? 'escalation unknown'}).`);
223
+ return 'awaiting_operator';
224
+ }
225
+ const focus = await st.deps.findFocus(loop.focusId, productId);
226
+ const scoped = focus ? st.deps.productConfig(config, focus.productId) : null;
227
+ if (!focus || !scoped)
228
+ return 'skipped';
229
+ if ((st.attempts.get(loopId) ?? 0) >= TOWER_SUPERVISOR_MAX_ATTEMPTS) {
230
+ await giveUp(st, loop, focus, scoped, 'the previous hand-off did not land');
231
+ return 'awaiting_operator';
232
+ }
233
+ const run = runSession(st, loop, focus, scoped)
234
+ .catch((err) => log.warn(`[tower-supervisor] supervision of "${focus.focusName}" failed: ${err.message}; the next sweep retries.`))
235
+ .finally(() => st.inFlight.delete(loopId));
236
+ st.inFlight.set(loopId, run);
237
+ return 'started';
238
+ }
239
+ catch (err) {
240
+ log.warn(`[tower-supervisor] could not read the held loop ${loopId.slice(0, 8)}: ${err.message}; the next sweep retries.`);
241
+ return 'unreadable';
242
+ }
243
+ }
244
+ /** A sweep's step for one open loop: read its focus record, then supervise it. */
245
+ async function superviseOpen(st, open, productId) {
246
+ if (st.inFlight.has(open.towerDecisionId))
247
+ return 'in_flight';
248
+ try {
249
+ const record = await st.deps.listTowerDecisions(open.focusId);
250
+ const decision = record.decisions.find((d) => d.towerDecisionId === open.towerDecisionId);
251
+ return decision ? await supervise(st, decision, productId, record) : 'not_open';
252
+ }
253
+ catch (err) {
254
+ log.warn(`[tower-supervisor] focus record read failed for ${open.focusId.slice(0, 8)}: ${err.message}`);
255
+ return 'unreadable';
256
+ }
257
+ }
258
+ function tally(counts, outcome) {
259
+ if (outcome === 'started')
260
+ counts.started += 1;
261
+ else if (outcome === 'in_flight')
262
+ counts.inFlight += 1;
263
+ else if (outcome === 'resolved')
264
+ counts.resolved += 1;
265
+ else if (outcome === 'awaiting_operator')
266
+ counts.awaitingOperator += 1;
267
+ else if (outcome === 'unreadable')
268
+ counts.unreadable += 1;
269
+ else
270
+ counts.skipped += 1;
271
+ }
272
+ /** Sweep the held loops of every configured product. */
273
+ async function sweepHeldLoops(st) {
274
+ const counts = emptySweepCounts();
275
+ const config = st.deps.readConfig();
276
+ if (!config)
277
+ return counts;
278
+ for (const product of config.products) {
279
+ let loops;
280
+ try {
281
+ loops = await st.deps.listOpenReviewLoops({ productId: product.id });
282
+ }
283
+ catch (err) {
284
+ log.warn(`[tower-supervisor] open-loop read failed for product ${product.id.slice(0, 8)}: ${err.message}`);
285
+ counts.unreadable += 1;
286
+ continue;
287
+ }
288
+ for (const open of loops) {
289
+ counts.openLoops += 1;
290
+ tally(counts, await superviseOpen(st, open, product.id));
291
+ }
292
+ }
293
+ return counts;
294
+ }
295
+ /** Build the TowerSupervisor the composition root binds (one per process). */
296
+ export function createTowerSupervisor(deps) {
297
+ const st = { deps, inFlight: new Map(), attempts: new Map() };
298
+ return {
299
+ onLoopDetected: async (notice) => {
300
+ const outcome = await supervise(st, notice.decision, null, null);
301
+ log.info(`[tower-supervisor] "${notice.focusName}" held loop handed to the supervisor: ${outcome}.`);
302
+ },
303
+ sweep: () => sweepHeldLoops(st),
304
+ settled: async () => { await Promise.all([...st.inFlight.values()]); },
305
+ };
306
+ }
307
+ //# sourceMappingURL=tower-supervisor-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-supervisor-session.js","sourceRoot":"","sources":["../../src/tower/tower-supervisor-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * THE TOWER SUPERVISOR: the actor a held review loop is handed to.
3
+ *
4
+ * A review loop that cannot converge (supervision/review-loop-detector.ts) is
5
+ * a judgement call -- is the criterion unbounded, or does the work really fall
6
+ * short? The operator ruled that a Tower supervisor decides it,
7
+ * WITHOUT the operator in the loop, and reports what it decided on the focus
8
+ * (focus_tower_decisions). The review exit holds the loop, records the
9
+ * `loop_detected` decision, and calls `onLoopDetected`
10
+ * (completion/review-cycle-budget/review-loop-detection.ts). The supervisor
11
+ * session bounds the criterion (or, when it cannot, escalates to the
12
+ * operator); the daemon then records the `loop_resolved` that names the loop,
13
+ * which releases the hold (supervision/review-loop-hold.ts). It is called once
14
+ * per criterion per arm: a loop that returns after a bound under the same arm
15
+ * goes to the operator instead (tower/tower-supervisor-session.ts).
16
+ *
17
+ * This module is the contract; the implementation is
18
+ * tower/tower-supervisor-session.ts, bound once at the composition root
19
+ * (composition/review-loop-context.ts) and never defaulted in a consumer.
20
+ *
21
+ * @module tower/tower-supervisor
22
+ */
23
+ import type { TowerDecision } from '../queries/tower-decisions/tower-decisions.js';
24
+ /** What the supervisor is handed when a loop is held. */
25
+ export interface LoopDetectedNotice {
26
+ focusId: string;
27
+ focusName: string;
28
+ /** The `loop_detected` decision recorded on the focus (its id is what a `loop_resolved` names). */
29
+ decision: TowerDecision;
30
+ criterionKey: string;
31
+ criterion: string;
32
+ nodeId: string | null;
33
+ /** The reviews of the loop, oldest first, with the new blocking findings each named. */
34
+ rounds: ReadonlyArray<{
35
+ reviewId: string;
36
+ newBlockingIssueIds: readonly string[];
37
+ }>;
38
+ /** The review-cycle count after this exit, and the budget it is measured against (logged; never handed to the session). */
39
+ reviewCycleCount: number;
40
+ cap: number;
41
+ }
42
+ /** What one supervision step did for one held loop. */
43
+ export type LoopSupervisionOutcome =
44
+ /** A supervisor session was started for it (it runs in the background). */
45
+ 'started'
46
+ /** A session for it is already running in this process. */
47
+ | 'in_flight'
48
+ /** The loop is no longer open (resolved, or from a previous arm). */
49
+ | 'not_open'
50
+ /** The supervisor bounded the criterion; the daemon recorded loop_resolved. */
51
+ | 'resolved'
52
+ /** The supervisor (or the daemon, after its attempts ran out) escalated it to the operator; it stays held. */
53
+ | 'awaiting_operator'
54
+ /** Nothing could run (no daemon config, the focus is not one this daemon runs); retried next sweep. */
55
+ | 'skipped'
56
+ /** A read or write failed; retried next sweep. */
57
+ | 'unreadable';
58
+ /** One sweep over the held loops of the configured products. */
59
+ export interface TowerSupervisorSweepCounts {
60
+ openLoops: number;
61
+ started: number;
62
+ inFlight: number;
63
+ resolved: number;
64
+ awaitingOperator: number;
65
+ skipped: number;
66
+ unreadable: number;
67
+ }
68
+ /** A sweep that found nothing (each sweep starts from a copy). */
69
+ export declare function emptySweepCounts(): TowerSupervisorSweepCounts;
70
+ /** The actor that decides a held review loop. */
71
+ export interface TowerSupervisor {
72
+ /**
73
+ * Called once per newly recorded `loop_detected`. Starts the supervision in
74
+ * the background and returns at once: the review exit is never blocked on a
75
+ * session (the hold covers the wait). Never rejects.
76
+ */
77
+ onLoopDetected(notice: LoopDetectedNotice): Promise<void>;
78
+ /**
79
+ * Settle every held loop of the configured products: start a session for one
80
+ * nobody is deciding (a daemon restart, a failed attempt, no slot free),
81
+ * release one whose criterion was bounded but whose release did not land, and
82
+ * leave one escalated to the operator held. Never rejects.
83
+ */
84
+ sweep(): Promise<TowerSupervisorSweepCounts>;
85
+ }
86
+ //# sourceMappingURL=tower-supervisor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-supervisor.d.ts","sourceRoot":"","sources":["../../src/tower/tower-supervisor.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAEnF,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,wFAAwF;IACxF,MAAM,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACpF,2HAA2H;IAC3H,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,uDAAuD;AACvD,MAAM,MAAM,sBAAsB;AAChC,2EAA2E;AACzE,SAAS;AACX,2DAA2D;GACzD,WAAW;AACb,qEAAqE;GACnE,UAAU;AACZ,+EAA+E;GAC7E,UAAU;AACZ,8GAA8G;GAC5G,mBAAmB;AACrB,uGAAuG;GACrG,SAAS;AACX,kDAAkD;GAChD,YAAY,CAAC;AAEjB,gEAAgE;AAChE,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,IAAI,0BAA0B,CAE7D;AAED,iDAAiD;AACjD,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D;;;;;OAKG;IACH,KAAK,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC9C"}
@@ -0,0 +1,8 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/tower/tower-supervisor.test.ts
3
+ // PINNED-BY-END
4
+ /** A sweep that found nothing (each sweep starts from a copy). */
5
+ export function emptySweepCounts() {
6
+ return { openLoops: 0, started: 0, inFlight: 0, resolved: 0, awaitingOperator: 0, skipped: 0, unreadable: 0 };
7
+ }
8
+ //# sourceMappingURL=tower-supervisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-supervisor.js","sourceRoot":"","sources":["../../src/tower/tower-supervisor.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gEAAgE;AAChE,gBAAgB;AAuEhB,kEAAkE;AAClE,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAChH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 284 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
2
+ // Pinned by: 285 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
3
3
  // PINNED-BY-END
4
4
  /**
5
5
  * Domain-specific type re-exports.
@@ -10,12 +10,18 @@
10
10
  * Routine path: when the daemon crosses into batch-safe idle (the busy->idle
11
11
  * edge) and a newer cached version exists, install it and signal restart.
12
12
  *
13
- * When an update installs, the process exits with code 75 (restart-after-update);
14
- * a wrapper script / systemd RestartForceExitStatus=75 runs the new version.
13
+ * When an update installs, the shell restarts onto the new version under the
14
+ * one contract, restated here verbatim (restart-contract.test.ts checks it
15
+ * against the hand-over the code performs):
16
+ *
17
+ * Restart after a self-update (update/restart-contract.ts):
18
+ * under systemd: exit 75, spawn nothing
19
+ * under telora-daemon-wrapper.sh: exit 75, spawn nothing
20
+ * unsupervised: re-exec a detached replacement, then exit 0
21
+ *
22
+ * A supervisor that receives 75 starts the new version itself.
15
23
  */
16
24
  import { type NpmInstallOptions } from './self-update.js';
17
- /** Exit code that signals "restart after self-update". */
18
- export declare const EXIT_CODE_UPDATE = 75;
19
25
  /**
20
26
  * Default cadence for sampling the idle edge. Short by design -- the 1h clock
21
27
  * is gone; this only bounds how quickly a reached idle seam is noticed. Registry
@@ -118,7 +124,7 @@ export interface AutoUpdateDeps {
118
124
  * produce a registry-call storm.
119
125
  */
120
126
  getCachedCandidateVersion: () => string | null;
121
- /** Called when an update is installed and the process should exit with 75. */
127
+ /** Called when an update is installed; the shell restarts per update/restart-contract.ts. */
122
128
  onUpdateReady: () => void;
123
129
  /** Performs the install (the shell binds {@link performSelfUpdate}). */
124
130
  performUpdate: (packageName: string) => Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../../src/update/auto-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../../src/update/auto-update.ts"],"names":[],"mappings":"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"}
@@ -14,15 +14,21 @@
14
14
  * Routine path: when the daemon crosses into batch-safe idle (the busy->idle
15
15
  * edge) and a newer cached version exists, install it and signal restart.
16
16
  *
17
- * When an update installs, the process exits with code 75 (restart-after-update);
18
- * a wrapper script / systemd RestartForceExitStatus=75 runs the new version.
17
+ * When an update installs, the shell restarts onto the new version under the
18
+ * one contract, restated here verbatim (restart-contract.test.ts checks it
19
+ * against the hand-over the code performs):
20
+ *
21
+ * Restart after a self-update (update/restart-contract.ts):
22
+ * under systemd: exit 75, spawn nothing
23
+ * under telora-daemon-wrapper.sh: exit 75, spawn nothing
24
+ * unsupervised: re-exec a detached replacement, then exit 0
25
+ *
26
+ * A supervisor that receives 75 starts the new version itself.
19
27
  */
20
28
  import { detectInstallMode, installNpmVersion } from './self-update.js';
21
29
  import { isNewerVersion, versionDistance, resolveUpdateChannelUrl, scopedInstallCommand, } from '../config/update-channel.js';
22
30
  import { createLogger } from '../log/daemon-log.js';
23
31
  const log = createLogger({ module: 'auto-update' });
24
- /** Exit code that signals "restart after self-update". */
25
- export const EXIT_CODE_UPDATE = 75;
26
32
  /**
27
33
  * Default cadence for sampling the idle edge. Short by design -- the 1h clock
28
34
  * is gone; this only bounds how quickly a reached idle seam is noticed. Registry
@@ -99,7 +105,7 @@ export function describeUpdateDecision(decision, currentVersion) {
99
105
  level: 'info',
100
106
  steady: false,
101
107
  signature: `applied:${decision.candidate}`,
102
- message: `[auto-update] Update to v${decision.candidate} installed; signaling restart (exit ${EXIT_CODE_UPDATE})`,
108
+ message: `[auto-update] Update to v${decision.candidate} installed; signaling restart`,
103
109
  };
104
110
  case 'failed':
105
111
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/update/auto-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/update/auto-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /** Exit code that signals "restart after self-update" to a supervisor. */
2
+ export declare const EXIT_CODE_UPDATE = 75;
3
+ /**
4
+ * Env var a supervisor uses to declare itself (`systemd` | `wrapper` | `none`).
5
+ * Read raw, not via loadEnvConfig, and leniently: it is a supervisor's
6
+ * self-declaration rather than an operator knob, and an unknown value must fall
7
+ * through to detection instead of failing the restart (loadEnvConfig throws on a
8
+ * bad enum). Allowlisted under "env-reads" in scripts/lint-config.json.
9
+ */
10
+ export declare const SUPERVISOR_ENV = "TELORA_DAEMON_SUPERVISOR";
11
+ /** Who restarts the daemon after an update; `null` = nothing does. */
12
+ export type RestartSupervisor = 'systemd' | 'wrapper';
13
+ /** The restart decision the shell's restart-after-update branch acts on. */
14
+ export type RestartPlan = {
15
+ kind: 'exit-to-supervisor';
16
+ supervisor: RestartSupervisor;
17
+ exitCode: typeof EXIT_CODE_UPDATE;
18
+ source: 'declared' | 'detected';
19
+ } | {
20
+ kind: 're-exec-detached';
21
+ exitCode: 0;
22
+ source: 'declared' | 'detected';
23
+ };
24
+ /** Seams for {@link detectRestartSupervisor}; the shell binds the live process. */
25
+ export interface RestartSupervisorProbe {
26
+ env: NodeJS.ProcessEnv;
27
+ /** The parent process's command name (`/proc/<ppid>/comm`), or null if unreadable. */
28
+ parentCommand: () => string | null;
29
+ }
30
+ /**
31
+ * Decide how the restart-after-update branch hands over to the new version.
32
+ * Pure over its probe, so both branches are unit-testable.
33
+ */
34
+ export declare function planRestartAfterUpdate(probe: RestartSupervisorProbe): RestartPlan;
35
+ /** The supervisor named by {@link planRestartAfterUpdate}, or null when unsupervised. */
36
+ export declare function detectRestartSupervisor(probe: RestartSupervisorProbe): RestartSupervisor | null;
37
+ /** One log line naming the decision, so a restart that did not come back is diagnosable. */
38
+ export declare function describeRestartPlan(plan: RestartPlan): string;
39
+ /** The live probe the shell binds: this process's env and its parent's command name. */
40
+ export declare function liveRestartProbe(): RestartSupervisorProbe;
41
+ /** Effects {@link handOverAfterUpdate} performs; the shell binds the live ones. */
42
+ export interface RestartHandOverDeps {
43
+ /** Spawn the detached replacement daemon (the unsupervised re-exec). */
44
+ reExecDetached: () => void;
45
+ exit: (code: number) => void;
46
+ log: (message: string) => void;
47
+ }
48
+ /**
49
+ * The shell's restart-after-update branch, after teardown: hand over to the
50
+ * supervisor (exit 75, spawn nothing) or, unsupervised, re-exec a detached
51
+ * replacement and exit 0.
52
+ */
53
+ export declare function handOverAfterUpdate(plan: RestartPlan, deps: RestartHandOverDeps): void;
54
+ /** The first line of the contract statement an artifact restates verbatim. */
55
+ export declare const RESTART_STATEMENT_HEADING = "Restart after a self-update (update/restart-contract.ts):";
56
+ /**
57
+ * The contract as one plain statement, DERIVED by running the hand-over for each
58
+ * kind of runner -- so a statement that restates it (the auto-update.ts header)
59
+ * is checked against what the code does, not against a phrase someone wrote.
60
+ */
61
+ export declare function restartContractStatement(): string[];
62
+ //# sourceMappingURL=restart-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart-contract.d.ts","sourceRoot":"","sources":["../../src/update/restart-contract.ts"],"names":[],"mappings":"AAiDA,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,6BAA6B,CAAC;AAEzD,sEAAsE;AACtE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtD,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,OAAO,gBAAgB,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAA;CAAE,GACjI;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAA;CAAE,CAAC;AAE/E,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,sFAAsF;IACtF,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,WAAW,CAYjF;AAED,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB,GAAG,IAAI,CAG/F;AAED,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAK7D;AAWD,wFAAwF;AACxF,wBAAgB,gBAAgB,IAAI,sBAAsB,CAEzD;AAED,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAItF;AAED,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,8DAA8D,CAAC;AAErG;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAmBnD"}