@oscharko-dev/keiko 0.2.0-beta.3 → 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 (499) 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/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/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/ui.d.ts.map +1 -1
  105. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +36 -11
  106. package/node_modules/@oscharko-dev/keiko-cli/package.json +2 -2
  107. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  108. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +20 -1
  109. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
  110. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts +1 -1
  111. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
  112. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +256 -75
  113. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +11 -0
  114. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
  115. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +6 -6
  116. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  117. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -4
  118. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts +11 -0
  119. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts.map +1 -1
  120. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.js +4 -0
  121. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts +1 -1
  122. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts.map +1 -1
  123. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.js +109 -4
  124. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts +2 -0
  125. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
  126. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.js +94 -7
  127. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts +5 -0
  128. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts.map +1 -1
  129. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.d.ts.map +1 -1
  130. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.js +3 -0
  131. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +14 -0
  132. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
  133. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +53 -5
  134. package/node_modules/@oscharko-dev/keiko-contracts/package.json +2 -2
  135. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  136. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.d.ts.map +1 -1
  137. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.js +11 -3
  138. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +2 -2
  139. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  140. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts +20 -1
  141. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts.map +1 -1
  142. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.js +34 -2
  143. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +1 -0
  144. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
  145. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +3 -1
  146. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +17 -0
  147. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
  148. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +19 -0
  149. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +5 -1
  150. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  151. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +32 -2
  152. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  153. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +259 -40
  154. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts +3 -0
  155. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts.map +1 -1
  156. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.js +48 -5
  157. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
  158. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +30 -13
  159. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts +1 -1
  160. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts.map +1 -1
  161. package/node_modules/@oscharko-dev/keiko-evidence/package.json +2 -2
  162. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  163. package/node_modules/@oscharko-dev/keiko-harness/package.json +2 -2
  164. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  165. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.d.ts.map +1 -1
  166. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.js +25 -1
  167. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts +1 -1
  168. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
  169. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +16 -0
  170. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts +3 -1
  171. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts.map +1 -1
  172. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.js +9 -5
  173. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.d.ts.map +1 -1
  174. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.js +22 -7
  175. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts +4 -1
  176. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts.map +1 -1
  177. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.js +61 -9
  178. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.d.ts.map +1 -1
  179. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.js +64 -36
  180. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts +2 -2
  181. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts.map +1 -1
  182. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.js +2 -2
  183. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts +7 -1
  184. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts.map +1 -1
  185. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.js +5 -1
  186. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts +1 -1
  187. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
  188. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +27 -4
  189. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts +5 -1
  190. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
  191. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +18 -5
  192. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.d.ts.map +1 -1
  193. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.js +10 -1
  194. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts +4 -1
  195. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
  196. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +370 -45
  197. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts +2 -0
  198. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts.map +1 -1
  199. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.js +8 -4
  200. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts +1 -1
  201. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts.map +1 -1
  202. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.js +10 -5
  203. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
  204. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +65 -20
  205. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts +1 -0
  206. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
  207. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +79 -0
  208. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
  209. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
  210. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
  211. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.d.ts.map +1 -1
  212. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.js +4 -0
  213. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +6 -5
  214. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
  215. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +4 -4
  216. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
  217. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +71 -29
  218. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
  219. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +253 -131
  220. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts +12 -0
  221. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts.map +1 -1
  222. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.d.ts.map +1 -1
  223. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.js +9 -0
  224. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +3 -1
  225. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
  226. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +13 -1
  227. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
  228. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +86 -46
  229. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -1
  230. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
  231. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +1 -1
  232. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
  233. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +50 -22
  234. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts +21 -1
  235. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
  236. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +90 -13
  237. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.d.ts.map +1 -1
  238. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.js +3 -1
  239. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts +7 -2
  240. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts.map +1 -1
  241. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.js +7 -3
  242. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/audit-emitter.js +8 -0
  243. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.d.ts.map +1 -1
  244. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.js +17 -10
  245. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
  246. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.js +7 -0
  247. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts +4 -0
  248. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts.map +1 -1
  249. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +1 -1
  250. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
  251. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
  252. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +318 -32
  253. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts +1 -1
  254. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
  255. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +46 -16
  256. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts +14 -0
  257. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts.map +1 -1
  258. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.js +26 -1
  259. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +10 -5
  260. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
  261. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +2 -2
  262. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
  263. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
  264. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
  265. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
  266. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
  267. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +2 -2
  268. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  269. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +2 -2
  270. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  271. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -1
  272. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
  273. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +50 -0
  274. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts +3 -0
  275. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
  276. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +114 -44
  277. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts +14 -0
  278. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts.map +1 -1
  279. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.js +14 -0
  280. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +2 -2
  281. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  282. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
  283. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +9 -2
  284. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +1 -1
  285. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +9 -1
  286. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
  287. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +9 -1
  288. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts +5 -0
  289. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
  290. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +229 -33
  291. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +62 -0
  292. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
  293. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
  294. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +24 -4
  295. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts +4 -2
  296. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
  297. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +0 -0
  298. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
  299. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +119 -5
  300. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts +2 -1
  301. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts.map +1 -1
  302. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.js +26 -11
  303. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  304. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +86 -9
  305. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
  306. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -3
  307. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  308. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +14 -12
  309. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/sourceMixPlanning.js +0 -0
  310. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts +1 -1
  311. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts.map +1 -1
  312. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.js +9 -1
  313. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +2 -2
  314. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  315. package/node_modules/@oscharko-dev/keiko-sdk/package.json +2 -2
  316. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  317. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.d.ts.map +1 -1
  318. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.js +4 -2
  319. package/node_modules/@oscharko-dev/keiko-security/package.json +2 -2
  320. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  321. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
  322. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +6 -1
  323. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +2 -0
  324. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
  325. package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +59 -9
  326. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts +1 -1
  327. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts.map +1 -1
  328. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.js +4 -3
  329. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts +18 -3
  330. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts.map +1 -1
  331. package/node_modules/@oscharko-dev/keiko-server/dist/files.js +208 -72
  332. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.d.ts.map +1 -1
  333. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.js +7 -2
  334. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts +3 -0
  335. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts.map +1 -1
  336. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.js +27 -4
  337. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
  338. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +46 -14
  339. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -0
  340. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
  341. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +433 -31
  342. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
  343. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +5 -3
  344. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts +9 -0
  345. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  346. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +194 -45
  347. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts +4 -0
  348. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
  349. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +100 -24
  350. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +7 -0
  351. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  352. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +196 -20
  353. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.d.ts.map +1 -1
  354. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.js +21 -1
  355. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -1
  356. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
  357. package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -1
  358. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +9 -6
  359. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  360. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +189 -66
  361. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
  362. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +189 -72
  363. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +10 -2
  364. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
  365. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +110 -30
  366. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts +13 -4
  367. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts.map +1 -1
  368. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.js +29 -17
  369. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts +13 -3
  370. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
  371. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +54 -5
  372. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  373. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +84 -12
  374. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
  375. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +16 -8
  376. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +6 -2
  377. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  378. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +13 -1
  379. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
  380. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +15 -2
  381. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
  382. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
  383. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +2 -2
  384. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -1
  385. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  386. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +138 -19
  387. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.d.ts.map +1 -1
  388. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +26 -7
  389. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  390. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +26 -7
  391. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  392. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +3 -1
  393. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  394. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +51 -15
  395. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +4 -1
  396. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  397. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +17 -3
  398. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
  399. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +6 -2
  400. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  401. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +4 -2
  402. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
  403. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +6 -1
  404. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts +2 -2
  405. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
  406. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +84 -8
  407. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.d.ts.map +1 -1
  408. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.js +4 -2
  409. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts +1 -1
  410. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts.map +1 -1
  411. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts +5 -1
  412. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts.map +1 -1
  413. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
  414. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.js +67 -14
  415. package/node_modules/@oscharko-dev/keiko-server/package.json +2 -2
  416. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  417. package/node_modules/@oscharko-dev/keiko-tools/package.json +2 -2
  418. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  419. package/node_modules/@oscharko-dev/keiko-verification/package.json +2 -2
  420. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  421. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts +2 -0
  422. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts.map +1 -1
  423. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.js +45 -10
  424. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts +1 -1
  425. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts.map +1 -1
  426. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.js +1 -1
  427. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
  428. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +4 -6
  429. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts +30 -0
  430. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts.map +1 -0
  431. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.js +114 -0
  432. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  433. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +20 -7
  434. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.d.ts.map +1 -1
  435. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.js +15 -7
  436. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
  437. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +28 -4
  438. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
  439. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +51 -1
  440. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.d.ts.map +1 -1
  441. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.js +8 -3
  442. package/node_modules/@oscharko-dev/keiko-workflows/package.json +2 -2
  443. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  444. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts +1 -0
  445. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts.map +1 -1
  446. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.js +1 -0
  447. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.d.ts.map +1 -1
  448. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.js +84 -27
  449. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.d.ts.map +1 -1
  450. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.js +19 -0
  451. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.d.ts.map +1 -1
  452. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.js +6 -3
  453. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
  454. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +72 -25
  455. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts +15 -0
  456. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -0
  457. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +107 -0
  458. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts +18 -0
  459. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -0
  460. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +42 -0
  461. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  462. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +4 -11
  463. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts +2 -0
  464. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -0
  465. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.js +15 -0
  466. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +2 -2
  467. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
  468. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +89 -75
  469. package/node_modules/@oscharko-dev/keiko-workspace/package.json +2 -2
  470. package/node_modules/@types/node/README.md +1 -1
  471. package/node_modules/@types/node/http2.d.ts +1 -0
  472. package/node_modules/@types/node/package.json +2 -2
  473. package/package.json +3 -1
  474. package/dist/ui/static/_next/static/RAzN8WLtYaktD-ZePowXl/_buildManifest.js +0 -1
  475. package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.js +0 -1
  476. package/dist/ui/static/_next/static/chunks/258-e3b5ee46b0669967.js +0 -1
  477. package/dist/ui/static/_next/static/chunks/422-4c94c107b90d3ccc.js +0 -1
  478. package/dist/ui/static/_next/static/chunks/664-6d821dc1aacb6b48.js +0 -1
  479. package/dist/ui/static/_next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
  480. package/dist/ui/static/_next/static/chunks/982-abc19630e6305864.js +0 -1
  481. package/dist/ui/static/_next/static/chunks/app/_not-found/page-c4d800f366186be0.js +0 -1
  482. package/dist/ui/static/_next/static/chunks/app/launch/page-17ca39367f25f372.js +0 -1
  483. package/dist/ui/static/_next/static/chunks/app/layout-0f75a39edc90325d.js +0 -1
  484. package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-87a2ea239308ed34.js +0 -1
  485. package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-98bb7704fc7fd0ad.js +0 -1
  486. package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-f912263f1ee5d2dd.js +0 -1
  487. package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-fa590f135356e0af.js +0 -1
  488. package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-b8555600c1113f14.js +0 -1
  489. package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-85cfbeb3598c0a36.js +0 -1
  490. package/dist/ui/static/_next/static/chunks/app/page-2881856ad25d9935.js +0 -1
  491. package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
  492. package/dist/ui/static/_next/static/chunks/main-app-5b043f6c611974ae.js +0 -1
  493. package/dist/ui/static/_next/static/chunks/main-bc552b04f2b6dbe2.js +0 -1
  494. package/dist/ui/static/_next/static/chunks/pages/_app-2e239ff05bfdf6d6.js +0 -1
  495. package/dist/ui/static/_next/static/chunks/pages/_error-bda15e7831eec981.js +0 -1
  496. package/dist/ui/static/_next/static/chunks/webpack-0cfe6f51555ca84e.js +0 -1
  497. package/dist/ui/static/_next/static/css/eac94895f3edc5a5.css +0 -1
  498. /package/dist/ui/static/_next/static/{RAzN8WLtYaktD-ZePowXl → Hb6brrvZY2nZtizQlYhVt}/_ssgManifest.js +0 -0
  499. /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
