@telora/daemon 0.16.33 → 0.16.44

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 (345) hide show
  1. package/build-info.json +2 -2
  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/{completion-handler.d.ts → completion/agent-completion.d.ts} +3 -3
  11. package/dist/completion/agent-completion.d.ts.map +1 -0
  12. package/dist/{completion-handler.js → completion/agent-completion.js} +7 -7
  13. package/dist/completion/agent-completion.js.map +1 -0
  14. package/dist/{completion-detector.d.ts → completion/detector.d.ts} +1 -1
  15. package/dist/completion/detector.d.ts.map +1 -0
  16. package/dist/{completion-detector.js → completion/detector.js} +1 -1
  17. package/dist/completion/detector.js.map +1 -0
  18. package/dist/{focus-completion-event.d.ts → completion/event.d.ts} +21 -3
  19. package/dist/completion/event.d.ts.map +1 -0
  20. package/dist/{focus-completion-event.js → completion/event.js} +55 -9
  21. package/dist/completion/event.js.map +1 -0
  22. package/dist/completion/index.d.ts +24 -0
  23. package/dist/completion/index.d.ts.map +1 -0
  24. package/dist/completion/index.js +25 -0
  25. package/dist/completion/index.js.map +1 -0
  26. package/dist/{focus-completion.d.ts → completion/team-completion.d.ts} +11 -11
  27. package/dist/completion/team-completion.d.ts.map +1 -0
  28. package/dist/{focus-completion.js → completion/team-completion.js} +37 -26
  29. package/dist/completion/team-completion.js.map +1 -0
  30. package/dist/{focus-team-lifecycle.d.ts → completion/team-lifecycle.d.ts} +2 -2
  31. package/dist/completion/team-lifecycle.d.ts.map +1 -0
  32. package/dist/{focus-team-lifecycle.js → completion/team-lifecycle.js} +12 -12
  33. package/dist/completion/team-lifecycle.js.map +1 -0
  34. package/dist/directive/directive-queue.d.ts +117 -0
  35. package/dist/directive/directive-queue.d.ts.map +1 -0
  36. package/dist/directive/directive-queue.js +114 -0
  37. package/dist/directive/directive-queue.js.map +1 -0
  38. package/dist/directive/stage-tracker.d.ts +23 -0
  39. package/dist/directive/stage-tracker.d.ts.map +1 -0
  40. package/dist/directive/stage-tracker.js +27 -0
  41. package/dist/directive/stage-tracker.js.map +1 -0
  42. package/dist/directive-executor.d.ts +3 -72
  43. package/dist/directive-executor.d.ts.map +1 -1
  44. package/dist/directive-executor.js +31 -83
  45. package/dist/directive-executor.js.map +1 -1
  46. package/dist/focus-engine.d.ts.map +1 -1
  47. package/dist/focus-engine.js +1 -2
  48. package/dist/focus-engine.js.map +1 -1
  49. package/dist/focus-executor.d.ts +4 -4
  50. package/dist/focus-executor.d.ts.map +1 -1
  51. package/dist/focus-executor.js +6 -5
  52. package/dist/focus-executor.js.map +1 -1
  53. package/dist/focus-merge.js +1 -1
  54. package/dist/focus-merge.js.map +1 -1
  55. package/dist/focus-prompt-builder.d.ts.map +1 -1
  56. package/dist/focus-prompt-builder.js +5 -39
  57. package/dist/focus-prompt-builder.js.map +1 -1
  58. package/dist/listener.js +1 -1
  59. package/dist/listener.js.map +1 -1
  60. package/dist/output-monitor.d.ts +1 -1
  61. package/dist/output-monitor.d.ts.map +1 -1
  62. package/dist/output-monitor.js +1 -1
  63. package/dist/output-monitor.js.map +1 -1
  64. package/dist/prompt-listing.d.ts +26 -0
  65. package/dist/prompt-listing.d.ts.map +1 -0
  66. package/dist/prompt-listing.js +55 -0
  67. package/dist/prompt-listing.js.map +1 -0
  68. package/dist/prompt-sections/context-sections.d.ts +32 -0
  69. package/dist/prompt-sections/context-sections.d.ts.map +1 -0
  70. package/dist/prompt-sections/context-sections.js +86 -0
  71. package/dist/prompt-sections/context-sections.js.map +1 -0
  72. package/dist/prompt-sections/execution-sections.d.ts +82 -0
  73. package/dist/prompt-sections/execution-sections.d.ts.map +1 -0
  74. package/dist/prompt-sections/execution-sections.js +601 -0
  75. package/dist/prompt-sections/execution-sections.js.map +1 -0
  76. package/dist/prompt-sections/persona-sections.d.ts +133 -0
  77. package/dist/prompt-sections/persona-sections.d.ts.map +1 -0
  78. package/dist/prompt-sections/persona-sections.js +317 -0
  79. package/dist/prompt-sections/persona-sections.js.map +1 -0
  80. package/dist/prompt-sections/role-sections.d.ts +24 -0
  81. package/dist/prompt-sections/role-sections.d.ts.map +1 -0
  82. package/dist/prompt-sections/role-sections.js +78 -0
  83. package/dist/prompt-sections/role-sections.js.map +1 -0
  84. package/dist/prompt-sections/shared.d.ts +66 -0
  85. package/dist/prompt-sections/shared.d.ts.map +1 -0
  86. package/dist/prompt-sections/shared.js +33 -0
  87. package/dist/prompt-sections/shared.js.map +1 -0
  88. package/dist/queries/index.d.ts +13 -0
  89. package/dist/queries/index.d.ts.map +1 -1
  90. package/dist/queries/index.js +9 -0
  91. package/dist/queries/index.js.map +1 -1
  92. package/dist/resolvers/agent-escalations.d.ts +2 -0
  93. package/dist/resolvers/agent-escalations.d.ts.map +1 -0
  94. package/dist/resolvers/agent-escalations.js +33 -0
  95. package/dist/resolvers/agent-escalations.js.map +1 -0
  96. package/dist/resolvers/agent-session-summaries.d.ts +2 -0
  97. package/dist/resolvers/agent-session-summaries.d.ts.map +1 -0
  98. package/dist/resolvers/agent-session-summaries.js +28 -0
  99. package/dist/resolvers/agent-session-summaries.js.map +1 -0
  100. package/dist/resolvers/delivery-acceptance-criteria.d.ts +2 -0
  101. package/dist/resolvers/delivery-acceptance-criteria.d.ts.map +1 -0
  102. package/dist/resolvers/delivery-acceptance-criteria.js +19 -0
  103. package/dist/resolvers/delivery-acceptance-criteria.js.map +1 -0
  104. package/dist/resolvers/delivery-description.d.ts +2 -0
  105. package/dist/resolvers/delivery-description.d.ts.map +1 -0
  106. package/dist/resolvers/delivery-description.js +19 -0
  107. package/dist/resolvers/delivery-description.js.map +1 -0
  108. package/dist/resolvers/delivery-issues.d.ts +2 -0
  109. package/dist/resolvers/delivery-issues.d.ts.map +1 -0
  110. package/dist/resolvers/delivery-issues.js +58 -0
  111. package/dist/resolvers/delivery-issues.js.map +1 -0
  112. package/dist/resolvers/delivery-listing.d.ts +2 -0
  113. package/dist/resolvers/delivery-listing.d.ts.map +1 -0
  114. package/dist/resolvers/delivery-listing.js +54 -0
  115. package/dist/resolvers/delivery-listing.js.map +1 -0
  116. package/dist/resolvers/delivery-tech-context.d.ts +2 -0
  117. package/dist/resolvers/delivery-tech-context.d.ts.map +1 -0
  118. package/dist/resolvers/delivery-tech-context.js +19 -0
  119. package/dist/resolvers/delivery-tech-context.js.map +1 -0
  120. package/dist/resolvers/deployment-profile.d.ts +2 -0
  121. package/dist/resolvers/deployment-profile.d.ts.map +1 -0
  122. package/dist/resolvers/deployment-profile.js +28 -0
  123. package/dist/resolvers/deployment-profile.js.map +1 -0
  124. package/dist/resolvers/focus-anchoring-injections.d.ts +2 -0
  125. package/dist/resolvers/focus-anchoring-injections.d.ts.map +1 -0
  126. package/dist/resolvers/focus-anchoring-injections.js +123 -0
  127. package/dist/resolvers/focus-anchoring-injections.js.map +1 -0
  128. package/dist/resolvers/focus-context.d.ts +2 -0
  129. package/dist/resolvers/focus-context.d.ts.map +1 -0
  130. package/dist/resolvers/focus-context.js +47 -0
  131. package/dist/resolvers/focus-context.js.map +1 -0
  132. package/dist/resolvers/focus-injections.d.ts +2 -0
  133. package/dist/resolvers/focus-injections.d.ts.map +1 -0
  134. package/dist/resolvers/focus-injections.js +75 -0
  135. package/dist/resolvers/focus-injections.js.map +1 -0
  136. package/dist/resolvers/focus-last-review-report.d.ts +2 -0
  137. package/dist/resolvers/focus-last-review-report.d.ts.map +1 -0
  138. package/dist/resolvers/focus-last-review-report.js +46 -0
  139. package/dist/resolvers/focus-last-review-report.js.map +1 -0
  140. package/dist/resolvers/focus-reality-tree.d.ts +2 -0
  141. package/dist/resolvers/focus-reality-tree.d.ts.map +1 -0
  142. package/dist/resolvers/focus-reality-tree.js +50 -0
  143. package/dist/resolvers/focus-reality-tree.js.map +1 -0
  144. package/dist/resolvers/git-diff-against-base.d.ts +2 -0
  145. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -0
  146. package/dist/resolvers/git-diff-against-base.js +39 -0
  147. package/dist/resolvers/git-diff-against-base.js.map +1 -0
  148. package/dist/resolvers/guards-evaluation-results.d.ts +2 -0
  149. package/dist/resolvers/guards-evaluation-results.d.ts.map +1 -0
  150. package/dist/resolvers/guards-evaluation-results.js +31 -0
  151. package/dist/resolvers/guards-evaluation-results.js.map +1 -0
  152. package/dist/resolvers/index.d.ts +50 -0
  153. package/dist/resolvers/index.d.ts.map +1 -0
  154. package/dist/resolvers/index.js +51 -0
  155. package/dist/resolvers/index.js.map +1 -0
  156. package/dist/resolvers/loop-context.d.ts +2 -0
  157. package/dist/resolvers/loop-context.d.ts.map +1 -0
  158. package/dist/resolvers/loop-context.js +113 -0
  159. package/dist/resolvers/loop-context.js.map +1 -0
  160. package/dist/resolvers/loop-delivery-index.d.ts +2 -0
  161. package/dist/resolvers/loop-delivery-index.d.ts.map +1 -0
  162. package/dist/resolvers/loop-delivery-index.js +69 -0
  163. package/dist/resolvers/loop-delivery-index.js.map +1 -0
  164. package/dist/resolvers/loop-documents.d.ts +2 -0
  165. package/dist/resolvers/loop-documents.d.ts.map +1 -0
  166. package/dist/resolvers/loop-documents.js +30 -0
  167. package/dist/resolvers/loop-documents.js.map +1 -0
  168. package/dist/resolvers/loop-expected-effects.d.ts +2 -0
  169. package/dist/resolvers/loop-expected-effects.d.ts.map +1 -0
  170. package/dist/resolvers/loop-expected-effects.js +68 -0
  171. package/dist/resolvers/loop-expected-effects.js.map +1 -0
  172. package/dist/resolvers/loop-frt-statement.d.ts +2 -0
  173. package/dist/resolvers/loop-frt-statement.d.ts.map +1 -0
  174. package/dist/resolvers/loop-frt-statement.js +39 -0
  175. package/dist/resolvers/loop-frt-statement.js.map +1 -0
  176. package/dist/resolvers/loop-injection.d.ts +2 -0
  177. package/dist/resolvers/loop-injection.d.ts.map +1 -0
  178. package/dist/resolvers/loop-injection.js +48 -0
  179. package/dist/resolvers/loop-injection.js.map +1 -0
  180. package/dist/resolvers/loop-persona.d.ts +2 -0
  181. package/dist/resolvers/loop-persona.d.ts.map +1 -0
  182. package/dist/resolvers/loop-persona.js +40 -0
  183. package/dist/resolvers/loop-persona.js.map +1 -0
  184. package/dist/resolvers/loop-questions.d.ts +2 -0
  185. package/dist/resolvers/loop-questions.d.ts.map +1 -0
  186. package/dist/resolvers/loop-questions.js +49 -0
  187. package/dist/resolvers/loop-questions.js.map +1 -0
  188. package/dist/resolvers/loop-upstream-udes.d.ts +2 -0
  189. package/dist/resolvers/loop-upstream-udes.d.ts.map +1 -0
  190. package/dist/resolvers/loop-upstream-udes.js +88 -0
  191. package/dist/resolvers/loop-upstream-udes.js.map +1 -0
  192. package/dist/resolvers/reality-metrics.d.ts +2 -0
  193. package/dist/resolvers/reality-metrics.d.ts.map +1 -0
  194. package/dist/resolvers/reality-metrics.js +86 -0
  195. package/dist/resolvers/reality-metrics.js.map +1 -0
  196. package/dist/resolvers/reality-projections.d.ts +2 -0
  197. package/dist/resolvers/reality-projections.d.ts.map +1 -0
  198. package/dist/resolvers/reality-projections.js +44 -0
  199. package/dist/resolvers/reality-projections.js.map +1 -0
  200. package/dist/resolvers/reality-tree-snapshot.d.ts +2 -0
  201. package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -0
  202. package/dist/resolvers/reality-tree-snapshot.js +45 -0
  203. package/dist/resolvers/reality-tree-snapshot.js.map +1 -0
  204. package/dist/resolvers/retired-injections.d.ts +2 -0
  205. package/dist/resolvers/retired-injections.d.ts.map +1 -0
  206. package/dist/resolvers/retired-injections.js +83 -0
  207. package/dist/resolvers/retired-injections.js.map +1 -0
  208. package/dist/resolvers/review-outcomes.d.ts +2 -0
  209. package/dist/resolvers/review-outcomes.d.ts.map +1 -0
  210. package/dist/resolvers/review-outcomes.js +38 -0
  211. package/dist/resolvers/review-outcomes.js.map +1 -0
  212. package/dist/resolvers/security-advisory.d.ts +2 -0
  213. package/dist/resolvers/security-advisory.d.ts.map +1 -0
  214. package/dist/resolvers/security-advisory.js +97 -0
  215. package/dist/resolvers/security-advisory.js.map +1 -0
  216. package/dist/resolvers/shared/audit.d.ts +19 -0
  217. package/dist/resolvers/shared/audit.d.ts.map +1 -0
  218. package/dist/resolvers/shared/audit.js +28 -0
  219. package/dist/resolvers/shared/audit.js.map +1 -0
  220. package/dist/resolvers/shared/format.d.ts +6 -0
  221. package/dist/resolvers/shared/format.d.ts.map +1 -0
  222. package/dist/resolvers/shared/format.js +17 -0
  223. package/dist/resolvers/shared/format.js.map +1 -0
  224. package/dist/resolvers/shared/git-diff.d.ts +14 -0
  225. package/dist/resolvers/shared/git-diff.d.ts.map +1 -0
  226. package/dist/resolvers/shared/git-diff.js +30 -0
  227. package/dist/resolvers/shared/git-diff.js.map +1 -0
  228. package/dist/resolvers/shared/loop-items.d.ts +30 -0
  229. package/dist/resolvers/shared/loop-items.d.ts.map +1 -0
  230. package/dist/resolvers/shared/loop-items.js +7 -0
  231. package/dist/resolvers/shared/loop-items.js.map +1 -0
  232. package/dist/resolvers/shared/loop.d.ts +48 -0
  233. package/dist/resolvers/shared/loop.d.ts.map +1 -0
  234. package/dist/resolvers/shared/loop.js +38 -0
  235. package/dist/resolvers/shared/loop.js.map +1 -0
  236. package/dist/resolvers/shared/reality-metrics.d.ts +63 -0
  237. package/dist/resolvers/shared/reality-metrics.d.ts.map +1 -0
  238. package/dist/resolvers/shared/reality-metrics.js +6 -0
  239. package/dist/resolvers/shared/reality-metrics.js.map +1 -0
  240. package/dist/resolvers/shared/reality-tree.d.ts +51 -0
  241. package/dist/resolvers/shared/reality-tree.d.ts.map +1 -0
  242. package/dist/resolvers/shared/reality-tree.js +125 -0
  243. package/dist/resolvers/shared/reality-tree.js.map +1 -0
  244. package/dist/resolvers/shared/wiki.d.ts +60 -0
  245. package/dist/resolvers/shared/wiki.d.ts.map +1 -0
  246. package/dist/resolvers/shared/wiki.js +122 -0
  247. package/dist/resolvers/shared/wiki.js.map +1 -0
  248. package/dist/resolvers/wiki-search.d.ts +2 -0
  249. package/dist/resolvers/wiki-search.d.ts.map +1 -0
  250. package/dist/resolvers/wiki-search.js +23 -0
  251. package/dist/resolvers/wiki-search.js.map +1 -0
  252. package/dist/resolvers/wiki-topic.d.ts +2 -0
  253. package/dist/resolvers/wiki-topic.d.ts.map +1 -0
  254. package/dist/resolvers/wiki-topic.js +29 -0
  255. package/dist/resolvers/wiki-topic.js.map +1 -0
  256. package/dist/resolvers/workflow-stages.d.ts +2 -0
  257. package/dist/resolvers/workflow-stages.d.ts.map +1 -0
  258. package/dist/resolvers/workflow-stages.js +26 -0
  259. package/dist/resolvers/workflow-stages.js.map +1 -0
  260. package/dist/session-lifecycle.d.ts +2 -2
  261. package/dist/session-lifecycle.d.ts.map +1 -1
  262. package/dist/session-lifecycle.js +3 -3
  263. package/dist/session-lifecycle.js.map +1 -1
  264. package/dist/{pending-spawn-guard.d.ts → spawner/guards.d.ts} +1 -1
  265. package/dist/spawner/guards.d.ts.map +1 -0
  266. package/dist/{pending-spawn-guard.js → spawner/guards.js} +2 -2
  267. package/dist/spawner/guards.js.map +1 -0
  268. package/dist/{focus-spawn-helpers.d.ts → spawner/helpers.d.ts} +6 -6
  269. package/dist/spawner/helpers.d.ts.map +1 -0
  270. package/dist/{focus-spawn-helpers.js → spawner/helpers.js} +8 -8
  271. package/dist/spawner/helpers.js.map +1 -0
  272. package/dist/spawner/index.d.ts +30 -0
  273. package/dist/spawner/index.d.ts.map +1 -0
  274. package/dist/spawner/index.js +32 -0
  275. package/dist/spawner/index.js.map +1 -0
  276. package/dist/{spawner-lifecycle.d.ts → spawner/lifecycle.d.ts} +3 -3
  277. package/dist/spawner/lifecycle.d.ts.map +1 -0
  278. package/dist/{spawner-lifecycle.js → spawner/lifecycle.js} +6 -6
  279. package/dist/spawner/lifecycle.js.map +1 -0
  280. package/dist/{spawner-liveness.d.ts → spawner/liveness.d.ts} +2 -2
  281. package/dist/spawner/liveness.d.ts.map +1 -0
  282. package/dist/{spawner-liveness.js → spawner/liveness.js} +4 -4
  283. package/dist/spawner/liveness.js.map +1 -0
  284. package/dist/{spawner-resolution.d.ts → spawner/resolution.d.ts} +2 -2
  285. package/dist/spawner/resolution.d.ts.map +1 -0
  286. package/dist/{spawner-resolution.js → spawner/resolution.js} +2 -2
  287. package/dist/spawner/resolution.js.map +1 -0
  288. package/dist/{team-spawner.d.ts → spawner/spawn-team.d.ts} +4 -4
  289. package/dist/spawner/spawn-team.d.ts.map +1 -0
  290. package/dist/{team-spawner.js → spawner/spawn-team.js} +19 -19
  291. package/dist/spawner/spawn-team.js.map +1 -0
  292. package/dist/{spawner.d.ts → spawner/state.d.ts} +8 -8
  293. package/dist/spawner/state.d.ts.map +1 -0
  294. package/dist/{spawner.js → spawner/state.js} +8 -8
  295. package/dist/spawner/state.js.map +1 -0
  296. package/dist/{spawner-stream-handlers.d.ts → spawner/stream-handlers.d.ts} +4 -4
  297. package/dist/spawner/stream-handlers.d.ts.map +1 -0
  298. package/dist/{spawner-stream-handlers.js → spawner/stream-handlers.js} +7 -7
  299. package/dist/spawner/stream-handlers.js.map +1 -0
  300. package/dist/{spawner-timeout.d.ts → spawner/timeout.d.ts} +2 -2
  301. package/dist/spawner/timeout.d.ts.map +1 -0
  302. package/dist/{spawner-timeout.js → spawner/timeout.js} +1 -1
  303. package/dist/spawner/timeout.js.map +1 -0
  304. package/dist/team-prompt-base.d.ts +16 -287
  305. package/dist/team-prompt-base.d.ts.map +1 -1
  306. package/dist/team-prompt-base.js +20 -1112
  307. package/dist/team-prompt-base.js.map +1 -1
  308. package/dist/templates/claude-md.d.ts.map +1 -1
  309. package/dist/templates/claude-md.js +0 -1
  310. package/dist/templates/claude-md.js.map +1 -1
  311. package/dist/types/focus.d.ts +1 -1
  312. package/dist/types/focus.d.ts.map +1 -1
  313. package/package.json +1 -1
  314. package/dist/completion-detector.d.ts.map +0 -1
  315. package/dist/completion-detector.js.map +0 -1
  316. package/dist/completion-handler.d.ts.map +0 -1
  317. package/dist/completion-handler.js.map +0 -1
  318. package/dist/focus-completion-event.d.ts.map +0 -1
  319. package/dist/focus-completion-event.js.map +0 -1
  320. package/dist/focus-completion.d.ts.map +0 -1
  321. package/dist/focus-completion.js.map +0 -1
  322. package/dist/focus-spawn-helpers.d.ts.map +0 -1
  323. package/dist/focus-spawn-helpers.js.map +0 -1
  324. package/dist/focus-team-lifecycle.d.ts.map +0 -1
  325. package/dist/focus-team-lifecycle.js.map +0 -1
  326. package/dist/pending-spawn-guard.d.ts.map +0 -1
  327. package/dist/pending-spawn-guard.js.map +0 -1
  328. package/dist/prompt-builder.d.ts +0 -14
  329. package/dist/prompt-builder.d.ts.map +0 -1
  330. package/dist/prompt-builder.js +0 -174
  331. package/dist/prompt-builder.js.map +0 -1
  332. package/dist/spawner-lifecycle.d.ts.map +0 -1
  333. package/dist/spawner-lifecycle.js.map +0 -1
  334. package/dist/spawner-liveness.d.ts.map +0 -1
  335. package/dist/spawner-liveness.js.map +0 -1
  336. package/dist/spawner-resolution.d.ts.map +0 -1
  337. package/dist/spawner-resolution.js.map +0 -1
  338. package/dist/spawner-stream-handlers.d.ts.map +0 -1
  339. package/dist/spawner-stream-handlers.js.map +0 -1
  340. package/dist/spawner-timeout.d.ts.map +0 -1
  341. package/dist/spawner-timeout.js.map +0 -1
  342. package/dist/spawner.d.ts.map +0 -1
  343. package/dist/spawner.js.map +0 -1
  344. package/dist/team-spawner.d.ts.map +0 -1
  345. package/dist/team-spawner.js.map +0 -1
