@oscharko-dev/keiko 0.2.0-beta.2 → 0.2.0-beta.4

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 (517) hide show
  1. package/README.md +139 -1
  2. package/dist/ui/csp-hashes.json +34 -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/Hb6brrvZY2nZtizQlYhVt/_buildManifest.js +11 -0
  10. package/dist/ui/static/_next/static/Hb6brrvZY2nZtizQlYhVt/_clientMiddlewareManifest.js +1 -0
  11. package/dist/ui/static/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
  12. package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +2 -0
  13. package/dist/ui/static/_next/static/chunks/0iq1i69206cyl.js +31 -0
  14. package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +1 -0
  15. package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +1 -0
  16. package/dist/ui/static/_next/static/chunks/14mrh2-p_w84d.js +1 -0
  17. package/dist/ui/static/_next/static/chunks/1t04tfgin0v_g.js +106 -0
  18. package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +1 -0
  19. package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +4 -0
  20. package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +1 -0
  21. package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +1 -0
  22. package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +1 -0
  23. package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +1 -0
  24. package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +1 -0
  25. package/dist/ui/static/_next/static/chunks/3peubv2924kx4.js +1 -0
  26. package/dist/ui/static/_next/static/chunks/3wr_35f2vg6sd.css +1 -0
  27. package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.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/manifest.webmanifest +2 -2
  64. package/dist/ui/static/memoriaviva/__next._full.txt +17 -0
  65. package/dist/ui/static/memoriaviva/__next._head.txt +6 -0
  66. package/dist/ui/static/memoriaviva/__next._index.txt +5 -0
  67. package/dist/ui/static/memoriaviva/__next._tree.txt +2 -0
  68. package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +6 -0
  69. package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +5 -0
  70. package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +17 -0
  71. package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +6 -0
  72. package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +5 -0
  73. package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -0
  74. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +6 -0
  75. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +5 -0
  76. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +5 -0
  77. package/dist/ui/static/memoriaviva/consolidation.html +1 -1
  78. package/dist/ui/static/memoriaviva/consolidation.txt +15 -15
  79. package/dist/ui/static/memoriaviva/detail/__next._full.txt +17 -0
  80. package/dist/ui/static/memoriaviva/detail/__next._head.txt +6 -0
  81. package/dist/ui/static/memoriaviva/detail/__next._index.txt +5 -0
  82. package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -0
  83. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +6 -0
  84. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +5 -0
  85. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +5 -0
  86. package/dist/ui/static/memoriaviva/detail.html +1 -1
  87. package/dist/ui/static/memoriaviva/detail.txt +14 -14
  88. package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +17 -0
  89. package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +6 -0
  90. package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +5 -0
  91. package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -0
  92. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +6 -0
  93. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +5 -0
  94. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +5 -0
  95. package/dist/ui/static/memoriaviva/review-queue.html +1 -1
  96. package/dist/ui/static/memoriaviva/review-queue.txt +15 -15
  97. package/dist/ui/static/memoriaviva.html +1 -1
  98. package/dist/ui/static/memoriaviva.txt +14 -14
  99. package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
  100. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
  101. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +61 -2
  102. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.d.ts.map +1 -1
  103. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.js +65 -21
  104. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher-platforms.js +3 -3
  105. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts +2 -0
  106. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts.map +1 -1
  107. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.js +51 -10
  108. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts +3 -1
  109. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
  110. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +128 -38
  111. package/node_modules/@oscharko-dev/keiko-cli/package.json +2 -2
  112. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  113. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +20 -1
  114. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
  115. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts +1 -1
  116. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
  117. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +256 -75
  118. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +11 -0
  119. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
  120. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +7 -7
  121. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  122. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -4
  123. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts +11 -0
  124. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts.map +1 -1
  125. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.js +4 -0
  126. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts +1 -1
  127. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts.map +1 -1
  128. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.js +109 -4
  129. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts +2 -0
  130. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
  131. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.js +94 -7
  132. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts +5 -0
  133. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts.map +1 -1
  134. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +15 -0
  135. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
  136. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.js +1 -1
  137. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.d.ts.map +1 -1
  138. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.js +3 -0
  139. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts +1 -1
  140. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
  141. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +14 -0
  142. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
  143. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +53 -5
  144. package/node_modules/@oscharko-dev/keiko-contracts/package.json +2 -2
  145. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  146. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.d.ts.map +1 -1
  147. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.js +11 -3
  148. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +2 -2
  149. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  150. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts +20 -1
  151. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts.map +1 -1
  152. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.js +34 -2
  153. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +1 -0
  154. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
  155. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +3 -1
  156. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +17 -0
  157. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
  158. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +19 -0
  159. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +5 -1
  160. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  161. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +32 -2
  162. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  163. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +259 -40
  164. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts +3 -0
  165. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts.map +1 -1
  166. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.js +48 -5
  167. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
  168. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +30 -13
  169. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts +1 -1
  170. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts.map +1 -1
  171. package/node_modules/@oscharko-dev/keiko-evidence/package.json +2 -2
  172. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  173. package/node_modules/@oscharko-dev/keiko-harness/package.json +2 -2
  174. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  175. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.d.ts.map +1 -1
  176. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.js +25 -1
  177. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts +1 -1
  178. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
  179. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +16 -0
  180. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts +3 -1
  181. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts.map +1 -1
  182. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.js +9 -5
  183. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.d.ts.map +1 -1
  184. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.js +22 -7
  185. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts +4 -1
  186. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts.map +1 -1
  187. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.js +61 -9
  188. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.d.ts.map +1 -1
  189. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.js +64 -36
  190. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts +2 -2
  191. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts.map +1 -1
  192. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.js +2 -2
  193. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts +7 -1
  194. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts.map +1 -1
  195. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.js +5 -1
  196. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts +1 -1
  197. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
  198. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +27 -4
  199. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts +5 -1
  200. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
  201. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +18 -5
  202. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.d.ts.map +1 -1
  203. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.js +10 -1
  204. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts +4 -1
  205. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
  206. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +370 -45
  207. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts +2 -0
  208. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts.map +1 -1
  209. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.js +8 -4
  210. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts +1 -1
  211. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts.map +1 -1
  212. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.js +10 -5
  213. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
  214. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +65 -20
  215. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts +1 -0
  216. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
  217. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +79 -0
  218. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
  219. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
  220. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
  221. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.d.ts.map +1 -1
  222. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.js +4 -0
  223. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +6 -5
  224. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
  225. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +4 -4
  226. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
  227. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +71 -29
  228. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
  229. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +258 -132
  230. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts +12 -0
  231. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts.map +1 -1
  232. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.d.ts.map +1 -1
  233. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.js +9 -0
  234. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +3 -1
  235. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
  236. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +13 -1
  237. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
  238. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +86 -46
  239. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -1
  240. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
  241. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +1 -1
  242. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
  243. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +50 -22
  244. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts +21 -1
  245. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
  246. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +93 -14
  247. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.d.ts.map +1 -1
  248. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.js +3 -1
  249. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts +7 -2
  250. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts.map +1 -1
  251. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.js +7 -3
  252. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/audit-emitter.js +8 -0
  253. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.d.ts.map +1 -1
  254. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.js +17 -10
  255. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
  256. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.js +7 -0
  257. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts +4 -0
  258. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts.map +1 -1
  259. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +1 -1
  260. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
  261. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
  262. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +318 -32
  263. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts +1 -1
  264. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
  265. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +46 -16
  266. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts +14 -0
  267. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts.map +1 -1
  268. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.js +26 -1
  269. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +10 -5
  270. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
  271. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +2 -2
  272. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
  273. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
  274. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
  275. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
  276. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
  277. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +2 -2
  278. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  279. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/paths.d.ts.map +1 -1
  280. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/paths.js +11 -5
  281. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +2 -2
  282. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  283. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -1
  284. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
  285. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +50 -0
  286. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts +3 -0
  287. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
  288. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +114 -44
  289. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts +14 -0
  290. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts.map +1 -1
  291. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.js +14 -0
  292. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +2 -2
  293. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  294. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
  295. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +9 -2
  296. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +1 -1
  297. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +9 -1
  298. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
  299. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +9 -1
  300. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts +5 -0
  301. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
  302. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +229 -33
  303. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +62 -0
  304. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
  305. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
  306. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +24 -4
  307. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts +4 -2
  308. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
  309. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +0 -0
  310. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
  311. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +119 -5
  312. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts +2 -1
  313. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts.map +1 -1
  314. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.js +26 -11
  315. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  316. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +86 -9
  317. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
  318. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -3
  319. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  320. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +14 -12
  321. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/sourceMixPlanning.js +0 -0
  322. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts +1 -1
  323. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts.map +1 -1
  324. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.js +9 -1
  325. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +2 -2
  326. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  327. package/node_modules/@oscharko-dev/keiko-sdk/package.json +2 -2
  328. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  329. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.d.ts.map +1 -1
  330. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.js +4 -2
  331. package/node_modules/@oscharko-dev/keiko-security/package.json +2 -2
  332. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  333. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
  334. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +6 -1
  335. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +2 -0
  336. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
  337. package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +62 -12
  338. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts +1 -1
  339. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts.map +1 -1
  340. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.js +4 -3
  341. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts +18 -3
  342. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts.map +1 -1
  343. package/node_modules/@oscharko-dev/keiko-server/dist/files.js +208 -72
  344. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.d.ts.map +1 -1
  345. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.js +7 -2
  346. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts +3 -0
  347. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts.map +1 -1
  348. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.js +27 -4
  349. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
  350. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +46 -14
  351. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -0
  352. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
  353. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +433 -31
  354. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
  355. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +5 -3
  356. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts +9 -0
  357. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  358. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +194 -45
  359. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts +4 -0
  360. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
  361. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +100 -24
  362. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +7 -0
  363. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  364. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +196 -20
  365. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.d.ts.map +1 -1
  366. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.js +21 -1
  367. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -1
  368. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
  369. package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -1
  370. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +9 -6
  371. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  372. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +189 -66
  373. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
  374. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +198 -72
  375. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts +1 -1
  376. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts.map +1 -1
  377. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.js +6 -5
  378. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +10 -2
  379. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
  380. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +110 -30
  381. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts +13 -4
  382. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts.map +1 -1
  383. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.js +29 -17
  384. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts +13 -3
  385. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
  386. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +54 -5
  387. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  388. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +84 -12
  389. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
  390. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +16 -8
  391. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +6 -2
  392. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  393. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +13 -1
  394. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
  395. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +15 -2
  396. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
  397. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
  398. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +2 -2
  399. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -1
  400. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  401. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +138 -19
  402. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.d.ts.map +1 -1
  403. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +26 -7
  404. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  405. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +26 -7
  406. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  407. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +28 -5
  408. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts.map +1 -1
  409. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.js +11 -0
  410. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  411. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +90 -19
  412. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +4 -1
  413. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  414. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +17 -3
  415. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
  416. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +19 -2
  417. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  418. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +4 -2
  419. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
  420. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +6 -1
  421. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts +2 -2
  422. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
  423. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +84 -8
  424. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.d.ts.map +1 -1
  425. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.js +4 -2
  426. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts +1 -1
  427. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts.map +1 -1
  428. package/node_modules/@oscharko-dev/keiko-server/dist/store/paths.d.ts.map +1 -1
  429. package/node_modules/@oscharko-dev/keiko-server/dist/store/paths.js +9 -2
  430. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts +5 -1
  431. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts.map +1 -1
  432. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
  433. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.js +67 -14
  434. package/node_modules/@oscharko-dev/keiko-server/package.json +2 -2
  435. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  436. package/node_modules/@oscharko-dev/keiko-tools/package.json +2 -2
  437. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  438. package/node_modules/@oscharko-dev/keiko-verification/package.json +2 -2
  439. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  440. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts +2 -0
  441. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts.map +1 -1
  442. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.js +45 -10
  443. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts +1 -1
  444. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts.map +1 -1
  445. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.js +1 -1
  446. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
  447. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +4 -6
  448. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts +30 -0
  449. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts.map +1 -0
  450. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.js +114 -0
  451. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  452. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +58 -23
  453. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.d.ts.map +1 -1
  454. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.js +15 -7
  455. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
  456. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +28 -4
  457. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
  458. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +51 -1
  459. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.d.ts.map +1 -1
  460. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.js +8 -3
  461. package/node_modules/@oscharko-dev/keiko-workflows/package.json +2 -2
  462. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  463. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts +1 -0
  464. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts.map +1 -1
  465. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.js +1 -0
  466. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.d.ts.map +1 -1
  467. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.js +84 -27
  468. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.d.ts.map +1 -1
  469. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.js +22 -0
  470. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.d.ts.map +1 -1
  471. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.js +6 -3
  472. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
  473. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +72 -25
  474. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts +15 -0
  475. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -0
  476. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +107 -0
  477. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts +18 -0
  478. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -0
  479. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +42 -0
  480. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  481. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +4 -11
  482. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts +2 -0
  483. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -0
  484. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.js +15 -0
  485. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +2 -2
  486. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
  487. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +89 -75
  488. package/node_modules/@oscharko-dev/keiko-workspace/package.json +2 -2
  489. package/node_modules/@types/node/README.md +1 -1
  490. package/node_modules/@types/node/http2.d.ts +1 -0
  491. package/node_modules/@types/node/package.json +2 -2
  492. package/package.json +3 -1
  493. package/dist/ui/static/_next/static/BNiyfCos3TiM2QdurajIZ/_buildManifest.js +0 -1
  494. package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.js +0 -1
  495. package/dist/ui/static/_next/static/chunks/664-6d821dc1aacb6b48.js +0 -1
  496. package/dist/ui/static/_next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
  497. package/dist/ui/static/_next/static/chunks/923-4141696576191bc0.js +0 -1
  498. package/dist/ui/static/_next/static/chunks/982-abc19630e6305864.js +0 -1
  499. package/dist/ui/static/_next/static/chunks/app/_not-found/page-03d642dcd0f15b52.js +0 -1
  500. package/dist/ui/static/_next/static/chunks/app/launch/page-c725ff0c02b50663.js +0 -1
  501. package/dist/ui/static/_next/static/chunks/app/layout-aadefe615729db05.js +0 -1
  502. package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-4a7f242906e19a07.js +0 -1
  503. package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-3361769b8964e659.js +0 -1
  504. package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-44b3f4fa3e10085f.js +0 -1
  505. package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-0cdfb3eeb659daeb.js +0 -1
  506. package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-e78e0cd2876fec41.js +0 -1
  507. package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-e32fe86466827484.js +0 -1
  508. package/dist/ui/static/_next/static/chunks/app/page-9ad91065d05ddfa0.js +0 -1
  509. package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
  510. package/dist/ui/static/_next/static/chunks/main-app-b52a8fa1d8127a5f.js +0 -1
  511. package/dist/ui/static/_next/static/chunks/main-bc552b04f2b6dbe2.js +0 -1
  512. package/dist/ui/static/_next/static/chunks/pages/_app-2e239ff05bfdf6d6.js +0 -1
  513. package/dist/ui/static/_next/static/chunks/pages/_error-bda15e7831eec981.js +0 -1
  514. package/dist/ui/static/_next/static/chunks/webpack-0cfe6f51555ca84e.js +0 -1
  515. package/dist/ui/static/_next/static/css/51fdcfdc624e723d.css +0 -1
  516. /package/dist/ui/static/_next/static/{BNiyfCos3TiM2QdurajIZ → Hb6brrvZY2nZtizQlYhVt}/_ssgManifest.js +0 -0
  517. /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
