@telora/daemon 0.19.43 → 0.19.74

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 (542) hide show
  1. package/build-info.json +8 -3
  2. package/dist/assembly-engine.d.ts +9 -0
  3. package/dist/assembly-engine.d.ts.map +1 -1
  4. package/dist/assembly-engine.js.map +1 -1
  5. package/dist/audit-hooks.js +1 -1
  6. package/dist/audit-shape.d.ts +103 -0
  7. package/dist/audit-shape.d.ts.map +1 -0
  8. package/dist/audit-shape.js +81 -0
  9. package/dist/audit-shape.js.map +1 -0
  10. package/dist/branch-status.js +2 -2
  11. package/dist/branch-status.js.map +1 -1
  12. package/dist/ci-sensor-loop.d.ts +47 -0
  13. package/dist/ci-sensor-loop.d.ts.map +1 -0
  14. package/dist/ci-sensor-loop.js +116 -0
  15. package/dist/ci-sensor-loop.js.map +1 -0
  16. package/dist/ci-status-git.d.ts +52 -0
  17. package/dist/ci-status-git.d.ts.map +1 -0
  18. package/dist/ci-status-git.js +86 -0
  19. package/dist/ci-status-git.js.map +1 -0
  20. package/dist/ci-status.d.ts +122 -0
  21. package/dist/ci-status.d.ts.map +1 -0
  22. package/dist/ci-status.js +114 -0
  23. package/dist/ci-status.js.map +1 -0
  24. package/dist/cli/connect/agents.d.ts +24 -0
  25. package/dist/cli/connect/agents.d.ts.map +1 -0
  26. package/dist/cli/connect/agents.js +65 -0
  27. package/dist/cli/connect/agents.js.map +1 -0
  28. package/dist/cli/connect/claude.d.ts +31 -0
  29. package/dist/cli/connect/claude.d.ts.map +1 -0
  30. package/dist/cli/connect/claude.js +104 -0
  31. package/dist/cli/connect/claude.js.map +1 -0
  32. package/dist/cli/connect/cline.d.ts +37 -0
  33. package/dist/cli/connect/cline.d.ts.map +1 -0
  34. package/dist/cli/connect/cline.js +115 -0
  35. package/dist/cli/connect/cline.js.map +1 -0
  36. package/dist/cli/connect/codex.d.ts +44 -0
  37. package/dist/cli/connect/codex.d.ts.map +1 -0
  38. package/dist/cli/connect/codex.js +111 -0
  39. package/dist/cli/connect/codex.js.map +1 -0
  40. package/dist/cli/connect/ide.d.ts +69 -0
  41. package/dist/cli/connect/ide.d.ts.map +1 -0
  42. package/dist/cli/connect/ide.js +134 -0
  43. package/dist/cli/connect/ide.js.map +1 -0
  44. package/dist/cli/connect/scaffolding.d.ts +31 -0
  45. package/dist/cli/connect/scaffolding.d.ts.map +1 -0
  46. package/dist/cli/connect/scaffolding.js +52 -0
  47. package/dist/cli/connect/scaffolding.js.map +1 -0
  48. package/dist/cli/connect/shared.d.ts +30 -0
  49. package/dist/cli/connect/shared.d.ts.map +1 -0
  50. package/dist/cli/connect/shared.js +11 -0
  51. package/dist/cli/connect/shared.js.map +1 -0
  52. package/dist/cli/connect.d.ts +9 -210
  53. package/dist/cli/connect.d.ts.map +1 -1
  54. package/dist/cli/connect.js +10 -526
  55. package/dist/cli/connect.js.map +1 -1
  56. package/dist/cli/open.js +2 -2
  57. package/dist/completion/event.d.ts +3 -0
  58. package/dist/completion/event.d.ts.map +1 -1
  59. package/dist/completion/event.js +44 -9
  60. package/dist/completion/event.js.map +1 -1
  61. package/dist/completion/merge-phase.d.ts +3 -0
  62. package/dist/completion/merge-phase.d.ts.map +1 -1
  63. package/dist/completion/merge-phase.js +35 -3
  64. package/dist/completion/merge-phase.js.map +1 -1
  65. package/dist/completion/read-only-pristine.d.ts +1 -1
  66. package/dist/completion/read-only-pristine.d.ts.map +1 -1
  67. package/dist/completion/read-only-pristine.js +1 -1
  68. package/dist/completion/read-only-pristine.js.map +1 -1
  69. package/dist/completion/review-exit-phase.d.ts +30 -3
  70. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  71. package/dist/completion/review-exit-phase.js +203 -15
  72. package/dist/completion/review-exit-phase.js.map +1 -1
  73. package/dist/completion/status-advance-phase.js +1 -1
  74. package/dist/completion/status-advance-phase.js.map +1 -1
  75. package/dist/completion/team-completion.d.ts.map +1 -1
  76. package/dist/completion/team-completion.js +22 -2
  77. package/dist/completion/team-completion.js.map +1 -1
  78. package/dist/completion/team-lifecycle.js +1 -1
  79. package/dist/completion/terminated-work-reconcile.js +1 -1
  80. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  81. package/dist/condition-evaluators.d.ts +41 -2
  82. package/dist/condition-evaluators.d.ts.map +1 -1
  83. package/dist/condition-evaluators.js +37 -288
  84. package/dist/condition-evaluators.js.map +1 -1
  85. package/dist/context-audit.d.ts +1 -1
  86. package/dist/context-audit.d.ts.map +1 -1
  87. package/dist/context-lock.d.ts +1 -1
  88. package/dist/context-lock.d.ts.map +1 -1
  89. package/dist/control-state.d.ts +2 -2
  90. package/dist/control-state.d.ts.map +1 -1
  91. package/dist/control-state.js +4 -3
  92. package/dist/control-state.js.map +1 -1
  93. package/dist/daemon-process.d.ts +1 -1
  94. package/dist/daemon-process.d.ts.map +1 -1
  95. package/dist/delivery-advance-block.d.ts +1 -1
  96. package/dist/delivery-advance-block.d.ts.map +1 -1
  97. package/dist/delivery-advance-block.js +1 -1
  98. package/dist/delivery-advance-block.js.map +1 -1
  99. package/dist/delivery-lifecycle.js +1 -1
  100. package/dist/delivery-reconciler-shadow.d.ts +1 -1
  101. package/dist/delivery-reconciler-shadow.d.ts.map +1 -1
  102. package/dist/delivery-reconciler-shadow.js +1 -1
  103. package/dist/delivery-reconciler-shadow.js.map +1 -1
  104. package/dist/delivery-reconciler.d.ts +1 -0
  105. package/dist/delivery-reconciler.d.ts.map +1 -1
  106. package/dist/delivery-reconciler.js +6 -0
  107. package/dist/delivery-reconciler.js.map +1 -1
  108. package/dist/directive-executor.js +1 -1
  109. package/dist/directive-executor.js.map +1 -1
  110. package/dist/drift-eval-loop.d.ts.map +1 -1
  111. package/dist/drift-eval-loop.js +6 -14
  112. package/dist/drift-eval-loop.js.map +1 -1
  113. package/dist/escalations.d.ts +1 -1
  114. package/dist/escalations.d.ts.map +1 -1
  115. package/dist/escalations.js +1 -1
  116. package/dist/escalations.js.map +1 -1
  117. package/dist/evaluation-context.d.ts +2 -33
  118. package/dist/evaluation-context.d.ts.map +1 -1
  119. package/dist/evaluation-context.js +2 -56
  120. package/dist/evaluation-context.js.map +1 -1
  121. package/dist/focus-engine.d.ts +14 -5
  122. package/dist/focus-engine.d.ts.map +1 -1
  123. package/dist/focus-engine.js +35 -289
  124. package/dist/focus-engine.js.map +1 -1
  125. package/dist/focus-executor.d.ts +10 -791
  126. package/dist/focus-executor.d.ts.map +1 -1
  127. package/dist/focus-executor.js +42 -1566
  128. package/dist/focus-executor.js.map +1 -1
  129. package/dist/focus-lifecycle.js +2 -2
  130. package/dist/focus-lifecycle.js.map +1 -1
  131. package/dist/focus-loop-registry.d.ts +52 -0
  132. package/dist/focus-loop-registry.d.ts.map +1 -0
  133. package/dist/focus-loop-registry.js +328 -0
  134. package/dist/focus-loop-registry.js.map +1 -0
  135. package/dist/focus-merge.d.ts +1 -1
  136. package/dist/focus-merge.d.ts.map +1 -1
  137. package/dist/focus-merge.js +3 -3
  138. package/dist/focus-merge.js.map +1 -1
  139. package/dist/focus-phase.d.ts +4 -0
  140. package/dist/focus-phase.d.ts.map +1 -1
  141. package/dist/focus-phase.js +3 -3
  142. package/dist/focus-phase.js.map +1 -1
  143. package/dist/focus-stage-lifecycle/planning-release.d.ts +197 -0
  144. package/dist/focus-stage-lifecycle/planning-release.d.ts.map +1 -0
  145. package/dist/focus-stage-lifecycle/planning-release.js +312 -0
  146. package/dist/focus-stage-lifecycle/planning-release.js.map +1 -0
  147. package/dist/focus-stage-lifecycle/review-convergence.d.ts +133 -0
  148. package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +1 -0
  149. package/dist/focus-stage-lifecycle/review-convergence.js +235 -0
  150. package/dist/focus-stage-lifecycle/review-convergence.js.map +1 -0
  151. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +133 -0
  152. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -0
  153. package/dist/focus-stage-lifecycle/wedge-watchdog.js +365 -0
  154. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -0
  155. package/dist/focus-stage-lifecycle.d.ts +22 -403
  156. package/dist/focus-stage-lifecycle.d.ts.map +1 -1
  157. package/dist/focus-stage-lifecycle.js +26 -798
  158. package/dist/focus-stage-lifecycle.js.map +1 -1
  159. package/dist/{git-activity.d.ts → git/activity.d.ts} +1 -1
  160. package/dist/git/activity.d.ts.map +1 -0
  161. package/dist/{git-activity.js → git/activity.js} +2 -2
  162. package/dist/git/activity.js.map +1 -0
  163. package/dist/{git-branch.d.ts → git/branch.d.ts} +2 -2
  164. package/dist/git/branch.d.ts.map +1 -0
  165. package/dist/{git-branch.js → git/branch.js} +2 -2
  166. package/dist/git/branch.js.map +1 -0
  167. package/dist/{git-fetch.d.ts → git/fetch.d.ts} +2 -2
  168. package/dist/git/fetch.d.ts.map +1 -0
  169. package/dist/{git-fetch.js → git/fetch.js} +1 -1
  170. package/dist/git/fetch.js.map +1 -0
  171. package/dist/{git-genesis.d.ts → git/genesis.d.ts} +3 -3
  172. package/dist/git/genesis.d.ts.map +1 -0
  173. package/dist/{git-genesis.js → git/genesis.js} +5 -5
  174. package/dist/git/genesis.js.map +1 -0
  175. package/dist/git/index.d.ts +36 -0
  176. package/dist/git/index.d.ts.map +1 -0
  177. package/dist/git/index.js +36 -0
  178. package/dist/git/index.js.map +1 -0
  179. package/dist/{git-integration.d.ts → git/integration.d.ts} +2 -2
  180. package/dist/git/integration.d.ts.map +1 -0
  181. package/dist/{git-integration.js → git/integration.js} +4 -4
  182. package/dist/git/integration.js.map +1 -0
  183. package/dist/{git-merge-helpers.d.ts → git/merge-helpers.d.ts} +3 -3
  184. package/dist/git/merge-helpers.d.ts.map +1 -0
  185. package/dist/{git-merge-helpers.js → git/merge-helpers.js} +3 -3
  186. package/dist/git/merge-helpers.js.map +1 -0
  187. package/dist/{git-merge-lock.d.ts → git/merge-lock.d.ts} +1 -1
  188. package/dist/git/merge-lock.d.ts.map +1 -0
  189. package/dist/{git-merge-lock.js → git/merge-lock.js} +1 -1
  190. package/dist/git/merge-lock.js.map +1 -0
  191. package/dist/{git-merge-strategies.d.ts → git/merge-strategies.d.ts} +2 -2
  192. package/dist/git/merge-strategies.d.ts.map +1 -0
  193. package/dist/{git-merge-strategies.js → git/merge-strategies.js} +3 -3
  194. package/dist/git/merge-strategies.js.map +1 -0
  195. package/dist/{git-merge.d.ts → git/merge.d.ts} +4 -4
  196. package/dist/git/merge.d.ts.map +1 -0
  197. package/dist/{git-merge.js → git/merge.js} +4 -4
  198. package/dist/git/merge.js.map +1 -0
  199. package/dist/{git-state-detector.d.ts → git/state-detector.d.ts} +2 -2
  200. package/dist/git/state-detector.d.ts.map +1 -0
  201. package/dist/{git-state-detector.js → git/state-detector.js} +7 -7
  202. package/dist/git/state-detector.js.map +1 -0
  203. package/dist/{git-types.d.ts → git/types.d.ts} +2 -2
  204. package/dist/git/types.d.ts.map +1 -0
  205. package/dist/{git-types.js → git/types.js} +1 -1
  206. package/dist/git/types.js.map +1 -0
  207. package/dist/{git-utils.d.ts → git/utils.d.ts} +1 -1
  208. package/dist/git/utils.d.ts.map +1 -0
  209. package/dist/{git-utils.js → git/utils.js} +2 -2
  210. package/dist/git/utils.js.map +1 -0
  211. package/dist/git.d.ts +5 -5
  212. package/dist/git.d.ts.map +1 -1
  213. package/dist/git.js +10 -10
  214. package/dist/git.js.map +1 -1
  215. package/dist/guard-engine.d.ts +3 -2
  216. package/dist/guard-engine.d.ts.map +1 -1
  217. package/dist/guard-engine.js +2 -2
  218. package/dist/guard-engine.js.map +1 -1
  219. package/dist/install-probe-tick.d.ts +63 -0
  220. package/dist/install-probe-tick.d.ts.map +1 -0
  221. package/dist/install-probe-tick.js +137 -0
  222. package/dist/install-probe-tick.js.map +1 -0
  223. package/dist/install-probe.d.ts +115 -0
  224. package/dist/install-probe.d.ts.map +1 -0
  225. package/dist/install-probe.js +197 -0
  226. package/dist/install-probe.js.map +1 -0
  227. package/dist/listener-auto-advance.d.ts.map +1 -1
  228. package/dist/listener-auto-advance.js +51 -9
  229. package/dist/listener-auto-advance.js.map +1 -1
  230. package/dist/listener.d.ts.map +1 -1
  231. package/dist/listener.js +15 -7
  232. package/dist/listener.js.map +1 -1
  233. package/dist/{loop-context-audit-pass.d.ts → loops/context-audit-pass.d.ts} +4 -4
  234. package/dist/loops/context-audit-pass.d.ts.map +1 -0
  235. package/dist/{loop-context-audit-pass.js → loops/context-audit-pass.js} +7 -7
  236. package/dist/loops/context-audit-pass.js.map +1 -0
  237. package/dist/{loop-engine-types.d.ts → loops/engine-types.d.ts} +1 -1
  238. package/dist/loops/engine-types.d.ts.map +1 -0
  239. package/dist/{loop-engine-types.js → loops/engine-types.js} +1 -1
  240. package/dist/loops/engine-types.js.map +1 -0
  241. package/dist/{loop-engine.d.ts → loops/engine.d.ts} +6 -6
  242. package/dist/loops/engine.d.ts.map +1 -0
  243. package/dist/{loop-engine.js → loops/engine.js} +13 -13
  244. package/dist/loops/engine.js.map +1 -0
  245. package/dist/{loop-event-bus.d.ts → loops/event-bus.d.ts} +1 -1
  246. package/dist/loops/event-bus.d.ts.map +1 -0
  247. package/dist/{loop-event-bus.js → loops/event-bus.js} +1 -1
  248. package/dist/loops/event-bus.js.map +1 -0
  249. package/dist/loops/index.d.ts +33 -0
  250. package/dist/loops/index.d.ts.map +1 -0
  251. package/dist/loops/index.js +32 -0
  252. package/dist/loops/index.js.map +1 -0
  253. package/dist/{loop-llm-client.d.ts → loops/llm-client.d.ts} +3 -3
  254. package/dist/loops/llm-client.d.ts.map +1 -0
  255. package/dist/{loop-llm-client.js → loops/llm-client.js} +3 -3
  256. package/dist/loops/llm-client.js.map +1 -0
  257. package/dist/{loop-llm-flag.d.ts → loops/llm-flag.d.ts} +1 -1
  258. package/dist/loops/llm-flag.d.ts.map +1 -0
  259. package/dist/{loop-llm-flag.js → loops/llm-flag.js} +1 -1
  260. package/dist/loops/llm-flag.js.map +1 -0
  261. package/dist/{loop-operational-block.d.ts → loops/operational-block.d.ts} +1 -1
  262. package/dist/loops/operational-block.d.ts.map +1 -0
  263. package/dist/{loop-operational-block.js → loops/operational-block.js} +1 -1
  264. package/dist/loops/operational-block.js.map +1 -0
  265. package/dist/{loop-prompt-builder.d.ts → loops/prompt-builder.d.ts} +2 -2
  266. package/dist/loops/prompt-builder.d.ts.map +1 -0
  267. package/dist/{loop-prompt-builder.js → loops/prompt-builder.js} +1 -1
  268. package/dist/loops/prompt-builder.js.map +1 -0
  269. package/dist/{loop-variance.d.ts → loops/variance.d.ts} +1 -1
  270. package/dist/loops/variance.d.ts.map +1 -0
  271. package/dist/{loop-variance.js → loops/variance.js} +1 -1
  272. package/dist/loops/variance.js.map +1 -0
  273. package/dist/merge-back-loop.d.ts.map +1 -1
  274. package/dist/merge-back-loop.js +4 -3
  275. package/dist/merge-back-loop.js.map +1 -1
  276. package/dist/merge-detector.js +2 -2
  277. package/dist/merge-detector.js.map +1 -1
  278. package/dist/{nexus-endpoint-clearance.d.ts → nexus/endpoint-clearance.d.ts} +2 -2
  279. package/dist/nexus/endpoint-clearance.d.ts.map +1 -0
  280. package/dist/{nexus-endpoint-clearance.js → nexus/endpoint-clearance.js} +2 -2
  281. package/dist/nexus/endpoint-clearance.js.map +1 -0
  282. package/dist/{nexus-escalation-bridge.d.ts → nexus/escalation-bridge.d.ts} +1 -1
  283. package/dist/nexus/escalation-bridge.d.ts.map +1 -0
  284. package/dist/{nexus-escalation-bridge.js → nexus/escalation-bridge.js} +2 -2
  285. package/dist/nexus/escalation-bridge.js.map +1 -0
  286. package/dist/{nexus-incoming.d.ts → nexus/incoming.d.ts} +2 -2
  287. package/dist/nexus/incoming.d.ts.map +1 -0
  288. package/dist/{nexus-incoming.js → nexus/incoming.js} +2 -2
  289. package/dist/nexus/incoming.js.map +1 -0
  290. package/dist/nexus/index.d.ts +20 -0
  291. package/dist/nexus/index.d.ts.map +1 -0
  292. package/dist/nexus/index.js +20 -0
  293. package/dist/nexus/index.js.map +1 -0
  294. package/dist/{nexus-intake-spawn.d.ts → nexus/intake-spawn.d.ts} +3 -3
  295. package/dist/nexus/intake-spawn.d.ts.map +1 -0
  296. package/dist/{nexus-intake-spawn.js → nexus/intake-spawn.js} +1 -1
  297. package/dist/nexus/intake-spawn.js.map +1 -0
  298. package/dist/{nexus-intake.d.ts → nexus/intake.d.ts} +2 -2
  299. package/dist/nexus/intake.d.ts.map +1 -0
  300. package/dist/{nexus-intake.js → nexus/intake.js} +4 -4
  301. package/dist/nexus/intake.js.map +1 -0
  302. package/dist/{nexus-return.d.ts → nexus/return.d.ts} +3 -3
  303. package/dist/nexus/return.d.ts.map +1 -0
  304. package/dist/{nexus-return.js → nexus/return.js} +4 -4
  305. package/dist/nexus/return.js.map +1 -0
  306. package/dist/otlp/index.d.ts +19 -0
  307. package/dist/otlp/index.d.ts.map +1 -0
  308. package/dist/otlp/index.js +19 -0
  309. package/dist/otlp/index.js.map +1 -0
  310. package/dist/{otlp-log-parser.d.ts → otlp/log-parser.d.ts} +2 -2
  311. package/dist/otlp/log-parser.d.ts.map +1 -0
  312. package/dist/{otlp-log-parser.js → otlp/log-parser.js} +5 -6
  313. package/dist/otlp/log-parser.js.map +1 -0
  314. package/dist/{otlp-metric-parser.d.ts → otlp/metric-parser.d.ts} +2 -2
  315. package/dist/otlp/metric-parser.d.ts.map +1 -0
  316. package/dist/{otlp-metric-parser.js → otlp/metric-parser.js} +4 -5
  317. package/dist/otlp/metric-parser.js.map +1 -0
  318. package/dist/{otlp-port-manager.d.ts → otlp/port-manager.d.ts} +1 -1
  319. package/dist/otlp/port-manager.d.ts.map +1 -0
  320. package/dist/{otlp-port-manager.js → otlp/port-manager.js} +1 -1
  321. package/dist/otlp/port-manager.js.map +1 -0
  322. package/dist/{otlp-receiver.d.ts → otlp/receiver.d.ts} +2 -2
  323. package/dist/otlp/receiver.d.ts.map +1 -0
  324. package/dist/{otlp-receiver.js → otlp/receiver.js} +5 -33
  325. package/dist/otlp/receiver.js.map +1 -0
  326. package/dist/{otlp-types.d.ts → otlp/types.d.ts} +1 -9
  327. package/dist/otlp/types.d.ts.map +1 -0
  328. package/dist/{otlp-types.js → otlp/types.js} +1 -27
  329. package/dist/otlp/types.js.map +1 -0
  330. package/dist/pipeline-config.d.ts +1 -1
  331. package/dist/{prd-controller.d.ts → prd/controller.d.ts} +7 -7
  332. package/dist/prd/controller.d.ts.map +1 -0
  333. package/dist/{prd-controller.js → prd/controller.js} +11 -11
  334. package/dist/prd/controller.js.map +1 -0
  335. package/dist/{prd-divergence.d.ts → prd/divergence.d.ts} +2 -2
  336. package/dist/prd/divergence.d.ts.map +1 -0
  337. package/dist/{prd-divergence.js → prd/divergence.js} +1 -1
  338. package/dist/prd/divergence.js.map +1 -0
  339. package/dist/{prd-focus-pushdown.d.ts → prd/focus-pushdown.d.ts} +2 -2
  340. package/dist/prd/focus-pushdown.d.ts.map +1 -0
  341. package/dist/{prd-focus-pushdown.js → prd/focus-pushdown.js} +3 -3
  342. package/dist/prd/focus-pushdown.js.map +1 -0
  343. package/dist/{prd-frontier.d.ts → prd/frontier.d.ts} +2 -2
  344. package/dist/prd/frontier.d.ts.map +1 -0
  345. package/dist/{prd-frontier.js → prd/frontier.js} +1 -1
  346. package/dist/prd/frontier.js.map +1 -0
  347. package/dist/prd/index.d.ts +26 -0
  348. package/dist/prd/index.d.ts.map +1 -0
  349. package/dist/prd/index.js +25 -0
  350. package/dist/prd/index.js.map +1 -0
  351. package/dist/{prd-steward.d.ts → prd/steward.d.ts} +4 -4
  352. package/dist/prd/steward.d.ts.map +1 -0
  353. package/dist/{prd-steward.js → prd/steward.js} +4 -4
  354. package/dist/prd/steward.js.map +1 -0
  355. package/dist/{prd-viability.d.ts → prd/viability.d.ts} +2 -2
  356. package/dist/prd/viability.d.ts.map +1 -0
  357. package/dist/{prd-viability.js → prd/viability.js} +1 -1
  358. package/dist/prd/viability.js.map +1 -0
  359. package/dist/product-scaffold.js +2 -2
  360. package/dist/product-scaffold.js.map +1 -1
  361. package/dist/prompt-sections/persona-sections.d.ts +32 -0
  362. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  363. package/dist/prompt-sections/persona-sections.js +78 -2
  364. package/dist/prompt-sections/persona-sections.js.map +1 -1
  365. package/dist/queries/context-lock-queries.js +1 -1
  366. package/dist/queries/context-lock-queries.js.map +1 -1
  367. package/dist/queries/deliveries.d.ts +31 -0
  368. package/dist/queries/deliveries.d.ts.map +1 -1
  369. package/dist/queries/deliveries.js +5 -0
  370. package/dist/queries/deliveries.js.map +1 -1
  371. package/dist/queries/focuses.d.ts +17 -0
  372. package/dist/queries/focuses.d.ts.map +1 -1
  373. package/dist/queries/focuses.js +27 -0
  374. package/dist/queries/focuses.js.map +1 -1
  375. package/dist/queries/schemas.d.ts +8 -0
  376. package/dist/queries/schemas.d.ts.map +1 -1
  377. package/dist/queries/schemas.js +16 -0
  378. package/dist/queries/schemas.js.map +1 -1
  379. package/dist/reality-pole.js +1 -1
  380. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  381. package/dist/resolvers/git-diff-against-base.js +4 -1
  382. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  383. package/dist/resolvers/prd-context.js +1 -1
  384. package/dist/sensor-sweep.js +1 -1
  385. package/dist/spawn/model-routing.d.ts +277 -0
  386. package/dist/spawn/model-routing.d.ts.map +1 -0
  387. package/dist/spawn/model-routing.js +464 -0
  388. package/dist/spawn/model-routing.js.map +1 -0
  389. package/dist/spawn/process-spawn.d.ts +128 -0
  390. package/dist/spawn/process-spawn.d.ts.map +1 -0
  391. package/dist/spawn/process-spawn.js +378 -0
  392. package/dist/spawn/process-spawn.js.map +1 -0
  393. package/dist/spawn/prompt-assembly.d.ts +143 -0
  394. package/dist/spawn/prompt-assembly.d.ts.map +1 -0
  395. package/dist/spawn/prompt-assembly.js +263 -0
  396. package/dist/spawn/prompt-assembly.js.map +1 -0
  397. package/dist/spawn/shared.d.ts +72 -0
  398. package/dist/spawn/shared.d.ts.map +1 -0
  399. package/dist/spawn/shared.js +14 -0
  400. package/dist/spawn/shared.js.map +1 -0
  401. package/dist/spawn/spawn-decision.d.ts +189 -0
  402. package/dist/spawn/spawn-decision.d.ts.map +1 -0
  403. package/dist/spawn/spawn-decision.js +361 -0
  404. package/dist/spawn/spawn-decision.js.map +1 -0
  405. package/dist/spawn/worktree-session.d.ts +105 -0
  406. package/dist/spawn/worktree-session.d.ts.map +1 -0
  407. package/dist/spawn/worktree-session.js +216 -0
  408. package/dist/spawn/worktree-session.js.map +1 -0
  409. package/dist/spawner/lifecycle.js +2 -2
  410. package/dist/spawner/lifecycle.js.map +1 -1
  411. package/dist/spawner/resolution.js +1 -1
  412. package/dist/stall-detector-config.d.ts +4 -0
  413. package/dist/stall-detector-config.d.ts.map +1 -1
  414. package/dist/stall-detector-config.js +6 -0
  415. package/dist/stall-detector-config.js.map +1 -1
  416. package/dist/state-cascade.js +1 -1
  417. package/dist/state-cascade.js.map +1 -1
  418. package/dist/team-prompt-base.d.ts +1 -1
  419. package/dist/team-prompt-base.d.ts.map +1 -1
  420. package/dist/team-prompt-base.js +1 -1
  421. package/dist/team-prompt-base.js.map +1 -1
  422. package/dist/trigger-executor.d.ts +5 -9
  423. package/dist/trigger-executor.d.ts.map +1 -1
  424. package/dist/trigger-executor.js +14 -36
  425. package/dist/trigger-executor.js.map +1 -1
  426. package/dist/types/focus.d.ts +13 -0
  427. package/dist/types/focus.d.ts.map +1 -1
  428. package/dist/types/workflow.d.ts +1 -3
  429. package/dist/types/workflow.d.ts.map +1 -1
  430. package/dist/unified-engine-lifecycle.js +1 -1
  431. package/dist/unified-init.d.ts +3 -3
  432. package/dist/unified-init.d.ts.map +1 -1
  433. package/dist/unified-init.js +9 -25
  434. package/dist/unified-init.js.map +1 -1
  435. package/dist/unified-shell.d.ts +3 -3
  436. package/dist/unified-shell.js +4 -4
  437. package/dist/unified-shell.js.map +1 -1
  438. package/dist/verification-engine.d.ts.map +1 -1
  439. package/dist/verification-engine.js +15 -0
  440. package/dist/verification-engine.js.map +1 -1
  441. package/dist/{worktree-focus.d.ts → worktree/focus.d.ts} +2 -2
  442. package/dist/worktree/focus.d.ts.map +1 -0
  443. package/dist/{worktree-focus.js → worktree/focus.js} +7 -7
  444. package/dist/worktree/focus.js.map +1 -0
  445. package/dist/worktree/index.d.ts +16 -0
  446. package/dist/worktree/index.d.ts.map +1 -0
  447. package/dist/worktree/index.js +16 -0
  448. package/dist/worktree/index.js.map +1 -0
  449. package/dist/{worktree-safety.d.ts → worktree/safety.d.ts} +1 -1
  450. package/dist/worktree/safety.d.ts.map +1 -0
  451. package/dist/{worktree-safety.js → worktree/safety.js} +2 -2
  452. package/dist/worktree/safety.js.map +1 -0
  453. package/dist/{worktree-state.d.ts → worktree/state.d.ts} +1 -1
  454. package/dist/worktree/state.d.ts.map +1 -0
  455. package/dist/{worktree-state.js → worktree/state.js} +6 -6
  456. package/dist/worktree/state.js.map +1 -0
  457. package/dist/worktree.d.ts +1 -1
  458. package/dist/worktree.js +5 -5
  459. package/dist/worktree.js.map +1 -1
  460. package/package.json +5 -4
  461. package/dist/git-activity.d.ts.map +0 -1
  462. package/dist/git-activity.js.map +0 -1
  463. package/dist/git-branch.d.ts.map +0 -1
  464. package/dist/git-branch.js.map +0 -1
  465. package/dist/git-fetch.d.ts.map +0 -1
  466. package/dist/git-fetch.js.map +0 -1
  467. package/dist/git-genesis.d.ts.map +0 -1
  468. package/dist/git-genesis.js.map +0 -1
  469. package/dist/git-integration.d.ts.map +0 -1
  470. package/dist/git-integration.js.map +0 -1
  471. package/dist/git-merge-helpers.d.ts.map +0 -1
  472. package/dist/git-merge-helpers.js.map +0 -1
  473. package/dist/git-merge-lock.d.ts.map +0 -1
  474. package/dist/git-merge-lock.js.map +0 -1
  475. package/dist/git-merge-strategies.d.ts.map +0 -1
  476. package/dist/git-merge-strategies.js.map +0 -1
  477. package/dist/git-merge.d.ts.map +0 -1
  478. package/dist/git-merge.js.map +0 -1
  479. package/dist/git-state-detector.d.ts.map +0 -1
  480. package/dist/git-state-detector.js.map +0 -1
  481. package/dist/git-types.d.ts.map +0 -1
  482. package/dist/git-types.js.map +0 -1
  483. package/dist/git-utils.d.ts.map +0 -1
  484. package/dist/git-utils.js.map +0 -1
  485. package/dist/loop-context-audit-pass.d.ts.map +0 -1
  486. package/dist/loop-context-audit-pass.js.map +0 -1
  487. package/dist/loop-engine-types.d.ts.map +0 -1
  488. package/dist/loop-engine-types.js.map +0 -1
  489. package/dist/loop-engine.d.ts.map +0 -1
  490. package/dist/loop-engine.js.map +0 -1
  491. package/dist/loop-event-bus.d.ts.map +0 -1
  492. package/dist/loop-event-bus.js.map +0 -1
  493. package/dist/loop-llm-client.d.ts.map +0 -1
  494. package/dist/loop-llm-client.js.map +0 -1
  495. package/dist/loop-llm-flag.d.ts.map +0 -1
  496. package/dist/loop-llm-flag.js.map +0 -1
  497. package/dist/loop-operational-block.d.ts.map +0 -1
  498. package/dist/loop-operational-block.js.map +0 -1
  499. package/dist/loop-prompt-builder.d.ts.map +0 -1
  500. package/dist/loop-prompt-builder.js.map +0 -1
  501. package/dist/loop-variance.d.ts.map +0 -1
  502. package/dist/loop-variance.js.map +0 -1
  503. package/dist/nexus-endpoint-clearance.d.ts.map +0 -1
  504. package/dist/nexus-endpoint-clearance.js.map +0 -1
  505. package/dist/nexus-escalation-bridge.d.ts.map +0 -1
  506. package/dist/nexus-escalation-bridge.js.map +0 -1
  507. package/dist/nexus-incoming.d.ts.map +0 -1
  508. package/dist/nexus-incoming.js.map +0 -1
  509. package/dist/nexus-intake-spawn.d.ts.map +0 -1
  510. package/dist/nexus-intake-spawn.js.map +0 -1
  511. package/dist/nexus-intake.d.ts.map +0 -1
  512. package/dist/nexus-intake.js.map +0 -1
  513. package/dist/nexus-return.d.ts.map +0 -1
  514. package/dist/nexus-return.js.map +0 -1
  515. package/dist/otlp-log-parser.d.ts.map +0 -1
  516. package/dist/otlp-log-parser.js.map +0 -1
  517. package/dist/otlp-metric-parser.d.ts.map +0 -1
  518. package/dist/otlp-metric-parser.js.map +0 -1
  519. package/dist/otlp-port-manager.d.ts.map +0 -1
  520. package/dist/otlp-port-manager.js.map +0 -1
  521. package/dist/otlp-receiver.d.ts.map +0 -1
  522. package/dist/otlp-receiver.js.map +0 -1
  523. package/dist/otlp-types.d.ts.map +0 -1
  524. package/dist/otlp-types.js.map +0 -1
  525. package/dist/prd-controller.d.ts.map +0 -1
  526. package/dist/prd-controller.js.map +0 -1
  527. package/dist/prd-divergence.d.ts.map +0 -1
  528. package/dist/prd-divergence.js.map +0 -1
  529. package/dist/prd-focus-pushdown.d.ts.map +0 -1
  530. package/dist/prd-focus-pushdown.js.map +0 -1
  531. package/dist/prd-frontier.d.ts.map +0 -1
  532. package/dist/prd-frontier.js.map +0 -1
  533. package/dist/prd-steward.d.ts.map +0 -1
  534. package/dist/prd-steward.js.map +0 -1
  535. package/dist/prd-viability.d.ts.map +0 -1
  536. package/dist/prd-viability.js.map +0 -1
  537. package/dist/worktree-focus.d.ts.map +0 -1
  538. package/dist/worktree-focus.js.map +0 -1
  539. package/dist/worktree-safety.d.ts.map +0 -1
  540. package/dist/worktree-safety.js.map +0 -1
  541. package/dist/worktree-state.d.ts.map +0 -1
  542. package/dist/worktree-state.js.map +0 -1