@@ -0,0 +1,47 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { getFocusDeliveries } from '../queries/focuses.js';
3
+ import { searchWiki, fetchAncestorsForHits, fetchPageBodies, renderWikiSection, WIKI_RETRIEVAL_BUDGET_CHARS, } from './shared/wiki.js';
4
+ /**
5
+ * focus.context
6
+ *
7
+ * Pulls wiki pages relevant to the focus via wiki_search. Queries are
8
+ * derived from the focus name + the first sentence of its description;
9
+ * deliveries below the focus contribute additional queries when present.
10
+ */
11
+ registerSourceResolver('focus.context', async (context) => {
12
+ const deliveries = await getFocusDeliveries(context.focusId);
13
+ const queries = [];
14
+ const seen = new Set();
15
+ const addQuery = (q) => {
16
+ const trimmed = (q ?? '').trim();
17
+ if (!trimmed || seen.has(trimmed))
18
+ return;
19
+ seen.add(trimmed);
20
+ queries.push(trimmed);
21
+ };
22
+ // Use the first delivery's name+description plus subsequent delivery
23
+ // names to seed the search. This keeps queries focused on the work in
24
+ // flight rather than dumping every delivery description.
25
+ for (const d of deliveries) {
26
+ addQuery(d.name);
27
+ }
28
+ if (queries.length === 0) {
29
+ addQuery(''); // recently-edited fallback
30
+ }
31
+ const aggregated = new Map();
32
+ for (const q of queries.slice(0, 4)) {
33
+ const hits = await searchWiki(context.productId, q, 4);
34
+ for (const hit of hits) {
35
+ const existing = aggregated.get(hit.id);
36
+ if (!existing || hit.rank > existing.rank)
37
+ aggregated.set(hit.id, hit);
38
+ }
39
+ }
40
+ const sorted = Array.from(aggregated.values()).sort((a, b) => b.rank - a.rank).slice(0, 8);
41
+ const [bodies, ancestors] = await Promise.all([
42
+ fetchPageBodies(context.productId, sorted.map((h) => h.id)),
43
+ fetchAncestorsForHits(context.productId, sorted.map((h) => h.id)),
44
+ ]);
45
+ return renderWikiSection('Wiki', sorted, bodies, WIKI_RETRIEVAL_BUDGET_CHARS, ancestors);
46
+ });
47
+ //# sourceMappingURL=focus-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-context.js","sourceRoot":"","sources":["../../src/resolvers/focus-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,2BAA2B,GAE5B,MAAM,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,sBAAsB,CAAC,eAAe,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;IAC1F,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAG,CAAC,CAA4B,EAAE,EAAE;QAChD,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,qEAAqE;IACrE,sEAAsE;IACtE,yDAAyD;IACzD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B;IAC3C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3D,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAClE,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,2BAA2B,EAAE,SAAS,CAAC,CAAC;AAC3F,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=focus-injections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-injections.d.ts","sourceRoot":"","sources":["../../src/resolvers/focus-injections.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { callApi } from '../queries/shared.js';
3
+ /**
4
+ * focus.injections
5
+ *
6
+ * Renders the focus's reality-tree structure as the LEAD COORDINATION MAP --
7
+ * the lead's planning surface. It is structure, not per-delivery detail: for
8
+ * the whole focus it shows, per injection, a one-line Now->Target (the current
9
+ * UDE and the desired effect it becomes); the dependency order to sequence
10
+ * deliveries; shared-target collisions to avoid two workers changing the same
11
+ * node; and the root-cause clusters. Per-delivery full differentials are pulled
12
+ * on demand via telora_reality_tree_injection_context(seq).
13
+ */
14
+ registerSourceResolver('focus.injections', async (context) => {
15
+ try {
16
+ const result = await callApi('reality_tree_focus_injections', {
17
+ focusId: context.focusId,
18
+ });
19
+ if (!result.items || result.items.length === 0)
20
+ return '';
21
+ const structure = result.structure ?? {
22
+ dependencyOrder: [],
23
+ sharedTargetCollisions: [],
24
+ rootCauseClusters: [],
25
+ };
26
+ const lines = [
27
+ '## Focus Coordination Map',
28
+ '',
29
+ 'The focus reality-tree structure -- your planning surface. Each injection moves a',
30
+ 'Now (a current UDE) to a Target (its future desired effect). Use the dependency',
31
+ 'order to sequence deliveries, the collisions to avoid two workers changing the same',
32
+ 'node, and the clusters to see which root causes drive which problems. Pull a',
33
+ "delivery's full differential on demand with telora_reality_tree_injection_context",
34
+ '(by injection seq).',
35
+ '',
36
+ '### Injections (Now -> Target)',
37
+ '',
38
+ ];
39
+ for (const item of result.items) {
40
+ const inj = item.injection;
41
+ const statusTag = inj.injectionStatus ? ` [${inj.injectionStatus}]` : '';
42
+ lines.push(`- #${inj.seq} ${inj.statement}${statusTag}`);
43
+ for (const nt of item.nowTargets ?? []) {
44
+ const target = nt.target && nt.target.trim().length > 0 ? nt.target : '(no FRT overlay yet)';
45
+ lines.push(` - Now: #${nt.seq} ${nt.now} -> Target: ${target}`);
46
+ }
47
+ }
48
+ if (structure.dependencyOrder.length > 0) {
49
+ lines.push('', '### Dependency Order (sequence deliveries this way)', '');
50
+ structure.dependencyOrder.forEach((d, i) => {
51
+ lines.push(`${i + 1}. #${d.seq} ${d.statement}`);
52
+ });
53
+ }
54
+ if (structure.sharedTargetCollisions.length > 0) {
55
+ lines.push('', '### Shared-Target Collisions (avoid two workers changing the same node)', '');
56
+ for (const c of structure.sharedTargetCollisions) {
57
+ const injList = c.injectionSeqs.map((s) => `#${s}`).join(', ');
58
+ lines.push(`- #${c.targetSeq} "${c.targetStatement}" <- injections ${injList}`);
59
+ }
60
+ }
61
+ if (structure.rootCauseClusters.length > 0) {
62
+ lines.push('', '### Root-Cause Clusters (which roots drive which UDEs)', '');
63
+ for (const cl of structure.rootCauseClusters) {
64
+ const udeList = cl.udeSeqs.map((s) => `#${s}`).join(', ');
65
+ lines.push(`- #${cl.rootSeq} ${cl.rootStatement} (${cl.rootNodeType}) drives UDEs: ${udeList}`);
66
+ }
67
+ }
68
+ return lines.join('\n');
69
+ }
70
+ catch (err) {
71
+ console.warn(`[assembly-engine] focus.injections: failed: ${err.message}`);
72
+ return '';
73
+ }
74
+ });
75
+ //# sourceMappingURL=focus-injections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-injections.js","sourceRoot":"","sources":["../../src/resolvers/focus-injections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=focus-last-review-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-last-review-report.d.ts","sourceRoot":"","sources":["../../src/resolvers/focus-last-review-report.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { getLatestCompletedFocusReview } from '../queries/focuses.js';
3
+ /**
4
+ * focus.last_review_report
5
+ *
6
+ * Read the most recent completed review report for the focus and render it
7
+ * as a markdown section. Returns an empty string when no completed report
8
+ * exists yet.
9
+ *
10
+ * The dev-stage assembly directive (see migration
11
+ * 20260512_*_add_last_review_report_to_dev_stage_assembly.sql) inserts this
12
+ * resolver immediately after focus.context so remediation work is informed
13
+ * by the reviewer's narrative, not just by individual issue descriptions.
14
+ */
15
+ const FOCUS_LAST_REVIEW_REPORT_BUDGET_CHARS = 10_000;
16
+ registerSourceResolver('focus.last_review_report', async (context) => {
17
+ let review;
18
+ try {
19
+ review = await getLatestCompletedFocusReview(context.focusId);
20
+ }
21
+ catch (err) {
22
+ console.warn(`[assembly-engine] focus.last_review_report failed: ${err.message}`);
23
+ return '';
24
+ }
25
+ if (!review || !review.completedAt)
26
+ return '';
27
+ const heading = '## Last Review Report';
28
+ const outcomeLine = `**Outcome:** ${review.outcome ?? 'unknown'}`;
29
+ const completedLine = `**Completed:** ${review.completedAt}`;
30
+ const fixedPrefix = `${heading}\n\n${outcomeLine}\n${completedLine}\n\n`;
31
+ const summary = (review.summary ?? '').trim();
32
+ if (!summary) {
33
+ return `${fixedPrefix}_No summary provided._`;
34
+ }
35
+ const remaining = FOCUS_LAST_REVIEW_REPORT_BUDGET_CHARS - fixedPrefix.length;
36
+ if (remaining <= 0) {
37
+ // Prefix alone exceeds the budget (unlikely with a fixed-size heading +
38
+ // outcome + ISO timestamp). Drop the summary to stay under the cap.
39
+ return fixedPrefix.trimEnd();
40
+ }
41
+ const body = summary.length > remaining
42
+ ? `${summary.slice(0, remaining)}\n\n_[truncated]_`
43
+ : summary;
44
+ return `${fixedPrefix}${body}`;
45
+ });
46
+ //# sourceMappingURL=focus-last-review-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-last-review-report.js","sourceRoot":"","sources":["../../src/resolvers/focus-last-review-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,MAAM,qCAAqC,GAAG,MAAM,CAAC;AAErD,sBAAsB,CAAC,0BAA0B,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;IACrG,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sDAAuD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAE9C,MAAM,OAAO,GAAG,uBAAuB,CAAC;IACxC,MAAM,WAAW,GAAG,gBAAgB,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;IAClE,MAAM,aAAa,GAAG,kBAAkB,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7D,MAAM,WAAW,GAAG,GAAG,OAAO,OAAO,WAAW,KAAK,aAAa,MAAM,CAAC;IAEzE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,WAAW,wBAAwB,CAAC;IAChD,CAAC;IAED,MAAM,SAAS,GAAG,qCAAqC,GAAG,WAAW,CAAC,MAAM,CAAC;IAC7E,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,wEAAwE;QACxE,oEAAoE;QACpE,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS;QACrC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,mBAAmB;QACnD,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO,GAAG,WAAW,GAAG,IAAI,EAAE,CAAC;AACjC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=focus-reality-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-reality-tree.d.ts","sourceRoot":"","sources":["../../src/resolvers/focus-reality-tree.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { callApi } from '../queries/shared.js';
3
+ import { CRT_DUMP_BUDGET_CHARS, FOCUS_REALITY_TREE_EMPTY_STATE, renderRealityTreeDump, } from './shared/reality-tree.js';
4
+ /**
5
+ * focus.reality_tree
6
+ *
7
+ * Renders the focus's reality tree(s) as markdown for static-inspection
8
+ * agents (ai_inspection verification, drift detectors). Groups nodes by
9
+ * type, lists causal edges, surfaces injection lifecycle status. Token
10
+ * budget ~10k chars; truncates with a marker if exceeded.
11
+ *
12
+ * This is the CRT dump the ai_inspection runner consumes alongside the
13
+ * injection's frt_statement and the delivery diff. It is intentionally
14
+ * verbose so the runner can reason about which CRT statements are at
15
+ * stake without re-querying.
16
+ */
17
+ registerSourceResolver('focus.reality_tree', async (context) => {
18
+ try {
19
+ const treesResp = await callApi('reality_tree_list', {
20
+ focusId: context.focusId,
21
+ });
22
+ const trees = (treesResp.items ?? []).filter((t) => t.status === 'active');
23
+ if (trees.length === 0)
24
+ return FOCUS_REALITY_TREE_EMPTY_STATE;
25
+ const sections = [];
26
+ let used = 0;
27
+ for (const tree of trees) {
28
+ if (used >= CRT_DUMP_BUDGET_CHARS)
29
+ break;
30
+ const remaining = CRT_DUMP_BUDGET_CHARS - used;
31
+ const [nodesResp, edgesResp] = await Promise.all([
32
+ callApi('reality_tree_node_list', { treeId: tree.id, status: 'active' }),
33
+ callApi('reality_tree_edge_list', { treeId: tree.id }),
34
+ ]);
35
+ const dump = renderRealityTreeDump(tree, nodesResp.items ?? [], edgesResp.items ?? [], remaining);
36
+ if (dump.length === 0)
37
+ continue;
38
+ sections.push(dump);
39
+ used += dump.length;
40
+ }
41
+ if (sections.length === 0)
42
+ return FOCUS_REALITY_TREE_EMPTY_STATE;
43
+ return `## Focus Reality Tree (CRT + FRT overlays)\n\n${sections.join('\n\n')}`;
44
+ }
45
+ catch (err) {
46
+ console.warn(`[assembly-engine] focus.reality_tree: failed: ${err.message}`);
47
+ return '';
48
+ }
49
+ });
50
+ //# sourceMappingURL=focus-reality-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-reality-tree.js","sourceRoot":"","sources":["../../src/resolvers/focus-reality-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,GAItB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,sBAAsB,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;IAC/F,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAA0B,mBAAmB,EAAE;YAC5E,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,8BAA8B,CAAC;QAE9D,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,IAAI,qBAAqB;gBAAE,MAAM;YACzC,MAAM,SAAS,GAAG,qBAAqB,GAAG,IAAI,CAAC;YAC/C,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC/C,OAAO,CAAmB,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;gBAC1F,OAAO,CAAmB,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;aACzE,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,qBAAqB,CAChC,IAAI,EACJ,SAAS,CAAC,KAAK,IAAI,EAAE,EACrB,SAAS,CAAC,KAAK,IAAI,EAAE,EACrB,SAAS,CACV,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,8BAA8B,CAAC;QACjE,OAAO,iDAAiD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAClF,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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=git-diff-against-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-diff-against-base.d.ts","sourceRoot":"","sources":["../../src/resolvers/git-diff-against-base.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { getGitDiff, getDiffStatSummary, MAX_DIFF_BYTES } from './shared/git-diff.js';
3
+ /**
4
+ * git.diff_against_base
5
+ *
6
+ * Runs git diff against the integration branch in the worktree.
7
+ * Truncates large diffs and includes a file change summary.
8
+ */
9
+ registerSourceResolver('git.diff_against_base', async (context) => {
10
+ if (!context.worktreePath) {
11
+ console.warn('[assembly-engine] git.diff_against_base: no worktree path available');
12
+ return '';
13
+ }
14
+ const baseBranch = context.config.integrationBranch;
15
+ const diff = getGitDiff(context.worktreePath, baseBranch);
16
+ if (!diff.trim())
17
+ return '';
18
+ if (diff.length > MAX_DIFF_BYTES) {
19
+ const stat = getDiffStatSummary(context.worktreePath, baseBranch);
20
+ const truncated = diff.slice(0, MAX_DIFF_BYTES);
21
+ return [
22
+ `## Git Diff (against ${baseBranch})`,
23
+ '',
24
+ `> **Truncated** -- diff is ${Math.round(diff.length / 1024)}KB, showing first ${Math.round(MAX_DIFF_BYTES / 1024)}KB.`,
25
+ '',
26
+ '### File Summary',
27
+ '',
28
+ '```',
29
+ stat.trim(),
30
+ '```',
31
+ '',
32
+ '```diff',
33
+ truncated,
34
+ '```',
35
+ ].join('\n');
36
+ }
37
+ return `## Git Diff (against ${baseBranch})\n\n\`\`\`diff\n${diff}\n\`\`\``;
38
+ });
39
+ //# sourceMappingURL=git-diff-against-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-diff-against-base.js","sourceRoot":"","sources":["../../src/resolvers/git-diff-against-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtF;;;;;GAKG;AACH,sBAAsB,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;IAClG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACpF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAE1D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAChD,OAAO;YACL,wBAAwB,UAAU,GAAG;YACrC,EAAE;YACF,8BAA8B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK;YACvH,EAAE;YACF,kBAAkB;YAClB,EAAE;YACF,KAAK;YACL,IAAI,CAAC,IAAI,EAAE;YACX,KAAK;YACL,EAAE;YACF,SAAS;YACT,SAAS;YACT,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,OAAO,wBAAwB,UAAU,oBAAoB,IAAI,UAAU,CAAC;AAC9E,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=guards-evaluation-results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards-evaluation-results.d.ts","sourceRoot":"","sources":["../../src/resolvers/guards-evaluation-results.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { getResolvedTransitionBlockForDelivery } from '../queries/guards.js';
3
+ /**
4
+ * guards.evaluation_results
5
+ *
6
+ * Fetches the most recently resolved transition block for each delivery.
7
+ */
8
+ registerSourceResolver('guards.evaluation_results', async (context) => {
9
+ if (context.deliveryIds.length === 0)
10
+ return '';
11
+ const results = [];
12
+ for (const deliveryId of context.deliveryIds) {
13
+ try {
14
+ const resolved = await getResolvedTransitionBlockForDelivery(deliveryId);
15
+ if (!resolved)
16
+ continue;
17
+ const path = resolved.block.decision_path ?? 'none';
18
+ const directive = resolved.directive_template ?? 'No directive template';
19
+ results.push(`### Delivery ${deliveryId.slice(0, 8)}\n\n` +
20
+ `- **Decision path**: ${path}\n` +
21
+ `- **Directive**: ${directive}`);
22
+ }
23
+ catch (err) {
24
+ console.warn(`[assembly-engine] guards.evaluation_results: failed for delivery ${deliveryId.slice(0, 8)}: ${err.message}`);
25
+ }
26
+ }
27
+ if (results.length === 0)
28
+ return '';
29
+ return `## Guard Evaluation Results\n\n${results.join('\n\n')}`;
30
+ });
31
+ //# sourceMappingURL=guards-evaluation-results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards-evaluation-results.js","sourceRoot":"","sources":["../../src/resolvers/guards-evaluation-results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAE7E;;;;GAIG;AACH,sBAAsB,CAAC,2BAA2B,EAAE,KAAK,EAAE,OAAwB,EAAmB,EAAE;IACtG,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,qCAAqC,CAAC,UAAU,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC;YACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,kBAAkB,IAAI,uBAAuB,CAAC;YACzE,OAAO,CAAC,IAAI,CACV,gBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;gBAC5C,wBAAwB,IAAI,IAAI;gBAChC,oBAAoB,SAAS,EAAE,CAChC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oEAAoE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACxI,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,kCAAkC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AAClE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Barrel for the Context Assembly Engine source resolvers.
3
+ *
4
+ * Each per-resolver module registers its resolver as an import-time side
5
+ * effect (a top-level registration call keyed by resolver type). Importing
6
+ * this barrel therefore registers ALL resolvers. Three source files plus many
7
+ * tests import `assembly-resolvers.js` (the thin shim that re-exports this
8
+ * barrel) purely to trigger that registration.
9
+ *
10
+ * The shared public surface (types + helpers used by external consumers) is
11
+ * re-exported here so it flows through the `assembly-resolvers.js` shim
12
+ * unchanged.
13
+ */
14
+ import './delivery-acceptance-criteria.js';
15
+ import './delivery-description.js';
16
+ import './delivery-issues.js';
17
+ import './focus-context.js';
18
+ import './focus-last-review-report.js';
19
+ import './security-advisory.js';
20
+ import './wiki-search.js';
21
+ import './wiki-topic.js';
22
+ import './git-diff-against-base.js';
23
+ import './guards-evaluation-results.js';
24
+ import './workflow-stages.js';
25
+ import './deployment-profile.js';
26
+ import './delivery-listing.js';
27
+ import './focus-injections.js';
28
+ import './review-outcomes.js';
29
+ import './focus-anchoring-injections.js';
30
+ import './reality-metrics.js';
31
+ import './reality-projections.js';
32
+ import './loop-documents.js';
33
+ import './loop-questions.js';
34
+ import './loop-persona.js';
35
+ import './loop-context.js';
36
+ import './delivery-tech-context.js';
37
+ import './focus-reality-tree.js';
38
+ import './loop-injection.js';
39
+ import './loop-frt-statement.js';
40
+ import './loop-expected-effects.js';
41
+ import './loop-upstream-udes.js';
42
+ import './loop-delivery-index.js';
43
+ import './retired-injections.js';
44
+ import './agent-session-summaries.js';
45
+ import './agent-escalations.js';
46
+ import './reality-tree-snapshot.js';
47
+ export { MAX_DIFF_BYTES, getGitDiff } from './shared/git-diff.js';
48
+ export { CRT_DUMP_BUDGET_CHARS, renderRealityTreeDump, FOCUS_REALITY_TREE_EMPTY_STATE, } from './shared/reality-tree.js';
49
+ export type { RealityTreeRow, RealityTreeListResponse, RealityNodeRow, RealityEdgeRow, NodeListResponse, EdgeListResponse, } from './shared/reality-tree.js';
50
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,mCAAmC,CAAC;AAC3C,OAAO,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,+BAA+B,CAAC;AACvC,OAAO,wBAAwB,CAAC;AAChC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,iCAAiC,CAAC;AACzC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,0BAA0B,CAAC;AAClC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,0BAA0B,CAAC;AAClC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Barrel for the Context Assembly Engine source resolvers.
3
+ *
4
+ * Each per-resolver module registers its resolver as an import-time side
5
+ * effect (a top-level registration call keyed by resolver type). Importing
6
+ * this barrel therefore registers ALL resolvers. Three source files plus many
7
+ * tests import `assembly-resolvers.js` (the thin shim that re-exports this
8
+ * barrel) purely to trigger that registration.
9
+ *
10
+ * The shared public surface (types + helpers used by external consumers) is
11
+ * re-exported here so it flows through the `assembly-resolvers.js` shim
12
+ * unchanged.
13
+ */
14
+ // ── Resolver registration (side-effect imports) ──────────────────────
15
+ import './delivery-acceptance-criteria.js';
16
+ import './delivery-description.js';
17
+ import './delivery-issues.js';
18
+ import './focus-context.js';
19
+ import './focus-last-review-report.js';
20
+ import './security-advisory.js';
21
+ import './wiki-search.js';
22
+ import './wiki-topic.js';
23
+ import './git-diff-against-base.js';
24
+ import './guards-evaluation-results.js';
25
+ import './workflow-stages.js';
26
+ import './deployment-profile.js';
27
+ import './delivery-listing.js';
28
+ import './focus-injections.js';
29
+ import './review-outcomes.js';
30
+ import './focus-anchoring-injections.js';
31
+ import './reality-metrics.js';
32
+ import './reality-projections.js';
33
+ import './loop-documents.js';
34
+ import './loop-questions.js';
35
+ import './loop-persona.js';
36
+ import './loop-context.js';
37
+ import './delivery-tech-context.js';
38
+ import './focus-reality-tree.js';
39
+ import './loop-injection.js';
40
+ import './loop-frt-statement.js';
41
+ import './loop-expected-effects.js';
42
+ import './loop-upstream-udes.js';
43
+ import './loop-delivery-index.js';
44
+ import './retired-injections.js';
45
+ import './agent-session-summaries.js';
46
+ import './agent-escalations.js';
47
+ import './reality-tree-snapshot.js';
48
+ // ── Shared public surface (re-exports for external consumers) ─────────
49
+ export { MAX_DIFF_BYTES, getGitDiff } from './shared/git-diff.js';
50
+ export { CRT_DUMP_BUDGET_CHARS, renderRealityTreeDump, FOCUS_REALITY_TREE_EMPTY_STATE, } from './shared/reality-tree.js';
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wEAAwE;AACxE,OAAO,mCAAmC,CAAC;AAC3C,OAAO,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,+BAA+B,CAAC;AACvC,OAAO,wBAAwB,CAAC;AAChC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,iCAAiC,CAAC;AACzC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,0BAA0B,CAAC;AAClC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,0BAA0B,CAAC;AAClC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AAEpC,yEAAyE;AACzE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loop-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-context.d.ts","sourceRoot":"","sources":["../../src/resolvers/loop-context.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import { registerSourceResolver } from '../assembly-engine.js';
2
+ import { callApi } from '../queries/shared.js';
3
+ /**
4
+ * Fetch loop data (persona + documents + Q&A) for a single layer.
5
+ * Returns formatted markdown sections, or empty string if no data exists.
6
+ */
7
+ async function fetchLoopLayerContext(entityType, entityId, layerLabel) {
8
+ const parts = [];
9
+ // Persona
10
+ try {
11
+ const personaResult = await callApi('loop_persona_get', {
12
+ entityType,
13
+ entityId,
14
+ });
15
+ if (personaResult.persona?.content) {
16
+ parts.push(`**Persona:** ${personaResult.persona.content}`);
17
+ }
18
+ }
19
+ catch {
20
+ // No persona -- not an error
21
+ }
22
+ // Force-ranked documents
23
+ try {
24
+ const docsResult = await callApi('loop_document_list', {
25
+ entityType,
26
+ entityId,
27
+ detail: 'full',
28
+ limit: 50,
29
+ });
30
+ if (docsResult.items?.length > 0) {
31
+ const docLines = docsResult.items.map((doc, i) => `#### ${i + 1}. ${doc.title}\n\n${doc.content}`);
32
+ parts.push(`### Documents\n\n${docLines.join('\n\n')}`);
33
+ }
34
+ }
35
+ catch {
36
+ // No documents -- not an error
37
+ }
38
+ // Questions + answers
39
+ try {
40
+ const qResult = await callApi('loop_question_list', {
41
+ entityType,
42
+ entityId,
43
+ detail: 'full',
44
+ });
45
+ if (qResult.items?.length > 0) {
46
+ const fixed = qResult.items.filter((q) => q.questionType === 'fixed');
47
+ const generated = qResult.items.filter((q) => q.questionType === 'generated');
48
+ const formatQ = async (q) => {
49
+ try {
50
+ const aResult = await callApi('loop_answer_get', { questionId: q.id });
51
+ const answer = aResult.answer?.content || '_No answer yet._';
52
+ return `**Q:** ${q.text}\n**A:** ${answer}`;
53
+ }
54
+ catch {
55
+ return `**Q:** ${q.text}\n**A:** _No answer yet._`;
56
+ }
57
+ };
58
+ const qParts = [];
59
+ if (fixed.length > 0) {
60
+ const fixedLines = await Promise.all(fixed.map(formatQ));
61
+ qParts.push(`#### Fixed Questions\n\n${fixedLines.join('\n\n')}`);
62
+ }
63
+ if (generated.length > 0) {
64
+ const genLines = await Promise.all(generated.map(formatQ));
65
+ qParts.push(`#### Agent-Generated Questions\n\n${genLines.join('\n\n')}`);
66
+ }
67
+ if (qParts.length > 0) {
68
+ parts.push(`### Questions & Answers\n\n${qParts.join('\n\n')}`);
69
+ }
70
+ }
71
+ }
72
+ catch {
73
+ // No questions -- not an error
74
+ }
75
+ if (parts.length === 0)
76
+ return '';
77
+ return `## ${layerLabel} Loop\n\n${parts.join('\n\n')}`;
78
+ }
79
+ /**
80
+ * loop.context
81
+ *
82
+ * Composite resolver that fetches persona + force-ranked documents + Q&A
83
+ * for one or more loop layers. Provides complete loop context for agent
84
+ * prompt injection.
85
+ *
86
+ * Optional param: layer
87
+ * - "product": product-level loop only
88
+ * - "focus": focus-level loop only
89
+ * - "delivery": delivery-level loop only
90
+ * - omitted: all three layers (product + focus + delivery)
91
+ *
92
+ * Loop data at focus and delivery layers is scoped to the product ID
93
+ * (layer-based architecture, not per-record).
94
+ */
95
+ registerSourceResolver('loop.context', async (context, params) => {
96
+ const layerFilter = params.layer;
97
+ const layers = [];
98
+ if (!layerFilter || layerFilter === 'product') {
99
+ layers.push({ entityType: 'product', entityId: context.productId, label: 'Product' });
100
+ }
101
+ if (!layerFilter || layerFilter === 'focus') {
102
+ layers.push({ entityType: 'focus', entityId: context.productId, label: 'Focus' });
103
+ }
104
+ if (!layerFilter || layerFilter === 'delivery') {
105
+ layers.push({ entityType: 'delivery', entityId: context.productId, label: 'Delivery' });
106
+ }
107
+ const sections = await Promise.all(layers.map(l => fetchLoopLayerContext(l.entityType, l.entityId, l.label)));
108
+ const nonEmpty = sections.filter(s => s.trim());
109
+ if (nonEmpty.length === 0)
110
+ return '';
111
+ return nonEmpty.join('\n\n');
112
+ });
113
+ //# sourceMappingURL=loop-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-context.js","sourceRoot":"","sources":["../../src/resolvers/loop-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loop-delivery-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-delivery-index.d.ts","sourceRoot":"","sources":["../../src/resolvers/loop-delivery-index.ts"],"names":[],"mappings":""}