@telora/daemon 0.17.36 → 0.17.40

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 (266) hide show
  1. package/build-info.json +4 -3
  2. package/dist/assembly-engine.d.ts +6 -0
  3. package/dist/assembly-engine.d.ts.map +1 -1
  4. package/dist/assembly-engine.js +19 -0
  5. package/dist/assembly-engine.js.map +1 -1
  6. package/dist/assembly-resolvers.d.ts +17 -8
  7. package/dist/assembly-resolvers.d.ts.map +1 -1
  8. package/dist/assembly-resolvers.js +19 -8
  9. package/dist/assembly-resolvers.js.map +1 -1
  10. package/dist/cli/session-state.d.ts +10 -0
  11. package/dist/cli/session-state.d.ts.map +1 -1
  12. package/dist/cli/session-state.js +31 -0
  13. package/dist/cli/session-state.js.map +1 -1
  14. package/dist/completion/completion-decision.d.ts +83 -0
  15. package/dist/completion/completion-decision.d.ts.map +1 -0
  16. package/dist/completion/completion-decision.js +48 -0
  17. package/dist/completion/completion-decision.js.map +1 -0
  18. package/dist/completion/event-escalations.d.ts +97 -0
  19. package/dist/completion/event-escalations.d.ts.map +1 -0
  20. package/dist/completion/event-escalations.js +213 -0
  21. package/dist/completion/event-escalations.js.map +1 -0
  22. package/dist/completion/event.d.ts +1 -72
  23. package/dist/completion/event.d.ts.map +1 -1
  24. package/dist/completion/event.js +148 -322
  25. package/dist/completion/event.js.map +1 -1
  26. package/dist/completion/exit-classification.d.ts +82 -0
  27. package/dist/completion/exit-classification.d.ts.map +1 -0
  28. package/dist/completion/exit-classification.js +61 -0
  29. package/dist/completion/exit-classification.js.map +1 -0
  30. package/dist/completion/index.d.ts +14 -5
  31. package/dist/completion/index.d.ts.map +1 -1
  32. package/dist/completion/index.js +14 -5
  33. package/dist/completion/index.js.map +1 -1
  34. package/dist/completion/merge-phase.d.ts +114 -0
  35. package/dist/completion/merge-phase.d.ts.map +1 -0
  36. package/dist/completion/merge-phase.js +198 -0
  37. package/dist/completion/merge-phase.js.map +1 -0
  38. package/dist/completion/review-exit-phase.d.ts +82 -0
  39. package/dist/completion/review-exit-phase.d.ts.map +1 -0
  40. package/dist/completion/review-exit-phase.js +228 -0
  41. package/dist/completion/review-exit-phase.js.map +1 -0
  42. package/dist/completion/status-advance-phase.d.ts +61 -0
  43. package/dist/completion/status-advance-phase.d.ts.map +1 -0
  44. package/dist/completion/status-advance-phase.js +182 -0
  45. package/dist/completion/status-advance-phase.js.map +1 -0
  46. package/dist/completion/team-completion.d.ts +28 -269
  47. package/dist/completion/team-completion.d.ts.map +1 -1
  48. package/dist/completion/team-completion.js +145 -676
  49. package/dist/completion/team-completion.js.map +1 -1
  50. package/dist/daemon-process.d.ts +18 -2
  51. package/dist/daemon-process.d.ts.map +1 -1
  52. package/dist/daemon-process.js +7 -2
  53. package/dist/daemon-process.js.map +1 -1
  54. package/dist/directive/close-loop-stage.d.ts +50 -0
  55. package/dist/directive/close-loop-stage.d.ts.map +1 -0
  56. package/dist/directive/close-loop-stage.js +196 -0
  57. package/dist/directive/close-loop-stage.js.map +1 -0
  58. package/dist/directive/directive-assembly.d.ts +33 -0
  59. package/dist/directive/directive-assembly.d.ts.map +1 -0
  60. package/dist/directive/directive-assembly.js +77 -0
  61. package/dist/directive/directive-assembly.js.map +1 -0
  62. package/dist/directive/directive-dispatch.d.ts +103 -0
  63. package/dist/directive/directive-dispatch.d.ts.map +1 -0
  64. package/dist/directive/directive-dispatch.js +279 -0
  65. package/dist/directive/directive-dispatch.js.map +1 -0
  66. package/dist/directive/phase-sync.d.ts +89 -0
  67. package/dist/directive/phase-sync.d.ts.map +1 -0
  68. package/dist/directive/phase-sync.js +173 -0
  69. package/dist/directive/phase-sync.js.map +1 -0
  70. package/dist/directive-executor.d.ts +21 -223
  71. package/dist/directive-executor.d.ts.map +1 -1
  72. package/dist/directive-executor.js +28 -687
  73. package/dist/directive-executor.js.map +1 -1
  74. package/dist/focus-engine.d.ts.map +1 -1
  75. package/dist/focus-engine.js +8 -0
  76. package/dist/focus-engine.js.map +1 -1
  77. package/dist/focus-executor.d.ts +29 -8
  78. package/dist/focus-executor.d.ts.map +1 -1
  79. package/dist/focus-executor.js +29 -10
  80. package/dist/focus-executor.js.map +1 -1
  81. package/dist/focus-stage-lifecycle.d.ts +7 -5
  82. package/dist/focus-stage-lifecycle.d.ts.map +1 -1
  83. package/dist/focus-stage-lifecycle.js +11 -6
  84. package/dist/focus-stage-lifecycle.js.map +1 -1
  85. package/dist/index.js +8 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/pipeline-config.d.ts +13 -0
  88. package/dist/pipeline-config.d.ts.map +1 -1
  89. package/dist/pipeline-config.js +15 -0
  90. package/dist/pipeline-config.js.map +1 -1
  91. package/dist/resolvers/agent-escalations.d.ts +8 -1
  92. package/dist/resolvers/agent-escalations.d.ts.map +1 -1
  93. package/dist/resolvers/agent-escalations.js +25 -22
  94. package/dist/resolvers/agent-escalations.js.map +1 -1
  95. package/dist/resolvers/agent-session-summaries.d.ts +8 -1
  96. package/dist/resolvers/agent-session-summaries.d.ts.map +1 -1
  97. package/dist/resolvers/agent-session-summaries.js +21 -18
  98. package/dist/resolvers/agent-session-summaries.js.map +1 -1
  99. package/dist/resolvers/delivery-acceptance-criteria.d.ts +7 -1
  100. package/dist/resolvers/delivery-acceptance-criteria.d.ts.map +1 -1
  101. package/dist/resolvers/delivery-acceptance-criteria.js +14 -11
  102. package/dist/resolvers/delivery-acceptance-criteria.js.map +1 -1
  103. package/dist/resolvers/delivery-description.d.ts +7 -1
  104. package/dist/resolvers/delivery-description.d.ts.map +1 -1
  105. package/dist/resolvers/delivery-description.js +14 -11
  106. package/dist/resolvers/delivery-description.js.map +1 -1
  107. package/dist/resolvers/delivery-issues.d.ts +8 -1
  108. package/dist/resolvers/delivery-issues.d.ts.map +1 -1
  109. package/dist/resolvers/delivery-issues.js +51 -48
  110. package/dist/resolvers/delivery-issues.js.map +1 -1
  111. package/dist/resolvers/delivery-listing.d.ts +16 -1
  112. package/dist/resolvers/delivery-listing.d.ts.map +1 -1
  113. package/dist/resolvers/delivery-listing.js +36 -33
  114. package/dist/resolvers/delivery-listing.js.map +1 -1
  115. package/dist/resolvers/delivery-tech-context.d.ts +7 -1
  116. package/dist/resolvers/delivery-tech-context.d.ts.map +1 -1
  117. package/dist/resolvers/delivery-tech-context.js +14 -11
  118. package/dist/resolvers/delivery-tech-context.js.map +1 -1
  119. package/dist/resolvers/deployment-profile.d.ts +8 -1
  120. package/dist/resolvers/deployment-profile.d.ts.map +1 -1
  121. package/dist/resolvers/deployment-profile.js +20 -17
  122. package/dist/resolvers/deployment-profile.js.map +1 -1
  123. package/dist/resolvers/focus-anchoring-injections.d.ts +26 -1
  124. package/dist/resolvers/focus-anchoring-injections.d.ts.map +1 -1
  125. package/dist/resolvers/focus-anchoring-injections.js +91 -88
  126. package/dist/resolvers/focus-anchoring-injections.js.map +1 -1
  127. package/dist/resolvers/focus-context.d.ts +9 -1
  128. package/dist/resolvers/focus-context.d.ts.map +1 -1
  129. package/dist/resolvers/focus-context.js +38 -35
  130. package/dist/resolvers/focus-context.js.map +1 -1
  131. package/dist/resolvers/focus-injections.d.ts +13 -1
  132. package/dist/resolvers/focus-injections.d.ts.map +1 -1
  133. package/dist/resolvers/focus-injections.js +60 -57
  134. package/dist/resolvers/focus-injections.js.map +1 -1
  135. package/dist/resolvers/focus-last-review-report.d.ts +2 -1
  136. package/dist/resolvers/focus-last-review-report.d.ts.map +1 -1
  137. package/dist/resolvers/focus-last-review-report.js +33 -30
  138. package/dist/resolvers/focus-last-review-report.js.map +1 -1
  139. package/dist/resolvers/focus-reality-tree.d.ts +15 -1
  140. package/dist/resolvers/focus-reality-tree.d.ts.map +1 -1
  141. package/dist/resolvers/focus-reality-tree.js +35 -32
  142. package/dist/resolvers/focus-reality-tree.js.map +1 -1
  143. package/dist/resolvers/git-diff-against-base.d.ts +8 -1
  144. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  145. package/dist/resolvers/git-diff-against-base.js +33 -30
  146. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  147. package/dist/resolvers/guards-evaluation-results.d.ts +7 -1
  148. package/dist/resolvers/guards-evaluation-results.d.ts.map +1 -1
  149. package/dist/resolvers/guards-evaluation-results.js +25 -22
  150. package/dist/resolvers/guards-evaluation-results.js.map +1 -1
  151. package/dist/resolvers/index.d.ts +22 -40
  152. package/dist/resolvers/index.d.ts.map +1 -1
  153. package/dist/resolvers/index.js +112 -41
  154. package/dist/resolvers/index.js.map +1 -1
  155. package/dist/resolvers/loop-context.d.ts +18 -1
  156. package/dist/resolvers/loop-context.d.ts.map +1 -1
  157. package/dist/resolvers/loop-context.js +21 -18
  158. package/dist/resolvers/loop-context.js.map +1 -1
  159. package/dist/resolvers/loop-delivery-index.d.ts +17 -1
  160. package/dist/resolvers/loop-delivery-index.d.ts.map +1 -1
  161. package/dist/resolvers/loop-delivery-index.js +51 -48
  162. package/dist/resolvers/loop-delivery-index.js.map +1 -1
  163. package/dist/resolvers/loop-documents.d.ts +9 -1
  164. package/dist/resolvers/loop-documents.d.ts.map +1 -1
  165. package/dist/resolvers/loop-documents.js +22 -19
  166. package/dist/resolvers/loop-documents.js.map +1 -1
  167. package/dist/resolvers/loop-expected-effects.d.ts +11 -1
  168. package/dist/resolvers/loop-expected-effects.d.ts.map +1 -1
  169. package/dist/resolvers/loop-expected-effects.js +53 -50
  170. package/dist/resolvers/loop-expected-effects.js.map +1 -1
  171. package/dist/resolvers/loop-frt-statement.d.ts +11 -1
  172. package/dist/resolvers/loop-frt-statement.d.ts.map +1 -1
  173. package/dist/resolvers/loop-frt-statement.js +28 -25
  174. package/dist/resolvers/loop-frt-statement.js.map +1 -1
  175. package/dist/resolvers/loop-injection.d.ts +10 -1
  176. package/dist/resolvers/loop-injection.d.ts.map +1 -1
  177. package/dist/resolvers/loop-injection.js +38 -35
  178. package/dist/resolvers/loop-injection.js.map +1 -1
  179. package/dist/resolvers/loop-persona.d.ts +20 -1
  180. package/dist/resolvers/loop-persona.d.ts.map +1 -1
  181. package/dist/resolvers/loop-persona.js +20 -17
  182. package/dist/resolvers/loop-persona.js.map +1 -1
  183. package/dist/resolvers/loop-questions.d.ts +8 -1
  184. package/dist/resolvers/loop-questions.d.ts.map +1 -1
  185. package/dist/resolvers/loop-questions.js +39 -36
  186. package/dist/resolvers/loop-questions.js.map +1 -1
  187. package/dist/resolvers/loop-upstream-udes.d.ts +11 -1
  188. package/dist/resolvers/loop-upstream-udes.d.ts.map +1 -1
  189. package/dist/resolvers/loop-upstream-udes.js +74 -71
  190. package/dist/resolvers/loop-upstream-udes.js.map +1 -1
  191. package/dist/resolvers/prd-context.d.ts +2 -0
  192. package/dist/resolvers/prd-context.d.ts.map +1 -1
  193. package/dist/resolvers/prd-context.js +16 -13
  194. package/dist/resolvers/prd-context.js.map +1 -1
  195. package/dist/resolvers/prd-persona.d.ts +2 -0
  196. package/dist/resolvers/prd-persona.d.ts.map +1 -1
  197. package/dist/resolvers/prd-persona.js +6 -3
  198. package/dist/resolvers/prd-persona.js.map +1 -1
  199. package/dist/resolvers/reality-metrics.d.ts +8 -1
  200. package/dist/resolvers/reality-metrics.d.ts.map +1 -1
  201. package/dist/resolvers/reality-metrics.js +73 -70
  202. package/dist/resolvers/reality-metrics.js.map +1 -1
  203. package/dist/resolvers/reality-projections.d.ts +7 -1
  204. package/dist/resolvers/reality-projections.d.ts.map +1 -1
  205. package/dist/resolvers/reality-projections.js +35 -32
  206. package/dist/resolvers/reality-projections.js.map +1 -1
  207. package/dist/resolvers/reality-tree-snapshot.d.ts +10 -1
  208. package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -1
  209. package/dist/resolvers/reality-tree-snapshot.js +34 -31
  210. package/dist/resolvers/reality-tree-snapshot.js.map +1 -1
  211. package/dist/resolvers/retired-injections.d.ts +10 -1
  212. package/dist/resolvers/retired-injections.d.ts.map +1 -1
  213. package/dist/resolvers/retired-injections.js +68 -65
  214. package/dist/resolvers/retired-injections.js.map +1 -1
  215. package/dist/resolvers/review-outcomes.d.ts +11 -1
  216. package/dist/resolvers/review-outcomes.d.ts.map +1 -1
  217. package/dist/resolvers/review-outcomes.js +27 -24
  218. package/dist/resolvers/review-outcomes.js.map +1 -1
  219. package/dist/resolvers/security-advisory.d.ts +2 -1
  220. package/dist/resolvers/security-advisory.d.ts.map +1 -1
  221. package/dist/resolvers/security-advisory.js +47 -44
  222. package/dist/resolvers/security-advisory.js.map +1 -1
  223. package/dist/resolvers/wiki-search.d.ts +8 -1
  224. package/dist/resolvers/wiki-search.d.ts.map +1 -1
  225. package/dist/resolvers/wiki-search.js +17 -14
  226. package/dist/resolvers/wiki-search.js.map +1 -1
  227. package/dist/resolvers/wiki-topic.d.ts +9 -1
  228. package/dist/resolvers/wiki-topic.d.ts.map +1 -1
  229. package/dist/resolvers/wiki-topic.js +21 -18
  230. package/dist/resolvers/wiki-topic.js.map +1 -1
  231. package/dist/resolvers/workflow-stages.d.ts +7 -1
  232. package/dist/resolvers/workflow-stages.d.ts.map +1 -1
  233. package/dist/resolvers/workflow-stages.js +20 -17
  234. package/dist/resolvers/workflow-stages.js.map +1 -1
  235. package/dist/self-update.d.ts +6 -0
  236. package/dist/self-update.d.ts.map +1 -1
  237. package/dist/self-update.js +6 -1
  238. package/dist/self-update.js.map +1 -1
  239. package/dist/spawner/index.d.ts +2 -1
  240. package/dist/spawner/index.d.ts.map +1 -1
  241. package/dist/spawner/index.js +2 -1
  242. package/dist/spawner/index.js.map +1 -1
  243. package/dist/spawner/spawn-team.d.ts +14 -52
  244. package/dist/spawner/spawn-team.d.ts.map +1 -1
  245. package/dist/spawner/spawn-team.js +14 -469
  246. package/dist/spawner/spawn-team.js.map +1 -1
  247. package/dist/staleness.d.ts +124 -0
  248. package/dist/staleness.d.ts.map +1 -0
  249. package/dist/staleness.js +215 -0
  250. package/dist/staleness.js.map +1 -0
  251. package/dist/state-cascade.d.ts +3 -2
  252. package/dist/state-cascade.d.ts.map +1 -1
  253. package/dist/state-cascade.js +7 -3
  254. package/dist/state-cascade.js.map +1 -1
  255. package/dist/types/focus.d.ts +5 -4
  256. package/dist/types/focus.d.ts.map +1 -1
  257. package/dist/types/session.d.ts +2 -3
  258. package/dist/types/session.d.ts.map +1 -1
  259. package/dist/unified-shell.d.ts.map +1 -1
  260. package/dist/unified-shell.js +21 -12
  261. package/dist/unified-shell.js.map +1 -1
  262. package/package.json +2 -2
  263. package/dist/session-lifecycle.d.ts +0 -78
  264. package/dist/session-lifecycle.d.ts.map +0 -1
  265. package/dist/session-lifecycle.js +0 -382
  266. package/dist/session-lifecycle.js.map +0 -1
