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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (573) hide show
  1. package/README.md +139 -1
  2. package/dist/ui/csp-hashes.json +33 -39
  3. package/dist/ui/static/404.html +1 -1
  4. package/dist/ui/static/__next.__PAGE__.txt +9 -0
  5. package/dist/ui/static/__next._full.txt +18 -0
  6. package/dist/ui/static/__next._head.txt +6 -0
  7. package/dist/ui/static/__next._index.txt +5 -0
  8. package/dist/ui/static/__next._tree.txt +2 -0
  9. package/dist/ui/static/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
  10. package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +2 -0
  11. package/dist/ui/static/_next/static/chunks/0iq1i69206cyl.js +31 -0
  12. package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +1 -0
  13. package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +1 -0
  14. package/dist/ui/static/_next/static/chunks/14mrh2-p_w84d.js +1 -0
  15. package/dist/ui/static/_next/static/chunks/1m-kvwm6_90_3.css +1 -0
  16. package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +1 -0
  17. package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +4 -0
  18. package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +1 -0
  19. package/dist/ui/static/_next/static/chunks/2ngm8iwdb1cbv.js +106 -0
  20. package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +1 -0
  21. package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +1 -0
  22. package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +1 -0
  23. package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +1 -0
  24. package/dist/ui/static/_next/static/chunks/3peubv2924kx4.js +1 -0
  25. package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +1 -0
  26. package/dist/ui/static/_next/static/hR2gBQqCDKdPdSxBqZhqv/_buildManifest.js +11 -0
  27. package/dist/ui/static/_next/static/hR2gBQqCDKdPdSxBqZhqv/_clientMiddlewareManifest.js +1 -0
  28. package/dist/ui/static/_not-found/__next._full.txt +16 -0
  29. package/dist/ui/static/_not-found/__next._head.txt +6 -0
  30. package/dist/ui/static/_not-found/__next._index.txt +5 -0
  31. package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +5 -0
  32. package/dist/ui/static/_not-found/__next._not-found.txt +5 -0
  33. package/dist/ui/static/_not-found/__next._tree.txt +2 -0
  34. package/dist/ui/static/_not-found.html +1 -0
  35. package/dist/ui/static/_not-found.txt +16 -0
  36. package/dist/ui/static/index.html +1 -1
  37. package/dist/ui/static/index.txt +16 -18
  38. package/dist/ui/static/launch/__next._full.txt +20 -0
  39. package/dist/ui/static/launch/__next._head.txt +6 -0
  40. package/dist/ui/static/launch/__next._index.txt +5 -0
  41. package/dist/ui/static/launch/__next._tree.txt +2 -0
  42. package/dist/ui/static/launch/__next.launch.__PAGE__.txt +9 -0
  43. package/dist/ui/static/launch/__next.launch.txt +5 -0
  44. package/dist/ui/static/launch.html +1 -1
  45. package/dist/ui/static/launch.txt +17 -17
  46. package/dist/ui/static/local-knowledge/__next._full.txt +20 -0
  47. package/dist/ui/static/local-knowledge/__next._head.txt +6 -0
  48. package/dist/ui/static/local-knowledge/__next._index.txt +5 -0
  49. package/dist/ui/static/local-knowledge/__next._tree.txt +2 -0
  50. package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +9 -0
  51. package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +5 -0
  52. package/dist/ui/static/local-knowledge/capsule/__next._full.txt +17 -0
  53. package/dist/ui/static/local-knowledge/capsule/__next._head.txt +6 -0
  54. package/dist/ui/static/local-knowledge/capsule/__next._index.txt +5 -0
  55. package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -0
  56. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +6 -0
  57. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +5 -0
  58. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +5 -0
  59. package/dist/ui/static/local-knowledge/capsule.html +1 -1
  60. package/dist/ui/static/local-knowledge/capsule.txt +14 -14
  61. package/dist/ui/static/local-knowledge.html +1 -1
  62. package/dist/ui/static/local-knowledge.txt +19 -16
  63. package/dist/ui/static/memoriaviva/__next._full.txt +17 -0
  64. package/dist/ui/static/memoriaviva/__next._head.txt +6 -0
  65. package/dist/ui/static/memoriaviva/__next._index.txt +5 -0
  66. package/dist/ui/static/memoriaviva/__next._tree.txt +2 -0
  67. package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +6 -0
  68. package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +5 -0
  69. package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +17 -0
  70. package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +6 -0
  71. package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +5 -0
  72. package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -0
  73. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +6 -0
  74. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +5 -0
  75. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +5 -0
  76. package/dist/ui/static/memoriaviva/consolidation.html +1 -1
  77. package/dist/ui/static/memoriaviva/consolidation.txt +15 -15
  78. package/dist/ui/static/memoriaviva/detail/__next._full.txt +17 -0
  79. package/dist/ui/static/memoriaviva/detail/__next._head.txt +6 -0
  80. package/dist/ui/static/memoriaviva/detail/__next._index.txt +5 -0
  81. package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -0
  82. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +6 -0
  83. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +5 -0
  84. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +5 -0
  85. package/dist/ui/static/memoriaviva/detail.html +1 -1
  86. package/dist/ui/static/memoriaviva/detail.txt +14 -14
  87. package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +17 -0
  88. package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +6 -0
  89. package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +5 -0
  90. package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -0
  91. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +6 -0
  92. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +5 -0
  93. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +5 -0
  94. package/dist/ui/static/memoriaviva/review-queue.html +1 -1
  95. package/dist/ui/static/memoriaviva/review-queue.txt +15 -15
  96. package/dist/ui/static/memoriaviva.html +1 -1
  97. package/dist/ui/static/memoriaviva.txt +14 -14
  98. package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
  99. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
  100. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +61 -2
  101. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.d.ts.map +1 -1
  102. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.js +65 -21
  103. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher-platforms.js +3 -3
  104. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts +3 -1
  105. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
  106. package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +73 -41
  107. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
  108. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +36 -11
  109. package/node_modules/@oscharko-dev/keiko-cli/package.json +2 -2
  110. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  111. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +20 -1
  112. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
  113. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts +1 -1
  114. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
  115. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +256 -75
  116. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +11 -0
  117. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
  118. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +6 -6
  119. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  120. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -4
  121. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts +11 -0
  122. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts.map +1 -1
  123. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.js +4 -0
  124. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts +1 -1
  125. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts.map +1 -1
  126. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.js +109 -4
  127. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts +2 -0
  128. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
  129. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.js +94 -7
  130. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts +5 -0
  131. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts.map +1 -1
  132. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +2 -0
  133. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
  134. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.d.ts.map +1 -1
  135. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.js +3 -0
  136. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +14 -0
  137. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
  138. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +53 -5
  139. package/node_modules/@oscharko-dev/keiko-contracts/package.json +2 -2
  140. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  141. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.d.ts.map +1 -1
  142. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.js +11 -3
  143. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +2 -2
  144. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  145. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts +20 -1
  146. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts.map +1 -1
  147. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.js +34 -2
  148. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
  149. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
  150. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.js +1 -1
  151. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +1 -0
  152. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
  153. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +3 -1
  154. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +17 -0
  155. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
  156. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +19 -0
  157. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +5 -1
  158. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  159. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +32 -2
  160. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  161. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +259 -40
  162. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +3 -3
  163. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
  164. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.js +1 -1
  165. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +18 -1
  166. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map +1 -1
  167. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts +3 -0
  168. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts.map +1 -1
  169. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.js +48 -5
  170. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts +33 -0
  171. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
  172. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +99 -13
  173. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts +1 -1
  174. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts.map +1 -1
  175. package/node_modules/@oscharko-dev/keiko-evidence/package.json +2 -2
  176. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  177. package/node_modules/@oscharko-dev/keiko-harness/package.json +2 -2
  178. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  179. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.d.ts.map +1 -1
  180. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.js +25 -1
  181. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts +1 -1
  182. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
  183. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +16 -0
  184. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts +3 -1
  185. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts.map +1 -1
  186. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.js +9 -5
  187. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.d.ts.map +1 -1
  188. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.js +22 -7
  189. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts +4 -1
  190. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts.map +1 -1
  191. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.js +61 -9
  192. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.d.ts.map +1 -1
  193. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.js +64 -36
  194. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts +2 -2
  195. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts.map +1 -1
  196. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.js +2 -2
  197. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts +7 -1
  198. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts.map +1 -1
  199. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.js +5 -1
  200. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts +1 -1
  201. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
  202. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +27 -4
  203. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts +0 -1
  204. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts.map +1 -1
  205. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.js +0 -1
  206. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts +5 -1
  207. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
  208. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +25 -6
  209. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.d.ts.map +1 -1
  210. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.js +2 -3
  211. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.d.ts.map +1 -1
  212. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.js +10 -1
  213. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts +4 -1
  214. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
  215. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +370 -45
  216. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts +2 -0
  217. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts.map +1 -1
  218. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.js +8 -4
  219. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts +1 -1
  220. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts.map +1 -1
  221. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.js +10 -5
  222. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
  223. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +65 -20
  224. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts +1 -0
  225. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
  226. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +79 -0
  227. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
  228. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
  229. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
  230. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.d.ts.map +1 -1
  231. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.js +4 -0
  232. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +6 -5
  233. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
  234. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +4 -4
  235. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
  236. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +71 -29
  237. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
  238. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +253 -131
  239. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts +12 -0
  240. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts.map +1 -1
  241. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.d.ts.map +1 -1
  242. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.js +9 -0
  243. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +3 -1
  244. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
  245. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +13 -1
  246. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
  247. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +86 -46
  248. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -1
  249. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
  250. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +1 -1
  251. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
  252. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +50 -22
  253. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts +21 -1
  254. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
  255. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +90 -13
  256. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.d.ts.map +1 -1
  257. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.js +3 -1
  258. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts +7 -2
  259. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts.map +1 -1
  260. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.js +7 -3
  261. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/audit-emitter.js +8 -0
  262. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.d.ts.map +1 -1
  263. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.js +17 -10
  264. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
  265. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.js +7 -0
  266. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts +4 -0
  267. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts.map +1 -1
  268. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +1 -1
  269. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
  270. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
  271. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +318 -32
  272. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts +1 -1
  273. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
  274. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +46 -16
  275. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts +14 -0
  276. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts.map +1 -1
  277. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.js +26 -1
  278. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +10 -5
  279. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
  280. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +2 -2
  281. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
  282. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
  283. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
  284. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
  285. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
  286. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +2 -2
  287. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  288. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +2 -2
  289. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  290. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -1
  291. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
  292. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +50 -0
  293. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts +3 -0
  294. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
  295. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +114 -44
  296. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts +1 -0
  297. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts.map +1 -1
  298. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.js +22 -1
  299. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.d.ts.map +1 -1
  300. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.js +18 -4
  301. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts +14 -0
  302. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts.map +1 -1
  303. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.js +14 -0
  304. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +2 -2
  305. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  306. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
  307. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +9 -2
  308. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +1 -1
  309. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +9 -1
  310. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
  311. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +9 -1
  312. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts +5 -0
  313. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
  314. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +229 -33
  315. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +62 -0
  316. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
  317. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
  318. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +24 -4
  319. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts +4 -2
  320. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
  321. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +0 -0
  322. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
  323. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +119 -5
  324. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts +2 -1
  325. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts.map +1 -1
  326. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.js +26 -11
  327. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  328. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +86 -9
  329. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
  330. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -3
  331. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  332. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +14 -12
  333. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.d.ts.map +1 -1
  334. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.js +29 -30
  335. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.d.ts.map +1 -1
  336. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.js +29 -5
  337. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.d.ts.map +1 -1
  338. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.js +29 -29
  339. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts +2 -1
  340. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts.map +1 -1
  341. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.js +40 -2
  342. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.d.ts.map +1 -1
  343. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.js +6 -2
  344. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/sourceMixPlanning.js +0 -0
  345. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts +1 -1
  346. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts.map +1 -1
  347. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.js +9 -1
  348. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +2 -2
  349. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  350. package/node_modules/@oscharko-dev/keiko-sdk/package.json +2 -2
  351. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  352. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.d.ts.map +1 -1
  353. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.js +4 -2
  354. package/node_modules/@oscharko-dev/keiko-security/package.json +2 -2
  355. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  356. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts +6 -0
  357. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts.map +1 -0
  358. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.js +12 -0
  359. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts +1 -1
  360. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
  361. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +17 -5
  362. package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.js +1 -1
  363. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +2 -0
  364. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
  365. package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +59 -9
  366. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts +1 -1
  367. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts.map +1 -1
  368. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.js +4 -3
  369. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts +18 -3
  370. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts.map +1 -1
  371. package/node_modules/@oscharko-dev/keiko-server/dist/files.js +208 -72
  372. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.d.ts.map +1 -1
  373. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.js +7 -2
  374. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts +3 -0
  375. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts.map +1 -1
  376. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.js +27 -4
  377. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
  378. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +46 -14
  379. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -1
  380. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
  381. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +651 -45
  382. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
  383. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +5 -3
  384. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts +9 -0
  385. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  386. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +197 -46
  387. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts +4 -0
  388. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
  389. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +103 -25
  390. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +7 -0
  391. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  392. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +199 -21
  393. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.d.ts.map +1 -1
  394. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.js +21 -1
  395. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -1
  396. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
  397. package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -1
  398. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +9 -6
  399. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  400. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +193 -67
  401. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
  402. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +189 -72
  403. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.d.ts.map +1 -1
  404. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.js +11 -8
  405. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.d.ts.map +1 -1
  406. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.js +1 -0
  407. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.d.ts.map +1 -1
  408. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.js +89 -30
  409. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +10 -2
  410. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
  411. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +110 -30
  412. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts +13 -4
  413. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts.map +1 -1
  414. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.js +29 -17
  415. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts +13 -3
  416. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
  417. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +54 -5
  418. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  419. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +84 -12
  420. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
  421. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +16 -8
  422. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +6 -2
  423. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  424. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +13 -1
  425. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
  426. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +15 -2
  427. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
  428. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
  429. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +2 -2
  430. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -1
  431. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  432. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +138 -19
  433. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.d.ts.map +1 -1
  434. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +38 -8
  435. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts +1 -1
  436. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts.map +1 -1
  437. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.js +1 -0
  438. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.d.ts.map +1 -1
  439. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.js +41 -9
  440. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts +1 -0
  441. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts.map +1 -1
  442. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.js +2 -0
  443. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  444. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +43 -10
  445. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  446. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +3 -1
  447. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts +5 -0
  448. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts.map +1 -0
  449. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.js +70 -0
  450. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -1
  451. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.js +6 -2
  452. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts +25 -4
  453. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts.map +1 -1
  454. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.js +72 -9
  455. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  456. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +97 -18
  457. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.d.ts.map +1 -1
  458. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.js +2 -0
  459. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +4 -1
  460. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  461. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +17 -3
  462. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
  463. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +18 -4
  464. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  465. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +8 -3
  466. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
  467. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +6 -1
  468. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts +2 -2
  469. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
  470. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +84 -8
  471. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.d.ts.map +1 -1
  472. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.js +4 -2
  473. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts +1 -1
  474. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts.map +1 -1
  475. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts +5 -1
  476. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts.map +1 -1
  477. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
  478. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.js +71 -15
  479. package/node_modules/@oscharko-dev/keiko-server/package.json +2 -2
  480. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  481. package/node_modules/@oscharko-dev/keiko-tools/package.json +2 -2
  482. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  483. package/node_modules/@oscharko-dev/keiko-verification/package.json +2 -2
  484. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  485. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts +2 -0
  486. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts.map +1 -1
  487. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.js +45 -10
  488. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts +1 -1
  489. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts.map +1 -1
  490. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.js +1 -1
  491. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.d.ts.map +1 -1
  492. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.js +68 -0
  493. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
  494. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +4 -6
  495. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts +30 -0
  496. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts.map +1 -0
  497. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.js +114 -0
  498. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  499. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +20 -7
  500. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.d.ts.map +1 -1
  501. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.js +15 -7
  502. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
  503. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +28 -4
  504. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
  505. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +51 -1
  506. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.d.ts.map +1 -1
  507. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.js +8 -3
  508. package/node_modules/@oscharko-dev/keiko-workflows/package.json +2 -2
  509. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  510. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.d.ts.map +1 -1
  511. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.js +34 -2
  512. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts +1 -0
  513. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts.map +1 -1
  514. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.js +1 -0
  515. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.d.ts.map +1 -1
  516. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.js +84 -27
  517. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.d.ts.map +1 -1
  518. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.js +19 -0
  519. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.d.ts.map +1 -1
  520. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.js +6 -3
  521. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts +1 -0
  522. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts.map +1 -1
  523. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.js +2 -2
  524. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
  525. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +72 -25
  526. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts +15 -0
  527. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -0
  528. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +107 -0
  529. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts +18 -0
  530. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -0
  531. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +42 -0
  532. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  533. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +72 -11
  534. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts +2 -0
  535. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -0
  536. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.js +15 -0
  537. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +2 -2
  538. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
  539. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +89 -75
  540. package/node_modules/@oscharko-dev/keiko-workspace/package.json +2 -2
  541. package/node_modules/@types/node/README.md +1 -1
  542. package/node_modules/@types/node/http2.d.ts +1 -0
  543. package/node_modules/@types/node/package.json +2 -2
  544. package/package.json +3 -1
  545. package/dist/ui/static/_next/static/RAzN8WLtYaktD-ZePowXl/_buildManifest.js +0 -1
  546. package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.js +0 -1
  547. package/dist/ui/static/_next/static/chunks/258-e3b5ee46b0669967.js +0 -1
  548. package/dist/ui/static/_next/static/chunks/422-4c94c107b90d3ccc.js +0 -1
  549. package/dist/ui/static/_next/static/chunks/664-6d821dc1aacb6b48.js +0 -1
  550. package/dist/ui/static/_next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
  551. package/dist/ui/static/_next/static/chunks/982-abc19630e6305864.js +0 -1
  552. package/dist/ui/static/_next/static/chunks/app/_not-found/page-c4d800f366186be0.js +0 -1
  553. package/dist/ui/static/_next/static/chunks/app/launch/page-17ca39367f25f372.js +0 -1
  554. package/dist/ui/static/_next/static/chunks/app/layout-0f75a39edc90325d.js +0 -1
  555. package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-87a2ea239308ed34.js +0 -1
  556. package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-98bb7704fc7fd0ad.js +0 -1
  557. package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-f912263f1ee5d2dd.js +0 -1
  558. package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-fa590f135356e0af.js +0 -1
  559. package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-b8555600c1113f14.js +0 -1
  560. package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-85cfbeb3598c0a36.js +0 -1
  561. package/dist/ui/static/_next/static/chunks/app/page-2881856ad25d9935.js +0 -1
  562. package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
  563. package/dist/ui/static/_next/static/chunks/main-app-5b043f6c611974ae.js +0 -1
  564. package/dist/ui/static/_next/static/chunks/main-bc552b04f2b6dbe2.js +0 -1
  565. package/dist/ui/static/_next/static/chunks/pages/_app-2e239ff05bfdf6d6.js +0 -1
  566. package/dist/ui/static/_next/static/chunks/pages/_error-bda15e7831eec981.js +0 -1
  567. package/dist/ui/static/_next/static/chunks/webpack-0cfe6f51555ca84e.js +0 -1
  568. package/dist/ui/static/_next/static/css/eac94895f3edc5a5.css +0 -1
  569. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts +0 -6
  570. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts.map +0 -1
  571. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.js +0 -49
  572. /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
  573. /package/dist/ui/static/_next/static/{RAzN8WLtYaktD-ZePowXl → hR2gBQqCDKdPdSxBqZhqv}/_ssgManifest.js +0 -0
