@telora/daemon 0.16.27 → 0.16.42

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 (331) hide show
  1. package/build-info.json +4 -3
  2. package/dist/assembly-resolvers.d.ts +13 -65
  3. package/dist/assembly-resolvers.d.ts.map +1 -1
  4. package/dist/assembly-resolvers.js +15 -1915
  5. package/dist/assembly-resolvers.js.map +1 -1
  6. package/dist/audit-phase.d.ts +2 -2
  7. package/dist/audit-phase.d.ts.map +1 -1
  8. package/dist/audit-phase.js +1 -1
  9. package/dist/audit-phase.js.map +1 -1
  10. package/dist/circuit-wedge-watcher.d.ts +48 -0
  11. package/dist/circuit-wedge-watcher.d.ts.map +1 -0
  12. package/dist/circuit-wedge-watcher.js +94 -0
  13. package/dist/circuit-wedge-watcher.js.map +1 -0
  14. package/dist/{completion-handler.d.ts → completion/agent-completion.d.ts} +3 -3
  15. package/dist/completion/agent-completion.d.ts.map +1 -0
  16. package/dist/{completion-handler.js → completion/agent-completion.js} +7 -7
  17. package/dist/completion/agent-completion.js.map +1 -0
  18. package/dist/{completion-detector.d.ts → completion/detector.d.ts} +1 -1
  19. package/dist/completion/detector.d.ts.map +1 -0
  20. package/dist/{completion-detector.js → completion/detector.js} +1 -1
  21. package/dist/completion/detector.js.map +1 -0
  22. package/dist/{focus-completion-event.d.ts → completion/event.d.ts} +21 -3
  23. package/dist/completion/event.d.ts.map +1 -0
  24. package/dist/{focus-completion-event.js → completion/event.js} +55 -9
  25. package/dist/completion/event.js.map +1 -0
  26. package/dist/completion/index.d.ts +24 -0
  27. package/dist/completion/index.d.ts.map +1 -0
  28. package/dist/completion/index.js +25 -0
  29. package/dist/completion/index.js.map +1 -0
  30. package/dist/{focus-completion.d.ts → completion/team-completion.d.ts} +11 -11
  31. package/dist/completion/team-completion.d.ts.map +1 -0
  32. package/dist/{focus-completion.js → completion/team-completion.js} +37 -26
  33. package/dist/completion/team-completion.js.map +1 -0
  34. package/dist/{focus-team-lifecycle.d.ts → completion/team-lifecycle.d.ts} +2 -2
  35. package/dist/completion/team-lifecycle.d.ts.map +1 -0
  36. package/dist/{focus-team-lifecycle.js → completion/team-lifecycle.js} +12 -12
  37. package/dist/completion/team-lifecycle.js.map +1 -0
  38. package/dist/directive-executor.d.ts +30 -0
  39. package/dist/directive-executor.d.ts.map +1 -1
  40. package/dist/directive-executor.js +46 -0
  41. package/dist/directive-executor.js.map +1 -1
  42. package/dist/focus-engine.d.ts.map +1 -1
  43. package/dist/focus-engine.js +1 -2
  44. package/dist/focus-engine.js.map +1 -1
  45. package/dist/focus-executor.d.ts +4 -4
  46. package/dist/focus-executor.d.ts.map +1 -1
  47. package/dist/focus-executor.js +11 -5
  48. package/dist/focus-executor.js.map +1 -1
  49. package/dist/focus-merge.js +1 -1
  50. package/dist/focus-merge.js.map +1 -1
  51. package/dist/focus-prompt-builder.d.ts.map +1 -1
  52. package/dist/focus-prompt-builder.js +5 -39
  53. package/dist/focus-prompt-builder.js.map +1 -1
  54. package/dist/listener.js +1 -1
  55. package/dist/listener.js.map +1 -1
  56. package/dist/output-monitor.d.ts +1 -1
  57. package/dist/output-monitor.d.ts.map +1 -1
  58. package/dist/output-monitor.js +1 -1
  59. package/dist/output-monitor.js.map +1 -1
  60. package/dist/prompt-listing.d.ts +26 -0
  61. package/dist/prompt-listing.d.ts.map +1 -0
  62. package/dist/prompt-listing.js +55 -0
  63. package/dist/prompt-listing.js.map +1 -0
  64. package/dist/queries/index.d.ts +13 -0
  65. package/dist/queries/index.d.ts.map +1 -1
  66. package/dist/queries/index.js +9 -0
  67. package/dist/queries/index.js.map +1 -1
  68. package/dist/queries/shared.d.ts +35 -0
  69. package/dist/queries/shared.d.ts.map +1 -1
  70. package/dist/queries/shared.js +64 -7
  71. package/dist/queries/shared.js.map +1 -1
  72. package/dist/resolvers/agent-escalations.d.ts +2 -0
  73. package/dist/resolvers/agent-escalations.d.ts.map +1 -0
  74. package/dist/resolvers/agent-escalations.js +33 -0
  75. package/dist/resolvers/agent-escalations.js.map +1 -0
  76. package/dist/resolvers/agent-session-summaries.d.ts +2 -0
  77. package/dist/resolvers/agent-session-summaries.d.ts.map +1 -0
  78. package/dist/resolvers/agent-session-summaries.js +28 -0
  79. package/dist/resolvers/agent-session-summaries.js.map +1 -0
  80. package/dist/resolvers/delivery-acceptance-criteria.d.ts +2 -0
  81. package/dist/resolvers/delivery-acceptance-criteria.d.ts.map +1 -0
  82. package/dist/resolvers/delivery-acceptance-criteria.js +19 -0
  83. package/dist/resolvers/delivery-acceptance-criteria.js.map +1 -0
  84. package/dist/resolvers/delivery-description.d.ts +2 -0
  85. package/dist/resolvers/delivery-description.d.ts.map +1 -0
  86. package/dist/resolvers/delivery-description.js +19 -0
  87. package/dist/resolvers/delivery-description.js.map +1 -0
  88. package/dist/resolvers/delivery-issues.d.ts +2 -0
  89. package/dist/resolvers/delivery-issues.d.ts.map +1 -0
  90. package/dist/resolvers/delivery-issues.js +58 -0
  91. package/dist/resolvers/delivery-issues.js.map +1 -0
  92. package/dist/resolvers/delivery-listing.d.ts +2 -0
  93. package/dist/resolvers/delivery-listing.d.ts.map +1 -0
  94. package/dist/resolvers/delivery-listing.js +54 -0
  95. package/dist/resolvers/delivery-listing.js.map +1 -0
  96. package/dist/resolvers/delivery-tech-context.d.ts +2 -0
  97. package/dist/resolvers/delivery-tech-context.d.ts.map +1 -0
  98. package/dist/resolvers/delivery-tech-context.js +19 -0
  99. package/dist/resolvers/delivery-tech-context.js.map +1 -0
  100. package/dist/resolvers/deployment-profile.d.ts +2 -0
  101. package/dist/resolvers/deployment-profile.d.ts.map +1 -0
  102. package/dist/resolvers/deployment-profile.js +28 -0
  103. package/dist/resolvers/deployment-profile.js.map +1 -0
  104. package/dist/resolvers/focus-anchoring-injections.d.ts +2 -0
  105. package/dist/resolvers/focus-anchoring-injections.d.ts.map +1 -0
  106. package/dist/resolvers/focus-anchoring-injections.js +123 -0
  107. package/dist/resolvers/focus-anchoring-injections.js.map +1 -0
  108. package/dist/resolvers/focus-context.d.ts +2 -0
  109. package/dist/resolvers/focus-context.d.ts.map +1 -0
  110. package/dist/resolvers/focus-context.js +47 -0
  111. package/dist/resolvers/focus-context.js.map +1 -0
  112. package/dist/resolvers/focus-injections.d.ts +2 -0
  113. package/dist/resolvers/focus-injections.d.ts.map +1 -0
  114. package/dist/resolvers/focus-injections.js +75 -0
  115. package/dist/resolvers/focus-injections.js.map +1 -0
  116. package/dist/resolvers/focus-last-review-report.d.ts +2 -0
  117. package/dist/resolvers/focus-last-review-report.d.ts.map +1 -0
  118. package/dist/resolvers/focus-last-review-report.js +46 -0
  119. package/dist/resolvers/focus-last-review-report.js.map +1 -0
  120. package/dist/resolvers/focus-reality-tree.d.ts +2 -0
  121. package/dist/resolvers/focus-reality-tree.d.ts.map +1 -0
  122. package/dist/resolvers/focus-reality-tree.js +50 -0
  123. package/dist/resolvers/focus-reality-tree.js.map +1 -0
  124. package/dist/resolvers/git-diff-against-base.d.ts +2 -0
  125. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -0
  126. package/dist/resolvers/git-diff-against-base.js +39 -0
  127. package/dist/resolvers/git-diff-against-base.js.map +1 -0
  128. package/dist/resolvers/guards-evaluation-results.d.ts +2 -0
  129. package/dist/resolvers/guards-evaluation-results.d.ts.map +1 -0
  130. package/dist/resolvers/guards-evaluation-results.js +31 -0
  131. package/dist/resolvers/guards-evaluation-results.js.map +1 -0
  132. package/dist/resolvers/index.d.ts +50 -0
  133. package/dist/resolvers/index.d.ts.map +1 -0
  134. package/dist/resolvers/index.js +51 -0
  135. package/dist/resolvers/index.js.map +1 -0
  136. package/dist/resolvers/loop-context.d.ts +2 -0
  137. package/dist/resolvers/loop-context.d.ts.map +1 -0
  138. package/dist/resolvers/loop-context.js +113 -0
  139. package/dist/resolvers/loop-context.js.map +1 -0
  140. package/dist/resolvers/loop-delivery-index.d.ts +2 -0
  141. package/dist/resolvers/loop-delivery-index.d.ts.map +1 -0
  142. package/dist/resolvers/loop-delivery-index.js +69 -0
  143. package/dist/resolvers/loop-delivery-index.js.map +1 -0
  144. package/dist/resolvers/loop-documents.d.ts +2 -0
  145. package/dist/resolvers/loop-documents.d.ts.map +1 -0
  146. package/dist/resolvers/loop-documents.js +30 -0
  147. package/dist/resolvers/loop-documents.js.map +1 -0
  148. package/dist/resolvers/loop-expected-effects.d.ts +2 -0
  149. package/dist/resolvers/loop-expected-effects.d.ts.map +1 -0
  150. package/dist/resolvers/loop-expected-effects.js +68 -0
  151. package/dist/resolvers/loop-expected-effects.js.map +1 -0
  152. package/dist/resolvers/loop-frt-statement.d.ts +2 -0
  153. package/dist/resolvers/loop-frt-statement.d.ts.map +1 -0
  154. package/dist/resolvers/loop-frt-statement.js +39 -0
  155. package/dist/resolvers/loop-frt-statement.js.map +1 -0
  156. package/dist/resolvers/loop-injection.d.ts +2 -0
  157. package/dist/resolvers/loop-injection.d.ts.map +1 -0
  158. package/dist/resolvers/loop-injection.js +48 -0
  159. package/dist/resolvers/loop-injection.js.map +1 -0
  160. package/dist/resolvers/loop-persona.d.ts +2 -0
  161. package/dist/resolvers/loop-persona.d.ts.map +1 -0
  162. package/dist/resolvers/loop-persona.js +40 -0
  163. package/dist/resolvers/loop-persona.js.map +1 -0
  164. package/dist/resolvers/loop-questions.d.ts +2 -0
  165. package/dist/resolvers/loop-questions.d.ts.map +1 -0
  166. package/dist/resolvers/loop-questions.js +49 -0
  167. package/dist/resolvers/loop-questions.js.map +1 -0
  168. package/dist/resolvers/loop-upstream-udes.d.ts +2 -0
  169. package/dist/resolvers/loop-upstream-udes.d.ts.map +1 -0
  170. package/dist/resolvers/loop-upstream-udes.js +88 -0
  171. package/dist/resolvers/loop-upstream-udes.js.map +1 -0
  172. package/dist/resolvers/reality-metrics.d.ts +2 -0
  173. package/dist/resolvers/reality-metrics.d.ts.map +1 -0
  174. package/dist/resolvers/reality-metrics.js +86 -0
  175. package/dist/resolvers/reality-metrics.js.map +1 -0
  176. package/dist/resolvers/reality-projections.d.ts +2 -0
  177. package/dist/resolvers/reality-projections.d.ts.map +1 -0
  178. package/dist/resolvers/reality-projections.js +44 -0
  179. package/dist/resolvers/reality-projections.js.map +1 -0
  180. package/dist/resolvers/reality-tree-snapshot.d.ts +2 -0
  181. package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -0
  182. package/dist/resolvers/reality-tree-snapshot.js +45 -0
  183. package/dist/resolvers/reality-tree-snapshot.js.map +1 -0
  184. package/dist/resolvers/retired-injections.d.ts +2 -0
  185. package/dist/resolvers/retired-injections.d.ts.map +1 -0
  186. package/dist/resolvers/retired-injections.js +83 -0
  187. package/dist/resolvers/retired-injections.js.map +1 -0
  188. package/dist/resolvers/review-outcomes.d.ts +2 -0
  189. package/dist/resolvers/review-outcomes.d.ts.map +1 -0
  190. package/dist/resolvers/review-outcomes.js +38 -0
  191. package/dist/resolvers/review-outcomes.js.map +1 -0
  192. package/dist/resolvers/security-advisory.d.ts +2 -0
  193. package/dist/resolvers/security-advisory.d.ts.map +1 -0
  194. package/dist/resolvers/security-advisory.js +97 -0
  195. package/dist/resolvers/security-advisory.js.map +1 -0
  196. package/dist/resolvers/shared/audit.d.ts +19 -0
  197. package/dist/resolvers/shared/audit.d.ts.map +1 -0
  198. package/dist/resolvers/shared/audit.js +28 -0
  199. package/dist/resolvers/shared/audit.js.map +1 -0
  200. package/dist/resolvers/shared/format.d.ts +6 -0
  201. package/dist/resolvers/shared/format.d.ts.map +1 -0
  202. package/dist/resolvers/shared/format.js +17 -0
  203. package/dist/resolvers/shared/format.js.map +1 -0
  204. package/dist/resolvers/shared/git-diff.d.ts +14 -0
  205. package/dist/resolvers/shared/git-diff.d.ts.map +1 -0
  206. package/dist/resolvers/shared/git-diff.js +30 -0
  207. package/dist/resolvers/shared/git-diff.js.map +1 -0
  208. package/dist/resolvers/shared/loop-items.d.ts +30 -0
  209. package/dist/resolvers/shared/loop-items.d.ts.map +1 -0
  210. package/dist/resolvers/shared/loop-items.js +7 -0
  211. package/dist/resolvers/shared/loop-items.js.map +1 -0
  212. package/dist/resolvers/shared/loop.d.ts +48 -0
  213. package/dist/resolvers/shared/loop.d.ts.map +1 -0
  214. package/dist/resolvers/shared/loop.js +38 -0
  215. package/dist/resolvers/shared/loop.js.map +1 -0
  216. package/dist/resolvers/shared/reality-metrics.d.ts +63 -0
  217. package/dist/resolvers/shared/reality-metrics.d.ts.map +1 -0
  218. package/dist/resolvers/shared/reality-metrics.js +6 -0
  219. package/dist/resolvers/shared/reality-metrics.js.map +1 -0
  220. package/dist/resolvers/shared/reality-tree.d.ts +51 -0
  221. package/dist/resolvers/shared/reality-tree.d.ts.map +1 -0
  222. package/dist/resolvers/shared/reality-tree.js +125 -0
  223. package/dist/resolvers/shared/reality-tree.js.map +1 -0
  224. package/dist/resolvers/shared/wiki.d.ts +60 -0
  225. package/dist/resolvers/shared/wiki.d.ts.map +1 -0
  226. package/dist/resolvers/shared/wiki.js +122 -0
  227. package/dist/resolvers/shared/wiki.js.map +1 -0
  228. package/dist/resolvers/wiki-search.d.ts +2 -0
  229. package/dist/resolvers/wiki-search.d.ts.map +1 -0
  230. package/dist/resolvers/wiki-search.js +23 -0
  231. package/dist/resolvers/wiki-search.js.map +1 -0
  232. package/dist/resolvers/wiki-topic.d.ts +2 -0
  233. package/dist/resolvers/wiki-topic.d.ts.map +1 -0
  234. package/dist/resolvers/wiki-topic.js +29 -0
  235. package/dist/resolvers/wiki-topic.js.map +1 -0
  236. package/dist/resolvers/workflow-stages.d.ts +2 -0
  237. package/dist/resolvers/workflow-stages.d.ts.map +1 -0
  238. package/dist/resolvers/workflow-stages.js +26 -0
  239. package/dist/resolvers/workflow-stages.js.map +1 -0
  240. package/dist/session-lifecycle.d.ts +2 -2
  241. package/dist/session-lifecycle.d.ts.map +1 -1
  242. package/dist/session-lifecycle.js +3 -3
  243. package/dist/session-lifecycle.js.map +1 -1
  244. package/dist/{pending-spawn-guard.d.ts → spawner/guards.d.ts} +1 -1
  245. package/dist/spawner/guards.d.ts.map +1 -0
  246. package/dist/{pending-spawn-guard.js → spawner/guards.js} +2 -2
  247. package/dist/spawner/guards.js.map +1 -0
  248. package/dist/{focus-spawn-helpers.d.ts → spawner/helpers.d.ts} +6 -6
  249. package/dist/spawner/helpers.d.ts.map +1 -0
  250. package/dist/{focus-spawn-helpers.js → spawner/helpers.js} +8 -8
  251. package/dist/spawner/helpers.js.map +1 -0
  252. package/dist/spawner/index.d.ts +30 -0
  253. package/dist/spawner/index.d.ts.map +1 -0
  254. package/dist/spawner/index.js +32 -0
  255. package/dist/spawner/index.js.map +1 -0
  256. package/dist/{spawner-lifecycle.d.ts → spawner/lifecycle.d.ts} +3 -3
  257. package/dist/spawner/lifecycle.d.ts.map +1 -0
  258. package/dist/{spawner-lifecycle.js → spawner/lifecycle.js} +6 -6
  259. package/dist/spawner/lifecycle.js.map +1 -0
  260. package/dist/{spawner-liveness.d.ts → spawner/liveness.d.ts} +2 -2
  261. package/dist/spawner/liveness.d.ts.map +1 -0
  262. package/dist/{spawner-liveness.js → spawner/liveness.js} +4 -4
  263. package/dist/spawner/liveness.js.map +1 -0
  264. package/dist/{spawner-resolution.d.ts → spawner/resolution.d.ts} +2 -2
  265. package/dist/spawner/resolution.d.ts.map +1 -0
  266. package/dist/{spawner-resolution.js → spawner/resolution.js} +2 -2
  267. package/dist/spawner/resolution.js.map +1 -0
  268. package/dist/{team-spawner.d.ts → spawner/spawn-team.d.ts} +4 -4
  269. package/dist/spawner/spawn-team.d.ts.map +1 -0
  270. package/dist/{team-spawner.js → spawner/spawn-team.js} +24 -18
  271. package/dist/spawner/spawn-team.js.map +1 -0
  272. package/dist/{spawner.d.ts → spawner/state.d.ts} +8 -8
  273. package/dist/spawner/state.d.ts.map +1 -0
  274. package/dist/{spawner.js → spawner/state.js} +8 -8
  275. package/dist/spawner/state.js.map +1 -0
  276. package/dist/{spawner-stream-handlers.d.ts → spawner/stream-handlers.d.ts} +4 -4
  277. package/dist/spawner/stream-handlers.d.ts.map +1 -0
  278. package/dist/{spawner-stream-handlers.js → spawner/stream-handlers.js} +7 -7
  279. package/dist/spawner/stream-handlers.js.map +1 -0
  280. package/dist/{spawner-timeout.d.ts → spawner/timeout.d.ts} +2 -2
  281. package/dist/spawner/timeout.d.ts.map +1 -0
  282. package/dist/{spawner-timeout.js → spawner/timeout.js} +1 -1
  283. package/dist/spawner/timeout.js.map +1 -0
  284. package/dist/team-prompt-base.d.ts.map +1 -1
  285. package/dist/team-prompt-base.js +4 -27
  286. package/dist/team-prompt-base.js.map +1 -1
  287. package/dist/telemetry-writer.d.ts +20 -1
  288. package/dist/telemetry-writer.d.ts.map +1 -1
  289. package/dist/telemetry-writer.js +121 -7
  290. package/dist/telemetry-writer.js.map +1 -1
  291. package/dist/trigger-executor.d.ts.map +1 -1
  292. package/dist/trigger-executor.js +6 -0
  293. package/dist/trigger-executor.js.map +1 -1
  294. package/dist/types/focus.d.ts +1 -1
  295. package/dist/types/focus.d.ts.map +1 -1
  296. package/dist/unified-shell.d.ts.map +1 -1
  297. package/dist/unified-shell.js +8 -0
  298. package/dist/unified-shell.js.map +1 -1
  299. package/package.json +1 -1
  300. package/dist/completion-detector.d.ts.map +0 -1
  301. package/dist/completion-detector.js.map +0 -1
  302. package/dist/completion-handler.d.ts.map +0 -1
  303. package/dist/completion-handler.js.map +0 -1
  304. package/dist/focus-completion-event.d.ts.map +0 -1
  305. package/dist/focus-completion-event.js.map +0 -1
  306. package/dist/focus-completion.d.ts.map +0 -1
  307. package/dist/focus-completion.js.map +0 -1
  308. package/dist/focus-spawn-helpers.d.ts.map +0 -1
  309. package/dist/focus-spawn-helpers.js.map +0 -1
  310. package/dist/focus-team-lifecycle.d.ts.map +0 -1
  311. package/dist/focus-team-lifecycle.js.map +0 -1
  312. package/dist/pending-spawn-guard.d.ts.map +0 -1
  313. package/dist/pending-spawn-guard.js.map +0 -1
  314. package/dist/prompt-builder.d.ts +0 -14
  315. package/dist/prompt-builder.d.ts.map +0 -1
  316. package/dist/prompt-builder.js +0 -174
  317. package/dist/prompt-builder.js.map +0 -1
  318. package/dist/spawner-lifecycle.d.ts.map +0 -1
  319. package/dist/spawner-lifecycle.js.map +0 -1
  320. package/dist/spawner-liveness.d.ts.map +0 -1
  321. package/dist/spawner-liveness.js.map +0 -1
  322. package/dist/spawner-resolution.d.ts.map +0 -1
  323. package/dist/spawner-resolution.js.map +0 -1
  324. package/dist/spawner-stream-handlers.d.ts.map +0 -1
  325. package/dist/spawner-stream-handlers.js.map +0 -1
  326. package/dist/spawner-timeout.d.ts.map +0 -1
  327. package/dist/spawner-timeout.js.map +0 -1
  328. package/dist/spawner.d.ts.map +0 -1
  329. package/dist/spawner.js.map +0 -1
  330. package/dist/team-spawner.d.ts.map +0 -1
  331. package/dist/team-spawner.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { getLatestCompletedFocusReview } from '../queries/focuses.js';
