@telora/daemon 0.17.33 → 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 (344) hide show
  1. package/build-info.json +5 -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/connect.d.ts.map +1 -1
  11. package/dist/cli/connect.js +4 -0
  12. package/dist/cli/connect.js.map +1 -1
  13. package/dist/cli/session-state.d.ts +10 -0
  14. package/dist/cli/session-state.d.ts.map +1 -1
  15. package/dist/cli/session-state.js +31 -0
  16. package/dist/cli/session-state.js.map +1 -1
  17. package/dist/completion/completion-decision.d.ts +83 -0
  18. package/dist/completion/completion-decision.d.ts.map +1 -0
  19. package/dist/completion/completion-decision.js +48 -0
  20. package/dist/completion/completion-decision.js.map +1 -0
  21. package/dist/completion/event-escalations.d.ts +97 -0
  22. package/dist/completion/event-escalations.d.ts.map +1 -0
  23. package/dist/completion/event-escalations.js +213 -0
  24. package/dist/completion/event-escalations.js.map +1 -0
  25. package/dist/completion/event.d.ts +1 -72
  26. package/dist/completion/event.d.ts.map +1 -1
  27. package/dist/completion/event.js +149 -329
  28. package/dist/completion/event.js.map +1 -1
  29. package/dist/completion/exit-classification.d.ts +82 -0
  30. package/dist/completion/exit-classification.d.ts.map +1 -0
  31. package/dist/completion/exit-classification.js +61 -0
  32. package/dist/completion/exit-classification.js.map +1 -0
  33. package/dist/completion/index.d.ts +14 -5
  34. package/dist/completion/index.d.ts.map +1 -1
  35. package/dist/completion/index.js +14 -5
  36. package/dist/completion/index.js.map +1 -1
  37. package/dist/completion/merge-phase.d.ts +114 -0
  38. package/dist/completion/merge-phase.d.ts.map +1 -0
  39. package/dist/completion/merge-phase.js +198 -0
  40. package/dist/completion/merge-phase.js.map +1 -0
  41. package/dist/completion/review-exit-phase.d.ts +82 -0
  42. package/dist/completion/review-exit-phase.d.ts.map +1 -0
  43. package/dist/completion/review-exit-phase.js +228 -0
  44. package/dist/completion/review-exit-phase.js.map +1 -0
  45. package/dist/completion/status-advance-phase.d.ts +61 -0
  46. package/dist/completion/status-advance-phase.d.ts.map +1 -0
  47. package/dist/completion/status-advance-phase.js +182 -0
  48. package/dist/completion/status-advance-phase.js.map +1 -0
  49. package/dist/completion/team-completion.d.ts +28 -269
  50. package/dist/completion/team-completion.d.ts.map +1 -1
  51. package/dist/completion/team-completion.js +145 -676
  52. package/dist/completion/team-completion.js.map +1 -1
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js +70 -41
  55. package/dist/config.js.map +1 -1
  56. package/dist/daemon-process.d.ts +18 -2
  57. package/dist/daemon-process.d.ts.map +1 -1
  58. package/dist/daemon-process.js +15 -2
  59. package/dist/daemon-process.js.map +1 -1
  60. package/dist/directive/close-loop-stage.d.ts +50 -0
  61. package/dist/directive/close-loop-stage.d.ts.map +1 -0
  62. package/dist/directive/close-loop-stage.js +196 -0
  63. package/dist/directive/close-loop-stage.js.map +1 -0
  64. package/dist/directive/directive-assembly.d.ts +33 -0
  65. package/dist/directive/directive-assembly.d.ts.map +1 -0
  66. package/dist/directive/directive-assembly.js +77 -0
  67. package/dist/directive/directive-assembly.js.map +1 -0
  68. package/dist/directive/directive-dispatch.d.ts +103 -0
  69. package/dist/directive/directive-dispatch.d.ts.map +1 -0
  70. package/dist/directive/directive-dispatch.js +279 -0
  71. package/dist/directive/directive-dispatch.js.map +1 -0
  72. package/dist/directive/phase-sync.d.ts +89 -0
  73. package/dist/directive/phase-sync.d.ts.map +1 -0
  74. package/dist/directive/phase-sync.js +173 -0
  75. package/dist/directive/phase-sync.js.map +1 -0
  76. package/dist/directive-executor.d.ts +21 -223
  77. package/dist/directive-executor.d.ts.map +1 -1
  78. package/dist/directive-executor.js +28 -687
  79. package/dist/directive-executor.js.map +1 -1
  80. package/dist/focus-engine.d.ts.map +1 -1
  81. package/dist/focus-engine.js +16 -10
  82. package/dist/focus-engine.js.map +1 -1
  83. package/dist/focus-executor.d.ts +29 -8
  84. package/dist/focus-executor.d.ts.map +1 -1
  85. package/dist/focus-executor.js +29 -10
  86. package/dist/focus-executor.js.map +1 -1
  87. package/dist/focus-stage-lifecycle.d.ts +7 -5
  88. package/dist/focus-stage-lifecycle.d.ts.map +1 -1
  89. package/dist/focus-stage-lifecycle.js +11 -6
  90. package/dist/focus-stage-lifecycle.js.map +1 -1
  91. package/dist/index.js +8 -0
  92. package/dist/index.js.map +1 -1
  93. package/dist/merge-back-loop.d.ts.map +1 -1
  94. package/dist/merge-back-loop.js +4 -10
  95. package/dist/merge-back-loop.js.map +1 -1
  96. package/dist/pipeline-config.d.ts +13 -0
  97. package/dist/pipeline-config.d.ts.map +1 -1
  98. package/dist/pipeline-config.js +15 -0
  99. package/dist/pipeline-config.js.map +1 -1
  100. package/dist/resolvers/agent-escalations.d.ts +8 -1
  101. package/dist/resolvers/agent-escalations.d.ts.map +1 -1
  102. package/dist/resolvers/agent-escalations.js +25 -22
  103. package/dist/resolvers/agent-escalations.js.map +1 -1
  104. package/dist/resolvers/agent-session-summaries.d.ts +8 -1
  105. package/dist/resolvers/agent-session-summaries.d.ts.map +1 -1
  106. package/dist/resolvers/agent-session-summaries.js +21 -18
  107. package/dist/resolvers/agent-session-summaries.js.map +1 -1
  108. package/dist/resolvers/delivery-acceptance-criteria.d.ts +7 -1
  109. package/dist/resolvers/delivery-acceptance-criteria.d.ts.map +1 -1
  110. package/dist/resolvers/delivery-acceptance-criteria.js +14 -11
  111. package/dist/resolvers/delivery-acceptance-criteria.js.map +1 -1
  112. package/dist/resolvers/delivery-description.d.ts +7 -1
  113. package/dist/resolvers/delivery-description.d.ts.map +1 -1
  114. package/dist/resolvers/delivery-description.js +14 -11
  115. package/dist/resolvers/delivery-description.js.map +1 -1
  116. package/dist/resolvers/delivery-issues.d.ts +8 -1
  117. package/dist/resolvers/delivery-issues.d.ts.map +1 -1
  118. package/dist/resolvers/delivery-issues.js +51 -48
  119. package/dist/resolvers/delivery-issues.js.map +1 -1
  120. package/dist/resolvers/delivery-listing.d.ts +16 -1
  121. package/dist/resolvers/delivery-listing.d.ts.map +1 -1
  122. package/dist/resolvers/delivery-listing.js +36 -33
  123. package/dist/resolvers/delivery-listing.js.map +1 -1
  124. package/dist/resolvers/delivery-tech-context.d.ts +7 -1
  125. package/dist/resolvers/delivery-tech-context.d.ts.map +1 -1
  126. package/dist/resolvers/delivery-tech-context.js +14 -11
  127. package/dist/resolvers/delivery-tech-context.js.map +1 -1
  128. package/dist/resolvers/deployment-profile.d.ts +8 -1
  129. package/dist/resolvers/deployment-profile.d.ts.map +1 -1
  130. package/dist/resolvers/deployment-profile.js +20 -17
  131. package/dist/resolvers/deployment-profile.js.map +1 -1
  132. package/dist/resolvers/focus-anchoring-injections.d.ts +26 -1
  133. package/dist/resolvers/focus-anchoring-injections.d.ts.map +1 -1
  134. package/dist/resolvers/focus-anchoring-injections.js +91 -88
  135. package/dist/resolvers/focus-anchoring-injections.js.map +1 -1
  136. package/dist/resolvers/focus-context.d.ts +9 -1
  137. package/dist/resolvers/focus-context.d.ts.map +1 -1
  138. package/dist/resolvers/focus-context.js +38 -35
  139. package/dist/resolvers/focus-context.js.map +1 -1
  140. package/dist/resolvers/focus-injections.d.ts +13 -1
  141. package/dist/resolvers/focus-injections.d.ts.map +1 -1
  142. package/dist/resolvers/focus-injections.js +60 -57
  143. package/dist/resolvers/focus-injections.js.map +1 -1
  144. package/dist/resolvers/focus-last-review-report.d.ts +2 -1
  145. package/dist/resolvers/focus-last-review-report.d.ts.map +1 -1
  146. package/dist/resolvers/focus-last-review-report.js +33 -30
  147. package/dist/resolvers/focus-last-review-report.js.map +1 -1
  148. package/dist/resolvers/focus-reality-tree.d.ts +15 -1
  149. package/dist/resolvers/focus-reality-tree.d.ts.map +1 -1
  150. package/dist/resolvers/focus-reality-tree.js +35 -32
  151. package/dist/resolvers/focus-reality-tree.js.map +1 -1
  152. package/dist/resolvers/git-diff-against-base.d.ts +8 -1
  153. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  154. package/dist/resolvers/git-diff-against-base.js +33 -30
  155. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  156. package/dist/resolvers/guards-evaluation-results.d.ts +7 -1
  157. package/dist/resolvers/guards-evaluation-results.d.ts.map +1 -1
  158. package/dist/resolvers/guards-evaluation-results.js +25 -22
  159. package/dist/resolvers/guards-evaluation-results.js.map +1 -1
  160. package/dist/resolvers/index.d.ts +22 -40
  161. package/dist/resolvers/index.d.ts.map +1 -1
  162. package/dist/resolvers/index.js +112 -41
  163. package/dist/resolvers/index.js.map +1 -1
  164. package/dist/resolvers/loop-context.d.ts +18 -1
  165. package/dist/resolvers/loop-context.d.ts.map +1 -1
  166. package/dist/resolvers/loop-context.js +21 -18
  167. package/dist/resolvers/loop-context.js.map +1 -1
  168. package/dist/resolvers/loop-delivery-index.d.ts +17 -1
  169. package/dist/resolvers/loop-delivery-index.d.ts.map +1 -1
  170. package/dist/resolvers/loop-delivery-index.js +51 -48
  171. package/dist/resolvers/loop-delivery-index.js.map +1 -1
  172. package/dist/resolvers/loop-documents.d.ts +9 -1
  173. package/dist/resolvers/loop-documents.d.ts.map +1 -1
  174. package/dist/resolvers/loop-documents.js +22 -19
  175. package/dist/resolvers/loop-documents.js.map +1 -1
  176. package/dist/resolvers/loop-expected-effects.d.ts +11 -1
  177. package/dist/resolvers/loop-expected-effects.d.ts.map +1 -1
  178. package/dist/resolvers/loop-expected-effects.js +53 -50
  179. package/dist/resolvers/loop-expected-effects.js.map +1 -1
  180. package/dist/resolvers/loop-frt-statement.d.ts +11 -1
  181. package/dist/resolvers/loop-frt-statement.d.ts.map +1 -1
  182. package/dist/resolvers/loop-frt-statement.js +28 -25
  183. package/dist/resolvers/loop-frt-statement.js.map +1 -1
  184. package/dist/resolvers/loop-injection.d.ts +10 -1
  185. package/dist/resolvers/loop-injection.d.ts.map +1 -1
  186. package/dist/resolvers/loop-injection.js +38 -35
  187. package/dist/resolvers/loop-injection.js.map +1 -1
  188. package/dist/resolvers/loop-persona.d.ts +20 -1
  189. package/dist/resolvers/loop-persona.d.ts.map +1 -1
  190. package/dist/resolvers/loop-persona.js +20 -17
  191. package/dist/resolvers/loop-persona.js.map +1 -1
  192. package/dist/resolvers/loop-questions.d.ts +8 -1
  193. package/dist/resolvers/loop-questions.d.ts.map +1 -1
  194. package/dist/resolvers/loop-questions.js +39 -36
  195. package/dist/resolvers/loop-questions.js.map +1 -1
  196. package/dist/resolvers/loop-upstream-udes.d.ts +11 -1
  197. package/dist/resolvers/loop-upstream-udes.d.ts.map +1 -1
  198. package/dist/resolvers/loop-upstream-udes.js +74 -71
  199. package/dist/resolvers/loop-upstream-udes.js.map +1 -1
  200. package/dist/resolvers/prd-context.d.ts +2 -0
  201. package/dist/resolvers/prd-context.d.ts.map +1 -1
  202. package/dist/resolvers/prd-context.js +16 -13
  203. package/dist/resolvers/prd-context.js.map +1 -1
  204. package/dist/resolvers/prd-persona.d.ts +2 -0
  205. package/dist/resolvers/prd-persona.d.ts.map +1 -1
  206. package/dist/resolvers/prd-persona.js +6 -3
  207. package/dist/resolvers/prd-persona.js.map +1 -1
  208. package/dist/resolvers/reality-metrics.d.ts +8 -1
  209. package/dist/resolvers/reality-metrics.d.ts.map +1 -1
  210. package/dist/resolvers/reality-metrics.js +73 -70
  211. package/dist/resolvers/reality-metrics.js.map +1 -1
  212. package/dist/resolvers/reality-projections.d.ts +7 -1
  213. package/dist/resolvers/reality-projections.d.ts.map +1 -1
  214. package/dist/resolvers/reality-projections.js +35 -32
  215. package/dist/resolvers/reality-projections.js.map +1 -1
  216. package/dist/resolvers/reality-tree-snapshot.d.ts +10 -1
  217. package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -1
  218. package/dist/resolvers/reality-tree-snapshot.js +34 -31
  219. package/dist/resolvers/reality-tree-snapshot.js.map +1 -1
  220. package/dist/resolvers/retired-injections.d.ts +10 -1
  221. package/dist/resolvers/retired-injections.d.ts.map +1 -1
  222. package/dist/resolvers/retired-injections.js +68 -65
  223. package/dist/resolvers/retired-injections.js.map +1 -1
  224. package/dist/resolvers/review-outcomes.d.ts +11 -1
  225. package/dist/resolvers/review-outcomes.d.ts.map +1 -1
  226. package/dist/resolvers/review-outcomes.js +27 -24
  227. package/dist/resolvers/review-outcomes.js.map +1 -1
  228. package/dist/resolvers/security-advisory.d.ts +2 -1
  229. package/dist/resolvers/security-advisory.d.ts.map +1 -1
  230. package/dist/resolvers/security-advisory.js +47 -44
  231. package/dist/resolvers/security-advisory.js.map +1 -1
  232. package/dist/resolvers/wiki-search.d.ts +8 -1
  233. package/dist/resolvers/wiki-search.d.ts.map +1 -1
  234. package/dist/resolvers/wiki-search.js +17 -14
  235. package/dist/resolvers/wiki-search.js.map +1 -1
  236. package/dist/resolvers/wiki-topic.d.ts +9 -1
  237. package/dist/resolvers/wiki-topic.d.ts.map +1 -1
  238. package/dist/resolvers/wiki-topic.js +21 -18
  239. package/dist/resolvers/wiki-topic.js.map +1 -1
  240. package/dist/resolvers/workflow-stages.d.ts +7 -1
  241. package/dist/resolvers/workflow-stages.d.ts.map +1 -1
  242. package/dist/resolvers/workflow-stages.js +20 -17
  243. package/dist/resolvers/workflow-stages.js.map +1 -1
  244. package/dist/review-defect-detector.d.ts +4 -1
  245. package/dist/review-defect-detector.d.ts.map +1 -1
  246. package/dist/review-defect-detector.js +6 -8
  247. package/dist/review-defect-detector.js.map +1 -1
  248. package/dist/self-update.d.ts +6 -0
  249. package/dist/self-update.d.ts.map +1 -1
  250. package/dist/self-update.js +6 -1
  251. package/dist/self-update.js.map +1 -1
  252. package/dist/spawner/index.d.ts +2 -1
  253. package/dist/spawner/index.d.ts.map +1 -1
  254. package/dist/spawner/index.js +2 -1
  255. package/dist/spawner/index.js.map +1 -1
  256. package/dist/spawner/spawn-team.d.ts +14 -52
  257. package/dist/spawner/spawn-team.d.ts.map +1 -1
  258. package/dist/spawner/spawn-team.js +14 -469
  259. package/dist/spawner/spawn-team.js.map +1 -1
  260. package/dist/staleness.d.ts +124 -0
  261. package/dist/staleness.d.ts.map +1 -0
  262. package/dist/staleness.js +215 -0
  263. package/dist/staleness.js.map +1 -0
  264. package/dist/state-cascade.d.ts +3 -2
  265. package/dist/state-cascade.d.ts.map +1 -1
  266. package/dist/state-cascade.js +7 -3
  267. package/dist/state-cascade.js.map +1 -1
  268. package/dist/types/focus.d.ts +5 -4
  269. package/dist/types/focus.d.ts.map +1 -1
  270. package/dist/types/index.d.ts +0 -1
  271. package/dist/types/index.d.ts.map +1 -1
  272. package/dist/types/index.js +0 -1
  273. package/dist/types/index.js.map +1 -1
  274. package/dist/types/session.d.ts +2 -3
  275. package/dist/types/session.d.ts.map +1 -1
  276. package/dist/unified-engine-lifecycle.d.ts.map +1 -1
  277. package/dist/unified-engine-lifecycle.js +2 -23
  278. package/dist/unified-engine-lifecycle.js.map +1 -1
  279. package/dist/unified-shell-config.d.ts +2 -7
  280. package/dist/unified-shell-config.d.ts.map +1 -1
  281. package/dist/unified-shell-config.js +2 -23
  282. package/dist/unified-shell-config.js.map +1 -1
  283. package/dist/unified-shell-status.d.ts.map +1 -1
  284. package/dist/unified-shell-status.js +2 -4
  285. package/dist/unified-shell-status.js.map +1 -1
  286. package/dist/unified-shell.d.ts.map +1 -1
  287. package/dist/unified-shell.js +21 -24
  288. package/dist/unified-shell.js.map +1 -1
  289. package/dist/version-check.d.ts.map +1 -1
  290. package/dist/version-check.js +6 -4
  291. package/dist/version-check.js.map +1 -1
  292. package/package.json +3 -3
  293. package/dist/pm/adaptive-poller.d.ts +0 -26
  294. package/dist/pm/adaptive-poller.d.ts.map +0 -1
  295. package/dist/pm/adaptive-poller.js +0 -53
  296. package/dist/pm/adaptive-poller.js.map +0 -1
  297. package/dist/pm/cascade-evaluator.d.ts +0 -29
  298. package/dist/pm/cascade-evaluator.d.ts.map +0 -1
  299. package/dist/pm/cascade-evaluator.js +0 -135
  300. package/dist/pm/cascade-evaluator.js.map +0 -1
  301. package/dist/pm/channel-email.d.ts +0 -42
  302. package/dist/pm/channel-email.d.ts.map +0 -1
  303. package/dist/pm/channel-email.js +0 -47
  304. package/dist/pm/channel-email.js.map +0 -1
  305. package/dist/pm/channel-slack.d.ts +0 -40
  306. package/dist/pm/channel-slack.d.ts.map +0 -1
  307. package/dist/pm/channel-slack.js +0 -46
  308. package/dist/pm/channel-slack.js.map +0 -1
  309. package/dist/pm/communication-drafter.d.ts +0 -44
  310. package/dist/pm/communication-drafter.d.ts.map +0 -1
  311. package/dist/pm/communication-drafter.js +0 -84
  312. package/dist/pm/communication-drafter.js.map +0 -1
  313. package/dist/pm/dialog-handler.d.ts +0 -32
  314. package/dist/pm/dialog-handler.d.ts.map +0 -1
  315. package/dist/pm/dialog-handler.js +0 -107
  316. package/dist/pm/dialog-handler.js.map +0 -1
  317. package/dist/pm/mitigation-correlator.d.ts +0 -29
  318. package/dist/pm/mitigation-correlator.d.ts.map +0 -1
  319. package/dist/pm/mitigation-correlator.js +0 -147
  320. package/dist/pm/mitigation-correlator.js.map +0 -1
  321. package/dist/pm/risk-scanner.d.ts +0 -28
  322. package/dist/pm/risk-scanner.d.ts.map +0 -1
  323. package/dist/pm/risk-scanner.js +0 -112
  324. package/dist/pm/risk-scanner.js.map +0 -1
  325. package/dist/pm-engine.d.ts +0 -96
  326. package/dist/pm-engine.d.ts.map +0 -1
  327. package/dist/pm-engine.js +0 -540
  328. package/dist/pm-engine.js.map +0 -1
  329. package/dist/pm-process.d.ts +0 -45
  330. package/dist/pm-process.d.ts.map +0 -1
  331. package/dist/pm-process.js +0 -195
  332. package/dist/pm-process.js.map +0 -1
  333. package/dist/pm-prompt-builder.d.ts +0 -23
  334. package/dist/pm-prompt-builder.d.ts.map +0 -1
  335. package/dist/pm-prompt-builder.js +0 -64
  336. package/dist/pm-prompt-builder.js.map +0 -1
  337. package/dist/session-lifecycle.d.ts +0 -78
  338. package/dist/session-lifecycle.d.ts.map +0 -1
  339. package/dist/session-lifecycle.js +0 -382
  340. package/dist/session-lifecycle.js.map +0 -1
  341. package/dist/types/pm.d.ts +0 -53
  342. package/dist/types/pm.d.ts.map +0 -1
  343. package/dist/types/pm.js +0 -10
  344. package/dist/types/pm.js.map +0 -1
