@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
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
// Read-only filesystem browser for the desktop Files widget. The browser receives
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
import { lstat, opendir, open, readFile, realpath, stat } from "node:fs/promises";
|
|
2
|
+
// preview or editor content; every request is contained inside a selected root after
|
|
3
|
+
// realpath resolution.
|
|
4
|
+
import { lstat, opendir, open, readFile, realpath, stat, writeFile } from "node:fs/promises";
|
|
5
5
|
import { basename, dirname, extname, isAbsolute, join, parse as parsePath, posix as pathPosix, relative, resolve, } from "node:path";
|
|
6
|
-
import {
|
|
6
|
+
import { redact } from "@oscharko-dev/keiko-security";
|
|
7
7
|
import { DENIED_MESSAGE, pathIsDenied } from "./files-deny.js";
|
|
8
8
|
import { errorBody } from "./routes.js";
|
|
9
9
|
const MAX_DIRECTORY_ENTRIES = 1_000;
|
|
10
10
|
const MAX_TEXT_PREVIEW_BYTES = 1_000_000;
|
|
11
11
|
const MAX_IMAGE_PREVIEW_BYTES = 3_000_000;
|
|
12
|
-
const
|
|
12
|
+
const staticFilesMetadataRedactor = (value) => typeof value === "string" ? redact(value) : value;
|
|
13
|
+
class BodyTooLargeError extends Error {
|
|
14
|
+
constructor() {
|
|
15
|
+
super("request body too large");
|
|
16
|
+
this.name = "BodyTooLargeError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
13
19
|
class FilesError extends Error {
|
|
14
20
|
status;
|
|
15
21
|
code;
|
|
@@ -33,6 +39,12 @@ async function runFilesHandler(work) {
|
|
|
33
39
|
throw error;
|
|
34
40
|
}
|
|
35
41
|
}
|
|
42
|
+
function isRecord(value) {
|
|
43
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
44
|
+
}
|
|
45
|
+
function isRouteResult(value) {
|
|
46
|
+
return isRecord(value) && typeof value.status === "number" && "body" in value;
|
|
47
|
+
}
|
|
36
48
|
async function resolveDirectory(candidate) {
|
|
37
49
|
let resolved;
|
|
38
50
|
try {
|
|
@@ -50,15 +62,27 @@ async function resolveDirectory(candidate) {
|
|
|
50
62
|
function projectFor(store, projectId) {
|
|
51
63
|
return store.listProjects().find((project) => project.path === projectId);
|
|
52
64
|
}
|
|
53
|
-
function
|
|
54
|
-
return pathIsDenied(
|
|
65
|
+
function rootPathIsDenied(rootPath) {
|
|
66
|
+
return pathIsDenied(rootPath);
|
|
55
67
|
}
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
function assertMetadataSafe(value, redactor) {
|
|
69
|
+
const redacted = redactor(value);
|
|
70
|
+
if (typeof redacted === "string" && redacted !== value) {
|
|
71
|
+
throw new FilesError(403, "DENIED", DENIED_MESSAGE);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function metadataIsSafe(value, redactor) {
|
|
75
|
+
const redacted = redactor(value);
|
|
76
|
+
return typeof redacted !== "string" || redacted === value;
|
|
77
|
+
}
|
|
78
|
+
async function resolveRegisteredRoot(project, redactor) {
|
|
79
|
+
assertMetadataSafe(project.path, redactor);
|
|
80
|
+
if (rootPathIsDenied(project.path)) {
|
|
58
81
|
throw new FilesError(403, "DENIED", DENIED_MESSAGE);
|
|
59
82
|
}
|
|
60
83
|
const realRoot = await resolveDirectory(project.path);
|
|
61
|
-
|
|
84
|
+
assertMetadataSafe(realRoot, redactor);
|
|
85
|
+
if (rootPathIsDenied(realRoot)) {
|
|
62
86
|
throw new FilesError(403, "DENIED", DENIED_MESSAGE);
|
|
63
87
|
}
|
|
64
88
|
return { root: project.path, realRoot };
|
|
@@ -70,27 +94,29 @@ async function resolveRegisteredRoot(project) {
|
|
|
70
94
|
// innocuous). Browse and connect therefore accept the identical set of roots. The deny check runs
|
|
71
95
|
// once on the raw input and again on the realpath, so a symlink whose target lands in a denied
|
|
72
96
|
// location is caught after resolution.
|
|
73
|
-
async function resolveArbitraryRoot(rootInput) {
|
|
97
|
+
async function resolveArbitraryRoot(rootInput, redactor) {
|
|
74
98
|
if (!isAbsolute(rootInput)) {
|
|
75
99
|
throw new FilesError(400, "BAD_ROOT", "The root must be an absolute directory path.");
|
|
76
100
|
}
|
|
101
|
+
assertMetadataSafe(rootInput, redactor);
|
|
77
102
|
if (pathIsDenied(rootInput)) {
|
|
78
103
|
throw new FilesError(403, "DENIED", DENIED_MESSAGE);
|
|
79
104
|
}
|
|
80
105
|
const realRoot = await resolveDirectory(rootInput);
|
|
106
|
+
assertMetadataSafe(realRoot, redactor);
|
|
81
107
|
if (pathIsDenied(realRoot)) {
|
|
82
108
|
throw new FilesError(403, "DENIED", DENIED_MESSAGE);
|
|
83
109
|
}
|
|
84
110
|
return { root: rootInput, realRoot };
|
|
85
111
|
}
|
|
86
|
-
async function resolveRoot(store, rootInput) {
|
|
112
|
+
async function resolveRoot(store, rootInput, redactor) {
|
|
87
113
|
if (rootInput === null || rootInput.trim().length === 0) {
|
|
88
114
|
throw new FilesError(400, "BAD_REQUEST", "The root query parameter is required.");
|
|
89
115
|
}
|
|
90
116
|
const project = projectFor(store, rootInput);
|
|
91
117
|
return project === undefined
|
|
92
|
-
? resolveArbitraryRoot(rootInput.trim())
|
|
93
|
-
: resolveRegisteredRoot(project);
|
|
118
|
+
? resolveArbitraryRoot(rootInput.trim(), redactor)
|
|
119
|
+
: resolveRegisteredRoot(project, redactor);
|
|
94
120
|
}
|
|
95
121
|
function directoryRoots(projectRoot) {
|
|
96
122
|
return [{ label: "Project root", path: projectRoot }];
|
|
@@ -142,22 +168,25 @@ function normalizeDirectoryPath(pathInput, registeredRoot, realRoot) {
|
|
|
142
168
|
}
|
|
143
169
|
return candidate;
|
|
144
170
|
}
|
|
145
|
-
async function resolveDirectoryInsideRoot(store, rootInput, pathInput) {
|
|
146
|
-
const root = await resolveRoot(store, rootInput);
|
|
171
|
+
async function resolveDirectoryInsideRoot(store, rootInput, pathInput, redactor) {
|
|
172
|
+
const root = await resolveRoot(store, rootInput, redactor);
|
|
147
173
|
const candidate = normalizeDirectoryPath(pathInput, root.root, root.realRoot);
|
|
148
174
|
const pathValue = await resolveDirectory(candidate);
|
|
175
|
+
assertMetadataSafe(pathValue, redactor);
|
|
149
176
|
if (!isContained(root.realRoot, pathValue)) {
|
|
150
177
|
throw new FilesError(403, "PATH_ESCAPE", "The requested path is outside the selected project.");
|
|
151
178
|
}
|
|
152
179
|
const relativePath = rootRelativePosixPath(root.realRoot, pathValue);
|
|
180
|
+
assertMetadataSafe(relativePath, redactor);
|
|
153
181
|
if (pathIsDenied(relativePath)) {
|
|
154
182
|
throw new FilesError(403, "DENIED", DENIED_MESSAGE);
|
|
155
183
|
}
|
|
156
184
|
return { ...root, path: pathValue, relativePath };
|
|
157
185
|
}
|
|
158
|
-
async function resolveInsideRoot(store, rootInput, pathInput) {
|
|
159
|
-
const root = await resolveRoot(store, rootInput);
|
|
186
|
+
async function resolveInsideRoot(store, rootInput, pathInput, redactor) {
|
|
187
|
+
const root = await resolveRoot(store, rootInput, redactor);
|
|
160
188
|
const relativePath = normalizeRelativePath(pathInput);
|
|
189
|
+
assertMetadataSafe(relativePath, redactor);
|
|
161
190
|
// Deny check runs BEFORE realpath so existence of a denied path is not
|
|
162
191
|
// observable via the 403/404 status-code difference. A non-existent denied
|
|
163
192
|
// path returns 403, identical to an existing denied path.
|
|
@@ -176,6 +205,7 @@ async function resolveInsideRoot(store, rootInput, pathInput) {
|
|
|
176
205
|
throw new FilesError(403, "PATH_ESCAPE", "The requested path is outside the selected root.");
|
|
177
206
|
}
|
|
178
207
|
const targetRelativePath = rootRelativePosixPath(root.realRoot, target);
|
|
208
|
+
assertMetadataSafe(targetRelativePath, redactor);
|
|
179
209
|
if (pathIsDenied(targetRelativePath)) {
|
|
180
210
|
throw new FilesError(403, "DENIED", DENIED_MESSAGE);
|
|
181
211
|
}
|
|
@@ -190,7 +220,7 @@ async function resolveInsideRoot(store, rootInput, pathInput) {
|
|
|
190
220
|
symlink: linkStats.isSymbolicLink(),
|
|
191
221
|
};
|
|
192
222
|
}
|
|
193
|
-
async function directoryEntries(root, pathValue) {
|
|
223
|
+
async function directoryEntries(root, pathValue, redactor) {
|
|
194
224
|
const entries = [];
|
|
195
225
|
const dir = await opendir(pathValue);
|
|
196
226
|
try {
|
|
@@ -199,6 +229,8 @@ async function directoryEntries(root, pathValue) {
|
|
|
199
229
|
continue;
|
|
200
230
|
const entryPath = join(pathValue, entry.name);
|
|
201
231
|
const relativePath = rootRelativePosixPath(root, entryPath);
|
|
232
|
+
if (!metadataIsSafe(relativePath, redactor))
|
|
233
|
+
continue;
|
|
202
234
|
if (pathIsDenied(relativePath))
|
|
203
235
|
continue;
|
|
204
236
|
entries.push({ name: entry.name, path: entryPath });
|
|
@@ -209,12 +241,12 @@ async function directoryEntries(root, pathValue) {
|
|
|
209
241
|
}
|
|
210
242
|
return entries.sort((a, b) => a.name.localeCompare(b.name));
|
|
211
243
|
}
|
|
212
|
-
export async function listFilesDirectories(store, rootInput, pathInput) {
|
|
213
|
-
const target = await resolveDirectoryInsideRoot(store, rootInput, pathInput);
|
|
244
|
+
export async function listFilesDirectories(store, rootInput, pathInput, redactor = staticFilesMetadataRedactor) {
|
|
245
|
+
const target = await resolveDirectoryInsideRoot(store, rootInput, pathInput, redactor);
|
|
214
246
|
return {
|
|
215
247
|
path: target.path,
|
|
216
248
|
parent: parentPath(target.path, target.realRoot),
|
|
217
|
-
entries: await directoryEntries(target.realRoot, target.path),
|
|
249
|
+
entries: await directoryEntries(target.realRoot, target.path, redactor),
|
|
218
250
|
roots: directoryRoots(target.root),
|
|
219
251
|
};
|
|
220
252
|
}
|
|
@@ -227,8 +259,9 @@ function extensionOf(name) {
|
|
|
227
259
|
const ext = extname(lower).replace(/^\./u, "");
|
|
228
260
|
return ext.length > 0 ? ext : null;
|
|
229
261
|
}
|
|
230
|
-
async function classifyEntry(root, parentRelativePath, parentNativePath, entry) {
|
|
262
|
+
async function classifyEntry(root, parentRelativePath, parentNativePath, entry, redactor) {
|
|
231
263
|
const childRelativePath = parentRelativePath.length === 0 ? entry.name : `${parentRelativePath}/${entry.name}`;
|
|
264
|
+
assertMetadataSafe(childRelativePath, redactor);
|
|
232
265
|
const entryPath = join(parentNativePath, entry.name);
|
|
233
266
|
const linkStats = await lstat(entryPath);
|
|
234
267
|
const symlink = linkStats.isSymbolicLink();
|
|
@@ -270,57 +303,29 @@ function entryRank(entry) {
|
|
|
270
303
|
function childRelative(parentRelativePath, name) {
|
|
271
304
|
return parentRelativePath.length === 0 ? name : `${parentRelativePath}/${name}`;
|
|
272
305
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
// boundary (deny-list is tier 1). A missing/unreadable `.gitignore` is "no
|
|
276
|
-
// filter". No long-lived cache: the BFF is stateless across user-selected roots.
|
|
277
|
-
async function loadRootGitignore(rootPath) {
|
|
278
|
-
let raw;
|
|
279
|
-
try {
|
|
280
|
-
raw = await readFile(join(rootPath, ".gitignore"), "utf8");
|
|
281
|
-
}
|
|
282
|
-
catch {
|
|
283
|
-
return null;
|
|
284
|
-
}
|
|
285
|
-
const withoutBom = raw.charCodeAt(0) === 0xfeff ? raw.slice(1) : raw;
|
|
286
|
-
return compileIgnore(withoutBom.split("\n"));
|
|
287
|
-
}
|
|
288
|
-
function skipEntry(matcher, rel, isDir) {
|
|
289
|
-
if (pathIsDenied(rel))
|
|
290
|
-
return "denied";
|
|
291
|
-
return matcher !== null && isIgnored(matcher, rel, isDir) ? "ignored" : null;
|
|
306
|
+
function skipEntry(rel) {
|
|
307
|
+
return pathIsDenied(rel);
|
|
292
308
|
}
|
|
293
|
-
async function listTreeEntries(root, relativePath, pathValue,
|
|
309
|
+
async function listTreeEntries(root, relativePath, pathValue, redactor) {
|
|
294
310
|
const entries = [];
|
|
295
311
|
const dir = await opendir(pathValue);
|
|
296
312
|
let truncated = false;
|
|
297
|
-
let ignoredScans = 0;
|
|
298
313
|
try {
|
|
299
314
|
for await (const entry of dir) {
|
|
300
|
-
// Deny
|
|
301
|
-
//
|
|
302
|
-
//
|
|
303
|
-
//
|
|
304
|
-
// sees that name) so a symlink whose own name matches a deny pattern is
|
|
305
|
-
// denied even if its target does not — matches the workspace-layer
|
|
306
|
-
// semantics.
|
|
315
|
+
// Deny filtering happens BEFORE the truncation counter so a directory packed with denied
|
|
316
|
+
// entries (e.g. node_modules/**) cannot exhaust the 1000-entry budget and hide real files
|
|
317
|
+
// behind `truncated: true`. .gitignore is intentionally not a Files visibility filter:
|
|
318
|
+
// safe dotfiles and generated files must remain visible and connectable.
|
|
307
319
|
const rel = childRelative(relativePath, entry.name);
|
|
308
|
-
|
|
309
|
-
if (skipReason === "denied")
|
|
320
|
+
if (!metadataIsSafe(rel, redactor))
|
|
310
321
|
continue;
|
|
311
|
-
if (
|
|
312
|
-
ignoredScans += 1;
|
|
313
|
-
if (ignoredScans >= MAX_IGNORED_SCAN_ENTRIES) {
|
|
314
|
-
truncated = true;
|
|
315
|
-
break;
|
|
316
|
-
}
|
|
322
|
+
if (skipEntry(rel))
|
|
317
323
|
continue;
|
|
318
|
-
}
|
|
319
324
|
if (entries.length >= MAX_DIRECTORY_ENTRIES) {
|
|
320
325
|
truncated = true;
|
|
321
326
|
break;
|
|
322
327
|
}
|
|
323
|
-
entries.push(await classifyEntry(root, relativePath, pathValue, entry));
|
|
328
|
+
entries.push(await classifyEntry(root, relativePath, pathValue, entry, redactor));
|
|
324
329
|
}
|
|
325
330
|
}
|
|
326
331
|
finally {
|
|
@@ -329,16 +334,12 @@ async function listTreeEntries(root, relativePath, pathValue, matcher) {
|
|
|
329
334
|
entries.sort((a, b) => entryRank(a) - entryRank(b) || a.name.localeCompare(b.name));
|
|
330
335
|
return { entries, truncated };
|
|
331
336
|
}
|
|
332
|
-
export async function readFilesTree(store, rootInput, pathInput) {
|
|
333
|
-
const target = await resolveInsideRoot(store, rootInput, pathInput);
|
|
337
|
+
export async function readFilesTree(store, rootInput, pathInput, redactor = staticFilesMetadataRedactor) {
|
|
338
|
+
const target = await resolveInsideRoot(store, rootInput, pathInput, redactor);
|
|
334
339
|
if (!target.stats.isDirectory()) {
|
|
335
340
|
throw new FilesError(400, "NOT_DIRECTORY", "The requested path is not a directory.");
|
|
336
341
|
}
|
|
337
|
-
|
|
338
|
-
// reduction only; the matcher never relaxes the deny list. No long-lived
|
|
339
|
-
// cache — the BFF must stay stateless across user-selected roots.
|
|
340
|
-
const ignoreMatcher = await loadRootGitignore(target.realRoot);
|
|
341
|
-
const listed = await listTreeEntries(target.realRoot, target.relativePath, target.path, ignoreMatcher);
|
|
342
|
+
const listed = await listTreeEntries(target.realRoot, target.relativePath, target.path, redactor);
|
|
342
343
|
return {
|
|
343
344
|
root: target.root,
|
|
344
345
|
path: target.relativePath,
|
|
@@ -439,6 +440,57 @@ async function readPrefix(pathValue, maxBytes) {
|
|
|
439
440
|
await file.close();
|
|
440
441
|
}
|
|
441
442
|
}
|
|
443
|
+
async function readBody(req, maxBytes) {
|
|
444
|
+
return new Promise((resolveBody, reject) => {
|
|
445
|
+
const chunks = [];
|
|
446
|
+
let total = 0;
|
|
447
|
+
let capped = false;
|
|
448
|
+
req.on("data", (chunk) => {
|
|
449
|
+
total += chunk.length;
|
|
450
|
+
if (total > maxBytes) {
|
|
451
|
+
if (!capped) {
|
|
452
|
+
capped = true;
|
|
453
|
+
chunks.length = 0;
|
|
454
|
+
reject(new BodyTooLargeError());
|
|
455
|
+
req.resume();
|
|
456
|
+
}
|
|
457
|
+
return;
|
|
458
|
+
}
|
|
459
|
+
chunks.push(chunk);
|
|
460
|
+
});
|
|
461
|
+
req.on("end", () => {
|
|
462
|
+
if (!capped)
|
|
463
|
+
resolveBody(Buffer.concat(chunks).toString("utf8"));
|
|
464
|
+
});
|
|
465
|
+
req.on("error", reject);
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
async function readJsonObject(req, maxBytes) {
|
|
469
|
+
let raw;
|
|
470
|
+
try {
|
|
471
|
+
raw = await readBody(req, maxBytes);
|
|
472
|
+
}
|
|
473
|
+
catch (error) {
|
|
474
|
+
if (error instanceof BodyTooLargeError) {
|
|
475
|
+
return {
|
|
476
|
+
status: 413,
|
|
477
|
+
body: errorBody("PAYLOAD_TOO_LARGE", "Request body exceeds the size limit."),
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
throw error;
|
|
481
|
+
}
|
|
482
|
+
let parsed;
|
|
483
|
+
try {
|
|
484
|
+
parsed = raw.length === 0 ? {} : JSON.parse(raw);
|
|
485
|
+
}
|
|
486
|
+
catch {
|
|
487
|
+
return { status: 400, body: errorBody("BAD_REQUEST", "Request body is not valid JSON.") };
|
|
488
|
+
}
|
|
489
|
+
if (!isRecord(parsed)) {
|
|
490
|
+
return { status: 400, body: errorBody("BAD_REQUEST", "Request body must be a JSON object.") };
|
|
491
|
+
}
|
|
492
|
+
return parsed;
|
|
493
|
+
}
|
|
442
494
|
function basePreview(target) {
|
|
443
495
|
const name = basename(target.relativePath);
|
|
444
496
|
const extension = extensionOf(name);
|
|
@@ -477,8 +529,58 @@ async function textPreview(target, base, redactor) {
|
|
|
477
529
|
maxBytes: MAX_TEXT_PREVIEW_BYTES,
|
|
478
530
|
};
|
|
479
531
|
}
|
|
480
|
-
|
|
481
|
-
|
|
532
|
+
async function editableTextContent(target, base) {
|
|
533
|
+
if (target.stats.size > MAX_TEXT_PREVIEW_BYTES) {
|
|
534
|
+
throw new FilesError(413, "FILE_TOO_LARGE", `This file is too large to edit here (limit ${String(MAX_TEXT_PREVIEW_BYTES)} bytes).`);
|
|
535
|
+
}
|
|
536
|
+
const content = await readFile(target.path, "utf8");
|
|
537
|
+
return {
|
|
538
|
+
...base,
|
|
539
|
+
content,
|
|
540
|
+
maxBytes: MAX_TEXT_PREVIEW_BYTES,
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
export async function readFilesContent(store, rootInput, pathInput, redactor = staticFilesMetadataRedactor) {
|
|
544
|
+
const target = await resolveInsideRoot(store, rootInput, pathInput, redactor);
|
|
545
|
+
if (!target.stats.isFile()) {
|
|
546
|
+
throw new FilesError(400, "NOT_FILE", "The requested path is not a file.");
|
|
547
|
+
}
|
|
548
|
+
const base = basePreview(target);
|
|
549
|
+
const prefix = await readPrefix(target.path, Math.min(target.stats.size, 4096));
|
|
550
|
+
if (!isKnownTextExtension(base.extension) && !isLikelyUtf8Text(prefix.buffer)) {
|
|
551
|
+
throw new FilesError(400, "UNSUPPORTED_FILE", "This file cannot be edited in the workspace.");
|
|
552
|
+
}
|
|
553
|
+
return editableTextContent(target, base);
|
|
554
|
+
}
|
|
555
|
+
export async function writeFilesContent(args) {
|
|
556
|
+
const target = await resolveInsideRoot(args.store, args.rootInput, args.pathInput, args.redactor ?? staticFilesMetadataRedactor);
|
|
557
|
+
if (!target.stats.isFile()) {
|
|
558
|
+
throw new FilesError(400, "NOT_FILE", "The requested path is not a file.");
|
|
559
|
+
}
|
|
560
|
+
const base = basePreview(target);
|
|
561
|
+
const prefix = await readPrefix(target.path, Math.min(target.stats.size, 4096));
|
|
562
|
+
if (!isKnownTextExtension(base.extension) && !isLikelyUtf8Text(prefix.buffer)) {
|
|
563
|
+
throw new FilesError(400, "UNSUPPORTED_FILE", "This file cannot be edited in the workspace.");
|
|
564
|
+
}
|
|
565
|
+
if (args.expectedModifiedAt !== undefined &&
|
|
566
|
+
Math.abs(target.stats.mtimeMs - args.expectedModifiedAt) > 1) {
|
|
567
|
+
throw new FilesError(409, "WRITE_CONFLICT", "This file changed on disk. Reload it before saving again.");
|
|
568
|
+
}
|
|
569
|
+
if (Buffer.byteLength(args.content, "utf8") > MAX_TEXT_PREVIEW_BYTES) {
|
|
570
|
+
throw new FilesError(413, "FILE_TOO_LARGE", `This file is too large to edit here (limit ${String(MAX_TEXT_PREVIEW_BYTES)} bytes).`);
|
|
571
|
+
}
|
|
572
|
+
await writeFile(target.path, args.content, "utf8");
|
|
573
|
+
const updatedStats = await stat(target.path);
|
|
574
|
+
return {
|
|
575
|
+
...base,
|
|
576
|
+
sizeBytes: updatedStats.size,
|
|
577
|
+
modifiedAt: updatedStats.mtimeMs,
|
|
578
|
+
content: args.content,
|
|
579
|
+
maxBytes: MAX_TEXT_PREVIEW_BYTES,
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
export async function readFilesPreview(store, rootInput, pathInput, redactor = staticFilesMetadataRedactor) {
|
|
583
|
+
const target = await resolveInsideRoot(store, rootInput, pathInput, redactor);
|
|
482
584
|
if (!target.stats.isFile()) {
|
|
483
585
|
throw new FilesError(400, "NOT_FILE", "The requested path is not a file.");
|
|
484
586
|
}
|
|
@@ -497,14 +599,14 @@ export async function handleFilesDirectories(ctx, deps) {
|
|
|
497
599
|
const requestedPath = ctx.url.searchParams.get("path") ?? undefined;
|
|
498
600
|
return {
|
|
499
601
|
status: 200,
|
|
500
|
-
body: await listFilesDirectories(deps.store, requestedRoot, requestedPath),
|
|
602
|
+
body: await listFilesDirectories(deps.store, requestedRoot, requestedPath, deps.redactor),
|
|
501
603
|
};
|
|
502
604
|
});
|
|
503
605
|
}
|
|
504
606
|
export async function handleFilesTree(ctx, deps) {
|
|
505
607
|
return runFilesHandler(async () => ({
|
|
506
608
|
status: 200,
|
|
507
|
-
body: await readFilesTree(deps.store, ctx.url.searchParams.get("root"), ctx.url.searchParams.get("path")),
|
|
609
|
+
body: await readFilesTree(deps.store, ctx.url.searchParams.get("root"), ctx.url.searchParams.get("path"), deps.redactor),
|
|
508
610
|
}));
|
|
509
611
|
}
|
|
510
612
|
export async function handleFilesPreview(ctx, deps) {
|
|
@@ -513,3 +615,37 @@ export async function handleFilesPreview(ctx, deps) {
|
|
|
513
615
|
body: await readFilesPreview(deps.store, ctx.url.searchParams.get("root"), ctx.url.searchParams.get("path"), deps.redactor),
|
|
514
616
|
}));
|
|
515
617
|
}
|
|
618
|
+
export async function handleFilesContent(ctx, deps) {
|
|
619
|
+
return runFilesHandler(async () => {
|
|
620
|
+
if ((ctx.req.method ?? "GET").toUpperCase() === "GET") {
|
|
621
|
+
return {
|
|
622
|
+
status: 200,
|
|
623
|
+
body: await readFilesContent(deps.store, ctx.url.searchParams.get("root"), ctx.url.searchParams.get("path"), deps.redactor),
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
const body = await readJsonObject(ctx.req, MAX_TEXT_PREVIEW_BYTES * 2 + 16_384);
|
|
627
|
+
if (isRouteResult(body))
|
|
628
|
+
return body;
|
|
629
|
+
const rootInput = typeof body.root === "string" ? body.root : null;
|
|
630
|
+
const pathInput = typeof body.path === "string" ? body.path : null;
|
|
631
|
+
const content = body.content;
|
|
632
|
+
if (rootInput === null || pathInput === null || typeof content !== "string") {
|
|
633
|
+
return {
|
|
634
|
+
status: 400,
|
|
635
|
+
body: errorBody("BAD_REQUEST", "root, path, and content are required for a file save request."),
|
|
636
|
+
};
|
|
637
|
+
}
|
|
638
|
+
const expectedModifiedAt = typeof body.expectedModifiedAt === "number" ? body.expectedModifiedAt : undefined;
|
|
639
|
+
return {
|
|
640
|
+
status: 200,
|
|
641
|
+
body: await writeFilesContent({
|
|
642
|
+
store: deps.store,
|
|
643
|
+
rootInput,
|
|
644
|
+
pathInput,
|
|
645
|
+
content,
|
|
646
|
+
expectedModifiedAt,
|
|
647
|
+
redactor: deps.redactor,
|
|
648
|
+
}),
|
|
649
|
+
};
|
|
650
|
+
});
|
|
651
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grounded-answer.d.ts","sourceRoot":"","sources":["../src/grounded-answer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"grounded-answer.d.ts","sourceRoot":"","sources":["../src/grounded-answer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,oBAAoB,CAAC;AA2DlE,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASrE;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAgBtB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const SAFE_GROUNDED_FALLBACK = "I could not produce a clean grounded answer from the retrieved repository evidence.";
|
|
2
|
-
const ORCHESTRATION_PREFIX_RE = /^(searching for\b|search query\b|we need to call search\b|let'?s search\b|calling search\b|tool call\b|plan\b:)/i;
|
|
2
|
+
const ORCHESTRATION_PREFIX_RE = /^(searching for\b|search query\b|we need to call search\b|let'?s search\b|calling search\b|tool call\b|plan\b:|system prompt\b:|developer prompt\b:|internal planning\b:|internal reasoning\b:|hidden instruction\b:)/i;
|
|
3
|
+
const PROMPT_DISCLOSURE_RE = /^(system prompt\b:|developer prompt\b:|internal planning\b:|internal reasoning\b:|hidden instruction\b:)/i;
|
|
3
4
|
const ARGUMENT_LINE_RE = /^(?:[{[]|["']?(?:path|query|max_results|maxResults|tool|arguments|scope|search)["']?\s*:)/i;
|
|
4
5
|
function isFiniteCount(value) {
|
|
5
6
|
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
@@ -42,7 +43,11 @@ function leadingContentIndex(lines) {
|
|
|
42
43
|
export function sanitizeGroundedAnswerContent(content) {
|
|
43
44
|
const lines = content.split("\n");
|
|
44
45
|
const index = leadingContentIndex(lines);
|
|
45
|
-
const sanitized = lines
|
|
46
|
+
const sanitized = lines
|
|
47
|
+
.slice(index)
|
|
48
|
+
.filter((line) => !PROMPT_DISCLOSURE_RE.test(line.trim()))
|
|
49
|
+
.join("\n")
|
|
50
|
+
.trim();
|
|
46
51
|
return sanitized.length > 0 ? sanitized : SAFE_GROUNDED_FALLBACK;
|
|
47
52
|
}
|
|
48
53
|
export function normalizeGroundedAnswerPayload(payload) {
|
|
@@ -4,6 +4,8 @@ export interface GroundedContextIndexRegistryOptions {
|
|
|
4
4
|
readonly ttlMs?: number;
|
|
5
5
|
readonly maxEntriesPerScope?: number;
|
|
6
6
|
readonly maxScopes?: number;
|
|
7
|
+
readonly sweepIntervalMs?: number;
|
|
8
|
+
readonly autoSweep?: boolean;
|
|
7
9
|
}
|
|
8
10
|
export interface GroundedContextIndexRegistry {
|
|
9
11
|
forScope(scope: SelectedScope, nowMs: () => number): MicroIndex;
|
|
@@ -12,6 +14,7 @@ export interface GroundedContextIndexRegistry {
|
|
|
12
14
|
clearAll(): void;
|
|
13
15
|
sweep(nowMs: () => number): void;
|
|
14
16
|
size(): number;
|
|
17
|
+
dispose(): void;
|
|
15
18
|
}
|
|
16
19
|
export declare function createGroundedContextIndexRegistry(options?: GroundedContextIndexRegistryOptions): GroundedContextIndexRegistry;
|
|
17
20
|
export declare const groundedContextIndexRegistry: GroundedContextIndexRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grounded-context-index.d.ts","sourceRoot":"","sources":["../src/grounded-context-index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"grounded-context-index.d.ts","sourceRoot":"","sources":["../src/grounded-context-index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC;IAChE,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,IAAI,IAAI,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,IAAI,MAAM,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;CACjB;AAmKD,wBAAgB,kCAAkC,CAChD,OAAO,CAAC,EAAE,mCAAmC,GAC5C,4BAA4B,CAsC9B;AAED,eAAO,MAAM,4BAA4B,8BAAuC,CAAC;AAEjF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,GAAG,UAAU,CAEhG;AAED,wBAAgB,0CAA0C,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAEvF;AAED,wBAAgB,uCAAuC,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAEnF;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
|
|
@@ -3,21 +3,30 @@
|
|
|
3
3
|
// and provides deterministic cleanup hooks for chat/project lifecycle changes. Nothing persists.
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
5
|
import { createMicroIndex, DEFAULT_MICRO_INDEX, } from "@oscharko-dev/keiko-workflows";
|
|
6
|
-
const DEFAULT_MAX_SCOPES =
|
|
6
|
+
const DEFAULT_MAX_SCOPES = 32;
|
|
7
|
+
const DEFAULT_MAX_ENTRIES_PER_SCOPE = 8;
|
|
8
|
+
const DEFAULT_SWEEP_INTERVAL_MS = 60_000;
|
|
7
9
|
function assertPositiveInteger(name, value) {
|
|
8
10
|
if (!Number.isInteger(value) || value <= 0) {
|
|
9
11
|
throw new RangeError(`${name} must be a positive integer`);
|
|
10
12
|
}
|
|
11
13
|
}
|
|
14
|
+
function optionOrDefault(value, fallback) {
|
|
15
|
+
return value ?? fallback;
|
|
16
|
+
}
|
|
12
17
|
function resolveOptions(options) {
|
|
18
|
+
const provided = options ?? {};
|
|
13
19
|
const resolved = {
|
|
14
|
-
ttlMs:
|
|
15
|
-
maxEntriesPerScope:
|
|
16
|
-
maxScopes:
|
|
20
|
+
ttlMs: optionOrDefault(provided.ttlMs, DEFAULT_MICRO_INDEX.ttlMs),
|
|
21
|
+
maxEntriesPerScope: optionOrDefault(provided.maxEntriesPerScope, DEFAULT_MAX_ENTRIES_PER_SCOPE),
|
|
22
|
+
maxScopes: optionOrDefault(provided.maxScopes, DEFAULT_MAX_SCOPES),
|
|
23
|
+
sweepIntervalMs: optionOrDefault(provided.sweepIntervalMs, DEFAULT_SWEEP_INTERVAL_MS),
|
|
24
|
+
autoSweep: optionOrDefault(provided.autoSweep, true),
|
|
17
25
|
};
|
|
18
26
|
assertPositiveInteger("ttlMs", resolved.ttlMs);
|
|
19
27
|
assertPositiveInteger("maxEntriesPerScope", resolved.maxEntriesPerScope);
|
|
20
28
|
assertPositiveInteger("maxScopes", resolved.maxScopes);
|
|
29
|
+
assertPositiveInteger("sweepIntervalMs", resolved.sweepIntervalMs);
|
|
21
30
|
return resolved;
|
|
22
31
|
}
|
|
23
32
|
function sha256Hex(value) {
|
|
@@ -110,6 +119,14 @@ function clearEntries(entries) {
|
|
|
110
119
|
export function createGroundedContextIndexRegistry(options) {
|
|
111
120
|
const resolved = resolveOptions(options);
|
|
112
121
|
const entries = new Map();
|
|
122
|
+
const sweepTimer = resolved.autoSweep
|
|
123
|
+
? setInterval(() => {
|
|
124
|
+
evictExpired(entries, Date.now());
|
|
125
|
+
}, resolved.sweepIntervalMs)
|
|
126
|
+
: undefined;
|
|
127
|
+
if (sweepTimer !== undefined) {
|
|
128
|
+
sweepTimer.unref();
|
|
129
|
+
}
|
|
113
130
|
return {
|
|
114
131
|
forScope(scope, nowMs) {
|
|
115
132
|
return getOrCreateScopeIndex(entries, resolved, scope, nowMs);
|
|
@@ -129,6 +146,12 @@ export function createGroundedContextIndexRegistry(options) {
|
|
|
129
146
|
size() {
|
|
130
147
|
return entries.size;
|
|
131
148
|
},
|
|
149
|
+
dispose() {
|
|
150
|
+
if (sweepTimer !== undefined) {
|
|
151
|
+
clearInterval(sweepTimer);
|
|
152
|
+
}
|
|
153
|
+
clearEntries(entries);
|
|
154
|
+
},
|
|
132
155
|
};
|
|
133
156
|
}
|
|
134
157
|
export const groundedContextIndexRegistry = createGroundedContextIndexRegistry();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grounded-handoff.d.ts","sourceRoot":"","sources":["../src/grounded-handoff.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAYxE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"grounded-handoff.d.ts","sourceRoot":"","sources":["../src/grounded-handoff.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAYxE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA4hB7D,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAOtB"}
|