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