@telora/daemon 0.22.146 → 0.22.160

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 (237) hide show
  1. package/build-info.json +8 -3
  2. package/dist/backends/codex/codex-mcp-proxy.d.ts +4 -6
  3. package/dist/backends/codex/codex-mcp-proxy.d.ts.map +1 -1
  4. package/dist/backends/codex/codex-mcp-proxy.js.map +1 -1
  5. package/dist/backends/codex/mcp-preflight.d.ts +2 -2
  6. package/dist/backends/codex/mcp-preflight.d.ts.map +1 -1
  7. package/dist/backends/codex/mcp-preflight.js.map +1 -1
  8. package/dist/completion/completion-phase-registry.d.ts +1 -0
  9. package/dist/completion/completion-phase-registry.d.ts.map +1 -1
  10. package/dist/completion/completion-phase-registry.js +7 -5
  11. package/dist/completion/completion-phase-registry.js.map +1 -1
  12. package/dist/completion/escalation-provenance.d.ts.map +1 -1
  13. package/dist/completion/escalation-provenance.js +5 -2
  14. package/dist/completion/escalation-provenance.js.map +1 -1
  15. package/dist/completion/exit-classification.d.ts +1 -1
  16. package/dist/completion/exit-classification.d.ts.map +1 -1
  17. package/dist/completion/exit-classification.js +7 -1
  18. package/dist/completion/exit-classification.js.map +1 -1
  19. package/dist/completion/review-cycle-cap.d.ts +81 -35
  20. package/dist/completion/review-cycle-cap.d.ts.map +1 -1
  21. package/dist/completion/review-cycle-cap.js +60 -132
  22. package/dist/completion/review-cycle-cap.js.map +1 -1
  23. package/dist/completion/review-exit-deps.d.ts +3 -1
  24. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  25. package/dist/completion/review-exit-deps.js +3 -1
  26. package/dist/completion/review-exit-deps.js.map +1 -1
  27. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  28. package/dist/completion/review-exit-phase.js +5 -4
  29. package/dist/completion/review-exit-phase.js.map +1 -1
  30. package/dist/completion/state-cascade.d.ts.map +1 -1
  31. package/dist/completion/state-cascade.js +3 -7
  32. package/dist/completion/state-cascade.js.map +1 -1
  33. package/dist/focus/focus-engine.d.ts +16 -0
  34. package/dist/focus/focus-engine.d.ts.map +1 -1
  35. package/dist/focus/focus-engine.js +37 -17
  36. package/dist/focus/focus-engine.js.map +1 -1
  37. package/dist/focus/focus-executor.d.ts.map +1 -1
  38. package/dist/focus/focus-executor.js +7 -0
  39. package/dist/focus/focus-executor.js.map +1 -1
  40. package/dist/focus/focus-spawn-decision.d.ts +5 -3
  41. package/dist/focus/focus-spawn-decision.d.ts.map +1 -1
  42. package/dist/focus/focus-spawn-decision.js.map +1 -1
  43. package/dist/focus/listener-spawn.d.ts.map +1 -1
  44. package/dist/focus/listener-spawn.js +4 -3
  45. package/dist/focus/listener-spawn.js.map +1 -1
  46. package/dist/focus/listener.d.ts +15 -0
  47. package/dist/focus/listener.d.ts.map +1 -1
  48. package/dist/focus/listener.js +58 -9
  49. package/dist/focus/listener.js.map +1 -1
  50. package/dist/focus/review-cycle-cap-hold.d.ts +15 -94
  51. package/dist/focus/review-cycle-cap-hold.d.ts.map +1 -1
  52. package/dist/focus/review-cycle-cap-hold.js +54 -112
  53. package/dist/focus/review-cycle-cap-hold.js.map +1 -1
  54. package/dist/focus/session-health.d.ts +22 -1
  55. package/dist/focus/session-health.d.ts.map +1 -1
  56. package/dist/focus/session-health.js +28 -3
  57. package/dist/focus/session-health.js.map +1 -1
  58. package/dist/focus/session-process-reap.d.ts +3 -1
  59. package/dist/focus/session-process-reap.d.ts.map +1 -1
  60. package/dist/focus/session-process-reap.js +20 -0
  61. package/dist/focus/session-process-reap.js.map +1 -1
  62. package/dist/focus-stage-lifecycle/index.d.ts.map +1 -1
  63. package/dist/focus-stage-lifecycle/index.js +1 -0
  64. package/dist/focus-stage-lifecycle/index.js.map +1 -1
  65. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +10 -0
  66. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  67. package/dist/focus-stage-lifecycle/wedge-watchdog.js +27 -3
  68. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  69. package/dist/git/focus-integration-sync.d.ts +42 -3
  70. package/dist/git/focus-integration-sync.d.ts.map +1 -1
  71. package/dist/git/focus-integration-sync.js +38 -2
  72. package/dist/git/focus-integration-sync.js.map +1 -1
  73. package/dist/merge/abandoned-merge-recovery.d.ts.map +1 -1
  74. package/dist/merge/abandoned-merge-recovery.js +10 -0
  75. package/dist/merge/abandoned-merge-recovery.js.map +1 -1
  76. package/dist/merge/merge-back-loop.d.ts +1 -0
  77. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  78. package/dist/merge/merge-back-loop.js +3 -3
  79. package/dist/merge/merge-back-loop.js.map +1 -1
  80. package/dist/prompt/team-prompt-base.d.ts +2 -1
  81. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  82. package/dist/prompt/team-prompt-base.js +5 -19
  83. package/dist/prompt/team-prompt-base.js.map +1 -1
  84. package/dist/prompt-sections/integration-reconcile-section.d.ts +45 -0
  85. package/dist/prompt-sections/integration-reconcile-section.d.ts.map +1 -0
  86. package/dist/prompt-sections/integration-reconcile-section.js +69 -0
  87. package/dist/prompt-sections/integration-reconcile-section.js.map +1 -0
  88. package/dist/prompt-sections/persona-sections.d.ts +0 -20
  89. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  90. package/dist/prompt-sections/persona-sections.js +4 -49
  91. package/dist/prompt-sections/persona-sections.js.map +1 -1
  92. package/dist/prompt-sections/testing-standard.d.ts +51 -0
  93. package/dist/prompt-sections/testing-standard.d.ts.map +1 -0
  94. package/dist/prompt-sections/testing-standard.js +132 -0
  95. package/dist/prompt-sections/testing-standard.js.map +1 -0
  96. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  97. package/dist/queries/agent-resolvable-promotion.js +7 -5
  98. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  99. package/dist/queries/ended-arm.d.ts +47 -0
  100. package/dist/queries/ended-arm.d.ts.map +1 -0
  101. package/dist/queries/ended-arm.js +35 -0
  102. package/dist/queries/ended-arm.js.map +1 -0
  103. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  104. package/dist/queries/escalation-consumption.js +0 -1
  105. package/dist/queries/escalation-consumption.js.map +1 -1
  106. package/dist/queries/focus-discovery.d.ts +14 -0
  107. package/dist/queries/focus-discovery.d.ts.map +1 -1
  108. package/dist/queries/focus-discovery.js +1 -0
  109. package/dist/queries/focus-discovery.js.map +1 -1
  110. package/dist/queries/focus-integration-conflict.d.ts +78 -0
  111. package/dist/queries/focus-integration-conflict.d.ts.map +1 -0
  112. package/dist/queries/focus-integration-conflict.js +136 -0
  113. package/dist/queries/focus-integration-conflict.js.map +1 -0
  114. package/dist/queries/focuses.d.ts +6 -3
  115. package/dist/queries/focuses.d.ts.map +1 -1
  116. package/dist/queries/focuses.js +13 -5
  117. package/dist/queries/focuses.js.map +1 -1
  118. package/dist/queries/incident-correlation.d.ts +1 -2
  119. package/dist/queries/incident-correlation.d.ts.map +1 -1
  120. package/dist/queries/incident-correlation.js +1 -3
  121. package/dist/queries/incident-correlation.js.map +1 -1
  122. package/dist/queries/local-models.js +1 -1
  123. package/dist/queries/local-models.js.map +1 -1
  124. package/dist/queries/schemas-local-model.d.ts +47 -0
  125. package/dist/queries/schemas-local-model.d.ts.map +1 -0
  126. package/dist/queries/schemas-local-model.js +57 -0
  127. package/dist/queries/schemas-local-model.js.map +1 -0
  128. package/dist/queries/schemas.d.ts +10 -32
  129. package/dist/queries/schemas.d.ts.map +1 -1
  130. package/dist/queries/schemas.js +10 -41
  131. package/dist/queries/schemas.js.map +1 -1
  132. package/dist/queries/sessions.d.ts +120 -12
  133. package/dist/queries/sessions.d.ts.map +1 -1
  134. package/dist/queries/sessions.js +104 -11
  135. package/dist/queries/sessions.js.map +1 -1
  136. package/dist/queries/shared.d.ts +1 -0
  137. package/dist/queries/shared.d.ts.map +1 -1
  138. package/dist/queries/shared.js +1 -1
  139. package/dist/queries/shared.js.map +1 -1
  140. package/dist/queries/system-session.d.ts.map +1 -1
  141. package/dist/queries/system-session.js +3 -1
  142. package/dist/queries/system-session.js.map +1 -1
  143. package/dist/resolvers/assembly-engine.d.ts +20 -1
  144. package/dist/resolvers/assembly-engine.d.ts.map +1 -1
  145. package/dist/resolvers/assembly-engine.js +74 -23
  146. package/dist/resolvers/assembly-engine.js.map +1 -1
  147. package/dist/resolvers/wiki-topic.d.ts +6 -5
  148. package/dist/resolvers/wiki-topic.d.ts.map +1 -1
  149. package/dist/resolvers/wiki-topic.js +43 -27
  150. package/dist/resolvers/wiki-topic.js.map +1 -1
  151. package/dist/session/session-lineage.d.ts.map +1 -1
  152. package/dist/session/session-lineage.js +1 -0
  153. package/dist/session/session-lineage.js.map +1 -1
  154. package/dist/shell/crash-recovery.d.ts +4 -2
  155. package/dist/shell/crash-recovery.d.ts.map +1 -1
  156. package/dist/shell/crash-recovery.js +15 -14
  157. package/dist/shell/crash-recovery.js.map +1 -1
  158. package/dist/shell/daemon-instance.d.ts +176 -0
  159. package/dist/shell/daemon-instance.d.ts.map +1 -0
  160. package/dist/shell/daemon-instance.js +281 -0
  161. package/dist/shell/daemon-instance.js.map +1 -0
  162. package/dist/shell/graceful-shutdown.d.ts +12 -1
  163. package/dist/shell/graceful-shutdown.d.ts.map +1 -1
  164. package/dist/shell/graceful-shutdown.js +7 -4
  165. package/dist/shell/graceful-shutdown.js.map +1 -1
  166. package/dist/shell/shutdown-ownership.d.ts +34 -0
  167. package/dist/shell/shutdown-ownership.d.ts.map +1 -0
  168. package/dist/shell/shutdown-ownership.js +51 -0
  169. package/dist/shell/shutdown-ownership.js.map +1 -0
  170. package/dist/shell/unified-shell.d.ts.map +1 -1
  171. package/dist/shell/unified-shell.js +12 -5
  172. package/dist/shell/unified-shell.js.map +1 -1
  173. package/dist/shell/worker-pidfile.d.ts +127 -11
  174. package/dist/shell/worker-pidfile.d.ts.map +1 -1
  175. package/dist/shell/worker-pidfile.js +349 -58
  176. package/dist/shell/worker-pidfile.js.map +1 -1
  177. package/dist/spawn/lead-launch.d.ts +17 -1
  178. package/dist/spawn/lead-launch.d.ts.map +1 -1
  179. package/dist/spawn/lead-launch.js +56 -7
  180. package/dist/spawn/lead-launch.js.map +1 -1
  181. package/dist/spawn/lead-process-ownership.d.ts +5 -4
  182. package/dist/spawn/lead-process-ownership.d.ts.map +1 -1
  183. package/dist/spawn/lead-process-ownership.js +7 -4
  184. package/dist/spawn/lead-process-ownership.js.map +1 -1
  185. package/dist/spawn/lifecycle.d.ts +0 -12
  186. package/dist/spawn/lifecycle.d.ts.map +1 -1
  187. package/dist/spawn/lifecycle.js +76 -19
  188. package/dist/spawn/lifecycle.js.map +1 -1
  189. package/dist/spawn/liveness.d.ts.map +1 -1
  190. package/dist/spawn/liveness.js +3 -1
  191. package/dist/spawn/liveness.js.map +1 -1
  192. package/dist/spawn/one-shot-process-ownership.d.ts +46 -2
  193. package/dist/spawn/one-shot-process-ownership.d.ts.map +1 -1
  194. package/dist/spawn/one-shot-process-ownership.js +78 -3
  195. package/dist/spawn/one-shot-process-ownership.js.map +1 -1
  196. package/dist/spawn/process-group-kill.d.ts.map +1 -1
  197. package/dist/spawn/process-group-kill.js +3 -1
  198. package/dist/spawn/process-group-kill.js.map +1 -1
  199. package/dist/spawn/process-spawn.d.ts +5 -15
  200. package/dist/spawn/process-spawn.d.ts.map +1 -1
  201. package/dist/spawn/process-spawn.js +2 -1
  202. package/dist/spawn/process-spawn.js.map +1 -1
  203. package/dist/spawn/prompt-assembly.d.ts +27 -2
  204. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  205. package/dist/spawn/prompt-assembly.js +65 -43
  206. package/dist/spawn/prompt-assembly.js.map +1 -1
  207. package/dist/spawn/worktree-session.d.ts +46 -2
  208. package/dist/spawn/worktree-session.d.ts.map +1 -1
  209. package/dist/spawn/worktree-session.js +57 -4
  210. package/dist/spawn/worktree-session.js.map +1 -1
  211. package/dist/testing/fixtures/conflicting-repo.d.ts +30 -0
  212. package/dist/testing/fixtures/conflicting-repo.d.ts.map +1 -0
  213. package/dist/testing/fixtures/conflicting-repo.js +89 -0
  214. package/dist/testing/fixtures/conflicting-repo.js.map +1 -0
  215. package/dist/testing/fixtures/index.d.ts.map +1 -1
  216. package/dist/testing/fixtures/index.js +2 -1
  217. package/dist/testing/fixtures/index.js.map +1 -1
  218. package/dist/testing/fixtures/pending-spawn-world.js +2 -2
  219. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
  220. package/dist/types/exit-category.d.ts +59 -0
  221. package/dist/types/exit-category.d.ts.map +1 -0
  222. package/dist/types/exit-category.js +133 -0
  223. package/dist/types/exit-category.js.map +1 -0
  224. package/dist/types/index.js +1 -1
  225. package/dist/types/session.d.ts +5 -1
  226. package/dist/types/session.d.ts.map +1 -1
  227. package/dist/types/session.js +1 -1
  228. package/dist/types/session.js.map +1 -1
  229. package/dist/verify/stall-detector-config.d.ts +5 -1
  230. package/dist/verify/stall-detector-config.d.ts.map +1 -1
  231. package/dist/verify/stall-detector-config.js +5 -1
  232. package/dist/verify/stall-detector-config.js.map +1 -1
  233. package/dist/worktree/state.d.ts +75 -1
  234. package/dist/worktree/state.d.ts.map +1 -1
  235. package/dist/worktree/state.js +89 -17
  236. package/dist/worktree/state.js.map +1 -1
  237. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/focus/listener.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/focus/listener.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,sEAAsE;AACtE,+DAA+D;AAC/D,6DAA6D;AAC7D,gEAAgE;AAChE,gBAAgB;AAYhB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAA2B,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAAE,sBAAsB,EAA8B,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,qCAAqC,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,4EAA4E;AAC5E,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,uEAAuE;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnF,kFAAkF;AAClF,2EAA2E;AAC3E,+EAA+E;AAC/E,oBAAoB;AACpB,OAAO,EACL,MAAM,EACN,KAAK,EACL,YAAY,EACZ,8BAA8B,EAC9B,gBAAgB,EAChB,4BAA4B,EAC5B,SAAS,EACT,eAAe,EACf,YAAY,EACZ,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAErF,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAGjD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAA0B;IAC3D,SAAS,CAAC,YAAY,CAAC,CAAC;IAExB,iBAAiB;IACjB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAClE,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC;QAE7C,4DAA4D;QAC5D,oEAAoE;QACpE,EAAE;QACF,4DAA4D;QAC5D,iEAAiE;QACjE,gEAAgE;QAChE,kEAAkE;QAClE,iEAAiE;QACjE,+DAA+D;QAC/D,8DAA8D;QAC9D,UAAU;QACV,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,yEAAyE;oBACzE,yEAAyE;oBACzE,yEAAyE;oBACzE,wEAAwE;oBACxE,yBAAyB,CAAC,KAAK,CAAC,QAAQ,EAAE;wBACxC,OAAO,EAAE,KAAK,CAAC,uBAAuB;wBACtC,MAAM,EAAE,KAAK,CAAC,sBAAsB;wBACpC,KAAK,EAAE,KAAK,CAAC,oBAAoB;wBACjC,SAAS,EAAE,KAAK,CAAC,wBAAwB;qBAC1C,CAAC,CAAC;oBACH,sEAAsE;oBACtE,+BAA+B,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBAClF,8BAA8B,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBACjF,IAAI,CAAC,KAAK,CAAC,yBAAyB;wBAAE,SAAS;oBAC/C,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;wBAC9B,kBAAkB,EAAE,CAAC;wBACrB,SAAS;oBACX,CAAC;oBACD,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;oBACxE,WAAW,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,+CAA+C,OAAO,CAAC,EAAE,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;QACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,uCAAuC,WAAW,iBAAiB,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,uBAAuB,kBAAkB,kEAAkE,CAAC,CAAC;QACxH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAI,KAAe,CAAC,OAAO,IAAI,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,QAAQ,CAAC,oDAAoD,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CACb,0FAA0F;kBACxF,0FAA0F;kBAC1F,0FAA0F;kBAC1F,+DAA+D,CAClE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,cAAc,CAAC,EAAgB;IAC5C,MAAM,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,0BAA0B,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAChC,4EAA4E;IAC5E,+DAA+D;IAC/D,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,sBAAsB,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,oBAAoB,CAAC,EAAgB;IAClD,MAAM,OAAO,GAAG,MAAM,+BAA+B,CACnD,EAAE,cAAc,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAC9D,6BAA6B,EAAE,CAChC,CAAC;IACF,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CACN,sCAAsC,OAAO,CAAC,OAAO,gCAAgC;YACnF,uBAAuB,OAAO,CAAC,IAAI,cAAc,OAAO,CAAC,OAAO,IAAI,CACvE,CAAC;IACJ,CAAC;AACH,CAAC;AAgBD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,2BAA2B,GAAsB;IAC5D,oBAAoB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC;IAC7D,0BAA0B;IAC1B,wBAAwB;IACxB,uEAAuE;IACvE,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,iBAAiB;IACjB,wBAAwB;IACxB,gFAAgF;IAChF,iFAAiF;IACjF,yBAAyB;IACzB,sBAAsB;IACtB,oBAAoB;IACpB,wEAAwE;IACxE,0DAA0D;IAC1D,sEAAsE;IACtE,kFAAkF;IAClF,sBAAsB;IACtB,wEAAwE;IACxE,yEAAyE;IACzE,6EAA6E;IAC7E,mDAAmD;IACnD,mBAAmB;IACnB,0EAA0E;IAC1E,qCAAqC;IACrC,cAAc;CACf,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAgB,EAAE,YAAwC,EAAE;IACrG,MAAM,MAAM,GAAsB,EAAE,GAAG,2BAA2B,EAAE,GAAG,SAAS,EAAE,CAAC;IACnF,MAAM,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAmBD,wCAAwC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAkB;IACpD,sBAAsB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,sBAAsB,EAAE,CAAC,CAAC,CAAC;IACvE,mBAAmB;IACnB,gCAAgC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,gCAAgC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjG,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D,wBAAwB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC;IAClH,mBAAmB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACjE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzF,2BAA2B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,kBAAkB;CACnB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoC,EAAE;IAC3E,MAAM,MAAM,GAAkB,EAAE,GAAG,uBAAuB,EAAE,GAAG,SAAS,EAAE,CAAC;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,mEAAmE;IACnE,KAAK,MAAM,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACjD,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAG,GAAa,CAAC,OAAO,CAAC,CAC3D,CAAC;IACF,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;IACnC,MAAM,MAAM,CAAC,gCAAgC,CAAC,MAAO,CAAC,CAAC;IACvD,+CAA+C;IAC/C,qEAAqE;IACrE,kEAAkE;IAClE,qEAAqE;IACrE,+DAA+D;IAC/D,MAAM,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,CAAC;IACtC,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,MAAM,CAAC,wBAAwB,EAAE,CAAC;IACxC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;IACnC,gEAAgE;IAChE,oEAAoE;IACpE,4EAA4E;IAC5E,sEAAsE;IACtE,+CAA+C;IAC/C,MAAM,MAAM,CAAC,gBAAgB,CAAC,MAAO,CAAC,CAAC;IACvC,iDAAiD;IACjD,2DAA2D;IAC3D,sDAAsD;IACtD,oEAAoE;IACpE,iEAAiE;IACjE,yDAAyD;IACzD,MAAM,MAAM,CAAC,4BAA4B,CAAC,MAAO,CAAC,CAAC;IACnD,MAAM,MAAM,CAAC,2BAA2B,CAAC,MAAO,CAAC,CAAC;IAClD,MAAM,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,CAAC;IACtC,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAO,CAAC,CAAC;IACxC,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,sBAAsB,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAClF,CAAC;AASD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAgC,EAAE;IAC7E,MAAM,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,EAAE,CAAC;AAC1D,CAAC;AAYD,iFAAiF;AACjF,MAAM,CAAC,MAAM,+BAA+B,GAA0B;IACpE,mBAAmB;IACnB,iBAAiB,EAAE,EAAE;IACrB,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE;CAC3C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAA4C,EAAE;IAClF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,KAAK,GAA0B,EAAE,GAAG,+BAA+B,EAAE,GAAG,SAAS,EAAE,CAAC;IAE1F,gBAAgB;IAChB,KAAK,CAAC,mBAAmB,EAAE,CAAC;IAE5B,0EAA0E;IAC1E,uEAAuE;IACvE,uEAAuE;IACvE,eAAe,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;QACtC,6EAA6E;QAC7E,2EAA2E;QAC3E,6EAA6E;QAC7E,8EAA8E;QAC9E,6EAA6E;QAC7E,6EAA6E;QAC7E,qCAAqC;QACrC,MAAM,mBAAmB,CAAC,YAAY,EAAE,wBAAwB,EAAE,KAAK,IAAI,EAAE;YAC3E,oFAAoF;YACpF,KAAK,MAAM,OAAO,IAAI,MAAO,CAAC,QAAQ,EAAE,CAAC;gBACvC,MAAM,oBAAoB,CAAC,gBAAgB,CAAC,MAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE7D,GAAG,CAAC,IAAI,CAAC,gCAAgC,gBAAgB,GAAG,IAAI,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,yEAAyE;IACzE,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;AACzE,CAAC;AAGD,oEAAoE;AACpE,SAAS,sBAAsB,CAAC,CAAwB;IACtD,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,OAAO,IAAI,MAAM,cAAc,CAAC,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;IAClG,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,SAAS,4BAA4B,EAAE,GAAG,CAAC,CAAC;IACpG,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CACN,6CAA6C,CAAC,CAAC,SAAS,wBAAwB;YAChF,6CAA6C,EAAE,qCAAqC,CACrF,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CACN,4CAA4C,CAAC,CAAC,SAAS,4BAA4B,EAAE,0BAA0B,CAChH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,SAAS,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,yBAAyB;IACtC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAkD,EAAE,CAAC;IACnE,KAAK,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,IAAmC;IAC1D,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE,qBAAqB,CAAC,IAAI,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,qBAAqB,CAAC,IAAmC;IAChE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB;YACrB,OAAO,gGAAgG,CAAC;QAC1G,KAAK,mBAAmB;YACtB,OAAO,2FAA2F,CAAC;QACrG,KAAK,kBAAkB;YACrB,OAAO,4EAA4E,CAAC;QACtF;YACE,OAAO,gEAAgE,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,8DAA8D;IAC9D,wEAAwE;IACxE,IAAI,8BAA8B,GAAG,CAAC,EAAE,CAAC;QACvC,wDAAwD;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,4BAA4B,CAAC,CAAC;QAC1F,iCAAiC,CAAC,8BAA8B,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,8BAA8B,GAAG,UAAU,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,kBAAkB;QAC5B,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,2BAA2B,8BAA8B,yCAAyC,UAAU,UAAU,CAAC,CAAC;IACnI,CAAC;IAED,MAAM,cAAc,GAAkD,EAAE,CAAC;IACzE,IAAI,CAAC;QACH,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,yBAAyB,EAAE,CAAC,CAAC;QAC1D,2BAA2B;QAC3B,IAAI,8BAA8B,GAAG,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,iDAAiD,8BAA8B,WAAW,CAAC,CAAC;YACrG,iCAAiC,CAAC,CAAC,CAAC,CAAC;YACrC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iCAAiC,CAAC,8BAA8B,GAAG,CAAC,CAAC,CAAC;QACtE,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,GAAG,CAAC,IAAI,CAAC,sDAAsD,8BAA8B,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7H,OAAO;IACT,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,qBAAqB,cAAc,CAAC,MAAM,2CAA2C,CAAC,CAAC;IAEhG,gEAAgE;IAChE,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,2EAA2E;IAC3E,uEAAuE;IACvE,8DAA8D;IAC9D,EAAE;IACF,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,iEAAiE;IACjE,iFAAiF;IACjF,iEAAiE;IACjE,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,sBAAsB,CAAC,cAAc,EAAE;QACvD,qBAAqB,EAAE,iBAAiB;QACxC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QACf,gFAAgF;QAChF,+EAA+E;QAC/E,2EAA2E;QAC3E,kBAAkB,EAAE,qCAAqC,EAAE,GAAG,MAAM;QACpE,cAAc;QACd,6EAA6E;QAC7E,wEAAwE;QACxE,4EAA4E;QAC5E,sBAAsB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC;KACjF,CAAC,CAAC;IAEH,gFAAgF;IAChF,sEAAsE;IACtE,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAE5D,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAEnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAChE,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAyC,EACzC,OAAwB,EAAE,aAAa,EAAE;IAEzC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACd,SAAS,CACP,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE;QACpC,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnC,CAAC,EACF,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAC5E,CACF,CACF,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,GAAG,CAAC,KAAK,CACP,mCAAmC,CAAC,CAAC,SAAS,eAAgB,MAAM,CAAC,MAAgB,CAAC,OAAO,EAAE,CAChG,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,YAAY,EAAE,CAAC;QACjB,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5B,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5D,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;GAOG;AACH,mBAAmB,CAAC,GAAS,EAAE;IAC7B,IAAI,oBAAoB,EAAE;QAAE,OAAO;IACnC,mBAAmB,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,mFAAmF;AACnF,6EAA6E;AAC7E,6FAA6F;AAC7F,qFAAqF;AACrF,0FAA0F;AAC1F,yFAAyF"}
