aios-core 1.0.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/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/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 +314 -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 +484 -0
- package/.aios-core/core/elicitation/session-manager.js +321 -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 +232 -0
- package/.aios-core/core/session/context-loader.js +442 -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 +497 -0
- package/.aios-core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/data/aios-kb.md +924 -0
- package/.aios-core/data/learned-patterns.yaml +3 -0
- package/.aios-core/data/technical-preferences.md +4 -0
- package/.aios-core/data/workflow-patterns.yaml +611 -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 +370 -0
- package/.aios-core/development/agents/analyst.md +195 -0
- package/.aios-core/development/agents/architect.md +363 -0
- package/.aios-core/development/agents/data-engineer.md +468 -0
- package/.aios-core/development/agents/dev.md +403 -0
- package/.aios-core/development/agents/devops.md +410 -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/squad-creator.md +302 -0
- package/.aios-core/development/agents/ux-design-expert.md +471 -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/squad/README.md +112 -0
- package/.aios-core/development/scripts/squad/index.js +123 -0
- package/.aios-core/development/scripts/squad/squad-analyzer.js +638 -0
- package/.aios-core/development/scripts/squad/squad-designer.js +1010 -0
- package/.aios-core/development/scripts/squad/squad-downloader.js +510 -0
- package/.aios-core/development/scripts/squad/squad-extender.js +871 -0
- package/.aios-core/development/scripts/squad/squad-generator.js +1405 -0
- package/.aios-core/development/scripts/squad/squad-loader.js +359 -0
- package/.aios-core/development/scripts/squad/squad-migrator.js +632 -0
- package/.aios-core/development/scripts/squad/squad-publisher.js +629 -0
- package/.aios-core/development/scripts/squad/squad-validator.js +783 -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 +436 -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-brownfield.md +456 -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/analyze-project-structure.md +621 -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-service.md +391 -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 +664 -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/next.md +294 -0
- package/.aios-core/development/tasks/patterns.md +334 -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/search-mcp.md +309 -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 +627 -0
- package/.aios-core/development/tasks/setup-project-docs.md +440 -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/squad-creator-analyze.md +315 -0
- package/.aios-core/development/tasks/squad-creator-create.md +312 -0
- package/.aios-core/development/tasks/squad-creator-design.md +334 -0
- package/.aios-core/development/tasks/squad-creator-download.md +167 -0
- package/.aios-core/development/tasks/squad-creator-extend.md +411 -0
- package/.aios-core/development/tasks/squad-creator-list.md +225 -0
- package/.aios-core/development/tasks/squad-creator-migrate.md +243 -0
- package/.aios-core/development/tasks/squad-creator-publish.md +229 -0
- package/.aios-core/development/tasks/squad-creator-sync-synkra.md +315 -0
- package/.aios-core/development/tasks/squad-creator-validate.md +159 -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/waves.md +205 -0
- package/.aios-core/development/templates/service-template/README.md.hbs +158 -0
- package/.aios-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -0
- package/.aios-core/development/templates/service-template/client.ts.hbs +403 -0
- package/.aios-core/development/templates/service-template/errors.ts.hbs +182 -0
- package/.aios-core/development/templates/service-template/index.ts.hbs +120 -0
- package/.aios-core/development/templates/service-template/jest.config.js +89 -0
- package/.aios-core/development/templates/service-template/package.json.hbs +87 -0
- package/.aios-core/development/templates/service-template/tsconfig.json +45 -0
- package/.aios-core/development/templates/service-template/types.ts.hbs +145 -0
- package/.aios-core/development/templates/squad/agent-template.md +69 -0
- package/.aios-core/development/templates/squad/checklist-template.md +82 -0
- package/.aios-core/development/templates/squad/data-template.yaml +105 -0
- package/.aios-core/development/templates/squad/script-template.js +179 -0
- package/.aios-core/development/templates/squad/task-template.md +125 -0
- package/.aios-core/development/templates/squad/template-template.md +97 -0
- package/.aios-core/development/templates/squad/tool-template.js +103 -0
- package/.aios-core/development/templates/squad/workflow-template.yaml +108 -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/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-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -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/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.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/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 +368 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +308 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/gitignore-generator.js +312 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/index.js +74 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/mode-detector.js +389 -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/ide-sync/README.md +184 -0
- package/.aios-core/infrastructure/scripts/ide-sync/agent-parser.js +295 -0
- package/.aios-core/infrastructure/scripts/ide-sync/index.js +502 -0
- package/.aios-core/infrastructure/scripts/ide-sync/redirect-generator.js +200 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/antigravity.js +105 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/claude-code.js +84 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/cursor.js +94 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/trae.js +125 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/windsurf.js +106 -0
- package/.aios-core/infrastructure/scripts/ide-sync/validator.js +273 -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 +280 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -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/llm-routing/templates/deepseek-proxy.cmd +71 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
- package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -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/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 +176 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +168 -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/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 +2338 -0
- package/.aios-core/manifests/schema/manifest-schema.json +190 -0
- package/.aios-core/package.json +103 -0
- package/.aios-core/product/README.md +56 -0
- package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -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/component-quality-checklist.md +74 -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/migration-readiness-checklist.md +75 -0
- package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -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/atomic-design-principles.md +108 -0
- package/.aios-core/product/data/brainstorming-techniques.md +37 -0
- package/.aios-core/product/data/consolidation-algorithms.md +142 -0
- package/.aios-core/product/data/database-best-practices.md +182 -0
- package/.aios-core/product/data/design-token-best-practices.md +107 -0
- package/.aios-core/product/data/elicitation-methods.md +135 -0
- package/.aios-core/product/data/integration-patterns.md +207 -0
- package/.aios-core/product/data/migration-safety-guide.md +329 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -0
- package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
- package/.aios-core/product/data/rls-security-patterns.md +333 -0
- package/.aios-core/product/data/roi-calculation-guide.md +142 -0
- package/.aios-core/product/data/supabase-patterns.md +330 -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/data/wcag-compliance-guide.md +267 -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 +599 -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/schemas/squad-design-schema.json +299 -0
- package/.aios-core/schemas/squad-schema.json +185 -0
- package/.aios-core/scripts/README.md +122 -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/migrate-framework-docs.sh +300 -0
- package/.aios-core/scripts/session-context-loader.js +45 -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/user-guide.md +1413 -0
- package/.aios-core/utils/aios-validator.js +25 -0
- package/.aios-core/workflow-intelligence/__tests__/confidence-scorer.test.js +334 -0
- package/.aios-core/workflow-intelligence/__tests__/integration.test.js +337 -0
- package/.aios-core/workflow-intelligence/__tests__/suggestion-engine.test.js +433 -0
- package/.aios-core/workflow-intelligence/__tests__/wave-analyzer.test.js +458 -0
- package/.aios-core/workflow-intelligence/__tests__/workflow-registry.test.js +302 -0
- package/.aios-core/workflow-intelligence/engine/confidence-scorer.js +305 -0
- package/.aios-core/workflow-intelligence/engine/output-formatter.js +285 -0
- package/.aios-core/workflow-intelligence/engine/suggestion-engine.js +603 -0
- package/.aios-core/workflow-intelligence/engine/wave-analyzer.js +676 -0
- package/.aios-core/workflow-intelligence/index.js +327 -0
- package/.aios-core/workflow-intelligence/learning/capture-hook.js +147 -0
- package/.aios-core/workflow-intelligence/learning/index.js +230 -0
- package/.aios-core/workflow-intelligence/learning/pattern-capture.js +340 -0
- package/.aios-core/workflow-intelligence/learning/pattern-store.js +498 -0
- package/.aios-core/workflow-intelligence/learning/pattern-validator.js +309 -0
- package/.aios-core/workflow-intelligence/registry/workflow-registry.js +358 -0
- package/.aios-core/working-in-the-brownfield.md +361 -0
- package/.claude/rules/mcp-usage.md +176 -0
- package/LICENSE +48 -0
- package/README.md +705 -0
- package/bin/aios-init.js +867 -0
- package/bin/aios-minimal.js +26 -0
- package/bin/aios.js +280 -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/package.json +126 -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 +270 -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 +329 -0
- package/packages/installer/tests/integration/wizard-detection.test.js +351 -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 +187 -0
- package/scripts/generate-install-manifest.js +337 -0
- package/scripts/validate-manifest.js +265 -0
- package/src/config/ide-configs.js +189 -0
- package/src/installer/aios-core-installer.js +319 -0
- package/src/installer/brownfield-upgrader.js +438 -0
- package/src/installer/dependency-installer.js +335 -0
- package/src/installer/file-hasher.js +137 -0
- package/src/utils/aios-colors.js +234 -0
- package/src/wizard/feedback.js +218 -0
- package/src/wizard/ide-config-generator.js +536 -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/diagnose-installation.js +266 -0
- package/tools/diagnose-npx-issue.ps1 +96 -0
- package/tools/quick-diagnose.cmd +85 -0
- package/tools/quick-diagnose.ps1 +117 -0
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDE Config Generator
|
|
3
|
+
*
|
|
4
|
+
* Story 1.4: IDE Selection
|
|
5
|
+
* Generates IDE-specific configuration files with validation and rollback
|
|
6
|
+
*
|
|
7
|
+
* @module wizard/ide-config-generator
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const fs = require('fs-extra');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
const yaml = require('js-yaml');
|
|
13
|
+
const inquirer = require('inquirer');
|
|
14
|
+
const ora = require('ora');
|
|
15
|
+
const { getIDEConfig } = require('../config/ide-configs');
|
|
16
|
+
const { validateProjectName } = require('./validators');
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Render template with variables
|
|
20
|
+
* @param {string} template - Template string
|
|
21
|
+
* @param {Object} variables - Variables to interpolate
|
|
22
|
+
* @returns {string} Rendered template
|
|
23
|
+
*/
|
|
24
|
+
function renderTemplate(template, variables) {
|
|
25
|
+
let rendered = template;
|
|
26
|
+
|
|
27
|
+
// Replace all {{variable}} patterns
|
|
28
|
+
for (const [key, value] of Object.entries(variables)) {
|
|
29
|
+
const regex = new RegExp(`{{${key}}}`, 'g');
|
|
30
|
+
rendered = rendered.replace(regex, value);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return rendered;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Validate config content based on format
|
|
38
|
+
* @param {string} content - Config file content
|
|
39
|
+
* @param {string} format - Format: 'json', 'yaml', or 'text'
|
|
40
|
+
* @throws {Error} If validation fails
|
|
41
|
+
*/
|
|
42
|
+
function validateConfigContent(content, format) {
|
|
43
|
+
if (format === 'json') {
|
|
44
|
+
try {
|
|
45
|
+
JSON.parse(content);
|
|
46
|
+
} catch (error) {
|
|
47
|
+
throw new Error(`Invalid JSON: ${error.message}`);
|
|
48
|
+
}
|
|
49
|
+
} else if (format === 'yaml') {
|
|
50
|
+
try {
|
|
51
|
+
yaml.load(content);
|
|
52
|
+
} catch (error) {
|
|
53
|
+
throw new Error(`Invalid YAML: ${error.message}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Text format doesn't need validation
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Create backup of existing file
|
|
61
|
+
* @param {string} filePath - Path to file to backup
|
|
62
|
+
* @returns {Promise<string>} Backup file path
|
|
63
|
+
*/
|
|
64
|
+
async function backupFile(filePath) {
|
|
65
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
66
|
+
const backupPath = `${filePath}.backup.${timestamp}`;
|
|
67
|
+
|
|
68
|
+
await fs.copy(filePath, backupPath);
|
|
69
|
+
return backupPath;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Prompt user for action when file exists
|
|
74
|
+
* @param {string} filePath - Path to existing file
|
|
75
|
+
* @returns {Promise<string>} Action: 'overwrite', 'skip', or 'backup'
|
|
76
|
+
*/
|
|
77
|
+
async function promptFileExists(filePath) {
|
|
78
|
+
const { action } = await inquirer.prompt([
|
|
79
|
+
{
|
|
80
|
+
type: 'list',
|
|
81
|
+
name: 'action',
|
|
82
|
+
message: `File ${path.basename(filePath)} already exists. What would you like to do?`,
|
|
83
|
+
choices: [
|
|
84
|
+
{ name: 'Overwrite', value: 'overwrite' },
|
|
85
|
+
{ name: 'Create backup and overwrite', value: 'backup' },
|
|
86
|
+
{ name: 'Skip', value: 'skip' },
|
|
87
|
+
],
|
|
88
|
+
default: 'backup',
|
|
89
|
+
},
|
|
90
|
+
]);
|
|
91
|
+
|
|
92
|
+
return action;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Sanitize and validate a candidate project name
|
|
97
|
+
* Converts unsafe directory names to safe project names
|
|
98
|
+
*
|
|
99
|
+
* @param {string} candidate - Candidate project name (e.g., from path.basename)
|
|
100
|
+
* @returns {string} Safe, validated project name
|
|
101
|
+
*/
|
|
102
|
+
function sanitizeProjectName(candidate) {
|
|
103
|
+
if (!candidate || typeof candidate !== 'string') {
|
|
104
|
+
return 'my-project';
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Step 1: Convert to lowercase and replace spaces/special chars with dashes
|
|
108
|
+
let sanitized = candidate
|
|
109
|
+
.toLowerCase()
|
|
110
|
+
.trim()
|
|
111
|
+
.replace(/[^a-zA-Z0-9_-]/g, '-') // Replace non-alphanumeric (except dash/underscore) with dash
|
|
112
|
+
.replace(/[-_]+/g, '-') // Collapse multiple dashes/underscores into single dash
|
|
113
|
+
.replace(/^[-_]+|[-_]+$/g, ''); // Remove leading/trailing dashes/underscores
|
|
114
|
+
|
|
115
|
+
// Step 2: Ensure it starts with alphanumeric
|
|
116
|
+
sanitized = sanitized.replace(/^[^a-zA-Z0-9]+/, '');
|
|
117
|
+
|
|
118
|
+
// Step 3: Limit length (validateProjectName allows up to 100)
|
|
119
|
+
if (sanitized.length > 100) {
|
|
120
|
+
sanitized = sanitized.substring(0, 100);
|
|
121
|
+
// Remove trailing dash if truncation created one
|
|
122
|
+
sanitized = sanitized.replace(/-+$/, '');
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Step 4: Validate the sanitized name
|
|
126
|
+
const validation = validateProjectName(sanitized);
|
|
127
|
+
|
|
128
|
+
if (validation === true && sanitized.length > 0) {
|
|
129
|
+
return sanitized;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Step 5: If validation fails, generate a safe alphanumeric slug
|
|
133
|
+
// Use first alphanumeric chars from original, or generate default
|
|
134
|
+
const alphanumericOnly = candidate.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
|
|
135
|
+
if (alphanumericOnly.length > 0 && alphanumericOnly.length <= 100) {
|
|
136
|
+
const fallbackValidation = validateProjectName(alphanumericOnly);
|
|
137
|
+
if (fallbackValidation === true) {
|
|
138
|
+
return alphanumericOnly;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Step 6: Ultimate fallback - safe default
|
|
143
|
+
return 'my-project';
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Generate template variables from wizard state
|
|
148
|
+
* @param {Object} wizardState - Current wizard state
|
|
149
|
+
* @returns {Object} Template variables
|
|
150
|
+
*/
|
|
151
|
+
function generateTemplateVariables(wizardState) {
|
|
152
|
+
const timestamp = new Date().toISOString();
|
|
153
|
+
|
|
154
|
+
// Safely get project name with validation
|
|
155
|
+
// If provided, validate it; otherwise sanitize fallback from directory name
|
|
156
|
+
let projectName;
|
|
157
|
+
if (wizardState.projectName) {
|
|
158
|
+
const validation = validateProjectName(wizardState.projectName);
|
|
159
|
+
if (validation === true) {
|
|
160
|
+
projectName = wizardState.projectName;
|
|
161
|
+
} else {
|
|
162
|
+
// If provided name is invalid, sanitize it
|
|
163
|
+
projectName = sanitizeProjectName(wizardState.projectName);
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
// No project name provided, sanitize fallback from directory name
|
|
167
|
+
projectName = sanitizeProjectName(path.basename(process.cwd()));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return {
|
|
171
|
+
projectName,
|
|
172
|
+
projectType: wizardState.projectType || 'greenfield',
|
|
173
|
+
timestamp,
|
|
174
|
+
aiosVersion: '2.1.0', // From package.json in real implementation
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Copy agent files from .aios-core/development/agents to IDE-specific agent folder
|
|
180
|
+
* v2.1 modular structure: agents are now in development/ module
|
|
181
|
+
* @param {string} projectRoot - Project root directory
|
|
182
|
+
* @param {string} agentFolder - Target folder for agent files (IDE-specific)
|
|
183
|
+
* @param {Object} ideConfig - IDE configuration object (optional, for special handling)
|
|
184
|
+
* @returns {Promise<string[]>} List of copied files
|
|
185
|
+
*/
|
|
186
|
+
async function copyAgentFiles(projectRoot, agentFolder, ideConfig = null) {
|
|
187
|
+
// v2.1: Agents are in development/agents/ (not root agents/)
|
|
188
|
+
const sourceDir = path.join(__dirname, '..', '..', '.aios-core', 'development', 'agents');
|
|
189
|
+
const targetDir = path.join(projectRoot, agentFolder);
|
|
190
|
+
const copiedFiles = [];
|
|
191
|
+
|
|
192
|
+
// Ensure target directory exists
|
|
193
|
+
await fs.ensureDir(targetDir);
|
|
194
|
+
|
|
195
|
+
// Get all agent files (excluding backup files)
|
|
196
|
+
const files = await fs.readdir(sourceDir);
|
|
197
|
+
const agentFiles = files.filter(file =>
|
|
198
|
+
file.endsWith('.md') &&
|
|
199
|
+
!file.includes('.backup') &&
|
|
200
|
+
!file.startsWith('test-'), // Exclude test agents
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
// Check if this is AntiGravity - needs workflow files instead of direct copy
|
|
204
|
+
const isAntiGravity = ideConfig && ideConfig.specialConfig && ideConfig.specialConfig.type === 'antigravity';
|
|
205
|
+
|
|
206
|
+
for (const file of agentFiles) {
|
|
207
|
+
const sourcePath = path.join(sourceDir, file);
|
|
208
|
+
const agentName = file.replace('.md', '');
|
|
209
|
+
|
|
210
|
+
// Only copy if source is a file (not directory)
|
|
211
|
+
const stat = await fs.stat(sourcePath);
|
|
212
|
+
if (stat.isFile()) {
|
|
213
|
+
if (isAntiGravity) {
|
|
214
|
+
// For AntiGravity: create workflow activation files
|
|
215
|
+
const workflowContent = generateAntiGravityWorkflow(agentName);
|
|
216
|
+
const targetPath = path.join(targetDir, file);
|
|
217
|
+
await fs.writeFile(targetPath, workflowContent, 'utf8');
|
|
218
|
+
copiedFiles.push(targetPath);
|
|
219
|
+
|
|
220
|
+
// Also copy the actual agent to .antigravity/agents
|
|
221
|
+
const agentsDir = path.join(projectRoot, ideConfig.specialConfig.agentsFolder);
|
|
222
|
+
await fs.ensureDir(agentsDir);
|
|
223
|
+
const agentTargetPath = path.join(agentsDir, file);
|
|
224
|
+
await fs.copy(sourcePath, agentTargetPath);
|
|
225
|
+
copiedFiles.push(agentTargetPath);
|
|
226
|
+
} else {
|
|
227
|
+
// Normal copy for other IDEs
|
|
228
|
+
const targetPath = path.join(targetDir, file);
|
|
229
|
+
await fs.copy(sourcePath, targetPath);
|
|
230
|
+
copiedFiles.push(targetPath);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return copiedFiles;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Copy .claude/rules folder for Claude Code IDE
|
|
240
|
+
* @param {string} projectRoot - Project root directory
|
|
241
|
+
* @returns {Promise<string[]>} List of copied files
|
|
242
|
+
*/
|
|
243
|
+
async function copyClaudeRulesFolder(projectRoot) {
|
|
244
|
+
const sourceDir = path.join(__dirname, '..', '..', '.claude', 'rules');
|
|
245
|
+
const targetDir = path.join(projectRoot, '.claude', 'rules');
|
|
246
|
+
const copiedFiles = [];
|
|
247
|
+
|
|
248
|
+
// Check if source exists
|
|
249
|
+
if (!await fs.pathExists(sourceDir)) {
|
|
250
|
+
return copiedFiles;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Ensure target directory exists
|
|
254
|
+
await fs.ensureDir(targetDir);
|
|
255
|
+
|
|
256
|
+
// Get all files in rules folder
|
|
257
|
+
const files = await fs.readdir(sourceDir);
|
|
258
|
+
|
|
259
|
+
for (const file of files) {
|
|
260
|
+
const sourcePath = path.join(sourceDir, file);
|
|
261
|
+
const targetPath = path.join(targetDir, file);
|
|
262
|
+
|
|
263
|
+
const stat = await fs.stat(sourcePath);
|
|
264
|
+
if (stat.isFile()) {
|
|
265
|
+
await fs.copy(sourcePath, targetPath);
|
|
266
|
+
copiedFiles.push(targetPath);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return copiedFiles;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Generate AntiGravity workflow activation file content
|
|
275
|
+
* @param {string} agentName - Name of the agent (e.g., 'dev', 'architect')
|
|
276
|
+
* @returns {string} Workflow file content
|
|
277
|
+
*/
|
|
278
|
+
function generateAntiGravityWorkflow(agentName) {
|
|
279
|
+
// Capitalize first letter for display
|
|
280
|
+
const displayName = agentName.charAt(0).toUpperCase() + agentName.slice(1);
|
|
281
|
+
|
|
282
|
+
return `---
|
|
283
|
+
description: Ativa o agente ${displayName}
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
# Ativação do Agente ${displayName}
|
|
287
|
+
|
|
288
|
+
**INSTRUÇÕES CRÍTICAS PARA O ANTIGRAVITY:**
|
|
289
|
+
|
|
290
|
+
1. Leia COMPLETAMENTE o arquivo \`.antigravity/agents/${agentName}.md\`
|
|
291
|
+
2. Siga EXATAMENTE as \`activation-instructions\` definidas no bloco YAML do agente
|
|
292
|
+
3. Adote a persona conforme definido no agente
|
|
293
|
+
4. Execute a saudação conforme \`greeting_levels\` definido no agente
|
|
294
|
+
5. **MANTENHA esta persona até receber o comando \`*exit\`**
|
|
295
|
+
6. Responda aos comandos com prefixo \`*\` conforme definido no agente
|
|
296
|
+
7. Siga as regras globais do projeto em \`.antigravity/rules.md\`
|
|
297
|
+
|
|
298
|
+
**Comandos disponíveis:** Use \`*help\` para ver todos os comandos do agente.
|
|
299
|
+
`;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Create AntiGravity configuration JSON file
|
|
304
|
+
* @param {string} projectRoot - Project root directory
|
|
305
|
+
* @param {Object} ideConfig - AntiGravity IDE config
|
|
306
|
+
* @returns {Promise<string>} Path to created file
|
|
307
|
+
*/
|
|
308
|
+
async function createAntiGravityConfigJson(projectRoot, ideConfig) {
|
|
309
|
+
const configPath = path.join(projectRoot, ideConfig.specialConfig.configJsonPath);
|
|
310
|
+
const projectName = path.basename(projectRoot);
|
|
311
|
+
|
|
312
|
+
const config = {
|
|
313
|
+
version: '1.0',
|
|
314
|
+
project: projectName,
|
|
315
|
+
workspace: projectRoot.replace(/\\/g, '/'),
|
|
316
|
+
agents: {
|
|
317
|
+
enabled: true,
|
|
318
|
+
directory: ideConfig.specialConfig.agentsFolder,
|
|
319
|
+
default: 'aios-master',
|
|
320
|
+
},
|
|
321
|
+
rules: {
|
|
322
|
+
enabled: true,
|
|
323
|
+
file: ideConfig.configFile,
|
|
324
|
+
},
|
|
325
|
+
features: {
|
|
326
|
+
storyDrivenDevelopment: true,
|
|
327
|
+
agentActivation: true,
|
|
328
|
+
workflowAutomation: true,
|
|
329
|
+
},
|
|
330
|
+
paths: {
|
|
331
|
+
stories: 'docs/stories',
|
|
332
|
+
prd: 'docs/prd',
|
|
333
|
+
architecture: 'docs/architecture',
|
|
334
|
+
tasks: '.aios-core/tasks',
|
|
335
|
+
workflows: '.aios-core/workflows',
|
|
336
|
+
},
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
await fs.ensureDir(path.dirname(configPath));
|
|
340
|
+
await fs.writeFile(configPath, JSON.stringify(config, null, 4), 'utf8');
|
|
341
|
+
|
|
342
|
+
return configPath;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Generate IDE configuration files
|
|
347
|
+
*
|
|
348
|
+
* AC2: Creates appropriate config file for each selected IDE
|
|
349
|
+
* AC3: Validates config content before writing
|
|
350
|
+
* AC4: Handles existing files with user prompt
|
|
351
|
+
* AC5: Shows progress feedback
|
|
352
|
+
*
|
|
353
|
+
* @param {string[]} selectedIDEs - Array of IDE keys
|
|
354
|
+
* @param {Object} wizardState - Current wizard state
|
|
355
|
+
* @param {Object} options - Options
|
|
356
|
+
* @param {string} options.projectRoot - Project root directory (defaults to cwd)
|
|
357
|
+
* @returns {Promise<{success: boolean, files: string[], errors: Array}>}
|
|
358
|
+
*
|
|
359
|
+
* @example
|
|
360
|
+
* const result = await generateIDEConfigs(['cursor', 'windsurf'], wizardState);
|
|
361
|
+
* console.log(result.files); // ['.cursorrules', '.windsurfrules']
|
|
362
|
+
*/
|
|
363
|
+
async function generateIDEConfigs(selectedIDEs, wizardState, options = {}) {
|
|
364
|
+
const projectRoot = options.projectRoot || process.cwd();
|
|
365
|
+
const createdFiles = [];
|
|
366
|
+
const createdFolders = [];
|
|
367
|
+
const backupFiles = [];
|
|
368
|
+
const errors = [];
|
|
369
|
+
|
|
370
|
+
// Generate template variables
|
|
371
|
+
const templateVars = generateTemplateVariables(wizardState);
|
|
372
|
+
|
|
373
|
+
const spinner = ora();
|
|
374
|
+
|
|
375
|
+
try {
|
|
376
|
+
for (const ideKey of selectedIDEs) {
|
|
377
|
+
const ide = getIDEConfig(ideKey);
|
|
378
|
+
|
|
379
|
+
if (!ide) {
|
|
380
|
+
errors.push({ ide: ideKey, error: 'IDE configuration not found' });
|
|
381
|
+
continue;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
spinner.start(`Configuring ${ide.name}...`);
|
|
385
|
+
|
|
386
|
+
try {
|
|
387
|
+
// Create directory if needed
|
|
388
|
+
const configPath = path.join(projectRoot, ide.configFile);
|
|
389
|
+
const configDir = path.dirname(configPath);
|
|
390
|
+
|
|
391
|
+
if (ide.requiresDirectory) {
|
|
392
|
+
await fs.ensureDir(configDir);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// Check if file exists
|
|
396
|
+
const exists = await fs.pathExists(configPath);
|
|
397
|
+
if (exists) {
|
|
398
|
+
spinner.stop();
|
|
399
|
+
const action = await promptFileExists(ide.configFile);
|
|
400
|
+
|
|
401
|
+
if (action === 'skip') {
|
|
402
|
+
spinner.succeed(`Skipped ${ide.name} (file exists)`);
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (action === 'backup') {
|
|
407
|
+
const backupPath = await backupFile(configPath);
|
|
408
|
+
backupFiles.push(backupPath);
|
|
409
|
+
spinner.info(`Created backup: ${path.basename(backupPath)}`);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
spinner.start(`Configuring ${ide.name}...`);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// Load template from .aios-core/product/templates/
|
|
416
|
+
const templatePath = path.join(__dirname, '..', '..', '.aios-core', 'product', 'templates', ide.template);
|
|
417
|
+
|
|
418
|
+
if (!await fs.pathExists(templatePath)) {
|
|
419
|
+
throw new Error(`Template file not found: ${ide.template}`);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
const template = await fs.readFile(templatePath, 'utf8');
|
|
423
|
+
|
|
424
|
+
// Render template
|
|
425
|
+
const rendered = renderTemplate(template, templateVars);
|
|
426
|
+
|
|
427
|
+
// Validate content
|
|
428
|
+
validateConfigContent(rendered, ide.format);
|
|
429
|
+
|
|
430
|
+
// Write file
|
|
431
|
+
await fs.writeFile(configPath, rendered, 'utf8');
|
|
432
|
+
createdFiles.push(configPath);
|
|
433
|
+
|
|
434
|
+
spinner.succeed(`Created ${ide.configFile}`);
|
|
435
|
+
|
|
436
|
+
// Copy agent files to IDE-specific agent folder
|
|
437
|
+
if (ide.agentFolder) {
|
|
438
|
+
spinner.start(`Copying agents to ${ide.agentFolder}...`);
|
|
439
|
+
const agentFiles = await copyAgentFiles(projectRoot, ide.agentFolder, ide);
|
|
440
|
+
createdFiles.push(...agentFiles);
|
|
441
|
+
createdFolders.push(path.join(projectRoot, ide.agentFolder));
|
|
442
|
+
|
|
443
|
+
// For AntiGravity, also create the antigravity.json config file
|
|
444
|
+
if (ide.specialConfig && ide.specialConfig.type === 'antigravity') {
|
|
445
|
+
const configJsonPath = await createAntiGravityConfigJson(projectRoot, ide);
|
|
446
|
+
createdFiles.push(configJsonPath);
|
|
447
|
+
spinner.succeed(`Created AntiGravity config and ${agentFiles.length} workflow files`);
|
|
448
|
+
} else {
|
|
449
|
+
spinner.succeed(`Copied ${agentFiles.length} agent files to ${ide.agentFolder}`);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// For Claude Code, also copy .claude/rules folder
|
|
454
|
+
if (ideKey === 'claude-code') {
|
|
455
|
+
spinner.start('Copying Claude Code rules...');
|
|
456
|
+
const rulesFiles = await copyClaudeRulesFolder(projectRoot);
|
|
457
|
+
createdFiles.push(...rulesFiles);
|
|
458
|
+
if (rulesFiles.length > 0) {
|
|
459
|
+
createdFolders.push(path.join(projectRoot, '.claude', 'rules'));
|
|
460
|
+
spinner.succeed(`Copied ${rulesFiles.length} rule file(s) to .claude/rules`);
|
|
461
|
+
} else {
|
|
462
|
+
spinner.info('No rule files to copy');
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
} catch (error) {
|
|
467
|
+
spinner.fail(`Failed to configure ${ide.name}`);
|
|
468
|
+
errors.push({ ide: ide.name, error: error.message });
|
|
469
|
+
|
|
470
|
+
// Rollback: Delete all created files
|
|
471
|
+
for (const file of createdFiles) {
|
|
472
|
+
await fs.remove(file).catch(() => {});
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
// Rollback: Delete created folders
|
|
476
|
+
for (const folder of createdFolders) {
|
|
477
|
+
await fs.remove(folder).catch(() => {});
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// Restore backups
|
|
481
|
+
for (const backup of backupFiles) {
|
|
482
|
+
const original = backup.replace(/\.backup\.\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-\d{3}Z$/, '');
|
|
483
|
+
await fs.move(backup, original, { overwrite: true }).catch(() => {});
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
throw new Error(`IDE config generation failed for ${ide.name}: ${error.message}`);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
return {
|
|
491
|
+
success: true,
|
|
492
|
+
files: createdFiles,
|
|
493
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
494
|
+
};
|
|
495
|
+
|
|
496
|
+
} catch (error) {
|
|
497
|
+
return {
|
|
498
|
+
success: false,
|
|
499
|
+
files: [],
|
|
500
|
+
errors: [{ error: error.message }],
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Show success summary after config generation
|
|
507
|
+
* @param {Object} result - Result from generateIDEConfigs
|
|
508
|
+
*/
|
|
509
|
+
function showSuccessSummary(result) {
|
|
510
|
+
if (result.files.length === 0) {
|
|
511
|
+
console.log('\nNo IDE configurations created.');
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
console.log(`\n✅ Created ${result.files.length} IDE configuration(s):`);
|
|
516
|
+
|
|
517
|
+
for (const file of result.files) {
|
|
518
|
+
console.log(` - ${path.basename(file)}`);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
console.log('\n📋 Next Steps:');
|
|
522
|
+
console.log(' 1. Open your project in your selected IDE(s)');
|
|
523
|
+
console.log(' 2. The IDE should automatically recognize AIOS configuration');
|
|
524
|
+
console.log(' 3. Try activating an agent with @agent-name');
|
|
525
|
+
console.log(' 4. Use * commands to interact with agents\n');
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
module.exports = {
|
|
529
|
+
generateIDEConfigs,
|
|
530
|
+
showSuccessSummary,
|
|
531
|
+
renderTemplate,
|
|
532
|
+
validateConfigContent,
|
|
533
|
+
backupFile,
|
|
534
|
+
promptFileExists,
|
|
535
|
+
generateTemplateVariables,
|
|
536
|
+
};
|
|
@@ -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
|
+
};
|