@@ -7,52 +7,55 @@ import { statusCheckbox } from './shared/format.js';
7
7
  * Fetches all issues across deliveries and formats as a checklist.
8
8
  * Optional param: status (filter by issue status, e.g. "done").
9
9
  */
10
- registerSourceResolver('delivery.issues', async (context, params) => {
11
- const issues = await getFocusIssues(context.focusId);
12
- if (issues.length === 0)
13
- return '';
14
- const statusFilter = params.status?.toLowerCase();
15
- // When filtering by 'done', also include 'Verified' issues — they are
16
- // semantically closed (confirmed-addressed by a review agent) and should
17
- // appear in review-context done-lists so the agent knows they were handled.
18
- const filtered = statusFilter
19
- ? issues.filter((i) => {
20
- const s = i.status.toLowerCase();
21
- return s === statusFilter || (statusFilter === 'done' && s === 'verified');
22
- })
23
- : issues;
24
- if (filtered.length === 0)
25
- return '';
26
- // Group issues by delivery
27
- const byDelivery = {};
28
- for (const issue of filtered) {
29
- const group = byDelivery[issue.deliveryId] ?? [];
30
- group.push(issue);
31
- byDelivery[issue.deliveryId] = group;
32
- }
33
- const sections = [];
34
- for (const deliveryId of Object.keys(byDelivery)) {
35
- const deliveryIssues = byDelivery[deliveryId];
36
- const lines = deliveryIssues.map((i) => {
37
- const check = statusCheckbox(i.status);
38
- const typeTag = i.issueType !== 'task' ? ` [${i.issueType}]` : '';
39
- return `- ${check} ${i.title}${typeTag} (${i.status})`;
40
- });
41
- sections.push(`### Delivery ${deliveryId.slice(0, 8)}\n\n${lines.join('\n')}`);
42
- }
43
- const header = statusFilter
44
- ? `## Issues (${statusFilter})`
45
- : '## Issues';
46
- const hasVerified = filtered.some((i) => i.status.toLowerCase() === 'verified');
47
- const hasInReview = filtered.some((i) => i.status.toLowerCase() === 'in review');
48
- const legendLines = [];
49
- if (hasVerified)
50
- legendLines.push('`[v]` = Verified — confirmed-addressed in a prior review pass. Skip on re-review.');
51
- if (hasInReview)
52
- legendLines.push('`[?]` = In Review dev-complete, awaiting review-agent confirmation. **This is the review agent\'s working set.**');
53
- const legend = legendLines.length > 0
54
- ? '\n\n' + legendLines.map(l => `> ${l}`).join('\n>\n> ')
55
- : '';
56
- return `${header}${legend}\n\n${sections.join('\n\n')}`;
57
- });
10
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
11
+ export function registerDeliveryIssuesResolver() {
12
+ registerSourceResolver('delivery.issues', async (context, params) => {
13
+ const issues = await getFocusIssues(context.focusId);
14
+ if (issues.length === 0)
15
+ return '';
16
+ const statusFilter = params.status?.toLowerCase();
17
+ // When filtering by 'done', also include 'Verified' issues they are
18
+ // semantically closed (confirmed-addressed by a review agent) and should
19
+ // appear in review-context done-lists so the agent knows they were handled.
20
+ const filtered = statusFilter
21
+ ? issues.filter((i) => {
22
+ const s = i.status.toLowerCase();
23
+ return s === statusFilter || (statusFilter === 'done' && s === 'verified');
24
+ })
25
+ : issues;
26
+ if (filtered.length === 0)
27
+ return '';
28
+ // Group issues by delivery
29
+ const byDelivery = {};
30
+ for (const issue of filtered) {
31
+ const group = byDelivery[issue.deliveryId] ?? [];
32
+ group.push(issue);
33
+ byDelivery[issue.deliveryId] = group;
34
+ }
35
+ const sections = [];
36
+ for (const deliveryId of Object.keys(byDelivery)) {
37
+ const deliveryIssues = byDelivery[deliveryId];
38
+ const lines = deliveryIssues.map((i) => {
39
+ const check = statusCheckbox(i.status);
40
+ const typeTag = i.issueType !== 'task' ? ` [${i.issueType}]` : '';
41
+ return `- ${check} ${i.title}${typeTag} (${i.status})`;
42
+ });
43
+ sections.push(`### Delivery ${deliveryId.slice(0, 8)}\n\n${lines.join('\n')}`);
44
+ }
45
+ const header = statusFilter
46
+ ? `## Issues (${statusFilter})`
47
+ : '## Issues';
48
+ const hasVerified = filtered.some((i) => i.status.toLowerCase() === 'verified');
49
+ const hasInReview = filtered.some((i) => i.status.toLowerCase() === 'in review');
50
+ const legendLines = [];
51
+ if (hasVerified)
52
+ legendLines.push('`[v]` = Verifiedconfirmed-addressed in a prior review pass. Skip on re-review.');
53
+ if (hasInReview)
54
+ legendLines.push('`[?]` = In Review — dev-complete, awaiting review-agent confirmation. **This is the review agent\'s working set.**');
55
+ const legend = legendLines.length > 0
56
+ ? '\n\n' + legendLines.map(l => `> ${l}`).join('\n>\n> ')
57
+ : '';
58
+ return `${header}${legend}\n\n${sections.join('\n\n')}`;
59
+ });
60
+ }
58
61
  //# sourceMappingURL=delivery-issues.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-issues.js","sourceRoot":"","sources":["../../src/resolvers/delivery-issues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delivery-issues.js","sourceRoot":"","sources":["../../src/resolvers/delivery-issues.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,17 @@
