@oscharko-dev/keiko 0.2.0-beta.5 → 0.2.0-beta.6
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 +39 -14
- package/dist/ui/csp-hashes.json +17 -22
- package/dist/ui/static/404.html +1 -1
- package/dist/ui/static/__next.__PAGE__.txt +2 -2
- package/dist/ui/static/__next._full.txt +3 -3
- package/dist/ui/static/__next._head.txt +1 -1
- package/dist/ui/static/__next._index.txt +2 -2
- package/dist/ui/static/__next._tree.txt +2 -2
- package/dist/ui/static/_next/static/chunks/0-qhhdvxg2j_y.js +1 -0
- package/dist/ui/static/_next/static/chunks/0ke4ratkgvcxo.css +1 -0
- package/dist/ui/static/_next/static/chunks/0xhu-pfsyvbmx.js +5 -0
- package/dist/ui/static/_next/static/chunks/3vf3oh2-sl2nc.js +1 -0
- package/dist/ui/static/_next/static/chunks/3wmd4-2vznp2g.js +106 -0
- package/dist/ui/static/_next/static/chunks/turbopack-18q50fp2-1qbt.js +1 -0
- package/dist/ui/static/_not-found/__next._full.txt +2 -2
- package/dist/ui/static/_not-found/__next._head.txt +1 -1
- package/dist/ui/static/_not-found/__next._index.txt +2 -2
- package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/ui/static/_not-found/__next._not-found.txt +1 -1
- package/dist/ui/static/_not-found/__next._tree.txt +2 -2
- package/dist/ui/static/_not-found.html +1 -1
- package/dist/ui/static/_not-found.txt +2 -2
- package/dist/ui/static/index.html +1 -1
- package/dist/ui/static/index.txt +3 -3
- package/dist/ui/static/launch/__next._full.txt +3 -3
- package/dist/ui/static/launch/__next._head.txt +1 -1
- package/dist/ui/static/launch/__next._index.txt +2 -2
- package/dist/ui/static/launch/__next._tree.txt +2 -2
- package/dist/ui/static/launch/__next.launch.__PAGE__.txt +2 -2
- package/dist/ui/static/launch/__next.launch.txt +1 -1
- package/dist/ui/static/launch.html +1 -1
- package/dist/ui/static/launch.txt +3 -3
- package/dist/ui/static/local-knowledge/__next._full.txt +3 -3
- package/dist/ui/static/local-knowledge/__next._head.txt +1 -1
- package/dist/ui/static/local-knowledge/__next._index.txt +2 -2
- package/dist/ui/static/local-knowledge/__next._tree.txt +2 -2
- package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +2 -2
- package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next._full.txt +3 -3
- package/dist/ui/static/local-knowledge/capsule/__next._head.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next._index.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule.html +1 -1
- package/dist/ui/static/local-knowledge/capsule.txt +3 -3
- package/dist/ui/static/local-knowledge.html +1 -1
- package/dist/ui/static/local-knowledge.txt +3 -3
- package/dist/ui/static/memoriaviva/__next._full.txt +6 -6
- package/dist/ui/static/memoriaviva/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +4 -4
- package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +4 -4
- package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation.html +1 -1
- package/dist/ui/static/memoriaviva/consolidation.txt +4 -4
- package/dist/ui/static/memoriaviva/detail/__next._full.txt +6 -6
- package/dist/ui/static/memoriaviva/detail/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/detail/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +4 -4
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +1 -1
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/detail.html +1 -1
- package/dist/ui/static/memoriaviva/detail.txt +6 -6
- package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +4 -4
- package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue.html +1 -1
- package/dist/ui/static/memoriaviva/review-queue.txt +4 -4
- package/dist/ui/static/memoriaviva.html +1 -1
- package/dist/ui/static/memoriaviva.txt +6 -6
- package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.d.ts +24 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.js +108 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +7 -4
- package/node_modules/@oscharko-dev/keiko-cli/dist/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/index.js +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/init.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-cli/dist/init.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/init.js +4 -4
- package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.d.ts +6 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.js +24 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/launcher.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/launcher.js +5 -7
- package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts +1 -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 +75 -30
- package/node_modules/@oscharko-dev/keiko-cli/dist/memory.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/memory.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/memory.js +76 -7
- package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +50 -2
- package/node_modules/@oscharko-dev/keiko-cli/dist/runner.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/runner.js +20 -4
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts +1 -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 +17 -14
- package/node_modules/@oscharko-dev/keiko-cli/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +7 -0
- 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.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +1 -2
- package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/gateway.d.ts +12 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/gateway.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +4 -2
- 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 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.d.ts +13 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.js +7 -6
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-internal.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-internal.js +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-operations.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-workflow-port.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-workflow-port.js +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +21 -4
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.js +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +1 -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 +26 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.d.ts +5 -3
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.js +29 -3
- package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.js +58 -0
- package/node_modules/@oscharko-dev/keiko-contracts/package.json +5 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/dist/surface-parity.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
- 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/qualityIntelligence/candidatesArtifact.d.ts +7 -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 +62 -13
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +3 -3
- 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 +31 -11
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +35 -3
- 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/schema.js +107 -3
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +15 -1
- 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 +248 -36
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +17 -3
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts +1 -1
- 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 +26 -22
- package/node_modules/@oscharko-dev/keiko-evidence/dist/side-file.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/side-file.js +17 -5
- package/node_modules/@oscharko-dev/keiko-evidence/dist/store.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/store.js +128 -12
- package/node_modules/@oscharko-dev/keiko-evidence/dist/workflow-evidence.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/workflow-evidence.js +1 -3
- package/node_modules/@oscharko-dev/keiko-evidence/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-harness/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +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 +1 -2
- 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 +1 -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 +45 -21
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/media-type.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/media-type.js +1 -0
- 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 +11 -3
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.js +42 -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 +34 -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/report.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/report.js +7 -6
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner.js +7 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.js +2 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +1 -1
- 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 +1 -1
- 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 +121 -3
- 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 +34 -4
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +1 -0
- 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 +63 -0
- 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 +4 -7
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/html-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/html-parser.js +67 -11
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -0
- 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 +3 -0
- 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 +39 -3
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/null-ocr-adapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/ocr-pipeline-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/ocr-pipeline-parser.js +46 -11
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.js +2 -0
- 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 +114 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.js +425 -0
- 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/qualityIntelligence/capsuleCorpus.d.ts +9 -4
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.js +11 -6
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +15 -2
- 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 +220 -7
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/types.d.ts +2 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/types.d.ts.map +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 +3 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +4 -2
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.js +17 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/errors.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/errors.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.js +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/salience.js +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.js +5 -0
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/consolidate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/consolidate.js +93 -30
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/stale.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/stale.js +3 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.d.ts +5 -0
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.js +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/dist/forget.js +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-governance/dist/types.js +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/dist/context.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/context.js +61 -18
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/ranking.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/ranking.js +3 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/retrieve.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/retrieve.js +26 -4
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/types.d.ts +9 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.js +21 -0
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/migrate-encrypt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/migrate-encrypt.js +24 -4
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.js +27 -4
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.js +21 -4
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/types.d.ts +22 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/validate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/validate.js +3 -0
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/vault.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/vault.js +105 -28
- package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +1 -1
- 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 -0
- 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 +83 -69
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.d.ts +3 -2
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.js +20 -16
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/gateway.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/gateway.js +9 -3
- 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 +29 -3
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.d.ts +4 -4
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.js +3 -3
- 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 +51 -6
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.d.ts +20 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.js +122 -7
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.d.ts +10 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.js +33 -11
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.js +21 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/routing.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/routing.js +2 -13
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.js +18 -2
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/types.d.ts +5 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.d.ts +35 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.js +74 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/deduplication.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/deduplication.js +6 -2
- 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 +64 -19
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +3 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.d.ts +6 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.js +22 -9
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +4 -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 +28 -12
- 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 +123 -33
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +7 -4
- 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 +13 -17
- 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 +35 -12
- 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 +54 -6
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts +4 -0
- 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 +29 -10
- 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 -4
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/requirementExcerpt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/requirementExcerpt.js +15 -6
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.js +162 -6
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts +14 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.js +50 -12
- 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 +4 -2
- 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 +8 -3
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/traceability.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/traceability.js +12 -9
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.js +7 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.d.ts +10 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.js +14 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/index.js +3 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.js +97 -50
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.js +35 -7
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.js +2 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-sdk/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.d.ts +11 -0
- package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.js +13 -0
- package/node_modules/@oscharko-dev/keiko-security/package.json +1 -1
- 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 +50 -12
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.js +10 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.js +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +4 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +44 -69
- package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.js +120 -28
- package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.js +4 -1
- 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 +2 -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 +115 -22
- 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 +54 -21
- 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 +11 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -0
- 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 -0
- 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 +7 -3
- 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 +26 -14
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.js +52 -27
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.d.ts +10 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.js +44 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-handlers.js +79 -57
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-registry.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-registry.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-conv-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-conv-handlers.js +6 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-conversation-context.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-diagnostics.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-diagnostics.js +16 -9
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts +3 -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 +538 -87
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.d.ts +6 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.js +17 -38
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-retention.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-retention.js +7 -15
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-salience.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-salience.js +17 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-scope-sanitizer.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-scope-sanitizer.js +19 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-target-resolver.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-target-resolver.js +4 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.js +108 -27
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.js +3 -0
- 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 +61 -7
- 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 +9 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConcurrency.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConcurrency.js +2 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts +6 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.js +16 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +1 -1
- 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 +3 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.js +3 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.d.ts +5 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.js +10 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaReadiness.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaReadiness.js +11 -5
- 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 +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.js +71 -10
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts +2 -0
- 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 +86 -23
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +1 -1
- 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/figma/figmaTokenSource.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaTokenSource.js +4 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaUrl.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaUrl.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaCodegenRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaCodegenRoutes.js +60 -20
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +11 -6
- 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 +144 -6
- 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 +84 -15
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -7
- 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 +206 -42
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts +3 -1
- 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 +69 -65
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts +15 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.js +56 -39
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts +1 -1
- 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 +382 -75
- 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 +14 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts +3 -2
- 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 +44 -16
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts +7 -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 +336 -47
- 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 +15 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.js +36 -4
- 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 +61 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +16 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts +1 -0
- 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 +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/run-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/run-handlers.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.d.ts +9 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.js +26 -0
- 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 +16 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/store/messages.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/terminal.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/dist/patch-normalize.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/dist/patch-normalize.js +13 -7
- package/node_modules/@oscharko-dev/keiko-tools/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-verification/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.js +16 -18
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/prompt.js +6 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/workflow.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/workflow.js +3 -3
- package/node_modules/@oscharko-dev/keiko-workflows/dist/governed-handoff.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/descriptors.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts +18 -2
- 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 +209 -54
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts +4 -4
- 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 +4 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/unit-tests/target-guard.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +1 -2
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +2 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +6 -2
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/package.json +1 -1
- package/package.json +23 -6
- package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +0 -2
- package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +0 -1
- package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +0 -1
- package/dist/ui/static/_next/static/chunks/1m-kvwm6_90_3.css +0 -1
- package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +0 -1
- package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +0 -4
- package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +0 -1
- package/dist/ui/static/_next/static/chunks/2ngm8iwdb1cbv.js +0 -106
- package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +0 -1
- package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +0 -1
- package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +0 -1
- package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +0 -1
- package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +0 -1
- /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → fQMXe8UmV01bh25WOoIt3}/_buildManifest.js +0 -0
- /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → fQMXe8UmV01bh25WOoIt3}/_clientMiddlewareManifest.js +0 -0
- /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → fQMXe8UmV01bh25WOoIt3}/_ssgManifest.js +0 -0
|
@@ -9,7 +9,7 @@ import { realpathSync } from "node:fs";
|
|
|
9
9
|
import { dirname, isAbsolute, relative, resolve } from "node:path";
|
|
10
10
|
import { QualityIntelligence } from "@oscharko-dev/keiko-contracts";
|
|
11
11
|
import { redact, sha256Hex } from "@oscharko-dev/keiko-security";
|
|
12
|
-
import { QualityIntelligenceGeneration, QualityIntelligenceHardening, QualityIntelligenceFigma, } from "@oscharko-dev/keiko-quality-intelligence";
|
|
12
|
+
import { QualityIntelligenceGeneration, QualityIntelligenceHardening, QualityIntelligenceFigma, isUnsafeFormatCodePoint, stripUnsafeFormatChars, } from "@oscharko-dev/keiko-quality-intelligence";
|
|
13
13
|
import { detectWorkspaceAt, discoverWithStats, buildContextPackFromFiles, readWorkspaceFile, isDenied, DEFAULT_CONTEXT_REQUEST, DEFAULT_READ_OPTIONS, WorkspaceError, FileTooLargeError, PathDeniedError, PathEscapeError, WorkspaceReadError, } from "@oscharko-dev/keiko-workspace";
|
|
14
14
|
const MAX_TOTAL_ATOMS = 120;
|
|
15
15
|
const MAX_LABEL_CHARS = 120;
|
|
@@ -36,6 +36,9 @@ function perSourceAtomBudget(total, sourceCount) {
|
|
|
36
36
|
const EVIDENCE_BUDGET_BYTES = 196_608;
|
|
37
37
|
// Never starve a source below this many bytes — a tiny share is still usable context.
|
|
38
38
|
const MIN_SOURCE_BUDGET_BYTES = 4_096;
|
|
39
|
+
// Bound productive vision calls for one Figma snapshot source. The deterministic structural
|
|
40
|
+
// baseline still covers every parseable screen; vision hints are additive and sampled first-in-order.
|
|
41
|
+
const MAX_FIGMA_VISION_AUGMENTED_SCREENS = 12;
|
|
39
42
|
/**
|
|
40
43
|
* Fair per-source UTF-8 byte budget — the byte analogue of {@link perSourceAtomBudget}. Floor-divides
|
|
41
44
|
* the global evidence byte pool across sources (Chat byte-split parity) with a non-zero floor so the
|
|
@@ -67,15 +70,31 @@ const CREDENTIAL_LABEL_SHAPES = [
|
|
|
67
70
|
/\bBearer\s+\S+/giu,
|
|
68
71
|
/-----BEGIN [A-Z ]*PRIVATE KEY-----/gu,
|
|
69
72
|
];
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
|
|
73
|
+
// Make a source label single-line AND spoof-safe with one code-point scan (the `no-control-regex`
|
|
74
|
+
// lint rule forbids a control-range regex literal, and a scan is the established in-package idiom —
|
|
75
|
+
// mirrors generationPort.scrubEvidenceText):
|
|
76
|
+
// - C0 controls (incl. tab/newline/CR) and DEL become a SPACE, so a multi-line or control-laden
|
|
77
|
+
// label can never glue a second line of content into the streamed displayLabel (#277/#278).
|
|
78
|
+
// - Bidi overrides/isolates, zero-width/BOM, LRM/RLM, the Arabic letter mark, and C1 controls are
|
|
79
|
+
// DROPPED outright. These are invisible or reorder surrounding text, so a source filename /
|
|
80
|
+
// capsule id cannot smuggle a right-to-left or zero-width spoof into the browser-streamed
|
|
81
|
+
// envelope display surface. The drop set is the SHARED `isUnsafeFormatCodePoint` predicate used
|
|
82
|
+
// by the candidate-text scrubber (keiko-quality-intelligence stripUnsafeFormatChars), so the
|
|
83
|
+
// source-label path is symmetric with the persisted/exported candidate-text path (Epic #729;
|
|
84
|
+
// the bidi/zero-width display-hygiene class of #280/#284). C0/DEL are handled first (→ space)
|
|
85
|
+
// because a single-line label spaces line breaks rather than gluing them.
|
|
86
|
+
function stripUnsafeLabelChars(value) {
|
|
75
87
|
let out = "";
|
|
76
88
|
for (const ch of value) {
|
|
77
89
|
const cp = ch.codePointAt(0) ?? 0;
|
|
78
|
-
|
|
90
|
+
if (cp <= 0x1f || cp === 0x7f) {
|
|
91
|
+
out += " ";
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (isUnsafeFormatCodePoint(cp)) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
out += ch;
|
|
79
98
|
}
|
|
80
99
|
return out;
|
|
81
100
|
}
|
|
@@ -86,12 +105,15 @@ const sanitiseLabel = (label) => {
|
|
|
86
105
|
let cleaned = label.replace(/[a-z][a-z0-9+.-]*:\/\/\S+/giu, " ");
|
|
87
106
|
for (const shape of CREDENTIAL_LABEL_SHAPES)
|
|
88
107
|
cleaned = cleaned.replace(shape, " ");
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
// basename
|
|
94
|
-
|
|
108
|
+
// Map control characters (newline, CR, tab, NUL, DEL, …) to spaces and DROP bidi-override,
|
|
109
|
+
// zero-width, BOM, and C1 spoofing code points so a multi-line, control-laden, or
|
|
110
|
+
// visually-reordered label can never carry a second line of content into — or spoof the reading
|
|
111
|
+
// order of — the browser-streamed envelope displayLabel. Without the control→space step the
|
|
112
|
+
// absolute-path basename-collapse below (which splits on "/" only) would keep a trailing
|
|
113
|
+
// "\n<more content>" glued inside the final path segment, defeating the basename defence; without
|
|
114
|
+
// the bidi/zero-width drop a crafted filename could reorder the displayed label (#277/#278
|
|
115
|
+
// envelope display-surface invariant; Epic #729 symmetry with the candidate-text scrubber).
|
|
116
|
+
cleaned = stripUnsafeLabelChars(cleaned);
|
|
95
117
|
cleaned = cleaned.trim();
|
|
96
118
|
// Collapse an absolute POSIX / Windows-drive / UNC path label to its final segment so the
|
|
97
119
|
// display label never leaks the filesystem layout (the basename is the useful display token).
|
|
@@ -134,8 +156,16 @@ function assertRealPathNotDenied(absPath, label, noun) {
|
|
|
134
156
|
throw new QiIngestionError("QI_SOURCE_DENIED", `${noun} "${label}" is in a protected location.`);
|
|
135
157
|
}
|
|
136
158
|
}
|
|
137
|
-
|
|
138
|
-
|
|
159
|
+
// Escape the field delimiter ("|") and the escape character ("\") in each user/path-controlled
|
|
160
|
+
// field so a label or content value can never inject a raw delimiter and forge another source's
|
|
161
|
+
// envelope id. The strictly-increasing loop index already disambiguates sources today; escaping
|
|
162
|
+
// makes the pre-image injective on its own — robust even if the fields were ever reordered —
|
|
163
|
+
// closing the latent cross-source provenance-spoofing surface flagged by the #732 composition
|
|
164
|
+
// security audit. A value with no "\" or "|" encodes to itself, so clean labels/paths keep their
|
|
165
|
+
// existing envelope id (and the atom ids derived from it), preserving re-check stability.
|
|
166
|
+
const escapeEnvelopeField = (value) => value.split("\\").join("\\\\").split("|").join("\\|");
|
|
167
|
+
export const envelopeIdFor = (index, label, content) => {
|
|
168
|
+
const digest = sha256Hex(`qi-src-v1|${String(index)}|${escapeEnvelopeField(label)}|${escapeEnvelopeField(content)}`).slice(0, 24);
|
|
139
169
|
return QualityIntelligence.asQualityIntelligenceSourceEnvelopeId(`qi-src-${digest}`);
|
|
140
170
|
};
|
|
141
171
|
const REQUIREMENTS_ENVELOPE_PREFIX = "qi-src-req-";
|
|
@@ -144,6 +174,7 @@ const requirementsEnvelopeIdFor = (index) => {
|
|
|
144
174
|
return QualityIntelligence.asQualityIntelligenceSourceEnvelopeId(`${REQUIREMENTS_ENVELOPE_PREFIX}${digest}`);
|
|
145
175
|
};
|
|
146
176
|
const stableLocalRef = (prefix, value) => `${prefix}:${sha256Hex(value).slice(0, 24)}`;
|
|
177
|
+
const replacementGroupIdFor = (envelopeId, stableKey) => sha256Hex(`qi-replace-v1|${String(envelopeId)}|${stableKey}`);
|
|
147
178
|
const auditSummaryIdFor = (runId) => QualityIntelligence.asQualityIntelligenceAuditSummaryId(`qi-audit-${sha256Hex(runId).slice(0, 24)}`);
|
|
148
179
|
function ingestRequirements(source, index, registeredAt) {
|
|
149
180
|
const text = typeof source.text === "string" ? source.text : "";
|
|
@@ -168,7 +199,14 @@ function ingestRequirements(source, index, registeredAt) {
|
|
|
168
199
|
},
|
|
169
200
|
localRef: `req:${String(index)}`,
|
|
170
201
|
};
|
|
171
|
-
return {
|
|
202
|
+
return {
|
|
203
|
+
envelope,
|
|
204
|
+
atoms: atoms.map((entry, ordinal) => Object.freeze({
|
|
205
|
+
...entry,
|
|
206
|
+
replacementGroupId: replacementGroupIdFor(envelopeId, `requirements:${String(index)}`),
|
|
207
|
+
replacementOrdinal: ordinal,
|
|
208
|
+
})),
|
|
209
|
+
};
|
|
172
210
|
}
|
|
173
211
|
const WORKSPACE_BUDGET_BYTES = 196_608;
|
|
174
212
|
const WORKSPACE_MAX_BYTES_PER_FILE = 16_384;
|
|
@@ -213,7 +251,7 @@ function documentRequirementAtoms(entry, envelopeId) {
|
|
|
213
251
|
});
|
|
214
252
|
if (split.length <= 1)
|
|
215
253
|
return Object.freeze([]);
|
|
216
|
-
return Object.freeze(split.map((requirement) => {
|
|
254
|
+
return Object.freeze(split.map((requirement, ordinal) => {
|
|
217
255
|
const canonicalText = `${entry.path}\n${requirement.canonicalText}`;
|
|
218
256
|
const atom = {
|
|
219
257
|
kind: "requirement",
|
|
@@ -223,7 +261,12 @@ function documentRequirementAtoms(entry, envelopeId) {
|
|
|
223
261
|
redactionStatus: "redacted",
|
|
224
262
|
lifecycleStatus: "draft",
|
|
225
263
|
};
|
|
226
|
-
return Object.freeze({
|
|
264
|
+
return Object.freeze({
|
|
265
|
+
atom: Object.freeze(atom),
|
|
266
|
+
canonicalText,
|
|
267
|
+
replacementGroupId: replacementGroupIdFor(envelopeId, `document:${entry.path}`),
|
|
268
|
+
replacementOrdinal: ordinal,
|
|
269
|
+
});
|
|
227
270
|
}));
|
|
228
271
|
}
|
|
229
272
|
function atomsForWorkspaceEntry(entry, envelopeId) {
|
|
@@ -445,7 +488,7 @@ function processCapsuleDocs(docs, byteBudget) {
|
|
|
445
488
|
const processed = [];
|
|
446
489
|
let totalBytes = 0;
|
|
447
490
|
for (const doc of docs) {
|
|
448
|
-
const capped = truncateToUtf8Bytes(redact(doc.text), perDocBudget);
|
|
491
|
+
const capped = truncateToUtf8Bytes(redact(stripUnsafeFormatChars(doc.text)), perDocBudget);
|
|
449
492
|
if (capped.trim().length === 0)
|
|
450
493
|
continue;
|
|
451
494
|
const bytes = utf8ByteLength(capped);
|
|
@@ -462,8 +505,9 @@ function processCapsuleDocs(docs, byteBudget) {
|
|
|
462
505
|
// Build one evidence atom per capsule document. Reuses the workspace atom shape so the model sees
|
|
463
506
|
// structured text (documentId prefix + body), consistent with folder/file sources. The text is
|
|
464
507
|
// already redacted + capped by processCapsuleDocs, so redactionStatus:"redacted" is truthful.
|
|
465
|
-
function capsuleDocAtom(docId, text, envelopeId) {
|
|
508
|
+
function capsuleDocAtom(docId, text, envelopeId, fingerprintText = text) {
|
|
466
509
|
const canonicalText = `${docId}\n${text}`;
|
|
510
|
+
const fingerprintCanonicalText = `${docId}\n${fingerprintText}`;
|
|
467
511
|
// Derive the atom id from the stable document id only — never its position in the corpus order
|
|
468
512
|
// (Epic #735 drift correctness, mirrors workspaceAtom). A capsule document id (and a Figma
|
|
469
513
|
// screen id) is unique within its envelope, so adding/removing a sibling document never shifts an
|
|
@@ -474,7 +518,7 @@ function capsuleDocAtom(docId, text, envelopeId) {
|
|
|
474
518
|
kind: "document-excerpt",
|
|
475
519
|
id: QualityIntelligence.asQualityIntelligenceEvidenceAtomId(`qi-atom-${digest}`),
|
|
476
520
|
sourceEnvelopeId: envelopeId,
|
|
477
|
-
canonicalHashSha256Hex: sha256Hex(
|
|
521
|
+
canonicalHashSha256Hex: sha256Hex(fingerprintCanonicalText),
|
|
478
522
|
redactionStatus: "redacted",
|
|
479
523
|
lifecycleStatus: "draft",
|
|
480
524
|
};
|
|
@@ -533,25 +577,67 @@ function ingestCapsuleSet(source, index, registeredAt, resolver, byteBudget) {
|
|
|
533
577
|
emptyError: `Capsule set "${label}" has no indexed content or could not be opened.`,
|
|
534
578
|
}, byteBudget);
|
|
535
579
|
}
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
580
|
+
function isPromiseLike(value) {
|
|
581
|
+
return typeof value.then === "function";
|
|
582
|
+
}
|
|
583
|
+
function collectIrStats(node, stats) {
|
|
584
|
+
const next = {
|
|
585
|
+
imageFillCount: stats.imageFillCount + node.imageFills.length,
|
|
586
|
+
textNodeCount: stats.textNodeCount + (node.text !== undefined && node.text.trim().length > 0 ? 1 : 0),
|
|
587
|
+
semanticNodeCount: stats.semanticNodeCount +
|
|
588
|
+
(node.interactionHint === "button" ||
|
|
589
|
+
node.interactionHint === "input" ||
|
|
590
|
+
node.interactionHint === "link"
|
|
591
|
+
? 1
|
|
592
|
+
: 0),
|
|
593
|
+
};
|
|
594
|
+
return node.children.reduce((acc, child) => collectIrStats(child, acc), next);
|
|
595
|
+
}
|
|
596
|
+
function screenNeedsVisionAugmentation(ir, baseline) {
|
|
597
|
+
const stats = collectIrStats(ir.root, {
|
|
598
|
+
imageFillCount: 0,
|
|
599
|
+
textNodeCount: 0,
|
|
600
|
+
semanticNodeCount: 0,
|
|
601
|
+
});
|
|
602
|
+
const structuralItems = baseline.items.filter((item) => item.category !== "screen-render").length;
|
|
603
|
+
return (stats.imageFillCount > 0 ||
|
|
604
|
+
stats.textNodeCount === 0 ||
|
|
605
|
+
stats.semanticNodeCount === 0 ||
|
|
606
|
+
structuralItems === 0);
|
|
607
|
+
}
|
|
608
|
+
function figmaVisionRequest(record, screen, baselineText) {
|
|
609
|
+
return {
|
|
610
|
+
snapshotRunId: record.runId,
|
|
550
611
|
screenId: screen.screenId,
|
|
612
|
+
image: screen.image,
|
|
551
613
|
imageRelativePath: screen.image.relativePath,
|
|
552
614
|
baselineText,
|
|
553
|
-
}
|
|
554
|
-
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
function mergeFigmaVisionHints(baselineText, hints) {
|
|
618
|
+
return {
|
|
619
|
+
text: QualityIntelligenceFigma.mergeVisionHints(baselineText, hints).text,
|
|
620
|
+
fingerprintText: baselineText,
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
/** Vision-augment one screen's baseline text without ever overriding it (additive only). */
|
|
624
|
+
function visionAugmentedScreenText(baseline, ir, record, screen, vision) {
|
|
625
|
+
const baselineText = QualityIntelligenceFigma.renderBaselineText(baseline);
|
|
626
|
+
if (vision === undefined || !screenNeedsVisionAugmentation(ir, baseline)) {
|
|
627
|
+
return { text: baselineText, fingerprintText: baselineText };
|
|
628
|
+
}
|
|
629
|
+
const hints = vision(figmaVisionRequest(record, screen, baselineText));
|
|
630
|
+
return isPromiseLike(hints)
|
|
631
|
+
? { text: baselineText, fingerprintText: baselineText }
|
|
632
|
+
: mergeFigmaVisionHints(baselineText, hints);
|
|
633
|
+
}
|
|
634
|
+
async function visionAugmentedScreenTextAsync(baseline, ir, record, screen, vision) {
|
|
635
|
+
const baselineText = QualityIntelligenceFigma.renderBaselineText(baseline);
|
|
636
|
+
if (vision === undefined || !screenNeedsVisionAugmentation(ir, baseline)) {
|
|
637
|
+
return { text: baselineText, fingerprintText: baselineText };
|
|
638
|
+
}
|
|
639
|
+
const hints = await vision(figmaVisionRequest(record, screen, baselineText));
|
|
640
|
+
return mergeFigmaVisionHints(baselineText, hints);
|
|
555
641
|
}
|
|
556
642
|
// Parse every screen's opaque irJson once; an unparseable screen is dropped (never crashes the run).
|
|
557
643
|
function parseScreens(record) {
|
|
@@ -583,6 +669,49 @@ function navItemsByScreen(parsed, links) {
|
|
|
583
669
|
function a11yItemsByScreen(parsed) {
|
|
584
670
|
return QualityIntelligenceFigma.deriveA11yTestItemsByScreen(parsed.map((p) => p.ir));
|
|
585
671
|
}
|
|
672
|
+
function figmaDocumentId(screenId, screenName) {
|
|
673
|
+
// Correct order (the #734 strip-before-redact rule): strip format chars first to
|
|
674
|
+
// de-obfuscate any zero-width-split secret, then redact (now catches raw AND ZW-split
|
|
675
|
+
// secrets → emits "[REDACTED]"), then sanitiseLabel for display safety (collapses
|
|
676
|
+
// newlines, URLs, paths). Mirrors redactFigmaAtomText = redact(stripUnsafeFormatChars)
|
|
677
|
+
// below, with sanitiseLabel as the final display-safe step.
|
|
678
|
+
const safeName = sanitiseLabel(redact(stripUnsafeFormatChars(screenName)));
|
|
679
|
+
return `${screenId} (${truncateToUtf8Bytes(safeName, MAX_LABEL_CHARS)})`;
|
|
680
|
+
}
|
|
681
|
+
// Strip Unicode bidi-override / zero-width / C1 spoofing code points from the untrusted Figma-derived
|
|
682
|
+
// atom text BEFORE secret redaction. Two reasons for this order (the #734 strip-before-redact rule):
|
|
683
|
+
// stripping first DE-OBFUSCATES a zero-width-split secret so the redactor can still match it, and it
|
|
684
|
+
// removes the bidi/zero-width chars that would otherwise ride a Figma screen name or prototype trigger
|
|
685
|
+
// verbatim into the QI atom text and every downstream export (bidi-spoofing of generated test titles).
|
|
686
|
+
// Symmetric with the candidate-text path (buildRequirementExcerpt) and the source-label path
|
|
687
|
+
// (sanitiseLabel / stripUnsafeLabelChars). TAB/LF/CR are preserved so the multi-line baseline structure
|
|
688
|
+
// stays intact; clean inputs are byte-identical, so the atom hash and budget accounting are unchanged.
|
|
689
|
+
const redactFigmaAtomText = (text) => redact(stripUnsafeFormatChars(text));
|
|
690
|
+
function consumeVisionProviderForScreen(vision, remainingVisionScreens, ir, baseline) {
|
|
691
|
+
if (vision === undefined ||
|
|
692
|
+
remainingVisionScreens <= 0 ||
|
|
693
|
+
!screenNeedsVisionAugmentation(ir, baseline)) {
|
|
694
|
+
return { provider: undefined, remaining: remainingVisionScreens };
|
|
695
|
+
}
|
|
696
|
+
return { provider: vision, remaining: remainingVisionScreens - 1 };
|
|
697
|
+
}
|
|
698
|
+
function corpusDocFromFigmaScreen(row, ir, augmented, perDocBudget) {
|
|
699
|
+
const capped = truncateToUtf8Bytes(redactFigmaAtomText(augmented.text), perDocBudget);
|
|
700
|
+
if (capped.trim().length === 0)
|
|
701
|
+
return undefined;
|
|
702
|
+
const fingerprintText = truncateToUtf8Bytes(redactFigmaAtomText(augmented.fingerprintText), perDocBudget);
|
|
703
|
+
return {
|
|
704
|
+
doc: {
|
|
705
|
+
documentId: figmaDocumentId(row.screenId, ir.name),
|
|
706
|
+
text: capped,
|
|
707
|
+
fingerprintText,
|
|
708
|
+
},
|
|
709
|
+
bytes: utf8ByteLength(capped),
|
|
710
|
+
};
|
|
711
|
+
}
|
|
712
|
+
function figmaDocFitsBudget(docs, totalBytes, nextBytes, perRunBudget) {
|
|
713
|
+
return docs.length === 0 || totalBytes + nextBytes <= perRunBudget;
|
|
714
|
+
}
|
|
586
715
|
// Derive the redacted, budget-capped canonical text for every parseable screen. Each screen's
|
|
587
716
|
// deterministic structural baseline (#754) is augmented additively with its navigation/flow test
|
|
588
717
|
// items (#811) AND its accessibility test items (#812) — concatenated, neither replacing the other —
|
|
@@ -601,18 +730,45 @@ function figmaScreenDocs(record, vision, byteBudget) {
|
|
|
601
730
|
const a11yItems = a11yItemsByScreen(parsed);
|
|
602
731
|
const docs = [];
|
|
603
732
|
let totalBytes = 0;
|
|
733
|
+
let remainingVisionScreens = MAX_FIGMA_VISION_AUGMENTED_SCREENS;
|
|
604
734
|
for (const { row, ir } of parsed) {
|
|
605
735
|
const extraItems = [...(navItems.get(ir.id) ?? []), ...(a11yItems.get(ir.id) ?? [])];
|
|
606
736
|
const baseline = QualityIntelligenceFigma.deriveScreenTestBaseline(ir, extraItems);
|
|
607
|
-
const
|
|
608
|
-
|
|
609
|
-
|
|
737
|
+
const visionSlot = consumeVisionProviderForScreen(vision, remainingVisionScreens, ir, baseline);
|
|
738
|
+
remainingVisionScreens = visionSlot.remaining;
|
|
739
|
+
const augmented = visionAugmentedScreenText(baseline, ir, record, row, visionSlot.provider);
|
|
740
|
+
const nextDoc = corpusDocFromFigmaScreen(row, ir, augmented, perDocBudget);
|
|
741
|
+
if (nextDoc === undefined)
|
|
610
742
|
continue;
|
|
611
|
-
|
|
612
|
-
if (docs.length > 0 && totalBytes + bytes > perRunBudget)
|
|
743
|
+
if (!figmaDocFitsBudget(docs, totalBytes, nextDoc.bytes, perRunBudget))
|
|
613
744
|
break;
|
|
614
|
-
docs.push(
|
|
615
|
-
totalBytes += bytes;
|
|
745
|
+
docs.push(nextDoc.doc);
|
|
746
|
+
totalBytes += nextDoc.bytes;
|
|
747
|
+
}
|
|
748
|
+
return docs;
|
|
749
|
+
}
|
|
750
|
+
async function figmaScreenDocsAsync(record, vision, byteBudget) {
|
|
751
|
+
const perRunBudget = Math.min(CAPSULE_BUDGET_BYTES, byteBudget);
|
|
752
|
+
const perDocBudget = Math.min(CAPSULE_MAX_BYTES_PER_DOCUMENT, perRunBudget);
|
|
753
|
+
const parsed = parseScreens(record);
|
|
754
|
+
const navItems = navItemsByScreen(parsed, record.links ?? []);
|
|
755
|
+
const a11yItems = a11yItemsByScreen(parsed);
|
|
756
|
+
const docs = [];
|
|
757
|
+
let totalBytes = 0;
|
|
758
|
+
let remainingVisionScreens = MAX_FIGMA_VISION_AUGMENTED_SCREENS;
|
|
759
|
+
for (const { row, ir } of parsed) {
|
|
760
|
+
const extraItems = [...(navItems.get(ir.id) ?? []), ...(a11yItems.get(ir.id) ?? [])];
|
|
761
|
+
const baseline = QualityIntelligenceFigma.deriveScreenTestBaseline(ir, extraItems);
|
|
762
|
+
const visionSlot = consumeVisionProviderForScreen(vision, remainingVisionScreens, ir, baseline);
|
|
763
|
+
remainingVisionScreens = visionSlot.remaining;
|
|
764
|
+
const augmented = await visionAugmentedScreenTextAsync(baseline, ir, record, row, visionSlot.provider);
|
|
765
|
+
const nextDoc = corpusDocFromFigmaScreen(row, ir, augmented, perDocBudget);
|
|
766
|
+
if (nextDoc === undefined)
|
|
767
|
+
continue;
|
|
768
|
+
if (!figmaDocFitsBudget(docs, totalBytes, nextDoc.bytes, perRunBudget))
|
|
769
|
+
break;
|
|
770
|
+
docs.push(nextDoc.doc);
|
|
771
|
+
totalBytes += nextDoc.bytes;
|
|
616
772
|
}
|
|
617
773
|
return docs;
|
|
618
774
|
}
|
|
@@ -629,7 +785,7 @@ function ingestFigmaSnapshot(source, index, registeredAt, loader, vision, byteBu
|
|
|
629
785
|
if (docs.length === 0) {
|
|
630
786
|
throw new QiIngestionError("QI_SOURCE_EMPTY", `Figma snapshot "${label}" produced no usable screen baseline.`);
|
|
631
787
|
}
|
|
632
|
-
const
|
|
788
|
+
const joinedFingerprintText = docs.map((d) => d.fingerprintText ?? d.text).join("\n");
|
|
633
789
|
const envelopeId = envelopeIdFor(index, label, source.snapshotRunId);
|
|
634
790
|
// A stored Figma Snapshot is figma evidence, not repository context. Use the dedicated
|
|
635
791
|
// `figma-evidence` envelope kind (#278 AC2 "represented as an explicit connector-backed source"
|
|
@@ -642,11 +798,40 @@ function ingestFigmaSnapshot(source, index, registeredAt, loader, vision, byteBu
|
|
|
642
798
|
provenance: {
|
|
643
799
|
origin: `figma-snapshot:${source.snapshotRunId}`,
|
|
644
800
|
registeredAt,
|
|
645
|
-
integrityHashSha256Hex: sha256Hex(
|
|
801
|
+
integrityHashSha256Hex: sha256Hex(joinedFingerprintText),
|
|
646
802
|
},
|
|
647
803
|
localRef: stableLocalRef("figma-snapshot", source.snapshotRunId),
|
|
648
804
|
};
|
|
649
|
-
const atoms = docs.map((d) => capsuleDocAtom(d.documentId, d.text, envelopeId));
|
|
805
|
+
const atoms = docs.map((d) => capsuleDocAtom(d.documentId, d.text, envelopeId, d.fingerprintText ?? d.text));
|
|
806
|
+
return { envelope, atoms };
|
|
807
|
+
}
|
|
808
|
+
async function ingestFigmaSnapshotAsync(source, index, registeredAt, loader, vision, byteBudget) {
|
|
809
|
+
const label = sanitiseLabel(source.label);
|
|
810
|
+
const record = loader(source.snapshotRunId);
|
|
811
|
+
if (record === undefined) {
|
|
812
|
+
throw new QiIngestionError("QI_FIGMA_SNAPSHOT_UNAVAILABLE", `Figma snapshot "${label}" could not be found or read. Build the snapshot first.`);
|
|
813
|
+
}
|
|
814
|
+
if (record.screens.length === 0) {
|
|
815
|
+
throw new QiIngestionError("QI_SOURCE_EMPTY", `Figma snapshot "${label}" has no screens.`);
|
|
816
|
+
}
|
|
817
|
+
const docs = await figmaScreenDocsAsync(record, vision, byteBudget);
|
|
818
|
+
if (docs.length === 0) {
|
|
819
|
+
throw new QiIngestionError("QI_SOURCE_EMPTY", `Figma snapshot "${label}" produced no usable screen baseline.`);
|
|
820
|
+
}
|
|
821
|
+
const joinedFingerprintText = docs.map((d) => d.fingerprintText ?? d.text).join("\n");
|
|
822
|
+
const envelopeId = envelopeIdFor(index, label, source.snapshotRunId);
|
|
823
|
+
const envelope = {
|
|
824
|
+
id: envelopeId,
|
|
825
|
+
kind: "figma-evidence",
|
|
826
|
+
displayLabel: label,
|
|
827
|
+
provenance: {
|
|
828
|
+
origin: `figma-snapshot:${source.snapshotRunId}`,
|
|
829
|
+
registeredAt,
|
|
830
|
+
integrityHashSha256Hex: sha256Hex(joinedFingerprintText),
|
|
831
|
+
},
|
|
832
|
+
localRef: stableLocalRef("figma-snapshot", source.snapshotRunId),
|
|
833
|
+
};
|
|
834
|
+
const atoms = docs.map((d) => capsuleDocAtom(d.documentId, d.text, envelopeId, d.fingerprintText ?? d.text));
|
|
650
835
|
return { envelope, atoms };
|
|
651
836
|
}
|
|
652
837
|
function ingestOne(source, index, registeredAt, capsuleResolver, figmaSnapshotLoader, figmaVision, byteBudget) {
|
|
@@ -674,6 +859,15 @@ function ingestOne(source, index, registeredAt, capsuleResolver, figmaSnapshotLo
|
|
|
674
859
|
return ingestFigmaSnapshot(source, index, registeredAt, figmaSnapshotLoader, figmaVision, byteBudget);
|
|
675
860
|
}
|
|
676
861
|
}
|
|
862
|
+
async function ingestOneAsync(source, index, registeredAt, capsuleResolver, figmaSnapshotLoader, figmaVision, byteBudget) {
|
|
863
|
+
if (source.kind !== "figma-snapshot") {
|
|
864
|
+
return ingestOne(source, index, registeredAt, capsuleResolver, figmaSnapshotLoader, figmaVision, byteBudget);
|
|
865
|
+
}
|
|
866
|
+
if (figmaSnapshotLoader === undefined) {
|
|
867
|
+
throw new QiIngestionError("QI_FIGMA_SNAPSHOT_UNAVAILABLE", "Figma-snapshot sources are unavailable: the evidence directory is not configured.");
|
|
868
|
+
}
|
|
869
|
+
return ingestFigmaSnapshotAsync(source, index, registeredAt, figmaSnapshotLoader, figmaVision, byteBudget);
|
|
870
|
+
}
|
|
677
871
|
/**
|
|
678
872
|
* Ingest one source into the accumulator (Epic #729 N+1 resilience). On a per-source QiIngestionError
|
|
679
873
|
* the source is recorded as skipped and ingestion continues with the rest; a genuine (non-coded) bug
|
|
@@ -708,6 +902,56 @@ function ingestSourceInto(acc, source, index, input, budgets) {
|
|
|
708
902
|
atomCount: taken.length,
|
|
709
903
|
});
|
|
710
904
|
}
|
|
905
|
+
async function ingestSourceIntoAsync(acc, source, index, input, budgets) {
|
|
906
|
+
let ingested;
|
|
907
|
+
try {
|
|
908
|
+
ingested = await ingestOneAsync(source, index, input.registeredAt, input.capsuleResolver, input.figmaSnapshotLoader, input.figmaVision, budgets.byteBudget);
|
|
909
|
+
}
|
|
910
|
+
catch (error) {
|
|
911
|
+
if (!(error instanceof QiIngestionError))
|
|
912
|
+
throw error;
|
|
913
|
+
acc.firstSkipError ??= error;
|
|
914
|
+
acc.skippedSources.push({
|
|
915
|
+
label: sanitiseLabel(source.label),
|
|
916
|
+
kind: source.kind,
|
|
917
|
+
code: error.code,
|
|
918
|
+
message: error.message,
|
|
919
|
+
});
|
|
920
|
+
return;
|
|
921
|
+
}
|
|
922
|
+
const { envelope, atoms } = ingested;
|
|
923
|
+
const take = Math.min(budgets.atomBudget, MAX_TOTAL_ATOMS - acc.ingestedAtoms.length);
|
|
924
|
+
const taken = take <= 0 ? [] : atoms.slice(0, take);
|
|
925
|
+
acc.envelopes.push(envelope);
|
|
926
|
+
acc.ingestedAtoms.push(...taken);
|
|
927
|
+
acc.sourceSummaries.push({
|
|
928
|
+
label: envelope.displayLabel,
|
|
929
|
+
kind: source.kind,
|
|
930
|
+
atomCount: taken.length,
|
|
931
|
+
});
|
|
932
|
+
}
|
|
933
|
+
function emptyDriftIngestionResult(input, droppedSourceCount, skippedSources) {
|
|
934
|
+
return {
|
|
935
|
+
envelopes: [],
|
|
936
|
+
ingestedAtoms: [],
|
|
937
|
+
provenanceRefs: {
|
|
938
|
+
envelopeIds: [],
|
|
939
|
+
auditSummaryId: auditSummaryIdFor(input.runId),
|
|
940
|
+
},
|
|
941
|
+
sourceSummaries: [],
|
|
942
|
+
droppedSourceCount,
|
|
943
|
+
skippedSources,
|
|
944
|
+
};
|
|
945
|
+
}
|
|
946
|
+
function allowEmptyDriftIngestion(input, acc, droppedSourceCount) {
|
|
947
|
+
if (input.allowEmpty !== true)
|
|
948
|
+
return undefined;
|
|
949
|
+
const blockingSkip = acc.skippedSources.find((source) => source.code !== "QI_SOURCE_EMPTY");
|
|
950
|
+
if (blockingSkip !== undefined) {
|
|
951
|
+
throw new QiIngestionError(blockingSkip.code, blockingSkip.message);
|
|
952
|
+
}
|
|
953
|
+
return emptyDriftIngestionResult(input, droppedSourceCount, acc.skippedSources);
|
|
954
|
+
}
|
|
711
955
|
export function ingestInlineSources(input) {
|
|
712
956
|
// Read through the typed property in the loop: `Array.isArray` would widen a local binding of the
|
|
713
957
|
// readonly union array to `any[]`, so the guard checks length on the typed property directly.
|
|
@@ -742,6 +986,51 @@ export function ingestInlineSources(input) {
|
|
|
742
986
|
ingestSourceInto(acc, source, i, input, budgets);
|
|
743
987
|
}
|
|
744
988
|
if (acc.ingestedAtoms.length === 0) {
|
|
989
|
+
const emptyDrift = allowEmptyDriftIngestion(input, acc, droppedSourceCount);
|
|
990
|
+
if (emptyDrift !== undefined)
|
|
991
|
+
return emptyDrift;
|
|
992
|
+
throw (acc.firstSkipError ??
|
|
993
|
+
new QiIngestionError("QI_SOURCE_EMPTY", "No usable evidence was produced from the sources."));
|
|
994
|
+
}
|
|
995
|
+
return {
|
|
996
|
+
envelopes: acc.envelopes,
|
|
997
|
+
ingestedAtoms: acc.ingestedAtoms,
|
|
998
|
+
provenanceRefs: {
|
|
999
|
+
envelopeIds: acc.envelopes.map((e) => String(e.id)),
|
|
1000
|
+
auditSummaryId: auditSummaryIdFor(input.runId),
|
|
1001
|
+
},
|
|
1002
|
+
sourceSummaries: acc.sourceSummaries,
|
|
1003
|
+
droppedSourceCount,
|
|
1004
|
+
skippedSources: acc.skippedSources,
|
|
1005
|
+
};
|
|
1006
|
+
}
|
|
1007
|
+
export async function ingestInlineSourcesAsync(input) {
|
|
1008
|
+
const allSources = input.request.sources;
|
|
1009
|
+
if (allSources.length === 0) {
|
|
1010
|
+
throw new QiIngestionError("QI_NO_SOURCES", "At least one source is required to start a run.");
|
|
1011
|
+
}
|
|
1012
|
+
const sources = allSources.slice(0, MAX_QI_SOURCES);
|
|
1013
|
+
const droppedSourceCount = allSources.length - sources.length;
|
|
1014
|
+
const budgets = {
|
|
1015
|
+
atomBudget: perSourceAtomBudget(MAX_TOTAL_ATOMS, sources.length),
|
|
1016
|
+
byteBudget: perSourceByteBudget(sources.length),
|
|
1017
|
+
};
|
|
1018
|
+
const acc = {
|
|
1019
|
+
envelopes: [],
|
|
1020
|
+
ingestedAtoms: [],
|
|
1021
|
+
sourceSummaries: [],
|
|
1022
|
+
skippedSources: [],
|
|
1023
|
+
};
|
|
1024
|
+
for (let i = 0; i < sources.length; i += 1) {
|
|
1025
|
+
const source = sources[i];
|
|
1026
|
+
if (source === undefined)
|
|
1027
|
+
continue;
|
|
1028
|
+
await ingestSourceIntoAsync(acc, source, i, input, budgets);
|
|
1029
|
+
}
|
|
1030
|
+
if (acc.ingestedAtoms.length === 0) {
|
|
1031
|
+
const emptyDrift = allowEmptyDriftIngestion(input, acc, droppedSourceCount);
|
|
1032
|
+
if (emptyDrift !== undefined)
|
|
1033
|
+
return emptyDrift;
|
|
745
1034
|
throw (acc.firstSkipError ??
|
|
746
1035
|
new QiIngestionError("QI_SOURCE_EMPTY", "No usable evidence was produced from the sources."));
|
|
747
1036
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/runRoutes.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAKV,mCAAmC,
|
|
1
|
+
{"version":3,"file":"runRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/runRoutes.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAKV,mCAAmC,EAGpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,IAAI,EAAE,EAAE,MAAM,+BAA+B,CAAC;AAG/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;AA+N1D,wBAAgB,aAAa,CAC3B,KAAK,EAAE,EAAE,CAAC,2BAA2B,EACrC,MAAM,EAAE,QAAQ,GACf,mCAAmC,CAgBrC;AA8ED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,CAAC,CAoBzB;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,WAAW,CAStF;AAED,eAAO,MAAM,4BAA4B,EAAE,SAAS,eAAe,EAOlE,CAAC"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { randomUUID } from "node:crypto";
|
|
11
11
|
import { isAbsolute } from "node:path";
|
|
12
12
|
import { SSE_HEADERS } from "../sse.js";
|
|
13
|
+
import { writeOrDestroy } from "../sse-write.js";
|
|
13
14
|
import { STREAMING, } from "../routes.js";
|
|
14
15
|
import { executeQiRun, QiGenerationError, QiIngestionError } from "./runExecution.js";
|
|
15
16
|
import { qiRunRegistry } from "./runRegistry.js";
|
|
@@ -212,6 +213,13 @@ function classifyStartError(error) {
|
|
|
212
213
|
}
|
|
213
214
|
return { code: "QI_RUN_FAILED", message: "The Quality Intelligence run failed to complete." };
|
|
214
215
|
}
|
|
216
|
+
// Project the internal QiSkippedSource[] (which also carries a free-text `message`) to exactly the
|
|
217
|
+
// wire contract QualityIntelligenceSkippedSource[] ({label, kind, code}). Streaming `message`
|
|
218
|
+
// verbatim would widen the browser-facing SSE surface — the `accepted` frame bypasses deps.redactor,
|
|
219
|
+
// unlike `event` — so it is dropped here (Issue #730).
|
|
220
|
+
function toWireSkippedSources(skipped) {
|
|
221
|
+
return skipped.map((s) => ({ label: s.label, kind: s.kind, code: s.code }));
|
|
222
|
+
}
|
|
215
223
|
async function streamRunExecution(deps, request, runId, registeredAt, signal, write) {
|
|
216
224
|
const totals = { candidates: 0, findings: 0, exports: 0 };
|
|
217
225
|
let terminal = "failed";
|
|
@@ -233,7 +241,7 @@ async function streamRunExecution(deps, request, runId, registeredAt, signal, wr
|
|
|
233
241
|
? { droppedSourceCount: accepted.droppedSourceCount }
|
|
234
242
|
: {}),
|
|
235
243
|
...(accepted.skippedSources.length > 0
|
|
236
|
-
? { skippedSources: accepted.skippedSources }
|
|
244
|
+
? { skippedSources: toWireSkippedSources(accepted.skippedSources) }
|
|
237
245
|
: {}),
|
|
238
246
|
});
|
|
239
247
|
},
|
|
@@ -263,14 +271,16 @@ export async function handleStartQiRun(ctx, deps) {
|
|
|
263
271
|
return parsed.result;
|
|
264
272
|
const runId = `qi-run-${randomUUID()}`;
|
|
265
273
|
const registeredAt = new Date().toISOString();
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
ctx.res.write(`data: ${JSON.stringify(message)}\n\n`);
|
|
269
|
-
};
|
|
274
|
+
// Register and wire the disconnect listener BEFORE writeHead to close the narrow race where a
|
|
275
|
+
// client disconnects after parsing succeeds but before the response is committed.
|
|
270
276
|
const controller = qiRunRegistry.register(runId, registeredAt);
|
|
271
277
|
ctx.res.on("close", () => {
|
|
272
278
|
controller.abort();
|
|
273
279
|
});
|
|
280
|
+
ctx.res.writeHead(200, { ...SSE_HEADERS, "X-Accel-Buffering": "no" });
|
|
281
|
+
const write = (message) => {
|
|
282
|
+
writeOrDestroy(ctx.res, `data: ${JSON.stringify(message)}\n\n`, controller);
|
|
283
|
+
};
|
|
274
284
|
await streamRunExecution(deps, parsed.request, runId, registeredAt, controller.signal, write);
|
|
275
285
|
ctx.res.end();
|
|
276
286
|
return STREAMING;
|
package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traceabilityRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/traceabilityRoutes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"traceabilityRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/traceabilityRoutes.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyHhD,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CA+CtB;AAED,eAAO,MAAM,2BAA2B,EAAE,SAAS,eAAe,EAMjE,CAAC"}
|