package/build-info.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "commitSha": "90e99ec6",
3
- "builtAt": "2026-06-10T19:16:20.712Z",
2
+ "commitSha": "d9fa8e02",
3
+ "builtAt": "2026-06-10T22:01:37.055Z",
4
4
  "expectedMigrations": [
5
5
  "20250829113330_create_org_nodes_table.sql",
6
6
  "20250829113402_fix_function_security_search_path.sql",
@@ -610,6 +610,7 @@
610
610
  "20260603225314_add_stopped_agent_session_status.sql",
611
611
  "20260607150700_product_local_endpoint.sql",
612
612
  "20260607150730_redeem_returns_local_model.sql",
613
- "20260610145347_comment_load_bearing_triggers.sql"
613
+ "20260610145347_comment_load_bearing_triggers.sql",
614
+ "20260610212314_pipeline_config_default_review_enabled.sql"
614
615
  ]
615
616
  }
@@ -62,6 +62,12 @@ export declare function estimateTokens(charCount: number): number;
62
62
  export declare function registerSourceResolver(sourceType: string, resolver: SourceResolver): void;
63
63
  /** Get a registered resolver (for testing). */
64
64
  export declare function getResolver(sourceType: string): SourceResolver | undefined;
65
+ /**
66
+ * List all registered resolver source types, sorted. Used by initResolvers()
67
+ * for its non-empty assertion and by the daemon startup log to surface what
68
+ * the registry actually holds.
69
+ */
70
+ export declare function getRegisteredResolverTypes(): string[];
65
71
  /**
66
72
  * Parse a source reference string into type and params.
67
73
  *
@@ -1 +1 @@
1
- {"version":3,"file":"assembly-engine.d.ts","sourceRoot":"","sources":["../src/assembly-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAKD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEzF;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE1E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAelG;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA4C3B"}
1
+ {"version":3,"file":"assembly-engine.d.ts","sourceRoot":"","sources":["../src/assembly-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAKD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEzF;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAelG;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA0D3B"}
@@ -23,6 +23,14 @@ export function registerSourceResolver(sourceType, resolver) {
23
23
  export function getResolver(sourceType) {
24
24
  return resolverRegistry.get(sourceType);
25
25
  }
26
+ /**
27
+ * List all registered resolver source types, sorted. Used by initResolvers()
28
+ * for its non-empty assertion and by the daemon startup log to surface what
29
+ * the registry actually holds.
30
+ */
31
+ export function getRegisteredResolverTypes() {
32
+ return [...resolverRegistry.keys()].sort();
33
+ }
26
34
  /**
27
35
  * Parse a source reference string into type and params.
28
36
  *
@@ -72,6 +80,17 @@ export async function resolveAssemblyRecipe(recipe, context) {
72
80
  * and reports charCount 0).
73
81
  */
