aios-core 4.2.15 → 4.4.0
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/.aios-core/cli/commands/validate/index.js +1 -1
- package/.aios-core/core/code-intel/code-intel-client.js +19 -5
- package/.aios-core/core/code-intel/helpers/creation-helper.js +183 -0
- package/.aios-core/core/code-intel/helpers/devops-helper.js +166 -0
- package/.aios-core/core/code-intel/helpers/planning-helper.js +248 -0
- package/.aios-core/core/code-intel/helpers/qa-helper.js +187 -0
- package/.aios-core/core/code-intel/helpers/story-helper.js +146 -0
- package/.aios-core/core/code-intel/hook-runtime.js +186 -0
- package/.aios-core/core/code-intel/index.js +2 -0
- package/.aios-core/core/code-intel/providers/code-graph-provider.js +8 -0
- package/.aios-core/core/code-intel/providers/provider-interface.js +9 -0
- package/.aios-core/core/code-intel/providers/registry-provider.js +515 -0
- package/.aios-core/core/config/schemas/framework-config.schema.json +155 -7
- package/.aios-core/core/config/schemas/project-config.schema.json +329 -15
- package/.aios-core/core/config/template-overrides.js +84 -0
- package/.aios-core/core/docs/troubleshooting-guide.md +1 -1
- package/.aios-core/core/doctor/checks/agent-memory.js +63 -0
- package/.aios-core/core/doctor/checks/claude-md.js +56 -0
- package/.aios-core/core/doctor/checks/code-intel.js +131 -0
- package/.aios-core/core/doctor/checks/commands-count.js +81 -0
- package/.aios-core/core/doctor/checks/core-config.js +53 -0
- package/.aios-core/core/doctor/checks/entity-registry.js +53 -0
- package/.aios-core/core/doctor/checks/git-hooks.js +50 -0
- package/.aios-core/core/doctor/checks/graph-dashboard.js +48 -0
- package/.aios-core/core/doctor/checks/hooks-claude-count.js +118 -0
- package/.aios-core/core/doctor/checks/ide-sync.js +85 -0
- package/.aios-core/core/doctor/checks/index.js +46 -0
- package/.aios-core/core/doctor/checks/node-version.js +33 -0
- package/.aios-core/core/doctor/checks/npm-packages.js +35 -0
- package/.aios-core/core/doctor/checks/rules-files.js +61 -0
- package/.aios-core/core/doctor/checks/settings-json.js +121 -0
- package/.aios-core/core/doctor/checks/skills-count.js +72 -0
- package/.aios-core/core/doctor/fix-handler.js +165 -0
- package/.aios-core/core/doctor/formatters/json.js +14 -0
- package/.aios-core/core/doctor/formatters/text.js +59 -0
- package/.aios-core/core/doctor/index.js +94 -0
- package/.aios-core/core/graph-dashboard/cli.js +361 -0
- package/.aios-core/core/graph-dashboard/data-sources/code-intel-source.js +234 -0
- package/.aios-core/core/graph-dashboard/data-sources/metrics-source.js +95 -0
- package/.aios-core/core/graph-dashboard/data-sources/registry-source.js +106 -0
- package/.aios-core/core/graph-dashboard/formatters/dot-formatter.js +45 -0
- package/.aios-core/core/graph-dashboard/formatters/html-formatter.js +1437 -0
- package/.aios-core/core/graph-dashboard/formatters/json-formatter.js +13 -0
- package/.aios-core/core/graph-dashboard/formatters/mermaid-formatter.js +59 -0
- package/.aios-core/core/graph-dashboard/index.js +21 -0
- package/.aios-core/core/graph-dashboard/renderers/stats-renderer.js +217 -0
- package/.aios-core/core/graph-dashboard/renderers/status-renderer.js +125 -0
- package/.aios-core/core/graph-dashboard/renderers/tree-renderer.js +119 -0
- package/.aios-core/core/health-check/base-check.js +1 -1
- package/.aios-core/core/health-check/check-registry.js +1 -1
- package/.aios-core/core/health-check/checks/deployment/build-config.js +1 -1
- package/.aios-core/core/health-check/checks/deployment/ci-config.js +1 -1
- package/.aios-core/core/health-check/checks/deployment/deployment-readiness.js +1 -1
- package/.aios-core/core/health-check/checks/deployment/docker-config.js +1 -1
- package/.aios-core/core/health-check/checks/deployment/env-file.js +1 -1
- package/.aios-core/core/health-check/checks/deployment/index.js +1 -1
- package/.aios-core/core/health-check/checks/index.js +1 -1
- package/.aios-core/core/health-check/checks/local/disk-space.js +1 -1
- package/.aios-core/core/health-check/checks/local/environment-vars.js +1 -1
- package/.aios-core/core/health-check/checks/local/git-install.js +1 -1
- package/.aios-core/core/health-check/checks/local/ide-detection.js +1 -1
- package/.aios-core/core/health-check/checks/local/index.js +1 -1
- package/.aios-core/core/health-check/checks/local/memory.js +1 -1
- package/.aios-core/core/health-check/checks/local/network.js +1 -1
- package/.aios-core/core/health-check/checks/local/npm-install.js +1 -1
- package/.aios-core/core/health-check/checks/local/shell-environment.js +1 -1
- package/.aios-core/core/health-check/checks/project/agent-config.js +1 -1
- package/.aios-core/core/health-check/checks/project/aios-directory.js +1 -1
- package/.aios-core/core/health-check/checks/project/dependencies.js +1 -1
- package/.aios-core/core/health-check/checks/project/framework-config.js +1 -1
- package/.aios-core/core/health-check/checks/project/index.js +1 -1
- package/.aios-core/core/health-check/checks/project/node-version.js +1 -1
- package/.aios-core/core/health-check/checks/project/package-json.js +1 -1
- package/.aios-core/core/health-check/checks/project/task-definitions.js +1 -1
- package/.aios-core/core/health-check/checks/project/workflow-dependencies.js +1 -1
- package/.aios-core/core/health-check/checks/repository/branch-protection.js +1 -1
- package/.aios-core/core/health-check/checks/repository/commit-history.js +1 -1
- package/.aios-core/core/health-check/checks/repository/conflicts.js +1 -1
- package/.aios-core/core/health-check/checks/repository/git-repo.js +1 -1
- package/.aios-core/core/health-check/checks/repository/git-status.js +1 -1
- package/.aios-core/core/health-check/checks/repository/gitignore.js +1 -1
- package/.aios-core/core/health-check/checks/repository/index.js +1 -1
- package/.aios-core/core/health-check/checks/repository/large-files.js +1 -1
- package/.aios-core/core/health-check/checks/repository/lockfile-integrity.js +1 -1
- package/.aios-core/core/health-check/checks/services/api-endpoints.js +1 -1
- package/.aios-core/core/health-check/checks/services/claude-code.js +1 -1
- package/.aios-core/core/health-check/checks/services/gemini-cli.js +1 -1
- package/.aios-core/core/health-check/checks/services/github-cli.js +1 -1
- package/.aios-core/core/health-check/checks/services/index.js +1 -1
- package/.aios-core/core/health-check/checks/services/mcp-integration.js +1 -1
- package/.aios-core/core/health-check/engine.js +1 -1
- package/.aios-core/core/health-check/healers/backup-manager.js +1 -1
- package/.aios-core/core/health-check/healers/index.js +1 -1
- package/.aios-core/core/health-check/index.js +9 -2
- package/.aios-core/core/health-check/reporters/console.js +1 -1
- package/.aios-core/core/health-check/reporters/index.js +1 -1
- package/.aios-core/core/health-check/reporters/json.js +1 -1
- package/.aios-core/core/health-check/reporters/markdown.js +1 -1
- package/.aios-core/core/ids/layer-classifier.js +65 -0
- package/.aios-core/core/ids/registry-updater.js +49 -0
- package/.aios-core/core/index.esm.js +1 -1
- package/.aios-core/core/index.js +1 -1
- package/.aios-core/core/session/context-detector.js +2 -7
- package/.aios-core/core/synapse/context/context-tracker.js +9 -1
- package/.aios-core/core/synapse/engine.js +33 -13
- package/.aios-core/core/synapse/memory/memory-bridge.js +17 -43
- package/.aios-core/core/synapse/memory/synapse-memory-provider.js +201 -0
- package/.aios-core/core/synapse/runtime/hook-runtime.js +40 -2
- package/.aios-core/core/synapse/session/session-manager.js +3 -2
- package/.aios-core/core/synapse/utils/atomic-write.js +79 -0
- package/.aios-core/core-config.yaml +34 -1
- package/.aios-core/data/aios-kb.md +2 -2
- package/.aios-core/data/capability-detection.js +290 -0
- package/.aios-core/data/entity-registry.yaml +10450 -2129
- package/.aios-core/data/mcp-discipline.js +166 -0
- package/.aios-core/data/mcp-tool-examples.yaml +215 -0
- package/.aios-core/data/tok2-validation.js +168 -0
- package/.aios-core/data/tok3-token-comparison.js +123 -0
- package/.aios-core/data/tool-registry.yaml +648 -0
- package/.aios-core/data/tool-search-validation.js +174 -0
- package/.aios-core/data/workflow-chains.yaml +156 -0
- package/.aios-core/development/agents/aios-master.md +17 -10
- package/.aios-core/development/agents/analyst/MEMORY.md +33 -0
- package/.aios-core/development/agents/analyst.md +17 -10
- package/.aios-core/development/agents/architect/MEMORY.md +39 -0
- package/.aios-core/development/agents/architect.md +17 -10
- package/.aios-core/development/agents/data-engineer/MEMORY.md +32 -0
- package/.aios-core/development/agents/data-engineer.md +17 -10
- package/.aios-core/development/agents/dev/MEMORY.md +46 -0
- package/.aios-core/development/agents/dev.md +18 -11
- package/.aios-core/development/agents/devops/MEMORY.md +39 -0
- package/.aios-core/development/agents/devops.md +44 -10
- package/.aios-core/development/agents/pm/MEMORY.md +38 -0
- package/.aios-core/development/agents/pm.md +17 -10
- package/.aios-core/development/agents/po/MEMORY.md +45 -0
- package/.aios-core/development/agents/po.md +17 -10
- package/.aios-core/development/agents/qa/MEMORY.md +42 -0
- package/.aios-core/development/agents/qa.md +18 -11
- package/.aios-core/development/agents/sm/MEMORY.md +31 -0
- package/.aios-core/development/agents/sm.md +17 -10
- package/.aios-core/development/agents/squad-creator.md +18 -9
- package/.aios-core/development/agents/ux/MEMORY.md +31 -0
- package/.aios-core/development/agents/ux-design-expert.md +16 -9
- package/.aios-core/development/checklists/issue-triage-checklist.md +35 -0
- package/.aios-core/development/checklists/memory-audit-checklist.md +53 -0
- package/.aios-core/development/scripts/issue-triage.js +171 -0
- package/.aios-core/development/scripts/populate-entity-registry.js +412 -19
- package/.aios-core/development/scripts/unified-activation-pipeline.js +31 -10
- package/.aios-core/development/tasks/analyze-project-structure.md +48 -0
- package/.aios-core/development/tasks/apply-qa-fixes.md +7 -0
- package/.aios-core/development/tasks/architect-analyze-impact.md +8 -1
- package/.aios-core/development/tasks/brownfield-create-epic.md +41 -0
- package/.aios-core/development/tasks/brownfield-create-story.md +7 -0
- package/.aios-core/development/tasks/build-autonomous.md +7 -0
- package/.aios-core/development/tasks/create-deep-research-prompt.md +7 -0
- package/.aios-core/development/tasks/create-doc.md +44 -0
- package/.aios-core/development/tasks/create-next-story.md +17 -0
- package/.aios-core/development/tasks/create-suite.md +7 -0
- package/.aios-core/development/tasks/dev-develop-story.md +9 -1
- package/.aios-core/development/tasks/execute-checklist.md +7 -0
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +56 -0
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +70 -0
- package/.aios-core/development/tasks/github-issue-triage.md +118 -0
- package/.aios-core/development/tasks/health-check.yaml +206 -171
- package/.aios-core/development/tasks/kb-mode-interaction.md +3 -3
- package/.aios-core/development/tasks/plan-create-context.md +47 -1
- package/.aios-core/development/tasks/plan-create-implementation.md +55 -0
- package/.aios-core/development/tasks/po-close-story.md +7 -0
- package/.aios-core/development/tasks/pr-automation.md +5 -5
- package/.aios-core/development/tasks/qa-create-fix-request.md +7 -0
- package/.aios-core/development/tasks/qa-fix-issues.md +7 -0
- package/.aios-core/development/tasks/qa-gate.md +56 -0
- package/.aios-core/development/tasks/qa-review-story.md +32 -1
- package/.aios-core/development/tasks/release-management.md +7 -0
- package/.aios-core/development/tasks/resolve-github-issue.md +608 -0
- package/.aios-core/development/tasks/review-contributor-pr.md +152 -0
- package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
- package/.aios-core/development/tasks/spec-critique.md +8 -0
- package/.aios-core/development/tasks/spec-gather-requirements.md +7 -0
- package/.aios-core/development/tasks/spec-research-dependencies.md +4 -0
- package/.aios-core/development/tasks/spec-write-spec.md +5 -0
- package/.aios-core/development/tasks/triage-github-issues.md +356 -0
- package/.aios-core/development/tasks/validate-agents.md +4 -0
- package/.aios-core/development/tasks/validate-next-story.md +17 -0
- package/.aios-core/development/templates/agent-handoff-tmpl.yaml +48 -0
- package/.aios-core/development/templates/code-intel-integration-pattern.md +199 -0
- package/.aios-core/development/templates/ptc-entity-validation.md +113 -0
- package/.aios-core/development/templates/ptc-qa-gate.md +100 -0
- package/.aios-core/development/templates/ptc-research-aggregation.md +94 -0
- package/.aios-core/development/templates/service-template/README.md.hbs +158 -158
- package/.aios-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -237
- package/.aios-core/development/templates/service-template/client.ts.hbs +403 -403
- package/.aios-core/development/templates/service-template/errors.ts.hbs +182 -182
- package/.aios-core/development/templates/service-template/index.ts.hbs +120 -120
- package/.aios-core/development/templates/service-template/package.json.hbs +87 -87
- package/.aios-core/development/templates/service-template/types.ts.hbs +145 -145
- package/.aios-core/development/templates/squad/agent-template.md +11 -0
- package/.aios-core/development/templates/squad/task-template.md +21 -0
- package/.aios-core/development/templates/squad-template/LICENSE +21 -21
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +1 -1
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1 -1
- package/.aios-core/framework-config.yaml +8 -0
- package/.aios-core/index.esm.js +1 -1
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/integrations/ai-providers/index.js +1 -1
- package/.aios-core/infrastructure/schemas/task-v3-schema.json +6 -0
- package/.aios-core/infrastructure/scripts/collect-tool-usage.js +311 -0
- package/.aios-core/infrastructure/scripts/generate-optimization-report.js +497 -0
- package/.aios-core/infrastructure/scripts/generate-settings-json.js +300 -0
- package/.aios-core/infrastructure/scripts/git-config-detector.js +65 -9
- package/.aios-core/infrastructure/scripts/ide-sync/index.js +3 -1
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/github-copilot.js +184 -0
- package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
- package/.aios-core/infrastructure/templates/aios-sync.yaml.template +182 -182
- package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -279
- package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
- package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
- package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -63
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
- package/.aios-core/install-manifest.yaml +613 -305
- package/.aios-core/lib/build.json +1 -0
- package/.aios-core/local-config.yaml.template +71 -71
- package/.aios-core/monitor/hooks/lib/__init__.py +1 -1
- package/.aios-core/monitor/hooks/lib/enrich.py +58 -58
- package/.aios-core/monitor/hooks/lib/send_event.py +47 -47
- package/.aios-core/monitor/hooks/notification.py +29 -29
- package/.aios-core/monitor/hooks/post_tool_use.py +45 -45
- package/.aios-core/monitor/hooks/pre_compact.py +29 -29
- package/.aios-core/monitor/hooks/pre_tool_use.py +40 -40
- package/.aios-core/monitor/hooks/stop.py +29 -29
- package/.aios-core/monitor/hooks/subagent_stop.py +29 -29
- package/.aios-core/monitor/hooks/user_prompt_submit.py +38 -38
- package/.aios-core/product/templates/adr.hbs +125 -125
- package/.aios-core/product/templates/dbdr.hbs +241 -241
- package/.aios-core/product/templates/epic.hbs +212 -212
- package/.aios-core/product/templates/ide-rules/claude-rules.md +125 -0
- package/.aios-core/product/templates/pmdr.hbs +186 -186
- package/.aios-core/product/templates/prd-v2.0.hbs +216 -216
- package/.aios-core/product/templates/prd.hbs +201 -201
- package/.aios-core/product/templates/story.hbs +263 -263
- package/.aios-core/product/templates/task.hbs +170 -170
- package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -158
- package/.aios-core/product/templates/tmpl-migration-script.sql +91 -91
- package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
- package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
- package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -135
- package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -77
- package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -152
- package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -77
- package/.aios-core/product/templates/tmpl-seed-data.sql +140 -140
- package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -16
- package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
- package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -140
- package/.aios-core/product/templates/tmpl-trigger.sql +152 -152
- package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -133
- package/.aios-core/product/templates/tmpl-view.sql +177 -177
- package/.aios-core/scripts/pm.sh +0 -0
- package/.aios-core/user-guide.md +15 -15
- package/.aios-core/utils/filters/constants.js +10 -0
- package/.aios-core/utils/filters/content-filter.js +223 -0
- package/.aios-core/utils/filters/field-filter.js +126 -0
- package/.aios-core/utils/filters/index.js +180 -0
- package/.aios-core/utils/filters/schema-filter.js +157 -0
- package/.claude/CLAUDE.md +62 -0
- package/.claude/hooks/enforce-architecture-first.py +196 -196
- package/.claude/hooks/enforce-git-push-authority.sh +33 -0
- package/.claude/hooks/mind-clone-governance.py +192 -192
- package/.claude/hooks/read-protection.py +151 -151
- package/.claude/hooks/slug-validation.py +176 -176
- package/.claude/hooks/sql-governance.py +182 -182
- package/.claude/hooks/synapse-engine.cjs +28 -5
- package/.claude/hooks/write-path-validation.py +194 -194
- package/.claude/rules/agent-authority.md +105 -0
- package/.claude/rules/agent-handoff.md +97 -0
- package/.claude/rules/agent-memory-imports.md +15 -0
- package/.claude/rules/coderabbit-integration.md +101 -0
- package/.claude/rules/ids-principles.md +119 -0
- package/.claude/rules/story-lifecycle.md +145 -0
- package/.claude/rules/tool-examples.md +64 -0
- package/.claude/rules/tool-response-filtering.md +57 -0
- package/.claude/rules/workflow-execution.md +150 -0
- package/LICENSE +33 -33
- package/bin/aios-graph.js +9 -0
- package/bin/aios-init.js +2 -2
- package/bin/aios-minimal.js +0 -0
- package/bin/aios.js +17 -221
- package/bin/utils/detect-fsmonitor.js +70 -0
- package/bin/utils/framework-guard.js +238 -0
- package/bin/utils/validate-publish.js +108 -0
- package/package.json +6 -3
- package/packages/aios-install/bin/aios-install.js +0 -0
- package/packages/aios-install/bin/edmcp.js +0 -0
- package/packages/aios-pro-cli/bin/aios-pro.js +2 -0
- package/packages/installer/src/config/templates/core-config-template.js +25 -0
- package/packages/installer/src/installer/brownfield-upgrader.js +68 -5
- package/packages/installer/src/merger/index.js +3 -0
- package/packages/installer/src/merger/strategies/index.js +6 -0
- package/packages/installer/src/merger/strategies/yaml-merger.js +181 -0
- package/packages/installer/src/updater/index.js +4 -4
- package/packages/installer/src/wizard/i18n.js +321 -3
- package/packages/installer/src/wizard/ide-config-generator.js +173 -25
- package/packages/installer/src/wizard/index.js +119 -1
- package/packages/installer/src/wizard/pro-setup.js +137 -121
- package/packages/installer/tests/unit/artifact-copy-pipeline/artifact-copy-pipeline.test.js +271 -0
- package/packages/installer/tests/unit/claude-md-template-v5/claude-md-template-v5.test.js +192 -0
- package/packages/installer/tests/unit/doctor/doctor-checks.test.js +610 -0
- package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +134 -0
- package/packages/installer/tests/unit/entity-registry-bootstrap.test.js +186 -0
- package/packages/installer/tests/unit/generate-settings-json/generate-settings-json.test.js +309 -0
- package/packages/installer/tests/unit/ide-sync-integration/ide-sync-integration.test.js +230 -0
- package/packages/installer/tests/unit/merger/strategies.test.js +2 -2
- package/packages/installer/tests/unit/merger/yaml-merger.test.js +327 -0
- package/scripts/check-markdown-links.py +352 -352
- package/scripts/dashboard-parallel-dev.sh +0 -0
- package/scripts/dashboard-parallel-phase3.sh +0 -0
- package/scripts/dashboard-parallel-phase4.sh +0 -0
- package/scripts/install-monitor-hooks.sh +0 -0
- package/scripts/package-synapse.js +2 -1
- package/pro/README.md +0 -66
- package/pro/license/degradation.js +0 -220
- package/pro/license/errors.js +0 -450
- package/pro/license/feature-gate.js +0 -354
- package/pro/license/index.js +0 -181
- package/pro/license/license-api.js +0 -651
- package/pro/license/license-cache.js +0 -523
- package/pro/license/license-crypto.js +0 -303
|
@@ -59,8 +59,108 @@ const TRANSLATIONS = {
|
|
|
59
59
|
// Cancellation
|
|
60
60
|
cancelConfirm: 'Cancel installation?',
|
|
61
61
|
cancelled: 'Installation cancelled.',
|
|
62
|
-
tryAgain: 'Run `npx
|
|
62
|
+
tryAgain: 'Run `npx aios-core init` to try again.',
|
|
63
63
|
continuing: 'Continuing installation...',
|
|
64
|
+
|
|
65
|
+
// Pro Installation Wizard (pro-setup.js)
|
|
66
|
+
proWizardTitle: 'AIOS Pro Installation Wizard',
|
|
67
|
+
proWizardSubtitle: 'Premium Content & Features',
|
|
68
|
+
proLicenseActivation: 'License Activation',
|
|
69
|
+
proContentInstallation: 'Pro Content Installation',
|
|
70
|
+
proVerification: 'Verification',
|
|
71
|
+
proHowActivate: 'How would you like to activate Pro?',
|
|
72
|
+
proLoginOrCreate: 'Login or create account (Recommended)',
|
|
73
|
+
proEnterKey: 'Enter license key (legacy)',
|
|
74
|
+
proEmailLabel: 'Email:',
|
|
75
|
+
proEmailRequired: 'Email is required',
|
|
76
|
+
proEmailInvalid: 'Please enter a valid email address',
|
|
77
|
+
proVerifyingAccess: 'Verifying your access...',
|
|
78
|
+
proNoAccess: 'No AIOS Pro access found for this email.',
|
|
79
|
+
proContactSupport: 'If you believe this is an error, please contact support:',
|
|
80
|
+
proPurchase: 'Purchase Pro: https://pro.synkra.ai',
|
|
81
|
+
proEmailNotBuyer: 'Email not found in Pro buyers list.',
|
|
82
|
+
proAccessConfirmedAccount: 'Pro access confirmed! Account found.',
|
|
83
|
+
proAccessConfirmedCreate: "Pro access confirmed! Let's create your account.",
|
|
84
|
+
proPasswordLabel: 'Password:',
|
|
85
|
+
proPasswordMin: 'Password must be at least {min} characters',
|
|
86
|
+
proAuthenticating: 'Authenticating...',
|
|
87
|
+
proAuthSuccess: 'Authenticated successfully.',
|
|
88
|
+
proEmailNotVerified: 'Email not verified yet. Please check your inbox and click the verification link.',
|
|
89
|
+
proCheckingEvery: '(Checking every 5 seconds... timeout in 10 minutes)',
|
|
90
|
+
proEmailVerified: 'Email verified!',
|
|
91
|
+
proVerificationTimeout: 'Email verification timed out after 10 minutes.',
|
|
92
|
+
proRunAgain: 'Run the installer again to retry.',
|
|
93
|
+
proIncorrectPassword: 'Incorrect password. {remaining} attempt(s) remaining.',
|
|
94
|
+
proMaxAttempts: 'Maximum login attempts reached.',
|
|
95
|
+
proForgotPassword: 'Forgot your password? Visit https://aios-license-server.vercel.app/reset-password',
|
|
96
|
+
proContactSupportEmail: 'Or open an issue: https://github.com/SynkraAI/aios-core/issues',
|
|
97
|
+
proAuthFailed: 'Authentication failed: {message}',
|
|
98
|
+
proCreateAccount: 'Create your AIOS Pro account to get started.',
|
|
99
|
+
proChoosePassword: 'Choose a password:',
|
|
100
|
+
proConfirmPassword: 'Confirm password:',
|
|
101
|
+
proPasswordsNoMatch: 'Passwords do not match',
|
|
102
|
+
proCreatingAccount: 'Creating account...',
|
|
103
|
+
proAccountCreated: 'Account created! Verification email sent.',
|
|
104
|
+
proAccountExists: 'Account already exists. Switching to login...',
|
|
105
|
+
proAccountFailed: 'Account creation failed: {message}',
|
|
106
|
+
proCheckEmail: 'Please check your email and click the verification link.',
|
|
107
|
+
proWaitingVerification: 'Waiting for email verification...',
|
|
108
|
+
proAfterVerifying: 'After verifying, the installation will continue automatically.',
|
|
109
|
+
proPressResend: '[Press R to resend verification email]',
|
|
110
|
+
proVerificationResent: 'Verification email resent.',
|
|
111
|
+
proCouldNotResend: 'Could not resend: {message}',
|
|
112
|
+
proRunAgainRetry: 'Run the installer again to retry verification.',
|
|
113
|
+
proValidatingSubscription: 'Validating Pro subscription...',
|
|
114
|
+
proSubscriptionConfirmed: 'Pro subscription confirmed! License: {key}',
|
|
115
|
+
proNoSubscription: 'No active Pro subscription found for this email.',
|
|
116
|
+
proPurchaseAt: 'Purchase Pro at https://pro.synkra.ai',
|
|
117
|
+
proSeatLimit: 'Deactivate another device or upgrade your license.',
|
|
118
|
+
proAlreadyActivated: 'Pro license already activated for this account.',
|
|
119
|
+
proActivationFailed: 'Activation failed: {message}',
|
|
120
|
+
proEnterKeyPrompt: 'Enter your Pro license key:',
|
|
121
|
+
proKeyRequired: 'License key is required',
|
|
122
|
+
proKeyInvalid: 'Invalid format. Expected: PRO-XXXX-XXXX-XXXX-XXXX',
|
|
123
|
+
proKeyValidated: 'License validated: {key}',
|
|
124
|
+
proModuleNotAvailable: 'Pro license module not available. Ensure @aios-fullstack/pro is installed.',
|
|
125
|
+
proServerUnreachable: 'License server is unreachable. Check your internet connection and try again.',
|
|
126
|
+
proVerifyingAccessShort: 'Verifying access...',
|
|
127
|
+
proAccessConfirmed: 'Pro access confirmed.',
|
|
128
|
+
proBuyerCheckUnavailable: 'Buyer check unavailable, proceeding with login...',
|
|
129
|
+
proLoginFailedSignup: 'Login failed, attempting signup...',
|
|
130
|
+
proAccountCreatedVerify: 'Account created. Verification email sent!',
|
|
131
|
+
proAccountExistsWrongPw: 'Account exists but the password is incorrect.',
|
|
132
|
+
proAuthFailedShort: 'Authentication failed.',
|
|
133
|
+
proValidatingKey: 'Validating license {key}...',
|
|
134
|
+
proInvalidKey: 'Invalid license key.',
|
|
135
|
+
proExpiredKey: 'License key has expired.',
|
|
136
|
+
proMaxActivations: 'Maximum activations reached for this key.',
|
|
137
|
+
proRateLimited: 'Too many requests. Please wait and try again.',
|
|
138
|
+
proValidationFailed: 'License validation failed: {message}',
|
|
139
|
+
proInvalidKeyFormat: 'Invalid key format: {key}. Expected: PRO-XXXX-XXXX-XXXX-XXXX',
|
|
140
|
+
proScaffolding: 'Scaffolding pro content...',
|
|
141
|
+
proScaffoldingProgress: 'Scaffolding: {message}',
|
|
142
|
+
proContentInstalled: 'Pro content installed ({count} files)',
|
|
143
|
+
proScaffoldFailed: 'Scaffolding failed',
|
|
144
|
+
proScaffoldError: 'Scaffolding error: {message}',
|
|
145
|
+
proInitPackageJson: 'Initializing package.json...',
|
|
146
|
+
proPackageJsonCreated: 'package.json created',
|
|
147
|
+
proPackageJsonFailed: 'Failed to create package.json',
|
|
148
|
+
proInstallingPackage: 'Installing @aios-fullstack/pro...',
|
|
149
|
+
proPackageInstalled: 'Pro package installed',
|
|
150
|
+
proPackageInstallFailed: 'Failed to install Pro package',
|
|
151
|
+
proScaffolderNotAvailable: 'Pro scaffolder not available. Ensure @aios-fullstack/pro is installed.',
|
|
152
|
+
proFilesInstalled: 'Files installed: {count}',
|
|
153
|
+
proSquads: 'Squads: {names}',
|
|
154
|
+
proConfigs: 'Configs: {count} files',
|
|
155
|
+
proFeaturesUnlocked: 'Features unlocked: {count}',
|
|
156
|
+
proInstallComplete: 'AIOS Pro installation complete!',
|
|
157
|
+
proNeedHelp: 'Need help? Run: npx aios-pro recover',
|
|
158
|
+
proCISetEnv: 'CI mode: Set AIOS_PRO_EMAIL + AIOS_PRO_PASSWORD or AIOS_PRO_KEY environment variables.',
|
|
159
|
+
proVerificationFailed: 'Verification failed: {message}',
|
|
160
|
+
proPackageNotFound: 'Pro package not found after npm install. Check npm output.',
|
|
161
|
+
proScaffolderNotFound: 'Pro scaffolder module not found.',
|
|
162
|
+
proNpmInitFailed: 'npm init failed: {message}',
|
|
163
|
+
proNpmInstallFailed: 'npm install @aios-fullstack/pro failed: {message}. Try manually: npm install @aios-fullstack/pro',
|
|
64
164
|
},
|
|
65
165
|
|
|
66
166
|
pt: {
|
|
@@ -116,8 +216,108 @@ const TRANSLATIONS = {
|
|
|
116
216
|
// Cancellation
|
|
117
217
|
cancelConfirm: 'Cancelar instalação?',
|
|
118
218
|
cancelled: 'Instalação cancelada.',
|
|
119
|
-
tryAgain: 'Execute `npx
|
|
219
|
+
tryAgain: 'Execute `npx aios-core init` para tentar novamente.',
|
|
120
220
|
continuing: 'Continuando instalação...',
|
|
221
|
+
|
|
222
|
+
// Pro Installation Wizard (pro-setup.js)
|
|
223
|
+
proWizardTitle: 'Assistente de Instalação AIOS Pro',
|
|
224
|
+
proWizardSubtitle: 'Conteúdo e Recursos Premium',
|
|
225
|
+
proLicenseActivation: 'Ativação de Licença',
|
|
226
|
+
proContentInstallation: 'Instalação do Conteúdo Pro',
|
|
227
|
+
proVerification: 'Verificação',
|
|
228
|
+
proHowActivate: 'Como você gostaria de ativar o Pro?',
|
|
229
|
+
proLoginOrCreate: 'Login ou criar conta (Recomendado)',
|
|
230
|
+
proEnterKey: 'Inserir chave de licença (legado)',
|
|
231
|
+
proEmailLabel: 'Email:',
|
|
232
|
+
proEmailRequired: 'Email é obrigatório',
|
|
233
|
+
proEmailInvalid: 'Por favor, insira um endereço de email válido',
|
|
234
|
+
proVerifyingAccess: 'Verificando seu acesso...',
|
|
235
|
+
proNoAccess: 'Nenhum acesso AIOS Pro encontrado para este email.',
|
|
236
|
+
proContactSupport: 'Se você acredita que isso é um erro, entre em contato com o suporte:',
|
|
237
|
+
proPurchase: 'Comprar Pro: https://pro.synkra.ai',
|
|
238
|
+
proEmailNotBuyer: 'Email não encontrado na lista de compradores Pro.',
|
|
239
|
+
proAccessConfirmedAccount: 'Acesso Pro confirmado! Conta encontrada.',
|
|
240
|
+
proAccessConfirmedCreate: 'Acesso Pro confirmado! Vamos criar sua conta.',
|
|
241
|
+
proPasswordLabel: 'Senha:',
|
|
242
|
+
proPasswordMin: 'A senha deve ter pelo menos {min} caracteres',
|
|
243
|
+
proAuthenticating: 'Autenticando...',
|
|
244
|
+
proAuthSuccess: 'Autenticado com sucesso.',
|
|
245
|
+
proEmailNotVerified: 'Email ainda não verificado. Verifique sua caixa de entrada e clique no link de verificação.',
|
|
246
|
+
proCheckingEvery: '(Verificando a cada 5 segundos... tempo limite de 10 minutos)',
|
|
247
|
+
proEmailVerified: 'Email verificado!',
|
|
248
|
+
proVerificationTimeout: 'Verificação de email expirou após 10 minutos.',
|
|
249
|
+
proRunAgain: 'Execute o instalador novamente para tentar.',
|
|
250
|
+
proIncorrectPassword: 'Senha incorreta. {remaining} tentativa(s) restante(s).',
|
|
251
|
+
proMaxAttempts: 'Número máximo de tentativas de login atingido.',
|
|
252
|
+
proForgotPassword: 'Esqueceu sua senha? Acesse https://aios-license-server.vercel.app/reset-password',
|
|
253
|
+
proContactSupportEmail: 'Ou abra uma issue: https://github.com/SynkraAI/aios-core/issues',
|
|
254
|
+
proAuthFailed: 'Falha na autenticação: {message}',
|
|
255
|
+
proCreateAccount: 'Crie sua conta AIOS Pro para começar.',
|
|
256
|
+
proChoosePassword: 'Escolha uma senha:',
|
|
257
|
+
proConfirmPassword: 'Confirme a senha:',
|
|
258
|
+
proPasswordsNoMatch: 'As senhas não correspondem',
|
|
259
|
+
proCreatingAccount: 'Criando conta...',
|
|
260
|
+
proAccountCreated: 'Conta criada! Email de verificação enviado.',
|
|
261
|
+
proAccountExists: 'Conta já existe. Mudando para login...',
|
|
262
|
+
proAccountFailed: 'Falha ao criar conta: {message}',
|
|
263
|
+
proCheckEmail: 'Por favor, verifique seu email e clique no link de verificação.',
|
|
264
|
+
proWaitingVerification: 'Aguardando verificação de email...',
|
|
265
|
+
proAfterVerifying: 'Após verificar, a instalação continuará automaticamente.',
|
|
266
|
+
proPressResend: '[Pressione R para reenviar email de verificação]',
|
|
267
|
+
proVerificationResent: 'Email de verificação reenviado.',
|
|
268
|
+
proCouldNotResend: 'Não foi possível reenviar: {message}',
|
|
269
|
+
proRunAgainRetry: 'Execute o instalador novamente para tentar a verificação.',
|
|
270
|
+
proValidatingSubscription: 'Validando assinatura Pro...',
|
|
271
|
+
proSubscriptionConfirmed: 'Assinatura Pro confirmada! Licença: {key}',
|
|
272
|
+
proNoSubscription: 'Nenhuma assinatura Pro ativa encontrada para este email.',
|
|
273
|
+
proPurchaseAt: 'Compre o Pro em https://pro.synkra.ai',
|
|
274
|
+
proSeatLimit: 'Desative outro dispositivo ou faça upgrade da sua licença.',
|
|
275
|
+
proAlreadyActivated: 'Licença Pro já ativada para esta conta.',
|
|
276
|
+
proActivationFailed: 'Falha na ativação: {message}',
|
|
277
|
+
proEnterKeyPrompt: 'Insira sua chave de licença Pro:',
|
|
278
|
+
proKeyRequired: 'Chave de licença é obrigatória',
|
|
279
|
+
proKeyInvalid: 'Formato inválido. Esperado: PRO-XXXX-XXXX-XXXX-XXXX',
|
|
280
|
+
proKeyValidated: 'Licença validada: {key}',
|
|
281
|
+
proModuleNotAvailable: 'Módulo de licença Pro não disponível. Certifique-se de que @aios-fullstack/pro está instalado.',
|
|
282
|
+
proServerUnreachable: 'Servidor de licenças inacessível. Verifique sua conexão com a internet e tente novamente.',
|
|
283
|
+
proVerifyingAccessShort: 'Verificando acesso...',
|
|
284
|
+
proAccessConfirmed: 'Acesso Pro confirmado.',
|
|
285
|
+
proBuyerCheckUnavailable: 'Verificação de comprador indisponível, prosseguindo com login...',
|
|
286
|
+
proLoginFailedSignup: 'Login falhou, tentando cadastro...',
|
|
287
|
+
proAccountCreatedVerify: 'Conta criada. Email de verificação enviado!',
|
|
288
|
+
proAccountExistsWrongPw: 'Conta existe mas a senha está incorreta.',
|
|
289
|
+
proAuthFailedShort: 'Falha na autenticação.',
|
|
290
|
+
proValidatingKey: 'Validando licença {key}...',
|
|
291
|
+
proInvalidKey: 'Chave de licença inválida.',
|
|
292
|
+
proExpiredKey: 'Chave de licença expirada.',
|
|
293
|
+
proMaxActivations: 'Número máximo de ativações atingido para esta chave.',
|
|
294
|
+
proRateLimited: 'Muitas requisições. Aguarde e tente novamente.',
|
|
295
|
+
proValidationFailed: 'Validação de licença falhou: {message}',
|
|
296
|
+
proInvalidKeyFormat: 'Formato de chave inválido: {key}. Esperado: PRO-XXXX-XXXX-XXXX-XXXX',
|
|
297
|
+
proScaffolding: 'Instalando conteúdo pro...',
|
|
298
|
+
proScaffoldingProgress: 'Instalando: {message}',
|
|
299
|
+
proContentInstalled: 'Conteúdo Pro instalado ({count} arquivos)',
|
|
300
|
+
proScaffoldFailed: 'Instalação falhou',
|
|
301
|
+
proScaffoldError: 'Erro na instalação: {message}',
|
|
302
|
+
proInitPackageJson: 'Inicializando package.json...',
|
|
303
|
+
proPackageJsonCreated: 'package.json criado',
|
|
304
|
+
proPackageJsonFailed: 'Falha ao criar package.json',
|
|
305
|
+
proInstallingPackage: 'Instalando @aios-fullstack/pro...',
|
|
306
|
+
proPackageInstalled: 'Pacote Pro instalado',
|
|
307
|
+
proPackageInstallFailed: 'Falha ao instalar pacote Pro',
|
|
308
|
+
proScaffolderNotAvailable: 'Scaffolder Pro não disponível. Certifique-se de que @aios-fullstack/pro está instalado.',
|
|
309
|
+
proFilesInstalled: 'Arquivos instalados: {count}',
|
|
310
|
+
proSquads: 'Squads: {names}',
|
|
311
|
+
proConfigs: 'Configs: {count} arquivos',
|
|
312
|
+
proFeaturesUnlocked: 'Recursos desbloqueados: {count}',
|
|
313
|
+
proInstallComplete: 'Instalação do AIOS Pro completa!',
|
|
314
|
+
proNeedHelp: 'Precisa de ajuda? Execute: npx aios-pro recover',
|
|
315
|
+
proCISetEnv: 'Modo CI: Defina as variáveis AIOS_PRO_EMAIL + AIOS_PRO_PASSWORD ou AIOS_PRO_KEY.',
|
|
316
|
+
proVerificationFailed: 'Verificação falhou: {message}',
|
|
317
|
+
proPackageNotFound: 'Pacote Pro não encontrado após npm install. Verifique a saída do npm.',
|
|
318
|
+
proScaffolderNotFound: 'Módulo scaffolder Pro não encontrado.',
|
|
319
|
+
proNpmInitFailed: 'npm init falhou: {message}',
|
|
320
|
+
proNpmInstallFailed: 'npm install @aios-fullstack/pro falhou: {message}. Tente manualmente: npm install @aios-fullstack/pro',
|
|
121
321
|
},
|
|
122
322
|
|
|
123
323
|
es: {
|
|
@@ -172,8 +372,108 @@ const TRANSLATIONS = {
|
|
|
172
372
|
// Cancellation
|
|
173
373
|
cancelConfirm: '¿Cancelar instalación?',
|
|
174
374
|
cancelled: 'Instalación cancelada.',
|
|
175
|
-
tryAgain: 'Ejecute `npx
|
|
375
|
+
tryAgain: 'Ejecute `npx aios-core init` para intentar nuevamente.',
|
|
176
376
|
continuing: 'Continuando instalación...',
|
|
377
|
+
|
|
378
|
+
// Pro Installation Wizard (pro-setup.js)
|
|
379
|
+
proWizardTitle: 'Asistente de Instalación AIOS Pro',
|
|
380
|
+
proWizardSubtitle: 'Contenido y Funciones Premium',
|
|
381
|
+
proLicenseActivation: 'Activación de Licencia',
|
|
382
|
+
proContentInstallation: 'Instalación del Contenido Pro',
|
|
383
|
+
proVerification: 'Verificación',
|
|
384
|
+
proHowActivate: '¿Cómo te gustaría activar Pro?',
|
|
385
|
+
proLoginOrCreate: 'Iniciar sesión o crear cuenta (Recomendado)',
|
|
386
|
+
proEnterKey: 'Ingresar clave de licencia (legado)',
|
|
387
|
+
proEmailLabel: 'Email:',
|
|
388
|
+
proEmailRequired: 'Email es obligatorio',
|
|
389
|
+
proEmailInvalid: 'Por favor, ingrese una dirección de email válida',
|
|
390
|
+
proVerifyingAccess: 'Verificando tu acceso...',
|
|
391
|
+
proNoAccess: 'No se encontró acceso AIOS Pro para este email.',
|
|
392
|
+
proContactSupport: 'Si cree que esto es un error, contacte al soporte:',
|
|
393
|
+
proPurchase: 'Comprar Pro: https://pro.synkra.ai',
|
|
394
|
+
proEmailNotBuyer: 'Email no encontrado en la lista de compradores Pro.',
|
|
395
|
+
proAccessConfirmedAccount: '¡Acceso Pro confirmado! Cuenta encontrada.',
|
|
396
|
+
proAccessConfirmedCreate: '¡Acceso Pro confirmado! Vamos a crear tu cuenta.',
|
|
397
|
+
proPasswordLabel: 'Contraseña:',
|
|
398
|
+
proPasswordMin: 'La contraseña debe tener al menos {min} caracteres',
|
|
399
|
+
proAuthenticating: 'Autenticando...',
|
|
400
|
+
proAuthSuccess: 'Autenticado exitosamente.',
|
|
401
|
+
proEmailNotVerified: 'Email aún no verificado. Revise su bandeja de entrada y haga clic en el enlace de verificación.',
|
|
402
|
+
proCheckingEvery: '(Verificando cada 5 segundos... tiempo límite de 10 minutos)',
|
|
403
|
+
proEmailVerified: '¡Email verificado!',
|
|
404
|
+
proVerificationTimeout: 'Verificación de email expiró después de 10 minutos.',
|
|
405
|
+
proRunAgain: 'Ejecute el instalador nuevamente para reintentar.',
|
|
406
|
+
proIncorrectPassword: 'Contraseña incorrecta. {remaining} intento(s) restante(s).',
|
|
407
|
+
proMaxAttempts: 'Número máximo de intentos de inicio de sesión alcanzado.',
|
|
408
|
+
proForgotPassword: '¿Olvidó su contraseña? Visite https://aios-license-server.vercel.app/reset-password',
|
|
409
|
+
proContactSupportEmail: 'O abra un issue: https://github.com/SynkraAI/aios-core/issues',
|
|
410
|
+
proAuthFailed: 'Error de autenticación: {message}',
|
|
411
|
+
proCreateAccount: 'Cree su cuenta AIOS Pro para comenzar.',
|
|
412
|
+
proChoosePassword: 'Elija una contraseña:',
|
|
413
|
+
proConfirmPassword: 'Confirme la contraseña:',
|
|
414
|
+
proPasswordsNoMatch: 'Las contraseñas no coinciden',
|
|
415
|
+
proCreatingAccount: 'Creando cuenta...',
|
|
416
|
+
proAccountCreated: '¡Cuenta creada! Email de verificación enviado.',
|
|
417
|
+
proAccountExists: 'La cuenta ya existe. Cambiando a inicio de sesión...',
|
|
418
|
+
proAccountFailed: 'Error al crear la cuenta: {message}',
|
|
419
|
+
proCheckEmail: 'Por favor, revise su email y haga clic en el enlace de verificación.',
|
|
420
|
+
proWaitingVerification: 'Esperando verificación de email...',
|
|
421
|
+
proAfterVerifying: 'Después de verificar, la instalación continuará automáticamente.',
|
|
422
|
+
proPressResend: '[Presione R para reenviar email de verificación]',
|
|
423
|
+
proVerificationResent: 'Email de verificación reenviado.',
|
|
424
|
+
proCouldNotResend: 'No se pudo reenviar: {message}',
|
|
425
|
+
proRunAgainRetry: 'Ejecute el instalador nuevamente para reintentar la verificación.',
|
|
426
|
+
proValidatingSubscription: 'Validando suscripción Pro...',
|
|
427
|
+
proSubscriptionConfirmed: '¡Suscripción Pro confirmada! Licencia: {key}',
|
|
428
|
+
proNoSubscription: 'No se encontró suscripción Pro activa para este email.',
|
|
429
|
+
proPurchaseAt: 'Compre Pro en https://pro.synkra.ai',
|
|
430
|
+
proSeatLimit: 'Desactive otro dispositivo o actualice su licencia.',
|
|
431
|
+
proAlreadyActivated: 'Licencia Pro ya activada para esta cuenta.',
|
|
432
|
+
proActivationFailed: 'Error de activación: {message}',
|
|
433
|
+
proEnterKeyPrompt: 'Ingrese su clave de licencia Pro:',
|
|
434
|
+
proKeyRequired: 'Clave de licencia es obligatoria',
|
|
435
|
+
proKeyInvalid: 'Formato inválido. Esperado: PRO-XXXX-XXXX-XXXX-XXXX',
|
|
436
|
+
proKeyValidated: 'Licencia validada: {key}',
|
|
437
|
+
proModuleNotAvailable: 'Módulo de licencia Pro no disponible. Asegúrese de que @aios-fullstack/pro esté instalado.',
|
|
438
|
+
proServerUnreachable: 'Servidor de licencias inaccesible. Verifique su conexión a internet e intente nuevamente.',
|
|
439
|
+
proVerifyingAccessShort: 'Verificando acceso...',
|
|
440
|
+
proAccessConfirmed: 'Acceso Pro confirmado.',
|
|
441
|
+
proBuyerCheckUnavailable: 'Verificación de comprador no disponible, procediendo con inicio de sesión...',
|
|
442
|
+
proLoginFailedSignup: 'Inicio de sesión fallido, intentando registro...',
|
|
443
|
+
proAccountCreatedVerify: 'Cuenta creada. ¡Email de verificación enviado!',
|
|
444
|
+
proAccountExistsWrongPw: 'La cuenta existe pero la contraseña es incorrecta.',
|
|
445
|
+
proAuthFailedShort: 'Error de autenticación.',
|
|
446
|
+
proValidatingKey: 'Validando licencia {key}...',
|
|
447
|
+
proInvalidKey: 'Clave de licencia inválida.',
|
|
448
|
+
proExpiredKey: 'Clave de licencia expirada.',
|
|
449
|
+
proMaxActivations: 'Número máximo de activaciones alcanzado para esta clave.',
|
|
450
|
+
proRateLimited: 'Demasiadas solicitudes. Espere e intente nuevamente.',
|
|
451
|
+
proValidationFailed: 'Validación de licencia fallida: {message}',
|
|
452
|
+
proInvalidKeyFormat: 'Formato de clave inválido: {key}. Esperado: PRO-XXXX-XXXX-XXXX-XXXX',
|
|
453
|
+
proScaffolding: 'Instalando contenido pro...',
|
|
454
|
+
proScaffoldingProgress: 'Instalando: {message}',
|
|
455
|
+
proContentInstalled: 'Contenido Pro instalado ({count} archivos)',
|
|
456
|
+
proScaffoldFailed: 'Instalación fallida',
|
|
457
|
+
proScaffoldError: 'Error de instalación: {message}',
|
|
458
|
+
proInitPackageJson: 'Inicializando package.json...',
|
|
459
|
+
proPackageJsonCreated: 'package.json creado',
|
|
460
|
+
proPackageJsonFailed: 'Error al crear package.json',
|
|
461
|
+
proInstallingPackage: 'Instalando @aios-fullstack/pro...',
|
|
462
|
+
proPackageInstalled: 'Paquete Pro instalado',
|
|
463
|
+
proPackageInstallFailed: 'Error al instalar paquete Pro',
|
|
464
|
+
proScaffolderNotAvailable: 'Scaffolder Pro no disponible. Asegúrese de que @aios-fullstack/pro esté instalado.',
|
|
465
|
+
proFilesInstalled: 'Archivos instalados: {count}',
|
|
466
|
+
proSquads: 'Squads: {names}',
|
|
467
|
+
proConfigs: 'Configs: {count} archivos',
|
|
468
|
+
proFeaturesUnlocked: 'Funciones desbloqueadas: {count}',
|
|
469
|
+
proInstallComplete: '¡Instalación de AIOS Pro completa!',
|
|
470
|
+
proNeedHelp: '¿Necesita ayuda? Ejecute: npx aios-pro recover',
|
|
471
|
+
proCISetEnv: 'Modo CI: Configure las variables AIOS_PRO_EMAIL + AIOS_PRO_PASSWORD o AIOS_PRO_KEY.',
|
|
472
|
+
proVerificationFailed: 'Verificación fallida: {message}',
|
|
473
|
+
proPackageNotFound: 'Paquete Pro no encontrado después de npm install. Verifique la salida de npm.',
|
|
474
|
+
proScaffolderNotFound: 'Módulo scaffolder Pro no encontrado.',
|
|
475
|
+
proNpmInitFailed: 'npm init falló: {message}',
|
|
476
|
+
proNpmInstallFailed: 'npm install @aios-fullstack/pro falló: {message}. Intente manualmente: npm install @aios-fullstack/pro',
|
|
177
477
|
},
|
|
178
478
|
};
|
|
179
479
|
|
|
@@ -207,6 +507,23 @@ function t(key) {
|
|
|
207
507
|
return TRANSLATIONS[currentLanguage][key] || TRANSLATIONS['en'][key] || key;
|
|
208
508
|
}
|
|
209
509
|
|
|
510
|
+
/**
|
|
511
|
+
* Get translated string with placeholder substitution.
|
|
512
|
+
* Placeholders use {name} syntax.
|
|
513
|
+
*
|
|
514
|
+
* @param {string} key - Translation key
|
|
515
|
+
* @param {Object} [params={}] - Placeholder values
|
|
516
|
+
* @returns {string} Translated string with substitutions
|
|
517
|
+
* @example tf('proIncorrectPassword', { remaining: 2 })
|
|
518
|
+
*/
|
|
519
|
+
function tf(key, params = {}) {
|
|
520
|
+
let str = t(key);
|
|
521
|
+
for (const [k, v] of Object.entries(params)) {
|
|
522
|
+
str = str.replace(new RegExp(`\\{${k}\\}`, 'g'), String(v));
|
|
523
|
+
}
|
|
524
|
+
return str;
|
|
525
|
+
}
|
|
526
|
+
|
|
210
527
|
/**
|
|
211
528
|
* Get language selection choices
|
|
212
529
|
* @returns {Array} Inquirer choices
|
|
@@ -223,6 +540,7 @@ module.exports = {
|
|
|
223
540
|
setLanguage,
|
|
224
541
|
getLanguage,
|
|
225
542
|
t,
|
|
543
|
+
tf,
|
|
226
544
|
getLanguageChoices,
|
|
227
545
|
TRANSLATIONS,
|
|
228
546
|
};
|
|
@@ -253,6 +253,23 @@ async function copyAgentFiles(projectRoot, agentFolder, ideConfig = null) {
|
|
|
253
253
|
const agentTargetPath = path.join(agentsDir, file);
|
|
254
254
|
await fs.copy(sourcePath, agentTargetPath);
|
|
255
255
|
copiedFiles.push(agentTargetPath);
|
|
256
|
+
} else if (ideConfig && ideConfig.agentFolder && ideConfig.agentFolder.includes('.github')) {
|
|
257
|
+
// GitHub Copilot: apply transformer for .agent.md format with YAML frontmatter
|
|
258
|
+
try {
|
|
259
|
+
const agentParser = require('../../../../.aios-core/infrastructure/scripts/ide-sync/agent-parser');
|
|
260
|
+
const copilotTransformer = require('../../../../.aios-core/infrastructure/scripts/ide-sync/transformers/github-copilot');
|
|
261
|
+
const agentData = agentParser.parseAgentFile(sourcePath);
|
|
262
|
+
const content = copilotTransformer.transform(agentData);
|
|
263
|
+
const filename = copilotTransformer.getFilename(agentData);
|
|
264
|
+
const targetPath = path.join(targetDir, filename);
|
|
265
|
+
await fs.writeFile(targetPath, content, 'utf8');
|
|
266
|
+
copiedFiles.push(targetPath);
|
|
267
|
+
} catch (transformError) {
|
|
268
|
+
// Fallback: copy raw file with .agent.md extension
|
|
269
|
+
const targetPath = path.join(targetDir, `${agentName}.agent.md`);
|
|
270
|
+
await fs.copy(sourcePath, targetPath);
|
|
271
|
+
copiedFiles.push(targetPath);
|
|
272
|
+
}
|
|
256
273
|
} else {
|
|
257
274
|
// Normal copy for other IDEs
|
|
258
275
|
const targetPath = path.join(targetDir, file);
|
|
@@ -535,7 +552,7 @@ async function generateIDEConfigs(selectedIDEs, wizardState, options = {}) {
|
|
|
535
552
|
const settingsFile = await createClaudeSettingsLocal(projectRoot);
|
|
536
553
|
if (settingsFile) {
|
|
537
554
|
createdFiles.push(settingsFile);
|
|
538
|
-
spinner.succeed('Created .claude/settings.local.json with
|
|
555
|
+
spinner.succeed('Created .claude/settings.local.json with registered hooks');
|
|
539
556
|
} else {
|
|
540
557
|
spinner.info('Skipped settings.local.json (no hooks to register)');
|
|
541
558
|
}
|
|
@@ -692,23 +709,22 @@ async function copyClaudeHooksFolder(projectRoot) {
|
|
|
692
709
|
*/
|
|
693
710
|
async function createClaudeSettingsLocal(projectRoot) {
|
|
694
711
|
const settingsPath = path.join(projectRoot, '.claude', 'settings.local.json');
|
|
695
|
-
const
|
|
712
|
+
const hooksDir = path.join(projectRoot, '.claude', 'hooks');
|
|
696
713
|
|
|
697
|
-
// Only create if
|
|
698
|
-
if (!await fs.pathExists(
|
|
714
|
+
// Only create if hooks directory exists
|
|
715
|
+
if (!await fs.pathExists(hooksDir)) {
|
|
699
716
|
return null;
|
|
700
717
|
}
|
|
701
718
|
|
|
702
|
-
//
|
|
703
|
-
|
|
704
|
-
const
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
};
|
|
719
|
+
// Find all .cjs hook files dynamically (Story INS-4.3, Gap #13)
|
|
720
|
+
const allFiles = await fs.readdir(hooksDir);
|
|
721
|
+
const hookFiles = allFiles.filter(f => f.endsWith('.cjs'));
|
|
722
|
+
|
|
723
|
+
if (hookFiles.length === 0) {
|
|
724
|
+
return null;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
const isWindows = process.platform === 'win32';
|
|
712
728
|
|
|
713
729
|
let settings = {};
|
|
714
730
|
|
|
@@ -732,18 +748,36 @@ async function createClaudeSettingsLocal(projectRoot) {
|
|
|
732
748
|
settings.hooks.UserPromptSubmit = [];
|
|
733
749
|
}
|
|
734
750
|
|
|
735
|
-
//
|
|
736
|
-
const
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
751
|
+
// Register each .cjs hook file
|
|
752
|
+
for (const hookFileName of hookFiles) {
|
|
753
|
+
const hookFilePath = path.join(hooksDir, hookFileName);
|
|
754
|
+
|
|
755
|
+
// QA-C1 fix: Use correct Claude Code nested hook format
|
|
756
|
+
// Windows workaround: $CLAUDE_PROJECT_DIR has known bug on Windows (GH #6023/#5814)
|
|
757
|
+
const hookCommand = isWindows
|
|
758
|
+
? `node "${hookFilePath.replace(/\\/g, '\\\\')}"` // Absolute path with escaped backslashes
|
|
759
|
+
: `node "$CLAUDE_PROJECT_DIR/.claude/hooks/${hookFileName}"`;
|
|
760
|
+
|
|
761
|
+
// Check if this hook is already registered (supports both nested and flat formats)
|
|
762
|
+
const hookBaseName = hookFileName.replace('.cjs', '');
|
|
763
|
+
const alreadyRegistered = settings.hooks.UserPromptSubmit.some(entry => {
|
|
764
|
+
if (Array.isArray(entry.hooks)) {
|
|
765
|
+
return entry.hooks.some(h => h.command && h.command.includes(hookBaseName));
|
|
766
|
+
}
|
|
767
|
+
return entry.command && entry.command.includes(hookBaseName);
|
|
768
|
+
});
|
|
744
769
|
|
|
745
|
-
|
|
746
|
-
|
|
770
|
+
if (!alreadyRegistered) {
|
|
771
|
+
settings.hooks.UserPromptSubmit.push({
|
|
772
|
+
hooks: [
|
|
773
|
+
{
|
|
774
|
+
type: 'command',
|
|
775
|
+
command: hookCommand,
|
|
776
|
+
timeout: 10,
|
|
777
|
+
},
|
|
778
|
+
],
|
|
779
|
+
});
|
|
780
|
+
}
|
|
747
781
|
}
|
|
748
782
|
|
|
749
783
|
try {
|
|
@@ -975,6 +1009,118 @@ async function linkGeminiExtension(projectRoot) {
|
|
|
975
1009
|
return { status: 'skipped', reason: 'link-failed' };
|
|
976
1010
|
}
|
|
977
1011
|
|
|
1012
|
+
/**
|
|
1013
|
+
* Copy .claude/skills/ directories during installation (Story INS-4.3, Gap #11)
|
|
1014
|
+
* @param {string} projectRoot - Project root directory
|
|
1015
|
+
* @param {string} [_sourceRoot] - Override source root for testing (default: __dirname-relative)
|
|
1016
|
+
* @returns {Promise<{count: number, skipped: boolean}>} Copy result
|
|
1017
|
+
*/
|
|
1018
|
+
async function copySkillFiles(projectRoot, _sourceRoot) {
|
|
1019
|
+
const sourceDir = _sourceRoot
|
|
1020
|
+
? path.join(_sourceRoot, '.claude', 'skills')
|
|
1021
|
+
: path.join(__dirname, '..', '..', '..', '..', '.claude', 'skills');
|
|
1022
|
+
const targetDir = path.join(projectRoot, '.claude', 'skills');
|
|
1023
|
+
|
|
1024
|
+
if (!await fs.pathExists(sourceDir)) {
|
|
1025
|
+
return { count: 0, skipped: true };
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
// Guard source === dest (framework-dev mode)
|
|
1029
|
+
if (path.resolve(sourceDir) === path.resolve(targetDir)) {
|
|
1030
|
+
return { count: 0, skipped: true };
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
await fs.ensureDir(targetDir);
|
|
1034
|
+
|
|
1035
|
+
const entries = await fs.readdir(sourceDir, { withFileTypes: true });
|
|
1036
|
+
const skillDirs = entries.filter(d => d.isDirectory());
|
|
1037
|
+
let count = 0;
|
|
1038
|
+
|
|
1039
|
+
for (const dir of skillDirs) {
|
|
1040
|
+
const sourcePath = path.join(sourceDir, dir.name);
|
|
1041
|
+
const targetPath = path.join(targetDir, dir.name);
|
|
1042
|
+
await fs.copy(sourcePath, targetPath, { overwrite: true });
|
|
1043
|
+
count++;
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
return { count, skipped: false };
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
/**
|
|
1050
|
+
* Copy extra .claude/commands/ files during installation (Story INS-4.3, Gap #12)
|
|
1051
|
+
* Uses an allowlist of distributable top-level directories to prevent leaking
|
|
1052
|
+
* private squads or project-specific content into installed projects.
|
|
1053
|
+
* @param {string} projectRoot - Project root directory
|
|
1054
|
+
* @param {string} [_sourceRoot] - Override source root for testing (default: __dirname-relative)
|
|
1055
|
+
* @returns {Promise<{count: number, skipped: boolean}>} Copy result
|
|
1056
|
+
*/
|
|
1057
|
+
async function copyExtraCommandFiles(projectRoot, _sourceRoot) {
|
|
1058
|
+
const sourceDir = _sourceRoot
|
|
1059
|
+
? path.join(_sourceRoot, '.claude', 'commands')
|
|
1060
|
+
: path.join(__dirname, '..', '..', '..', '..', '.claude', 'commands');
|
|
1061
|
+
const targetDir = path.join(projectRoot, '.claude', 'commands');
|
|
1062
|
+
|
|
1063
|
+
if (!await fs.pathExists(sourceDir)) {
|
|
1064
|
+
return { count: 0, skipped: true };
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
// Guard source === dest (framework-dev mode)
|
|
1068
|
+
if (path.resolve(sourceDir) === path.resolve(targetDir)) {
|
|
1069
|
+
return { count: 0, skipped: true };
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
// Allowlist: only these top-level entries are distributable.
|
|
1073
|
+
// Squad commands (cohort-squad/, design-system/, squad-creator-pro/, etc.)
|
|
1074
|
+
// are private and must NOT be copied to installed projects.
|
|
1075
|
+
const DISTRIBUTABLE_ENTRIES = new Set([
|
|
1076
|
+
'AIOS', // Core agent/script commands (agents/ sub-dir excluded below)
|
|
1077
|
+
'synapse', // SYNAPSE context engine commands
|
|
1078
|
+
'greet.md', // Greeting skill
|
|
1079
|
+
]);
|
|
1080
|
+
|
|
1081
|
+
// Within AIOS/, these sub-dirs are excluded (private or handled separately)
|
|
1082
|
+
const AIOS_EXCLUDED = new Set([
|
|
1083
|
+
'AIOS/agents', // Already handled by copyAgentFiles()
|
|
1084
|
+
'AIOS/stories', // Project-specific story skills, not distributable
|
|
1085
|
+
]);
|
|
1086
|
+
|
|
1087
|
+
await fs.ensureDir(targetDir);
|
|
1088
|
+
|
|
1089
|
+
let count = 0;
|
|
1090
|
+
|
|
1091
|
+
async function copyRecursive(src, dest, relativePath) {
|
|
1092
|
+
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
1093
|
+
|
|
1094
|
+
for (const entry of entries) {
|
|
1095
|
+
const entryRelative = relativePath ? `${relativePath}/${entry.name}` : entry.name;
|
|
1096
|
+
|
|
1097
|
+
// At top level, only copy distributable entries
|
|
1098
|
+
if (!relativePath && !DISTRIBUTABLE_ENTRIES.has(entry.name)) {
|
|
1099
|
+
continue;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
// Within AIOS/, skip excluded sub-directories
|
|
1103
|
+
if (AIOS_EXCLUDED.has(entryRelative) || [...AIOS_EXCLUDED].some(ex => entryRelative.startsWith(ex + '/'))) {
|
|
1104
|
+
continue;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
const sourcePath = path.join(src, entry.name);
|
|
1108
|
+
const targetPath = path.join(dest, entry.name);
|
|
1109
|
+
|
|
1110
|
+
if (entry.isDirectory()) {
|
|
1111
|
+
await fs.ensureDir(targetPath);
|
|
1112
|
+
await copyRecursive(sourcePath, targetPath, entryRelative);
|
|
1113
|
+
} else if (entry.name.endsWith('.md')) {
|
|
1114
|
+
await fs.copy(sourcePath, targetPath, { overwrite: true });
|
|
1115
|
+
count++;
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
await copyRecursive(sourceDir, targetDir, '');
|
|
1121
|
+
return { count, skipped: false };
|
|
1122
|
+
}
|
|
1123
|
+
|
|
978
1124
|
module.exports = {
|
|
979
1125
|
generateIDEConfigs,
|
|
980
1126
|
showSuccessSummary,
|
|
@@ -985,6 +1131,8 @@ module.exports = {
|
|
|
985
1131
|
generateTemplateVariables,
|
|
986
1132
|
copyClaudeHooksFolder,
|
|
987
1133
|
createClaudeSettingsLocal,
|
|
1134
|
+
copySkillFiles,
|
|
1135
|
+
copyExtraCommandFiles,
|
|
988
1136
|
copyGeminiHooksFolder,
|
|
989
1137
|
createGeminiSettings,
|
|
990
1138
|
linkGeminiExtension,
|