@@ -12,12 +12,57 @@
12
12
  // native dependency we have explicitly avoided in `@oscharko-dev/keiko-local-knowledge`.
13
13
  import { getCapsule } from "../capsule-lifecycle.js";
14
14
  import { RetrievalError } from "./types.js";
15
+ const SEARCH_EXCERPT_MAX_CHARS = 1_600;
16
+ const SEARCH_CONTEXT_BEFORE_CHARS = 420;
17
+ const EXACT_TERM_PATTERN = /[\p{L}\p{N}][\p{L}\p{N}._:/#-]{2,}/gu;
18
+ const BROAD_QUERY_PATTERN = /\b(compare|comparez|summari[sz]e|overview|explain|describe|analyse|analyze|erkl[aä]re|ueberblick|überblick|vergleiche|zusammenfassung)\b/iu;
19
+ const SEARCH_STOPWORDS = new Set([
20
+ "a",
21
+ "about",
22
+ "and",
23
+ "are",
24
+ "auf",
25
+ "aus",
26
+ "bei",
27
+ "das",
28
+ "der",
29
+ "die",
30
+ "ein",
31
+ "eine",
32
+ "einen",
33
+ "einer",
34
+ "eines",
35
+ "for",
36
+ "from",
37
+ "how",
38
+ "in",
39
+ "ist",
40
+ "mit",
41
+ "of",
42
+ "on",
43
+ "oder",
44
+ "sagen",
45
+ "steht",
46
+ "the",
47
+ "to",
48
+ "und",
49
+ "uber",
50
+ "ueber",
51
+ "über",
52
+ "von",
53
+ "was",
54
+ "what",
55
+ "wie",
56
+ "zu",
57
+ "zum",
58
+ "zur",
59
+ ]);
15
60
  // ─── Compose a scope object from either `ComposedRetrievalScope` or a single capsule ────
16
61
  export function toScopeInput(scope) {
17
62
  if ("capsuleId" in scope) {
18
63
  return { capsuleIds: [scope.capsuleId] };
19
64
  }
20
- return { capsuleIds: scope.capsuleIds };
65
+ return { capsuleIds: scope.capsuleIds, sourceFilter: scope.sourceIds };
21
66
  }
22
67
  const SELECT_VECTORS_FOR_CAPSULE_SQL = [
23
68
  "SELECT chunk_id, capsule_id, source_id, document_id, embedding,",
@@ -25,10 +70,21 @@ const SELECT_VECTORS_FOR_CAPSULE_SQL = [
25
70
  "FROM vectors",
26
71
  "WHERE capsule_id = :c",
27
72
  ].join(" ");
28
- function readVectorsForCapsule(store, capsuleId) {
73
+ function readVectorsForCapsule(store, capsuleId, sourceFilter) {
74
+ if (sourceFilter?.length === 0)
75
+ return [];
76
+ const params = { c: String(capsuleId) };
77
+ const sourceClause = sourceFilter === undefined
78
+ ? ""
79
+ : ` AND source_id IN (${sourceFilter.map((_, i) => `:s${String(i)}`).join(", ")})`;
80
+ if (sourceFilter !== undefined) {
81
+ for (let i = 0; i < sourceFilter.length; i += 1) {
82
+ params[`s${String(i)}`] = String(sourceFilter[i]);
83
+ }
84
+ }
29
85
  const rows = store._internal.db
30
- .prepare(SELECT_VECTORS_FOR_CAPSULE_SQL)
31
- .all({ c: String(capsuleId) });
86
+ .prepare(`${SELECT_VECTORS_FOR_CAPSULE_SQL}${sourceClause}`)
87
+ .all(params);
32
88
  return rows;
33
89
  }
34
90
  function readCitationRows(store, capsuleId, chunkIds) {
@@ -38,8 +94,24 @@ function readCitationRows(store, capsuleId, chunkIds) {
38
94
  const sql = [
39
95
  "SELECT c.id AS chunk_id, c.capsule_id, c.source_id, c.document_id,",
40
96
  " d.safe_display_name AS safe_display_name,",
41
- " pu.page_number, pu.page_label, pu.section_path_json,",
42
- " pu.character_start, pu.character_end",
97
+ " COALESCE(pu.page_number, (",
98
+ " SELECT p.page_number FROM pages p",
99
+ " WHERE p.capsule_id = c.capsule_id AND p.document_id = c.document_id",
100
+ " AND p.character_start <= COALESCE(c.character_start, pu.character_start)",
101
+ " AND p.character_end >= COALESCE(c.character_end, pu.character_end)",
102
+ " ORDER BY p.page_number ASC LIMIT 1",
103
+ " )) AS page_number,",
104
+ " COALESCE(pu.page_label, (",
105
+ " SELECT p.page_label FROM pages p",
106
+ " WHERE p.capsule_id = c.capsule_id AND p.document_id = c.document_id",
107
+ " AND p.character_start <= COALESCE(c.character_start, pu.character_start)",
108
+ " AND p.character_end >= COALESCE(c.character_end, pu.character_end)",
109
+ " ORDER BY p.page_number ASC LIMIT 1",
110
+ " )) AS page_label,",
111
+ " COALESCE(pu.section_path_json, pu.heading_path_json) AS section_path_json,",
112
+ " pu.json_pointer, pu.table_name, pu.row_index,",
113
+ " COALESCE(c.character_start, pu.character_start) AS character_start,",
114
+ " COALESCE(c.character_end, pu.character_end) AS character_end",
43
115
  "FROM chunks c",
44
116
  "LEFT JOIN documents d ON d.capsule_id = c.capsule_id AND d.id = c.document_id",
45
117
  "LEFT JOIN parsed_units pu",
@@ -168,11 +240,14 @@ function rowToCitation(row) {
168
240
  ...(row.page_number !== null ? { pageNumber: row.page_number } : {}),
169
241
  ...(row.page_label !== null ? { pageLabel: row.page_label } : {}),
170
242
  ...(sectionPath !== undefined ? { sectionPath } : {}),
243
+ ...(row.json_pointer !== null ? { jsonPointer: row.json_pointer } : {}),
244
+ ...(row.table_name !== null ? { tableName: row.table_name } : {}),
245
+ ...(row.row_index !== null ? { rowIndex: row.row_index } : {}),
171
246
  ...(row.character_start !== null ? { characterStart: row.character_start } : {}),
172
247
  ...(row.character_end !== null ? { characterEnd: row.character_end } : {}),
173
248
  };
174
249
  }
175
- function scoreCapsuleVectors(rows, capsule, queryVector, topK, minScore) {
250
+ function scoreCapsuleVectors(rows, capsule, queryVector, candidateLimit, minScore) {
176
251
  const metric = capsule.embeddingModelIdentity.vectorMetric;
177
252
  const scored = [];
178
253
  for (const row of rows) {
@@ -189,10 +264,12 @@ function scoreCapsuleVectors(rows, capsule, queryVector, topK, minScore) {
189
264
  scored.push({ chunkId: row.chunk_id, capsuleId: capsule.id, score });
190
265
  }
191
266
  scored.sort(scoreDesc);
192
- return scored.slice(0, oversampleTopK(topK));
267
+ return scored.slice(0, candidateLimit);
193
268
  }
194
- function oversampleTopK(topK) {
195
- return Math.max(topK, Math.min(topK * 3, topK + 12));
269
+ function oversampleTopK(topK, profile) {
270
+ const multiplier = profile.strategy === "exact" ? 12 : profile.strategy === "broad" ? 10 : 8;
271
+ const cap = profile.strategy === "exact" ? topK + 96 : topK + 64;
272
+ return Math.max(topK, Math.min(topK * multiplier, cap));
196
273
  }
197
274
  function scoreDesc(a, b) {
198
275
  if (b.score !== a.score)
@@ -209,8 +286,8 @@ function emptyState() {
209
286
  embeddingFailed: false,
210
287
  };
211
288
  }
212
- async function processCapsule(store, embeddingAdapter, capsule, query, options, cache, state) {
213
- const rows = readVectorsForCapsule(store, capsule.id);
289
+ async function processCapsule(store, embeddingAdapter, capsule, sourceFilter, query, options, profile, cache, state) {
290
+ const rows = readVectorsForCapsule(store, capsule.id, sourceFilter);
214
291
  if (rows.length === 0)
215
292
  return;
216
293
  state.anyVectorSeen = true;
@@ -225,7 +302,7 @@ async function processCapsule(store, embeddingAdapter, capsule, query, options,
225
302
  return;
226
303
  }
227
304
  state.anyDimensionCompatible = true;
228
- const candidates = scoreCapsuleVectors(rows, capsule, embedded.vector, options.topK, options.minScore);
305
+ const candidates = scoreCapsuleVectors(rows, capsule, embedded.vector, oversampleTopK(options.topK, profile), options.minScore);
229
306
  state.candidates.push(...candidates);
230
307
  }
231
308
  async function ensureQueryEmbedded(adapter, identity, query, signal, cache) {
@@ -239,7 +316,7 @@ async function ensureQueryEmbedded(adapter, identity, query, signal, cache) {
239
316
  cache.set(key, result);
240
317
  return result;
241
318
  }
242
- function selectTopCandidates(state, options) {
319
+ function selectTopCandidates(state, options, profile) {
243
320
  if (!state.anyVectorSeen)
244
321
  return { ok: false, reason: "no-vectors" };
245
322
  if (state.embeddingFailed && state.candidates.length === 0) {
@@ -249,7 +326,7 @@ function selectTopCandidates(state, options) {
249
326
  return { ok: false, reason: "incompatible-embedding-identity" };
250
327
  }
251
328
  state.candidates.sort(scoreDesc);
252
- const top = state.candidates.slice(0, oversampleTopK(options.topK));
329
+ const top = state.candidates.slice(0, oversampleTopK(options.topK, profile));
253
330
  if (top.length === 0)
254
331
  return { ok: false, reason: "below-min-score" };
255
332
  return { ok: true, top };
@@ -258,15 +335,22 @@ export async function searchVectorsForScope(store, embeddingAdapter, scope, quer
258
335
  const capsules = loadCapsules(store, scope.capsuleIds);
259
336
  if (capsules.length === 0)
260
337
  return { references: [], noEvidenceReason: "no-vectors" };
338
+ const profile = profileQuery(query, options.strategy);
261
339
  const cache = new Map();
262
340
  const state = emptyState();
263
341
  for (const capsule of capsules) {
264
- await processCapsule(store, embeddingAdapter, capsule, query, options, cache, state);
342
+ await processCapsule(store, embeddingAdapter, capsule, sourceFilterForCapsule(scope.sourceFilter, capsule), query, options, profile, cache, state);
265
343
  }
266
- const selection = selectTopCandidates(state, options);
344
+ const selection = selectTopCandidates(state, options, profile);
267
345
  if (!selection.ok)
268
346
  return { references: [], noEvidenceReason: selection.reason };
269
- return { references: buildReferences(store, selection.top, query, options.topK) };
347
+ return { references: buildReferences(store, selection.top, query, options.topK, profile) };
348
+ }
349
+ function sourceFilterForCapsule(sourceFilter, capsule) {
350
+ if (sourceFilter === undefined)
351
+ return undefined;
352
+ const capsuleSourceIds = new Set(capsule.sourceIds.map(String));
353
+ return sourceFilter.filter((sourceId) => capsuleSourceIds.has(String(sourceId)));
270
354
  }
271
355
  function loadCapsules(store, ids) {
272
356
  const out = [];
@@ -277,7 +361,7 @@ function loadCapsules(store, ids) {
277
361
  }
278
362
  return out;
279
363
  }
280
- function buildReferences(store, candidates, query, limit) {
364
+ function buildReferences(store, candidates, query, limit, profile) {
281
365
  // Group surviving candidates by capsule so we can issue one citation-read per capsule.
282
366
  const byCapsule = new Map();
283
367
  for (const candidate of candidates) {
@@ -312,45 +396,247 @@ function buildReferences(store, candidates, query, limit) {
312
396
  refs.push({
313
397
  chunkId: citation.chunkId,
314
398
  capsuleId: candidate.capsuleId,
315
- score: candidate.score + lexicalMetadataBonus(query, citation),
399
+ score: candidate.score +
400
+ lexicalMetadataBonus(citation, profile) +
401
+ lexicalContentBonus(store, candidate.capsuleId, citation, profile),
316
402
  citation,
317
403
  });
318
404
  }
319
405
  refs.sort(referenceScoreDesc);
320
- return refs.slice(0, limit);
406
+ return diversifyReferences(refs, limit, profile);
321
407
  }
322
408
  function referenceScoreDesc(a, b) {
323
409
  if (b.score !== a.score)
324
410
  return b.score - a.score;
325
411
  return String(a.chunkId).localeCompare(String(b.chunkId));
326
412
  }
327
- function lexicalMetadataBonus(query, citation) {
328
- const queryTokens = tokenise(query);
329
- if (queryTokens.length === 0)
413
+ function diversifyReferences(references, limit, profile) {
414
+ if (references.length <= limit)
415
+ return references;
416
+ const remaining = [...references];
417
+ const selected = [];
418
+ while (remaining.length > 0 && selected.length < limit) {
419
+ const pick = pickNextReference(remaining, selected, profile);
420
+ selected.push(pick.reference);
421
+ remaining.splice(pick.index, 1);
422
+ }
423
+ selected.sort(referenceScoreDesc);
424
+ return selected;
425
+ }
426
+ function pickNextReference(remaining, selected, profile) {
427
+ let bestIndex = 0;
428
+ let best = withDiversityScore(remaining[0], selected, profile);
429
+ for (let i = 1; i < remaining.length; i += 1) {
430
+ const candidate = withDiversityScore(remaining[i], selected, profile);
431
+ if (referenceScoreDesc(candidate, best) < 0) {
432
+ best = candidate;
433
+ bestIndex = i;
434
+ }
435
+ }
436
+ return { reference: best, index: bestIndex };
437
+ }
438
+ function withDiversityScore(reference, selected, profile) {
439
+ if (reference === undefined)
440
+ throw new RetrievalError("STORE_READ_FAILED", "missing reference");
441
+ const penalty = diversityPenalty(reference, selected, profile);
442
+ if (penalty === 0)
443
+ return reference;
444
+ return { ...reference, score: reference.score - penalty };
445
+ }
446
+ function diversityPenalty(reference, selected, profile) {
447
+ let sameDocument = 0;
448
+ let sameSection = 0;
449
+ const sectionKey = referenceSectionKey(reference);
450
+ for (const prior of selected) {
451
+ if (String(prior.citation.documentId) === String(reference.citation.documentId)) {
452
+ sameDocument += 1;
453
+ }
454
+ if (sectionKey !== "" && sectionKey === referenceSectionKey(prior)) {
455
+ sameSection += 1;
456
+ }
457
+ }
458
+ return (sameDocument * profile.documentDiversityPenalty + sameSection * profile.sectionDiversityPenalty);
459
+ }
460
+ function referenceSectionKey(reference) {
461
+ const path = reference.citation.sectionPath?.join(">");
462
+ return path === undefined ? "" : `${String(reference.citation.documentId)}:${path}`;
463
+ }
464
+ function lexicalMetadataBonus(citation, profile) {
465
+ if (profile.tokens.length === 0)
330
466
  return 0;
331
467
  const haystack = tokenise([
332
468
  citation.safeDisplayName,
333
469
  citation.pageLabel,
334
470
  ...(citation.sectionPath ?? []),
471
+ citation.jsonPointer,
472
+ citation.tableName,
473
+ citation.rowIndex === undefined ? undefined : String(citation.rowIndex),
335
474
  String(citation.pageNumber ?? ""),
336
475
  ]
337
476
  .filter((value) => typeof value === "string" && value.length > 0)
338
477
  .join(" "));
339
478
  if (haystack.length === 0)
340
479
  return 0;
480
+ const haystackSet = new Set(haystack);
481
+ const hits = countTokenHits(profile.tokens, haystackSet);
482
+ if (hits === 0)
483
+ return 0;
484
+ return (hits / profile.tokens.length) * profile.metadataWeight;
485
+ }
486
+ function lexicalContentBonus(store, capsuleId, citation, profile) {
487
+ if (profile.tokens.length === 0)
488
+ return 0;
489
+ const excerpt = readCitationSearchExcerpt(store, capsuleId, citation, SEARCH_EXCERPT_MAX_CHARS, profile.contextBeforeChars);
490
+ if (excerpt.length === 0)
491
+ return 0;
492
+ const excerptTokens = tokenise(excerpt);
493
+ if (excerptTokens.length === 0)
494
+ return 0;
495
+ const normalisedExcerpt = normaliseForSearch(excerpt);
496
+ const tokenCoverage = countTokenHits(profile.tokens, new Set(excerptTokens)) / profile.tokens.length;
497
+ const phraseHits = countAdjacentPhraseHits(profile.tokens, normalisedExcerpt);
498
+ const exactHits = countExactTermHits(profile.exactTerms, normalisedExcerpt);
499
+ return (Math.min(0.24, tokenCoverage * profile.lexicalWeight) +
500
+ Math.min(0.16, phraseHits * profile.phraseWeight) +
501
+ Math.min(0.18, exactHits * 0.06));
502
+ }
503
+ function readCitationSearchExcerpt(store, capsuleId, citation, maxChars, beforeChars) {
504
+ const row = store._internal.db
505
+ .prepare("SELECT normalized_text FROM document_texts WHERE capsule_id = :capsule_id AND document_id = :document_id")
506
+ .get({
507
+ capsule_id: String(capsuleId),
508
+ document_id: String(citation.documentId),
509
+ });
510
+ const text = row?.normalized_text;
511
+ if (typeof text !== "string" || text.length === 0)
512
+ return "";
513
+ const focusStart = Math.max(0, Math.min(text.length, citation.characterStart ?? 0));
514
+ const focusEnd = Math.max(focusStart, Math.min(text.length, citation.characterEnd ?? focusStart + maxChars));
515
+ const start = Math.max(0, focusStart - beforeChars);
516
+ const afterBudget = Math.max(0, maxChars - (focusStart - start));
517
+ const end = Math.min(text.length, focusEnd + afterBudget);
518
+ return text.slice(start, end).trim();
519
+ }
520
+ function countTokenHits(tokens, haystack) {
341
521
  let hits = 0;
342
- for (const token of queryTokens) {
343
- if (haystack.includes(token)) {
522
+ for (const token of tokens) {
523
+ if (haystack.has(token))
344
524
  hits += 1;
345
- }
346
525
  }
347
- if (hits === 0)
348
- return 0;
349
- return hits / (queryTokens.length * 10);
526
+ return hits;
527
+ }
528
+ function countAdjacentPhraseHits(tokens, normalisedHaystack) {
529
+ let hits = 0;
530
+ for (let i = 0; i < tokens.length - 1; i += 1) {
531
+ const first = tokens[i];
532
+ const second = tokens[i + 1];
533
+ if (first === undefined || second === undefined)
534
+ continue;
535
+ if (normalisedHaystack.includes(`${first} ${second}`))
536
+ hits += 1;
537
+ }
538
+ return hits;
539
+ }
540
+ function countExactTermHits(terms, normalisedHaystack) {
541
+ let hits = 0;
542
+ for (const term of terms) {
543
+ if (normalisedHaystack.includes(term))
544
+ hits += 1;
545
+ }
546
+ return hits;
547
+ }
548
+ function profileQuery(query, requested) {
549
+ const tokens = uniqueTokens(tokenise(query));
550
+ const exactTerms = extractExactTerms(query);
551
+ const strategy = resolveQueryStrategy(query, tokens, exactTerms, requested);
552
+ if (strategy === "exact")
553
+ return exactQueryProfile(tokens, exactTerms);
554
+ if (strategy === "broad")
555
+ return broadQueryProfile(tokens, exactTerms);
556
+ return balancedQueryProfile(tokens, exactTerms);
557
+ }
558
+ function resolveQueryStrategy(query, tokens, exactTerms, requested) {
559
+ if (requested !== undefined && requested !== "auto")
560
+ return requested;
561
+ if (exactTerms.length > 0)
562
+ return "exact";
563
+ if (tokens.length >= 8 || BROAD_QUERY_PATTERN.test(query))
564
+ return "broad";
565
+ return "balanced";
566
+ }
567
+ function exactQueryProfile(tokens, exactTerms) {
568
+ return {
569
+ strategy: "exact",
570
+ tokens,
571
+ exactTerms,
572
+ lexicalWeight: 0.22,
573
+ phraseWeight: 0.06,
574
+ metadataWeight: 0.16,
575
+ contextBeforeChars: SEARCH_CONTEXT_BEFORE_CHARS * 2,
576
+ documentDiversityPenalty: 0.018,
577
+ sectionDiversityPenalty: 0.01,
578
+ };
579
+ }
580
+ function broadQueryProfile(tokens, exactTerms) {
581
+ return {
582
+ strategy: "broad",
583
+ tokens,
584
+ exactTerms,
585
+ lexicalWeight: 0.16,
586
+ phraseWeight: 0.04,
587
+ metadataWeight: 0.1,
588
+ contextBeforeChars: SEARCH_CONTEXT_BEFORE_CHARS,
589
+ documentDiversityPenalty: 0.085,
590
+ sectionDiversityPenalty: 0.035,
591
+ };
592
+ }
593
+ function balancedQueryProfile(tokens, exactTerms) {
594
+ return {
595
+ strategy: "balanced",
596
+ tokens,
597
+ exactTerms,
598
+ lexicalWeight: 0.18,
599
+ phraseWeight: 0.045,
600
+ metadataWeight: 0.12,
601
+ contextBeforeChars: SEARCH_CONTEXT_BEFORE_CHARS,
602
+ documentDiversityPenalty: 0.045,
603
+ sectionDiversityPenalty: 0.02,
604
+ };
605
+ }
606
+ function extractExactTerms(value) {
607
+ const out = [];
608
+ const matches = value.matchAll(EXACT_TERM_PATTERN);
609
+ for (const match of matches) {
610
+ const raw = match[0];
611
+ if (!isExactTerm(raw))
612
+ continue;
613
+ const term = normaliseForSearch(raw);
614
+ if (term.length > 0)
615
+ out.push(term);
616
+ }
617
+ return uniqueTokens(out);
618
+ }
619
+ function isExactTerm(value) {
620
+ if (/\d/u.test(value))
621
+ return true;
622
+ if (/[._:/#-]/u.test(value))
623
+ return true;
624
+ if (/[a-z][A-Z]/u.test(value))
625
+ return true;
626
+ return value.length >= 3 && value === value.toUpperCase() && /\p{L}/u.test(value);
627
+ }
628
+ function uniqueTokens(tokens) {
629
+ return [...new Set(tokens)];
350
630
  }
351
631
  function tokenise(value) {
632
+ return normaliseForSearch(value)
633
+ .split(/[^\p{L}\p{N}]+/u)
634
+ .filter((token) => token.length >= 2 && !SEARCH_STOPWORDS.has(token));
635
+ }
636
+ function normaliseForSearch(value) {
352
637
  return value
638
+ .normalize("NFKD")
639
+ .replace(/\p{Mark}+/gu, "")
353
640
  .toLowerCase()
354
- .split(/[^a-z0-9]+/i)
355
- .filter((token) => token.length >= 2);
641
+ .replace(/ß/gu, "ss");
356
642
  }
@@ -1,4 +1,4 @@
1
- import type { KnowledgeCapsuleId, KnowledgeSource, KnowledgeSourceId, KnowledgeSourceScope } from "@oscharko-dev/keiko-contracts";
1
+ import { type KnowledgeCapsuleId, type KnowledgeSource, type KnowledgeSourceId, type KnowledgeSourceScope } from "@oscharko-dev/keiko-contracts";
2
2
  import type { AuditEventSink } from "./privacy/types.js";
3
3
  import type { KnowledgeStore } from "./store.js";
4
4
  export interface AddCapsuleSourceInput {
@@ -1 +1 @@
1
- {"version":3,"file":"source-lifecycle.d.ts","sourceRoot":"","sources":["../src/source-lifecycle.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;CACtC;AA+DD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,KAAK,EAAE,qBAAqB,EAC5B,SAAS,CAAC,EAAE,cAAc,GACzB,eAAe,CAuCjB;AAkBD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,GAC5B,SAAS,eAAe,EAAE,CAG5B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,CAAC,EAAE,cAAc,GACzB,IAAI,CAuBN"}
1
+ {"version":3,"file":"source-lifecycle.d.ts","sourceRoot":"","sources":["../src/source-lifecycle.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;CACtC;AAiID,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,KAAK,EAAE,qBAAqB,EAC5B,SAAS,CAAC,EAAE,cAAc,GACzB,eAAe,CAuBjB;AAoBD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,GAC5B,SAAS,eAAe,EAAE,CAG5B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,CAAC,EAAE,cAAc,GACzB,IAAI,CAuBN"}
@@ -4,9 +4,11 @@
4
4
  // by chance (a plain DELETE with COUNT-on-changes still races with concurrent CASCADE
5
5
  // deletes of the parent capsule, but the verify+delete sequence is correct under WAL's
6
6
  // single-writer semantics).
7
+ import { isSafeDisplaySummary, validateKnowledgeSourceScope, } from "@oscharko-dev/keiko-contracts";
7
8
  import { KnowledgeNotFoundError, KnowledgeStoreError } from "./errors.js";
8
9
  const INSERT_SQL = "INSERT INTO capsule_sources (id, capsule_id, display_name, description, tags_json, scope_kind, scope_json, created_at, updated_at) VALUES (:id, :capsule_id, :display_name, :description, :tags_json, :scope_kind, :scope_json, :created_at, :updated_at)";
9
- const SELECT_BY_CAPSULE_SQL = "SELECT * FROM capsule_sources WHERE capsule_id = :c ORDER BY created_at ASC, id ASC";
10
+ const INSERT_KNOWLEDGE_SOURCE_SQL = "INSERT INTO knowledge_sources (id, display_name, description, tags_json, scope_kind, scope_json, created_at, updated_at) VALUES (:id, :display_name, :description, :tags_json, :scope_kind, :scope_json, :created_at, :updated_at) ON CONFLICT(id) DO UPDATE SET display_name = excluded.display_name, description = excluded.description, tags_json = excluded.tags_json, scope_kind = excluded.scope_kind, scope_json = excluded.scope_json, updated_at = excluded.updated_at";
11
+ const SELECT_BY_CAPSULE_SQL = "SELECT ks.* FROM capsule_sources AS cs JOIN knowledge_sources AS ks ON ks.id = cs.id WHERE cs.capsule_id = :c ORDER BY cs.created_at ASC, cs.id ASC";
10
12
  const SELECT_BY_TUPLE_SQL = "SELECT id FROM capsule_sources WHERE capsule_id = :c AND id = :s";
11
13
  const DELETE_BY_TUPLE_SQL = "DELETE FROM capsule_sources WHERE capsule_id = :c AND id = :s";
12
14
  function parseTags(json) {
@@ -15,6 +17,22 @@ function parseTags(json) {
15
17
  return [];
16
18
  return parsed.filter((entry) => typeof entry === "string");
17
19
  }
20
+ function assertSafeDisplayField(field, value) {
21
+ if (value.trim().length === 0 || !isSafeDisplaySummary(value)) {
22
+ throw new KnowledgeStoreError(`${field} must be a browser-safe non-empty string`);
23
+ }
24
+ }
25
+ function assertSafeOptionalDisplayField(field, value) {
26
+ if (value !== undefined && !isSafeDisplaySummary(value)) {
27
+ throw new KnowledgeStoreError(`${field} must be browser-safe when set`);
28
+ }
29
+ }
30
+ function assertSafeScope(scope) {
31
+ const result = validateKnowledgeSourceScope(scope);
32
+ if (result.ok)
33
+ return;
34
+ throw new KnowledgeStoreError(result.errors.join(" "));
35
+ }
18
36
  function parseScope(kind, json) {
19
37
  const parsed = JSON.parse(json);
20
38
  if (typeof parsed !== "object" || parsed === null) {
@@ -46,22 +64,24 @@ function scopeToJson(scope) {
46
64
  }
47
65
  return JSON.stringify(copy);
48
66
  }
49
- export function addSourceToCapsule(store, capsuleId, input, auditSink) {
67
+ function sourceParams(input, now) {
68
+ return {
69
+ id: input.id,
70
+ display_name: input.displayName,
71
+ description: input.description ?? null,
72
+ tags_json: JSON.stringify(input.tags),
73
+ scope_kind: input.scope.kind,
74
+ scope_json: scopeToJson(input.scope),
75
+ created_at: now,
76
+ updated_at: now,
77
+ };
78
+ }
79
+ function insertSourceLink(store, capsuleId, params) {
50
80
  const db = store._internal.db;
51
- const now = store._internal.now();
52
81
  db.exec("BEGIN");
53
82
  try {
54
- db.prepare(INSERT_SQL).run({
55
- id: input.id,
56
- capsule_id: capsuleId,
57
- display_name: input.displayName,
58
- description: input.description ?? null,
59
- tags_json: JSON.stringify(input.tags),
60
- scope_kind: input.scope.kind,
61
- scope_json: scopeToJson(input.scope),
62
- created_at: now,
63
- updated_at: now,
64
- });
83
+ db.prepare(INSERT_KNOWLEDGE_SOURCE_SQL).run(params);
84
+ db.prepare(INSERT_SQL).run({ ...params, capsule_id: capsuleId });
65
85
  db.exec("COMMIT");
66
86
  }
67
87
  catch (error) {
@@ -72,7 +92,17 @@ export function addSourceToCapsule(store, capsuleId, input, auditSink) {
72
92
  }
73
93
  throw new KnowledgeStoreError("failed to add source", { cause: error });
74
94
  }
75
- const fetched = db.prepare(SELECT_BY_TUPLE_SQL).get({ c: capsuleId, s: input.id });
95
+ }
96
+ export function addSourceToCapsule(store, capsuleId, input, auditSink) {
97
+ assertSafeDisplayField("displayName", input.displayName);
98
+ assertSafeOptionalDisplayField("description", input.description);
99
+ for (const tag of input.tags) {
100
+ assertSafeDisplayField("tag", tag);
101
+ }
102
+ assertSafeScope(input.scope);
103
+ const now = store._internal.now();
104
+ insertSourceLink(store, capsuleId, sourceParams(input, now));
105
+ const fetched = store._internal.db.prepare(SELECT_BY_TUPLE_SQL).get({ c: capsuleId, s: input.id });
76
106
  if (fetched === undefined) {
77
107
  throw new KnowledgeStoreError(`addSourceToCapsule: insert succeeded but row not found for ${String(input.id)}`);
78
108
  }
@@ -87,7 +117,7 @@ export function addSourceToCapsule(store, capsuleId, input, auditSink) {
87
117
  }
88
118
  function readSource(store, capsuleId, sourceId) {
89
119
  const row = store._internal.db
90
- .prepare("SELECT * FROM capsule_sources WHERE capsule_id = :c AND id = :s")
120
+ .prepare("SELECT ks.* FROM capsule_sources AS cs JOIN knowledge_sources AS ks ON ks.id = cs.id WHERE cs.capsule_id = :c AND cs.id = :s")
91
121
  .get({ c: capsuleId, s: sourceId });
92
122
  if (row === undefined) {
93
123
  throw new KnowledgeNotFoundError(`Source not found: capsule=${String(capsuleId)} source=${String(sourceId)}`);
@@ -2,6 +2,19 @@ import { DatabaseSync } from "node:sqlite";
2
2
  export interface OpenKnowledgeStoreOptions {
3
3
  readonly dbPath: string;
4
4
  readonly clock?: () => number;
5
+ readonly protection?: KnowledgeStoreProtectionOptions;
6
+ }
7
+ export interface KnowledgeStoreKeyProviderContext {
8
+ readonly dbPath: string;
9
+ readonly schemaVersion: number;
10
+ }
11
+ export interface KnowledgeStoreKeyProvider {
12
+ readonly providerId: string;
13
+ readonly resolveKey: (context: KnowledgeStoreKeyProviderContext) => Uint8Array;
14
+ }
15
+ export interface KnowledgeStoreProtectionOptions {
16
+ readonly mode?: "plaintext-local-file-permissions" | "encrypted-key-provider";
17
+ readonly keyProvider?: KnowledgeStoreKeyProvider;
5
18
  }
6
19
  export interface KnowledgeStore {
7
20
  readonly close: () => void;
@@ -10,5 +23,6 @@ export interface KnowledgeStore {
10
23
  readonly now: () => number;
11
24
  };
12
25
  }
26
+ export declare const LK_STORE_BUSY_TIMEOUT_MS = 5000;
13
27
  export declare function openKnowledgeStore(opts: OpenKnowledgeStoreOptions): KnowledgeStore;
14
28
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CAC/B;AAMD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;QAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;KAC5B,CAAC;CACH;AAmJD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,cAAc,CAwBlF"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,+BAA+B,CAAC;CACvD;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,gCAAgC,KAAK,UAAU,CAAC;CAChF;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,kCAAkC,GAAG,wBAAwB,CAAC;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,yBAAyB,CAAC;CAClD;AAMD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;QAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;KAC5B,CAAC;CACH;AAkBD,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAkK9C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,cAAc,CA0BlF"}