@@ -1,15 +1,21 @@
1
1
  // Read-only filesystem browser for the desktop Files widget. The browser receives
2
- // only metadata or redacted preview content; every request is contained inside a
3
- // registered project root after realpath resolution.
4
- import { lstat, opendir, open, readFile, realpath, stat } from "node:fs/promises";
2
+ // preview or editor content; every request is contained inside a selected root after
3
+ // realpath resolution.
4
+ import { lstat, opendir, open, readFile, realpath, stat, writeFile } from "node:fs/promises";
5
5
  import { basename, dirname, extname, isAbsolute, join, parse as parsePath, posix as pathPosix, relative, resolve, } from "node:path";
6
- import { compileIgnore, isIgnored } from "@oscharko-dev/keiko-workspace";
6
+ import { redact } from "@oscharko-dev/keiko-security";
7
7
  import { DENIED_MESSAGE, pathIsDenied } from "./files-deny.js";
8
8
  import { errorBody } from "./routes.js";
9
9
  const MAX_DIRECTORY_ENTRIES = 1_000;
10
10
  const MAX_TEXT_PREVIEW_BYTES = 1_000_000;
11
11
  const MAX_IMAGE_PREVIEW_BYTES = 3_000_000;
12
- const MAX_IGNORED_SCAN_ENTRIES = 10_000;
12
+ const staticFilesMetadataRedactor = (value) => typeof value === "string" ? redact(value) : value;
13
+ class BodyTooLargeError extends Error {
14
+ constructor() {
15
+ super("request body too large");
16
+ this.name = "BodyTooLargeError";
17
+ }
18
+ }
13
19
  class FilesError extends Error {
14
20
  status;
15
21
  code;
@@ -33,6 +39,12 @@ async function runFilesHandler(work) {
33
39
  throw error;
34
40
  }
35
41
  }
