@telora/daemon 0.20.4 → 0.20.19

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 (627) hide show
  1. package/build-info.json +13 -3
  2. package/dist/ai-inspection-context.d.ts.map +1 -1
  3. package/dist/ai-inspection-context.js +5 -3
  4. package/dist/ai-inspection-context.js.map +1 -1
  5. package/dist/assembly-engine.d.ts.map +1 -1
  6. package/dist/assembly-engine.js +4 -2
  7. package/dist/assembly-engine.js.map +1 -1
  8. package/dist/audit-hooks.d.ts.map +1 -1
  9. package/dist/audit-hooks.js +3 -1
  10. package/dist/audit-hooks.js.map +1 -1
  11. package/dist/auth-liveness.d.ts.map +1 -1
  12. package/dist/auth-liveness.js +4 -2
  13. package/dist/auth-liveness.js.map +1 -1
  14. package/dist/auto-update.d.ts.map +1 -1
  15. package/dist/auto-update.js +14 -12
  16. package/dist/auto-update.js.map +1 -1
  17. package/dist/backends/codex/codex-backend.d.ts.map +1 -1
  18. package/dist/backends/codex/codex-backend.js +4 -2
  19. package/dist/backends/codex/codex-backend.js.map +1 -1
  20. package/dist/backends/codex/codex-mcp-proxy.d.ts.map +1 -1
  21. package/dist/backends/codex/codex-mcp-proxy.js +3 -1
  22. package/dist/backends/codex/codex-mcp-proxy.js.map +1 -1
  23. package/dist/backends/lacuna/lifecycle.d.ts.map +1 -1
  24. package/dist/backends/lacuna/lifecycle.js +4 -2
  25. package/dist/backends/lacuna/lifecycle.js.map +1 -1
  26. package/dist/backends/resolve.d.ts.map +1 -1
  27. package/dist/backends/resolve.js +3 -1
  28. package/dist/backends/resolve.js.map +1 -1
  29. package/dist/cascade-restatement.d.ts.map +1 -1
  30. package/dist/cascade-restatement.js +15 -13
  31. package/dist/cascade-restatement.js.map +1 -1
  32. package/dist/ci-escalation.d.ts.map +1 -1
  33. package/dist/ci-escalation.js +4 -2
  34. package/dist/ci-escalation.js.map +1 -1
  35. package/dist/ci-sensor-loop.d.ts.map +1 -1
  36. package/dist/ci-sensor-loop.js +6 -4
  37. package/dist/ci-sensor-loop.js.map +1 -1
  38. package/dist/ci-status-git.d.ts +5 -6
  39. package/dist/ci-status-git.d.ts.map +1 -1
  40. package/dist/ci-status-git.js +7 -7
  41. package/dist/ci-status-git.js.map +1 -1
  42. package/dist/cli/connect.d.ts.map +1 -1
  43. package/dist/cli/connect.js +9 -2
  44. package/dist/cli/connect.js.map +1 -1
  45. package/dist/cli/open.d.ts.map +1 -1
  46. package/dist/cli/open.js +9 -2
  47. package/dist/cli/open.js.map +1 -1
  48. package/dist/cli/session-state.d.ts.map +1 -1
  49. package/dist/cli/session-state.js +2 -0
  50. package/dist/cli/session-state.js.map +1 -1
  51. package/dist/cli/verify-setup.d.ts.map +1 -1
  52. package/dist/cli/verify-setup.js +9 -4
  53. package/dist/cli/verify-setup.js.map +1 -1
  54. package/dist/close-loop-dispatcher.d.ts.map +1 -1
  55. package/dist/close-loop-dispatcher.js +6 -4
  56. package/dist/close-loop-dispatcher.js.map +1 -1
  57. package/dist/completion/advanceability.d.ts.map +1 -1
  58. package/dist/completion/advanceability.js +3 -1
  59. package/dist/completion/advanceability.js.map +1 -1
  60. package/dist/completion/agent-completion.d.ts.map +1 -1
  61. package/dist/completion/agent-completion.js +11 -9
  62. package/dist/completion/agent-completion.js.map +1 -1
  63. package/dist/completion/event-escalations.d.ts.map +1 -1
  64. package/dist/completion/event-escalations.js +10 -8
  65. package/dist/completion/event-escalations.js.map +1 -1
  66. package/dist/completion/event-phases.d.ts +104 -0
  67. package/dist/completion/event-phases.d.ts.map +1 -0
  68. package/dist/completion/event-phases.js +572 -0
  69. package/dist/completion/event-phases.js.map +1 -0
  70. package/dist/completion/event.d.ts +1 -1
  71. package/dist/completion/event.d.ts.map +1 -1
  72. package/dist/completion/event.js +36 -592
  73. package/dist/completion/event.js.map +1 -1
  74. package/dist/completion/merge-phase.d.ts.map +1 -1
  75. package/dist/completion/merge-phase.js +14 -12
  76. package/dist/completion/merge-phase.js.map +1 -1
  77. package/dist/completion/read-only-pristine.d.ts.map +1 -1
  78. package/dist/completion/read-only-pristine.js +6 -4
  79. package/dist/completion/read-only-pristine.js.map +1 -1
  80. package/dist/completion/review-exit-phase.d.ts +2 -0
  81. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  82. package/dist/completion/review-exit-phase.js +86 -30
  83. package/dist/completion/review-exit-phase.js.map +1 -1
  84. package/dist/completion/review-exit-shortfall.d.ts +62 -0
  85. package/dist/completion/review-exit-shortfall.d.ts.map +1 -0
  86. package/dist/completion/review-exit-shortfall.js +84 -0
  87. package/dist/completion/review-exit-shortfall.js.map +1 -0
  88. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  89. package/dist/completion/status-advance-phase.js +16 -14
  90. package/dist/completion/status-advance-phase.js.map +1 -1
  91. package/dist/completion/team-completion.d.ts.map +1 -1
  92. package/dist/completion/team-completion.js +16 -14
  93. package/dist/completion/team-completion.js.map +1 -1
  94. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  95. package/dist/completion/team-lifecycle.js +32 -33
  96. package/dist/completion/team-lifecycle.js.map +1 -1
  97. package/dist/completion/terminated-work-reconcile.d.ts.map +1 -1
  98. package/dist/completion/terminated-work-reconcile.js +11 -9
  99. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  100. package/dist/condition-evaluators.d.ts.map +1 -1
  101. package/dist/condition-evaluators.js +3 -1
  102. package/dist/condition-evaluators.js.map +1 -1
  103. package/dist/config-reconcile.d.ts.map +1 -1
  104. package/dist/config-reconcile.js +3 -1
  105. package/dist/config-reconcile.js.map +1 -1
  106. package/dist/config.d.ts +4 -4
  107. package/dist/config.d.ts.map +1 -1
  108. package/dist/config.js +39 -37
  109. package/dist/config.js.map +1 -1
  110. package/dist/control-state.d.ts.map +1 -1
  111. package/dist/control-state.js +26 -24
  112. package/dist/control-state.js.map +1 -1
  113. package/dist/crash-recovery.d.ts.map +1 -1
  114. package/dist/crash-recovery.js +43 -41
  115. package/dist/crash-recovery.js.map +1 -1
  116. package/dist/daemon-logs.d.ts.map +1 -1
  117. package/dist/daemon-logs.js +21 -3
  118. package/dist/daemon-logs.js.map +1 -1
  119. package/dist/daemon-process.d.ts +0 -1
  120. package/dist/daemon-process.d.ts.map +1 -1
  121. package/dist/daemon-process.js +15 -10
  122. package/dist/daemon-process.js.map +1 -1
  123. package/dist/delivery-advance-block.d.ts +4 -4
  124. package/dist/delivery-advance-block.d.ts.map +1 -1
  125. package/dist/delivery-advance-block.js +25 -18
  126. package/dist/delivery-advance-block.js.map +1 -1
  127. package/dist/delivery-guards.d.ts.map +1 -1
  128. package/dist/delivery-guards.js +11 -9
  129. package/dist/delivery-guards.js.map +1 -1
  130. package/dist/delivery-lifecycle.d.ts.map +1 -1
  131. package/dist/delivery-lifecycle.js +23 -21
  132. package/dist/delivery-lifecycle.js.map +1 -1
  133. package/dist/delivery-merge.d.ts.map +1 -1
  134. package/dist/delivery-merge.js +10 -8
  135. package/dist/delivery-merge.js.map +1 -1
  136. package/dist/delivery-reconciler-apply.d.ts.map +1 -1
  137. package/dist/delivery-reconciler-apply.js +5 -8
  138. package/dist/delivery-reconciler-apply.js.map +1 -1
  139. package/dist/delivery-reconciler-shadow.d.ts.map +1 -1
  140. package/dist/delivery-reconciler-shadow.js +5 -6
  141. package/dist/delivery-reconciler-shadow.js.map +1 -1
  142. package/dist/directive/close-loop-stage.d.ts.map +1 -1
  143. package/dist/directive/close-loop-stage.js +9 -7
  144. package/dist/directive/close-loop-stage.js.map +1 -1
  145. package/dist/directive/directive-assembly.d.ts.map +1 -1
  146. package/dist/directive/directive-assembly.js +3 -1
  147. package/dist/directive/directive-assembly.js.map +1 -1
  148. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  149. package/dist/directive/directive-dispatch.js +16 -14
  150. package/dist/directive/directive-dispatch.js.map +1 -1
  151. package/dist/directive/directive-queue.d.ts +27 -0
  152. package/dist/directive/directive-queue.d.ts.map +1 -1
  153. package/dist/directive/directive-queue.js +28 -0
  154. package/dist/directive/directive-queue.js.map +1 -1
  155. package/dist/directive/phase-sync.d.ts.map +1 -1
  156. package/dist/directive/phase-sync.js +8 -6
  157. package/dist/directive/phase-sync.js.map +1 -1
  158. package/dist/directive-executor.d.ts +1 -1
  159. package/dist/directive-executor.d.ts.map +1 -1
  160. package/dist/directive-executor.js +12 -10
  161. package/dist/directive-executor.js.map +1 -1
  162. package/dist/discovery-poll.d.ts.map +1 -1
  163. package/dist/discovery-poll.js +8 -6
  164. package/dist/discovery-poll.js.map +1 -1
  165. package/dist/drain-teardown.d.ts.map +1 -1
  166. package/dist/drain-teardown.js +6 -19
  167. package/dist/drain-teardown.js.map +1 -1
  168. package/dist/drift-eval-loop.d.ts.map +1 -1
  169. package/dist/drift-eval-loop.js +10 -8
  170. package/dist/drift-eval-loop.js.map +1 -1
  171. package/dist/drift-ratify-loop.d.ts +68 -0
  172. package/dist/drift-ratify-loop.d.ts.map +1 -0
  173. package/dist/drift-ratify-loop.js +161 -0
  174. package/dist/drift-ratify-loop.js.map +1 -0
  175. package/dist/drift-ratify-policy.d.ts +101 -0
  176. package/dist/drift-ratify-policy.d.ts.map +1 -0
  177. package/dist/drift-ratify-policy.js +178 -0
  178. package/dist/drift-ratify-policy.js.map +1 -0
  179. package/dist/escalation-provenance.d.ts.map +1 -1
  180. package/dist/escalation-provenance.js +8 -3
  181. package/dist/escalation-provenance.js.map +1 -1
  182. package/dist/focus-engine.d.ts.map +1 -1
  183. package/dist/focus-engine.js +36 -34
  184. package/dist/focus-engine.js.map +1 -1
  185. package/dist/focus-executor.d.ts +1 -0
  186. package/dist/focus-executor.d.ts.map +1 -1
  187. package/dist/focus-executor.js +16 -14
  188. package/dist/focus-executor.js.map +1 -1
  189. package/dist/focus-lifecycle.d.ts.map +1 -1
  190. package/dist/focus-lifecycle.js +56 -44
  191. package/dist/focus-lifecycle.js.map +1 -1
  192. package/dist/focus-loop-registry.d.ts.map +1 -1
  193. package/dist/focus-loop-registry.js +87 -36
  194. package/dist/focus-loop-registry.js.map +1 -1
  195. package/dist/focus-merge.d.ts.map +1 -1
  196. package/dist/focus-merge.js +40 -34
  197. package/dist/focus-merge.js.map +1 -1
  198. package/dist/focus-provisioning.d.ts.map +1 -1
  199. package/dist/focus-provisioning.js +15 -13
  200. package/dist/focus-provisioning.js.map +1 -1
  201. package/dist/focus-respawn-guard.d.ts.map +1 -1
  202. package/dist/focus-respawn-guard.js +4 -2
  203. package/dist/focus-respawn-guard.js.map +1 -1
  204. package/dist/focus-stage-lifecycle/planning-release.d.ts.map +1 -1
  205. package/dist/focus-stage-lifecycle/planning-release.js +10 -8
  206. package/dist/focus-stage-lifecycle/planning-release.js.map +1 -1
  207. package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +1 -1
  208. package/dist/focus-stage-lifecycle/review-convergence.js +11 -9
  209. package/dist/focus-stage-lifecycle/review-convergence.js.map +1 -1
  210. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  211. package/dist/focus-stage-lifecycle/wedge-watchdog.js +7 -5
  212. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  213. package/dist/focus-stage-lifecycle.d.ts.map +1 -1
  214. package/dist/focus-stage-lifecycle.js +7 -5
  215. package/dist/focus-stage-lifecycle.js.map +1 -1
  216. package/dist/focus-team-state.d.ts +18 -9
  217. package/dist/focus-team-state.d.ts.map +1 -1
  218. package/dist/focus-team-state.js +37 -18
  219. package/dist/focus-team-state.js.map +1 -1
  220. package/dist/focus-worktree-state.d.ts.map +1 -1
  221. package/dist/focus-worktree-state.js +6 -4
  222. package/dist/focus-worktree-state.js.map +1 -1
  223. package/dist/git/branch.d.ts.map +1 -1
  224. package/dist/git/branch.js +7 -5
  225. package/dist/git/branch.js.map +1 -1
  226. package/dist/git/genesis.d.ts.map +1 -1
  227. package/dist/git/genesis.js +3 -1
  228. package/dist/git/genesis.js.map +1 -1
  229. package/dist/git/integration.d.ts.map +1 -1
  230. package/dist/git/integration.js +4 -2
  231. package/dist/git/integration.js.map +1 -1
  232. package/dist/git/merge-helpers.d.ts.map +1 -1
  233. package/dist/git/merge-helpers.js +6 -4
  234. package/dist/git/merge-helpers.js.map +1 -1
  235. package/dist/git/merge-lock.d.ts +0 -7
  236. package/dist/git/merge-lock.d.ts.map +1 -1
  237. package/dist/git/merge-lock.js +5 -3
  238. package/dist/git/merge-lock.js.map +1 -1
  239. package/dist/git/merge.d.ts.map +1 -1
  240. package/dist/git/merge.js +10 -8
  241. package/dist/git/merge.js.map +1 -1
  242. package/dist/git/state-detector.d.ts.map +1 -1
  243. package/dist/git/state-detector.js +9 -7
  244. package/dist/git/state-detector.js.map +1 -1
  245. package/dist/git/utils.d.ts.map +1 -1
  246. package/dist/git/utils.js +6 -4
  247. package/dist/git/utils.js.map +1 -1
  248. package/dist/git.d.ts.map +1 -1
  249. package/dist/git.js +16 -14
  250. package/dist/git.js.map +1 -1
  251. package/dist/guard-evaluator.d.ts.map +1 -1
  252. package/dist/guard-evaluator.js +3 -1
  253. package/dist/guard-evaluator.js.map +1 -1
  254. package/dist/heartbeat.d.ts.map +1 -1
  255. package/dist/heartbeat.js +14 -11
  256. package/dist/heartbeat.js.map +1 -1
  257. package/dist/host-control/catalog.d.ts.map +1 -1
  258. package/dist/host-control/catalog.js +4 -2
  259. package/dist/host-control/catalog.js.map +1 -1
  260. package/dist/host-control/client.d.ts.map +1 -1
  261. package/dist/host-control/client.js +3 -1
  262. package/dist/host-control/client.js.map +1 -1
  263. package/dist/host-control/sizing.d.ts.map +1 -1
  264. package/dist/host-control/sizing.js +4 -1
  265. package/dist/host-control/sizing.js.map +1 -1
  266. package/dist/index.js +110 -127
  267. package/dist/index.js.map +1 -1
  268. package/dist/install-probe-tick.d.ts.map +1 -1
  269. package/dist/install-probe-tick.js +6 -4
  270. package/dist/install-probe-tick.js.map +1 -1
  271. package/dist/intake-control.d.ts +0 -16
  272. package/dist/intake-control.d.ts.map +1 -1
  273. package/dist/intake-control.js +4 -2
  274. package/dist/intake-control.js.map +1 -1
  275. package/dist/listener-auto-advance.d.ts.map +1 -1
  276. package/dist/listener-auto-advance.js +26 -24
  277. package/dist/listener-auto-advance.js.map +1 -1
  278. package/dist/listener.d.ts.map +1 -1
  279. package/dist/listener.js +59 -39
  280. package/dist/listener.js.map +1 -1
  281. package/dist/log.d.ts +84 -0
  282. package/dist/log.d.ts.map +1 -0
  283. package/dist/log.js +182 -0
  284. package/dist/log.js.map +1 -0
  285. package/dist/loops/context-audit-pass.d.ts.map +1 -1
  286. package/dist/loops/context-audit-pass.js +8 -5
  287. package/dist/loops/context-audit-pass.js.map +1 -1
  288. package/dist/loops/engine.d.ts.map +1 -1
  289. package/dist/loops/engine.js +26 -24
  290. package/dist/loops/engine.js.map +1 -1
  291. package/dist/loops/llm-client.d.ts.map +1 -1
  292. package/dist/loops/llm-client.js +4 -2
  293. package/dist/loops/llm-client.js.map +1 -1
  294. package/dist/loops/llm-flag.d.ts +4 -28
  295. package/dist/loops/llm-flag.d.ts.map +1 -1
  296. package/dist/loops/llm-flag.js +11 -30
  297. package/dist/loops/llm-flag.js.map +1 -1
  298. package/dist/loops/prompt-builder.d.ts.map +1 -1
  299. package/dist/loops/prompt-builder.js +3 -1
  300. package/dist/loops/prompt-builder.js.map +1 -1
  301. package/dist/merge-back-loop.d.ts.map +1 -1
  302. package/dist/merge-back-loop.js +20 -18
  303. package/dist/merge-back-loop.js.map +1 -1
  304. package/dist/merge-detector.d.ts.map +1 -1
  305. package/dist/merge-detector.js +7 -5
  306. package/dist/merge-detector.js.map +1 -1
  307. package/dist/nexus/endpoint-clearance.d.ts.map +1 -1
  308. package/dist/nexus/endpoint-clearance.js +3 -1
  309. package/dist/nexus/endpoint-clearance.js.map +1 -1
  310. package/dist/nexus/escalation-bridge.d.ts.map +1 -1
  311. package/dist/nexus/escalation-bridge.js +3 -1
  312. package/dist/nexus/escalation-bridge.js.map +1 -1
  313. package/dist/nexus/incoming.d.ts.map +1 -1
  314. package/dist/nexus/incoming.js +3 -1
  315. package/dist/nexus/incoming.js.map +1 -1
  316. package/dist/nexus/intake-spawn.d.ts.map +1 -1
  317. package/dist/nexus/intake-spawn.js +6 -4
  318. package/dist/nexus/intake-spawn.js.map +1 -1
  319. package/dist/nexus/intake.d.ts.map +1 -1
  320. package/dist/nexus/intake.js +3 -1
  321. package/dist/nexus/intake.js.map +1 -1
  322. package/dist/nexus/return.d.ts.map +1 -1
  323. package/dist/nexus/return.js +3 -1
  324. package/dist/nexus/return.js.map +1 -1
  325. package/dist/non-interactive-init.d.ts.map +1 -1
  326. package/dist/non-interactive-init.js +0 -0
  327. package/dist/non-interactive-init.js.map +1 -1
  328. package/dist/otlp/port-manager.d.ts.map +1 -1
  329. package/dist/otlp/port-manager.js +7 -5
  330. package/dist/otlp/port-manager.js.map +1 -1
  331. package/dist/otlp/receiver.d.ts.map +1 -1
  332. package/dist/otlp/receiver.js +14 -12
  333. package/dist/otlp/receiver.js.map +1 -1
  334. package/dist/output-monitor.d.ts.map +1 -1
  335. package/dist/output-monitor.js +6 -4
  336. package/dist/output-monitor.js.map +1 -1
  337. package/dist/prd/controller.d.ts.map +1 -1
  338. package/dist/prd/controller.js +7 -5
  339. package/dist/prd/controller.js.map +1 -1
  340. package/dist/prd/focus-pushdown.d.ts.map +1 -1
  341. package/dist/prd/focus-pushdown.js +3 -1
  342. package/dist/prd/focus-pushdown.js.map +1 -1
  343. package/dist/product-scaffold.d.ts.map +1 -1
  344. package/dist/product-scaffold.js +8 -6
  345. package/dist/product-scaffold.js.map +1 -1
  346. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  347. package/dist/prompt-sections/persona-sections.js +41 -4
  348. package/dist/prompt-sections/persona-sections.js.map +1 -1
  349. package/dist/queries/context-assembly.d.ts.map +1 -1
  350. package/dist/queries/context-assembly.js +3 -1
  351. package/dist/queries/context-assembly.js.map +1 -1
  352. package/dist/queries/deliveries.d.ts +22 -0
  353. package/dist/queries/deliveries.d.ts.map +1 -1
  354. package/dist/queries/deliveries.js +13 -5
  355. package/dist/queries/deliveries.js.map +1 -1
  356. package/dist/queries/focuses.d.ts +9 -0
  357. package/dist/queries/focuses.d.ts.map +1 -1
  358. package/dist/queries/focuses.js +17 -1
  359. package/dist/queries/focuses.js.map +1 -1
  360. package/dist/queries/guards.d.ts.map +1 -1
  361. package/dist/queries/guards.js +3 -1
  362. package/dist/queries/guards.js.map +1 -1
  363. package/dist/queries/issues.d.ts.map +1 -1
  364. package/dist/queries/issues.js +3 -1
  365. package/dist/queries/issues.js.map +1 -1
  366. package/dist/queries/reality-tree.d.ts +22 -0
  367. package/dist/queries/reality-tree.d.ts.map +1 -1
  368. package/dist/queries/reality-tree.js +32 -0
  369. package/dist/queries/reality-tree.js.map +1 -1
  370. package/dist/queries/schemas.d.ts +2 -0
  371. package/dist/queries/schemas.d.ts.map +1 -1
  372. package/dist/queries/schemas.js +5 -0
  373. package/dist/queries/schemas.js.map +1 -1
  374. package/dist/queries/system-session.d.ts.map +1 -1
  375. package/dist/queries/system-session.js +5 -3
  376. package/dist/queries/system-session.js.map +1 -1
  377. package/dist/queries/verification.d.ts.map +1 -1
  378. package/dist/queries/verification.js +6 -4
  379. package/dist/queries/verification.js.map +1 -1
  380. package/dist/reality-pole-capture.d.ts.map +1 -1
  381. package/dist/reality-pole-capture.js +7 -4
  382. package/dist/reality-pole-capture.js.map +1 -1
  383. package/dist/reality-pole.d.ts.map +1 -1
  384. package/dist/reality-pole.js +4 -2
  385. package/dist/reality-pole.js.map +1 -1
  386. package/dist/resolvers/agent-escalations.d.ts.map +1 -1
  387. package/dist/resolvers/agent-escalations.js +3 -1
  388. package/dist/resolvers/agent-escalations.js.map +1 -1
  389. package/dist/resolvers/agent-session-summaries.d.ts.map +1 -1
  390. package/dist/resolvers/agent-session-summaries.js +3 -1
  391. package/dist/resolvers/agent-session-summaries.js.map +1 -1
  392. package/dist/resolvers/deployment-profile.d.ts.map +1 -1
  393. package/dist/resolvers/deployment-profile.js +3 -1
  394. package/dist/resolvers/deployment-profile.js.map +1 -1
  395. package/dist/resolvers/drift-shortfall-proposals.d.ts +27 -0
  396. package/dist/resolvers/drift-shortfall-proposals.d.ts.map +1 -0
  397. package/dist/resolvers/drift-shortfall-proposals.js +90 -0
  398. package/dist/resolvers/drift-shortfall-proposals.js.map +1 -0
  399. package/dist/resolvers/escalation-answers.d.ts.map +1 -1
  400. package/dist/resolvers/escalation-answers.js +4 -2
  401. package/dist/resolvers/escalation-answers.js.map +1 -1
  402. package/dist/resolvers/focus-anchoring-injections.d.ts.map +1 -1
  403. package/dist/resolvers/focus-anchoring-injections.js +3 -1
  404. package/dist/resolvers/focus-anchoring-injections.js.map +1 -1
  405. package/dist/resolvers/focus-injections.d.ts.map +1 -1
  406. package/dist/resolvers/focus-injections.js +3 -1
  407. package/dist/resolvers/focus-injections.js.map +1 -1
  408. package/dist/resolvers/focus-last-review-report.d.ts.map +1 -1
  409. package/dist/resolvers/focus-last-review-report.js +3 -1
  410. package/dist/resolvers/focus-last-review-report.js.map +1 -1
  411. package/dist/resolvers/focus-reality-tree.d.ts.map +1 -1
  412. package/dist/resolvers/focus-reality-tree.js +3 -1
  413. package/dist/resolvers/focus-reality-tree.js.map +1 -1
  414. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  415. package/dist/resolvers/git-diff-against-base.js +3 -1
  416. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  417. package/dist/resolvers/guards-evaluation-results.d.ts.map +1 -1
  418. package/dist/resolvers/guards-evaluation-results.js +3 -1
  419. package/dist/resolvers/guards-evaluation-results.js.map +1 -1
  420. package/dist/resolvers/index.d.ts.map +1 -1
  421. package/dist/resolvers/index.js +2 -0
  422. package/dist/resolvers/index.js.map +1 -1
  423. package/dist/resolvers/loop-context.d.ts.map +1 -1
  424. package/dist/resolvers/loop-context.js +6 -2
  425. package/dist/resolvers/loop-context.js.map +1 -1
  426. package/dist/resolvers/loop-delivery-index.d.ts.map +1 -1
  427. package/dist/resolvers/loop-delivery-index.js +3 -1
  428. package/dist/resolvers/loop-delivery-index.js.map +1 -1
  429. package/dist/resolvers/loop-documents.d.ts.map +1 -1
  430. package/dist/resolvers/loop-documents.js +3 -1
  431. package/dist/resolvers/loop-documents.js.map +1 -1
  432. package/dist/resolvers/loop-expected-effects.d.ts.map +1 -1
  433. package/dist/resolvers/loop-expected-effects.js +3 -1
  434. package/dist/resolvers/loop-expected-effects.js.map +1 -1
  435. package/dist/resolvers/loop-frt-statement.d.ts.map +1 -1
  436. package/dist/resolvers/loop-frt-statement.js +3 -1
  437. package/dist/resolvers/loop-frt-statement.js.map +1 -1
  438. package/dist/resolvers/loop-injection.d.ts.map +1 -1
  439. package/dist/resolvers/loop-injection.js +3 -1
  440. package/dist/resolvers/loop-injection.js.map +1 -1
  441. package/dist/resolvers/loop-persona.d.ts.map +1 -1
  442. package/dist/resolvers/loop-persona.js +3 -1
  443. package/dist/resolvers/loop-persona.js.map +1 -1
  444. package/dist/resolvers/loop-questions.d.ts.map +1 -1
  445. package/dist/resolvers/loop-questions.js +3 -1
  446. package/dist/resolvers/loop-questions.js.map +1 -1
  447. package/dist/resolvers/loop-upstream-udes.d.ts.map +1 -1
  448. package/dist/resolvers/loop-upstream-udes.js +3 -1
  449. package/dist/resolvers/loop-upstream-udes.js.map +1 -1
  450. package/dist/resolvers/prd-context.d.ts.map +1 -1
  451. package/dist/resolvers/prd-context.js +3 -1
  452. package/dist/resolvers/prd-context.js.map +1 -1
  453. package/dist/resolvers/reality-metrics.d.ts.map +1 -1
  454. package/dist/resolvers/reality-metrics.js +3 -1
  455. package/dist/resolvers/reality-metrics.js.map +1 -1
  456. package/dist/resolvers/reality-projections.d.ts.map +1 -1
  457. package/dist/resolvers/reality-projections.js +3 -1
  458. package/dist/resolvers/reality-projections.js.map +1 -1
  459. package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -1
  460. package/dist/resolvers/reality-tree-snapshot.js +3 -1
  461. package/dist/resolvers/reality-tree-snapshot.js.map +1 -1
  462. package/dist/resolvers/retired-injections.d.ts.map +1 -1
  463. package/dist/resolvers/retired-injections.js +3 -1
  464. package/dist/resolvers/retired-injections.js.map +1 -1
  465. package/dist/resolvers/review-outcomes.d.ts.map +1 -1
  466. package/dist/resolvers/review-outcomes.js +3 -1
  467. package/dist/resolvers/review-outcomes.js.map +1 -1
  468. package/dist/resolvers/security-advisory.d.ts.map +1 -1
  469. package/dist/resolvers/security-advisory.js +3 -1
  470. package/dist/resolvers/security-advisory.js.map +1 -1
  471. package/dist/resolvers/shared/wiki.d.ts.map +1 -1
  472. package/dist/resolvers/shared/wiki.js +5 -3
  473. package/dist/resolvers/shared/wiki.js.map +1 -1
  474. package/dist/resolvers/wiki-topic.d.ts.map +1 -1
  475. package/dist/resolvers/wiki-topic.js +3 -1
  476. package/dist/resolvers/wiki-topic.js.map +1 -1
  477. package/dist/resolvers/workflow-stages.d.ts.map +1 -1
  478. package/dist/resolvers/workflow-stages.js +3 -1
  479. package/dist/resolvers/workflow-stages.js.map +1 -1
  480. package/dist/schema-version-gate.d.ts.map +1 -1
  481. package/dist/schema-version-gate.js +16 -18
  482. package/dist/schema-version-gate.js.map +1 -1
  483. package/dist/security-finding-gate.d.ts.map +1 -1
  484. package/dist/security-finding-gate.js +3 -1
  485. package/dist/security-finding-gate.js.map +1 -1
  486. package/dist/security-rescan-resolution.d.ts.map +1 -1
  487. package/dist/security-rescan-resolution.js +4 -2
  488. package/dist/security-rescan-resolution.js.map +1 -1
  489. package/dist/security-scan-engine.d.ts.map +1 -1
  490. package/dist/security-scan-engine.js +9 -6
  491. package/dist/security-scan-engine.js.map +1 -1
  492. package/dist/self-update.d.ts.map +1 -1
  493. package/dist/self-update.js +48 -39
  494. package/dist/self-update.js.map +1 -1
  495. package/dist/sensor-sweep.d.ts.map +1 -1
  496. package/dist/sensor-sweep.js +5 -2
  497. package/dist/sensor-sweep.js.map +1 -1
  498. package/dist/session-stamp.d.ts.map +1 -1
  499. package/dist/session-stamp.js +4 -2
  500. package/dist/session-stamp.js.map +1 -1
  501. package/dist/shortfall-disposition-config.d.ts +34 -0
  502. package/dist/shortfall-disposition-config.d.ts.map +1 -0
  503. package/dist/shortfall-disposition-config.js +46 -0
  504. package/dist/shortfall-disposition-config.js.map +1 -0
  505. package/dist/shortfall-disposition-loop.d.ts +86 -0
  506. package/dist/shortfall-disposition-loop.d.ts.map +1 -0
  507. package/dist/shortfall-disposition-loop.js +309 -0
  508. package/dist/shortfall-disposition-loop.js.map +1 -0
  509. package/dist/spawn/model-routing.d.ts.map +1 -1
  510. package/dist/spawn/model-routing.js +19 -16
  511. package/dist/spawn/model-routing.js.map +1 -1
  512. package/dist/spawn/process-spawn.d.ts.map +1 -1
  513. package/dist/spawn/process-spawn.js +29 -22
  514. package/dist/spawn/process-spawn.js.map +1 -1
  515. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  516. package/dist/spawn/prompt-assembly.js +6 -4
  517. package/dist/spawn/prompt-assembly.js.map +1 -1
  518. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  519. package/dist/spawn/spawn-decision.js +16 -14
  520. package/dist/spawn/spawn-decision.js.map +1 -1
  521. package/dist/spawn/worktree-session.d.ts.map +1 -1
  522. package/dist/spawn/worktree-session.js +13 -11
  523. package/dist/spawn/worktree-session.js.map +1 -1
  524. package/dist/spawn-cooldown.d.ts +0 -7
  525. package/dist/spawn-cooldown.d.ts.map +1 -1
  526. package/dist/spawn-cooldown.js +3 -1
  527. package/dist/spawn-cooldown.js.map +1 -1
  528. package/dist/spawn-environment.d.ts.map +1 -1
  529. package/dist/spawn-environment.js +4 -1
  530. package/dist/spawn-environment.js.map +1 -1
  531. package/dist/spawner/helpers.d.ts.map +1 -1
  532. package/dist/spawner/helpers.js +19 -17
  533. package/dist/spawner/helpers.js.map +1 -1
  534. package/dist/spawner/lifecycle.d.ts.map +1 -1
  535. package/dist/spawner/lifecycle.js +17 -13
  536. package/dist/spawner/lifecycle.js.map +1 -1
  537. package/dist/spawner/liveness.d.ts.map +1 -1
  538. package/dist/spawner/liveness.js +7 -5
  539. package/dist/spawner/liveness.js.map +1 -1
  540. package/dist/spawner/resolution.d.ts.map +1 -1
  541. package/dist/spawner/resolution.js +7 -5
  542. package/dist/spawner/resolution.js.map +1 -1
  543. package/dist/spawner/stream-handlers.d.ts +6 -55
  544. package/dist/spawner/stream-handlers.d.ts.map +1 -1
  545. package/dist/spawner/stream-handlers.js +10 -172
  546. package/dist/spawner/stream-handlers.js.map +1 -1
  547. package/dist/spawner/timeout.d.ts.map +1 -1
  548. package/dist/spawner/timeout.js +11 -9
  549. package/dist/spawner/timeout.js.map +1 -1
  550. package/dist/staleness.d.ts.map +1 -1
  551. package/dist/staleness.js +4 -1
  552. package/dist/staleness.js.map +1 -1
  553. package/dist/stall-detector-config.d.ts +6 -17
  554. package/dist/stall-detector-config.d.ts.map +1 -1
  555. package/dist/stall-detector-config.js +10 -36
  556. package/dist/stall-detector-config.js.map +1 -1
  557. package/dist/stall-detectors.d.ts.map +1 -1
  558. package/dist/stall-detectors.js +6 -4
  559. package/dist/stall-detectors.js.map +1 -1
  560. package/dist/state-cascade.d.ts.map +1 -1
  561. package/dist/state-cascade.js +9 -7
  562. package/dist/state-cascade.js.map +1 -1
  563. package/dist/stop-request.d.ts.map +1 -1
  564. package/dist/stop-request.js +6 -2
  565. package/dist/stop-request.js.map +1 -1
  566. package/dist/supabase.d.ts.map +1 -1
  567. package/dist/supabase.js +3 -1
  568. package/dist/supabase.js.map +1 -1
  569. package/dist/telemetry-writer.d.ts.map +1 -1
  570. package/dist/telemetry-writer.js +11 -9
  571. package/dist/telemetry-writer.js.map +1 -1
  572. package/dist/trigger-executor.d.ts.map +1 -1
  573. package/dist/trigger-executor.js +28 -26
  574. package/dist/trigger-executor.js.map +1 -1
  575. package/dist/unified-engine-lifecycle.d.ts +19 -11
  576. package/dist/unified-engine-lifecycle.d.ts.map +1 -1
  577. package/dist/unified-engine-lifecycle.js +71 -70
  578. package/dist/unified-engine-lifecycle.js.map +1 -1
  579. package/dist/unified-init.d.ts.map +1 -1
  580. package/dist/unified-init.js +41 -36
  581. package/dist/unified-init.js.map +1 -1
  582. package/dist/unified-shell-config.d.ts +8 -1
  583. package/dist/unified-shell-config.d.ts.map +1 -1
  584. package/dist/unified-shell-config.js +57 -34
  585. package/dist/unified-shell-config.js.map +1 -1
  586. package/dist/unified-shell-status.d.ts.map +1 -1
  587. package/dist/unified-shell-status.js +39 -37
  588. package/dist/unified-shell-status.js.map +1 -1
  589. package/dist/unified-shell.d.ts.map +1 -1
  590. package/dist/unified-shell.js +37 -41
  591. package/dist/unified-shell.js.map +1 -1
  592. package/dist/verification-baseline.d.ts.map +1 -1
  593. package/dist/verification-baseline.js +7 -4
  594. package/dist/verification-baseline.js.map +1 -1
  595. package/dist/verification-config.d.ts +3 -3
  596. package/dist/verification-config.d.ts.map +1 -1
  597. package/dist/verification-config.js +8 -19
  598. package/dist/verification-config.js.map +1 -1
  599. package/dist/verification-default-on.d.ts +6 -6
  600. package/dist/verification-default-on.d.ts.map +1 -1
  601. package/dist/verification-default-on.js +9 -7
  602. package/dist/verification-default-on.js.map +1 -1
  603. package/dist/verification-deterministic.d.ts.map +1 -1
  604. package/dist/verification-deterministic.js +6 -3
  605. package/dist/verification-deterministic.js.map +1 -1
  606. package/dist/verification-engine.d.ts.map +1 -1
  607. package/dist/verification-engine.js +20 -16
  608. package/dist/verification-engine.js.map +1 -1
  609. package/dist/verification-feedback.d.ts.map +1 -1
  610. package/dist/verification-feedback.js +4 -2
  611. package/dist/verification-feedback.js.map +1 -1
  612. package/dist/version-check.d.ts.map +1 -1
  613. package/dist/version-check.js +5 -3
  614. package/dist/version-check.js.map +1 -1
  615. package/dist/worker-pidfile.d.ts.map +1 -1
  616. package/dist/worker-pidfile.js +8 -3
  617. package/dist/worker-pidfile.js.map +1 -1
  618. package/dist/worktree/focus.d.ts.map +1 -1
  619. package/dist/worktree/focus.js +15 -13
  620. package/dist/worktree/focus.js.map +1 -1
  621. package/dist/worktree/safety.d.ts.map +1 -1
  622. package/dist/worktree/safety.js +13 -11
  623. package/dist/worktree/safety.js.map +1 -1
  624. package/dist/worktree.d.ts.map +1 -1
  625. package/dist/worktree.js +41 -39
  626. package/dist/worktree.js.map +1 -1
  627. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortfall-disposition-config.d.ts","sourceRoot":"","sources":["../src/shortfall-disposition-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;;;;;;;GAUG;AACH,wBAAgB,qCAAqC,CACnD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAUR"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Threshold for the shortfall-disposition attempt bound.