3
+ /**
4
+ * review.outcomes
5
+ *
6
+ * Thin wrapper around the most recent completed focus_review row. Surfaces
7
+ * outcome (approved / gaps_found) and the summary so the close_loop
8
+ * bookkeeper can correlate review findings with the anchored injection
9
+ * sweep. Fails soft -- returns empty string when no completed review
10
+ * exists yet.
11
+ */
12
+ registerSourceResolver('review.outcomes', async (context) => {
13
+ try {
14
+ const review = await getLatestCompletedFocusReview(context.focusId);
15
+ if (!review || !review.completedAt)
16
+ return '';
17
+ const outcome = review.outcome ?? 'unknown';
18
+ const summary = (review.summary ?? '').trim();
19
+ const lines = [
20
+ '## Review Outcomes',
21
+ '',
22
+ `**Outcome:** ${outcome}`,
23
+ `**Completed:** ${review.completedAt}`,
24
+ ];
25
+ if (summary.length > 0) {
26
+ lines.push('', summary);
27
+ }
28
+ else {
29
+ lines.push('', '_No summary provided._');
30
+ }
31
+ return lines.join('\n');
32
+ }
33
+ catch (err) {
34
+ console.warn(`[assembly-engine] review.outcomes: failed: ${err.message}`);
35
+ return '';
36
+ }
37
+ });
38
+ //# sourceMappingURL=review-outcomes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-outcomes.js","sourceRoot":"","sources":["../../src/resolvers/review-outcomes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;;;GAQG;AACH,sBAAsB,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;IAC5F,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;QAC5C,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAa;YACtB,oBAAoB;YACpB,EAAE;YACF,gBAAgB,OAAO,EAAE;YACzB,kBAAkB,MAAM,CAAC,WAAW,EAAE;SACvC,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,8CAA+C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=security-advisory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-advisory.d.ts","sourceRoot":"","sources":["../../src/resolvers/security-advisory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { callApi } from '../queries/shared.js';
3
+ function pickString(payload, keys) {
4
+ for (const key of keys) {
5
+ const v = payload[key];
6
+ if (typeof v === 'string' && v.trim().length > 0)
7
+ return v.trim();
8
+ }
9
+ return null;
10
+ }
11
+ const ADVISORY_EVIDENCE_BUDGET = 500;
12
+ const SECURITY_ADVISORY_SECTION_BUDGET_CHARS = 10_000;
13
+ const SECURITY_ADVISORY_TRUNCATION_FOOTER = '\n\n_[truncated: section budget reached]_';
14
+ function formatAdvisorySection(advisory) {
15
+ const payload = advisory.payload ?? {};
16
+ const lines = [];
17
+ lines.push(`### ${advisory.identifier}`);
18
+ lines.push('');
19
+ lines.push(`- **IOC class:** ${advisory.iocClass}`);
20
+ lines.push(`- **Severity:** ${advisory.severity}`);
21
+ const pkg = pickString(payload, ['package', 'affected_package']);
22
+ if (pkg) {
23
+ const currentVersion = pickString(payload, ['current_version', 'installed_version']);
24
+ lines.push(`- **Package:** ${pkg}${currentVersion ? ` @ ${currentVersion}` : ''}`);
25
+ }
26
+ const fixVersion = pickString(payload, ['fix_version', 'fixed_version', 'patched_version']);
27
+ if (fixVersion)
28
+ lines.push(`- **Fix version:** ${fixVersion}`);
29
+ const advisoryUrl = pickString(payload, ['advisory_url', 'url', 'reference']);
30
+ if (advisoryUrl)
31
+ lines.push(`- **Advisory:** ${advisoryUrl}`);
32
+ const exploitClass = pickString(payload, ['exploit_class', 'cwe', 'vulnerability_class']);
33
+ if (exploitClass)
34
+ lines.push(`- **Exploit class:** ${exploitClass}`);
35
+ if (advisory.firstSeenAt)
36
+ lines.push(`- **First seen:** ${advisory.firstSeenAt}`);
37
+ if (advisory.injectionStatement) {
38
+ lines.push('');
39
+ lines.push(`**Injection statement:** ${advisory.injectionStatement}`);
40
+ }
41
+ if (advisory.injectionEvidence) {
42
+ const ev = advisory.injectionEvidence.length > ADVISORY_EVIDENCE_BUDGET
43
+ ? `${advisory.injectionEvidence.slice(0, ADVISORY_EVIDENCE_BUDGET)}...`
44
+ : advisory.injectionEvidence;
45
+ lines.push('');
46
+ lines.push(`**Evidence:** ${ev}`);
47
+ }
48
+ return lines.join('\n');
49
+ }
50
+ registerSourceResolver('security.advisory', async (context) => {
51
+ if (context.deliveryIds.length === 0)
52
+ return '';
53
+ const header = '## Security Advisory\n\n';
54
+ // Reserve the footer length so that even the worst-case truncated output
55
+ // (header + body filled to sectionsBudget + footer) stays within the 10k cap.
56
+ const sectionsBudget = SECURITY_ADVISORY_SECTION_BUDGET_CHARS - header.length - SECURITY_ADVISORY_TRUNCATION_FOOTER.length;
57
+ const sections = [];
58
+ let used = 0;
59
+ let truncated = false;
60
+ for (const deliveryId of context.deliveryIds) {
61
+ if (used >= sectionsBudget) {
62
+ truncated = true;
63
+ break;
64
+ }
65
+ try {
66
+ const result = await callApi('daemon_get_security_advisory_for_delivery', { deliveryId });
67
+ const advisories = result.advisories ?? [];
68
+ if (advisories.length === 0)
69
+ continue;
70
+ let hitBudget = false;
71
+ for (const adv of advisories) {
72
+ const formatted = formatAdvisorySection(adv);
73
+ // Account for the inter-section separator that will be inserted.
74
+ const separator = sections.length > 0 ? 2 : 0;
75
+ if (used + separator + formatted.length > sectionsBudget) {
76
+ truncated = true;
77
+ hitBudget = true;
78
+ break;
79
+ }
80
+ sections.push(formatted);
81
+ used += separator + formatted.length;
82
+ }
83
+ if (hitBudget)
84
+ break;
85
+ }
86
+ catch (err) {
87
+ console.warn(`[assembly-engine] security.advisory for delivery ${deliveryId} failed: ${err.message}`);
88
+ }
89
+ }
90
+ if (sections.length === 0)
91
+ return '';
92
+ const body = sections.join('\n\n');
93
+ return truncated
94
+ ? `${header}${body}${SECURITY_ADVISORY_TRUNCATION_FOOTER}`
95
+ : `${header}${body}`;
96
+ });
97
+ //# sourceMappingURL=security-advisory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-advisory.js","sourceRoot":"","sources":["../../src/resolvers/security-advisory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Audit-cycle window helper shared across resolvers that scope output to the
3
+ * current audit cycle (delivery.listing scope=done_since_last_audit,
4
+ * retired_injections, agent_escalations).
5
+ *
6
+ * The cycle window is "since the previous audit_runs.completed_at" -- the
7
+ * resolvers lookup that lower bound via daemon_get_recent_audit_run_for_focus.
8
+ * If no prior audit exists or the lookup fails, the resolvers fall back
9
+ * to "all since focus start" (no lower bound).
10
+ */
11
+ /**
12
+ * Best-effort cycle window. Returns the previous cycle's completed_at as
13
+ * the lower bound for "things that happened in the current cycle". Null
14
+ * means "no prior cycle, include everything since focus start". Failures
15
+ * fall back to null so a missing audit_runs table or transient API error
16
+ * does not blank out the resolver output.
17
+ */
18
+ export declare function getAuditCycleLowerBound(focusId: string): Promise<string | null>;
19
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/resolvers/shared/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUrF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Audit-cycle window helper shared across resolvers that scope output to the
3
+ * current audit cycle (delivery.listing scope=done_since_last_audit,
4
+ * retired_injections, agent_escalations).
5
+ *
6
+ * The cycle window is "since the previous audit_runs.completed_at" -- the
7
+ * resolvers lookup that lower bound via daemon_get_recent_audit_run_for_focus.
8
+ * If no prior audit exists or the lookup fails, the resolvers fall back
9
+ * to "all since focus start" (no lower bound).
10
+ */
11
+ import { callApi } from '../../queries/shared.js';
12
+ /**
13
+ * Best-effort cycle window. Returns the previous cycle's completed_at as
14
+ * the lower bound for "things that happened in the current cycle". Null
15
+ * means "no prior cycle, include everything since focus start". Failures
16
+ * fall back to null so a missing audit_runs table or transient API error
17
+ * does not blank out the resolver output.
18
+ */
19
+ export async function getAuditCycleLowerBound(focusId) {
20
+ try {
21
+ const result = await callApi('daemon_get_recent_audit_run_for_focus', { focusId });
22
+ return result.auditRun?.completedAt ?? null;
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
28
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/resolvers/shared/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AASlD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAe;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,uCAAuC,EACvC,EAAE,OAAO,EAAE,CACZ,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Small formatting helpers shared across resolvers.
3
+ */
4
+ /** Format an issue status as a checkbox marker. */
5
+ export declare function statusCheckbox(status: string): string;
6
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/resolvers/shared/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOrD"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Small formatting helpers shared across resolvers.
3
+ */
4
+ /** Format an issue status as a checkbox marker. */
5
+ export function statusCheckbox(status) {
6
+ const lower = status.toLowerCase();
7
+ if (lower === 'done')
8
+ return '[x]';
9
+ if (lower === 'verified')
10
+ return '[v]';
11
+ if (lower === 'in review')
12
+ return '[?]';
13
+ if (lower === 'in progress')
14
+ return '[-]';
15
+ return '[ ]';
16
+ }
17
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/resolvers/shared/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mDAAmD;AACnD,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Git diff helpers shared across resolvers.
3
+ */
4
+ export declare const MAX_DIFF_BYTES: number;
5
+ /**
6
+ * Run git diff in a worktree against the base branch.
7
+ * Returns the raw diff output, or empty string on failure.
8
+ */
9
+ export declare function getGitDiff(worktreePath: string, baseBranch: string): string;
10
+ /**
11
+ * Get a summary of files changed in a diff (for truncation header).
12
+ */
13
+ export declare function getDiffStatSummary(worktreePath: string, baseBranch: string): string;
14
+ //# sourceMappingURL=git-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../../../src/resolvers/shared/git-diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,cAAc,QAAY,CAAC;AAExC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAU3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CASnF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Git diff helpers shared across resolvers.
3
+ */
4
+ import { execSync } from 'node:child_process';
5
+ export const MAX_DIFF_BYTES = 50 * 1024; // 50 KB truncation limit for git diffs
6
+ /**
7
+ * Run git diff in a worktree against the base branch.
8
+ * Returns the raw diff output, or empty string on failure.
9
+ */
10
+ export function getGitDiff(worktreePath, baseBranch) {
11
+ try {
12
+ const diff = execSync(`git diff ${baseBranch}...HEAD`, { cwd: worktreePath, maxBuffer: 10 * 1024 * 1024, encoding: 'utf-8' });
13
+ return diff;
14
+ }
15
+ catch {
16
+ return '';
17
+ }
18
+ }
19
+ /**
20
+ * Get a summary of files changed in a diff (for truncation header).
21
+ */
22
+ export function getDiffStatSummary(worktreePath, baseBranch) {
23
+ try {
24
+ return execSync(`git diff --stat ${baseBranch}...HEAD`, { cwd: worktreePath, maxBuffer: 1024 * 1024, encoding: 'utf-8' });
25
+ }
26
+ catch {
27
+ return '';
28
+ }
29
+ }
30
+ //# sourceMappingURL=git-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-diff.js","sourceRoot":"","sources":["../../../src/resolvers/shared/git-diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,uCAAuC;AAEhF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,YAAoB,EAAE,UAAkB;IACjE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CACnB,YAAY,UAAU,SAAS,EAC/B,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAoB,EAAE,UAAkB;IACzE,IAAI,CAAC;QACH,OAAO,QAAQ,CACb,mBAAmB,UAAU,SAAS,EACtC,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CACjE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * loop_* list-item response types shared by the loop document / question /
3
+ * persona / context resolvers (loop.documents, loop.questions, loop.persona,
4
+ * loop.context).
5
+ */
6
+ export interface LoopDocumentItem {
7
+ id: string;
8
+ title: string;
9
+ content: string;
10
+ sortOrder: number;
11
+ }
12
+ export interface LoopQuestionItem {
13
+ id: string;
14
+ text: string;
15
+ questionType: string;
16
+ sortOrder: number | null;
17
+ isRetired: boolean;
18
+ }
19
+ export interface LoopAnswerResult {
20
+ answer: {
21
+ content: string;
22
+ } | null;
23
+ }
24
+ export interface LoopPersonaResult {
25
+ persona: {
26
+ content: string;
27
+ proposedContent: string | null;
28
+ } | null;
29
+ }
30
+ //# sourceMappingURL=loop-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-items.d.ts","sourceRoot":"","sources":["../../../src/resolvers/shared/loop-items.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACrE"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * loop_* list-item response types shared by the loop document / question /
3
+ * persona / context resolvers (loop.documents, loop.questions, loop.persona,
4
+ * loop.context).
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=loop-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-items.js","sourceRoot":"","sources":["../../../src/resolvers/shared/loop-items.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Per-delivery injection-bundle helpers shared across the loop.* resolvers
3
+ * (loop.injection, loop.frt_statement, loop.expected_effects,
4
+ * loop.upstream_udes, loop.delivery_index) and focus.anchoring_injections.
5
+ */
6
+ import type { AssemblyContext } from '../../assembly-engine.js';
7
+ /** Maximum BFS depth for upstream UDE walk in loop.upstream_udes. */
8
+ export declare const MAX_UPSTREAM_DEPTH = 3;
9
+ export interface InjectionContextItemBundle {
10
+ injection: {
11
+ id: string;
12
+ statement: string;
13
+ nodeType: string;
14
+ injectionStatus: string | null;
15
+ frtStatement: string | null;
16
+ frtNodeType: string | null;
17
+ dissolvesObstacle: string | null;
18
+ realityTreeId: string;
19
+ seq: number;
20
+ };
21
+ treeName: string;
22
+ treeId: string;
23
+ /**
24
+ * One-line Now->Target per targeted UDE (from the focus coordination map
25
+ * work): the UDE's current statement and the desired effect it becomes.
26
+ * reality_tree_injection_context populates this.
27
+ */
28
+ nowTargets?: {
29
+ seq: number;
30
+ now: string;
31
+ target: string | null;
32
+ }[];
33
+ }
34
+ /**
35
+ * Walk context.deliveryIds, return [deliveryId, injectionId] pairs for those
36
+ * with non-empty injection links. Empty array on lookup failure.
37
+ */
38
+ export declare function getDeliveryInjectionPairs(context: AssemblyContext): Promise<Array<{
39
+ deliveryId: string;
40
+ deliveryName: string;
41
+ injectionId: string;
42
+ }>>;
43
+ /**
44
+ * Fetch a batch of injection nodes by their IDs via reality_tree_injection_context.
45
+ * Returns a Map keyed by injection node id.
46
+ */
47
+ export declare function fetchInjectionBundles(injectionIds: string[]): Promise<Map<string, InjectionContextItemBundle>>;
48
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/resolvers/shared/loop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIhE,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,aAAa,EAAE,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CACpE;AAOD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAOnF;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAUlD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Per-delivery injection-bundle helpers shared across the loop.* resolvers
3
+ * (loop.injection, loop.frt_statement, loop.expected_effects,
4
+ * loop.upstream_udes, loop.delivery_index) and focus.anchoring_injections.
5
+ */
6
+ import { getFocusDeliveries } from '../../queries/focuses.js';
7
+ import { callApi } from '../../queries/shared.js';
8
+ /** Maximum BFS depth for upstream UDE walk in loop.upstream_udes. */
9
+ export const MAX_UPSTREAM_DEPTH = 3;
10
+ /**
11
+ * Walk context.deliveryIds, return [deliveryId, injectionId] pairs for those
12
+ * with non-empty injection links. Empty array on lookup failure.
13
+ */
14
+ export async function getDeliveryInjectionPairs(context) {
15
+ const deliveries = await getFocusDeliveries(context.focusId);
16
+ const wantedIds = new Set(context.deliveryIds);
17
+ return deliveries
18
+ .filter((d) => wantedIds.has(d.id))
19
+ .filter((d) => typeof d.injectionId === 'string' && d.injectionId.length > 0)
20
+ .map((d) => ({ deliveryId: d.id, deliveryName: d.name, injectionId: d.injectionId }));
21
+ }
22
+ /**
23
+ * Fetch a batch of injection nodes by their IDs via reality_tree_injection_context.
24
+ * Returns a Map keyed by injection node id.
25
+ */
26
+ export async function fetchInjectionBundles(injectionIds) {
27
+ const out = new Map();
28
+ if (injectionIds.length === 0)
29
+ return out;
30
+ const resp = await callApi('reality_tree_injection_context', {
31
+ nodeIds: injectionIds,
32
+ });
33
+ for (const item of resp.items ?? []) {
34
+ out.set(item.injection.id, item);
35
+ }
36
+ return out;
37
+ }
38
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/resolvers/shared/loop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AA6BpC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAwB;IAExB,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,UAAU;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAqB,EAAE,CAAC,CAAC,CAAC;AACpG,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,YAAsB;IAEtB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsC,CAAC;IAC1D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAiC,gCAAgC,EAAE;QAC3F,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * reality_metrics_focus response types shared by reality.metrics and
3
+ * reality.projections.
4
+ */
5
+ export interface RealityMetrics {
6
+ total_deliveries: number;
7
+ deliveries_planning: number;
8
+ deliveries_queued: number;
9
+ deliveries_coding: number;
10
+ deliveries_verify: number;
11
+ deliveries_done: number;
12
+ total_issues: number;
13
+ issues_todo: number;
14
+ issues_in_progress: number;
15
+ issues_done: number;
16
+ issues_blocked: number;
17
+ issues_done_7d: number;
18
+ issues_done_14d: number;
19
+ issues_done_30d: number;
20
+ avg_cycle_time_days: number | null;
21
+ blocked_count: number;
22
+ avg_blocked_duration_days: number | null;
23
+ session_count: number;
24
+ total_agent_cost: number;
25
+ total_agent_duration_seconds: number;
26
+ escalation_count: number;
27
+ last_session_at: string | null;
28
+ merge_count?: number;
29
+ merges_7d?: number;
30
+ merges_30d?: number;
31
+ last_merge_at?: string | null;
32
+ }
33
+ export interface CompletionProjection {
34
+ status: string;
35
+ remainingIssues: number;
36
+ velocity: number | null;
37
+ projectedCompletionDate: string | null;
38
+ daysRemaining: number | null;
39
+ confidence: number | null;
40
+ stalledReason?: string;
41
+ windowDays?: number;
42
+ completedInWindow?: number;
43
+ }
44
+ export interface CostProjection {
45
+ status: string;
46
+ costToDate: number;
47
+ burnRatePerDay: number;
48
+ avgCostPerIssue: number | null;
49
+ remainingIssues: number;
50
+ completedIssues?: number;
51
+ projectedRemainingCost: number | null;
52
+ projectedTotalCost: number | null;
53
+ windowDays?: number;
54
+ }
55
+ export interface RealityApiResponse {
56
+ focusId: string;
57
+ metrics: RealityMetrics | null;
58
+ projections: {
59
+ completion: CompletionProjection | null;
60
+ cost: CostProjection | null;
61
+ };
62
+ }
63
+ //# sourceMappingURL=reality-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reality-metrics.d.ts","sourceRoot":"","sources":["../../../src/resolvers/shared/reality-metrics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,4BAA4B,EAAE,MAAM,CAAC;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE;QACX,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;QACxC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;KAC7B,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * reality_metrics_focus response types shared by reality.metrics and
3
+ * reality.projections.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=reality-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reality-metrics.js","sourceRoot":"","sources":["../../../src/resolvers/shared/reality-metrics.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Reality-tree row types and dump rendering shared across resolvers
3
+ * (focus.reality_tree, reality_tree.snapshot, focus.anchoring_injections,
4
+ * loop.expected_effects, loop.upstream_udes, retired_injections) and external
5
+ * consumers (ai-inspection-context, verify-restatement, queries/reality-tree).
6
+ */
7
+ export interface RealityTreeRow {
8
+ id: string;
9
+ name: string;
10
+ description: string | null;
11
+ focusId: string;
12
+ status: 'active' | 'archived';
13
+ }
14
+ export interface RealityTreeListResponse {
15
+ items: RealityTreeRow[];
16
+ totalCount: number;
17
+ }
18
+ export interface RealityNodeRow {
19
+ id: string;
20
+ realityTreeId: string;
21
+ seq: number;
22
+ statement: string;
23
+ nodeType: 'entity' | 'undesired_effect' | 'desired_effect' | 'injection';
24
+ frtStatement: string | null;
25
+ frtNodeType: string | null;
26
+ viewScope: 'both' | 'crt_only' | 'frt_only';
27
+ status: 'active' | 'retired';
28
+ injectionStatus: 'proposed' | 'in_progress' | 'realized' | 'verified' | null;
29
+ dissolvesObstacle: string | null;
30
+ enablesNodeId: string | null;
31
+ evidence: string | null;
32
+ }
33
+ export interface RealityEdgeRow {
34
+ id: string;
35
+ realityTreeId: string;
36
+ fromNodeId: string;
37
+ toNodeId: string;
38
+ edgeType: 'sufficient' | 'and' | 'derived_from' | 'targets';
39
+ }
40
+ export interface NodeListResponse {
41
+ items: RealityNodeRow[];
42
+ totalCount: number;
43
+ }
44
+ export interface EdgeListResponse {
45
+ items: RealityEdgeRow[];
46
+ totalCount: number;
47
+ }
48
+ export declare const CRT_DUMP_BUDGET_CHARS = 10000;
49
+ export declare function renderRealityTreeDump(tree: RealityTreeRow, nodes: RealityNodeRow[], edges: RealityEdgeRow[], budgetChars: number): string;
50
+ export declare const FOCUS_REALITY_TREE_EMPTY_STATE: string;
51
+ //# sourceMappingURL=reality-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reality-tree.d.ts","sourceRoot":"","sources":["../../../src/resolvers/shared/reality-tree.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,WAAW,CAAC;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,eAAe,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7E,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,GAAG,KAAK,GAAG,cAAc,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,gBAAgB;IAAG,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AACjF,MAAM,WAAW,gBAAgB;IAAG,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAEjF,eAAO,MAAM,qBAAqB,QAAS,CAAC;AA2D5C,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,cAAc,EAAE,EACvB,KAAK,EAAE,cAAc,EAAE,EACvB,WAAW,EAAE,MAAM,GAClB,MAAM,CAsER;AAED,eAAO,MAAM,8BAA8B,QAG0C,CAAC"}