42
+ function isRecord(value) {
43
+ return typeof value === "object" && value !== null && !Array.isArray(value);
44
+ }
45
+ function isRouteResult(value) {
46
+ return isRecord(value) && typeof value.status === "number" && "body" in value;
47
+ }
36
48
  async function resolveDirectory(candidate) {
37
49
  let resolved;
38
50
  try {
@@ -50,15 +62,27 @@ async function resolveDirectory(candidate) {
50
62
  function projectFor(store, projectId) {
51
63
  return store.listProjects().find((project) => project.path === projectId);
52
64
  }
53
- function rootNameIsDenied(rootPath) {
54
- return pathIsDenied(basename(rootPath));
65
+ function rootPathIsDenied(rootPath) {
66
+ return pathIsDenied(rootPath);
55
67
  }
56
- async function resolveRegisteredRoot(project) {
57
- if (rootNameIsDenied(project.path)) {
68
+ function assertMetadataSafe(value, redactor) {
69
+ const redacted = redactor(value);
70
+ if (typeof redacted === "string" && redacted !== value) {
71
+ throw new FilesError(403, "DENIED", DENIED_MESSAGE);
72
+ }
73
+ }
74
+ function metadataIsSafe(value, redactor) {
75
+ const redacted = redactor(value);
76
+ return typeof redacted !== "string" || redacted === value;
77
+ }
78
+ async function resolveRegisteredRoot(project, redactor) {
79
+ assertMetadataSafe(project.path, redactor);
80
+ if (rootPathIsDenied(project.path)) {
58
81
  throw new FilesError(403, "DENIED", DENIED_MESSAGE);
59
82
  }
60
83
  const realRoot = await resolveDirectory(project.path);
61
- if (rootNameIsDenied(realRoot)) {
84
+ assertMetadataSafe(realRoot, redactor);
85
+ if (rootPathIsDenied(realRoot)) {
62
86
  throw new FilesError(403, "DENIED", DENIED_MESSAGE);
63
87
  }
64
88
  return { root: project.path, realRoot };
@@ -70,27 +94,29 @@ async function resolveRegisteredRoot(project) {
70
94
  // innocuous). Browse and connect therefore accept the identical set of roots. The deny check runs
71
95
  // once on the raw input and again on the realpath, so a symlink whose target lands in a denied
72
96
  // location is caught after resolution.
73
- async function resolveArbitraryRoot(rootInput) {
97
+ async function resolveArbitraryRoot(rootInput, redactor) {
74
98
  if (!isAbsolute(rootInput)) {
75
99
  throw new FilesError(400, "BAD_ROOT", "The root must be an absolute directory path.");
76
100
  }
101
+ assertMetadataSafe(rootInput, redactor);
77
102
  if (pathIsDenied(rootInput)) {
78
103
  throw new FilesError(403, "DENIED", DENIED_MESSAGE);
79
104
  }
80
105
  const realRoot = await resolveDirectory(rootInput);
106
+ assertMetadataSafe(realRoot, redactor);
81
107
  if (pathIsDenied(realRoot)) {
82
108
  throw new FilesError(403, "DENIED", DENIED_MESSAGE);
83
109
  }
84
110
  return { root: rootInput, realRoot };
85
111
  }
86
- async function resolveRoot(store, rootInput) {
112
+ async function resolveRoot(store, rootInput, redactor) {
87
113
  if (rootInput === null || rootInput.trim().length === 0) {
88
114
  throw new FilesError(400, "BAD_REQUEST", "The root query parameter is required.");
89
115
  }
90
116
  const project = projectFor(store, rootInput);
91
117
  return project === undefined
92
- ? resolveArbitraryRoot(rootInput.trim())
93
- : resolveRegisteredRoot(project);
118
+ ? resolveArbitraryRoot(rootInput.trim(), redactor)
119
+ : resolveRegisteredRoot(project, redactor);
94
120
  }
95
121
  function directoryRoots(projectRoot) {
96
122
  return [{ label: "Project root", path: projectRoot }];
@@ -142,22 +168,25 @@ function normalizeDirectoryPath(pathInput, registeredRoot, realRoot) {
142
168
  }
143
169
  return candidate;
144
170
  }
145
- async function resolveDirectoryInsideRoot(store, rootInput, pathInput) {
146
- const root = await resolveRoot(store, rootInput);
171
+ async function resolveDirectoryInsideRoot(store, rootInput, pathInput, redactor) {
172
+ const root = await resolveRoot(store, rootInput, redactor);
147
173
  const candidate = normalizeDirectoryPath(pathInput, root.root, root.realRoot);
148
174
  const pathValue = await resolveDirectory(candidate);
175
+ assertMetadataSafe(pathValue, redactor);
149
176
  if (!isContained(root.realRoot, pathValue)) {
150
177
  throw new FilesError(403, "PATH_ESCAPE", "The requested path is outside the selected project.");
151
178
  }
152
179
  const relativePath = rootRelativePosixPath(root.realRoot, pathValue);
180
+ assertMetadataSafe(relativePath, redactor);
153
181
  if (pathIsDenied(relativePath)) {
154
182
  throw new FilesError(403, "DENIED", DENIED_MESSAGE);
155
183
  }
156
184
  return { ...root, path: pathValue, relativePath };
157
185
  }
158
- async function resolveInsideRoot(store, rootInput, pathInput) {
159
- const root = await resolveRoot(store, rootInput);
186
+ async function resolveInsideRoot(store, rootInput, pathInput, redactor) {
187
+ const root = await resolveRoot(store, rootInput, redactor);
160
188
  const relativePath = normalizeRelativePath(pathInput);
189
+ assertMetadataSafe(relativePath, redactor);
161
190
  // Deny check runs BEFORE realpath so existence of a denied path is not
162
191
  // observable via the 403/404 status-code difference. A non-existent denied
163
192
  // path returns 403, identical to an existing denied path.
@@ -176,6 +205,7 @@ async function resolveInsideRoot(store, rootInput, pathInput) {
176
205
  throw new FilesError(403, "PATH_ESCAPE", "The requested path is outside the selected root.");
177
206
  }
178
207
  const targetRelativePath = rootRelativePosixPath(root.realRoot, target);
208
+ assertMetadataSafe(targetRelativePath, redactor);
179
209
  if (pathIsDenied(targetRelativePath)) {
180
210
  throw new FilesError(403, "DENIED", DENIED_MESSAGE);
181
211
  }
@@ -190,7 +220,7 @@ async function resolveInsideRoot(store, rootInput, pathInput) {
190
220
  symlink: linkStats.isSymbolicLink(),
191
221
  };
192
222
  }
193
- async function directoryEntries(root, pathValue) {
223
+ async function directoryEntries(root, pathValue, redactor) {
194
224
  const entries = [];
195
225
  const dir = await opendir(pathValue);
196
226
  try {
@@ -199,6 +229,8 @@ async function directoryEntries(root, pathValue) {
199
229
  continue;
200
230
  const entryPath = join(pathValue, entry.name);
201
231
  const relativePath = rootRelativePosixPath(root, entryPath);
232
+ if (!metadataIsSafe(relativePath, redactor))
233
+ continue;
202
234
  if (pathIsDenied(relativePath))
203
235
  continue;
204
236
  entries.push({ name: entry.name, path: entryPath });
@@ -209,12 +241,12 @@ async function directoryEntries(root, pathValue) {
209
241
  }
210
242
  return entries.sort((a, b) => a.name.localeCompare(b.name));
211
243
  }
212
- export async function listFilesDirectories(store, rootInput, pathInput) {
213
- const target = await resolveDirectoryInsideRoot(store, rootInput, pathInput);
244
+ export async function listFilesDirectories(store, rootInput, pathInput, redactor = staticFilesMetadataRedactor) {
245
+ const target = await resolveDirectoryInsideRoot(store, rootInput, pathInput, redactor);
214
246
  return {
215
247
  path: target.path,
216
248
  parent: parentPath(target.path, target.realRoot),
217
- entries: await directoryEntries(target.realRoot, target.path),
249
+ entries: await directoryEntries(target.realRoot, target.path, redactor),
218
250
  roots: directoryRoots(target.root),
219
251
  };
220
252
  }
@@ -227,8 +259,9 @@ function extensionOf(name) {
227
259
  const ext = extname(lower).replace(/^\./u, "");
228
260
  return ext.length > 0 ? ext : null;
229
261
  }
230
- async function classifyEntry(root, parentRelativePath, parentNativePath, entry) {
262
+ async function classifyEntry(root, parentRelativePath, parentNativePath, entry, redactor) {
231
263
  const childRelativePath = parentRelativePath.length === 0 ? entry.name : `${parentRelativePath}/${entry.name}`;
264
+ assertMetadataSafe(childRelativePath, redactor);
232
265
  const entryPath = join(parentNativePath, entry.name);
233
266
  const linkStats = await lstat(entryPath);
234
267
  const symlink = linkStats.isSymbolicLink();
@@ -270,57 +303,29 @@ function entryRank(entry) {
270
303
  function childRelative(parentRelativePath, name) {
271
304
  return parentRelativePath.length === 0 ? name : `${parentRelativePath}/${name}`;
272
305
  }
273
- // Best-effort: read the project root's `.gitignore` if present. Silent failure
274
- // is intentional — `.gitignore` is tier-2 noise reduction, not a safety
275
- // boundary (deny-list is tier 1). A missing/unreadable `.gitignore` is "no
276
- // filter". No long-lived cache: the BFF is stateless across user-selected roots.
277
- async function loadRootGitignore(rootPath) {
278
- let raw;
279
- try {
280
- raw = await readFile(join(rootPath, ".gitignore"), "utf8");
281
- }
282
- catch {
283
- return null;
284
- }
285
- const withoutBom = raw.charCodeAt(0) === 0xfeff ? raw.slice(1) : raw;
286
- return compileIgnore(withoutBom.split("\n"));
287
- }
288
- function skipEntry(matcher, rel, isDir) {
289
- if (pathIsDenied(rel))
290
- return "denied";
291
- return matcher !== null && isIgnored(matcher, rel, isDir) ? "ignored" : null;
306
+ function skipEntry(rel) {
307
+ return pathIsDenied(rel);
292
308
  }
293
- async function listTreeEntries(root, relativePath, pathValue, matcher) {
309
+ async function listTreeEntries(root, relativePath, pathValue, redactor) {
294
310
  const entries = [];
295
311
  const dir = await opendir(pathValue);
296
312
  let truncated = false;
297
- let ignoredScans = 0;
298
313
  try {
299
314
  for await (const entry of dir) {
300
- // Deny and .gitignore filtering happen BEFORE the truncation counter so
301
- // a directory packed with denied entries (e.g. node_modules/**) cannot
302
- // exhaust the 1000-entry budget and hide real files behind
303
- // `truncated: true`. Deny is applied by the link name (the user only
304
- // sees that name) so a symlink whose own name matches a deny pattern is
305
- // denied even if its target does not — matches the workspace-layer
306
- // semantics.
315
+ // Deny filtering happens BEFORE the truncation counter so a directory packed with denied
316
+ // entries (e.g. node_modules/**) cannot exhaust the 1000-entry budget and hide real files
317
+ // behind `truncated: true`. .gitignore is intentionally not a Files visibility filter:
318
+ // safe dotfiles and generated files must remain visible and connectable.
307
319
  const rel = childRelative(relativePath, entry.name);
308
- const skipReason = skipEntry(matcher, rel, entry.isDirectory());
309
- if (skipReason === "denied")
320
+ if (!metadataIsSafe(rel, redactor))
310
321
  continue;
311
- if (skipReason === "ignored") {
312
- ignoredScans += 1;
313
- if (ignoredScans >= MAX_IGNORED_SCAN_ENTRIES) {
314
- truncated = true;
315
- break;
316
- }
322
+ if (skipEntry(rel))
317
323
  continue;
318
- }
319
324
  if (entries.length >= MAX_DIRECTORY_ENTRIES) {
320
325
  truncated = true;
321
326
  break;
322
327
  }
323
- entries.push(await classifyEntry(root, relativePath, pathValue, entry));
328
+ entries.push(await classifyEntry(root, relativePath, pathValue, entry, redactor));
324
329
  }
325
330
  }
326
331
  finally {
@@ -329,16 +334,12 @@ async function listTreeEntries(root, relativePath, pathValue, matcher) {
329
334
  entries.sort((a, b) => entryRank(a) - entryRank(b) || a.name.localeCompare(b.name));
330
335
  return { entries, truncated };
331
336
  }
332
- export async function readFilesTree(store, rootInput, pathInput) {
333
- const target = await resolveInsideRoot(store, rootInput, pathInput);
337
+ export async function readFilesTree(store, rootInput, pathInput, redactor = staticFilesMetadataRedactor) {
338
+ const target = await resolveInsideRoot(store, rootInput, pathInput, redactor);
334
339
  if (!target.stats.isDirectory()) {
335
340
  throw new FilesError(400, "NOT_DIRECTORY", "The requested path is not a directory.");
336
341
  }
337
- // Per-request: read the project root's `.gitignore` once. Best-effort noise
338
- // reduction only; the matcher never relaxes the deny list. No long-lived
339
- // cache — the BFF must stay stateless across user-selected roots.
340
- const ignoreMatcher = await loadRootGitignore(target.realRoot);
341
- const listed = await listTreeEntries(target.realRoot, target.relativePath, target.path, ignoreMatcher);
342
+ const listed = await listTreeEntries(target.realRoot, target.relativePath, target.path, redactor);
342
343
  return {
343
344
  root: target.root,
344
345
  path: target.relativePath,
@@ -439,6 +440,57 @@ async function readPrefix(pathValue, maxBytes) {
439
440
  await file.close();
440
441
  }
441
442
  }
443
+ async function readBody(req, maxBytes) {
444
+ return new Promise((resolveBody, reject) => {
445
+ const chunks = [];
446
+ let total = 0;
447
+ let capped = false;
448
+ req.on("data", (chunk) => {
449
+ total += chunk.length;
450
+ if (total > maxBytes) {
451
+ if (!capped) {
452
+ capped = true;
453
+ chunks.length = 0;
454
+ reject(new BodyTooLargeError());
455
+ req.resume();
456
+ }
457
+ return;
458
+ }
459
+ chunks.push(chunk);
460
+ });
461
+ req.on("end", () => {
462
+ if (!capped)
463
+ resolveBody(Buffer.concat(chunks).toString("utf8"));
464
+ });
465
+ req.on("error", reject);
466
+ });
467
+ }
468
+ async function readJsonObject(req, maxBytes) {
469
+ let raw;
470
+ try {
471
+ raw = await readBody(req, maxBytes);
472
+ }
473
+ catch (error) {
474
+ if (error instanceof BodyTooLargeError) {
475
+ return {
476
+ status: 413,
477
+ body: errorBody("PAYLOAD_TOO_LARGE", "Request body exceeds the size limit."),
478
+ };
479
+ }
480
+ throw error;
481
+ }
482
+ let parsed;
483
+ try {
484
+ parsed = raw.length === 0 ? {} : JSON.parse(raw);
485
+ }
486
+ catch {
487
+ return { status: 400, body: errorBody("BAD_REQUEST", "Request body is not valid JSON.") };
488
+ }
489
+ if (!isRecord(parsed)) {
490
+ return { status: 400, body: errorBody("BAD_REQUEST", "Request body must be a JSON object.") };
491
+ }
492
+ return parsed;
493
+ }
442
494
  function basePreview(target) {
443
495
  const name = basename(target.relativePath);
444
496
  const extension = extensionOf(name);
@@ -477,8 +529,58 @@ async function textPreview(target, base, redactor) {
477
529
  maxBytes: MAX_TEXT_PREVIEW_BYTES,
478
530
  };
479
531
  }
480
- export async function readFilesPreview(store, rootInput, pathInput, redactor) {
481
- const target = await resolveInsideRoot(store, rootInput, pathInput);
532
+ async function editableTextContent(target, base) {
533
+ if (target.stats.size > MAX_TEXT_PREVIEW_BYTES) {
534
+ throw new FilesError(413, "FILE_TOO_LARGE", `This file is too large to edit here (limit ${String(MAX_TEXT_PREVIEW_BYTES)} bytes).`);
535
+ }
536
+ const content = await readFile(target.path, "utf8");
537
+ return {
538
+ ...base,
539
+ content,
540
+ maxBytes: MAX_TEXT_PREVIEW_BYTES,
541
+ };
542
+ }
543
+ export async function readFilesContent(store, rootInput, pathInput, redactor = staticFilesMetadataRedactor) {
544
+ const target = await resolveInsideRoot(store, rootInput, pathInput, redactor);
545
+ if (!target.stats.isFile()) {
546
+ throw new FilesError(400, "NOT_FILE", "The requested path is not a file.");
547
+ }
548
+ const base = basePreview(target);
549
+ const prefix = await readPrefix(target.path, Math.min(target.stats.size, 4096));
550
+ if (!isKnownTextExtension(base.extension) && !isLikelyUtf8Text(prefix.buffer)) {
551
+ throw new FilesError(400, "UNSUPPORTED_FILE", "This file cannot be edited in the workspace.");
552
+ }
553
+ return editableTextContent(target, base);
554
+ }
555
+ export async function writeFilesContent(args) {
556
+ const target = await resolveInsideRoot(args.store, args.rootInput, args.pathInput, args.redactor ?? staticFilesMetadataRedactor);
557
+ if (!target.stats.isFile()) {
558
+ throw new FilesError(400, "NOT_FILE", "The requested path is not a file.");
559
+ }
560
+ const base = basePreview(target);
561
+ const prefix = await readPrefix(target.path, Math.min(target.stats.size, 4096));
562
+ if (!isKnownTextExtension(base.extension) && !isLikelyUtf8Text(prefix.buffer)) {
563
+ throw new FilesError(400, "UNSUPPORTED_FILE", "This file cannot be edited in the workspace.");
564
+ }
565
+ if (args.expectedModifiedAt !== undefined &&
566
+ Math.abs(target.stats.mtimeMs - args.expectedModifiedAt) > 1) {
567
+ throw new FilesError(409, "WRITE_CONFLICT", "This file changed on disk. Reload it before saving again.");
568
+ }
569
+ if (Buffer.byteLength(args.content, "utf8") > MAX_TEXT_PREVIEW_BYTES) {
570
+ throw new FilesError(413, "FILE_TOO_LARGE", `This file is too large to edit here (limit ${String(MAX_TEXT_PREVIEW_BYTES)} bytes).`);
571
+ }
572
+ await writeFile(target.path, args.content, "utf8");
573
+ const updatedStats = await stat(target.path);
574
+ return {
575
+ ...base,
576
+ sizeBytes: updatedStats.size,
577
+ modifiedAt: updatedStats.mtimeMs,
578
+ content: args.content,
579
+ maxBytes: MAX_TEXT_PREVIEW_BYTES,
580
+ };
581
+ }
582
+ export async function readFilesPreview(store, rootInput, pathInput, redactor = staticFilesMetadataRedactor) {
583
+ const target = await resolveInsideRoot(store, rootInput, pathInput, redactor);
482
584
  if (!target.stats.isFile()) {
483
585
  throw new FilesError(400, "NOT_FILE", "The requested path is not a file.");
484
586
  }
@@ -497,14 +599,14 @@ export async function handleFilesDirectories(ctx, deps) {
497
599
  const requestedPath = ctx.url.searchParams.get("path") ?? undefined;
498
600
  return {
499
601
  status: 200,
500
- body: await listFilesDirectories(deps.store, requestedRoot, requestedPath),
602
+ body: await listFilesDirectories(deps.store, requestedRoot, requestedPath, deps.redactor),
501
603
  };
502
604
  });
503
605
  }
504
606
  export async function handleFilesTree(ctx, deps) {
505
607
  return runFilesHandler(async () => ({
506
608
  status: 200,
507
- body: await readFilesTree(deps.store, ctx.url.searchParams.get("root"), ctx.url.searchParams.get("path")),
609
+ body: await readFilesTree(deps.store, ctx.url.searchParams.get("root"), ctx.url.searchParams.get("path"), deps.redactor),
508
610
  }));
509
611
  }
510
612
  export async function handleFilesPreview(ctx, deps) {
@@ -513,3 +615,37 @@ export async function handleFilesPreview(ctx, deps) {
513
615
  body: await readFilesPreview(deps.store, ctx.url.searchParams.get("root"), ctx.url.searchParams.get("path"), deps.redactor),
514
616
  }));
515
617
  }
618
+ export async function handleFilesContent(ctx, deps) {
619
+ return runFilesHandler(async () => {
620
+ if ((ctx.req.method ?? "GET").toUpperCase() === "GET") {
621
+ return {
622
+ status: 200,
623
+ body: await readFilesContent(deps.store, ctx.url.searchParams.get("root"), ctx.url.searchParams.get("path"), deps.redactor),
624
+ };
625
+ }
626
+ const body = await readJsonObject(ctx.req, MAX_TEXT_PREVIEW_BYTES * 2 + 16_384);
627
+ if (isRouteResult(body))
628
+ return body;
629
+ const rootInput = typeof body.root === "string" ? body.root : null;
630
+ const pathInput = typeof body.path === "string" ? body.path : null;
631
+ const content = body.content;
632
+ if (rootInput === null || pathInput === null || typeof content !== "string") {
633
+ return {
634
+ status: 400,
635
+ body: errorBody("BAD_REQUEST", "root, path, and content are required for a file save request."),
636
+ };
637
+ }
638
+ const expectedModifiedAt = typeof body.expectedModifiedAt === "number" ? body.expectedModifiedAt : undefined;
639
+ return {
640
+ status: 200,
641
+ body: await writeFilesContent({
642
+ store: deps.store,
643
+ rootInput,
644
+ pathInput,
645
+ content,
646
+ expectedModifiedAt,
647
+ redactor: deps.redactor,
648
+ }),
649
+ };
650
+ });
651
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"grounded-answer.d.ts","sourceRoot":"","sources":["../src/grounded-answer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,oBAAoB,CAAC;AAwDlE,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAgBtB"}
1
+ {"version":3,"file":"grounded-answer.d.ts","sourceRoot":"","sources":["../src/grounded-answer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,oBAAoB,CAAC;AA2DlE,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASrE;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAgBtB"}
@@ -1,5 +1,6 @@
1
1
  const SAFE_GROUNDED_FALLBACK = "I could not produce a clean grounded answer from the retrieved repository evidence.";
2
- const ORCHESTRATION_PREFIX_RE = /^(searching for\b|search query\b|we need to call search\b|let'?s search\b|calling search\b|tool call\b|plan\b:)/i;
2
+ const ORCHESTRATION_PREFIX_RE = /^(searching for\b|search query\b|we need to call search\b|let'?s search\b|calling search\b|tool call\b|plan\b:|system prompt\b:|developer prompt\b:|internal planning\b:|internal reasoning\b:|hidden instruction\b:)/i;
3
+ const PROMPT_DISCLOSURE_RE = /^(system prompt\b:|developer prompt\b:|internal planning\b:|internal reasoning\b:|hidden instruction\b:)/i;
3
4
  const ARGUMENT_LINE_RE = /^(?:[{[]|["']?(?:path|query|max_results|maxResults|tool|arguments|scope|search)["']?\s*:)/i;
4
5
  function isFiniteCount(value) {
5
6
  return typeof value === "number" && Number.isFinite(value) && value >= 0;
@@ -42,7 +43,11 @@ function leadingContentIndex(lines) {
42
43
  export function sanitizeGroundedAnswerContent(content) {
43
44
  const lines = content.split("\n");
44
45
  const index = leadingContentIndex(lines);
45
- const sanitized = lines.slice(index).join("\n").trim();
46
+ const sanitized = lines
47
+ .slice(index)
48
+ .filter((line) => !PROMPT_DISCLOSURE_RE.test(line.trim()))
49
+ .join("\n")
50
+ .trim();
46
51
  return sanitized.length > 0 ? sanitized : SAFE_GROUNDED_FALLBACK;
47
52
  }
48
53
  export function normalizeGroundedAnswerPayload(payload) {
@@ -4,6 +4,8 @@ export interface GroundedContextIndexRegistryOptions {
4
4
  readonly ttlMs?: number;
5
5
  readonly maxEntriesPerScope?: number;
6
6
  readonly maxScopes?: number;
7
+ readonly sweepIntervalMs?: number;
8
+ readonly autoSweep?: boolean;
7
9
  }
8
10
  export interface GroundedContextIndexRegistry {
9
11
  forScope(scope: SelectedScope, nowMs: () => number): MicroIndex;
@@ -12,6 +14,7 @@ export interface GroundedContextIndexRegistry {
12
14
  clearAll(): void;
13
15
  sweep(nowMs: () => number): void;
14
16
  size(): number;
17
+ dispose(): void;
15
18
  }
16
19
  export declare function createGroundedContextIndexRegistry(options?: GroundedContextIndexRegistryOptions): GroundedContextIndexRegistry;
17
20
  export declare const groundedContextIndexRegistry: GroundedContextIndexRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"grounded-context-index.d.ts","sourceRoot":"","sources":["../src/grounded-context-index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC;IAChE,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,IAAI,IAAI,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,IAAI,MAAM,CAAC;CAChB;AAuJD,wBAAgB,kCAAkC,CAChD,OAAO,CAAC,EAAE,mCAAmC,GAC5C,4BAA4B,CAwB9B;AAED,eAAO,MAAM,4BAA4B,8BAAuC,CAAC;AAEjF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,GAAG,UAAU,CAEhG;AAED,wBAAgB,0CAA0C,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAEvF;AAED,wBAAgB,uCAAuC,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAEnF;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
1
+ {"version":3,"file":"grounded-context-index.d.ts","sourceRoot":"","sources":["../src/grounded-context-index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC;IAChE,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,IAAI,IAAI,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,IAAI,MAAM,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;CACjB;AAmKD,wBAAgB,kCAAkC,CAChD,OAAO,CAAC,EAAE,mCAAmC,GAC5C,4BAA4B,CAsC9B;AAED,eAAO,MAAM,4BAA4B,8BAAuC,CAAC;AAEjF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,GAAG,UAAU,CAEhG;AAED,wBAAgB,0CAA0C,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAEvF;AAED,wBAAgB,uCAAuC,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAEnF;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
@@ -3,21 +3,30 @@
3
3
  // and provides deterministic cleanup hooks for chat/project lifecycle changes. Nothing persists.
4
4
  import { createHash } from "node:crypto";
5
5
  import { createMicroIndex, DEFAULT_MICRO_INDEX, } from "@oscharko-dev/keiko-workflows";
6
- const DEFAULT_MAX_SCOPES = 128;
6
+ const DEFAULT_MAX_SCOPES = 32;
7
+ const DEFAULT_MAX_ENTRIES_PER_SCOPE = 8;
8
+ const DEFAULT_SWEEP_INTERVAL_MS = 60_000;
7
9
  function assertPositiveInteger(name, value) {
8
10
  if (!Number.isInteger(value) || value <= 0) {
9
11
  throw new RangeError(`${name} must be a positive integer`);
10
12
  }
11
13
  }
14
+ function optionOrDefault(value, fallback) {
15
+ return value ?? fallback;
16
+ }
12
17
  function resolveOptions(options) {
18
+ const provided = options ?? {};
13
19
  const resolved = {
14
- ttlMs: options?.ttlMs ?? DEFAULT_MICRO_INDEX.ttlMs,
15
- maxEntriesPerScope: options?.maxEntriesPerScope ?? DEFAULT_MICRO_INDEX.maxEntries,
16
- maxScopes: options?.maxScopes ?? DEFAULT_MAX_SCOPES,
20
+ ttlMs: optionOrDefault(provided.ttlMs, DEFAULT_MICRO_INDEX.ttlMs),
21
+ maxEntriesPerScope: optionOrDefault(provided.maxEntriesPerScope, DEFAULT_MAX_ENTRIES_PER_SCOPE),
22
+ maxScopes: optionOrDefault(provided.maxScopes, DEFAULT_MAX_SCOPES),
23
+ sweepIntervalMs: optionOrDefault(provided.sweepIntervalMs, DEFAULT_SWEEP_INTERVAL_MS),
24
+ autoSweep: optionOrDefault(provided.autoSweep, true),
17
25
  };
18
26
  assertPositiveInteger("ttlMs", resolved.ttlMs);
19
27
  assertPositiveInteger("maxEntriesPerScope", resolved.maxEntriesPerScope);
20
28
  assertPositiveInteger("maxScopes", resolved.maxScopes);
29
+ assertPositiveInteger("sweepIntervalMs", resolved.sweepIntervalMs);
21
30
  return resolved;
22
31
  }
23
32
  function sha256Hex(value) {
@@ -110,6 +119,14 @@ function clearEntries(entries) {
110
119
  export function createGroundedContextIndexRegistry(options) {
111
120
  const resolved = resolveOptions(options);
112
121
  const entries = new Map();
122
+ const sweepTimer = resolved.autoSweep
123
+ ? setInterval(() => {
124
+ evictExpired(entries, Date.now());
125
+ }, resolved.sweepIntervalMs)
126
+ : undefined;
127
+ if (sweepTimer !== undefined) {
128
+ sweepTimer.unref();
129
+ }
113
130
  return {
114
131
  forScope(scope, nowMs) {
115
132
  return getOrCreateScopeIndex(entries, resolved, scope, nowMs);
@@ -129,6 +146,12 @@ export function createGroundedContextIndexRegistry(options) {
129
146
  size() {
130
147
  return entries.size;
131
148
  },
149
+ dispose() {
150
+ if (sweepTimer !== undefined) {
151
+ clearInterval(sweepTimer);
152
+ }
153
+ clearEntries(entries);
154
+ },
132
155
  };
133
156
  }
134
157
  export const groundedContextIndexRegistry = createGroundedContextIndexRegistry();
@@ -1 +1 @@
1
- {"version":3,"file":"grounded-handoff.d.ts","sourceRoot":"","sources":["../src/grounded-handoff.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAYxE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAof7D,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAOtB"}
1
+ {"version":3,"file":"grounded-handoff.d.ts","sourceRoot":"","sources":["../src/grounded-handoff.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAYxE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA4hB7D,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAOtB"}