@@ -1,106 +1,28 @@
1
- /**
2
- * The review-cycle cap HOLD: a focus whose review loop reached
3
- * TELORA_REVIEW_CYCLE_CAP without converging spawns no further coding or review
4
- * pass.
5
- *
6
- * Why a hold and not a meter: the cap used to file one review_cycle_cap_exceeded
7
- * observation and let the loop continue, on the theory that the hand-off breaker
8
- * (completion/review-exit-escalations.ts recordHandoffAndMaybeTerminate) was the
9
- * stop valve. That breaker only advances on no-progress exits, and a review that
10
- * files a new finding every cycle IS progress to it (review-cycle-delta.ts counts
11
- * issuesFiled), so a loop that never converges was never bounded. 2026-09-15: the
12
- * observation filed at cycle 8, cycles 9 and 10 plus their coding passes ran
13
- * (~$183), and only an operator disarm stopped it.
14
- *
15
- * ONE decision, read identically by every gate that can spawn a pass for a focus
16
- * or open the window that spawns one:
17
- * - the ready-focus spawn gate (focus/focus-spawn-decision.ts decideFocusSpawn)
18
- * - the pending-directive spawn pass (focus/listener-spawn.ts processPendingSpawnFocuses)
19
- * - the auto-review window (completion/state-cascade.ts checkAutoReview)
20
- * spawnFocusTeam has exactly those two callers, and a stage directive never spawns
21
- * on its own (directive/directive-dispatch.ts stashes it for the pending pass), so
22
- * these gates are the whole spawn surface.
23
- *
24
- * The hold is standing while ANY of three facts holds (isReviewCycleCapHeld):
25
- * - an OPEN review_cycle_cap_exceeded observation for the focus. The crossing
26
- * resets review_cycle_count to 0 once that observation is filed
27
- * (completion/review-cycle-cap.ts), so a fresh cap of cycles is needed to
28
- * re-cross. The hold is keyed on the machine-lane observation's KIND, never on
29
- * a human act: the daemon has no human-facing route, and the promotion sweep
30
- * hands a held focus's observations to the routing decider
31
- * (queries/agent-resolvable-promotion.ts).
32
- * - an OPEN lineage CARRIER naming one of the focus's review_cycle_cap_exceeded
33
- * observations, open or resolved: a human-lane row whose
34
- * metadata.originalEscalationId names it (queries/escalation-consumption.ts
35
- * LineageCarrier -- what a routing decider files through telora_agent escalate
36
- * with sourceEscalationId). The sweep closes the observation auto_swept the
37
- * moment such a row exists, so without this fact the hold would lift -- and the
38
- * focus bill another full cap of cycles -- while the human-facing filing still
39
- * sits unacted. A carrier has its own close-half (its resolution), unlike a
40
- * correlated or absorbed symptom, which is why carriers are matched by lineage
41
- * here and hasOpenFocusEscalation's matchCorrelated is not used as the hold.
42
- * Carriers carry no kind marker (no originalKind; original_cause_key only when
43
- * the source had a cause_key, which this observation does not), so the match
44
- * is by source id against the focus's own rows of the kind, any status.
45
- * - review_cycle_count >= cap: the count is written before the filing, so a
46
- * filing that fails still holds; the cascade re-files it every poll until it
47
- * lands (reconcileReviewCycleCapFiling).
48
- * Resolving the observation with no carrier, or resolving the carrier, lifts the
49
- * hold (the count is already 0).
50
- *
51
- * Fails CLOSED: an unreadable count, observation or carrier read holds. This is a
52
- * stop gate (workflow/gate-failure-policy.ts, safety class) and every read
53
- * repeats each poll, so a transient failure delays one poll instead of billing a
54
- * pass the cap exists to prevent.
55
- *
56
- * @module focus/review-cycle-cap-hold
57
- */
58
- import { type AgentResolvableEscalationRow, type LineageCarrier } from '../queries/escalation-consumption.js';
59
- /** The observation kind the cap files and the hold reads. */
60
- export declare const REVIEW_CYCLE_CAP_EXCEEDED_KIND = "review_cycle_cap_exceeded";
61
- /** The facts the cap-held decision reads. `null` = the read failed. */
1
+ /** The facts the backstop reads. `null` count = the read failed. */
62
2
  export interface ReviewCycleCapFacts {
63
3
  /** product_focuses.review_cycle_count: consecutive unconverged review cycles. */
64
4
  reviewCycleCount: number | null;
65
5
  cap: number;
66
- /** Whether a review_cycle_cap_exceeded observation is open for the focus. */
67
- capObservationOpen: boolean | null;
68
- /**
69
- * Whether an open lineage carrier names one of the focus's
70
- * review_cycle_cap_exceeded observations (open or resolved). Read only when it
71
- * can turn the decision (readReviewCycleCapFacts); false otherwise.
72
- */
73
- capCarrierOpen: boolean | null;
74
6
  }
