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