74
82
  export async function resolveAssemblyRecipeWithManifest(recipe, context) {
83
+ // Fail loud on an empty registry: a non-empty recipe against zero
84
+ // registered resolvers means registration never ran (initResolvers() was
85
+ // not called and no importer loaded the assembly-resolvers shim). Every
86
+ // section would degrade to an "unknown source type" comment -- a prompt
87
+ // silently missing ALL of its context. Throwing turns that silent
88
+ // degradation into an actionable startup/wiring error.
89
+ if (recipe.length > 0 && resolverRegistry.size === 0) {
90
+ throw new Error('[assembly-engine] Resolver registry is empty but a non-empty assembly ' +
91
+ 'recipe was requested. Call initResolvers() (resolvers/index.js) before ' +
92
+ 'resolving recipes -- daemon startup does this in FocusEngine.init.');
93
+ }
75
94
  const sections = [];
76
95
  const manifest = [];
77
96
  let ordinal = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"assembly-engine.js","sourceRoot":"","sources":["../src/assembly-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assembly-engine.js","sourceRoot":"","sources":["../src/assembly-engine.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,28 @@
1
1
  /**
2
- * Source resolver implementations for the Context Assembly Engine.
2
+ * FACADE -- the real logic lives elsewhere.
3
3
  *
4
- * This module is now a thin shim. The resolver bodies live in `resolvers/`
5
- * (one module per resolver) with cross-resolver helpers in `resolvers/shared/`.
6
- * Importing this module loads `resolvers/index.js`, whose side-effect imports
7
- * register ALL resolvers at module load time -- exactly as before.
4
+ * Source resolvers for the Context Assembly Engine. This module is a thin
5
+ * compatibility shim:
6
+ * - Resolver bodies: `resolvers/` (one module per resolver)
7
+ * - Cross-resolver helpers: `resolvers/shared/`
8
+ * - Registration: `resolvers/index.ts` `initResolvers()` -- EXPLICIT, not
9
+ * an import side effect inside the resolver modules themselves.
8
10
  *
9
- * The named public surface (helpers + types consumed by other source files and
10
- * tests) is re-exported from the barrel so existing imports of
11
+ * Loading this module calls initResolvers(), so the many existing importers
12
+ * (focus-executor, directive/directive-assembly, audit-phase, tests) keep
13
+ * getting a fully-populated registry. initResolvers() is idempotent and
14
+ * throws if the registry ends up empty -- a broken registration path fails
15
+ * loudly instead of silently assembling prompts with missing sections.
16
+ * Daemon startup additionally calls initResolvers() in FocusEngine.init and
17
+ * logs the registered keys.
18
+ *
19
+ * The named public surface (helpers + types consumed by other source files
20
+ * and tests) is re-exported from the barrel so existing imports of
11
21
  * `assembly-resolvers.js` keep working unchanged:
12
22
  * - values: MAX_DIFF_BYTES, getGitDiff, CRT_DUMP_BUDGET_CHARS,
13
23
  * renderRealityTreeDump, FOCUS_REALITY_TREE_EMPTY_STATE
14
24
  * - types: RealityTreeRow, RealityTreeListResponse, RealityNodeRow,
15
25
  * RealityEdgeRow, NodeListResponse, EdgeListResponse
16
26
  */
17
- import './resolvers/index.js';
18
27
  export * from './resolvers/index.js';
19
28
  //# sourceMappingURL=assembly-resolvers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assembly-resolvers.d.ts","sourceRoot":"","sources":["../src/assembly-resolvers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,sBAAsB,CAAC;AAC9B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"assembly-resolvers.d.ts","sourceRoot":"","sources":["../src/assembly-resolvers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,cAAc,sBAAsB,CAAC"}
@@ -1,19 +1,30 @@
1
1
  /**
2
- * Source resolver implementations for the Context Assembly Engine.
2
+ * FACADE -- the real logic lives elsewhere.
3
3
  *
4
- * This module is now a thin shim. The resolver bodies live in `resolvers/`
5
- * (one module per resolver) with cross-resolver helpers in `resolvers/shared/`.
6
- * Importing this module loads `resolvers/index.js`, whose side-effect imports
7
- * register ALL resolvers at module load time -- exactly as before.
4
+ * Source resolvers for the Context Assembly Engine. This module is a thin
5
+ * compatibility shim:
6
+ * - Resolver bodies: `resolvers/` (one module per resolver)
7
+ * - Cross-resolver helpers: `resolvers/shared/`
8
+ * - Registration: `resolvers/index.ts` `initResolvers()` -- EXPLICIT, not
9
+ * an import side effect inside the resolver modules themselves.
8
10
  *
9
- * The named public surface (helpers + types consumed by other source files and
10
- * tests) is re-exported from the barrel so existing imports of
11
+ * Loading this module calls initResolvers(), so the many existing importers
12
+ * (focus-executor, directive/directive-assembly, audit-phase, tests) keep
13
+ * getting a fully-populated registry. initResolvers() is idempotent and
14
+ * throws if the registry ends up empty -- a broken registration path fails
15
+ * loudly instead of silently assembling prompts with missing sections.
16
+ * Daemon startup additionally calls initResolvers() in FocusEngine.init and
17
+ * logs the registered keys.
18
+ *
19
+ * The named public surface (helpers + types consumed by other source files
20
+ * and tests) is re-exported from the barrel so existing imports of
11
21
  * `assembly-resolvers.js` keep working unchanged:
12
22
  * - values: MAX_DIFF_BYTES, getGitDiff, CRT_DUMP_BUDGET_CHARS,
13
23
  * renderRealityTreeDump, FOCUS_REALITY_TREE_EMPTY_STATE
14
24
  * - types: RealityTreeRow, RealityTreeListResponse, RealityNodeRow,
15
25
  * RealityEdgeRow, NodeListResponse, EdgeListResponse
16
26
  */
17
- import './resolvers/index.js';
27
+ import { initResolvers } from './resolvers/index.js';
28
+ initResolvers();
18
29
  export * from './resolvers/index.js';
19
30
  //# sourceMappingURL=assembly-resolvers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assembly-resolvers.js","sourceRoot":"","sources":["../src/assembly-resolvers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,sBAAsB,CAAC;AAC9B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"assembly-resolvers.js","sourceRoot":"","sources":["../src/assembly-resolvers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,aAAa,EAAE,CAAC;AAEhB,cAAc,sBAAsB,CAAC"}
@@ -20,6 +20,16 @@
20
20
  * "not Telora-connected" and the command exits 0 with no output. Backend
21
21
  * errors and git errors degrade gracefully -- they print to stderr and the
22
22
  * command still exits 0 so the hook never blocks Claude Code.
23
+ *
24
+ * Staleness signal: when a daemon is RUNNING and its stamped version (from
25
+ * daemon.meta.json) is behind the latest published @telora/daemon, one extra
26
+ * warning line is appended to the plain output (and a `staleness` field to
27
+ * the --json payload). This is the ONLY intentional stdout addition; when the
28
+ * daemon is up to date, not running, or the check cannot be established, the
29
+ * stdout contract is byte-identical to before. The check is CACHE-ONLY here
30
+ * (never network): the SessionStart hook blocks Claude Code on this command,
31
+ * so an unreachable registry must not cost a fetch timeout. The running
32
+ * daemon keeps the cache warm (startVersionCacheRefreshLoop, 6h TTL).
23
33
  */
24
34
  interface DaemonJsonProduct {
25
35
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/cli/session-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,UAAU,iBAAiB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE;YAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH;AAED,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,IAAI,GAAG;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAChD,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iHAAiH;IACjH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwGD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAS/D;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAMxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,UAAU,GAAG;IAC5D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAiBA;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAWjE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAqB1D;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC9E"}
1
+ {"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/cli/session-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AASH,UAAU,iBAAiB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE;YAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH;AAED,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,IAAI,GAAG;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAChD,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iHAAiH;IACjH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwGD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAS/D;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAMxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,UAAU,GAAG;IAC5D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAiBA;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAWjE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAqB1D;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD9E"}
@@ -20,12 +20,23 @@
20
20
  * "not Telora-connected" and the command exits 0 with no output. Backend
21
21
  * errors and git errors degrade gracefully -- they print to stderr and the
22
22
  * command still exits 0 so the hook never blocks Claude Code.
23
+ *
24
+ * Staleness signal: when a daemon is RUNNING and its stamped version (from
25
+ * daemon.meta.json) is behind the latest published @telora/daemon, one extra
26
+ * warning line is appended to the plain output (and a `staleness` field to
27
+ * the --json payload). This is the ONLY intentional stdout addition; when the
28
+ * daemon is up to date, not running, or the check cannot be established, the
29
+ * stdout contract is byte-identical to before. The check is CACHE-ONLY here
30
+ * (never network): the SessionStart hook blocks Claude Code on this command,
31
+ * so an unreachable registry must not cost a fetch timeout. The running
32
+ * daemon keeps the cache warm (startVersionCacheRefreshLoop, 6h TTL).
23
33
  */
24
34
  import { existsSync, readFileSync } from 'node:fs';
25
35
  import { execFileSync } from 'node:child_process';
26
36
  import { homedir } from 'node:os';
27
37
  import { resolve, sep } from 'node:path';
28
38
  import { writeOrMergeClaudeMd } from './connect.js';
39
+ import { getStalenessInfo, formatStalenessWarning } from '../staleness.js';
29
40
  function loadDaemonJson(configPath) {
30
41
  if (!existsSync(configPath))
31
42
  return null;
@@ -280,6 +291,19 @@ export async function runSessionState(opts) {
280
291
  return;
281
292
  if (cfg.teloraUrl)
282
293
  state.connectedUrl = cfg.teloraUrl;
294
+ // Staleness signal for the RUNNING daemon (null when no daemon is running
295
+ // or no fresh latest-version answer exists -- see staleness.ts). cacheOnly:
296
+ // this path must never wait on the registry (the SessionStart hook blocks
297
+ // on our exit); the daemon-side refresh loop owns the network half.
298
+ // Failures degrade silently: the normal output below always prints.
299
+ let staleness = null;
300
+ try {
301
+ staleness = await getStalenessInfo({ cacheOnly: true });
302
+ }
303
+ catch {
304
+ // Never block or perturb session-state output on a staleness failure.
305
+ }
306
+ const stalenessWarning = formatStalenessWarning(staleness);
283
307
  if (opts.json) {
284
308
  // JSON path retains dynamic state for programmatic consumers
285
309
  // (enforcement hooks, observability). The git work is only done here.
@@ -288,10 +312,17 @@ export async function runSessionState(opts) {
288
312
  const payload = {
289
313
  ...state,
290
314
  branches,
315
+ // Only present when an update is actually available -- the payload is
316
+ // byte-identical to the pre-staleness contract otherwise.
317
+ ...(staleness?.updateAvailable ? { staleness } : {}),
291
318
  };
292
319
  process.stdout.write(`${JSON.stringify(payload)}\n`);
293
320
  return;
294
321
  }
295
322
  process.stdout.write(`${formatPlain(state)}\n`);
323
+ // The ONLY intentional stdout addition beyond formatPlain: one warning line
324
+ // when the running daemon is behind the latest published release.
325
+ if (stalenessWarning)
326
+ process.stdout.write(`${stalenessWarning}\n`);
296
327
  }
297
328
  //# sourceMappingURL=session-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/cli/session-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/cli/session-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Completion decision: the mid-focus handoff vs terminate decision tree.
3
+ *
4
+ * Pure encoding of handleCompletionEvent's post-review-window branching
5
+ * (completion/event.ts). The event handler computes the facts (after its
6
+ * wake-cycle self-heal advance) and switches on the action returned here;
7
+ * every side effect (escalation, termination, wake message) stays in the
8
+ * handler. Isolating the tree makes the precedence directly unit-testable:
9
+ *
10
+ * 1. team has NO actionable work + did not advance this cycle + a
11
+ * non-advanceable delivery exists -> escalate (structural dead end)
12
+ * and terminate
13
+ * 2. team has NO actionable work -> terminate cleanly (daemon/review-
14
+ * managed states move the remaining deliveries)
15
+ * 3. no-progress counter crossed the limit -> escalate and terminate
16
+ * 4. actionable deliveries carry open issues -> mid-focus handoff with
17
+ * the new work
18
+ * 5. otherwise (planning deliveries remain) -> re-engagement nudge
19
+ */
20
+ /** Facts the decision is made from. All computed post-self-heal-advance. */
21
+ export interface CompletionDecisionFacts {
22
+ /**
23
+ * The team owns work it can act on: a planning delivery to scope, or an
24
+ * agent-actionable delivery (queued / coding / verify_failed) that still
25
+ * carries an open issue.
26
+ */
27
+ teamHasActionableWork: boolean;
28
+ /**
29
+ * The team positively advanced state this cycle: a prior snapshot exists
30
+ * AND differs from the current one. False for a fresh/respawned team
31
+ * (null prior) -- the structural dead-end guard must stay eligible on the
32
+ * respawn-thrash path, where every cycle starts with a null prior.
33
+ */
34
+ advancedThisCycle: boolean;
35
+ /**
36
+ * A remaining agent-actionable, non-terminal delivery is structurally
37
+ * non-advanceable (NULL stage / no automatic transition out). Only
38
+ * consulted when teamHasActionableWork is false and advancedThisCycle is
39
+ * false -- see shouldCheckNonAdvanceable, which gates the (async) lookup.
40
+ */
41
+ hasNonAdvanceableStuck: boolean;
42
+ /** No-progress counter AFTER this cycle's reset-or-increment update. */
43
+ noProgressCycles: number;
44
+ /** The scope-coverage guard limit (SCOPE_COVERAGE_NO_PROGRESS_LIMIT). */
45
+ noProgressLimit: number;
46
+ /** At least one agent-actionable delivery carries an open issue. */
47
+ hasActionableOpenIssues: boolean;
48
+ }
49
+ /** The action handleCompletionEvent executes for this cycle. */
50
+ export type CompletionAction =
51
+ /** Structural dead end: file ONE team_failure escalation, then terminate. */
52
+ {
53
+ kind: 'escalate_non_advanceable_and_terminate';
54
+ }
55
+ /** Nothing the team can do; daemon/review-managed states own the rest. */
56
+ | {
57
+ kind: 'terminate_no_actionable_work';
58
+ }
59
+ /** Scope-coverage guard tripped: escalate no-progress, then terminate. */
60
+ | {
61
+ kind: 'escalate_no_progress_and_terminate';
62
+ }
63
+ /** Mid-focus handoff: send a wake message carrying the open work. */
64
+ | {
65
+ kind: 'handoff_new_work';
66
+ }
67
+ /** Planning deliveries remain: send a re-engagement nudge to scope them. */
68
+ | {
69
+ kind: 'reengage';
70
+ };
71
+ /**
72
+ * Whether the (async, workflow-fetching) non-advanceability lookup should run
73
+ * at all this cycle. Pure gate so the handler does not pay the lookup -- and
74
+ * cannot accidentally escalate -- on cycles where the team has its own work
75
+ * or demonstrably moved state.
76
+ */
77
+ export declare function shouldCheckNonAdvanceable(facts: Pick<CompletionDecisionFacts, 'teamHasActionableWork' | 'advancedThisCycle'>): boolean;
78
+ /**
79
+ * Decide the completion action for this cycle. Pure; precedence is exactly
80
+ * the order documented in the module header.
81
+ */
82
+ export declare function decideCompletionAction(facts: CompletionDecisionFacts): CompletionAction;
83
+ //# sourceMappingURL=completion-decision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-decision.d.ts","sourceRoot":"","sources":["../../src/completion/completion-decision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,4EAA4E;AAC5E,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAChC,wEAAwE;IACxE,gBAAgB,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,gEAAgE;AAChE,MAAM,MAAM,gBAAgB;AAC1B,6EAA6E;AAC3E;IAAE,IAAI,EAAE,wCAAwC,CAAA;CAAE;AACpD,0EAA0E;GACxE;IAAE,IAAI,EAAE,8BAA8B,CAAA;CAAE;AAC1C,0EAA0E;GACxE;IAAE,IAAI,EAAE,oCAAoC,CAAA;CAAE;AAChD,qEAAqE;GACnE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE;AAC9B,4EAA4E;GAC1E;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,uBAAuB,GAAG,mBAAmB,CAAC,GAClF,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,uBAAuB,GAAG,gBAAgB,CAcvF"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Completion decision: the mid-focus handoff vs terminate decision tree.
3
+ *
4
+ * Pure encoding of handleCompletionEvent's post-review-window branching
5
+ * (completion/event.ts). The event handler computes the facts (after its
6
+ * wake-cycle self-heal advance) and switches on the action returned here;
7
+ * every side effect (escalation, termination, wake message) stays in the
8
+ * handler. Isolating the tree makes the precedence directly unit-testable:
9
+ *
10
+ * 1. team has NO actionable work + did not advance this cycle + a
11
+ * non-advanceable delivery exists -> escalate (structural dead end)
12
+ * and terminate
13
+ * 2. team has NO actionable work -> terminate cleanly (daemon/review-
14
+ * managed states move the remaining deliveries)
15
+ * 3. no-progress counter crossed the limit -> escalate and terminate
16
+ * 4. actionable deliveries carry open issues -> mid-focus handoff with
17
+ * the new work
18
+ * 5. otherwise (planning deliveries remain) -> re-engagement nudge
19
+ */
20
+ /**
21
+ * Whether the (async, workflow-fetching) non-advanceability lookup should run
22
+ * at all this cycle. Pure gate so the handler does not pay the lookup -- and
23
+ * cannot accidentally escalate -- on cycles where the team has its own work
24
+ * or demonstrably moved state.
25
+ */
26
+ export function shouldCheckNonAdvanceable(facts) {
27
+ return !facts.teamHasActionableWork && !facts.advancedThisCycle;
28
+ }
29
+ /**
30
+ * Decide the completion action for this cycle. Pure; precedence is exactly
31
+ * the order documented in the module header.
32
+ */
33
+ export function decideCompletionAction(facts) {
34
+ if (!facts.teamHasActionableWork) {
35
+ if (!facts.advancedThisCycle && facts.hasNonAdvanceableStuck) {
36
+ return { kind: 'escalate_non_advanceable_and_terminate' };
37
+ }
38
+ return { kind: 'terminate_no_actionable_work' };
39
+ }
40
+ if (facts.noProgressCycles >= facts.noProgressLimit) {
41
+ return { kind: 'escalate_no_progress_and_terminate' };
42
+ }
43
+ if (facts.hasActionableOpenIssues) {
44
+ return { kind: 'handoff_new_work' };
45
+ }
46
+ return { kind: 'reengage' };
47
+ }
48
+ //# sourceMappingURL=completion-decision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-decision.js","sourceRoot":"","sources":["../../src/completion/completion-decision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA6CH;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAmF;IAEnF,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAA8B;IACnE,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Escalation builders for the completion event handler.
3
+ *
4
+ * The three human-signal paths handleCompletionEvent (event.ts) can take
5
+ * when a team cannot make progress: a planning team that scoped nothing, a
6
+ * team re-engaged past the no-progress limit, and a structurally
7
+ * non-advanceable delivery (the respawn-thrash guard). Extracted from
8
+ * completion/event.ts; bodies verbatim; event.ts re-exports the surface.
9
+ */
10
+ import type { FocusDeliveryInfo } from '../types.js';
11
+ /** Reason string emitted when a planning team produces no deliveries. */
12
+ export declare const PLANNING_NO_DELIVERIES_REASON = "planning produced no deliveries";
13
+ /** Reason string emitted when re-engagement is bounded by no-progress limit. */
14
+ export declare const NO_PROGRESS_ESCALATION_REASON = "team unable to make progress on remaining deliveries";
15
+ /**
16
+ * Reason string emitted when the team has no actionable work AND a remaining
17
+ * non-terminal delivery cannot be advanced by the daemon either -- a structural
18
+ * dead end (missing workflow stage / no automatic transition out). Filed once,
19
+ * never re-fired, so the focus stops thrashing spawn->idle-exit->respawn.
20
+ */
21
+ export declare const NON_ADVANCEABLE_ESCALATION_REASON = "delivery cannot be advanced and the team has no actionable work";
22
+ /**
23
+ * Cause discriminator stamped on the escalation metadata. The escalation_kind
24
+ * stays 'team_failure' (a value the agent_escalations CHECK constraint already
25
+ * accepts AND that the existing respawn guard -- hasOpenTeamFailureEscalation /
26
+ * applyRespawnGuard -- already suppresses), so no migration is required and
27
+ * respawn suppression composes for free. metadata.cause distinguishes this
28
+ * structural dead-end from a genuine effort-based no-progress failure during
29
+ * triage.
30
+ */
31
+ export declare const NON_ADVANCEABLE_CAUSE = "non_advanceable_delivery";
32
+ /** The single dependency these builders need; structurally matches CompletionEventDeps. */
33
+ export interface EscalationDeps {
34
+ createEscalation: (params: {
35
+ organizationId: string;
36
+ sessionId: string;
37
+ issueId: string | null;
38
+ reasonType: string;
39
+ description: string;
40
+ whatWasTried?: string;
41
+ helpNeeded?: string;
42
+ escalationKind?: string;
43
+ metadata?: Record<string, unknown>;
44
+ }) => Promise<void>;
45
+ }
46
+ /**
47
+ * Escalate when a planning team finishes its initial turn without writing
48
+ * any deliveries via MCP. The team is then terminated -- no respawn.
49
+ *
50
+ * Exported so tests and sister deliveries can verify the contract.
51
+ */
52
+ export declare function escalatePlanningFailure(params: {
53
+ organizationId: string;
54
+ sessionId: string;
55
+ focusId: string;
56
+ focusName: string;
57
+ agentRoleId: string;
58
+ }, deps?: EscalationDeps): Promise<void>;
59
+ /**
60
+ * Escalate when the team has been re-engaged repeatedly without making
61
+ * any measurable progress on the remaining non-terminal deliveries.
62
+ *
63
+ * Exported so tests can verify the contract.
64
+ */
65
+ export declare function escalateNoProgress(params: {
66
+ organizationId: string;
67
+ sessionId: string;
68
+ focusId: string;
69
+ focusName: string;
70
+ agentRoleId: string;
71
+ cycles: number;
72
+ remaining: FocusDeliveryInfo[];
73
+ }, deps?: EscalationDeps): Promise<void>;
74
+ /**
75
+ * Escalate when the team has no actionable work AND a remaining non-terminal
76
+ * delivery is structurally non-advanceable (NULL workflow stage, or no
77
+ * automatic transition out of its current stage). This is the thrash-guard:
78
+ * without it the focus respawns a team every poll that immediately idle-exits,
79
+ * burning budget unbounded.
80
+ *
81
+ * Filed as escalation_kind 'team_failure' so the existing respawn guard
82
+ * (hasOpenTeamFailureEscalation / applyRespawnGuard) suppresses respawn until a
83
+ * human resolves it. metadata.cause = NON_ADVANCEABLE_CAUSE distinguishes it
84
+ * from an effort-based no-progress failure during triage.
85
+ *
86
+ * Exported so tests and sister deliveries can verify the contract.
87
+ */
88
+ export declare function escalateNonAdvanceable(params: {
89
+ organizationId: string;
90
+ sessionId: string;
91
+ focusId: string;
92
+ focusName: string;
93
+ agentRoleId: string;
94
+ stuck: FocusDeliveryInfo;
95
+ remaining: FocusDeliveryInfo[];
96
+ }, deps?: EscalationDeps): Promise<void>;
97
+ //# sourceMappingURL=event-escalations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-escalations.d.ts","sourceRoot":"","sources":["../../src/completion/event-escalations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrD,yEAAyE;AACzE,eAAO,MAAM,6BAA6B,oCAAoC,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,6BAA6B,yDACc,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,oEACqB,CAAC;AAEpE;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAEhE,2FAA2F;AAC3F,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,CAAC,MAAM,EAAE;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAMD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,EACD,IAAI,GAAE,cAAsC,GAC3C,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC,EACD,IAAI,GAAE,cAAsC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAkFf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC,EACD,IAAI,GAAE,cAAsC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAoEf"}