1
- export {};
1
+ /**
2
+ * delivery.listing
3
+ *
4
+ * Fetches deliveries and issues for the focus and formats as a
5
+ * detailed listing using the same format as the team prompt builder.
6
+ *
7
+ * Optional param: scope
8
+ * - "team" (default): queued + coding deliveries only (building phase)
9
+ * - "all": all deliveries with status
10
+ * - "verify": only verify deliveries (review phase)
11
+ * - "done_since_last_audit": deliveries with executionStatus=done whose
12
+ * updatedAt is at or after the previous audit cycle's completed_at.
13
+ * When no prior audit exists, returns all done deliveries.
14
+ */
15
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
16
+ export declare function registerDeliveryListingResolver(): void;
2
17
  //# sourceMappingURL=delivery-listing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-listing.d.ts","sourceRoot":"","sources":["../../src/resolvers/delivery-listing.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"delivery-listing.d.ts","sourceRoot":"","sources":["../../src/resolvers/delivery-listing.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;GAaG;AACH,oGAAoG;AACpG,wBAAgB,+BAA+B,IAAI,IAAI,CAmCtD"}
@@ -16,39 +16,42 @@ import { getAuditCycleLowerBound } from './shared/audit.js';
16
16
  * updatedAt is at or after the previous audit cycle's completed_at.
