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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (573) hide show
  1. package/README.md +139 -1
  2. package/dist/ui/csp-hashes.json +33 -39
  3. package/dist/ui/static/404.html +1 -1
  4. package/dist/ui/static/__next.__PAGE__.txt +9 -0
  5. package/dist/ui/static/__next._full.txt +18 -0
  6. package/dist/ui/static/__next._head.txt +6 -0
  7. package/dist/ui/static/__next._index.txt +5 -0
  8. package/dist/ui/static/__next._tree.txt +2 -0
  9. package/dist/ui/static/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
  10. package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +2 -0
  11. package/dist/ui/static/_next/static/chunks/0iq1i69206cyl.js +31 -0
  12. package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +1 -0
  13. package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +1 -0
  14. package/dist/ui/static/_next/static/chunks/14mrh2-p_w84d.js +1 -0
  15. package/dist/ui/static/_next/static/chunks/1m-kvwm6_90_3.css +1 -0
  16. package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +1 -0
  17. package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +4 -0
  18. package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +1 -0
  19. package/dist/ui/static/_next/static/chunks/2ngm8iwdb1cbv.js +106 -0
  20. package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +1 -0
  21. package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +1 -0
  22. package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +1 -0
  23. package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +1 -0
  24. package/dist/ui/static/_next/static/chunks/3peubv2924kx4.js +1 -0
  25. package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +1 -0
  26. package/dist/ui/static/_next/static/hR2gBQqCDKdPdSxBqZhqv/_buildManifest.js +11 -0
  27. package/dist/ui/static/_next/static/hR2gBQqCDKdPdSxBqZhqv/_clientMiddlewareManifest.js +1 -0
  28. package/dist/ui/static/_not-found/__next._full.txt +16 -0
  29. package/dist/ui/static/_not-found/__next._head.txt +6 -0
  30. package/dist/ui/static/_not-found/__next._index.txt +5 -0
  31. package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +5 -0
  32. package/dist/ui/static/_not-found/__next._not-found.txt +5 -0
  33. package/dist/ui/static/_not-found/__next._tree.txt +2 -0
  34. package/dist/ui/static/_not-found.html +1 -0
  35. package/dist/ui/static/_not-found.txt +16 -0
  36. package/dist/ui/static/index.html +1 -1
  37. package/dist/ui/static/index.txt +16 -18
  38. package/dist/ui/static/launch/__next._full.txt +20 -0
  39. package/dist/ui/static/launch/__next._head.txt +6 -0
  40. package/dist/ui/static/launch/__next._index.txt +5 -0
  41. package/dist/ui/static/launch/__next._tree.txt +2 -0
  42. package/dist/ui/static/launch/__next.launch.__PAGE__.txt +9 -0
  43. package/dist/ui/static/launch/__next.launch.txt +5 -0
  44. package/dist/ui/static/launch.html +1 -1
  45. package/dist/ui/static/launch.txt +17 -17
  46. package/dist/ui/static/local-knowledge/__next._full.txt +20 -0
  47. package/dist/ui/static/local-knowledge/__next._head.txt +6 -0
  48. package/dist/ui/static/local-knowledge/__next._index.txt +5 -0
  49. package/dist/ui/static/local-knowledge/__next._tree.txt +2 -0
  50. package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +9 -0
  51. package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +5 -0
  52. package/dist/ui/static/local-knowledge/capsule/__next._full.txt +17 -0
  53. package/dist/ui/static/local-knowledge/capsule/__next._head.txt +6 -0
  54. package/dist/ui/static/local-knowledge/capsule/__next._index.txt +5 -0
  55. package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -0
  56. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +6 -0
  57. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +5 -0
  58. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +5 -0
  59. package/dist/ui/static/local-knowledge/capsule.html +1 -1
  60. package/dist/ui/static/local-knowledge/capsule.txt +14 -14
  61. package/dist/ui/static/local-knowledge.html +1 -1
  62. package/dist/ui/static/local-knowledge.txt +19 -16
  63. package/dist/ui/static/memoriaviva/__next._full.txt +17 -0
  64. package/dist/ui/static/memoriaviva/__next._head.txt +6 -0
  65. package/dist/ui/static/memoriaviva/__next._index.txt +5 -0
  66. package/dist/ui/static/memoriaviva/__next._tree.txt +2 -0
  67. package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +6 -0
  68. package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +5 -0
  69. package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +17 -0
  70. package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +6 -0
  71. package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +5 -0
  72. package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -0
  73. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +6 -0
  74. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +5 -0
  75. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +5 -0
  76. package/dist/ui/static/memoriaviva/consolidation.html +1 -1
  77. package/dist/ui/static/memoriaviva/consolidation.txt +15 -15
  78. package/dist/ui/static/memoriaviva/detail/__next._full.txt +17 -0
  79. package/dist/ui/static/memoriaviva/detail/__next._head.txt +6 -0
  80. package/dist/ui/static/memoriaviva/detail/__next._index.txt +5 -0
  81. package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -0
  82. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +6 -0
  83. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +5 -0
  84. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +5 -0
  85. package/dist/ui/static/memoriaviva/detail.html +1 -1
  86. package/dist/ui/static/memoriaviva/detail.txt +14 -14
  87. package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +17 -0
  88. package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +6 -0
  89. package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +5 -0
  90. package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -0
  91. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +6 -0
  92. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +5 -0
  93. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +5 -0
  94. package/dist/ui/static/memoriaviva/review-queue.html +1 -1
  95. package/dist/ui/static/memoriaviva/review-queue.txt +15 -15
  96. package/dist/ui/static/memoriaviva.html +1 -1
  97. package/dist/ui/static/memoriaviva.txt +14 -14
  98. package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
  99. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
  100. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +61 -2
  101. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.d.ts.map +1 -1
  102. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.js +65 -21
  103. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher-platforms.js +3 -3
  104. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts +3 -1
  105. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
  106. package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +73 -41
  107. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
  108. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +36 -11
  109. package/node_modules/@oscharko-dev/keiko-cli/package.json +2 -2
  110. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  111. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +20 -1
  112. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
  113. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts +1 -1
  114. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
  115. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +256 -75
  116. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +11 -0
  117. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
  118. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +6 -6
  119. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  120. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -4
  121. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts +11 -0
  122. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts.map +1 -1
  123. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.js +4 -0
  124. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts +1 -1
  125. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts.map +1 -1
  126. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.js +109 -4
  127. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts +2 -0
  128. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
  129. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.js +94 -7
  130. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts +5 -0
  131. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts.map +1 -1
  132. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +2 -0
  133. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
  134. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.d.ts.map +1 -1
  135. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.js +3 -0
  136. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +14 -0
  137. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
  138. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +53 -5
  139. package/node_modules/@oscharko-dev/keiko-contracts/package.json +2 -2
  140. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  141. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.d.ts.map +1 -1
  142. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.js +11 -3
  143. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +2 -2
  144. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  145. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts +20 -1
  146. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts.map +1 -1
  147. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.js +34 -2
  148. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
  149. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
  150. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.js +1 -1
  151. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +1 -0
  152. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
  153. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +3 -1
  154. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +17 -0
  155. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
  156. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +19 -0
  157. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +5 -1
  158. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  159. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +32 -2
  160. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  161. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +259 -40
  162. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +3 -3
  163. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
  164. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.js +1 -1
  165. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +18 -1
  166. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map +1 -1
  167. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts +3 -0
  168. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts.map +1 -1
  169. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.js +48 -5
  170. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts +33 -0
  171. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
  172. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +99 -13
  173. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts +1 -1
  174. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts.map +1 -1
  175. package/node_modules/@oscharko-dev/keiko-evidence/package.json +2 -2
  176. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  177. package/node_modules/@oscharko-dev/keiko-harness/package.json +2 -2
  178. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  179. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.d.ts.map +1 -1
  180. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.js +25 -1
  181. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts +1 -1
  182. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
  183. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +16 -0
  184. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts +3 -1
  185. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts.map +1 -1
  186. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.js +9 -5
  187. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.d.ts.map +1 -1
  188. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.js +22 -7
  189. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts +4 -1
  190. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts.map +1 -1
  191. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.js +61 -9
  192. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.d.ts.map +1 -1
  193. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.js +64 -36
  194. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts +2 -2
  195. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts.map +1 -1
  196. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.js +2 -2
  197. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts +7 -1
  198. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts.map +1 -1
  199. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.js +5 -1
  200. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts +1 -1
  201. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
  202. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +27 -4
  203. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts +0 -1
  204. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts.map +1 -1
  205. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.js +0 -1
  206. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts +5 -1
  207. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
  208. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +25 -6
  209. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.d.ts.map +1 -1
  210. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.js +2 -3
  211. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.d.ts.map +1 -1
  212. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.js +10 -1
  213. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts +4 -1
  214. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
  215. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +370 -45
  216. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts +2 -0
  217. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts.map +1 -1
  218. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.js +8 -4
  219. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts +1 -1
  220. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts.map +1 -1
  221. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.js +10 -5
  222. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
  223. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +65 -20
  224. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts +1 -0
  225. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
  226. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +79 -0
  227. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
  228. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
  229. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
  230. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.d.ts.map +1 -1
  231. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.js +4 -0
  232. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +6 -5
  233. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
  234. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +4 -4
  235. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
  236. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +71 -29
  237. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
  238. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +253 -131
  239. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts +12 -0
  240. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts.map +1 -1
  241. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.d.ts.map +1 -1
  242. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.js +9 -0
  243. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +3 -1
  244. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
  245. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +13 -1
  246. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
  247. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +86 -46
  248. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -1
  249. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
  250. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +1 -1
  251. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
  252. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +50 -22
  253. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts +21 -1
  254. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
  255. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +90 -13
  256. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.d.ts.map +1 -1
  257. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.js +3 -1
  258. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts +7 -2
  259. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts.map +1 -1
  260. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.js +7 -3
  261. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/audit-emitter.js +8 -0
  262. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.d.ts.map +1 -1
  263. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.js +17 -10
  264. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
  265. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.js +7 -0
  266. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts +4 -0
  267. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts.map +1 -1
  268. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +1 -1
  269. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
  270. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
  271. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +318 -32
  272. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts +1 -1
  273. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
  274. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +46 -16
  275. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts +14 -0
  276. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts.map +1 -1
  277. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.js +26 -1
  278. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +10 -5
  279. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
  280. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +2 -2
  281. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
  282. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
  283. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
  284. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
  285. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
  286. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +2 -2
  287. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  288. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +2 -2
  289. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  290. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -1
  291. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
  292. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +50 -0
  293. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts +3 -0
  294. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
  295. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +114 -44
  296. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts +1 -0
  297. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts.map +1 -1
  298. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.js +22 -1
  299. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.d.ts.map +1 -1
  300. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.js +18 -4
  301. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts +14 -0
  302. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts.map +1 -1
  303. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.js +14 -0
  304. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +2 -2
  305. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  306. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
  307. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +9 -2
  308. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +1 -1
  309. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +9 -1
  310. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
  311. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +9 -1
  312. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts +5 -0
  313. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
  314. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +229 -33
  315. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +62 -0
  316. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
  317. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
  318. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +24 -4
  319. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts +4 -2
  320. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
  321. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +0 -0
  322. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
  323. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +119 -5
  324. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts +2 -1
  325. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts.map +1 -1
  326. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.js +26 -11
  327. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  328. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +86 -9
  329. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
  330. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -3
  331. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  332. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +14 -12
  333. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.d.ts.map +1 -1
  334. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.js +29 -30
  335. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.d.ts.map +1 -1
  336. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.js +29 -5
  337. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.d.ts.map +1 -1
  338. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.js +29 -29
  339. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts +2 -1
  340. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts.map +1 -1
  341. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.js +40 -2
  342. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.d.ts.map +1 -1
  343. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.js +6 -2
  344. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/sourceMixPlanning.js +0 -0
  345. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts +1 -1
  346. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts.map +1 -1
  347. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.js +9 -1
  348. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +2 -2
  349. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  350. package/node_modules/@oscharko-dev/keiko-sdk/package.json +2 -2
  351. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  352. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.d.ts.map +1 -1
  353. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.js +4 -2
  354. package/node_modules/@oscharko-dev/keiko-security/package.json +2 -2
  355. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  356. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts +6 -0
  357. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts.map +1 -0
  358. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.js +12 -0
  359. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts +1 -1
  360. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
  361. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +17 -5
  362. package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.js +1 -1
  363. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +2 -0
  364. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
  365. package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +59 -9
  366. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts +1 -1
  367. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts.map +1 -1
  368. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.js +4 -3
  369. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts +18 -3
  370. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts.map +1 -1
  371. package/node_modules/@oscharko-dev/keiko-server/dist/files.js +208 -72
  372. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.d.ts.map +1 -1
  373. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.js +7 -2
  374. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts +3 -0
  375. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts.map +1 -1
  376. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.js +27 -4
  377. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
  378. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +46 -14
  379. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -1
  380. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
  381. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +651 -45
  382. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
  383. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +5 -3
  384. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts +9 -0
  385. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  386. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +197 -46
  387. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts +4 -0
  388. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
  389. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +103 -25
  390. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +7 -0
  391. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  392. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +199 -21
  393. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.d.ts.map +1 -1
  394. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.js +21 -1
  395. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -1
  396. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
  397. package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -1
  398. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +9 -6
  399. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  400. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +193 -67
  401. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
  402. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +189 -72
  403. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.d.ts.map +1 -1
  404. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.js +11 -8
  405. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.d.ts.map +1 -1
  406. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.js +1 -0
  407. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.d.ts.map +1 -1
  408. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.js +89 -30
  409. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +10 -2
  410. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
  411. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +110 -30
  412. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts +13 -4
  413. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts.map +1 -1
  414. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.js +29 -17
  415. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts +13 -3
  416. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
  417. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +54 -5
  418. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  419. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +84 -12
  420. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
  421. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +16 -8
  422. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +6 -2
  423. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  424. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +13 -1
  425. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
  426. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +15 -2
  427. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
  428. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
  429. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +2 -2
  430. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -1
  431. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  432. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +138 -19
  433. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.d.ts.map +1 -1
  434. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +38 -8
  435. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts +1 -1
  436. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts.map +1 -1
  437. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.js +1 -0
  438. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.d.ts.map +1 -1
  439. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.js +41 -9
  440. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts +1 -0
  441. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts.map +1 -1
  442. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.js +2 -0
  443. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  444. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +43 -10
  445. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  446. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +3 -1
  447. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts +5 -0
  448. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts.map +1 -0
  449. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.js +70 -0
  450. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -1
  451. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.js +6 -2
  452. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts +25 -4
  453. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts.map +1 -1
  454. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.js +72 -9
  455. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  456. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +97 -18
  457. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.d.ts.map +1 -1
  458. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.js +2 -0
  459. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +4 -1
  460. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  461. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +17 -3
  462. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
  463. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +18 -4
  464. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  465. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +8 -3
  466. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
  467. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +6 -1
  468. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts +2 -2
  469. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
  470. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +84 -8
  471. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.d.ts.map +1 -1
  472. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.js +4 -2
  473. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts +1 -1
  474. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts.map +1 -1
  475. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts +5 -1
  476. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts.map +1 -1
  477. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
  478. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.js +71 -15
  479. package/node_modules/@oscharko-dev/keiko-server/package.json +2 -2
  480. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  481. package/node_modules/@oscharko-dev/keiko-tools/package.json +2 -2
  482. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  483. package/node_modules/@oscharko-dev/keiko-verification/package.json +2 -2
  484. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  485. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts +2 -0
  486. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts.map +1 -1
  487. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.js +45 -10
  488. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts +1 -1
  489. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts.map +1 -1
  490. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.js +1 -1
  491. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.d.ts.map +1 -1
  492. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.js +68 -0
  493. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
  494. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +4 -6
  495. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts +30 -0
  496. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts.map +1 -0
  497. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.js +114 -0
  498. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  499. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +20 -7
  500. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.d.ts.map +1 -1
  501. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.js +15 -7
  502. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
  503. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +28 -4
  504. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
  505. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +51 -1
  506. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.d.ts.map +1 -1
  507. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.js +8 -3
  508. package/node_modules/@oscharko-dev/keiko-workflows/package.json +2 -2
  509. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  510. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.d.ts.map +1 -1
  511. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.js +34 -2
  512. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts +1 -0
  513. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts.map +1 -1
  514. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.js +1 -0
  515. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.d.ts.map +1 -1
  516. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.js +84 -27
  517. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.d.ts.map +1 -1
  518. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.js +19 -0
  519. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.d.ts.map +1 -1
  520. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.js +6 -3
  521. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts +1 -0
  522. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts.map +1 -1
  523. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.js +2 -2
  524. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
  525. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +72 -25
  526. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts +15 -0
  527. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -0
  528. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +107 -0
  529. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts +18 -0
  530. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -0
  531. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +42 -0
  532. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  533. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +72 -11
  534. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts +2 -0
  535. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -0
  536. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.js +15 -0
  537. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +2 -2
  538. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
  539. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +89 -75
  540. package/node_modules/@oscharko-dev/keiko-workspace/package.json +2 -2
  541. package/node_modules/@types/node/README.md +1 -1
  542. package/node_modules/@types/node/http2.d.ts +1 -0
  543. package/node_modules/@types/node/package.json +2 -2
  544. package/package.json +3 -1
  545. package/dist/ui/static/_next/static/RAzN8WLtYaktD-ZePowXl/_buildManifest.js +0 -1
  546. package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.js +0 -1
  547. package/dist/ui/static/_next/static/chunks/258-e3b5ee46b0669967.js +0 -1
  548. package/dist/ui/static/_next/static/chunks/422-4c94c107b90d3ccc.js +0 -1
  549. package/dist/ui/static/_next/static/chunks/664-6d821dc1aacb6b48.js +0 -1
  550. package/dist/ui/static/_next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
  551. package/dist/ui/static/_next/static/chunks/982-abc19630e6305864.js +0 -1
  552. package/dist/ui/static/_next/static/chunks/app/_not-found/page-c4d800f366186be0.js +0 -1
  553. package/dist/ui/static/_next/static/chunks/app/launch/page-17ca39367f25f372.js +0 -1
  554. package/dist/ui/static/_next/static/chunks/app/layout-0f75a39edc90325d.js +0 -1
  555. package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-87a2ea239308ed34.js +0 -1
  556. package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-98bb7704fc7fd0ad.js +0 -1
  557. package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-f912263f1ee5d2dd.js +0 -1
  558. package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-fa590f135356e0af.js +0 -1
  559. package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-b8555600c1113f14.js +0 -1
  560. package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-85cfbeb3598c0a36.js +0 -1
  561. package/dist/ui/static/_next/static/chunks/app/page-2881856ad25d9935.js +0 -1
  562. package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
  563. package/dist/ui/static/_next/static/chunks/main-app-5b043f6c611974ae.js +0 -1
  564. package/dist/ui/static/_next/static/chunks/main-bc552b04f2b6dbe2.js +0 -1
  565. package/dist/ui/static/_next/static/chunks/pages/_app-2e239ff05bfdf6d6.js +0 -1
  566. package/dist/ui/static/_next/static/chunks/pages/_error-bda15e7831eec981.js +0 -1
  567. package/dist/ui/static/_next/static/chunks/webpack-0cfe6f51555ca84e.js +0 -1
  568. package/dist/ui/static/_next/static/css/eac94895f3edc5a5.css +0 -1
  569. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts +0 -6
  570. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts.map +0 -1
  571. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.js +0 -49
  572. /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
  573. /package/dist/ui/static/_next/static/{RAzN8WLtYaktD-ZePowXl → hR2gBQqCDKdPdSxBqZhqv}/_ssgManifest.js +0 -0
