@oscharko-dev/keiko 0.2.0-beta.5 → 0.2.0-beta.7
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 +165 -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 → frhs0YcUqCPLHal-wHjDP}/_buildManifest.js +0 -0
- /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → frhs0YcUqCPLHal-wHjDP}/_clientMiddlewareManifest.js +0 -0
- /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → frhs0YcUqCPLHal-wHjDP}/_ssgManifest.js +0 -0
package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js
CHANGED
|
@@ -14,10 +14,12 @@
|
|
|
14
14
|
// `redactQualityIntelligenceEvidence` before write. The token is never present by construction
|
|
15
15
|
// (the server builder never places it on the in-memory snapshot); redaction is defense-in-depth.
|
|
16
16
|
//
|
|
17
|
-
// Integrity: load() recomputes
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
// `
|
|
17
|
+
// Integrity: load() recomputes each persisted screen hash from the stored, redacted IR + image
|
|
18
|
+
// sha256, verifies each PNG side-file against the stored sha256/byteLength, and then recomputes the
|
|
19
|
+
// snapshot integrity hash. Tampered or truncated records are rejected at the read boundary. The
|
|
20
|
+
// optional artifacts (`links`, `tokens`, `metrics`) stay out of the drift hash but carry separate
|
|
21
|
+
// artifact hashes when present; old un-hashed optional artifacts are omitted on load instead of being
|
|
22
|
+
// trusted.
|
|
21
23
|
//
|
|
22
24
|
// Retention: `enforceFigmaSnapshotRetention` deletes snapshot records + their side-file dirs in
|
|
23
25
|
// lock-step with the provided policy. Wiring: call it where the other QI retention enforcement
|
|
@@ -27,7 +29,7 @@
|
|
|
27
29
|
// files) that have no matching record. It is lazy/once — the store calls it on first use so stale
|
|
28
30
|
// dirs from a previously interrupted record() are cleaned up without a separate boot step.
|
|
29
31
|
import { createHash, randomUUID } from "node:crypto";
|
|
30
|
-
import { chmodSync, lstatSync, mkdirSync, readdirSync, readFileSync,
|
|
32
|
+
import { chmodSync, linkSync, lstatSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
|
|
31
33
|
import { join } from "node:path";
|
|
32
34
|
import { assertContainedRealPath, resolveWithinWorkspace, } from "@oscharko-dev/keiko-workspace";
|
|
33
35
|
import { nodeWorkspaceFs } from "@oscharko-dev/keiko-workspace/internal/fs";
|
|
@@ -40,9 +42,12 @@ import { FIGMA_SNAPSHOT_SCHEMA_VERSION, validateFigmaSnapshotRecord, } from "./s
|
|
|
40
42
|
const QI_DIR_MODE = 0o700;
|
|
41
43
|
const SNAPSHOT_SUFFIX = ".figma-snapshot.json";
|
|
42
44
|
const SIDE_FILE_SUBDIR = "figma-snapshots";
|
|
45
|
+
const MAX_SIDE_FILE_NAME_LENGTH = 128;
|
|
46
|
+
const SIDE_FILE_NAME_PATTERN = /^[A-Za-z0-9._-]+$/u;
|
|
43
47
|
// ─── Integrity hash (mirrors figmaSnapshotHash.ts — inlined so keiko-evidence does not depend
|
|
44
48
|
// on the private keiko-server package). MUST stay bit-identical with the server builder. ────
|
|
45
49
|
const sha256Hex = (input) => createHash("sha256").update(input, "utf8").digest("hex");
|
|
50
|
+
const sha256Bytes = (input) => createHash("sha256").update(input).digest("hex");
|
|
46
51
|
// Stable stringify: keys emitted in sorted order at every depth (mirrors canonical() in hash.ts).
|
|
47
52
|
function canonical(value) {
|
|
48
53
|
if (value === undefined)
|
|
@@ -57,6 +62,50 @@ function canonical(value) {
|
|
|
57
62
|
.map((key) => `${JSON.stringify(key)}:${canonical(record[key])}`);
|
|
58
63
|
return `{${entries.join(",")}}`;
|
|
59
64
|
}
|
|
65
|
+
const hashArtifact = (value) => sha256Hex(canonical(value));
|
|
66
|
+
// Hash-neutral IR projection (mirrors figmaSnapshotHash.ts in keiko-server). The store accepts
|
|
67
|
+
// `irJson` as opaque JSON, so malformed legacy/tampered shapes fall back to the raw JSON projection;
|
|
68
|
+
// valid Screen-IR gets the exact same hash-neutral field pruning as the builder.
|
|
69
|
+
const HASH_NEUTRAL_IR_KEYS = new Set([
|
|
70
|
+
"textColor",
|
|
71
|
+
"backgroundColor",
|
|
72
|
+
"layout",
|
|
73
|
+
"sizing",
|
|
74
|
+
"cornerRadius",
|
|
75
|
+
"typography",
|
|
76
|
+
]);
|
|
77
|
+
const isJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
78
|
+
const stripHashNeutralChild = (child) => isJsonObject(child) ? stripHashNeutralFields(child) : child;
|
|
79
|
+
const stripHashNeutralFields = (node) => {
|
|
80
|
+
const entries = Object.entries(node).filter(([key]) => key !== "children" && !HASH_NEUTRAL_IR_KEYS.has(key));
|
|
81
|
+
const rawChildren = node.children;
|
|
82
|
+
return {
|
|
83
|
+
...Object.fromEntries(entries),
|
|
84
|
+
children: Array.isArray(rawChildren)
|
|
85
|
+
? rawChildren.map(stripHashNeutralChild)
|
|
86
|
+
: [],
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
const hashStableIr = (irJson) => {
|
|
90
|
+
if (!isJsonObject(irJson) || !isJsonObject(irJson.root))
|
|
91
|
+
return irJson;
|
|
92
|
+
return { ...irJson, root: stripHashNeutralFields(irJson.root) };
|
|
93
|
+
};
|
|
94
|
+
const recomputeScreenIntegrityHash = (screen) => sha256Hex(canonical({
|
|
95
|
+
imageSha256: screen.image.sha256,
|
|
96
|
+
ir: hashStableIr(screen.irJson),
|
|
97
|
+
screenId: screen.screenId,
|
|
98
|
+
}));
|
|
99
|
+
const artifactHashesFor = (record) => {
|
|
100
|
+
const hashes = {
|
|
101
|
+
...(record.links !== undefined ? { links: hashArtifact(record.links) } : {}),
|
|
102
|
+
...(record.tokens !== undefined ? { tokens: hashArtifact(record.tokens) } : {}),
|
|
103
|
+
...(record.metrics !== undefined ? { metrics: hashArtifact(record.metrics) } : {}),
|
|
104
|
+
};
|
|
105
|
+
return hashes.links === undefined && hashes.tokens === undefined && hashes.metrics === undefined
|
|
106
|
+
? undefined
|
|
107
|
+
: hashes;
|
|
108
|
+
};
|
|
60
109
|
// Recompute the snapshot-level integrity hash from a loaded record.
|
|
61
110
|
// This exactly mirrors hashSnapshot() in figmaSnapshotHash.ts:
|
|
62
111
|
// sha256( canonical({ screens: sorted [{integrityHash,screenId}], snapshotSchemaVersion, version }) )
|
|
@@ -71,6 +120,50 @@ function recomputeSnapshotIntegrityHash(record) {
|
|
|
71
120
|
version: record.provenance.version ?? null,
|
|
72
121
|
}));
|
|
73
122
|
}
|
|
123
|
+
const rehashRecord = (record) => {
|
|
124
|
+
const screens = record.screens.map((screen) => ({
|
|
125
|
+
...screen,
|
|
126
|
+
integrityHash: recomputeScreenIntegrityHash(screen),
|
|
127
|
+
}));
|
|
128
|
+
const rehashed = { ...record, screens };
|
|
129
|
+
return { ...rehashed, integrityHash: recomputeSnapshotIntegrityHash(rehashed) };
|
|
130
|
+
};
|
|
131
|
+
const EXTERNAL_LINK_TARGET = /^(?:[a-z][a-z0-9+.-]*:\/\/|mailto:|tel:|data:|javascript:)/iu;
|
|
132
|
+
const isExternalLinkTarget = (targetNodeId) => targetNodeId.startsWith("url:") || EXTERNAL_LINK_TARGET.test(targetNodeId);
|
|
133
|
+
const safeLinkRows = (links) => links?.filter((link) => !isExternalLinkTarget(link.targetNodeId));
|
|
134
|
+
const omitUnverifiedArtifacts = (record, omitLinks, omitTokens, omitMetrics) => {
|
|
135
|
+
if (!omitLinks && !omitTokens && !omitMetrics)
|
|
136
|
+
return record;
|
|
137
|
+
const omitted = new Set([
|
|
138
|
+
...(omitLinks ? ["links"] : []),
|
|
139
|
+
...(omitTokens ? ["tokens"] : []),
|
|
140
|
+
...(omitMetrics ? ["metrics"] : []),
|
|
141
|
+
]);
|
|
142
|
+
return Object.fromEntries(Object.entries(record).filter(([key]) => !omitted.has(key)));
|
|
143
|
+
};
|
|
144
|
+
function verifyArtifactHash(kind, value, actualHash, runId) {
|
|
145
|
+
if (value === undefined) {
|
|
146
|
+
if (actualHash !== undefined) {
|
|
147
|
+
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: ${kind} artifact missing`);
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
if (actualHash === undefined)
|
|
152
|
+
return true;
|
|
153
|
+
if (actualHash !== hashArtifact(value)) {
|
|
154
|
+
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: ${kind} artifact hash mismatch`);
|
|
155
|
+
}
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
function verifyOptionalArtifactHashes(record, runId) {
|
|
159
|
+
const actual = record.artifactHashes;
|
|
160
|
+
const omitLinks = verifyArtifactHash("links", record.links, actual?.links, runId);
|
|
161
|
+
const omitTokens = verifyArtifactHash("tokens", record.tokens, actual?.tokens, runId);
|
|
162
|
+
const omitMetrics = verifyArtifactHash("metrics", record.metrics, actual?.metrics, runId);
|
|
163
|
+
// Older records predate artifact hashes. The optional fields remain schema-valid, but we do not
|
|
164
|
+
// trust them for downstream generation without their own tamper evidence.
|
|
165
|
+
return omitUnverifiedArtifacts(record, omitLinks, omitTokens, omitMetrics);
|
|
166
|
+
}
|
|
74
167
|
// ─── Helpers ─────────────────────────────────────────────────────────────────────────────────
|
|
75
168
|
function realBaseForWrite(baseDir, fs) {
|
|
76
169
|
try {
|
|
@@ -102,8 +195,40 @@ function assertSnapshotAbsent(target) {
|
|
|
102
195
|
throw new EvidenceWriteError("Figma snapshot already exists for this run (write-once)");
|
|
103
196
|
}
|
|
104
197
|
}
|
|
105
|
-
|
|
106
|
-
|
|
198
|
+
function runIdFromSnapshotName(name) {
|
|
199
|
+
if (!name.endsWith(SNAPSHOT_SUFFIX))
|
|
200
|
+
return undefined;
|
|
201
|
+
const runId = name.slice(0, -SNAPSHOT_SUFFIX.length);
|
|
202
|
+
try {
|
|
203
|
+
assertValidRunId(runId);
|
|
204
|
+
return runId;
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function snapshotRecordFiles(baseDir) {
|
|
211
|
+
let entries;
|
|
212
|
+
try {
|
|
213
|
+
entries = readdirSync(baseDir, { withFileTypes: true });
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
const files = [];
|
|
219
|
+
for (const entry of entries) {
|
|
220
|
+
if (!entry.isFile() || entry.isSymbolicLink())
|
|
221
|
+
continue;
|
|
222
|
+
const runId = runIdFromSnapshotName(entry.name);
|
|
223
|
+
if (runId === undefined)
|
|
224
|
+
continue;
|
|
225
|
+
files.push({ runId, path: join(baseDir, entry.name) });
|
|
226
|
+
}
|
|
227
|
+
return files;
|
|
228
|
+
}
|
|
229
|
+
// Write-once: create a temp file, then hard-link it into the final target. `linkSync` is the
|
|
230
|
+
// exclusive commit: it fails with EEXIST if another recorder created the target after the
|
|
231
|
+
// pre-check, unlike `rename`, which would overwrite the winner on POSIX.
|
|
107
232
|
function atomicWriteOnce(target, json, randomSuffix) {
|
|
108
233
|
assertSnapshotAbsent(target);
|
|
109
234
|
const temp = `${target}.${randomSuffix()}.tmp`;
|
|
@@ -115,7 +240,16 @@ function atomicWriteOnce(target, json, randomSuffix) {
|
|
|
115
240
|
catch {
|
|
116
241
|
// non-fatal: not every filesystem supports chmod (e.g. Windows)
|
|
117
242
|
}
|
|
118
|
-
|
|
243
|
+
try {
|
|
244
|
+
linkSync(temp, target);
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
if (error.code === "EEXIST") {
|
|
248
|
+
throw new EvidenceWriteError("Figma snapshot already exists for this run (write-once)");
|
|
249
|
+
}
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
252
|
+
rmSync(temp, { force: true });
|
|
119
253
|
}
|
|
120
254
|
catch (error) {
|
|
121
255
|
rmSync(temp, { force: true });
|
|
@@ -145,6 +279,7 @@ function writeScreenSideFiles(sideFileBase, runId, screens, fs, randomSuffix) {
|
|
|
145
279
|
});
|
|
146
280
|
}
|
|
147
281
|
function assembleRecord(input, screenRows) {
|
|
282
|
+
const links = safeLinkRows(input.links);
|
|
148
283
|
const draft = {
|
|
149
284
|
figmaSnapshotSchemaVersion: FIGMA_SNAPSHOT_SCHEMA_VERSION,
|
|
150
285
|
runId: input.runId,
|
|
@@ -158,13 +293,69 @@ function assembleRecord(input, screenRows) {
|
|
|
158
293
|
skippedScreens: input.skippedScreens,
|
|
159
294
|
// Omit `links`/`tokens` entirely when absent so an older snapshot stays byte-minimal and the
|
|
160
295
|
// optional fields never serialise as `undefined` (exactOptionalPropertyTypes-safe).
|
|
161
|
-
...(
|
|
296
|
+
...(links !== undefined ? { links } : {}),
|
|
162
297
|
...(input.tokens !== undefined ? { tokens: input.tokens } : {}),
|
|
298
|
+
...(input.metrics !== undefined ? { metrics: input.metrics } : {}),
|
|
163
299
|
integrityHash: input.integrityHash,
|
|
164
300
|
redactionSummary: { totalStringsScanned: 0, stringsRedacted: 0, patternsMatched: {} },
|
|
165
301
|
};
|
|
166
302
|
const { redacted, summary } = redactQualityIntelligenceEvidence(draft);
|
|
167
|
-
|
|
303
|
+
const rehashed = rehashRecord(redacted);
|
|
304
|
+
const artifactHashes = artifactHashesFor(rehashed);
|
|
305
|
+
return {
|
|
306
|
+
...rehashed,
|
|
307
|
+
...(artifactHashes !== undefined ? { artifactHashes } : {}),
|
|
308
|
+
redactionSummary: summary,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
function isAllowedSideFileName(name) {
|
|
312
|
+
if (name.length === 0 || name.length > MAX_SIDE_FILE_NAME_LENGTH)
|
|
313
|
+
return false;
|
|
314
|
+
return !name.startsWith(".") && SIDE_FILE_NAME_PATTERN.test(name);
|
|
315
|
+
}
|
|
316
|
+
function verifyScreenIntegrity(screen, runId) {
|
|
317
|
+
const expected = recomputeScreenIntegrityHash(screen);
|
|
318
|
+
if (screen.integrityHash !== expected) {
|
|
319
|
+
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: screen ${screen.screenId} hash mismatch`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
function readVerifiedScreenImageSideFile(ctx, runId, image) {
|
|
323
|
+
const name = image.relativePath;
|
|
324
|
+
if (!isAllowedSideFileName(name)) {
|
|
325
|
+
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: invalid image side-file path`);
|
|
326
|
+
}
|
|
327
|
+
const runDir = join(ctx.sideFileBase, runId);
|
|
328
|
+
let realRunDir;
|
|
329
|
+
try {
|
|
330
|
+
realRunDir = ctx.fs.realPath(runDir);
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: image side-file directory missing`);
|
|
334
|
+
}
|
|
335
|
+
const lexical = resolveWithinWorkspace(realRunDir, name);
|
|
336
|
+
const absolute = assertContainedRealPath(ctx.fs, realRunDir, lexical, name);
|
|
337
|
+
const stat = lstatSync(absolute, { throwIfNoEntry: false });
|
|
338
|
+
if (stat === undefined || !stat.isFile() || stat.isSymbolicLink()) {
|
|
339
|
+
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: image side-file missing`);
|
|
340
|
+
}
|
|
341
|
+
const bytes = readFileSync(absolute);
|
|
342
|
+
if (bytes.byteLength !== image.byteLength || sha256Bytes(bytes) !== image.sha256) {
|
|
343
|
+
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: image side-file hash mismatch`);
|
|
344
|
+
}
|
|
345
|
+
return bytes;
|
|
346
|
+
}
|
|
347
|
+
function verifyScreenImageSideFile(ctx, runId, screen) {
|
|
348
|
+
readVerifiedScreenImageSideFile(ctx, runId, screen.image);
|
|
349
|
+
}
|
|
350
|
+
function verifyPersistedScreens(ctx, rec, runId) {
|
|
351
|
+
for (const screen of rec.screens) {
|
|
352
|
+
verifyScreenIntegrity(screen, runId);
|
|
353
|
+
verifyScreenImageSideFile(ctx, runId, screen);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
function verifyPersistedScreenMetadata(rec, runId) {
|
|
357
|
+
for (const screen of rec.screens)
|
|
358
|
+
verifyScreenIntegrity(screen, runId);
|
|
168
359
|
}
|
|
169
360
|
// Parse one raw JSON string from a snapshot record file into a scope entry, or null when the
|
|
170
361
|
// file does not belong to the requested scope or cannot be parsed.
|
|
@@ -246,22 +437,12 @@ export function enforceFigmaSnapshotRetention(evidenceDir, profile) {
|
|
|
246
437
|
if (!dirStat?.isDirectory())
|
|
247
438
|
return;
|
|
248
439
|
// Scan for snapshot records and sort by fetchedAt ascending so we remove the oldest first.
|
|
249
|
-
let entries;
|
|
250
|
-
try {
|
|
251
|
-
entries = readdirSync(qiDir);
|
|
252
|
-
}
|
|
253
|
-
catch {
|
|
254
|
-
return;
|
|
255
|
-
}
|
|
256
440
|
const records = [];
|
|
257
|
-
for (const
|
|
258
|
-
|
|
259
|
-
continue;
|
|
260
|
-
const runId = name.slice(0, -SNAPSHOT_SUFFIX.length);
|
|
261
|
-
const fetchedAt = readFetchedAt(join(qiDir, name));
|
|
441
|
+
for (const file of snapshotRecordFiles(qiDir)) {
|
|
442
|
+
const fetchedAt = readFetchedAt(file.path);
|
|
262
443
|
// Unparseable records are skipped — do not evict conservatively.
|
|
263
444
|
if (fetchedAt !== undefined)
|
|
264
|
-
records.push({ runId, fetchedAt });
|
|
445
|
+
records.push({ runId: file.runId, fetchedAt });
|
|
265
446
|
}
|
|
266
447
|
// Sort oldest first (ascending fetchedAt) so we evict the oldest beyond the cap.
|
|
267
448
|
records.sort((a, b) => (a.fetchedAt < b.fetchedAt ? -1 : a.fetchedAt > b.fetchedAt ? 1 : 0));
|
|
@@ -324,30 +505,59 @@ function loadOp(ctx, runId) {
|
|
|
324
505
|
if (!validateFigmaSnapshotRecord(parsed).ok)
|
|
325
506
|
return undefined;
|
|
326
507
|
const rec = parsed;
|
|
327
|
-
// Integrity check: recompute and reject on mismatch.
|
|
328
|
-
//
|
|
508
|
+
// Integrity check: recompute and reject on mismatch. Screen rows are verified before the
|
|
509
|
+
// snapshot-level hash so stale/tampered IR or image refs cannot hide behind an old screen hash.
|
|
510
|
+
verifyPersistedScreens(ctx, rec, runId);
|
|
329
511
|
const expected = recomputeSnapshotIntegrityHash(rec);
|
|
330
512
|
if (rec.integrityHash !== expected) {
|
|
331
513
|
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: hash mismatch`);
|
|
332
514
|
}
|
|
333
|
-
return rec;
|
|
515
|
+
return verifyOptionalArtifactHashes(rec, runId);
|
|
334
516
|
}
|
|
335
|
-
function
|
|
517
|
+
function loadMetadataOp(ctx, runId) {
|
|
518
|
+
assertValidRunId(runId);
|
|
519
|
+
ctx.ensureSwept();
|
|
336
520
|
const realBase = realBaseForRead(ctx.qiDir, ctx.fs);
|
|
337
521
|
if (realBase === undefined)
|
|
338
|
-
return
|
|
339
|
-
|
|
522
|
+
return undefined;
|
|
523
|
+
const target = join(realBase, `${runId}${SNAPSHOT_SUFFIX}`);
|
|
524
|
+
if (lstatSync(target, { throwIfNoEntry: false })?.isFile() !== true)
|
|
525
|
+
return undefined;
|
|
526
|
+
let parsed;
|
|
340
527
|
try {
|
|
341
|
-
|
|
528
|
+
parsed = JSON.parse(readFileSync(target, "utf8"));
|
|
342
529
|
}
|
|
343
|
-
catch {
|
|
344
|
-
|
|
530
|
+
catch (error) {
|
|
531
|
+
throw new EvidenceReadError(`Figma snapshot is not valid JSON: ${error instanceof Error ? error.message : "unknown"}`);
|
|
532
|
+
}
|
|
533
|
+
if (!validateFigmaSnapshotRecord(parsed).ok)
|
|
534
|
+
return undefined;
|
|
535
|
+
const rec = parsed;
|
|
536
|
+
verifyPersistedScreenMetadata(rec, runId);
|
|
537
|
+
const expected = recomputeSnapshotIntegrityHash(rec);
|
|
538
|
+
if (rec.integrityHash !== expected) {
|
|
539
|
+
throw new EvidenceReadError(`Figma snapshot integrity check failed for run ${runId}: hash mismatch`);
|
|
345
540
|
}
|
|
541
|
+
return verifyOptionalArtifactHashes(rec, runId);
|
|
542
|
+
}
|
|
543
|
+
function loadImageOp(ctx, runId, image) {
|
|
544
|
+
assertValidRunId(runId);
|
|
545
|
+
ctx.ensureSwept();
|
|
546
|
+
const bytes = readVerifiedScreenImageSideFile(ctx, runId, image);
|
|
547
|
+
return {
|
|
548
|
+
mimeType: image.mimeType,
|
|
549
|
+
bytes,
|
|
550
|
+
sha256: image.sha256,
|
|
551
|
+
byteLength: image.byteLength,
|
|
552
|
+
};
|
|
553
|
+
}
|
|
554
|
+
function listByScopeOp(ctx, fileKey, nodeId) {
|
|
555
|
+
const realBase = realBaseForRead(ctx.qiDir, ctx.fs);
|
|
556
|
+
if (realBase === undefined)
|
|
557
|
+
return [];
|
|
346
558
|
const results = [];
|
|
347
|
-
for (const
|
|
348
|
-
|
|
349
|
-
continue;
|
|
350
|
-
const entry = parseScopeEntry(join(realBase, name), fileKey, nodeId);
|
|
559
|
+
for (const file of snapshotRecordFiles(realBase)) {
|
|
560
|
+
const entry = parseScopeEntry(file.path, fileKey, nodeId);
|
|
351
561
|
if (entry !== null)
|
|
352
562
|
results.push(entry);
|
|
353
563
|
}
|
|
@@ -374,6 +584,8 @@ export function createNodeFigmaSnapshotStore(evidenceDir, options = {}) {
|
|
|
374
584
|
return {
|
|
375
585
|
record: (input) => recordOp(ctx, input),
|
|
376
586
|
load: (runId) => loadOp(ctx, runId),
|
|
587
|
+
loadMetadata: (runId) => loadMetadataOp(ctx, runId),
|
|
588
|
+
loadImage: (runId, image) => loadImageOp(ctx, runId, image),
|
|
377
589
|
location: (runId) => {
|
|
378
590
|
assertValidRunId(runId);
|
|
379
591
|
const realBase = realBaseForRead(qiDir, ctx.fs);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { QUALITY_INTELLIGENCE_EVIDENCE_SCHEMA_VERSION, validateQualityIntelligenceEvidenceManifest, } from "./manifestSchema.js";
|
|
2
|
-
export type { QualityIntelligenceBinaryExportMode, QualityIntelligenceEvidenceManifest, QualityIntelligenceEvidenceRefRow, QualityIntelligenceExportRow, QualityIntelligenceExportTarget, QualityIntelligenceFindingRow, QualityIntelligenceIntegrityHashes, QualityIntelligenceManifestTotals, QualityIntelligenceProvenanceRefs, QualityIntelligenceRedactionSummary, QualityIntelligenceSchemaValidationResult, QualityIntelligenceCoverageMatrixRow, QualityIntelligenceAtomFingerprintRow, QualityIntelligenceSourceFingerprintRow, } from "./manifestSchema.js";
|
|
2
|
+
export type { QualityIntelligenceBinaryExportMode, QualityIntelligenceTraceabilityExportMode, QualityIntelligenceEvidenceManifest, QualityIntelligenceEvidenceRefRow, QualityIntelligenceExportRow, QualityIntelligenceExportTarget, QualityIntelligenceFindingRow, QualityIntelligenceIntegrityHashes, QualityIntelligenceManifestTotals, QualityIntelligenceProvenanceRefs, QualityIntelligenceRedactionSummary, QualityIntelligenceSchemaValidationResult, QualityIntelligenceCoverageMatrixRow, QualityIntelligenceAtomFingerprintRow, QualityIntelligenceSourceFingerprintRow, } from "./manifestSchema.js";
|
|
3
3
|
export { redactQualityIntelligenceEvidence } from "./redaction.js";
|
|
4
4
|
export type { QualityIntelligenceRedactionOptions, QualityIntelligenceRedactionResult, } from "./redaction.js";
|
|
5
5
|
export { QUALITY_INTELLIGENCE_DEFAULT_RETENTION_PROFILE_ID, QUALITY_INTELLIGENCE_RETENTION_PROFILES, getQualityIntelligenceRetentionProfile, } from "./retentionPolicy.js";
|
|
@@ -12,7 +12,7 @@ export { createNodeContainedJsonArtifactStore, type ContainedJsonArtifactStore,
|
|
|
12
12
|
export { FIGMA_SNAPSHOT_SCHEMA_VERSION, validateFigmaSnapshotRecord, } from "./figmaSnapshot/schema.js";
|
|
13
13
|
export type { FigmaSnapshotImageRef, FigmaSnapshotLinkRow, FigmaSnapshotProvenanceRow, FigmaSnapshotRecord, FigmaSnapshotRedactionSummary, FigmaSnapshotScreenRow, FigmaSnapshotSkipReason, FigmaSnapshotSkippedScreenRow, FigmaSnapshotValidationResult, } from "./figmaSnapshot/schema.js";
|
|
14
14
|
export { createNodeFigmaSnapshotStore } from "./figmaSnapshot/store.js";
|
|
15
|
-
export type { FigmaSnapshotStore, FigmaSnapshotStoreOptions, RecordFigmaSnapshotInput, RecordFigmaSnapshotResult, RecordFigmaSnapshotScreenInput, } from "./figmaSnapshot/store.js";
|
|
15
|
+
export type { FigmaSnapshotImageBytes, FigmaSnapshotStore, FigmaSnapshotStoreOptions, RecordFigmaSnapshotInput, RecordFigmaSnapshotResult, RecordFigmaSnapshotScreenInput, } from "./figmaSnapshot/store.js";
|
|
16
16
|
export { applyQualityIntelligenceRetention, deleteQualityIntelligenceRun, quarantineCorruptQualityIntelligenceManifest, snapshotQualityIntelligenceRunsForRecovery, } from "./retention.js";
|
|
17
17
|
export type { QualityIntelligenceDeleteOptions, QualityIntelligenceDeletionReceipt, QualityIntelligenceDeletionStatus, QualityIntelligenceQuarantineOptions, QualityIntelligenceQuarantineReceipt, QualityIntelligenceRecoverySnapshot, QualityIntelligenceRetentionDecision, QualityIntelligenceRetentionDecisionInput, QualityIntelligenceRetentionResult, QualityIntelligenceRunDeletedEvent, QualityIntelligenceRunSnapshotEntry, } from "./retention.js";
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,4CAA4C,EAC5C,2CAA2C,GAC5C,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,mCAAmC,EACnC,mCAAmC,EACnC,iCAAiC,EACjC,4BAA4B,EAC5B,+BAA+B,EAC/B,6BAA6B,EAC7B,kCAAkC,EAClC,iCAAiC,EACjC,iCAAiC,EACjC,mCAAmC,EACnC,yCAAyC,EACzC,oCAAoC,EACpC,qCAAqC,EACrC,uCAAuC,GACxC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EACV,mCAAmC,EACnC,kCAAkC,GACnC,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,iDAAiD,EACjD,uCAAuC,EACvC,sCAAsC,GACvC,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EACL,kCAAkC,EAClC,2CAA2C,EAC3C,uCAAuC,EACvC,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,sCAAsC,EACtC,8BAA8B,EAC9B,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,8CAA8C,EAC9C,mCAAmC,EACnC,iCAAiC,EACjC,mCAAmC,EACnC,qCAAqC,GACtC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,+BAA+B,EAC/B,qCAAqC,EACrC,yCAAyC,EACzC,wCAAwC,EACxC,0CAA0C,EAC1C,2CAA2C,EAC3C,2CAA2C,GAC5C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oCAAoC,EACpC,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,GACvC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,iCAAiC,EACjC,4BAA4B,EAC5B,4CAA4C,EAC5C,0CAA0C,GAC3C,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gCAAgC,EAChC,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,mCAAmC,EACnC,oCAAoC,EACpC,yCAAyC,EACzC,kCAAkC,EAClC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,4CAA4C,EAC5C,2CAA2C,GAC5C,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,mCAAmC,EACnC,yCAAyC,EACzC,mCAAmC,EACnC,iCAAiC,EACjC,4BAA4B,EAC5B,+BAA+B,EAC/B,6BAA6B,EAC7B,kCAAkC,EAClC,iCAAiC,EACjC,iCAAiC,EACjC,mCAAmC,EACnC,yCAAyC,EACzC,oCAAoC,EACpC,qCAAqC,EACrC,uCAAuC,GACxC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EACV,mCAAmC,EACnC,kCAAkC,GACnC,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,iDAAiD,EACjD,uCAAuC,EACvC,sCAAsC,GACvC,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EACL,kCAAkC,EAClC,2CAA2C,EAC3C,uCAAuC,EACvC,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,sCAAsC,EACtC,8BAA8B,EAC9B,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,8CAA8C,EAC9C,mCAAmC,EACnC,iCAAiC,EACjC,mCAAmC,EACnC,qCAAqC,GACtC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,+BAA+B,EAC/B,qCAAqC,EACrC,yCAAyC,EACzC,wCAAwC,EACxC,0CAA0C,EAC1C,2CAA2C,EAC3C,2CAA2C,GAC5C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oCAAoC,EACpC,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,GACvC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,YAAY,EACV,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,iCAAiC,EACjC,4BAA4B,EAC5B,4CAA4C,EAC5C,0CAA0C,GAC3C,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gCAAgC,EAChC,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,mCAAmC,EACnC,oCAAoC,EACpC,yCAAyC,EACzC,kCAAkC,EAClC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,gBAAgB,CAAC"}
|
package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts
CHANGED
|
@@ -7,8 +7,15 @@ type QualityIntelligenceExportAdapter = QualityIntelligence.QualityIntelligenceE
|
|
|
7
7
|
* but an export-evidence row must be able to record them faithfully as the produced target type.
|
|
8
8
|
*/
|
|
9
9
|
export type QualityIntelligenceBinaryExportMode = "pdf" | "zip-bundle";
|
|
10
|
-
/**
|
|
11
|
-
export
|
|
10
|
+
/**
|
|
11
|
+
* Traceability matrix export modes produced by the dedicated traceability route (Epic #734,
|
|
12
|
+
* Issue #740). Like binary modes, these are assembled at the route level — the matrix serializers
|
|
13
|
+
* are separate from the candidate-export adapters — so they extend the evidence target union here
|
|
14
|
+
* rather than the contract `QualityIntelligenceExportAdapter`.
|
|
15
|
+
*/
|
|
16
|
+
export type QualityIntelligenceTraceabilityExportMode = "traceability-csv" | "traceability-markdown";
|
|
17
|
+
/** Any target an export-evidence row may record: a domain adapter, a binary bundle mode, or a traceability matrix mode. */
|
|
18
|
+
export type QualityIntelligenceExportTarget = QualityIntelligenceExportAdapter | QualityIntelligenceBinaryExportMode | QualityIntelligenceTraceabilityExportMode;
|
|
12
19
|
type QualityIntelligenceLifecycleStatus = QualityIntelligence.QualityIntelligenceLifecycleStatus;
|
|
13
20
|
type QualityIntelligenceRunId = QualityIntelligence.QualityIntelligenceRunId;
|
|
14
21
|
type QualityIntelligenceValidationFindingKind = QualityIntelligence.QualityIntelligenceValidationFindingKind;
|
|
@@ -95,6 +102,13 @@ export interface QualityIntelligenceAtomFingerprintRow {
|
|
|
95
102
|
readonly atomId: string;
|
|
96
103
|
readonly envelopeId: string;
|
|
97
104
|
readonly canonicalHashSha256Hex: string;
|
|
105
|
+
/**
|
|
106
|
+
* Optional opaque key for finding the current replacement atom during targeted regeneration. This is
|
|
107
|
+
* a hash-derived metadata key, not raw source text or a local filesystem path.
|
|
108
|
+
*/
|
|
109
|
+
readonly replacementGroupId?: string;
|
|
110
|
+
/** Stable ordinal within replacementGroupId for same-document requirement replacements. */
|
|
111
|
+
readonly replacementOrdinal?: number;
|
|
98
112
|
}
|
|
99
113
|
export interface QualityIntelligenceProvenanceRefs {
|
|
100
114
|
readonly envelopeIds: readonly string[];
|
|
@@ -118,7 +132,7 @@ export interface QualityIntelligenceEvidenceManifest {
|
|
|
118
132
|
readonly integrityHashes: QualityIntelligenceIntegrityHashes;
|
|
119
133
|
/** Optional: per-atom coverage classification (refs + status, no raw text). Added in #738. */
|
|
120
134
|
readonly coverageMatrix?: readonly QualityIntelligenceCoverageMatrixRow[];
|
|
121
|
-
/** Optional: run quality score — percent of
|
|
135
|
+
/** Optional: run quality score — percent of candidates with a strong judge outcome [0-100]; null when the judge stage was skipped. Added in #736. */
|
|
122
136
|
readonly qualityScore?: number | null;
|
|
123
137
|
/** Optional: per-envelope content fingerprints for drift detection (Epic #735, Issue #742). */
|
|
124
138
|
readonly sourceFingerprints?: readonly QualityIntelligenceSourceFingerprintRow[];
|
package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifestSchema.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/manifestSchema.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,KAAK,gCAAgC,GAAG,mBAAmB,CAAC,gCAAgC,CAAC;AAE7F;;;;;GAKG;AACH,MAAM,MAAM,mCAAmC,GAAG,KAAK,GAAG,YAAY,CAAC;AAEvE,
|
|
1
|
+
{"version":3,"file":"manifestSchema.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/manifestSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export interface QualityIntelligenceRecordInput {
|
|
|
30
30
|
readonly provenanceRefs: QualityIntelligenceEvidenceManifest["provenanceRefs"];
|
|
31
31
|
/** Optional coverage matrix (per-atom status, refs only). Added in #738. */
|
|
32
32
|
readonly coverageMatrix?: QualityIntelligenceEvidenceManifest["coverageMatrix"];
|
|
33
|
-
/** Optional run quality score — percent of
|
|
33
|
+
/** Optional run quality score — percent of candidates with a strong judge outcome [0-100]; null when judge was skipped. Added in #736. */
|
|
34
34
|
readonly qualityScore?: QualityIntelligenceEvidenceManifest["qualityScore"];
|
|
35
35
|
/** Optional per-envelope content fingerprints for drift detection (Epic #735). */
|
|
36
36
|
readonly sourceFingerprints?: readonly QualityIntelligenceSourceFingerprintRow[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/store.ts"],"names":[],"mappings":"AAoCA,OAAO,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
// SQLite" alternative.
|
|
13
13
|
//
|
|
14
14
|
// Safety:
|
|
15
|
-
// - Base dir is realpath-contained once at construction
|
|
16
|
-
//
|
|
15
|
+
// - Base dir is realpath-contained once at construction; every child path is derived from a
|
|
16
|
+
// validated runId and the lexical directory entry is inspected before overwrite/delete.
|
|
17
17
|
// - File names are derived from the VALIDATED runId via assertValidRunId — no separator/`..`/NUL
|
|
18
18
|
// can reach the resolved path.
|
|
19
19
|
// - Writes are atomic O_EXCL temp + rename. A partial write leaves a `.tmp` that is invisible to
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
import { createHash, randomUUID } from "node:crypto";
|
|
25
25
|
import { chmodSync, mkdirSync, readdirSync, readFileSync, lstatSync, renameSync, rmSync, writeFileSync, } from "node:fs";
|
|
26
26
|
import { join, resolve } from "node:path";
|
|
27
|
-
import {
|
|
27
|
+
import { resolveWithinWorkspace } from "@oscharko-dev/keiko-workspace";
|
|
28
28
|
import { nodeWorkspaceFs } from "@oscharko-dev/keiko-workspace/internal/fs";
|
|
29
29
|
import { assertValidRunId } from "@oscharko-dev/keiko-security";
|
|
30
30
|
import { EvidenceReadError, EvidenceWriteError } from "../errors.js";
|
|
@@ -80,10 +80,9 @@ function existingQiBaseDir(baseDir, fs) {
|
|
|
80
80
|
throw new EvidenceReadError(`cannot read QI evidence directory: ${error instanceof Error ? error.message : "unknown"}`);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function lexicalQiManifestPath(runId, realBase) {
|
|
84
84
|
assertValidRunId(runId);
|
|
85
|
-
|
|
86
|
-
return assertContainedRealPath(fs, realBase, lexical, `${runId}${QI_MANIFEST_SUFFIX}`);
|
|
85
|
+
return resolveWithinWorkspace(realBase, `${runId}${QI_MANIFEST_SUFFIX}`);
|
|
87
86
|
}
|
|
88
87
|
function isQiManifestName(name) {
|
|
89
88
|
if (!name.endsWith(QI_MANIFEST_SUFFIX)) {
|
|
@@ -107,6 +106,14 @@ function isSingleLinkRegularFile(path, fs) {
|
|
|
107
106
|
throw new EvidenceReadError(`cannot inspect QI manifest: ${error instanceof Error ? error.message : "unknown"}`);
|
|
108
107
|
}
|
|
109
108
|
}
|
|
109
|
+
function assertWritableQiManifestEntry(target, fs) {
|
|
110
|
+
const entry = lstatSync(target, { throwIfNoEntry: false });
|
|
111
|
+
if (entry === undefined)
|
|
112
|
+
return;
|
|
113
|
+
if (!entry.isFile() || !isSingleLinkRegularFile(target, fs)) {
|
|
114
|
+
throw new EvidenceWriteError("cannot overwrite a non-ledger QI manifest");
|
|
115
|
+
}
|
|
116
|
+
}
|
|
110
117
|
function listQiRunIds(realBase, fs) {
|
|
111
118
|
const runIds = [];
|
|
112
119
|
try {
|
|
@@ -150,7 +157,7 @@ function reportQiLocation(baseDir, fs, runId) {
|
|
|
150
157
|
const realBase = existingQiBaseDir(baseDir, fs);
|
|
151
158
|
return realBase === undefined
|
|
152
159
|
? join(resolve(baseDir), `${runId}${QI_MANIFEST_SUFFIX}`)
|
|
153
|
-
:
|
|
160
|
+
: lexicalQiManifestPath(runId, realBase);
|
|
154
161
|
}
|
|
155
162
|
function parseAndValidateManifest(json) {
|
|
156
163
|
let parsed;
|
|
@@ -179,17 +186,6 @@ function assertHashMatches(label, expected, stored) {
|
|
|
179
186
|
throw new EvidenceReadError(`QI manifest ${label} integrity hash mismatch`);
|
|
180
187
|
}
|
|
181
188
|
}
|
|
182
|
-
// Backward-compatible group check: a group that shipped before it was integrity-hashed (coverageMatrix
|
|
183
|
-
// #738, sourceFingerprints #735) may exist on a legacy manifest without a stored hash. Enforce the
|
|
184
|
-
// check only once a stored hash is present; new manifests always carry it, so tampering with a current
|
|
185
|
-
// group is still caught.
|
|
186
|
-
function assertOptionalHashMatches(label, value, stored) {
|
|
187
|
-
if (stored === undefined)
|
|
188
|
-
return;
|
|
189
|
-
if (sha256OfJson(value) !== stored) {
|
|
190
|
-
throw new EvidenceReadError(`QI manifest ${label} integrity hash mismatch`);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
189
|
function assertIntegrityHashesMatch(manifest) {
|
|
194
190
|
const expected = buildIntegrityHashes(manifest.findings, manifest.exports, manifest.evidenceRefs);
|
|
195
191
|
assertHashMatches("findings", expected.findings, manifest.integrityHashes.findings);
|
|
@@ -199,8 +195,15 @@ function assertIntegrityHashesMatch(manifest) {
|
|
|
199
195
|
// directly — a removed or added set (stored present, expected absent or vice versa) is caught too.
|
|
200
196
|
const expectedAtomFingerprints = manifest.atomFingerprints === undefined ? undefined : sha256OfJson(manifest.atomFingerprints);
|
|
201
197
|
assertHashMatches("atomFingerprints", expectedAtomFingerprints, manifest.integrityHashes.atomFingerprints);
|
|
202
|
-
|
|
203
|
-
|
|
198
|
+
// coverageMatrix and sourceFingerprints: derive expected = (collection === undefined ? undefined :
|
|
199
|
+
// sha256OfJson(collection)) and compare with assertHashMatches so a present collection with a
|
|
200
|
+
// deleted stored sub-hash FAILS CLOSED (mirrors atomFingerprints above — removal-proof).
|
|
201
|
+
const expectedCoverageMatrix = manifest.coverageMatrix === undefined ? undefined : sha256OfJson(manifest.coverageMatrix);
|
|
202
|
+
assertHashMatches("coverageMatrix", expectedCoverageMatrix, manifest.integrityHashes.coverageMatrix);
|
|
203
|
+
const expectedSourceFingerprints = manifest.sourceFingerprints === undefined
|
|
204
|
+
? undefined
|
|
205
|
+
: sha256OfJson(manifest.sourceFingerprints);
|
|
206
|
+
assertHashMatches("sourceFingerprints", expectedSourceFingerprints, manifest.integrityHashes.sourceFingerprints);
|
|
204
207
|
}
|
|
205
208
|
// Integrity scope (be precise — this is the on-read tamper-detection contract): we verify the
|
|
206
209
|
// (totals ↔ collection-length) invariant for findings/exports AND the per-group SHA-256 hashes for
|
|
@@ -248,7 +251,8 @@ function loadQiManifest(baseDir, fs, runId) {
|
|
|
248
251
|
function recordQiManifest(baseDir, fs, randomSuffix, manifest) {
|
|
249
252
|
assertValidRunId(manifest.runId);
|
|
250
253
|
const realBase = prepareQiBaseDir(baseDir, fs);
|
|
251
|
-
const target =
|
|
254
|
+
const target = lexicalQiManifestPath(manifest.runId, realBase);
|
|
255
|
+
assertWritableQiManifestEntry(target, fs);
|
|
252
256
|
atomicWriteQiManifest(target, JSON.stringify(manifest), randomSuffix);
|
|
253
257
|
return target;
|
|
254
258
|
}
|
|
@@ -258,7 +262,7 @@ function deleteQiManifest(baseDir, fs, runId) {
|
|
|
258
262
|
if (realBase === undefined) {
|
|
259
263
|
return false;
|
|
260
264
|
}
|
|
261
|
-
const target =
|
|
265
|
+
const target = lexicalQiManifestPath(runId, realBase);
|
|
262
266
|
if (lstatSync(target, { throwIfNoEntry: false })?.isFile() !== true) {
|
|
263
267
|
return false;
|
|
264
268
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-file.d.ts","sourceRoot":"","sources":["../src/side-file.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AASvC,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;CACtC;
|
|
1
|
+
{"version":3,"file":"side-file.d.ts","sourceRoot":"","sources":["../src/side-file.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AASvC,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;CACtC;AA+DD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,mBAAmB,CA2BrB"}
|