75
- /** Pure: whether the review-cycle cap holds the focus. An unreadable fact holds. */
7
+ /** Pure: whether the spent review budget holds the focus. An unreadable count holds. */
76
8
  export declare function isReviewCycleCapHeld(facts: ReviewCycleCapFacts): boolean;
77
- /** Pure: whether an open carrier names one of the given cap observations (matched by source id). */
78
- export declare function capCarrierNamesObservation(carriers: readonly LineageCarrier[], capObservationIds: ReadonlySet<string>): boolean;
79
9
  /** Injectable reads (each defaults to the real implementation). */
80
10
  export interface ReviewCycleCapHoldDeps {
81
- /** Every review_cycle_cap_exceeded row on the focus, ANY status: the open half and the carrier sources. */
82
- listCapObservations?: (focusId: string) => Promise<readonly AgentResolvableEscalationRow[]>;
83
- /** The org's OPEN lineage carriers: the read the promotion sweep closes sources on. */
84
- listOpenLineageCarriers?: () => Promise<readonly LineageCarrier[]>;
85
11
  resolveReviewCycleCap?: () => number;
86
12
  }
87
- /**
88
- * Read the hold's facts for a focus whose review_cycle_count the caller already
89
- * read (null when it could not). The carrier read is made only when it can turn
90
- * the decision: skipped (false) when the focus has no cap observation for a
91
- * carrier to name, or when the other facts already hold.
92
- */
13
+ /** Read the backstop's facts for a focus whose review_cycle_count the caller already read. */
93
14
  export declare function readReviewCycleCapFacts(focus: {
94
- focusId: string;
95
- focusName: string;
96
15
  reviewCycleCount: number | null;
97
- }, deps?: ReviewCycleCapHoldDeps): Promise<ReviewCycleCapFacts>;
16
+ }, deps?: ReviewCycleCapHoldDeps): ReviewCycleCapFacts;
98
17
  /** Test seam: clear the per-episode log throttle. */