17
17
  * When no prior audit exists, returns all done deliveries.
18
18
  */
19
- registerSourceResolver('delivery.listing', async (context, params) => {
20
- const deliveries = await getFocusDeliveries(context.focusId);
21
- if (deliveries.length === 0)
22
- return '';
23
- const issues = await getFocusIssues(context.focusId);
24
- const scope = params.scope ?? 'team';
25
- if (scope === 'verify') {
26
- // Filter to only verify deliveries for review context
27
- const verifyDeliveries = deliveries.filter(d => d.executionStatus === 'verify');
28
- if (verifyDeliveries.length === 0)
19
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
20
+ export function registerDeliveryListingResolver() {
21
+ registerSourceResolver('delivery.listing', async (context, params) => {
22
+ const deliveries = await getFocusDeliveries(context.focusId);
23
+ if (deliveries.length === 0)
29
24
  return '';
30
- const lines = buildDeliveryListingSection(verifyDeliveries, issues);
25
+ const issues = await getFocusIssues(context.focusId);
26
+ const scope = params.scope ?? 'team';
27
+ if (scope === 'verify') {
28
+ // Filter to only verify deliveries for review context
29
+ const verifyDeliveries = deliveries.filter(d => d.executionStatus === 'verify');
30
+ if (verifyDeliveries.length === 0)
31
+ return '';
32
+ const lines = buildDeliveryListingSection(verifyDeliveries, issues);
33
+ return lines.join('\n');
34
+ }
35
+ if (scope === 'done_since_last_audit') {
36
+ const since = await getAuditCycleLowerBound(context.focusId);
37
+ const doneDeliveries = deliveries.filter(d => {
38
+ if (d.executionStatus !== 'done')
39
+ return false;
40
+ if (!since)
41
+ return true;
42
+ // updatedAt is the closest proxy for "moved to done at" -- when the
43
+ // daemon advances a delivery to done, that bumps updated_at. Missing
44
+ // timestamps are included so we don't silently drop a real completion.
45
+ return !d.updatedAt || d.updatedAt >= since;
46
+ });
47
+ if (doneDeliveries.length === 0)
48
+ return '';
49
+ const lines = buildDeliveryListingSection(doneDeliveries, issues);
50
+ return lines.join('\n');
51
+ }
52
+ // Default: use buildDeliveryListingSection which partitions into team/other
53
+ const lines = buildDeliveryListingSection(deliveries, issues);
31
54
  return lines.join('\n');
32
- }
33
- if (scope === 'done_since_last_audit') {
34
- const since = await getAuditCycleLowerBound(context.focusId);
35
- const doneDeliveries = deliveries.filter(d => {
36
- if (d.executionStatus !== 'done')
37
- return false;
38
- if (!since)
39
- return true;
40
- // updatedAt is the closest proxy for "moved to done at" -- when the
41
- // daemon advances a delivery to done, that bumps updated_at. Missing
42
- // timestamps are included so we don't silently drop a real completion.
43
- return !d.updatedAt || d.updatedAt >= since;
44
- });
45
- if (doneDeliveries.length === 0)
46
- return '';
47
- const lines = buildDeliveryListingSection(doneDeliveries, issues);
48
- return lines.join('\n');
49
- }
50
- // Default: use buildDeliveryListingSection which partitions into team/other
51
- const lines = buildDeliveryListingSection(deliveries, issues);
52
- return lines.join('\n');
53
- });
55
+ });
56
+ }
54
57
  //# sourceMappingURL=delivery-listing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-listing.js","sourceRoot":"","sources":["../../src/resolvers/delivery-listing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,sBAAsB,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAwB,EAAE,MAA8B,EAAmB,EAAE;IAC7H,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;IAErC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,sDAAsD;QACtD,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC;QAChF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,KAAK,uBAAuB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC3C,IAAI,CAAC,CAAC,eAAe,KAAK,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/C,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,oEAAoE;YACpE,qEAAqE;YACrE,uEAAuE;YACvE,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,2BAA2B,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAClE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,4EAA4E;IAC5E,MAAM,KAAK,GAAG,2BAA2B,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"delivery-listing.js","sourceRoot":"","sources":["../../src/resolvers/delivery-listing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,oGAAoG;AACpG,MAAM,UAAU,+BAA+B;IAC7C,sBAAsB,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAwB,EAAE,MAA8B,EAAmB,EAAE;QAC7H,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;QAErC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,sDAAsD;YACtD,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC;YAChF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,KAAK,KAAK,uBAAuB,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC3C,IAAI,CAAC,CAAC,eAAe,KAAK,MAAM;oBAAE,OAAO,KAAK,CAAC;gBAC/C,IAAI,CAAC,KAAK;oBAAE,OAAO,IAAI,CAAC;gBACxB,oEAAoE;gBACpE,qEAAqE;gBACrE,uEAAuE;gBACvE,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,2BAA2B,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,4EAA4E;QAC5E,MAAM,KAAK,GAAG,2BAA2B,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +1,8 @@
