@telora/daemon 0.19.43 → 0.19.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (542) hide show
  1. package/build-info.json +8 -3
  2. package/dist/assembly-engine.d.ts +9 -0
  3. package/dist/assembly-engine.d.ts.map +1 -1
  4. package/dist/assembly-engine.js.map +1 -1
  5. package/dist/audit-hooks.js +1 -1
  6. package/dist/audit-shape.d.ts +103 -0
  7. package/dist/audit-shape.d.ts.map +1 -0
  8. package/dist/audit-shape.js +81 -0
  9. package/dist/audit-shape.js.map +1 -0
  10. package/dist/branch-status.js +2 -2
  11. package/dist/branch-status.js.map +1 -1
  12. package/dist/ci-sensor-loop.d.ts +47 -0
  13. package/dist/ci-sensor-loop.d.ts.map +1 -0
  14. package/dist/ci-sensor-loop.js +116 -0
  15. package/dist/ci-sensor-loop.js.map +1 -0
  16. package/dist/ci-status-git.d.ts +52 -0
  17. package/dist/ci-status-git.d.ts.map +1 -0
  18. package/dist/ci-status-git.js +86 -0
  19. package/dist/ci-status-git.js.map +1 -0
  20. package/dist/ci-status.d.ts +122 -0
  21. package/dist/ci-status.d.ts.map +1 -0
  22. package/dist/ci-status.js +114 -0
  23. package/dist/ci-status.js.map +1 -0
  24. package/dist/cli/connect/agents.d.ts +24 -0
  25. package/dist/cli/connect/agents.d.ts.map +1 -0
  26. package/dist/cli/connect/agents.js +65 -0
  27. package/dist/cli/connect/agents.js.map +1 -0
  28. package/dist/cli/connect/claude.d.ts +31 -0
  29. package/dist/cli/connect/claude.d.ts.map +1 -0
  30. package/dist/cli/connect/claude.js +104 -0
  31. package/dist/cli/connect/claude.js.map +1 -0
  32. package/dist/cli/connect/cline.d.ts +37 -0
  33. package/dist/cli/connect/cline.d.ts.map +1 -0
  34. package/dist/cli/connect/cline.js +115 -0
  35. package/dist/cli/connect/cline.js.map +1 -0
  36. package/dist/cli/connect/codex.d.ts +44 -0
  37. package/dist/cli/connect/codex.d.ts.map +1 -0
  38. package/dist/cli/connect/codex.js +111 -0
  39. package/dist/cli/connect/codex.js.map +1 -0
  40. package/dist/cli/connect/ide.d.ts +69 -0
  41. package/dist/cli/connect/ide.d.ts.map +1 -0
  42. package/dist/cli/connect/ide.js +134 -0
  43. package/dist/cli/connect/ide.js.map +1 -0
  44. package/dist/cli/connect/scaffolding.d.ts +31 -0
  45. package/dist/cli/connect/scaffolding.d.ts.map +1 -0
  46. package/dist/cli/connect/scaffolding.js +52 -0
  47. package/dist/cli/connect/scaffolding.js.map +1 -0
  48. package/dist/cli/connect/shared.d.ts +30 -0
  49. package/dist/cli/connect/shared.d.ts.map +1 -0
  50. package/dist/cli/connect/shared.js +11 -0
  51. package/dist/cli/connect/shared.js.map +1 -0
  52. package/dist/cli/connect.d.ts +9 -210
  53. package/dist/cli/connect.d.ts.map +1 -1
  54. package/dist/cli/connect.js +10 -526
  55. package/dist/cli/connect.js.map +1 -1
  56. package/dist/cli/open.js +2 -2
  57. package/dist/completion/event.d.ts +3 -0
  58. package/dist/completion/event.d.ts.map +1 -1
  59. package/dist/completion/event.js +44 -9
  60. package/dist/completion/event.js.map +1 -1
  61. package/dist/completion/merge-phase.d.ts +3 -0
  62. package/dist/completion/merge-phase.d.ts.map +1 -1
  63. package/dist/completion/merge-phase.js +35 -3
  64. package/dist/completion/merge-phase.js.map +1 -1
  65. package/dist/completion/read-only-pristine.d.ts +1 -1
  66. package/dist/completion/read-only-pristine.d.ts.map +1 -1
  67. package/dist/completion/read-only-pristine.js +1 -1
  68. package/dist/completion/read-only-pristine.js.map +1 -1
  69. package/dist/completion/review-exit-phase.d.ts +30 -3
  70. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  71. package/dist/completion/review-exit-phase.js +203 -15
  72. package/dist/completion/review-exit-phase.js.map +1 -1
  73. package/dist/completion/status-advance-phase.js +1 -1
  74. package/dist/completion/status-advance-phase.js.map +1 -1
  75. package/dist/completion/team-completion.d.ts.map +1 -1
  76. package/dist/completion/team-completion.js +22 -2
  77. package/dist/completion/team-completion.js.map +1 -1
  78. package/dist/completion/team-lifecycle.js +1 -1
  79. package/dist/completion/terminated-work-reconcile.js +1 -1
  80. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  81. package/dist/condition-evaluators.d.ts +41 -2
  82. package/dist/condition-evaluators.d.ts.map +1 -1
  83. package/dist/condition-evaluators.js +37 -288
  84. package/dist/condition-evaluators.js.map +1 -1
  85. package/dist/context-audit.d.ts +1 -1
  86. package/dist/context-audit.d.ts.map +1 -1
  87. package/dist/context-lock.d.ts +1 -1
  88. package/dist/context-lock.d.ts.map +1 -1
  89. package/dist/control-state.d.ts +2 -2
  90. package/dist/control-state.d.ts.map +1 -1
  91. package/dist/control-state.js +4 -3
  92. package/dist/control-state.js.map +1 -1
  93. package/dist/daemon-process.d.ts +1 -1
  94. package/dist/daemon-process.d.ts.map +1 -1
  95. package/dist/delivery-advance-block.d.ts +1 -1
  96. package/dist/delivery-advance-block.d.ts.map +1 -1
  97. package/dist/delivery-advance-block.js +1 -1
  98. package/dist/delivery-advance-block.js.map +1 -1
  99. package/dist/delivery-lifecycle.js +1 -1
  100. package/dist/delivery-reconciler-shadow.d.ts +1 -1
  101. package/dist/delivery-reconciler-shadow.d.ts.map +1 -1
  102. package/dist/delivery-reconciler-shadow.js +1 -1
  103. package/dist/delivery-reconciler-shadow.js.map +1 -1
  104. package/dist/delivery-reconciler.d.ts +1 -0
  105. package/dist/delivery-reconciler.d.ts.map +1 -1
  106. package/dist/delivery-reconciler.js +6 -0
  107. package/dist/delivery-reconciler.js.map +1 -1
  108. package/dist/directive-executor.js +1 -1
  109. package/dist/directive-executor.js.map +1 -1
  110. package/dist/drift-eval-loop.d.ts.map +1 -1
  111. package/dist/drift-eval-loop.js +6 -14
  112. package/dist/drift-eval-loop.js.map +1 -1
  113. package/dist/escalations.d.ts +1 -1
  114. package/dist/escalations.d.ts.map +1 -1
  115. package/dist/escalations.js +1 -1
  116. package/dist/escalations.js.map +1 -1
  117. package/dist/evaluation-context.d.ts +2 -33
  118. package/dist/evaluation-context.d.ts.map +1 -1
  119. package/dist/evaluation-context.js +2 -56
  120. package/dist/evaluation-context.js.map +1 -1
  121. package/dist/focus-engine.d.ts +14 -5
  122. package/dist/focus-engine.d.ts.map +1 -1
  123. package/dist/focus-engine.js +35 -289
  124. package/dist/focus-engine.js.map +1 -1
  125. package/dist/focus-executor.d.ts +10 -791
  126. package/dist/focus-executor.d.ts.map +1 -1
  127. package/dist/focus-executor.js +42 -1566
  128. package/dist/focus-executor.js.map +1 -1
  129. package/dist/focus-lifecycle.js +2 -2
  130. package/dist/focus-lifecycle.js.map +1 -1
  131. package/dist/focus-loop-registry.d.ts +52 -0
  132. package/dist/focus-loop-registry.d.ts.map +1 -0
  133. package/dist/focus-loop-registry.js +328 -0
  134. package/dist/focus-loop-registry.js.map +1 -0
  135. package/dist/focus-merge.d.ts +1 -1
  136. package/dist/focus-merge.d.ts.map +1 -1
  137. package/dist/focus-merge.js +3 -3
  138. package/dist/focus-merge.js.map +1 -1
  139. package/dist/focus-phase.d.ts +4 -0
  140. package/dist/focus-phase.d.ts.map +1 -1
  141. package/dist/focus-phase.js +3 -3
  142. package/dist/focus-phase.js.map +1 -1
  143. package/dist/focus-stage-lifecycle/planning-release.d.ts +197 -0
  144. package/dist/focus-stage-lifecycle/planning-release.d.ts.map +1 -0
  145. package/dist/focus-stage-lifecycle/planning-release.js +312 -0
  146. package/dist/focus-stage-lifecycle/planning-release.js.map +1 -0
  147. package/dist/focus-stage-lifecycle/review-convergence.d.ts +133 -0
  148. package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +1 -0
  149. package/dist/focus-stage-lifecycle/review-convergence.js +235 -0
  150. package/dist/focus-stage-lifecycle/review-convergence.js.map +1 -0
  151. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +133 -0
  152. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -0
  153. package/dist/focus-stage-lifecycle/wedge-watchdog.js +365 -0
  154. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -0
  155. package/dist/focus-stage-lifecycle.d.ts +22 -403
  156. package/dist/focus-stage-lifecycle.d.ts.map +1 -1
  157. package/dist/focus-stage-lifecycle.js +26 -798
  158. package/dist/focus-stage-lifecycle.js.map +1 -1
  159. package/dist/{git-activity.d.ts → git/activity.d.ts} +1 -1
  160. package/dist/git/activity.d.ts.map +1 -0
  161. package/dist/{git-activity.js → git/activity.js} +2 -2
  162. package/dist/git/activity.js.map +1 -0
  163. package/dist/{git-branch.d.ts → git/branch.d.ts} +2 -2
  164. package/dist/git/branch.d.ts.map +1 -0
  165. package/dist/{git-branch.js → git/branch.js} +2 -2
  166. package/dist/git/branch.js.map +1 -0
  167. package/dist/{git-fetch.d.ts → git/fetch.d.ts} +2 -2
  168. package/dist/git/fetch.d.ts.map +1 -0
  169. package/dist/{git-fetch.js → git/fetch.js} +1 -1
  170. package/dist/git/fetch.js.map +1 -0
  171. package/dist/{git-genesis.d.ts → git/genesis.d.ts} +3 -3
  172. package/dist/git/genesis.d.ts.map +1 -0
  173. package/dist/{git-genesis.js → git/genesis.js} +5 -5
  174. package/dist/git/genesis.js.map +1 -0
  175. package/dist/git/index.d.ts +36 -0
  176. package/dist/git/index.d.ts.map +1 -0
  177. package/dist/git/index.js +36 -0
  178. package/dist/git/index.js.map +1 -0
  179. package/dist/{git-integration.d.ts → git/integration.d.ts} +2 -2
  180. package/dist/git/integration.d.ts.map +1 -0
  181. package/dist/{git-integration.js → git/integration.js} +4 -4
  182. package/dist/git/integration.js.map +1 -0
  183. package/dist/{git-merge-helpers.d.ts → git/merge-helpers.d.ts} +3 -3
  184. package/dist/git/merge-helpers.d.ts.map +1 -0
  185. package/dist/{git-merge-helpers.js → git/merge-helpers.js} +3 -3
  186. package/dist/git/merge-helpers.js.map +1 -0
  187. package/dist/{git-merge-lock.d.ts → git/merge-lock.d.ts} +1 -1
  188. package/dist/git/merge-lock.d.ts.map +1 -0
  189. package/dist/{git-merge-lock.js → git/merge-lock.js} +1 -1
  190. package/dist/git/merge-lock.js.map +1 -0
  191. package/dist/{git-merge-strategies.d.ts → git/merge-strategies.d.ts} +2 -2
  192. package/dist/git/merge-strategies.d.ts.map +1 -0
  193. package/dist/{git-merge-strategies.js → git/merge-strategies.js} +3 -3
  194. package/dist/git/merge-strategies.js.map +1 -0
  195. package/dist/{git-merge.d.ts → git/merge.d.ts} +4 -4
  196. package/dist/git/merge.d.ts.map +1 -0
  197. package/dist/{git-merge.js → git/merge.js} +4 -4
  198. package/dist/git/merge.js.map +1 -0
  199. package/dist/{git-state-detector.d.ts → git/state-detector.d.ts} +2 -2
  200. package/dist/git/state-detector.d.ts.map +1 -0
  201. package/dist/{git-state-detector.js → git/state-detector.js} +7 -7
  202. package/dist/git/state-detector.js.map +1 -0
  203. package/dist/{git-types.d.ts → git/types.d.ts} +2 -2
  204. package/dist/git/types.d.ts.map +1 -0
  205. package/dist/{git-types.js → git/types.js} +1 -1
  206. package/dist/git/types.js.map +1 -0
  207. package/dist/{git-utils.d.ts → git/utils.d.ts} +1 -1
  208. package/dist/git/utils.d.ts.map +1 -0
  209. package/dist/{git-utils.js → git/utils.js} +2 -2
  210. package/dist/git/utils.js.map +1 -0
  211. package/dist/git.d.ts +5 -5
  212. package/dist/git.d.ts.map +1 -1
  213. package/dist/git.js +10 -10
  214. package/dist/git.js.map +1 -1
  215. package/dist/guard-engine.d.ts +3 -2
  216. package/dist/guard-engine.d.ts.map +1 -1
  217. package/dist/guard-engine.js +2 -2
  218. package/dist/guard-engine.js.map +1 -1
  219. package/dist/install-probe-tick.d.ts +63 -0
  220. package/dist/install-probe-tick.d.ts.map +1 -0
  221. package/dist/install-probe-tick.js +137 -0
  222. package/dist/install-probe-tick.js.map +1 -0
  223. package/dist/install-probe.d.ts +115 -0
  224. package/dist/install-probe.d.ts.map +1 -0
  225. package/dist/install-probe.js +197 -0
  226. package/dist/install-probe.js.map +1 -0
  227. package/dist/listener-auto-advance.d.ts.map +1 -1
  228. package/dist/listener-auto-advance.js +51 -9
  229. package/dist/listener-auto-advance.js.map +1 -1
  230. package/dist/listener.d.ts.map +1 -1
  231. package/dist/listener.js +15 -7
  232. package/dist/listener.js.map +1 -1
  233. package/dist/{loop-context-audit-pass.d.ts → loops/context-audit-pass.d.ts} +4 -4
  234. package/dist/loops/context-audit-pass.d.ts.map +1 -0
  235. package/dist/{loop-context-audit-pass.js → loops/context-audit-pass.js} +7 -7
  236. package/dist/loops/context-audit-pass.js.map +1 -0
  237. package/dist/{loop-engine-types.d.ts → loops/engine-types.d.ts} +1 -1
  238. package/dist/loops/engine-types.d.ts.map +1 -0
  239. package/dist/{loop-engine-types.js → loops/engine-types.js} +1 -1
  240. package/dist/loops/engine-types.js.map +1 -0
  241. package/dist/{loop-engine.d.ts → loops/engine.d.ts} +6 -6
  242. package/dist/loops/engine.d.ts.map +1 -0
  243. package/dist/{loop-engine.js → loops/engine.js} +13 -13
  244. package/dist/loops/engine.js.map +1 -0
  245. package/dist/{loop-event-bus.d.ts → loops/event-bus.d.ts} +1 -1
  246. package/dist/loops/event-bus.d.ts.map +1 -0
  247. package/dist/{loop-event-bus.js → loops/event-bus.js} +1 -1
  248. package/dist/loops/event-bus.js.map +1 -0
  249. package/dist/loops/index.d.ts +33 -0
  250. package/dist/loops/index.d.ts.map +1 -0
  251. package/dist/loops/index.js +32 -0
  252. package/dist/loops/index.js.map +1 -0
  253. package/dist/{loop-llm-client.d.ts → loops/llm-client.d.ts} +3 -3
  254. package/dist/loops/llm-client.d.ts.map +1 -0
  255. package/dist/{loop-llm-client.js → loops/llm-client.js} +3 -3
  256. package/dist/loops/llm-client.js.map +1 -0
  257. package/dist/{loop-llm-flag.d.ts → loops/llm-flag.d.ts} +1 -1
  258. package/dist/loops/llm-flag.d.ts.map +1 -0
  259. package/dist/{loop-llm-flag.js → loops/llm-flag.js} +1 -1
  260. package/dist/loops/llm-flag.js.map +1 -0
  261. package/dist/{loop-operational-block.d.ts → loops/operational-block.d.ts} +1 -1
  262. package/dist/loops/operational-block.d.ts.map +1 -0
  263. package/dist/{loop-operational-block.js → loops/operational-block.js} +1 -1
  264. package/dist/loops/operational-block.js.map +1 -0
  265. package/dist/{loop-prompt-builder.d.ts → loops/prompt-builder.d.ts} +2 -2
  266. package/dist/loops/prompt-builder.d.ts.map +1 -0
  267. package/dist/{loop-prompt-builder.js → loops/prompt-builder.js} +1 -1
  268. package/dist/loops/prompt-builder.js.map +1 -0
  269. package/dist/{loop-variance.d.ts → loops/variance.d.ts} +1 -1
  270. package/dist/loops/variance.d.ts.map +1 -0
  271. package/dist/{loop-variance.js → loops/variance.js} +1 -1
  272. package/dist/loops/variance.js.map +1 -0
  273. package/dist/merge-back-loop.d.ts.map +1 -1
  274. package/dist/merge-back-loop.js +4 -3
  275. package/dist/merge-back-loop.js.map +1 -1
  276. package/dist/merge-detector.js +2 -2
  277. package/dist/merge-detector.js.map +1 -1
  278. package/dist/{nexus-endpoint-clearance.d.ts → nexus/endpoint-clearance.d.ts} +2 -2
  279. package/dist/nexus/endpoint-clearance.d.ts.map +1 -0
  280. package/dist/{nexus-endpoint-clearance.js → nexus/endpoint-clearance.js} +2 -2
  281. package/dist/nexus/endpoint-clearance.js.map +1 -0
  282. package/dist/{nexus-escalation-bridge.d.ts → nexus/escalation-bridge.d.ts} +1 -1
  283. package/dist/nexus/escalation-bridge.d.ts.map +1 -0
  284. package/dist/{nexus-escalation-bridge.js → nexus/escalation-bridge.js} +2 -2
  285. package/dist/nexus/escalation-bridge.js.map +1 -0
  286. package/dist/{nexus-incoming.d.ts → nexus/incoming.d.ts} +2 -2
  287. package/dist/nexus/incoming.d.ts.map +1 -0
  288. package/dist/{nexus-incoming.js → nexus/incoming.js} +2 -2
  289. package/dist/nexus/incoming.js.map +1 -0
  290. package/dist/nexus/index.d.ts +20 -0
  291. package/dist/nexus/index.d.ts.map +1 -0
  292. package/dist/nexus/index.js +20 -0
  293. package/dist/nexus/index.js.map +1 -0
  294. package/dist/{nexus-intake-spawn.d.ts → nexus/intake-spawn.d.ts} +3 -3
  295. package/dist/nexus/intake-spawn.d.ts.map +1 -0
  296. package/dist/{nexus-intake-spawn.js → nexus/intake-spawn.js} +1 -1
  297. package/dist/nexus/intake-spawn.js.map +1 -0
  298. package/dist/{nexus-intake.d.ts → nexus/intake.d.ts} +2 -2
  299. package/dist/nexus/intake.d.ts.map +1 -0
  300. package/dist/{nexus-intake.js → nexus/intake.js} +4 -4
  301. package/dist/nexus/intake.js.map +1 -0
  302. package/dist/{nexus-return.d.ts → nexus/return.d.ts} +3 -3
  303. package/dist/nexus/return.d.ts.map +1 -0
  304. package/dist/{nexus-return.js → nexus/return.js} +4 -4
  305. package/dist/nexus/return.js.map +1 -0
  306. package/dist/otlp/index.d.ts +19 -0
  307. package/dist/otlp/index.d.ts.map +1 -0
  308. package/dist/otlp/index.js +19 -0
  309. package/dist/otlp/index.js.map +1 -0
  310. package/dist/{otlp-log-parser.d.ts → otlp/log-parser.d.ts} +2 -2
  311. package/dist/otlp/log-parser.d.ts.map +1 -0
  312. package/dist/{otlp-log-parser.js → otlp/log-parser.js} +5 -6
  313. package/dist/otlp/log-parser.js.map +1 -0
  314. package/dist/{otlp-metric-parser.d.ts → otlp/metric-parser.d.ts} +2 -2
  315. package/dist/otlp/metric-parser.d.ts.map +1 -0
  316. package/dist/{otlp-metric-parser.js → otlp/metric-parser.js} +4 -5
  317. package/dist/otlp/metric-parser.js.map +1 -0
  318. package/dist/{otlp-port-manager.d.ts → otlp/port-manager.d.ts} +1 -1
  319. package/dist/otlp/port-manager.d.ts.map +1 -0
  320. package/dist/{otlp-port-manager.js → otlp/port-manager.js} +1 -1
  321. package/dist/otlp/port-manager.js.map +1 -0
  322. package/dist/{otlp-receiver.d.ts → otlp/receiver.d.ts} +2 -2
  323. package/dist/otlp/receiver.d.ts.map +1 -0
  324. package/dist/{otlp-receiver.js → otlp/receiver.js} +5 -33
  325. package/dist/otlp/receiver.js.map +1 -0
  326. package/dist/{otlp-types.d.ts → otlp/types.d.ts} +1 -9
  327. package/dist/otlp/types.d.ts.map +1 -0
  328. package/dist/{otlp-types.js → otlp/types.js} +1 -27
  329. package/dist/otlp/types.js.map +1 -0
  330. package/dist/pipeline-config.d.ts +1 -1
  331. package/dist/{prd-controller.d.ts → prd/controller.d.ts} +7 -7
  332. package/dist/prd/controller.d.ts.map +1 -0
  333. package/dist/{prd-controller.js → prd/controller.js} +11 -11
  334. package/dist/prd/controller.js.map +1 -0
  335. package/dist/{prd-divergence.d.ts → prd/divergence.d.ts} +2 -2
  336. package/dist/prd/divergence.d.ts.map +1 -0
  337. package/dist/{prd-divergence.js → prd/divergence.js} +1 -1
  338. package/dist/prd/divergence.js.map +1 -0
  339. package/dist/{prd-focus-pushdown.d.ts → prd/focus-pushdown.d.ts} +2 -2
  340. package/dist/prd/focus-pushdown.d.ts.map +1 -0
  341. package/dist/{prd-focus-pushdown.js → prd/focus-pushdown.js} +3 -3
  342. package/dist/prd/focus-pushdown.js.map +1 -0
  343. package/dist/{prd-frontier.d.ts → prd/frontier.d.ts} +2 -2
  344. package/dist/prd/frontier.d.ts.map +1 -0
  345. package/dist/{prd-frontier.js → prd/frontier.js} +1 -1
  346. package/dist/prd/frontier.js.map +1 -0
  347. package/dist/prd/index.d.ts +26 -0
  348. package/dist/prd/index.d.ts.map +1 -0
  349. package/dist/prd/index.js +25 -0
  350. package/dist/prd/index.js.map +1 -0
  351. package/dist/{prd-steward.d.ts → prd/steward.d.ts} +4 -4
  352. package/dist/prd/steward.d.ts.map +1 -0
  353. package/dist/{prd-steward.js → prd/steward.js} +4 -4
  354. package/dist/prd/steward.js.map +1 -0
  355. package/dist/{prd-viability.d.ts → prd/viability.d.ts} +2 -2
  356. package/dist/prd/viability.d.ts.map +1 -0
  357. package/dist/{prd-viability.js → prd/viability.js} +1 -1
  358. package/dist/prd/viability.js.map +1 -0
  359. package/dist/product-scaffold.js +2 -2
  360. package/dist/product-scaffold.js.map +1 -1
  361. package/dist/prompt-sections/persona-sections.d.ts +32 -0
  362. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  363. package/dist/prompt-sections/persona-sections.js +78 -2
  364. package/dist/prompt-sections/persona-sections.js.map +1 -1
  365. package/dist/queries/context-lock-queries.js +1 -1
  366. package/dist/queries/context-lock-queries.js.map +1 -1
  367. package/dist/queries/deliveries.d.ts +31 -0
  368. package/dist/queries/deliveries.d.ts.map +1 -1
  369. package/dist/queries/deliveries.js +5 -0
  370. package/dist/queries/deliveries.js.map +1 -1
  371. package/dist/queries/focuses.d.ts +17 -0
  372. package/dist/queries/focuses.d.ts.map +1 -1
  373. package/dist/queries/focuses.js +27 -0
  374. package/dist/queries/focuses.js.map +1 -1
  375. package/dist/queries/schemas.d.ts +8 -0
  376. package/dist/queries/schemas.d.ts.map +1 -1
  377. package/dist/queries/schemas.js +16 -0
  378. package/dist/queries/schemas.js.map +1 -1
  379. package/dist/reality-pole.js +1 -1
  380. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  381. package/dist/resolvers/git-diff-against-base.js +4 -1
  382. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  383. package/dist/resolvers/prd-context.js +1 -1
  384. package/dist/sensor-sweep.js +1 -1
  385. package/dist/spawn/model-routing.d.ts +277 -0
  386. package/dist/spawn/model-routing.d.ts.map +1 -0
  387. package/dist/spawn/model-routing.js +464 -0
  388. package/dist/spawn/model-routing.js.map +1 -0
  389. package/dist/spawn/process-spawn.d.ts +128 -0
  390. package/dist/spawn/process-spawn.d.ts.map +1 -0
  391. package/dist/spawn/process-spawn.js +378 -0
  392. package/dist/spawn/process-spawn.js.map +1 -0
  393. package/dist/spawn/prompt-assembly.d.ts +143 -0
  394. package/dist/spawn/prompt-assembly.d.ts.map +1 -0
  395. package/dist/spawn/prompt-assembly.js +263 -0
  396. package/dist/spawn/prompt-assembly.js.map +1 -0
  397. package/dist/spawn/shared.d.ts +72 -0
  398. package/dist/spawn/shared.d.ts.map +1 -0
  399. package/dist/spawn/shared.js +14 -0
  400. package/dist/spawn/shared.js.map +1 -0
  401. package/dist/spawn/spawn-decision.d.ts +189 -0
  402. package/dist/spawn/spawn-decision.d.ts.map +1 -0
  403. package/dist/spawn/spawn-decision.js +361 -0
  404. package/dist/spawn/spawn-decision.js.map +1 -0
  405. package/dist/spawn/worktree-session.d.ts +105 -0
  406. package/dist/spawn/worktree-session.d.ts.map +1 -0
  407. package/dist/spawn/worktree-session.js +216 -0
  408. package/dist/spawn/worktree-session.js.map +1 -0
  409. package/dist/spawner/lifecycle.js +2 -2
  410. package/dist/spawner/lifecycle.js.map +1 -1
  411. package/dist/spawner/resolution.js +1 -1
  412. package/dist/stall-detector-config.d.ts +4 -0
  413. package/dist/stall-detector-config.d.ts.map +1 -1
  414. package/dist/stall-detector-config.js +6 -0
  415. package/dist/stall-detector-config.js.map +1 -1
  416. package/dist/state-cascade.js +1 -1
  417. package/dist/state-cascade.js.map +1 -1
  418. package/dist/team-prompt-base.d.ts +1 -1
  419. package/dist/team-prompt-base.d.ts.map +1 -1
  420. package/dist/team-prompt-base.js +1 -1
  421. package/dist/team-prompt-base.js.map +1 -1
  422. package/dist/trigger-executor.d.ts +5 -9
  423. package/dist/trigger-executor.d.ts.map +1 -1
  424. package/dist/trigger-executor.js +14 -36
  425. package/dist/trigger-executor.js.map +1 -1
  426. package/dist/types/focus.d.ts +13 -0
  427. package/dist/types/focus.d.ts.map +1 -1
  428. package/dist/types/workflow.d.ts +1 -3
  429. package/dist/types/workflow.d.ts.map +1 -1
  430. package/dist/unified-engine-lifecycle.js +1 -1
  431. package/dist/unified-init.d.ts +3 -3
  432. package/dist/unified-init.d.ts.map +1 -1
  433. package/dist/unified-init.js +9 -25
  434. package/dist/unified-init.js.map +1 -1
  435. package/dist/unified-shell.d.ts +3 -3
  436. package/dist/unified-shell.js +4 -4
  437. package/dist/unified-shell.js.map +1 -1
  438. package/dist/verification-engine.d.ts.map +1 -1
  439. package/dist/verification-engine.js +15 -0
  440. package/dist/verification-engine.js.map +1 -1
  441. package/dist/{worktree-focus.d.ts → worktree/focus.d.ts} +2 -2
  442. package/dist/worktree/focus.d.ts.map +1 -0
  443. package/dist/{worktree-focus.js → worktree/focus.js} +7 -7
  444. package/dist/worktree/focus.js.map +1 -0
  445. package/dist/worktree/index.d.ts +16 -0
  446. package/dist/worktree/index.d.ts.map +1 -0
  447. package/dist/worktree/index.js +16 -0
  448. package/dist/worktree/index.js.map +1 -0
  449. package/dist/{worktree-safety.d.ts → worktree/safety.d.ts} +1 -1
  450. package/dist/worktree/safety.d.ts.map +1 -0
  451. package/dist/{worktree-safety.js → worktree/safety.js} +2 -2
  452. package/dist/worktree/safety.js.map +1 -0
  453. package/dist/{worktree-state.d.ts → worktree/state.d.ts} +1 -1
  454. package/dist/worktree/state.d.ts.map +1 -0
  455. package/dist/{worktree-state.js → worktree/state.js} +6 -6
  456. package/dist/worktree/state.js.map +1 -0
  457. package/dist/worktree.d.ts +1 -1
  458. package/dist/worktree.js +5 -5
  459. package/dist/worktree.js.map +1 -1
  460. package/package.json +5 -4
  461. package/dist/git-activity.d.ts.map +0 -1
  462. package/dist/git-activity.js.map +0 -1
  463. package/dist/git-branch.d.ts.map +0 -1
  464. package/dist/git-branch.js.map +0 -1
  465. package/dist/git-fetch.d.ts.map +0 -1
  466. package/dist/git-fetch.js.map +0 -1
  467. package/dist/git-genesis.d.ts.map +0 -1
  468. package/dist/git-genesis.js.map +0 -1
  469. package/dist/git-integration.d.ts.map +0 -1
  470. package/dist/git-integration.js.map +0 -1
  471. package/dist/git-merge-helpers.d.ts.map +0 -1
  472. package/dist/git-merge-helpers.js.map +0 -1
  473. package/dist/git-merge-lock.d.ts.map +0 -1
  474. package/dist/git-merge-lock.js.map +0 -1
  475. package/dist/git-merge-strategies.d.ts.map +0 -1
  476. package/dist/git-merge-strategies.js.map +0 -1
  477. package/dist/git-merge.d.ts.map +0 -1
  478. package/dist/git-merge.js.map +0 -1
  479. package/dist/git-state-detector.d.ts.map +0 -1
  480. package/dist/git-state-detector.js.map +0 -1
  481. package/dist/git-types.d.ts.map +0 -1
  482. package/dist/git-types.js.map +0 -1
  483. package/dist/git-utils.d.ts.map +0 -1
  484. package/dist/git-utils.js.map +0 -1
  485. package/dist/loop-context-audit-pass.d.ts.map +0 -1
  486. package/dist/loop-context-audit-pass.js.map +0 -1
  487. package/dist/loop-engine-types.d.ts.map +0 -1
  488. package/dist/loop-engine-types.js.map +0 -1
  489. package/dist/loop-engine.d.ts.map +0 -1
  490. package/dist/loop-engine.js.map +0 -1
  491. package/dist/loop-event-bus.d.ts.map +0 -1
  492. package/dist/loop-event-bus.js.map +0 -1
  493. package/dist/loop-llm-client.d.ts.map +0 -1
  494. package/dist/loop-llm-client.js.map +0 -1
  495. package/dist/loop-llm-flag.d.ts.map +0 -1
  496. package/dist/loop-llm-flag.js.map +0 -1
  497. package/dist/loop-operational-block.d.ts.map +0 -1
  498. package/dist/loop-operational-block.js.map +0 -1
  499. package/dist/loop-prompt-builder.d.ts.map +0 -1
  500. package/dist/loop-prompt-builder.js.map +0 -1
  501. package/dist/loop-variance.d.ts.map +0 -1
  502. package/dist/loop-variance.js.map +0 -1
  503. package/dist/nexus-endpoint-clearance.d.ts.map +0 -1
  504. package/dist/nexus-endpoint-clearance.js.map +0 -1
  505. package/dist/nexus-escalation-bridge.d.ts.map +0 -1
  506. package/dist/nexus-escalation-bridge.js.map +0 -1
  507. package/dist/nexus-incoming.d.ts.map +0 -1
  508. package/dist/nexus-incoming.js.map +0 -1
  509. package/dist/nexus-intake-spawn.d.ts.map +0 -1
  510. package/dist/nexus-intake-spawn.js.map +0 -1
  511. package/dist/nexus-intake.d.ts.map +0 -1
  512. package/dist/nexus-intake.js.map +0 -1
  513. package/dist/nexus-return.d.ts.map +0 -1
  514. package/dist/nexus-return.js.map +0 -1
  515. package/dist/otlp-log-parser.d.ts.map +0 -1
  516. package/dist/otlp-log-parser.js.map +0 -1
  517. package/dist/otlp-metric-parser.d.ts.map +0 -1
  518. package/dist/otlp-metric-parser.js.map +0 -1
  519. package/dist/otlp-port-manager.d.ts.map +0 -1
  520. package/dist/otlp-port-manager.js.map +0 -1
  521. package/dist/otlp-receiver.d.ts.map +0 -1
  522. package/dist/otlp-receiver.js.map +0 -1
  523. package/dist/otlp-types.d.ts.map +0 -1
  524. package/dist/otlp-types.js.map +0 -1
  525. package/dist/prd-controller.d.ts.map +0 -1
  526. package/dist/prd-controller.js.map +0 -1
  527. package/dist/prd-divergence.d.ts.map +0 -1
  528. package/dist/prd-divergence.js.map +0 -1
  529. package/dist/prd-focus-pushdown.d.ts.map +0 -1
  530. package/dist/prd-focus-pushdown.js.map +0 -1
  531. package/dist/prd-frontier.d.ts.map +0 -1
  532. package/dist/prd-frontier.js.map +0 -1
  533. package/dist/prd-steward.d.ts.map +0 -1
  534. package/dist/prd-steward.js.map +0 -1
  535. package/dist/prd-viability.d.ts.map +0 -1
  536. package/dist/prd-viability.js.map +0 -1
  537. package/dist/worktree-focus.d.ts.map +0 -1
  538. package/dist/worktree-focus.js.map +0 -1
  539. package/dist/worktree-safety.d.ts.map +0 -1
  540. package/dist/worktree-safety.js.map +0 -1
  541. package/dist/worktree-state.d.ts.map +0 -1
  542. package/dist/worktree-state.js.map +0 -1
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Planning->execution delivery releases (extracted from focus-stage-lifecycle).
3
+ *
4
+ * Owns the two planning->queued release paths:
5
+ * - `releaseRatifiedReadOnlyFocus` -- the SOLE human-ratified planning->execution
6
+ * crossing for a read-only audit focus.
7
+ * - `releaseWritableFocusPlanningDeliveries` -- the writable-focus analogue that
8
+ * closes the silent born-planning wedge for a normal execute focus.
9
+ *
10
+ * Plus the pure predicates (`isFocusRatifiedForExecute`,
11
+ * `isWritableFocusPastKickoff`) that gate them.
12
+ *
13
+ * @module focus-stage-lifecycle/planning-release
14
+ */
15
+ import { getFocusDeliveries as defaultGetFocusDeliveries, updateFocusReadOnly as defaultUpdateFocusReadOnly, } from '../queries/focuses.js';
16
+ import { updateDeliveryStatus as defaultUpdateDeliveryStatus } from '../queries/deliveries.js';
17
+ import { DELIVERY_STATUS } from '@telora/daemon-core';
18
+ import { emitLoopTrigger } from '../loops/index.js';
19
+ import { deriveFocusPhase } from '../focus-phase.js';
20
+ import { hasActiveTeam as defaultHasActiveTeam } from '../focus-team-state.js';
21
+ import { isAuditPhaseFocus } from '../audit-shape.js';
22
+ // ── Ratify-to-execute release (Safe audit-to-remediation D3) ──────
23
+ /**
24
+ * Pure predicate: a read-only focus is ready to cross planning->execution
25
+ * exactly when a human has ratified its remediation plan.
26
+ *
27
+ * read_only === true => the focus is in the audit/read-only phase, its
28
+ * remediation deliveries held in 'planning'.
29
+ * ratified_at != null => a human stamped the distinct ratification signal.
30
+ *
31
+ * Both must hold. read_only=false (already crossed / a normal execute focus)
32
+ * fails the predicate, which is what makes the release idempotent: after the
33
+ * crossing flips read_only=false the predicate no longer holds, so re-runs are
34
+ * no-ops. A null ratified_at means the gate has NOT been crossed -- the human
35
+ * signal is absent -- so the focus stays held.
36
+ *
37
+ * Exported so tests can drive it with synthetic focus shapes.
38
+ */
39
+ export function isFocusRatifiedForExecute(focus) {
40
+ return focus.readOnly === true && focus.ratifiedAt != null;
41
+ }
42
+ const defaultRatifyReleaseDeps = {
43
+ getFocusDeliveries: defaultGetFocusDeliveries,
44
+ updateFocusReadOnly: defaultUpdateFocusReadOnly,
45
+ updateDeliveryStatus: defaultUpdateDeliveryStatus,
46
+ emitLoopTrigger,
47
+ };
48
+ /**
49
+ * The SOLE planning->execution crossing for a read-only audit focus.
50
+ *
51
+ * When `isFocusRatifiedForExecute(focus)` holds (read_only=true AND a human
52
+ * stamped ratified_at), atomically-in-effect:
53
+ * (a) flip read_only=false, and
54
+ * (b) release every held delivery (execution_status 'planning') to 'queued'.
55
+ *
56
+ * This is the ONLY path that does either, which is what makes the gate
57
+ * non-procedural: the gate cannot be crossed by an agent or a stage transition;
58
+ * it requires the distinct human ratification signal that this function reads.
59
+ *
60
+ * Idempotent by construction:
61
+ * - flipping read_only=false first means the predicate fails on re-entry, so a
62
+ * second tick is a no-op;
63
+ * - the delivery move is guarded to ONLY touch 'planning' rows, so deliveries
64
+ * already queued (or further along) are left untouched.
65
+ *
66
+ * Returns the number of deliveries released (0 when the predicate does not hold
67
+ * or there were no held deliveries).
68
+ *
69
+ * Runs regardless of stage: a read-only audit focus may sit at planning/queued/
70
+ * in_progress, so this is NOT gated on focus.stage.
71
+ */
72
+ export async function releaseRatifiedReadOnlyFocus(focus, deps = defaultRatifyReleaseDeps) {
73
+ if (!isFocusRatifiedForExecute(focus))
74
+ return 0;
75
+ // Crash-safety ordering: release held deliveries FIRST, and flip
76
+ // read_only=false ONLY after every held 'planning' delivery has been queued.
77
+ // The flip is what makes the predicate fail on re-entry, so deferring it
78
+ // until the release is complete means a crash (or a partial failure)
79
+ // mid-release leaves the predicate TRUE (read_only still true) and the next
80
+ // tick retries the whole release. Flipping first would orphan any
81
+ // not-yet-released held delivery: the predicate would already be false and
82
+ // those deliveries would never be queued.
83
+ // (a) Release held deliveries: planning -> queued. Guarded so only 'planning'
84
+ // rows move; anything already queued/further-along is left untouched
85
+ // (idempotency + safety).
86
+ let deliveries;
87
+ try {
88
+ deliveries = await deps.getFocusDeliveries(focus.focusId);
89
+ }
90
+ catch (err) {
91
+ console.warn(`[focus-stage-lifecycle] Ratify-release: failed to fetch deliveries to ` +
92
+ `release for "${focus.focusName}" (leaving read_only=true to retry next ` +
93
+ `tick): ${err.message}`);
94
+ return 0;
95
+ }
96
+ let released = 0;
97
+ let allReleased = true;
98
+ for (const d of deliveries) {
99
+ if (d.executionStatus !== DELIVERY_STATUS.PLANNING)
100
+ continue;
101
+ try {
102
+ await deps.updateDeliveryStatus(d.id, DELIVERY_STATUS.QUEUED, undefined, undefined, undefined, { organizationId: focus.organizationId, fromStatus: DELIVERY_STATUS.PLANNING });
103
+ released += 1;
104
+ }
105
+ catch (err) {
106
+ allReleased = false;
107
+ console.warn(`[focus-stage-lifecycle] Ratify-release: failed to queue held delivery ` +
108
+ `${d.id.slice(0, 8)} on "${focus.focusName}": ${err.message}`);
109
+ }
110
+ }
111
+ // (b) Flip read_only=false ONLY when every held delivery was queued. If any
112
+ // release failed, leave read_only=true so the predicate stays satisfied and
113
+ // the next tick retries the (planning-only, idempotent) release -- never
114
+ // crossing the gate with held deliveries still stuck in planning.
115
+ if (!allReleased) {
116
+ console.warn(`[focus-stage-lifecycle] Ratify-release: not all held deliveries queued ` +
117
+ `for "${focus.focusName}" (released ${released}); leaving read_only=true ` +
118
+ `to retry next tick.`);
119
+ return released;
120
+ }
121
+ try {
122
+ await deps.updateFocusReadOnly(focus.focusId, false);
123
+ }
124
+ catch (err) {
125
+ console.warn(`[focus-stage-lifecycle] Ratify-release: held deliveries queued for ` +
126
+ `"${focus.focusName}" but failed to flip read_only=false (will retry ` +
127
+ `next tick): ${err.message}`);
128
+ return released;
129
+ }
130
+ console.log(`[focus-stage-lifecycle] Focus "${focus.focusName}" ratified -> execute: ` +
131
+ `read_only=false, released ${released} held planning ` +
132
+ `deliver${released === 1 ? 'y' : 'ies'} to queued.`);
133
+ deps.emitLoopTrigger({
134
+ type: 'focus_status_changed',
135
+ focusId: focus.focusId,
136
+ detail: 'ratify:read_only->execute',
137
+ });
138
+ return released;
139
+ }
140
+ // ── Writable-focus planning->queued release (planning-wedge prevention D1) ──
141
+ /**
142
+ * Pure predicate: a writable focus is PAST its planning/kickoff window -- i.e. a
143
+ * lingering 'planning' delivery on it is a WEDGE to release, not work a scoping
144
+ * team is still shaping.
145
+ *
146
+ * Stage-column-INDEPENDENT by design. The previous version gated on
147
+ * `isPostPlanning(focus.stage)`, but `product_focuses.stage` is a documented-stale
148
+ * column: NO live path advances it to 'queued'/'in_progress' (the daemon writes
149
+ * only review/close_loop/done; everything else keeps the 'planning' default).
150
+ * supabase/.../focus/lifecycle.ts says so explicitly ("nothing advances `stage`
151
+ * to 'verify'"), which is why the newer code (checkAutoReview, focus_transition_stage)
152
+ * gates on the DERIVED phase instead. The old stage gate therefore NEVER fired for
153
+ * the founding wedge -- a post-backfill writable focus whose stage stays 'planning'
154
+ * forever (review finding, delivery 18055ddd). Worse, it was self-defeating: a
155
+ * delivery is born 'planning' PRECISELY because focus.stage was not post-planning
156
+ * (MCP resolveDefaultExecutionStatus reads the same column), and nothing changes
157
+ * the column before this tick -- so the release could never see a post-planning
158
+ * stage for exactly the focuses that have born-planning deliveries.
159
+ *
160
+ * The replacement uses two stage-free signals:
161
+ * 1. read_only === false -- a NORMAL execute focus, not a read-only audit focus
162
+ * (whose held planning deliveries are released only by the human-ratified
163
+ * `releaseRatifiedReadOnlyFocus`).
164
+ * 2. "past kickoff" via the delivery aggregate + active-team:
165
+ * - deriveFocusPhase(deliveries) !== 'kickoff' => real work already exists
166
+ * (some delivery is queued/coding/verify/done), so a lingering 'planning'
167
+ * row is a wedge behind/ahead of it -> past kickoff.
168
+ * - phase === 'kickoff' (all deliveries planning/draft, or none): genuinely
169
+ * ambiguous between a live scoping window and a full wedge. An ACTIVE TEAM
170
+ * is the discriminator -- a scoping team running for the focus is (or just
171
+ * was) creating/releasing deliveries, so DON'T pre-empt it; no team means
172
+ * nothing can make progress (the rank-0 planning delivery blocks the ready
173
+ * selector so no team will ever spawn) -> wedge -> past kickoff.
174
+ *
175
+ * Second discovery-only signal (injection #7, TEL-3): signal 1 is widened from a
176
+ * bare `read_only === false` to "NOT audit-phase". An audit-origin, not-yet-
177
+ * ratified focus whose `read_only` is silently absent (coerced false) is STILL an
178
+ * audit focus -- its born-planning remediation deliveries are owned by the ratify
179
+ * path and must NOT be swept to queued here, or the remediation executes ahead of
180
+ * the human ratify gate (2f253da6). `isAuditPhaseFocus` captures read_only===true
181
+ * OR (audit_origin AND !ratified); a RATIFIED audit focus (read_only=false,
182
+ * ratified_at set) is NOT audit-phase and IS released normally, and a NORMAL focus
183
+ * (audit_origin=false) is unaffected. Keyed on audit_origin + ratified_at
184
+ * (provenance + phase) -- it never writes read_only, so it is not a second source
185
+ * of truth for the flag.
186
+ *
187
+ * Exported so tests can drive it with synthetic shapes.
188
+ */
189
+ export function isWritableFocusPastKickoff(input) {
190
+ // Audit-phase focuses (explicit read_only=true OR the second structural signal:
191
+ // audit_origin && not-yet-ratified) are owned by the ratify-release path.
192
+ if (isAuditPhaseFocus({
193
+ readOnly: input.readOnly === true,
194
+ auditOrigin: input.auditOrigin === true,
195
+ ratified: input.ratifiedAt != null,
196
+ })) {
197
+ return false;
198
+ }
199
+ if (input.readOnly !== false)
200
+ return false;
201
+ const phase = deriveFocusPhase({
202
+ deliveries: input.deliveries.map((d) => ({ executionStatus: d.executionStatus })),
203
+ reviewRequestedAt: input.reviewRequestedAt ?? null,
204
+ });
205
+ // Any non-kickoff phase => real work exists => a held planning row is a wedge.
206
+ if (phase !== 'kickoff')
207
+ return true;
208
+ // Pure all-planning/draft (or empty) 'kickoff': a wedge only when no team is
209
+ // (or can be) working it. An active scoping team is shaping deliveries -- leave it.
210
+ return !input.hasActiveTeam;
211
+ }
212
+ const defaultWritableReleaseDeps = {
213
+ getFocusDeliveries: defaultGetFocusDeliveries,
214
+ updateDeliveryStatus: defaultUpdateDeliveryStatus,
215
+ emitLoopTrigger,
216
+ hasActiveTeam: defaultHasActiveTeam,
217
+ };
218
+ /**
219
+ * The writable-focus analogue of `releaseRatifiedReadOnlyFocus`: the missing
220
+ * planning->queued release for a NORMAL (read_only=false) executing focus.
221
+ *
222
+ * Closes the silent wedge: a writable focus whose deliveries were born
223
+ * 'planning' (created during the planning stage, or via the MCP focus_list
224
+ * lookup falling back to 'planning') has NO transition that releases them once
225
+ * the focus is past planning -- the only planning->queued release in the
226
+ * codebase (`releaseRatifiedReadOnlyFocus`) is gated to ratified read-only audit
227
+ * focuses, and listener-auto-advance only moves queued/coding -> verify. So
228
+ * `daemon_get_ready_focuses` hits the rank-0 'planning' delivery, treats it as a
229
+ * hard block, and the focus never spawns a team.
230
+ *
231
+ * Fetch the focus's deliveries, and when `isWritableFocusPastKickoff` holds (the
232
+ * stage-column-independent gate), sweep every held delivery (execution_status
233
+ * 'planning') to 'queued'. Guarded so ONLY 'planning' rows move --
234
+ * draft/paused/queued/further-along are left untouched, which also makes the
235
+ * release idempotent: once swept, there are no 'planning' rows left so a re-run is
236
+ * a no-op. Unlike the ratify path there is no read_only flip to defer, so each
237
+ * delivery move stands on its own; a per-delivery failure is logged and retried on
238
+ * the next tick.
239
+ *
240
+ * FRT effect #6 (a completed/merged delivery stuck in 'planning' must advance out
241
+ * of 'planning' and never block at rank 0): planning's ONLY valid forward
242
+ * transition is 'queued' (DELIVERY_STATUS machine: planning -> queued|cancelled;
243
+ * planning -> done is illegal). So 'queued' is the correct -- and only -- forward
244
+ * move here even for a complete-but-mislabeled row: it advances out of 'planning'
245
+ * and re-enters the normal lifecycle, which re-settles already-done work quickly
246
+ * (its issues are already Done -> coding -> verify -> done). Re-running merged work
247
+ * is bounded by that; skipping the row instead would leave it 'planning' and
248
+ * re-wedge the focus, which is worse.
249
+ *
250
+ * Returns the number of deliveries released (0 when the gate does not hold or
251
+ * there were no held deliveries).
252
+ */
253
+ export async function releaseWritableFocusPlanningDeliveries(focus, deps = defaultWritableReleaseDeps) {
254
+ // Audit-phase focuses -- explicit read_only=true OR the second structural signal
255
+ // (audit_origin && not-yet-ratified) -- are owned by the ratify-release path.
256
+ // Cheap exit before the fetch (isWritableFocusPastKickoff re-checks). Without
257
+ // this a flag-absent audit focus (read_only silently false) would sweep its
258
+ // born-planning remediation delivery to queued ahead of ratification (2f253da6).
259
+ if (isAuditPhaseFocus({
260
+ readOnly: focus.readOnly === true,
261
+ auditOrigin: focus.auditOrigin === true,
262
+ ratified: focus.ratifiedAt != null,
263
+ })) {
264
+ return 0;
265
+ }
266
+ if (focus.readOnly !== false)
267
+ return 0;
268
+ let deliveries;
269
+ try {
270
+ deliveries = await deps.getFocusDeliveries(focus.focusId);
271
+ }
272
+ catch (err) {
273
+ console.warn(`[focus-stage-lifecycle] Writable-release: failed to fetch deliveries to ` +
274
+ `release for "${focus.focusName}" (retry next tick): ${err.message}`);
275
+ return 0;
276
+ }
277
+ // Stage-column-INDEPENDENT gate: derived phase + active-team, never focus.stage.
278
+ if (!isWritableFocusPastKickoff({
279
+ readOnly: focus.readOnly,
280
+ auditOrigin: focus.auditOrigin,
281
+ ratifiedAt: focus.ratifiedAt,
282
+ deliveries,
283
+ reviewRequestedAt: focus.reviewRequestedAt,
284
+ hasActiveTeam: deps.hasActiveTeam(focus.focusId),
285
+ })) {
286
+ return 0;
287
+ }
288
+ let released = 0;
289
+ for (const d of deliveries) {
290
+ if (d.executionStatus !== DELIVERY_STATUS.PLANNING)
291
+ continue;
292
+ try {
293
+ await deps.updateDeliveryStatus(d.id, DELIVERY_STATUS.QUEUED, undefined, undefined, undefined, { organizationId: focus.organizationId, fromStatus: DELIVERY_STATUS.PLANNING });
294
+ released += 1;
295
+ }
296
+ catch (err) {
297
+ console.warn(`[focus-stage-lifecycle] Writable-release: failed to queue held delivery ` +
298
+ `${d.id.slice(0, 8)} on "${focus.focusName}": ${err.message}`);
299
+ }
300
+ }
301
+ if (released > 0) {
302
+ console.log(`[focus-stage-lifecycle] Focus "${focus.focusName}" (writable, past kickoff): ` +
303
+ `released ${released} born-planning deliver${released === 1 ? 'y' : 'ies'} to queued.`);
304
+ deps.emitLoopTrigger({
305
+ type: 'focus_status_changed',
306
+ focusId: focus.focusId,
307
+ detail: 'writable:planning->queued',
308
+ });
309
+ }
310
+ return released;
311
+ }
312
+ //# sourceMappingURL=planning-release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-release.js","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/planning-release.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,kBAAkB,IAAI,yBAAyB,EAC/C,mBAAmB,IAAI,0BAA0B,GAClD,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,IAAI,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qEAAqE;AAErE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAGzC;IACC,OAAO,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;AAC7D,CAAC;AAaD,MAAM,wBAAwB,GAAsB;IAClD,kBAAkB,EAAE,yBAAyB;IAC7C,mBAAmB,EAAE,0BAA0B;IAC/C,oBAAoB,EAAE,2BAA2B;IACjD,eAAe;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAMC,EACD,OAA0B,wBAAwB;IAElD,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEhD,iEAAiE;IACjE,6EAA6E;IAC7E,yEAAyE;IACzE,qEAAqE;IACrE,4EAA4E;IAC5E,kEAAkE;IAClE,2EAA2E;IAC3E,0CAA0C;IAE1C,8EAA8E;IAC9E,qEAAqE;IACrE,0BAA0B;IAC1B,IAAI,UAAiE,CAAC;IACtE,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,wEAAwE;YACxE,gBAAgB,KAAK,CAAC,SAAS,0CAA0C;YACzE,UAAW,GAAa,CAAC,OAAO,EAAE,CACnC,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,QAAQ;YAAE,SAAS;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,oBAAoB,CAC7B,CAAC,CAAC,EAAE,EACJ,eAAe,CAAC,MAAM,EACtB,SAAS,EACT,SAAS,EACT,SAAS,EACT,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,CAC/E,CAAC;YACF,QAAQ,IAAI,CAAC,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,wEAAwE;gBACxE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,kEAAkE;IAClE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CACV,yEAAyE;YACzE,QAAQ,KAAK,CAAC,SAAS,eAAe,QAAQ,4BAA4B;YAC1E,qBAAqB,CACtB,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,qEAAqE;YACrE,IAAI,KAAK,CAAC,SAAS,mDAAmD;YACtE,eAAgB,GAAa,CAAC,OAAO,EAAE,CACxC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CACT,kCAAkC,KAAK,CAAC,SAAS,yBAAyB;QAC1E,6BAA6B,QAAQ,iBAAiB;QACtD,UAAU,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CACpD,CAAC;IACF,IAAI,CAAC,eAAe,CAAC;QACnB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,2BAA2B;KACpC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAO1C;IACC,gFAAgF;IAChF,0EAA0E;IAC1E,IACE,iBAAiB,CAAC;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI;QACjC,WAAW,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI;QACvC,QAAQ,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;KACnC,CAAC,EACF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC7B,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACjF,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,IAAI;KACnD,CAAC,CAAC;IACH,+EAA+E;IAC/E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,6EAA6E;IAC7E,oFAAoF;IACpF,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;AAC9B,CAAC;AAeD,MAAM,0BAA0B,GAAwB;IACtD,kBAAkB,EAAE,yBAAyB;IAC7C,oBAAoB,EAAE,2BAA2B;IACjD,eAAe;IACf,aAAa,EAAE,oBAAoB;CACpC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,KAAK,UAAU,sCAAsC,CAC1D,KAYC,EACD,OAA4B,0BAA0B;IAEtD,iFAAiF;IACjF,8EAA8E;IAC9E,8EAA8E;IAC9E,4EAA4E;IAC5E,iFAAiF;IACjF,IACE,iBAAiB,CAAC;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI;QACjC,WAAW,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI;QACvC,QAAQ,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;KACnC,CAAC,EACF,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC;IAEvC,IAAI,UAAiE,CAAC;IACtE,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,0EAA0E;YAC1E,gBAAgB,KAAK,CAAC,SAAS,wBAAyB,GAAa,CAAC,OAAO,EAAE,CAChF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iFAAiF;IACjF,IACE,CAAC,0BAA0B,CAAC;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU;QACV,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;KACjD,CAAC,EACF,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,QAAQ;YAAE,SAAS;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,oBAAoB,CAC7B,CAAC,CAAC,EAAE,EACJ,eAAe,CAAC,MAAM,EACtB,SAAS,EACT,SAAS,EACT,SAAS,EACT,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,CAC/E,CAAC;YACF,QAAQ,IAAI,CAAC,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,0EAA0E;gBAC1E,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACT,kCAAkC,KAAK,CAAC,SAAS,8BAA8B;YAC/E,YAAY,QAAQ,yBAAyB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CACvF,CAAC;QACF,IAAI,CAAC,eAAe,CAAC;YACnB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,2BAA2B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Focus review-convergence transitions (extracted from focus-stage-lifecycle).
3
+ *
4
+ * Owns the two review-axis daemon-side transitions:
5
+ * verify -> review (Issue 4: auto-enter review on verify-stage entry)
6
+ * review -> close_loop (Issue 2 + 3: state-based convergence / nonconvergent
7
+ * escalation)
8
+ *
9
+ * Plus the pure helpers (`hasReviewConverged`, `getReviewIterationCap`,
10
+ * `hasInFlightRemediations`) these transitions rely on.
11
+ *
12
+ * @module focus-stage-lifecycle/review-convergence
13
+ */
14
+ import type { PipelineConfig } from '../types.js';
15
+ import { getLatestCompletedFocusReview as defaultGetLatestCompletedFocusReview, getInFlightRemediationCount as defaultGetInFlightRemediationCount, getFocusReviewIterationCount as defaultGetFocusReviewIterationCount, updateFocusStage as defaultUpdateFocusStage } from '../queries/focuses.js';
16
+ import { createEscalation as defaultCreateEscalation } from '../queries/issues.js';
17
+ import { emitLoopTrigger } from '../loops/index.js';
18
+ /**
19
+ * Default cap on review iterations before the daemon files a
20
+ * `review_nonconvergent` escalation and pauses the focus.
21
+ *
22
+ * Configurable per focus via `pipeline_config.review.maxIterations`.
23
+ */
24
+ export declare const DEFAULT_REVIEW_MAX_ITERATIONS = 3;
25
+ /**
26
+ * Decide whether a focus has converged out of review. Convergence is
27
+ * deterministic and state-based:
28
+ *
29
+ * - If there are no in-flight remediation deliveries created during/after
30
+ * the latest review pass, the focus has converged.
31
+ *
32
+ * Pure function: takes the in-flight count and returns the decision.
33
+ * Exported so tests can drive it with synthetic counts.
34
+ */
35
+ export declare function hasReviewConverged(inFlightRemediationCount: number): boolean;
36
+ /**
37
+ * Compute the configured review iteration cap for a focus. Pulls
38
+ * `pipeline_config.review.maxIterations` and falls back to
39
+ * `DEFAULT_REVIEW_MAX_ITERATIONS` when unset or non-positive.
40
+ *
41
+ * Exported for unit testing.
42
+ */
43
+ export declare function getReviewIterationCap(pipelineConfig: PipelineConfig | null | undefined): number;
44
+ /**
45
+ * Returns true when the focus has any in-flight remediation deliveries
46
+ * created during/after the latest review pass.
47
+ *
48
+ * "Latest review pass" is the `started_at` of the most recent focus_reviews
49
+ * row; when no review has run yet, this returns false (no remediation
50
+ * deliveries can exist before a review pass).
51
+ *
52
+ * In-flight means execution_status is NOT one of done/cancelled/verify.
53
+ *
54
+ * Exported for unit testing the convergence query independently of the
55
+ * surrounding transition logic.
56
+ */
57
+ export declare function hasInFlightRemediations(focusId: string, latestReviewPassTimestamp: string | null, deps?: {
58
+ getInFlightRemediationCount: typeof defaultGetInFlightRemediationCount;
59
+ }): Promise<boolean>;
60
+ /**
61
+ * Dependencies for `advanceVerifyToReviewIfEnabled`. Defaults reach for the
62
+ * real query module; tests can pass stub implementations.
63
+ */
64
+ export interface VerifyToReviewDeps {
65
+ updateFocusStage: typeof defaultUpdateFocusStage;
66
+ emitLoopTrigger: typeof emitLoopTrigger;
67
+ }
68
+ /**
69
+ * When a focus's stage is `verify` and auto-review is enabled, advance it to
70
+ * `review`. Auto-review is default-on (`isReviewEnabled`): only an explicit
71
+ * `pipeline_config.review.enabled === false` keeps the focus at `verify` until
72
+ * a human signals review. A focus with no stored review key auto-advances.
73
+ *
74
+ * Returns true when an advance was performed.
75
+ */
76
+ export declare function advanceVerifyToReviewIfEnabled(focus: {
77
+ focusId: string;
78
+ focusName: string;
79
+ stage: string;
80
+ pipelineConfig: PipelineConfig | null;
81
+ }, deps?: VerifyToReviewDeps): Promise<boolean>;
82
+ /**
83
+ * Dependencies for `advanceReviewToCloseLoopIfConverged`. Defaults reach for
84
+ * the real query modules; tests can pass stub implementations.
85
+ */
86
+ export interface ReviewConvergeDeps {
87
+ getLatestCompletedFocusReview: typeof defaultGetLatestCompletedFocusReview;
88
+ getInFlightRemediationCount: typeof defaultGetInFlightRemediationCount;
89
+ getFocusReviewIterationCount: typeof defaultGetFocusReviewIterationCount;
90
+ updateFocusStage: typeof defaultUpdateFocusStage;
91
+ createEscalation: typeof defaultCreateEscalation;
92
+ emitLoopTrigger: typeof emitLoopTrigger;
93
+ }
94
+ /**
95
+ * Outcome of an attempt to advance a focus past the review stage.
96
+ */
97
+ export type ReviewTransitionOutcome = {
98
+ kind: 'no_action';
99
+ reason: string;
100
+ } | {
101
+ kind: 'converged';
102
+ from: 'review';
103
+ to: 'close_loop';
104
+ } | {
105
+ kind: 'nonconvergent';
106
+ iterations: number;
107
+ cap: number;
108
+ };
109
+ /**
110
+ * Evaluate the review -> close_loop transition for a focus and apply the
111
+ * appropriate action. Returns a structured outcome so callers can log /
112
+ * test the decision path.
113
+ *
114
+ * Logic:
115
+ * 1. If stage is not `review`, do nothing.
116
+ * 2. If the review iteration count is >= the cap, file a
117
+ * `review_nonconvergent` escalation (idempotent best-effort) and
118
+ * LEAVE the focus stage at `review`. The focus is paused until a
119
+ * human intervenes.
120
+ * 3. Otherwise, check in-flight remediations against the latest review
121
+ * pass. If zero, advance stage `review -> close_loop`.
122
+ * 4. Otherwise, do nothing -- remediations are still in flight.
123
+ *
124
+ * Exported with injectable deps for unit testing.
125
+ */
126
+ export declare function advanceReviewToCloseLoopIfConverged(focus: {
127
+ focusId: string;
128
+ focusName: string;
129
+ organizationId: string;
130
+ stage: string;
131
+ pipelineConfig: PipelineConfig | null;
132
+ }, deps?: ReviewConvergeDeps): Promise<ReviewTransitionOutcome>;
133
+ //# sourceMappingURL=review-convergence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-convergence.d.ts","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/review-convergence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,6BAA6B,IAAI,oCAAoC,EACrE,2BAA2B,IAAI,kCAAkC,EACjE,4BAA4B,IAAI,mCAAmC,EACnE,gBAAgB,IAAI,uBAAuB,EAC5C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAOnF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAI/C;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,wBAAwB,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAChD,MAAM,CAMR;AAID;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,yBAAyB,EAAE,MAAM,GAAG,IAAI,EACxC,IAAI,GAAE;IACJ,2BAA2B,EAAE,OAAO,kCAAkC,CAAC;CACF,GACtE,OAAO,CAAC,OAAO,CAAC,CASlB;AAID;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,OAAO,uBAAuB,CAAC;IACjD,eAAe,EAAE,OAAO,eAAe,CAAC;CACzC;AAOD;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC,EACD,IAAI,GAAE,kBAA8C,GACnD,OAAO,CAAC,OAAO,CAAC,CAyBlB;AAID;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B,EAAE,OAAO,oCAAoC,CAAC;IAC3E,2BAA2B,EAAE,OAAO,kCAAkC,CAAC;IACvE,4BAA4B,EAAE,OAAO,mCAAmC,CAAC;IACzE,gBAAgB,EAAE,OAAO,uBAAuB,CAAC;IACjD,gBAAgB,EAAE,OAAO,uBAAuB,CAAC;IACjD,eAAe,EAAE,OAAO,eAAe,CAAC;CACzC;AAWD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,YAAY,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mCAAmC,CACvD,KAAK,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC,EACD,IAAI,GAAE,kBAA8C,GACnD,OAAO,CAAC,uBAAuB,CAAC,CAqHlC"}