3
+ *
4
+ * The CANONICAL declaration (Zod schema, ENV_VAR_METADATA entry, default,
5
+ * description) lives in packages/daemon-core/src/env-config.ts, exactly like the
6
+ * stall-detector thresholds in stall-detector-config.ts.
7
+ *
8
+ * It is read RAW here rather than through loadEnvConfig() for one reason:
9
+ * @telora/daemon-core is REGISTRY-INSTALLED, not a workspace symlink, so
10
+ * packages/daemon compiles and runs against the PUBLISHED dist. A field added to
11
+ * daemon-core's source is invisible to loadEnvConfig() here until a publish
12
+ * lands and the pin moves. This is the same registry-lag workaround
13
+ * stall-detectors.ts documents for escalation kinds.
14
+ *
15
+ * The raw read is allowlisted in scripts/lint-config.json under "env-reads"
16
+ * with that reason. WHEN daemon-core >0.2.69 IS PUBLISHED AND PINNED: delete the
17
+ * allowlist entry and change this to
18
+ * `loadEnvConfig().TELORA_SHORTFALL_DISPOSITION_ATTEMPT_CAP`.
19
+ *
20
+ * @module shortfall-disposition-config
21
+ */
22
+ /** Must match the daemon-core default so the two cannot silently disagree. */
23
+ const DEFAULT_SHORTFALL_DISPOSITION_ATTEMPT_CAP = 3;
24
+ /**
25
+ * Max scoped disposition passes armed per focus before the daemon stops arming
26
+ * and escalates instead.
27
+ *
28
+ * Invalid values (non-numeric, <= 0) fall back to the default rather than
29
+ * disabling the bound: a zero or negative cap would escalate immediately on
30
+ * every held focus, and a NaN would compare false forever and never escalate --
31
+ * the permanent silent wait this bound exists to prevent. Once daemon-core is
32
+ * republished, Zod's positiveInt does this validation at startup and fails loud,
33
+ * which is strictly better; this is the interim.
34
+ */
35
+ export function resolveShortfallDispositionAttemptCap(env = process.env) {
36
+ const raw = env.TELORA_SHORTFALL_DISPOSITION_ATTEMPT_CAP;
37
+ if (raw === undefined || raw.trim() === '') {
38
+ return DEFAULT_SHORTFALL_DISPOSITION_ATTEMPT_CAP;
39
+ }
40
+ const parsed = Number(raw);
41
+ if (!Number.isFinite(parsed) || !Number.isInteger(parsed) || parsed <= 0) {
42
+ return DEFAULT_SHORTFALL_DISPOSITION_ATTEMPT_CAP;
43
+ }
44
+ return parsed;
45
+ }
46
+ //# sourceMappingURL=shortfall-disposition-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortfall-disposition-config.js","sourceRoot":"","sources":["../src/shortfall-disposition-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,8EAA8E;AAC9E,MAAM,yCAAyC,GAAG,CAAC,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qCAAqC,CACnD,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,GAAG,GAAG,GAAG,CAAC,wCAAwC,CAAC;IACzD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,OAAO,yCAAyC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACzE,OAAO,yCAAyC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Scoped shortfall-disposition pass.
3
+ *
4
+ * A focus carrying an undisposed shortfall cannot converge: the completion gate
5
+ * (review-exit-phase) withholds done until every shortfall is ratified or
6
+ * dismissed. A hold with no self-heal is just a wedge, so this tick finds held
7
+ * focuses and arms a one-shot pass whose ONLY mandate is disposing them.
8
+ *
9
+ * WHY A TICK AND NOT THE REVIEW-EXIT PATH. The mandate covers shortfalls a
10
+ * review missed AND ones that arrived after the review window closed. A late
11
+ * arrival coincides with no review exit at all -- no handler runs to notice it --
12
+ * so arming from the exit path could only ever cover half the job. A tick sees a
13
+ * held focus whenever it becomes held, regardless of what held it.
14
+ *
15
+ * WHAT THIS PASS CAN AND CANNOT DO. It runs as a CODING session (a 'review'
16
+ * sessionType would re-enter the review-exit handler on exit and re-trigger the
17
+ * whole auto-approve evaluation -- a spawn loop). product-api refuses an agent
18
+ * shortfall-RATIFY unless it carries a review session, so this pass structurally
19
+ * cannot ratify. That is deliberate, not a limitation to work around: a pass
20
+ * that cannot lower a bar is a safe pass. It disposes the common case (the work
21
+ * fell short -> file defects + dismiss) and deliberately LEAVES a
22
+ * genuinely-wrong claim undisposed for a real review or an operator. The stall
23
+ * detector bounds that tail.
24
+ *
25
+ * Activation: opt-out via TELORA_SHORTFALL_DISPOSITION_LOOP=0. See
26
+ * `shouldRunLoop()` in focus-engine.ts.
27
+ *
28
+ * @module shortfall-disposition-loop
29
+ */
30
+ import type { DaemonConfig, StageDirective } from './types.js';
31
+ import { getActiveFocuses } from './queries/deliveries.js';
32
+ import { listOpenShortfallProposalIds } from './queries/reality-tree.js';
33
+ import { setShortfallDispositionAttempts } from './queries/focuses.js';
34
+ import { createEscalation, hasOpenFocusEscalation } from './queries/issues.js';
35
+ import { hasPendingSpawnDirective } from './directive/directive-queue.js';
36
+ import { assembleDirectiveContent } from './directive/directive-assembly.js';
37
+ /**
38
+ * The one-shot mandate. Pure + unit-testable.
39
+ *
40
+ * States the RULE only; the drift.shortfall_proposals resolver carries the DATA
41
+ * (ids, claims, both dispositions, the exact params). Duplicating the detail
42
+ * here would drift from the resolver.
43
+ */
44
+ export declare function buildShortfallDispositionDirective(): StageDirective;
45
+ export interface ShortfallDispositionTickResult {
46
+ productsScanned: number;
47
+ focusesScanned: number;
48
+ /** Focuses carrying at least one undisposed shortfall. */
49
+ focusesHeld: number;
50
+ /** Disposition directives armed this tick. */
51
+ armed: number;
52
+ /** Held focuses skipped: a team is already running or a directive is pending. */
53
+ skippedBusy: number;
54
+ /** Focuses that exhausted the attempt bound and were escalated to an operator. */
55
+ escalated: number;
56
+ /** Focuses whose attempt counter was reset because their shortfalls cleared. */
57
+ countersReset: number;
58
+ errors: number;
59
+ }
60
+ export interface ShortfallDispositionDeps {
61
+ getActiveFocuses: typeof getActiveFocuses;
62
+ listOpenShortfallProposalIds: typeof listOpenShortfallProposalIds;
63
+ /** True when a team is already running for the focus. */
64
+ hasActiveTeam: (focusId: string) => boolean;
65
+ hasPendingSpawnDirective: typeof hasPendingSpawnDirective;
66
+ assembleDirectiveContent: typeof assembleDirectiveContent;
67
+ /** Stash the directive for the spawner to consume. */
68
+ armDirective: (focusId: string, message: string, directive: StageDirective) => void;
69
+ /** Persist the durable attempt counter. */
70
+ setShortfallDispositionAttempts: typeof setShortfallDispositionAttempts;
71
+ /** Per-focus dedup so the cap files exactly one open escalation. */
72
+ hasOpenFocusEscalation: typeof hasOpenFocusEscalation;
73
+ createEscalation: typeof createEscalation;
74
+ /** Injectable so the pure decision unit-tests without env or Supabase. */
75
+ cap?: number;
76
+ }
77
+ /**
78
+ * Run one disposition-pass tick across every product in the daemon config.
79
+ *
80
+ * Arms at most one directive per held focus per tick, and never while a team is
81
+ * running or a directive is already pending -- so a focus that stays held across
82
+ * ticks does not accumulate spawns. Per-focus failures are counted and skipped;
83
+ * one unresolvable focus must not stop the others.
84
+ */
85
+ export declare function runShortfallDispositionTick(config: DaemonConfig, depOverrides?: Partial<ShortfallDispositionDeps>): Promise<ShortfallDispositionTickResult>;
86
+ //# sourceMappingURL=shortfall-disposition-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortfall-disposition-loop.d.ts","sourceRoot":"","sources":["../src/shortfall-disposition-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EACL,wBAAwB,EAGzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AA0B7E;;;;;;GAMG;AACH,wBAAgB,kCAAkC,IAAI,cAAc,CA0CnE;AAED,MAAM,WAAW,8BAA8B;IAC7C,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,4BAA4B,EAAE,OAAO,4BAA4B,CAAC;IAClE,yDAAyD;IACzD,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,sDAAsD;IACtD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;IACpF,2CAA2C;IAC3C,+BAA+B,EAAE,OAAO,+BAA+B,CAAC;IACxE,oEAAoE;IACpE,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgGD;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,YAAY,GAAE,OAAO,CAAC,wBAAwB,CAAM,GACnD,OAAO,CAAC,8BAA8B,CAAC,CAuIzC"}
@@ -0,0 +1,309 @@
1
+ /**
2
+ * Scoped shortfall-disposition pass.
3
+ *
4
+ * A focus carrying an undisposed shortfall cannot converge: the completion gate
5
+ * (review-exit-phase) withholds done until every shortfall is ratified or
6
+ * dismissed. A hold with no self-heal is just a wedge, so this tick finds held
7
+ * focuses and arms a one-shot pass whose ONLY mandate is disposing them.
8
+ *
9
+ * WHY A TICK AND NOT THE REVIEW-EXIT PATH. The mandate covers shortfalls a
10
+ * review missed AND ones that arrived after the review window closed. A late
11
+ * arrival coincides with no review exit at all -- no handler runs to notice it --
12
+ * so arming from the exit path could only ever cover half the job. A tick sees a
13
+ * held focus whenever it becomes held, regardless of what held it.
14
+ *
15
+ * WHAT THIS PASS CAN AND CANNOT DO. It runs as a CODING session (a 'review'
16
+ * sessionType would re-enter the review-exit handler on exit and re-trigger the
17
+ * whole auto-approve evaluation -- a spawn loop). product-api refuses an agent
18
+ * shortfall-RATIFY unless it carries a review session, so this pass structurally
19
+ * cannot ratify. That is deliberate, not a limitation to work around: a pass
20
+ * that cannot lower a bar is a safe pass. It disposes the common case (the work
21
+ * fell short -> file defects + dismiss) and deliberately LEAVES a
22
+ * genuinely-wrong claim undisposed for a real review or an operator. The stall
23
+ * detector bounds that tail.
24
+ *
25
+ * Activation: opt-out via TELORA_SHORTFALL_DISPOSITION_LOOP=0. See
26
+ * `shouldRunLoop()` in focus-engine.ts.
27
+ *
28
+ * @module shortfall-disposition-loop
29
+ */
30
+ import { withRetry, ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
31
+ import { configForProduct } from './config.js';
32
+ import { getActiveFocuses } from './queries/deliveries.js';
33
+ import { listOpenShortfallProposalIds } from './queries/reality-tree.js';
34
+ import { setShortfallDispositionAttempts } from './queries/focuses.js';
35
+ import { createEscalation, hasOpenFocusEscalation } from './queries/issues.js';
36
+ import { getActiveTeams } from './focus-team-state.js';
37
+ import { hasPendingSpawnDirective, pendingSpawnDirectives, computeDirectiveHash, } from './directive/directive-queue.js';
38
+ import { assembleDirectiveContent } from './directive/directive-assembly.js';
39
+ import { resolveShortfallDispositionAttemptCap } from './shortfall-disposition-config.js';
40
+ import { createLogger } from './log.js';
41
+ const log = createLogger({ module: 'shortfall-disposition-loop' });
42
+ /**
43
+ * Declared daemon-locally, not imported from @telora/daemon-core's EscalationKind
44
+ * union. That union is registry-published and lags the DB CHECK by several
45
+ * values, so it cannot name this kind until a publish lands. The DB CHECK
46
+ * (20260715231941) is the real constraint. Same workaround stall-detectors.ts
47
+ * documents.
48
+ */
49
+ const SHORTFALL_UNDISPOSED_KIND = 'shortfall_undisposed';
50
+ /**
51
+ * Deliberately narrow. The pass needs the shortfalls (with their ids, claims,
52
+ * and what reality showed -- all rendered by the resolver) and the diff that
53
+ * produced them. Nothing else: a wider recipe invites the pass to re-adjudicate
54
+ * work that is not its mandate.
55
+ */
56
+ const SHORTFALL_DISPOSITION_ASSEMBLY = [
57
+ 'drift.shortfall_proposals',
58
+ 'git.diff_against_base',
59
+ ];
60
+ /**
61
+ * The one-shot mandate. Pure + unit-testable.
62
+ *
63
+ * States the RULE only; the drift.shortfall_proposals resolver carries the DATA
64
+ * (ids, claims, both dispositions, the exact params). Duplicating the detail
65
+ * here would drift from the resolver.
66
+ */
67
+ export function buildShortfallDispositionDirective() {
68
+ return {
69
+ execution: 'spawn',
70
+ compact: null,
71
+ assembly: [...SHORTFALL_DISPOSITION_ASSEMBLY],
72
+ tools: null,
73
+ prompt: [
74
+ 'You are a scoped disposition pass. This focus cannot finish because it',
75
+ 'carries shortfall drift proposals nobody has disposed. Disposing them is',
76
+ 'your ONLY mandate -- do not review the code, do not refactor, do not pick',
77
+ 'up other work.',
78
+ '',
79
+ 'A shortfall says: the reality tree claimed something, and the work',
80
+ 'delivered less than that claim. One of the two was wrong, and until',
81
+ 'someone says which, no delivery on this focus can converge to done.',
82
+ '',
83
+ 'The proposals awaiting you are listed in your context, each with its id,',
84
+ 'the claim, and what reality showed. For EACH one:',
85
+ '',
86
+ '- **The WORK fell short** (the common case) -- file a defect issue on the',
87
+ ' delivery that owns the gap (`telora_product_issue` action=create, type',
88
+ ' Bug or Task, with a concrete title/description the coding team can act',
89
+ ' on), THEN dismiss the proposal via `telora_reality_drift`',
90
+ ' action=dismiss with a non-empty `reason` naming the issues you filed.',
91
+ ' Dismissing REJECTS the proposed correction: the claim stands, and the',
92
+ ' work is what changes. Filing the defect ALONE is not a disposition --',
93
+ ' it leaves the proposal open and the focus stays wedged.',
94
+ '',
95
+ '- **The CLAIM was wrong** -- the tree asserted something it should never',
96
+ ' have asserted. You CANNOT dispose this case: amending a claim requires',
97
+ ' an independent review session, and you are not one. Do NOT dismiss it',
98
+ ' to clear the queue -- dismissing asserts the claim stands, which would',
99
+ ' be a false statement about reality. LEAVE IT UNDISPOSED and say so',
100
+ ' plainly in your final message, naming the proposal id and why you',
101
+ ' believe the claim is wrong. An operator will be escalated to.',
102
+ '',
103
+ 'Never dismiss a proposal you have not actually understood. An unexplained',
104
+ 'dismissal discards the signal the loop exists to carry, and the dismiss',
105
+ 'rate is measured.',
106
+ ].join('\n'),
107
+ model: null,
108
+ };
109
+ }
110
+ function defaultArmDirective(focusId, message, directive) {
111
+ pendingSpawnDirectives.set(focusId, {
112
+ message,
113
+ model: directive.model ?? null,
114
+ // Fixed-purpose one-shot: the focus's model selector must not override it.
115
+ focusOverrideModel: null,
116
+ // MUST be 'coding'. A 'review' sessionType re-enters runReviewExitHandler on
117
+ // exit and re-triggers the auto-approve evaluation -- a spawn loop. The
118
+ // close_loop bookkeeper sets 'coding' for exactly this reason.
119
+ sessionType: 'coding',
120
+ // Its own lineage slot: cannot resume or clobber the coder's or reviewer's
121
+ // context (session-lineage.ts:53-70).
122
+ lineage: 'shortfall_disposition',
123
+ continuity: 'fresh',
124
+ contentHash: computeDirectiveHash(directive),
125
+ });
126
+ }
127
+ function defaultDeps() {
128
+ return {
129
+ getActiveFocuses,
130
+ listOpenShortfallProposalIds,
131
+ hasActiveTeam: (focusId) => getActiveTeams().has(focusId),
132
+ hasPendingSpawnDirective,
133
+ assembleDirectiveContent,
134
+ armDirective: defaultArmDirective,
135
+ setShortfallDispositionAttempts,
136
+ hasOpenFocusEscalation,
137
+ createEscalation,
138
+ };
139
+ }
140
+ /**
141
+ * File the one escalation that lets a human into this loop.
142
+ *
143
+ * Deduped per focus against the DB (not memory), so the bound holds across a
144
+ * daemon restart and a held focus accrues exactly one open escalation.
145
+ */
146
+ async function escalateUndisposed(deps, params) {
147
+ if (await deps.hasOpenFocusEscalation(params.focusId, SHORTFALL_UNDISPOSED_KIND)) {
148
+ return false;
149
+ }
150
+ await withRetry(() => deps.createEscalation({
151
+ organizationId: params.organizationId,
152
+ sessionId: '',
153
+ issueId: null,
154
+ reasonType: ESCALATION_REASONS.BLOCKED_BY_EXTERNAL,
155
+ disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
156
+ anchor: { focusId: params.focusId },
157
+ escalationKind: SHORTFALL_UNDISPOSED_KIND,
158
+ description: `Focus "${params.focusName}" cannot finish: ${params.shortfallIds.length} shortfall ` +
159
+ `drift proposal(s) are still undisposed after ${params.attempts} disposition pass(es) ` +
160
+ `(cap ${params.cap}). Its deliveries are held in verify and the loop will not ` +
161
+ `converge on its own.\n\n` +
162
+ `**Focus:** ${params.focusName}\n` +
163
+ `**Focus ID:** ${params.focusId}\n` +
164
+ `**Undisposed proposals:** ${params.shortfallIds.join(', ')}\n\n` +
165
+ `A shortfall means the reality tree claimed something and the work delivered less ` +
166
+ `than that claim. One of the two is wrong, and the machine could not decide which.\n\n` +
167
+ `The likeliest cause is that the CLAIM is wrong: the disposition pass runs as a ` +
168
+ `coding session and CANNOT ratify (amending a claim requires an independent review ` +
169
+ `session), so it correctly left these alone rather than dismissing them falsely.`,
170
+ whatWasTried: `${params.attempts} scoped disposition pass(es) were armed. Each could file defects ` +
171
+ `and dismiss a proposal whose CLAIM stands, but none disposed these.`,
172
+ helpNeeded: `Decide, per proposal: if the CLAIM was wrong, ratify it (with a rationale) so the ` +
173
+ `tree amends; if the WORK fell short, dismiss it (with a reason) and ensure defect ` +
174
+ `issues exist so the delivery re-codes. Either disposition clears the hold.`,
175
+ metadata: {
176
+ cause: SHORTFALL_UNDISPOSED_KIND,
177
+ focusName: params.focusName,
178
+ shortfallProposalIds: params.shortfallIds,
179
+ attempts: params.attempts,
180
+ cap: params.cap,
181
+ },
182
+ }), { maxAttempts: 3, label: `escalation-shortfall-undisposed-${params.focusId}` });
183
+ return true;
184
+ }
185
+ /**
186
+ * Run one disposition-pass tick across every product in the daemon config.
187
+ *
188
+ * Arms at most one directive per held focus per tick, and never while a team is
189
+ * running or a directive is already pending -- so a focus that stays held across
190
+ * ticks does not accumulate spawns. Per-focus failures are counted and skipped;
191
+ * one unresolvable focus must not stop the others.
192
+ */
193
+ export async function runShortfallDispositionTick(config, depOverrides = {}) {
194
+ const deps = { ...defaultDeps(), ...depOverrides };
195
+ const cap = deps.cap ?? resolveShortfallDispositionAttemptCap();
196
+ const counts = {
197
+ productsScanned: 0,
198
+ focusesScanned: 0,
199
+ focusesHeld: 0,
200
+ armed: 0,
201
+ skippedBusy: 0,
202
+ escalated: 0,
203
+ countersReset: 0,
204
+ errors: 0,
205
+ };
206
+ for (const product of config.products) {
207
+ counts.productsScanned += 1;
208
+ const pc = configForProduct(config, product);
209
+ let focuses;
210
+ try {
211
+ focuses = await deps.getActiveFocuses(config.organizationId, product.id);
212
+ }
213
+ catch (err) {
214
+ counts.errors += 1;
215
+ log.warn(`[shortfall-disposition] getActiveFocuses failed for product ${product.id}: ${err.message}`);
216
+ continue;
217
+ }
218
+ for (const focus of focuses) {
219
+ counts.focusesScanned += 1;
220
+ let shortfallIds;
221
+ try {
222
+ shortfallIds = await deps.listOpenShortfallProposalIds(focus.focus_id);
223
+ }
224
+ catch (err) {
225
+ counts.errors += 1;
226
+ log.warn(`[shortfall-disposition] shortfall lookup failed for "${focus.focus_name}": ${err.message}`);
227
+ continue;
228
+ }
229
+ const attempts = focus.shortfall_disposition_attempts ?? 0;
230
+ if (shortfallIds.length === 0) {
231
+ // Cleared. Reset the budget so a later, unrelated shortfall gets a full
232
+ // set of attempts rather than inheriting an exhausted counter.
233
+ if (attempts > 0) {
234
+ try {
235
+ await deps.setShortfallDispositionAttempts(focus.focus_id, 0);
236
+ counts.countersReset += 1;
237
+ }
238
+ catch (err) {
239
+ counts.errors += 1;
240
+ log.warn(`[shortfall-disposition] failed to reset attempts for "${focus.focus_name}": ${err.message}`);
241
+ }
242
+ }
243
+ continue;
244
+ }
245
+ counts.focusesHeld += 1;
246
+ // The bound. Past the cap the machine has demonstrably failed to dispose
247
+ // these on its own, so stop arming (each pass costs a team) and hand it to
248
+ // an operator instead. The counter is DURABLE, so this survives restarts:
249
+ // an in-process counter would reset and re-arm forever, never escalating.
250
+ if (attempts >= cap) {
251
+ try {
252
+ if (await escalateUndisposed(deps, {
253
+ organizationId: config.organizationId,
254
+ focusId: focus.focus_id,
255
+ focusName: focus.focus_name,
256
+ shortfallIds,
257
+ attempts,
258
+ cap,
259
+ })) {
260
+ counts.escalated += 1;
261
+ log.info(`[shortfall-disposition] filed ${SHORTFALL_UNDISPOSED_KIND} for "${focus.focus_name}" ` +
262
+ `(${shortfallIds.length} undisposed after ${attempts} pass(es), cap ${cap})`);
263
+ }
264
+ }
265
+ catch (err) {
266
+ counts.errors += 1;
267
+ log.warn(`[shortfall-disposition] failed to escalate for "${focus.focus_name}": ${err.message}`);
268
+ }
269
+ continue;
270
+ }
271
+ // A running team already has (or will get) the context; a pending
272
+ // directive is already queued for the spawner. Arming over either would
273
+ // duplicate work or clobber a queued handoff.
274
+ if (deps.hasActiveTeam(focus.focus_id) || deps.hasPendingSpawnDirective(focus.focus_id)) {
275
+ counts.skippedBusy += 1;
276
+ continue;
277
+ }
278
+ try {
279
+ const directive = buildShortfallDispositionDirective();
280
+ // No worktree path: the pass is armed between teams, so there is no live
281
+ // team to read one from. git.diff_against_base degrades to nothing
282
+ // rather than throwing (assembly sources fail soft), and the shortfall
283
+ // section -- the part that matters -- resolves regardless.
284
+ const message = await deps.assembleDirectiveContent(pc, focus.focus_id, directive, null);
285
+ deps.armDirective(focus.focus_id, message, directive);
286
+ counts.armed += 1;
287
+ // Count the attempt AFTER the arm succeeds -- an assembly failure is not
288
+ // an attempt, and charging for it would burn the budget without the pass
289
+ // ever running. Persisted before the next tick can read it, so the bound
290
+ // advances even if this process dies immediately after.
291
+ await deps.setShortfallDispositionAttempts(focus.focus_id, attempts + 1);
292
+ log.info(`[shortfall-disposition] armed a disposition pass for "${focus.focus_name}" ` +
293
+ `(attempt ${attempts + 1}/${cap}, ${shortfallIds.length} undisposed shortfall(s): ` +
294
+ `${shortfallIds.join(', ')})`);
295
+ }
296
+ catch (err) {
297
+ counts.errors += 1;
298
+ log.warn(`[shortfall-disposition] failed to arm for "${focus.focus_name}": ${err.message}`);
299
+ }
300
+ }
301
+ }
302
+ if (counts.focusesHeld > 0 || counts.errors > 0) {
303
+ log.info(`[shortfall-disposition] tick: products=${counts.productsScanned} focuses=${counts.focusesScanned} ` +
304
+ `held=${counts.focusesHeld} armed=${counts.armed} skippedBusy=${counts.skippedBusy} ` +
305
+ `escalated=${counts.escalated} reset=${counts.countersReset} errors=${counts.errors}`);
306
+ }
307
+ return counts;
308
+ }
309
+ //# sourceMappingURL=shortfall-disposition-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortfall-disposition-loop.js","sourceRoot":"","sources":["../src/shortfall-disposition-loop.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-routing.d.ts","sourceRoot":"","sources":["../../src/spawn/model-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC5G,OAAO,EAEL,wBAAwB,EAEzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAWL,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE1F;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,EACpE,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,GACvC,MAAM,GAAG,IAAI,CAGf;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE5E,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,MAAM,EAAE,qBAAqB,GAAG,IAAI,EACpC,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,iBAAiB,CAInB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,cAAc,CAAC;CAC5B,GAAG,OAAO,CAEV;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,MAAM,GAAG,IAAI,CAIf;AAUD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIzE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gCAAgC,EAAE,SAAS,MAAM,EAK7D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIvF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,MAAM,GAAG,IAAI,CASf;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC5C,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,EAC/B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,EAChC,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM,EAAE,CAQV;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAEnH;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;IAChD,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;CAC3D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACrE;8EAC0E;IAC1E,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C,EACD,IAAI,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACvC,OAAO,CAAC,gBAAgB,CAAC,CAmC3B;AAED,iFAAiF;AACjF,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;CAC3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CACtE,EACD,IAAI,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC1C,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAuDhC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxE;IACE,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;gDAE4C;IAC5C,QAAQ,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACvC,CAAC;AAEN;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,cAAc,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IAClD,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACrE;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0PhC"}
1
+ {"version":3,"file":"model-routing.d.ts","sourceRoot":"","sources":["../../src/spawn/model-routing.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ import { codexSafeModelAlias, writeLocalModelCodexHome, TELORA_LOCAL_API_KEY_ENV
18
18
  import { startCodexMcpProxy, shouldRouteLocalModelThroughProxy, } from '../backends/codex/codex-mcp-proxy.js';
19
19
  import { detectHostCapability, ensureLoaded, resolveSafeLoadOptions, getStatus, decideSwap, hostRootFromBaseUrl, observeHostSwap, claimResidentHost, detectSingleHostModelConflict, shouldSurfaceHostConflictOnce, } from '../host-control/index.js';
20
20
  import { hasActiveTeam } from '../focus-team-state.js';
21
+ import { createLogger } from '../log.js';
22
+ const log = createLogger({ module: 'focus-executor' });
21
23
  /**
22
24
  * Resolve the isolated CODEX_HOME to set on a spawn, or undefined when none
23
25
  * applies. Pure + testable: only a codex-engine spawn against a product that
@@ -270,7 +272,7 @@ export async function surfaceSingleHostModelConflict(args, deps = {}) {
270
272
  `review="${reviewCoords.name}" (${reviewCoords.model}). On a single GPU these force an ` +
271
273
  `evict+load swap on every pass alternation and fight over the card. Pin both passes to the ` +
272
274
  `same local model, or move one pass to a different host / a cloud engine.`;
273
- console.warn(`[focus-executor] Host-control: ${detail}`);
275
+ log.warn(`Host-control: ${detail}`);
274
276
  try {
275
277
  await makeEscalation({
276
278
  organizationId: args.organizationId,
@@ -290,7 +292,7 @@ export async function surfaceSingleHostModelConflict(args, deps = {}) {
290
292
  });
291
293
  }
292
294
  catch (err) {
293
- console.warn(`[focus-executor] Failed to file single_host_model_conflict escalation for "${args.focusName}":`, err.message);
295
+ log.warn(`[focus-executor] Failed to file single_host_model_conflict escalation for "${args.focusName}":`, err.message);
294
296
  }
295
297
  return { surfaced: true };
296
298
  }
@@ -326,7 +328,7 @@ export async function resolveSpawnModel(args) {
326
328
  // TELORA_LOCAL_API_KEY name) for a routed local-model pass; null otherwise.
327
329
  let spawnLocalModelKey = null;
328
330
  if (localModelConfig.kind === 'fallback') {
329
- console.warn(`[focus-executor] Focus "${focusName}" ${enginePass} pass selected local model ` +
331
+ log.warn(`[focus-executor] Focus "${focusName}" ${enginePass} pass selected local model ` +
330
332
  `${(localModelConfig.ref ?? '').slice(0, 8)} but it is not in the registry; falling back to the ` +
331
333
  `per-product default model.`);
332
334
  }
@@ -336,7 +338,7 @@ export async function resolveSpawnModel(args) {
336
338
  spawnCodexModel = codexModel;
337
339
  spawnLocalModelKey = apiKey;
338
340
  isLocalModelPass = true;
339
- console.log(`[focus-executor] Routing "${focusName}" ${enginePass} pass to local model ` +
341
+ log.info(`[focus-executor] Routing "${focusName}" ${enginePass} pass to local model ` +
340
342
  `"${coords.name}" (${coords.model} @ ${coords.baseUrl}); CODEX_HOME=${codexHome}, ` +
341
343
  (apiKey
342
344
  ? `key from Telora (env ${TELORA_LOCAL_API_KEY_ENV}).`
@@ -362,9 +364,10 @@ export async function resolveSpawnModel(args) {
362
364
  target: coords.model,
363
365
  }).action === 'noop';
364
366
  }
365
- catch {
367
+ catch (err) {
366
368
  // Transient status-read failure -> fall through to the managed async
367
369
  // swap, which retries the load + readiness off the poll-critical path.
370
+ log.debug('Transient status-read failure -> fall through to the managed async', { error: String(err?.message ?? err) });
368
371
  }
369
372
  if (alreadyResident) {
370
373
  // Claim the per-host residency lock (#4) so a second focus on this host
@@ -376,11 +379,11 @@ export async function resolveSpawnModel(args) {
376
379
  isFocusActive: (id) => hasActiveTeam(id),
377
380
  });
378
381
  if (claim.status === 'busy_other') {
379
- console.log(`[focus-executor] Host-control: host for "${coords.name}" is held by another ` +
382
+ log.info(`[focus-executor] Host-control: host for "${coords.name}" is held by another ` +
380
383
  `focus's running pass; deferring "${focusName}" ${enginePass} pass to avoid eviction.`);
381
384
  return { kind: 'still_loading', coords, reason: 'host_busy_other_focus' };
382
385
  }
383
- console.log(`[focus-executor] Host-control: model "${coords.name}" (${coords.model}) already ` +
386
+ log.info(`[focus-executor] Host-control: model "${coords.name}" (${coords.model}) already ` +
384
387
  `resident + ready for "${focusName}" ${enginePass} pass.`);
385
388
  }
386
389
  else {
@@ -404,12 +407,12 @@ export async function resolveSpawnModel(args) {
404
407
  // fixed DEFAULT_MAX_SEQ_LENGTH when host hardware data is unavailable.
405
408
  const sizing = await resolveSafeLoadOptions(coords.baseUrl, coords.model, { modelSizeMb: coords.modelSizeMb, nativeContext: coords.nativeContext }, apiKey);
406
409
  if (sizing.source === 'fallback') {
407
- console.warn(`[focus-executor] Host-control sizing unavailable for "${coords.name}" ` +
410
+ log.warn(`[focus-executor] Host-control sizing unavailable for "${coords.name}" ` +
408
411
  `(${coords.model}); falling back to the fixed default context ` +
409
412
  `${sizing.maxSeqLength}. Check the host's /api/system/hardware endpoint.`);
410
413
  }
411
414
  else {
412
- console.log(`[focus-executor] Host-control sizing for "${coords.name}" (${coords.model}): ` +
415
+ log.info(`[focus-executor] Host-control sizing for "${coords.name}" (${coords.model}): ` +
413
416
  `max_seq_length=${sizing.maxSeqLength}` +
414
417
  (sizing.cacheTypeKv ? `, cache_type_kv=${sizing.cacheTypeKv}` : '') +
415
418
  (sizing.quantRequired ? ' (quant-required, marginal headroom)' : '') +
@@ -422,29 +425,29 @@ export async function resolveSpawnModel(args) {
422
425
  loadTimeoutMs,
423
426
  ...(sizing.cacheTypeKv !== undefined ? { cacheTypeKv: sizing.cacheTypeKv } : {}),
424
427
  }, apiKey);
425
- console.log(`[focus-executor] Host-control: local model "${coords.name}" (${coords.model}) ` +
428
+ log.info(`[focus-executor] Host-control: local model "${coords.name}" (${coords.model}) ` +
426
429
  `loaded + ready (off-loop swap complete).`);
427
430
  },
428
431
  });
429
432
  if (observation.status === 'loading') {
430
- console.log(`[focus-executor] Host-control: model "${coords.name}" (${coords.model}) is loading ` +
433
+ log.info(`[focus-executor] Host-control: model "${coords.name}" (${coords.model}) is loading ` +
431
434
  `for "${focusName}" ${enginePass} pass; deferring spawn (load runs off the poll loop).`);
432
435
  return { kind: 'still_loading', coords, reason: 'model_loading' };
433
436
  }
434
437
  if (observation.status === 'busy_other') {
435
- console.log(`[focus-executor] Host-control: host for "${coords.name}" is held by another ` +
438
+ log.info(`[focus-executor] Host-control: host for "${coords.name}" is held by another ` +
436
439
  `focus's running pass; deferring "${focusName}" ${enginePass} pass to avoid eviction.`);
437
440
  return { kind: 'still_loading', coords, reason: 'host_busy_other_focus' };
438
441
  }
439
442
  if (observation.status === 'failed') {
440
- console.error(`[focus-executor] Host-control swap to load "${coords.name}" (${coords.model}) for ` +
443
+ log.error(`[focus-executor] Host-control swap to load "${coords.name}" (${coords.model}) for ` +
441
444
  `"${focusName}" ${enginePass} pass FAILED: ${observation.error}. Not spawning against ` +
442
445
  `an unloaded model; will re-attempt next poll.`);
443
446
  return { kind: 'skip_load', coords, dbMessage: observation.error };
444
447
  }
445
448
  // observation.status === 'ready' -- the detached load completed on a
446
449
  // prior tick; the model is resident and residency is held. Proceed.
447
- console.log(`[focus-executor] Host-control: model "${coords.name}" (${coords.model}) ready for ` +
450
+ log.info(`[focus-executor] Host-control: model "${coords.name}" (${coords.model}) ready for ` +
448
451
  `"${focusName}" ${enginePass} pass (off-loop swap complete).`);
449
452
  }
450
453
  }
@@ -480,14 +483,14 @@ export async function resolveSpawnModel(args) {
480
483
  wireApi: coords.wireApi ?? undefined,
481
484
  requiresApiKey: apiKey !== null,
482
485
  });
483
- console.log(`[focus-executor] Local-model MCP proxy engaged for "${coords.name}": ` +
486
+ log.info(`[focus-executor] Local-model MCP proxy engaged for "${coords.name}": ` +
484
487
  `Codex base_url -> ${mcpProxy.url} -> upstream ${coords.baseUrl}.`);
485
488
  }
486
489
  catch (err) {
487
490
  // Best-effort: a proxy that cannot start must not block the spawn; fall
488
491
  // back to the direct (namespace-dropping) path. The fail-loud reception
489
492
  // check only applies when a proxy is present.
490
- console.warn(`[focus-executor] Local-model MCP proxy failed to start; spawning direct: ${err.message}`);
493
+ log.warn(`Local-model MCP proxy failed to start; spawning direct: ${err.message}`);
491
494
  mcpProxy = null;
492
495
  }
493
496
  }