1
- export {};
1
+ /**
2
+ * delivery.tech_context
3
+ *
4
+ * Concatenates the techContext field of every delivery in the focus.
5
+ */
6
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
7
+ export declare function registerDeliveryTechContextResolver(): void;
2
8
  //# sourceMappingURL=delivery-tech-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-tech-context.d.ts","sourceRoot":"","sources":["../../src/resolvers/delivery-tech-context.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"delivery-tech-context.d.ts","sourceRoot":"","sources":["../../src/resolvers/delivery-tech-context.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,oGAAoG;AACpG,wBAAgB,mCAAmC,IAAI,IAAI,CAY1D"}
@@ -5,15 +5,18 @@ import { getFocusDeliveries } from '../queries/focuses.js';
5
5
  *
6
6
  * Concatenates the techContext field of every delivery in the focus.
7
7
  */
8
- registerSourceResolver('delivery.tech_context', async (context) => {
9
- const deliveries = await getFocusDeliveries(context.focusId);
10
- if (deliveries.length === 0)
11
- return '';
12
- const sections = deliveries
13
- .filter((d) => d.techContext)
14
- .map((d) => `### ${d.name}\n\n${d.techContext}`);
15
- if (sections.length === 0)
16
- return '';
17
- return `## Technical Context\n\n${sections.join('\n\n')}`;
18
- });
8
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
9
+ export function registerDeliveryTechContextResolver() {
10
+ registerSourceResolver('delivery.tech_context', async (context) => {
11
+ const deliveries = await getFocusDeliveries(context.focusId);
12
+ if (deliveries.length === 0)
13
+ return '';
14
+ const sections = deliveries
15
+ .filter((d) => d.techContext)
16
+ .map((d) => `### ${d.name}\n\n${d.techContext}`);
17
+ if (sections.length === 0)
18
+ return '';
19
+ return `## Technical Context\n\n${sections.join('\n\n')}`;
20
+ });
21
+ }
19
22
  //# sourceMappingURL=delivery-tech-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-tech-context.js","sourceRoot":"","sources":["../../src/resolvers/delivery-tech-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;GAIG;AACH,sBAAsB,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;IAClG,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,QAAQ,GAAG,UAAU;SACxB,MAAM,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;SAC/C,GAAG,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAEtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,2BAA2B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5D,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"delivery-tech-context.js","sourceRoot":"","sources":["../../src/resolvers/delivery-tech-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;GAIG;AACH,oGAAoG;AACpG,MAAM,UAAU,mCAAmC;IACjD,sBAAsB,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;QAClG,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvC,MAAM,QAAQ,GAAG,UAAU;aACxB,MAAM,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC/C,GAAG,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAEtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,2BAA2B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +1,9 @@
