@telora/daemon 0.21.98 → 0.21.144

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 (416) hide show
  1. package/build-info.json +6 -3
  2. package/dist/audit/audit-hooks.d.ts +120 -5
  3. package/dist/audit/audit-hooks.d.ts.map +1 -1
  4. package/dist/audit/audit-hooks.js +205 -45
  5. package/dist/audit/audit-hooks.js.map +1 -1
  6. package/dist/ci/ci-escalation.js +1 -1
  7. package/dist/ci/ci-escalation.js.map +1 -1
  8. package/dist/ci/ci-sensor-loop.d.ts +30 -0
  9. package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
  10. package/dist/ci/ci-sensor-loop.js +85 -12
  11. package/dist/ci/ci-sensor-loop.js.map +1 -1
  12. package/dist/cli/connect/config-write.d.ts +87 -0
  13. package/dist/cli/connect/config-write.d.ts.map +1 -0
  14. package/dist/cli/connect/config-write.js +255 -0
  15. package/dist/cli/connect/config-write.js.map +1 -0
  16. package/dist/cli/connect/registration.d.ts +76 -0
  17. package/dist/cli/connect/registration.d.ts.map +1 -0
  18. package/dist/cli/connect/registration.js +207 -0
  19. package/dist/cli/connect/registration.js.map +1 -0
  20. package/dist/cli/connect.d.ts +3 -141
  21. package/dist/cli/connect.d.ts.map +1 -1
  22. package/dist/cli/connect.js +9 -441
  23. package/dist/cli/connect.js.map +1 -1
  24. package/dist/completion/coverage-drift-state.d.ts +29 -2
  25. package/dist/completion/coverage-drift-state.d.ts.map +1 -1
  26. package/dist/completion/coverage-drift-state.js +42 -2
  27. package/dist/completion/coverage-drift-state.js.map +1 -1
  28. package/dist/completion/coverage-stabilized.d.ts +58 -0
  29. package/dist/completion/coverage-stabilized.d.ts.map +1 -0
  30. package/dist/completion/coverage-stabilized.js +84 -0
  31. package/dist/completion/coverage-stabilized.js.map +1 -0
  32. package/dist/completion/delivery-advancement-guard.d.ts +21 -0
  33. package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
  34. package/dist/completion/delivery-advancement-guard.js +31 -3
  35. package/dist/completion/delivery-advancement-guard.js.map +1 -1
  36. package/dist/completion/escalation-provenance.d.ts +2 -1
  37. package/dist/completion/escalation-provenance.d.ts.map +1 -1
  38. package/dist/completion/escalation-provenance.js +2 -1
  39. package/dist/completion/escalation-provenance.js.map +1 -1
  40. package/dist/completion/escalations.js +1 -1
  41. package/dist/completion/escalations.js.map +1 -1
  42. package/dist/completion/event-escalations.d.ts +16 -1
  43. package/dist/completion/event-escalations.d.ts.map +1 -1
  44. package/dist/completion/event-escalations.js +43 -5
  45. package/dist/completion/event-escalations.js.map +1 -1
  46. package/dist/completion/event-phases.d.ts.map +1 -1
  47. package/dist/completion/event-phases.js +5 -2
  48. package/dist/completion/event-phases.js.map +1 -1
  49. package/dist/completion/event.d.ts +1 -1
  50. package/dist/completion/event.d.ts.map +1 -1
  51. package/dist/completion/event.js +2 -2
  52. package/dist/completion/event.js.map +1 -1
  53. package/dist/completion/machine-remediable-demotion.d.ts +74 -0
  54. package/dist/completion/machine-remediable-demotion.d.ts.map +1 -0
  55. package/dist/completion/machine-remediable-demotion.js +148 -0
  56. package/dist/completion/machine-remediable-demotion.js.map +1 -0
  57. package/dist/completion/read-only-pristine.d.ts +1 -1
  58. package/dist/completion/read-only-pristine.d.ts.map +1 -1
  59. package/dist/completion/read-only-pristine.js +1 -1
  60. package/dist/completion/read-only-pristine.js.map +1 -1
  61. package/dist/completion/review-exit-escalations.d.ts +1 -1
  62. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  63. package/dist/completion/review-exit-phase.d.ts +5 -2
  64. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  65. package/dist/completion/review-exit-phase.js +15 -8
  66. package/dist/completion/review-exit-phase.js.map +1 -1
  67. package/dist/completion/settle-injection-sweep.d.ts +55 -0
  68. package/dist/completion/settle-injection-sweep.d.ts.map +1 -0
  69. package/dist/completion/settle-injection-sweep.js +88 -0
  70. package/dist/completion/settle-injection-sweep.js.map +1 -0
  71. package/dist/completion/state-cascade.d.ts.map +1 -1
  72. package/dist/completion/state-cascade.js +42 -1
  73. package/dist/completion/state-cascade.js.map +1 -1
  74. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  75. package/dist/completion/status-advance-phase.js +18 -0
  76. package/dist/completion/status-advance-phase.js.map +1 -1
  77. package/dist/completion/team-lifecycle.d.ts +42 -0
  78. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  79. package/dist/completion/team-lifecycle.js +73 -1
  80. package/dist/completion/team-lifecycle.js.map +1 -1
  81. package/dist/delivery/delivery-advance-block.d.ts +1 -1
  82. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  83. package/dist/delivery/delivery-advance-block.js +1 -1
  84. package/dist/delivery/delivery-advance-block.js.map +1 -1
  85. package/dist/delivery/delivery-lifecycle.d.ts +19 -33
  86. package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
  87. package/dist/delivery/delivery-lifecycle.js +20 -148
  88. package/dist/delivery/delivery-lifecycle.js.map +1 -1
  89. package/dist/delivery/delivery-merge-ops.d.ts +46 -0
  90. package/dist/delivery/delivery-merge-ops.d.ts.map +1 -0
  91. package/dist/delivery/delivery-merge-ops.js +154 -0
  92. package/dist/delivery/delivery-merge-ops.js.map +1 -0
  93. package/dist/delivery/delivery-reconciler-apply.d.ts +28 -0
  94. package/dist/delivery/delivery-reconciler-apply.d.ts.map +1 -1
  95. package/dist/delivery/delivery-reconciler-apply.js +30 -0
  96. package/dist/delivery/delivery-reconciler-apply.js.map +1 -1
  97. package/dist/delivery/delivery-reconciler-shadow.d.ts +1 -1
  98. package/dist/delivery/delivery-reconciler-shadow.d.ts.map +1 -1
  99. package/dist/delivery/delivery-reconciler-shadow.js +1 -1
  100. package/dist/delivery/delivery-reconciler-shadow.js.map +1 -1
  101. package/dist/delivery/delivery-reconciler.d.ts +7 -2
  102. package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
  103. package/dist/delivery/delivery-reconciler.js +34 -5
  104. package/dist/delivery/delivery-reconciler.js.map +1 -1
  105. package/dist/delivery/external-hold-surface.d.ts +32 -0
  106. package/dist/delivery/external-hold-surface.d.ts.map +1 -0
  107. package/dist/delivery/external-hold-surface.js +67 -0
  108. package/dist/delivery/external-hold-surface.js.map +1 -0
  109. package/dist/delivery/external-hold.d.ts +21 -0
  110. package/dist/delivery/external-hold.d.ts.map +1 -1
  111. package/dist/delivery/external-hold.js +40 -5
  112. package/dist/delivery/external-hold.js.map +1 -1
  113. package/dist/delivery/operator-hold.d.ts +1 -1
  114. package/dist/delivery/operator-hold.d.ts.map +1 -1
  115. package/dist/delivery/paused-revival.d.ts +140 -0
  116. package/dist/delivery/paused-revival.d.ts.map +1 -0
  117. package/dist/delivery/paused-revival.js +230 -0
  118. package/dist/delivery/paused-revival.js.map +1 -0
  119. package/dist/delivery/wait-reachability.d.ts.map +1 -1
  120. package/dist/delivery/wait-reachability.js +11 -0
  121. package/dist/delivery/wait-reachability.js.map +1 -1
  122. package/dist/directive/close-loop-dispatcher.d.ts +16 -263
  123. package/dist/directive/close-loop-dispatcher.d.ts.map +1 -1
  124. package/dist/directive/close-loop-dispatcher.js +21 -259
  125. package/dist/directive/close-loop-dispatcher.js.map +1 -1
  126. package/dist/directive/directive-dispatch.d.ts +20 -1
  127. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  128. package/dist/directive/directive-dispatch.js +19 -1
  129. package/dist/directive/directive-dispatch.js.map +1 -1
  130. package/dist/directive/directive-executor.d.ts +1 -3
  131. package/dist/directive/directive-executor.d.ts.map +1 -1
  132. package/dist/directive/directive-executor.js +24 -22
  133. package/dist/directive/directive-executor.js.map +1 -1
  134. package/dist/directive/phase-sync.d.ts +28 -15
  135. package/dist/directive/phase-sync.d.ts.map +1 -1
  136. package/dist/directive/phase-sync.js +28 -36
  137. package/dist/directive/phase-sync.js.map +1 -1
  138. package/dist/directive/resolver-dispatch.d.ts +19 -92
  139. package/dist/directive/resolver-dispatch.d.ts.map +1 -1
  140. package/dist/directive/resolver-dispatch.js +19 -65
  141. package/dist/directive/resolver-dispatch.js.map +1 -1
  142. package/dist/drift/staleness-sensor.js +1 -1
  143. package/dist/drift/staleness-sensor.js.map +1 -1
  144. package/dist/focus/focus-engine.d.ts.map +1 -1
  145. package/dist/focus/focus-engine.js +29 -2
  146. package/dist/focus/focus-engine.js.map +1 -1
  147. package/dist/focus/focus-executor.d.ts.map +1 -1
  148. package/dist/focus/focus-executor.js +290 -256
  149. package/dist/focus/focus-executor.js.map +1 -1
  150. package/dist/focus/focus-lifecycle.d.ts.map +1 -1
  151. package/dist/focus/focus-lifecycle.js +2 -1
  152. package/dist/focus/focus-lifecycle.js.map +1 -1
  153. package/dist/focus/focus-loop-registry.d.ts.map +1 -1
  154. package/dist/focus/focus-loop-registry.js +43 -1
  155. package/dist/focus/focus-loop-registry.js.map +1 -1
  156. package/dist/focus/focus-respawn-guard.d.ts +1 -1
  157. package/dist/focus/focus-respawn-guard.d.ts.map +1 -1
  158. package/dist/focus/focus-respawn-guard.js +12 -3
  159. package/dist/focus/focus-respawn-guard.js.map +1 -1
  160. package/dist/focus/focus-team-state.d.ts +11 -0
  161. package/dist/focus/focus-team-state.d.ts.map +1 -1
  162. package/dist/focus/focus-team-state.js +17 -0
  163. package/dist/focus/focus-team-state.js.map +1 -1
  164. package/dist/focus/listener-auto-advance.d.ts +17 -46
  165. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  166. package/dist/focus/listener-auto-advance.js +104 -256
  167. package/dist/focus/listener-auto-advance.js.map +1 -1
  168. package/dist/focus/listener-spawn.d.ts +62 -0
  169. package/dist/focus/listener-spawn.d.ts.map +1 -0
  170. package/dist/focus/listener-spawn.js +418 -0
  171. package/dist/focus/listener-spawn.js.map +1 -0
  172. package/dist/focus/listener-state.d.ts +57 -0
  173. package/dist/focus/listener-state.d.ts.map +1 -0
  174. package/dist/focus/listener-state.js +63 -0
  175. package/dist/focus/listener-state.js.map +1 -0
  176. package/dist/focus/listener.d.ts +0 -58
  177. package/dist/focus/listener.d.ts.map +1 -1
  178. package/dist/focus/listener.js +138 -516
  179. package/dist/focus/listener.js.map +1 -1
  180. package/dist/focus/tick-deadline.d.ts +55 -0
  181. package/dist/focus/tick-deadline.d.ts.map +1 -0
  182. package/dist/focus/tick-deadline.js +91 -0
  183. package/dist/focus/tick-deadline.js.map +1 -0
  184. package/dist/focus/verify-open-issues.d.ts +62 -0
  185. package/dist/focus/verify-open-issues.d.ts.map +1 -0
  186. package/dist/focus/verify-open-issues.js +265 -0
  187. package/dist/focus/verify-open-issues.js.map +1 -0
  188. package/dist/focus-stage-lifecycle/index.d.ts +19 -26
  189. package/dist/focus-stage-lifecycle/index.d.ts.map +1 -1
  190. package/dist/focus-stage-lifecycle/index.js +27 -39
  191. package/dist/focus-stage-lifecycle/index.js.map +1 -1
  192. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.d.ts +52 -0
  193. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.d.ts.map +1 -0
  194. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.js +94 -0
  195. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.js.map +1 -0
  196. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +18 -1
  197. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  198. package/dist/focus-stage-lifecycle/wedge-watchdog.js +57 -7
  199. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  200. package/dist/git/index.d.ts +2 -0
  201. package/dist/git/index.d.ts.map +1 -1
  202. package/dist/git/index.js +2 -0
  203. package/dist/git/index.js.map +1 -1
  204. package/dist/git/merge-strategies.d.ts +80 -0
  205. package/dist/git/merge-strategies.d.ts.map +1 -0
  206. package/dist/git/merge-strategies.js +218 -0
  207. package/dist/git/merge-strategies.js.map +1 -0
  208. package/dist/git/merge-to-main.d.ts +76 -0
  209. package/dist/git/merge-to-main.d.ts.map +1 -0
  210. package/dist/git/merge-to-main.js +256 -0
  211. package/dist/git/merge-to-main.js.map +1 -0
  212. package/dist/git/merge.d.ts +27 -81
  213. package/dist/git/merge.d.ts.map +1 -1
  214. package/dist/git/merge.js +4 -448
  215. package/dist/git/merge.js.map +1 -1
  216. package/dist/git/state-detector.js +1 -1
  217. package/dist/git/state-detector.js.map +1 -1
  218. package/dist/guard/condition-evaluators.d.ts +9 -0
  219. package/dist/guard/condition-evaluators.d.ts.map +1 -1
  220. package/dist/guard/condition-evaluators.js +15 -0
  221. package/dist/guard/condition-evaluators.js.map +1 -1
  222. package/dist/guard/guard-evaluator.d.ts +17 -1
  223. package/dist/guard/guard-evaluator.d.ts.map +1 -1
  224. package/dist/guard/guard-evaluator.js +61 -2
  225. package/dist/guard/guard-evaluator.js.map +1 -1
  226. package/dist/guard/trigger-executor.d.ts +30 -18
  227. package/dist/guard/trigger-executor.d.ts.map +1 -1
  228. package/dist/guard/trigger-executor.js +55 -31
  229. package/dist/guard/trigger-executor.js.map +1 -1
  230. package/dist/loops/engine.js +1 -1
  231. package/dist/loops/engine.js.map +1 -1
  232. package/dist/merge/focus-merge.d.ts +1 -1
  233. package/dist/merge/focus-merge.d.ts.map +1 -1
  234. package/dist/merge/focus-merge.js +1 -1
  235. package/dist/merge/focus-merge.js.map +1 -1
  236. package/dist/merge/merge-back-loop.d.ts +1 -1
  237. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  238. package/dist/merge/merge-back-loop.js +2 -2
  239. package/dist/merge/merge-back-loop.js.map +1 -1
  240. package/dist/merge/merge-detector.js +1 -1
  241. package/dist/merge/merge-detector.js.map +1 -1
  242. package/dist/nexus/return.js +1 -1
  243. package/dist/nexus/return.js.map +1 -1
  244. package/dist/prd/controller-shared.d.ts +223 -0
  245. package/dist/prd/controller-shared.d.ts.map +1 -0
  246. package/dist/prd/controller-shared.js +77 -0
  247. package/dist/prd/controller-shared.js.map +1 -0
  248. package/dist/prd/controller.d.ts +5 -256
  249. package/dist/prd/controller.d.ts.map +1 -1
  250. package/dist/prd/controller.js +9 -166
  251. package/dist/prd/controller.js.map +1 -1
  252. package/dist/prd/done-sweep.d.ts +55 -0
  253. package/dist/prd/done-sweep.d.ts.map +1 -0
  254. package/dist/prd/done-sweep.js +112 -0
  255. package/dist/prd/done-sweep.js.map +1 -0
  256. package/dist/prompt/team-prompt-base.d.ts +1 -1
  257. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  258. package/dist/prompt/team-prompt-base.js +1 -1
  259. package/dist/prompt/team-prompt-base.js.map +1 -1
  260. package/dist/prompt-sections/execution-sections.d.ts +1 -1
  261. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  262. package/dist/prompt-sections/execution-sections.js +12 -2
  263. package/dist/prompt-sections/execution-sections.js.map +1 -1
  264. package/dist/prompt-sections/persona-sections.d.ts +0 -32
  265. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  266. package/dist/prompt-sections/persona-sections.js +19 -88
  267. package/dist/prompt-sections/persona-sections.js.map +1 -1
  268. package/dist/prompt-sections/shared.d.ts +1 -1
  269. package/dist/prompt-sections/shared.d.ts.map +1 -1
  270. package/dist/queries/agent-resolvable-promotion.d.ts +1 -1
  271. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  272. package/dist/queries/agent-resolvable-promotion.js +2 -1
  273. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  274. package/dist/queries/deliveries.d.ts +0 -172
  275. package/dist/queries/deliveries.d.ts.map +1 -1
  276. package/dist/queries/deliveries.js +1 -77
  277. package/dist/queries/deliveries.js.map +1 -1
  278. package/dist/queries/escalation-consumption.d.ts +120 -0
  279. package/dist/queries/escalation-consumption.d.ts.map +1 -0
  280. package/dist/queries/escalation-consumption.js +143 -0
  281. package/dist/queries/escalation-consumption.js.map +1 -0
  282. package/dist/queries/escalation-dispositions.d.ts +19 -0
  283. package/dist/queries/escalation-dispositions.d.ts.map +1 -0
  284. package/dist/queries/escalation-dispositions.js +18 -0
  285. package/dist/queries/escalation-dispositions.js.map +1 -0
  286. package/dist/queries/escalation-suppression.d.ts +1 -1
  287. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  288. package/dist/queries/escalation-suppression.js +1 -1
  289. package/dist/queries/escalation-suppression.js.map +1 -1
  290. package/dist/queries/escalations.d.ts +343 -0
  291. package/dist/queries/escalations.d.ts.map +1 -0
  292. package/dist/queries/escalations.js +493 -0
  293. package/dist/queries/escalations.js.map +1 -0
  294. package/dist/queries/focus-discovery.d.ts +204 -0
  295. package/dist/queries/focus-discovery.d.ts.map +1 -0
  296. package/dist/queries/focus-discovery.js +92 -0
  297. package/dist/queries/focus-discovery.js.map +1 -0
  298. package/dist/queries/focuses.d.ts +36 -0
  299. package/dist/queries/focuses.d.ts.map +1 -1
  300. package/dist/queries/focuses.js +45 -0
  301. package/dist/queries/focuses.js.map +1 -1
  302. package/dist/queries/guards.d.ts +10 -0
  303. package/dist/queries/guards.d.ts.map +1 -1
  304. package/dist/queries/guards.js +14 -1
  305. package/dist/queries/guards.js.map +1 -1
  306. package/dist/queries/index.d.ts +4 -2
  307. package/dist/queries/index.d.ts.map +1 -1
  308. package/dist/queries/index.js +4 -2
  309. package/dist/queries/index.js.map +1 -1
  310. package/dist/queries/issues.d.ts +8 -372
  311. package/dist/queries/issues.d.ts.map +1 -1
  312. package/dist/queries/issues.js +7 -482
  313. package/dist/queries/issues.js.map +1 -1
  314. package/dist/queries/schemas.d.ts +51 -0
  315. package/dist/queries/schemas.d.ts.map +1 -1
  316. package/dist/queries/schemas.js +34 -0
  317. package/dist/queries/schemas.js.map +1 -1
  318. package/dist/queries/verification.d.ts +5 -6
  319. package/dist/queries/verification.d.ts.map +1 -1
  320. package/dist/queries/verification.js +5 -6
  321. package/dist/queries/verification.js.map +1 -1
  322. package/dist/resolvers/agent-escalations.d.ts +20 -0
  323. package/dist/resolvers/agent-escalations.d.ts.map +1 -1
  324. package/dist/resolvers/agent-escalations.js +40 -10
  325. package/dist/resolvers/agent-escalations.js.map +1 -1
  326. package/dist/resolvers/index.d.ts +2 -2
  327. package/dist/resolvers/index.d.ts.map +1 -1
  328. package/dist/resolvers/index.js +1 -1
  329. package/dist/resolvers/index.js.map +1 -1
  330. package/dist/resolvers/loop-persona.d.ts +1 -11
  331. package/dist/resolvers/loop-persona.d.ts.map +1 -1
  332. package/dist/resolvers/loop-persona.js +2 -16
  333. package/dist/resolvers/loop-persona.js.map +1 -1
  334. package/dist/resolvers/shared/git-diff.d.ts +99 -18
  335. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  336. package/dist/resolvers/shared/git-diff.js +98 -27
  337. package/dist/resolvers/shared/git-diff.js.map +1 -1
  338. package/dist/shell/control-state.d.ts +1 -1
  339. package/dist/shell/control-state.d.ts.map +1 -1
  340. package/dist/shell/control-state.js +1 -1
  341. package/dist/shell/control-state.js.map +1 -1
  342. package/dist/shell/crash-recovery.d.ts +1 -1
  343. package/dist/shell/crash-recovery.d.ts.map +1 -1
  344. package/dist/shell/crash-recovery.js +2 -2
  345. package/dist/shell/crash-recovery.js.map +1 -1
  346. package/dist/shell/install-probe-tick.d.ts +1 -1
  347. package/dist/shell/install-probe-tick.d.ts.map +1 -1
  348. package/dist/shell/install-probe-tick.js +1 -1
  349. package/dist/shell/install-probe-tick.js.map +1 -1
  350. package/dist/shell/unified-shell-provisioning.d.ts +40 -0
  351. package/dist/shell/unified-shell-provisioning.d.ts.map +1 -1
  352. package/dist/shell/unified-shell-provisioning.js +72 -0
  353. package/dist/shell/unified-shell-provisioning.js.map +1 -1
  354. package/dist/shell/unified-shell.d.ts.map +1 -1
  355. package/dist/shell/unified-shell.js +19 -2
  356. package/dist/shell/unified-shell.js.map +1 -1
  357. package/dist/spawn/helpers.d.ts.map +1 -1
  358. package/dist/spawn/helpers.js +6 -1
  359. package/dist/spawn/helpers.js.map +1 -1
  360. package/dist/spawn/model-routing.d.ts +1 -1
  361. package/dist/spawn/model-routing.d.ts.map +1 -1
  362. package/dist/spawn/model-routing.js +1 -1
  363. package/dist/spawn/model-routing.js.map +1 -1
  364. package/dist/spawn/process-spawn.d.ts.map +1 -1
  365. package/dist/spawn/process-spawn.js +7 -0
  366. package/dist/spawn/process-spawn.js.map +1 -1
  367. package/dist/spawn/prompt-assembly.d.ts +1 -1
  368. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  369. package/dist/spawn/prompt-assembly.js +1 -1
  370. package/dist/spawn/prompt-assembly.js.map +1 -1
  371. package/dist/spawn/spawn-cooldown.d.ts +41 -7
  372. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  373. package/dist/spawn/spawn-cooldown.js +47 -0
  374. package/dist/spawn/spawn-cooldown.js.map +1 -1
  375. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  376. package/dist/spawn/spawn-decision.js +34 -2
  377. package/dist/spawn/spawn-decision.js.map +1 -1
  378. package/dist/spawn/worktree-session.d.ts +1 -1
  379. package/dist/spawn/worktree-session.d.ts.map +1 -1
  380. package/dist/spawn/worktree-session.js +1 -1
  381. package/dist/spawn/worktree-session.js.map +1 -1
  382. package/dist/templates/claude-md.d.ts +1 -1
  383. package/dist/templates/claude-md.d.ts.map +1 -1
  384. package/dist/templates/claude-md.js +12 -0
  385. package/dist/templates/claude-md.js.map +1 -1
  386. package/dist/verify/stall-detectors.d.ts +20 -8
  387. package/dist/verify/stall-detectors.d.ts.map +1 -1
  388. package/dist/verify/stall-detectors.js +27 -46
  389. package/dist/verify/stall-detectors.js.map +1 -1
  390. package/dist/verify/verification-default-on.d.ts +1 -1
  391. package/dist/verify/verification-default-on.d.ts.map +1 -1
  392. package/dist/verify/verification-deps.d.ts +1 -1
  393. package/dist/verify/verification-deps.d.ts.map +1 -1
  394. package/dist/verify/verification-engine.d.ts.map +1 -1
  395. package/dist/verify/verification-engine.js +20 -12
  396. package/dist/verify/verification-engine.js.map +1 -1
  397. package/dist/workflow/gate-failure-policy.d.ts +48 -0
  398. package/dist/workflow/gate-failure-policy.d.ts.map +1 -0
  399. package/dist/workflow/gate-failure-policy.js +57 -0
  400. package/dist/workflow/gate-failure-policy.js.map +1 -0
  401. package/dist/workflow/pipeline-config.d.ts +2 -2
  402. package/dist/workflow/pipeline-config.js +2 -2
  403. package/dist/worktree/provision.js +1 -1
  404. package/dist/worktree/provision.js.map +1 -1
  405. package/dist/worktree/scratch-guard.d.ts.map +1 -1
  406. package/dist/worktree/scratch-guard.js +23 -2
  407. package/dist/worktree/scratch-guard.js.map +1 -1
  408. package/package.json +1 -1
  409. package/dist/directive/close-loop-stage.d.ts +0 -50
  410. package/dist/directive/close-loop-stage.d.ts.map +0 -1
  411. package/dist/directive/close-loop-stage.js +0 -210
  412. package/dist/directive/close-loop-stage.js.map +0 -1
  413. package/dist/focus-stage-lifecycle/review-convergence.d.ts +0 -133
  414. package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +0 -1
  415. package/dist/focus-stage-lifecycle/review-convergence.js +0 -237
  416. package/dist/focus-stage-lifecycle/review-convergence.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Daemon-local literals, TYPE-PINNED to the daemon-core disposition vocabulary.
