aios-core 2.1.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/.session/current-session.json +14 -0
- package/.aios-core/cli/commands/generate/index.js +222 -0
- package/.aios-core/cli/commands/manifest/index.js +46 -0
- package/.aios-core/cli/commands/manifest/regenerate.js +96 -0
- package/.aios-core/cli/commands/manifest/validate.js +66 -0
- package/.aios-core/cli/commands/mcp/add.js +234 -0
- package/.aios-core/cli/commands/mcp/index.js +76 -0
- package/.aios-core/cli/commands/mcp/link.js +217 -0
- package/.aios-core/cli/commands/mcp/setup.js +164 -0
- package/.aios-core/cli/commands/mcp/status.js +183 -0
- package/.aios-core/cli/commands/metrics/cleanup.js +91 -0
- package/.aios-core/cli/commands/metrics/index.js +65 -0
- package/.aios-core/cli/commands/metrics/record.js +154 -0
- package/.aios-core/cli/commands/metrics/seed.js +126 -0
- package/.aios-core/cli/commands/metrics/show.js +209 -0
- package/.aios-core/cli/commands/migrate/analyze.js +353 -0
- package/.aios-core/cli/commands/migrate/backup.js +352 -0
- package/.aios-core/cli/commands/migrate/execute.js +292 -0
- package/.aios-core/cli/commands/migrate/index.js +441 -0
- package/.aios-core/cli/commands/migrate/rollback.js +323 -0
- package/.aios-core/cli/commands/migrate/update-imports.js +396 -0
- package/.aios-core/cli/commands/migrate/validate.js +452 -0
- package/.aios-core/cli/commands/qa/index.js +56 -0
- package/.aios-core/cli/commands/qa/run.js +163 -0
- package/.aios-core/cli/commands/qa/status.js +195 -0
- package/.aios-core/cli/commands/workers/formatters/info-formatter.js +274 -0
- package/.aios-core/cli/commands/workers/formatters/list-table.js +265 -0
- package/.aios-core/cli/commands/workers/formatters/list-tree.js +159 -0
- package/.aios-core/cli/commands/workers/index.js +56 -0
- package/.aios-core/cli/commands/workers/info.js +194 -0
- package/.aios-core/cli/commands/workers/list.js +214 -0
- package/.aios-core/cli/commands/workers/search-filters.js +185 -0
- package/.aios-core/cli/commands/workers/search-keyword.js +310 -0
- package/.aios-core/cli/commands/workers/search-semantic.js +293 -0
- package/.aios-core/cli/commands/workers/search.js +154 -0
- package/.aios-core/cli/commands/workers/utils/pagination.js +102 -0
- package/.aios-core/cli/index.js +128 -0
- package/.aios-core/cli/utils/output-formatter-cli.js +232 -0
- package/.aios-core/cli/utils/score-calculator.js +221 -0
- package/.aios-core/core/README.md +229 -0
- package/.aios-core/core/config/config-cache.js +233 -0
- package/.aios-core/core/config/config-loader.js +277 -0
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/core/data/aios-kb.md +924 -0
- package/.aios-core/core/data/workflow-patterns.yaml +267 -0
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
- package/.aios-core/core/docs/component-creation-guide.md +458 -0
- package/.aios-core/core/docs/session-update-pattern.md +307 -0
- package/.aios-core/core/docs/template-syntax.md +267 -0
- package/.aios-core/core/docs/troubleshooting-guide.md +625 -0
- package/.aios-core/core/elicitation/agent-elicitation.js +272 -0
- package/.aios-core/core/elicitation/elicitation-engine.js +479 -0
- package/.aios-core/core/elicitation/session-manager.js +320 -0
- package/.aios-core/core/elicitation/task-elicitation.js +281 -0
- package/.aios-core/core/elicitation/workflow-elicitation.js +315 -0
- package/.aios-core/core/index.esm.js +42 -0
- package/.aios-core/core/index.js +76 -0
- package/.aios-core/core/manifest/manifest-generator.js +386 -0
- package/.aios-core/core/manifest/manifest-validator.js +429 -0
- package/.aios-core/core/mcp/config-migrator.js +340 -0
- package/.aios-core/core/mcp/global-config-manager.js +369 -0
- package/.aios-core/core/mcp/index.js +34 -0
- package/.aios-core/core/mcp/os-detector.js +188 -0
- package/.aios-core/core/mcp/symlink-manager.js +413 -0
- package/.aios-core/core/migration/migration-config.yaml +83 -0
- package/.aios-core/core/migration/module-mapping.yaml +89 -0
- package/.aios-core/core/quality-gates/base-layer.js +134 -0
- package/.aios-core/core/quality-gates/checklist-generator.js +329 -0
- package/.aios-core/core/quality-gates/focus-area-recommender.js +359 -0
- package/.aios-core/core/quality-gates/human-review-orchestrator.js +529 -0
- package/.aios-core/core/quality-gates/layer1-precommit.js +336 -0
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +324 -0
- package/.aios-core/core/quality-gates/layer3-human-review.js +348 -0
- package/.aios-core/core/quality-gates/notification-manager.js +550 -0
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -0
- package/.aios-core/core/quality-gates/quality-gate-manager.js +601 -0
- package/.aios-core/core/registry/README.md +179 -0
- package/.aios-core/core/registry/build-registry.js +452 -0
- package/.aios-core/core/registry/registry-loader.js +330 -0
- package/.aios-core/core/registry/registry-schema.json +166 -0
- package/.aios-core/core/registry/service-registry.json +6586 -0
- package/.aios-core/core/registry/validate-registry.js +340 -0
- package/.aios-core/core/session/context-detector.js +229 -0
- package/.aios-core/core/session/context-loader.js +288 -0
- package/.aios-core/core/utils/output-formatter.js +298 -0
- package/.aios-core/core/utils/security-utils.js +333 -0
- package/.aios-core/core/utils/yaml-validator.js +419 -0
- package/.aios-core/core-config.yaml +382 -0
- package/.aios-core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/data/aios-kb.md +924 -0
- package/.aios-core/data/technical-preferences.md +4 -0
- package/.aios-core/data/workflow-patterns.yaml +267 -0
- package/.aios-core/development/README.md +142 -0
- package/.aios-core/development/agent-teams/team-all.yaml +15 -0
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -0
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -0
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -0
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -0
- package/.aios-core/development/agents/aios-master.md +339 -0
- package/.aios-core/development/agents/analyst.md +195 -0
- package/.aios-core/development/agents/architect.md +359 -0
- package/.aios-core/development/agents/data-engineer.md +468 -0
- package/.aios-core/development/agents/dev.md +390 -0
- package/.aios-core/development/agents/devops.md +398 -0
- package/.aios-core/development/agents/pm.md +198 -0
- package/.aios-core/development/agents/po.md +256 -0
- package/.aios-core/development/agents/qa.md +312 -0
- package/.aios-core/development/agents/sm.md +220 -0
- package/.aios-core/development/agents/ux-design-expert.md +451 -0
- package/.aios-core/development/scripts/agent-assignment-resolver.js +231 -0
- package/.aios-core/development/scripts/agent-config-loader.js +624 -0
- package/.aios-core/development/scripts/agent-exit-hooks.js +96 -0
- package/.aios-core/development/scripts/apply-inline-greeting-all-agents.js +146 -0
- package/.aios-core/development/scripts/audit-agent-config.js +380 -0
- package/.aios-core/development/scripts/backlog-manager.js +404 -0
- package/.aios-core/development/scripts/batch-update-agents-session-context.js +95 -0
- package/.aios-core/development/scripts/decision-context.js +228 -0
- package/.aios-core/development/scripts/decision-log-generator.js +293 -0
- package/.aios-core/development/scripts/decision-log-indexer.js +284 -0
- package/.aios-core/development/scripts/decision-recorder.js +168 -0
- package/.aios-core/development/scripts/dev-context-loader.js +297 -0
- package/.aios-core/development/scripts/generate-greeting.js +160 -0
- package/.aios-core/development/scripts/greeting-builder.js +866 -0
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -0
- package/.aios-core/development/scripts/greeting-preference-manager.js +145 -0
- package/.aios-core/development/scripts/migrate-task-to-v2.js +377 -0
- package/.aios-core/development/scripts/story-index-generator.js +337 -0
- package/.aios-core/development/scripts/story-manager.js +375 -0
- package/.aios-core/development/scripts/story-update-hook.js +259 -0
- package/.aios-core/development/scripts/task-identifier-resolver.js +145 -0
- package/.aios-core/development/scripts/test-greeting-system.js +142 -0
- package/.aios-core/development/scripts/validate-task-v2.js +319 -0
- package/.aios-core/development/scripts/workflow-navigator.js +214 -0
- package/.aios-core/development/tasks/add-mcp.md +319 -0
- package/.aios-core/development/tasks/advanced-elicitation.md +319 -0
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +342 -0
- package/.aios-core/development/tasks/analyze-framework.md +697 -0
- package/.aios-core/development/tasks/analyze-performance.md +637 -0
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -0
- package/.aios-core/development/tasks/architect-analyze-impact.md +827 -0
- package/.aios-core/development/tasks/audit-codebase.md +429 -0
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -0
- package/.aios-core/development/tasks/audit-utilities.md +358 -0
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -0
- package/.aios-core/development/tasks/brownfield-create-epic.md +486 -0
- package/.aios-core/development/tasks/brownfield-create-story.md +357 -0
- package/.aios-core/development/tasks/build-component.md +478 -0
- package/.aios-core/development/tasks/calculate-roi.md +455 -0
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -0
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -0
- package/.aios-core/development/tasks/collaborative-edit.md +1109 -0
- package/.aios-core/development/tasks/compose-molecule.md +284 -0
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -0
- package/.aios-core/development/tasks/correct-course.md +280 -0
- package/.aios-core/development/tasks/create-agent.md +322 -0
- package/.aios-core/development/tasks/create-brownfield-story.md +727 -0
- package/.aios-core/development/tasks/create-deep-research-prompt.md +499 -0
- package/.aios-core/development/tasks/create-doc.md +316 -0
- package/.aios-core/development/tasks/create-next-story.md +774 -0
- package/.aios-core/development/tasks/create-suite.md +284 -0
- package/.aios-core/development/tasks/create-task.md +372 -0
- package/.aios-core/development/tasks/create-workflow.md +371 -0
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -0
- package/.aios-core/development/tasks/db-apply-migration.md +381 -0
- package/.aios-core/development/tasks/db-bootstrap.md +642 -0
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -0
- package/.aios-core/development/tasks/db-dry-run.md +293 -0
- package/.aios-core/development/tasks/db-env-check.md +260 -0
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -0
- package/.aios-core/development/tasks/db-explain.md +631 -0
- package/.aios-core/development/tasks/db-impersonate.md +495 -0
- package/.aios-core/development/tasks/db-load-csv.md +593 -0
- package/.aios-core/development/tasks/db-policy-apply.md +653 -0
- package/.aios-core/development/tasks/db-rls-audit.md +411 -0
- package/.aios-core/development/tasks/db-rollback.md +739 -0
- package/.aios-core/development/tasks/db-run-sql.md +613 -0
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -0
- package/.aios-core/development/tasks/db-seed.md +390 -0
- package/.aios-core/development/tasks/db-smoke-test.md +351 -0
- package/.aios-core/development/tasks/db-snapshot.md +569 -0
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -0
- package/.aios-core/development/tasks/db-verify-order.md +515 -0
- package/.aios-core/development/tasks/deprecate-component.md +957 -0
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -0
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -0
- package/.aios-core/development/tasks/dev-develop-story.md +846 -0
- package/.aios-core/development/tasks/dev-improve-code-quality.md +873 -0
- package/.aios-core/development/tasks/dev-optimize-performance.md +1034 -0
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +871 -0
- package/.aios-core/development/tasks/dev-validate-next-story.md +349 -0
- package/.aios-core/development/tasks/document-project.md +553 -0
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -0
- package/.aios-core/development/tasks/execute-checklist.md +301 -0
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -0
- package/.aios-core/development/tasks/extend-pattern.md +269 -0
- package/.aios-core/development/tasks/extract-tokens.md +467 -0
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -0
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +261 -0
- package/.aios-core/development/tasks/generate-documentation.md +284 -0
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -0
- package/.aios-core/development/tasks/generate-shock-report.md +501 -0
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -0
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -0
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -0
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -0
- package/.aios-core/development/tasks/improve-self.md +823 -0
- package/.aios-core/development/tasks/index-docs.md +388 -0
- package/.aios-core/development/tasks/init-project-status.md +506 -0
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -0
- package/.aios-core/development/tasks/kb-mode-interaction.md +284 -0
- package/.aios-core/development/tasks/learn-patterns.md +901 -0
- package/.aios-core/development/tasks/mcp-workflow.md +437 -0
- package/.aios-core/development/tasks/modify-agent.md +382 -0
- package/.aios-core/development/tasks/modify-task.md +425 -0
- package/.aios-core/development/tasks/modify-workflow.md +466 -0
- package/.aios-core/development/tasks/po-backlog-add.md +370 -0
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -0
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -0
- package/.aios-core/development/tasks/po-pull-story.md +316 -0
- package/.aios-core/development/tasks/po-stories-index.md +351 -0
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -0
- package/.aios-core/development/tasks/po-sync-story.md +303 -0
- package/.aios-core/development/tasks/pr-automation.md +701 -0
- package/.aios-core/development/tasks/propose-modification.md +843 -0
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -0
- package/.aios-core/development/tasks/qa-gate.md +374 -0
- package/.aios-core/development/tasks/qa-generate-tests.md +1175 -0
- package/.aios-core/development/tasks/qa-nfr-assess.md +558 -0
- package/.aios-core/development/tasks/qa-review-proposal.md +1158 -0
- package/.aios-core/development/tasks/qa-review-story.md +683 -0
- package/.aios-core/development/tasks/qa-risk-profile.md +567 -0
- package/.aios-core/development/tasks/qa-run-tests.md +277 -0
- package/.aios-core/development/tasks/qa-test-design.md +388 -0
- package/.aios-core/development/tasks/qa-trace-requirements.md +477 -0
- package/.aios-core/development/tasks/release-management.md +723 -0
- package/.aios-core/development/tasks/security-audit.md +554 -0
- package/.aios-core/development/tasks/security-scan.md +790 -0
- package/.aios-core/development/tasks/setup-database.md +741 -0
- package/.aios-core/development/tasks/setup-design-system.md +462 -0
- package/.aios-core/development/tasks/setup-github.md +874 -0
- package/.aios-core/development/tasks/setup-llm-routing.md +229 -0
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -0
- package/.aios-core/development/tasks/shard-doc.md +538 -0
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -0
- package/.aios-core/development/tasks/sync-documentation.md +865 -0
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -0
- package/.aios-core/development/tasks/test-as-user.md +621 -0
- package/.aios-core/development/tasks/test-validation-task.md +171 -0
- package/.aios-core/development/tasks/undo-last.md +347 -0
- package/.aios-core/development/tasks/update-manifest.md +410 -0
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -0
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -0
- package/.aios-core/development/tasks/ux-user-research.md +559 -0
- package/.aios-core/development/tasks/validate-next-story.md +423 -0
- package/.aios-core/development/tasks/validate-structure.md +243 -0
- package/.aios-core/development/workflows/README.md +84 -0
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -0
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -0
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -0
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -0
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -0
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -0
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
- package/.aios-core/docs/component-creation-guide.md +458 -0
- package/.aios-core/docs/session-update-pattern.md +307 -0
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -0
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -0
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -0
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -0
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -0
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -0
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -0
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -0
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -0
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -0
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -0
- package/.aios-core/docs/template-syntax.md +267 -0
- package/.aios-core/docs/troubleshooting-guide.md +625 -0
- package/.aios-core/elicitation/agent-elicitation.js +272 -0
- package/.aios-core/elicitation/task-elicitation.js +281 -0
- package/.aios-core/elicitation/workflow-elicitation.js +315 -0
- package/.aios-core/index.d.ts +8 -0
- package/.aios-core/index.esm.js +16 -0
- package/.aios-core/index.js +16 -0
- package/.aios-core/infrastructure/README.md +126 -0
- package/.aios-core/infrastructure/index.js +199 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/clickup-adapter.js +345 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/github-adapter.js +392 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/jira-adapter.js +448 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/local-adapter.js +175 -0
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +122 -0
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +89 -0
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +780 -0
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +950 -0
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +425 -0
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +132 -0
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +381 -0
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +203 -0
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +24 -0
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +51 -0
- package/.aios-core/infrastructure/scripts/aios-validator.js +294 -0
- package/.aios-core/infrastructure/scripts/approval-workflow.js +643 -0
- package/.aios-core/infrastructure/scripts/atomic-layer-classifier.js +308 -0
- package/.aios-core/infrastructure/scripts/backup-manager.js +607 -0
- package/.aios-core/infrastructure/scripts/batch-creator.js +608 -0
- package/.aios-core/infrastructure/scripts/branch-manager.js +391 -0
- package/.aios-core/infrastructure/scripts/capability-analyzer.js +535 -0
- package/.aios-core/infrastructure/scripts/clickup-helpers.js +226 -0
- package/.aios-core/infrastructure/scripts/code-quality-improver.js +1312 -0
- package/.aios-core/infrastructure/scripts/commit-message-generator.js +850 -0
- package/.aios-core/infrastructure/scripts/component-generator.js +738 -0
- package/.aios-core/infrastructure/scripts/component-metadata.js +627 -0
- package/.aios-core/infrastructure/scripts/component-search.js +277 -0
- package/.aios-core/infrastructure/scripts/config-cache.js +322 -0
- package/.aios-core/infrastructure/scripts/config-loader.js +349 -0
- package/.aios-core/infrastructure/scripts/conflict-resolver.js +675 -0
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +882 -0
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +638 -0
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +703 -0
- package/.aios-core/infrastructure/scripts/diff-generator.js +129 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/brownfield-analyzer.js +501 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/config-generator.js +329 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +282 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/gitignore-generator.js +313 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/index.js +74 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/mode-detector.js +358 -0
- package/.aios-core/infrastructure/scripts/documentation-synchronizer.js +1432 -0
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +746 -0
- package/.aios-core/infrastructure/scripts/git-config-detector.js +293 -0
- package/.aios-core/infrastructure/scripts/git-wrapper.js +443 -0
- package/.aios-core/infrastructure/scripts/improvement-engine.js +758 -0
- package/.aios-core/infrastructure/scripts/improvement-validator.js +710 -0
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +267 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.cmd +80 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.sh +62 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.cmd +26 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.sh +18 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +970 -0
- package/.aios-core/infrastructure/scripts/modification-validator.js +555 -0
- package/.aios-core/infrastructure/scripts/output-formatter.js +297 -0
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +758 -0
- package/.aios-core/infrastructure/scripts/performance-and-error-resolver.js +258 -0
- package/.aios-core/infrastructure/scripts/performance-optimizer.js +1902 -0
- package/.aios-core/infrastructure/scripts/performance-tracker.js +452 -0
- package/.aios-core/infrastructure/scripts/pm-adapter-factory.js +181 -0
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -0
- package/.aios-core/infrastructure/scripts/project-status-loader.js +445 -0
- package/.aios-core/infrastructure/scripts/refactoring-suggester.js +1139 -0
- package/.aios-core/infrastructure/scripts/repository-detector.js +64 -0
- package/.aios-core/infrastructure/scripts/sandbox-tester.js +618 -0
- package/.aios-core/infrastructure/scripts/security-checker.js +359 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/index.js +375 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/manifest-generator.js +410 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/naming-rules.yaml +285 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/placement-rules.yaml +262 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/validator.js +468 -0
- package/.aios-core/infrastructure/scripts/spot-check-validator.js +149 -0
- package/.aios-core/infrastructure/scripts/status-mapper.js +115 -0
- package/.aios-core/infrastructure/scripts/template-engine.js +240 -0
- package/.aios-core/infrastructure/scripts/template-validator.js +279 -0
- package/.aios-core/infrastructure/scripts/test-generator.js +844 -0
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1081 -0
- package/.aios-core/infrastructure/scripts/test-utilities-fast.js +126 -0
- package/.aios-core/infrastructure/scripts/test-utilities.js +200 -0
- package/.aios-core/infrastructure/scripts/tool-resolver.js +360 -0
- package/.aios-core/infrastructure/scripts/transaction-manager.js +590 -0
- package/.aios-core/infrastructure/scripts/usage-analytics.js +634 -0
- package/.aios-core/infrastructure/scripts/validate-output-pattern.js +213 -0
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +1056 -0
- package/.aios-core/infrastructure/scripts/yaml-validator.js +397 -0
- package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml +182 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +127 -0
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -0
- package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -0
- package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -0
- package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -0
- package/.aios-core/infrastructure/templates/project-docs/coding-standards-tmpl.md +346 -0
- package/.aios-core/infrastructure/templates/project-docs/source-tree-tmpl.md +177 -0
- package/.aios-core/infrastructure/templates/project-docs/tech-stack-tmpl.md +267 -0
- package/.aios-core/infrastructure/tests/project-status-loader.test.js +394 -0
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -0
- package/.aios-core/infrastructure/tests/utilities-audit-results.json +501 -0
- package/.aios-core/infrastructure/tests/validate-module.js +97 -0
- package/.aios-core/infrastructure/tools/README.md +222 -0
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -0
- package/.aios-core/infrastructure/tools/cli/llm-routing.yaml +126 -0
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -0
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -0
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -0
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -0
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -0
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -0
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -0
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -0
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -0
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -0
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -0
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -0
- package/.aios-core/install-manifest.yaml +347 -0
- package/.aios-core/manifests/agents.csv +1 -0
- package/.aios-core/manifests/schema/manifest-schema.json +190 -0
- package/.aios-core/manifests/tasks.csv +121 -0
- package/.aios-core/manifests/workers.csv +204 -0
- package/.aios-core/package.json +103 -0
- package/.aios-core/product/README.md +56 -0
- package/.aios-core/product/checklists/architect-checklist.md +444 -0
- package/.aios-core/product/checklists/change-checklist.md +183 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -0
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -0
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -0
- package/.aios-core/product/checklists/pm-checklist.md +376 -0
- package/.aios-core/product/checklists/po-master-checklist.md +442 -0
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -0
- package/.aios-core/product/checklists/release-checklist.md +122 -0
- package/.aios-core/product/checklists/story-dod-checklist.md +102 -0
- package/.aios-core/product/checklists/story-draft-checklist.md +216 -0
- package/.aios-core/product/data/brainstorming-techniques.md +37 -0
- package/.aios-core/product/data/elicitation-methods.md +135 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -0
- package/.aios-core/product/data/test-levels-framework.md +149 -0
- package/.aios-core/product/data/test-priorities-matrix.md +175 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -0
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -0
- package/.aios-core/product/templates/activation-instructions-template.md +258 -0
- package/.aios-core/product/templates/adr.hbs +125 -0
- package/.aios-core/product/templates/agent-template.yaml +121 -0
- package/.aios-core/product/templates/architecture-tmpl.yaml +651 -0
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +156 -0
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +476 -0
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +280 -0
- package/.aios-core/product/templates/changelog-template.md +134 -0
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -0
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +293 -0
- package/.aios-core/product/templates/component-react-tmpl.tsx +98 -0
- package/.aios-core/product/templates/dbdr.hbs +241 -0
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -0
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -0
- package/.aios-core/product/templates/engine/elicitation.js +298 -0
- package/.aios-core/product/templates/engine/index.js +308 -0
- package/.aios-core/product/templates/engine/loader.js +231 -0
- package/.aios-core/product/templates/engine/renderer.js +343 -0
- package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -0
- package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -0
- package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -0
- package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -0
- package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -0
- package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -0
- package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -0
- package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -0
- package/.aios-core/product/templates/engine/validator.js +294 -0
- package/.aios-core/product/templates/epic.hbs +212 -0
- package/.aios-core/product/templates/eslintrc-security.json +32 -0
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +206 -0
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +349 -0
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +805 -0
- package/.aios-core/product/templates/github-actions-cd.yml +212 -0
- package/.aios-core/product/templates/github-actions-ci.yml +172 -0
- package/.aios-core/product/templates/github-pr-template.md +67 -0
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -0
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -0
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -0
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -0
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -0
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -0
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -0
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -0
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -0
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -0
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -0
- package/.aios-core/product/templates/market-research-tmpl.yaml +252 -0
- package/.aios-core/product/templates/mcp-workflow.js +271 -0
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -0
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -0
- package/.aios-core/product/templates/personalized-agent-template.md +258 -0
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -0
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -0
- package/.aios-core/product/templates/personalized-task-template.md +344 -0
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -0
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -0
- package/.aios-core/product/templates/pmdr.hbs +186 -0
- package/.aios-core/product/templates/prd-tmpl.yaml +202 -0
- package/.aios-core/product/templates/prd-v2.0.hbs +216 -0
- package/.aios-core/product/templates/prd.hbs +201 -0
- package/.aios-core/product/templates/project-brief-tmpl.yaml +221 -0
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -0
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -0
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -0
- package/.aios-core/product/templates/shock-report-tmpl.html +502 -0
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -0
- package/.aios-core/product/templates/story-tmpl.yaml +332 -0
- package/.aios-core/product/templates/story.hbs +263 -0
- package/.aios-core/product/templates/task-execution-report.md +495 -0
- package/.aios-core/product/templates/task-template.md +123 -0
- package/.aios-core/product/templates/task.hbs +170 -0
- package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -0
- package/.aios-core/product/templates/tmpl-migration-script.sql +91 -0
- package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -0
- package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -0
- package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -0
- package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -0
- package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -0
- package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -0
- package/.aios-core/product/templates/tmpl-seed-data.sql +140 -0
- package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -0
- package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -0
- package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -0
- package/.aios-core/product/templates/tmpl-trigger.sql +152 -0
- package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -0
- package/.aios-core/product/templates/tmpl-view.sql +177 -0
- package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -0
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -0
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -0
- package/.aios-core/product/templates/workflow-template.yaml +134 -0
- package/.aios-core/quality/metrics-collector.js +572 -0
- package/.aios-core/quality/metrics-hook.js +260 -0
- package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -0
- package/.aios-core/quality/seed-metrics.js +336 -0
- package/.aios-core/scripts/README.md +354 -0
- package/.aios-core/scripts/aios-doc-template.md +325 -0
- package/.aios-core/scripts/batch-migrate-phase1.ps1 +36 -0
- package/.aios-core/scripts/batch-migrate-phase2.ps1 +88 -0
- package/.aios-core/scripts/batch-migrate-phase3.ps1 +45 -0
- package/.aios-core/scripts/command-execution-hook.js +201 -0
- package/.aios-core/scripts/context-detector.js +226 -0
- package/.aios-core/scripts/elicitation-engine.js +385 -0
- package/.aios-core/scripts/elicitation-session-manager.js +300 -0
- package/.aios-core/scripts/migrate-framework-docs.sh +300 -0
- package/.aios-core/scripts/session-context-loader.js +286 -0
- package/.aios-core/scripts/test-template-system.js +941 -0
- package/.aios-core/scripts/validate-phase1.ps1 +35 -0
- package/.aios-core/scripts/workflow-management.md +69 -0
- package/.aios-core/tasks/find-component.md.legacy +391 -0
- package/.aios-core/tasks/generate-commit-message.md.legacy +426 -0
- package/.aios-core/tasks/generate-migration.md.legacy +382 -0
- package/.aios-core/tasks/rollback-modification.md.legacy +307 -0
- package/.aios-core/tasks/update-tests.md.legacy +283 -0
- package/.aios-core/user-guide.md +1413 -0
- package/.aios-core/working-in-the-brownfield.md +361 -0
- package/.claude/CLAUDE.md +221 -0
- package/LICENSE +48 -0
- package/README.md +703 -0
- package/bin/aios-init-old.js +532 -0
- package/bin/aios-init-v4.js +390 -0
- package/bin/aios-init.backup-v1.1.4.js +352 -0
- package/bin/aios-init.js +736 -0
- package/bin/aios-minimal.js +26 -0
- package/bin/aios.js +279 -0
- package/bin/migrate-pm-config.js +219 -0
- package/bin/modules/env-config.js +436 -0
- package/bin/modules/mcp-installer.js +383 -0
- package/bin/utils/install-errors.js +339 -0
- package/bin/utils/install-transaction.js +445 -0
- package/index.d.ts +19 -0
- package/index.esm.js +21 -0
- package/index.js +94 -0
- package/package.json +161 -0
- package/packages/installer/package.json +39 -0
- package/packages/installer/src/config/configure-environment.js +312 -0
- package/packages/installer/src/config/templates/core-config-template.js +183 -0
- package/packages/installer/src/config/templates/env-template.js +127 -0
- package/packages/installer/src/config/validation/config-validator.js +243 -0
- package/packages/installer/src/detection/detect-project-type.js +81 -0
- package/packages/installer/src/wizard/wizard.js +244 -0
- package/packages/installer/tests/integration/environment-configuration.test.js +328 -0
- package/packages/installer/tests/integration/wizard-detection.test.js +349 -0
- package/packages/installer/tests/unit/config-validator.test.js +315 -0
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +401 -0
- package/packages/installer/tests/unit/env-template.test.js +185 -0
- package/src/config/ide-configs.js +189 -0
- package/src/installer/aios-core-installer.js +319 -0
- package/src/installer/dependency-installer.js +335 -0
- package/src/utils/aios-colors.js +234 -0
- package/src/wizard/feedback.js +218 -0
- package/src/wizard/ide-config-generator.js +488 -0
- package/src/wizard/ide-selector.js +84 -0
- package/src/wizard/index.js +589 -0
- package/src/wizard/questions.js +249 -0
- package/src/wizard/validation/index.js +120 -0
- package/src/wizard/validation/report-generator.js +269 -0
- package/src/wizard/validation/troubleshooting-system.js +346 -0
- package/src/wizard/validation/validators/config-validator.js +362 -0
- package/src/wizard/validation/validators/dependency-validator.js +333 -0
- package/src/wizard/validation/validators/file-structure-validator.js +181 -0
- package/src/wizard/validation/validators/mcp-health-checker.js +310 -0
- package/src/wizard/validators.js +274 -0
- package/templates/squad/LICENSE +21 -0
- package/templates/squad/README.md +37 -0
- package/templates/squad/agents/example-agent.yaml +36 -0
- package/templates/squad/package.json +19 -0
- package/templates/squad/squad.yaml +25 -0
- package/templates/squad/tasks/example-task.yaml +46 -0
- package/templates/squad/templates/example-template.md +24 -0
- package/templates/squad/tests/example-agent.test.js +53 -0
- package/templates/squad/workflows/example-workflow.yaml +54 -0
- package/tools/package-builder.js +35 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDE Selector Module
|
|
3
|
+
*
|
|
4
|
+
* Story 1.4: IDE Selection
|
|
5
|
+
* Provides multi-select IDE prompt for wizard
|
|
6
|
+
*
|
|
7
|
+
* @module wizard/ide-selector
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const inquirer = require('inquirer');
|
|
11
|
+
const { getIDEChoices, getIDEKeys } = require('../config/ide-configs');
|
|
12
|
+
const { colors } = require('../utils/aios-colors');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Validate IDE selection (at least one required)
|
|
16
|
+
* @param {string[]} selectedIDEs - Array of selected IDE keys
|
|
17
|
+
* @returns {boolean|string} True if valid, error message if invalid
|
|
18
|
+
*/
|
|
19
|
+
function validateIDESelection(selectedIDEs) {
|
|
20
|
+
if (!Array.isArray(selectedIDEs)) {
|
|
21
|
+
return 'Invalid selection format';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (selectedIDEs.length === 0) {
|
|
25
|
+
return 'Please select at least one IDE';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Validate all selected IDEs are valid
|
|
29
|
+
const validIDEs = getIDEKeys();
|
|
30
|
+
const invalidIDEs = selectedIDEs.filter(ide => !validIDEs.includes(ide));
|
|
31
|
+
|
|
32
|
+
if (invalidIDEs.length > 0) {
|
|
33
|
+
return `Invalid IDE selections: ${invalidIDEs.join(', ')}`;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Prompt user to select IDEs
|
|
41
|
+
*
|
|
42
|
+
* AC1: Multi-select prompt with 6 IDEs
|
|
43
|
+
*
|
|
44
|
+
* @returns {Promise<string[]>} Array of selected IDE keys
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* const selectedIDEs = await selectIDEs();
|
|
48
|
+
* console.log(selectedIDEs); // ['cursor', 'windsurf']
|
|
49
|
+
*/
|
|
50
|
+
async function selectIDEs() {
|
|
51
|
+
const { selectedIDEs } = await inquirer.prompt([
|
|
52
|
+
{
|
|
53
|
+
type: 'checkbox',
|
|
54
|
+
name: 'selectedIDEs',
|
|
55
|
+
message: colors.primary('Select IDE(s) for AIOS configuration:') + colors.dim('\n (Use spacebar to select, enter to confirm)'),
|
|
56
|
+
choices: getIDEChoices(),
|
|
57
|
+
validate: validateIDESelection,
|
|
58
|
+
pageSize: 10,
|
|
59
|
+
},
|
|
60
|
+
]);
|
|
61
|
+
|
|
62
|
+
return selectedIDEs;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Get IDE selection question for wizard integration
|
|
67
|
+
* @returns {Object} Inquirer question object
|
|
68
|
+
*/
|
|
69
|
+
function getIDESelectionQuestion() {
|
|
70
|
+
return {
|
|
71
|
+
type: 'checkbox',
|
|
72
|
+
name: 'selectedIDEs',
|
|
73
|
+
message: colors.primary('Select IDE(s) for AIOS configuration:') + colors.dim('\n (Use spacebar to select, enter to confirm)'),
|
|
74
|
+
choices: getIDEChoices(),
|
|
75
|
+
validate: validateIDESelection,
|
|
76
|
+
pageSize: 10,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
module.exports = {
|
|
81
|
+
selectIDEs,
|
|
82
|
+
validateIDESelection,
|
|
83
|
+
getIDESelectionQuestion,
|
|
84
|
+
};
|
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AIOS Interactive Wizard - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Story 1.2: Interactive Wizard Foundation
|
|
5
|
+
* Provides core wizard functionality with visual feedback and navigation
|
|
6
|
+
*
|
|
7
|
+
* @module wizard
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const inquirer = require('inquirer');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
const fse = require('fs-extra');
|
|
13
|
+
const { buildQuestionSequence } = require('./questions');
|
|
14
|
+
const {
|
|
15
|
+
showWelcome,
|
|
16
|
+
showCompletion,
|
|
17
|
+
showCancellation,
|
|
18
|
+
} = require('./feedback');
|
|
19
|
+
const { generateIDEConfigs, showSuccessSummary } = require('./ide-config-generator');
|
|
20
|
+
const { getIDEConfig } = require('../config/ide-configs');
|
|
21
|
+
const { configureEnvironment } = require('../../packages/installer/src/config/configure-environment');
|
|
22
|
+
const { installDependencies, hasExistingDependencies } = require('../installer/dependency-installer');
|
|
23
|
+
const { installAiosCore, hasPackageJson, createBasicPackageJson } = require('../installer/aios-core-installer');
|
|
24
|
+
const { installProjectMCPs } = require('../../bin/modules/mcp-installer');
|
|
25
|
+
const {
|
|
26
|
+
validateInstallation,
|
|
27
|
+
displayValidationReport,
|
|
28
|
+
provideTroubleshooting,
|
|
29
|
+
} = require('./validation');
|
|
30
|
+
const {
|
|
31
|
+
installLLMRouting,
|
|
32
|
+
isLLMRoutingInstalled,
|
|
33
|
+
getInstallationSummary
|
|
34
|
+
} = require('../../.aios-core/infrastructure/scripts/llm-routing/install-llm-routing');
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Generate AntiGravity workflow content for expansion pack agents
|
|
38
|
+
* @param {string} agentName - Agent name (e.g., 'data-collector')
|
|
39
|
+
* @param {string} packName - Expansion pack name (e.g., 'etl')
|
|
40
|
+
* @returns {string} Workflow file content
|
|
41
|
+
*/
|
|
42
|
+
function generateExpansionPackWorkflow(agentName, packName) {
|
|
43
|
+
const displayName = agentName.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
|
|
44
|
+
|
|
45
|
+
return `---
|
|
46
|
+
description: Ativa o agente ${displayName} (${packName})
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
# Ativação do Agente ${displayName}
|
|
50
|
+
|
|
51
|
+
**Expansion Pack:** ${packName}
|
|
52
|
+
|
|
53
|
+
**INSTRUÇÕES CRÍTICAS PARA O ANTIGRAVITY:**
|
|
54
|
+
|
|
55
|
+
1. Leia COMPLETAMENTE o arquivo \`.antigravity/agents/${packName}/${agentName}.md\`
|
|
56
|
+
2. Siga EXATAMENTE as \`activation-instructions\` definidas no bloco YAML do agente
|
|
57
|
+
3. Adote a persona conforme definido no agente
|
|
58
|
+
4. Execute a saudação conforme \`greeting_levels\` definido no agente
|
|
59
|
+
5. **MANTENHA esta persona até receber o comando \`*exit\`**
|
|
60
|
+
6. Responda aos comandos com prefixo \`*\` conforme definido no agente
|
|
61
|
+
7. Siga as regras globais do projeto em \`.antigravity/rules.md\`
|
|
62
|
+
|
|
63
|
+
**Comandos disponíveis:** Use \`*help\` para ver todos os comandos do agente.
|
|
64
|
+
`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Handle Ctrl+C gracefully
|
|
69
|
+
*/
|
|
70
|
+
let cancellationRequested = false;
|
|
71
|
+
let sigintHandlerAdded = false;
|
|
72
|
+
|
|
73
|
+
function setupCancellationHandler() {
|
|
74
|
+
// Prevent adding multiple listeners (MaxListeners warning fix)
|
|
75
|
+
if (sigintHandlerAdded) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Increase limit to prevent warning during testing
|
|
80
|
+
process.setMaxListeners(15);
|
|
81
|
+
|
|
82
|
+
const handleSigint = async () => {
|
|
83
|
+
if (cancellationRequested) {
|
|
84
|
+
// Second Ctrl+C - force exit
|
|
85
|
+
console.log('\nForce exit');
|
|
86
|
+
process.exit(0);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
cancellationRequested = true;
|
|
90
|
+
|
|
91
|
+
console.log('\n');
|
|
92
|
+
const { confirmCancel } = await inquirer.prompt([
|
|
93
|
+
{
|
|
94
|
+
type: 'confirm',
|
|
95
|
+
name: 'confirmCancel',
|
|
96
|
+
message: 'Are you sure you want to cancel installation?',
|
|
97
|
+
default: false,
|
|
98
|
+
},
|
|
99
|
+
]);
|
|
100
|
+
|
|
101
|
+
if (confirmCancel) {
|
|
102
|
+
showCancellation();
|
|
103
|
+
process.exit(0);
|
|
104
|
+
} else {
|
|
105
|
+
cancellationRequested = false;
|
|
106
|
+
console.log('Continuing installation...\n');
|
|
107
|
+
// Note: inquirer will resume automatically
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
process.on('SIGINT', handleSigint);
|
|
112
|
+
sigintHandlerAdded = true;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Main wizard execution function
|
|
117
|
+
*
|
|
118
|
+
* @returns {Promise<Object>} Wizard answers object
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* const { runWizard } = require('./src/wizard');
|
|
122
|
+
* const answers = await runWizard();
|
|
123
|
+
* console.log(answers.projectType); // 'greenfield' or 'brownfield'
|
|
124
|
+
*/
|
|
125
|
+
async function runWizard() {
|
|
126
|
+
try {
|
|
127
|
+
// Setup graceful cancellation
|
|
128
|
+
setupCancellationHandler();
|
|
129
|
+
|
|
130
|
+
// Show welcome message with AIOS branding
|
|
131
|
+
showWelcome();
|
|
132
|
+
|
|
133
|
+
// Build question sequence
|
|
134
|
+
const questions = buildQuestionSequence();
|
|
135
|
+
|
|
136
|
+
// Performance tracking (AC: < 100ms per question)
|
|
137
|
+
const startTime = Date.now();
|
|
138
|
+
|
|
139
|
+
// Run wizard with inquirer
|
|
140
|
+
const answers = await inquirer.prompt(questions);
|
|
141
|
+
|
|
142
|
+
// Log performance metrics
|
|
143
|
+
const duration = Date.now() - startTime;
|
|
144
|
+
const avgTimePerQuestion = questions.length > 0 ? duration / questions.length : 0;
|
|
145
|
+
|
|
146
|
+
if (avgTimePerQuestion > 100) {
|
|
147
|
+
console.warn(`Warning: Average question response time (${avgTimePerQuestion.toFixed(0)}ms) exceeds 100ms target`);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Story 1.4: Install AIOS core framework (agents, tasks, workflows, templates)
|
|
151
|
+
console.log('\n📦 Installing AIOS core framework...');
|
|
152
|
+
let aiosCoreResult = null;
|
|
153
|
+
try {
|
|
154
|
+
aiosCoreResult = await installAiosCore({
|
|
155
|
+
targetDir: process.cwd(),
|
|
156
|
+
onProgress: (status) => {
|
|
157
|
+
// Silent progress - spinner handles feedback
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
if (aiosCoreResult.success) {
|
|
162
|
+
console.log(`✅ AIOS core installed (${aiosCoreResult.installedFolders.length} folders)`);
|
|
163
|
+
console.log(` - Agents: ${aiosCoreResult.installedFolders.includes('agents') ? '✓' : '⨉'}`);
|
|
164
|
+
console.log(` - Tasks: ${aiosCoreResult.installedFolders.includes('tasks') ? '✓' : '⨉'}`);
|
|
165
|
+
console.log(` - Workflows: ${aiosCoreResult.installedFolders.includes('workflows') ? '✓' : '⨉'}`);
|
|
166
|
+
console.log(` - Templates: ${aiosCoreResult.installedFolders.includes('templates') ? '✓' : '⨉'}`);
|
|
167
|
+
}
|
|
168
|
+
answers.aiosCoreInstalled = true;
|
|
169
|
+
answers.aiosCoreResult = aiosCoreResult;
|
|
170
|
+
} catch (error) {
|
|
171
|
+
console.error('\n⚠️ AIOS core installation failed:', error.message);
|
|
172
|
+
answers.aiosCoreInstalled = false;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Install Expansion Packs if selected
|
|
176
|
+
if (answers.selectedExpansionPacks && answers.selectedExpansionPacks.length > 0) {
|
|
177
|
+
console.log('\n🎁 Installing Expansion Packs...');
|
|
178
|
+
|
|
179
|
+
// Detect source expansion-packs directory (npm package location)
|
|
180
|
+
const possibleSourceDirs = [
|
|
181
|
+
path.join(__dirname, '..', '..', 'expansion-packs'),
|
|
182
|
+
path.join(__dirname, '..', '..', '..', 'expansion-packs'),
|
|
183
|
+
path.join(process.cwd(), 'node_modules', 'aios-fullstack', 'expansion-packs'),
|
|
184
|
+
];
|
|
185
|
+
|
|
186
|
+
let sourceExpansionDir = null;
|
|
187
|
+
for (const dir of possibleSourceDirs) {
|
|
188
|
+
if (fse.existsSync(dir)) {
|
|
189
|
+
sourceExpansionDir = dir;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (sourceExpansionDir) {
|
|
195
|
+
const targetExpansionDir = path.join(process.cwd(), 'expansion-packs');
|
|
196
|
+
await fse.ensureDir(targetExpansionDir);
|
|
197
|
+
|
|
198
|
+
const installedPacks = [];
|
|
199
|
+
const failedPacks = [];
|
|
200
|
+
|
|
201
|
+
for (const pack of answers.selectedExpansionPacks) {
|
|
202
|
+
const sourcePack = path.join(sourceExpansionDir, pack);
|
|
203
|
+
const targetPack = path.join(targetExpansionDir, pack);
|
|
204
|
+
|
|
205
|
+
try {
|
|
206
|
+
if (fse.existsSync(sourcePack)) {
|
|
207
|
+
await fse.copy(sourcePack, targetPack);
|
|
208
|
+
installedPacks.push(pack);
|
|
209
|
+
console.log(` ✅ ${pack}`);
|
|
210
|
+
} else {
|
|
211
|
+
failedPacks.push({ pack, reason: 'not found' });
|
|
212
|
+
console.log(` ⚠️ ${pack} - not found in source`);
|
|
213
|
+
}
|
|
214
|
+
} catch (packError) {
|
|
215
|
+
failedPacks.push({ pack, reason: packError.message });
|
|
216
|
+
console.log(` ⚠️ ${pack} - ${packError.message}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
answers.expansionPacksInstalled = installedPacks.length > 0;
|
|
221
|
+
answers.expansionPacksResult = {
|
|
222
|
+
installed: installedPacks,
|
|
223
|
+
failed: failedPacks,
|
|
224
|
+
targetDir: targetExpansionDir,
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
if (installedPacks.length > 0) {
|
|
228
|
+
console.log(`\n✅ Expansion Packs installed (${installedPacks.length}/${answers.selectedExpansionPacks.length})`);
|
|
229
|
+
}
|
|
230
|
+
} else {
|
|
231
|
+
console.log(' ⚠️ Expansion packs source directory not found');
|
|
232
|
+
answers.expansionPacksInstalled = false;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Story 1.4: Generate IDE configs if IDEs were selected
|
|
237
|
+
let ideConfigResult = null;
|
|
238
|
+
if (answers.selectedIDEs && answers.selectedIDEs.length > 0) {
|
|
239
|
+
ideConfigResult = await generateIDEConfigs(answers.selectedIDEs, answers);
|
|
240
|
+
|
|
241
|
+
if (ideConfigResult.success) {
|
|
242
|
+
showSuccessSummary(ideConfigResult);
|
|
243
|
+
} else {
|
|
244
|
+
console.error('\n⚠️ Some IDE configurations could not be created:');
|
|
245
|
+
if (ideConfigResult.errors) {
|
|
246
|
+
ideConfigResult.errors.forEach(err => {
|
|
247
|
+
console.error(` - ${err.ide || 'Unknown'}: ${err.error}`);
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Install expansion pack agents to each selected IDE
|
|
253
|
+
if (answers.expansionPacksResult && answers.expansionPacksResult.installed.length > 0) {
|
|
254
|
+
console.log('\n📦 Installing expansion pack agents to IDEs...');
|
|
255
|
+
|
|
256
|
+
for (const packName of answers.expansionPacksResult.installed) {
|
|
257
|
+
const packAgentsDir = path.join(answers.expansionPacksResult.targetDir, packName, 'agents');
|
|
258
|
+
|
|
259
|
+
if (await fse.pathExists(packAgentsDir)) {
|
|
260
|
+
const agentFiles = (await fse.readdir(packAgentsDir)).filter(f => f.endsWith('.md'));
|
|
261
|
+
|
|
262
|
+
if (agentFiles.length > 0) {
|
|
263
|
+
for (const ideKey of answers.selectedIDEs) {
|
|
264
|
+
const ideConfig = getIDEConfig(ideKey);
|
|
265
|
+
if (!ideConfig || !ideConfig.agentFolder) continue;
|
|
266
|
+
|
|
267
|
+
const isAntiGravity = ideConfig.specialConfig && ideConfig.specialConfig.type === 'antigravity';
|
|
268
|
+
|
|
269
|
+
// Determine target folder for this expansion pack
|
|
270
|
+
let targetFolder;
|
|
271
|
+
if (isAntiGravity) {
|
|
272
|
+
// AntiGravity: workflows go to .agent/workflows/{packName}/
|
|
273
|
+
targetFolder = path.join(process.cwd(), ideConfig.agentFolder, packName);
|
|
274
|
+
// Also need to copy actual agents to .antigravity/agents/{packName}/
|
|
275
|
+
const agentsTargetFolder = path.join(process.cwd(), ideConfig.specialConfig.agentsFolder, packName);
|
|
276
|
+
await fse.ensureDir(agentsTargetFolder);
|
|
277
|
+
|
|
278
|
+
for (const agentFile of agentFiles) {
|
|
279
|
+
const sourcePath = path.join(packAgentsDir, agentFile);
|
|
280
|
+
const agentName = agentFile.replace('.md', '');
|
|
281
|
+
|
|
282
|
+
// Create workflow file
|
|
283
|
+
const workflowContent = generateExpansionPackWorkflow(agentName, packName);
|
|
284
|
+
await fse.ensureDir(targetFolder);
|
|
285
|
+
await fse.writeFile(path.join(targetFolder, agentFile), workflowContent, 'utf8');
|
|
286
|
+
|
|
287
|
+
// Copy actual agent
|
|
288
|
+
await fse.copy(sourcePath, path.join(agentsTargetFolder, agentFile));
|
|
289
|
+
}
|
|
290
|
+
} else {
|
|
291
|
+
// Other IDEs: copy directly to agentFolder/{packName}/
|
|
292
|
+
targetFolder = path.join(process.cwd(), ideConfig.agentFolder, packName);
|
|
293
|
+
await fse.ensureDir(targetFolder);
|
|
294
|
+
|
|
295
|
+
for (const agentFile of agentFiles) {
|
|
296
|
+
await fse.copy(
|
|
297
|
+
path.join(packAgentsDir, agentFile),
|
|
298
|
+
path.join(targetFolder, agentFile),
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
console.log(` ✅ ${packName}: ${agentFiles.length} agents installed to ${answers.selectedIDEs.length} IDE(s)`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Story 1.6: Environment Configuration
|
|
311
|
+
console.log('\n📝 Configuring environment...');
|
|
312
|
+
|
|
313
|
+
try {
|
|
314
|
+
const envResult = await configureEnvironment({
|
|
315
|
+
targetDir: process.cwd(),
|
|
316
|
+
projectType: answers.projectType || 'greenfield',
|
|
317
|
+
selectedIDEs: answers.selectedIDEs || [],
|
|
318
|
+
mcpServers: answers.mcpServers || [],
|
|
319
|
+
skipPrompts: false, // Interactive mode
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
if (envResult.envCreated && envResult.coreConfigCreated) {
|
|
323
|
+
console.log('\n✅ Environment configuration complete!');
|
|
324
|
+
console.log(' - .env file created');
|
|
325
|
+
console.log(' - .env.example file created');
|
|
326
|
+
console.log(' - .aios-core/core-config.yaml created');
|
|
327
|
+
if (envResult.gitignoreUpdated) {
|
|
328
|
+
console.log(' - .gitignore updated');
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// Store env config result for downstream stories
|
|
333
|
+
answers.envConfigured = true;
|
|
334
|
+
answers.envResult = envResult;
|
|
335
|
+
|
|
336
|
+
} catch (error) {
|
|
337
|
+
console.error('\n⚠️ Environment configuration failed:');
|
|
338
|
+
console.error(` ${error.message}`);
|
|
339
|
+
|
|
340
|
+
// Ask user if they want to continue without env config
|
|
341
|
+
const { continueWithoutEnv } = await inquirer.prompt([
|
|
342
|
+
{
|
|
343
|
+
type: 'confirm',
|
|
344
|
+
name: 'continueWithoutEnv',
|
|
345
|
+
message: 'Continue installation without environment configuration?',
|
|
346
|
+
default: false,
|
|
347
|
+
},
|
|
348
|
+
]);
|
|
349
|
+
|
|
350
|
+
if (!continueWithoutEnv) {
|
|
351
|
+
throw new Error('Installation cancelled - environment configuration required');
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
answers.envConfigured = false;
|
|
355
|
+
console.log('\n⚠️ Continuing without environment configuration...');
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Story 1.7: Dependency Installation
|
|
359
|
+
// Check if package.json exists first (greenfield projects won't have one)
|
|
360
|
+
const { detectPackageManager } = require('../installer/dependency-installer');
|
|
361
|
+
const projectPath = process.cwd();
|
|
362
|
+
const packageJsonExists = await hasPackageJson(projectPath);
|
|
363
|
+
|
|
364
|
+
if (!packageJsonExists) {
|
|
365
|
+
// Greenfield project - no package.json, skip dependency installation
|
|
366
|
+
console.log('\n📦 Dependency installation...');
|
|
367
|
+
console.log(' ℹ️ No package.json found (greenfield project)');
|
|
368
|
+
console.log(' 💡 Dependencies will be installed when you add a package.json');
|
|
369
|
+
answers.depsInstalled = true; // Mark as success since there's nothing to install
|
|
370
|
+
answers.depsResult = { success: true, skipped: true, reason: 'no-package-json' };
|
|
371
|
+
answers.packageManager = detectPackageManager();
|
|
372
|
+
} else {
|
|
373
|
+
// Brownfield project or existing project - has package.json
|
|
374
|
+
console.log('\n📦 Installing dependencies...');
|
|
375
|
+
|
|
376
|
+
// Auto-detect package manager (no longer asked as question)
|
|
377
|
+
const detectedPM = detectPackageManager();
|
|
378
|
+
answers.packageManager = detectedPM;
|
|
379
|
+
|
|
380
|
+
try {
|
|
381
|
+
const depsResult = await installDependencies({
|
|
382
|
+
packageManager: detectedPM,
|
|
383
|
+
projectPath: projectPath,
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
if (depsResult.success) {
|
|
387
|
+
if (depsResult.offlineMode) {
|
|
388
|
+
console.log('✅ Using existing dependencies (offline mode)');
|
|
389
|
+
} else {
|
|
390
|
+
console.log(`✅ Dependencies installed with ${depsResult.packageManager}!`);
|
|
391
|
+
}
|
|
392
|
+
answers.depsInstalled = true;
|
|
393
|
+
answers.depsResult = depsResult;
|
|
394
|
+
} else {
|
|
395
|
+
console.error('\n⚠️ Dependency installation failed:');
|
|
396
|
+
console.error(` ${depsResult.errorMessage}`);
|
|
397
|
+
console.error(` Solution: ${depsResult.solution}`);
|
|
398
|
+
|
|
399
|
+
// Ask user if they want to retry
|
|
400
|
+
const { retryDeps } = await inquirer.prompt([
|
|
401
|
+
{
|
|
402
|
+
type: 'confirm',
|
|
403
|
+
name: 'retryDeps',
|
|
404
|
+
message: 'Retry dependency installation?',
|
|
405
|
+
default: true,
|
|
406
|
+
},
|
|
407
|
+
]);
|
|
408
|
+
|
|
409
|
+
if (retryDeps) {
|
|
410
|
+
// Recursive retry with exponential backoff (built into installDependencies)
|
|
411
|
+
const retryResult = await installDependencies({
|
|
412
|
+
packageManager: answers.packageManager,
|
|
413
|
+
projectPath: projectPath,
|
|
414
|
+
});
|
|
415
|
+
|
|
416
|
+
if (retryResult.success) {
|
|
417
|
+
console.log(`\n✅ Dependencies installed with ${retryResult.packageManager}!`);
|
|
418
|
+
answers.depsInstalled = true;
|
|
419
|
+
answers.depsResult = retryResult;
|
|
420
|
+
} else {
|
|
421
|
+
console.log('\n⚠️ Installation still failed. You can run `npm install` manually later.');
|
|
422
|
+
answers.depsInstalled = false;
|
|
423
|
+
answers.depsResult = retryResult;
|
|
424
|
+
}
|
|
425
|
+
} else {
|
|
426
|
+
console.log('\n⚠️ Skipping dependency installation. Run manually with `npm install`.');
|
|
427
|
+
answers.depsInstalled = false;
|
|
428
|
+
answers.depsResult = depsResult;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
} catch (error) {
|
|
432
|
+
console.error('\n⚠️ Dependency installation error:', error.message);
|
|
433
|
+
answers.depsInstalled = false;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// Story 1.5/1.8: MCP Installation
|
|
438
|
+
if (answers.selectedMCPs && answers.selectedMCPs.length > 0) {
|
|
439
|
+
console.log('\n🔌 Installing MCPs...');
|
|
440
|
+
|
|
441
|
+
try {
|
|
442
|
+
const mcpResult = await installProjectMCPs({
|
|
443
|
+
selectedMCPs: answers.selectedMCPs,
|
|
444
|
+
projectPath: process.cwd(),
|
|
445
|
+
apiKeys: answers.exaApiKey ? { EXA_API_KEY: answers.exaApiKey } : {},
|
|
446
|
+
onProgress: (status) => {
|
|
447
|
+
if (status.mcp) {
|
|
448
|
+
console.log(` [${status.mcp}] ${status.message}`);
|
|
449
|
+
} else {
|
|
450
|
+
console.log(` ${status.message}`);
|
|
451
|
+
}
|
|
452
|
+
},
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
if (mcpResult.success) {
|
|
456
|
+
const successCount = Object.values(mcpResult.installedMCPs).filter(r => r.status === 'success').length;
|
|
457
|
+
console.log(`\n✅ MCPs installed successfully! (${successCount}/${answers.selectedMCPs.length})`);
|
|
458
|
+
console.log(` Configuration: ${mcpResult.configPath}`);
|
|
459
|
+
} else {
|
|
460
|
+
console.error('\n⚠️ Some MCPs failed to install:');
|
|
461
|
+
mcpResult.errors.forEach(err => console.error(` - ${err}`));
|
|
462
|
+
console.log('\n💡 Check .aios/install-errors.log for details');
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// Store MCP result for validation
|
|
466
|
+
answers.mcpsInstalled = mcpResult.success;
|
|
467
|
+
answers.mcpResult = mcpResult;
|
|
468
|
+
|
|
469
|
+
} catch (error) {
|
|
470
|
+
console.error('\n⚠️ MCP installation error:', error.message);
|
|
471
|
+
answers.mcpsInstalled = false;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
// Story 6.7: LLM Routing Installation
|
|
476
|
+
console.log('\n🚀 Installing LLM Routing commands...');
|
|
477
|
+
try {
|
|
478
|
+
// Check if already installed
|
|
479
|
+
if (isLLMRoutingInstalled()) {
|
|
480
|
+
console.log(' ℹ️ LLM Routing already installed');
|
|
481
|
+
answers.llmRoutingInstalled = true;
|
|
482
|
+
answers.llmRoutingResult = { success: true, alreadyInstalled: true };
|
|
483
|
+
} else {
|
|
484
|
+
const llmResult = installLLMRouting({
|
|
485
|
+
projectRoot: process.cwd(),
|
|
486
|
+
onProgress: (msg) => console.log(` ${msg}`),
|
|
487
|
+
onError: (msg) => console.error(` ${msg}`)
|
|
488
|
+
});
|
|
489
|
+
|
|
490
|
+
if (llmResult.success) {
|
|
491
|
+
console.log('\n✅ LLM Routing installed!');
|
|
492
|
+
console.log(' • claude-max → Uses Claude Max subscription');
|
|
493
|
+
console.log(' • claude-free → Uses DeepSeek (~$0.14/M tokens)');
|
|
494
|
+
console.log('\n 💡 For claude-free, add DEEPSEEK_API_KEY to your .env');
|
|
495
|
+
answers.llmRoutingInstalled = true;
|
|
496
|
+
answers.llmRoutingResult = llmResult;
|
|
497
|
+
} else {
|
|
498
|
+
console.error('\n⚠️ LLM Routing installation had errors:');
|
|
499
|
+
llmResult.errors.forEach(err => console.error(` - ${err}`));
|
|
500
|
+
answers.llmRoutingInstalled = false;
|
|
501
|
+
answers.llmRoutingResult = llmResult;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
} catch (error) {
|
|
505
|
+
console.error('\n⚠️ LLM Routing error:', error.message);
|
|
506
|
+
answers.llmRoutingInstalled = false;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// Story 1.8: Installation Validation
|
|
510
|
+
console.log('\n🔍 Validating installation...\n');
|
|
511
|
+
|
|
512
|
+
try {
|
|
513
|
+
const validation = await validateInstallation(
|
|
514
|
+
{
|
|
515
|
+
files: {
|
|
516
|
+
ideConfigs: ideConfigResult?.files || [],
|
|
517
|
+
env: '.env',
|
|
518
|
+
coreConfig: '.aios-core/core-config.yaml',
|
|
519
|
+
mcpConfig: '.mcp.json',
|
|
520
|
+
},
|
|
521
|
+
configs: {
|
|
522
|
+
env: answers.envResult,
|
|
523
|
+
mcps: answers.mcpResult,
|
|
524
|
+
coreConfig: '.aios-core/core-config.yaml',
|
|
525
|
+
},
|
|
526
|
+
mcps: answers.mcpResult,
|
|
527
|
+
dependencies: answers.depsResult,
|
|
528
|
+
},
|
|
529
|
+
(status) => {
|
|
530
|
+
console.log(` [${status.step}] ${status.message}`);
|
|
531
|
+
},
|
|
532
|
+
);
|
|
533
|
+
|
|
534
|
+
// Display validation report
|
|
535
|
+
await displayValidationReport(validation);
|
|
536
|
+
|
|
537
|
+
// Offer troubleshooting if there are errors
|
|
538
|
+
if (validation.errors && validation.errors.length > 0) {
|
|
539
|
+
await provideTroubleshooting(validation.errors);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
// Store validation result
|
|
543
|
+
answers.validationResult = validation;
|
|
544
|
+
} catch (error) {
|
|
545
|
+
console.error('\n⚠️ Validation failed:', error.message);
|
|
546
|
+
console.log('Installation may be incomplete. Check logs in .aios/ directory.');
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
// Show completion
|
|
550
|
+
showCompletion();
|
|
551
|
+
|
|
552
|
+
return answers;
|
|
553
|
+
} catch (error) {
|
|
554
|
+
if (error.isTtyError) {
|
|
555
|
+
console.error('Error: Prompt couldn\'t be rendered in the current environment');
|
|
556
|
+
} else {
|
|
557
|
+
console.error('Wizard error:', error.message);
|
|
558
|
+
}
|
|
559
|
+
throw error;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* Answer object schema (for integration documentation)
|
|
565
|
+
*
|
|
566
|
+
* @typedef {Object} WizardAnswers
|
|
567
|
+
* @property {string} projectType - 'greenfield' or 'brownfield' (Story 1.3)
|
|
568
|
+
* @property {string[]} [selectedIDEs] - Selected IDEs array (Story 1.4)
|
|
569
|
+
* @property {string[]} [mcpServers] - Selected MCP servers (Story 1.5)
|
|
570
|
+
* @property {boolean} [envConfigured] - Whether env config succeeded (Story 1.6)
|
|
571
|
+
* @property {Object} [envResult] - Environment configuration result (Story 1.6)
|
|
572
|
+
* @property {boolean} envResult.envCreated - .env file created
|
|
573
|
+
* @property {boolean} envResult.envExampleCreated - .env.example file created
|
|
574
|
+
* @property {boolean} envResult.coreConfigCreated - core-config.yaml created
|
|
575
|
+
* @property {boolean} envResult.gitignoreUpdated - .gitignore updated
|
|
576
|
+
* @property {Array<string>} envResult.errors - Any errors encountered
|
|
577
|
+
* @property {string} packageManager - Selected package manager (Story 1.7)
|
|
578
|
+
* @property {boolean} [depsInstalled] - Whether dependencies installed successfully (Story 1.7)
|
|
579
|
+
* @property {Object} [depsResult] - Dependency installation result (Story 1.7)
|
|
580
|
+
* @property {boolean} depsResult.success - Installation succeeded
|
|
581
|
+
* @property {boolean} [depsResult.offlineMode] - Used existing node_modules
|
|
582
|
+
* @property {string} depsResult.packageManager - Package manager used
|
|
583
|
+
* @property {string} [depsResult.error] - Error message if failed
|
|
584
|
+
*/
|
|
585
|
+
|
|
586
|
+
module.exports = {
|
|
587
|
+
runWizard,
|
|
588
|
+
};
|
|
589
|
+
|