@oscharko-dev/keiko 0.2.0-beta.3 → 0.2.0-beta.5

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 (573) hide show
  1. package/README.md +139 -1
  2. package/dist/ui/csp-hashes.json +33 -39
  3. package/dist/ui/static/404.html +1 -1
  4. package/dist/ui/static/__next.__PAGE__.txt +9 -0
  5. package/dist/ui/static/__next._full.txt +18 -0
  6. package/dist/ui/static/__next._head.txt +6 -0
  7. package/dist/ui/static/__next._index.txt +5 -0
  8. package/dist/ui/static/__next._tree.txt +2 -0
  9. package/dist/ui/static/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
  10. package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +2 -0
  11. package/dist/ui/static/_next/static/chunks/0iq1i69206cyl.js +31 -0
  12. package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +1 -0
  13. package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +1 -0
  14. package/dist/ui/static/_next/static/chunks/14mrh2-p_w84d.js +1 -0
  15. package/dist/ui/static/_next/static/chunks/1m-kvwm6_90_3.css +1 -0
  16. package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +1 -0
  17. package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +4 -0
  18. package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +1 -0
  19. package/dist/ui/static/_next/static/chunks/2ngm8iwdb1cbv.js +106 -0
  20. package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +1 -0
  21. package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +1 -0
  22. package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +1 -0
  23. package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +1 -0
  24. package/dist/ui/static/_next/static/chunks/3peubv2924kx4.js +1 -0
  25. package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +1 -0
  26. package/dist/ui/static/_next/static/hR2gBQqCDKdPdSxBqZhqv/_buildManifest.js +11 -0
  27. package/dist/ui/static/_next/static/hR2gBQqCDKdPdSxBqZhqv/_clientMiddlewareManifest.js +1 -0
  28. package/dist/ui/static/_not-found/__next._full.txt +16 -0
  29. package/dist/ui/static/_not-found/__next._head.txt +6 -0
  30. package/dist/ui/static/_not-found/__next._index.txt +5 -0
  31. package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +5 -0
  32. package/dist/ui/static/_not-found/__next._not-found.txt +5 -0
  33. package/dist/ui/static/_not-found/__next._tree.txt +2 -0
  34. package/dist/ui/static/_not-found.html +1 -0
  35. package/dist/ui/static/_not-found.txt +16 -0
  36. package/dist/ui/static/index.html +1 -1
  37. package/dist/ui/static/index.txt +16 -18
  38. package/dist/ui/static/launch/__next._full.txt +20 -0
  39. package/dist/ui/static/launch/__next._head.txt +6 -0
  40. package/dist/ui/static/launch/__next._index.txt +5 -0
  41. package/dist/ui/static/launch/__next._tree.txt +2 -0
  42. package/dist/ui/static/launch/__next.launch.__PAGE__.txt +9 -0
  43. package/dist/ui/static/launch/__next.launch.txt +5 -0
  44. package/dist/ui/static/launch.html +1 -1
  45. package/dist/ui/static/launch.txt +17 -17
  46. package/dist/ui/static/local-knowledge/__next._full.txt +20 -0
  47. package/dist/ui/static/local-knowledge/__next._head.txt +6 -0
  48. package/dist/ui/static/local-knowledge/__next._index.txt +5 -0
  49. package/dist/ui/static/local-knowledge/__next._tree.txt +2 -0
  50. package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +9 -0
  51. package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +5 -0
  52. package/dist/ui/static/local-knowledge/capsule/__next._full.txt +17 -0
  53. package/dist/ui/static/local-knowledge/capsule/__next._head.txt +6 -0
  54. package/dist/ui/static/local-knowledge/capsule/__next._index.txt +5 -0
  55. package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -0
  56. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +6 -0
  57. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +5 -0
  58. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +5 -0
  59. package/dist/ui/static/local-knowledge/capsule.html +1 -1
  60. package/dist/ui/static/local-knowledge/capsule.txt +14 -14
  61. package/dist/ui/static/local-knowledge.html +1 -1
  62. package/dist/ui/static/local-knowledge.txt +19 -16
  63. package/dist/ui/static/memoriaviva/__next._full.txt +17 -0
  64. package/dist/ui/static/memoriaviva/__next._head.txt +6 -0
  65. package/dist/ui/static/memoriaviva/__next._index.txt +5 -0
  66. package/dist/ui/static/memoriaviva/__next._tree.txt +2 -0
  67. package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +6 -0
  68. package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +5 -0
  69. package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +17 -0
  70. package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +6 -0
  71. package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +5 -0
  72. package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -0
  73. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +6 -0
  74. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +5 -0
  75. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +5 -0
  76. package/dist/ui/static/memoriaviva/consolidation.html +1 -1
  77. package/dist/ui/static/memoriaviva/consolidation.txt +15 -15
  78. package/dist/ui/static/memoriaviva/detail/__next._full.txt +17 -0
  79. package/dist/ui/static/memoriaviva/detail/__next._head.txt +6 -0
  80. package/dist/ui/static/memoriaviva/detail/__next._index.txt +5 -0
  81. package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -0
  82. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +6 -0
  83. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +5 -0
  84. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +5 -0
  85. package/dist/ui/static/memoriaviva/detail.html +1 -1
  86. package/dist/ui/static/memoriaviva/detail.txt +14 -14
  87. package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +17 -0
  88. package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +6 -0
  89. package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +5 -0
  90. package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -0
  91. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +6 -0
  92. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +5 -0
  93. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +5 -0
  94. package/dist/ui/static/memoriaviva/review-queue.html +1 -1
  95. package/dist/ui/static/memoriaviva/review-queue.txt +15 -15
  96. package/dist/ui/static/memoriaviva.html +1 -1
  97. package/dist/ui/static/memoriaviva.txt +14 -14
  98. package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
  99. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
  100. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +61 -2
  101. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.d.ts.map +1 -1
  102. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.js +65 -21
  103. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher-platforms.js +3 -3
  104. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts +3 -1
  105. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
  106. package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +73 -41
  107. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
  108. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +36 -11
  109. package/node_modules/@oscharko-dev/keiko-cli/package.json +2 -2
  110. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  111. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +20 -1
  112. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
  113. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts +1 -1
  114. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
  115. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +256 -75
  116. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +11 -0
  117. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
  118. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +6 -6
  119. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  120. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -4
  121. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts +11 -0
  122. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts.map +1 -1
  123. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.js +4 -0
  124. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts +1 -1
  125. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts.map +1 -1
  126. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.js +109 -4
  127. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts +2 -0
  128. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
  129. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.js +94 -7
  130. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts +5 -0
  131. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts.map +1 -1
  132. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +2 -0
  133. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
  134. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.d.ts.map +1 -1
  135. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.js +3 -0
  136. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +14 -0
  137. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
  138. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +53 -5
  139. package/node_modules/@oscharko-dev/keiko-contracts/package.json +2 -2
  140. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  141. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.d.ts.map +1 -1
  142. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.js +11 -3
  143. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +2 -2
  144. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  145. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts +20 -1
  146. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts.map +1 -1
  147. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.js +34 -2
  148. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
  149. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
  150. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.js +1 -1
  151. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +1 -0
  152. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
  153. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +3 -1
  154. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +17 -0
  155. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
  156. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +19 -0
  157. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +5 -1
  158. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  159. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +32 -2
  160. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  161. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +259 -40
  162. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +3 -3
  163. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
  164. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.js +1 -1
  165. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +18 -1
  166. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map +1 -1
  167. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts +3 -0
  168. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts.map +1 -1
  169. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.js +48 -5
  170. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts +33 -0
  171. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
  172. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +99 -13
  173. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts +1 -1
  174. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts.map +1 -1
  175. package/node_modules/@oscharko-dev/keiko-evidence/package.json +2 -2
  176. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  177. package/node_modules/@oscharko-dev/keiko-harness/package.json +2 -2
  178. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  179. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.d.ts.map +1 -1
  180. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.js +25 -1
  181. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts +1 -1
  182. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
  183. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +16 -0
  184. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts +3 -1
  185. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts.map +1 -1
  186. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.js +9 -5
  187. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.d.ts.map +1 -1
  188. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.js +22 -7
  189. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts +4 -1
  190. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts.map +1 -1
  191. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.js +61 -9
  192. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.d.ts.map +1 -1
  193. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.js +64 -36
  194. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts +2 -2
  195. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts.map +1 -1
  196. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.js +2 -2
  197. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts +7 -1
  198. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts.map +1 -1
  199. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.js +5 -1
  200. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts +1 -1
  201. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
  202. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +27 -4
  203. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts +0 -1
  204. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts.map +1 -1
  205. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.js +0 -1
  206. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts +5 -1
  207. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
  208. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +25 -6
  209. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.d.ts.map +1 -1
  210. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.js +2 -3
  211. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.d.ts.map +1 -1
  212. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.js +10 -1
  213. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts +4 -1
  214. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
  215. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +370 -45
  216. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts +2 -0
  217. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts.map +1 -1
  218. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.js +8 -4
  219. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts +1 -1
  220. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts.map +1 -1
  221. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.js +10 -5
  222. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
  223. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +65 -20
  224. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts +1 -0
  225. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
  226. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +79 -0
  227. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
  228. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
  229. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
  230. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.d.ts.map +1 -1
  231. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.js +4 -0
  232. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +6 -5
  233. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
  234. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +4 -4
  235. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
  236. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +71 -29
  237. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
  238. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +253 -131
  239. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts +12 -0
  240. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts.map +1 -1
  241. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.d.ts.map +1 -1
  242. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.js +9 -0
  243. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +3 -1
  244. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
  245. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +13 -1
  246. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
  247. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +86 -46
  248. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -1
  249. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
  250. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +1 -1
  251. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
  252. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +50 -22
  253. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts +21 -1
  254. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
  255. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +90 -13
  256. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.d.ts.map +1 -1
  257. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.js +3 -1
  258. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts +7 -2
  259. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts.map +1 -1
  260. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.js +7 -3
  261. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/audit-emitter.js +8 -0
  262. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.d.ts.map +1 -1
  263. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.js +17 -10
  264. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
  265. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.js +7 -0
  266. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts +4 -0
  267. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts.map +1 -1
  268. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +1 -1
  269. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
  270. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
  271. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +318 -32
  272. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts +1 -1
  273. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
  274. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +46 -16
  275. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts +14 -0
  276. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts.map +1 -1
  277. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.js +26 -1
  278. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +10 -5
  279. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
  280. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +2 -2
  281. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
  282. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
  283. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
  284. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
  285. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
  286. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +2 -2
  287. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  288. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +2 -2
  289. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  290. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -1
  291. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
  292. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +50 -0
  293. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts +3 -0
  294. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
  295. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +114 -44
  296. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts +1 -0
  297. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts.map +1 -1
  298. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.js +22 -1
  299. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.d.ts.map +1 -1
  300. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.js +18 -4
  301. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts +14 -0
  302. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts.map +1 -1
  303. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.js +14 -0
  304. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +2 -2
  305. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  306. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
  307. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +9 -2
  308. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +1 -1
  309. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +9 -1
  310. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
  311. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +9 -1
  312. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts +5 -0
  313. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
  314. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +229 -33
  315. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +62 -0
  316. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
  317. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
  318. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +24 -4
  319. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts +4 -2
  320. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
  321. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +0 -0
  322. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
  323. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +119 -5
  324. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts +2 -1
  325. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts.map +1 -1
  326. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.js +26 -11
  327. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  328. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +86 -9
  329. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
  330. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -3
  331. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  332. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +14 -12
  333. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.d.ts.map +1 -1
  334. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.js +29 -30
  335. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.d.ts.map +1 -1
  336. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.js +29 -5
  337. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.d.ts.map +1 -1
  338. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.js +29 -29
  339. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts +2 -1
  340. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts.map +1 -1
  341. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.js +40 -2
  342. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.d.ts.map +1 -1
  343. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.js +6 -2
  344. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/sourceMixPlanning.js +0 -0
  345. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts +1 -1
  346. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts.map +1 -1
  347. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.js +9 -1
  348. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +2 -2
  349. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  350. package/node_modules/@oscharko-dev/keiko-sdk/package.json +2 -2
  351. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  352. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.d.ts.map +1 -1
  353. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.js +4 -2
  354. package/node_modules/@oscharko-dev/keiko-security/package.json +2 -2
  355. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  356. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts +6 -0
  357. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts.map +1 -0
  358. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.js +12 -0
  359. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts +1 -1
  360. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
  361. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +17 -5
  362. package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.js +1 -1
  363. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +2 -0
  364. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
  365. package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +59 -9
  366. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts +1 -1
  367. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts.map +1 -1
  368. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.js +4 -3
  369. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts +18 -3
  370. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts.map +1 -1
  371. package/node_modules/@oscharko-dev/keiko-server/dist/files.js +208 -72
  372. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.d.ts.map +1 -1
  373. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.js +7 -2
  374. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts +3 -0
  375. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts.map +1 -1
  376. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.js +27 -4
  377. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
  378. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +46 -14
  379. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -1
  380. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
  381. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +651 -45
  382. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
  383. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +5 -3
  384. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts +9 -0
  385. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  386. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +197 -46
  387. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts +4 -0
  388. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
  389. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +103 -25
  390. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +7 -0
  391. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  392. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +199 -21
  393. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.d.ts.map +1 -1
  394. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.js +21 -1
  395. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -1
  396. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
  397. package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -1
  398. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +9 -6
  399. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  400. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +193 -67
  401. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
  402. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +189 -72
  403. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.d.ts.map +1 -1
  404. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.js +11 -8
  405. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.d.ts.map +1 -1
  406. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.js +1 -0
  407. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.d.ts.map +1 -1
  408. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.js +89 -30
  409. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +10 -2
  410. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
  411. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +110 -30
  412. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts +13 -4
  413. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts.map +1 -1
  414. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.js +29 -17
  415. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts +13 -3
  416. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
  417. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +54 -5
  418. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  419. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +84 -12
  420. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
  421. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +16 -8
  422. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +6 -2
  423. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  424. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +13 -1
  425. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
  426. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +15 -2
  427. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
  428. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
  429. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +2 -2
  430. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -1
  431. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  432. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +138 -19
  433. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.d.ts.map +1 -1
  434. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +38 -8
  435. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts +1 -1
  436. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts.map +1 -1
  437. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.js +1 -0
  438. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.d.ts.map +1 -1
  439. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.js +41 -9
  440. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts +1 -0
  441. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts.map +1 -1
  442. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.js +2 -0
  443. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  444. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +43 -10
  445. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  446. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +3 -1
  447. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts +5 -0
  448. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts.map +1 -0
  449. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.js +70 -0
  450. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -1
  451. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.js +6 -2
  452. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts +25 -4
  453. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts.map +1 -1
  454. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.js +72 -9
  455. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  456. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +97 -18
  457. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.d.ts.map +1 -1
  458. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.js +2 -0
  459. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +4 -1
  460. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  461. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +17 -3
  462. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
  463. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +18 -4
  464. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  465. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +8 -3
  466. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
  467. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +6 -1
  468. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts +2 -2
  469. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
  470. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +84 -8
  471. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.d.ts.map +1 -1
  472. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.js +4 -2
  473. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts +1 -1
  474. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts.map +1 -1
  475. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts +5 -1
  476. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts.map +1 -1
  477. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
  478. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.js +71 -15
  479. package/node_modules/@oscharko-dev/keiko-server/package.json +2 -2
  480. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  481. package/node_modules/@oscharko-dev/keiko-tools/package.json +2 -2
  482. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  483. package/node_modules/@oscharko-dev/keiko-verification/package.json +2 -2
  484. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  485. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts +2 -0
  486. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts.map +1 -1
  487. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.js +45 -10
  488. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts +1 -1
  489. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts.map +1 -1
  490. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.js +1 -1
  491. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.d.ts.map +1 -1
  492. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.js +68 -0
  493. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
  494. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +4 -6
  495. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts +30 -0
  496. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts.map +1 -0
  497. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.js +114 -0
  498. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  499. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +20 -7
  500. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.d.ts.map +1 -1
  501. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.js +15 -7
  502. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
  503. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +28 -4
  504. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
  505. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +51 -1
  506. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.d.ts.map +1 -1
  507. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.js +8 -3
  508. package/node_modules/@oscharko-dev/keiko-workflows/package.json +2 -2
  509. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  510. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.d.ts.map +1 -1
  511. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.js +34 -2
  512. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts +1 -0
  513. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts.map +1 -1
  514. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.js +1 -0
  515. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.d.ts.map +1 -1
  516. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.js +84 -27
  517. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.d.ts.map +1 -1
  518. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.js +19 -0
  519. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.d.ts.map +1 -1
  520. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.js +6 -3
  521. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts +1 -0
  522. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts.map +1 -1
  523. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.js +2 -2
  524. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
  525. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +72 -25
  526. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts +15 -0
  527. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -0
  528. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +107 -0
  529. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts +18 -0
  530. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -0
  531. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +42 -0
  532. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  533. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +72 -11
  534. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts +2 -0
  535. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -0
  536. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.js +15 -0
  537. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +2 -2
  538. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
  539. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +89 -75
  540. package/node_modules/@oscharko-dev/keiko-workspace/package.json +2 -2
  541. package/node_modules/@types/node/README.md +1 -1
  542. package/node_modules/@types/node/http2.d.ts +1 -0
  543. package/node_modules/@types/node/package.json +2 -2
  544. package/package.json +3 -1
  545. package/dist/ui/static/_next/static/RAzN8WLtYaktD-ZePowXl/_buildManifest.js +0 -1
  546. package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.js +0 -1
  547. package/dist/ui/static/_next/static/chunks/258-e3b5ee46b0669967.js +0 -1
  548. package/dist/ui/static/_next/static/chunks/422-4c94c107b90d3ccc.js +0 -1
  549. package/dist/ui/static/_next/static/chunks/664-6d821dc1aacb6b48.js +0 -1
  550. package/dist/ui/static/_next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
  551. package/dist/ui/static/_next/static/chunks/982-abc19630e6305864.js +0 -1
  552. package/dist/ui/static/_next/static/chunks/app/_not-found/page-c4d800f366186be0.js +0 -1
  553. package/dist/ui/static/_next/static/chunks/app/launch/page-17ca39367f25f372.js +0 -1
  554. package/dist/ui/static/_next/static/chunks/app/layout-0f75a39edc90325d.js +0 -1
  555. package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-87a2ea239308ed34.js +0 -1
  556. package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-98bb7704fc7fd0ad.js +0 -1
  557. package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-f912263f1ee5d2dd.js +0 -1
  558. package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-fa590f135356e0af.js +0 -1
  559. package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-b8555600c1113f14.js +0 -1
  560. package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-85cfbeb3598c0a36.js +0 -1
  561. package/dist/ui/static/_next/static/chunks/app/page-2881856ad25d9935.js +0 -1
  562. package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
  563. package/dist/ui/static/_next/static/chunks/main-app-5b043f6c611974ae.js +0 -1
  564. package/dist/ui/static/_next/static/chunks/main-bc552b04f2b6dbe2.js +0 -1
  565. package/dist/ui/static/_next/static/chunks/pages/_app-2e239ff05bfdf6d6.js +0 -1
  566. package/dist/ui/static/_next/static/chunks/pages/_error-bda15e7831eec981.js +0 -1
  567. package/dist/ui/static/_next/static/chunks/webpack-0cfe6f51555ca84e.js +0 -1
  568. package/dist/ui/static/_next/static/css/eac94895f3edc5a5.css +0 -1
  569. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts +0 -6
  570. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts.map +0 -1
  571. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.js +0 -49
  572. /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
  573. /package/dist/ui/static/_next/static/{RAzN8WLtYaktD-ZePowXl → hR2gBQqCDKdPdSxBqZhqv}/_ssgManifest.js +0 -0