1
- export {};
1
+ /**
2
+ * deployment.profile
3
+ *
4
+ * Fetches the deployment profile snapshot for the product and formats
5
+ * the inception prompt and guidelines as markdown.
6
+ */
7
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
8
+ export declare function registerDeploymentProfileResolver(): void;
2
9
  //# sourceMappingURL=deployment-profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-profile.d.ts","sourceRoot":"","sources":["../../src/resolvers/deployment-profile.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"deployment-profile.d.ts","sourceRoot":"","sources":["../../src/resolvers/deployment-profile.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,oGAAoG;AACpG,wBAAgB,iCAAiC,IAAI,IAAI,CAmBxD"}
@@ -6,23 +6,26 @@ import { getProductDeploymentProfileSnapshot } from '../queries/focuses.js';
6
6
  * Fetches the deployment profile snapshot for the product and formats
7
7
  * the inception prompt and guidelines as markdown.
8
8
  */
9
- registerSourceResolver('deployment.profile', async (context) => {
10
- try {
11
- const snapshot = await getProductDeploymentProfileSnapshot(context.productId);
12
- if (!snapshot)
13
- return '';
14
- const parts = [];
15
- if (snapshot.inceptionPrompt) {
16
- parts.push(`## Deployment Profile: Operational Context\n\n${snapshot.inceptionPrompt}`);
9
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
10
+ export function registerDeploymentProfileResolver() {
11
+ registerSourceResolver('deployment.profile', async (context) => {
12
+ try {
13
+ const snapshot = await getProductDeploymentProfileSnapshot(context.productId);
14
+ if (!snapshot)
15
+ return '';
16
+ const parts = [];
17
+ if (snapshot.inceptionPrompt) {
18
+ parts.push(`## Deployment Profile: Operational Context\n\n${snapshot.inceptionPrompt}`);
19
+ }
20
+ if (snapshot.guidelines) {
21
+ parts.push(`## Deployment Constraints\n\n${snapshot.guidelines}`);
22
+ }
23
+ return parts.join('\n\n');
17
24
  }
18
- if (snapshot.guidelines) {
19
- parts.push(`## Deployment Constraints\n\n${snapshot.guidelines}`);
25
+ catch (err) {
26
+ console.warn(`[assembly-engine] deployment.profile: failed: ${err.message}`);
27
+ return '';
20
28
  }
21
- return parts.join('\n\n');
22
- }
23
- catch (err) {
24
- console.warn(`[assembly-engine] deployment.profile: failed: ${err.message}`);
25
- return '';
26
- }
27
- });
29
+ });
30
+ }
28
31
  //# sourceMappingURL=deployment-profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-profile.js","sourceRoot":"","sources":["../../src/resolvers/deployment-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;;;;GAKG;AACH,sBAAsB,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;IAC/F,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,mCAAmC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,iDAAiD,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,gCAAgC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,iDAAkD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACxF,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"deployment-profile.js","sourceRoot":"","sources":["../../src/resolvers/deployment-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;;;;GAKG;AACH,oGAAoG;AACpG,MAAM,UAAU,iCAAiC;IAC/C,sBAAsB,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;QAC/F,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,mCAAmC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAEzB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,iDAAiD,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,gCAAgC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,iDAAkD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +1,27 @@
1
- export {};
1
+ /**
2
+ * focus.anchoring_injections
3
+ *
4
+ * Per-delivery report of every injection anchored to a delivery in the
5
+ * focus. Used by the close_loop stage assembly so the bookkeeper team
6
+ * lead can sweep each injection on its own merits:
7
+ *
8
+ * - the delivery the injection is anchored to (name + id)
9
+ * - the injection statement, lifecycle status, and seq number
10
+ * - the UDE(s) the injection targets (via `targets` edges)
11
+ * - the FRT overlay statement on each UDE (what it becomes once verified)
12
+ * - the FRT overlay node type (e.g., UDE -> DE flip)
13
+ * - "expected reality change" -- diff between current statement and FRT
14
+ * overlay statement, surfaced per target so the agent can check whether
15
+ * the worktree evidence supports the flip
16
+ *
17
+ * Query path:
18
+ * org_nodes (type=delivery, focus_id=X) -> injection_id ->
19
+ * reality_tree_nodes (injection) -> reality_tree_edges (targets) ->
20
+ * reality_tree_nodes (UDE / target)
21
+ *
22
+ * Returns empty string when the focus has no deliveries with injection
23
+ * anchors. Fails soft on API errors.
24
+ */
25
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
26
+ export declare function registerFocusAnchoringInjectionsResolver(): void;
2
27
  //# sourceMappingURL=focus-anchoring-injections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus-anchoring-injections.d.ts","sourceRoot":"","sources":["../../src/resolvers/focus-anchoring-injections.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"focus-anchoring-injections.d.ts","sourceRoot":"","sources":["../../src/resolvers/focus-anchoring-injections.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,oGAAoG;AACpG,wBAAgB,wCAAwC,IAAI,IAAI,CAoG/D"}
@@ -26,98 +26,101 @@ import { fetchInjectionBundles } from './shared/loop.js';
26
26
  * Returns empty string when the focus has no deliveries with injection
27
27
  * anchors. Fails soft on API errors.
28
28
  */
29
- registerSourceResolver('focus.anchoring_injections', async (context) => {
30
- try {
31
- const deliveries = await getFocusDeliveries(context.focusId);
32
- const anchored = deliveries.filter((d) => typeof d.injectionId === 'string' && d.injectionId.length > 0);
33
- if (anchored.length === 0)
34
- return '';
35
- const injectionIds = anchored.map((d) => d.injectionId);
36
- const bundles = await fetchInjectionBundles(injectionIds);
37
- if (bundles.size === 0)
38
- return '';
39
- // Cache nodes+edges per tree so we don't fetch them once per delivery
40
- // when multiple injections share a tree.
41
- const treeNodesCache = new Map();
42
- const treeEdgesCache = new Map();
43
- async function loadTree(treeId) {
44
- let nodes = treeNodesCache.get(treeId);
45
- let edges = treeEdgesCache.get(treeId);
46
- if (!nodes || !edges) {
47
- const [nodesResp, edgesResp] = await Promise.all([
48
- callApi('reality_tree_node_list', { treeId, status: 'active' }),
49
- callApi('reality_tree_edge_list', { treeId }),
50
- ]);
51
- nodes = nodesResp.items ?? [];
52
- edges = edgesResp.items ?? [];
53
- treeNodesCache.set(treeId, nodes);
54
- treeEdgesCache.set(treeId, edges);
55
- }
56
- return { nodes, edges };
57
- }
58
- const sections = [];
59
- for (const delivery of anchored) {
60
- const injectionId = delivery.injectionId;
61
- const bundle = bundles.get(injectionId);
62
- if (!bundle)
63
- continue;
64
- const inj = bundle.injection;
65
- const treeId = inj.realityTreeId;
66
- const { nodes, edges } = await loadTree(treeId);
67
- const nodeById = new Map();
68
- for (const n of nodes)
69
- nodeById.set(n.id, n);
70
- const statusTag = inj.injectionStatus ? ` [${inj.injectionStatus}]` : '';
71
- const lines = [
72
- `### ${delivery.name}`,
73
- '',
74
- `- **Anchored delivery:** ${delivery.name} (\`${delivery.id}\`)`,
75
- `- **Injection:** #${inj.seq} ${inj.statement}${statusTag}`,
76
- `- **Tree:** ${bundle.treeName}`,
77
- ];
78
- if (inj.dissolvesObstacle) {
79
- lines.push(`- **Dissolves obstacle:** ${inj.dissolvesObstacle}`);
80
- }
81
- // Walk targets edges from this injection -> target UDE/entity nodes.
82
- const targetIds = edges
83
- .filter((e) => e.edgeType === 'targets' && e.fromNodeId === injectionId)
84
- .map((e) => e.toNodeId);
85
- if (targetIds.length === 0) {
86
- lines.push('', '_No target UDEs declared. Injection has no `targets` edges._');
29
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
30
+ export function registerFocusAnchoringInjectionsResolver() {
31
+ registerSourceResolver('focus.anchoring_injections', async (context) => {
32
+ try {
33
+ const deliveries = await getFocusDeliveries(context.focusId);
34
+ const anchored = deliveries.filter((d) => typeof d.injectionId === 'string' && d.injectionId.length > 0);
35
+ if (anchored.length === 0)
36
+ return '';
37
+ const injectionIds = anchored.map((d) => d.injectionId);
38
+ const bundles = await fetchInjectionBundles(injectionIds);
39
+ if (bundles.size === 0)
40
+ return '';
41
+ // Cache nodes+edges per tree so we don't fetch them once per delivery
42
+ // when multiple injections share a tree.
43
+ const treeNodesCache = new Map();
44
+ const treeEdgesCache = new Map();
45
+ async function loadTree(treeId) {
46
+ let nodes = treeNodesCache.get(treeId);
47
+ let edges = treeEdgesCache.get(treeId);
48
+ if (!nodes || !edges) {
49
+ const [nodesResp, edgesResp] = await Promise.all([
50
+ callApi('reality_tree_node_list', { treeId, status: 'active' }),
51
+ callApi('reality_tree_edge_list', { treeId }),
52
+ ]);
53
+ nodes = nodesResp.items ?? [];
54
+ edges = edgesResp.items ?? [];
55
+ treeNodesCache.set(treeId, nodes);
56
+ treeEdgesCache.set(treeId, edges);
57
+ }
58
+ return { nodes, edges };
87
59
  }
88
- else {
89
- lines.push('', '**Target UDEs and expected reality change:**');
90
- for (const targetId of targetIds) {
91
- const target = nodeById.get(targetId);
92
- if (!target)
93
- continue;
94
- const currentType = target.nodeType;
95
- const frtStatement = target.frtStatement?.trim() ?? '';
96
- const frtType = target.frtNodeType?.trim() ?? '';
97
- const targetHeader = `- **#${target.seq} Target UDE (${currentType}):** ${target.statement}`;
98
- lines.push(targetHeader);
99
- if (frtStatement.length > 0) {
100
- const overlayType = frtType.length > 0 ? frtType : currentType;
101
- lines.push(` - **FRT overlay (${overlayType}):** ${frtStatement}`);
102
- lines.push(` - **Expected reality change:** "${target.statement}" -> "${frtStatement}"`);
103
- }
104
- else if (frtType.length > 0) {
105
- lines.push(` - **FRT overlay (${frtType}):** _(type flip only, no statement rewrite)_`);
106
- }
107
- else {
108
- lines.push(' - _No FRT overlay set on this target._');
60
+ const sections = [];
61
+ for (const delivery of anchored) {
62
+ const injectionId = delivery.injectionId;
63
+ const bundle = bundles.get(injectionId);
64
+ if (!bundle)
65
+ continue;
66
+ const inj = bundle.injection;
67
+ const treeId = inj.realityTreeId;
68
+ const { nodes, edges } = await loadTree(treeId);
69
+ const nodeById = new Map();
70
+ for (const n of nodes)
71
+ nodeById.set(n.id, n);
72
+ const statusTag = inj.injectionStatus ? ` [${inj.injectionStatus}]` : '';
73
+ const lines = [
74
+ `### ${delivery.name}`,
75
+ '',
76
+ `- **Anchored delivery:** ${delivery.name} (\`${delivery.id}\`)`,
77
+ `- **Injection:** #${inj.seq} ${inj.statement}${statusTag}`,
78
+ `- **Tree:** ${bundle.treeName}`,
79
+ ];
80
+ if (inj.dissolvesObstacle) {
81
+ lines.push(`- **Dissolves obstacle:** ${inj.dissolvesObstacle}`);
82
+ }
83
+ // Walk targets edges from this injection -> target UDE/entity nodes.
84
+ const targetIds = edges
85
+ .filter((e) => e.edgeType === 'targets' && e.fromNodeId === injectionId)
86
+ .map((e) => e.toNodeId);
87
+ if (targetIds.length === 0) {
88
+ lines.push('', '_No target UDEs declared. Injection has no `targets` edges._');
89
+ }
90
+ else {
91
+ lines.push('', '**Target UDEs and expected reality change:**');
92
+ for (const targetId of targetIds) {
93
+ const target = nodeById.get(targetId);
94
+ if (!target)
95
+ continue;
96
+ const currentType = target.nodeType;
97
+ const frtStatement = target.frtStatement?.trim() ?? '';
98
+ const frtType = target.frtNodeType?.trim() ?? '';
99
+ const targetHeader = `- **#${target.seq} Target UDE (${currentType}):** ${target.statement}`;
100
+ lines.push(targetHeader);
101
+ if (frtStatement.length > 0) {
102
+ const overlayType = frtType.length > 0 ? frtType : currentType;
103
+ lines.push(` - **FRT overlay (${overlayType}):** ${frtStatement}`);
104
+ lines.push(` - **Expected reality change:** "${target.statement}" -> "${frtStatement}"`);
105
+ }
106
+ else if (frtType.length > 0) {
107
+ lines.push(` - **FRT overlay (${frtType}):** _(type flip only, no statement rewrite)_`);
108
+ }
109
+ else {
110
+ lines.push(' - _No FRT overlay set on this target._');
111
+ }
109
112
  }
110
113
  }
114
+ sections.push(lines.join('\n'));
111
115
  }
112
- sections.push(lines.join('\n'));
116
+ if (sections.length === 0)
117
+ return '';
118
+ return `## Anchoring Injections (close-loop sweep)\n\n${sections.join('\n\n')}`;
113
119
  }
114
- if (sections.length === 0)
120
+ catch (err) {
121
+ console.warn(`[assembly-engine] focus.anchoring_injections: failed: ${err.message}`);
115
122
  return '';
116
- return `## Anchoring Injections (close-loop sweep)\n\n${sections.join('\n\n')}`;
117
- }
118
- catch (err) {
119
- console.warn(`[assembly-engine] focus.anchoring_injections: failed: ${err.message}`);
120
- return '';
121
- }
122
- });
123
+ }
124
+ });
125
+ }
123
126
  //# sourceMappingURL=focus-anchoring-injections.js.map