@oscharko-dev/keiko 0.2.0-beta.5 → 0.2.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -14
- package/dist/ui/csp-hashes.json +17 -22
- package/dist/ui/static/404.html +1 -1
- package/dist/ui/static/__next.__PAGE__.txt +2 -2
- package/dist/ui/static/__next._full.txt +3 -3
- package/dist/ui/static/__next._head.txt +1 -1
- package/dist/ui/static/__next._index.txt +2 -2
- package/dist/ui/static/__next._tree.txt +2 -2
- package/dist/ui/static/_next/static/chunks/0-qhhdvxg2j_y.js +1 -0
- package/dist/ui/static/_next/static/chunks/0ke4ratkgvcxo.css +1 -0
- package/dist/ui/static/_next/static/chunks/0xhu-pfsyvbmx.js +5 -0
- package/dist/ui/static/_next/static/chunks/3vf3oh2-sl2nc.js +1 -0
- package/dist/ui/static/_next/static/chunks/3wmd4-2vznp2g.js +106 -0
- package/dist/ui/static/_next/static/chunks/turbopack-18q50fp2-1qbt.js +1 -0
- package/dist/ui/static/_not-found/__next._full.txt +2 -2
- package/dist/ui/static/_not-found/__next._head.txt +1 -1
- package/dist/ui/static/_not-found/__next._index.txt +2 -2
- package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/ui/static/_not-found/__next._not-found.txt +1 -1
- package/dist/ui/static/_not-found/__next._tree.txt +2 -2
- package/dist/ui/static/_not-found.html +1 -1
- package/dist/ui/static/_not-found.txt +2 -2
- package/dist/ui/static/index.html +1 -1
- package/dist/ui/static/index.txt +3 -3
- package/dist/ui/static/launch/__next._full.txt +3 -3
- package/dist/ui/static/launch/__next._head.txt +1 -1
- package/dist/ui/static/launch/__next._index.txt +2 -2
- package/dist/ui/static/launch/__next._tree.txt +2 -2
- package/dist/ui/static/launch/__next.launch.__PAGE__.txt +2 -2
- package/dist/ui/static/launch/__next.launch.txt +1 -1
- package/dist/ui/static/launch.html +1 -1
- package/dist/ui/static/launch.txt +3 -3
- package/dist/ui/static/local-knowledge/__next._full.txt +3 -3
- package/dist/ui/static/local-knowledge/__next._head.txt +1 -1
- package/dist/ui/static/local-knowledge/__next._index.txt +2 -2
- package/dist/ui/static/local-knowledge/__next._tree.txt +2 -2
- package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +2 -2
- package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next._full.txt +3 -3
- package/dist/ui/static/local-knowledge/capsule/__next._head.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next._index.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule.html +1 -1
- package/dist/ui/static/local-knowledge/capsule.txt +3 -3
- package/dist/ui/static/local-knowledge.html +1 -1
- package/dist/ui/static/local-knowledge.txt +3 -3
- package/dist/ui/static/memoriaviva/__next._full.txt +6 -6
- package/dist/ui/static/memoriaviva/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +4 -4
- package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +4 -4
- package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation.html +1 -1
- package/dist/ui/static/memoriaviva/consolidation.txt +4 -4
- package/dist/ui/static/memoriaviva/detail/__next._full.txt +6 -6
- package/dist/ui/static/memoriaviva/detail/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/detail/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +4 -4
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +1 -1
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/detail.html +1 -1
- package/dist/ui/static/memoriaviva/detail.txt +6 -6
- package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +4 -4
- package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue.html +1 -1
- package/dist/ui/static/memoriaviva/review-queue.txt +4 -4
- package/dist/ui/static/memoriaviva.html +1 -1
- package/dist/ui/static/memoriaviva.txt +6 -6
- package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.d.ts +24 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.js +108 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +7 -4
- package/node_modules/@oscharko-dev/keiko-cli/dist/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/index.js +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/init.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-cli/dist/init.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/init.js +4 -4
- package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.d.ts +6 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.js +24 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/launcher.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/launcher.js +5 -7
- package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.js +75 -30
- package/node_modules/@oscharko-dev/keiko-cli/dist/memory.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-cli/dist/memory.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/memory.js +76 -7
- package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +50 -2
- package/node_modules/@oscharko-dev/keiko-cli/dist/runner.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/runner.js +20 -4
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +17 -14
- package/node_modules/@oscharko-dev/keiko-cli/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +1 -2
- package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/gateway.d.ts +12 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/gateway.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +4 -2
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.d.ts +13 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.js +7 -6
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-internal.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-internal.js +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-operations.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-workflow-port.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-workflow-port.js +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +21 -4
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.js +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +26 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.d.ts +5 -3
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.js +29 -3
- package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.js +58 -0
- package/node_modules/@oscharko-dev/keiko-contracts/package.json +5 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/dist/surface-parity.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +62 -13
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +3 -3
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +31 -11
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +35 -3
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.js +107 -3
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +15 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +248 -36
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +17 -3
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +26 -22
- package/node_modules/@oscharko-dev/keiko-evidence/dist/side-file.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/side-file.js +17 -5
- package/node_modules/@oscharko-dev/keiko-evidence/dist/store.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/store.js +128 -12
- package/node_modules/@oscharko-dev/keiko-evidence/dist/workflow-evidence.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/workflow-evidence.js +1 -3
- package/node_modules/@oscharko-dev/keiko-evidence/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-harness/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +1 -2
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +45 -21
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/media-type.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/media-type.js +1 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +11 -3
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.js +42 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +34 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/report.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/report.js +7 -6
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner.js +7 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.js +2 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +121 -3
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +34 -4
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +63 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +4 -7
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/html-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/html-parser.js +67 -11
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +3 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +39 -3
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/null-ocr-adapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/ocr-pipeline-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/ocr-pipeline-parser.js +46 -11
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.js +2 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +114 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.js +425 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.d.ts +9 -4
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.js +11 -6
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +15 -2
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +220 -7
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/types.d.ts +2 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +3 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +4 -2
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.js +17 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/errors.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/errors.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.js +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/salience.js +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.js +5 -0
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/consolidate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/consolidate.js +93 -30
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/stale.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/stale.js +3 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.d.ts +5 -0
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.js +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-governance/dist/forget.js +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-governance/dist/types.js +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/context.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/context.js +61 -18
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/ranking.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/ranking.js +3 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/retrieve.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/retrieve.js +26 -4
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/types.d.ts +9 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.js +21 -0
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/migrate-encrypt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/migrate-encrypt.js +24 -4
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.js +27 -4
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.js +21 -4
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/types.d.ts +22 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/validate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/validate.js +3 -0
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/vault.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/vault.js +105 -28
- package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +83 -69
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.d.ts +3 -2
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.js +20 -16
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/gateway.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/gateway.js +9 -3
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +29 -3
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.d.ts +4 -4
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.js +3 -3
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.js +51 -6
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.d.ts +20 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.js +122 -7
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.d.ts +10 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.js +33 -11
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.js +21 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/routing.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/routing.js +2 -13
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.js +18 -2
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/types.d.ts +5 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.d.ts +35 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.js +74 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/deduplication.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/deduplication.js +6 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +64 -19
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +3 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.d.ts +6 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.js +22 -9
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +4 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +28 -12
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +123 -33
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +7 -4
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +13 -17
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +35 -12
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +54 -6
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +29 -10
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -4
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/requirementExcerpt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/requirementExcerpt.js +15 -6
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.js +162 -6
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts +14 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.js +50 -12
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +4 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.js +8 -3
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/traceability.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/traceability.js +12 -9
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.js +7 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.d.ts +10 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.js +14 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/index.js +3 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.js +97 -50
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.js +35 -7
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.js +2 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-sdk/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.d.ts +11 -0
- package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.js +13 -0
- package/node_modules/@oscharko-dev/keiko-security/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +50 -12
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.js +10 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.js +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +4 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +44 -69
- package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.js +165 -28
- package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.js +4 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +115 -22
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +54 -21
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +11 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +7 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +26 -14
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.js +52 -27
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.d.ts +10 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.js +44 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-handlers.js +79 -57
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-registry.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-registry.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-conv-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-conv-handlers.js +6 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-conversation-context.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-diagnostics.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-diagnostics.js +16 -9
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts +3 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.js +538 -87
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.d.ts +6 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.js +17 -38
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-retention.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-retention.js +7 -15
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-salience.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-salience.js +17 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-scope-sanitizer.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-scope-sanitizer.js +19 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-target-resolver.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-target-resolver.js +4 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.js +108 -27
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.js +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.js +61 -7
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.js +9 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConcurrency.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConcurrency.js +2 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts +6 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.js +16 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +3 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.js +3 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.d.ts +5 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.js +10 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaReadiness.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaReadiness.js +11 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.js +71 -10
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +86 -23
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaTokenSource.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaTokenSource.js +4 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaUrl.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaUrl.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaCodegenRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaCodegenRoutes.js +60 -20
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +11 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +144 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +84 -15
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -7
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +206 -42
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts +3 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +69 -65
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts +15 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.js +56 -39
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +382 -75
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.js +14 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts +3 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.js +44 -16
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +336 -47
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +15 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.js +36 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +61 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +16 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/run-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/run-handlers.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.d.ts +9 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.js +26 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +16 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/store/messages.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/terminal.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/dist/patch-normalize.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/dist/patch-normalize.js +13 -7
- package/node_modules/@oscharko-dev/keiko-tools/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-verification/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.js +16 -18
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/prompt.js +6 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/workflow.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/workflow.js +3 -3
- package/node_modules/@oscharko-dev/keiko-workflows/dist/governed-handoff.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/descriptors.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts +18 -2
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +209 -54
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts +4 -4
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +4 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/unit-tests/target-guard.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +1 -2
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +2 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +6 -2
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/package.json +1 -1
- package/package.json +23 -6
- package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +0 -2
- package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +0 -1
- package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +0 -1
- package/dist/ui/static/_next/static/chunks/1m-kvwm6_90_3.css +0 -1
- package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +0 -1
- package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +0 -4
- package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +0 -1
- package/dist/ui/static/_next/static/chunks/2ngm8iwdb1cbv.js +0 -106
- package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +0 -1
- package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +0 -1
- package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +0 -1
- package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +0 -1
- package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +0 -1
- /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → frhs0YcUqCPLHal-wHjDP}/_buildManifest.js +0 -0
- /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → frhs0YcUqCPLHal-wHjDP}/_clientMiddlewareManifest.js +0 -0
- /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → frhs0YcUqCPLHal-wHjDP}/_ssgManifest.js +0 -0
package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js
CHANGED
|
@@ -9,8 +9,12 @@
|
|
|
9
9
|
//
|
|
10
10
|
// Output is a reviewable proposal (an ordered file list): `index.html` (links every screen),
|
|
11
11
|
// `tokens.css` (the `:root` custom-property table), and one `screens/<id>.html` per screen. Pure: no
|
|
12
|
-
// IO, no model, no
|
|
13
|
-
// are HTML-escaped so the reviewable artifact cannot inject markup
|
|
12
|
+
// IO, no model, no clock — a given plan yields a byte-identical artifact. All text and attribute values
|
|
13
|
+
// are HTML-escaped so the reviewable artifact cannot inject markup, and unsafe Unicode format chars
|
|
14
|
+
// (bidi-override / zero-width / C0-C1 / DEL) are stripped from every emitted string before escaping —
|
|
15
|
+
// these are not HTML metacharacters and would otherwise survive into the artifact, enabling
|
|
16
|
+
// Trojan-source spoofing and zero-width-split secrets that evade redaction (same invariant the QI atom
|
|
17
|
+
// path enforces). The TAB/LF/CR trio and all ordinary text survive, so clean boards are unchanged.
|
|
14
18
|
//
|
|
15
19
|
// CSS value handling: fontFamily tokens are emitted as quoted strings with embedded double-quotes
|
|
16
20
|
// escaped and control/injection characters ('{', '}', ';', '</', '*/', newlines) stripped, so a
|
|
@@ -19,10 +23,11 @@
|
|
|
19
23
|
// rather than emitted.
|
|
20
24
|
//
|
|
21
25
|
// Screen file names: Figma ids may contain ':' (Windows-invalid) and ';' (URI scheme risk in hrefs).
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
// the
|
|
26
|
+
// Stored evidence can also be tampered with, so screen ids are normalized to one safe POSIX path
|
|
27
|
+
// segment ([A-Za-z0-9_-]) before they become CodeFile.path / href material. Collisions after
|
|
28
|
+
// substitution are resolved by a numeric suffix. All relative hrefs inside screen HTML are prefixed
|
|
29
|
+
// with './' so they are relative to the screens/ directory, not ambiguous URI-scheme fragments. The
|
|
30
|
+
// raw screen id is preserved in the data-screen-id attribute.
|
|
26
31
|
//
|
|
27
32
|
// Layout / sizing / cornerRadius / typography (from IrNode, threaded through EmissionElement):
|
|
28
33
|
// For nodes with auto-layout, a deterministic CSS class is emitted (name = "n-" + sanitized node id)
|
|
@@ -34,6 +39,7 @@
|
|
|
34
39
|
// inline).
|
|
35
40
|
// What is NOT reproduced: absolute positioning, constraints, effects (shadows/blur), image fills
|
|
36
41
|
// beyond refs, grid layout, overflow, z-ordering, component variants.
|
|
42
|
+
import { stripUnsafeFormatChars } from "../assertions.js";
|
|
37
43
|
const ADAPTER_NAME = "html-css";
|
|
38
44
|
const INDENT = " ";
|
|
39
45
|
const HTML_ESCAPES = {
|
|
@@ -43,19 +49,34 @@ const HTML_ESCAPES = {
|
|
|
43
49
|
'"': """,
|
|
44
50
|
"'": "'",
|
|
45
51
|
};
|
|
46
|
-
|
|
52
|
+
// Strip unsafe Unicode format chars (bidi-override / zero-width / C0-C1 / DEL) BEFORE HTML-escaping.
|
|
53
|
+
// These are NOT HTML metacharacters, so escaping alone passes them verbatim into the reviewable
|
|
54
|
+
// artifact — enabling Trojan-source spoofing and zero-width-split secrets that evade redaction. This
|
|
55
|
+
// mirrors the QI atom-text invariant (stripUnsafeFormatChars). Clean text is unchanged — the TAB/LF/CR
|
|
56
|
+
// trio and all ordinary/accented/CJK/emoji code points survive — so deterministic output stays
|
|
57
|
+
// byte-identical for non-hostile boards.
|
|
58
|
+
const escapeHtml = (value) => stripUnsafeFormatChars(value).replace(/[&<>"']/gu, (char) => HTML_ESCAPES[char] ?? char);
|
|
47
59
|
const indent = (depth) => INDENT.repeat(depth);
|
|
48
60
|
// ─── Fix #7: safe screen file names ──────────────────────────────────────────
|
|
49
61
|
//
|
|
50
|
-
// Figma ids contain ':' (invalid on Windows file paths) and INSTANCE ids contain ';' which is
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
//
|
|
62
|
+
// Figma ids contain ':' (invalid on Windows file paths) and INSTANCE ids contain ';' which is parsed
|
|
63
|
+
// as a URI scheme separator in sibling hrefs (e.g. "I123:456;789:12.html" → opaque URI). A tampered
|
|
64
|
+
// stored snapshot could also contain slashes, backslashes, or other path metacharacters. Normalize to
|
|
65
|
+
// a single artifact-relative filename segment. Ids are unique before substitution so collisions are
|
|
66
|
+
// rare, but a numeric suffix is appended defensively.
|
|
67
|
+
const SAFE_SCREEN_FILE_RE = /[^A-Za-z0-9_-]/gu;
|
|
68
|
+
function sanitizeScreenFileName(screenId) {
|
|
69
|
+
const cleaned = stripUnsafeFormatChars(screenId)
|
|
70
|
+
.replace(SAFE_SCREEN_FILE_RE, "-")
|
|
71
|
+
.replace(/-+/gu, "-")
|
|
72
|
+
.replace(/^-|-$/gu, "");
|
|
73
|
+
return cleaned.length > 0 ? cleaned : "screen";
|
|
74
|
+
}
|
|
54
75
|
function buildSafeNameIndex(screens) {
|
|
55
76
|
const seen = new Map();
|
|
56
77
|
const result = new Map();
|
|
57
78
|
for (const screen of screens) {
|
|
58
|
-
const base = screen.screenId
|
|
79
|
+
const base = sanitizeScreenFileName(screen.screenId);
|
|
59
80
|
const count = seen.get(base) ?? 0;
|
|
60
81
|
seen.set(base, count + 1);
|
|
61
82
|
result.set(screen.screenId, count === 0 ? base : `${base}-${String(count)}`);
|
|
@@ -72,7 +93,12 @@ function buildSafeNameIndex(screens) {
|
|
|
72
93
|
// eslint-disable-next-line no-control-regex
|
|
73
94
|
const CSS_INJECTION_RE = /[{};]|<\/|\*\/|[\u0000-\u001f\u007f]/gu;
|
|
74
95
|
const safeFontFamily = (family) => {
|
|
75
|
-
|
|
96
|
+
// Strip unsafe Unicode format chars first — bidi/zero-width/C1 are NOT covered by CSS_INJECTION_RE
|
|
97
|
+
// (which only strips C0/DEL + structural injection sequences) — then escape embedded quotes. Same
|
|
98
|
+
// egress invariant as escapeHtml: these chars would otherwise survive into the quoted CSS string.
|
|
99
|
+
const cleaned = stripUnsafeFormatChars(family)
|
|
100
|
+
.replace(CSS_INJECTION_RE, "")
|
|
101
|
+
.replace(/"/gu, "\\22 ");
|
|
76
102
|
return `"${cleaned}"`;
|
|
77
103
|
};
|
|
78
104
|
// Valid CSS hex color: 3, 4, 6, or 8 hex digits.
|
|
@@ -95,8 +121,8 @@ const spaceVar = (index) => `--space-${String(index + 1)}`;
|
|
|
95
121
|
const radiusVar = (index) => `--radius-${String(index + 1)}`;
|
|
96
122
|
const fontVar = (index) => `--font-${String(index + 1)}`;
|
|
97
123
|
// Typography key used to match per-node typography against the global token table.
|
|
98
|
-
const typographyKey = (t) => `${t.fontFamily}|${String(t.fontSize)}|${String(t.fontWeight)}`;
|
|
99
|
-
const typographyTokenKey = (t) => `${t.fontFamily}|${String(t.fontSize)}|${String(t.fontWeight)}`;
|
|
124
|
+
const typographyKey = (t) => `${t.fontFamily}|${String(t.fontSize)}|${String(t.fontWeight)}|${String(t.lineHeight ?? "")}`;
|
|
125
|
+
const typographyTokenKey = (t) => `${t.fontFamily}|${String(t.fontSize)}|${String(t.fontWeight)}|${String(t.lineHeight)}`;
|
|
100
126
|
const buildTokenLookups = (tokens) => {
|
|
101
127
|
const colorMap = new Map();
|
|
102
128
|
tokens.colors.forEach((token, i) => {
|
|
@@ -106,29 +132,70 @@ const buildTokenLookups = (tokens) => {
|
|
|
106
132
|
tokens.typography.forEach((token, i) => {
|
|
107
133
|
fontMap.set(typographyTokenKey(token), fontVar(i));
|
|
108
134
|
});
|
|
109
|
-
|
|
135
|
+
const spaceMap = new Map();
|
|
136
|
+
tokens.spacing.forEach((token, i) => {
|
|
137
|
+
spaceMap.set(token.value, spaceVar(i));
|
|
138
|
+
});
|
|
139
|
+
const radiusMap = new Map();
|
|
140
|
+
tokens.radius.forEach((token, i) => {
|
|
141
|
+
radiusMap.set(token.value, radiusVar(i));
|
|
142
|
+
});
|
|
143
|
+
return { colorVar: colorMap, fontVar: fontMap, spaceVar: spaceMap, radiusVar: radiusMap };
|
|
110
144
|
};
|
|
111
145
|
// ─── Per-node CSS class generation ───────────────────────────────────────────
|
|
112
146
|
//
|
|
113
147
|
// A deterministic class name is derived from the node id by replacing non-alphanumeric characters
|
|
114
|
-
// with "-" and prefixing "n-".
|
|
148
|
+
// with "-" and prefixing "n-". When two raw ids sanitize to the same slug, append a stable raw-id
|
|
149
|
+
// hash to the later class so distinct Figma nodes cannot alias onto one CSS selector.
|
|
115
150
|
const sanitizeIdForClass = (id) => id.replace(/[^a-zA-Z0-9]/gu, "-");
|
|
116
|
-
const
|
|
151
|
+
const classHash = (id) => {
|
|
152
|
+
let hash = 0x811c9dc5;
|
|
153
|
+
for (let i = 0; i < id.length; i += 1) {
|
|
154
|
+
hash ^= id.charCodeAt(i);
|
|
155
|
+
hash = Math.imul(hash, 0x01000193);
|
|
156
|
+
}
|
|
157
|
+
return (hash >>> 0).toString(36);
|
|
158
|
+
};
|
|
159
|
+
const nodeClassBase = (id) => `n-${sanitizeIdForClass(id) || "node"}`;
|
|
160
|
+
const nodeClass = (id, ctx) => {
|
|
161
|
+
const existing = ctx.classMap.get(id);
|
|
162
|
+
if (existing !== undefined)
|
|
163
|
+
return existing;
|
|
164
|
+
const base = nodeClassBase(id);
|
|
165
|
+
const owner = ctx.usedClasses.get(base);
|
|
166
|
+
const cls = owner === undefined || owner === id ? base : `${base}-${classHash(id)}`;
|
|
167
|
+
ctx.usedClasses.set(cls, id);
|
|
168
|
+
ctx.classMap.set(id, cls);
|
|
169
|
+
return cls;
|
|
170
|
+
};
|
|
117
171
|
const ALIGN_CSS = {
|
|
118
172
|
start: "flex-start",
|
|
119
173
|
center: "center",
|
|
120
174
|
end: "flex-end",
|
|
121
175
|
"space-between": "space-between",
|
|
122
176
|
};
|
|
177
|
+
// Resolve a numeric spacing or radius value to a CSS token var or an inline px literal.
|
|
178
|
+
const spaceValue = (value, lookups) => {
|
|
179
|
+
const varName = lookups.spaceVar.get(value);
|
|
180
|
+
return varName !== undefined ? `var(${varName})` : `${String(value)}px`;
|
|
181
|
+
};
|
|
182
|
+
const radiusValue = (value, lookups) => {
|
|
183
|
+
const varName = lookups.radiusVar.get(value);
|
|
184
|
+
return varName !== undefined ? `var(${varName})` : `${String(value)}px`;
|
|
185
|
+
};
|
|
123
186
|
// Build CSS declarations for a layout node. Returns undefined when nothing would be emitted.
|
|
124
|
-
const layoutDeclarations = (layout) => {
|
|
187
|
+
const layoutDeclarations = (layout, lookups) => {
|
|
125
188
|
const decls = ["display: flex;", `flex-direction: ${layout.mode};`];
|
|
126
189
|
if (layout.itemSpacing !== undefined && Number.isFinite(layout.itemSpacing)) {
|
|
127
|
-
decls.push(`gap: ${
|
|
190
|
+
decls.push(`gap: ${spaceValue(layout.itemSpacing, lookups)};`);
|
|
128
191
|
}
|
|
129
192
|
if (layout.padding !== undefined) {
|
|
130
193
|
const [top, right, bottom, left] = layout.padding;
|
|
131
|
-
|
|
194
|
+
const t = spaceValue(top, lookups);
|
|
195
|
+
const r = spaceValue(right, lookups);
|
|
196
|
+
const b = spaceValue(bottom, lookups);
|
|
197
|
+
const l = spaceValue(left, lookups);
|
|
198
|
+
decls.push(`padding: ${t} ${r} ${b} ${l};`);
|
|
132
199
|
}
|
|
133
200
|
if (layout.primaryAlign !== undefined) {
|
|
134
201
|
decls.push(`justify-content: ${ALIGN_CSS[layout.primaryAlign]};`);
|
|
@@ -159,6 +226,9 @@ const typographyDeclarations = (typo, lookups) => {
|
|
|
159
226
|
decls.push(`font-weight: ${String(typo.fontWeight)};`);
|
|
160
227
|
if (Number.isFinite(typo.fontSize))
|
|
161
228
|
decls.push(`font-size: ${String(typo.fontSize)}px;`);
|
|
229
|
+
if (typo.lineHeight !== undefined && Number.isFinite(typo.lineHeight)) {
|
|
230
|
+
decls.push(`line-height: ${String(typo.lineHeight)}px;`);
|
|
231
|
+
}
|
|
162
232
|
if (typo.fontFamily.length > 0)
|
|
163
233
|
decls.push(`font-family: ${safeFontFamily(typo.fontFamily)};`);
|
|
164
234
|
return decls;
|
|
@@ -166,28 +236,36 @@ const typographyDeclarations = (typo, lookups) => {
|
|
|
166
236
|
// Walk the element tree, collect CSS rules, populate classMap.
|
|
167
237
|
const collectStyles = (element, ctx) => {
|
|
168
238
|
const decls = [
|
|
169
|
-
...(element.layout !== undefined ? layoutDeclarations(element.layout) : []),
|
|
239
|
+
...(element.layout !== undefined ? layoutDeclarations(element.layout, ctx.lookups) : []),
|
|
170
240
|
...(element.sizing !== undefined ? sizingDeclarations(element.sizing) : []),
|
|
171
241
|
...(element.cornerRadius !== undefined && Number.isFinite(element.cornerRadius)
|
|
172
|
-
? [`border-radius: ${
|
|
242
|
+
? [`border-radius: ${radiusValue(element.cornerRadius, ctx.lookups)};`]
|
|
173
243
|
: []),
|
|
174
244
|
...(element.typography !== undefined
|
|
175
245
|
? typographyDeclarations(element.typography, ctx.lookups)
|
|
176
246
|
: []),
|
|
177
247
|
];
|
|
178
248
|
if (decls.length > 0) {
|
|
179
|
-
const cls = nodeClass(element.id);
|
|
180
|
-
ctx.classMap.set(element.id, cls);
|
|
249
|
+
const cls = nodeClass(element.id, ctx);
|
|
181
250
|
ctx.rules.push(`.${cls} {`);
|
|
182
251
|
for (const decl of decls)
|
|
183
252
|
ctx.rules.push(` ${decl}`);
|
|
184
253
|
ctx.rules.push("}");
|
|
185
254
|
}
|
|
186
|
-
|
|
187
|
-
|
|
255
|
+
// renderElement discards the children of void-role elements (image/input), so collecting their
|
|
256
|
+
// styles would emit orphaned CSS rules referencing classes that appear on no rendered element.
|
|
257
|
+
// Skip the recursion for void roles to keep the stylesheet aligned with the emitted HTML.
|
|
258
|
+
if (!VOID_ROLES.has(element.role)) {
|
|
259
|
+
for (const child of element.children)
|
|
260
|
+
collectStyles(child, ctx);
|
|
261
|
+
}
|
|
188
262
|
};
|
|
189
263
|
// ─── HTML element rendering ───────────────────────────────────────────────────
|
|
190
264
|
// Fix #6: additionally emit data-node-id so the element's IR origin is traceable in the HTML output.
|
|
265
|
+
// True when this element renders any visible text — its own text or a descendant TEXT node's text.
|
|
266
|
+
// A button/link is usually a container whose visible label lives in a child TEXT node, so checking
|
|
267
|
+
// only the element's OWN `text` misses it (WCAG 4.1.2 / 2.5.3).
|
|
268
|
+
const hasRenderedText = (element) => element.text !== undefined || element.children.some(hasRenderedText);
|
|
191
269
|
function elementAttributes(element, classMap) {
|
|
192
270
|
const parts = [
|
|
193
271
|
`data-role="${escapeHtml(element.role)}"`,
|
|
@@ -203,6 +281,13 @@ function elementAttributes(element, classMap) {
|
|
|
203
281
|
parts.push(`aria-label="${escapeHtml(element.displayName)}"`);
|
|
204
282
|
if (element.role === "image")
|
|
205
283
|
parts.push(`alt="${escapeHtml(element.displayName)}"`);
|
|
284
|
+
// A button/link with NO visible text (icon-only) gets no accessible name from its content; fall
|
|
285
|
+
// back to the structural display name so the artifact stays screen-reader navigable (WCAG 4.1.2).
|
|
286
|
+
// But when it DOES render visible text (own or in a child TEXT node), adding aria-label would
|
|
287
|
+
// OVERRIDE that visible label for assistive tech (and break label-in-name, WCAG 2.5.3) — so skip it.
|
|
288
|
+
if ((element.role === "button" || element.role === "link") && !hasRenderedText(element)) {
|
|
289
|
+
parts.push(`aria-label="${escapeHtml(element.displayName)}"`);
|
|
290
|
+
}
|
|
206
291
|
return parts.join(" ");
|
|
207
292
|
}
|
|
208
293
|
function renderElement(element, depth, classMap) {
|
|
@@ -226,7 +311,7 @@ function renderNav(navTargets, safeNames, depth) {
|
|
|
226
311
|
return [];
|
|
227
312
|
const lines = [`${indent(depth)}<nav aria-label="Screen navigation">`];
|
|
228
313
|
for (const target of navTargets) {
|
|
229
|
-
const safeName = safeNames.get(target.toScreenId) ?? target.toScreenId
|
|
314
|
+
const safeName = safeNames.get(target.toScreenId) ?? sanitizeScreenFileName(target.toScreenId);
|
|
230
315
|
const href = `./${escapeHtml(safeName)}.html`;
|
|
231
316
|
const trigger = escapeHtml(target.trigger);
|
|
232
317
|
const label = escapeHtml(target.toScreenName);
|
|
@@ -238,7 +323,12 @@ function renderNav(navTargets, safeNames, depth) {
|
|
|
238
323
|
// Fix #7: screen file uses safe name; raw id is preserved in data-screen-id for traceability.
|
|
239
324
|
function renderScreenHtml(screen, safeNames, lookups) {
|
|
240
325
|
// Collect per-node styles first so classMap is populated before HTML rendering.
|
|
241
|
-
const ctx = {
|
|
326
|
+
const ctx = {
|
|
327
|
+
lookups,
|
|
328
|
+
classMap: new Map(),
|
|
329
|
+
usedClasses: new Map(),
|
|
330
|
+
rules: [],
|
|
331
|
+
};
|
|
242
332
|
collectStyles(screen.root, ctx);
|
|
243
333
|
const styleBlock = ctx.rules.length > 0
|
|
244
334
|
? [
|
|
@@ -256,7 +346,7 @@ function renderScreenHtml(screen, safeNames, lookups) {
|
|
|
256
346
|
];
|
|
257
347
|
return [
|
|
258
348
|
"<!doctype html>",
|
|
259
|
-
'<html
|
|
349
|
+
'<html>',
|
|
260
350
|
`${indent(1)}<head>`,
|
|
261
351
|
`${indent(2)}<meta charset="utf-8" />`,
|
|
262
352
|
`${indent(2)}<title>${title}</title>`,
|
|
@@ -273,13 +363,13 @@ function renderScreenHtml(screen, safeNames, lookups) {
|
|
|
273
363
|
// Fix #7: index links use safe names for the href path but display the human-readable screen name.
|
|
274
364
|
function renderIndexHtml(screens, safeNames) {
|
|
275
365
|
const links = screens.map((screen) => {
|
|
276
|
-
const safeName = safeNames.get(screen.screenId) ?? screen.screenId
|
|
366
|
+
const safeName = safeNames.get(screen.screenId) ?? sanitizeScreenFileName(screen.screenId);
|
|
277
367
|
return (`${indent(3)}<li><a href="screens/${escapeHtml(safeName)}.html">` +
|
|
278
368
|
`${escapeHtml(screen.screenName)}</a></li>`);
|
|
279
369
|
});
|
|
280
370
|
return [
|
|
281
371
|
"<!doctype html>",
|
|
282
|
-
'<html
|
|
372
|
+
'<html>',
|
|
283
373
|
`${indent(1)}<head>`,
|
|
284
374
|
`${indent(2)}<meta charset="utf-8" />`,
|
|
285
375
|
`${indent(2)}<title>Screens</title>`,
|
|
@@ -337,7 +427,7 @@ function emitHtmlCss(plan) {
|
|
|
337
427
|
{ path: "index.html", contents: renderIndexHtml(plan.screens, safeNames) },
|
|
338
428
|
{ path: "tokens.css", contents: renderTokensCss(plan.tokens) },
|
|
339
429
|
...plan.screens.map((screen) => {
|
|
340
|
-
const safeName = safeNames.get(screen.screenId) ?? screen.screenId
|
|
430
|
+
const safeName = safeNames.get(screen.screenId) ?? sanitizeScreenFileName(screen.screenId);
|
|
341
431
|
return {
|
|
342
432
|
path: `screens/${safeName}.html`,
|
|
343
433
|
contents: renderScreenHtml(screen, safeNames, lookups),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { cleanScopedNodesToScreenIr } from "./cleanToScreenIr.js";
|
|
2
2
|
export { parseDesignTokens } from "./tokens.js";
|
|
3
3
|
export { parseScreenIr, deriveScreenTestBaseline, renderBaselineText, } from "./screenIrTestBaseline.js";
|
|
4
|
-
export type { ScreenTestBaseline, StructuralTestCategory, StructuralTestItem, } from "./screenIrTestBaseline.js";
|
|
4
|
+
export type { ScreenTestBaseline, StructuralTestCategory, StructuralTestItem, StructuralTestOutcome, } from "./screenIrTestBaseline.js";
|
|
5
5
|
export { mergeVisionHints } from "./visionAugmentation.js";
|
|
6
6
|
export type { VisionMergeResult } from "./visionAugmentation.js";
|
|
7
7
|
export { deriveNavGraph, deriveNavFlows, deriveRoutingHints, deriveNavTestItemsByScreen, } from "./navGraph.js";
|
|
@@ -15,5 +15,5 @@ export type { SemanticNamingProvider, SemanticNamingRequest } from "./semanticNa
|
|
|
15
15
|
export { htmlCssAdapter } from "./htmlCssAdapter.js";
|
|
16
16
|
export { deriveA11yTestItemsByScreen, relativeLuminance, contrastRatio, meetsContrastAa, } from "./a11yBaseline.js";
|
|
17
17
|
export type { FigmaSourceNode } from "./sourceNode.js";
|
|
18
|
-
export type { BoundingBox, ColorToken, DesignTokens, ImageFillRef, InteractionHint, InterScreenLink, IrNode, RadiusToken, ReductionReport, ScreenIr, ScreenIrResult, SpacingToken, TypographyToken, } from "./irTypes.js";
|
|
18
|
+
export type { AlignItems, BoundingBox, ColorToken, DesignTokens, ImageFillRef, InteractionHint, InterScreenLink, IrLayout, IrNode, IrSizing, IrTypography, LayoutMode, LayoutSizing, RadiusToken, ReductionReport, ScreenIr, ScreenIrResult, SpacingToken, TypographyToken, } from "./irTypes.js";
|
|
19
19
|
//# sourceMappingURL=index.d.ts.map
|
package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAKjE,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,EACX,cAAc,GACf,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEzF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EACf,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,GAChB,MAAM,cAAc,CAAC"}
|
package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts
CHANGED
|
@@ -44,13 +44,15 @@ export interface IrSizing {
|
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Per-TEXT-node typography properties, only present on TEXT nodes. Matches what `tokens.ts`
|
|
47
|
-
* already extracts globally (fontFamily, fontSize, fontWeight). Optional and additive;
|
|
48
|
-
* non-TEXT nodes or when the `style` block is missing. Hash-neutral like
|
|
47
|
+
* already extracts globally (fontFamily, fontSize, fontWeight, lineHeight). Optional and additive;
|
|
48
|
+
* absent for non-TEXT nodes or when the `style` block is missing. Hash-neutral like
|
|
49
|
+
* {@link IrLayout}.
|
|
49
50
|
*/
|
|
50
51
|
export interface IrTypography {
|
|
51
52
|
readonly fontFamily: string;
|
|
52
53
|
readonly fontSize: number;
|
|
53
54
|
readonly fontWeight: number;
|
|
55
|
+
readonly lineHeight?: number;
|
|
54
56
|
}
|
|
55
57
|
/** A kept node in a screen's normalized structural tree. */
|
|
56
58
|
export interface IrNode {
|
|
@@ -88,8 +90,9 @@ export interface IrNode {
|
|
|
88
90
|
*/
|
|
89
91
|
readonly cornerRadius?: number;
|
|
90
92
|
/**
|
|
91
|
-
* Per-TEXT typography (fontFamily, fontSize, fontWeight). Optional and
|
|
92
|
-
* non-TEXT nodes or when the style block is missing. Hash-neutral like
|
|
93
|
+
* Per-TEXT typography (fontFamily, fontSize, fontWeight, optional lineHeight). Optional and
|
|
94
|
+
* additive: absent for non-TEXT nodes or when the style block is missing. Hash-neutral like
|
|
95
|
+
* {@link IrNode.layout}.
|
|
93
96
|
*/
|
|
94
97
|
readonly typography?: IrTypography;
|
|
95
98
|
readonly imageFills: readonly ImageFillRef[];
|
package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irTypes.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/irTypes.ts"],"names":[],"mappings":"AAQA,yFAAyF;AACzF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAE3F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,8FAA8F;AAC9F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,kDAAkD;AAClD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE1C,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,eAAe,CAAC;AAEtE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,4FAA4F;IAC5F,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;CACpC;AAED,4EAA4E;AAC5E,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAED
|
|
1
|
+
{"version":3,"file":"irTypes.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/irTypes.ts"],"names":[],"mappings":"AAQA,yFAAyF;AACzF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAE3F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,8FAA8F;AAC9F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,kDAAkD;AAClD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE1C,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,eAAe,CAAC;AAEtE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,4FAA4F;IAC5F,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;CACpC;AAED,4EAA4E;AAC5E,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,4DAA4D;AAC5D,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC;AAED,qGAAqG;AACrG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,4FAA4F;AAC5F,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;CACrC"}
|
package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/links.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/links.ts"],"names":[],"mappings":"AAcA,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqF7C,sGAAsG;AACtG,eAAO,MAAM,uBAAuB,GAClC,SAAS,eAAe,EACxB,SAAS,SAAS,UAAU,EAAE,KAC7B,SAAS,eAAe,EAS1B,CAAC"}
|
|
@@ -9,9 +9,6 @@
|
|
|
9
9
|
// 3. CANVAS `flowStartingPoints[]` + `prototypeStartNodeID` — flow entry points, emitted as
|
|
10
10
|
// `{ sourceNodeId: <canvasId>, trigger: "FLOW_START", targetNodeId }`.
|
|
11
11
|
//
|
|
12
|
-
// URL actions (type=URL, url=<href>) are surfaced with targetNodeId `url:<href>` so they appear in
|
|
13
|
-
// `unresolvedLinks` downstream (no screen owns a `url:` node id) rather than being silently dropped.
|
|
14
|
-
//
|
|
15
12
|
// Links come from the pruned tree (hidden/dropped nodes emit nothing) plus the raw root for flow
|
|
16
13
|
// entry points. The output is sorted by a stable structural key so order never depends on traversal.
|
|
17
14
|
import { asNode, nodeId, readArray, readString } from "./sourceNode.js";
|
|
@@ -19,23 +16,18 @@ const FLOW_START = "FLOW_START";
|
|
|
19
16
|
const UNKNOWN_TRIGGER = "UNKNOWN";
|
|
20
17
|
// Shared constant — see prune.ts for rationale. Must stay in sync with every other recursive walk.
|
|
21
18
|
const MAX_TREE_DEPTH = 512;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// with that id) rather than being silently dropped. Board-content URLs are acceptable here.
|
|
25
|
-
const readUrlAction = (action) => {
|
|
26
|
-
if (readString(action.type) !== "URL")
|
|
27
|
-
return undefined;
|
|
28
|
-
const url = readString(action.url);
|
|
29
|
-
return url !== undefined ? `url:${url}` : undefined;
|
|
30
|
-
};
|
|
19
|
+
const EXTERNAL_LINK_TARGET = /^(?:[a-z][a-z0-9+.-]*:\/\/|mailto:|tel:|data:|javascript:)/iu;
|
|
20
|
+
const isExternalLinkTarget = (targetNodeId) => targetNodeId.startsWith("url:") || EXTERNAL_LINK_TARGET.test(targetNodeId);
|
|
31
21
|
const readDestination = (action) => {
|
|
32
22
|
const direct = readString(action.destinationId);
|
|
33
23
|
if (direct !== undefined)
|
|
34
|
-
return direct;
|
|
24
|
+
return isExternalLinkTarget(direct) ? undefined : direct;
|
|
35
25
|
const nav = asNode(action.navigation);
|
|
36
|
-
if (nav !== undefined)
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
if (nav !== undefined) {
|
|
27
|
+
const nested = readString(nav.destinationId);
|
|
28
|
+
return nested !== undefined && !isExternalLinkTarget(nested) ? nested : undefined;
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
39
31
|
};
|
|
40
32
|
const triggerType = (entry) => {
|
|
41
33
|
const trigger = asNode(entry.trigger);
|
|
@@ -91,7 +83,11 @@ const collectFlowEntries = (root, out) => {
|
|
|
91
83
|
if (start !== undefined)
|
|
92
84
|
out.push({ sourceNodeId, trigger: FLOW_START, targetNodeId: start });
|
|
93
85
|
};
|
|
94
|
-
|
|
86
|
+
// Injective dedup/sort key: JSON.stringify of the field tuple escapes every character (NUL,
|
|
87
|
+
// backslash, quote, ...), so two distinct links can never collide into one key, which would
|
|
88
|
+
// silently drop a transition feeding the downstream navigation graph (#811). Deterministic and
|
|
89
|
+
// stable-ordered, preserving the byte-identical IR contract for every input.
|
|
90
|
+
const linkKey = (link) => JSON.stringify([link.sourceNodeId, link.trigger, link.targetNodeId]);
|
|
95
91
|
/** Extract stable-ordered, deduped raw inter-screen links from the pruned tree + raw flow entries. */
|
|
96
92
|
export const extractInterScreenLinks = (rawRoot, screens) => {
|
|
97
93
|
const collected = [];
|
package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navGraph.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/navGraph.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAqC,cAAc,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AASpE,gCAAgC;AAChC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,+EAA+E;AAC/E,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qGAAqG;AACrG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qEAAqE;AACrE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IACpD,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,4DAA4D;AAC5D,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5F;
|
|
1
|
+
{"version":3,"file":"navGraph.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/navGraph.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAqC,cAAc,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AASpE,gCAAgC;AAChC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,+EAA+E;AAC/E,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qGAAqG;AACrG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qEAAqE;AACrE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IACpD,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,4DAA4D;AAC5D,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5F;AA6GD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,QAAQ,CA0B3D;AA6DD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,MAA+B,GACxC,SAAS,OAAO,EAAE,CAWpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,WAAW,EAAE,CAU1E;AA+ED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,QAAQ,EACf,YAAY,GAAE,MAA+B,GAC5C,WAAW,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAYpD"}
|
|
@@ -42,11 +42,16 @@ function buildNodeOwnership(screens) {
|
|
|
42
42
|
}
|
|
43
43
|
return owner;
|
|
44
44
|
}
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
// Injective composite key over a field tuple. The previous NUL-delimited join was non-injective:
|
|
46
|
+
// a value carrying the separator byte could shift a field boundary so two distinct tuples collapse
|
|
47
|
+
// to one key — the exact defect #752 fixed in links.ts linkKey, and a Figma node id or trigger from
|
|
48
|
+
// an (untrusted) snapshot is not guaranteed separator-free. JSON.stringify escapes the quote,
|
|
49
|
+
// backslash, and control bytes, so the encoding is total and unambiguous for any input. Used for
|
|
50
|
+
// de-duplication, identity hashing, and stable total ordering so every emitted collection stays
|
|
51
|
+
// byte-identical for a given input.
|
|
52
|
+
const compositeKey = (...parts) => JSON.stringify(parts);
|
|
53
|
+
const edgeKey = (e) => compositeKey(e.fromScreenId, e.trigger, e.toScreenId, e.sourceNodeId, e.targetNodeId);
|
|
54
|
+
const flowKey = (screenIds) => compositeKey(...screenIds);
|
|
50
55
|
// Classify each raw link against the node-ownership index. A target that owns a screen and a source
|
|
51
56
|
// that owns a screen yields an edge; a FLOW_START whose target owns a screen marks an entry; any
|
|
52
57
|
// link whose target owns no screen is unresolved (an edge that leaves the known screens).
|
|
@@ -77,7 +82,10 @@ function classifyLinks(links, owner) {
|
|
|
77
82
|
}
|
|
78
83
|
return {
|
|
79
84
|
edges: [...edges.values()].sort((a, b) => byString(edgeKey(a), edgeKey(b))),
|
|
80
|
-
|
|
85
|
+
// Total order: targetNodeId alone is not injective across unresolved links sharing a target, so
|
|
86
|
+
// input order would leak into the output and break the byte-identical guarantee (DET1). The
|
|
87
|
+
// full tuple key restores a deterministic total order under ties.
|
|
88
|
+
unresolved: [...unresolved].sort((a, b) => byString(compositeKey(a.targetNodeId, a.trigger, a.sourceNodeId), compositeKey(b.targetNodeId, b.trigger, b.sourceNodeId))),
|
|
81
89
|
entryScreenIds: [...entries].sort(byString),
|
|
82
90
|
};
|
|
83
91
|
}
|
|
@@ -159,12 +167,27 @@ function walkFlows(start, adjacency, maxDepth, cap, counter, out) {
|
|
|
159
167
|
recurse([start]);
|
|
160
168
|
}
|
|
161
169
|
// Build the adjacency map once; edges are already stable-sorted so adjacency lists are deterministic.
|
|
170
|
+
// Parallel edges (distinct prototype reactions from the same screen to the same target — two buttons,
|
|
171
|
+
// or the same button with two triggers, both reaching A → B) must NOT push duplicate target entries:
|
|
172
|
+
// walkFlows would traverse the identical sub-path once per duplicate, inflating the shared flow
|
|
173
|
+
// counter past the number of DISTINCT flows. Because deriveNavTestItemsByScreen decides whether to
|
|
174
|
+
// emit the truncation notice from the post-dedup flows.length, an inflated counter can hit
|
|
175
|
+
// MAX_NAV_FLOWS and truncate enumeration while flows.length stays below the cap — silently dropping
|
|
176
|
+
// flows with NO coverage-notice (CORR1). Navigation adjacency is a reachability relation, so a
|
|
177
|
+
// per-source target set is the correct model and keeps the counter equal to the distinct-flow count.
|
|
178
|
+
// First-occurrence order is preserved (edges are stable-sorted) so the derivation stays byte-identical.
|
|
162
179
|
function buildAdjacency(edges) {
|
|
163
180
|
const adj = new Map();
|
|
181
|
+
const seen = new Map();
|
|
164
182
|
for (const edge of edges) {
|
|
165
183
|
const list = adj.get(edge.fromScreenId) ?? [];
|
|
184
|
+
const seenTargets = seen.get(edge.fromScreenId) ?? new Set();
|
|
185
|
+
if (seenTargets.has(edge.toScreenId))
|
|
186
|
+
continue;
|
|
166
187
|
list.push(edge.toScreenId);
|
|
188
|
+
seenTargets.add(edge.toScreenId);
|
|
167
189
|
adj.set(edge.fromScreenId, list);
|
|
190
|
+
seen.set(edge.fromScreenId, seenTargets);
|
|
168
191
|
}
|
|
169
192
|
return adj;
|
|
170
193
|
}
|
|
@@ -185,8 +208,8 @@ export function deriveNavFlows(graph, maxDepth = DEFAULT_MAX_FLOW_DEPTH) {
|
|
|
185
208
|
}
|
|
186
209
|
const byKey = new Map();
|
|
187
210
|
for (const screenIds of collected)
|
|
188
|
-
byKey.set(screenIds
|
|
189
|
-
return [...byKey.values()].sort((a, b) => byString(a.screenIds
|
|
211
|
+
byKey.set(flowKey(screenIds), { screenIds });
|
|
212
|
+
return [...byKey.values()].sort((a, b) => byString(flowKey(a.screenIds), flowKey(b.screenIds)));
|
|
190
213
|
}
|
|
191
214
|
/**
|
|
192
215
|
* Framework-agnostic routing hints for design-to-code (#755): every screen mapped to its outgoing
|
|
@@ -199,7 +222,7 @@ export function deriveRoutingHints(graph) {
|
|
|
199
222
|
transitions: graph.edges
|
|
200
223
|
.filter((e) => e.fromScreenId === node.screenId)
|
|
201
224
|
.map((e) => ({ trigger: e.trigger, toScreenId: e.toScreenId }))
|
|
202
|
-
.sort((a, b) => byString(
|
|
225
|
+
.sort((a, b) => byString(compositeKey(a.trigger, a.toScreenId), compositeKey(b.trigger, b.toScreenId))),
|
|
203
226
|
}));
|
|
204
227
|
}
|
|
205
228
|
const screenNameOf = (graph, screenId) => graph.nodes.find((n) => n.screenId === screenId)?.screenName ?? screenId;
|
|
@@ -228,7 +251,7 @@ function flowItem(graph, flow) {
|
|
|
228
251
|
const entry = flow.screenIds[0] ?? "";
|
|
229
252
|
const names = flow.screenIds.map((id) => `"${screenNameOf(graph, id)}"`).join(" → ");
|
|
230
253
|
return {
|
|
231
|
-
id: navItemId("fflow", flow.screenIds
|
|
254
|
+
id: navItemId("fflow", flowKey(flow.screenIds)),
|
|
232
255
|
category: "flow",
|
|
233
256
|
screenId: entry,
|
|
234
257
|
screenName: screenNameOf(graph, entry),
|
|
@@ -241,7 +264,7 @@ function coverageItem(graph, screenId, kind) {
|
|
|
241
264
|
? `Screen "${name}" is unreachable: no navigation reaches it`
|
|
242
265
|
: `Screen "${name}" is a dead end: no navigation leaves it`;
|
|
243
266
|
return {
|
|
244
|
-
id: navItemId("fcov",
|
|
267
|
+
id: navItemId("fcov", compositeKey(kind, screenId)),
|
|
245
268
|
category: "coverage-notice",
|
|
246
269
|
screenId,
|
|
247
270
|
screenName: name,
|
|
@@ -254,7 +277,7 @@ function flowCapNoticeItem(graph, totalEnumerated) {
|
|
|
254
277
|
const entryId = graph.entryScreenIds[0] ?? graph.nodes[0]?.screenId ?? "";
|
|
255
278
|
const name = screenNameOf(graph, entryId);
|
|
256
279
|
return {
|
|
257
|
-
id: navItemId("fnavcap",
|
|
280
|
+
id: navItemId("fnavcap", compositeKey("cap", entryId)),
|
|
258
281
|
category: "coverage-notice",
|
|
259
282
|
screenId: entryId,
|
|
260
283
|
screenName: name,
|
package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/normalize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/normalize.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAMV,MAAM,EAKP,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiO7C,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB,GAAI,QAAQ,UAAU,KAAG,MAAgC,CAAC;AAO1F,6EAA6E;AAC7E,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAAiC,CAAC"}
|