@@ -1,12 +1,12 @@
1
- import { randomUUID } from "node:crypto";
1
+ import { createHash, randomUUID } from "node:crypto";
2
2
  import { statSync } from "node:fs";
3
3
  import { basename, dirname } from "node:path";
4
4
  import { addSourceToCapsule, composeCapsules, CompositionError, createSqliteAuditSink, createDefaultParserRegistry, createCapsule, deleteCapsule, getCapsule, listCapsuleSets, listCapsuleSources, listCapsules, openKnowledgeStore, removeSourceFromCapsule, resolveKnowledgeStorePath, runIndexingJob, updateCapsuleDetails, updateCapsuleState, } from "@oscharko-dev/keiko-local-knowledge";
5
5
  import { KnowledgeNotFoundError, KnowledgeStoreError } from "@oscharko-dev/keiko-local-knowledge";
6
- import { CAPSULE_SET_MAX_MEMBERS, validateKnowledgeSourceScope, } from "@oscharko-dev/keiko-contracts";
6
+ import { CAPSULE_SET_MAX_MEMBERS, isSafeDisplaySummary, validateCapsuleReindexRequest, validateKnowledgeSourceScope, } from "@oscharko-dev/keiko-contracts";
7
7
  import { currentGatewayConfig } from "./deps.js";
