@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,97 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="ja">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Yujin Forge -- ユーザーマニュアル</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>Yujin Forge -- ユーザーマニュアル</h1>
|
|
10
|
+
|
|
11
|
+
<p>React + NAC-3 アプリケーションを構築するための音声ファースト
|
|
12
|
+
開発アシスタント。介助者やプログラミングを学ぶ子供がターミナル
|
|
13
|
+
に触れずに操作できるように設計されています。</p>
|
|
14
|
+
|
|
15
|
+
<h2>ようこそ</h2>
|
|
16
|
+
|
|
17
|
+
<p>Yujin Forge は次の3つの簡単なことを行います:</p>
|
|
18
|
+
<ul>
|
|
19
|
+
<li>ドキュメントを音声で読み上げる(PDF、Word、HTML、MD、
|
|
20
|
+
EPUB、CSV、Excel、ソースコード、txt、RTF)。</li>
|
|
21
|
+
<li>設計仕様書を受け取り、自動的にアプリケーションコードを
|
|
22
|
+
生成する。</li>
|
|
23
|
+
<li>プロジェクトを理解する AI アシスタントと会話する:
|
|
24
|
+
マニフェストの読み込み、SPECの検索、コンポーネントの編集、
|
|
25
|
+
コミットの作成。</li>
|
|
26
|
+
</ul>
|
|
27
|
+
|
|
28
|
+
<h2>インストール</h2>
|
|
29
|
+
|
|
30
|
+
<ol>
|
|
31
|
+
<li>nodejs.org から Node.js 18.17 以降をインストール。</li>
|
|
32
|
+
<li>ターミナルで:<pre>npm install -g @yujin/forge-cli@alpha</pre></li>
|
|
33
|
+
<li><code>yf --version</code> で確認。</li>
|
|
34
|
+
<li><code>yf doctor</code> を実行。</li>
|
|
35
|
+
</ol>
|
|
36
|
+
|
|
37
|
+
<h2>初回実行</h2>
|
|
38
|
+
|
|
39
|
+
<pre>yf chat</pre>
|
|
40
|
+
|
|
41
|
+
<p>ブラウザで Yujin パネルが開きます。<strong>鍵</strong>ボタン
|
|
42
|
+
(右上)をクリックして API キーを読み込みます。各キーは入力時に
|
|
43
|
+
一度だけ表示されます。</p>
|
|
44
|
+
|
|
45
|
+
<h2>音声コマンド</h2>
|
|
46
|
+
|
|
47
|
+
<p>Yujin はスペイン語、英語、ポルトガル語、フランス語、ドイツ語、
|
|
48
|
+
イタリア語、日本語、中国語、ヒンディー語、アラビア語を理解
|
|
49
|
+
します。</p>
|
|
50
|
+
|
|
51
|
+
<table border="1">
|
|
52
|
+
<tr><th>あなたが言うこと</th><th>起こること</th></tr>
|
|
53
|
+
<tr><td>「<em>ファイル名</em>を開いて」</td><td>ドキュメントを開く。</td></tr>
|
|
54
|
+
<tr><td>「次」/「続けて」</td><td>次のブロックに進む。</td></tr>
|
|
55
|
+
<tr><td>「<em>単語</em>を探す」</td><td>検索して最初の一致を読む。</td></tr>
|
|
56
|
+
<tr><td>「ここを<em>名前</em>でブックマーク」</td><td>しおりを設定。</td></tr>
|
|
57
|
+
<tr><td>「しおり<em>名前</em>に戻る」</td><td>しおりに戻る。</td></tr>
|
|
58
|
+
<tr><td>「まとめ」</td><td>最近のブロックを読み返す。</td></tr>
|
|
59
|
+
<tr><td>「マニュアルを開いて」</td><td>このマニュアルを言語で開く。</td></tr>
|
|
60
|
+
</table>
|
|
61
|
+
|
|
62
|
+
<h2>仕様書の取り込み</h2>
|
|
63
|
+
|
|
64
|
+
<p>仕様書ファイルをパネルにドラッグします。漢字のある紫色の画面が
|
|
65
|
+
表示されます。その上にファイルをドロップします。</p>
|
|
66
|
+
|
|
67
|
+
<ol>
|
|
68
|
+
<li>Yujin がドキュメントを読みます。</li>
|
|
69
|
+
<li>Claude が要件、エンティティ、エンドポイント、コンポーネント、
|
|
70
|
+
要約を抽出。</li>
|
|
71
|
+
<li>Claude が作成するファイルの計画を作成。</li>
|
|
72
|
+
<li>Yujin が計画を表示します。「承認」と言います。</li>
|
|
73
|
+
<li>プロジェクトフォルダにファイルが作成されます。</li>
|
|
74
|
+
<li>問題があれば「元に戻す」と言います。</li>
|
|
75
|
+
</ol>
|
|
76
|
+
|
|
77
|
+
<h2>トラブルシューティング</h2>
|
|
78
|
+
|
|
79
|
+
<dl>
|
|
80
|
+
<dt>マイクが動かない</dt>
|
|
81
|
+
<dd>ブラウザは初回に許可を求めます。URLの横の鍵をクリックして
|
|
82
|
+
権限を変更してください。</dd>
|
|
83
|
+
<dt>理解されない</dt>
|
|
84
|
+
<dd><code>openai</code> スロットに OpenAI キーを読み込んでください。</dd>
|
|
85
|
+
<dt>音質が悪い</dt>
|
|
86
|
+
<dd>ElevenLabs キーを読み込むと、より自然な音声になります。</dd>
|
|
87
|
+
<dt>最初からやり直したい</dt>
|
|
88
|
+
<dd>Yujin を閉じる。<code>~/.yujin-forge/</code> を削除。
|
|
89
|
+
<code>yf chat</code> を再実行。</dd>
|
|
90
|
+
</dl>
|
|
91
|
+
|
|
92
|
+
<h2>サポート</h2>
|
|
93
|
+
|
|
94
|
+
<p>サポート:<a href="mailto:pablo@rpaforce.com">pablo@rpaforce.com</a></p>
|
|
95
|
+
|
|
96
|
+
</body>
|
|
97
|
+
</html>
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="pt">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Yujin Forge -- Manual do usuario</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>Yujin Forge -- Manual do usuario</h1>
|
|
10
|
+
|
|
11
|
+
<p>Assistente de desenvolvimento por voz para construir
|
|
12
|
+
aplicacoes React + NAC-3. Projetado para que um acompanhante
|
|
13
|
+
ou uma crianca aprendendo a programar possa usa-lo sem tocar
|
|
14
|
+
no terminal.</p>
|
|
15
|
+
|
|
16
|
+
<h2>Boas-vindas</h2>
|
|
17
|
+
|
|
18
|
+
<p>O Yujin Forge faz tres coisas simples:</p>
|
|
19
|
+
<ul>
|
|
20
|
+
<li>Le documentos em voz alta (PDF, Word, HTML, MD, EPUB,
|
|
21
|
+
CSV, Excel, codigo-fonte, txt, RTF).</li>
|
|
22
|
+
<li>Pega uma especificacao de design e gera o codigo da
|
|
23
|
+
aplicacao automaticamente.</li>
|
|
24
|
+
<li>Conversa com um assistente de IA que conhece seu
|
|
25
|
+
projeto: le manifest, busca no SPEC, edita componentes,
|
|
26
|
+
faz commits.</li>
|
|
27
|
+
</ul>
|
|
28
|
+
|
|
29
|
+
<h2>Instalacao</h2>
|
|
30
|
+
|
|
31
|
+
<ol>
|
|
32
|
+
<li>Instale Node.js 18.17 ou superior de nodejs.org.</li>
|
|
33
|
+
<li>Em um terminal: <pre>npm install -g @yujin/forge-cli@alpha</pre></li>
|
|
34
|
+
<li>Verifique com <code>yf --version</code>.</li>
|
|
35
|
+
<li>Execute <code>yf doctor</code> para revisar o ambiente.</li>
|
|
36
|
+
</ol>
|
|
37
|
+
|
|
38
|
+
<h2>Primeira execucao</h2>
|
|
39
|
+
|
|
40
|
+
<pre>yf chat</pre>
|
|
41
|
+
|
|
42
|
+
<p>O navegador abre com o painel do Yujin. Clique em
|
|
43
|
+
<strong>Chaves</strong> (canto superior direito) e carregue as
|
|
44
|
+
chaves de API. Cada chave aparece UMA SO VEZ ao inseri-la;
|
|
45
|
+
depois pode ser substituida mas nao lida.</p>
|
|
46
|
+
|
|
47
|
+
<h2>Comandos por voz</h2>
|
|
48
|
+
|
|
49
|
+
<p>Clique no microfone e diga um destes comandos. O Yujin
|
|
50
|
+
entende espanhol, ingles, portugues, frances, alemao, italiano,
|
|
51
|
+
japones, chines, hindi e arabe.</p>
|
|
52
|
+
|
|
53
|
+
<table border="1">
|
|
54
|
+
<tr><th>Voce diz</th><th>O que acontece</th></tr>
|
|
55
|
+
<tr><td>"Abre o <em>arquivo</em>"</td><td>Abre o documento.</td></tr>
|
|
56
|
+
<tr><td>"Proximo" / "Continuar"</td><td>Avanca ao proximo bloco.</td></tr>
|
|
57
|
+
<tr><td>"Procurar <em>palavra</em>"</td><td>Busca e le a primeira coincidencia.</td></tr>
|
|
58
|
+
<tr><td>"Marca aqui como <em>nome</em>"</td><td>Coloca um marcador.</td></tr>
|
|
59
|
+
<tr><td>"Voltar a marca <em>nome</em>"</td><td>Volta a marca.</td></tr>
|
|
60
|
+
<tr><td>"Resumo"</td><td>Le os ultimos blocos.</td></tr>
|
|
61
|
+
<tr><td>"Abre o manual"</td><td>Abre este manual no seu idioma.</td></tr>
|
|
62
|
+
</table>
|
|
63
|
+
|
|
64
|
+
<h2>Ingestao de especificacoes</h2>
|
|
65
|
+
|
|
66
|
+
<p>Arraste um arquivo de especificacao para o painel. Uma tela
|
|
67
|
+
roxa com um kanji aparece. Solte o arquivo nela.</p>
|
|
68
|
+
|
|
69
|
+
<ol>
|
|
70
|
+
<li>O Yujin le o documento.</li>
|
|
71
|
+
<li>Pede ao Claude que extraia requisitos, entidades,
|
|
72
|
+
endpoints, componentes e um resumo.</li>
|
|
73
|
+
<li>Pede ao Claude um plano de arquivos a criar.</li>
|
|
74
|
+
<li>Mostra o plano. Voce diz "aprovar" se estiver bom.</li>
|
|
75
|
+
<li>Cria os arquivos na pasta do projeto.</li>
|
|
76
|
+
<li>Se algo deu errado, diga "desfazer" e o Yujin reverte.</li>
|
|
77
|
+
</ol>
|
|
78
|
+
|
|
79
|
+
<h2>Solucao de problemas</h2>
|
|
80
|
+
|
|
81
|
+
<dl>
|
|
82
|
+
<dt>O microfone nao funciona</dt>
|
|
83
|
+
<dd>O navegador pede permissao na primeira vez. Se voce
|
|
84
|
+
rejeitou por engano, clique no cadeado ao lado da URL e
|
|
85
|
+
mude a permissao.</dd>
|
|
86
|
+
<dt>Nao entende o que digo</dt>
|
|
87
|
+
<dd>Tente outro provedor. Carregue a chave do OpenAI no slot
|
|
88
|
+
<code>openai</code>; o Whisper lida melhor com sotaques
|
|
89
|
+
sul-americanos.</dd>
|
|
90
|
+
<dt>A voz soa mal</dt>
|
|
91
|
+
<dd>O Yujin usa a voz do Google por padrao. Para uma voz mais
|
|
92
|
+
natural, carregue a chave do ElevenLabs.</dd>
|
|
93
|
+
<dt>Quero comecar do zero</dt>
|
|
94
|
+
<dd>Feche o Yujin. Apague <code>~/.yujin-forge/</code>. Execute
|
|
95
|
+
<code>yf chat</code> de novo e recarregue as chaves.</dd>
|
|
96
|
+
</dl>
|
|
97
|
+
|
|
98
|
+
<h2>Suporte</h2>
|
|
99
|
+
|
|
100
|
+
<p>Para suporte, escreva para <a href="mailto:pablo@rpaforce.com">pablo@rpaforce.com</a>.</p>
|
|
101
|
+
|
|
102
|
+
</body>
|
|
103
|
+
</html>
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Yujin Forge -- 用户手册</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>Yujin Forge -- 用户手册</h1>
|
|
10
|
+
|
|
11
|
+
<p>用于构建 React + NAC-3 应用程序的语音优先开发助手。设计宗旨是
|
|
12
|
+
让看护者或正在学习编程的孩子无需接触终端即可操作。</p>
|
|
13
|
+
|
|
14
|
+
<h2>欢迎</h2>
|
|
15
|
+
|
|
16
|
+
<p>Yujin Forge 做三件简单的事:</p>
|
|
17
|
+
<ul>
|
|
18
|
+
<li>朗读文档(PDF、Word、HTML、MD、EPUB、CSV、Excel、源代码、
|
|
19
|
+
txt、RTF)。</li>
|
|
20
|
+
<li>接收设计规范并自动生成应用程序代码。</li>
|
|
21
|
+
<li>与了解你项目的 AI 助手对话:读取清单、搜索 SPEC、编辑组件、
|
|
22
|
+
进行提交。</li>
|
|
23
|
+
</ul>
|
|
24
|
+
|
|
25
|
+
<h2>安装</h2>
|
|
26
|
+
|
|
27
|
+
<ol>
|
|
28
|
+
<li>从 nodejs.org 安装 Node.js 18.17 或更高版本。</li>
|
|
29
|
+
<li>在终端中:<pre>npm install -g @yujin/forge-cli@alpha</pre></li>
|
|
30
|
+
<li>用 <code>yf --version</code> 验证。</li>
|
|
31
|
+
<li>运行 <code>yf doctor</code>。</li>
|
|
32
|
+
</ol>
|
|
33
|
+
|
|
34
|
+
<h2>首次运行</h2>
|
|
35
|
+
|
|
36
|
+
<pre>yf chat</pre>
|
|
37
|
+
|
|
38
|
+
<p>浏览器打开 Yujin 面板。点击<strong>密钥</strong>按钮(右上角)
|
|
39
|
+
加载 API 密钥。每个密钥在输入时只显示一次。</p>
|
|
40
|
+
|
|
41
|
+
<h2>语音命令</h2>
|
|
42
|
+
|
|
43
|
+
<p>Yujin 理解西班牙语、英语、葡萄牙语、法语、德语、意大利语、
|
|
44
|
+
日语、中文、印地语和阿拉伯语。</p>
|
|
45
|
+
|
|
46
|
+
<table border="1">
|
|
47
|
+
<tr><th>你说</th><th>会发生什么</th></tr>
|
|
48
|
+
<tr><td>"打开<em>文件名</em>"</td><td>打开文档。</td></tr>
|
|
49
|
+
<tr><td>"下一个" / "继续"</td><td>前进到下一个块。</td></tr>
|
|
50
|
+
<tr><td>"搜索<em>单词</em>"</td><td>搜索并读取第一个匹配。</td></tr>
|
|
51
|
+
<tr><td>"这里设置书签<em>名称</em>"</td><td>设置书签。</td></tr>
|
|
52
|
+
<tr><td>"跳到书签<em>名称</em>"</td><td>返回到书签。</td></tr>
|
|
53
|
+
<tr><td>"总结"</td><td>重读最近的块。</td></tr>
|
|
54
|
+
<tr><td>"打开手册"</td><td>用你的语言打开本手册。</td></tr>
|
|
55
|
+
</table>
|
|
56
|
+
|
|
57
|
+
<h2>规范导入</h2>
|
|
58
|
+
|
|
59
|
+
<p>将规范文件拖到面板上。出现带有汉字的紫色屏幕。将文件放在上面。</p>
|
|
60
|
+
|
|
61
|
+
<ol>
|
|
62
|
+
<li>Yujin 读取文档。</li>
|
|
63
|
+
<li>Claude 提取需求、实体、端点、组件和摘要。</li>
|
|
64
|
+
<li>Claude 生成要创建的文件计划。</li>
|
|
65
|
+
<li>Yujin 显示计划。你说"批准"。</li>
|
|
66
|
+
<li>在你的项目文件夹中创建文件。</li>
|
|
67
|
+
<li>如果出错,说"撤销"。</li>
|
|
68
|
+
</ol>
|
|
69
|
+
|
|
70
|
+
<h2>故障排除</h2>
|
|
71
|
+
|
|
72
|
+
<dl>
|
|
73
|
+
<dt>麦克风不工作</dt>
|
|
74
|
+
<dd>浏览器首次请求权限。点击 URL 旁边的锁更改权限。</dd>
|
|
75
|
+
<dt>它听不懂我</dt>
|
|
76
|
+
<dd>在 <code>openai</code> 插槽中加载 OpenAI 密钥。</dd>
|
|
77
|
+
<dt>声音质量差</dt>
|
|
78
|
+
<dd>加载 ElevenLabs 密钥获得更自然的声音。</dd>
|
|
79
|
+
<dt>我想重新开始</dt>
|
|
80
|
+
<dd>关闭 Yujin。删除 <code>~/.yujin-forge/</code>。
|
|
81
|
+
再次运行 <code>yf chat</code>。</dd>
|
|
82
|
+
</dl>
|
|
83
|
+
|
|
84
|
+
<h2>支持</h2>
|
|
85
|
+
|
|
86
|
+
<p>支持:<a href="mailto:pablo@rpaforce.com">pablo@rpaforce.com</a></p>
|
|
87
|
+
|
|
88
|
+
</body>
|
|
89
|
+
</html>
|
package/package.json
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nac3/forge-cli",
|
|
3
|
+
"version": "0.2.0-alpha.1",
|
|
4
|
+
"description": "Yujin Forge -- voice-first NAC-3 React development framework. CLI + chat panel + spec ingest + 10-format document reader + voice loop.",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
6
|
+
"author": "Pablo Kuschnirof <pablo@rpaforce.com>",
|
|
7
|
+
"homepage": "https://github.com/yujinapp/yujin-forge#readme",
|
|
8
|
+
"bugs": {
|
|
9
|
+
"url": "https://github.com/yujinapp/yujin-forge/issues"
|
|
10
|
+
},
|
|
11
|
+
"bin": {
|
|
12
|
+
"yf": "./dist/bin/yf.js"
|
|
13
|
+
},
|
|
14
|
+
"type": "module",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsx watch src/bin/yf.ts",
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"lint": "tsc --noEmit",
|
|
25
|
+
"yf": "tsx src/bin/yf.ts",
|
|
26
|
+
"catalog:lint": "node scripts/catalog_lint.mjs",
|
|
27
|
+
"prepublishOnly": "pnpm run build && pnpm run typecheck && pnpm run catalog:lint && pnpm run test"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@anthropic-ai/sdk": "^0.32.1",
|
|
31
|
+
"@aws-sdk/client-ecs": "^3.1053.0",
|
|
32
|
+
"commander": "12.1.0",
|
|
33
|
+
"dotenv": "^17.4.2",
|
|
34
|
+
"kleur": "4.1.5",
|
|
35
|
+
"mammoth": "^1.8.0",
|
|
36
|
+
"node-html-parser": "6.1.13",
|
|
37
|
+
"pdfjs-dist": "^4.10.38",
|
|
38
|
+
"prompts": "2.4.2",
|
|
39
|
+
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@playwright/test": "^1.60.0",
|
|
43
|
+
"@types/node": "22.10.2",
|
|
44
|
+
"@types/prompts": "2.4.9",
|
|
45
|
+
"pixelmatch": "^7.2.0",
|
|
46
|
+
"pngjs": "^7.0.0",
|
|
47
|
+
"tsx": "4.19.2",
|
|
48
|
+
"typescript": "5.7.2",
|
|
49
|
+
"vitest": "2.1.8"
|
|
50
|
+
},
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=18.17",
|
|
53
|
+
"pnpm": ">=10"
|
|
54
|
+
},
|
|
55
|
+
"packageManager": "pnpm@11.3.0",
|
|
56
|
+
"files": [
|
|
57
|
+
"dist",
|
|
58
|
+
"templates",
|
|
59
|
+
"docs/manuals",
|
|
60
|
+
"src/i18n/catalogs",
|
|
61
|
+
"README.md",
|
|
62
|
+
"LICENSE"
|
|
63
|
+
],
|
|
64
|
+
"keywords": [
|
|
65
|
+
"nac",
|
|
66
|
+
"nac-3",
|
|
67
|
+
"react",
|
|
68
|
+
"framework",
|
|
69
|
+
"claude-code",
|
|
70
|
+
"yujin",
|
|
71
|
+
"voice",
|
|
72
|
+
"whisper",
|
|
73
|
+
"elevenlabs",
|
|
74
|
+
"tts",
|
|
75
|
+
"stt",
|
|
76
|
+
"document-reader",
|
|
77
|
+
"pdf",
|
|
78
|
+
"docx",
|
|
79
|
+
"epub",
|
|
80
|
+
"spec-ingest",
|
|
81
|
+
"scaffolding",
|
|
82
|
+
"accessibility",
|
|
83
|
+
"voice-first",
|
|
84
|
+
"adip"
|
|
85
|
+
],
|
|
86
|
+
"repository": {
|
|
87
|
+
"type": "git",
|
|
88
|
+
"url": "git+https://github.com/yujinapp/yujin-forge.git"
|
|
89
|
+
},
|
|
90
|
+
"publishConfig": {
|
|
91
|
+
"access": "public",
|
|
92
|
+
"tag": "alpha"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"panel.brand": "Yujin Forge",
|
|
3
|
+
"panel.brand.kanji": "侑",
|
|
4
|
+
"panel.tagline": "مساعد تطوير صوتي أولاً",
|
|
5
|
+
"panel.input.placeholder": "اسأل Yujin",
|
|
6
|
+
"panel.button.send": "إرسال",
|
|
7
|
+
"panel.button.mic": "تحدث (اضغط مع الاستمرار)",
|
|
8
|
+
"panel.button.mic.recording": "اضغط لإيقاف التسجيل",
|
|
9
|
+
"panel.button.tts": "الصوت مفعل",
|
|
10
|
+
"panel.button.keys": "المفاتيح",
|
|
11
|
+
"panel.button.minimise": "تصغير",
|
|
12
|
+
"panel.button.maximise": "تكبير",
|
|
13
|
+
"panel.button.close": "إغلاق",
|
|
14
|
+
"panel.button.language": "اللغة",
|
|
15
|
+
|
|
16
|
+
"panel.trace.title": "سجل الإجراءات",
|
|
17
|
+
"panel.trace.count.one": "{n} استدعاء أداة",
|
|
18
|
+
"panel.trace.count.other": "{n} استدعاءات أدوات",
|
|
19
|
+
"panel.trace.empty.kanji": "空",
|
|
20
|
+
"panel.trace.empty.body": "يعرض Yujin Forge هنا كل أداة يستدعيها للرد عليك: قراءة البيان، البحث في SPEC، تحرير المكونات، قراءة المستندات. اطرح سؤالاً يتطلب الرجوع إليها.",
|
|
21
|
+
"panel.trace.badge.tool": "أداة",
|
|
22
|
+
"panel.trace.badge.voice": "صوت",
|
|
23
|
+
"panel.trace.badge.error": "خطأ",
|
|
24
|
+
|
|
25
|
+
"panel.stream.empty.kanji": "侑仁",
|
|
26
|
+
"panel.stream.empty.body": "Yujin Forge متصل. اطلب تغييرات على المشروع.",
|
|
27
|
+
|
|
28
|
+
"panel.status.no_audio": "لم يُلتقط أي صوت. ربما لم يستقبل الميكروفون شيئاً.",
|
|
29
|
+
"panel.status.did_not_catch": "لم أفهم. لنجرب مرة أخرى.",
|
|
30
|
+
"panel.status.mic_denied": "إذن الميكروفون مرفوض أو غير متاح: {error}",
|
|
31
|
+
"panel.status.voice_failed": "فشل الصوت: {error}",
|
|
32
|
+
"panel.status.voice_reply_failed": "تعذر تشغيل الرد: {error}",
|
|
33
|
+
"panel.status.audio_play_error": "تعذر تشغيل الصوت: {error}",
|
|
34
|
+
"panel.status.reading": "جارٍ قراءة {filename}...",
|
|
35
|
+
"panel.status.ingest_failed": "فشل الاستيعاب: {error}",
|
|
36
|
+
"panel.status.read_failed": "تعذرت قراءة المواصفات: {error}",
|
|
37
|
+
|
|
38
|
+
"panel.drop.title": "أفلت المواصفات هنا",
|
|
39
|
+
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
40
|
+
|
|
41
|
+
"panel.ingest.spec_attached": "تم إرفاق المواصفات: {filename}، {kb} KB",
|
|
42
|
+
"panel.ingest.read_label": "تمت القراءة.",
|
|
43
|
+
"panel.ingest.title_label": "العنوان: {title}",
|
|
44
|
+
"panel.ingest.no_title": "(بدون عنوان)",
|
|
45
|
+
"panel.ingest.format_label": "التنسيق: {format} / {sections} قسم / {kb} KB",
|
|
46
|
+
"panel.ingest.first_lines": "الأسطر الأولى:",
|
|
47
|
+
"panel.ingest.action_done": "اكتمل الإجراء {tool}.",
|
|
48
|
+
|
|
49
|
+
"vault.modal.title": "بيانات الاعتماد (الخزنة)",
|
|
50
|
+
"vault.modal.aria.close": "إغلاق نافذة بيانات الاعتماد",
|
|
51
|
+
"vault.tab.list": "الخانات المحملة",
|
|
52
|
+
"vault.tab.add": "إضافة",
|
|
53
|
+
"vault.list.loading": "جارٍ التحميل...",
|
|
54
|
+
"vault.list.empty": "لم تقم بتحميل أي مفتاح بعد. انقر على \"إضافة\" للبدء.",
|
|
55
|
+
"vault.add.slot_label": "اسم الخانة",
|
|
56
|
+
"vault.add.slot_hint": "أحرف صغيرة، أرقام، شرطة سفلية، واصلة. يجب أن يبدأ بحرف.",
|
|
57
|
+
"vault.add.value_label": "القيمة النصية (مخفية)",
|
|
58
|
+
"vault.add.value_hint": "تُعرض مرة واحدة فقط عند الحفظ. بعد ذلك يمكن استبدالها وليس قراءتها.",
|
|
59
|
+
"vault.add.button_save": "حفظ",
|
|
60
|
+
"vault.add.button_cancel": "إلغاء",
|
|
61
|
+
"vault.add.success": "تم حفظ الخانة {slot}.",
|
|
62
|
+
"vault.add.overwrite": "تم استبدال الخانة {slot}.",
|
|
63
|
+
|
|
64
|
+
"manual.intro": "Yujin Forge -- دليل المستخدم",
|
|
65
|
+
"manual.section.welcome": "مرحباً",
|
|
66
|
+
"manual.section.install": "التثبيت",
|
|
67
|
+
"manual.section.first_run": "التشغيل الأول",
|
|
68
|
+
"manual.section.voice": "الأوامر الصوتية",
|
|
69
|
+
"manual.section.spec_ingest": "استيعاب المواصفات",
|
|
70
|
+
"manual.section.troubleshooting": "حل المشكلات",
|
|
71
|
+
"manual.section.support": "الدعم",
|
|
72
|
+
|
|
73
|
+
"lang.name.es": "الإسبانية",
|
|
74
|
+
"lang.name.en": "الإنجليزية",
|
|
75
|
+
"lang.name.pt": "البرتغالية",
|
|
76
|
+
"lang.name.fr": "الفرنسية",
|
|
77
|
+
"lang.name.ja": "اليابانية",
|
|
78
|
+
"lang.name.zh": "الصينية",
|
|
79
|
+
"lang.name.hi": "الهندية",
|
|
80
|
+
"lang.name.ar": "العربية",
|
|
81
|
+
"lang.name.de": "الألمانية",
|
|
82
|
+
"lang.name.it": "الإيطالية",
|
|
83
|
+
|
|
84
|
+
"recap.fallback_period": ".",
|
|
85
|
+
"recap.empty": "لا يوجد ما يمكن تلخيصه بعد."
|
|
86
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"panel.brand": "Yujin Forge",
|
|
3
|
+
"panel.brand.kanji": "侑",
|
|
4
|
+
"panel.tagline": "Sprachgesteuerter Entwicklungsassistent",
|
|
5
|
+
"panel.input.placeholder": "Frag Yujin",
|
|
6
|
+
"panel.button.send": "Senden",
|
|
7
|
+
"panel.button.mic": "Sprechen (gedrueckt halten)",
|
|
8
|
+
"panel.button.mic.recording": "Druecken, um die Aufnahme zu stoppen",
|
|
9
|
+
"panel.button.tts": "Stimme aktiviert",
|
|
10
|
+
"panel.button.keys": "Schluessel",
|
|
11
|
+
"panel.button.minimise": "Verkleinern",
|
|
12
|
+
"panel.button.maximise": "Vergroessern",
|
|
13
|
+
"panel.button.close": "Schliessen",
|
|
14
|
+
"panel.button.language": "Sprache",
|
|
15
|
+
|
|
16
|
+
"panel.trace.title": "Aktionsprotokoll",
|
|
17
|
+
"panel.trace.count.one": "{n} Werkzeugaufruf",
|
|
18
|
+
"panel.trace.count.other": "{n} Werkzeugaufrufe",
|
|
19
|
+
"panel.trace.empty.kanji": "空",
|
|
20
|
+
"panel.trace.empty.body": "Yujin Forge zeigt hier jedes Werkzeug, das es aufruft, um zu antworten: Manifest lesen, SPEC durchsuchen, Komponenten bearbeiten, Dokumente lesen. Stelle eine Frage, die diese benoetigt.",
|
|
21
|
+
"panel.trace.badge.tool": "WERKZEUG",
|
|
22
|
+
"panel.trace.badge.voice": "STIMME",
|
|
23
|
+
"panel.trace.badge.error": "FEHLER",
|
|
24
|
+
|
|
25
|
+
"panel.stream.empty.kanji": "侑仁",
|
|
26
|
+
"panel.stream.empty.body": "Yujin Forge online. Bitte um Aenderungen am Projekt.",
|
|
27
|
+
|
|
28
|
+
"panel.status.no_audio": "Kein Audio aufgenommen. Das Mikrofon hat vermutlich nichts erfasst.",
|
|
29
|
+
"panel.status.did_not_catch": "Ich habe das nicht verstanden. Versuche es nochmal.",
|
|
30
|
+
"panel.status.mic_denied": "Mikrofonberechtigung verweigert oder nicht verfuegbar: {error}",
|
|
31
|
+
"panel.status.voice_failed": "Stimme fehlgeschlagen: {error}",
|
|
32
|
+
"panel.status.voice_reply_failed": "Konnte die Antwort nicht abspielen: {error}",
|
|
33
|
+
"panel.status.audio_play_error": "Konnte das Audio nicht abspielen: {error}",
|
|
34
|
+
"panel.status.reading": "Lese {filename}...",
|
|
35
|
+
"panel.status.ingest_failed": "Aufnahme fehlgeschlagen: {error}",
|
|
36
|
+
"panel.status.read_failed": "Konnte die Spezifikation nicht lesen: {error}",
|
|
37
|
+
|
|
38
|
+
"panel.drop.title": "Spezifikation hier ablegen",
|
|
39
|
+
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
40
|
+
|
|
41
|
+
"panel.ingest.spec_attached": "Spezifikation angehaengt: {filename}, {kb} KB",
|
|
42
|
+
"panel.ingest.read_label": "Gelesen.",
|
|
43
|
+
"panel.ingest.title_label": "Titel: {title}",
|
|
44
|
+
"panel.ingest.no_title": "(kein Titel)",
|
|
45
|
+
"panel.ingest.format_label": "Format: {format} / {sections} Abschnitt(e) / {kb} KB",
|
|
46
|
+
"panel.ingest.first_lines": "Erste Zeilen:",
|
|
47
|
+
"panel.ingest.action_done": "Aktion {tool} abgeschlossen.",
|
|
48
|
+
|
|
49
|
+
"vault.modal.title": "Zugangsdaten (Vault)",
|
|
50
|
+
"vault.modal.aria.close": "Zugangsdaten-Modal schliessen",
|
|
51
|
+
"vault.tab.list": "Geladene Slots",
|
|
52
|
+
"vault.tab.add": "Hinzufuegen",
|
|
53
|
+
"vault.list.loading": "Laedt...",
|
|
54
|
+
"vault.list.empty": "Du hast noch keinen Schluessel geladen. Klicke auf \"Hinzufuegen\" um zu beginnen.",
|
|
55
|
+
"vault.add.slot_label": "Slot-Name",
|
|
56
|
+
"vault.add.slot_hint": "Kleinbuchstaben, Ziffern, Unterstrich, Bindestrich. Muss mit einem Buchstaben beginnen.",
|
|
57
|
+
"vault.add.value_label": "Klartextwert (maskiert)",
|
|
58
|
+
"vault.add.value_hint": "Wird nur einmal beim Speichern angezeigt. Danach nur ersetzbar, nicht lesbar.",
|
|
59
|
+
"vault.add.button_save": "Speichern",
|
|
60
|
+
"vault.add.button_cancel": "Abbrechen",
|
|
61
|
+
"vault.add.success": "Slot {slot} gespeichert.",
|
|
62
|
+
"vault.add.overwrite": "Slot {slot} ueberschrieben.",
|
|
63
|
+
|
|
64
|
+
"manual.intro": "Yujin Forge -- Benutzerhandbuch",
|
|
65
|
+
"manual.section.welcome": "Willkommen",
|
|
66
|
+
"manual.section.install": "Installation",
|
|
67
|
+
"manual.section.first_run": "Erste Ausfuehrung",
|
|
68
|
+
"manual.section.voice": "Sprachbefehle",
|
|
69
|
+
"manual.section.spec_ingest": "Spezifikations-Ingestion",
|
|
70
|
+
"manual.section.troubleshooting": "Fehlerbehebung",
|
|
71
|
+
"manual.section.support": "Support",
|
|
72
|
+
|
|
73
|
+
"lang.name.es": "Spanisch",
|
|
74
|
+
"lang.name.en": "Englisch",
|
|
75
|
+
"lang.name.pt": "Portugiesisch",
|
|
76
|
+
"lang.name.fr": "Franzoesisch",
|
|
77
|
+
"lang.name.ja": "Japanisch",
|
|
78
|
+
"lang.name.zh": "Chinesisch",
|
|
79
|
+
"lang.name.hi": "Hindi",
|
|
80
|
+
"lang.name.ar": "Arabisch",
|
|
81
|
+
"lang.name.de": "Deutsch",
|
|
82
|
+
"lang.name.it": "Italienisch",
|
|
83
|
+
|
|
84
|
+
"recap.fallback_period": ".",
|
|
85
|
+
"recap.empty": "Es gibt noch nichts zusammenzufassen."
|
|
86
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"panel.brand": "Yujin Forge",
|
|
3
|
+
"panel.brand.kanji": "侑",
|
|
4
|
+
"panel.tagline": "Voice-first development assistant",
|
|
5
|
+
"panel.input.placeholder": "Ask Yujin",
|
|
6
|
+
"panel.button.send": "Send",
|
|
7
|
+
"panel.button.mic": "Speak (press and hold)",
|
|
8
|
+
"panel.button.mic.recording": "Press to stop recording",
|
|
9
|
+
"panel.button.tts": "Voice on",
|
|
10
|
+
"panel.button.keys": "Keys",
|
|
11
|
+
"panel.button.minimise": "Minimise",
|
|
12
|
+
"panel.button.maximise": "Maximise",
|
|
13
|
+
"panel.button.close": "Close",
|
|
14
|
+
"panel.button.language": "Language",
|
|
15
|
+
|
|
16
|
+
"panel.trace.title": "Action trace",
|
|
17
|
+
"panel.trace.count.one": "{n} tool call",
|
|
18
|
+
"panel.trace.count.other": "{n} tool calls",
|
|
19
|
+
"panel.trace.empty.kanji": "空",
|
|
20
|
+
"panel.trace.empty.body": "Yujin Forge shows every tool it invokes to answer you here: manifest reads, SPEC searches, component edits, document reads. Ask something that requires consulting them.",
|
|
21
|
+
"panel.trace.badge.tool": "TOOL",
|
|
22
|
+
"panel.trace.badge.voice": "VOICE",
|
|
23
|
+
"panel.trace.badge.error": "ERROR",
|
|
24
|
+
|
|
25
|
+
"panel.stream.empty.kanji": "侑仁",
|
|
26
|
+
"panel.stream.empty.body": "Yujin Forge online. Ask for changes to the project.",
|
|
27
|
+
|
|
28
|
+
"panel.status.no_audio": "No audio captured. The microphone probably did not pick up anything.",
|
|
29
|
+
"panel.status.did_not_catch": "Did not catch that. Try again.",
|
|
30
|
+
"panel.status.mic_denied": "Microphone permission denied or unavailable: {error}",
|
|
31
|
+
"panel.status.voice_failed": "Voice failed: {error}",
|
|
32
|
+
"panel.status.voice_reply_failed": "Could not play the reply: {error}",
|
|
33
|
+
"panel.status.audio_play_error": "Could not play the audio: {error}",
|
|
34
|
+
"panel.status.reading": "Reading {filename}...",
|
|
35
|
+
"panel.status.ingest_failed": "Ingest failed: {error}",
|
|
36
|
+
"panel.status.read_failed": "Could not read the specification: {error}",
|
|
37
|
+
|
|
38
|
+
"panel.drop.title": "Drop the specification here",
|
|
39
|
+
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
40
|
+
|
|
41
|
+
"panel.ingest.spec_attached": "Spec attached: {filename}, {kb} KB",
|
|
42
|
+
"panel.ingest.read_label": "Read.",
|
|
43
|
+
"panel.ingest.title_label": "Title: {title}",
|
|
44
|
+
"panel.ingest.no_title": "(no title)",
|
|
45
|
+
"panel.ingest.format_label": "Format: {format} / {sections} section(s) / {kb} KB",
|
|
46
|
+
"panel.ingest.first_lines": "First lines:",
|
|
47
|
+
"panel.ingest.action_done": "Action {tool} completed.",
|
|
48
|
+
|
|
49
|
+
"vault.modal.aria.close": "Close credentials modal",
|
|
50
|
+
"vault.modal.title": "Credentials (vault)",
|
|
51
|
+
"vault.tab.list": "Loaded slots",
|
|
52
|
+
"vault.tab.add": "Add",
|
|
53
|
+
"vault.list.loading": "Loading...",
|
|
54
|
+
"vault.list.empty": "You have not loaded any key yet. Click \"Add\" to start.",
|
|
55
|
+
"vault.add.slot_label": "Slot name",
|
|
56
|
+
"vault.add.slot_hint": "Lowercase letters, digits, underscore, hyphen. Must start with a letter.",
|
|
57
|
+
"vault.add.value_label": "Plaintext value (masked)",
|
|
58
|
+
"vault.add.value_hint": "Shown only once at save. After that you can replace it but not read it back.",
|
|
59
|
+
"vault.add.button_save": "Save",
|
|
60
|
+
"vault.add.button_cancel": "Cancel",
|
|
61
|
+
"vault.add.success": "Slot {slot} saved.",
|
|
62
|
+
"vault.add.overwrite": "Slot {slot} overwritten.",
|
|
63
|
+
|
|
64
|
+
"manual.intro": "Yujin Forge -- user manual",
|
|
65
|
+
"manual.section.welcome": "Welcome",
|
|
66
|
+
"manual.section.install": "Installation",
|
|
67
|
+
"manual.section.first_run": "First run",
|
|
68
|
+
"manual.section.voice": "Voice commands",
|
|
69
|
+
"manual.section.spec_ingest": "Specification ingest",
|
|
70
|
+
"manual.section.troubleshooting": "Troubleshooting",
|
|
71
|
+
"manual.section.support": "Support",
|
|
72
|
+
|
|
73
|
+
"lang.name.es": "Spanish",
|
|
74
|
+
"lang.name.en": "English",
|
|
75
|
+
"lang.name.pt": "Portuguese",
|
|
76
|
+
"lang.name.fr": "French",
|
|
77
|
+
"lang.name.ja": "Japanese",
|
|
78
|
+
"lang.name.zh": "Chinese",
|
|
79
|
+
"lang.name.hi": "Hindi",
|
|
80
|
+
"lang.name.ar": "Arabic",
|
|
81
|
+
"lang.name.de": "German",
|
|
82
|
+
"lang.name.it": "Italian",
|
|
83
|
+
|
|
84
|
+
"recap.fallback_period": ".",
|
|
85
|
+
"recap.empty": "There is nothing to recap yet."
|
|
86
|
+
}
|