3
+ *
4
+ * Shared by the escalation dedup guards (escalations.ts) and the consumption
5
+ * reads (escalation-consumption.ts) so the pinned mirror lives in exactly one
6
+ * place. This module must NOT take a runtime (value) import of
7
+ * `@telora/daemon-core` -- only the type import below. Under the node:test
8
+ * module-mock loader a bare `@telora/*` value specifier resolves relative to
9
+ * this file and dies with ERR_MODULE_NOT_FOUND, so the vocabulary is mirrored as
10
+ * local literals rather than imported values.
11
+ *
12
+ * The `Extract<...>` annotation keeps each honest: it stops compiling if the
13
+ * value is dropped or renamed in daemon-core, so these are pinned mirrors of the
14
+ * vocabulary rather than redeclarations that can silently drift.
15
+ */
16
+ export const DISPOSITION_AGENT_RESOLVABLE = 'agent_resolvable';
17
+ export const DISPOSITION_NEEDS_INTENT = 'needs_intent';
18
+ //# sourceMappingURL=escalation-dispositions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escalation-dispositions.js","sourceRoot":"","sources":["../../src/queries/escalation-dispositions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,4BAA4B,GACvC,kBAAkB,CAAC;AAErB,MAAM,CAAC,MAAM,wBAAwB,GACnC,cAAc,CAAC"}
@@ -27,7 +27,7 @@
27
27
  * change is required (the AC's sanctioned "the cause key can live in metadata plus
28
28
  * a suppression check at file time" path).
29
29
  */
30
- import { createEscalation, type CreateEscalationParams } from './issues.js';
30
+ import { createEscalation, type CreateEscalationParams } from './escalations.js';
31
31
  /** Minimal escalation row shape the cause-key suppression check reads. */
32
32
  interface CauseKeyEscalationRow {
33
33
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"escalation-suppression.d.ts","sourceRoot":"","sources":["../../src/queries/escalation-suppression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAY5E,0EAA0E;AAC1E,UAAU,qBAAqB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,iFAAiF;IACjF,0BAA0B,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC9F,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;CAC5C;AAsBD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,EAC/B,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED,oDAAoD;AACpD,MAAM,WAAW,8BAA+B,SAAQ,sBAAsB;IAC5E,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+CAA+C;AAC/C,MAAM,WAAW,8BAA8B;IAC7C,0DAA0D;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,mFAAmF;IACnF,UAAU,EAAE,OAAO,CAAC;IACpB,2FAA2F;IAC3F,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,8BAA8B,EACtC,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,8BAA8B,CAAC,CAmBzC"}
1
+ {"version":3,"file":"escalation-suppression.d.ts","sourceRoot":"","sources":["../../src/queries/escalation-suppression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAYjF,0EAA0E;AAC1E,UAAU,qBAAqB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,iFAAiF;IACjF,0BAA0B,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC9F,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;CAC5C;AAsBD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,EAC/B,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED,oDAAoD;AACpD,MAAM,WAAW,8BAA+B,SAAQ,sBAAsB;IAC5E,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+CAA+C;AAC/C,MAAM,WAAW,8BAA8B;IAC7C,0DAA0D;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,mFAAmF;IACnF,UAAU,EAAE,OAAO,CAAC;IACpB,2FAA2F;IAC3F,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,8BAA8B,EACtC,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,8BAA8B,CAAC,CAmBzC"}
@@ -28,7 +28,7 @@
28
28
  * a suppression check at file time" path).
29
29
  */
30
30
  import { callApi } from './shared.js';
31
- import { createEscalation } from './issues.js';
31
+ import { createEscalation } from './escalations.js';
32
32
  import { createLogger } from '../shell/log.js';
33
33
  const log = createLogger({ module: 'escalations' });
34
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"escalation-suppression.js","sourceRoot":"","sources":["../../src/queries/escalation-suppression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"escalation-suppression.js","sourceRoot":"","sources":["../../src/queries/escalation-suppression.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Escalation queries: creation, open-escalation dedup reads, and resolution.
3
+ *
4
+ * Split out of queries/issues.ts (file-size limit); the issue CRUD stays there
5
+ * and re-exports this module so existing importers of queries/issues.js keep
6
+ * working -- the same shape as the queries/holds.ts split.
7
+ *
8
+ * This module must NOT take a runtime (value) import of `@telora/daemon-core`
9
+ * (only the type import below). Under the node:test module-mock loader a bare
10
+ * `@telora/*` value specifier resolves RELATIVE TO THIS FILE
11
+ * (.../src/queries/@telora/daemon-core) and dies with ERR_MODULE_NOT_FOUND --
12
+ * so every test that registers a mock.module and transitively loads this file
13
+ * fails to even start. The disposition vocabulary is therefore mirrored as
14
+ * type-pinned local literals (DISPOSITION_AGENT_RESOLVABLE / _NEEDS_INTENT);
15
+ * the same quirk keeps src/shell/log.ts daemon-local.
16
+ */
17
+ import { type CallApiDeps } from './shared.js';
18
+ import { resolveProvenance, type EscalationAnchor } from '../completion/escalation-provenance.js';
19
+ /**
20
+ * Parameters for creating an escalation request.
21
+ */
22
+ export interface CreateEscalationParams {
23
+ organizationId: string;
24
+ /** Session context (informational only -- not forwarded to the edge fn). Optional for daemon-side non-team callers. */
25
+ sessionId?: string;
26
+ issueId: string | null;
27
+ reasonType: string;
28
+ description: string;
29
+ whatWasTried?: string;
30
+ helpNeeded?: string;
31
+ /**
32
+ * Optional discriminator for the kind of escalation (e.g. 'stuck_focus_branch').
33
+ * Persisted on `agent_escalations.escalation_kind` when present.
34
+ */
35
+ escalationKind?: string;
36
+ /**
37
+ * Optional structured metadata (e.g. { branch_name, focus_id }).
38
+ * Persisted on `agent_escalations.metadata` when present.
39
+ */
40
+ metadata?: Record<string, unknown>;
41
+ /**
42
+ * Optional first-class provenance: where this escalation came from.
43
+ * Persisted on the agent_escalations product_id/focus_id/delivery_id
44
+ * columns. Prefer deriving these via resolveProvenance(anchor) so no
45
+ * site files an anonymous escalation when an anchor is available.
46
+ */
47
+ productId?: string;
48
+ focusId?: string;
49
+ deliveryId?: string;
50
+ /**
51
+ * Optional disposition: the resolution routing axis (who/what can resolve
52
+ * this). Distinct from escalationKind (the diagnosis). One of
53
+ * EscalationDisposition. Persisted on agent_escalations.disposition.
54
+ */
55
+ disposition?: string;
56
+ /**
57
+ * Optional cross-product TARGET provenance: the product this escalation is a
58
+ * blocker AGAINST (distinct from productId, which is the SOURCE product the
59
+ * escalation came from). Forwarded to the edge as fields.targetProductId. The
60
+ * edge escalation_create handler may or may not persist this on the
61
+ * agent_escalations.target_product_id column yet -- the escalation -> Nexus
62
+ * bridge does not depend on that, since the audit row also carries the target
63
+ * in metadata.target_product_id.
64
+ */
65
+ targetProductId?: string;
66
+ /**
67
+ * Optional provenance anchor: whatever the creation site holds (a delivery,
68
+ * focus, issue, session id, or branch). When present, the shared path runs
69
+ * resolveProvenance(anchor) and stamps the derived product/focus/delivery
70
+ * columns -- so no site files an anonymous escalation when an anchor is
71
+ * available. Explicitly-passed productId/focusId/deliveryId on params WIN
72
+ * over the derived values (caller intent beats derivation).
73
+ */
74
+ anchor?: EscalationAnchor;
75
+ }
76
+ /**
77
+ * Create an escalation request.
78
+ *
79
+ * When `anchor` is supplied, provenance is derived centrally via
80
+ * resolveProvenance and merged with any explicit productId/focusId/deliveryId
81
+ * on params (explicit wins). This is the single stamping point that closes
82
+ * Delivery C: every site routes through here and provenance is guaranteed
83
+ * whenever an anchor is available. resolveProvenance never throws, so a
84
+ * derivation miss degrades to the explicit fields (or none) rather than
85
+ * aborting the escalation.
86
+ */
87
+ /**
88
+ * Injectable deps for createEscalation. Two-dep cascade: the shared path calls
89
+ * BOTH callApi (to write the row) AND resolveProvenance (to derive the anchor's
90
+ * product/focus/delivery columns). CallApiDeps only covers callApi, so this
91
+ * local interface adds the provenance seam. A test injects fakes THROUGH deps,
92
+ * registering ZERO mock.module (which would poison the daemon-core mock-loader);
93
+ * production callers pass nothing and get the real imports.
94
+ */
95
+ export interface CreateEscalationDeps extends CallApiDeps {
96
+ resolveProvenance?: typeof resolveProvenance;
97
+ }
98
+ export declare function createEscalation(params: CreateEscalationParams, deps?: CreateEscalationDeps): Promise<{
99
+ escalationId: string | null;
100
+ }>;
101
+ /**
102
+ * Minimal shape of an escalation row returned by listPendingEscalations.
103
+ * Only includes the fields needed by the merge-back loop.
104
+ */
105
+ export interface PendingEscalation {
106
+ id: string;
107
+ reasonType: string;
108
+ description: string;
109
+ whatWasTried: string | null;
110
+ helpNeeded: string | null;
111
+ escalationKind?: string | null;
112
+ metadata?: Record<string, unknown> | null;
113
+ }
114
+ /**
115
+ * List open (not-yet-resolved) escalations for the organization.
116
+ *
117
+ * Returns rows with status in `('pending', 'in_review')` -- both are
118
+ * "open" from a dedup perspective. An operator may move a stuck-branch
119
+ * escalation to `in_review` while triaging; the merge-back loop must
120
+ * still treat it as suppressing duplicates so it does not file a second
121
+ * `pending` row for the same branch.
122
+ *
123
+ * Used by the merge-back loop to detect when a branch already has an
124
+ * unresolved merge-conflict escalation, and to find existing stuck-branch
125
+ * escalations for dedup / auto-resolution.
126
+ */
127
+ export declare function listPendingEscalations(deps?: CallApiDeps): Promise<PendingEscalation[]>;
128
+ /**
129
+ * Returns true when an open (status pending or in_review) team_failure
130
+ * escalation exists for the given focus.
131
+ *
132
+ * Used by the focus-executor spawn precondition to prevent respawning a
133
+ * team that has already given up on a focus. The escalation row is the
134
+ * signal "this focus is not currently workable"; until a human resolves
135
+ * it, the daemon should not spend cycles re-deriving the same conclusion.
136
+ *
137
+ * Dedup matches on the first-class `focus_id` column (stamped via the
138
+ * anchor since Delivery B of the Escalation Signal Richness focus). A
139
+ * metadata.focusId fallback covers any rows that predate the migration's
140
+ * backfill and landed in the deployment window before the daemon restarted.
141
+ */
142
+ export declare function hasOpenTeamFailureEscalation(focusId: string, deps?: CallApiDeps, opts?: {
143
+ excludeAgentResolvable?: boolean;
144
+ }): Promise<boolean>;
145
+ /**
146
+ * Returns true when an open (status pending or in_review) escalation exists
147
+ * for the given delivery + kind discriminator.
148
+ *
149
+ * Now that the advance-block class is a first-class `escalation_kind`
150
+ * ('advance_blocked', added to the DB CHECK + ESCALATION_KINDS) and the
151
+ * delivery is a first-class `delivery_id` column, dedup matches on the
152
+ * COLUMNS in preference to the metadata bag. A metadata fallback is retained
153
+ * for back-compat with rows already open at deploy time (filed before this
154
+ * promotion, which carry the discriminator only in metadata.kind /
155
+ * metadata.deliveryId).
156
+ *
157
+ * Used by the delivery advance-block path so a delivery stuck across many
158
+ * polls files exactly one open escalation instead of one per tick.
159
+ */
160
+ export declare function hasOpenEscalationForDelivery(deliveryId: string, escalationKind: string): Promise<boolean>;
161
+ /**
162
+ * escalation_kind discriminators for the two focus-merge worktree-dirty
163
+ * classes. Declared as daemon-local string constants (not imported from
164
+ * @telora/daemon-core's ESCALATION_KINDS) on purpose: the daemon consumes the
165
+ * registry-PUBLISHED daemon-core, so it cannot reference newly-added enum
166
+ * members until a build that depends on a daemon-core publish carrying them.
167
+ * They ARE now in daemon-core (ESCALATION_KINDS.MERGE_CONFLICT /
168
+ * .MERGE_REFUSED_DIRTY, shipped in 0.2.45) for other consumers (frontend, MCP),
169
+ * but the daemon keeps the local strings so this code does not depend on the
170
+ * publish ordering. The DB CHECK is the real constraint -- loosened by the
171
+ * agent_escalations_kind_merge_classes migration to admit these two values --
172
+ * and the daemon stamps them as plain strings.
173
+ * (advance_blocked already shipped in daemon-core as ESCALATION_KINDS.ADVANCE_BLOCKED.)
174
+ */
175
+ export declare const MERGE_CONFLICT_ESCALATION_KIND = "merge_conflict";
176
+ export declare const MERGE_REFUSED_DIRTY_ESCALATION_KIND = "merge_refused_dirty";
177
+ /**
178
+ * The worktree-dirty escalation classes: a single physical fact (one focus
179
+ * worktree with uncommitted changes) can be observed by three independent
180
+ * daemon paths -- the delivery advance-block guard (advance_blocked), the
181
+ * focus-merge dirty-worktree refusal (merge_refused_dirty), and the
182
+ * focus-merge conflict path (merge_conflict). They are siblings: when one is
183
+ * already open for a focus, the others should suppress rather than pile on.
184
+ */
185
+ export declare const WORKTREE_DIRTY_ESCALATION_KINDS: readonly string[];
186
+ /**
187
+ * Returns true when an open (status pending or in_review) worktree-dirty-class
188
+ * escalation exists for the given FOCUS.
189
+ *
190
+ * This generalizes hasOpenEscalationForDelivery from per-delivery to
191
+ * focus/worktree grain. A dirty worktree is a property of one focus worktree
192
+ * shared by all of the focus's deliveries, so deduping per delivery emits N
193
+ * rows for one physical fact. Keying on the focus collapses them to one.
194
+ *
195
+ * It also collapses ACROSS escalation classes: by default the sibling set is
196
+ * { advance_blocked, merge_conflict, merge_refused_dirty }, so an open
197
+ * advance-block escalation suppresses a merge-refuse one (and vice versa) --
198
+ * one dirty-worktree fact yields at most one open escalation regardless of how
199
+ * many code paths observe it. Pass `kinds` to narrow the sibling set.
200
+ *
201
+ * Dedup matches on the typed `focus_id` + `escalation_kind` COLUMNS in
202
+ * preference to the metadata bag, with a metadata fallback (metadata.focusId /
203
+ * metadata.kind) for rows already open at deploy time. Because it queries the
204
+ * DB rather than an in-memory Set, the dedup survives a daemon restart.
205
+ *
206
+ * The request narrows server-side by `focusId` + open `statuses` (both honored
207
+ * by the live escalation_list handler) so the 500-row page is scoped to this
208
+ * focus's open rows, not the org's newest 500 -- closing the gap where a busy
209
+ * org could push the matching sibling off the page. The status + focus + kind
210
+ * predicate is ALSO applied client-side (isOpenWorktreeDirtyMatch) as
211
+ * defense-in-depth.
212
+ */
213
+ export declare function hasOpenWorktreeDirtyEscalation(focusId: string, kinds?: readonly string[], deps?: CallApiDeps): Promise<boolean>;
214
+ /** The escalation_kind filed by the planning-wedge watchdog. */
215
+ export declare const WEDGED_FOCUS_ESCALATION_KIND = "wedged_focus";
216
+ /**
217
+ * Returns true when an OPEN (status pending or in_review) wedged_focus
218
+ * escalation already exists for the given FOCUS.
219
+ *
220
+ * The planning-wedge watchdog re-evaluates every poll tick, so without a dedup
221
+ * it would file an identical wedged_focus row each tick the focus stays wedged
222
+ * (the 172-duplicate storm class). Keying on the focus + escalation_kind COLUMNS
223
+ * collapses the threshold-crossing escalation to at most one open row per focus.
224
+ *
225
+ * Mirrors hasOpenWorktreeDirtyEscalation: the request narrows server-side by
226
+ * focusId + open statuses (both honored by the live escalation_list handler) so
227
+ * a busy org cannot page the matching row off the 500-row window, and the
228
+ * status + focus + kind predicate is ALSO applied client-side as defense-in-depth.
229
+ * Because it queries the DB rather than an in-memory Set, the dedup SURVIVES A
230
+ * DAEMON RESTART -- a restart cannot re-storm a focus that is still wedged.
231
+ */
232
+ export declare function hasOpenWedgedFocusEscalation(focusId: string): Promise<boolean>;
233
+ /**
234
+ * Returns true when an OPEN (status pending or in_review) escalation of the
235
+ * given `escalationKind` already exists for the given FOCUS. Generic per-focus
236
+ * dedup, mirroring hasOpenWedgedFocusEscalation but parameterized on the kind.
237
+ *
238
+ * Used by the targeted stall detectors (review_window_stalled) so a focus that
239
+ * stays stalled across many poll ticks files exactly one open escalation
240
+ * instead of one per tick. Queries the DB (not an in-memory Set), so the dedup
241
+ * survives a daemon restart. Narrows server-side by focusId + open statuses and
242
+ * re-applies the status/focus/kind predicate client-side as defense-in-depth.
243
+ */
244
+ /**
245
+ * The escalation_kind the review-exit drift-streak breaker files when a focus
246
+ * branch keeps advancing DURING each review pass (review-exit-escalations.ts).
247
+ * Named here so the respawn guard and the filer agree on the exact string.
248
+ */
249
+ export declare const REVIEW_COVERAGE_INCOMPLETE_ESCALATION_KIND = "review_coverage_incomplete";
250
+ /**
251
+ * Returns true when an open (status pending or in_review)
252
+ * review_coverage_incomplete escalation exists for the given focus.
253
+ *
254
+ * Used by the respawn guard so a focus whose drift-streak breaker has already
255
+ * fired parks its re-review spawns instead of burning a review cycle every
256
+ * spawn cooldown while the escalation sits open (the 2026-08-06 incident: the
257
+ * breaker fired 4 minutes in, but nothing stopped the loop for 4.5h). Mirrors
258
+ * hasOpenTeamFailureEscalation; delegates to the generic per-focus dedup query.
259
+ */
260
+ export declare function hasOpenReviewCoverageIncompleteEscalation(focusId: string): Promise<boolean>;
261
+ export declare function hasOpenFocusEscalation(focusId: string, escalationKind: string): Promise<boolean>;
262
+ /**
263
+ * The close half for a per-FOCUS escalation kind: resolve every open (pending or
264
+ * in_review) escalation of `escalationKind` for the focus, once the daemon has
265
+ * observed its clearing condition. Mirrors resolveOpenWorktreeDirtyEscalations
266
+ * (the delivery-scoped precedent) for the focus-scoped blocking kinds that
267
+ * applyRespawnGuard reads as a spawn block (team_failure) -- so a machine-filed
268
+ * spawn block clears itself the moment its own condition (genuine progress)
269
+ * clears, and the armed focus resumes spawning with no human act.
270
+ *
271
+ * Best-effort: a resolve failure for one row is logged and skipped, never thrown,
272
+ * so the caller's primary work (advancing a delivery) is not blocked. Returns the
273
+ * count resolved.
274
+ */
275
+ /**
276
+ * Read the OPEN (pending or in_review) escalations of `escalationKind` for a
277
+ * focus, returning each row's id + metadata. The read sibling of
278
+ * resolveOpenFocusEscalationsOfKind, for close-halves whose clearing condition
279
+ * is per-row (e.g. review_coverage_incomplete clears only when the focus branch
280
+ * has stabilized at the tip recorded in the row's metadata at filing).
281
+ */
282
+ /**
283
+ * List the escalation_kind of every OPEN (pending/in_review) escalation naming a
284
+ * focus -- the raw evidence the wedge-cause arbiter (TEL-3) draws on. Any-kind
285
+ * (no server kind filter); the caller narrows to wedge causes. Column-first with
286
+ * the metadata.focusId fallback for pre-backfill rows.
287
+ */
288
+ export declare function listOpenFocusEscalationKinds(focusId: string, deps?: CallApiDeps): Promise<string[]>;
289
+ export declare function listOpenFocusEscalationsOfKind(focusId: string, escalationKind: string, deps?: CallApiDeps): Promise<Array<{
290
+ id: string;
291
+ metadata: Record<string, unknown> | null;
292
+ }>>;
293
+ export declare function resolveOpenFocusEscalationsOfKind(focusId: string, escalationKind: string, resolutionNotes: string, deps?: CallApiDeps): Promise<number>;
294
+ /**
295
+ * Auto-resolve the open worktree-dirty escalations for a focus once their
296
+ * underlying condition has cleared (the worktree is observed clean again, or a
297
+ * merge conflict has been merged through). Lists the open rows for the focus
298
+ * narrowed to `kinds`, resolves each with a daemon-remediation note, and
299
+ * returns the count resolved.
300
+ *
301
+ * This is the close half of the disposition-aware model: an agent_resolvable
302
+ * condition that auto-remediates should also stop showing in the human inbox
303
+ * the moment it clears, instead of lingering as a resolved-in-fact but
304
+ * still-pending row. Best-effort: a resolve failure for one row is logged and
305
+ * skipped, never thrown, so the caller's primary work is not blocked.
306
+ *
307
+ * Callers MUST pass `kinds` narrowed to the conditions the clearing event
308
+ * actually resolves -- e.g. a clean worktree clears advance_blocked /
309
+ * merge_refused_dirty but NOT merge_conflict (a content conflict is not a dirty
310
+ * worktree), and a successful merge clears merge_conflict.
311
+ */
312
+ export declare function resolveOpenWorktreeDirtyEscalations(focusId: string, kinds: readonly string[], resolutionNotes?: string, deps?: CallApiDeps): Promise<number>;
313
+ /**
314
+ * Returns true when an OPEN (status pending or in_review) PRD machine escalation
315
+ * of the given `discriminator` already exists for the given PRD.
316
+ *
317
+ * PRD machine escalations are filed via escalations.fileEscalation with a machine
318
+ * `kind` -- carried in metadata.machine_discriminator (NOT the escalation_kind
319
+ * CHECK enum) -- and the prd id folded from `details` into metadata.prdId. So
320
+ * dedup matches on those two metadata fields. Parameterizing the discriminator
321
+ * lets every cadence-reachable PRD escalation path share ONE idempotency guard:
322
+ * the steward divergence path ('prd_divergence_steward_escalation') AND the
323
+ * reflex no-surviving-path fallback ('prd_divergence_no_surviving_path'), both of
324
+ * which would otherwise flood identically (the 172-duplicate storm class).
325
+ *
326
+ * Because it queries the DB rather than a process-lifetime in-memory Set, the
327
+ * dedup SURVIVES A DAEMON RESTART: the escalation storm this prevents (identical
328
+ * pending rows filed every cadence tick) cannot recur after a restart, unlike the
329
+ * no-arm-role Set whose intentional restart-renotify semantics stay untouched.
330
+ *
331
+ * The request narrows server-side by metadata->>prdId (metadataPrdId, honored by
332
+ * the live escalation_list handler) so a busy org cannot page this PRD's row off
333
+ * the 500-row window. The metadata predicate is ALSO applied client-side as
334
+ * defense-in-depth AND so the dedup works before the edge-fn filter deploys
335
+ * (edge changes propagate via the separate INFRA pipeline) -- an unknown
336
+ * metadataPrdId field is simply ignored server-side until then.
337
+ */
338
+ export declare function hasOpenPrdEscalation(prdId: string, discriminator: string): Promise<boolean>;
339
+ /**
340
+ * Mark an escalation as resolved with optional notes.
341
+ */
342
+ export declare function markEscalationResolved(escalationId: string, resolutionNotes?: string, deps?: CallApiDeps): Promise<void>;
343
+ //# sourceMappingURL=escalations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escalations.d.ts","sourceRoot":"","sources":["../../src/queries/escalations.ts"],"names":[],"mappings":"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"}