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,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* .env Template Generator
|
|
3
|
+
* Story 1.6: Environment Configuration
|
|
4
|
+
*
|
|
5
|
+
* Generates .env file with secure defaults and helpful comments
|
|
6
|
+
*
|
|
7
|
+
* @module env-template
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Generate .env file content
|
|
12
|
+
*
|
|
13
|
+
* @param {Object} apiKeys - API keys provided by user
|
|
14
|
+
* @param {string} [apiKeys.openai] - OpenAI API key (optional)
|
|
15
|
+
* @param {string} [apiKeys.anthropic] - Anthropic API key (optional)
|
|
16
|
+
* @param {string} [apiKeys.clickup] - ClickUp API key (optional)
|
|
17
|
+
* @param {string} [apiKeys.github] - GitHub token (optional)
|
|
18
|
+
* @param {string} [apiKeys.exa] - Exa API key (optional)
|
|
19
|
+
* @returns {string} .env file content
|
|
20
|
+
*/
|
|
21
|
+
function generateEnvContent(apiKeys = {}) {
|
|
22
|
+
const content = `# AIOS Environment Configuration
|
|
23
|
+
# Generated by AIOS Installer
|
|
24
|
+
# DO NOT commit this file - it contains sensitive credentials
|
|
25
|
+
|
|
26
|
+
# ============================================================================
|
|
27
|
+
# AIOS Core Configuration
|
|
28
|
+
# ============================================================================
|
|
29
|
+
NODE_ENV=development
|
|
30
|
+
AIOS_VERSION=2.1.0
|
|
31
|
+
|
|
32
|
+
# ============================================================================
|
|
33
|
+
# AI Providers (at least one recommended)
|
|
34
|
+
# ============================================================================
|
|
35
|
+
# OpenAI API Key - Get yours at: https://platform.openai.com/api-keys
|
|
36
|
+
OPENAI_API_KEY=${apiKeys.openai || ''}
|
|
37
|
+
|
|
38
|
+
# Anthropic API Key - Get yours at: https://console.anthropic.com/
|
|
39
|
+
ANTHROPIC_API_KEY=${apiKeys.anthropic || ''}
|
|
40
|
+
|
|
41
|
+
# ============================================================================
|
|
42
|
+
# Optional Services
|
|
43
|
+
# ============================================================================
|
|
44
|
+
# ClickUp API Key - For task management integration
|
|
45
|
+
# Get yours at: https://app.clickup.com/settings/apps
|
|
46
|
+
CLICKUP_API_KEY=${apiKeys.clickup || ''}
|
|
47
|
+
|
|
48
|
+
# GitHub Personal Access Token - For GitHub integration
|
|
49
|
+
# Create at: https://github.com/settings/tokens
|
|
50
|
+
GITHUB_TOKEN=${apiKeys.github || ''}
|
|
51
|
+
|
|
52
|
+
# Exa API Key - For web search capabilities
|
|
53
|
+
# Get yours at: https://exa.ai/
|
|
54
|
+
EXA_API_KEY=${apiKeys.exa || ''}
|
|
55
|
+
|
|
56
|
+
# ============================================================================
|
|
57
|
+
# Database Configuration (if applicable)
|
|
58
|
+
# ============================================================================
|
|
59
|
+
# DATABASE_URL=postgresql://user:password@localhost:5432/dbname
|
|
60
|
+
|
|
61
|
+
# ============================================================================
|
|
62
|
+
# Custom Configuration
|
|
63
|
+
# ============================================================================
|
|
64
|
+
# Add your custom environment variables below
|
|
65
|
+
`;
|
|
66
|
+
|
|
67
|
+
return content;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Generate .env.example file content (no sensitive data)
|
|
72
|
+
*
|
|
73
|
+
* @returns {string} .env.example file content
|
|
74
|
+
*/
|
|
75
|
+
function generateEnvExample() {
|
|
76
|
+
const content = `# AIOS Environment Configuration Template
|
|
77
|
+
# Copy this file to .env and fill in your actual values
|
|
78
|
+
# DO NOT commit .env with real credentials
|
|
79
|
+
|
|
80
|
+
# ============================================================================
|
|
81
|
+
# AIOS Core Configuration
|
|
82
|
+
# ============================================================================
|
|
83
|
+
NODE_ENV=development
|
|
84
|
+
AIOS_VERSION=2.1.0
|
|
85
|
+
|
|
86
|
+
# ============================================================================
|
|
87
|
+
# AI Providers (at least one recommended)
|
|
88
|
+
# ============================================================================
|
|
89
|
+
# OpenAI API Key - Get yours at: https://platform.openai.com/api-keys
|
|
90
|
+
OPENAI_API_KEY=
|
|
91
|
+
|
|
92
|
+
# Anthropic API Key - Get yours at: https://console.anthropic.com/
|
|
93
|
+
ANTHROPIC_API_KEY=
|
|
94
|
+
|
|
95
|
+
# ============================================================================
|
|
96
|
+
# Optional Services
|
|
97
|
+
# ============================================================================
|
|
98
|
+
# ClickUp API Key - For task management integration
|
|
99
|
+
# Get yours at: https://app.clickup.com/settings/apps
|
|
100
|
+
CLICKUP_API_KEY=
|
|
101
|
+
|
|
102
|
+
# GitHub Personal Access Token - For GitHub integration
|
|
103
|
+
# Create at: https://github.com/settings/tokens
|
|
104
|
+
GITHUB_TOKEN=
|
|
105
|
+
|
|
106
|
+
# Exa API Key - For web search capabilities
|
|
107
|
+
# Get yours at: https://exa.ai/
|
|
108
|
+
EXA_API_KEY=
|
|
109
|
+
|
|
110
|
+
# ============================================================================
|
|
111
|
+
# Database Configuration (if applicable)
|
|
112
|
+
# ============================================================================
|
|
113
|
+
# DATABASE_URL=postgresql://user:password@localhost:5432/dbname
|
|
114
|
+
|
|
115
|
+
# ============================================================================
|
|
116
|
+
# Custom Configuration
|
|
117
|
+
# ============================================================================
|
|
118
|
+
# Add your custom environment variables below
|
|
119
|
+
`;
|
|
120
|
+
|
|
121
|
+
return content;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
module.exports = {
|
|
125
|
+
generateEnvContent,
|
|
126
|
+
generateEnvExample,
|
|
127
|
+
};
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Validation Module
|
|
3
|
+
* Story 1.6: Environment Configuration
|
|
4
|
+
*
|
|
5
|
+
* Validates .env and YAML configuration files
|
|
6
|
+
*
|
|
7
|
+
* @module config-validator
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const yaml = require('js-yaml');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Validate .env file format
|
|
15
|
+
*
|
|
16
|
+
* @param {string} content - .env file content
|
|
17
|
+
* @returns {Object} Validation result { valid: boolean, errors: Array<string> }
|
|
18
|
+
*/
|
|
19
|
+
function validateEnvFormat(content) {
|
|
20
|
+
const errors = [];
|
|
21
|
+
const lines = content.split('\n');
|
|
22
|
+
|
|
23
|
+
lines.forEach((line, index) => {
|
|
24
|
+
const lineNum = index + 1;
|
|
25
|
+
const trimmed = line.trim();
|
|
26
|
+
|
|
27
|
+
// Skip empty lines and comments
|
|
28
|
+
if (!trimmed || trimmed.startsWith('#')) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Check for KEY=value format (no spaces around =)
|
|
33
|
+
if (!trimmed.match(/^[A-Z_][A-Z0-9_]*=/)) {
|
|
34
|
+
errors.push(`Line ${lineNum}: Invalid format. Expected KEY=value (no spaces around =)`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Check for spaces around =
|
|
39
|
+
if (trimmed.match(/\s*=\s*/)) {
|
|
40
|
+
const [key, ...rest] = trimmed.split('=');
|
|
41
|
+
if (key.includes(' ') || (rest.length > 0 && rest[0].startsWith(' '))) {
|
|
42
|
+
errors.push(`Line ${lineNum}: Remove spaces around = in "${trimmed}"`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
valid: errors.length === 0,
|
|
49
|
+
errors,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Validate API key format (basic check)
|
|
55
|
+
*
|
|
56
|
+
* @param {string} key - API key to validate
|
|
57
|
+
* @param {string} [provider] - Provider name for specific validation
|
|
58
|
+
* @returns {Object} Validation result { valid: boolean, error: string|null }
|
|
59
|
+
*/
|
|
60
|
+
function validateApiKeyFormat(key, provider = null) {
|
|
61
|
+
// Null/undefined/empty is valid (skip logic)
|
|
62
|
+
if (key === null || key === undefined || key === '') {
|
|
63
|
+
return { valid: true, error: null };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const trimmed = typeof key === 'string' ? key.trim() : '';
|
|
67
|
+
|
|
68
|
+
// Whitespace-only keys are invalid
|
|
69
|
+
if (key !== '' && trimmed === '') {
|
|
70
|
+
return { valid: false, error: 'API key cannot be only whitespace' };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Provider-specific validation
|
|
74
|
+
if (provider) {
|
|
75
|
+
switch (provider.toLowerCase()) {
|
|
76
|
+
case 'openai':
|
|
77
|
+
// OpenAI keys start with sk- and are at least 20 chars
|
|
78
|
+
if (!trimmed.startsWith('sk-') || trimmed.length < 20) {
|
|
79
|
+
return { valid: false, error: 'OpenAI API keys should start with "sk-" and be at least 20 characters' };
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
|
|
83
|
+
case 'anthropic':
|
|
84
|
+
// Anthropic keys start with sk-ant- and are longer
|
|
85
|
+
if (!trimmed.startsWith('sk-ant-') || trimmed.length < 30) {
|
|
86
|
+
return { valid: false, error: 'Anthropic API keys should start with "sk-ant-" and be at least 30 characters' };
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
|
|
90
|
+
case 'github':
|
|
91
|
+
// GitHub tokens: ghp_ (personal), gho_ (OAuth), ghs_ (server), ghu_ (user), ghr_ (refresh), github_pat_ (fine-grained)
|
|
92
|
+
if (!trimmed.match(/^(ghp_|gho_|ghs_|ghu_|ghr_|github_pat_)/)) {
|
|
93
|
+
return { valid: false, error: 'GitHub tokens should start with ghp_, gho_, ghs_, ghu_, ghr_, or github_pat_' };
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
|
|
97
|
+
// Other providers use basic validation
|
|
98
|
+
default:
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Check for suspicious patterns (spaces, newlines)
|
|
104
|
+
if (trimmed.match(/\s/)) {
|
|
105
|
+
return { valid: false, error: 'API key should not contain spaces or newlines' };
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Check for minimum length (general safety)
|
|
109
|
+
if (trimmed.length < 10) {
|
|
110
|
+
return { valid: false, error: 'API key seems too short (minimum 10 characters)' };
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return { valid: true, error: null };
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Validate YAML syntax
|
|
118
|
+
*
|
|
119
|
+
* @param {string} content - YAML content
|
|
120
|
+
* @returns {Object} Validation result { valid: boolean, error: string|null, parsed: Object|null }
|
|
121
|
+
*/
|
|
122
|
+
function validateYamlSyntax(content) {
|
|
123
|
+
try {
|
|
124
|
+
const parsed = yaml.load(content);
|
|
125
|
+
return { valid: true, error: null, parsed };
|
|
126
|
+
} catch (error) {
|
|
127
|
+
return {
|
|
128
|
+
valid: false,
|
|
129
|
+
error: `YAML syntax error: ${error.message}`,
|
|
130
|
+
parsed: null,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Validate core-config.yaml structure
|
|
137
|
+
*
|
|
138
|
+
* @param {Object} config - Parsed YAML config
|
|
139
|
+
* @returns {Object} Validation result { valid: boolean, errors: Array<string> }
|
|
140
|
+
*/
|
|
141
|
+
function validateCoreConfigStructure(config) {
|
|
142
|
+
const errors = [];
|
|
143
|
+
const requiredFields = ['project', 'qa', 'prd', 'architecture'];
|
|
144
|
+
|
|
145
|
+
// Check required top-level fields
|
|
146
|
+
requiredFields.forEach(field => {
|
|
147
|
+
if (!config[field]) {
|
|
148
|
+
errors.push(`Missing required field: ${field}`);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
// Validate project section
|
|
153
|
+
if (config.project) {
|
|
154
|
+
if (!config.project.type) {
|
|
155
|
+
errors.push('Missing project.type');
|
|
156
|
+
} else {
|
|
157
|
+
// Accept both lowercase and uppercase project types
|
|
158
|
+
const validTypes = ['GREENFIELD', 'BROWNFIELD', 'EXISTING_AIOS', 'greenfield', 'brownfield', 'existing_aios'];
|
|
159
|
+
if (!validTypes.includes(config.project.type)) {
|
|
160
|
+
errors.push(`Invalid project.type: ${config.project.type}. Expected greenfield, brownfield, or existing_aios`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Validate IDE section
|
|
166
|
+
if (config.ide) {
|
|
167
|
+
if (!Array.isArray(config.ide.selected)) {
|
|
168
|
+
errors.push('ide.selected must be an array');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return {
|
|
173
|
+
valid: errors.length === 0,
|
|
174
|
+
errors,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Validate file path (cross-platform)
|
|
180
|
+
*
|
|
181
|
+
* @param {string} filePath - Path to validate
|
|
182
|
+
* @returns {Object} Validation result { valid: boolean, error: string|null }
|
|
183
|
+
*/
|
|
184
|
+
function validatePath(filePath) {
|
|
185
|
+
// Check for null/undefined
|
|
186
|
+
if (!filePath) {
|
|
187
|
+
return { valid: false, error: 'Path cannot be empty' };
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Check for path traversal attempts (before normalization)
|
|
191
|
+
if (filePath.includes('..')) {
|
|
192
|
+
return { valid: false, error: 'Path traversal detected (..)' };
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Normalize and check again
|
|
196
|
+
const normalized = path.normalize(filePath);
|
|
197
|
+
if (normalized.includes('..')) {
|
|
198
|
+
return { valid: false, error: 'Path traversal detected (..)' };
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Check for invalid characters (basic check)
|
|
202
|
+
const invalidChars = /[<>"|?*\0]/;
|
|
203
|
+
if (invalidChars.test(filePath)) {
|
|
204
|
+
return { valid: false, error: 'Path contains invalid characters' };
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return { valid: true, error: null };
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Sanitize input to prevent injection
|
|
212
|
+
*
|
|
213
|
+
* @param {string} input - Input to sanitize
|
|
214
|
+
* @returns {string} Sanitized input
|
|
215
|
+
*/
|
|
216
|
+
function sanitizeInput(input) {
|
|
217
|
+
if (typeof input !== 'string') {
|
|
218
|
+
return '';
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Remove null bytes
|
|
222
|
+
let sanitized = input.replace(/\0/g, '');
|
|
223
|
+
|
|
224
|
+
// Trim whitespace
|
|
225
|
+
sanitized = sanitized.trim();
|
|
226
|
+
|
|
227
|
+
// Limit length (prevent DoS)
|
|
228
|
+
const maxLength = 10000;
|
|
229
|
+
if (sanitized.length > maxLength) {
|
|
230
|
+
sanitized = sanitized.substring(0, maxLength);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return sanitized;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
module.exports = {
|
|
237
|
+
validateEnvFormat,
|
|
238
|
+
validateApiKeyFormat,
|
|
239
|
+
validateYamlSyntax,
|
|
240
|
+
validateCoreConfigStructure,
|
|
241
|
+
validatePath,
|
|
242
|
+
sanitizeInput,
|
|
243
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Detects the type of project in the current directory
|
|
6
|
+
*
|
|
7
|
+
* Detection Priority Order:
|
|
8
|
+
* 1. EXISTING_AIOS - .aios-core/ directory exists
|
|
9
|
+
* 2. GREENFIELD - directory is empty
|
|
10
|
+
* 3. BROWNFIELD - package.json OR .git exists
|
|
11
|
+
* 4. UNKNOWN - directory has files but no recognized markers
|
|
12
|
+
*
|
|
13
|
+
* @param {string} targetDir - Directory to analyze (defaults to process.cwd())
|
|
14
|
+
* @returns {string} 'GREENFIELD' | 'BROWNFIELD' | 'EXISTING_AIOS' | 'UNKNOWN'
|
|
15
|
+
* @throws {Error} If directory cannot be accessed
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Detect current directory
|
|
19
|
+
* const type = detectProjectType();
|
|
20
|
+
* console.log(type); // 'GREENFIELD'
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* // Detect specific directory
|
|
24
|
+
* const type = detectProjectType('/path/to/project');
|
|
25
|
+
* console.log(type); // 'BROWNFIELD'
|
|
26
|
+
*/
|
|
27
|
+
function detectProjectType(targetDir = process.cwd()) {
|
|
28
|
+
try {
|
|
29
|
+
// Validate targetDir parameter
|
|
30
|
+
if (!targetDir || typeof targetDir !== 'string') {
|
|
31
|
+
throw new Error('Invalid targetDir parameter: must be a non-empty string');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Normalize path for cross-platform compatibility
|
|
35
|
+
const normalizedDir = path.resolve(targetDir);
|
|
36
|
+
|
|
37
|
+
// Check if directory exists before attempting to read
|
|
38
|
+
if (!fs.existsSync(normalizedDir)) {
|
|
39
|
+
throw new Error(`Directory does not exist: ${normalizedDir}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Check for AIOS installation markers (use path.join for security)
|
|
43
|
+
const hasAiosCore = fs.existsSync(path.join(normalizedDir, '.aios-core'));
|
|
44
|
+
|
|
45
|
+
// If AIOS already installed, return immediately (highest priority)
|
|
46
|
+
if (hasAiosCore) {
|
|
47
|
+
return 'EXISTING_AIOS';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Check directory contents
|
|
51
|
+
const dirContents = fs.readdirSync(normalizedDir);
|
|
52
|
+
const isEmpty = dirContents.length === 0;
|
|
53
|
+
|
|
54
|
+
// Empty directory = greenfield (second priority)
|
|
55
|
+
if (isEmpty) {
|
|
56
|
+
return 'GREENFIELD';
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Check for project markers (third priority)
|
|
60
|
+
const hasPackageJson = fs.existsSync(path.join(normalizedDir, 'package.json'));
|
|
61
|
+
const hasGit = fs.existsSync(path.join(normalizedDir, '.git'));
|
|
62
|
+
|
|
63
|
+
// Existing project markers = brownfield
|
|
64
|
+
if (hasPackageJson || hasGit) {
|
|
65
|
+
return 'BROWNFIELD';
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Directory has files but no recognized markers = unknown
|
|
69
|
+
return 'UNKNOWN';
|
|
70
|
+
|
|
71
|
+
} catch (error) {
|
|
72
|
+
// Log error with context for debugging
|
|
73
|
+
console.error(`[detect-project-type] Error detecting project type in '${targetDir}': ${error.message}`);
|
|
74
|
+
|
|
75
|
+
// Re-throw with more context for caller to handle
|
|
76
|
+
throw new Error(`Failed to detect project type: ${error.message}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
module.exports = { detectProjectType };
|
|
81
|
+
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
const { detectProjectType } = require('../detection/detect-project-type');
|
|
2
|
+
const {
|
|
3
|
+
detectInstallationMode,
|
|
4
|
+
getModeOptions,
|
|
5
|
+
validateModeSelection,
|
|
6
|
+
InstallationMode,
|
|
7
|
+
} = require('../../../../.aios-core/infrastructure/scripts/documentation-integrity/mode-detector');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Interactive Wizard for AIOS Installation
|
|
11
|
+
*
|
|
12
|
+
* Supports three installation modes:
|
|
13
|
+
* - GREENFIELD: New project - generates all docs and config
|
|
14
|
+
* - BROWNFIELD: Existing project - analyzes and adapts
|
|
15
|
+
* - FRAMEWORK_DEV: Contributing to aios-core itself
|
|
16
|
+
*
|
|
17
|
+
* @module wizard
|
|
18
|
+
* @version 2.0.0
|
|
19
|
+
* @story 6.9
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Run the interactive installer wizard
|
|
24
|
+
*
|
|
25
|
+
* @param {Object} options - Wizard options
|
|
26
|
+
* @param {string} options.targetDir - Target directory for installation
|
|
27
|
+
* @param {string} options.mode - Pre-selected mode (skip detection)
|
|
28
|
+
* @returns {Promise<Object>} Installation configuration
|
|
29
|
+
*/
|
|
30
|
+
async function runWizard(options = {}) {
|
|
31
|
+
const targetDir = options.targetDir || process.cwd();
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
// Step 1: Welcome screen
|
|
35
|
+
console.log('🚀 Welcome to AIOS Installer\n');
|
|
36
|
+
|
|
37
|
+
// Step 2: Detect installation mode (Story 6.9)
|
|
38
|
+
console.log('📊 Analyzing project directory...');
|
|
39
|
+
const detected = detectInstallationMode(targetDir);
|
|
40
|
+
console.log(`✅ Detected: ${detected.mode} (${detected.reason})\n`);
|
|
41
|
+
|
|
42
|
+
// Step 3: Select installation mode (with user override)
|
|
43
|
+
const selectedMode = options.mode || (await selectInstallationMode(detected));
|
|
44
|
+
|
|
45
|
+
// Step 4: Validate selection
|
|
46
|
+
const validation = validateModeSelection(selectedMode, detected);
|
|
47
|
+
if (validation.warnings.length > 0) {
|
|
48
|
+
console.log('\n⚠️ Warnings:');
|
|
49
|
+
validation.warnings.forEach((w) => console.log(` - ${w}`));
|
|
50
|
+
console.log('');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Step 5: Mode-specific configuration
|
|
54
|
+
const modeConfig = await configureModeSpecific(selectedMode, targetDir, detected);
|
|
55
|
+
|
|
56
|
+
// Step 6: Continue with installation (Stories 1.4-1.8)
|
|
57
|
+
// - IDE Selection (Story 1.4)
|
|
58
|
+
// - MCP Installation (Story 1.5)
|
|
59
|
+
// - Environment Config (Story 1.6)
|
|
60
|
+
// - Validation (Story 1.8)
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
projectType: detected.legacyType, // Backward compatibility
|
|
64
|
+
installationMode: selectedMode,
|
|
65
|
+
targetDir,
|
|
66
|
+
detected,
|
|
67
|
+
modeConfig,
|
|
68
|
+
// Other configuration will be added by downstream stories
|
|
69
|
+
};
|
|
70
|
+
} catch (error) {
|
|
71
|
+
console.error('❌ Installation failed:', error.message);
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Select installation mode with user input
|
|
78
|
+
*
|
|
79
|
+
* @param {Object} detected - Detection result from mode detector
|
|
80
|
+
* @returns {Promise<string>} Selected installation mode
|
|
81
|
+
*/
|
|
82
|
+
async function selectInstallationMode(detected) {
|
|
83
|
+
const options = getModeOptions(detected);
|
|
84
|
+
|
|
85
|
+
console.log('Select installation type:\n');
|
|
86
|
+
options.forEach((opt, index) => {
|
|
87
|
+
const marker = opt.value === detected.mode ? '→' : ' ';
|
|
88
|
+
console.log(`${marker} ${index + 1}. ${opt.label}`);
|
|
89
|
+
console.log(` ${opt.hint}\n`);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Stub: In real implementation, use @clack/prompts select()
|
|
93
|
+
// For now, return detected mode or first option
|
|
94
|
+
console.log(`(Using detected mode: ${detected.mode})`);
|
|
95
|
+
console.log('(Interactive selection via @clack/prompts in Story 1.2)\n');
|
|
96
|
+
|
|
97
|
+
return detected.mode !== InstallationMode.UNKNOWN ? detected.mode : InstallationMode.GREENFIELD;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Configure mode-specific settings
|
|
102
|
+
*
|
|
103
|
+
* @param {string} mode - Selected installation mode
|
|
104
|
+
* @param {string} targetDir - Target directory
|
|
105
|
+
* @param {Object} detected - Detection result
|
|
106
|
+
* @returns {Promise<Object>} Mode-specific configuration
|
|
107
|
+
*/
|
|
108
|
+
async function configureModeSpecific(mode, targetDir, detected) {
|
|
109
|
+
const config = {
|
|
110
|
+
mode,
|
|
111
|
+
generateDocs: true,
|
|
112
|
+
generateConfig: true,
|
|
113
|
+
generateGitignore: true,
|
|
114
|
+
runSetupGithub: false,
|
|
115
|
+
deployment: null,
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
switch (mode) {
|
|
119
|
+
case InstallationMode.FRAMEWORK_DEV:
|
|
120
|
+
// Framework development - skip project setup
|
|
121
|
+
console.log('🔧 Framework Development Mode');
|
|
122
|
+
console.log(' → Using existing framework standards');
|
|
123
|
+
console.log(' → Skipping project documentation generation');
|
|
124
|
+
console.log(' → Skipping infrastructure setup\n');
|
|
125
|
+
config.generateDocs = false;
|
|
126
|
+
config.generateConfig = false;
|
|
127
|
+
config.generateGitignore = false;
|
|
128
|
+
break;
|
|
129
|
+
|
|
130
|
+
case InstallationMode.GREENFIELD:
|
|
131
|
+
// New project - full scaffolding
|
|
132
|
+
console.log('🆕 Greenfield Mode');
|
|
133
|
+
console.log(' → Will generate project documentation');
|
|
134
|
+
console.log(' → Will create project-specific core-config');
|
|
135
|
+
console.log(' → Will generate .gitignore based on tech stack');
|
|
136
|
+
console.log(' → Will offer *setup-github for infrastructure\n');
|
|
137
|
+
config.runSetupGithub = true;
|
|
138
|
+
// Deployment config will be elicited in Phase 3
|
|
139
|
+
config.deployment = await elicitDeploymentConfig();
|
|
140
|
+
break;
|
|
141
|
+
|
|
142
|
+
case InstallationMode.BROWNFIELD:
|
|
143
|
+
// Existing project - analyze and adapt
|
|
144
|
+
console.log('📂 Brownfield Mode');
|
|
145
|
+
console.log(' → Will analyze existing source tree');
|
|
146
|
+
console.log(' → Will detect existing coding standards');
|
|
147
|
+
console.log(' → Will merge with existing .gitignore');
|
|
148
|
+
console.log(' → Will analyze existing GitHub workflows\n');
|
|
149
|
+
// Deployment config will be elicited based on analysis in Phase 3
|
|
150
|
+
config.deployment = await elicitDeploymentConfig();
|
|
151
|
+
break;
|
|
152
|
+
|
|
153
|
+
default:
|
|
154
|
+
console.log('❓ Unknown mode - using greenfield defaults\n');
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return config;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Elicit deployment configuration from user
|
|
162
|
+
* Implements Task 3.3 from Story 6.9
|
|
163
|
+
*
|
|
164
|
+
* @returns {Promise<Object>} Deployment configuration
|
|
165
|
+
*/
|
|
166
|
+
async function elicitDeploymentConfig() {
|
|
167
|
+
// Stub implementation - will be fully implemented in Phase 3
|
|
168
|
+
console.log('📦 Deployment Configuration');
|
|
169
|
+
console.log(' (Full elicitation will be implemented in Phase 3)\n');
|
|
170
|
+
|
|
171
|
+
// Return default staging-first workflow
|
|
172
|
+
return {
|
|
173
|
+
workflow: 'staging-first',
|
|
174
|
+
branches: {
|
|
175
|
+
staging_targets: ['feature/*', 'fix/*', 'docs/*', 'chore/*', 'refactor/*', 'test/*'],
|
|
176
|
+
production_targets: ['hotfix/*'],
|
|
177
|
+
staging_branch: 'staging',
|
|
178
|
+
production_branch: 'main',
|
|
179
|
+
default_target: 'staging',
|
|
180
|
+
},
|
|
181
|
+
environments: {
|
|
182
|
+
staging: {
|
|
183
|
+
name: 'Staging',
|
|
184
|
+
auto_deploy: true,
|
|
185
|
+
platform: null, // To be detected/elicited
|
|
186
|
+
},
|
|
187
|
+
production: {
|
|
188
|
+
name: 'Production',
|
|
189
|
+
auto_deploy: true,
|
|
190
|
+
platform: null,
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
quality_gates: {
|
|
194
|
+
lint: true,
|
|
195
|
+
typecheck: true,
|
|
196
|
+
tests: true,
|
|
197
|
+
security_scan: false,
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Confirm project type with user or allow override
|
|
204
|
+
* @deprecated Use selectInstallationMode instead
|
|
205
|
+
*
|
|
206
|
+
* @param {string} detectedType - Detected project type
|
|
207
|
+
* @returns {Promise<string>} Confirmed project type
|
|
208
|
+
*/
|
|
209
|
+
async function confirmProjectType(detectedType) {
|
|
210
|
+
// Kept for backward compatibility
|
|
211
|
+
const typeDescriptions = {
|
|
212
|
+
GREENFIELD: 'New project - AIOS will create complete structure',
|
|
213
|
+
BROWNFIELD: 'Existing project - AIOS will integrate with current setup',
|
|
214
|
+
EXISTING_AIOS: 'AIOS already installed - Would you like to update or reinstall?',
|
|
215
|
+
UNKNOWN: 'Unknown project type - Manual selection required',
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
console.log(`Project Type: ${detectedType}`);
|
|
219
|
+
console.log(`Description: ${typeDescriptions[detectedType]}`);
|
|
220
|
+
console.log('(Use selectInstallationMode for new three-mode selection)\n');
|
|
221
|
+
|
|
222
|
+
return detectedType;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Get project type for a directory (exposed for downstream stories)
|
|
227
|
+
*
|
|
228
|
+
* @param {string} targetDir - Directory to check
|
|
229
|
+
* @returns {string} Project type
|
|
230
|
+
*/
|
|
231
|
+
function getProjectType(targetDir) {
|
|
232
|
+
return detectProjectType(targetDir);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
module.exports = {
|
|
236
|
+
runWizard,
|
|
237
|
+
selectInstallationMode,
|
|
238
|
+
configureModeSpecific,
|
|
239
|
+
elicitDeploymentConfig,
|
|
240
|
+
confirmProjectType, // Deprecated - kept for backward compatibility
|
|
241
|
+
getProjectType,
|
|
242
|
+
InstallationMode,
|
|
243
|
+
};
|
|
244
|
+
|