@oscharko-dev/keiko 0.2.0-beta.3 → 0.2.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -1
- package/dist/ui/csp-hashes.json +33 -39
- package/dist/ui/static/404.html +1 -1
- package/dist/ui/static/__next.__PAGE__.txt +9 -0
- package/dist/ui/static/__next._full.txt +18 -0
- package/dist/ui/static/__next._head.txt +6 -0
- package/dist/ui/static/__next._index.txt +5 -0
- package/dist/ui/static/__next._tree.txt +2 -0
- package/dist/ui/static/_next/static/Hb6brrvZY2nZtizQlYhVt/_buildManifest.js +11 -0
- package/dist/ui/static/_next/static/Hb6brrvZY2nZtizQlYhVt/_clientMiddlewareManifest.js +1 -0
- package/dist/ui/static/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
- package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +2 -0
- package/dist/ui/static/_next/static/chunks/0iq1i69206cyl.js +31 -0
- package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +1 -0
- package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +1 -0
- package/dist/ui/static/_next/static/chunks/14mrh2-p_w84d.js +1 -0
- package/dist/ui/static/_next/static/chunks/1t04tfgin0v_g.js +106 -0
- package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +1 -0
- package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +4 -0
- package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +1 -0
- package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +1 -0
- package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +1 -0
- package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +1 -0
- package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +1 -0
- package/dist/ui/static/_next/static/chunks/3peubv2924kx4.js +1 -0
- package/dist/ui/static/_next/static/chunks/3wr_35f2vg6sd.css +1 -0
- package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +1 -0
- package/dist/ui/static/_not-found/__next._full.txt +16 -0
- package/dist/ui/static/_not-found/__next._head.txt +6 -0
- package/dist/ui/static/_not-found/__next._index.txt +5 -0
- package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +5 -0
- package/dist/ui/static/_not-found/__next._not-found.txt +5 -0
- package/dist/ui/static/_not-found/__next._tree.txt +2 -0
- package/dist/ui/static/_not-found.html +1 -0
- package/dist/ui/static/_not-found.txt +16 -0
- package/dist/ui/static/index.html +1 -1
- package/dist/ui/static/index.txt +16 -18
- package/dist/ui/static/launch/__next._full.txt +20 -0
- package/dist/ui/static/launch/__next._head.txt +6 -0
- package/dist/ui/static/launch/__next._index.txt +5 -0
- package/dist/ui/static/launch/__next._tree.txt +2 -0
- package/dist/ui/static/launch/__next.launch.__PAGE__.txt +9 -0
- package/dist/ui/static/launch/__next.launch.txt +5 -0
- package/dist/ui/static/launch.html +1 -1
- package/dist/ui/static/launch.txt +17 -17
- package/dist/ui/static/local-knowledge/__next._full.txt +20 -0
- package/dist/ui/static/local-knowledge/__next._head.txt +6 -0
- package/dist/ui/static/local-knowledge/__next._index.txt +5 -0
- package/dist/ui/static/local-knowledge/__next._tree.txt +2 -0
- package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +9 -0
- package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +5 -0
- package/dist/ui/static/local-knowledge/capsule/__next._full.txt +17 -0
- package/dist/ui/static/local-knowledge/capsule/__next._head.txt +6 -0
- package/dist/ui/static/local-knowledge/capsule/__next._index.txt +5 -0
- package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -0
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +6 -0
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +5 -0
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +5 -0
- package/dist/ui/static/local-knowledge/capsule.html +1 -1
- package/dist/ui/static/local-knowledge/capsule.txt +14 -14
- package/dist/ui/static/local-knowledge.html +1 -1
- package/dist/ui/static/local-knowledge.txt +19 -16
- package/dist/ui/static/memoriaviva/__next._full.txt +17 -0
- package/dist/ui/static/memoriaviva/__next._head.txt +6 -0
- package/dist/ui/static/memoriaviva/__next._index.txt +5 -0
- package/dist/ui/static/memoriaviva/__next._tree.txt +2 -0
- package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +6 -0
- package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +5 -0
- package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +17 -0
- package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +6 -0
- package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +5 -0
- package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -0
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +6 -0
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +5 -0
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +5 -0
- package/dist/ui/static/memoriaviva/consolidation.html +1 -1
- package/dist/ui/static/memoriaviva/consolidation.txt +15 -15
- package/dist/ui/static/memoriaviva/detail/__next._full.txt +17 -0
- package/dist/ui/static/memoriaviva/detail/__next._head.txt +6 -0
- package/dist/ui/static/memoriaviva/detail/__next._index.txt +5 -0
- package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -0
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +6 -0
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +5 -0
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +5 -0
- package/dist/ui/static/memoriaviva/detail.html +1 -1
- package/dist/ui/static/memoriaviva/detail.txt +14 -14
- package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +17 -0
- package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +6 -0
- package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +5 -0
- package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -0
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +6 -0
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +5 -0
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +5 -0
- package/dist/ui/static/memoriaviva/review-queue.html +1 -1
- package/dist/ui/static/memoriaviva/review-queue.txt +15 -15
- package/dist/ui/static/memoriaviva.html +1 -1
- package/dist/ui/static/memoriaviva.txt +14 -14
- package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +61 -2
- package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.js +65 -21
- package/node_modules/@oscharko-dev/keiko-cli/dist/launcher-platforms.js +3 -3
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +36 -11
- package/node_modules/@oscharko-dev/keiko-cli/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +20 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +256 -75
- package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +11 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +6 -6
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -4
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts +11 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.js +4 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.js +109 -4
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.js +94 -7
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts +5 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.js +3 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +14 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +53 -5
- package/node_modules/@oscharko-dev/keiko-contracts/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.js +11 -3
- package/node_modules/@oscharko-dev/keiko-evaluations/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts +20 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.js +34 -2
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +3 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +17 -0
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +19 -0
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +5 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +32 -2
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +259 -40
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.js +48 -5
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +30 -13
- package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-harness/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.js +25 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +16 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts +3 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.js +9 -5
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.js +22 -7
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts +4 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.js +61 -9
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.js +64 -36
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.js +2 -2
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts +7 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.js +5 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +27 -4
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts +5 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +18 -5
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.js +10 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts +4 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +370 -45
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.js +8 -4
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.js +10 -5
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +65 -20
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +79 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.js +4 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +6 -5
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +4 -4
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +71 -29
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +253 -131
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts +12 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.js +9 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +3 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +13 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +86 -46
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +50 -22
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts +21 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +90 -13
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.js +3 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts +7 -2
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.js +7 -3
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/audit-emitter.js +8 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.js +17 -10
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.js +7 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +318 -32
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +46 -16
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts +14 -0
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.js +26 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +10 -5
- package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +50 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +114 -44
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts +14 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.js +14 -0
- package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +9 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +9 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +9 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts +5 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +229 -33
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +62 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +24 -4
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts +4 -2
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +0 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +119 -5
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts +2 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.js +26 -11
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +86 -9
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -3
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +14 -12
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/sourceMixPlanning.js +0 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.js +9 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-sdk/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/redaction.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/redaction.js +4 -2
- package/node_modules/@oscharko-dev/keiko-security/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +6 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +59 -9
- package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/evidence.js +4 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts +18 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/files.js +208 -72
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.js +7 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.js +27 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +46 -14
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +433 -31
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +5 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts +9 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +194 -45
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts +4 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +100 -24
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +196 -20
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.js +21 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +9 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +189 -66
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +189 -72
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +10 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +110 -30
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts +13 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.js +29 -17
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts +13 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +54 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +84 -12
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +16 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +6 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +13 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +15 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +2 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +138 -19
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +26 -7
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +26 -7
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +3 -1
- 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 +51 -15
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +4 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +17 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +6 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +4 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +6 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +84 -8
- package/node_modules/@oscharko-dev/keiko-server/dist/store/db.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/db.js +4 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts +5 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.js +67 -14
- package/node_modules/@oscharko-dev/keiko-server/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-verification/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.js +45 -10
- package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +4 -6
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts +30 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.js +114 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +20 -7
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.js +15 -7
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +28 -4
- package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +51 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.js +8 -3
- package/node_modules/@oscharko-dev/keiko-workflows/package.json +2 -2
- package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.js +1 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.js +84 -27
- package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.js +19 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.js +6 -3
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +72 -25
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts +15 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +107 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts +18 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +42 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +4 -11
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.js +15 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +89 -75
- package/node_modules/@oscharko-dev/keiko-workspace/package.json +2 -2
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/http2.d.ts +1 -0
- package/node_modules/@types/node/package.json +2 -2
- package/package.json +3 -1
- package/dist/ui/static/_next/static/RAzN8WLtYaktD-ZePowXl/_buildManifest.js +0 -1
- package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.js +0 -1
- package/dist/ui/static/_next/static/chunks/258-e3b5ee46b0669967.js +0 -1
- package/dist/ui/static/_next/static/chunks/422-4c94c107b90d3ccc.js +0 -1
- package/dist/ui/static/_next/static/chunks/664-6d821dc1aacb6b48.js +0 -1
- package/dist/ui/static/_next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
- package/dist/ui/static/_next/static/chunks/982-abc19630e6305864.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/_not-found/page-c4d800f366186be0.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/launch/page-17ca39367f25f372.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/layout-0f75a39edc90325d.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-87a2ea239308ed34.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-98bb7704fc7fd0ad.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-f912263f1ee5d2dd.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-fa590f135356e0af.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-b8555600c1113f14.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-85cfbeb3598c0a36.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/page-2881856ad25d9935.js +0 -1
- package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
- package/dist/ui/static/_next/static/chunks/main-app-5b043f6c611974ae.js +0 -1
- package/dist/ui/static/_next/static/chunks/main-bc552b04f2b6dbe2.js +0 -1
- package/dist/ui/static/_next/static/chunks/pages/_app-2e239ff05bfdf6d6.js +0 -1
- package/dist/ui/static/_next/static/chunks/pages/_error-bda15e7831eec981.js +0 -1
- package/dist/ui/static/_next/static/chunks/webpack-0cfe6f51555ca84e.js +0 -1
- package/dist/ui/static/_next/static/css/eac94895f3edc5a5.css +0 -1
- /package/dist/ui/static/_next/static/{RAzN8WLtYaktD-ZePowXl → Hb6brrvZY2nZtizQlYhVt}/_ssgManifest.js +0 -0
- /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
|
@@ -1,26 +1,32 @@
|
|
|
1
|
-
// Figma connector error shapes (Epic #750, Issues #751, #758, #760).
|
|
1
|
+
// Figma connector error shapes (Epic #750, Issues #751, #758, #760, #884).
|
|
2
2
|
//
|
|
3
3
|
// Coded, safe errors for the server-side Figma connector. A FigmaConnectorError carries
|
|
4
4
|
// ONLY a stable code and a fixed, secret-free message — never the PAT, never a raw Figma
|
|
5
5
|
// payload, never an outbound URL or header value. Mirrors the QI connector error posture
|
|
6
6
|
// in ../connectorErrors.ts so the route tier can serialise it consistently.
|
|
7
7
|
//
|
|
8
|
-
// Complete coded taxonomy (#760); every code is user-actionable. Each ticket-named
|
|
9
|
-
// one or more codes below:
|
|
8
|
+
// Complete coded taxonomy (#760, #884); every code is user-actionable. Each ticket-named
|
|
9
|
+
// category maps to one or more codes below:
|
|
10
10
|
// auth → FIGMA_TOKEN_MISSING | FIGMA_TOKEN_INVALID | FIGMA_TOKEN_EXPIRED
|
|
11
11
|
// | FIGMA_TOKEN_REVOKED
|
|
12
12
|
// consent → FIGMA_CONSENT_REQUIRED (no recorded read-only-scope acknowledgement)
|
|
13
13
|
// scope → FIGMA_INSUFFICIENT_SCOPE
|
|
14
14
|
// rate-limit → FIGMA_RATE_LIMITED
|
|
15
15
|
// not-found → FIGMA_NOT_FOUND
|
|
16
|
-
// oversized → FIGMA_OVERSIZED_SCOPE
|
|
16
|
+
// oversized → FIGMA_OVERSIZED_SCOPE | FIGMA_RESPONSE_TOO_LARGE
|
|
17
17
|
// render-failed → FIGMA_RENDER_FAILED
|
|
18
|
-
// proxy egress → FIGMA_PROXY_UNREACHABLE (proxy
|
|
19
|
-
// |
|
|
18
|
+
// proxy egress → FIGMA_PROXY_UNREACHABLE (proxy host unreachable)
|
|
19
|
+
// | FIGMA_PROXY_AUTH_REQUIRED (proxy requires authentication)
|
|
20
|
+
// | FIGMA_PROXY_BLOCKED_BY_POLICY (proxy denied the request by policy)
|
|
21
|
+
// | FIGMA_PROXY_EGRESS_FAILED (generic proxy egress failure, retained for back-compat)
|
|
22
|
+
// direct egress → FIGMA_NETWORK_UNREACHABLE (DNS/connection/socket error, no proxy)
|
|
23
|
+
// | FIGMA_EGRESS_TIMEOUT (request timed out before completion)
|
|
24
|
+
// | FIGMA_EGRESS_FAILED (generic direct egress failure; new default)
|
|
20
25
|
// tls/ca → FIGMA_TLS_CA_FAILURE (custom-CA / TLS verification failure on egress)
|
|
21
26
|
// FIGMA_MALFORMED_URL, FIGMA_UPSTREAM_UNAVAILABLE, and FIGMA_INTERNAL cover input and last-resort
|
|
22
27
|
// faults. The proxy-aware + custom-CA HTTP client itself is #802; this connector only SURFACES
|
|
23
28
|
// these proxy/TLS codes — it does not implement the proxy transport.
|
|
29
|
+
import { OutboundHttpEgressError, } from "@oscharko-dev/keiko-model-gateway/internal/http";
|
|
24
30
|
const SAFE_MESSAGES = {
|
|
25
31
|
FIGMA_MALFORMED_URL: "The supplied link is not a scoped Figma node link. Paste a board or section link that includes a node id.",
|
|
26
32
|
FIGMA_TOKEN_MISSING: "The Figma connector is not configured. Set a read-only access token before fetching a board.",
|
|
@@ -33,10 +39,17 @@ const SAFE_MESSAGES = {
|
|
|
33
39
|
FIGMA_RENDER_FAILED: "Figma could not render the requested screens. Re-run the snapshot; if it persists, connect a narrower section.",
|
|
34
40
|
FIGMA_PROXY_EGRESS_FAILED: "The Figma request could not be routed through the platform egress proxy. Check proxy connectivity and try again.",
|
|
35
41
|
FIGMA_PROXY_UNREACHABLE: "The platform egress proxy is unreachable. Check the proxy host and port and try again.",
|
|
42
|
+
FIGMA_PROXY_AUTH_REQUIRED: "The forward proxy requires authentication for the Figma egress request. Configure proxy credentials or an allow rule.",
|
|
43
|
+
FIGMA_PROXY_BLOCKED_BY_POLICY: "The forward proxy blocked the Figma egress request by policy. Ask the proxy operator to allow api.figma.com and the Figma render hosts.",
|
|
36
44
|
FIGMA_TLS_CA_FAILURE: "The TLS certificate for the Figma egress could not be verified. Check the configured certificate authority bundle and try again.",
|
|
37
45
|
FIGMA_OVERSIZED_SCOPE: "The requested Figma node subtree is too large for a single scoped fetch. Connect a narrower section.",
|
|
46
|
+
FIGMA_RESPONSE_TOO_LARGE: "The Figma API response exceeded the maximum allowed size. Connect a narrower section to reduce the response.",
|
|
38
47
|
FIGMA_RATE_LIMITED: "Figma rate-limited the snapshot-build after repeated retries. Wait a moment and re-run the snapshot.",
|
|
39
48
|
FIGMA_UPSTREAM_UNAVAILABLE: "The Figma service is currently unavailable. Try the scoped fetch again later.",
|
|
49
|
+
FIGMA_NETWORK_UNREACHABLE: "The outbound network request to Figma failed (DNS, connection, or socket error). Check network connectivity and egress policy.",
|
|
50
|
+
FIGMA_EGRESS_TIMEOUT: "The Figma request timed out before completing. Retry; if it persists, raise KEIKO_FIGMA_REQUEST_TIMEOUT_MS or check upstream latency.",
|
|
51
|
+
FIGMA_EGRESS_FAILED: "The outbound request to Figma failed before a response was received.",
|
|
52
|
+
FIGMA_BUILD_TIMEOUT: "The snapshot build exceeded the configured deadline. No partial snapshot was stored. Retry or raise KEIKO_FIGMA_BUILD_DEADLINE_MS.",
|
|
40
53
|
FIGMA_INTERNAL: "The Figma connector could not service the request.",
|
|
41
54
|
};
|
|
42
55
|
export const figmaConnectorErrorBody = (code) => ({
|
|
@@ -60,7 +73,9 @@ const TLS_CODES = new Set([
|
|
|
60
73
|
"UNABLE_TO_GET_ISSUER_CERT",
|
|
61
74
|
"UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
|
|
62
75
|
]);
|
|
63
|
-
// Node.js / undici error codes that indicate a connectivity / DNS /
|
|
76
|
+
// Node.js / undici error codes that indicate a direct connectivity / DNS / socket failure.
|
|
77
|
+
// These are only reached when the error did NOT come through the OutboundHttpEgressError proxy
|
|
78
|
+
// path — a raw ECONNREFUSED means no proxy is involved.
|
|
64
79
|
const CONNECTIVITY_CODES = new Set([
|
|
65
80
|
"ECONNREFUSED",
|
|
66
81
|
"ECONNRESET",
|
|
@@ -71,20 +86,34 @@ const CONNECTIVITY_CODES = new Set([
|
|
|
71
86
|
"ECONNABORTED",
|
|
72
87
|
"EHOSTUNREACH",
|
|
73
88
|
"ENETUNREACH",
|
|
89
|
+
"EPROTO",
|
|
90
|
+
"EPERM",
|
|
91
|
+
"EACCES",
|
|
74
92
|
"UND_ERR_CONNECT_TIMEOUT",
|
|
75
93
|
"UND_ERR_HEADERS_TIMEOUT",
|
|
76
94
|
"UND_ERR_BODY_TIMEOUT",
|
|
77
95
|
"UND_ERR_SOCKET",
|
|
78
96
|
]);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const
|
|
97
|
+
// Mapping from OutboundHttpEgressError codes (proxy path) to FigmaConnectorErrorCodes.
|
|
98
|
+
// FIGMA_PROXY_* codes are ONLY reachable through the OutboundHttpEgressError branch.
|
|
99
|
+
const OUTBOUND_CODE_TO_FIGMA = {
|
|
100
|
+
TLS_CA_FAILURE: "FIGMA_TLS_CA_FAILURE",
|
|
101
|
+
PROXY_UNREACHABLE: "FIGMA_PROXY_UNREACHABLE",
|
|
102
|
+
PROXY_AUTH_REQUIRED: "FIGMA_PROXY_AUTH_REQUIRED",
|
|
103
|
+
PROXY_BLOCKED_BY_POLICY: "FIGMA_PROXY_BLOCKED_BY_POLICY",
|
|
104
|
+
PROXY_EGRESS_FAILED: "FIGMA_PROXY_EGRESS_FAILED",
|
|
105
|
+
};
|
|
106
|
+
// String set of OutboundHttpEgressError codes for cross-package-boundary instanceof fallback.
|
|
107
|
+
const OUTBOUND_EGRESS_CODES = new Set([
|
|
108
|
+
"TLS_CA_FAILURE",
|
|
109
|
+
"PROXY_UNREACHABLE",
|
|
82
110
|
"PROXY_AUTH_REQUIRED",
|
|
83
111
|
"PROXY_BLOCKED_BY_POLICY",
|
|
84
112
|
"PROXY_EGRESS_FAILED",
|
|
85
113
|
]);
|
|
86
114
|
const TLS_MSG_RE = /cert|self.?signed|unable to (?:verify|get).*(issuer|cert)|tls/i;
|
|
87
|
-
|
|
115
|
+
// "fetch failed" is the Node.js TypeError message for generic direct-network failures (undici).
|
|
116
|
+
const CONNECTIVITY_MSG_RE = /socket hang ?up|network|fetch failed|econn|enotfound/i;
|
|
88
117
|
const extractCode = (err) => {
|
|
89
118
|
if (err !== null && typeof err === "object") {
|
|
90
119
|
const code = err.code;
|
|
@@ -106,33 +135,84 @@ const extractMessage = (err) => {
|
|
|
106
135
|
return err;
|
|
107
136
|
return "";
|
|
108
137
|
};
|
|
138
|
+
const extractName = (err) => {
|
|
139
|
+
if (err !== null && typeof err === "object") {
|
|
140
|
+
const name = err.name;
|
|
141
|
+
if (typeof name === "string")
|
|
142
|
+
return name;
|
|
143
|
+
}
|
|
144
|
+
return "";
|
|
145
|
+
};
|
|
146
|
+
const extractCause = (err) => err !== null && typeof err === "object" ? err.cause : undefined;
|
|
147
|
+
/** Map an outbound egress code string to a FigmaConnectorErrorCode, or return undefined. */
|
|
148
|
+
const mapOutboundCode = (code) => {
|
|
149
|
+
if (!OUTBOUND_EGRESS_CODES.has(code))
|
|
150
|
+
return undefined;
|
|
151
|
+
return OUTBOUND_CODE_TO_FIGMA[code] ?? "FIGMA_PROXY_EGRESS_FAILED";
|
|
152
|
+
};
|
|
153
|
+
// Cross-package-boundary fallback: plain Error with a string .code in the outbound set.
|
|
154
|
+
// Used when instanceof check fails because OutboundHttpEgressError came from a different
|
|
155
|
+
// package copy (e.g. stale dist during tests).
|
|
156
|
+
const mapOutboundCodeFallback = (topCode, causeCode) => {
|
|
157
|
+
if (topCode !== undefined && OUTBOUND_EGRESS_CODES.has(topCode)) {
|
|
158
|
+
return mapOutboundCode(topCode) ?? "FIGMA_PROXY_EGRESS_FAILED";
|
|
159
|
+
}
|
|
160
|
+
if (causeCode !== undefined && OUTBOUND_EGRESS_CODES.has(causeCode)) {
|
|
161
|
+
return mapOutboundCode(causeCode) ?? "FIGMA_PROXY_EGRESS_FAILED";
|
|
162
|
+
}
|
|
163
|
+
return undefined;
|
|
164
|
+
};
|
|
165
|
+
// (a) OutboundHttpEgressError path — a proxy was genuinely in play.
|
|
166
|
+
// FIGMA_PROXY_* codes are ONLY reachable through this function.
|
|
167
|
+
const classifyOutbound = (err, cause, topCode, causeCode) => {
|
|
168
|
+
const outbound = err instanceof OutboundHttpEgressError
|
|
169
|
+
? err
|
|
170
|
+
: cause instanceof OutboundHttpEgressError
|
|
171
|
+
? cause
|
|
172
|
+
: undefined;
|
|
173
|
+
if (outbound !== undefined)
|
|
174
|
+
return mapOutboundCode(outbound.code) ?? "FIGMA_PROXY_EGRESS_FAILED";
|
|
175
|
+
return mapOutboundCodeFallback(topCode, causeCode);
|
|
176
|
+
};
|
|
177
|
+
// (b) TLS by code or message.
|
|
178
|
+
const classifyTls = (code, msg) => (code !== undefined && TLS_CODES.has(code)) || TLS_MSG_RE.test(msg)
|
|
179
|
+
? "FIGMA_TLS_CA_FAILURE"
|
|
180
|
+
: undefined;
|
|
181
|
+
// (c) Timeout / abort names — check both err and its cause.
|
|
182
|
+
const isAbortName = (name) => name === "TimeoutError" || name === "AbortError";
|
|
183
|
+
const classifyTimeout = (err, cause) => isAbortName(extractName(err)) || isAbortName(extractName(cause))
|
|
184
|
+
? "FIGMA_EGRESS_TIMEOUT"
|
|
185
|
+
: undefined;
|
|
186
|
+
// (d) Direct connectivity codes / messages — no proxy involved.
|
|
187
|
+
const classifyConnectivity = (code, msg) => (code !== undefined && CONNECTIVITY_CODES.has(code)) || CONNECTIVITY_MSG_RE.test(msg)
|
|
188
|
+
? "FIGMA_NETWORK_UNREACHABLE"
|
|
189
|
+
: undefined;
|
|
109
190
|
/**
|
|
110
191
|
* Classify a transport-level throw from `fetch` or the body read into a stable
|
|
111
192
|
* {@link FigmaConnectorErrorCode}. Side-effect-free and total — any non-Error
|
|
112
|
-
* throwable (string, undefined) maps to `
|
|
193
|
+
* throwable (string, undefined) maps to `FIGMA_EGRESS_FAILED`.
|
|
194
|
+
*
|
|
195
|
+
* Precedence:
|
|
196
|
+
* (a) OutboundHttpEgressError (or plain Error with outbound code, for cross-package resilience)
|
|
197
|
+
* → proxy/TLS-via-proxy codes. FIGMA_PROXY_* codes are ONLY reachable via this branch.
|
|
198
|
+
* (b) TLS trust codes / messages → FIGMA_TLS_CA_FAILURE.
|
|
199
|
+
* (c) Timeout / abort names (DOMException AbortError, Node TimeoutError) → FIGMA_EGRESS_TIMEOUT.
|
|
200
|
+
* (d) Direct connectivity codes / messages → FIGMA_NETWORK_UNREACHABLE.
|
|
201
|
+
* (e) Default → FIGMA_EGRESS_FAILED.
|
|
113
202
|
*
|
|
114
203
|
* Inspects `err.code`, `err.cause.code`, and `err.message` in that order of
|
|
115
204
|
* precedence so Node.js `TypeError: fetch failed` wrappers (undici wraps the
|
|
116
205
|
* underlying `cause.code`) are classified correctly.
|
|
117
206
|
*/
|
|
118
207
|
export const classifyFigmaTransportError = (err) => {
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (OUTBOUND_PROXY_UNREACHABLE_CODES.has(code))
|
|
124
|
-
return "FIGMA_PROXY_UNREACHABLE";
|
|
125
|
-
if (OUTBOUND_PROXY_EGRESS_CODES.has(code))
|
|
126
|
-
return "FIGMA_PROXY_EGRESS_FAILED";
|
|
127
|
-
if (TLS_CODES.has(code))
|
|
128
|
-
return "FIGMA_TLS_CA_FAILURE";
|
|
129
|
-
if (CONNECTIVITY_CODES.has(code))
|
|
130
|
-
return "FIGMA_PROXY_UNREACHABLE";
|
|
131
|
-
}
|
|
208
|
+
const cause = extractCause(err);
|
|
209
|
+
const topCode = extractCode(err);
|
|
210
|
+
const causeCode = extractCauseCode(err);
|
|
211
|
+
const code = topCode ?? causeCode;
|
|
132
212
|
const msg = extractMessage(err);
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
213
|
+
return (classifyOutbound(err, cause, topCode, causeCode) ??
|
|
214
|
+
classifyTls(code, msg) ??
|
|
215
|
+
classifyTimeout(err, cause) ??
|
|
216
|
+
classifyConnectivity(code, msg) ??
|
|
217
|
+
"FIGMA_EGRESS_FAILED");
|
|
138
218
|
};
|
package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts
CHANGED
|
@@ -9,11 +9,20 @@ export interface FigmaHttpResponse {
|
|
|
9
9
|
readonly headers: Readonly<Record<string, string>>;
|
|
10
10
|
}
|
|
11
11
|
export type FigmaHttpPort = (request: FigmaHttpRequest) => Promise<FigmaHttpResponse>;
|
|
12
|
+
/** Optional creation-time overrides for the default HTTP port. */
|
|
13
|
+
export interface FigmaHttpPortOptions {
|
|
14
|
+
readonly timeoutMs?: number;
|
|
15
|
+
readonly maxResponseBytes?: number;
|
|
16
|
+
}
|
|
12
17
|
/**
|
|
13
18
|
* Thin default adapter over the platform `fetch`. This is the ONLY place `fetch` is named.
|
|
14
|
-
* It forwards the caller-built headers verbatim and reads the body as JSON
|
|
15
|
-
* log, retry, or inspect the token. Resilience/backoff is out of scope
|
|
16
|
-
* proxy/custom-CA transport is the platform prerequisite (#802) that replaces
|
|
19
|
+
* It forwards the caller-built headers verbatim and reads the body as JSON with an explicit
|
|
20
|
+
* byte cap; it does not log, retry, or inspect the token. Resilience/backoff is out of scope
|
|
21
|
+
* here (#759); the proxy/custom-CA transport is the platform prerequisite (#802) that replaces
|
|
22
|
+
* this adapter.
|
|
23
|
+
*
|
|
24
|
+
* `redirect: "manual"` prevents the PAT auth header from following a cross-origin redirect.
|
|
25
|
+
* A 3xx response surfaces as a non-2xx port result; the connector treats non-2xx as upstream error.
|
|
17
26
|
*/
|
|
18
|
-
export declare const createDefaultFigmaHttpPort: (egress?: OutboundHttpEgressConfig, fetchImpl?: typeof fetch) => FigmaHttpPort;
|
|
27
|
+
export declare const createDefaultFigmaHttpPort: (egress?: OutboundHttpEgressConfig, fetchImpl?: typeof fetch, options?: FigmaHttpPortOptions) => FigmaHttpPort;
|
|
19
28
|
//# sourceMappingURL=figmaHttpPort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figmaHttpPort.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaHttpPort.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"figmaHttpPort.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaHttpPort.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,iDAAiD,CAAC;AAQzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAGvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEtF,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAYD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,wBAAwB,EACjC,YAAY,OAAO,KAAK,EACxB,UAAU,oBAAoB,KAC7B,aA4BF,CAAC"}
|
package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.js
CHANGED
|
@@ -8,8 +8,16 @@
|
|
|
8
8
|
// `X-Figma-Token` auth header). The token is materialised into that header ONLY by the
|
|
9
9
|
// default adapter below, immediately before the platform `fetch` call — it is never
|
|
10
10
|
// logged here and never re-emitted by the port.
|
|
11
|
+
//
|
|
12
|
+
// redirect: "manual" is set so the PAT auth header can never silently follow a
|
|
13
|
+
// cross-origin redirect. A 3xx response surfaces as a non-2xx status; the connector
|
|
14
|
+
// layer treats any non-2xx as an upstream error.
|
|
11
15
|
import { classifyFigmaTransportError, FigmaConnectorError } from "./figmaConnectorErrors.js";
|
|
12
|
-
import { gatewayFetch, } from "@oscharko-dev/keiko-model-gateway/internal/http";
|
|
16
|
+
import { gatewayFetch, readJsonCapped, } from "@oscharko-dev/keiko-model-gateway/internal/http";
|
|
17
|
+
/** Default request timeout in milliseconds for Figma HTTP API calls. */
|
|
18
|
+
const DEFAULT_TIMEOUT_MS = 60_000;
|
|
19
|
+
/** Default maximum JSON response body size (10 MiB). */
|
|
20
|
+
const DEFAULT_MAX_RESPONSE_BYTES = 10 * 1024 * 1024;
|
|
13
21
|
// Collects the response headers into a plain lower-cased map. `Headers` already lower-cases
|
|
14
22
|
// names, so this is a faithful, allocation-bounded copy with no token (request-only header).
|
|
15
23
|
const collectHeaders = (response) => {
|
|
@@ -19,34 +27,38 @@ const collectHeaders = (response) => {
|
|
|
19
27
|
});
|
|
20
28
|
return out;
|
|
21
29
|
};
|
|
22
|
-
const parseJsonBody = async (response) => {
|
|
23
|
-
const text = await response.text();
|
|
24
|
-
if (text.length === 0)
|
|
25
|
-
return undefined;
|
|
26
|
-
try {
|
|
27
|
-
return JSON.parse(text);
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return undefined;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
30
|
/**
|
|
34
31
|
* Thin default adapter over the platform `fetch`. This is the ONLY place `fetch` is named.
|
|
35
|
-
* It forwards the caller-built headers verbatim and reads the body as JSON
|
|
36
|
-
* log, retry, or inspect the token. Resilience/backoff is out of scope
|
|
37
|
-
* proxy/custom-CA transport is the platform prerequisite (#802) that replaces
|
|
32
|
+
* It forwards the caller-built headers verbatim and reads the body as JSON with an explicit
|
|
33
|
+
* byte cap; it does not log, retry, or inspect the token. Resilience/backoff is out of scope
|
|
34
|
+
* here (#759); the proxy/custom-CA transport is the platform prerequisite (#802) that replaces
|
|
35
|
+
* this adapter.
|
|
36
|
+
*
|
|
37
|
+
* `redirect: "manual"` prevents the PAT auth header from following a cross-origin redirect.
|
|
38
|
+
* A 3xx response surfaces as a non-2xx port result; the connector treats non-2xx as upstream error.
|
|
38
39
|
*/
|
|
39
|
-
export const createDefaultFigmaHttpPort = (egress, fetchImpl) => {
|
|
40
|
+
export const createDefaultFigmaHttpPort = (egress, fetchImpl, options) => {
|
|
41
|
+
const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
42
|
+
const maxResponseBytes = options?.maxResponseBytes ?? DEFAULT_MAX_RESPONSE_BYTES;
|
|
40
43
|
return async (request) => {
|
|
44
|
+
const signal = AbortSignal.timeout(timeoutMs);
|
|
41
45
|
try {
|
|
42
46
|
const response = await gatewayFetch(request.url, {
|
|
43
47
|
method: "GET",
|
|
44
48
|
headers: { ...request.headers },
|
|
49
|
+
redirect: "manual",
|
|
50
|
+
signal,
|
|
45
51
|
...(egress !== undefined ? { egress } : {}),
|
|
46
52
|
...(fetchImpl !== undefined ? { fetchImpl } : {}),
|
|
47
53
|
});
|
|
48
54
|
const headers = collectHeaders(response);
|
|
49
|
-
|
|
55
|
+
let json;
|
|
56
|
+
try {
|
|
57
|
+
json = await readJsonCapped(response, maxResponseBytes);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
throw new FigmaConnectorError("FIGMA_RESPONSE_TOO_LARGE");
|
|
61
|
+
}
|
|
50
62
|
return { status: response.status, json, headers };
|
|
51
63
|
}
|
|
52
64
|
catch (err) {
|
package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts
CHANGED
|
@@ -9,11 +9,21 @@ export interface FigmaRenderResponse {
|
|
|
9
9
|
readonly headers: Readonly<Record<string, string>>;
|
|
10
10
|
}
|
|
11
11
|
export type FigmaRenderPort = (request: FigmaRenderRequest) => Promise<FigmaRenderResponse>;
|
|
12
|
+
/** Optional creation-time overrides for the default render port. */
|
|
13
|
+
export interface FigmaRenderPortOptions {
|
|
14
|
+
readonly timeoutMs?: number;
|
|
15
|
+
readonly maxResponseBytes?: number;
|
|
16
|
+
}
|
|
12
17
|
/**
|
|
13
18
|
* Thin default adapter over the platform `fetch`. This is the ONLY place in the render path
|
|
14
19
|
* `fetch` is named. It forwards the caller-built headers verbatim and reads the body as raw
|
|
15
|
-
* bytes; it does not log, retry, or inspect any token. Resilience/
|
|
16
|
-
* (#759); the proxy/custom-CA transport is the platform
|
|
20
|
+
* bytes with an explicit byte cap; it does not log, retry, or inspect any token. Resilience/
|
|
21
|
+
* backoff is out of scope here (#759); the proxy/custom-CA transport is the platform
|
|
22
|
+
* prerequisite (#802) that replaces this.
|
|
23
|
+
*
|
|
24
|
+
* `redirect: "manual"` prevents any caller-supplied auth header from following a cross-origin
|
|
25
|
+
* redirect. A 3xx response surfaces as a non-2xx port result; the connector treats it as
|
|
26
|
+
* upstream error.
|
|
17
27
|
*/
|
|
18
|
-
export declare const createDefaultFigmaRenderPort: (egress?: OutboundHttpEgressConfig, fetchImpl?: typeof fetch) => FigmaRenderPort;
|
|
28
|
+
export declare const createDefaultFigmaRenderPort: (egress?: OutboundHttpEgressConfig, fetchImpl?: typeof fetch, options?: FigmaRenderPortOptions) => FigmaRenderPort;
|
|
19
29
|
//# sourceMappingURL=figmaRenderPort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figmaRenderPort.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaRenderPort.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"figmaRenderPort.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaRenderPort.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,iDAAiD,CAAC;AAQzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAG3B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAE5F,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAiCD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,wBAAwB,EACjC,YAAY,OAAO,KAAK,EACxB,UAAU,sBAAsB,KAC/B,eA0BF,CAAC"}
|
package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js
CHANGED
|
@@ -10,20 +10,69 @@
|
|
|
10
10
|
// Figma auth header (the ephemeral url is pre-signed), but the seam still forwards whatever
|
|
11
11
|
// headers the caller supplies so the proxy adapter can add transport headers. The token is
|
|
12
12
|
// never materialised here and never logged.
|
|
13
|
+
//
|
|
14
|
+
// redirect: "manual" is set so any auth header supplied by the caller cannot follow a
|
|
15
|
+
// cross-origin redirect. A 3xx response surfaces as a non-2xx status; the connector
|
|
16
|
+
// layer treats non-2xx as upstream error.
|
|
13
17
|
import { classifyFigmaTransportError, FigmaConnectorError } from "./figmaConnectorErrors.js";
|
|
14
18
|
import { gatewayFetch, } from "@oscharko-dev/keiko-model-gateway/internal/http";
|
|
19
|
+
/** Default request timeout in milliseconds for Figma render downloads. */
|
|
20
|
+
const DEFAULT_TIMEOUT_MS = 60_000;
|
|
21
|
+
/** Default maximum render response body size (32 MiB). */
|
|
22
|
+
const DEFAULT_MAX_RESPONSE_BYTES = 32 * 1024 * 1024;
|
|
23
|
+
/**
|
|
24
|
+
* Read a streaming response body up to `maxBytes`, accumulating into a Uint8Array.
|
|
25
|
+
* Throws a {@link FigmaConnectorError} with `FIGMA_RESPONSE_TOO_LARGE` if the cap is exceeded.
|
|
26
|
+
*/
|
|
27
|
+
const readBytesCapped = async (response, maxBytes) => {
|
|
28
|
+
if (response.body === null) {
|
|
29
|
+
const buffer = await response.arrayBuffer();
|
|
30
|
+
return new Uint8Array(buffer);
|
|
31
|
+
}
|
|
32
|
+
const reader = response.body.getReader();
|
|
33
|
+
const chunks = [];
|
|
34
|
+
let total = 0;
|
|
35
|
+
for (;;) {
|
|
36
|
+
const { done, value } = await reader.read();
|
|
37
|
+
if (done)
|
|
38
|
+
break;
|
|
39
|
+
total += value.byteLength;
|
|
40
|
+
if (total > maxBytes) {
|
|
41
|
+
await reader.cancel();
|
|
42
|
+
throw new FigmaConnectorError("FIGMA_RESPONSE_TOO_LARGE");
|
|
43
|
+
}
|
|
44
|
+
chunks.push(value);
|
|
45
|
+
}
|
|
46
|
+
const out = new Uint8Array(total);
|
|
47
|
+
let offset = 0;
|
|
48
|
+
for (const chunk of chunks) {
|
|
49
|
+
out.set(chunk, offset);
|
|
50
|
+
offset += chunk.byteLength;
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
};
|
|
15
54
|
/**
|
|
16
55
|
* Thin default adapter over the platform `fetch`. This is the ONLY place in the render path
|
|
17
56
|
* `fetch` is named. It forwards the caller-built headers verbatim and reads the body as raw
|
|
18
|
-
* bytes; it does not log, retry, or inspect any token. Resilience/
|
|
19
|
-
* (#759); the proxy/custom-CA transport is the platform
|
|
57
|
+
* bytes with an explicit byte cap; it does not log, retry, or inspect any token. Resilience/
|
|
58
|
+
* backoff is out of scope here (#759); the proxy/custom-CA transport is the platform
|
|
59
|
+
* prerequisite (#802) that replaces this.
|
|
60
|
+
*
|
|
61
|
+
* `redirect: "manual"` prevents any caller-supplied auth header from following a cross-origin
|
|
62
|
+
* redirect. A 3xx response surfaces as a non-2xx port result; the connector treats it as
|
|
63
|
+
* upstream error.
|
|
20
64
|
*/
|
|
21
|
-
export const createDefaultFigmaRenderPort = (egress, fetchImpl) => {
|
|
65
|
+
export const createDefaultFigmaRenderPort = (egress, fetchImpl, options) => {
|
|
66
|
+
const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
67
|
+
const maxResponseBytes = options?.maxResponseBytes ?? DEFAULT_MAX_RESPONSE_BYTES;
|
|
22
68
|
return async (request) => {
|
|
69
|
+
const signal = AbortSignal.timeout(timeoutMs);
|
|
23
70
|
try {
|
|
24
71
|
const response = await gatewayFetch(request.url, {
|
|
25
72
|
method: "GET",
|
|
26
73
|
headers: { ...request.headers },
|
|
74
|
+
redirect: "manual",
|
|
75
|
+
signal,
|
|
27
76
|
...(egress !== undefined ? { egress } : {}),
|
|
28
77
|
...(fetchImpl !== undefined ? { fetchImpl } : {}),
|
|
29
78
|
});
|
|
@@ -31,8 +80,8 @@ export const createDefaultFigmaRenderPort = (egress, fetchImpl) => {
|
|
|
31
80
|
response.headers.forEach((value, name) => {
|
|
32
81
|
headers[name] = value;
|
|
33
82
|
});
|
|
34
|
-
const
|
|
35
|
-
return { status: response.status, bytes
|
|
83
|
+
const bytes = await readBytesCapped(response, maxResponseBytes);
|
|
84
|
+
return { status: response.status, bytes, headers };
|
|
36
85
|
}
|
|
37
86
|
catch (err) {
|
|
38
87
|
if (err instanceof FigmaConnectorError)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figmaSnapshotBuilder.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaSnapshotBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAWzF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,wBAAwB,CAAC,cAAc,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,wFAAwF;IACxF,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"figmaSnapshotBuilder.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaSnapshotBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAWzF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,wBAAwB,CAAC,cAAc,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,wFAAwF;IACxF,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC;AAwLD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,uBAAuB,KAC7B,OAAO,CAAC,aAAa,CA6BvB,CAAC"}
|
|
@@ -29,6 +29,37 @@ const chunk = (items, size) => {
|
|
|
29
29
|
out.push(items.slice(i, i + size));
|
|
30
30
|
return out;
|
|
31
31
|
};
|
|
32
|
+
// Returns true when the hostname is an IP literal or a local/loopback name that must be blocked.
|
|
33
|
+
const isBlockedHostname = (h) => h.length === 0 ||
|
|
34
|
+
/^\d+\.\d+\.\d+\.\d+$/.test(h) ||
|
|
35
|
+
h.startsWith("[") ||
|
|
36
|
+
h === "localhost" ||
|
|
37
|
+
h.endsWith(".localhost") ||
|
|
38
|
+
h.endsWith(".local");
|
|
39
|
+
// Validates that a render URL returned by the Figma API is safe to follow. Blocks http:
|
|
40
|
+
// (plaintext) and IP-literal hostnames (RFC-1918, loopback, link-local) to prevent SSRF via
|
|
41
|
+
// a compromised or MITM'd API response. A broad IP-block is preferred over a tight CDN
|
|
42
|
+
// allowlist because Figma's pre-signed render URLs span multiple AWS S3 regions/CDN fronts.
|
|
43
|
+
const isRenderUrlSafe = (raw) => {
|
|
44
|
+
let url;
|
|
45
|
+
try {
|
|
46
|
+
url = new URL(raw);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (url.protocol !== "https:")
|
|
52
|
+
return false;
|
|
53
|
+
// Normalise: lowercase + strip exactly one trailing dot so "localhost." == "localhost".
|
|
54
|
+
const h = url.hostname.toLowerCase().replace(/\.$/, "");
|
|
55
|
+
if (isBlockedHostname(h))
|
|
56
|
+
return false;
|
|
57
|
+
// Only allow the default HTTPS port (443 or implicit) — non-standard ports indicate an
|
|
58
|
+
// internal service, not a CDN. url.port is "" when the port is the scheme default.
|
|
59
|
+
if (url.port !== "" && url.port !== "443")
|
|
60
|
+
return false;
|
|
61
|
+
return true;
|
|
62
|
+
};
|
|
32
63
|
const buildImagesUrl = (fileKey, ids, version) => {
|
|
33
64
|
const url = new URL(`${FIGMA_API_ORIGIN}/v1/images/${encodeURIComponent(fileKey)}`);
|
|
34
65
|
url.searchParams.set("ids", ids.join(","));
|
|
@@ -79,24 +110,65 @@ const requestRenderUrls = async (input, screenIds) => {
|
|
|
79
110
|
const skip = (screenId, reason) => ({
|
|
80
111
|
skipped: { screenId, reason },
|
|
81
112
|
});
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
113
|
+
// Classifies a finished render download into a skip reason, or null when the bytes are usable.
|
|
114
|
+
const renderSkipReason = (response, maxBytes) => {
|
|
115
|
+
if (response === null)
|
|
116
|
+
return "render-fetch-failed";
|
|
117
|
+
if (response.status < 200 || response.status >= 300)
|
|
118
|
+
return "render-fetch-failed";
|
|
119
|
+
if (response.bytes.length === 0)
|
|
120
|
+
return "render-empty";
|
|
121
|
+
if (response.bytes.length > maxBytes)
|
|
122
|
+
return "render-oversized";
|
|
123
|
+
return null;
|
|
124
|
+
};
|
|
125
|
+
// Hard-egress codes for the render-byte download host (S3/CDN — a DIFFERENT host than
|
|
126
|
+
// api.figma.com). If the render port throws a FigmaConnectorError in this family, it means
|
|
127
|
+
// TLS or proxy is misconfigured for the render CDN; swallowing it would yield a "successful"
|
|
128
|
+
// snapshot with every screen skipped while hiding the root cause. Re-throw to abort the build,
|
|
129
|
+
// consistent with the DEEP_FETCH_ABORT_CODES discipline in figmaScopedPagination.ts.
|
|
130
|
+
// Using ReadonlySet<string> so this set is forward-compatible with the new codes
|
|
131
|
+
// (FIGMA_PROXY_AUTH_REQUIRED, FIGMA_PROXY_BLOCKED_BY_POLICY) landing in a parallel change to
|
|
132
|
+
// figmaConnectorErrors.ts without requiring a re-touch of this file.
|
|
133
|
+
const RENDER_EGRESS_ABORT_CODES = new Set([
|
|
134
|
+
"FIGMA_TLS_CA_FAILURE",
|
|
135
|
+
"FIGMA_PROXY_UNREACHABLE",
|
|
136
|
+
"FIGMA_PROXY_EGRESS_FAILED",
|
|
137
|
+
"FIGMA_PROXY_AUTH_REQUIRED",
|
|
138
|
+
"FIGMA_PROXY_BLOCKED_BY_POLICY",
|
|
139
|
+
]);
|
|
140
|
+
// Classifies a render-port throw into a re-throw (hard egress abort) or a coded skip outcome.
|
|
141
|
+
// Hard-egress errors abort the whole build — they affect every screen on the same host so
|
|
142
|
+
// swallowing them would silently produce an empty snapshot.
|
|
143
|
+
const classifyRenderError = (screenId, err) => {
|
|
144
|
+
if (err instanceof FigmaConnectorError) {
|
|
145
|
+
if (RENDER_EGRESS_ABORT_CODES.has(err.code))
|
|
146
|
+
throw err;
|
|
147
|
+
return skip(screenId, `render-fetch-failed:${err.code}`);
|
|
148
|
+
}
|
|
149
|
+
return skip(screenId, "render-fetch-failed");
|
|
150
|
+
};
|
|
151
|
+
// Downloads one screen's render bytes and classifies the result into a kept screen or a skip.
|
|
152
|
+
// A single screen failing after retries degrades to a skip (partial render), never aborting.
|
|
153
|
+
// Exception: hard egress errors (TLS/proxy misconfiguration) abort via classifyRenderError.
|
|
85
154
|
const resolveScreen = async (input, ir, renderUrl) => {
|
|
86
155
|
if (renderUrl === null)
|
|
87
156
|
return skip(ir.id, "render-url-missing");
|
|
157
|
+
if (!isRenderUrlSafe(renderUrl))
|
|
158
|
+
return skip(ir.id, "render-url-blocked");
|
|
88
159
|
const maxBytes = input.maxImageBytes ?? DEFAULT_MAX_IMAGE_BYTES;
|
|
89
160
|
const policy = input.retryPolicy ?? DEFAULT_FIGMA_RETRY_POLICY;
|
|
90
161
|
const sleep = input.sleep ?? realFigmaRetrySleep;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
162
|
+
let response;
|
|
163
|
+
try {
|
|
164
|
+
response = await fetchWithBackoff(() => input.renderPort({ url: renderUrl, headers: {} }), policy, sleep);
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
return classifyRenderError(ir.id, err);
|
|
168
|
+
}
|
|
169
|
+
const reason = renderSkipReason(response, maxBytes);
|
|
170
|
+
if (reason !== null)
|
|
171
|
+
return skip(ir.id, reason);
|
|
100
172
|
const sha256 = hashBytes(response.bytes);
|
|
101
173
|
const screen = {
|
|
102
174
|
screenId: ir.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figmaSnapshotHash.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaSnapshotHash.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEzF,KAAK,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"figmaSnapshotHash.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaSnapshotHash.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEzF,KAAK,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AAwDlD,kFAAkF;AAClF,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,EAAE,IAAI,QAAQ,EAAE,aAAa,MAAM,KAAG,MACV,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,uBAAuB,MAAM,EAC7B,SAAS,MAAM,GAAG,SAAS,EAC3B,WAAW,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAAE,KAClF,MAKF,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,UAAU,KAAG,MACI,CAAC"}
|
package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js
CHANGED
|
@@ -23,18 +23,26 @@ const canonical = (value) => {
|
|
|
23
23
|
.map((key) => `${JSON.stringify(key)}:${canonical(record[key])}`);
|
|
24
24
|
return `{${entries.join(",")}}`;
|
|
25
25
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
// Keys excluded from the integrity hash. Using a static Set + Object.entries filter avoids both
|
|
27
|
+
// dynamic-delete (no-dynamic-delete) and unused-var issues while keeping the whitelist explicit.
|
|
28
|
+
const HASH_NEUTRAL_KEYS = new Set([
|
|
29
|
+
"textColor",
|
|
30
|
+
"backgroundColor",
|
|
31
|
+
"layout",
|
|
32
|
+
"sizing",
|
|
33
|
+
"cornerRadius",
|
|
34
|
+
"typography",
|
|
35
|
+
]);
|
|
36
|
+
const stripHashNeutralFields = (node) => {
|
|
37
|
+
const entries = Object.entries(node).filter(([key]) => key !== "children" && !HASH_NEUTRAL_KEYS.has(key));
|
|
38
|
+
return {
|
|
39
|
+
...Object.fromEntries(entries),
|
|
40
|
+
children: node.children.map(stripHashNeutralFields),
|
|
30
41
|
};
|
|
31
|
-
delete projected.textColor;
|
|
32
|
-
delete projected.backgroundColor;
|
|
33
|
-
return projected;
|
|
34
42
|
};
|
|
35
43
|
const hashStableIr = (ir) => ({
|
|
36
44
|
...ir,
|
|
37
|
-
root:
|
|
45
|
+
root: stripHashNeutralFields(ir.root),
|
|
38
46
|
});
|
|
39
47
|
/** sha256 over the canonical per-screen identity: {screenId, ir, imageSha256}. */
|
|
40
48
|
export const hashScreen = (screenId, ir, imageSha256) => sha256Hex(canonical({ imageSha256, ir: hashStableIr(ir), screenId }));
|
|
@@ -16,8 +16,12 @@ export interface FigmaSnapshotScreen {
|
|
|
16
16
|
/** sha256 over the canonical {screenId, ir, imageSha256} body — the per-screen drift identity. */
|
|
17
17
|
readonly integrityHash: string;
|
|
18
18
|
}
|
|
19
|
-
/** Why a detected screen produced no render and was excluded from `screens` (partial-render).
|
|
20
|
-
|
|
19
|
+
/** Why a detected screen produced no render and was excluded from `screens` (partial-render).
|
|
20
|
+
* The `render-fetch-failed` member also appears as `render-fetch-failed:<CODE>` when the fetch
|
|
21
|
+
* threw a FigmaConnectorError — the code suffix lets metrics distinguish an egress
|
|
22
|
+
* misconfiguration (e.g. `FIGMA_EGRESS_TIMEOUT`) from an unclassified network flake.
|
|
23
|
+
*/
|
|
24
|
+
export type FigmaSkippedScreenReason = "render-url-missing" | "render-url-blocked" | "render-fetch-failed" | `render-fetch-failed:${string}` | "render-empty" | "render-oversized";
|
|
21
25
|
export interface FigmaSkippedScreen {
|
|
22
26
|
readonly screenId: string;
|
|
23
27
|
readonly reason: FigmaSkippedScreenReason;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figmaSnapshotTypes.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaSnapshotTypes.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,KAAK,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AAElD,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,kGAAkG;IAClG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED
|
|
1
|
+
{"version":3,"file":"figmaSnapshotTypes.d.ts","sourceRoot":"","sources":["../../../src/qualityIntelligence/figma/figmaSnapshotTypes.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,KAAK,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AAElD,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,kGAAkG;IAClG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAChC,oBAAoB,GACpB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,MAAM,EAAE,GAC/B,cAAc,GACd,kBAAkB,CAAC;AAEvB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;CAC3C;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD,QAAQ,CAAC,cAAc,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvD;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,wBAAwB,CAAC,eAAe,EAAE,CAAC;IACrE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC"}
|