@oscharko-dev/keiko 0.2.0-beta.4 → 0.2.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -14
- package/dist/ui/csp-hashes.json +16 -21
- 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 +3 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +123 -43
- 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 +23 -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/index.js +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 +4 -4
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +33 -2
- 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 +34 -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 +95 -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/conversation/index.d.ts +0 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.js +0 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +7 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.js +2 -3
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/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/normalize.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.js +22 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.js +69 -10
- 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/alm.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.js +29 -30
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.js +34 -5
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.js +29 -29
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts +2 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.js +40 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/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/adapters/xray.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.js +6 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/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/assistant-response.d.ts +6 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.js +12 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +61 -16
- 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 +11 -9
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.js +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +4 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +44 -69
- package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.js +120 -28
- package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.js +4 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +0 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +222 -18
- 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 +118 -23
- 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 +57 -22
- 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 +14 -5
- 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 +11 -4
- 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/connectorErrors.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.js +11 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.js +62 -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 +98 -33
- 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/generationPort.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +12 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.js +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.js +41 -9
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts +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 +86 -68
- 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/retentionRoutes.d.ts +5 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.js +70 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.js +20 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts +25 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.js +72 -9
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/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 +370 -38
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.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 +73 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +20 -6
- 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/store-handlers.js +4 -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/planner/anchors.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.js +68 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/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/discovery.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.js +34 -2
- package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.js +2 -2
- package/node_modules/@oscharko-dev/keiko-workspace/dist/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 +74 -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/1t04tfgin0v_g.js +0 -106
- 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/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/3wr_35f2vg6sd.css +0 -1
- package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +0 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts +0 -6
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts.map +0 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.js +0 -49
- /package/dist/ui/static/_next/static/{Hb6brrvZY2nZtizQlYhVt → fQMXe8UmV01bh25WOoIt3}/_buildManifest.js +0 -0
- /package/dist/ui/static/_next/static/{Hb6brrvZY2nZtizQlYhVt → fQMXe8UmV01bh25WOoIt3}/_clientMiddlewareManifest.js +0 -0
- /package/dist/ui/static/_next/static/{Hb6brrvZY2nZtizQlYhVt → fQMXe8UmV01bh25WOoIt3}/_ssgManifest.js +0 -0
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
// `@oscharko-dev/keiko-quality-intelligence`. The server tier owns IO (it is the only layer that
|
|
6
6
|
// may touch the filesystem); the pure domain owns splitting + hashing. Oversize and unsupported
|
|
7
7
|
// inputs fail with user-actionable errors (#278 AC) before any model prompt is built.
|
|
8
|
+
import { realpathSync } from "node:fs";
|
|
8
9
|
import { dirname, isAbsolute, relative, resolve } from "node:path";
|
|
9
10
|
import { QualityIntelligence } from "@oscharko-dev/keiko-contracts";
|
|
10
11
|
import { redact, sha256Hex } from "@oscharko-dev/keiko-security";
|
|
11
|
-
import { QualityIntelligenceGeneration, QualityIntelligenceHardening, QualityIntelligenceFigma, } from "@oscharko-dev/keiko-quality-intelligence";
|
|
12
|
+
import { QualityIntelligenceGeneration, QualityIntelligenceHardening, QualityIntelligenceFigma, isUnsafeFormatCodePoint, stripUnsafeFormatChars, } from "@oscharko-dev/keiko-quality-intelligence";
|
|
12
13
|
import { detectWorkspaceAt, discoverWithStats, buildContextPackFromFiles, readWorkspaceFile, isDenied, DEFAULT_CONTEXT_REQUEST, DEFAULT_READ_OPTIONS, WorkspaceError, FileTooLargeError, PathDeniedError, PathEscapeError, WorkspaceReadError, } from "@oscharko-dev/keiko-workspace";
|
|
13
14
|
const MAX_TOTAL_ATOMS = 120;
|
|
14
15
|
const MAX_LABEL_CHARS = 120;
|
|
@@ -35,6 +36,9 @@ function perSourceAtomBudget(total, sourceCount) {
|
|
|
35
36
|
const EVIDENCE_BUDGET_BYTES = 196_608;
|
|
36
37
|
// Never starve a source below this many bytes — a tiny share is still usable context.
|
|
37
38
|
const MIN_SOURCE_BUDGET_BYTES = 4_096;
|
|
39
|
+
// Bound productive vision calls for one Figma snapshot source. The deterministic structural
|
|
40
|
+
// baseline still covers every parseable screen; vision hints are additive and sampled first-in-order.
|
|
41
|
+
const MAX_FIGMA_VISION_AUGMENTED_SCREENS = 12;
|
|
38
42
|
/**
|
|
39
43
|
* Fair per-source UTF-8 byte budget — the byte analogue of {@link perSourceAtomBudget}. Floor-divides
|
|
40
44
|
* the global evidence byte pool across sources (Chat byte-split parity) with a non-zero floor so the
|
|
@@ -66,6 +70,34 @@ const CREDENTIAL_LABEL_SHAPES = [
|
|
|
66
70
|
/\bBearer\s+\S+/giu,
|
|
67
71
|
/-----BEGIN [A-Z ]*PRIVATE KEY-----/gu,
|
|
68
72
|
];
|
|
73
|
+
// Make a source label single-line AND spoof-safe with one code-point scan (the `no-control-regex`
|
|
74
|
+
// lint rule forbids a control-range regex literal, and a scan is the established in-package idiom —
|
|
75
|
+
// mirrors generationPort.scrubEvidenceText):
|
|
76
|
+
// - C0 controls (incl. tab/newline/CR) and DEL become a SPACE, so a multi-line or control-laden
|
|
77
|
+
// label can never glue a second line of content into the streamed displayLabel (#277/#278).
|
|
78
|
+
// - Bidi overrides/isolates, zero-width/BOM, LRM/RLM, the Arabic letter mark, and C1 controls are
|
|
79
|
+
// DROPPED outright. These are invisible or reorder surrounding text, so a source filename /
|
|
80
|
+
// capsule id cannot smuggle a right-to-left or zero-width spoof into the browser-streamed
|
|
81
|
+
// envelope display surface. The drop set is the SHARED `isUnsafeFormatCodePoint` predicate used
|
|
82
|
+
// by the candidate-text scrubber (keiko-quality-intelligence stripUnsafeFormatChars), so the
|
|
83
|
+
// source-label path is symmetric with the persisted/exported candidate-text path (Epic #729;
|
|
84
|
+
// the bidi/zero-width display-hygiene class of #280/#284). C0/DEL are handled first (→ space)
|
|
85
|
+
// because a single-line label spaces line breaks rather than gluing them.
|
|
86
|
+
function stripUnsafeLabelChars(value) {
|
|
87
|
+
let out = "";
|
|
88
|
+
for (const ch of value) {
|
|
89
|
+
const cp = ch.codePointAt(0) ?? 0;
|
|
90
|
+
if (cp <= 0x1f || cp === 0x7f) {
|
|
91
|
+
out += " ";
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (isUnsafeFormatCodePoint(cp)) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
out += ch;
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
69
101
|
const sanitiseLabel = (label) => {
|
|
70
102
|
// Strip any URL authority — ANY scheme (http, file, s3, ftp, …), not just http(s) — plus the
|
|
71
103
|
// well-known credential token shapes, so a browser-supplied label never carries a URL or secret
|
|
@@ -73,6 +105,15 @@ const sanitiseLabel = (label) => {
|
|
|
73
105
|
let cleaned = label.replace(/[a-z][a-z0-9+.-]*:\/\/\S+/giu, " ");
|
|
74
106
|
for (const shape of CREDENTIAL_LABEL_SHAPES)
|
|
75
107
|
cleaned = cleaned.replace(shape, " ");
|
|
108
|
+
// Map control characters (newline, CR, tab, NUL, DEL, …) to spaces and DROP bidi-override,
|
|
109
|
+
// zero-width, BOM, and C1 spoofing code points so a multi-line, control-laden, or
|
|
110
|
+
// visually-reordered label can never carry a second line of content into — or spoof the reading
|
|
111
|
+
// order of — the browser-streamed envelope displayLabel. Without the control→space step the
|
|
112
|
+
// absolute-path basename-collapse below (which splits on "/" only) would keep a trailing
|
|
113
|
+
// "\n<more content>" glued inside the final path segment, defeating the basename defence; without
|
|
114
|
+
// the bidi/zero-width drop a crafted filename could reorder the displayed label (#277/#278
|
|
115
|
+
// envelope display-surface invariant; Epic #729 symmetry with the candidate-text scrubber).
|
|
116
|
+
cleaned = stripUnsafeLabelChars(cleaned);
|
|
76
117
|
cleaned = cleaned.trim();
|
|
77
118
|
// Collapse an absolute POSIX / Windows-drive / UNC path label to its final segment so the
|
|
78
119
|
// display label never leaks the filesystem layout (the basename is the useful display token).
|
|
@@ -86,13 +127,45 @@ const sanitiseLabel = (label) => {
|
|
|
86
127
|
// Reject a source whose absolute path (any segment) names a denied credential location. isDenied
|
|
87
128
|
// inspects EVERY path segment, so a denied ancestor cannot be hidden by rooting a read deeper. Shared
|
|
88
129
|
// by the folder and single-file paths so both honour the same containment guard (Epic #729 security).
|
|
130
|
+
// Also rejects the symlink variant (assertRealPathNotDenied) so a benign-named link cannot resolve
|
|
131
|
+
// into a protected location.
|
|
89
132
|
function assertNotDenied(absPath, label, noun) {
|
|
90
133
|
if (isDenied(absPath)) {
|
|
91
134
|
throw new QiIngestionError("QI_SOURCE_DENIED", `${noun} "${label}" is in a protected location.`);
|
|
92
135
|
}
|
|
136
|
+
assertRealPathNotDenied(absPath, label, noun);
|
|
137
|
+
}
|
|
138
|
+
// Defense-in-depth against a symlinked workspace root. The keiko-workspace deny gate (readWorkspaceFile)
|
|
139
|
+
// inspects only the path RELATIVE to the realpath'd root, so a denied segment AT or ABOVE the connected
|
|
140
|
+
// root is invisible to it: a benign-named "~/docs" symlink whose real target is "~/.aws" lets a
|
|
141
|
+
// supported file inside it read through to the model, even though the lexical assertNotDenied above sees
|
|
142
|
+
// only "docs". Re-running the deny gate over the REAL (symlink-resolved) absolute path rejects it. The
|
|
143
|
+
// lexical check above already covers the no-symlink case, so this only ADDS denials when realpath
|
|
144
|
+
// diverges into a protected location; a non-existent target surfaces later as NOT_FOUND, so a failed
|
|
145
|
+
// realpath is a deliberate no-op here. (#713 single-file security review: "deny-list still applies";
|
|
146
|
+
// #729 folder-root parity — both ingest paths share this boundary blind spot.)
|
|
147
|
+
function assertRealPathNotDenied(absPath, label, noun) {
|
|
148
|
+
let realPath;
|
|
149
|
+
try {
|
|
150
|
+
realPath = realpathSync(absPath);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (realPath !== absPath && isDenied(realPath)) {
|
|
156
|
+
throw new QiIngestionError("QI_SOURCE_DENIED", `${noun} "${label}" is in a protected location.`);
|
|
157
|
+
}
|
|
93
158
|
}
|
|
94
|
-
|
|
95
|
-
|
|
159
|
+
// Escape the field delimiter ("|") and the escape character ("\") in each user/path-controlled
|
|
160
|
+
// field so a label or content value can never inject a raw delimiter and forge another source's
|
|
161
|
+
// envelope id. The strictly-increasing loop index already disambiguates sources today; escaping
|
|
162
|
+
// makes the pre-image injective on its own — robust even if the fields were ever reordered —
|
|
163
|
+
// closing the latent cross-source provenance-spoofing surface flagged by the #732 composition
|
|
164
|
+
// security audit. A value with no "\" or "|" encodes to itself, so clean labels/paths keep their
|
|
165
|
+
// existing envelope id (and the atom ids derived from it), preserving re-check stability.
|
|
166
|
+
const escapeEnvelopeField = (value) => value.split("\\").join("\\\\").split("|").join("\\|");
|
|
167
|
+
export const envelopeIdFor = (index, label, content) => {
|
|
168
|
+
const digest = sha256Hex(`qi-src-v1|${String(index)}|${escapeEnvelopeField(label)}|${escapeEnvelopeField(content)}`).slice(0, 24);
|
|
96
169
|
return QualityIntelligence.asQualityIntelligenceSourceEnvelopeId(`qi-src-${digest}`);
|
|
97
170
|
};
|
|
98
171
|
const REQUIREMENTS_ENVELOPE_PREFIX = "qi-src-req-";
|
|
@@ -101,6 +174,7 @@ const requirementsEnvelopeIdFor = (index) => {
|
|
|
101
174
|
return QualityIntelligence.asQualityIntelligenceSourceEnvelopeId(`${REQUIREMENTS_ENVELOPE_PREFIX}${digest}`);
|
|
102
175
|
};
|
|
103
176
|
const stableLocalRef = (prefix, value) => `${prefix}:${sha256Hex(value).slice(0, 24)}`;
|
|
177
|
+
const replacementGroupIdFor = (envelopeId, stableKey) => sha256Hex(`qi-replace-v1|${String(envelopeId)}|${stableKey}`);
|
|
104
178
|
const auditSummaryIdFor = (runId) => QualityIntelligence.asQualityIntelligenceAuditSummaryId(`qi-audit-${sha256Hex(runId).slice(0, 24)}`);
|
|
105
179
|
function ingestRequirements(source, index, registeredAt) {
|
|
106
180
|
const text = typeof source.text === "string" ? source.text : "";
|
|
@@ -125,7 +199,14 @@ function ingestRequirements(source, index, registeredAt) {
|
|
|
125
199
|
},
|
|
126
200
|
localRef: `req:${String(index)}`,
|
|
127
201
|
};
|
|
128
|
-
return {
|
|
202
|
+
return {
|
|
203
|
+
envelope,
|
|
204
|
+
atoms: atoms.map((entry, ordinal) => Object.freeze({
|
|
205
|
+
...entry,
|
|
206
|
+
replacementGroupId: replacementGroupIdFor(envelopeId, `requirements:${String(index)}`),
|
|
207
|
+
replacementOrdinal: ordinal,
|
|
208
|
+
})),
|
|
209
|
+
};
|
|
129
210
|
}
|
|
130
211
|
const WORKSPACE_BUDGET_BYTES = 196_608;
|
|
131
212
|
const WORKSPACE_MAX_BYTES_PER_FILE = 16_384;
|
|
@@ -170,7 +251,7 @@ function documentRequirementAtoms(entry, envelopeId) {
|
|
|
170
251
|
});
|
|
171
252
|
if (split.length <= 1)
|
|
172
253
|
return Object.freeze([]);
|
|
173
|
-
return Object.freeze(split.map((requirement) => {
|
|
254
|
+
return Object.freeze(split.map((requirement, ordinal) => {
|
|
174
255
|
const canonicalText = `${entry.path}\n${requirement.canonicalText}`;
|
|
175
256
|
const atom = {
|
|
176
257
|
kind: "requirement",
|
|
@@ -180,7 +261,12 @@ function documentRequirementAtoms(entry, envelopeId) {
|
|
|
180
261
|
redactionStatus: "redacted",
|
|
181
262
|
lifecycleStatus: "draft",
|
|
182
263
|
};
|
|
183
|
-
return Object.freeze({
|
|
264
|
+
return Object.freeze({
|
|
265
|
+
atom: Object.freeze(atom),
|
|
266
|
+
canonicalText,
|
|
267
|
+
replacementGroupId: replacementGroupIdFor(envelopeId, `document:${entry.path}`),
|
|
268
|
+
replacementOrdinal: ordinal,
|
|
269
|
+
});
|
|
184
270
|
}));
|
|
185
271
|
}
|
|
186
272
|
function atomsForWorkspaceEntry(entry, envelopeId) {
|
|
@@ -194,8 +280,8 @@ function atomsForWorkspaceEntry(entry, envelopeId) {
|
|
|
194
280
|
// entry becomes one content-bearing atom under a single repository-context envelope.
|
|
195
281
|
function ingestWorkspace(source, index, registeredAt, byteBudget) {
|
|
196
282
|
const label = sanitiseLabel(source.label);
|
|
197
|
-
// Reject a folder whose ROOT names a denied credential location
|
|
198
|
-
// ~/.
|
|
283
|
+
// Reject a folder whose ROOT names a denied credential location (lexically or via a symlinked root):
|
|
284
|
+
// connecting e.g. ~/.aws AS A FOLDER would otherwise ingest credential files whose RELATIVE paths
|
|
199
285
|
// ("credentials", "config.json") never trip the per-file deny check (#729 security).
|
|
200
286
|
assertNotDenied(resolve(source.path), label, "Folder");
|
|
201
287
|
let workspace;
|
|
@@ -332,7 +418,7 @@ function ingestFile(source, index, registeredAt, byteBudget) {
|
|
|
332
418
|
throw new QiIngestionError("QI_SOURCE_UNSUPPORTED", `File "${label}" is not a supported single-file document.`);
|
|
333
419
|
}
|
|
334
420
|
// Reject any path whose segments name a denied credential directory or file (.ssh, .aws, .env,
|
|
335
|
-
// *.pem, id_rsa, …) regardless of
|
|
421
|
+
// *.pem, id_rsa, …) — lexically or after symlink resolution — regardless of the workspace root below.
|
|
336
422
|
assertNotDenied(absFile, label, "File");
|
|
337
423
|
const content = readSingleFileContent(absFile, label);
|
|
338
424
|
// keiko-workspace decodes as UTF-8; a NUL byte is the canonical binary marker. A binary file that
|
|
@@ -402,7 +488,7 @@ function processCapsuleDocs(docs, byteBudget) {
|
|
|
402
488
|
const processed = [];
|
|
403
489
|
let totalBytes = 0;
|
|
404
490
|
for (const doc of docs) {
|
|
405
|
-
const capped = truncateToUtf8Bytes(redact(doc.text), perDocBudget);
|
|
491
|
+
const capped = truncateToUtf8Bytes(redact(stripUnsafeFormatChars(doc.text)), perDocBudget);
|
|
406
492
|
if (capped.trim().length === 0)
|
|
407
493
|
continue;
|
|
408
494
|
const bytes = utf8ByteLength(capped);
|
|
@@ -419,8 +505,9 @@ function processCapsuleDocs(docs, byteBudget) {
|
|
|
419
505
|
// Build one evidence atom per capsule document. Reuses the workspace atom shape so the model sees
|
|
420
506
|
// structured text (documentId prefix + body), consistent with folder/file sources. The text is
|
|
421
507
|
// already redacted + capped by processCapsuleDocs, so redactionStatus:"redacted" is truthful.
|
|
422
|
-
function capsuleDocAtom(docId, text, envelopeId) {
|
|
508
|
+
function capsuleDocAtom(docId, text, envelopeId, fingerprintText = text) {
|
|
423
509
|
const canonicalText = `${docId}\n${text}`;
|
|
510
|
+
const fingerprintCanonicalText = `${docId}\n${fingerprintText}`;
|
|
424
511
|
// Derive the atom id from the stable document id only — never its position in the corpus order
|
|
425
512
|
// (Epic #735 drift correctness, mirrors workspaceAtom). A capsule document id (and a Figma
|
|
426
513
|
// screen id) is unique within its envelope, so adding/removing a sibling document never shifts an
|
|
@@ -431,7 +518,7 @@ function capsuleDocAtom(docId, text, envelopeId) {
|
|
|
431
518
|
kind: "document-excerpt",
|
|
432
519
|
id: QualityIntelligence.asQualityIntelligenceEvidenceAtomId(`qi-atom-${digest}`),
|
|
433
520
|
sourceEnvelopeId: envelopeId,
|
|
434
|
-
canonicalHashSha256Hex: sha256Hex(
|
|
521
|
+
canonicalHashSha256Hex: sha256Hex(fingerprintCanonicalText),
|
|
435
522
|
redactionStatus: "redacted",
|
|
436
523
|
lifecycleStatus: "draft",
|
|
437
524
|
};
|
|
@@ -490,25 +577,67 @@ function ingestCapsuleSet(source, index, registeredAt, resolver, byteBudget) {
|
|
|
490
577
|
emptyError: `Capsule set "${label}" has no indexed content or could not be opened.`,
|
|
491
578
|
}, byteBudget);
|
|
492
579
|
}
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
580
|
+
function isPromiseLike(value) {
|
|
581
|
+
return typeof value.then === "function";
|
|
582
|
+
}
|
|
583
|
+
function collectIrStats(node, stats) {
|
|
584
|
+
const next = {
|
|
585
|
+
imageFillCount: stats.imageFillCount + node.imageFills.length,
|
|
586
|
+
textNodeCount: stats.textNodeCount + (node.text !== undefined && node.text.trim().length > 0 ? 1 : 0),
|
|
587
|
+
semanticNodeCount: stats.semanticNodeCount +
|
|
588
|
+
(node.interactionHint === "button" ||
|
|
589
|
+
node.interactionHint === "input" ||
|
|
590
|
+
node.interactionHint === "link"
|
|
591
|
+
? 1
|
|
592
|
+
: 0),
|
|
593
|
+
};
|
|
594
|
+
return node.children.reduce((acc, child) => collectIrStats(child, acc), next);
|
|
595
|
+
}
|
|
596
|
+
function screenNeedsVisionAugmentation(ir, baseline) {
|
|
597
|
+
const stats = collectIrStats(ir.root, {
|
|
598
|
+
imageFillCount: 0,
|
|
599
|
+
textNodeCount: 0,
|
|
600
|
+
semanticNodeCount: 0,
|
|
601
|
+
});
|
|
602
|
+
const structuralItems = baseline.items.filter((item) => item.category !== "screen-render").length;
|
|
603
|
+
return (stats.imageFillCount > 0 ||
|
|
604
|
+
stats.textNodeCount === 0 ||
|
|
605
|
+
stats.semanticNodeCount === 0 ||
|
|
606
|
+
structuralItems === 0);
|
|
607
|
+
}
|
|
608
|
+
function figmaVisionRequest(record, screen, baselineText) {
|
|
609
|
+
return {
|
|
610
|
+
snapshotRunId: record.runId,
|
|
507
611
|
screenId: screen.screenId,
|
|
612
|
+
image: screen.image,
|
|
508
613
|
imageRelativePath: screen.image.relativePath,
|
|
509
614
|
baselineText,
|
|
510
|
-
}
|
|
511
|
-
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
function mergeFigmaVisionHints(baselineText, hints) {
|
|
618
|
+
return {
|
|
619
|
+
text: QualityIntelligenceFigma.mergeVisionHints(baselineText, hints).text,
|
|
620
|
+
fingerprintText: baselineText,
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
/** Vision-augment one screen's baseline text without ever overriding it (additive only). */
|
|
624
|
+
function visionAugmentedScreenText(baseline, ir, record, screen, vision) {
|
|
625
|
+
const baselineText = QualityIntelligenceFigma.renderBaselineText(baseline);
|
|
626
|
+
if (vision === undefined || !screenNeedsVisionAugmentation(ir, baseline)) {
|
|
627
|
+
return { text: baselineText, fingerprintText: baselineText };
|
|
628
|
+
}
|
|
629
|
+
const hints = vision(figmaVisionRequest(record, screen, baselineText));
|
|
630
|
+
return isPromiseLike(hints)
|
|
631
|
+
? { text: baselineText, fingerprintText: baselineText }
|
|
632
|
+
: mergeFigmaVisionHints(baselineText, hints);
|
|
633
|
+
}
|
|
634
|
+
async function visionAugmentedScreenTextAsync(baseline, ir, record, screen, vision) {
|
|
635
|
+
const baselineText = QualityIntelligenceFigma.renderBaselineText(baseline);
|
|
636
|
+
if (vision === undefined || !screenNeedsVisionAugmentation(ir, baseline)) {
|
|
637
|
+
return { text: baselineText, fingerprintText: baselineText };
|
|
638
|
+
}
|
|
639
|
+
const hints = await vision(figmaVisionRequest(record, screen, baselineText));
|
|
640
|
+
return mergeFigmaVisionHints(baselineText, hints);
|
|
512
641
|
}
|
|
513
642
|
// Parse every screen's opaque irJson once; an unparseable screen is dropped (never crashes the run).
|
|
514
643
|
function parseScreens(record) {
|
|
@@ -540,6 +669,49 @@ function navItemsByScreen(parsed, links) {
|
|
|
540
669
|
function a11yItemsByScreen(parsed) {
|
|
541
670
|
return QualityIntelligenceFigma.deriveA11yTestItemsByScreen(parsed.map((p) => p.ir));
|
|
542
671
|
}
|
|
672
|
+
function figmaDocumentId(screenId, screenName) {
|
|
673
|
+
// Correct order (the #734 strip-before-redact rule): strip format chars first to
|
|
674
|
+
// de-obfuscate any zero-width-split secret, then redact (now catches raw AND ZW-split
|
|
675
|
+
// secrets → emits "[REDACTED]"), then sanitiseLabel for display safety (collapses
|
|
676
|
+
// newlines, URLs, paths). Mirrors redactFigmaAtomText = redact(stripUnsafeFormatChars)
|
|
677
|
+
// below, with sanitiseLabel as the final display-safe step.
|
|
678
|
+
const safeName = sanitiseLabel(redact(stripUnsafeFormatChars(screenName)));
|
|
679
|
+
return `${screenId} (${truncateToUtf8Bytes(safeName, MAX_LABEL_CHARS)})`;
|
|
680
|
+
}
|
|
681
|
+
// Strip Unicode bidi-override / zero-width / C1 spoofing code points from the untrusted Figma-derived
|
|
682
|
+
// atom text BEFORE secret redaction. Two reasons for this order (the #734 strip-before-redact rule):
|
|
683
|
+
// stripping first DE-OBFUSCATES a zero-width-split secret so the redactor can still match it, and it
|
|
684
|
+
// removes the bidi/zero-width chars that would otherwise ride a Figma screen name or prototype trigger
|
|
685
|
+
// verbatim into the QI atom text and every downstream export (bidi-spoofing of generated test titles).
|
|
686
|
+
// Symmetric with the candidate-text path (buildRequirementExcerpt) and the source-label path
|
|
687
|
+
// (sanitiseLabel / stripUnsafeLabelChars). TAB/LF/CR are preserved so the multi-line baseline structure
|
|
688
|
+
// stays intact; clean inputs are byte-identical, so the atom hash and budget accounting are unchanged.
|
|
689
|
+
const redactFigmaAtomText = (text) => redact(stripUnsafeFormatChars(text));
|
|
690
|
+
function consumeVisionProviderForScreen(vision, remainingVisionScreens, ir, baseline) {
|
|
691
|
+
if (vision === undefined ||
|
|
692
|
+
remainingVisionScreens <= 0 ||
|
|
693
|
+
!screenNeedsVisionAugmentation(ir, baseline)) {
|
|
694
|
+
return { provider: undefined, remaining: remainingVisionScreens };
|
|
695
|
+
}
|
|
696
|
+
return { provider: vision, remaining: remainingVisionScreens - 1 };
|
|
697
|
+
}
|
|
698
|
+
function corpusDocFromFigmaScreen(row, ir, augmented, perDocBudget) {
|
|
699
|
+
const capped = truncateToUtf8Bytes(redactFigmaAtomText(augmented.text), perDocBudget);
|
|
700
|
+
if (capped.trim().length === 0)
|
|
701
|
+
return undefined;
|
|
702
|
+
const fingerprintText = truncateToUtf8Bytes(redactFigmaAtomText(augmented.fingerprintText), perDocBudget);
|
|
703
|
+
return {
|
|
704
|
+
doc: {
|
|
705
|
+
documentId: figmaDocumentId(row.screenId, ir.name),
|
|
706
|
+
text: capped,
|
|
707
|
+
fingerprintText,
|
|
708
|
+
},
|
|
709
|
+
bytes: utf8ByteLength(capped),
|
|
710
|
+
};
|
|
711
|
+
}
|
|
712
|
+
function figmaDocFitsBudget(docs, totalBytes, nextBytes, perRunBudget) {
|
|
713
|
+
return docs.length === 0 || totalBytes + nextBytes <= perRunBudget;
|
|
714
|
+
}
|
|
543
715
|
// Derive the redacted, budget-capped canonical text for every parseable screen. Each screen's
|
|
544
716
|
// deterministic structural baseline (#754) is augmented additively with its navigation/flow test
|
|
545
717
|
// items (#811) AND its accessibility test items (#812) — concatenated, neither replacing the other —
|
|
@@ -558,18 +730,45 @@ function figmaScreenDocs(record, vision, byteBudget) {
|
|
|
558
730
|
const a11yItems = a11yItemsByScreen(parsed);
|
|
559
731
|
const docs = [];
|
|
560
732
|
let totalBytes = 0;
|
|
733
|
+
let remainingVisionScreens = MAX_FIGMA_VISION_AUGMENTED_SCREENS;
|
|
561
734
|
for (const { row, ir } of parsed) {
|
|
562
735
|
const extraItems = [...(navItems.get(ir.id) ?? []), ...(a11yItems.get(ir.id) ?? [])];
|
|
563
736
|
const baseline = QualityIntelligenceFigma.deriveScreenTestBaseline(ir, extraItems);
|
|
564
|
-
const
|
|
565
|
-
|
|
566
|
-
|
|
737
|
+
const visionSlot = consumeVisionProviderForScreen(vision, remainingVisionScreens, ir, baseline);
|
|
738
|
+
remainingVisionScreens = visionSlot.remaining;
|
|
739
|
+
const augmented = visionAugmentedScreenText(baseline, ir, record, row, visionSlot.provider);
|
|
740
|
+
const nextDoc = corpusDocFromFigmaScreen(row, ir, augmented, perDocBudget);
|
|
741
|
+
if (nextDoc === undefined)
|
|
567
742
|
continue;
|
|
568
|
-
|
|
569
|
-
if (docs.length > 0 && totalBytes + bytes > perRunBudget)
|
|
743
|
+
if (!figmaDocFitsBudget(docs, totalBytes, nextDoc.bytes, perRunBudget))
|
|
570
744
|
break;
|
|
571
|
-
docs.push(
|
|
572
|
-
totalBytes += bytes;
|
|
745
|
+
docs.push(nextDoc.doc);
|
|
746
|
+
totalBytes += nextDoc.bytes;
|
|
747
|
+
}
|
|
748
|
+
return docs;
|
|
749
|
+
}
|
|
750
|
+
async function figmaScreenDocsAsync(record, vision, byteBudget) {
|
|
751
|
+
const perRunBudget = Math.min(CAPSULE_BUDGET_BYTES, byteBudget);
|
|
752
|
+
const perDocBudget = Math.min(CAPSULE_MAX_BYTES_PER_DOCUMENT, perRunBudget);
|
|
753
|
+
const parsed = parseScreens(record);
|
|
754
|
+
const navItems = navItemsByScreen(parsed, record.links ?? []);
|
|
755
|
+
const a11yItems = a11yItemsByScreen(parsed);
|
|
756
|
+
const docs = [];
|
|
757
|
+
let totalBytes = 0;
|
|
758
|
+
let remainingVisionScreens = MAX_FIGMA_VISION_AUGMENTED_SCREENS;
|
|
759
|
+
for (const { row, ir } of parsed) {
|
|
760
|
+
const extraItems = [...(navItems.get(ir.id) ?? []), ...(a11yItems.get(ir.id) ?? [])];
|
|
761
|
+
const baseline = QualityIntelligenceFigma.deriveScreenTestBaseline(ir, extraItems);
|
|
762
|
+
const visionSlot = consumeVisionProviderForScreen(vision, remainingVisionScreens, ir, baseline);
|
|
763
|
+
remainingVisionScreens = visionSlot.remaining;
|
|
764
|
+
const augmented = await visionAugmentedScreenTextAsync(baseline, ir, record, row, visionSlot.provider);
|
|
765
|
+
const nextDoc = corpusDocFromFigmaScreen(row, ir, augmented, perDocBudget);
|
|
766
|
+
if (nextDoc === undefined)
|
|
767
|
+
continue;
|
|
768
|
+
if (!figmaDocFitsBudget(docs, totalBytes, nextDoc.bytes, perRunBudget))
|
|
769
|
+
break;
|
|
770
|
+
docs.push(nextDoc.doc);
|
|
771
|
+
totalBytes += nextDoc.bytes;
|
|
573
772
|
}
|
|
574
773
|
return docs;
|
|
575
774
|
}
|
|
@@ -586,7 +785,7 @@ function ingestFigmaSnapshot(source, index, registeredAt, loader, vision, byteBu
|
|
|
586
785
|
if (docs.length === 0) {
|
|
587
786
|
throw new QiIngestionError("QI_SOURCE_EMPTY", `Figma snapshot "${label}" produced no usable screen baseline.`);
|
|
588
787
|
}
|
|
589
|
-
const
|
|
788
|
+
const joinedFingerprintText = docs.map((d) => d.fingerprintText ?? d.text).join("\n");
|
|
590
789
|
const envelopeId = envelopeIdFor(index, label, source.snapshotRunId);
|
|
591
790
|
// A stored Figma Snapshot is figma evidence, not repository context. Use the dedicated
|
|
592
791
|
// `figma-evidence` envelope kind (#278 AC2 "represented as an explicit connector-backed source"
|
|
@@ -599,11 +798,40 @@ function ingestFigmaSnapshot(source, index, registeredAt, loader, vision, byteBu
|
|
|
599
798
|
provenance: {
|
|
600
799
|
origin: `figma-snapshot:${source.snapshotRunId}`,
|
|
601
800
|
registeredAt,
|
|
602
|
-
integrityHashSha256Hex: sha256Hex(
|
|
801
|
+
integrityHashSha256Hex: sha256Hex(joinedFingerprintText),
|
|
603
802
|
},
|
|
604
803
|
localRef: stableLocalRef("figma-snapshot", source.snapshotRunId),
|
|
605
804
|
};
|
|
606
|
-
const atoms = docs.map((d) => capsuleDocAtom(d.documentId, d.text, envelopeId));
|
|
805
|
+
const atoms = docs.map((d) => capsuleDocAtom(d.documentId, d.text, envelopeId, d.fingerprintText ?? d.text));
|
|
806
|
+
return { envelope, atoms };
|
|
807
|
+
}
|
|
808
|
+
async function ingestFigmaSnapshotAsync(source, index, registeredAt, loader, vision, byteBudget) {
|
|
809
|
+
const label = sanitiseLabel(source.label);
|
|
810
|
+
const record = loader(source.snapshotRunId);
|
|
811
|
+
if (record === undefined) {
|
|
812
|
+
throw new QiIngestionError("QI_FIGMA_SNAPSHOT_UNAVAILABLE", `Figma snapshot "${label}" could not be found or read. Build the snapshot first.`);
|
|
813
|
+
}
|
|
814
|
+
if (record.screens.length === 0) {
|
|
815
|
+
throw new QiIngestionError("QI_SOURCE_EMPTY", `Figma snapshot "${label}" has no screens.`);
|
|
816
|
+
}
|
|
817
|
+
const docs = await figmaScreenDocsAsync(record, vision, byteBudget);
|
|
818
|
+
if (docs.length === 0) {
|
|
819
|
+
throw new QiIngestionError("QI_SOURCE_EMPTY", `Figma snapshot "${label}" produced no usable screen baseline.`);
|
|
820
|
+
}
|
|
821
|
+
const joinedFingerprintText = docs.map((d) => d.fingerprintText ?? d.text).join("\n");
|
|
822
|
+
const envelopeId = envelopeIdFor(index, label, source.snapshotRunId);
|
|
823
|
+
const envelope = {
|
|
824
|
+
id: envelopeId,
|
|
825
|
+
kind: "figma-evidence",
|
|
826
|
+
displayLabel: label,
|
|
827
|
+
provenance: {
|
|
828
|
+
origin: `figma-snapshot:${source.snapshotRunId}`,
|
|
829
|
+
registeredAt,
|
|
830
|
+
integrityHashSha256Hex: sha256Hex(joinedFingerprintText),
|
|
831
|
+
},
|
|
832
|
+
localRef: stableLocalRef("figma-snapshot", source.snapshotRunId),
|
|
833
|
+
};
|
|
834
|
+
const atoms = docs.map((d) => capsuleDocAtom(d.documentId, d.text, envelopeId, d.fingerprintText ?? d.text));
|
|
607
835
|
return { envelope, atoms };
|
|
608
836
|
}
|
|
609
837
|
function ingestOne(source, index, registeredAt, capsuleResolver, figmaSnapshotLoader, figmaVision, byteBudget) {
|
|
@@ -631,6 +859,15 @@ function ingestOne(source, index, registeredAt, capsuleResolver, figmaSnapshotLo
|
|
|
631
859
|
return ingestFigmaSnapshot(source, index, registeredAt, figmaSnapshotLoader, figmaVision, byteBudget);
|
|
632
860
|
}
|
|
633
861
|
}
|
|
862
|
+
async function ingestOneAsync(source, index, registeredAt, capsuleResolver, figmaSnapshotLoader, figmaVision, byteBudget) {
|
|
863
|
+
if (source.kind !== "figma-snapshot") {
|
|
864
|
+
return ingestOne(source, index, registeredAt, capsuleResolver, figmaSnapshotLoader, figmaVision, byteBudget);
|
|
865
|
+
}
|
|
866
|
+
if (figmaSnapshotLoader === undefined) {
|
|
867
|
+
throw new QiIngestionError("QI_FIGMA_SNAPSHOT_UNAVAILABLE", "Figma-snapshot sources are unavailable: the evidence directory is not configured.");
|
|
868
|
+
}
|
|
869
|
+
return ingestFigmaSnapshotAsync(source, index, registeredAt, figmaSnapshotLoader, figmaVision, byteBudget);
|
|
870
|
+
}
|
|
634
871
|
/**
|
|
635
872
|
* Ingest one source into the accumulator (Epic #729 N+1 resilience). On a per-source QiIngestionError
|
|
636
873
|
* the source is recorded as skipped and ingestion continues with the rest; a genuine (non-coded) bug
|
|
@@ -665,6 +902,56 @@ function ingestSourceInto(acc, source, index, input, budgets) {
|
|
|
665
902
|
atomCount: taken.length,
|
|
666
903
|
});
|
|
667
904
|
}
|
|
905
|
+
async function ingestSourceIntoAsync(acc, source, index, input, budgets) {
|
|
906
|
+
let ingested;
|
|
907
|
+
try {
|
|
908
|
+
ingested = await ingestOneAsync(source, index, input.registeredAt, input.capsuleResolver, input.figmaSnapshotLoader, input.figmaVision, budgets.byteBudget);
|
|
909
|
+
}
|
|
910
|
+
catch (error) {
|
|
911
|
+
if (!(error instanceof QiIngestionError))
|
|
912
|
+
throw error;
|
|
913
|
+
acc.firstSkipError ??= error;
|
|
914
|
+
acc.skippedSources.push({
|
|
915
|
+
label: sanitiseLabel(source.label),
|
|
916
|
+
kind: source.kind,
|
|
917
|
+
code: error.code,
|
|
918
|
+
message: error.message,
|
|
919
|
+
});
|
|
920
|
+
return;
|
|
921
|
+
}
|
|
922
|
+
const { envelope, atoms } = ingested;
|
|
923
|
+
const take = Math.min(budgets.atomBudget, MAX_TOTAL_ATOMS - acc.ingestedAtoms.length);
|
|
924
|
+
const taken = take <= 0 ? [] : atoms.slice(0, take);
|
|
925
|
+
acc.envelopes.push(envelope);
|
|
926
|
+
acc.ingestedAtoms.push(...taken);
|
|
927
|
+
acc.sourceSummaries.push({
|
|
928
|
+
label: envelope.displayLabel,
|
|
929
|
+
kind: source.kind,
|
|
930
|
+
atomCount: taken.length,
|
|
931
|
+
});
|
|
932
|
+
}
|
|
933
|
+
function emptyDriftIngestionResult(input, droppedSourceCount, skippedSources) {
|
|
934
|
+
return {
|
|
935
|
+
envelopes: [],
|
|
936
|
+
ingestedAtoms: [],
|
|
937
|
+
provenanceRefs: {
|
|
938
|
+
envelopeIds: [],
|
|
939
|
+
auditSummaryId: auditSummaryIdFor(input.runId),
|
|
940
|
+
},
|
|
941
|
+
sourceSummaries: [],
|
|
942
|
+
droppedSourceCount,
|
|
943
|
+
skippedSources,
|
|
944
|
+
};
|
|
945
|
+
}
|
|
946
|
+
function allowEmptyDriftIngestion(input, acc, droppedSourceCount) {
|
|
947
|
+
if (input.allowEmpty !== true)
|
|
948
|
+
return undefined;
|
|
949
|
+
const blockingSkip = acc.skippedSources.find((source) => source.code !== "QI_SOURCE_EMPTY");
|
|
950
|
+
if (blockingSkip !== undefined) {
|
|
951
|
+
throw new QiIngestionError(blockingSkip.code, blockingSkip.message);
|
|
952
|
+
}
|
|
953
|
+
return emptyDriftIngestionResult(input, droppedSourceCount, acc.skippedSources);
|
|
954
|
+
}
|
|
668
955
|
export function ingestInlineSources(input) {
|
|
669
956
|
// Read through the typed property in the loop: `Array.isArray` would widen a local binding of the
|
|
670
957
|
// readonly union array to `any[]`, so the guard checks length on the typed property directly.
|
|
@@ -699,6 +986,51 @@ export function ingestInlineSources(input) {
|
|
|
699
986
|
ingestSourceInto(acc, source, i, input, budgets);
|
|
700
987
|
}
|
|
701
988
|
if (acc.ingestedAtoms.length === 0) {
|
|
989
|
+
const emptyDrift = allowEmptyDriftIngestion(input, acc, droppedSourceCount);
|
|
990
|
+
if (emptyDrift !== undefined)
|
|
991
|
+
return emptyDrift;
|
|
992
|
+
throw (acc.firstSkipError ??
|
|
993
|
+
new QiIngestionError("QI_SOURCE_EMPTY", "No usable evidence was produced from the sources."));
|
|
994
|
+
}
|
|
995
|
+
return {
|
|
996
|
+
envelopes: acc.envelopes,
|
|
997
|
+
ingestedAtoms: acc.ingestedAtoms,
|
|
998
|
+
provenanceRefs: {
|
|
999
|
+
envelopeIds: acc.envelopes.map((e) => String(e.id)),
|
|
1000
|
+
auditSummaryId: auditSummaryIdFor(input.runId),
|
|
1001
|
+
},
|
|
1002
|
+
sourceSummaries: acc.sourceSummaries,
|
|
1003
|
+
droppedSourceCount,
|
|
1004
|
+
skippedSources: acc.skippedSources,
|
|
1005
|
+
};
|
|
1006
|
+
}
|
|
1007
|
+
export async function ingestInlineSourcesAsync(input) {
|
|
1008
|
+
const allSources = input.request.sources;
|
|
1009
|
+
if (allSources.length === 0) {
|
|
1010
|
+
throw new QiIngestionError("QI_NO_SOURCES", "At least one source is required to start a run.");
|
|
1011
|
+
}
|
|
1012
|
+
const sources = allSources.slice(0, MAX_QI_SOURCES);
|
|
1013
|
+
const droppedSourceCount = allSources.length - sources.length;
|
|
1014
|
+
const budgets = {
|
|
1015
|
+
atomBudget: perSourceAtomBudget(MAX_TOTAL_ATOMS, sources.length),
|
|
1016
|
+
byteBudget: perSourceByteBudget(sources.length),
|
|
1017
|
+
};
|
|
1018
|
+
const acc = {
|
|
1019
|
+
envelopes: [],
|
|
1020
|
+
ingestedAtoms: [],
|
|
1021
|
+
sourceSummaries: [],
|
|
1022
|
+
skippedSources: [],
|
|
1023
|
+
};
|
|
1024
|
+
for (let i = 0; i < sources.length; i += 1) {
|
|
1025
|
+
const source = sources[i];
|
|
1026
|
+
if (source === undefined)
|
|
1027
|
+
continue;
|
|
1028
|
+
await ingestSourceIntoAsync(acc, source, i, input, budgets);
|
|
1029
|
+
}
|
|
1030
|
+
if (acc.ingestedAtoms.length === 0) {
|
|
1031
|
+
const emptyDrift = allowEmptyDriftIngestion(input, acc, droppedSourceCount);
|
|
1032
|
+
if (emptyDrift !== undefined)
|
|
1033
|
+
return emptyDrift;
|
|
702
1034
|
throw (acc.firstSkipError ??
|
|
703
1035
|
new QiIngestionError("QI_SOURCE_EMPTY", "No usable evidence was produced from the sources."));
|
|
704
1036
|
}
|
package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runRegistry.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/runRegistry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAErF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjF,UAAU,WAAW;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkC;IAEvD,oGAAoG;IACpG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe;IAY7D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;IAMzE,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,IAAI;IAM5E,oFAAoF;IACpF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAO9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC,oFAAoF;IACpF,mBAAmB,IAAI,SAAS,+BAA+B,EAAE;
|
|
1
|
+
{"version":3,"file":"runRegistry.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/runRegistry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAErF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjF,UAAU,WAAW;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkC;IAEvD,oGAAoG;IACpG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe;IAY7D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;IAMzE,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,IAAI;IAM5E,oFAAoF;IACpF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAO9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC,oFAAoF;IACpF,mBAAmB,IAAI,SAAS,+BAA+B,EAAE;IAYjE,wCAAwC;IACxC,KAAK,IAAI,IAAI;CAId;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -51,6 +51,8 @@ export class QiRunRegistry {
|
|
|
51
51
|
requestedAt: run.requestedAt,
|
|
52
52
|
completedAt: null,
|
|
53
53
|
totals: { ...run.totals },
|
|
54
|
+
// An in-flight run is not yet persisted and cannot have been reviewed (Issue #282 FIX A11y-2).
|
|
55
|
+
reviewState: "open",
|
|
54
56
|
}));
|
|
55
57
|
}
|
|
56
58
|
/** Test seam: clear all active runs. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/runRoutes.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAKV,mCAAmC,
|
|
1
|
+
{"version":3,"file":"runRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/runRoutes.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAKV,mCAAmC,EAGpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,IAAI,EAAE,EAAE,MAAM,+BAA+B,CAAC;AAG/E,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA+N1D,wBAAgB,aAAa,CAC3B,KAAK,EAAE,EAAE,CAAC,2BAA2B,EACrC,MAAM,EAAE,QAAQ,GACf,mCAAmC,CAgBrC;AA8ED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,CAAC,CAoBzB;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,WAAW,CAStF;AAED,eAAO,MAAM,4BAA4B,EAAE,SAAS,eAAe,EAOlE,CAAC"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { randomUUID } from "node:crypto";
|
|
11
11
|
import { isAbsolute } from "node:path";
|
|
12
12
|
import { SSE_HEADERS } from "../sse.js";
|
|
13
|
+
import { writeOrDestroy } from "../sse-write.js";
|
|
13
14
|
import { STREAMING, } from "../routes.js";
|
|
14
15
|
import { executeQiRun, QiGenerationError, QiIngestionError } from "./runExecution.js";
|
|
15
16
|
import { qiRunRegistry } from "./runRegistry.js";
|
|
@@ -212,6 +213,13 @@ function classifyStartError(error) {
|
|
|
212
213
|
}
|
|
213
214
|
return { code: "QI_RUN_FAILED", message: "The Quality Intelligence run failed to complete." };
|
|
214
215
|
}
|
|
216
|
+
// Project the internal QiSkippedSource[] (which also carries a free-text `message`) to exactly the
|
|
217
|
+
// wire contract QualityIntelligenceSkippedSource[] ({label, kind, code}). Streaming `message`
|
|
218
|
+
// verbatim would widen the browser-facing SSE surface — the `accepted` frame bypasses deps.redactor,
|
|
219
|
+
// unlike `event` — so it is dropped here (Issue #730).
|
|
220
|
+
function toWireSkippedSources(skipped) {
|
|
221
|
+
return skipped.map((s) => ({ label: s.label, kind: s.kind, code: s.code }));
|
|
222
|
+
}
|
|
215
223
|
async function streamRunExecution(deps, request, runId, registeredAt, signal, write) {
|
|
216
224
|
const totals = { candidates: 0, findings: 0, exports: 0 };
|
|
217
225
|
let terminal = "failed";
|
|
@@ -233,7 +241,7 @@ async function streamRunExecution(deps, request, runId, registeredAt, signal, wr
|
|
|
233
241
|
? { droppedSourceCount: accepted.droppedSourceCount }
|
|
234
242
|
: {}),
|
|
235
243
|
...(accepted.skippedSources.length > 0
|
|
236
|
-
? { skippedSources: accepted.skippedSources }
|
|
244
|
+
? { skippedSources: toWireSkippedSources(accepted.skippedSources) }
|
|
237
245
|
: {}),
|
|
238
246
|
});
|
|
239
247
|
},
|
|
@@ -263,14 +271,16 @@ export async function handleStartQiRun(ctx, deps) {
|
|
|
263
271
|
return parsed.result;
|
|
264
272
|
const runId = `qi-run-${randomUUID()}`;
|
|
265
273
|
const registeredAt = new Date().toISOString();
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
ctx.res.write(`data: ${JSON.stringify(message)}\n\n`);
|
|
269
|
-
};
|
|
274
|
+
// Register and wire the disconnect listener BEFORE writeHead to close the narrow race where a
|
|
275
|
+
// client disconnects after parsing succeeds but before the response is committed.
|
|
270
276
|
const controller = qiRunRegistry.register(runId, registeredAt);
|
|
271
277
|
ctx.res.on("close", () => {
|
|
272
278
|
controller.abort();
|
|
273
279
|
});
|
|
280
|
+
ctx.res.writeHead(200, { ...SSE_HEADERS, "X-Accel-Buffering": "no" });
|
|
281
|
+
const write = (message) => {
|
|
282
|
+
writeOrDestroy(ctx.res, `data: ${JSON.stringify(message)}\n\n`, controller);
|
|
283
|
+
};
|
|
274
284
|
await streamRunExecution(deps, parsed.request, runId, registeredAt, controller.signal, write);
|
|
275
285
|
ctx.res.end();
|
|
276
286
|
return STREAMING;
|