@@ -8,7 +8,7 @@
8
8
  // * deleteCapsule relies on the schema's ON DELETE CASCADE chain (#265). Removing the
9
9
  // CASCADE clause from any dependent table will either throw an FK violation (when
10
10
  // foreign_keys=ON catches a leftover) or leave orphan rows the cascade test catches.
11
- import { DELETE_CAPSULE_SQL, } from "@oscharko-dev/keiko-contracts";
11
+ import { DELETE_CAPSULE_SQL, isSafeStorageReference, isSafeDisplaySummary, } from "@oscharko-dev/keiko-contracts";
12
12
  import { KnowledgeNotFoundError, KnowledgeStoreError } from "./errors.js";
13
13
  const INSERT_CAPSULE_SQL = [
14
14
  "INSERT INTO capsules (",
@@ -52,6 +52,27 @@ function parseTags(json) {
52
52
  return [];
53
53
  return parsed.filter((entry) => typeof entry === "string");
54
54
  }
55
+ function assertSafeDisplayField(field, value) {
56
+ if (value.trim().length === 0 || !isSafeDisplaySummary(value)) {
57
+ throw new KnowledgeStoreError(`${field} must be a browser-safe non-empty string`);
58
+ }
59
+ }
60
+ function assertSafeOptionalDisplayField(field, value) {
61
+ if (value !== undefined && !isSafeDisplaySummary(value)) {
62
+ throw new KnowledgeStoreError(`${field} must be browser-safe when set`);
63
+ }
64
+ }
65
+ function assertSafeCreateCapsuleInput(input) {
66
+ assertSafeDisplayField("displayName", input.displayName);
67
+ assertSafeOptionalDisplayField("description", input.description);
68
+ assertSafeOptionalDisplayField("sourceRoutingInstructions", input.sourceRoutingInstructions);
69
+ for (const tag of input.tags) {
70
+ assertSafeDisplayField("tag", tag);
71
+ }
72
+ if (!isSafeStorageReference(input.storageReference)) {
73
+ throw new KnowledgeStoreError("storageReference must be a safe relative path");
74
+ }
75
+ }
55
76
  function listSourceIdsFor(store, capsuleId) {
56
77
  const rows = store._internal.db.prepare(SELECT_SOURCE_IDS_FOR_CAPSULE_SQL).all({ c: capsuleId });
57
78
  return rows.map((row) => row.id);
@@ -103,6 +124,7 @@ function withOptionalCapsuleFields(base, row) {
103
124
  return result;
104
125
  }
105
126
  export function createCapsule(store, input, auditSink) {
127
+ assertSafeCreateCapsuleInput(input);
106
128
  const now = store._internal.now();
107
129
  const params = {
108
130
  id: input.id,
@@ -195,10 +217,12 @@ export function updateCapsuleDetails(store, id, patch) {
195
217
  const assignments = [];
196
218
  const params = { id, now: store._internal.now() };
197
219
  if (patch.displayName !== undefined) {
220
+ assertSafeDisplayField("displayName", patch.displayName);
198
221
  assignments.push("display_name = :displayName");
199
222
  params.displayName = patch.displayName;
200
223
  }
201
224
  if (patch.description !== undefined) {
225
+ assertSafeOptionalDisplayField("description", patch.description);
202
226
  assignments.push("description = :description");
203
227
  params.description = patch.description;
204
228
  }
@@ -1,4 +1,4 @@
1
- import type { CapsuleSet, CapsuleSetId, KnowledgeCapsuleId } from "@oscharko-dev/keiko-contracts";
1
+ import { type CapsuleSet, type CapsuleSetId, type KnowledgeCapsuleId } from "@oscharko-dev/keiko-contracts";
2
2
  import type { KnowledgeStore } from "./store.js";
3
3
  export interface CreateCapsuleSetInput {
4
4
  readonly id: CapsuleSetId;
@@ -1 +1 @@
1
- {"version":3,"file":"capsule-set-lifecycle.d.ts","sourceRoot":"","sources":["../src/capsule-set-lifecycle.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGlG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,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,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AA4ED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,MAAM,GACV,IAAI,CAkBN;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,GAAG,UAAU,CAsBhG;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAQ7F;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,CAe5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,CAiB9E"}
1
+ {"version":3,"file":"capsule-set-lifecycle.d.ts","sourceRoot":"","sources":["../src/capsule-set-lifecycle.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,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,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAwFD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,MAAM,GACV,IAAI,CAuBN;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,GAAG,UAAU,CAsBhG;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAQ7F;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,CAe5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,CAiB9E"}
@@ -9,11 +9,22 @@
9
9
  // payload `{displayName, description?, tags, composedAt}`. Members live in their declared
10
10
  // table. Deleting a capsule cascades to the membership row via the FK from #265; this
11
11
  // module does not need to chase it.
12
+ import { isSafeDisplaySummary, } from "@oscharko-dev/keiko-contracts";
12
13
  import { KnowledgeNotFoundError, KnowledgeStoreError } from "./errors.js";
13
14
  const META_PREFIX = "capsule_set:";
14
15
  function metaKey(id) {
15
16
  return `${META_PREFIX}${String(id)}`;
16
17
  }
18
+ function assertSafeDisplayField(field, value) {
19
+ if (value.trim().length === 0 || !isSafeDisplaySummary(value)) {
20
+ throw new KnowledgeStoreError(`${field} must be a browser-safe non-empty string`);
21
+ }
22
+ }
23
+ function assertSafeOptionalDisplayField(field, value) {
24
+ if (value !== undefined && !isSafeDisplaySummary(value)) {
25
+ throw new KnowledgeStoreError(`${field} must be browser-safe when set`);
26
+ }
27
+ }
17
28
  function parseMeta(value, id) {
18
29
  const parsed = JSON.parse(value);
19
30
  if (typeof parsed !== "object" || parsed === null) {
@@ -58,6 +69,11 @@ function metaToCapsuleSet(id, payload, capsuleIds) {
58
69
  // wraps it in its own transaction) and by runComposeTransaction (which needs to combine the
59
70
  // set creation and audit writes in one atomic outer transaction).
60
71
  export function createCapsuleSetWithinTxn(store, input, now) {
72
+ assertSafeDisplayField("displayName", input.displayName);
73
+ assertSafeOptionalDisplayField("description", input.description);
74
+ for (const tag of input.tags) {
75
+ assertSafeDisplayField("tag", tag);
76
+ }
61
77
  const db = store._internal.db;
62
78
  const payload = {
63
79
  displayName: input.displayName,
@@ -10,11 +10,13 @@ export interface ChunkInsertRow {
10
10
  readonly tokenCount: number;
11
11
  readonly safeExcerptHash: string;
12
12
  readonly chunkingStrategyVersion: string;
13
+ readonly characterStart: number;
14
+ readonly characterEnd: number;
13
15
  }
14
16
  export declare function insertChunkRow(db: DatabaseSync, row: ChunkInsertRow): void;
15
17
  export declare function deleteChunksForDocument(db: DatabaseSync, capsuleId: KnowledgeCapsuleId, documentId: DocumentId): void;
16
18
  export declare function countChunksForDocument(db: DatabaseSync, capsuleId: KnowledgeCapsuleId, documentId: DocumentId): number;
17
- export declare function hasStaleChunksForDocument(db: DatabaseSync, capsuleId: KnowledgeCapsuleId, documentId: DocumentId): boolean;
19
+ export declare function hasStaleChunksForDocument(db: DatabaseSync, capsuleId: KnowledgeCapsuleId, documentId: DocumentId, chunkingStrategyVersion?: string): boolean;
18
20
  export declare function selectDocumentSourceId(db: DatabaseSync, capsuleId: KnowledgeCapsuleId, documentId: DocumentId): KnowledgeSourceId | undefined;
19
21
  export interface ParsedUnitRow {
20
22
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"chunker-persist.d.ts","sourceRoot":"","sources":["../../src/chunking/chunker-persist.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAmChD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAY1E;AAED,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,IAAI,CAEN;AAMD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,MAAM,CAKR;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,OAAO,CAOT;AAMD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,iBAAiB,GAAG,SAAS,CAK/B;AAKD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,SAAS,aAAa,EAAE,CAK1B"}
1
+ {"version":3,"file":"chunker-persist.d.ts","sourceRoot":"","sources":["../../src/chunking/chunker-persist.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqChD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAIzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAc1E;AAED,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,IAAI,CAEN;AAMD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,MAAM,CAKR;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,EACtB,uBAAuB,GAAE,MAAsC,GAC9D,OAAO,CAOT;AAMD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,iBAAiB,GAAG,SAAS,CAK/B;AAKD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,UAAU,GACrB,SAAS,aAAa,EAAE,CAK1B"}
@@ -3,14 +3,16 @@
3
3
  // `chunker-runner.ts`. The runner is the only module that issues transactions for chunks —
4
4
  // mirrors the `discovery/persist.ts` boundary convention so a per-document failure rolls
5
5
  // back exactly the rows from that document.
6
- import { CHUNKING_STRATEGY_VERSION } from "./types.js";
6
+ import { DEFAULT_CHUNKING_STRATEGY_KEY } from "./types.js";
7
7
  const INSERT_CHUNK_SQL = [
8
8
  "INSERT INTO chunks (",
9
9
  " id, capsule_id, source_id, document_id, parsed_unit_id,",
10
- " order_index, token_count, safe_excerpt_hash, chunking_strategy_version",
10
+ " order_index, token_count, safe_excerpt_hash, chunking_strategy_version,",
11
+ " character_start, character_end",
11
12
  ") VALUES (",
12
13
  " :id, :capsule_id, :source_id, :document_id, :parsed_unit_id,",
13
- " :order_index, :token_count, :safe_excerpt_hash, :chunking_strategy_version",
14
+ " :order_index, :token_count, :safe_excerpt_hash, :chunking_strategy_version,",
15
+ " :character_start, :character_end",
14
16
  ")",
15
17
  ].join(" ");
16
18
  const DELETE_CHUNKS_FOR_DOCUMENT_SQL = "DELETE FROM chunks WHERE capsule_id = :c AND document_id = :d";
@@ -39,6 +41,8 @@ export function insertChunkRow(db, row) {
39
41
  token_count: row.tokenCount,
40
42
  safe_excerpt_hash: row.safeExcerptHash,
41
43
  chunking_strategy_version: row.chunkingStrategyVersion,
44
+ character_start: row.characterStart,
45
+ character_end: row.characterEnd,
42
46
  });
43
47
  }
44
48
  export function deleteChunksForDocument(db, capsuleId, documentId) {
@@ -48,11 +52,11 @@ export function countChunksForDocument(db, capsuleId, documentId) {
48
52
  const row = db.prepare(COUNT_CHUNKS_FOR_DOCUMENT_SQL).get({ c: capsuleId, d: documentId });
49
53
  return typeof row?.n === "number" ? row.n : 0;
50
54
  }
51
- export function hasStaleChunksForDocument(db, capsuleId, documentId) {
55
+ export function hasStaleChunksForDocument(db, capsuleId, documentId, chunkingStrategyVersion = DEFAULT_CHUNKING_STRATEGY_KEY) {
52
56
  const row = db.prepare(COUNT_STALE_CHUNKS_FOR_DOCUMENT_SQL).get({
53
57
  c: capsuleId,
54
58
  d: documentId,
55
- v: CHUNKING_STRATEGY_VERSION,
59
+ v: chunkingStrategyVersion,
56
60
  });
57
61
  return (row?.n ?? 0) > 0;
58
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chunker-runner.d.ts","sourceRoot":"","sources":["../../src/chunking/chunker-runner.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgO5F,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,eAAe,GACxB,mBAAmB,CAkCrB"}
1
+ {"version":3,"file":"chunker-runner.d.ts","sourceRoot":"","sources":["../../src/chunking/chunker-runner.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0P5F,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,eAAe,GACxB,mBAAmB,CAkCrB"}
@@ -7,9 +7,9 @@
7
7
  // Idempotency: with `force: false` (default) and existing chunks already in the table,
8
8
  // the runner is a no-op and returns `skippedExisting: true`. With `force: true`, prior
9
9
  // chunks are deleted at the start of the transaction.
10
- import { chunkParsedUnit } from "./chunker.js";
10
+ import { chunkParsedUnit, chunkingStrategyKey, resolveChunkingOptions } from "./chunker.js";
11
11
  import { countChunksForDocument, deleteChunksForDocument, hasStaleChunksForDocument, insertChunkRow, selectDocumentSourceId, selectParsedUnitsForDocument, } from "./chunker-persist.js";
12
- import { CHUNKING_STRATEGY_VERSION, ChunkingError } from "./types.js";
12
+ import { ChunkingError } from "./types.js";
13
13
  // ─── Row → ParsedUnit reconstitution ──────────────────────────────────────────
14
14
  // The parsed_units table is the canonical write surface for #194. We re-hydrate the
15
15
  // discriminant union here so the pure chunker stays unaware of SQLite. Defensive: any
@@ -123,14 +123,26 @@ function throwIfAborted(signal) {
123
123
  function composeChunkId(documentId, parsedUnitRowId, orderIndex) {
124
124
  return `${String(documentId)}#${parsedUnitRowId}#c${String(orderIndex)}`;
125
125
  }
126
+ function documentMaxChunks(options) {
127
+ return resolveChunkingOptions(options).maxChunks;
128
+ }
129
+ function optionsWithRemainingChunkBudget(options, remaining) {
130
+ return options === undefined ? { maxChunks: remaining } : { ...options, maxChunks: remaining };
131
+ }
126
132
  function persistAllChunks(store, ctx, rows, options, signal) {
127
133
  const db = store._internal.db;
128
134
  const chunkIds = [];
135
+ const maxChunks = documentMaxChunks(options);
136
+ const strategyKey = chunkingStrategyKey(options);
129
137
  let orderIndex = 0;
130
138
  for (const row of rows) {
131
139
  throwIfAborted(signal);
140
+ const remaining = maxChunks - chunkIds.length;
141
+ if (remaining <= 0) {
142
+ throw new ChunkingError(`chunkDocument exceeded maxChunks ${String(maxChunks)}`);
143
+ }
132
144
  const unit = rowToParsedUnit(row, ctx.documentId);
133
- const chunks = chunkParsedUnit(unit, ctx.sourceText, options);
145
+ const chunks = chunkParsedUnit(unit, ctx.sourceText, optionsWithRemainingChunkBudget(options, remaining));
134
146
  for (const chunk of chunks) {
135
147
  const id = composeChunkId(ctx.documentId, row.id, orderIndex);
136
148
  insertChunkRow(db, {
@@ -142,7 +154,9 @@ function persistAllChunks(store, ctx, rows, options, signal) {
142
154
  orderIndex,
143
155
  tokenCount: chunk.tokenCount,
144
156
  safeExcerptHash: chunk.safeExcerptHash,
145
- chunkingStrategyVersion: CHUNKING_STRATEGY_VERSION,
157
+ chunkingStrategyVersion: strategyKey,
158
+ characterStart: chunk.characterStart,
159
+ characterEnd: chunk.characterEnd,
146
160
  });
147
161
  chunkIds.push(id);
148
162
  orderIndex += 1;
@@ -150,12 +164,13 @@ function persistAllChunks(store, ctx, rows, options, signal) {
150
164
  }
151
165
  return chunkIds;
152
166
  }
153
- function loadChunkingPreflight(store, capsuleId, documentId) {
167
+ function loadChunkingPreflight(store, capsuleId, documentId, options) {
154
168
  const db = store._internal.db;
155
169
  const existingCount = countChunksForDocument(db, capsuleId, documentId);
156
170
  return {
157
171
  existingCount,
158
- staleChunks: existingCount > 0 && hasStaleChunksForDocument(db, capsuleId, documentId),
172
+ staleChunks: existingCount > 0 &&
173
+ hasStaleChunksForDocument(db, capsuleId, documentId, chunkingStrategyKey(options)),
159
174
  };
160
175
  }
161
176
  function assertDocumentSourceMatches(store, capsuleId, documentId, sourceId) {
@@ -174,7 +189,7 @@ export function chunkDocument(store, params, options) {
174
189
  const { capsuleId, sourceId, documentId, sourceText, force, signal } = params;
175
190
  throwIfAborted(signal);
176
191
  const db = store._internal.db;
177
- const preflight = loadChunkingPreflight(store, capsuleId, documentId);
192
+ const preflight = loadChunkingPreflight(store, capsuleId, documentId, options);
178
193
  assertDocumentSourceMatches(store, capsuleId, documentId, sourceId);
179
194
  if (shouldReuseExistingChunks(preflight, force)) {
180
195
  return { capsuleId, documentId, chunkIds: [], skippedExisting: true };
@@ -1,4 +1,7 @@
1
1
  import type { ParsedUnit } from "@oscharko-dev/keiko-contracts";
2
- import type { ChunkingOptions, ChunkingResult } from "./types.js";
2
+ import type { ChunkingOptions, ChunkingResult, ResolvedChunkingOptions } from "./types.js";
3
+ export declare function resolveChunkingOptions(options: ChunkingOptions | undefined): ResolvedChunkingOptions;
4
+ export declare function chunkingStrategyKey(options: ChunkingOptions | undefined): string;
5
+ export declare function chunkDedupeKey(text: string): string | undefined;
3
6
  export declare function chunkParsedUnit(unit: ParsedUnit, sourceText: string, options?: ChunkingOptions): readonly ChunkingResult[];
4
7
  //# sourceMappingURL=chunker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/chunking/chunker.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAGf,MAAM,YAAY,CAAC;AAqEpB,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,eAAe,GACxB,SAAS,cAAc,EAAE,CAoB3B"}
1
+ {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/chunking/chunker.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,uBAAuB,EAExB,MAAM,YAAY,CAAC;AAiCpB,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,GAAG,SAAS,GACnC,uBAAuB,CAgBzB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAWhF;AAuBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK/D;AAuDD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,eAAe,GACxB,SAAS,cAAc,EAAE,CAyB3B"}
@@ -20,14 +20,44 @@
20
20
  // tradeoff is intentional and documented.
21
21
  import { createHash } from "node:crypto";
22
22
  import { charsForTokenBudget } from "./token-estimator.js";
23
- import { DEFAULT_MAX_TOKENS, DEFAULT_MIN_TOKENS, DEFAULT_OVERLAP_TOKENS } from "./types.js";
23
+ import { ChunkingError, DEFAULT_CHUNKING_STRATEGY_KEY, DEFAULT_MAX_CHUNKS, DEFAULT_MAX_TOKENS, DEFAULT_MIN_TOKENS, DEFAULT_OVERLAP_TOKENS, MAX_CHUNK_TOKENS, MAX_OVERLAP_TOKENS, CHUNKING_STRATEGY_VERSION, } from "./types.js";
24
24
  import { defaultTokenEstimator } from "./token-estimator.js";
25
- function resolveOptions(options) {
26
- const maxTokens = options?.maxTokens ?? DEFAULT_MAX_TOKENS;
27
- const minTokens = options?.minTokens ?? DEFAULT_MIN_TOKENS;
28
- const overlapTokens = options?.overlapTokens ?? DEFAULT_OVERLAP_TOKENS;
25
+ const WHITESPACE_PATTERN = /\s+/gu;
26
+ const INFORMATIVE_CHARACTER_PATTERN = /[\p{L}\p{N}]/u;
27
+ function positiveInteger(raw, fallback, field) {
28
+ const value = raw ?? fallback;
29
+ if (!Number.isFinite(value) || value < 1) {
30
+ throw new ChunkingError(`${field} must be a positive finite integer`);
31
+ }
32
+ return Math.floor(value);
33
+ }
34
+ function nonNegativeInteger(raw, fallback, field) {
35
+ const value = raw ?? fallback;
36
+ if (!Number.isFinite(value) || value < 0) {
37
+ throw new ChunkingError(`${field} must be a non-negative finite integer`);
38
+ }
39
+ return Math.floor(value);
40
+ }
41
+ export function resolveChunkingOptions(options) {
42
+ const maxTokens = Math.min(positiveInteger(options?.maxTokens, DEFAULT_MAX_TOKENS, "maxTokens"), MAX_CHUNK_TOKENS);
43
+ const minTokens = nonNegativeInteger(options?.minTokens, DEFAULT_MIN_TOKENS, "minTokens");
44
+ const overlapTokens = Math.min(nonNegativeInteger(options?.overlapTokens, DEFAULT_OVERLAP_TOKENS, "overlapTokens"), MAX_OVERLAP_TOKENS);
45
+ const maxChunks = Math.min(positiveInteger(options?.maxChunks, DEFAULT_MAX_CHUNKS, "maxChunks"), DEFAULT_MAX_CHUNKS);
29
46
  const tokenEstimator = options?.tokenEstimator ?? defaultTokenEstimator;
30
- return { maxTokens, minTokens, overlapTokens, tokenEstimator };
47
+ return { maxTokens, minTokens, overlapTokens, maxChunks, tokenEstimator };
48
+ }
49
+ export function chunkingStrategyKey(options) {
50
+ if (options === undefined)
51
+ return DEFAULT_CHUNKING_STRATEGY_KEY;
52
+ const resolved = resolveChunkingOptions(options);
53
+ return [
54
+ CHUNKING_STRATEGY_VERSION,
55
+ `max=${String(resolved.maxTokens)}`,
56
+ `min=${String(resolved.minTokens)}`,
57
+ `overlap=${String(resolved.overlapTokens)}`,
58
+ `limit=${String(resolved.maxChunks)}`,
59
+ options.tokenEstimator === undefined ? "estimator=default" : "estimator=custom",
60
+ ].join("|");
31
61
  }
32
62
  function spanForUnit(unit, sourceLength) {
33
63
  if (unit.kind === "unsupported-media")
@@ -41,8 +71,21 @@ function spanForUnit(unit, sourceLength) {
41
71
  function hashExcerpt(text) {
42
72
  return createHash("sha256").update(text, "utf8").digest("hex");
43
73
  }
74
+ function normaliseChunkText(text) {
75
+ return text.normalize("NFKC").replace(WHITESPACE_PATTERN, " ").trim();
76
+ }
77
+ export function chunkDedupeKey(text) {
78
+ const normalised = normaliseChunkText(text);
79
+ if (normalised.length === 0)
80
+ return undefined;
81
+ if (!INFORMATIVE_CHARACTER_PATTERN.test(normalised))
82
+ return undefined;
83
+ return hashExcerpt(normalised);
84
+ }
44
85
  function buildChunk(sourceText, start, end, estimator) {
45
86
  const excerpt = sourceText.slice(start, end);
87
+ if (chunkDedupeKey(excerpt) === undefined)
88
+ return undefined;
46
89
  return {
47
90
  characterStart: start,
48
91
  characterEnd: end,
@@ -64,21 +107,30 @@ function shouldEmitSingleChunk(excerpt, resolved) {
64
107
  // produces one chunk so we never drop content (spec edge case: "Single tiny unit").
65
108
  return resolved.tokenEstimator(excerpt) <= resolved.maxTokens;
66
109
  }
110
+ function pushChunk(chunks, chunk, maxChunks) {
111
+ if (chunk === undefined)
112
+ return;
113
+ if (chunks.length >= maxChunks) {
114
+ throw new ChunkingError(`chunkParsedUnit exceeded maxChunks ${String(maxChunks)}`);
115
+ }
116
+ chunks.push(chunk);
117
+ }
67
118
  export function chunkParsedUnit(unit, sourceText, options) {
68
- const resolved = resolveOptions(options);
119
+ const resolved = resolveChunkingOptions(options);
69
120
  const span = spanForUnit(unit, sourceText.length);
70
121
  if (span === undefined)
71
122
  return [];
72
123
  const excerpt = sourceText.slice(span.start, span.end);
73
124
  if (shouldEmitSingleChunk(excerpt, resolved)) {
74
- return [buildChunk(sourceText, span.start, span.end, resolved.tokenEstimator)];
125
+ const chunk = buildChunk(sourceText, span.start, span.end, resolved.tokenEstimator);
126
+ return chunk === undefined ? [] : [chunk];
75
127
  }
76
128
  const { maxChars, stride } = computeStepSizes(resolved);
77
129
  const chunks = [];
78
130
  let cursor = span.start;
79
131
  while (cursor < span.end) {
80
132
  const end = Math.min(cursor + maxChars, span.end);
81
- chunks.push(buildChunk(sourceText, cursor, end, resolved.tokenEstimator));
133
+ pushChunk(chunks, buildChunk(sourceText, cursor, end, resolved.tokenEstimator), resolved.maxChunks);
82
134
  if (end >= span.end)
83
135
  break;
84
136
  cursor += stride;
@@ -1 +1 @@
1
- {"version":3,"file":"citation-mapper.d.ts","sourceRoot":"","sources":["../../src/chunking/citation-mapper.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,iBAAiB,EAEjB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkMlD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,OAAO,EAChB,aAAa,CAAC,EAAE,YAAY,GAC3B,iBAAiB,GAAG,IAAI,CAc1B"}
1
+ {"version":3,"file":"citation-mapper.d.ts","sourceRoot":"","sources":["../../src/chunking/citation-mapper.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,iBAAiB,EAEjB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyOlD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,OAAO,EAChB,aAAa,CAAC,EAAE,YAAY,GAC3B,iBAAiB,GAAG,IAAI,CAc1B"}
@@ -13,15 +13,17 @@
13
13
  // - kind=page: copy pageNumber/pageLabel + characterStart/End directly.
14
14
  // - kind=section: copy sectionPath + characterStart/End directly.
15
15
  // - kind=html-block: copy headingPath + characterStart/End.
16
- // - other kinds (json-path, csv-row, unsupported-media): characterStart/End only.
16
+ // - kind=json-path: copy jsonPointer + characterStart/End.
17
+ // - kind=csv-row: copy tableName/rowIndex + characterStart/End.
18
+ // - other kinds (unsupported-media): characterStart/End only.
17
19
  // THEN: if the parsed_unit's span overlaps any persisted `pages` row, attach that
18
20
  // page's pageNumber/pageLabel — section units inside a paged document still
19
21
  // surface a citation page number.
20
22
  // 4. Document row provides safeDisplayName + sourceId.
21
- const SELECT_CHUNK_SQL = "SELECT id, capsule_id, source_id, document_id, parsed_unit_id FROM chunks WHERE capsule_id = :c AND id = :id";
23
+ const SELECT_CHUNK_SQL = "SELECT id, capsule_id, source_id, document_id, parsed_unit_id, character_start, character_end FROM chunks WHERE capsule_id = :c AND id = :id";
22
24
  const SELECT_PARSED_UNIT_SQL = [
23
25
  "SELECT kind, page_number, page_label, section_path_json,",
24
- " heading_path_json, character_start, character_end",
26
+ " heading_path_json, json_pointer, table_name, row_index, character_start, character_end",
25
27
  "FROM parsed_units",
26
28
  "WHERE capsule_id = :c AND id = :id",
27
29
  ].join(" ");
@@ -62,43 +64,66 @@ function parseStringArray(raw) {
62
64
  }
63
65
  return parsed;
64
66
  }
65
- function hopFieldsForUnit(unit) {
66
- const characterStart = unit.character_start ?? undefined;
67
- const characterEnd = unit.character_end ?? undefined;
68
- if (unit.kind === "page") {
69
- return {
67
+ function baseHopFields(unit) {
68
+ return {
69
+ pageNumber: undefined,
70
+ pageLabel: undefined,
71
+ sectionPath: undefined,
72
+ jsonPointer: undefined,
73
+ tableName: undefined,
74
+ rowIndex: undefined,
75
+ characterStart: unit.character_start ?? undefined,
76
+ characterEnd: unit.character_end ?? undefined,
77
+ };
78
+ }
79
+ const HOP_FIELDS_BY_KIND = new Map([
80
+ [
81
+ "page",
82
+ (unit, base) => ({
83
+ ...base,
70
84
  pageNumber: unit.page_number ?? undefined,
71
85
  pageLabel: unit.page_label ?? undefined,
72
- sectionPath: undefined,
73
- characterStart,
74
- characterEnd,
75
- };
76
- }
77
- if (unit.kind === "section") {
78
- return {
79
- pageNumber: undefined,
80
- pageLabel: undefined,
86
+ }),
87
+ ],
88
+ [
89
+ "section",
90
+ (unit, base) => ({
91
+ ...base,
81
92
  sectionPath: parseStringArray(unit.section_path_json),
82
- characterStart,
83
- characterEnd,
84
- };
85
- }
86
- if (unit.kind === "html-block") {
87
- return {
88
- pageNumber: undefined,
89
- pageLabel: undefined,
93
+ }),
94
+ ],
95
+ [
96
+ "html-block",
97
+ (unit, base) => ({
98
+ ...base,
90
99
  sectionPath: parseStringArray(unit.heading_path_json),
91
- characterStart,
92
- characterEnd,
93
- };
94
- }
95
- // json-path / csv-row / unsupported-media — character offsets only when present.
100
+ }),
101
+ ],
102
+ [
103
+ "json-path",
104
+ (unit, base) => ({
105
+ ...base,
106
+ jsonPointer: unit.json_pointer ?? undefined,
107
+ }),
108
+ ],
109
+ [
110
+ "csv-row",
111
+ (unit, base) => ({
112
+ ...base,
113
+ tableName: unit.table_name ?? undefined,
114
+ rowIndex: unit.row_index ?? undefined,
115
+ }),
116
+ ],
117
+ ]);
118
+ function hopFieldsForUnit(unit) {
119
+ const base = baseHopFields(unit);
120
+ return HOP_FIELDS_BY_KIND.get(unit.kind)?.(unit, base) ?? base;
121
+ }
122
+ function applyChunkSpan(hop, chunk) {
96
123
  return {
97
- pageNumber: undefined,
98
- pageLabel: undefined,
99
- sectionPath: undefined,
100
- characterStart,
101
- characterEnd,
124
+ ...hop,
125
+ characterStart: chunk.character_start ?? hop.characterStart,
126
+ characterEnd: chunk.character_end ?? hop.characterEnd,
102
127
  };
103
128
  }
104
129
  function attachPageHop(db, capsuleId, documentId, hop) {
@@ -128,6 +153,9 @@ function buildCitation(chunk, document, hop, chunkId, capsuleId) {
128
153
  ...(hop.pageNumber !== undefined ? { pageNumber: hop.pageNumber } : {}),
129
154
  ...(hop.pageLabel !== undefined ? { pageLabel: hop.pageLabel } : {}),
130
155
  ...(hop.sectionPath !== undefined ? { sectionPath: hop.sectionPath } : {}),
156
+ ...(hop.jsonPointer !== undefined ? { jsonPointer: hop.jsonPointer } : {}),
157
+ ...(hop.tableName !== undefined ? { tableName: hop.tableName } : {}),
158
+ ...(hop.rowIndex !== undefined ? { rowIndex: hop.rowIndex } : {}),
131
159
  ...(hop.characterStart !== undefined ? { characterStart: hop.characterStart } : {}),
132
160
  ...(hop.characterEnd !== undefined ? { characterEnd: hop.characterEnd } : {}),
133
161
  };
@@ -146,7 +174,7 @@ export function mapChunkToCitation(store, capsuleId, chunkId, _capsuleSetId) {
146
174
  const document = fetchDocumentRow(db, capsuleId, chunk.document_id);
147
175
  if (document === undefined)
148
176
  return null;
149
- const baseHop = hopFieldsForUnit(unit);
177
+ const baseHop = applyChunkSpan(hopFieldsForUnit(unit), chunk);
150
178
  const hop = attachPageHop(db, capsuleId, chunk.document_id, baseHop);
151
179
  return buildCitation(chunk, document, hop, chunkId, capsuleId);
152
180
  }
@@ -1,6 +1,6 @@
1
- export { chunkParsedUnit } from "./chunker.js";
1
+ export { chunkDedupeKey, chunkParsedUnit, chunkingStrategyKey, resolveChunkingOptions, } from "./chunker.js";
2
2
  export { chunkDocument } from "./chunker-runner.js";
3
3
  export { mapChunkToCitation } from "./citation-mapper.js";
4
4
  export { defaultTokenEstimator, charsForTokenBudget } from "./token-estimator.js";
5
- export { CHUNKING_STRATEGY_VERSION, ChunkingError, DEFAULT_MAX_TOKENS, DEFAULT_MIN_TOKENS, DEFAULT_OVERLAP_TOKENS, type ChunkDocumentParams, type ChunkDocumentResult, type ChunkingOptions, type ChunkingResult, type ResolvedChunkingOptions, type TokenEstimator, } from "./types.js";
5
+ export { CHUNKING_STRATEGY_VERSION, ChunkingError, DEFAULT_CHUNKING_STRATEGY_KEY, DEFAULT_MAX_CHUNKS, DEFAULT_MAX_TOKENS, DEFAULT_MIN_TOKENS, DEFAULT_OVERLAP_TOKENS, MAX_CHUNK_TOKENS, MAX_OVERLAP_TOKENS, type ChunkDocumentParams, type ChunkDocumentResult, type ChunkingOptions, type ChunkingResult, type ResolvedChunkingOptions, type TokenEstimator, } from "./types.js";
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chunking/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chunking/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC"}
@@ -1,8 +1,8 @@
1
1
  // Barrel for the chunking layer (Epic #189, Issue #195). Composed by the package barrel
2
2
  // in ../index.ts; consumers outside the package never import from this subdirectory
3
3
  // directly (ADR-0019 direction rule 3e + the trust-8 test-support naming convention).
4
- export { chunkParsedUnit } from "./chunker.js";
4
+ export { chunkDedupeKey, chunkParsedUnit, chunkingStrategyKey, resolveChunkingOptions, } from "./chunker.js";
5
5
  export { chunkDocument } from "./chunker-runner.js";
6
6
  export { mapChunkToCitation } from "./citation-mapper.js";
7
7
  export { defaultTokenEstimator, charsForTokenBudget } from "./token-estimator.js";
8
- export { CHUNKING_STRATEGY_VERSION, ChunkingError, DEFAULT_MAX_TOKENS, DEFAULT_MIN_TOKENS, DEFAULT_OVERLAP_TOKENS, } from "./types.js";
8
+ export { CHUNKING_STRATEGY_VERSION, ChunkingError, DEFAULT_CHUNKING_STRATEGY_KEY, DEFAULT_MAX_CHUNKS, DEFAULT_MAX_TOKENS, DEFAULT_MIN_TOKENS, DEFAULT_OVERLAP_TOKENS, MAX_CHUNK_TOKENS, MAX_OVERLAP_TOKENS, } from "./types.js";
@@ -5,16 +5,22 @@ export interface ChunkingOptions {
5
5
  readonly maxTokens?: number;
6
6
  readonly minTokens?: number;
7
7
  readonly overlapTokens?: number;
8
+ readonly maxChunks?: number;
8
9
  readonly tokenEstimator?: TokenEstimator;
9
10
  }
10
11
  export declare const DEFAULT_MAX_TOKENS = 400;
11
12
  export declare const DEFAULT_MIN_TOKENS = 64;
12
13
  export declare const DEFAULT_OVERLAP_TOKENS = 32;
13
- export declare const CHUNKING_STRATEGY_VERSION: "issue-195-v1";
14
+ export declare const DEFAULT_MAX_CHUNKS = 50000;
15
+ export declare const MAX_CHUNK_TOKENS = 2048;
16
+ export declare const MAX_OVERLAP_TOKENS = 1024;
17
+ export declare const CHUNKING_STRATEGY_VERSION: "issue-195-v2";
18
+ export declare const DEFAULT_CHUNKING_STRATEGY_KEY: `issue-195-v2|max=${string}|min=${string}|overlap=${string}|limit=${string}|estimator=default`;
14
19
  export interface ResolvedChunkingOptions {
15
20
  readonly maxTokens: number;
16
21
  readonly minTokens: number;
17
22
  readonly overlapTokens: number;
23
+ readonly maxChunks: number;
18
24
  readonly tokenEstimator: TokenEstimator;
19
25
  }
20
26
  export interface ChunkDocumentParams {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chunking/types.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;CAC1C;AAGD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,yBAAyB,EAAG,cAAuB,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAIhC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAEtC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAKD,qBAAa,aAAc,SAAQ,mBAAmB;IACpD,SAAyB,IAAI,EAAE,MAAM,CAAmB;CACzD;AAKD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chunking/types.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;CAC1C;AAGD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,eAAO,MAAM,yBAAyB,EAAG,cAAuB,CAAC;AACjE,eAAO,MAAM,6BAA6B,gGACmK,CAAC;AAE9M,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAIhC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAEtC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAKD,qBAAa,aAAc,SAAQ,mBAAmB;IACpD,SAAyB,IAAI,EAAE,MAAM,CAAmB;CACzD;AAKD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC"}
@@ -13,7 +13,11 @@ import { KnowledgeStoreError } from "../errors.js";
13
13
  export const DEFAULT_MAX_TOKENS = 400;
14
14
  export const DEFAULT_MIN_TOKENS = 64;
15
15
  export const DEFAULT_OVERLAP_TOKENS = 32;
16
- export const CHUNKING_STRATEGY_VERSION = "issue-195-v1";
16
+ export const DEFAULT_MAX_CHUNKS = 50_000;
17
+ export const MAX_CHUNK_TOKENS = 2_048;
18
+ export const MAX_OVERLAP_TOKENS = 1_024;
19
+ export const CHUNKING_STRATEGY_VERSION = "issue-195-v2";
20
+ export const DEFAULT_CHUNKING_STRATEGY_KEY = `${CHUNKING_STRATEGY_VERSION}|max=${String(DEFAULT_MAX_TOKENS)}|min=${String(DEFAULT_MIN_TOKENS)}|overlap=${String(DEFAULT_OVERLAP_TOKENS)}|limit=${String(DEFAULT_MAX_CHUNKS)}|estimator=default`;
17
21
  // Distinct from KnowledgeStoreError so a test asserting "chunking guard fail-closed" cannot
18
22
  // accidentally accept any other error class. Extends KnowledgeStoreError so callers that
19
23
  // only catch the parent class still see the failure.
@@ -1,4 +1,4 @@
1
- import type { CapsuleSet, CapsuleSetId, KnowledgeCapsuleId, KnowledgeSourceId, KnowledgeSourceScopeKind } from "@oscharko-dev/keiko-contracts";
1
+ import { type CapsuleSet, type CapsuleSetId, type KnowledgeCapsuleId, type KnowledgeSourceId, type KnowledgeSourceScopeKind } from "@oscharko-dev/keiko-contracts";
2
2
  import { type AddCapsuleSourceInput } from "./source-lifecycle.js";
3
3
  import type { KnowledgeStore } from "./store.js";
4
4
  export type CompositionErrorCode = "empty-source-batch" | "duplicate-source-in-batch" | "source-already-linked" | "empty-capsule-list" | "duplicate-capsule-in-batch";
@@ -1 +1 @@
1
- {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../src/composition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../src/composition.ts"],"names":[],"mappings":"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"}