@@ -8,14 +8,16 @@
8
8
  // Pure orchestration: the only IO this module performs is delegated through the workspace
9
9
  // package's already-bounded WorkspaceFs port. Path validation is enforced by every composed
10
10
  // layer at its own boundary, so this file does not re-validate scope paths.
11
+ import { createHash } from "node:crypto";
11
12
  import { isValidScopePath, } from "@oscharko-dev/keiko-contracts/connected-context";
12
- import { advanceRing, applyUsage, assembleContextPack, canContinue, complete, planAndGovern, rankCandidates, } from "@oscharko-dev/keiko-workflows";
13
- import { DEFAULT_SEARCH_LIMITS, FileTooLargeError, RepoSearchUnsupportedFileError, detectWorkspaceAt, gitHistoryAdapter, importGraphAdapter, readExcerpt, runStructuralAdapters, searchText, testSourcePairingAdapter, } from "@oscharko-dev/keiko-workspace";
13
+ import { advanceRing, applyUsage, assembleContextPack, canContinue, complete, contextPackIndexKey, planAndGovern, rankCandidates, } from "@oscharko-dev/keiko-workflows";
14
+ import { DEFAULT_SEARCH_LIMITS, FileTooLargeError, RepoSearchUnsupportedFileError, detectWorkspaceAt, gitHistoryAdapter, importGraphAdapter, readExcerpt, resolveWithinWorkspace, runStructuralAdapters, searchText, testSourcePairingAdapter, containedRealPathInfo, evidenceAtomStableId, } from "@oscharko-dev/keiko-workspace";
14
15
  import { CancelledError } from "@oscharko-dev/keiko-model-gateway";