package/build-info.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "commitSha": "388d1a80c",
3
- "builtAt": "2026-07-04T01:23:08.132Z",
2
+ "commitSha": "e47879d1b",
3
+ "builtAt": "2026-07-05T20:47:13.669Z",
4
4
  "expectedMigrations": [
5
5
  "20250829113330_create_org_nodes_table.sql",
6
6
  "20250829113402_fix_function_security_search_path.sql",
@@ -705,6 +705,11 @@
705
705
  "20260702183805_station_distillation_directives.sql",
706
706
  "20260703154029_code_metrics_intent_aligned_churn.sql",
707
707
  "20260703165250_retarget_execution_observation_deposit_to_building.sql",
708
- "20260703170927_agentless_stage_explicit_and_fail_loud_append.sql"
708
+ "20260703170927_agentless_stage_explicit_and_fail_loud_append.sql",
709
+ "20260704001953_add_focus_audit_origin.sql",
710
+ "20260704023738_pin_testing_standard_into_coding_directive.sql",
711
+ "20260705131710_neutralize_retired_guard_types.sql",
712
+ "20260705162613_add_reviewed_through_sha.sql",
713
+ "20260705165637_add_review_cycle_count.sql"
709
714
  ]
710
715
  }
@@ -23,6 +23,15 @@ export interface AssemblyContext {
23
23
  * param (e.g. prd.context(prdId=...)) overrides it when present.
24
24
  */
25
25
  prdId?: string;
26
+ /**
27
+ * Override for the git.diff_against_base base ref. When set, the diff is
28
+ * computed against this ref instead of the integration branch. The review
29
+ * resume path sets it to the focus's review coverage watermark
30
+ * (reviewed_through_sha) so a resumed reviewer sees only the incremental
31
+ * delta since the last completed coverage (watermark..tip) rather than the
32
+ * full branch diff. Absent for every other caller -> integration base.
33
+ */
34
+ diffBaseOverride?: string;
26
35
  }