8
8
  import { errorBody } from "./routes.js";
9
- import { findConfiguredCapability, requestOpenAIEmbedding, } from "@oscharko-dev/keiko-model-gateway";
9
+ import { findConfiguredCapability, requestOpenAIEmbedding, verifyEmbeddingCapability, } from "@oscharko-dev/keiko-model-gateway";
10
10
  import { nodeWorkspaceFs } from "@oscharko-dev/keiko-workspace/internal/fs";
11
11
  import { isDenied } from "@oscharko-dev/keiko-workspace";
12
12
  import { localKnowledgeIndexingRegistry } from "./local-knowledge-indexing-registry.js";
@@ -15,6 +15,7 @@ const MAX_BODY_BYTES = 32_000;
15
15
  // thousands of parser diagnostics / job rows cannot inflate a single JSON response.
16
16
  const MAX_DIAGNOSTICS_PER_RESPONSE = 500;
17
17
  const MAX_JOBS_PER_RESPONSE = 500;
18
+ const LOCAL_KNOWLEDGE_STORE_UNAVAILABLE_MESSAGE = "Local knowledge storage is unavailable. Check the local runtime state and try again.";
18
19
  class InvalidRequest extends Error {
19
20
  constructor(message) {
20
21
  super(message);
@@ -208,7 +209,12 @@ function configuredEmbeddingProvider(config, modelId) {
208
209
  return isConfiguredEmbeddingModel(config, provider.modelId) ? provider : undefined;
209
210
  }
210
211
  function configuredProviderForCapsule(deps, capsule) {
211
- return configuredEmbeddingProvider(currentGatewayConfig(deps), capsule.embeddingModelIdentity.modelId);
212
+ const provider = configuredEmbeddingProvider(currentGatewayConfig(deps), capsule.embeddingModelIdentity.modelId);
213
+ if (provider === undefined)
214
+ return undefined;
215
+ return storedProviderMatchesConfiguredProvider(capsule.embeddingModelIdentity.provider, provider)
216
+ ? provider
217
+ : undefined;
212
218
  }
213
219
  function embeddingCompatibilityReason(config, capsule) {
214
220
  if (config === undefined)
@@ -217,9 +223,13 @@ function embeddingCompatibilityReason(config, capsule) {
217
223
  if (!config.providers.some((entry) => entry.modelId === modelId)) {
218
224
  return "The configured embedding model no longer matches this capsule.";
219
225
  }
220
- if (configuredEmbeddingProvider(config, modelId) === undefined) {
226
+ const provider = configuredEmbeddingProvider(config, modelId);
227
+ if (provider === undefined) {
221
228
  return "The configured model for this capsule cannot serve embeddings.";
222
229
  }
230
+ if (!storedProviderMatchesConfiguredProvider(capsule.embeddingModelIdentity.provider, provider)) {
231
+ return "The configured embedding gateway no longer matches this capsule.";
232
+ }
223
233
  return undefined;
224
234
  }
225
235
  function vectorCompatibility(deps, capsule) {
@@ -243,14 +253,15 @@ function vectorCompatibility(deps, capsule) {
243
253
  function loadSourceStats(store, capsuleId) {
244
254
  const rows = store._internal.db
245
255
  .prepare([
246
- "SELECT s.id AS source_id, s.display_name, s.scope_kind, s.scope_json,",
256
+ "SELECT s.id AS source_id, ks.display_name, ks.scope_kind, ks.scope_json,",
247
257
  " SUM(CASE WHEN d.status = 'extracted' THEN 1 ELSE 0 END) AS indexed_count,",
248
258
  " SUM(CASE WHEN d.status = 'failed' THEN 1 ELSE 0 END) AS failed_count,",
249
259
  " SUM(CASE WHEN d.status IN ('skipped', 'unsupported') THEN 1 ELSE 0 END) AS skipped_count",
250
260
  "FROM capsule_sources AS s",
261
+ "JOIN knowledge_sources AS ks ON ks.id = s.id",
251
262
  "LEFT JOIN documents AS d ON d.capsule_id = s.capsule_id AND d.source_id = s.id",
252
263
  "WHERE s.capsule_id = :c",
253
- "GROUP BY s.id, s.display_name, s.scope_kind, s.scope_json",
264
+ "GROUP BY s.id, ks.display_name, ks.scope_kind, ks.scope_json",
254
265
  "ORDER BY s.created_at ASC, s.id ASC",
255
266
  ].join(" "))
256
267
  .all({ c: capsuleId });
@@ -407,6 +418,7 @@ function buildCapsuleHealth(deps, store, dbPath, capsule) {
407
418
  const unsupportedGuidance = unsupportedDocuments > 0 ? loadUnsupportedGuidance(store, capsule.id) : [];
408
419
  return {
409
420
  capsuleId: capsule.id,
421
+ sourceIds: capsule.sourceIds,
410
422
  lifecycleState: capsule.lifecycleState,
411
423
  storageSizeBytes: storageSizeBytes(dbPath),
412
424
  documentCount,
@@ -466,9 +478,24 @@ function canonicalizeCapsuleSourceRoots(store, capsule) {
466
478
  const now = store._internal.now();
467
479
  for (const source of listCapsuleSources(store, capsule.id)) {
468
480
  const canonicalScope = canonicalizeScopeRoot(source.scope);
481
+ // Re-validate the deny-list against the canonical (realpath-resolved) root at index time,
482
+ // not only at connect time. A folder that was safe when connected can later be moved or
483
+ // symlink-swapped so its realpath resolves into a denied location (e.g. ~/.ssh); refuse to
484
+ // index it rather than walking credential files inside it. Runs for every source, including
485
+ // already-canonical ones, so it must precede the no-op skip below.
486
+ if (isDenied(connectScopeRootPath(canonicalScope))) {
487
+ throw new InvalidRequest("Source path is in a denied location and cannot be indexed.");
488
+ }
469
489
  if (JSON.stringify(canonicalScope) === JSON.stringify(source.scope)) {
470
490
  continue;
471
491
  }
492
+ store._internal.db
493
+ .prepare("UPDATE knowledge_sources SET scope_json = :scope_json, updated_at = :updated_at WHERE id = :id")
494
+ .run({
495
+ scope_json: scopeToJson(canonicalScope),
496
+ updated_at: now,
497
+ id: source.id,
498
+ });
472
499
  store._internal.db
473
500
  .prepare("UPDATE capsule_sources SET scope_json = :scope_json, updated_at = :updated_at WHERE capsule_id = :c AND id = :id")
474
501
  .run({
@@ -518,60 +545,51 @@ function parseCapsuleId(ctx) {
518
545
  }
519
546
  return capsuleId;
520
547
  }
521
- function parseReindexMode(body) {
522
- const mode = body.mode;
523
- if (mode === undefined || mode === "changed-files" || mode === "repair-failed") {
524
- return mode;
548
+ function requireSafeDisplayText(field, value) {
549
+ const trimmed = value.trim();
550
+ if (trimmed.length === 0 || !isSafeDisplaySummary(trimmed)) {
551
+ throw new InvalidRequest(`Field "${field}" must be a browser-safe non-empty string.`);
525
552
  }
526
- throw new InvalidRequest('Field "mode" must be "changed-files" or "repair-failed".');
553
+ return trimmed;
527
554
  }
528
- // O2-GAP-1 (Epic #189): reindex callers can opt into a forced re-embed. Plumbed
529
- // through to runIndexingJob so a capsule whose embedding model rotated can be
530
- // rebuilt without manual store surgery.
531
- function parseReindexForce(body) {
532
- const force = body.force;
533
- if (force === undefined)
534
- return false;
535
- if (typeof force !== "boolean") {
536
- throw new InvalidRequest('Field "force" must be a boolean when provided.');
555
+ function safeOptionalDisplayText(field, value) {
556
+ if (value === undefined) {
557
+ return undefined;
558
+ }
559
+ if (typeof value !== "string") {
560
+ throw new InvalidRequest(`Field "${field}" must be a string when provided.`);
561
+ }
562
+ const trimmed = value.trim();
563
+ if (trimmed.length === 0) {
564
+ return undefined;
565
+ }
566
+ if (!isSafeDisplaySummary(trimmed)) {
567
+ throw new InvalidRequest(`Field "${field}" must be browser-safe when provided.`);
537
568
  }
538
- return force;
569
+ return trimmed;
539
570
  }
540
571
  function parseCreateCapsuleInput(body) {
541
- const displayName = typeof body.displayName === "string" ? body.displayName.trim() : undefined;
542
- if (displayName === undefined || displayName.length === 0) {
572
+ if (typeof body.displayName !== "string") {
543
573
  throw new InvalidRequest('Field "displayName" must be a non-empty string.');
544
574
  }
545
- const descriptionRaw = body.description;
546
- if (descriptionRaw === undefined) {
547
- return { displayName };
548
- }
549
- if (typeof descriptionRaw !== "string") {
550
- throw new InvalidRequest('Field "description" must be a string when provided.');
551
- }
552
- const description = descriptionRaw.trim();
553
- return description.length === 0 ? { displayName } : { displayName, description };
554
- }
555
- // Issue #621: derive native vector dimensions from the embedding model id rather than
556
- // hardcoding 1536, which is wrong for text-embedding-3-large (native: 3072).
557
- function derivedVectorDimensions(modelId) {
558
- const lower = modelId.toLowerCase();
559
- if (lower.includes("text-embedding-3-large"))
560
- return 3072;
561
- if (lower.includes("text-embedding-3-small"))
562
- return 1536;
563
- if (lower.includes("text-embedding-ada-002"))
564
- return 1536;
565
- // Conservative default for unknown embedding models.
566
- return 1536;
567
- }
568
- function defaultEmbeddingIdentity(modelId) {
569
- return {
570
- provider: "openai",
571
- modelId,
572
- vectorDimensions: derivedVectorDimensions(modelId),
573
- vectorMetric: "cosine",
574
- };
575
+ const displayName = requireSafeDisplayText("displayName", body.displayName);
576
+ const description = safeOptionalDisplayText("description", body.description);
577
+ return description === undefined ? { displayName } : { displayName, description };
578
+ }
579
+ function normalizedEndpointFingerprint(baseUrl) {
580
+ const normalized = baseUrl.trim().replace(/\/+$/, "");
581
+ return createHash("sha256").update(normalized).digest("hex").slice(0, 16);
582
+ }
583
+ function embeddingProviderIdentity(provider) {
584
+ return `openai-compatible:${normalizedEndpointFingerprint(provider.baseUrl)}`;
585
+ }
586
+ function storedProviderMatchesConfiguredProvider(storedProvider, provider) {
587
+ // Legacy capsules created before #192 audit fixes stored the generic "openai" label.
588
+ // Keep those usable; new capsules store a non-secret endpoint fingerprint so future
589
+ // gateway swaps mark them incompatible instead of mixing unrelated vector spaces.
590
+ if (!storedProvider.startsWith("openai-compatible:"))
591
+ return true;
592
+ return storedProvider === embeddingProviderIdentity(provider);
575
593
  }
576
594
  // Issue #621 / #677: select the first provider whose resolved capability is embedding-capable.
577
595
  // Falling back to a chat model creates capsules that can never index successfully.
@@ -584,6 +602,45 @@ export function selectEmbeddingModelId(config) {
584
602
  function createCapsuleStorageReference(capsuleId) {
585
603
  return `capsules/${capsuleId}`;
586
604
  }
605
+ async function verifiedNewCapsuleEmbeddingIdentity(deps, provider) {
606
+ const adapter = createEmbeddingAdapter(provider, requestEmbeddingImpl(deps));
607
+ try {
608
+ const result = await verifyEmbeddingCapability(adapter, {
609
+ modelId: provider.modelId,
610
+ provider: embeddingProviderIdentity(provider),
611
+ vectorMetric: "cosine",
612
+ timeoutMs: provider.timeoutMs,
613
+ });
614
+ if (result.ok) {
615
+ return { ok: true, identity: result.identity };
616
+ }
617
+ return { ok: false, result: conflict(result.safeMessage) };
618
+ }
619
+ catch {
620
+ return {
621
+ ok: false,
622
+ result: conflict("embedding capability preflight failed before capsule creation"),
623
+ };
624
+ }
625
+ }
626
+ async function resolveNewCapsuleEmbeddingIdentity(deps) {
627
+ const config = currentGatewayConfig(deps);
628
+ const configuredModelId = selectEmbeddingModelId(config);
629
+ if (configuredModelId === undefined) {
630
+ return {
631
+ ok: false,
632
+ result: conflict("No configured embedding-capable model is available for new capsules. Configure the Model Gateway first."),
633
+ };
634
+ }
635
+ const provider = configuredEmbeddingProvider(config, configuredModelId);
636
+ if (provider === undefined) {
637
+ return {
638
+ ok: false,
639
+ result: conflict("No configured embedding-capable model is available for new capsules. Configure the Model Gateway first."),
640
+ };
641
+ }
642
+ return verifiedNewCapsuleEmbeddingIdentity(deps, provider);
643
+ }
587
644
  function latestRunningJobId(store, capsuleId) {
588
645
  const row = store._internal.db
589
646
  .prepare([
@@ -625,6 +682,13 @@ function disconnectCapsuleSources(store, capsuleId) {
625
682
  }
626
683
  updateCapsuleState(store, capsuleId, "draft");
627
684
  }
685
+ function resolveIndexingSourceSelection(store, capsule, mode) {
686
+ if (mode !== "repair-failed") {
687
+ return { shouldRun: true };
688
+ }
689
+ const sourceIds = failedSourceIds(store, capsule.id);
690
+ return sourceIds.length === 0 ? { shouldRun: false } : { shouldRun: true, sourceIds };
691
+ }
628
692
  // LK-001 (Epic #189): both the start and refresh handlers map a terminal IndexingTerminal
629
693
  // to the same 3-way response — cancelled → 409 cancelled, failed → 409 failed-message,
630
694
  // any other (completed or absent) → 200 ok. Extracted so each handler stays under the
@@ -645,13 +709,16 @@ async function runCapsuleIndexingJob(deps, store, capsule, options) {
645
709
  }
646
710
  canonicalizeCapsuleSourceRoots(store, capsule);
647
711
  const adapter = createEmbeddingAdapter(provider, requestEmbeddingImpl(deps));
648
- const sourceIds = options.mode === "repair-failed" ? failedSourceIds(store, capsule.id) : undefined;
712
+ const sourceSelection = resolveIndexingSourceSelection(store, capsule, options.mode);
713
+ if (!sourceSelection.shouldRun) {
714
+ return undefined;
715
+ }
649
716
  const controller = localKnowledgeIndexingRegistry.start(String(capsule.id));
650
717
  let terminal;
651
718
  try {
652
719
  for await (const event of runIndexingJob({
653
720
  capsuleId: capsule.id,
654
- ...(sourceIds !== undefined ? { sourceIds } : {}),
721
+ ...(sourceSelection.sourceIds !== undefined ? { sourceIds: sourceSelection.sourceIds } : {}),
655
722
  parserRegistry: createDefaultParserRegistry(),
656
723
  workspaceFs: nodeWorkspaceFs,
657
724
  embeddingAdapter: adapter,
@@ -704,7 +771,7 @@ async function runHandler(worker) {
704
771
  return notFound(error.message);
705
772
  }
706
773
  if (error instanceof KnowledgeStoreError) {
707
- return serviceUnavailable(error.message);
774
+ return serviceUnavailable(LOCAL_KNOWLEDGE_STORE_UNAVAILABLE_MESSAGE);
708
775
  }
709
776
  throw error;
710
777
  }
@@ -767,14 +834,12 @@ function parseSetCapsuleIds(raw) {
767
834
  return capsuleIds;
768
835
  }
769
836
  function parseCreateCapsuleSetInput(body) {
770
- const displayName = typeof body.displayName === "string" ? body.displayName.trim() : "";
771
- if (displayName.length === 0) {
837
+ if (typeof body.displayName !== "string") {
772
838
  throw new InvalidRequest('Field "displayName" must be a non-empty string.');
773
839
  }
840
+ const displayName = requireSafeDisplayText("displayName", body.displayName);
774
841
  const capsuleIds = parseSetCapsuleIds(body.capsuleIds);
775
- const description = typeof body.description === "string" && body.description.trim().length > 0
776
- ? body.description.trim()
777
- : undefined;
842
+ const description = safeOptionalDisplayText("description", body.description);
778
843
  return description === undefined
779
844
  ? { displayName, capsuleIds }
780
845
  : { displayName, description, capsuleIds };
@@ -823,16 +888,20 @@ function parseUpdateCapsuleInput(body) {
823
888
  }
824
889
  const patch = {};
825
890
  if (body.displayName !== undefined) {
826
- if (typeof body.displayName !== "string" || body.displayName.trim().length === 0) {
891
+ if (typeof body.displayName !== "string") {
827
892
  throw new InvalidRequest('Field "displayName" must be a non-empty string when provided.');
828
893
  }
829
- patch.displayName = body.displayName.trim();
894
+ patch.displayName = requireSafeDisplayText("displayName", body.displayName);
830
895
  }
831
896
  if (body.description !== undefined) {
832
897
  if (typeof body.description !== "string") {
833
898
  throw new InvalidRequest('Field "description" must be a string when provided.');
834
899
  }
835
- patch.description = body.description.trim();
900
+ const trimmed = body.description.trim();
901
+ if (!isSafeDisplaySummary(trimmed)) {
902
+ throw new InvalidRequest('Field "description" must be browser-safe when provided.');
903
+ }
904
+ patch.description = trimmed;
836
905
  }
837
906
  if (patch.displayName === undefined && patch.description === undefined) {
838
907
  throw new InvalidRequest("Patch must include displayName or description.");
@@ -861,9 +930,9 @@ export async function handleCreateLocalKnowledgeCapsule(ctx, deps) {
861
930
  const input = parseCreateCapsuleInput(await readJsonObject(ctx.req));
862
931
  const env = openStoreForDeps(deps);
863
932
  try {
864
- const configuredModelId = selectEmbeddingModelId(currentGatewayConfig(deps));
865
- if (configuredModelId === undefined) {
866
- return conflict("No configured embedding-capable model is available for new capsules. Configure the Model Gateway first.");
933
+ const embeddingIdentity = await resolveNewCapsuleEmbeddingIdentity(deps);
934
+ if (!embeddingIdentity.ok) {
935
+ return embeddingIdentity.result;
867
936
  }
868
937
  const capsuleId = randomUUID();
869
938
  const capsule = createCapsule(env.store, {
@@ -874,7 +943,7 @@ export async function handleCreateLocalKnowledgeCapsule(ctx, deps) {
874
943
  retrievalEffort: "default",
875
944
  outputMode: "snippets",
876
945
  answerGroundingPolicy: "require-citations",
877
- embeddingModelIdentity: defaultEmbeddingIdentity(configuredModelId),
946
+ embeddingModelIdentity: embeddingIdentity.identity,
878
947
  lifecycleState: "draft",
879
948
  storageReference: createCapsuleStorageReference(capsuleId),
880
949
  }, createSqliteAuditSink(env.store));
@@ -979,8 +1048,11 @@ function parseConnectSourceInput(body) {
979
1048
  assertScopeShape(scope);
980
1049
  const displayNameRaw = body.displayName;
981
1050
  const displayName = typeof displayNameRaw === "string" && displayNameRaw.trim().length > 0
982
- ? displayNameRaw.trim()
1051
+ ? requireSafeDisplayText("displayName", displayNameRaw)
983
1052
  : basename(connectScopeRootPath(scope));
1053
+ if (!isSafeDisplaySummary(displayName)) {
1054
+ throw new InvalidRequest('Field "displayName" must be browser-safe when provided.');
1055
+ }
984
1056
  return { scope, displayName };
985
1057
  }
986
1058
  // Canonicalize (realpath) then refuse denied locations and non-directory roots BEFORE
@@ -1003,6 +1075,36 @@ function guardConnectorSourcePath(scope) {
1003
1075
  }
1004
1076
  return canonical;
1005
1077
  }
1078
+ // Stable identity for connect-time dedup. Field-by-field (not JSON.stringify of the raw
1079
+ // object) so the request body's key order cannot defeat the comparison, and built on the
1080
+ // canonicalized scope so trailing-slash and symlink-alias spellings of the same folder fold
1081
+ // together. Scopes that differ in globs, recursion, or file lists stay distinct sources.
1082
+ //
1083
+ // files scope: the array order has no logical meaning (unlike includeGlobs/excludeGlobs on
1084
+ // folder/repository scopes where first-match-wins makes order semantically significant), so
1085
+ // we sort before serializing. This ensures [a,b] and [b,a] map to the same identity and the
1086
+ // idempotency check fires correctly on permuted re-connects.
1087
+ function scopeIdentity(scope) {
1088
+ const canonical = canonicalizeScopeRoot(scope);
1089
+ if (canonical.kind === "folder") {
1090
+ return JSON.stringify([
1091
+ "folder",
1092
+ canonical.rootPath,
1093
+ canonical.recursive,
1094
+ canonical.includeGlobs ?? null,
1095
+ canonical.excludeGlobs ?? null,
1096
+ ]);
1097
+ }
1098
+ if (canonical.kind === "repository") {
1099
+ return JSON.stringify([
1100
+ "repository",
1101
+ canonical.repositoryRoot,
1102
+ canonical.includeGlobs ?? null,
1103
+ canonical.excludeGlobs ?? null,
1104
+ ]);
1105
+ }
1106
+ return JSON.stringify(["files", canonical.rootPath, [...canonical.files].sort()]);
1107
+ }
1006
1108
  export async function handleConnectLocalKnowledgeCapsule(ctx, deps) {
1007
1109
  return runHandler(async () => {
1008
1110
  const capsuleId = parseCapsuleId(ctx);
@@ -1014,6 +1116,17 @@ export async function handleConnectLocalKnowledgeCapsule(ctx, deps) {
1014
1116
  if (capsule === undefined) {
1015
1117
  return notFound(`Capsule not found: ${capsuleId}`);
1016
1118
  }
1119
+ // Idempotent connect: re-connecting an identical scope (double-click, trailing-slash or
1120
+ // symlink-alias spelling of the same folder) must not create a second source row — a
1121
+ // duplicate would double-index every document and double every grounded citation.
1122
+ const targetIdentity = scopeIdentity(guarded);
1123
+ const alreadyConnected = listCapsuleSources(env.store, capsule.id).some((source) => scopeIdentity(source.scope) === targetIdentity);
1124
+ if (alreadyConnected) {
1125
+ return {
1126
+ status: 200,
1127
+ body: buildCapsuleResponseBody(deps, env.store, env.dbPath, capsule),
1128
+ };
1129
+ }
1017
1130
  addSourceToCapsule(env.store, capsule.id, {
1018
1131
  id: randomUUID(),
1019
1132
  displayName,
@@ -1067,8 +1180,12 @@ export async function handleReindexLocalKnowledgeCapsule(ctx, deps) {
1067
1180
  return runHandler(async () => {
1068
1181
  const capsuleId = parseCapsuleId(ctx);
1069
1182
  const body = await readJsonObject(ctx.req);
1070
- const mode = parseReindexMode(body);
1071
- const force = parseReindexForce(body);
1183
+ const reindexRequest = validateCapsuleReindexRequest({ ...body, capsuleId });
1184
+ if (!reindexRequest.ok) {
1185
+ throw new InvalidRequest(reindexRequest.errors.join(" "));
1186
+ }
1187
+ const mode = reindexRequest.value.mode;
1188
+ const force = reindexRequest.value.force ?? false;
1072
1189
  const env = openStoreForDeps(deps);
1073
1190
  try {
1074
1191
  const capsule = getCapsule(env.store, capsuleId);
@@ -1 +1 @@
1
- {"version":3,"file":"connectorErrors.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/connectorErrors.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,oBAAoB,GAC5B,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,GACtB,+BAA+B,GAC/B,aAAa,CAAC;AAElB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF;AAYD,eAAO,MAAM,oBAAoB,GAAI,MAAM,oBAAoB,KAAG,oBAEhE,CAAC;AAmBH,eAAO,MAAM,4BAA4B,GAAI,OAAO,MAAM,KAAG,OAK5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,GAC9C,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACzC,OAKF,CAAC"}
1
+ {"version":3,"file":"connectorErrors.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/connectorErrors.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,oBAAoB,GAC5B,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,GACtB,+BAA+B,GAC/B,aAAa,CAAC;AAElB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF;AAYD,eAAO,MAAM,oBAAoB,GAAI,MAAM,oBAAoB,KAAG,oBAEhE,CAAC;AAqBH,eAAO,MAAM,4BAA4B,GAAI,OAAO,MAAM,KAAG,OAM5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,GAC9C,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACzC,OAKF,CAAC"}
@@ -19,22 +19,25 @@ export const qiConnectorErrorBody = (code) => ({
19
19
  /**
20
20
  * Defence-in-depth scrub: detect substrings that would indicate the caller is trying to
21
21
  * smuggle credentials or a header pair through a connector payload. Pure, no IO.
22
+ *
23
+ * Comparison is case-insensitive so that variants like "BEARER ", "API_KEY", or
24
+ * "AUTHORIZATION:" are detected regardless of casing (prior case-variant list was
25
+ * incomplete and bypassed by non-listed casings — Issue #281).
22
26
  */
23
27
  const FORBIDDEN_SUBSTRINGS = [
24
- "Authorization:",
25
- "Bearer ",
26
- "Basic ",
28
+ "authorization:",
29
+ "bearer ",
30
+ "basic ",
27
31
  "apikey",
28
- "apiKey",
29
32
  "api_key",
30
- "Cookie:",
31
- "Set-Cookie",
33
+ "cookie:",
34
+ "set-cookie",
32
35
  "x-api-key",
33
- "X-Api-Key",
34
36
  ];
35
37
  export const containsForbiddenSecretShape = (value) => {
38
+ const lower = value.toLowerCase();
36
39
  for (const forbidden of FORBIDDEN_SUBSTRINGS) {
37
- if (value.includes(forbidden))
40
+ if (lower.includes(forbidden))
38
41
  return true;
39
42
  }
40
43
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"editRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/editRoutes.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA+PhD,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,eAAO,MAAM,mBAAmB,EAAE,SAAS,eAAe,EAMzD,CAAC"}
1
+ {"version":3,"file":"editRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/editRoutes.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgQhD,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,eAAO,MAAM,mBAAmB,EAAE,SAAS,eAAe,EAMzD,CAAC"}
@@ -200,6 +200,7 @@ function recordEdit(runId, edit, evidenceDir, deps) {
200
200
  candidateId: edit.candidateId,
201
201
  reviewerLabel: edit.editorLabel,
202
202
  now: new Date().toISOString(),
203
+ redact: deps.redactor,
203
204
  });
204
205
  }
205
206
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"exportRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/exportRoutes.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAsKhD,wBAAsB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAuBjG;AAgHD,eAAO,MAAM,qBAAqB,EAAE,SAAS,eAAe,EAE3D,CAAC"}
1
+ {"version":3,"file":"exportRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/exportRoutes.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyNhD,wBAAsB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CA2BjG;AA+HD,eAAO,MAAM,qBAAqB,EAAE,SAAS,eAAe,EAE3D,CAAC"}