@oscharko-dev/keiko 0.2.0-beta.2 → 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 +34 -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/manifest.webmanifest +2 -2
- 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/lifecycle.d.ts +2 -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 +51 -10
- package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts +3 -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 +128 -38
- 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 +7 -7
- 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/bffWire.d.ts +15 -0
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.js +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/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
- 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 +258 -132
- 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 +93 -14
- 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/dist/paths.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/paths.js +11 -5
- 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 +62 -12
- 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 +198 -72
- package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts +1 -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 +6 -5
- 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 +28 -5
- 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 +11 -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 +90 -19
- 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 +19 -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/paths.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/store/paths.js +9 -2
- 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 +58 -23
- 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 +22 -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/BNiyfCos3TiM2QdurajIZ/_buildManifest.js +0 -1
- package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.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/923-4141696576191bc0.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-03d642dcd0f15b52.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/launch/page-c725ff0c02b50663.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/layout-aadefe615729db05.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-4a7f242906e19a07.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-3361769b8964e659.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-44b3f4fa3e10085f.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-0cdfb3eeb659daeb.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-e78e0cd2876fec41.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-e32fe86466827484.js +0 -1
- package/dist/ui/static/_next/static/chunks/app/page-9ad91065d05ddfa0.js +0 -1
- package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
- package/dist/ui/static/_next/static/chunks/main-app-b52a8fa1d8127a5f.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/51fdcfdc624e723d.css +0 -1
- /package/dist/ui/static/_next/static/{BNiyfCos3TiM2QdurajIZ → Hb6brrvZY2nZtizQlYhVt}/_ssgManifest.js +0 -0
- /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"AASA,OAAO,EAQL,KAAK,SAAS,EAGf,MAAM,mCAAmC,CAAC;AAI3C,OAAO,EAML,KAAK,cAAc,EAGpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAWzC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CAC9C;AA4ID,wBAAsB,cAAc,CAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,EACT,GAAG,GAAE,SAAc,EACnB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// applicable dimensions pass AND surface parity passes; 1 on dimension/parity failure or runtime
|
|
7
7
|
// error; 2 on usage error (unknown flag, mutual exclusion, unknown suite/fixture name).
|
|
8
8
|
import { writeFileSync } from "node:fs";
|
|
9
|
-
import { GatewayError, redact } from "@oscharko-dev/keiko-model-gateway";
|
|
9
|
+
import { ConfigInvalidError, GatewayError, assertConfiguredModel, findConfiguredCapability, listConfiguredCapabilities, loadConfigFromFile, redact, } from "@oscharko-dev/keiko-model-gateway";
|
|
10
10
|
import { createAuditRedactor, deepRedactStrings } from "@oscharko-dev/keiko-evidence";
|
|
11
11
|
import { keikoApiKeySecretValues } from "@oscharko-dev/keiko-security";
|
|
12
12
|
import { parseRunRequest } from "@oscharko-dev/keiko-server";
|
|
@@ -156,10 +156,14 @@ export async function runEvaluateCli(args, io, env = {}, deps = {}) {
|
|
|
156
156
|
}
|
|
157
157
|
async function runSuite(parsed, fixtures, io, env, deps) {
|
|
158
158
|
try {
|
|
159
|
+
const liveModelId = resolveLiveModelId(parsed, io, env);
|
|
160
|
+
if (typeof liveModelId === "number") {
|
|
161
|
+
return liveModelId;
|
|
162
|
+
}
|
|
159
163
|
const scorecard = await runEvaluationSuite({
|
|
160
164
|
mode: parsed.live ? "live" : "offline",
|
|
161
165
|
fixtures,
|
|
162
|
-
...(
|
|
166
|
+
...(liveModelId === undefined ? {} : { modelIdOverride: liveModelId }),
|
|
163
167
|
...(parsed.config === undefined ? {} : { configPath: parsed.config }),
|
|
164
168
|
},
|
|
165
169
|
// Provide Date.now as the default wall-clock so a real `keiko evaluate` prints the actual
|
|
@@ -185,6 +189,61 @@ async function runSuite(parsed, fixtures, io, env, deps) {
|
|
|
185
189
|
return handleRunError(error, parsed, io);
|
|
186
190
|
}
|
|
187
191
|
}
|
|
192
|
+
function resolveLiveModelId(parsed, io, env) {
|
|
193
|
+
if (!parsed.live) {
|
|
194
|
+
return parsed.model;
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
const path = parsed.config ?? env.KEIKO_CONFIG_FILE;
|
|
198
|
+
if (path === undefined) {
|
|
199
|
+
throw new ConfigInvalidError("no config source; pass --config PATH or set KEIKO_CONFIG_FILE");
|
|
200
|
+
}
|
|
201
|
+
const config = loadConfigFromFile(path, env);
|
|
202
|
+
if (parsed.model !== undefined) {
|
|
203
|
+
assertLiveEvaluationModel(config, parsed.model);
|
|
204
|
+
return parsed.model;
|
|
205
|
+
}
|
|
206
|
+
const modelId = selectLiveEvaluationModel(config);
|
|
207
|
+
if (modelId === undefined) {
|
|
208
|
+
io.err("Error: no configured workflow-capable chat model is available.\n");
|
|
209
|
+
return 1;
|
|
210
|
+
}
|
|
211
|
+
return modelId;
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
if (error instanceof GatewayError) {
|
|
215
|
+
io.err(`Error: model gateway configuration problem — ${redact(error.message)}\n` +
|
|
216
|
+
`Provide a gateway config with --config PATH or KEIKO_CONFIG_FILE.\n`);
|
|
217
|
+
return 1;
|
|
218
|
+
}
|
|
219
|
+
throw error;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
function isLiveEvaluationCapable(capability) {
|
|
223
|
+
return (capability?.kind === "chat" &&
|
|
224
|
+
capability.workflowEligible &&
|
|
225
|
+
capability.toolCalling &&
|
|
226
|
+
capability.structuredOutput);
|
|
227
|
+
}
|
|
228
|
+
const COST_RANK = { low: 0, medium: 1, high: 2 };
|
|
229
|
+
function selectLiveEvaluationModel(config) {
|
|
230
|
+
let best;
|
|
231
|
+
for (const capability of listConfiguredCapabilities(config)) {
|
|
232
|
+
if (!isLiveEvaluationCapable(capability)) {
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
if (best === undefined || COST_RANK[capability.costClass] < COST_RANK[best.costClass]) {
|
|
236
|
+
best = capability;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return best?.id;
|
|
240
|
+
}
|
|
241
|
+
function assertLiveEvaluationModel(config, modelId) {
|
|
242
|
+
assertConfiguredModel(config, modelId);
|
|
243
|
+
if (!isLiveEvaluationCapable(findConfiguredCapability(config, modelId))) {
|
|
244
|
+
throw new ConfigInvalidError(`model '${modelId}' is not workflow-capable; live evaluation requires chat + tool-calling + structured-output`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
188
247
|
function isOutputAlreadyExistsError(error) {
|
|
189
248
|
return (typeof error === "object" &&
|
|
190
249
|
error !== null &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAQA,OAAO,EAQL,KAAK,aAAa,EAGnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAWzC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACtC;
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAQA,OAAO,EAQL,KAAK,aAAa,EAGnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAWzC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACtC;AAmID,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,eAAoB,GACzB,MAAM,CA2BR"}
|
|
@@ -13,19 +13,65 @@ const USAGE = `Usage:
|
|
|
13
13
|
Lists or shows redacted evidence manifests written by \`keiko run\`. Reads only the
|
|
14
14
|
evidence base dir (default $KEIKO_EVIDENCE_DIR or ./.keiko/evidence; override with --evidence-dir).
|
|
15
15
|
`;
|
|
16
|
-
function
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
function parseSubcommand(value) {
|
|
17
|
+
return value === "list" || value === "show" ? value : undefined;
|
|
18
|
+
}
|
|
19
|
+
function parseFlags(args, startIndex) {
|
|
20
|
+
let json = false;
|
|
21
|
+
let evidenceDir;
|
|
22
|
+
let index = startIndex;
|
|
23
|
+
while (index < args.length) {
|
|
24
|
+
const arg = args[index];
|
|
25
|
+
if (arg === "--json") {
|
|
26
|
+
json = true;
|
|
27
|
+
index += 1;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (arg !== "--evidence-dir") {
|
|
31
|
+
return { ok: false };
|
|
32
|
+
}
|
|
33
|
+
const value = args[index + 1];
|
|
34
|
+
if (value === undefined || value.startsWith("--")) {
|
|
35
|
+
return { ok: false };
|
|
36
|
+
}
|
|
37
|
+
evidenceDir = value;
|
|
38
|
+
index += 2;
|
|
20
39
|
}
|
|
21
|
-
|
|
22
|
-
return value === undefined || value.startsWith("--") ? undefined : value;
|
|
40
|
+
return { ok: true, json, evidenceDir };
|
|
23
41
|
}
|
|
24
|
-
function
|
|
42
|
+
function invalidArgs(message) {
|
|
43
|
+
return { ok: false, error: message };
|
|
44
|
+
}
|
|
45
|
+
function resolveStore(evidenceDir, deps) {
|
|
25
46
|
if (deps.store !== undefined) {
|
|
26
47
|
return deps.store;
|
|
27
48
|
}
|
|
28
|
-
return createNodeEvidenceStore(resolveEvidenceDir(
|
|
49
|
+
return createNodeEvidenceStore(resolveEvidenceDir(evidenceDir, deps.env));
|
|
50
|
+
}
|
|
51
|
+
function parseEvidenceArgs(args) {
|
|
52
|
+
const subcommand = parseSubcommand(args[0]);
|
|
53
|
+
if (subcommand === undefined) {
|
|
54
|
+
const sub = args[0];
|
|
55
|
+
return invalidArgs(sub === undefined ? USAGE : `keiko evidence: unknown subcommand: ${sub}\n${USAGE}`);
|
|
56
|
+
}
|
|
57
|
+
let index = 1;
|
|
58
|
+
let runId;
|
|
59
|
+
if (subcommand === "show") {
|
|
60
|
+
runId = args[index];
|
|
61
|
+
if (runId === undefined || runId.startsWith("--")) {
|
|
62
|
+
return invalidArgs(`keiko evidence: show requires a <runId>.\n${USAGE}`);
|
|
63
|
+
}
|
|
64
|
+
index += 1;
|
|
65
|
+
}
|
|
66
|
+
const flags = parseFlags(args, index);
|
|
67
|
+
if (!flags.ok) {
|
|
68
|
+
return invalidArgs(`keiko evidence: invalid arguments.\n${USAGE}`);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
ok: true,
|
|
72
|
+
error: "",
|
|
73
|
+
parsed: { subcommand, runId, evidenceDir: flags.evidenceDir, json: flags.json === true },
|
|
74
|
+
};
|
|
29
75
|
}
|
|
30
76
|
function renderListText(entries) {
|
|
31
77
|
if (entries.length === 0) {
|
|
@@ -59,22 +105,20 @@ function exitForAuditError(error, io) {
|
|
|
59
105
|
return error instanceof InvalidRunIdError ? 2 : 1;
|
|
60
106
|
}
|
|
61
107
|
export function runEvidenceCli(args, io, deps = {}) {
|
|
62
|
-
const
|
|
63
|
-
|
|
108
|
+
const parsed = parseEvidenceArgs(args);
|
|
109
|
+
if (!parsed.ok || parsed.parsed === undefined) {
|
|
110
|
+
io.err(parsed.error);
|
|
111
|
+
return 2;
|
|
112
|
+
}
|
|
64
113
|
try {
|
|
65
|
-
if (
|
|
66
|
-
return runList(resolveStore(
|
|
114
|
+
if (parsed.parsed.subcommand === "list") {
|
|
115
|
+
return runList(resolveStore(parsed.parsed.evidenceDir, deps), parsed.parsed.json, io);
|
|
67
116
|
}
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
io.err(`keiko evidence: show requires a <runId>.\n${USAGE}`);
|
|
72
|
-
return 2;
|
|
73
|
-
}
|
|
74
|
-
return runShow(resolveStore(args, deps), runId, json, io);
|
|
117
|
+
if (parsed.parsed.runId === undefined) {
|
|
118
|
+
io.err(`keiko evidence: show requires a <runId>.\n${USAGE}`);
|
|
119
|
+
return 2;
|
|
75
120
|
}
|
|
76
|
-
|
|
77
|
-
return 2;
|
|
121
|
+
return runShow(resolveStore(parsed.parsed.evidenceDir, deps), parsed.parsed.runId, parsed.parsed.json, io);
|
|
78
122
|
}
|
|
79
123
|
catch (error) {
|
|
80
124
|
if (error instanceof AuditError) {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// any executable path or port that has not been validated by `validateExecPath` /
|
|
8
8
|
// `validatePort`. The validators are deliberately strict allow-lists: a `keiko` executable
|
|
9
9
|
// path that contains a space, a shell metacharacter, or any character outside
|
|
10
|
-
// `[A-Za-z0-9_
|
|
10
|
+
// `[A-Za-z0-9_@\-./\\:]` is rejected. Spaces in the bin location are a documented
|
|
11
11
|
// unsupported edge case for this release (ADR-0024 D8 / spec §"Per-platform content rules").
|
|
12
12
|
//
|
|
13
13
|
// PLATFORMS:
|
|
@@ -23,7 +23,7 @@ import { posix as posixPath, win32 as win32Path } from "node:path";
|
|
|
23
23
|
// `&`, `|`, `(`, `)`, `<`, `>`, `*`, `?`, `~`, `#`, `!`, `,`, `=`, `+`, control chars —
|
|
24
24
|
// is rejected. The intent is defense-in-depth even though XDG `.desktop` and `.bat`
|
|
25
25
|
// have their own quoting rules: no metacharacter ever reaches the file content.
|
|
26
|
-
const EXEC_PATH_RE = /^[A-Za-z0-9_
|
|
26
|
+
const EXEC_PATH_RE = /^[A-Za-z0-9_@\-./\\:]+$/;
|
|
27
27
|
export const MIN_PORT = 1024;
|
|
28
28
|
export const MAX_PORT = 65535;
|
|
29
29
|
export class LauncherError extends Error {
|
|
@@ -42,7 +42,7 @@ export function validateExecPath(path) {
|
|
|
42
42
|
throw new LauncherError("EXEC_PATH_TOO_LONG", "keiko launcher: resolved executable path exceeds 4096 chars.");
|
|
43
43
|
}
|
|
44
44
|
if (!EXEC_PATH_RE.test(path)) {
|
|
45
|
-
throw new LauncherError("EXEC_PATH_UNSAFE", `keiko launcher: resolved executable path contains disallowed characters: ${path}\nOnly [A-Za-z0-9_
|
|
45
|
+
throw new LauncherError("EXEC_PATH_UNSAFE", `keiko launcher: resolved executable path contains disallowed characters: ${path}\nOnly [A-Za-z0-9_@\\-./\\\\:] are permitted. Re-install keiko under a path without spaces or shell metacharacters.`);
|
|
46
46
|
}
|
|
47
47
|
return path;
|
|
48
48
|
}
|
|
@@ -6,6 +6,7 @@ type SpawnFn = (command: string, args: readonly string[], opts: SpawnOptions) =>
|
|
|
6
6
|
type FetchFn = (input: string, init?: RequestInit) => Promise<Response>;
|
|
7
7
|
type SleepFn = (ms: number) => Promise<void>;
|
|
8
8
|
type ProcessKiller = (pid: number, signal?: NodeJS.Signals | 0) => void;
|
|
9
|
+
type PortAvailabilityFn = (host: string, port: number) => Promise<boolean>;
|
|
9
10
|
export interface LifecycleCliDeps {
|
|
10
11
|
readonly cwd?: string | undefined;
|
|
11
12
|
readonly spawnFn?: SpawnFn | undefined;
|
|
@@ -13,6 +14,7 @@ export interface LifecycleCliDeps {
|
|
|
13
14
|
readonly sleep?: SleepFn | undefined;
|
|
14
15
|
readonly isProcessAlive?: ((pid: number) => boolean) | undefined;
|
|
15
16
|
readonly killProcess?: ProcessKiller | undefined;
|
|
17
|
+
readonly isPortAvailable?: PortAvailabilityFn | undefined;
|
|
16
18
|
}
|
|
17
19
|
export declare function runLifecycleCli(command: LifecycleCommand, args: readonly string[], io: CliIo, env: EnvSource, deps?: LifecycleCliDeps): Promise<number>;
|
|
18
20
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AASA,OAAO,EAAS,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AASA,OAAO,EAAS,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAGnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,KAAK,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAChE,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,KAAK,YAAY,CAAC;AAC9F,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxE,KAAK,OAAO,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7C,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI,CAAC;AACxE,KAAK,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAgD3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,eAAe,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC3D;AAwaD,wBAAsB,eAAe,CACnC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,EACT,GAAG,EAAE,SAAS,EACd,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
|
+
import { createServer as createNetServer } from "node:net";
|
|
3
4
|
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
4
5
|
import { fileURLToPath } from "node:url";
|
|
5
6
|
import { SDK_VERSION } from "@oscharko-dev/keiko-sdk";
|
|
@@ -151,6 +152,33 @@ function defaultIsProcessAlive(pid) {
|
|
|
151
152
|
return typeof error === "object" && error !== null && "code" in error && error.code === "EPERM";
|
|
152
153
|
}
|
|
153
154
|
}
|
|
155
|
+
function defaultIsPortAvailable(host, port) {
|
|
156
|
+
return new Promise((resolveAvailable) => {
|
|
157
|
+
const server = createNetServer();
|
|
158
|
+
let settled = false;
|
|
159
|
+
const settle = (available) => {
|
|
160
|
+
if (settled)
|
|
161
|
+
return;
|
|
162
|
+
settled = true;
|
|
163
|
+
server.removeAllListeners("error");
|
|
164
|
+
server.removeAllListeners("listening");
|
|
165
|
+
if (server.listening) {
|
|
166
|
+
server.close(() => {
|
|
167
|
+
resolveAvailable(available);
|
|
168
|
+
});
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
resolveAvailable(available);
|
|
172
|
+
};
|
|
173
|
+
server.once("error", () => {
|
|
174
|
+
settle(false);
|
|
175
|
+
});
|
|
176
|
+
server.once("listening", () => {
|
|
177
|
+
settle(true);
|
|
178
|
+
});
|
|
179
|
+
server.listen(port, host);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
154
182
|
function runningPid(options, isAlive) {
|
|
155
183
|
const path = pidFile(options);
|
|
156
184
|
const pid = readPid(path);
|
|
@@ -193,12 +221,13 @@ function spawnUiProcess(options, env, deps, cwd) {
|
|
|
193
221
|
mkdirSync(options.stateDir, { recursive: true, mode: 0o700 });
|
|
194
222
|
const logPath = logFile(options);
|
|
195
223
|
const fd = openSync(logPath, "a", 0o600);
|
|
224
|
+
const uiEnv = childEnv({ ...env, KEIKO_STATE_DIR: options.stateDir });
|
|
196
225
|
try {
|
|
197
226
|
return {
|
|
198
227
|
child: deps.spawnFn(process.execPath, [cliEntryPath(), "ui", "--port", String(options.port), "--host", options.host], {
|
|
199
228
|
cwd,
|
|
200
229
|
detached: true,
|
|
201
|
-
env:
|
|
230
|
+
env: uiEnv,
|
|
202
231
|
stdio: ["ignore", fd, fd],
|
|
203
232
|
}),
|
|
204
233
|
logPath,
|
|
@@ -217,7 +246,7 @@ async function waitForHealth(options, pid, deps) {
|
|
|
217
246
|
const response = await deps.fetchImpl(healthUrl(options), {
|
|
218
247
|
signal: AbortSignal.timeout(1_000),
|
|
219
248
|
});
|
|
220
|
-
if (response.ok) {
|
|
249
|
+
if (response.ok && deps.isProcessAlive(pid)) {
|
|
221
250
|
return true;
|
|
222
251
|
}
|
|
223
252
|
}
|
|
@@ -228,6 +257,12 @@ async function waitForHealth(options, pid, deps) {
|
|
|
228
257
|
}
|
|
229
258
|
return false;
|
|
230
259
|
}
|
|
260
|
+
async function ensureStartPortAvailable(options, io, deps) {
|
|
261
|
+
if (await deps.isPortAvailable(options.host, options.port))
|
|
262
|
+
return true;
|
|
263
|
+
io.err(`keiko start: port ${options.host}:${String(options.port)} is already in use. Stop the existing process or choose another port with --port.\n`);
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
231
266
|
async function cmdStart(options, io, env, deps, cwd) {
|
|
232
267
|
const running = runningPid(options, deps.isProcessAlive);
|
|
233
268
|
if (running !== undefined) {
|
|
@@ -246,6 +281,8 @@ async function cmdStart(options, io, env, deps, cwd) {
|
|
|
246
281
|
if (stopped !== 0)
|
|
247
282
|
return stopped;
|
|
248
283
|
}
|
|
284
|
+
if (!(await ensureStartPortAvailable(options, io, deps)))
|
|
285
|
+
return 1;
|
|
249
286
|
const { child, logPath } = spawnUiProcess(options, env, deps, cwd);
|
|
250
287
|
if (child.pid === undefined) {
|
|
251
288
|
io.err("keiko start: failed to spawn the UI process.\n");
|
|
@@ -308,6 +345,17 @@ async function cmdRestart(options, io, env, deps, cwd) {
|
|
|
308
345
|
return stopped;
|
|
309
346
|
return cmdStart(options, io, env, deps, cwd);
|
|
310
347
|
}
|
|
348
|
+
function runtimeDeps(deps) {
|
|
349
|
+
return {
|
|
350
|
+
spawnFn: deps.spawnFn ?? spawn,
|
|
351
|
+
fetchImpl: deps.fetchImpl ?? fetch,
|
|
352
|
+
sleep: deps.sleep ??
|
|
353
|
+
((ms) => new Promise((resolveSleep) => setTimeout(resolveSleep, ms))),
|
|
354
|
+
isProcessAlive: deps.isProcessAlive ?? defaultIsProcessAlive,
|
|
355
|
+
killProcess: deps.killProcess ?? process.kill.bind(process),
|
|
356
|
+
isPortAvailable: deps.isPortAvailable ?? defaultIsPortAvailable,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
311
359
|
export async function runLifecycleCli(command, args, io, env, deps = {}) {
|
|
312
360
|
const cwd = deps.cwd ?? process.cwd();
|
|
313
361
|
const options = parseLifecycleArgs(args, cwd, env);
|
|
@@ -319,14 +367,7 @@ export async function runLifecycleCli(command, args, io, env, deps = {}) {
|
|
|
319
367
|
io.err(USAGE);
|
|
320
368
|
return 2;
|
|
321
369
|
}
|
|
322
|
-
const fullDeps =
|
|
323
|
-
spawnFn: deps.spawnFn ?? spawn,
|
|
324
|
-
fetchImpl: deps.fetchImpl ?? fetch,
|
|
325
|
-
sleep: deps.sleep ??
|
|
326
|
-
((ms) => new Promise((resolveSleep) => setTimeout(resolveSleep, ms))),
|
|
327
|
-
isProcessAlive: deps.isProcessAlive ?? defaultIsProcessAlive,
|
|
328
|
-
killProcess: deps.killProcess ?? process.kill.bind(process),
|
|
329
|
-
};
|
|
370
|
+
const fullDeps = runtimeDeps(deps);
|
|
330
371
|
const handlers = {
|
|
331
372
|
start: () => cmdStart(options, io, env, fullDeps, cwd),
|
|
332
373
|
stop: () => cmdStop(options, io, fullDeps),
|
|
@@ -9,6 +9,7 @@ export interface UiCliArgs {
|
|
|
9
9
|
readonly config: string | undefined;
|
|
10
10
|
readonly uiDbPath: string | undefined;
|
|
11
11
|
}
|
|
12
|
+
type UiParseResult = UiCliArgs | "help" | null;
|
|
12
13
|
export interface UiCliDeps {
|
|
13
14
|
readonly createServer?: (deps: {
|
|
14
15
|
staticRoot: string;
|
|
@@ -24,9 +25,10 @@ export interface UiCliDeps {
|
|
|
24
25
|
readonly cwd?: string | undefined;
|
|
25
26
|
}
|
|
26
27
|
export type SpawnFn = (command: string, args: readonly string[], opts: SpawnOptions) => ChildProcess;
|
|
27
|
-
export declare function parseUiArgs(args: readonly string[]):
|
|
28
|
+
export declare function parseUiArgs(args: readonly string[]): UiParseResult;
|
|
28
29
|
export declare function applyServerTimeouts(server: Server): void;
|
|
29
30
|
export declare function waitForShutdown(server: Server): Promise<void>;
|
|
30
31
|
export declare function reExecWithSqliteFlag(_env: EnvSource, spawnFn: SpawnFn): Promise<number>;
|
|
31
32
|
export declare function runUiCli(args: readonly string[], io: CliIo, env: EnvSource, deps?: UiCliDeps): Promise<number>;
|
|
33
|
+
export {};
|
|
32
34
|
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAKxC,OAAO,EAAS,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAKxC,OAAO,EAAS,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAmBzC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,KAAK,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;AAa/C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,aAAa,CAAC;KAC5B,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAI7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAG3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAEnD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,MAAM,OAAO,GAAG,CACpB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,YAAY,KACf,YAAY,CAAC;AA8DlB,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAYlE;AAkFD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGxD;AAWD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7D;AA0BD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB7F;AAqGD,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,EACT,GAAG,EAAE,SAAS,EACd,IAAI,GAAE,SAAc,GACnB,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// inheriting stdio and forwarding SIGINT/SIGTERM to the child, then propagates the child's exit
|
|
12
12
|
// code. Injected-test invocations skip the guard entirely.
|
|
13
13
|
import { existsSync, readFileSync } from "node:fs";
|
|
14
|
-
import { dirname, join, resolve } from "node:path";
|
|
14
|
+
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
15
15
|
import { fileURLToPath } from "node:url";
|
|
16
16
|
import { createRequire } from "node:module";
|
|
17
17
|
import { spawn } from "node:child_process";
|
|
@@ -19,20 +19,18 @@ import { createUiServer, loadCspHeader, buildUiHandlerDeps, DEFAULT_UI_PORT, UI_
|
|
|
19
19
|
const ALLOWED_HOSTS = new Set(["127.0.0.1", "localhost"]);
|
|
20
20
|
const SQLITE_FLAG = "--experimental-sqlite";
|
|
21
21
|
const KEIKO_ENV_NAME_RE = /^KEIKO_[A-Z0-9_]+$/;
|
|
22
|
+
// Non-KEIKO names the local .env loader may import. Deliberately a closed allowlist —
|
|
23
|
+
// arbitrary secrets must never be slurped into the server process. FIGMA_ACCESS_TOKEN is
|
|
24
|
+
// part of the documented Figma connector contract (#751): the read-only PAT is configured
|
|
25
|
+
// via .env and consumed server-side only.
|
|
26
|
+
const ENV_NAME_ALLOWLIST = new Set(["FIGMA_ACCESS_TOKEN"]);
|
|
27
|
+
const DEFAULT_STATE_DIR = ".keiko";
|
|
22
28
|
const USAGE = `Usage:
|
|
23
29
|
keiko ui [--port PORT] [--host 127.0.0.1|localhost] [--evidence-dir PATH] [--config PATH] [--ui-db PATH]
|
|
24
30
|
|
|
25
31
|
Launches the local Keiko UI on the loopback interface and prints its URL. The server
|
|
26
32
|
binds 127.0.0.1 only and serves the packaged UI assets (built with \`npm run build:ui\`).
|
|
27
33
|
`;
|
|
28
|
-
function flagValue(args, name) {
|
|
29
|
-
const i = args.indexOf(name);
|
|
30
|
-
if (i === -1) {
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
const value = args[i + 1];
|
|
34
|
-
return value === undefined || value.startsWith("--") ? null : value;
|
|
35
|
-
}
|
|
36
34
|
function parsePort(raw) {
|
|
37
35
|
if (!/^\d{1,5}$/.test(raw)) {
|
|
38
36
|
return null;
|
|
@@ -40,21 +38,61 @@ function parsePort(raw) {
|
|
|
40
38
|
const port = Number(raw);
|
|
41
39
|
return port >= 1 && port <= 65535 ? port : null;
|
|
42
40
|
}
|
|
41
|
+
function readFlagValue(args, index) {
|
|
42
|
+
const value = args[index + 1];
|
|
43
|
+
return value === undefined || value.startsWith("--") ? null : value;
|
|
44
|
+
}
|
|
45
|
+
function isUiFlag(arg) {
|
|
46
|
+
return (arg === "--port" ||
|
|
47
|
+
arg === "--host" ||
|
|
48
|
+
arg === "--evidence-dir" ||
|
|
49
|
+
arg === "--config" ||
|
|
50
|
+
arg === "--ui-db");
|
|
51
|
+
}
|
|
52
|
+
function setRawUiOption(raw, flag, value) {
|
|
53
|
+
switch (flag) {
|
|
54
|
+
case "--port":
|
|
55
|
+
raw.portRaw = value;
|
|
56
|
+
return;
|
|
57
|
+
case "--host":
|
|
58
|
+
raw.hostRaw = value;
|
|
59
|
+
return;
|
|
60
|
+
case "--evidence-dir":
|
|
61
|
+
raw.evidenceRaw = value;
|
|
62
|
+
return;
|
|
63
|
+
case "--config":
|
|
64
|
+
raw.configRaw = value;
|
|
65
|
+
return;
|
|
66
|
+
case "--ui-db":
|
|
67
|
+
raw.uiDbRaw = value;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function collectUiOptions(args) {
|
|
72
|
+
const raw = {};
|
|
73
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
74
|
+
const arg = args[i];
|
|
75
|
+
if (arg === undefined)
|
|
76
|
+
return null;
|
|
77
|
+
if (arg === "--help" || arg === "-h")
|
|
78
|
+
return "help";
|
|
79
|
+
if (!isUiFlag(arg))
|
|
80
|
+
return null;
|
|
81
|
+
const value = readFlagValue(args, i);
|
|
82
|
+
if (value === null)
|
|
83
|
+
return null;
|
|
84
|
+
setRawUiOption(raw, arg, value);
|
|
85
|
+
i += 1;
|
|
86
|
+
}
|
|
87
|
+
return raw;
|
|
88
|
+
}
|
|
43
89
|
// Parses flags. Returns the parsed args, or null on any usage error (missing flag value, invalid
|
|
44
90
|
// port, or a host other than the two loopback names).
|
|
45
91
|
export function parseUiArgs(args) {
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const configRaw =
|
|
50
|
-
const uiDbRaw = flagValue(args, "--ui-db");
|
|
51
|
-
if (portRaw === null ||
|
|
52
|
-
hostRaw === null ||
|
|
53
|
-
evidenceRaw === null ||
|
|
54
|
-
configRaw === null ||
|
|
55
|
-
uiDbRaw === null) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
92
|
+
const raw = collectUiOptions(args);
|
|
93
|
+
if (raw === "help" || raw === null)
|
|
94
|
+
return raw;
|
|
95
|
+
const { portRaw, hostRaw, evidenceRaw, configRaw, uiDbRaw } = raw;
|
|
58
96
|
if (hostRaw !== undefined && !ALLOWED_HOSTS.has(hostRaw)) {
|
|
59
97
|
return null;
|
|
60
98
|
}
|
|
@@ -100,7 +138,7 @@ function loadLocalKeikoEnv(cwd, env) {
|
|
|
100
138
|
if (equals <= 0)
|
|
101
139
|
continue;
|
|
102
140
|
const key = line.slice(0, equals).trim();
|
|
103
|
-
if (!KEIKO_ENV_NAME_RE.test(key))
|
|
141
|
+
if (!KEIKO_ENV_NAME_RE.test(key) && !ENV_NAME_ALLOWLIST.has(key))
|
|
104
142
|
continue;
|
|
105
143
|
if (merged[key] !== undefined)
|
|
106
144
|
continue;
|
|
@@ -111,6 +149,27 @@ function loadLocalKeikoEnv(cwd, env) {
|
|
|
111
149
|
function resolveUiConfigPath(parsed, env) {
|
|
112
150
|
return parsed.config ?? env.KEIKO_CONFIG_FILE;
|
|
113
151
|
}
|
|
152
|
+
function hasEnvValue(value) {
|
|
153
|
+
return value !== undefined && value.length > 0;
|
|
154
|
+
}
|
|
155
|
+
function resolveRuntimeStateDir(cwd, env) {
|
|
156
|
+
const raw = env.KEIKO_STATE_DIR;
|
|
157
|
+
if (hasEnvValue(raw)) {
|
|
158
|
+
return isAbsolute(raw) ? raw : resolve(cwd, raw);
|
|
159
|
+
}
|
|
160
|
+
return resolve(cwd, DEFAULT_STATE_DIR);
|
|
161
|
+
}
|
|
162
|
+
function withDefaultLocalRuntimeStateEnv(cwd, parsed, env) {
|
|
163
|
+
const stateDir = resolveRuntimeStateDir(cwd, env);
|
|
164
|
+
const next = { ...env, KEIKO_STATE_DIR: stateDir };
|
|
165
|
+
if (parsed.uiDbPath === undefined && !hasEnvValue(next.KEIKO_UI_DATA_DIR)) {
|
|
166
|
+
next.KEIKO_UI_DATA_DIR = join(stateDir, "ui");
|
|
167
|
+
}
|
|
168
|
+
if (!hasEnvValue(next.KEIKO_MEMORY_DIR)) {
|
|
169
|
+
next.KEIKO_MEMORY_DIR = join(stateDir, "memory");
|
|
170
|
+
}
|
|
171
|
+
return next;
|
|
172
|
+
}
|
|
114
173
|
// Conservative request/header timeouts on the loopback BFF (defense in depth, L2/L3): even on
|
|
115
174
|
// 127.0.0.1 a slow or stuck client must not hold a connection indefinitely. headersTimeout must be
|
|
116
175
|
// at or below requestTimeout so an incomplete request line/header set is cut first.
|
|
@@ -211,12 +270,13 @@ async function maybeReExecForSqlite(env, deps) {
|
|
|
211
270
|
const spawnFn = deps.spawnFn ?? spawn;
|
|
212
271
|
return reExecWithSqliteFlag(env, spawnFn);
|
|
213
272
|
}
|
|
214
|
-
function buildHandlerDepsOrReport(parsed, effectiveEnv, io) {
|
|
273
|
+
function buildHandlerDepsOrReport(parsed, cwd, effectiveEnv, io) {
|
|
215
274
|
try {
|
|
216
275
|
return buildUiHandlerDeps({
|
|
217
276
|
configPath: resolveUiConfigPath(parsed, effectiveEnv),
|
|
218
277
|
evidenceDir: parsed.evidenceDir,
|
|
219
278
|
uiDbPath: parsed.uiDbPath,
|
|
279
|
+
initialProjectPath: cwd,
|
|
220
280
|
env: effectiveEnv,
|
|
221
281
|
});
|
|
222
282
|
}
|
|
@@ -228,6 +288,19 @@ function buildHandlerDepsOrReport(parsed, effectiveEnv, io) {
|
|
|
228
288
|
throw error;
|
|
229
289
|
}
|
|
230
290
|
}
|
|
291
|
+
function registerLaunchProjectOrReport(cwd, handlerDeps, io) {
|
|
292
|
+
try {
|
|
293
|
+
handlerDeps.store.createProject(cwd);
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
if (error instanceof UiStoreError) {
|
|
298
|
+
io.err(`keiko ui: ${error.message}\n`);
|
|
299
|
+
return 2;
|
|
300
|
+
}
|
|
301
|
+
throw error;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
231
304
|
function ensureStaticRoot(staticRoot, io) {
|
|
232
305
|
if (existsSync(staticRoot)) {
|
|
233
306
|
return true;
|
|
@@ -235,37 +308,54 @@ function ensureStaticRoot(staticRoot, io) {
|
|
|
235
308
|
io.err(`keiko ui: UI assets not found at ${staticRoot}. Run \`npm run build:ui\` first.\n`);
|
|
236
309
|
return false;
|
|
237
310
|
}
|
|
311
|
+
function parseUiArgsOrExit(args, io) {
|
|
312
|
+
const parsed = parseUiArgs(args);
|
|
313
|
+
if (parsed === "help") {
|
|
314
|
+
io.out(USAGE);
|
|
315
|
+
return 0;
|
|
316
|
+
}
|
|
317
|
+
if (parsed === null) {
|
|
318
|
+
io.err(USAGE);
|
|
319
|
+
return 2;
|
|
320
|
+
}
|
|
321
|
+
return parsed;
|
|
322
|
+
}
|
|
238
323
|
async function maybeWaitForShutdown(server, deps) {
|
|
239
324
|
if (deps.createServer !== undefined) {
|
|
240
325
|
return;
|
|
241
326
|
}
|
|
242
327
|
await waitForShutdown(server);
|
|
243
328
|
}
|
|
329
|
+
async function startUiServer(staticRoot, csp, parsed, handlerDeps, io, deps) {
|
|
330
|
+
const factory = deps.createServer ?? createUiServer;
|
|
331
|
+
const server = await factory({ staticRoot, csp, port: parsed.port, handlerDeps });
|
|
332
|
+
applyServerTimeouts(server);
|
|
333
|
+
await listen(server, parsed.port);
|
|
334
|
+
io.out(`Keiko UI listening on http://${UI_HOST}:${String(parsed.port)}\n`);
|
|
335
|
+
// Block only in the real CLI path (no injected factory). Injected-server tests skip blocking so
|
|
336
|
+
// they don't hang; the real process must stay alive until signalled.
|
|
337
|
+
await maybeWaitForShutdown(server, deps);
|
|
338
|
+
}
|
|
244
339
|
export async function runUiCli(args, io, env, deps = {}) {
|
|
245
|
-
const
|
|
340
|
+
const cwd = deps.cwd ?? process.cwd();
|
|
341
|
+
const effectiveEnv = loadLocalKeikoEnv(cwd, env);
|
|
342
|
+
const parsed = parseUiArgsOrExit(args, io);
|
|
343
|
+
if (typeof parsed === "number")
|
|
344
|
+
return parsed;
|
|
246
345
|
const reExec = await maybeReExecForSqlite(effectiveEnv, deps);
|
|
247
346
|
if (reExec !== undefined)
|
|
248
347
|
return reExec;
|
|
249
|
-
const parsed = parseUiArgs(args);
|
|
250
|
-
if (parsed === null) {
|
|
251
|
-
io.err(USAGE);
|
|
252
|
-
return 2;
|
|
253
|
-
}
|
|
254
348
|
const staticRoot = deps.staticRoot ?? defaultStaticRoot();
|
|
255
349
|
if (!ensureStaticRoot(staticRoot, io)) {
|
|
256
350
|
return 1;
|
|
257
351
|
}
|
|
258
352
|
const csp = await loadCspHeader(deps.hashesFile ?? join(staticRoot, "..", "csp-hashes.json"));
|
|
259
|
-
const handlerDeps = buildHandlerDepsOrReport(parsed, effectiveEnv, io);
|
|
353
|
+
const handlerDeps = buildHandlerDepsOrReport(parsed, cwd, withDefaultLocalRuntimeStateEnv(cwd, parsed, effectiveEnv), io);
|
|
260
354
|
if (typeof handlerDeps === "number")
|
|
261
355
|
return handlerDeps;
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
await
|
|
266
|
-
io.out(`Keiko UI listening on http://${UI_HOST}:${String(parsed.port)}\n`);
|
|
267
|
-
// Block only in the real CLI path (no injected factory). Injected-server tests skip blocking so
|
|
268
|
-
// they don't hang; the real process must stay alive until signalled.
|
|
269
|
-
await maybeWaitForShutdown(server, deps);
|
|
356
|
+
const launchProjectResult = registerLaunchProjectOrReport(cwd, handlerDeps, io);
|
|
357
|
+
if (launchProjectResult !== null)
|
|
358
|
+
return launchProjectResult;
|
|
359
|
+
await startUiServer(staticRoot, csp, parsed, handlerDeps, io, deps);
|
|
270
360
|
return 0;
|
|
271
361
|
}
|