@oscharko-dev/keiko 0.2.0-beta.2 → 0.2.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -1
- package/dist/ui/csp-hashes.json +34 -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/Hb6brrvZY2nZtizQlYhVt/_buildManifest.js +11 -0
- package/dist/ui/static/_next/static/Hb6brrvZY2nZtizQlYhVt/_clientMiddlewareManifest.js +1 -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/1t04tfgin0v_g.js +106 -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/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/3wr_35f2vg6sd.css +1 -0
- package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.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/manifest.webmanifest +2 -2
- 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/lifecycle.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.js +51 -10
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts +3 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +128 -38
- 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 +7 -7
- 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 +15 -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/bffWire.js +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/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
- 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/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/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.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +30 -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/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 +18 -5
- 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 +258 -132
- 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 +93 -14
- 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/dist/paths.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/paths.js +11 -5
- 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/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/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/chat-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +6 -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 +62 -12
- 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 -0
- 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 +433 -31
- 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 +194 -45
- 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 +100 -24
- 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 +196 -20
- 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 +189 -66
- 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 +198 -72
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.js +6 -5
- 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 +26 -7
- 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 +26 -7
- 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 +28 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.js +11 -0
- 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 +90 -19
- 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 +19 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +4 -2
- 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/paths.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/paths.js +9 -2
- 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 +67 -14
- 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/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 +58 -23
- 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/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 +22 -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/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 +4 -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/BNiyfCos3TiM2QdurajIZ/_buildManifest.js +0 -1
- package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.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/923-4141696576191bc0.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-03d642dcd0f15b52.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/launch/page-c725ff0c02b50663.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/layout-aadefe615729db05.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-4a7f242906e19a07.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-3361769b8964e659.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-44b3f4fa3e10085f.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-0cdfb3eeb659daeb.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-e78e0cd2876fec41.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-e32fe86466827484.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/page-9ad91065d05ddfa0.js +0 -1
- package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
- package/dist/ui/static/_next/static/chunks/main-app-b52a8fa1d8127a5f.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/51fdcfdc624e723d.css +0 -1
- /package/dist/ui/static/_next/static/{BNiyfCos3TiM2QdurajIZ → Hb6brrvZY2nZtizQlYhVt}/_ssgManifest.js +0 -0
- /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
|
@@ -25,12 +25,13 @@ function perSourceAtomBudget(total, sourceCount) {
|
|
|
25
25
|
return total;
|
|
26
26
|
return Math.max(1, Math.floor(total / sourceCount));
|
|
27
27
|
}
|
|
28
|
-
// Global per-run evidence byte budget. Each source kind (workspace / file / capsule
|
|
29
|
-
// allowed ~192KB INDEPENDENTLY, so N large sources summed to N×192KB
|
|
30
|
-
// (MAX_PROMPT_BYTES = 256KB) — failing the entire N+1 run with
|
|
31
|
-
// headline). The byte budget is now a single global pool split fairly
|
|
32
|
-
// atom-budget split, so the merged evidence text stays bounded
|
|
33
|
-
// the full budget (identical to the prior single-source
|
|
28
|
+
// Global per-run evidence byte budget. Each source kind (workspace / file / capsule /
|
|
29
|
+
// figma-snapshot) was previously allowed ~192KB INDEPENDENTLY, so N large sources summed to N×192KB
|
|
30
|
+
// and blew the model prompt cap (MAX_PROMPT_BYTES = 256KB) — failing the entire N+1 run with
|
|
31
|
+
// QI_PROMPT_TOO_LARGE (Epic #729 headline). The byte budget is now a single global pool split fairly
|
|
32
|
+
// across sources, mirroring the atom-budget split, so the merged evidence text stays bounded
|
|
33
|
+
// regardless of N. A single source keeps the full budget (identical to the prior single-source
|
|
34
|
+
// behaviour). figma-snapshot uses the same split via figmaScreenDocs (mirrors processCapsuleDocs).
|
|
34
35
|
const EVIDENCE_BUDGET_BYTES = 196_608;
|
|
35
36
|
// Never starve a source below this many bytes — a tiny share is still usable context.
|
|
36
37
|
const MIN_SOURCE_BUDGET_BYTES = 4_096;
|
|
@@ -53,9 +54,33 @@ export class QiIngestionError extends Error {
|
|
|
53
54
|
this.name = "QiIngestionError";
|
|
54
55
|
}
|
|
55
56
|
}
|
|
57
|
+
// Credential token shapes mirrored from keiko-contracts `fieldLooksUnsafe` so a connected
|
|
58
|
+
// source's display label can never echo a secret back to the browser-surfaced envelope
|
|
59
|
+
// (#277/#278 envelope display-surface invariant — the label is the only user-derived envelope
|
|
60
|
+
// field; localRef/origin/integrityHash are server-built and hash-derived).
|
|
61
|
+
const CREDENTIAL_LABEL_SHAPES = [
|
|
62
|
+
/AKIA[0-9A-Z]{12,}/gu,
|
|
63
|
+
/(?:ghp_|gho_|github_pat_)[A-Za-z0-9_]{20,}/gu,
|
|
64
|
+
/xox[baprs]-[A-Za-z0-9-]{10,}/gu,
|
|
65
|
+
/sk-[A-Za-z0-9]{16,}/gu,
|
|
66
|
+
/\bBearer\s+\S+/giu,
|
|
67
|
+
/-----BEGIN [A-Z ]*PRIVATE KEY-----/gu,
|
|
68
|
+
];
|
|
56
69
|
const sanitiseLabel = (label) => {
|
|
57
|
-
|
|
58
|
-
|
|
70
|
+
// Strip any URL authority — ANY scheme (http, file, s3, ftp, …), not just http(s) — plus the
|
|
71
|
+
// well-known credential token shapes, so a browser-supplied label never carries a URL or secret
|
|
72
|
+
// into the envelope display surface that is streamed back to the client (#277/#278).
|
|
73
|
+
let cleaned = label.replace(/[a-z][a-z0-9+.-]*:\/\/\S+/giu, " ");
|
|
74
|
+
for (const shape of CREDENTIAL_LABEL_SHAPES)
|
|
75
|
+
cleaned = cleaned.replace(shape, " ");
|
|
76
|
+
cleaned = cleaned.trim();
|
|
77
|
+
// Collapse an absolute POSIX / Windows-drive / UNC path label to its final segment so the
|
|
78
|
+
// display label never leaks the filesystem layout (the basename is the useful display token).
|
|
79
|
+
if (/^(?:\/|[A-Za-z]:[\\/]|\\\\)/u.test(cleaned)) {
|
|
80
|
+
const segments = cleaned.split(/[\\/]/u).filter((s) => s.length > 0);
|
|
81
|
+
cleaned = (segments[segments.length - 1] ?? "").trim();
|
|
82
|
+
}
|
|
83
|
+
const safe = cleaned.length === 0 ? "Untitled source" : cleaned;
|
|
59
84
|
return safe.length > MAX_LABEL_CHARS ? `${safe.slice(0, MAX_LABEL_CHARS - 1)}…` : safe;
|
|
60
85
|
};
|
|
61
86
|
// Reject a source whose absolute path (any segment) names a denied credential location. isDenied
|
|
@@ -105,6 +130,7 @@ function ingestRequirements(source, index, registeredAt) {
|
|
|
105
130
|
const WORKSPACE_BUDGET_BYTES = 196_608;
|
|
106
131
|
const WORKSPACE_MAX_BYTES_PER_FILE = 16_384;
|
|
107
132
|
const CODE_EXTENSION = /\.(?:ts|tsx|js|jsx|mjs|cjs|py|java|go|rb|rs|cs|cpp|cc|c|h|hpp|kt|swift|php|scala|sql)$/iu;
|
|
133
|
+
const REQUIREMENT_TEXT_EXTENSION = /\.(?:md|markdown|txt|text|rst|adoc|asciidoc|org)$/iu;
|
|
108
134
|
const atomKindForPath = (path) => CODE_EXTENSION.test(path) ? "code-fragment" : "document-excerpt";
|
|
109
135
|
const workspaceAtom = (entry, envelopeId) => {
|
|
110
136
|
// entry.excerpt is already redacted by keiko-workspace; prefix the path so the model can
|
|
@@ -127,6 +153,42 @@ const workspaceAtom = (entry, envelopeId) => {
|
|
|
127
153
|
};
|
|
128
154
|
return { atom, canonicalText };
|
|
129
155
|
};
|
|
156
|
+
const requirementAtomIdFor = (envelopeId, path, statement) => {
|
|
157
|
+
const digest = sha256Hex(`qi-atom-doc-req-v1|${String(envelopeId)}|${path}|${statement}`).slice(0, 32);
|
|
158
|
+
return QualityIntelligence.asQualityIntelligenceEvidenceAtomId(`qi-atom-${digest}`);
|
|
159
|
+
};
|
|
160
|
+
const stripRequirementDocumentStructure = (text) => text
|
|
161
|
+
.split(/\r?\n/u)
|
|
162
|
+
.filter((line) => !/^\s{0,3}#{1,6}\s+\S/u.test(line))
|
|
163
|
+
.join("\n");
|
|
164
|
+
function documentRequirementAtoms(entry, envelopeId) {
|
|
165
|
+
if (!REQUIREMENT_TEXT_EXTENSION.test(entry.path))
|
|
166
|
+
return Object.freeze([]);
|
|
167
|
+
const split = QualityIntelligenceGeneration.splitRequirementsIntoAtoms(stripRequirementDocumentStructure(entry.excerpt), {
|
|
168
|
+
envelopeId,
|
|
169
|
+
maxAtoms: MAX_TOTAL_ATOMS,
|
|
170
|
+
});
|
|
171
|
+
if (split.length <= 1)
|
|
172
|
+
return Object.freeze([]);
|
|
173
|
+
return Object.freeze(split.map((requirement) => {
|
|
174
|
+
const canonicalText = `${entry.path}\n${requirement.canonicalText}`;
|
|
175
|
+
const atom = {
|
|
176
|
+
kind: "requirement",
|
|
177
|
+
id: requirementAtomIdFor(envelopeId, entry.path, requirement.canonicalText),
|
|
178
|
+
sourceEnvelopeId: envelopeId,
|
|
179
|
+
canonicalHashSha256Hex: sha256Hex(canonicalText),
|
|
180
|
+
redactionStatus: "redacted",
|
|
181
|
+
lifecycleStatus: "draft",
|
|
182
|
+
};
|
|
183
|
+
return Object.freeze({ atom: Object.freeze(atom), canonicalText });
|
|
184
|
+
}));
|
|
185
|
+
}
|
|
186
|
+
function atomsForWorkspaceEntry(entry, envelopeId) {
|
|
187
|
+
const requirementAtoms = documentRequirementAtoms(entry, envelopeId);
|
|
188
|
+
return requirementAtoms.length > 0
|
|
189
|
+
? requirementAtoms
|
|
190
|
+
: Object.freeze([workspaceAtom(entry, envelopeId)]);
|
|
191
|
+
}
|
|
130
192
|
// Ingest a local folder by REUSING keiko-workspace traversal + redaction (no independent
|
|
131
193
|
// repository traversal — Issue #278 stop condition). Each selected, already-redacted context
|
|
132
194
|
// entry becomes one content-bearing atom under a single repository-context envelope.
|
|
@@ -167,7 +229,7 @@ function ingestWorkspace(source, index, registeredAt, byteBudget) {
|
|
|
167
229
|
},
|
|
168
230
|
localRef: stableLocalRef("workspace", pack.workspaceRoot),
|
|
169
231
|
};
|
|
170
|
-
const atoms = pack.selected.
|
|
232
|
+
const atoms = pack.selected.flatMap((entry) => atomsForWorkspaceEntry(entry, envelopeId));
|
|
171
233
|
return { envelope, atoms };
|
|
172
234
|
}
|
|
173
235
|
// A single Fachkonzept document may use the full per-run workspace byte budget — it is the only
|
|
@@ -300,9 +362,7 @@ function ingestFile(source, index, registeredAt, byteBudget) {
|
|
|
300
362
|
},
|
|
301
363
|
localRef: stableLocalRef("file", absFile),
|
|
302
364
|
};
|
|
303
|
-
const atoms =
|
|
304
|
-
workspaceAtom({ path: content.relativePath, excerpt: boundedText }, envelopeId),
|
|
305
|
-
];
|
|
365
|
+
const atoms = atomsForWorkspaceEntry({ path: content.relativePath, excerpt: boundedText }, envelopeId);
|
|
306
366
|
return { envelope, atoms };
|
|
307
367
|
}
|
|
308
368
|
// A single capsule document may use the per-document byte budget; the whole capsule corpus is
|
|
@@ -485,7 +545,14 @@ function a11yItemsByScreen(parsed) {
|
|
|
485
545
|
// items (#811) AND its accessibility test items (#812) — concatenated, neither replacing the other —
|
|
486
546
|
// through the `extraItems` seam, then optionally with vision hints. The per-run byte budget bounds
|
|
487
547
|
// the cumulative corpus so an oversized board never hard-fails on QI_PROMPT_TOO_LARGE.
|
|
488
|
-
|
|
548
|
+
// The byteBudget is the caller's fair share of the global evidence pool (Epic #729 N+1 split)
|
|
549
|
+
// so a figma-snapshot source never consumes more than its fair slice alongside other sources.
|
|
550
|
+
function figmaScreenDocs(record, vision, byteBudget) {
|
|
551
|
+
// Mirror processCapsuleDocs (:558-563): the per-run corpus budget is the smaller of the capsule's
|
|
552
|
+
// own ceiling and this source's fair share of the global evidence byte budget (Epic #729 N+1
|
|
553
|
+
// split). The per-document cap is likewise never larger than the per-run budget.
|
|
554
|
+
const perRunBudget = Math.min(CAPSULE_BUDGET_BYTES, byteBudget);
|
|
555
|
+
const perDocBudget = Math.min(CAPSULE_MAX_BYTES_PER_DOCUMENT, perRunBudget);
|
|
489
556
|
const parsed = parseScreens(record);
|
|
490
557
|
const navItems = navItemsByScreen(parsed, record.links ?? []);
|
|
491
558
|
const a11yItems = a11yItemsByScreen(parsed);
|
|
@@ -495,18 +562,18 @@ function figmaScreenDocs(record, vision) {
|
|
|
495
562
|
const extraItems = [...(navItems.get(ir.id) ?? []), ...(a11yItems.get(ir.id) ?? [])];
|
|
496
563
|
const baseline = QualityIntelligenceFigma.deriveScreenTestBaseline(ir, extraItems);
|
|
497
564
|
const augmented = visionAugmentedScreenText(baseline, row, vision);
|
|
498
|
-
const capped = truncateToUtf8Bytes(redact(augmented),
|
|
565
|
+
const capped = truncateToUtf8Bytes(redact(augmented), perDocBudget);
|
|
499
566
|
if (capped.trim().length === 0)
|
|
500
567
|
continue;
|
|
501
568
|
const bytes = utf8ByteLength(capped);
|
|
502
|
-
if (docs.length > 0 && totalBytes + bytes >
|
|
569
|
+
if (docs.length > 0 && totalBytes + bytes > perRunBudget)
|
|
503
570
|
break;
|
|
504
571
|
docs.push({ documentId: `${row.screenId} (${ir.name})`, text: capped });
|
|
505
572
|
totalBytes += bytes;
|
|
506
573
|
}
|
|
507
574
|
return docs;
|
|
508
575
|
}
|
|
509
|
-
function ingestFigmaSnapshot(source, index, registeredAt, loader, vision) {
|
|
576
|
+
function ingestFigmaSnapshot(source, index, registeredAt, loader, vision, byteBudget) {
|
|
510
577
|
const label = sanitiseLabel(source.label);
|
|
511
578
|
const record = loader(source.snapshotRunId);
|
|
512
579
|
if (record === undefined) {
|
|
@@ -515,15 +582,19 @@ function ingestFigmaSnapshot(source, index, registeredAt, loader, vision) {
|
|
|
515
582
|
if (record.screens.length === 0) {
|
|
516
583
|
throw new QiIngestionError("QI_SOURCE_EMPTY", `Figma snapshot "${label}" has no screens.`);
|
|
517
584
|
}
|
|
518
|
-
const docs = figmaScreenDocs(record, vision);
|
|
585
|
+
const docs = figmaScreenDocs(record, vision, byteBudget);
|
|
519
586
|
if (docs.length === 0) {
|
|
520
587
|
throw new QiIngestionError("QI_SOURCE_EMPTY", `Figma snapshot "${label}" produced no usable screen baseline.`);
|
|
521
588
|
}
|
|
522
589
|
const joinedText = docs.map((d) => d.text).join("\n");
|
|
523
590
|
const envelopeId = envelopeIdFor(index, label, source.snapshotRunId);
|
|
591
|
+
// A stored Figma Snapshot is figma evidence, not repository context. Use the dedicated
|
|
592
|
+
// `figma-evidence` envelope kind (#278 AC2 "represented as an explicit connector-backed source"
|
|
593
|
+
// + AC4 citation/audit attribution) so the persisted envelope, source-mix priority, and any
|
|
594
|
+
// kind-grouped audit rollup classify it correctly instead of folding it into repo context.
|
|
524
595
|
const envelope = {
|
|
525
596
|
id: envelopeId,
|
|
526
|
-
kind: "
|
|
597
|
+
kind: "figma-evidence",
|
|
527
598
|
displayLabel: label,
|
|
528
599
|
provenance: {
|
|
529
600
|
origin: `figma-snapshot:${source.snapshotRunId}`,
|
|
@@ -557,7 +628,7 @@ function ingestOne(source, index, registeredAt, capsuleResolver, figmaSnapshotLo
|
|
|
557
628
|
if (figmaSnapshotLoader === undefined) {
|
|
558
629
|
throw new QiIngestionError("QI_FIGMA_SNAPSHOT_UNAVAILABLE", "Figma-snapshot sources are unavailable: the evidence directory is not configured.");
|
|
559
630
|
}
|
|
560
|
-
return ingestFigmaSnapshot(source, index, registeredAt, figmaSnapshotLoader, figmaVision);
|
|
631
|
+
return ingestFigmaSnapshot(source, index, registeredAt, figmaSnapshotLoader, figmaVision, byteBudget);
|
|
561
632
|
}
|
|
562
633
|
}
|
|
563
634
|
/**
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import type { QualityIntelligenceRunStreamMessage } from "@oscharko-dev/keiko-contracts";
|
|
2
|
+
import type { QualityIntelligence as QI } from "@oscharko-dev/keiko-contracts";
|
|
1
3
|
import { type HandlerOutcome, type RouteContext, type RouteResult, type RouteDefinition } from "../routes.js";
|
|
2
|
-
import type { UiHandlerDeps } from "../deps.js";
|
|
4
|
+
import type { Redactor, UiHandlerDeps } from "../deps.js";
|
|
5
|
+
export declare function toStreamEvent(event: QI.QualityIntelligenceRunEvent, redact: Redactor): QualityIntelligenceRunStreamMessage;
|
|
3
6
|
export declare function handleStartQiRun(ctx: RouteContext, deps: UiHandlerDeps): Promise<HandlerOutcome>;
|
|
4
7
|
export declare function handleCancelQiRun(ctx: RouteContext, _deps: UiHandlerDeps): RouteResult;
|
|
5
8
|
export declare const QI_RUN_EXECUTION_ROUTE_GROUP: readonly RouteDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/runRoutes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/runRoutes.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAKV,mCAAmC,EAEpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,IAAI,EAAE,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8N1D,wBAAgB,aAAa,CAC3B,KAAK,EAAE,EAAE,CAAC,2BAA2B,EACrC,MAAM,EAAE,QAAQ,GACf,mCAAmC,CAgBrC;AAoED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,CAAC,CAmBzB;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,WAAW,CAStF;AAED,eAAO,MAAM,4BAA4B,EAAE,SAAS,eAAe,EAOlE,CAAC"}
|
|
@@ -180,7 +180,9 @@ async function parseStartBody(req) {
|
|
|
180
180
|
}
|
|
181
181
|
return validateRequest(parsed);
|
|
182
182
|
}
|
|
183
|
-
|
|
183
|
+
// Exported for unit testing of the reasonSummary redaction backstop (#279 AC3); not part of the
|
|
184
|
+
// package public surface (the QI index re-exports only the route handlers, not this helper).
|
|
185
|
+
export function toStreamEvent(event, redact) {
|
|
184
186
|
const p = event.payload;
|
|
185
187
|
return {
|
|
186
188
|
type: "event",
|
|
@@ -189,9 +191,21 @@ function toStreamEvent(event) {
|
|
|
189
191
|
...("stageName" in p ? { stageName: p.stageName } : {}),
|
|
190
192
|
...("candidateId" in p ? { candidateId: String(p.candidateId) } : {}),
|
|
191
193
|
...("findingId" in p ? { findingId: String(p.findingId) } : {}),
|
|
192
|
-
|
|
194
|
+
// `reasonSummary` is the only free-text field on the QI event envelope. The workflow already
|
|
195
|
+
// produces a fail-closed, secret-free summary (see `safeReasonSummary`), but pass it through the
|
|
196
|
+
// live-payload redactor too so this SSE writer — the one QI surface with no other redaction —
|
|
197
|
+
// can never stream a credential/endpoint substring should a future code path widen the field
|
|
198
|
+
// (#279 AC3, defence-in-depth; mirrors the Conversation Center SSE redaction posture).
|
|
199
|
+
...("reasonSummary" in p ? { reasonSummary: applyRedactor(redact, p.reasonSummary) } : {}),
|
|
193
200
|
};
|
|
194
201
|
}
|
|
202
|
+
// Apply the live-payload redactor to a string field. The redactor is typed `(unknown) => unknown`
|
|
203
|
+
// (it walks arbitrary structures); for a string input it returns the redacted string. Fall back to
|
|
204
|
+
// the already-safe input on the impossible non-string return so the field type stays `string`.
|
|
205
|
+
function applyRedactor(redact, value) {
|
|
206
|
+
const out = redact(value);
|
|
207
|
+
return typeof out === "string" ? out : value;
|
|
208
|
+
}
|
|
195
209
|
function classifyStartError(error) {
|
|
196
210
|
if (error instanceof QiIngestionError || error instanceof QiGenerationError) {
|
|
197
211
|
return { code: error.code, message: error.message };
|
|
@@ -229,7 +243,7 @@ async function streamRunExecution(deps, request, runId, registeredAt, signal, wr
|
|
|
229
243
|
if (event.payload.kind === "finding:recorded")
|
|
230
244
|
totals.findings += 1;
|
|
231
245
|
qiRunRegistry.updateTotals(runId, totals);
|
|
232
|
-
write(toStreamEvent(event));
|
|
246
|
+
write(toStreamEvent(event, deps.redactor));
|
|
233
247
|
},
|
|
234
248
|
});
|
|
235
249
|
terminal = summary.status;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/uiRoutes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uiRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/uiRoutes.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAqMzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAkDpF;AAMD,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAmClF"}
|
|
@@ -96,6 +96,18 @@ function computeCoveragePercentage(coverageByAtom) {
|
|
|
96
96
|
const covered = coverageByAtom.filter((r) => r.status === "covered").length;
|
|
97
97
|
return (covered / coverageByAtom.length) * 100;
|
|
98
98
|
}
|
|
99
|
+
function projectDriftMetadata(manifest, candidateRows) {
|
|
100
|
+
const sourceFingerprintCount = manifest.sourceFingerprints?.length ?? 0;
|
|
101
|
+
const atomFingerprintCount = manifest.atomFingerprints?.length ?? 0;
|
|
102
|
+
const supported = sourceFingerprintCount > 0 && candidateRows.length > 0;
|
|
103
|
+
return {
|
|
104
|
+
status: supported ? "not-checked" : "unavailable",
|
|
105
|
+
sourceFingerprintCount,
|
|
106
|
+
atomFingerprintCount,
|
|
107
|
+
reCheckSupported: supported,
|
|
108
|
+
regenerateStaleSupported: supported,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
99
111
|
function projectRunDetail(inputs) {
|
|
100
112
|
const { manifest, candidateRows, reviewArtifact } = inputs;
|
|
101
113
|
const findingRefs = manifest.findings.map((f) => ({
|
|
@@ -131,6 +143,7 @@ function projectRunDetail(inputs) {
|
|
|
131
143
|
coveragePercentage: computeCoveragePercentage(coverageByAtom),
|
|
132
144
|
coverageByAtom,
|
|
133
145
|
qualityScore: manifest.qualityScore ?? null,
|
|
146
|
+
drift: projectDriftMetadata(manifest, candidateRows),
|
|
134
147
|
};
|
|
135
148
|
}
|
|
136
149
|
function parseLimitParam(ctx) {
|
|
@@ -194,8 +207,12 @@ export function handleListQiRuns(ctx, deps) {
|
|
|
194
207
|
runs.push(summary);
|
|
195
208
|
}
|
|
196
209
|
catch {
|
|
197
|
-
// A single corrupt manifest must not prevent listing other runs.
|
|
198
|
-
//
|
|
210
|
+
// A single corrupt manifest must not prevent listing other runs: skip and continue. The
|
|
211
|
+
// store fails closed on a corrupt manifest (EvidenceReadError) so nothing unsafe is
|
|
212
|
+
// surfaced. Quarantine (`quarantineCorruptQualityIntelligenceManifest`) is a SEPARATE,
|
|
213
|
+
// explicitly-invoked maintenance step — it is intentionally NOT run from this read path
|
|
214
|
+
// (a GET must not rename files); its wiring is deferred with the retention orchestrator
|
|
215
|
+
// (Issue #274 follow-up).
|
|
199
216
|
}
|
|
200
217
|
}
|
|
201
218
|
const body = { runs, limit, totalRunIds, truncated };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAoI/C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,SAAS,eAAsB,CAAC;AAC7C,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,OAAO,SAAS,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,KAChB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;CAChC;AAUD,eAAO,MAAM,UAAU,EAAE,SAAS,eAAe,EAwRhD,CAAC;AA6BF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAKD,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,UAAU,GAAG,oBAAoB,GAAG,SAAS,CA2B/C;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAEjE;AAED,wBAAgB,YAAY,IAAI,QAAQ,CAEvC;AAED,wBAAgB,oBAAoB,IAAI,QAAQ,CAE/C"}
|
|
@@ -18,7 +18,7 @@ import { handleGroundedAsk } from "./grounded-qa.js";
|
|
|
18
18
|
import { handleGroundedWorkflowHandoff } from "./grounded-handoff.js";
|
|
19
19
|
import { handleGatewaySetup } from "./gateway-setup.js";
|
|
20
20
|
import { handleCreateTerminalExecution, handleDeleteTerminalExecution, handleTerminalDirectories, handleTerminalEvents, handleTerminalPolicy, } from "./terminal-routes.js";
|
|
21
|
-
import { handleFilesDirectories, handleFilesPreview, handleFilesTree } from "./files.js";
|
|
21
|
+
import { handleFilesContent, handleFilesDirectories, handleFilesPreview, handleFilesTree, } from "./files.js";
|
|
22
22
|
import { handleBrowserApplyScreenshot, handleBrowserContent, handleBrowserEvents, handleBrowserNavigate, handleBrowserScreenshot, handleBrowserStatus, handleCreateBrowserSession, handleDeleteBrowserSession, } from "./browser.js";
|
|
23
23
|
import { handleCancelLocalKnowledgeCapsuleIndexing, handleConnectLocalKnowledgeCapsule, handleCreateLocalKnowledgeCapsule, handleCreateLocalKnowledgeCapsuleSet, handleDeleteLocalKnowledgeCapsule, handleDisconnectLocalKnowledgeCapsule, handleGetLocalKnowledgeCapsule, handleListLocalKnowledgeCapsules, handleListLocalKnowledgeCapsuleSets, handleReindexLocalKnowledgeCapsule, handleStartLocalKnowledgeCapsuleIndexing, handleUpdateLocalKnowledgeCapsule, } from "./local-knowledge-handlers.js";
|
|
24
24
|
import { handleRelationshipCreate, handleRelationshipDelete, handleRelationshipDependencies, handleRelationshipEvents, handleRelationshipExplain, handleRelationshipGet, handleRelationshipHealth, handleRelationshipImpact, handleRelationshipList, handleRelationshipPatch, handleRelationshipValidate, } from "./relationship-handlers.js";
|
|
@@ -90,10 +90,12 @@ export const API_ROUTES = [
|
|
|
90
90
|
handler: handleDeleteTerminalExecution,
|
|
91
91
|
},
|
|
92
92
|
{ method: "GET", pattern: "/api/terminal/events", handler: handleTerminalEvents },
|
|
93
|
-
// Desktop files —
|
|
93
|
+
// Desktop files — selected-root browser, preview, and editor control plane.
|
|
94
94
|
{ method: "GET", pattern: "/api/files/directories", handler: handleFilesDirectories },
|
|
95
95
|
{ method: "GET", pattern: "/api/files/tree", handler: handleFilesTree },
|
|
96
96
|
{ method: "GET", pattern: "/api/files/preview", handler: handleFilesPreview },
|
|
97
|
+
{ method: "GET", pattern: "/api/files/content", handler: handleFilesContent },
|
|
98
|
+
{ method: "PATCH", pattern: "/api/files/content", handler: handleFilesContent },
|
|
97
99
|
// Issue #198 audit fix — live capsule detail/health routes for the Local Knowledge UI.
|
|
98
100
|
{
|
|
99
101
|
method: "GET",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-engine.d.ts","sourceRoot":"","sources":["../src/run-engine.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAqB7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAa,MAAM,WAAW,CAAC;AAC3E,OAAO,EAIL,KAAK,sBAAsB,EAE5B,MAAM,eAAe,CAAC;AAIvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AASD,UAAU,aAAa;IACrB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAG/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E;AA2TD,wBAAgB,QAAQ,CACtB,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,EACzC,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAoBhB;
|
|
1
|
+
{"version":3,"file":"run-engine.d.ts","sourceRoot":"","sources":["../src/run-engine.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAqB7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAa,MAAM,WAAW,CAAC;AAC3E,OAAO,EAIL,KAAK,sBAAsB,EAE5B,MAAM,eAAe,CAAC;AAIvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AASD,UAAU,aAAa;IACrB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAG/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E;AA2TD,wBAAgB,QAAQ,CACtB,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,EACzC,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAoBhB;AA4GD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GACxC,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAMD,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -337,7 +337,12 @@ function persistOutcome(ctx, identity, outcome) {
|
|
|
337
337
|
return persistExplainEvidence(runIdentity, outcome.result, ctx.evidence);
|
|
338
338
|
}
|
|
339
339
|
if (ctx.request.kind === "verify") {
|
|
340
|
-
return persistVerifyEvidence(runIdentity, ctx.evidence
|
|
340
|
+
return persistVerifyEvidence(runIdentity, ctx.evidence, ctx.request.governedHandoff === undefined
|
|
341
|
+
? undefined
|
|
342
|
+
: buildGovernedHandoffEvidence({
|
|
343
|
+
request: ctx.request.governedHandoff,
|
|
344
|
+
sourceGroundedRunId: ctx.request.governedHandoffSourceGroundedRunId,
|
|
345
|
+
}));
|
|
341
346
|
}
|
|
342
347
|
return persistWorkflowEvidence(runIdentity, outcome.report, identity.sink.buffered(), ctx.evidence, ctx.request.governedHandoff === undefined
|
|
343
348
|
? undefined
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DatabaseSync } from "node:sqlite";
|
|
2
|
-
import type { Chat, CreateChatOptions, UpdateChatPatch } from "./types.js";
|
|
2
|
+
import type { Chat, CreateChatOptions, UpdateChatOptions, UpdateChatPatch } from "./types.js";
|
|
3
3
|
export declare function listChats(db: DatabaseSync, projectPath: string): readonly Chat[];
|
|
4
4
|
export declare function listChatsLimited(db: DatabaseSync, projectPath: string, limit: number): readonly Chat[];
|
|
5
5
|
export declare function findChatById(db: DatabaseSync, id: string): Chat | undefined;
|
|
@@ -11,7 +11,7 @@ export declare function insertChat(db: DatabaseSync, args: {
|
|
|
11
11
|
readonly opts: CreateChatOptions | undefined;
|
|
12
12
|
readonly now: number;
|
|
13
13
|
}): Chat;
|
|
14
|
-
export declare function updateChat(db: DatabaseSync, id: string, patch: UpdateChatPatch, now: number): Chat;
|
|
14
|
+
export declare function updateChat(db: DatabaseSync, id: string, patch: UpdateChatPatch, now: number, options?: UpdateChatOptions): Chat;
|
|
15
15
|
export declare function deleteChat(db: DatabaseSync, id: string): void;
|
|
16
16
|
export declare function touchChat(db: DatabaseSync, id: string, now: number): void;
|
|
17
17
|
//# sourceMappingURL=chats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/store/chats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/store/chats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAahD,OAAO,KAAK,EACV,IAAI,EAGJ,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,YAAY,CAAC;AAyWpB,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,IAAI,EAAE,CAEhF;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,YAAY,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,SAAS,IAAI,EAAE,CAOjB;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAG3E;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GACA,IAAI,CAkBN;AAmTD,wBAAgB,UAAU,CACxB,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CA4BN;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAG7D;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAGzE"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// ADR-0013 — chats CRUD scoped to a project. Parameterized SQL only.
|
|
2
2
|
import { isAbsolute } from "node:path";
|
|
3
3
|
import { SELECTED_SCOPE_KINDS, isValidScopePath, } from "@oscharko-dev/keiko-contracts/connected-context";
|
|
4
|
-
import { DEFAULT_GROUNDING_LIMITS,
|
|
4
|
+
import { DEFAULT_GROUNDING_LIMITS, GROUNDING_LIMIT_CEILINGS, } from "@oscharko-dev/keiko-contracts/bff-wire";
|
|
5
|
+
import { redact } from "@oscharko-dev/keiko-security";
|
|
6
|
+
import { pathIsDenied } from "../files-deny.js";
|
|
5
7
|
import { invalidRequest, notFound } from "./errors.js";
|
|
6
8
|
const MAX_CONNECTED_SCOPE_PATHS = 50;
|
|
7
9
|
const SELECTED_SCOPE_KIND_SET = new Set(SELECTED_SCOPE_KINDS);
|
|
@@ -49,6 +51,18 @@ function validateScopePathsForKind(kind, paths) {
|
|
|
49
51
|
}
|
|
50
52
|
return items;
|
|
51
53
|
}
|
|
54
|
+
function metadataIsSafe(value) {
|
|
55
|
+
const redacted = redact(value);
|
|
56
|
+
return typeof redacted !== "string" || redacted === value;
|
|
57
|
+
}
|
|
58
|
+
function assertMetadataSafe(value, label) {
|
|
59
|
+
if (!metadataIsSafe(value)) {
|
|
60
|
+
throw invalidRequest(`${label} must not contain credential-shaped metadata.`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function allMetadataSafe(values) {
|
|
64
|
+
return values.every(metadataIsSafe);
|
|
65
|
+
}
|
|
52
66
|
// Epic #532 — the connected_scope_paths column now holds EITHER a single scope object (legacy)
|
|
53
67
|
// OR a JSON array of scope objects (multi-source). The Issue #184 legacy form (a bare array of
|
|
54
68
|
// path strings) is still tolerated as a single files scope. Disambiguation: an array whose first
|
|
@@ -62,8 +76,13 @@ function validateScopePathsForKind(kind, paths) {
|
|
|
62
76
|
function decodeScopeRoot(raw) {
|
|
63
77
|
if (raw === undefined)
|
|
64
78
|
return { ok: true };
|
|
65
|
-
if (typeof raw === "string" &&
|
|
79
|
+
if (typeof raw === "string" &&
|
|
80
|
+
raw.length > 0 &&
|
|
81
|
+
isAbsolute(raw) &&
|
|
82
|
+
!pathIsDenied(raw) &&
|
|
83
|
+
metadataIsSafe(raw)) {
|
|
66
84
|
return { ok: true, root: raw };
|
|
85
|
+
}
|
|
67
86
|
return { ok: false };
|
|
68
87
|
}
|
|
69
88
|
function decodeSingleScopeObject(raw) {
|
|
@@ -72,6 +91,8 @@ function decodeSingleScopeObject(raw) {
|
|
|
72
91
|
const relativePaths = validateScopePathsForKind(raw.kind, raw.relativePaths);
|
|
73
92
|
if (relativePaths === undefined)
|
|
74
93
|
return undefined;
|
|
94
|
+
if (!allMetadataSafe(relativePaths))
|
|
95
|
+
return undefined;
|
|
75
96
|
const decodedRoot = decodeScopeRoot(raw.root);
|
|
76
97
|
if (!decodedRoot.ok)
|
|
77
98
|
return undefined;
|
|
@@ -88,10 +109,12 @@ function decodeSingleScopeObject(raw) {
|
|
|
88
109
|
}
|
|
89
110
|
function decodeLegacyFilesArray(parsed) {
|
|
90
111
|
const relativePaths = validateScopePathsForKind("files", parsed);
|
|
91
|
-
|
|
112
|
+
if (relativePaths === undefined || !allMetadataSafe(relativePaths))
|
|
113
|
+
return undefined;
|
|
114
|
+
return { kind: "files", relativePaths };
|
|
92
115
|
}
|
|
93
116
|
function decodeScopeObjectArray(entries) {
|
|
94
|
-
if (entries.length >
|
|
117
|
+
if (entries.length > GROUNDING_LIMIT_CEILINGS.maxConnectedSources)
|
|
95
118
|
return undefined;
|
|
96
119
|
const payloads = [];
|
|
97
120
|
for (const entry of entries) {
|
|
@@ -180,8 +203,9 @@ function decodeLocalKnowledgeScopes(raw) {
|
|
|
180
203
|
return single === undefined ? undefined : [single];
|
|
181
204
|
}
|
|
182
205
|
function decodeLocalKnowledgeScopeArray(entries) {
|
|
183
|
-
if (entries.length === 0 || entries.length >
|
|
206
|
+
if (entries.length === 0 || entries.length > GROUNDING_LIMIT_CEILINGS.maxLocalKnowledgeSources) {
|
|
184
207
|
return undefined;
|
|
208
|
+
}
|
|
185
209
|
const scopes = [];
|
|
186
210
|
for (const entry of entries) {
|
|
187
211
|
const decoded = decodeLocalKnowledgeScopeObject(entry);
|
|
@@ -326,9 +350,25 @@ function validateConnectedScopeShape(scope) {
|
|
|
326
350
|
if (!Array.isArray(scope.relativePaths)) {
|
|
327
351
|
throw invalidRequest("connectedScope.relativePaths must be an array.");
|
|
328
352
|
}
|
|
329
|
-
|
|
353
|
+
const relativePaths = validateScopePathsForKind(scope.kind, scope.relativePaths);
|
|
354
|
+
if (relativePaths === undefined) {
|
|
330
355
|
throw invalidRequest("connectedScope.relativePaths must match connectedScope.kind and contain valid workspace-relative paths.");
|
|
331
356
|
}
|
|
357
|
+
validateConnectedScopeTimestamp(scope);
|
|
358
|
+
validateConnectedScopeMetadata(relativePaths, scope.root);
|
|
359
|
+
}
|
|
360
|
+
function validateConnectedScopeMetadata(relativePaths, root) {
|
|
361
|
+
if (root !== undefined && pathIsDenied(root)) {
|
|
362
|
+
throw invalidRequest("connectedScope.root must not reference a deny-listed path.");
|
|
363
|
+
}
|
|
364
|
+
for (const relativePath of relativePaths) {
|
|
365
|
+
assertMetadataSafe(relativePath, "connectedScope.relativePaths");
|
|
366
|
+
}
|
|
367
|
+
if (root !== undefined) {
|
|
368
|
+
assertMetadataSafe(root, "connectedScope.root");
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
function validateConnectedScopeTimestamp(scope) {
|
|
332
372
|
if (typeof scope.connectedAtMs !== "number" ||
|
|
333
373
|
!Number.isInteger(scope.connectedAtMs) ||
|
|
334
374
|
scope.connectedAtMs < 0) {
|
|
@@ -511,8 +551,44 @@ function localKnowledgeScopesUpdateParams(value) {
|
|
|
511
551
|
}
|
|
512
552
|
return { apply: 1, json: JSON.stringify(value.map(encodeLocalKnowledgeScopeObject)) };
|
|
513
553
|
}
|
|
514
|
-
|
|
515
|
-
|
|
554
|
+
// Release 0.2.0 — combined source cap. "Up to 16 sources" is a TOTAL across both lists
|
|
555
|
+
// (folders/files/repos in connectedScopes + knowledge connectors in localKnowledgeScopes),
|
|
556
|
+
// mirroring the QI ingestion total cap (MAX_QI_SOURCES = 16) so "16 sources" means the same
|
|
557
|
+
// thing everywhere. The cap is max(maxConnectedSources, maxLocalKnowledgeSources): never
|
|
558
|
+
// smaller than either per-list limit, so each list's own cap stays reachable. Growth-only:
|
|
559
|
+
// a pre-existing over-cap chat may shrink or hold its lists (no migration lock-out), but no
|
|
560
|
+
// patch may grow the combined total past the cap.
|
|
561
|
+
// Effective count after applying a resolved list patch: undefined = unchanged, null = cleared.
|
|
562
|
+
function patchedCount(resolved, prev) {
|
|
563
|
+
if (resolved === undefined)
|
|
564
|
+
return prev;
|
|
565
|
+
return resolved === null ? 0 : resolved.length;
|
|
566
|
+
}
|
|
567
|
+
function combinedSourceCap(options) {
|
|
568
|
+
return Math.max(options?.maxConnectedSources ?? DEFAULT_GROUNDING_LIMITS.maxConnectedSources, options?.maxLocalKnowledgeSources ?? DEFAULT_GROUNDING_LIMITS.maxLocalKnowledgeSources);
|
|
569
|
+
}
|
|
570
|
+
function validateTotalSourceCap(db, id, patch, options) {
|
|
571
|
+
const nextConnected = resolveScopePatch(patch);
|
|
572
|
+
const nextLk = resolveLocalKnowledgeScopePatch(patch);
|
|
573
|
+
if (nextConnected === undefined && nextLk === undefined)
|
|
574
|
+
return;
|
|
575
|
+
const existing = findChatById(db, id);
|
|
576
|
+
if (existing === undefined)
|
|
577
|
+
return; // the UPDATE below raises notFound
|
|
578
|
+
const prevConnected = existing.connectedScopes ??
|
|
579
|
+
(existing.connectedScope !== undefined ? [existing.connectedScope] : []);
|
|
580
|
+
const prevLk = existing.localKnowledgeScopes ??
|
|
581
|
+
(existing.localKnowledgeScope !== undefined ? [existing.localKnowledgeScope] : []);
|
|
582
|
+
const total = patchedCount(nextConnected, prevConnected.length) + patchedCount(nextLk, prevLk.length);
|
|
583
|
+
const prevTotal = prevConnected.length + prevLk.length;
|
|
584
|
+
const cap = combinedSourceCap(options);
|
|
585
|
+
if (total > cap && total > prevTotal) {
|
|
586
|
+
throw invalidRequest(`A chat may connect at most ${String(cap)} sources in total (folders, files, repositories, and knowledge connectors combined).`);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
export function updateChat(db, id, patch, now, options) {
|
|
590
|
+
validateChatPatch(patch, options);
|
|
591
|
+
validateTotalSourceCap(db, id, patch, options);
|
|
516
592
|
if (patch.selectedModel !== undefined)
|
|
517
593
|
validateSelectedModel(patch.selectedModel);
|
|
518
594
|
const titleParam = patch.title ?? null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/store/db.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAMV,OAAO,EACP,qBAAqB,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/store/db.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAMV,OAAO,EACP,qBAAqB,EAKtB,MAAM,YAAY,CAAC;AAiCpB,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAM9E;AA+JD,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAa3C,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAI3E;AAgCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAkB/D;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAEhG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAEvF"}
|
|
@@ -93,10 +93,12 @@ function buildStore(db, options) {
|
|
|
93
93
|
deleteProject: (path) => {
|
|
94
94
|
deleteProjectRecord(db, path);
|
|
95
95
|
},
|
|
96
|
-
listChats: (projectPath, limit) => limit === undefined
|
|
96
|
+
listChats: (projectPath, limit) => limit === undefined
|
|
97
|
+
? sqlListChats(db, projectPath)
|
|
98
|
+
: sqlListChatsLimited(db, projectPath, limit),
|
|
97
99
|
findChatById: (id) => sqlFindChatById(db, id),
|
|
98
100
|
createChat: (projectPath, title, selectedModel, opts) => createChatRecord(db, options, projectPath, title, selectedModel, opts),
|
|
99
|
-
updateChat: (id, patch) => sqlUpdateChat(db, id, patch, options.now()),
|
|
101
|
+
updateChat: (id, patch, updateOptions) => sqlUpdateChat(db, id, patch, options.now(), updateOptions),
|
|
100
102
|
deleteChat: (id) => {
|
|
101
103
|
sqlDeleteChat(db, id);
|
|
102
104
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { Chat, ChatConnectedScope, ChatLocalKnowledgeScope, ChatMessage, ChatRole, CreateChatOptions, NewChatMessage, Project, UiStore, UiStoreFactoryOptions, UpdateChatMessagePatch, UpdateChatPatch, UpdateProjectPatch, WorkflowStatus, } from "./types.js";
|
|
1
|
+
export type { Chat, ChatConnectedScope, ChatLocalKnowledgeScope, ChatMessage, ChatRole, CreateChatOptions, NewChatMessage, Project, UiStore, UiStoreFactoryOptions, UpdateChatOptions, UpdateChatMessagePatch, UpdateChatPatch, UpdateProjectPatch, WorkflowStatus, } from "./types.js";
|
|
2
2
|
export { UiStoreError, type UiStoreErrorCode, invalidPath, invalidRequest, notFound, pathNotDirectory, pathNotFound, projectExists, } from "./errors.js";
|
|
3
3
|
export { classifyPathShape, validateProjectPath, type PathShape, type ValidateProjectPathOptions, } from "./validation.js";
|
|
4
4
|
export { assertUiDbOutsideProject, resolveUiDbPath, UI_DB_FILENAME, UI_DB_DIRNAME, } from "./paths.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,IAAI,EACJ,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,OAAO,EACP,OAAO,EACP,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,0BAA0B,GAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,IAAI,EACJ,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,OAAO,EACP,OAAO,EACP,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,0BAA0B,GAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/store/paths.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,aAAa,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/store/paths.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,aAAa,WAAW,CAAC;AA4DtC,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,MAAM,CASR;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAgBhG"}
|
|
@@ -11,6 +11,11 @@ function isInsideCurrentWorkingDirectory(path) {
|
|
|
11
11
|
const resolved = resolve(path);
|
|
12
12
|
return resolved === cwd || resolved.startsWith(`${cwd}${sep}`);
|
|
13
13
|
}
|
|
14
|
+
function isInsideRuntimeStateRoot(path, workspaceRoot) {
|
|
15
|
+
const runtimeRoot = resolve(workspaceRoot, UI_DB_DIRNAME);
|
|
16
|
+
const resolved = resolve(path);
|
|
17
|
+
return resolved === runtimeRoot || resolved.startsWith(`${runtimeRoot}${sep}`);
|
|
18
|
+
}
|
|
14
19
|
function hasSymlinkAncestor(path) {
|
|
15
20
|
let current = dirname(path);
|
|
16
21
|
const root = parse(current).root;
|
|
@@ -35,7 +40,8 @@ function resolveConfiguredPath(path, label) {
|
|
|
35
40
|
throw invalidRequest(`${label} must be absolute.`);
|
|
36
41
|
}
|
|
37
42
|
const resolved = normalize(path);
|
|
38
|
-
if (isInsideCurrentWorkingDirectory(resolved)
|
|
43
|
+
if (isInsideCurrentWorkingDirectory(resolved) &&
|
|
44
|
+
!isInsideRuntimeStateRoot(resolved, process.cwd())) {
|
|
39
45
|
throw invalidRequest(`${label} must not be inside the current workspace.`);
|
|
40
46
|
}
|
|
41
47
|
if (existsSync(resolved) && lstatSync(resolved).isSymbolicLink()) {
|
|
@@ -68,7 +74,8 @@ export function assertUiDbOutsideProject(uiDbPath, projectPath) {
|
|
|
68
74
|
const resolvedDbPath = resolve(uiDbPath);
|
|
69
75
|
const resolvedDbDir = dirname(resolvedDbPath);
|
|
70
76
|
const resolvedProject = resolve(projectPath);
|
|
71
|
-
if (containsPath(resolvedProject, resolvedDbPath)
|
|
77
|
+
if (containsPath(resolvedProject, resolvedDbPath) &&
|
|
78
|
+
!isInsideRuntimeStateRoot(resolvedDbPath, resolvedProject)) {
|
|
72
79
|
throw invalidRequest("UI database path must not be inside a selected project.");
|
|
73
80
|
}
|
|
74
81
|
if (containsPath(resolvedDbDir, resolvedProject)) {
|