99
18
  export declare function __resetReviewCycleCapHoldLog(): void;
100
19
  /**
101
- * Resolve the hold for a focus whose review_cycle_count the caller already read
102
- * (null when it could not). Reads the facts, applies the one predicate, and logs
103
- * the held edge once per episode.
20
+ * Resolve the backstop for a focus whose review_cycle_count the caller already
21
+ * read (null when it could not), and log the held edge once per episode.
22
+ *
23
+ * Async because every gate calls it in an await position and the un-arm that
24
+ * normally precedes it is the asynchronous half of the same decision; keeping
25
+ * the signature lets a future read rejoin here without touching four gates.
104
26
  */
105
27
  export declare function resolveReviewCycleCapHold(focus: {
106
28
  focusId: string;
@@ -117,12 +39,11 @@ export interface ReadyFocusCapHoldDeps extends ReviewCycleCapHoldDeps {
117
39
  getActiveFocuses?: (organizationId: string, productId?: string) => Promise<readonly ReviewCycleCountRow[]>;
118
40
  }
119
41
  /**
120
- * A hold reader for the ready-focus spawn gate. getReadyFocuses rows do not carry
121
- * review_cycle_count, so the count comes from the active-focus read -- once per
122
- * product for the reader's lifetime (create one per poll). A failed read, or a
123
- * ready focus absent from the active read (both filter status='active', so only a
124
- * same-poll race), leaves the count unreadable: held. The org-wide carrier read is
125
- * likewise made at most once per reader, however many focuses need it.
42
+ * A backstop reader for the ready-focus spawn gate. getReadyFocuses rows do not
43
+ * carry review_cycle_count, so the count comes from the active-focus read --
44
+ * once per product for the reader's lifetime (create one per poll). A failed
45
+ * read, or a ready focus absent from the active read (both filter
46
+ * status='active', so only a same-poll race), leaves the count unreadable: held.
126
47
  */
127
48
  export declare function createReadyFocusCapHoldReader(organizationId: string, deps?: ReadyFocusCapHoldDeps): (focus: {
128
49
  focus_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"review-cycle-cap-hold.d.ts","sourceRoot":"","sources":["../../src/focus/review-cycle-cap-hold.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,cAAc,EACpB,MAAM,sCAAsC,CAAC;AAS9C,6DAA6D;AAC7D,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAE1E,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,kBAAkB,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAGxE;AAED,oGAAoG;AACpG,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,OAAO,CAET;AAYD,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,2GAA2G;IAC3G,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,4BAA4B,EAAE,CAAC,CAAC;IAC5F,uFAAuF;IACvF,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IACnE,qBAAqB,CAAC,EAAE,MAAM,MAAM,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC9E,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAqB9B;AAKD,qDAAqD;AACrD,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC9E,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;CAC5G;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,qBAA0B,GAC/B,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAqBlG"}
1
+ {"version":3,"file":"review-cycle-cap-hold.d.ts","sourceRoot":"","sources":["../../src/focus/review-cycle-cap-hold.ts"],"names":[],"mappings":"AAqDA,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAGxE;AAQD,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,qBAAqB,CAAC,EAAE,MAAM,MAAM,CAAC;CACtC;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE;IAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC1C,IAAI,GAAE,sBAA2B,GAChC,mBAAmB,CAErB;AAKD,qDAAqD;AACrD,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC9E,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;CAC5G;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,qBAA0B,GAC/B,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAkBlG"}
@@ -3,122 +3,65 @@
3
3
  // packages/daemon/src/focus/review-cycle-cap-hold.test.ts
4
4
  // PINNED-BY-END
5
5
  /**
6
- * The review-cycle cap HOLD: a focus whose review loop reached
7
- * TELORA_REVIEW_CYCLE_CAP without converging spawns no further coding or review
8
- * pass.
6
+ * The review-budget BACKSTOP: a focus whose review_cycle_count stands at
7
+ * TELORA_REVIEW_CYCLE_CAP spawns no further coding or review pass.
9
8
  *
10
- * Why a hold and not a meter: the cap used to file one review_cycle_cap_exceeded
11
- * observation and let the loop continue, on the theory that the hand-off breaker
12
- * (completion/review-exit-escalations.ts recordHandoffAndMaybeTerminate) was the
13
- * stop valve. That breaker only advances on no-progress exits, and a review that
14
- * files a new finding every cycle IS progress to it (review-cycle-delta.ts counts
15
- * issuesFiled), so a loop that never converges was never bounded. 2026-09-15: the
16
- * observation filed at cycle 8, cycles 9 and 10 plus their coding passes ran
17
- * (~$183), and only an operator disarm stopped it.
9
+ * THIS IS NOT THE STOP. The stop is the un-arm: when the budget is spent the
10
+ * daemon releases the focus's assigned agent role
11
+ * (completion/review-cycle-cap.ts), and a null role is inert for every spawn
12
+ * path whatever the arm history (spawn/null-role-spawn.ts focusMayRunTeam).
13
+ * This module exists for the one case that leaves: the un-arm WRITE FAILED. The
14
+ * count is written before the release, so a failed release still leaves
15
+ * `count >= cap` standing, and that alone holds every gate until a later
16
+ * crossing lands the release or a human re-arms (which resets the count to 0 in
17
+ * the database, migration 20260920140801).
18
18
  *
19
- * ONE decision, read identically by every gate that can spawn a pass for a focus
20
- * or open the window that spawns one:
19
+ * WHAT WAS DELETED AND WHY. The crossing used to file a
20
+ * review_cycle_cap_exceeded observation, and this hold stood while that
21
+ * observation -- or a human-facing filing a routing decider made from it -- was
22
+ * open. That made the stop answerable from inside the loop it stopped: on
23
+ * 2026-09-19/20 a routing decider granted three capped foci eight more cycles
24
+ * each within minutes. No observation is filed any more, so the two clauses that
25
+ * read one (the open observation, and its lineage carrier) had nothing left to
26
+ * read and are gone, along with the cascade pass that re-filed a failed filing.
27
+ * ONE clause remains, and it is the fail-closed one.
28
+ *
29
+ * Read identically by every gate that can spawn a pass for a focus or open the
30
+ * window that spawns one:
21
31
  * - the ready-focus spawn gate (focus/focus-spawn-decision.ts decideFocusSpawn)
22
32
  * - the pending-directive spawn pass (focus/listener-spawn.ts processPendingSpawnFocuses)
23
33
  * - the auto-review window (completion/state-cascade.ts checkAutoReview)
24
- * spawnFocusTeam has exactly those two callers, and a stage directive never spawns
25
- * on its own (directive/directive-dispatch.ts stashes it for the pending pass), so
26
- * these gates are the whole spawn surface.
27
- *
28
- * The hold is standing while ANY of three facts holds (isReviewCycleCapHeld):
29
- * - an OPEN review_cycle_cap_exceeded observation for the focus. The crossing
30
- * resets review_cycle_count to 0 once that observation is filed
31
- * (completion/review-cycle-cap.ts), so a fresh cap of cycles is needed to
32
- * re-cross. The hold is keyed on the machine-lane observation's KIND, never on
33
- * a human act: the daemon has no human-facing route, and the promotion sweep
34
- * hands a held focus's observations to the routing decider
35
- * (queries/agent-resolvable-promotion.ts).
36
- * - an OPEN lineage CARRIER naming one of the focus's review_cycle_cap_exceeded
37
- * observations, open or resolved: a human-lane row whose
38
- * metadata.originalEscalationId names it (queries/escalation-consumption.ts
39
- * LineageCarrier -- what a routing decider files through telora_agent escalate
40
- * with sourceEscalationId). The sweep closes the observation auto_swept the
41
- * moment such a row exists, so without this fact the hold would lift -- and the
42
- * focus bill another full cap of cycles -- while the human-facing filing still
43
- * sits unacted. A carrier has its own close-half (its resolution), unlike a
44
- * correlated or absorbed symptom, which is why carriers are matched by lineage
45
- * here and hasOpenFocusEscalation's matchCorrelated is not used as the hold.
46
- * Carriers carry no kind marker (no originalKind; original_cause_key only when
47
- * the source had a cause_key, which this observation does not), so the match
48
- * is by source id against the focus's own rows of the kind, any status.
49
- * - review_cycle_count >= cap: the count is written before the filing, so a
50
- * filing that fails still holds; the cascade re-files it every poll until it
51
- * lands (reconcileReviewCycleCapFiling).
52
- * Resolving the observation with no carrier, or resolving the carrier, lifts the
53
- * hold (the count is already 0).
34
+ * spawnFocusTeam has exactly those two callers, and a stage directive never
35
+ * spawns on its own (directive/directive-dispatch.ts stashes it for the pending
36
+ * pass), so these gates are the whole spawn surface.
54
37
  *
55
- * Fails CLOSED: an unreadable count, observation or carrier read holds. This is a
56
- * stop gate (workflow/gate-failure-policy.ts, safety class) and every read
57
- * repeats each poll, so a transient failure delays one poll instead of billing a
58
- * pass the cap exists to prevent.
38
+ * Fails CLOSED: an unreadable count holds. This is a stop gate
39
+ * (workflow/gate-failure-policy.ts, safety class) and the read repeats each
40
+ * poll, so a transient failure delays one poll instead of billing a pass the
41
+ * budget exists to prevent.
59
42
  *
60
43
  * @module focus/review-cycle-cap-hold
61
44
  */
62
- import { listFocusEscalationsOfKind, listOpenLineageCarriersForOrg, } from '../queries/escalation-consumption.js';
63
- import { isOpenFocusKindRow } from '../queries/incident-correlation.js';
64
45
  import { getActiveFocuses } from '../queries/focus-discovery.js';
65
46
  import { resolveReviewCycleCap } from '../verify/stall-detector-config.js';
66
47
  import { safetyGateFailsClosed } from '../workflow/gate-failure-policy.js';
67
48
  import { createLogger } from '../shell/log.js';
68
49
  const log = createLogger({ module: 'focus' });
69
- /** The observation kind the cap files and the hold reads. */
70
- export const REVIEW_CYCLE_CAP_EXCEEDED_KIND = 'review_cycle_cap_exceeded';
71
- /** Pure: whether the review-cycle cap holds the focus. An unreadable fact holds. */
50
+ /** Pure: whether the spent review budget holds the focus. An unreadable count holds. */
72
51
  export function isReviewCycleCapHeld(facts) {
73
- if (facts.reviewCycleCount === null || facts.capObservationOpen === null || facts.capCarrierOpen === null)
52
+ if (facts.reviewCycleCount === null)
74
53
  return true;
75
- return facts.capObservationOpen || facts.capCarrierOpen || facts.reviewCycleCount >= facts.cap;
76
- }
77
- /** Pure: whether an open carrier names one of the given cap observations (matched by source id). */
78
- export function capCarrierNamesObservation(carriers, capObservationIds) {
79
- return carriers.some((c) => capObservationIds.has(c.sourceEscalationId));
54
+ return facts.reviewCycleCount >= facts.cap;
80
55
  }
81
56
  /** Pure: why a held focus is held, for the one log line per episode. */
82
57
  function describeHold(facts) {
83
- if (facts.reviewCycleCount === null || facts.capObservationOpen === null || facts.capCarrierOpen === null) {
84
- return 'a read failed (fail closed)';
85
- }
86
- if (facts.capObservationOpen)
87
- return 'its review_cycle_cap_exceeded observation is open';
88
- if (facts.capCarrierOpen)
89
- return 'a human-facing filing made from its review_cycle_cap_exceeded observation is open';
58
+ if (facts.reviewCycleCount === null)
59
+ return 'its review-cycle count could not be read (fail closed)';
90
60
  return `cycles=${facts.reviewCycleCount} >= cap=${facts.cap}`;
91
61
  }
92
- /**
93
- * Read the hold's facts for a focus whose review_cycle_count the caller already
94
- * read (null when it could not). The carrier read is made only when it can turn
95
- * the decision: skipped (false) when the focus has no cap observation for a
96
- * carrier to name, or when the other facts already hold.
97
- */
98
- export async function readReviewCycleCapFacts(focus, deps = {}) {
99
- const base = { reviewCycleCount: focus.reviewCycleCount, cap: (deps.resolveReviewCycleCap ?? resolveReviewCycleCap)() };
100
- const site = `review-cycle-cap-hold "${focus.focusName}"`;
101
- const listRows = deps.listCapObservations
102
- ?? ((focusId) => listFocusEscalationsOfKind(focusId, REVIEW_CYCLE_CAP_EXCEEDED_KIND));
103
- let rows;
104
- try {
105
- rows = await listRows(focus.focusId);
106
- }
107
- catch (err) {
108
- return { ...base, capObservationOpen: safetyGateFailsClosed(`${site} observation read`, err, null), capCarrierOpen: null };
109
- }
110
- const own = rows.filter((r) => r.focusId === focus.focusId && r.escalationKind === REVIEW_CYCLE_CAP_EXCEEDED_KIND);
111
- const capObservationOpen = own.some((r) => isOpenFocusKindRow(r, focus.focusId, REVIEW_CYCLE_CAP_EXCEEDED_KIND));
112
- const unread = { ...base, capObservationOpen, capCarrierOpen: false };
113
- if (own.length === 0 || isReviewCycleCapHeld(unread))
114
- return unread;
115
- try {
116
- const carriers = await (deps.listOpenLineageCarriers ?? (() => listOpenLineageCarriersForOrg()))();
117
- return { ...unread, capCarrierOpen: capCarrierNamesObservation(carriers, new Set(own.map((r) => r.id))) };
118
- }
119
- catch (err) {
120
- return { ...unread, capCarrierOpen: safetyGateFailsClosed(`${site} lineage-carrier read`, err, null) };
121
- }
62
+ /** Read the backstop's facts for a focus whose review_cycle_count the caller already read. */
63
+ export function readReviewCycleCapFacts(focus, deps = {}) {
64
+ return { reviewCycleCount: focus.reviewCycleCount, cap: (deps.resolveReviewCycleCap ?? resolveReviewCycleCap)() };
122
65
  }
123
66
  /** Focuses whose held episode was already logged (one line per episode, not per poll). */
124
67
  const heldLoggedFocuses = new Set();
@@ -127,31 +70,33 @@ export function __resetReviewCycleCapHoldLog() {
127
70
  heldLoggedFocuses.clear();
128
71
  }
129
72
  /**
130
- * Resolve the hold for a focus whose review_cycle_count the caller already read
131
- * (null when it could not). Reads the facts, applies the one predicate, and logs
132
- * the held edge once per episode.
73
+ * Resolve the backstop for a focus whose review_cycle_count the caller already
74
+ * read (null when it could not), and log the held edge once per episode.
75
+ *
76
+ * Async because every gate calls it in an await position and the un-arm that
77
+ * normally precedes it is the asynchronous half of the same decision; keeping
78
+ * the signature lets a future read rejoin here without touching four gates.
133
79
  */
134
80
  export async function resolveReviewCycleCapHold(focus, deps = {}) {
135
- const facts = await readReviewCycleCapFacts(focus, deps);
81
+ const facts = readReviewCycleCapFacts(focus, deps);
136
82
  const held = isReviewCycleCapHeld(facts);
137
83
  if (!held) {
138
84
  heldLoggedFocuses.delete(focus.focusId);
139
85
  }
140
86
  else if (!heldLoggedFocuses.has(focus.focusId)) {
141
87
  heldLoggedFocuses.add(focus.focusId);
142
- log.info(`[review-cycle-cap-hold] "${focus.focusName}" is held at its review-cycle cap: ${describeHold(facts)}. ` +
143
- `No coding or review pass spawns until the observation -- or the human-facing filing made from it -- ` +
144
- `is resolved, or the focus converges.`);
88
+ log.info(`[review-cycle-cap-hold] "${focus.focusName}" is held by its spent review budget: ${describeHold(facts)}. ` +
89
+ `The un-arm that normally accompanies a spent budget did not land (or its count has not been cleared), ` +
90
+ `so no coding or review pass spawns until the focus is armed again.`);
145
91
  }
146
92
  return held;
147
93
  }
148
94
  /**
149
- * A hold reader for the ready-focus spawn gate. getReadyFocuses rows do not carry
150
- * review_cycle_count, so the count comes from the active-focus read -- once per
151
- * product for the reader's lifetime (create one per poll). A failed read, or a
152
- * ready focus absent from the active read (both filter status='active', so only a
153
- * same-poll race), leaves the count unreadable: held. The org-wide carrier read is
154
- * likewise made at most once per reader, however many focuses need it.
95
+ * A backstop reader for the ready-focus spawn gate. getReadyFocuses rows do not
96
+ * carry review_cycle_count, so the count comes from the active-focus read --
97
+ * once per product for the reader's lifetime (create one per poll). A failed
98
+ * read, or a ready focus absent from the active read (both filter
99
+ * status='active', so only a same-poll race), leaves the count unreadable: held.
155
100
  */
156
101
  export function createReadyFocusCapHoldReader(organizationId, deps = {}) {
157
102
  const countsByProduct = new Map();
@@ -166,13 +111,10 @@ export function createReadyFocusCapHoldReader(organizationId, deps = {}) {
166
111
  }
167
112
  return counts;
168
113
  };
169
- let carriers;
170
- const readCarriers = deps.listOpenLineageCarriers ?? (() => listOpenLineageCarriersForOrg());
171
- const holdDeps = { ...deps, listOpenLineageCarriers: () => (carriers ??= readCarriers()) };
172
114
  return async (focus) => {
173
115
  const counts = await readCounts(focus.product_id);
174
116
  const reviewCycleCount = counts?.get(focus.focus_id) ?? null;
175
- return resolveReviewCycleCapHold({ focusId: focus.focus_id, focusName: focus.focus_name, reviewCycleCount }, holdDeps);
117
+ return resolveReviewCycleCapHold({ focusId: focus.focus_id, focusName: focus.focus_name, reviewCycleCount }, deps);
176
118
  };
177
119
  }
178
120
  //# sourceMappingURL=review-cycle-cap-hold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-cycle-cap-hold.js","sourceRoot":"","sources":["../../src/focus/review-cycle-cap-hold.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,4DAA4D;AAC5D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAG9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAE9C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAA2B,CAAC;AAiB1E,oFAAoF;AACpF,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC7D,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,IAAI,KAAK,CAAC,kBAAkB,KAAK,IAAI,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvH,OAAO,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC;AACjG,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,0BAA0B,CACxC,QAAmC,EACnC,iBAAsC;IAEtC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,wEAAwE;AACxE,SAAS,YAAY,CAAC,KAA0B;IAC9C,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,IAAI,KAAK,CAAC,kBAAkB,KAAK,IAAI,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QAC1G,OAAO,6BAA6B,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB;QAAE,OAAO,mDAAmD,CAAC;IACzF,IAAI,KAAK,CAAC,cAAc;QAAE,OAAO,mFAAmF,CAAC;IACrH,OAAO,UAAU,KAAK,CAAC,gBAAgB,WAAW,KAAK,CAAC,GAAG,EAAE,CAAC;AAChE,CAAC;AAWD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAA8E,EAC9E,OAA+B,EAAE;IAEjC,MAAM,IAAI,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,EAAE,EAAE,CAAC;IACxH,MAAM,IAAI,GAAG,0BAA0B,KAAK,CAAC,SAAS,GAAG,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB;WACpC,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,0BAA0B,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAChG,IAAI,IAA6C,CAAC;IAClD,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,IAAI,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC7H,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,cAAc,KAAK,8BAA8B,CAAC,CAAC;IACnH,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAC;IACjH,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACtE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,GAAG,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,0BAA0B,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5G,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,qBAAqB,CAAC,GAAG,IAAI,uBAAuB,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;IACzG,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE5C,qDAAqD;AACrD,MAAM,UAAU,4BAA4B;IAC1C,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAA8E,EAC9E,OAA+B,EAAE;IAEjC,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,CACN,4BAA4B,KAAK,CAAC,SAAS,sCAAsC,YAAY,CAAC,KAAK,CAAC,IAAI;YACxG,sGAAsG;YACtG,sCAAsC,CACvC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAaD;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,cAAsB,EACtB,OAA8B,EAAE;IAEhC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+C,CAAC;IAC/E,MAAM,UAAU,GAAG,CAAC,SAAwB,EAAuC,EAAE;QACnF,MAAM,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS,CAAC;iBACzF,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBAC9F,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,qBAAqB,CAAC,6CAA6C,GAAG,IAAI,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9H,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,IAAI,QAAwD,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,IAAI,CAAC,GAAG,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAA2B,EAAE,GAAG,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC,EAAE,CAAC;IACnH,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;QAC7D,OAAO,yBAAyB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"review-cycle-cap-hold.js","sourceRoot":"","sources":["../../src/focus/review-cycle-cap-hold.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,4DAA4D;AAC5D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAS9C,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC7D,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,wEAAwE;AACxE,SAAS,YAAY,CAAC,KAA0B;IAC9C,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,wDAAwD,CAAC;IACrG,OAAO,UAAU,KAAK,CAAC,gBAAgB,WAAW,KAAK,CAAC,GAAG,EAAE,CAAC;AAChE,CAAC;AAOD,8FAA8F;AAC9F,MAAM,UAAU,uBAAuB,CACrC,KAA0C,EAC1C,OAA+B,EAAE;IAEjC,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,EAAE,EAAE,CAAC;AACpH,CAAC;AAED,0FAA0F;AAC1F,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE5C,qDAAqD;AACrD,MAAM,UAAU,4BAA4B;IAC1C,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAA8E,EAC9E,OAA+B,EAAE;IAEjC,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,CACN,4BAA4B,KAAK,CAAC,SAAS,yCAAyC,YAAY,CAAC,KAAK,CAAC,IAAI;YAC3G,wGAAwG;YACxG,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,cAAsB,EACtB,OAA8B,EAAE;IAEhC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+C,CAAC;IAC/E,MAAM,UAAU,GAAG,CAAC,SAAwB,EAAuC,EAAE;QACnF,MAAM,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS,CAAC;iBACzF,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBAC9F,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,qBAAqB,CAAC,6CAA6C,GAAG,IAAI,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9H,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;QAC7D,OAAO,yBAAyB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC;IACrH,CAAC,CAAC;AACJ,CAAC"}
@@ -27,6 +27,7 @@
27
27
  * from ordinary scope-time audit work.
28
28
  */
29
29
  import type { AgentSession } from '../types/index.js';
30
+ import type { SessionProcessLiveness } from '../shell/daemon-instance.js';
30
31
  /**
31
32
  * Grace period: a session started within this window is left alone even if it
32
33
  * has no matching team yet (it may still be initializing / the one-shot is still
@@ -53,6 +54,20 @@ export interface SessionHealthContext {
53
54
  graceMs?: number;
54
55
  /** Liveness probe: true when the pid is a live process. */
55
56
  isProcessAlive: (pid: number) => boolean;
57
+ /**
58
+ * What the session's OWN team process is doing, read from the host's durable
59
+ * lead record (shell/daemon-instance.ts `classifySessionProcess`) rather than
60
+ * from the row's `pid`.
61
+ *
62
+ * The row's pid cannot answer it. It is written AFTER the detached lead is
63
+ * spawned, so a row still in `starting` with a null pid -- the pre-stamp
64
+ * window -- looked processless to this sweep and was closed while its team ran.
65
+ * It also names no identity, so a recycled number read as the team. The record
66
+ * is reserved before the process exists and carries its start identity, so
67
+ * both cases are decidable; where they are not, the verdict is `unprovable`
68
+ * and this sweep closes nothing.
69
+ */
70
+ sessionProcessLiveness: (sessionId: string) => SessionProcessLiveness;
56
71
  /**
57
72
  * Silence window in ms for the CALL-ACTIVITY abandonment check. When set, a
58
73
  * non-tracked session whose process is ALIVE but whose durable last-activity
@@ -64,7 +79,13 @@ export interface SessionHealthContext {
64
79
  */
65
80
  silenceThresholdMs?: number;
66
81
  }
67
- export type SessionHealthSkipReason = 'tracked_team' | 'no_started_at' | 'within_grace' | 'live_process';
82
+ export type SessionHealthSkipReason = 'tracked_team' | 'no_started_at' | 'within_grace' | 'live_process'
83
+ /** The team's process could not be shown either running or stopped. */
84
+ | 'unprovable_process'
85
+ /** The durable record says stopped, but the row's own (unverified) pid is alive. */
86
+ | 'unverified_live_pid'
87
+ /** A close was decided, but the session's process was not confirmed gone. */
88
+ | 'unreaped_process';
68
89
  export interface SessionHealthDecision {
69
90
  sessionId: string;
70
91
  focusId: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"session-health.d.ts","sourceRoot":"","sources":["../../src/focus/session-health.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,QAAgB,CAAC;AAE5D,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,OAAO,CAErF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,GAAG,MAAM,GAAG,IAAI,CAKlG;AAED,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,uBAAuB,GAC/B,cAAc,GACd,eAAe,GACf,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;CACtF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,oBAAoB,GACxB,qBAAqB,CAqDvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,GAAG,EAAE,oBAAoB,GACxB,qBAAqB,EAAE,CAEzB"}
1
+ {"version":3,"file":"session-health.d.ts","sourceRoot":"","sources":["../../src/focus/session-health.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,QAAgB,CAAC;AAE5D,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,OAAO,CAErF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,GAAG,MAAM,GAAG,IAAI,CAKlG;AAED,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC;;;;;;;;;;;;OAYG;IACH,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,sBAAsB,CAAC;IACtE;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,uBAAuB,GAC/B,cAAc,GACd,eAAe,GACf,cAAc,GACd,cAAc;AAChB,uEAAuE;GACrE,oBAAoB;AACtB,oFAAoF;GAClF,qBAAqB;AACvB,6EAA6E;GAC3E,kBAAkB,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;CACtF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,oBAAoB,GACxB,qBAAqB,CAiFvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,GAAG,EAAE,oBAAoB,GACxB,qBAAqB,EAAE,CAEzB"}
@@ -1,6 +1,6 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: packages/daemon/src/focus/session-health.test.ts,
3
- // packages/daemon/src/focus/session-process-reap.test.ts
2
+ // Pinned by: packages/daemon/src/focus/session-close-producers.test.ts,
3
+ // packages/daemon/src/focus/session-health.test.ts, packages/daemon/src/focus/session-process-reap.test.ts
4
4
  // PINNED-BY-END
5
5
  /**
6
6
  * Grace period: a session started within this window is left alone even if it
@@ -60,7 +60,13 @@ export function classifySessionHealth(session, ctx) {
60
60
  // silence threshold, classify the session abandoned rather than skipping it
61
61
  // forever. Applies only here -- a tracked team returned above, so a legitimately
62
62
  // parked live team (owned by the outcome/idle stall detectors) is never touched.
63
- if (session.pid != null && ctx.isProcessAlive(session.pid)) {
63
+ const liveness = ctx.sessionProcessLiveness(session.id);
64
+ // A VERIFIED live process is the only thing that may be judged abandoned. The
65
+ // silence check is a CLOSE, and it must rest on the same identified process the
66
+ // rest of this module requires: an unverified raw pid reading alive plus a stale
67
+ // activity clock would close the row of a team that is running (or of a stranger
68
+ // whose pid we happened to probe), which is the falsification either way.
69
+ if (liveness === 'alive') {
64
70
  const lastActivityMs = parseLastActivityMs(session);
65
71
  if (ctx.silenceThresholdMs !== undefined &&
66
72
  lastActivityMs !== null &&
@@ -72,6 +78,25 @@ export function classifySessionHealth(session, ctx) {
72
78
  // before. Conservative: absence of a signal is never treated as abandonment.
73
79
  return { ...base, verdict: 'skip', skipReason: 'live_process' };
74
80
  }
81
+ // Not provably running -- but "not provably running" is not "stopped". An
82
+ // unreadable lead record, a reservation whose spawn is in flight, or a live pid
83
+ // whose identity cannot be verified all land here, and closing the row on any
84
+ // of them is the falsification this sweep must not make: a `failed` row tells
85
+ // the dashboard AND isWorktreeBeingWritten that a running team is not there.
86
+ if (liveness === 'unprovable') {
87
+ return { ...base, verdict: 'skip', skipReason: 'unprovable_process' };
88
+ }
89
+ // The durable record says stopped or names no lead -- but the row's own pid may
90
+ // still be alive (a legacy row the record never named, a one-shot recorded
91
+ // elsewhere). That pid is UNVERIFIED, so it is not grounds to close and not
92
+ // grounds to claim a live team either: skip, and let the reap that can verify
93
+ // it decide. This is the case that must not become a close.
94
+ if (session.pid != null && ctx.isProcessAlive(session.pid)) {
95
+ return { ...base, verdict: 'skip', skipReason: 'unverified_live_pid' };
96
+ }
97
+ // `stopped` (the recorded process is gone, or its pid was recycled) or
98
+ // `no_process_recorded` (the record is readable and names no lead for this
99
+ // session, and its own pid is not alive either) -- the team really has stopped.
75
100
  return {
76
101
  ...base,
77
102
  verdict: 'close',
@@ -1 +1 @@
1
- {"version":3,"file":"session-health.js","sourceRoot":"","sources":["../../src/focus/session-health.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+DAA+D;AAC/D,2DAA2D;AAC3D,gBAAgB;AAiChB;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAEzE,kGAAkG;AAClG,MAAM,UAAU,eAAe,CAAC,OAA4C;IAC1E,OAAO,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA+C;IACjF,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC;IACtD,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAoDD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAqB,EACrB,GAAyB;IAEzB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,8BAA8B,CAAC;IAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,UAAU,EAAE,OAAO,CAAC,WAAW;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;IAEF,8EAA8E;IAC9E,oEAAoE;IACpE,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;IAClE,CAAC;IAED,0EAA0E;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;IACnE,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QACtD,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;IAClE,CAAC;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,+EAA+E;IAC/E,+EAA+E;IAC/E,8EAA8E;IAC9E,4EAA4E;IAC5E,iFAAiF;IACjF,iFAAiF;IACjF,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpD,IACE,GAAG,CAAC,kBAAkB,KAAK,SAAS;YACpC,cAAc,KAAK,IAAI;YACvB,GAAG,CAAC,GAAG,GAAG,cAAc,GAAG,GAAG,CAAC,kBAAkB,EACjD,CAAC;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;QACjE,CAAC;QACD,+EAA+E;QAC/E,gFAAgF;QAChF,6EAA6E;QAC7E,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;IAClE,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAiC,EACjC,GAAyB;IAEzB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"session-health.js","sourceRoot":"","sources":["../../src/focus/session-health.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,9 @@
9
9
  * why it did not:
10
10
  *
11
11
  * - a CLOSE decision (team_orphan / system_straggler / silent_abandoned) ends
12
- * the session's process group;
12
+ * the session's process group, and the close is WITHHELD when that group
13
+ * survives -- a row marked failed while its process runs is the same
14
+ * falsification from the other direction;
13
15
  * - a `live_process` SKIP whose process is a verified daemon-spawned lead no
14
16
  * team tracks is ended too, and turned into an `untracked_process` close so
15
17
  * its row is marked failed.
@@ -1 +1 @@
1
- {"version":3,"file":"session-process-reap.d.ts","sourceRoot":"","sources":["../../src/focus/session-process-reap.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAC;AAKxC,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,oEAAoE;IACpE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,0DAA0D;IAC1D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAEpE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,KAAK,CAAC,EACzC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAWD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,SAAS,EAAE,SAAS,qBAAqB,EAAE,EAC3C,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAelC"}
1
+ {"version":3,"file":"session-process-reap.d.ts","sourceRoot":"","sources":["../../src/focus/session-process-reap.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAC;AAKxC,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,oEAAoE;IACpE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,0DAA0D;IAC1D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAEpE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,KAAK,CAAC,EACzC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAWD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,SAAS,EAAE,SAAS,qBAAqB,EAAE,EAC3C,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAuClC"}