@nac3/forge-cli 0.2.0-alpha.1
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/LICENSE +45 -0
- package/README.md +371 -0
- package/dist/bin/yf.d.ts +5 -0
- package/dist/bin/yf.d.ts.map +1 -0
- package/dist/bin/yf.js +86 -0
- package/dist/bin/yf.js.map +1 -0
- package/dist/chat/claude.d.ts +100 -0
- package/dist/chat/claude.d.ts.map +1 -0
- package/dist/chat/claude.js +228 -0
- package/dist/chat/claude.js.map +1 -0
- package/dist/chat/ingest_session.d.ts +97 -0
- package/dist/chat/ingest_session.d.ts.map +1 -0
- package/dist/chat/ingest_session.js +99 -0
- package/dist/chat/ingest_session.js.map +1 -0
- package/dist/chat/panel.d.ts +15 -0
- package/dist/chat/panel.d.ts.map +1 -0
- package/dist/chat/panel.js +1526 -0
- package/dist/chat/panel.js.map +1 -0
- package/dist/chat/persistence.d.ts +37 -0
- package/dist/chat/persistence.d.ts.map +1 -0
- package/dist/chat/persistence.js +91 -0
- package/dist/chat/persistence.js.map +1 -0
- package/dist/chat/server.d.ts +34 -0
- package/dist/chat/server.d.ts.map +1 -0
- package/dist/chat/server.js +1540 -0
- package/dist/chat/server.js.map +1 -0
- package/dist/chat/spec_extract.d.ts +35 -0
- package/dist/chat/spec_extract.d.ts.map +1 -0
- package/dist/chat/spec_extract.js +152 -0
- package/dist/chat/spec_extract.js.map +1 -0
- package/dist/chat/spec_plan.d.ts +65 -0
- package/dist/chat/spec_plan.d.ts.map +1 -0
- package/dist/chat/spec_plan.js +160 -0
- package/dist/chat/spec_plan.js.map +1 -0
- package/dist/chat/spec_scaffold.d.ts +95 -0
- package/dist/chat/spec_scaffold.d.ts.map +1 -0
- package/dist/chat/spec_scaffold.js +220 -0
- package/dist/chat/spec_scaffold.js.map +1 -0
- package/dist/chat/tools/git.d.ts +59 -0
- package/dist/chat/tools/git.d.ts.map +1 -0
- package/dist/chat/tools/git.js +313 -0
- package/dist/chat/tools/git.js.map +1 -0
- package/dist/chat/tools/github.d.ts +59 -0
- package/dist/chat/tools/github.d.ts.map +1 -0
- package/dist/chat/tools/github.js +310 -0
- package/dist/chat/tools/github.js.map +1 -0
- package/dist/chat/tools/lifecycle.d.ts +82 -0
- package/dist/chat/tools/lifecycle.d.ts.map +1 -0
- package/dist/chat/tools/lifecycle.js +295 -0
- package/dist/chat/tools/lifecycle.js.map +1 -0
- package/dist/chat/tools/manual.d.ts +26 -0
- package/dist/chat/tools/manual.d.ts.map +1 -0
- package/dist/chat/tools/manual.js +164 -0
- package/dist/chat/tools/manual.js.map +1 -0
- package/dist/chat/tools/reader.d.ts +80 -0
- package/dist/chat/tools/reader.d.ts.map +1 -0
- package/dist/chat/tools/reader.js +471 -0
- package/dist/chat/tools/reader.js.map +1 -0
- package/dist/chat/tools.d.ts +106 -0
- package/dist/chat/tools.d.ts.map +1 -0
- package/dist/chat/tools.js +587 -0
- package/dist/chat/tools.js.map +1 -0
- package/dist/codegen/e2e.d.ts +106 -0
- package/dist/codegen/e2e.d.ts.map +1 -0
- package/dist/codegen/e2e.js +931 -0
- package/dist/codegen/e2e.js.map +1 -0
- package/dist/codegen/v3_flow_emit.d.ts +70 -0
- package/dist/codegen/v3_flow_emit.d.ts.map +1 -0
- package/dist/codegen/v3_flow_emit.js +225 -0
- package/dist/codegen/v3_flow_emit.js.map +1 -0
- package/dist/commands/_stub.d.ts +2 -0
- package/dist/commands/_stub.d.ts.map +1 -0
- package/dist/commands/_stub.js +21 -0
- package/dist/commands/_stub.js.map +1 -0
- package/dist/commands/app.d.ts +31 -0
- package/dist/commands/app.d.ts.map +1 -0
- package/dist/commands/app.js +331 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/chat.d.ts +18 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +76 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/deploy.d.ts +21 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +121 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/doctor.d.ts +14 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +280 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/figma.d.ts +32 -0
- package/dist/commands/figma.d.ts.map +1 -0
- package/dist/commands/figma.js +141 -0
- package/dist/commands/figma.js.map +1 -0
- package/dist/commands/gen-flow-tests.d.ts +8 -0
- package/dist/commands/gen-flow-tests.d.ts.map +1 -0
- package/dist/commands/gen-flow-tests.js +78 -0
- package/dist/commands/gen-flow-tests.js.map +1 -0
- package/dist/commands/gen-tests.d.ts +9 -0
- package/dist/commands/gen-tests.d.ts.map +1 -0
- package/dist/commands/gen-tests.js +118 -0
- package/dist/commands/gen-tests.js.map +1 -0
- package/dist/commands/license.d.ts +14 -0
- package/dist/commands/license.d.ts.map +1 -0
- package/dist/commands/license.js +182 -0
- package/dist/commands/license.js.map +1 -0
- package/dist/commands/log.d.ts +19 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +101 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/migrate.d.ts +118 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +1410 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/mobile.d.ts +27 -0
- package/dist/commands/mobile.d.ts.map +1 -0
- package/dist/commands/mobile.js +90 -0
- package/dist/commands/mobile.js.map +1 -0
- package/dist/commands/new.d.ts +32 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +107 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pilot.d.ts +8 -0
- package/dist/commands/pilot.d.ts.map +1 -0
- package/dist/commands/pilot.js +104 -0
- package/dist/commands/pilot.js.map +1 -0
- package/dist/commands/projects.d.ts +21 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +238 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/publish.d.ts +35 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +194 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/repo.d.ts +59 -0
- package/dist/commands/repo.d.ts.map +1 -0
- package/dist/commands/repo.js +178 -0
- package/dist/commands/repo.js.map +1 -0
- package/dist/commands/review-screens.d.ts +28 -0
- package/dist/commands/review-screens.d.ts.map +1 -0
- package/dist/commands/review-screens.js +345 -0
- package/dist/commands/review-screens.js.map +1 -0
- package/dist/commands/scenarios.d.ts +23 -0
- package/dist/commands/scenarios.d.ts.map +1 -0
- package/dist/commands/scenarios.js +304 -0
- package/dist/commands/scenarios.js.map +1 -0
- package/dist/commands/ship.d.ts +18 -0
- package/dist/commands/ship.d.ts.map +1 -0
- package/dist/commands/ship.js +41 -0
- package/dist/commands/ship.js.map +1 -0
- package/dist/commands/test.d.ts +29 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +62 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/tunnel.d.ts +22 -0
- package/dist/commands/tunnel.d.ts.map +1 -0
- package/dist/commands/tunnel.js +77 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/commands/validate.d.ts +14 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +51 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/vault.d.ts +32 -0
- package/dist/commands/vault.d.ts.map +1 -0
- package/dist/commands/vault.js +489 -0
- package/dist/commands/vault.js.map +1 -0
- package/dist/commands/voice.d.ts +16 -0
- package/dist/commands/voice.d.ts.map +1 -0
- package/dist/commands/voice.js +69 -0
- package/dist/commands/voice.js.map +1 -0
- package/dist/core/cascade_router.d.ts +90 -0
- package/dist/core/cascade_router.d.ts.map +1 -0
- package/dist/core/cascade_router.js +131 -0
- package/dist/core/cascade_router.js.map +1 -0
- package/dist/core/cf_tunnel.d.ts +52 -0
- package/dist/core/cf_tunnel.d.ts.map +1 -0
- package/dist/core/cf_tunnel.js +134 -0
- package/dist/core/cf_tunnel.js.map +1 -0
- package/dist/core/gha_dispatcher.d.ts +48 -0
- package/dist/core/gha_dispatcher.d.ts.map +1 -0
- package/dist/core/gha_dispatcher.js +198 -0
- package/dist/core/gha_dispatcher.js.map +1 -0
- package/dist/core/logger.d.ts +89 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +245 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mode.d.ts +26 -0
- package/dist/core/mode.d.ts.map +1 -0
- package/dist/core/mode.js +122 -0
- package/dist/core/mode.js.map +1 -0
- package/dist/core/pairing.d.ts +40 -0
- package/dist/core/pairing.d.ts.map +1 -0
- package/dist/core/pairing.js +145 -0
- package/dist/core/pairing.js.map +1 -0
- package/dist/core/pilot_setup.d.ts +29 -0
- package/dist/core/pilot_setup.d.ts.map +1 -0
- package/dist/core/pilot_setup.js +119 -0
- package/dist/core/pilot_setup.js.map +1 -0
- package/dist/core/polar.d.ts +81 -0
- package/dist/core/polar.d.ts.map +1 -0
- package/dist/core/polar.js +175 -0
- package/dist/core/polar.js.map +1 -0
- package/dist/core/project_picker.d.ts +56 -0
- package/dist/core/project_picker.d.ts.map +1 -0
- package/dist/core/project_picker.js +86 -0
- package/dist/core/project_picker.js.map +1 -0
- package/dist/core/projects.d.ts +58 -0
- package/dist/core/projects.d.ts.map +1 -0
- package/dist/core/projects.js +146 -0
- package/dist/core/projects.js.map +1 -0
- package/dist/core/projects_sync.d.ts +80 -0
- package/dist/core/projects_sync.d.ts.map +1 -0
- package/dist/core/projects_sync.js +278 -0
- package/dist/core/projects_sync.js.map +1 -0
- package/dist/core/remote_runner.d.ts +70 -0
- package/dist/core/remote_runner.d.ts.map +1 -0
- package/dist/core/remote_runner.js +133 -0
- package/dist/core/remote_runner.js.map +1 -0
- package/dist/core/repo_state.d.ts +24 -0
- package/dist/core/repo_state.d.ts.map +1 -0
- package/dist/core/repo_state.js +109 -0
- package/dist/core/repo_state.js.map +1 -0
- package/dist/core/target.d.ts +31 -0
- package/dist/core/target.d.ts.map +1 -0
- package/dist/core/target.js +121 -0
- package/dist/core/target.js.map +1 -0
- package/dist/deploy/aws.d.ts +43 -0
- package/dist/deploy/aws.d.ts.map +1 -0
- package/dist/deploy/aws.js +173 -0
- package/dist/deploy/aws.js.map +1 -0
- package/dist/figma/api.d.ts +35 -0
- package/dist/figma/api.d.ts.map +1 -0
- package/dist/figma/api.js +40 -0
- package/dist/figma/api.js.map +1 -0
- package/dist/figma/decorator.d.ts +74 -0
- package/dist/figma/decorator.d.ts.map +1 -0
- package/dist/figma/decorator.js +210 -0
- package/dist/figma/decorator.js.map +1 -0
- package/dist/figma/heuristics.d.ts +29 -0
- package/dist/figma/heuristics.d.ts.map +1 -0
- package/dist/figma/heuristics.js +110 -0
- package/dist/figma/heuristics.js.map +1 -0
- package/dist/figma/normalize.d.ts +33 -0
- package/dist/figma/normalize.d.ts.map +1 -0
- package/dist/figma/normalize.js +101 -0
- package/dist/figma/normalize.js.map +1 -0
- package/dist/figma/tokens.d.ts +23 -0
- package/dist/figma/tokens.d.ts.map +1 -0
- package/dist/figma/tokens.js +111 -0
- package/dist/figma/tokens.js.map +1 -0
- package/dist/figma/types.d.ts +118 -0
- package/dist/figma/types.d.ts.map +1 -0
- package/dist/figma/types.js +12 -0
- package/dist/figma/types.js.map +1 -0
- package/dist/i18n/index.d.ts +48 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +135 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/types.d.ts +52 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +85 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/lan/mdns_packet.d.ts +74 -0
- package/dist/lan/mdns_packet.d.ts.map +1 -0
- package/dist/lan/mdns_packet.js +247 -0
- package/dist/lan/mdns_packet.js.map +1 -0
- package/dist/lan/mdns_service.d.ts +102 -0
- package/dist/lan/mdns_service.d.ts.map +1 -0
- package/dist/lan/mdns_service.js +206 -0
- package/dist/lan/mdns_service.js.map +1 -0
- package/dist/license/activate.d.ts +33 -0
- package/dist/license/activate.d.ts.map +1 -0
- package/dist/license/activate.js +135 -0
- package/dist/license/activate.js.map +1 -0
- package/dist/license/fingerprint.d.ts +2 -0
- package/dist/license/fingerprint.d.ts.map +1 -0
- package/dist/license/fingerprint.js +29 -0
- package/dist/license/fingerprint.js.map +1 -0
- package/dist/license/hito4_client.d.ts +24 -0
- package/dist/license/hito4_client.d.ts.map +1 -0
- package/dist/license/hito4_client.js +103 -0
- package/dist/license/hito4_client.js.map +1 -0
- package/dist/license/index.d.ts +22 -0
- package/dist/license/index.d.ts.map +1 -0
- package/dist/license/index.js +125 -0
- package/dist/license/index.js.map +1 -0
- package/dist/license/types.d.ts +38 -0
- package/dist/license/types.d.ts.map +1 -0
- package/dist/license/types.js +9 -0
- package/dist/license/types.js.map +1 -0
- package/dist/migrate/ai-apply.d.ts +198 -0
- package/dist/migrate/ai-apply.d.ts.map +1 -0
- package/dist/migrate/ai-apply.js +833 -0
- package/dist/migrate/ai-apply.js.map +1 -0
- package/dist/migrate/ai-decorator.d.ts +87 -0
- package/dist/migrate/ai-decorator.d.ts.map +1 -0
- package/dist/migrate/ai-decorator.js +203 -0
- package/dist/migrate/ai-decorator.js.map +1 -0
- package/dist/migrate/apply.d.ts +28 -0
- package/dist/migrate/apply.d.ts.map +1 -0
- package/dist/migrate/apply.js +119 -0
- package/dist/migrate/apply.js.map +1 -0
- package/dist/migrate/audit.d.ts +9 -0
- package/dist/migrate/audit.d.ts.map +1 -0
- package/dist/migrate/audit.js +197 -0
- package/dist/migrate/audit.js.map +1 -0
- package/dist/migrate/diff.d.ts +28 -0
- package/dist/migrate/diff.d.ts.map +1 -0
- package/dist/migrate/diff.js +154 -0
- package/dist/migrate/diff.js.map +1 -0
- package/dist/migrate/html-orchestrator.d.ts +81 -0
- package/dist/migrate/html-orchestrator.d.ts.map +1 -0
- package/dist/migrate/html-orchestrator.js +233 -0
- package/dist/migrate/html-orchestrator.js.map +1 -0
- package/dist/migrate/html-walker.d.ts +93 -0
- package/dist/migrate/html-walker.d.ts.map +1 -0
- package/dist/migrate/html-walker.js +288 -0
- package/dist/migrate/html-walker.js.map +1 -0
- package/dist/migrate/js-template-walker.d.ts +118 -0
- package/dist/migrate/js-template-walker.d.ts.map +1 -0
- package/dist/migrate/js-template-walker.js +644 -0
- package/dist/migrate/js-template-walker.js.map +1 -0
- package/dist/migrate/manifest-validator.d.ts +30 -0
- package/dist/migrate/manifest-validator.d.ts.map +1 -0
- package/dist/migrate/manifest-validator.js +261 -0
- package/dist/migrate/manifest-validator.js.map +1 -0
- package/dist/migrate/overrides.d.ts +58 -0
- package/dist/migrate/overrides.d.ts.map +1 -0
- package/dist/migrate/overrides.js +193 -0
- package/dist/migrate/overrides.js.map +1 -0
- package/dist/migrate/plugin-scope.d.ts +42 -0
- package/dist/migrate/plugin-scope.d.ts.map +1 -0
- package/dist/migrate/plugin-scope.js +94 -0
- package/dist/migrate/plugin-scope.js.map +1 -0
- package/dist/migrate/types.d.ts +45 -0
- package/dist/migrate/types.d.ts.map +1 -0
- package/dist/migrate/types.js +9 -0
- package/dist/migrate/types.js.map +1 -0
- package/dist/migrate/verb-inference.d.ts +37 -0
- package/dist/migrate/verb-inference.d.ts.map +1 -0
- package/dist/migrate/verb-inference.js +274 -0
- package/dist/migrate/verb-inference.js.map +1 -0
- package/dist/nac3/attrs.d.ts +87 -0
- package/dist/nac3/attrs.d.ts.map +1 -0
- package/dist/nac3/attrs.js +134 -0
- package/dist/nac3/attrs.js.map +1 -0
- package/dist/nac3/scenario_dsl.d.ts +71 -0
- package/dist/nac3/scenario_dsl.d.ts.map +1 -0
- package/dist/nac3/scenario_dsl.js +191 -0
- package/dist/nac3/scenario_dsl.js.map +1 -0
- package/dist/nac3/tokens.d.ts +126 -0
- package/dist/nac3/tokens.d.ts.map +1 -0
- package/dist/nac3/tokens.js +138 -0
- package/dist/nac3/tokens.js.map +1 -0
- package/dist/reader/parsers/csv.d.ts +42 -0
- package/dist/reader/parsers/csv.d.ts.map +1 -0
- package/dist/reader/parsers/csv.js +221 -0
- package/dist/reader/parsers/csv.js.map +1 -0
- package/dist/reader/parsers/docx.d.ts +31 -0
- package/dist/reader/parsers/docx.d.ts.map +1 -0
- package/dist/reader/parsers/docx.js +51 -0
- package/dist/reader/parsers/docx.js.map +1 -0
- package/dist/reader/parsers/epub.d.ts +39 -0
- package/dist/reader/parsers/epub.d.ts.map +1 -0
- package/dist/reader/parsers/epub.js +265 -0
- package/dist/reader/parsers/epub.js.map +1 -0
- package/dist/reader/parsers/html.d.ts +40 -0
- package/dist/reader/parsers/html.d.ts.map +1 -0
- package/dist/reader/parsers/html.js +386 -0
- package/dist/reader/parsers/html.js.map +1 -0
- package/dist/reader/parsers/md.d.ts +30 -0
- package/dist/reader/parsers/md.d.ts.map +1 -0
- package/dist/reader/parsers/md.js +199 -0
- package/dist/reader/parsers/md.js.map +1 -0
- package/dist/reader/parsers/pdf.d.ts +39 -0
- package/dist/reader/parsers/pdf.d.ts.map +1 -0
- package/dist/reader/parsers/pdf.js +220 -0
- package/dist/reader/parsers/pdf.js.map +1 -0
- package/dist/reader/parsers/rtf.d.ts +37 -0
- package/dist/reader/parsers/rtf.d.ts.map +1 -0
- package/dist/reader/parsers/rtf.js +347 -0
- package/dist/reader/parsers/rtf.js.map +1 -0
- package/dist/reader/parsers/source.d.ts +32 -0
- package/dist/reader/parsers/source.d.ts.map +1 -0
- package/dist/reader/parsers/source.js +122 -0
- package/dist/reader/parsers/source.js.map +1 -0
- package/dist/reader/parsers/txt.d.ts +25 -0
- package/dist/reader/parsers/txt.d.ts.map +1 -0
- package/dist/reader/parsers/txt.js +56 -0
- package/dist/reader/parsers/txt.js.map +1 -0
- package/dist/reader/parsers/xlsx.d.ts +33 -0
- package/dist/reader/parsers/xlsx.d.ts.map +1 -0
- package/dist/reader/parsers/xlsx.js +143 -0
- package/dist/reader/parsers/xlsx.js.map +1 -0
- package/dist/reader/registry.d.ts +39 -0
- package/dist/reader/registry.d.ts.map +1 -0
- package/dist/reader/registry.js +172 -0
- package/dist/reader/registry.js.map +1 -0
- package/dist/reader/search.d.ts +27 -0
- package/dist/reader/search.d.ts.map +1 -0
- package/dist/reader/search.js +77 -0
- package/dist/reader/search.js.map +1 -0
- package/dist/reader/state.d.ts +56 -0
- package/dist/reader/state.d.ts.map +1 -0
- package/dist/reader/state.js +179 -0
- package/dist/reader/state.js.map +1 -0
- package/dist/reader/types.d.ts +119 -0
- package/dist/reader/types.d.ts.map +1 -0
- package/dist/reader/types.js +23 -0
- package/dist/reader/types.js.map +1 -0
- package/dist/ship/run.d.ts +26 -0
- package/dist/ship/run.d.ts.map +1 -0
- package/dist/ship/run.js +123 -0
- package/dist/ship/run.js.map +1 -0
- package/dist/template/index.d.ts +50 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/template/index.js +140 -0
- package/dist/template/index.js.map +1 -0
- package/dist/ui/colors.d.ts +13 -0
- package/dist/ui/colors.d.ts.map +1 -0
- package/dist/ui/colors.js +26 -0
- package/dist/ui/colors.js.map +1 -0
- package/dist/validate/index.d.ts +19 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +181 -0
- package/dist/validate/index.js.map +1 -0
- package/dist/vault/catalog.d.ts +55 -0
- package/dist/vault/catalog.d.ts.map +1 -0
- package/dist/vault/catalog.js +424 -0
- package/dist/vault/catalog.js.map +1 -0
- package/dist/vault/crypto.d.ts +82 -0
- package/dist/vault/crypto.d.ts.map +1 -0
- package/dist/vault/crypto.js +173 -0
- package/dist/vault/crypto.js.map +1 -0
- package/dist/vault/git_askpass.d.ts +26 -0
- package/dist/vault/git_askpass.d.ts.map +1 -0
- package/dist/vault/git_askpass.js +104 -0
- package/dist/vault/git_askpass.js.map +1 -0
- package/dist/vault/migrator.d.ts +57 -0
- package/dist/vault/migrator.d.ts.map +1 -0
- package/dist/vault/migrator.js +204 -0
- package/dist/vault/migrator.js.map +1 -0
- package/dist/vault/redactor.d.ts +73 -0
- package/dist/vault/redactor.d.ts.map +1 -0
- package/dist/vault/redactor.js +182 -0
- package/dist/vault/redactor.js.map +1 -0
- package/dist/vault/store.d.ts +132 -0
- package/dist/vault/store.d.ts.map +1 -0
- package/dist/vault/store.js +335 -0
- package/dist/vault/store.js.map +1 -0
- package/dist/version.d.ts +8 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +8 -0
- package/dist/version.js.map +1 -0
- package/dist/voice/chunker.d.ts +43 -0
- package/dist/voice/chunker.d.ts.map +1 -0
- package/dist/voice/chunker.js +133 -0
- package/dist/voice/chunker.js.map +1 -0
- package/dist/voice/config.d.ts +14 -0
- package/dist/voice/config.d.ts.map +1 -0
- package/dist/voice/config.js +51 -0
- package/dist/voice/config.js.map +1 -0
- package/dist/voice/intents.d.ts +71 -0
- package/dist/voice/intents.d.ts.map +1 -0
- package/dist/voice/intents.js +0 -0
- package/dist/voice/intents.js.map +1 -0
- package/dist/voice/providers/elevenlabs.d.ts +53 -0
- package/dist/voice/providers/elevenlabs.d.ts.map +1 -0
- package/dist/voice/providers/elevenlabs.js +159 -0
- package/dist/voice/providers/elevenlabs.js.map +1 -0
- package/dist/voice/providers/google.d.ts +56 -0
- package/dist/voice/providers/google.d.ts.map +1 -0
- package/dist/voice/providers/google.js +253 -0
- package/dist/voice/providers/google.js.map +1 -0
- package/dist/voice/providers/whisper.d.ts +44 -0
- package/dist/voice/providers/whisper.d.ts.map +1 -0
- package/dist/voice/providers/whisper.js +179 -0
- package/dist/voice/providers/whisper.js.map +1 -0
- package/dist/voice/registry.d.ts +35 -0
- package/dist/voice/registry.d.ts.map +1 -0
- package/dist/voice/registry.js +48 -0
- package/dist/voice/registry.js.map +1 -0
- package/dist/voice/router.d.ts +62 -0
- package/dist/voice/router.d.ts.map +1 -0
- package/dist/voice/router.js +175 -0
- package/dist/voice/router.js.map +1 -0
- package/dist/voice/types.d.ts +116 -0
- package/dist/voice/types.d.ts.map +1 -0
- package/dist/voice/types.js +22 -0
- package/dist/voice/types.js.map +1 -0
- package/dist/voice/voiceprint/enrollment.d.ts +36 -0
- package/dist/voice/voiceprint/enrollment.d.ts.map +1 -0
- package/dist/voice/voiceprint/enrollment.js +71 -0
- package/dist/voice/voiceprint/enrollment.js.map +1 -0
- package/dist/voice/voiceprint/identify.d.ts +16 -0
- package/dist/voice/voiceprint/identify.d.ts.map +1 -0
- package/dist/voice/voiceprint/identify.js +20 -0
- package/dist/voice/voiceprint/identify.js.map +1 -0
- package/dist/voice/voiceprint/liveness.d.ts +90 -0
- package/dist/voice/voiceprint/liveness.d.ts.map +1 -0
- package/dist/voice/voiceprint/liveness.js +251 -0
- package/dist/voice/voiceprint/liveness.js.map +1 -0
- package/dist/voice/voiceprint/match.d.ts +54 -0
- package/dist/voice/voiceprint/match.d.ts.map +1 -0
- package/dist/voice/voiceprint/match.js +88 -0
- package/dist/voice/voiceprint/match.js.map +1 -0
- package/dist/voice/voiceprint/providers/local-mfcc-stub.d.ts +44 -0
- package/dist/voice/voiceprint/providers/local-mfcc-stub.d.ts.map +1 -0
- package/dist/voice/voiceprint/providers/local-mfcc-stub.js +92 -0
- package/dist/voice/voiceprint/providers/local-mfcc-stub.js.map +1 -0
- package/dist/voice/voiceprint/store.d.ts +60 -0
- package/dist/voice/voiceprint/store.d.ts.map +1 -0
- package/dist/voice/voiceprint/store.js +155 -0
- package/dist/voice/voiceprint/store.js.map +1 -0
- package/dist/voice/voiceprint/trust.d.ts +90 -0
- package/dist/voice/voiceprint/trust.d.ts.map +1 -0
- package/dist/voice/voiceprint/trust.js +150 -0
- package/dist/voice/voiceprint/trust.js.map +1 -0
- package/dist/voice/voiceprint/types.d.ts +100 -0
- package/dist/voice/voiceprint/types.d.ts.map +1 -0
- package/dist/voice/voiceprint/types.js +23 -0
- package/dist/voice/voiceprint/types.js.map +1 -0
- package/dist/voice/wake.d.ts +64 -0
- package/dist/voice/wake.d.ts.map +1 -0
- package/dist/voice/wake.js +143 -0
- package/dist/voice/wake.js.map +1 -0
- package/docs/manuals/manual.ar.html +91 -0
- package/docs/manuals/manual.de.html +100 -0
- package/docs/manuals/manual.en.html +118 -0
- package/docs/manuals/manual.es.html +120 -0
- package/docs/manuals/manual.fr.html +102 -0
- package/docs/manuals/manual.hi.html +93 -0
- package/docs/manuals/manual.it.html +93 -0
- package/docs/manuals/manual.ja.html +97 -0
- package/docs/manuals/manual.pt.html +103 -0
- package/docs/manuals/manual.zh.html +89 -0
- package/package.json +94 -0
- package/src/i18n/catalogs/ar.json +86 -0
- package/src/i18n/catalogs/de.json +86 -0
- package/src/i18n/catalogs/en.json +86 -0
- package/src/i18n/catalogs/es.json +86 -0
- package/src/i18n/catalogs/fr.json +86 -0
- package/src/i18n/catalogs/hi.json +86 -0
- package/src/i18n/catalogs/it.json +86 -0
- package/src/i18n/catalogs/ja.json +86 -0
- package/src/i18n/catalogs/pt.json +86 -0
- package/src/i18n/catalogs/zh.json +86 -0
- package/templates/react-app/README.md +43 -0
- package/templates/react-app/index.html +12 -0
- package/templates/react-app/package.json +35 -0
- package/templates/react-app/src/App.tsx +106 -0
- package/templates/react-app/src/main.tsx +21 -0
- package/templates/react-app/src/nac/manifest.ts +46 -0
- package/templates/react-app/src/styles.css +68 -0
- package/templates/react-app/tsconfig.json +19 -0
- package/templates/react-app/vite.config.ts +12 -0
- package/templates/react-app/yujin.forge.json +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/vault/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAU,CAAC;AAgCxF,0CAA0C;AAC1C,KAAK,UAAU,UAAU,CACvB,GAAW,EACX,IAAiB,EACjB,SAAiB;IAEjB,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC5E,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,gCAAgC;AAEhC,MAAM,UAAU,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACjE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,6BAA6B,EAAE;QACxD,OAAO,EAAE,EAAE,aAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,EAAE,6BAA6B;YACtE,YAAY,EAAE,aAAa,EAAE;KACzC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACjF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AACrG,CAAC,CAAC;AAEF,MAAM,UAAU,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACjE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,gCAAgC,EAAE;QAC3D,OAAO,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE;KACjE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,aAAa,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACpE;;6DAEyD;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC;IACnE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,oCAAoC,EAAE;QAC/D,OAAO,EAAE;YACP,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9D,YAAY,EAAE,aAAa;SAC5B;KACF,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,oCAAoC;AAEpC,MAAM,OAAO,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAC9D,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,qCAAqC,EAAE;QAChE,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,GAAG,KAAK,EAAE,MAAM,EAAE,kBAAkB;YAC5D,YAAY,EAAE,aAAa,EAAE;KACzC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,QAAQ,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAC/D;;4BAEwB;IACxB,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,iCAAiC,EAAE;QAC5D,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,EAAE,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9E,YAAY,EAAE,aAAa,EAAE;KACzC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;QACzC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QAC1D,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,UAAU,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACjE;;;oEAGgE;IAChE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,iCAAiC,EAAE;QAC5D,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,GAAG,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE;KAC3E,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,8BAA8B;AAE9B,MAAM,aAAa,GAA6B,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAClE;gEAC4D;IAC5D,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,uCAAuC,EAAE;QAClE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,WAAW,EAAE,GAAG,EAAE,mBAAmB,EAAE,YAAY;YACnD,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa;SAChE;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,2BAA2B;YAClC,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;SAC9C,CAAC;KACH,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF;2DACuD;IACvD,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACjF,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACzC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACrG,CAAC;IACD;;wBAEoB;IACpB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AACvG,CAAC,CAAC;AAEF,MAAM,UAAU,GAA6B,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAC/D,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,kCAAkC,EAAE;QAC7D,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,GAAG,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE;KACzE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,cAAc,GAA6B,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACnE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,mCAAmC,EAAE;QAC9D,OAAO,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE;KAC5D,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,eAAe,GAA6B,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACpE;;;0CAGsC;IACtC,IAAI,MAAM,GAAoD,IAAI,CAAC;IACnE,IAAI,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzE,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,EAAE,4CAA4C;YACpD,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;AAChG,CAAC,CAAC;AAEF,iCAAiC;AAEjC,MAAM,OAAO,GAA6B,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;IAChE;6DACyD;IACzD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QACpC,MAAM,EAAE,8CAA8C,EAAE,CAAC;AACpE,CAAC,CAAC;AAEF,+BAA+B;AAE/B,MAAM,SAAS,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAChE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,iCAAiC,EAAE;QAC5D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,GAAG,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE;KAC3E,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,IAAI,IAAI,GAAqC,EAAE,CAAC;IAChD,IAAI,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC,EAAE;QACZ,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QAC1D,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAChH,CAAC,CAAC;AAEF,MAAM,WAAW,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAClE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,uCAAuC,EAAE;QAClE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE;KACxE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,UAAU,GAA6B,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAC/D,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,mCAAmC,EAAE;QAC9D,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,GAAG,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE;KACzE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,YAAY,GAA6B,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACjE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,oCAAoC,EAAE;QAC/D,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,GAAG,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE;KACzE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,UAAU,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACjE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,gCAAgC,EAAE;QAC3D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,kBAAkB;YACxD,YAAY,EAAE,aAAa,EAAE;QACxC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;KACrD,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,UAAU,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACjE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,oCAAoC,EAAE;QAC/D,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,GAAG,KAAK,EAAE,gBAAgB,EAAE,YAAY;YAChE,YAAY,EAAE,aAAa,EAAE;KACzC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,SAAS,GAA6B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAChE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,6BAA6B,EAAE;QACxD,OAAO,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE;KACjE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QACrD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,UAAU,GAA6B,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;IACnE;;uCAEmC;IACnC,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,8CAA8C;QAC3D,UAAU,EAAE,CAAC,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEF,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC9B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,YAAY,GAAuB;IAC9C,UAAU;IACV,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;QAClC,WAAW,EAAE,qDAAqD;QAClE,SAAS,EAAE,oCAAoC;QAC/C,IAAI,EAAE,UAAU,EAAE;IACpB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;QAClC,WAAW,EAAE,wCAAwC;QACrD,SAAS,EAAE,2DAA2D;QACtE,IAAI,EAAE,UAAU,EAAE;IACpB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM;QACrC,WAAW,EAAE,sDAAsD;QACnE,SAAS,EAAE,uDAAuD;QAClE,IAAI,EAAE,aAAa,EAAE;IACvB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM;QAC7B,WAAW,EAAE,qDAAqD,EAAE;IAEtE,cAAc;IACd,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;QACnC,WAAW,EAAE,6CAA6C;QAC1D,SAAS,EAAE,yCAAyC;QACpD,IAAI,EAAE,OAAO,EAAE;IACjB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU;QACpC,WAAW,EAAE,qCAAqC;QAClD,SAAS,EAAE,wCAAwC;QACnD,IAAI,EAAE,QAAQ,EAAE;IAClB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU;QACrC,WAAW,EAAE,sCAAsC,EAAE;IACvD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU;QACtC,WAAW,EAAE,iCAAiC;QAC9C,SAAS,EAAE,0CAA0C;QACrD,IAAI,EAAE,UAAU,EAAE;IACpB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU;QACxC,WAAW,EAAE,sDAAsD,EAAE;IAEvE,QAAQ;IACR,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI;QAC7B,WAAW,EAAE,8BAA8B;QAC3C,SAAS,EAAE,6CAA6C;QACxD,IAAI,EAAE,aAAa,EAAE;IACvB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI;QAC1B,WAAW,EAAE,oCAAoC;QACjD,SAAS,EAAE,sCAAsC;QACjD,IAAI,EAAE,UAAU,EAAE;IACpB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI;QAC9B,WAAW,EAAE,oBAAoB;QACjC,SAAS,EAAE,6CAA6C;QACxD,IAAI,EAAE,cAAc,EAAE;IACxB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI;QAChC,WAAW,EAAE,uEAAuE;QACpF,SAAS,EAAE,4DAA4D;QACvE,IAAI,EAAE,eAAe,EAAE;IAEzB,WAAW;IACX,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO;QACxC,WAAW,EAAE,2BAA2B;QACxC,SAAS,EAAE,+DAA+D;QAC1E,IAAI,EAAE,OAAO,EAAE;IACjB,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO;QAC5C,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,OAAO,EAAE;IACjB,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO;QAC1C,WAAW,EAAE,0BAA0B;QACvC,SAAS,EAAE,4DAA4D;QACvE,IAAI,EAAE,eAAe,CAAC,+BAA+B,EAAE;IACzD,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO;QAC9C,WAAW,EAAE,mEAAmE,EAAE;IAEpF,SAAS;IACT,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK;QACpC,WAAW,EAAE,0BAA0B;QACvC,SAAS,EAAE,4BAA4B;QACvC,IAAI,EAAE,SAAS,EAAE;IACnB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK;QACtC,WAAW,EAAE,gDAAgD;QAC7D,SAAS,EAAE,6CAA6C;QACxD,IAAI,EAAE,WAAW,EAAE;IACrB,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK;QACvC,WAAW,EAAE,0BAA0B;QACvC,SAAS,EAAE,6BAA6B,EAAE;IAC5C,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK;QACtC,WAAW,EAAE,kCAAkC;QAC/C,SAAS,EAAE,6BAA6B;QACxC,IAAI,EAAE,UAAU,EAAE;IACpB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK;QACtC,WAAW,EAAE,4CAA4C;QACzD,SAAS,EAAE,sCAAsC;QACjD,IAAI,EAAE,UAAU,EAAE;IACpB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK;QACrC,WAAW,EAAE,yBAAyB;QACtC,SAAS,EAAE,4CAA4C;QACvD,IAAI,EAAE,YAAY,EAAE;IACtB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK;QACpC,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,uDAAuD,EAAE;IACtE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK;QACjC,WAAW,EAAE,gBAAgB;QAC7B,SAAS,EAAE,iCAAiC;QAC5C,IAAI,EAAE,UAAU,EAAE;IACpB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK;QACjC,WAAW,EAAE,qCAAqC;QAClD,SAAS,EAAE,4CAA4C;QACvD,IAAI,EAAE,UAAU,EAAE;IACpB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK;QAChC,WAAW,EAAE,6BAA6B;QAC1C,SAAS,EAAE,gCAAgC;QAC3C,IAAI,EAAE,SAAS,EAAE;CACpB,CAAC;AAEF;8CAC8C;AAC9C,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;wBACwB;AACxB,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAyC;QAChD,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;KAC/D,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,YAAY;QAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault cryptographic primitives.
|
|
3
|
+
*
|
|
4
|
+
* The vault encrypts user-provided credentials (Anthropic API key,
|
|
5
|
+
* Whisper key, ElevenLabs key, GitHub token, npm token, voiceprint
|
|
6
|
+
* embedding, etc) under a master key derived from a stable machine
|
|
7
|
+
* fingerprint + a per-install random salt.
|
|
8
|
+
*
|
|
9
|
+
* Threat model addressed:
|
|
10
|
+
* - Casual reads of the vault file from disk by other processes
|
|
11
|
+
* or accidental sync to cloud storage. The encrypted blob is
|
|
12
|
+
* useless without the master key.
|
|
13
|
+
* - Tampering: AES-256-GCM auth tag catches any modification.
|
|
14
|
+
*
|
|
15
|
+
* NOT addressed (intentional, per ROADMAP_VOICE_FORGE_2026_05_23.md
|
|
16
|
+
* sec 2.1):
|
|
17
|
+
* - Theft of the entire machine. Anyone with root + the disk +
|
|
18
|
+
* the same hostname/MAC/etc CAN re-derive the key. The vault is
|
|
19
|
+
* not a defense against a compromised host. It is a defense
|
|
20
|
+
* against accidental exposure (chat logs, cloud sync, etc).
|
|
21
|
+
*
|
|
22
|
+
* Loud failures per ROADMAP sec 12.2: tampered ciphertext throws,
|
|
23
|
+
* wrong-key decryption throws, short blobs throw, key length
|
|
24
|
+
* mismatches throw.
|
|
25
|
+
*
|
|
26
|
+
* ASCII-only.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Stable per-machine identity. Used as the entropy source for the
|
|
30
|
+
* vault master key, combined with a per-install random salt.
|
|
31
|
+
*
|
|
32
|
+
* Fields chosen to survive reboot but change when the user changes
|
|
33
|
+
* machine. None of them are secrets -- the secret is the SALT (and
|
|
34
|
+
* the scrypt work factor).
|
|
35
|
+
*/
|
|
36
|
+
export interface MachineFingerprint {
|
|
37
|
+
hostname: string;
|
|
38
|
+
primaryMacAddress: string;
|
|
39
|
+
platform: string;
|
|
40
|
+
arch: string;
|
|
41
|
+
username: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Compute the current machine's fingerprint. Optional override lets
|
|
45
|
+
* tests inject deterministic values.
|
|
46
|
+
*/
|
|
47
|
+
export declare function computeMachineFingerprint(override?: Partial<MachineFingerprint>): MachineFingerprint;
|
|
48
|
+
/**
|
|
49
|
+
* Derive a 32-byte AES key from the fingerprint + per-install salt.
|
|
50
|
+
* Deterministic for the same inputs -- the vault file is openable
|
|
51
|
+
* across processes on the same machine without persisting the key
|
|
52
|
+
* anywhere.
|
|
53
|
+
*/
|
|
54
|
+
export declare function deriveVaultKey(fingerprint: MachineFingerprint, salt: Buffer): Buffer;
|
|
55
|
+
/**
|
|
56
|
+
* Encrypt a UTF-8 plaintext under the given key. Returns a single
|
|
57
|
+
* buffer with the layout:
|
|
58
|
+
*
|
|
59
|
+
* [12 bytes IV][N bytes ciphertext][16 bytes auth tag]
|
|
60
|
+
*
|
|
61
|
+
* The IV is fresh on every call so encrypting the same plaintext
|
|
62
|
+
* twice produces different blobs.
|
|
63
|
+
*/
|
|
64
|
+
export declare function encrypt(plaintext: string, key: Buffer): Buffer;
|
|
65
|
+
/**
|
|
66
|
+
* Decrypt a blob produced by encrypt(). Throws loudly on:
|
|
67
|
+
* - key length mismatch
|
|
68
|
+
* - blob too short
|
|
69
|
+
* - auth tag mismatch (tampered ciphertext or wrong key)
|
|
70
|
+
*
|
|
71
|
+
* Never returns a partial / placeholder string.
|
|
72
|
+
*/
|
|
73
|
+
export declare function decrypt(blob: Buffer, key: Buffer): string;
|
|
74
|
+
/**
|
|
75
|
+
* Generate a fresh 16-byte salt for a new vault install. Caller
|
|
76
|
+
* is responsible for persisting it to ~/.yujin-forge/vault.salt
|
|
77
|
+
* (or wherever the vault store decides).
|
|
78
|
+
*/
|
|
79
|
+
export declare function generateSalt(): Buffer;
|
|
80
|
+
/** Exported as a constant for tests + future migrations. */
|
|
81
|
+
export declare const VAULT_CRYPTO_VERSION = 1;
|
|
82
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/vault/crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAgCH;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACrC,kBAAkB,CA0BpB;AAiBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,MAAM,GACX,MAAM,CAaR;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA0BzD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,IAAI,CAAC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault cryptographic primitives.
|
|
3
|
+
*
|
|
4
|
+
* The vault encrypts user-provided credentials (Anthropic API key,
|
|
5
|
+
* Whisper key, ElevenLabs key, GitHub token, npm token, voiceprint
|
|
6
|
+
* embedding, etc) under a master key derived from a stable machine
|
|
7
|
+
* fingerprint + a per-install random salt.
|
|
8
|
+
*
|
|
9
|
+
* Threat model addressed:
|
|
10
|
+
* - Casual reads of the vault file from disk by other processes
|
|
11
|
+
* or accidental sync to cloud storage. The encrypted blob is
|
|
12
|
+
* useless without the master key.
|
|
13
|
+
* - Tampering: AES-256-GCM auth tag catches any modification.
|
|
14
|
+
*
|
|
15
|
+
* NOT addressed (intentional, per ROADMAP_VOICE_FORGE_2026_05_23.md
|
|
16
|
+
* sec 2.1):
|
|
17
|
+
* - Theft of the entire machine. Anyone with root + the disk +
|
|
18
|
+
* the same hostname/MAC/etc CAN re-derive the key. The vault is
|
|
19
|
+
* not a defense against a compromised host. It is a defense
|
|
20
|
+
* against accidental exposure (chat logs, cloud sync, etc).
|
|
21
|
+
*
|
|
22
|
+
* Loud failures per ROADMAP sec 12.2: tampered ciphertext throws,
|
|
23
|
+
* wrong-key decryption throws, short blobs throw, key length
|
|
24
|
+
* mismatches throw.
|
|
25
|
+
*
|
|
26
|
+
* ASCII-only.
|
|
27
|
+
*/
|
|
28
|
+
import { createCipheriv, createDecipheriv, randomBytes, scryptSync, } from 'node:crypto';
|
|
29
|
+
import { arch as osArch, hostname as osHostname, networkInterfaces, platform as osPlatform, userInfo, } from 'node:os';
|
|
30
|
+
/** AES-256-GCM. */
|
|
31
|
+
const ALGORITHM = 'aes-256-gcm';
|
|
32
|
+
const KEY_LENGTH = 32;
|
|
33
|
+
const IV_LENGTH = 12;
|
|
34
|
+
const AUTH_TAG_LENGTH = 16;
|
|
35
|
+
/** scrypt params: 2^14 ops, r=8, p=1. Cost ~60ms on typical
|
|
36
|
+
* developer hardware -- enough to slow down brute-force without
|
|
37
|
+
* hurting interactive UX. */
|
|
38
|
+
const SCRYPT_COST = 16384;
|
|
39
|
+
const SCRYPT_BLOCK = 8;
|
|
40
|
+
const SCRYPT_PARALLEL = 1;
|
|
41
|
+
const SCRYPT_MAXMEM = 64 * 1024 * 1024;
|
|
42
|
+
/** Salt minimum size. Anything below is rejected loudly. */
|
|
43
|
+
const MIN_SALT_BYTES = 16;
|
|
44
|
+
/**
|
|
45
|
+
* Compute the current machine's fingerprint. Optional override lets
|
|
46
|
+
* tests inject deterministic values.
|
|
47
|
+
*/
|
|
48
|
+
export function computeMachineFingerprint(override) {
|
|
49
|
+
const ifaces = networkInterfaces();
|
|
50
|
+
let mac = '';
|
|
51
|
+
/* First non-internal, non-zero MAC wins. Stable across reboots
|
|
52
|
+
on the same hardware; changes when the user swaps to a new
|
|
53
|
+
laptop, which is exactly what we want for the vault contract
|
|
54
|
+
("works on this machine; reinstall on a fresh machine =
|
|
55
|
+
re-enter credentials"). */
|
|
56
|
+
for (const name of Object.keys(ifaces).sort()) {
|
|
57
|
+
const entries = ifaces[name];
|
|
58
|
+
if (!entries)
|
|
59
|
+
continue;
|
|
60
|
+
for (const entry of entries) {
|
|
61
|
+
if (!entry.internal && entry.mac && entry.mac !== '00:00:00:00:00:00') {
|
|
62
|
+
mac = entry.mac;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (mac)
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
hostname: override?.hostname ?? osHostname(),
|
|
71
|
+
primaryMacAddress: override?.primaryMacAddress ?? mac,
|
|
72
|
+
platform: override?.platform ?? osPlatform(),
|
|
73
|
+
arch: override?.arch ?? osArch(),
|
|
74
|
+
username: override?.username ?? userInfo().username,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Stable string serialisation of a fingerprint. Used as the
|
|
79
|
+
* scrypt passphrase. The order matters: re-orders would produce
|
|
80
|
+
* different keys, breaking existing vaults.
|
|
81
|
+
*/
|
|
82
|
+
function fingerprintToString(fp) {
|
|
83
|
+
return [
|
|
84
|
+
fp.hostname,
|
|
85
|
+
fp.primaryMacAddress,
|
|
86
|
+
fp.platform,
|
|
87
|
+
fp.arch,
|
|
88
|
+
fp.username,
|
|
89
|
+
].join('|');
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Derive a 32-byte AES key from the fingerprint + per-install salt.
|
|
93
|
+
* Deterministic for the same inputs -- the vault file is openable
|
|
94
|
+
* across processes on the same machine without persisting the key
|
|
95
|
+
* anywhere.
|
|
96
|
+
*/
|
|
97
|
+
export function deriveVaultKey(fingerprint, salt) {
|
|
98
|
+
if (salt.length < MIN_SALT_BYTES) {
|
|
99
|
+
throw new Error('vault salt must be at least ' + MIN_SALT_BYTES + ' bytes (got ' + salt.length + ')');
|
|
100
|
+
}
|
|
101
|
+
const passphrase = fingerprintToString(fingerprint);
|
|
102
|
+
return scryptSync(passphrase, salt, KEY_LENGTH, {
|
|
103
|
+
N: SCRYPT_COST,
|
|
104
|
+
r: SCRYPT_BLOCK,
|
|
105
|
+
p: SCRYPT_PARALLEL,
|
|
106
|
+
maxmem: SCRYPT_MAXMEM,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Encrypt a UTF-8 plaintext under the given key. Returns a single
|
|
111
|
+
* buffer with the layout:
|
|
112
|
+
*
|
|
113
|
+
* [12 bytes IV][N bytes ciphertext][16 bytes auth tag]
|
|
114
|
+
*
|
|
115
|
+
* The IV is fresh on every call so encrypting the same plaintext
|
|
116
|
+
* twice produces different blobs.
|
|
117
|
+
*/
|
|
118
|
+
export function encrypt(plaintext, key) {
|
|
119
|
+
if (key.length !== KEY_LENGTH) {
|
|
120
|
+
throw new Error('vault key must be exactly ' + KEY_LENGTH + ' bytes (got ' + key.length + ')');
|
|
121
|
+
}
|
|
122
|
+
const iv = randomBytes(IV_LENGTH);
|
|
123
|
+
const cipher = createCipheriv(ALGORITHM, key, iv);
|
|
124
|
+
const ciphertext = Buffer.concat([
|
|
125
|
+
cipher.update(plaintext, 'utf-8'),
|
|
126
|
+
cipher.final(),
|
|
127
|
+
]);
|
|
128
|
+
const authTag = cipher.getAuthTag();
|
|
129
|
+
return Buffer.concat([iv, ciphertext, authTag]);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Decrypt a blob produced by encrypt(). Throws loudly on:
|
|
133
|
+
* - key length mismatch
|
|
134
|
+
* - blob too short
|
|
135
|
+
* - auth tag mismatch (tampered ciphertext or wrong key)
|
|
136
|
+
*
|
|
137
|
+
* Never returns a partial / placeholder string.
|
|
138
|
+
*/
|
|
139
|
+
export function decrypt(blob, key) {
|
|
140
|
+
if (key.length !== KEY_LENGTH) {
|
|
141
|
+
throw new Error('vault key must be exactly ' + KEY_LENGTH + ' bytes (got ' + key.length + ')');
|
|
142
|
+
}
|
|
143
|
+
if (blob.length < IV_LENGTH + AUTH_TAG_LENGTH) {
|
|
144
|
+
throw new Error('vault blob too short to be a valid AES-GCM payload (got ' + blob.length
|
|
145
|
+
+ ' bytes, need at least ' + (IV_LENGTH + AUTH_TAG_LENGTH) + ')');
|
|
146
|
+
}
|
|
147
|
+
const iv = blob.subarray(0, IV_LENGTH);
|
|
148
|
+
const authTag = blob.subarray(blob.length - AUTH_TAG_LENGTH);
|
|
149
|
+
const ciphertext = blob.subarray(IV_LENGTH, blob.length - AUTH_TAG_LENGTH);
|
|
150
|
+
const decipher = createDecipheriv(ALGORITHM, key, iv);
|
|
151
|
+
decipher.setAuthTag(authTag);
|
|
152
|
+
try {
|
|
153
|
+
return Buffer.concat([
|
|
154
|
+
decipher.update(ciphertext),
|
|
155
|
+
decipher.final(),
|
|
156
|
+
]).toString('utf-8');
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
throw new Error('vault decryption failed (auth tag mismatch -- ciphertext tampered or wrong key): '
|
|
160
|
+
+ (err instanceof Error ? err.message : String(err)));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Generate a fresh 16-byte salt for a new vault install. Caller
|
|
165
|
+
* is responsible for persisting it to ~/.yujin-forge/vault.salt
|
|
166
|
+
* (or wherever the vault store decides).
|
|
167
|
+
*/
|
|
168
|
+
export function generateSalt() {
|
|
169
|
+
return randomBytes(MIN_SALT_BYTES);
|
|
170
|
+
}
|
|
171
|
+
/** Exported as a constant for tests + future migrations. */
|
|
172
|
+
export const VAULT_CRYPTO_VERSION = 1;
|
|
173
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/vault/crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface AskPassHandle {
|
|
2
|
+
/** Path to the temporary askpass script. */
|
|
3
|
+
scriptPath: string;
|
|
4
|
+
/** Env vars to merge into the child's environment. */
|
|
5
|
+
env: Record<string, string>;
|
|
6
|
+
/** Delete the temp script. Safe to call multiple times. */
|
|
7
|
+
cleanup: () => Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Prepare a GIT_ASKPASS script + env that injects `token` as
|
|
11
|
+
* the password for `username` (default 'x-access-token').
|
|
12
|
+
*
|
|
13
|
+
* Caller pattern:
|
|
14
|
+
*
|
|
15
|
+
* const ap = await prepareGitAskpass(token);
|
|
16
|
+
* try {
|
|
17
|
+
* await exec('git', ['push', ...], {
|
|
18
|
+
* cwd: dir,
|
|
19
|
+
* env: { ...process.env, ...ap.env },
|
|
20
|
+
* });
|
|
21
|
+
* } finally {
|
|
22
|
+
* await ap.cleanup();
|
|
23
|
+
* }
|
|
24
|
+
*/
|
|
25
|
+
export declare function prepareGitAskpass(token: string, username?: string): Promise<AskPassHandle>;
|
|
26
|
+
//# sourceMappingURL=git_askpass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git_askpass.d.ts","sourceRoot":"","sources":["../../src/vault/git_askpass.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,2DAA2D;IAC3D,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAyB,GAClC,OAAO,CAAC,aAAa,CAAC,CAkDxB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GIT_ASKPASS helper (SQ 0.11).
|
|
3
|
+
*
|
|
4
|
+
* Lets `git push` / `git pull` / `git clone` authenticate
|
|
5
|
+
* with a token from the vault **without** putting that token
|
|
6
|
+
* in argv, in the remote URL, or in any persistent on-disk
|
|
7
|
+
* config. The flow:
|
|
8
|
+
*
|
|
9
|
+
* 1. We write a tiny script to a temp file with mode 0o700.
|
|
10
|
+
* 2. The script prints either the username or the token
|
|
11
|
+
* depending on the prompt git asks (parsed from argv[1]).
|
|
12
|
+
* 3. We spawn git with GIT_ASKPASS set to that script's path
|
|
13
|
+
* and GIT_TERMINAL_PROMPT=0 so git refuses to fall back to
|
|
14
|
+
* stdin (which would otherwise hang in the panel).
|
|
15
|
+
* 4. The token is passed to the script via the env var
|
|
16
|
+
* YF_GIT_TOKEN -- visible only inside the child process
|
|
17
|
+
* tree, never in our own argv.
|
|
18
|
+
* 5. On exit (success or failure), we delete the script file.
|
|
19
|
+
*
|
|
20
|
+
* Compared with the old "URL with x-access-token:TOKEN@"
|
|
21
|
+
* approach this:
|
|
22
|
+
* - keeps the token out of process argv (where `ps -ef`
|
|
23
|
+
* could see it before),
|
|
24
|
+
* - keeps the token out of the remote URL (where a stray
|
|
25
|
+
* `git remote -v` would leak it),
|
|
26
|
+
* - lets the redactor in the SAME process clean any token
|
|
27
|
+
* that leaks into stderr (git error messages with URLs).
|
|
28
|
+
*
|
|
29
|
+
* ASCII-only.
|
|
30
|
+
*/
|
|
31
|
+
import { promises as fs } from 'node:fs';
|
|
32
|
+
import os from 'node:os';
|
|
33
|
+
import path from 'node:path';
|
|
34
|
+
import { randomBytes } from 'node:crypto';
|
|
35
|
+
/**
|
|
36
|
+
* Prepare a GIT_ASKPASS script + env that injects `token` as
|
|
37
|
+
* the password for `username` (default 'x-access-token').
|
|
38
|
+
*
|
|
39
|
+
* Caller pattern:
|
|
40
|
+
*
|
|
41
|
+
* const ap = await prepareGitAskpass(token);
|
|
42
|
+
* try {
|
|
43
|
+
* await exec('git', ['push', ...], {
|
|
44
|
+
* cwd: dir,
|
|
45
|
+
* env: { ...process.env, ...ap.env },
|
|
46
|
+
* });
|
|
47
|
+
* } finally {
|
|
48
|
+
* await ap.cleanup();
|
|
49
|
+
* }
|
|
50
|
+
*/
|
|
51
|
+
export async function prepareGitAskpass(token, username = 'x-access-token') {
|
|
52
|
+
if (typeof token !== 'string' || token.length === 0) {
|
|
53
|
+
throw new Error('prepareGitAskpass: token must be a non-empty string');
|
|
54
|
+
}
|
|
55
|
+
const suffix = randomBytes(6).toString('hex');
|
|
56
|
+
const isWindows = process.platform === 'win32';
|
|
57
|
+
const scriptName = 'yf-askpass-' + suffix + (isWindows ? '.cmd' : '.sh');
|
|
58
|
+
const scriptPath = path.join(os.tmpdir(), scriptName);
|
|
59
|
+
/* The askpass protocol: git calls the script with the
|
|
60
|
+
* prompt as argv[1]. Examples:
|
|
61
|
+
* "Username for 'https://github.com': "
|
|
62
|
+
* "Password for 'https://x-access-token@github.com': "
|
|
63
|
+
* We print the token for anything that looks like a
|
|
64
|
+
* password prompt; otherwise we print the username. */
|
|
65
|
+
let body;
|
|
66
|
+
if (isWindows) {
|
|
67
|
+
body =
|
|
68
|
+
'@echo off\r\n'
|
|
69
|
+
+ 'echo %1 | findstr /I "password" >nul\r\n'
|
|
70
|
+
+ 'if %errorlevel%==0 (echo %YF_GIT_TOKEN%) else (echo %YF_GIT_USERNAME%)\r\n';
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
body =
|
|
74
|
+
'#!/bin/sh\n'
|
|
75
|
+
+ 'case "$1" in\n'
|
|
76
|
+
+ ' *[Pp]assword*) printf "%s" "$YF_GIT_TOKEN" ;;\n'
|
|
77
|
+
+ ' *) printf "%s" "$YF_GIT_USERNAME" ;;\n'
|
|
78
|
+
+ 'esac\n';
|
|
79
|
+
}
|
|
80
|
+
await fs.writeFile(scriptPath, body, { mode: 0o700 });
|
|
81
|
+
/* On POSIX, mode at write time is enough. On Windows, .cmd
|
|
82
|
+
* is executable by virtue of the extension. */
|
|
83
|
+
let cleaned = false;
|
|
84
|
+
const cleanup = async () => {
|
|
85
|
+
if (cleaned)
|
|
86
|
+
return;
|
|
87
|
+
cleaned = true;
|
|
88
|
+
try {
|
|
89
|
+
await fs.unlink(scriptPath);
|
|
90
|
+
}
|
|
91
|
+
catch { /* best effort */ }
|
|
92
|
+
};
|
|
93
|
+
return {
|
|
94
|
+
scriptPath,
|
|
95
|
+
env: {
|
|
96
|
+
GIT_ASKPASS: scriptPath,
|
|
97
|
+
GIT_TERMINAL_PROMPT: '0',
|
|
98
|
+
YF_GIT_TOKEN: token,
|
|
99
|
+
YF_GIT_USERNAME: username,
|
|
100
|
+
},
|
|
101
|
+
cleanup,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=git_askpass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git_askpass.js","sourceRoot":"","sources":["../../src/vault/git_askpass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW1C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,WAAmB,gBAAgB;IAEnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;IAEtD;;;;;2DAKuD;IACvD,IAAI,IAAY,CAAC;IACjB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI;YACF,eAAe;kBACb,0CAA0C;kBAC1C,4EAA4E,CAAC;IACnF,CAAC;SAAM,CAAC;QACN,IAAI;YACF,aAAa;kBACX,gBAAgB;kBAChB,mDAAmD;kBACnD,sDAAsD;kBACtD,QAAQ,CAAC;IACf,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD;mDAC+C;IAE/C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,OAAO;QACL,UAAU;QACV,GAAG,EAAE;YACH,WAAW,EAAE,UAAU;YACvB,mBAAmB,EAAE,GAAG;YACxB,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,QAAQ;SAC1B;QACD,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type SlotKind } from './catalog.js';
|
|
2
|
+
export interface LegacyFinding {
|
|
3
|
+
/** Suggested slot name (vault-compatible). */
|
|
4
|
+
suggested_slot: string;
|
|
5
|
+
/** Kind inferred from the slot name (or 'custom'). */
|
|
6
|
+
kind: SlotKind;
|
|
7
|
+
/** Where the value came from. */
|
|
8
|
+
file: string;
|
|
9
|
+
line_number: number;
|
|
10
|
+
/** Original KEY=value line (before redaction). */
|
|
11
|
+
original_line: string;
|
|
12
|
+
/** Why we flagged this -- one of:
|
|
13
|
+
* 'pattern' (value matched a redactor regex)
|
|
14
|
+
* 'key_heuristic' (env key name looks credential-shaped)
|
|
15
|
+
* 'both' */
|
|
16
|
+
reason: 'pattern' | 'key_heuristic' | 'both';
|
|
17
|
+
/** Patterns that hit (when reason includes 'pattern'). */
|
|
18
|
+
pattern_hits?: string[];
|
|
19
|
+
}
|
|
20
|
+
/** Suggested vault slot name from an env-style key.
|
|
21
|
+
* Lowercase, snake_case, dropping the "AWS_" / "STRIPE_"
|
|
22
|
+
* prefix when it duplicates the catalog name. */
|
|
23
|
+
export declare function envKeyToSlot(envKey: string): string;
|
|
24
|
+
/** Parse a single env-style line `KEY=VALUE` (with optional
|
|
25
|
+
* comments + quoted values). Returns null when the line is
|
|
26
|
+
* blank, comment-only, or not key=value. */
|
|
27
|
+
export declare function parseEnvLine(line: string): {
|
|
28
|
+
key: string;
|
|
29
|
+
value: string;
|
|
30
|
+
} | null;
|
|
31
|
+
/** Classify a parsed env line. Returns null when not
|
|
32
|
+
* credential-shaped.
|
|
33
|
+
*
|
|
34
|
+
* IMPORTANT: `original_line` on the returned finding is
|
|
35
|
+
* ALWAYS REDACTED. Safe to log, emit as JSON, surface in
|
|
36
|
+
* chat. The raw value never leaves the source file -- the
|
|
37
|
+
* applier reads it back from disk by file + line_number
|
|
38
|
+
* when migration is committed. */
|
|
39
|
+
export declare function classifyEnvEntry(parsed: {
|
|
40
|
+
key: string;
|
|
41
|
+
value: string;
|
|
42
|
+
}, file: string, lineNumber: number, originalLine: string): LegacyFinding | null;
|
|
43
|
+
/** Scan a single text file for legacy credentials. Returns
|
|
44
|
+
* findings + the raw file content (so the caller can apply
|
|
45
|
+
* in-place replacement). */
|
|
46
|
+
export declare function scanLegacyFile(abs: string, rel: string): Promise<{
|
|
47
|
+
findings: LegacyFinding[];
|
|
48
|
+
content: string;
|
|
49
|
+
}>;
|
|
50
|
+
/** Walk a project for legacy credential files. */
|
|
51
|
+
export declare function scanLegacyProject(projectRoot: string, extraTargets?: string[]): Promise<LegacyFinding[]>;
|
|
52
|
+
/** Build a redacted copy of `content` -- replaces each
|
|
53
|
+
* flagged value with a placeholder pointing back to the
|
|
54
|
+
* vault slot. Idempotent (running twice does not double-
|
|
55
|
+
* replace). */
|
|
56
|
+
export declare function applyMigrationToContent(content: string, findings: LegacyFinding[]): string;
|
|
57
|
+
//# sourceMappingURL=migrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/vault/migrator.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,IAAI,EAAY,QAAQ,CAAC;IACzB,iCAAiC;IACjC,IAAI,EAAY,MAAM,CAAC;IACvB,WAAW,EAAK,MAAM,CAAC;IACvB,kDAAkD;IAClD,aAAa,EAAG,MAAM,CAAC;IACvB;;;0BAGsB;IACtB,MAAM,EAAU,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC;IACrD,0DAA0D;IAC1D,YAAY,CAAC,EAAG,MAAM,EAAE,CAAC;CAC1B;AAkBD;;kDAEkD;AAClD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWnD;AAED;;6CAE6C;AAC7C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkBhF;AAED;;;;;;;mCAOmC;AACnC,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACtC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,aAAa,GAAG,IAAI,CA0BtB;AAED;;6BAE6B;AAC7B,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAoCzD;AAED,kDAAkD;AAClD,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,aAAa,EAAE,CAAC,CAW1B;AAED;;;gBAGgB;AAChB,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EAAE,GACxB,MAAM,CAkBR"}
|