27
36
  /** A resolver function that hydrates a source reference into markdown. */
28
37
  export type SourceResolver = (context: AssemblyContext, params: Record<string, string>) => Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"assembly-engine.d.ts","sourceRoot":"","sources":["../src/assembly-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAKD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEzF;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAelG;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA0D3B"}
1
+ {"version":3,"file":"assembly-engine.d.ts","sourceRoot":"","sources":["../src/assembly-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAKD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEzF;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAelG;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA0D3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"assembly-engine.js","sourceRoot":"","sources":["../src/assembly-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assembly-engine.js","sourceRoot":"","sources":["../src/assembly-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,+BAA+B;AAC/B,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0B,CAAC;AAE3D,0DAA0D;AAC1D,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,QAAwB;IACjF,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,OAAO,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,GAAG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAgB,EAChB,OAAwB;IAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iCAAiC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,MAAgB,EAChB,OAAwB;IAExB,kEAAkE;IAClE,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,kEAAkE;IAClE,uDAAuD;IACvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,wEAAwE;YACxE,yEAAyE;YACzE,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE5C,yEAAyE;QACzE,yEAAyE;QACzE,uEAAuE;QACvE,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,WAAW,GAAG,uCAAuC,IAAI,OAAO,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,6DAA6D,IAAI,GAAG,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAChD,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC9B,WAAW,GAAG,OAAO,CAAC;oBACtB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,CAAC;gBACvC,WAAW,GAAG,qCAAqC,GAAG,MAAM,OAAO,MAAM,CAAC;gBAC1E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,+CAA+C,GAAG,MAAM,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,GAAG;YACd,OAAO;YACP,SAAS;YACT,eAAe,EAAE,cAAc,CAAC,SAAS,CAAC;SAC3C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,CAAC;IACf,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
8
8
  import { join } from 'node:path';
9
- import { runGitSync } from './git-types.js';
9
+ import { runGitSync } from './git/index.js';
10
10
  import { buildClaudeSettings, mergeClaudeSettings } from './templates/claude-settings.js';
11
11
  import { ensureCodexConfigIgnoredInWorktree } from './worktree.js';
12
12
  const CODEX_READ_ONLY_BLOCK_START = '# BEGIN TELORA CODEX READ-ONLY';
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Discovery-only audit-shape determination (injection #7).
3
+ *
4
+ * PURE, dependency-free (no `@telora/daemon-core`, no I/O). The daemon's
5
+ * discovery-only handling was gated strictly on `product_focuses.read_only
6
+ * ===true`; when read_only is silently absent an audit focus stalls. These two
7
+ * predicates add the SECOND, structural signal so a flag-absent audit focus is
8
+ * still handled correctly.
9
+ *
10
+ * This lives in its own module (rather than in delivery-reconciler.ts) precisely
11
+ * because it must be importable WITHOUT pulling the reconciler's `@telora/daemon
12
+ * -core` dependency -- listener-auto-advance.ts and completion/event.ts import it
13
+ * directly, and several tests mock the reconciler-apply chain to avoid the fragile
14
+ * bare-specifier daemon-core resolution under tsx. delivery-reconciler.ts
15
+ * re-exports this surface for back-compat.
16
+ */
17
+ /**
18
+ * The structural signal an audit/discovery delivery presents, independent of the
19
+ * `read_only` phase flag. Belt-and-suspenders for injection #7: when a focus IS
20
+ * an audit but `read_only` is silently absent, this second signal still yields
21
+ * correct discovery-only treatment instead of a stall or premature execution.
22
+ */
23
+ export interface DiscoveryOnlySignal {
24
+ /**
25
+ * The focus's `read_only` audit-phase flag as the daemon sees it. The PRIMARY
26
+ * signal; `true` alone yields discovery-only. Note the daemon coerces a DB null
27
+ * to `false`, so `false` here means "false OR absent" -- which is exactly why
28
+ * the second signal below cannot key on read_only-null.
29
+ */
30
+ focusReadOnly: boolean;
31
+ /**
32
+ * Immutable provenance: the focus was authored as an audit (audit playbook, or
33
+ * an ad-hoc read-only create). Unlike read_only it is NEVER flipped, so it
34
+ * survives read_only being lost after creation. Absent on legacy/backends that
35
+ * predate the column -> `false` -> second signal does not fire (safe default).
36
+ */
37
+ focusAuditOrigin: boolean;
38
+ /**
39
+ * Whether the human ratification gate has been crossed (product_focuses
40
+ * .ratified_at is set). This is the execute-phase discriminator that keeps the
41
+ * second signal from misfiring on a RATIFIED audit focus: after ratification
42
+ * read_only=false and the released remediation deliveries are (briefly)
43
+ * injection-anchored + issue-less before the team scopes them -- and those must
44
+ * be SCOPED and executed, not auto-terminaled. A set ratified_at suppresses the
45
+ * second signal so the audit-origin marker never contradicts a legitimate
46
+ * execute-phase read_only=false.
47
+ */
48
+ focusRatified: boolean;
49
+ /** Whether the delivery is anchored to a reality-tree injection. */
50
+ injectionAnchored: boolean;
51
+ /** Whether the delivery carries at least one Task/Bug work issue. */
52
+ hasWorkIssues: boolean;
53
+ }
54
+ /**
55
+ * Focus-level audit-phase predicate: the focus is in the audit/read-only phase
56
+ * either explicitly (`read_only===true`) OR structurally (audit-origin AND the
57
+ * human ratify gate has NOT been crossed). This is the second signal at FOCUS
58
+ * grain -- shared by the discovery-only delivery decision below and the
59
+ * no-progress guard's planning-delivery exemption (completion/event.ts), so both
60
+ * treat a flag-absent audit focus identically to an explicit read_only one.
61
+ *
62
+ * Does NOT fork read_only: it never contradicts an explicit read_only=true, and
63
+ * a set `ratifiedAt` (execute-phase crossing) makes it fall back to read_only
64
+ * alone -- so a ratified audit focus (read_only=false) reads as NOT audit-phase.
65
+ */
66
+ export declare function isAuditPhaseFocus(focus: {
67
+ readOnly: boolean;
68
+ auditOrigin: boolean;
69
+ ratified: boolean;
70
+ }): boolean;
71
+ /**
72
+ * Convenience over `isAuditPhaseFocus` for the RAW focus-row shape the queries
73
+ * return (snake_case, nullable). Coerces `read_only`/`audit_origin` (DB null ->
74
+ * false) and reads `ratified_at != null` as the execute-phase discriminator.
75
+ * Used at the spawn sites (listener.ts) so a flag-absent audit focus spawns
76
+ * read-only -- installReadOnlyAuditGuards engages and the team is not driven into
77
+ * scoping/write/commit ahead of ratification (TEL-3; 2f253da6 does not reproduce).
78
+ */
79
+ export declare function isAuditPhaseFocusRow(focus: {
80
+ read_only?: boolean | null;
81
+ audit_origin?: boolean | null;
82
+ ratified_at?: string | null;
83
+ }): boolean;
84
+ /**
85
+ * Resolve whether a delivery is DISCOVERY-ONLY from the two-signal set.
86
+ *
87
+ * Signal 1 (primary, unchanged): `focusReadOnly === true` -- the explicit audit
88
+ * phase. Discovery-only regardless of shape.
89
+ *
90
+ * Signal 2 (structural, injection #7): an audit-origin, NOT-yet-ratified focus
91
+ * (isAuditPhaseFocus) whose delivery is injection-anchored and issue-less. This
92
+ * degrades gracefully when read_only is absent, WITHOUT forking read_only:
93
+ * - it never contradicts an explicit read_only=true (signal 1 already fired);
94
+ * - `focusRatified` defers to the human execute-phase crossing, so a ratified
95
+ * (read_only=false) audit focus's unscoped remediation deliveries are NOT
96
+ * swept to terminal;
97
+ * - it requires `focusAuditOrigin`, so a NORMAL execution focus's transiently
98
+ * issue-less injection-anchored delivery still holds at the scoping gate.
99
+ *
100
+ * Pure and exported for unit testing.
101
+ */
102
+ export declare function isDiscoveryOnlyDelivery(signal: DiscoveryOnlySignal): boolean;
103
+ //# sourceMappingURL=audit-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-shape.d.ts","sourceRoot":"","sources":["../src/audit-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;OASG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAGV;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,OAAO,CAMV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAc5E"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Discovery-only audit-shape determination (injection #7).
3
+ *
4
+ * PURE, dependency-free (no `@telora/daemon-core`, no I/O). The daemon's
5
+ * discovery-only handling was gated strictly on `product_focuses.read_only
6
+ * ===true`; when read_only is silently absent an audit focus stalls. These two
7
+ * predicates add the SECOND, structural signal so a flag-absent audit focus is
8
+ * still handled correctly.
9
+ *
10
+ * This lives in its own module (rather than in delivery-reconciler.ts) precisely
11
+ * because it must be importable WITHOUT pulling the reconciler's `@telora/daemon
12
+ * -core` dependency -- listener-auto-advance.ts and completion/event.ts import it
13
+ * directly, and several tests mock the reconciler-apply chain to avoid the fragile
14
+ * bare-specifier daemon-core resolution under tsx. delivery-reconciler.ts
15
+ * re-exports this surface for back-compat.
16
+ */
17
+ /**
18
+ * Focus-level audit-phase predicate: the focus is in the audit/read-only phase
19
+ * either explicitly (`read_only===true`) OR structurally (audit-origin AND the
20
+ * human ratify gate has NOT been crossed). This is the second signal at FOCUS
21
+ * grain -- shared by the discovery-only delivery decision below and the
22
+ * no-progress guard's planning-delivery exemption (completion/event.ts), so both
23
+ * treat a flag-absent audit focus identically to an explicit read_only one.
24
+ *
25
+ * Does NOT fork read_only: it never contradicts an explicit read_only=true, and
26
+ * a set `ratifiedAt` (execute-phase crossing) makes it fall back to read_only
27
+ * alone -- so a ratified audit focus (read_only=false) reads as NOT audit-phase.
28
+ */
29
+ export function isAuditPhaseFocus(focus) {
30
+ if (focus.readOnly === true)
31
+ return true;
32
+ return focus.auditOrigin === true && !focus.ratified;
33
+ }
34
+ /**
35
+ * Convenience over `isAuditPhaseFocus` for the RAW focus-row shape the queries
36
+ * return (snake_case, nullable). Coerces `read_only`/`audit_origin` (DB null ->
37
+ * false) and reads `ratified_at != null` as the execute-phase discriminator.
38
+ * Used at the spawn sites (listener.ts) so a flag-absent audit focus spawns
39
+ * read-only -- installReadOnlyAuditGuards engages and the team is not driven into
40
+ * scoping/write/commit ahead of ratification (TEL-3; 2f253da6 does not reproduce).
41
+ */
42
+ export function isAuditPhaseFocusRow(focus) {
43
+ return isAuditPhaseFocus({
44
+ readOnly: focus.read_only === true,
45
+ auditOrigin: focus.audit_origin === true,
46
+ ratified: focus.ratified_at != null,
47
+ });
48
+ }
49
+ /**
50
+ * Resolve whether a delivery is DISCOVERY-ONLY from the two-signal set.
51
+ *
52
+ * Signal 1 (primary, unchanged): `focusReadOnly === true` -- the explicit audit
53
+ * phase. Discovery-only regardless of shape.
54
+ *
55
+ * Signal 2 (structural, injection #7): an audit-origin, NOT-yet-ratified focus
56
+ * (isAuditPhaseFocus) whose delivery is injection-anchored and issue-less. This
57
+ * degrades gracefully when read_only is absent, WITHOUT forking read_only:
58
+ * - it never contradicts an explicit read_only=true (signal 1 already fired);
59
+ * - `focusRatified` defers to the human execute-phase crossing, so a ratified
60
+ * (read_only=false) audit focus's unscoped remediation deliveries are NOT
61
+ * swept to terminal;
62
+ * - it requires `focusAuditOrigin`, so a NORMAL execution focus's transiently
63
+ * issue-less injection-anchored delivery still holds at the scoping gate.
64
+ *
65
+ * Pure and exported for unit testing.
66
+ */
67
+ export function isDiscoveryOnlyDelivery(signal) {
68
+ if (!isAuditPhaseFocus({
69
+ readOnly: signal.focusReadOnly,
70
+ auditOrigin: signal.focusAuditOrigin,
71
+ ratified: signal.focusRatified,
72
+ })) {
73
+ return false;
74
+ }
75
+ // read_only===true is discovery-only regardless of delivery shape (signal 1).
76
+ if (signal.focusReadOnly === true)
77
+ return true;
78
+ // Structural signal 2 additionally requires the audit shape on the delivery.
79
+ return signal.injectionAnchored && !signal.hasWorkIssues;
80
+ }
81
+ //# sourceMappingURL=audit-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-shape.js","sourceRoot":"","sources":["../src/audit-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwCH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAIjC;IACC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAIpC;IACC,OAAO,iBAAiB,CAAC;QACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI;QAClC,WAAW,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI;QACxC,QAAQ,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAA2B;IACjE,IACE,CAAC,iBAAiB,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC,aAAa;QAC9B,WAAW,EAAE,MAAM,CAAC,gBAAgB;QACpC,QAAQ,EAAE,MAAM,CAAC,aAAa;KAC/B,CAAC,EACF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,8EAA8E;IAC9E,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/C,6EAA6E;IAC7E,OAAO,MAAM,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAC3D,CAAC"}
@@ -8,8 +8,8 @@
8
8
  *
9
9
  * Results ride in the heartbeat metadata field (no new tables).
10
10
  */
11
- import { runGitSync } from './git-types.js';
12
- import { getDefaultBranch } from './git-branch.js';
11
+ import { runGitSync } from './git/index.js';
12
+ import { getDefaultBranch } from './git/index.js';
13
13
  import { getAllFocusWorktrees } from './focus-worktree-state.js';
14
14
  import { getActiveTeams } from './focus-team-state.js';
15
15
  /** Short timeout for git commands to avoid blocking the heartbeat. */
@@ -1 +1 @@
1
- {"version":3,"file":"branch-status.js","sourceRoot":"","sources":["../src/branch-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch-status.js","sourceRoot":"","sources":["../src/branch-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * CI-result sensor loop (Reconnect CI to the loop, TEL-3).
3
+ *
4
+ * A red CI run on integration used to have NO receiver -- it evaporated. This
5
+ * loop makes a failing run SIGNAL: per product, it reads the integration tip's
6
+ * git-native CI status (refs/ci-status/<sha>) via the daemon's existing
7
+ * git-over-SSH channel and, on RED, files exactly one open `ci_run_red`
8
+ * needs_operator escalation carrying the run reference (the failing SHA). When a
9
+ * LATER run on integration goes green, it resolves the open escalation. Pure
10
+ * decision (decideCiSensorAction in ci-status.ts) + injected IO so the loop is
11
+ * unit-testable without a live remote or DB.
12
+ *
13
+ * Registered in LOOP_REGISTRY under the opt-out guard TELORA_CI_SENSOR_LOOP.
14
+ * Consumes the same fail-closed CiStatusReader the green-wait (TEL-2) uses.
15
+ *
16
+ * @module ci-sensor-loop
17
+ */
18
+ import type { DaemonConfig } from './types.js';
19
+ import { type CiStatusReader } from './ci-status.js';
20
+ /** escalation_kind for a red CI run on integration. */
21
+ export declare const CI_RUN_RED_ESCALATION_KIND = "ci_run_red";
22
+ /** Injected IO for the sensor tick. Defaults reach for the real implementations. */
23
+ export interface CiSensorDeps {
24
+ getCiStatus: CiStatusReader;
25
+ resolveIntegrationTip: (config: DaemonConfig) => string | null;
26
+ hasOpenCiRedEscalation: (productId: string) => Promise<boolean>;
27
+ fileCiRedEscalation: (params: {
28
+ organizationId: string;
29
+ productId: string;
30
+ sha: string;
31
+ branch: string;
32
+ }) => Promise<void>;
33
+ resolveCiRedEscalations: (productId: string) => Promise<number>;
34
+ }
35
+ export interface CiSensorTickCounts {
36
+ productsChecked: number;
37
+ escalationsFiled: number;
38
+ escalationsResolved: number;
39
+ }
40
+ /**
41
+ * One CI-result sensor tick over every configured product. Per product: resolve
42
+ * the remote integration tip, read its CI status (fail-closed), and file/resolve
43
+ * the ci_run_red escalation per the pure decision. Best-effort per product -- a
44
+ * failure on one product never aborts the others.
45
+ */
46
+ export declare function runCiSensorTick(config: DaemonConfig, deps?: CiSensorDeps): Promise<CiSensorTickCounts>;
47
+ //# sourceMappingURL=ci-sensor-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-sensor-loop.d.ts","sourceRoot":"","sources":["../src/ci-sensor-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAuD,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAM1G,uDAAuD;AACvD,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAiEvD,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,qBAAqB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/D,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,mBAAmB,EAAE,CAAC,MAAM,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3H,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjE;AAUD,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,YAA0B,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAwB7B"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * CI-result sensor loop (Reconnect CI to the loop, TEL-3).
3
+ *
4
+ * A red CI run on integration used to have NO receiver -- it evaporated. This
5
+ * loop makes a failing run SIGNAL: per product, it reads the integration tip's
6
+ * git-native CI status (refs/ci-status/<sha>) via the daemon's existing
7
+ * git-over-SSH channel and, on RED, files exactly one open `ci_run_red`
8
+ * needs_operator escalation carrying the run reference (the failing SHA). When a
9
+ * LATER run on integration goes green, it resolves the open escalation. Pure
10
+ * decision (decideCiSensorAction in ci-status.ts) + injected IO so the loop is
11
+ * unit-testable without a live remote or DB.
12
+ *
13
+ * Registered in LOOP_REGISTRY under the opt-out guard TELORA_CI_SENSOR_LOOP.
14
+ * Consumes the same fail-closed CiStatusReader the green-wait (TEL-2) uses.
15
+ *
16
+ * @module ci-sensor-loop
17
+ */
18
+ import { configForProduct } from './config.js';
19
+ import { decideCiSensorAction, createGitNativeCiStatusReader } from './ci-status.js';
20
+ import { listCiStatusRefs, resolveRemoteIntegrationTip } from './ci-status-git.js';
21
+ import { createEscalation, markEscalationResolved } from './queries/issues.js';
22
+ import { callApi } from './queries/shared.js';
23
+ import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
24
+ /** escalation_kind for a red CI run on integration. */
25
+ export const CI_RUN_RED_ESCALATION_KIND = 'ci_run_red';
26
+ const OPEN_STATUSES = new Set(['pending', 'in_review']);
27
+ function isOpenCiRedForProduct(e, productId) {
28
+ if (e.status && !OPEN_STATUSES.has(e.status))
29
+ return false;
30
+ if (e.escalationKind !== CI_RUN_RED_ESCALATION_KIND)
31
+ return false;
32
+ const meta = e.metadata ?? null;
33
+ return e.productId === productId || meta?.productId === productId;
34
+ }
35
+ async function defaultHasOpenCiRedEscalation(productId) {
36
+ const result = await callApi('escalation_list', {
37
+ fields: { statuses: ['pending', 'in_review'] },
38
+ limit: 500,
39
+ });
40
+ return (result.escalations ?? []).some((e) => isOpenCiRedForProduct(e, productId));
41
+ }
42
+ async function defaultResolveCiRedEscalations(productId) {
43
+ const result = await callApi('escalation_list', {
44
+ fields: { statuses: ['pending', 'in_review'] },
45
+ limit: 500,
46
+ });
47
+ const open = (result.escalations ?? []).filter((e) => isOpenCiRedForProduct(e, productId));
48
+ let resolved = 0;
49
+ for (const e of open) {
50
+ try {
51
+ await markEscalationResolved(e.id, 'Auto-resolved by the daemon: a later CI run on integration went green.');
52
+ resolved++;
53
+ }
54
+ catch (err) {
55
+ console.warn(`[ci-sensor] Failed to resolve ci_run_red escalation ${e.id}: ${err.message}`);
56
+ }
57
+ }
58
+ return resolved;
59
+ }
60
+ async function defaultFileCiRedEscalation(params) {
61
+ await createEscalation({
62
+ organizationId: params.organizationId,
63
+ issueId: null,
64
+ reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
65
+ disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
66
+ productId: params.productId,
67
+ escalationKind: CI_RUN_RED_ESCALATION_KIND,
68
+ description: `CI is RED on the integration branch (${params.branch}) at ${params.sha.slice(0, 12)}. ` +
69
+ `The clean-environment instrument is failing, so integration->main merges are held ` +
70
+ `(fail-closed green-wait). Run reference: commit ${params.sha}. An operator must fix ` +
71
+ `the failing run; this escalation auto-resolves when a later integration run goes green.`,
72
+ metadata: { sha: params.sha, branch: params.branch, product_id: params.productId },
73
+ });
74
+ }
75
+ const defaultDeps = {
76
+ getCiStatus: createGitNativeCiStatusReader(listCiStatusRefs),
77
+ resolveIntegrationTip: resolveRemoteIntegrationTip,
78
+ hasOpenCiRedEscalation: defaultHasOpenCiRedEscalation,
79
+ fileCiRedEscalation: defaultFileCiRedEscalation,
80
+ resolveCiRedEscalations: defaultResolveCiRedEscalations,
81
+ };
82
+ /**
83
+ * One CI-result sensor tick over every configured product. Per product: resolve
84
+ * the remote integration tip, read its CI status (fail-closed), and file/resolve
85
+ * the ci_run_red escalation per the pure decision. Best-effort per product -- a
86
+ * failure on one product never aborts the others.
87
+ */
88
+ export async function runCiSensorTick(config, deps = defaultDeps) {
89
+ const counts = { productsChecked: 0, escalationsFiled: 0, escalationsResolved: 0 };
90
+ for (const product of config.products) {
91
+ const pc = configForProduct(config, product);
92
+ try {
93
+ const sha = deps.resolveIntegrationTip(pc);
94
+ if (!sha)
95
+ continue;
96
+ counts.productsChecked++;
97
+ const status = await deps.getCiStatus({ sha, integrationBranch: pc.integrationBranch, config: pc });
98
+ const hasOpen = await deps.hasOpenCiRedEscalation(pc.productId);
99
+ const action = decideCiSensorAction(status, hasOpen);
100
+ if (action === 'file') {
101
+ await deps.fileCiRedEscalation({ organizationId: pc.organizationId, productId: pc.productId, sha, branch: pc.integrationBranch });
102
+ counts.escalationsFiled++;
103
+ console.warn(`[ci-sensor] ci_run_red escalation filed for product ${pc.productId} (integration @ ${sha.slice(0, 12)}).`);
104
+ }
105
+ else if (action === 'resolve') {
106
+ counts.escalationsResolved += await deps.resolveCiRedEscalations(pc.productId);
107
+ console.log(`[ci-sensor] integration green for product ${pc.productId} -- resolved open ci_run_red escalation(s).`);
108
+ }
109
+ }
110
+ catch (err) {
111
+ console.warn(`[ci-sensor] tick failed for product ${product.id}: ${err.message}`);
112
+ }
113
+ }
114
+ return counts;
115
+ }
116
+ //# sourceMappingURL=ci-sensor-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-sensor-loop.js","sourceRoot":"","sources":["../src/ci-sensor-loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Git-native CI status reader plumbing (Reconnect CI to the loop).
3
+ *
4
+ * The concrete side of the credential-free CI status transport (Jeremy decision
5
+ * 2026-07-05): CI publishes immutable per-SHA refs `refs/ci-status/<sha>/<state>`
6
+ * using the runner's own ephemeral token; the daemon READS them over its existing
7
+ * git-over-SSH channel with a scoped, read-only `git ls-remote` -- no API token,
8
+ * no broad fetch, disjoint from `refs/heads/*` (branch-sync-neutral), writes
9
+ * nothing locally. Fail-closed: any error / absent ref -> 'unknown' -> the merge
10
+ * gate holds.
11
+ *
12
+ * The pure classifier + reader factory live in ci-status.ts; this module holds
13
+ * the git IO and the opt-out knob, so ci-status.ts stays dependency-light and
14
+ * unit-testable.
15
+ *
16
+ * @module ci-status-git
17
+ */
18
+ import type { DaemonConfig } from './types.js';
19
+ import { type CiStatusReader } from './ci-status.js';
20
+ /** The per-SHA CI status ref namespace. State is encoded in the ref name. */
21
+ export declare const CI_STATUS_REF_PREFIX = "refs/ci-status";
22
+ /**
23
+ * List the published `refs/ci-status/<sha>/<state>` ref names for a SHA on the
24
+ * remote, via a scoped read-only `git ls-remote origin <ref> <ref> <ref>`. Only
25
+ * the three known state refs for this exact SHA are queried -- a disjoint,
26
+ * bounded namespace that can never touch branches. Returns the matched ref names
27
+ * (e.g. `refs/ci-status/<sha>/success`); [] on any git failure (fail-closed).
28
+ */
29
+ export declare function listCiStatusRefs(sha: string, config: DaemonConfig): string[];
30
+ /**
31
+ * Resolve the REMOTE integration branch tip SHA via a scoped read-only
32
+ * `git ls-remote origin refs/heads/<integrationBranch>`. This is the SHA CI last
33
+ * ran against on integration -- what the CI-result sensor checks. Returns null on
34
+ * any git failure or when the ref is absent (the sensor then does nothing).
35
+ */
36
+ export declare function resolveRemoteIntegrationTip(config: DaemonConfig): string | null;
37
+ /**
38
+ * Whether the CI green-wait is engaged. Opt-OUT (default ON): the canonical
39
+ * declaration lives in daemon-core env-config.ts (TELORA_CI_MERGE_WAIT); read
40
+ * here directly from process.env (same registry-published-daemon-core reason as
41
+ * stall-detector-config.ts). '0' disables; unset/'' /anything else -> enabled.
42
+ * Off => the merge gate is skipped entirely (pre-reconnection behavior), which is
43
+ * the safe fallback if the CI ref-publish step is not yet deployed.
44
+ */
45
+ export declare function ciMergeWaitEnabled(env?: NodeJS.ProcessEnv): boolean;
46
+ /**
47
+ * Resolve the CI status reader to inject into the integration->main merge gate:
48
+ * the git-native reader when the green-wait is enabled, else undefined (gate
49
+ * skipped -> merge proceeds as before). The reader is fail-closed by construction.
50
+ */
51
+ export declare function resolveCiStatusReader(env?: NodeJS.ProcessEnv): CiStatusReader | undefined;
52
+ //# sourceMappingURL=ci-status-git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-status-git.d.ts","sourceRoot":"","sources":["../src/ci-status-git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAExB,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAKrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAc5E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAS/E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,GAAG,SAAS,CAGtG"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Git-native CI status reader plumbing (Reconnect CI to the loop).
3
+ *
4
+ * The concrete side of the credential-free CI status transport (Jeremy decision
5
+ * 2026-07-05): CI publishes immutable per-SHA refs `refs/ci-status/<sha>/<state>`
6
+ * using the runner's own ephemeral token; the daemon READS them over its existing
7
+ * git-over-SSH channel with a scoped, read-only `git ls-remote` -- no API token,
8
+ * no broad fetch, disjoint from `refs/heads/*` (branch-sync-neutral), writes
9
+ * nothing locally. Fail-closed: any error / absent ref -> 'unknown' -> the merge
10
+ * gate holds.
11
+ *
12
+ * The pure classifier + reader factory live in ci-status.ts; this module holds
13
+ * the git IO and the opt-out knob, so ci-status.ts stays dependency-light and
14
+ * unit-testable.
15
+ *
16
+ * @module ci-status-git
17
+ */
18
+ import { runGitSync } from './git.js';
19
+ import { createGitNativeCiStatusReader, } from './ci-status.js';
20
+ /** The per-SHA CI status ref namespace. State is encoded in the ref name. */
21
+ export const CI_STATUS_REF_PREFIX = 'refs/ci-status';
22
+ /** The recognized states CI publishes (one immutable ref per completed run). */
23
+ const CI_STATUS_STATES = ['success', 'failure', 'pending'];
24
+ /**
25
+ * List the published `refs/ci-status/<sha>/<state>` ref names for a SHA on the
26
+ * remote, via a scoped read-only `git ls-remote origin <ref> <ref> <ref>`. Only
27
+ * the three known state refs for this exact SHA are queried -- a disjoint,
28
+ * bounded namespace that can never touch branches. Returns the matched ref names
29
+ * (e.g. `refs/ci-status/<sha>/success`); [] on any git failure (fail-closed).
30
+ */
31
+ export function listCiStatusRefs(sha, config) {
32
+ const refs = CI_STATUS_STATES.map(s => `${CI_STATUS_REF_PREFIX}/${sha}/${s}`);
33
+ const result = runGitSync(['ls-remote', 'origin', ...refs], config.repoPath);
34
+ if (!result.output)
35
+ return [];
36
+ // ls-remote lines: "<objectsha>\t<refname>". Extract the ref names.
37
+ return result.output
38
+ .split('\n')
39
+ .map(line => line.trim())
40
+ .filter(Boolean)
41
+ .map(line => {
42
+ const tab = line.indexOf('\t');
43
+ return tab === -1 ? '' : line.slice(tab + 1).trim();
44
+ })
45
+ .filter(ref => ref.startsWith(`${CI_STATUS_REF_PREFIX}/${sha}/`));
46
+ }
47
+ /**
48
+ * Resolve the REMOTE integration branch tip SHA via a scoped read-only
49
+ * `git ls-remote origin refs/heads/<integrationBranch>`. This is the SHA CI last
50
+ * ran against on integration -- what the CI-result sensor checks. Returns null on
51
+ * any git failure or when the ref is absent (the sensor then does nothing).
52
+ */
53
+ export function resolveRemoteIntegrationTip(config) {
54
+ const ref = `refs/heads/${config.integrationBranch}`;
55
+ const result = runGitSync(['ls-remote', 'origin', ref], config.repoPath);
56
+ if (!result.output)
57
+ return null;
58
+ const firstLine = result.output.split('\n').map(l => l.trim()).filter(Boolean)[0];
59
+ if (!firstLine)
60
+ return null;
61
+ const tab = firstLine.indexOf('\t');
62
+ const sha = tab === -1 ? '' : firstLine.slice(0, tab).trim();
63
+ return /^[0-9a-f]{7,40}$/.test(sha) ? sha : null;
64
+ }
65
+ /**
66
+ * Whether the CI green-wait is engaged. Opt-OUT (default ON): the canonical
67
+ * declaration lives in daemon-core env-config.ts (TELORA_CI_MERGE_WAIT); read
68
+ * here directly from process.env (same registry-published-daemon-core reason as
69
+ * stall-detector-config.ts). '0' disables; unset/'' /anything else -> enabled.
70
+ * Off => the merge gate is skipped entirely (pre-reconnection behavior), which is
71
+ * the safe fallback if the CI ref-publish step is not yet deployed.
72
+ */
73
+ export function ciMergeWaitEnabled(env = process.env) {
74
+ return env.TELORA_CI_MERGE_WAIT !== '0';
75
+ }
76
+ /**
77
+ * Resolve the CI status reader to inject into the integration->main merge gate:
78
+ * the git-native reader when the green-wait is enabled, else undefined (gate
79
+ * skipped -> merge proceeds as before). The reader is fail-closed by construction.
80
+ */
81
+ export function resolveCiStatusReader(env = process.env) {
82
+ if (!ciMergeWaitEnabled(env))
83
+ return undefined;
84
+ return createGitNativeCiStatusReader(listCiStatusRefs);
85
+ }
86
+ //# sourceMappingURL=ci-status-git.js.map