15
16
  import { nodeWorkspaceFs } from "@oscharko-dev/keiko-workspace/internal/fs";
16
17
  import { normalizeGroundedAnswerPayload } from "./grounded-answer.js";
17
18
  // Raised when the planner asks for clarification (no anchors, too-generic prompt, etc.). The
18
- // route maps this to a 400 BAD_REQUEST with the planner's clarification reason in the message.
19
+ // route maps this to a 400 BAD_REQUEST via clarificationUserMessage below; the Error message
20
+ // itself keeps the stable machine-ish form for logs and tests.
19
21
  export class ClarificationNeededError extends Error {
20
22
  clarification;
21
23
  constructor(clarification) {
@@ -24,20 +26,24 @@ export class ClarificationNeededError extends Error {
24
26
  this.name = "ClarificationNeededError";
25
27
  }
26
28
  }
27
- // ─── Default deterministic answerer ───────────────────────────────────────────
28
- export const echoAnswerer = {
29
- answer: (question, pack) => {
30
- try {
31
- const filePaths = pack.files.map((f) => f.scopePath).join(", ");
32
- const summary = `Inspected ${String(pack.files.length)} file(s) for: ${question}. ` +
33
- `Findings include: ${filePaths.length === 0 ? "(no evidence)" : filePaths}.`;
34
- return Promise.resolve(summary);
35
- }
36
- catch (error) {
37
- return Promise.reject(error instanceof Error ? error : new Error(String(error)));
38
- }
39
- },
40
- };
29
+ // Release 0.2.0 user-facing mapping for a planner clarification. The raw reason string
30
+ // ("clarification needed: too-generic") told the user nothing actionable; the HTTP message now
31
+ // says what the planner needs and folds in the planner's own suggested questions. Static text
32
+ // plus planner-built suggestions only — no user/file content, so nothing to redact.
33
+ export function clarificationUserMessage(error) {
34
+ const { reason, suggestedQuestions } = error.clarification;
35
+ const intro = reason === "scope-empty"
36
+ ? "The connected source contains nothing searchable."
37
+ : reason === "scope-invalid"
38
+ ? "The connected source could not be searched."
39
+ : "Your question is too broad to search the connected sources.";
40
+ const anchorHint = reason === "no-anchors" || reason === "too-generic"
41
+ ? " Mention a concrete file name, identifier, or exact phrase so Keiko knows where to look."
42
+ : "";
43
+ const examples = suggestedQuestions.slice(0, 2);
44
+ const exampleText = examples.length > 0 ? ` For example: ${examples.map((q) => `"${q}"`).join(" or ")}` : "";
45
+ return `${intro}${anchorHint}${exampleText}`;
46
+ }
41
47
  const TEXT_ENCODER = new TextEncoder();
42
48
  function throwIfCancelled(signal) {
43
49
  if (signal?.aborted === true) {
@@ -78,6 +84,14 @@ function budgetClipped(stopReason, nowMs) {
78
84
  emittedAtMs: nowMs,
79
85
  };
80
86
  }
87
+ function answerBudgetClipped(dimensions, nowMs) {
88
+ return {
89
+ kind: "budget-clipped",
90
+ claim: `grounded answer exceeded budget: ${dimensions.join(", ")}`,
91
+ impactedAtomIds: [],
92
+ emittedAtMs: nowMs,
93
+ };
94
+ }
81
95
  function noEvidence(nowMs) {
82
96
  return {
83
97
  kind: "no-evidence",
@@ -86,6 +100,14 @@ function noEvidence(nowMs) {
86
100
  emittedAtMs: nowMs,
87
101
  };
88
102
  }
103
+ function toolUnavailable(claim, nowMs) {
104
+ return {
105
+ kind: "tool-unavailable",
106
+ claim,
107
+ impactedAtomIds: [],
108
+ emittedAtMs: nowMs,
109
+ };
110
+ }
89
111
  function readBudgetStopReason(budget) {
90
112
  const exhausted = [
91
113
  ...(budget.filesReadMax <= 0 ? ["filesRead"] : []),
@@ -113,6 +135,97 @@ function omittedFromSearchCandidates(candidates, nowMs) {
113
135
  }
114
136
  return omitted;
115
137
  }
138
+ function safeAdapterName(name) {
139
+ const cleaned = name.replace(/[^a-zA-Z0-9._-]/g, "");
140
+ return cleaned.length === 0 ? "structural-adapter" : cleaned;
141
+ }
142
+ function adapterDiagnostics(result, nowMs) {
143
+ const markers = [];
144
+ const seen = new Set();
145
+ for (const name of result.unavailable) {
146
+ const safeName = safeAdapterName(name);
147
+ if (seen.has(`unavailable:${safeName}`)) {
148
+ continue;
149
+ }
150
+ seen.add(`unavailable:${safeName}`);
151
+ markers.push(toolUnavailable(`structural adapter unavailable: ${safeName}`, nowMs));
152
+ }
153
+ for (const error of result.errored) {
154
+ const safeName = safeAdapterName(error.name);
155
+ if (seen.has(`errored:${safeName}`)) {
156
+ continue;
157
+ }
158
+ seen.add(`errored:${safeName}`);
159
+ markers.push(toolUnavailable(`structural adapter failed safely: ${safeName}`, nowMs));
160
+ }
161
+ return markers;
162
+ }
163
+ function dedupeUncertainty(markers) {
164
+ const seen = new Set();
165
+ const out = [];
166
+ for (const marker of markers) {
167
+ const key = `${marker.kind}:${marker.claim}`;
168
+ if (seen.has(key)) {
169
+ continue;
170
+ }
171
+ seen.add(key);
172
+ out.push(marker);
173
+ }
174
+ return out;
175
+ }
176
+ function anchorKindForTerm(term, anchors) {
177
+ return anchors.find((anchor) => anchor.term === term)?.kind;
178
+ }
179
+ function looksPathAnchor(term) {
180
+ return term.includes("/") || /\.[a-z0-9]+$/i.test(term);
181
+ }
182
+ function queryForStructuralAnchor(term, kind, base) {
183
+ return {
184
+ ...base,
185
+ kind: kind === "identifier" || (!looksPathAnchor(term) && kind !== "path")
186
+ ? "exact-symbol"
187
+ : "natural-language",
188
+ text: term,
189
+ };
190
+ }
191
+ function structuralQueriesForRing(ring, inputs) {
192
+ const queries = [];
193
+ const seen = new Set();
194
+ for (const term of ring.anchorTerms) {
195
+ const anchorKind = anchorKindForTerm(term, inputs.anchors);
196
+ if (anchorKind !== "path" && anchorKind !== "identifier" && anchorKind !== "quoted") {
197
+ continue;
198
+ }
199
+ const query = queryForStructuralAnchor(term, anchorKind, inputs.query);
200
+ const key = `${query.kind}:${query.text}`;
201
+ if (seen.has(key)) {
202
+ continue;
203
+ }
204
+ seen.add(key);
205
+ queries.push(query);
206
+ }
207
+ return queries.length === 0 ? [inputs.query] : queries;
208
+ }
209
+ function plannedSearchCallsForRing(ring, inputs) {
210
+ return ring.kind === "structural" ? structuralQueriesForRing(ring, inputs).length : 1;
211
+ }
212
+ function mergeAtomsByStableId(results, cap) {
213
+ const atoms = [];
214
+ const seen = new Set();
215
+ for (const result of results) {
216
+ for (const atom of result.atoms) {
217
+ if (atoms.length >= cap) {
218
+ return atoms;
219
+ }
220
+ if (seen.has(atom.stableId)) {
221
+ continue;
222
+ }
223
+ seen.add(atom.stableId);
224
+ atoms.push(atom);
225
+ }
226
+ }
227
+ return atoms;
228
+ }
116
229
  async function runRing(ring, inputs) {
117
230
  if (ring.kind === "lexical") {
118
231
  const result = await searchText(inputs.searchScope, inputs.query, ring.searchLimits, {
@@ -128,6 +241,7 @@ async function runRing(ring, inputs) {
128
241
  return {
129
242
  atoms: result.atoms,
130
243
  omitted: omittedFromSearchCandidates(result.candidates, inputs.nowMs()),
244
+ uncertainty: [],
131
245
  usage: usageDelta({ elapsedMs: result.elapsedMs }),
132
246
  };
133
247
  }
@@ -138,11 +252,29 @@ async function runRing(ring, inputs) {
138
252
  const registry = ring.kind === "structural"
139
253
  ? { adapters: [testSourcePairingAdapter, importGraphAdapter] }
140
254
  : { adapters: [gitHistoryAdapter] };
141
- const result = await runStructuralAdapters(registry, inputs.searchScope, inputs.query, ring.searchLimits, inputs.fs, { nowMs: inputs.nowMs });
255
+ const queries = ring.kind === "structural" ? structuralQueriesForRing(ring, inputs) : [inputs.query];
256
+ const results = await Promise.all(queries.map((query) => runStructuralAdapters(registry, inputs.searchScope, query, ring.searchLimits, inputs.fs, {
257
+ nowMs: inputs.nowMs,
258
+ })));
259
+ const elapsedMs = results.reduce((sum, result) => sum + result.elapsedMs, 0);
260
+ const cap = Math.min(ring.searchLimits.maxMatchesReturned, inputs.query.maxResults);
261
+ const atoms = ring.kind === "git-history" ? [] : mergeAtomsByStableId(results, cap);
262
+ const uncertainty = dedupeUncertainty(results.flatMap((result) => adapterDiagnostics(result, inputs.nowMs())));
142
263
  return {
143
- atoms: result.atoms,
264
+ atoms,
144
265
  omitted: [],
145
- usage: usageDelta({ elapsedMs: result.elapsedMs }),
266
+ uncertainty,
267
+ usage: usageDelta({ elapsedMs }),
268
+ };
269
+ }
270
+ function reserveRingSearchCalls(governor, ring, inputs) {
271
+ const reserved = applyUsage(governor, usageDelta({ searchCalls: plannedSearchCallsForRing(ring, inputs) }));
272
+ if (reserved.status !== "budget-exhausted") {
273
+ return { governor: reserved };
274
+ }
275
+ return {
276
+ governor: reserved,
277
+ marker: budgetClipped(reserved.stopReason ?? "budget exhausted", inputs.nowMs()),
146
278
  };
147
279
  }
148
280
  async function runAllRings(rings, inputs, initialGovernor) {
@@ -164,19 +296,18 @@ async function runAllRings(rings, inputs, initialGovernor) {
164
296
  if (!canContinue(governor)) {
165
297
  break;
166
298
  }
167
- const reservedSearchCall = applyUsage(governor, usageDelta({ searchCalls: 1 }));
168
- if (reservedSearchCall.status === "budget-exhausted") {
169
- governor = reservedSearchCall;
170
- uncertainty.push(budgetClipped(reservedSearchCall.stopReason ?? "budget exhausted", inputs.nowMs()));
299
+ const reservation = reserveRingSearchCalls(governor, ring, inputs);
300
+ governor = reservation.governor;
301
+ if (reservation.marker !== undefined) {
302
+ uncertainty.push(reservation.marker);
171
303
  break;
172
304
  }
173
- governor = reservedSearchCall;
174
305
  const result = await runRing(ring, inputs);
175
306
  throwIfCancelled(inputs.signal);
176
307
  const afterRing = applyUsage(governor, result.usage);
177
- const ringAtoms = result.atoms;
178
- atoms.push(...ringAtoms);
308
+ atoms.push(...result.atoms);
179
309
  omitted.push(...result.omitted);
310
+ uncertainty.push(...result.uncertainty);
180
311
  if (afterRing.status === "budget-exhausted") {
181
312
  governor = afterRing;
182
313
  uncertainty.push(budgetClipped(afterRing.stopReason ?? "budget exhausted", inputs.nowMs()));
@@ -192,6 +323,324 @@ async function runAllRings(rings, inputs, initialGovernor) {
192
323
  const DEFAULT_EXCERPT_WINDOW = { startLine: 1, endLine: 200 };
193
324
  const EXCERPT_CONTEXT_LINES = 2;
194
325
  const MAX_EXCERPT_WINDOWS_PER_FILE = 8;
326
+ const PROJECT_METADATA_QUERY_TERMS = [
327
+ "abhängigkeit",
328
+ "abhängigkeiten",
329
+ "build",
330
+ "cypress",
331
+ "dependenc",
332
+ "framework",
333
+ "jest",
334
+ "npm",
335
+ "package",
336
+ "playwright",
337
+ "pnpm",
338
+ "react",
339
+ "script",
340
+ "stack",
341
+ "tech-stack",
342
+ "techstack",
343
+ "test",
344
+ "testing",
345
+ "testumgebung",
346
+ "typescript",
347
+ "vite",
348
+ "vitest",
349
+ "yarn",
350
+ ];
351
+ const PROJECT_METADATA_FILENAMES = [
352
+ "package.json",
353
+ "vitest.config.ts",
354
+ "vitest.config.mts",
355
+ "vitest.config.js",
356
+ "vitest.config.mjs",
357
+ "vitest.setup.ts",
358
+ "vite.config.ts",
359
+ "vite.config.mts",
360
+ "vite.config.js",
361
+ "vite.config.mjs",
362
+ "jest.config.ts",
363
+ "jest.config.js",
364
+ "jest.config.mjs",
365
+ "playwright.config.ts",
366
+ "playwright.config.js",
367
+ "cypress.config.ts",
368
+ "cypress.config.js",
369
+ "next.config.ts",
370
+ "next.config.js",
371
+ "next.config.mjs",
372
+ "tsconfig.json",
373
+ "eslint.config.ts",
374
+ "eslint.config.js",
375
+ "eslint.config.mjs",
376
+ "postcss.config.js",
377
+ "postcss.config.mjs",
378
+ ];
379
+ const LOCKFILE_NAMES = new Set([
380
+ "package-lock.json",
381
+ "pnpm-lock.yaml",
382
+ "yarn.lock",
383
+ "bun.lock",
384
+ "bun.lockb",
385
+ "cargo.lock",
386
+ "composer.lock",
387
+ "gemfile.lock",
388
+ ]);
389
+ function basename(scopePath) {
390
+ const index = scopePath.lastIndexOf("/");
391
+ return index >= 0 ? scopePath.slice(index + 1) : scopePath;
392
+ }
393
+ function compareByScopePath(a, b) {
394
+ return a.scopePath.localeCompare(b.scopePath);
395
+ }
396
+ function isKeikoEvidenceArtifact(scopePath) {
397
+ return scopePath.toLowerCase().startsWith(".keiko/evidence/");
398
+ }
399
+ function isLockfilePath(scopePath) {
400
+ return LOCKFILE_NAMES.has(basename(scopePath).toLowerCase());
401
+ }
402
+ function dirname(scopePath) {
403
+ const index = scopePath.lastIndexOf("/");
404
+ return index <= 0 ? "" : scopePath.slice(0, index);
405
+ }
406
+ function joinScopePath(base, filename) {
407
+ return base.length === 0 ? filename : `${base}/${filename}`;
408
+ }
409
+ function projectMetadataQueryFingerprint(query) {
410
+ return createHash("sha256")
411
+ .update(JSON.stringify({
412
+ kind: "project-metadata",
413
+ queryKind: query.kind,
414
+ text: query.text,
415
+ caseSensitive: query.caseSensitive,
416
+ }))
417
+ .digest("hex")
418
+ .slice(0, 16);
419
+ }
420
+ function selectedFileQueryFingerprint(query) {
421
+ return createHash("sha256")
422
+ .update(JSON.stringify({
423
+ kind: "explicit-selected-file",
424
+ queryKind: query.kind,
425
+ text: query.text,
426
+ caseSensitive: query.caseSensitive,
427
+ }))
428
+ .digest("hex")
429
+ .slice(0, 16);
430
+ }
431
+ function wantsProjectMetadata(queryText) {
432
+ const lowered = queryText.toLowerCase();
433
+ return PROJECT_METADATA_QUERY_TERMS.some((term) => lowered.includes(term));
434
+ }
435
+ function metadataRootsForScope(scope) {
436
+ if (scope.relativePaths.length === 0) {
437
+ return [""];
438
+ }
439
+ const roots = new Set();
440
+ for (const entry of scope.relativePaths) {
441
+ if (!isValidScopePath(entry, { mustBeRelative: true })) {
442
+ continue;
443
+ }
444
+ roots.add(scope.kind === "files" ? dirname(entry) : entry);
445
+ }
446
+ return [...roots].sort();
447
+ }
448
+ function metadataAtom(scope, scopePath, queryFingerprint, nowMs) {
449
+ return {
450
+ schemaVersion: scope.schemaVersion,
451
+ stableId: evidenceAtomStableId({
452
+ scopeId: scope.scopeId,
453
+ scopePath,
454
+ lineRange: undefined,
455
+ provenanceKind: "file-listing",
456
+ provenanceTool: "repo.projectMetadata",
457
+ queryFingerprint,
458
+ }),
459
+ scopePath,
460
+ lineRange: undefined,
461
+ score: 1,
462
+ provenance: {
463
+ kind: "file-listing",
464
+ tool: "repo.projectMetadata",
465
+ queryFingerprint,
466
+ },
467
+ redactionState: "redacted",
468
+ emittedAtMs: nowMs(),
469
+ ledgerRef: undefined,
470
+ };
471
+ }
472
+ function selectedFileAtom(scope, scopePath, queryFingerprint, nowMs) {
473
+ return {
474
+ schemaVersion: scope.schemaVersion,
475
+ stableId: evidenceAtomStableId({
476
+ scopeId: scope.scopeId,
477
+ scopePath,
478
+ lineRange: undefined,
479
+ provenanceKind: "file-listing",
480
+ provenanceTool: "repo.selectedFile",
481
+ queryFingerprint,
482
+ }),
483
+ scopePath,
484
+ lineRange: undefined,
485
+ score: 1,
486
+ provenance: {
487
+ kind: "file-listing",
488
+ tool: "repo.selectedFile",
489
+ queryFingerprint,
490
+ },
491
+ redactionState: "redacted",
492
+ emittedAtMs: nowMs(),
493
+ ledgerRef: undefined,
494
+ };
495
+ }
496
+ function fileExistsInSearchScope(searchScope, fs, scopePath) {
497
+ try {
498
+ const abs = resolveWithinWorkspace(searchScope.workspace.root, scopePath);
499
+ const contained = containedRealPathInfo(fs, searchScope.workspace.root, abs);
500
+ return fs.stat(contained.path).isFile;
501
+ }
502
+ catch {
503
+ return false;
504
+ }
505
+ }
506
+ function selectedFileScopeAtoms(input, searchScope, fs, nowMs) {
507
+ if (input.scope.explicitConnection !== true || input.scope.kind !== "files") {
508
+ return [];
509
+ }
510
+ const atoms = [];
511
+ const seen = new Set();
512
+ const queryFingerprint = selectedFileQueryFingerprint(input.query);
513
+ for (const entry of input.scope.relativePaths) {
514
+ if (!isValidScopePath(entry, { mustBeRelative: true })) {
515
+ continue;
516
+ }
517
+ const scopePath = entry.replace(/\\/gu, "/");
518
+ if (seen.has(scopePath)) {
519
+ continue;
520
+ }
521
+ seen.add(scopePath);
522
+ if (fileExistsInSearchScope(searchScope, fs, scopePath)) {
523
+ atoms.push(selectedFileAtom(input.scope, scopePath, queryFingerprint, nowMs));
524
+ }
525
+ }
526
+ return atoms;
527
+ }
528
+ function projectMetadataAtoms(input, searchScope, fs, nowMs) {
529
+ if (!wantsProjectMetadata(input.query.text)) {
530
+ return [];
531
+ }
532
+ const atoms = [];
533
+ const seen = new Set();
534
+ const queryFingerprint = projectMetadataQueryFingerprint(input.query);
535
+ for (const root of metadataRootsForScope(input.scope)) {
536
+ for (const filename of PROJECT_METADATA_FILENAMES) {
537
+ const scopePath = joinScopePath(root, filename);
538
+ if (seen.has(scopePath) || !isValidScopePath(scopePath, { mustBeRelative: true })) {
539
+ continue;
540
+ }
541
+ seen.add(scopePath);
542
+ if (fileExistsInSearchScope(searchScope, fs, scopePath)) {
543
+ atoms.push(metadataAtom(input.scope, scopePath, queryFingerprint, nowMs));
544
+ }
545
+ }
546
+ }
547
+ return atoms;
548
+ }
549
+ function withProjectMetadataAtoms(rings, input, searchScope, fs, nowMs) {
550
+ const metadataAtoms = projectMetadataAtoms(input, searchScope, fs, nowMs);
551
+ return metadataAtoms.length === 0
552
+ ? rings
553
+ : { ...rings, atoms: [...rings.atoms, ...metadataAtoms] };
554
+ }
555
+ function withExplicitScopeAtoms(rings, input, searchScope, fs, nowMs) {
556
+ const selectedAtoms = selectedFileScopeAtoms(input, searchScope, fs, nowMs);
557
+ return selectedAtoms.length === 0
558
+ ? rings
559
+ : { ...rings, atoms: [...selectedAtoms, ...rings.atoms] };
560
+ }
561
+ function queryTerms(queryText, anchors) {
562
+ const terms = new Set();
563
+ const loweredQuery = queryText.toLowerCase();
564
+ for (const token of loweredQuery.split(/[^a-z0-9._/-]+/)) {
565
+ if (token.length > 0) {
566
+ terms.add(token);
567
+ }
568
+ }
569
+ for (const anchor of anchors) {
570
+ const lowered = anchor.term.toLowerCase();
571
+ if (lowered.length > 0) {
572
+ terms.add(lowered);
573
+ }
574
+ for (const token of lowered.split(/[^a-z0-9._/-]+/)) {
575
+ if (token.length > 0) {
576
+ terms.add(token);
577
+ }
578
+ }
579
+ }
580
+ return [...terms];
581
+ }
582
+ function explicitlyTargetsRuntimeArtifact(scopePath, queryText, anchors) {
583
+ if (!isKeikoEvidenceArtifact(scopePath)) {
584
+ return false;
585
+ }
586
+ const loweredQuery = queryText.toLowerCase();
587
+ if (loweredQuery.includes(".keiko") || loweredQuery.includes("evidence artifact")) {
588
+ return true;
589
+ }
590
+ return queryTerms(queryText, anchors).some((term) => scopePath.toLowerCase().includes(term));
591
+ }
592
+ function explicitlyTargetsLockfile(scopePath, queryText, anchors) {
593
+ if (!isLockfilePath(scopePath)) {
594
+ return false;
595
+ }
596
+ const loweredQuery = queryText.toLowerCase();
597
+ if (loweredQuery.includes("lockfile") ||
598
+ loweredQuery.includes("package manager") ||
599
+ loweredQuery.includes("packagemanager") ||
600
+ loweredQuery.includes("dependency version") ||
601
+ loweredQuery.includes("dependency versions") ||
602
+ loweredQuery.includes("resolved version") ||
603
+ loweredQuery.includes("resolved versions")) {
604
+ return true;
605
+ }
606
+ const path = scopePath.toLowerCase();
607
+ const name = basename(scopePath).toLowerCase();
608
+ return queryTerms(queryText, anchors).some((term) => path.includes(term) || name === term);
609
+ }
610
+ function refineCandidateOrdering(kept, omitted, queryText, anchors, nowMs) {
611
+ const preferred = [];
612
+ const lockfiles = [];
613
+ const runtimeArtifacts = [];
614
+ for (const candidate of kept) {
615
+ const scopePath = candidate.scopePath;
616
+ if (isKeikoEvidenceArtifact(scopePath) &&
617
+ !explicitlyTargetsRuntimeArtifact(scopePath, queryText, anchors)) {
618
+ runtimeArtifacts.push(candidate);
619
+ continue;
620
+ }
621
+ if (isLockfilePath(scopePath) && !explicitlyTargetsLockfile(scopePath, queryText, anchors)) {
622
+ lockfiles.push(candidate);
623
+ continue;
624
+ }
625
+ preferred.push(candidate);
626
+ }
627
+ if (preferred.length === 0) {
628
+ return { kept, omitted };
629
+ }
630
+ const nextOmitted = [...omitted];
631
+ for (const candidate of runtimeArtifacts) {
632
+ nextOmitted.push({
633
+ scopePath: candidate.scopePath,
634
+ reason: "low-relevance",
635
+ omittedAtMs: nowMs,
636
+ });
637
+ }
638
+ nextOmitted.sort(compareByScopePath);
639
+ return {
640
+ kept: [...preferred, ...lockfiles],
641
+ omitted: nextOmitted,
642
+ };
643
+ }
195
644
  function groupEvidenceAtomsByPath(atoms) {
196
645
  const grouped = new Map();
197
646
  for (const atom of atoms) {
@@ -231,11 +680,35 @@ function mergeLineWindows(windows) {
231
680
  }
232
681
  return merged;
233
682
  }
683
+ function windowContainsAtom(window, atom) {
684
+ const range = atom.lineRange;
685
+ return (range === undefined || (window.startLine <= range.startLine && window.endLine >= range.endLine));
686
+ }
687
+ function strongestAtomScoreForWindow(window, atomsForPath) {
688
+ let score = 0;
689
+ for (const atom of atomsForPath) {
690
+ if (windowContainsAtom(window, atom) && atom.score > score) {
691
+ score = atom.score;
692
+ }
693
+ }
694
+ return score;
695
+ }
234
696
  function excerptLineWindows(atomsForPath) {
235
697
  if (atomsForPath === undefined || atomsForPath.length === 0) {
236
- return [DEFAULT_EXCERPT_WINDOW];
698
+ return { windows: [DEFAULT_EXCERPT_WINDOW], omittedWindowCount: 0 };
237
699
  }
238
- return mergeLineWindows(atomsForPath.map(lineWindowForAtom)).slice(0, MAX_EXCERPT_WINDOWS_PER_FILE);
700
+ const merged = mergeLineWindows(atomsForPath.map(lineWindowForAtom));
701
+ const selected = [...merged]
702
+ .sort((a, b) => {
703
+ const scoreDelta = strongestAtomScoreForWindow(b, atomsForPath) - strongestAtomScoreForWindow(a, atomsForPath);
704
+ return scoreDelta === 0 ? a.startLine - b.startLine : scoreDelta;
705
+ })
706
+ .slice(0, MAX_EXCERPT_WINDOWS_PER_FILE)
707
+ .sort((a, b) => a.startLine === b.startLine ? a.endLine - b.endLine : a.startLine - b.startLine);
708
+ return {
709
+ windows: selected,
710
+ omittedWindowCount: Math.max(0, merged.length - selected.length),
711
+ };
239
712
  }
240
713
  function exhaustedDimensions(remainingFiles, remainingBytes) {
241
714
  return [
@@ -246,7 +719,8 @@ function exhaustedDimensions(remainingFiles, remainingBytes) {
246
719
  async function readPathExcerptWindows(scopePath, inputs, remainingBytes) {
247
720
  const windows = [];
248
721
  let bytesConsumed = 0;
249
- for (const window of excerptLineWindows(inputs.atomsByPath.get(scopePath))) {
722
+ const selection = excerptLineWindows(inputs.atomsByPath.get(scopePath));
723
+ for (const window of selection.windows) {
250
724
  throwIfCancelled(inputs.signal);
251
725
  const availableBytes = remainingBytes - bytesConsumed;
252
726
  if (availableBytes <= 0) {
@@ -258,7 +732,7 @@ async function readPathExcerptWindows(scopePath, inputs, remainingBytes) {
258
732
  windows.push({ ...window, content: result.content });
259
733
  bytesConsumed += utf8ByteLength(result.content);
260
734
  }
261
- return { windows, bytesConsumed };
735
+ return { windows, bytesConsumed, omittedWindowCount: selection.omittedWindowCount };
262
736
  }
263
737
  async function readKeptExcerpts(keptPaths, inputs) {
264
738
  const excerpts = new Map();
@@ -277,6 +751,14 @@ async function readKeptExcerpts(keptPaths, inputs) {
277
751
  const { windows } = result;
278
752
  if (windows.length > 0) {
279
753
  excerpts.set(scopePath, windows);
754
+ if (result.omittedWindowCount > 0) {
755
+ uncertainty.push({
756
+ kind: "scope-incomplete",
757
+ claim: `excerpt window limit omitted ${String(result.omittedWindowCount)} additional matching range(s) in ${scopePath}`,
758
+ impactedAtomIds: [],
759
+ emittedAtMs: inputs.nowMs(),
760
+ });
761
+ }
280
762
  remainingFiles -= 1;
281
763
  remainingBytes -= result.bytesConsumed;
282
764
  }
@@ -300,6 +782,23 @@ function buildSearchScope(scope, workspace) {
300
782
  relativePaths: scope.relativePaths,
301
783
  };
302
784
  }
785
+ function fileStateCacheIdentity(keptPaths, searchScope, fs) {
786
+ const identity = [];
787
+ try {
788
+ for (const scopePath of keptPaths) {
789
+ const target = containedRealPathInfo(fs, searchScope.workspace.root, resolveWithinWorkspace(searchScope.workspace.root, scopePath));
790
+ const stat = fs.stat(target.path);
791
+ if (!stat.isFile || stat.mtimeMs === undefined) {
792
+ return undefined;
793
+ }
794
+ identity.push(`${scopePath}:${target.realRelative}:${stat.size.toString()}:${stat.mtimeMs.toString()}`);
795
+ }
796
+ }
797
+ catch {
798
+ return undefined;
799
+ }
800
+ return identity.sort();
801
+ }
303
802
  function createReadyGovernedPlan(input, nowMs) {
304
803
  const planned = planAndGovern(input.budget === undefined
305
804
  ? { scope: input.scope, query: input.query }
@@ -320,31 +819,114 @@ function createReadyGovernedPlan(input, nowMs) {
320
819
  }
321
820
  return { plan, governor: planned.governor };
322
821
  }
323
- async function assembleGroundedPack({ input, deps, plan, rings, searchScope, fs, nowMs, }) {
822
+ async function assembleEmptyGroundedPack({ input, deps, plan, governor, nowMs, stopReason, }) {
823
+ const assembleOptions = deps.microIndex === undefined ? { nowMs } : { nowMs, microIndex: deps.microIndex };
824
+ const assemble = await assembleContextPack({
825
+ scope: input.scope,
826
+ query: input.query,
827
+ budget: plan.budget,
828
+ atoms: [],
829
+ ranked: [],
830
+ omittedFromRanking: [],
831
+ excerpts: new Map(),
832
+ initialUsage: clampUsageToBudget(governor.usage, plan.budget),
833
+ initialUncertainty: [budgetClipped(stopReason, nowMs())],
834
+ }, assembleOptions);
835
+ return assemble.pack;
836
+ }
837
+ function cachedGroundedPack({ input, deps, plan, rings, ordered, cacheIdentity, initialUsage, assembleOptions, }) {
838
+ if (deps.microIndex === undefined || cacheIdentity === undefined) {
839
+ return undefined;
840
+ }
841
+ const key = contextPackIndexKey({
842
+ scope: input.scope,
843
+ query: input.query,
844
+ budget: plan.budget,
845
+ atoms: rings.atoms,
846
+ ranked: ordered.kept,
847
+ omittedFromRanking: [...rings.omitted, ...ordered.omitted],
848
+ excerpts: new Map(),
849
+ cacheIdentity,
850
+ initialUsage,
851
+ }, assembleOptions);
852
+ return deps.microIndex.get(key);
853
+ }
854
+ function preparePackAssembly(input, plan, rings, nowMs) {
324
855
  const atoms = rings.atoms;
325
856
  const initialUsage = clampUsageToBudget(rings.governor.usage, plan.budget);
326
857
  const ranking = rankCandidates({ atoms, anchors: plan.anchors }, { nowMs });
327
- const atomsByPath = groupEvidenceAtomsByPath(atoms);
328
- const evidenceUncertainty = atoms.length === 0 || ranking.kept.length === 0 ? [noEvidence(nowMs())] : [];
329
- const excerptReads = await readKeptExcerpts(ranking.kept.map((c) => c.scopePath), { searchScope, fs, budget: plan.budget, initialUsage, atomsByPath, nowMs, signal: deps.signal });
330
- const assembleOptions = deps.microIndex === undefined ? { nowMs } : { nowMs, microIndex: deps.microIndex };
858
+ const ordered = refineCandidateOrdering(ranking.kept, ranking.omitted, input.query.text, plan.anchors, nowMs());
859
+ return {
860
+ atoms,
861
+ initialUsage,
862
+ ordered,
863
+ atomsByPath: groupEvidenceAtomsByPath(atoms),
864
+ evidenceUncertainty: atoms.length === 0 || ordered.kept.length === 0 ? [noEvidence(nowMs())] : [],
865
+ keptPaths: ordered.kept.map((c) => c.scopePath),
866
+ };
867
+ }
868
+ async function assemblePackFromReads({ input, plan, rings, prepared, excerptReads, cacheIdentity, assembleOptions, }) {
869
+ const needsNoEvidenceMarker = excerptReads.excerpts.size === 0 &&
870
+ !prepared.evidenceUncertainty.some((marker) => marker.kind === "no-evidence");
331
871
  const assemble = await assembleContextPack({
332
872
  scope: input.scope,
333
873
  query: input.query,
334
874
  budget: plan.budget,
335
- atoms,
336
- ranked: ranking.kept,
337
- omittedFromRanking: [...rings.omitted, ...ranking.omitted],
875
+ atoms: prepared.atoms,
876
+ ranked: prepared.ordered.kept,
877
+ omittedFromRanking: [...rings.omitted, ...prepared.ordered.omitted],
338
878
  excerpts: excerptReads.excerpts,
339
- initialUsage,
879
+ cacheIdentity,
880
+ initialUsage: prepared.initialUsage,
340
881
  initialUncertainty: [
341
882
  ...rings.uncertainty,
342
883
  ...excerptReads.uncertainty,
343
- ...evidenceUncertainty,
884
+ ...prepared.evidenceUncertainty,
885
+ ...(needsNoEvidenceMarker ? [noEvidence(assembleOptions.nowMs())] : []),
344
886
  ],
345
887
  }, assembleOptions);
346
888
  return assemble.pack;
347
889
  }
890
+ async function assembleGroundedPack({ input, deps, plan, rings, searchScope, fs, nowMs, }) {
891
+ const scopedRings = withExplicitScopeAtoms(rings, input, searchScope, fs, nowMs);
892
+ const augmentedRings = withProjectMetadataAtoms(scopedRings, input, searchScope, fs, nowMs);
893
+ const prepared = preparePackAssembly(input, plan, augmentedRings, nowMs);
894
+ const cacheIdentity = deps.microIndex === undefined
895
+ ? undefined
896
+ : fileStateCacheIdentity(prepared.keptPaths, searchScope, fs);
897
+ const assembleOptions = deps.microIndex === undefined ? { nowMs } : { nowMs, microIndex: deps.microIndex };
898
+ const cached = cachedGroundedPack({
899
+ input,
900
+ deps,
901
+ plan,
902
+ rings: augmentedRings,
903
+ ordered: prepared.ordered,
904
+ cacheIdentity,
905
+ initialUsage: prepared.initialUsage,
906
+ assembleOptions,
907
+ });
908
+ if (cached !== undefined) {
909
+ return cached;
910
+ }
911
+ const excerptReads = await readKeptExcerpts(prepared.keptPaths, {
912
+ searchScope,
913
+ fs,
914
+ budget: plan.budget,
915
+ initialUsage: prepared.initialUsage,
916
+ atomsByPath: prepared.atomsByPath,
917
+ nowMs,
918
+ signal: deps.signal,
919
+ });
920
+ return await assemblePackFromReads({
921
+ input,
922
+ plan,
923
+ rings: augmentedRings,
924
+ prepared,
925
+ excerptReads,
926
+ cacheIdentity,
927
+ assembleOptions,
928
+ });
929
+ }
348
930
  // ─── Public entry ─────────────────────────────────────────────────────────────
349
931
  // Epic #532 — retrieval-only pipeline: the ready-governed plan, workspace detection, ring run,
350
932
  // and pack assembly (the original steps 1–4) WITHOUT the model answer. `deps.answerer` is part of
@@ -359,9 +941,22 @@ export async function retrieveConnectedContextPack(input, deps) {
359
941
  const { plan, governor } = createReadyGovernedPlan(input, nowMs);
360
942
  deps.recordPlan?.(plan);
361
943
  throwIfCancelled(deps.signal);
944
+ const blockedByReadBudget = readBudgetStopReason(plan.budget);
945
+ if (blockedByReadBudget !== undefined) {
946
+ const pack = await assembleEmptyGroundedPack({
947
+ input,
948
+ deps,
949
+ plan,
950
+ governor,
951
+ nowMs,
952
+ stopReason: blockedByReadBudget,
953
+ });
954
+ throwIfCancelled(deps.signal);
955
+ return { pack, elapsedMs: Math.max(0, nowMs() - start), plan };
956
+ }
362
957
  const workspace = detect(input.workspaceRoot, fs);
363
958
  const searchScope = buildSearchScope(input.scope, workspace);
364
- const rings = await runAllRings(plan.rings, { searchScope, query: input.query, fs, nowMs, signal: deps.signal }, governor);
959
+ const rings = await runAllRings(plan.rings, { searchScope, query: input.query, anchors: plan.anchors, fs, nowMs, signal: deps.signal }, governor);
365
960
  throwIfCancelled(deps.signal);
366
961
  const pack = await assembleGroundedPack({ input, deps, plan, rings, searchScope, fs, nowMs });
367
962
  throwIfCancelled(deps.signal);
@@ -375,15 +970,26 @@ export async function runGroundedExploration(input, deps) {
375
970
  const start = nowMs();
376
971
  const { pack, plan } = await retrieveConnectedContextPack(input, deps);
377
972
  const answer = normalizeGroundedAnswerPayload(await deps.answerer.answer(input.query.text, pack));
973
+ const elapsedMs = Math.max(0, nowMs() - start);
974
+ const exhaustedAnswerDimensions = [
975
+ ...(answer.usage.promptTokens > pack.budget.modelInputTokensMax ? ["modelInputTokens"] : []),
976
+ ...(answer.usage.completionTokens > pack.budget.modelOutputTokensMax
977
+ ? ["modelOutputTokens"]
978
+ : []),
979
+ ...(elapsedMs > pack.budget.elapsedMsMax ? ["elapsedMs"] : []),
980
+ ];
378
981
  const groundedPack = {
379
982
  ...pack,
380
983
  usage: {
381
984
  ...pack.usage,
382
- modelInputTokens: answer.usage.promptTokens,
383
- modelOutputTokens: answer.usage.completionTokens,
985
+ modelInputTokens: Math.min(answer.usage.promptTokens, pack.budget.modelInputTokensMax),
986
+ modelOutputTokens: Math.min(answer.usage.completionTokens, pack.budget.modelOutputTokensMax),
987
+ elapsedMs: Math.min(Math.max(pack.usage.elapsedMs, elapsedMs), pack.budget.elapsedMsMax),
384
988
  },
989
+ uncertainty: exhaustedAnswerDimensions.length === 0
990
+ ? pack.uncertainty
991
+ : [...pack.uncertainty, answerBudgetClipped(exhaustedAnswerDimensions, nowMs())],
385
992
  };
386
- const elapsedMs = Math.max(0, nowMs() - start);
387
993
  return { pack: groundedPack, assistantContent: answer.content, elapsedMs, plan };
388
994
  }
389
995
  // Re-export DEFAULT_SEARCH_LIMITS for parity with #179 callers that import limits via the