aios-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (662) hide show
  1. package/.aios-core/cli/commands/generate/index.js +222 -0
  2. package/.aios-core/cli/commands/manifest/index.js +46 -0
  3. package/.aios-core/cli/commands/manifest/regenerate.js +96 -0
  4. package/.aios-core/cli/commands/manifest/validate.js +66 -0
  5. package/.aios-core/cli/commands/mcp/add.js +234 -0
  6. package/.aios-core/cli/commands/mcp/index.js +76 -0
  7. package/.aios-core/cli/commands/mcp/link.js +217 -0
  8. package/.aios-core/cli/commands/mcp/setup.js +164 -0
  9. package/.aios-core/cli/commands/mcp/status.js +183 -0
  10. package/.aios-core/cli/commands/metrics/cleanup.js +91 -0
  11. package/.aios-core/cli/commands/metrics/index.js +65 -0
  12. package/.aios-core/cli/commands/metrics/record.js +154 -0
  13. package/.aios-core/cli/commands/metrics/seed.js +126 -0
  14. package/.aios-core/cli/commands/metrics/show.js +209 -0
  15. package/.aios-core/cli/commands/migrate/analyze.js +353 -0
  16. package/.aios-core/cli/commands/migrate/backup.js +352 -0
  17. package/.aios-core/cli/commands/migrate/execute.js +292 -0
  18. package/.aios-core/cli/commands/migrate/index.js +441 -0
  19. package/.aios-core/cli/commands/migrate/rollback.js +323 -0
  20. package/.aios-core/cli/commands/migrate/update-imports.js +396 -0
  21. package/.aios-core/cli/commands/migrate/validate.js +452 -0
  22. package/.aios-core/cli/commands/qa/index.js +56 -0
  23. package/.aios-core/cli/commands/qa/run.js +163 -0
  24. package/.aios-core/cli/commands/qa/status.js +195 -0
  25. package/.aios-core/cli/commands/workers/formatters/info-formatter.js +274 -0
  26. package/.aios-core/cli/commands/workers/formatters/list-table.js +265 -0
  27. package/.aios-core/cli/commands/workers/formatters/list-tree.js +159 -0
  28. package/.aios-core/cli/commands/workers/index.js +56 -0
  29. package/.aios-core/cli/commands/workers/info.js +194 -0
  30. package/.aios-core/cli/commands/workers/list.js +214 -0
  31. package/.aios-core/cli/commands/workers/search-filters.js +185 -0
  32. package/.aios-core/cli/commands/workers/search-keyword.js +310 -0
  33. package/.aios-core/cli/commands/workers/search-semantic.js +293 -0
  34. package/.aios-core/cli/commands/workers/search.js +154 -0
  35. package/.aios-core/cli/commands/workers/utils/pagination.js +102 -0
  36. package/.aios-core/cli/index.js +128 -0
  37. package/.aios-core/cli/utils/output-formatter-cli.js +232 -0
  38. package/.aios-core/cli/utils/score-calculator.js +221 -0
  39. package/.aios-core/core/README.md +229 -0
  40. package/.aios-core/core/config/config-cache.js +233 -0
  41. package/.aios-core/core/config/config-loader.js +277 -0
  42. package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
  43. package/.aios-core/core/docs/component-creation-guide.md +458 -0
  44. package/.aios-core/core/docs/session-update-pattern.md +314 -0
  45. package/.aios-core/core/docs/template-syntax.md +267 -0
  46. package/.aios-core/core/docs/troubleshooting-guide.md +625 -0
  47. package/.aios-core/core/elicitation/agent-elicitation.js +272 -0
  48. package/.aios-core/core/elicitation/elicitation-engine.js +484 -0
  49. package/.aios-core/core/elicitation/session-manager.js +321 -0
  50. package/.aios-core/core/elicitation/task-elicitation.js +281 -0
  51. package/.aios-core/core/elicitation/workflow-elicitation.js +315 -0
  52. package/.aios-core/core/index.esm.js +42 -0
  53. package/.aios-core/core/index.js +76 -0
  54. package/.aios-core/core/manifest/manifest-generator.js +386 -0
  55. package/.aios-core/core/manifest/manifest-validator.js +429 -0
  56. package/.aios-core/core/mcp/config-migrator.js +340 -0
  57. package/.aios-core/core/mcp/global-config-manager.js +369 -0
  58. package/.aios-core/core/mcp/index.js +34 -0
  59. package/.aios-core/core/mcp/os-detector.js +188 -0
  60. package/.aios-core/core/mcp/symlink-manager.js +413 -0
  61. package/.aios-core/core/migration/migration-config.yaml +83 -0
  62. package/.aios-core/core/migration/module-mapping.yaml +89 -0
  63. package/.aios-core/core/quality-gates/base-layer.js +134 -0
  64. package/.aios-core/core/quality-gates/checklist-generator.js +329 -0
  65. package/.aios-core/core/quality-gates/focus-area-recommender.js +359 -0
  66. package/.aios-core/core/quality-gates/human-review-orchestrator.js +529 -0
  67. package/.aios-core/core/quality-gates/layer1-precommit.js +336 -0
  68. package/.aios-core/core/quality-gates/layer2-pr-automation.js +324 -0
  69. package/.aios-core/core/quality-gates/layer3-human-review.js +348 -0
  70. package/.aios-core/core/quality-gates/notification-manager.js +550 -0
  71. package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -0
  72. package/.aios-core/core/quality-gates/quality-gate-manager.js +601 -0
  73. package/.aios-core/core/registry/README.md +179 -0
  74. package/.aios-core/core/registry/build-registry.js +452 -0
  75. package/.aios-core/core/registry/registry-loader.js +330 -0
  76. package/.aios-core/core/registry/registry-schema.json +166 -0
  77. package/.aios-core/core/registry/service-registry.json +6586 -0
  78. package/.aios-core/core/registry/validate-registry.js +340 -0
  79. package/.aios-core/core/session/context-detector.js +232 -0
  80. package/.aios-core/core/session/context-loader.js +442 -0
  81. package/.aios-core/core/utils/output-formatter.js +298 -0
  82. package/.aios-core/core/utils/security-utils.js +333 -0
  83. package/.aios-core/core/utils/yaml-validator.js +419 -0
  84. package/.aios-core/core-config.yaml +497 -0
  85. package/.aios-core/data/agent-config-requirements.yaml +368 -0
  86. package/.aios-core/data/aios-kb.md +924 -0
  87. package/.aios-core/data/learned-patterns.yaml +3 -0
  88. package/.aios-core/data/technical-preferences.md +4 -0
  89. package/.aios-core/data/workflow-patterns.yaml +611 -0
  90. package/.aios-core/development/README.md +142 -0
  91. package/.aios-core/development/agent-teams/team-all.yaml +15 -0
  92. package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -0
  93. package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -0
  94. package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -0
  95. package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -0
  96. package/.aios-core/development/agents/aios-master.md +370 -0
  97. package/.aios-core/development/agents/analyst.md +195 -0
  98. package/.aios-core/development/agents/architect.md +363 -0
  99. package/.aios-core/development/agents/data-engineer.md +468 -0
  100. package/.aios-core/development/agents/dev.md +403 -0
  101. package/.aios-core/development/agents/devops.md +410 -0
  102. package/.aios-core/development/agents/pm.md +198 -0
  103. package/.aios-core/development/agents/po.md +256 -0
  104. package/.aios-core/development/agents/qa.md +312 -0
  105. package/.aios-core/development/agents/sm.md +220 -0
  106. package/.aios-core/development/agents/squad-creator.md +302 -0
  107. package/.aios-core/development/agents/ux-design-expert.md +471 -0
  108. package/.aios-core/development/scripts/agent-assignment-resolver.js +231 -0
  109. package/.aios-core/development/scripts/agent-config-loader.js +624 -0
  110. package/.aios-core/development/scripts/agent-exit-hooks.js +96 -0
  111. package/.aios-core/development/scripts/apply-inline-greeting-all-agents.js +146 -0
  112. package/.aios-core/development/scripts/audit-agent-config.js +380 -0
  113. package/.aios-core/development/scripts/backlog-manager.js +404 -0
  114. package/.aios-core/development/scripts/batch-update-agents-session-context.js +95 -0
  115. package/.aios-core/development/scripts/decision-context.js +228 -0
  116. package/.aios-core/development/scripts/decision-log-generator.js +293 -0
  117. package/.aios-core/development/scripts/decision-log-indexer.js +284 -0
  118. package/.aios-core/development/scripts/decision-recorder.js +168 -0
  119. package/.aios-core/development/scripts/dev-context-loader.js +297 -0
  120. package/.aios-core/development/scripts/generate-greeting.js +160 -0
  121. package/.aios-core/development/scripts/greeting-builder.js +866 -0
  122. package/.aios-core/development/scripts/greeting-config-cli.js +85 -0
  123. package/.aios-core/development/scripts/greeting-preference-manager.js +145 -0
  124. package/.aios-core/development/scripts/migrate-task-to-v2.js +377 -0
  125. package/.aios-core/development/scripts/squad/README.md +112 -0
  126. package/.aios-core/development/scripts/squad/index.js +123 -0
  127. package/.aios-core/development/scripts/squad/squad-analyzer.js +638 -0
  128. package/.aios-core/development/scripts/squad/squad-designer.js +1010 -0
  129. package/.aios-core/development/scripts/squad/squad-downloader.js +510 -0
  130. package/.aios-core/development/scripts/squad/squad-extender.js +871 -0
  131. package/.aios-core/development/scripts/squad/squad-generator.js +1405 -0
  132. package/.aios-core/development/scripts/squad/squad-loader.js +359 -0
  133. package/.aios-core/development/scripts/squad/squad-migrator.js +632 -0
  134. package/.aios-core/development/scripts/squad/squad-publisher.js +629 -0
  135. package/.aios-core/development/scripts/squad/squad-validator.js +783 -0
  136. package/.aios-core/development/scripts/story-index-generator.js +337 -0
  137. package/.aios-core/development/scripts/story-manager.js +375 -0
  138. package/.aios-core/development/scripts/story-update-hook.js +259 -0
  139. package/.aios-core/development/scripts/task-identifier-resolver.js +145 -0
  140. package/.aios-core/development/scripts/test-greeting-system.js +142 -0
  141. package/.aios-core/development/scripts/validate-task-v2.js +319 -0
  142. package/.aios-core/development/scripts/workflow-navigator.js +214 -0
  143. package/.aios-core/development/tasks/add-mcp.md +436 -0
  144. package/.aios-core/development/tasks/advanced-elicitation.md +319 -0
  145. package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +342 -0
  146. package/.aios-core/development/tasks/analyze-brownfield.md +456 -0
  147. package/.aios-core/development/tasks/analyze-framework.md +697 -0
  148. package/.aios-core/development/tasks/analyze-performance.md +637 -0
  149. package/.aios-core/development/tasks/analyze-project-structure.md +621 -0
  150. package/.aios-core/development/tasks/apply-qa-fixes.md +340 -0
  151. package/.aios-core/development/tasks/architect-analyze-impact.md +827 -0
  152. package/.aios-core/development/tasks/audit-codebase.md +429 -0
  153. package/.aios-core/development/tasks/audit-tailwind-config.md +270 -0
  154. package/.aios-core/development/tasks/audit-utilities.md +358 -0
  155. package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -0
  156. package/.aios-core/development/tasks/brownfield-create-epic.md +486 -0
  157. package/.aios-core/development/tasks/brownfield-create-story.md +357 -0
  158. package/.aios-core/development/tasks/build-component.md +478 -0
  159. package/.aios-core/development/tasks/calculate-roi.md +455 -0
  160. package/.aios-core/development/tasks/ci-cd-configuration.md +764 -0
  161. package/.aios-core/development/tasks/cleanup-utilities.md +670 -0
  162. package/.aios-core/development/tasks/collaborative-edit.md +1109 -0
  163. package/.aios-core/development/tasks/compose-molecule.md +284 -0
  164. package/.aios-core/development/tasks/consolidate-patterns.md +414 -0
  165. package/.aios-core/development/tasks/correct-course.md +280 -0
  166. package/.aios-core/development/tasks/create-agent.md +322 -0
  167. package/.aios-core/development/tasks/create-brownfield-story.md +727 -0
  168. package/.aios-core/development/tasks/create-deep-research-prompt.md +499 -0
  169. package/.aios-core/development/tasks/create-doc.md +316 -0
  170. package/.aios-core/development/tasks/create-next-story.md +774 -0
  171. package/.aios-core/development/tasks/create-service.md +391 -0
  172. package/.aios-core/development/tasks/create-suite.md +284 -0
  173. package/.aios-core/development/tasks/create-task.md +372 -0
  174. package/.aios-core/development/tasks/create-workflow.md +371 -0
  175. package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -0
  176. package/.aios-core/development/tasks/db-apply-migration.md +381 -0
  177. package/.aios-core/development/tasks/db-bootstrap.md +642 -0
  178. package/.aios-core/development/tasks/db-domain-modeling.md +693 -0
  179. package/.aios-core/development/tasks/db-dry-run.md +293 -0
  180. package/.aios-core/development/tasks/db-env-check.md +260 -0
  181. package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -0
  182. package/.aios-core/development/tasks/db-explain.md +631 -0
  183. package/.aios-core/development/tasks/db-impersonate.md +495 -0
  184. package/.aios-core/development/tasks/db-load-csv.md +593 -0
  185. package/.aios-core/development/tasks/db-policy-apply.md +653 -0
  186. package/.aios-core/development/tasks/db-rls-audit.md +411 -0
  187. package/.aios-core/development/tasks/db-rollback.md +739 -0
  188. package/.aios-core/development/tasks/db-run-sql.md +613 -0
  189. package/.aios-core/development/tasks/db-schema-audit.md +1011 -0
  190. package/.aios-core/development/tasks/db-seed.md +390 -0
  191. package/.aios-core/development/tasks/db-smoke-test.md +351 -0
  192. package/.aios-core/development/tasks/db-snapshot.md +569 -0
  193. package/.aios-core/development/tasks/db-supabase-setup.md +712 -0
  194. package/.aios-core/development/tasks/db-verify-order.md +515 -0
  195. package/.aios-core/development/tasks/deprecate-component.md +957 -0
  196. package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -0
  197. package/.aios-core/development/tasks/dev-backlog-debt.md +469 -0
  198. package/.aios-core/development/tasks/dev-develop-story.md +846 -0
  199. package/.aios-core/development/tasks/dev-improve-code-quality.md +873 -0
  200. package/.aios-core/development/tasks/dev-optimize-performance.md +1034 -0
  201. package/.aios-core/development/tasks/dev-suggest-refactoring.md +871 -0
  202. package/.aios-core/development/tasks/dev-validate-next-story.md +349 -0
  203. package/.aios-core/development/tasks/document-project.md +553 -0
  204. package/.aios-core/development/tasks/environment-bootstrap.md +1311 -0
  205. package/.aios-core/development/tasks/execute-checklist.md +301 -0
  206. package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -0
  207. package/.aios-core/development/tasks/extend-pattern.md +269 -0
  208. package/.aios-core/development/tasks/extract-tokens.md +467 -0
  209. package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -0
  210. package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +261 -0
  211. package/.aios-core/development/tasks/generate-documentation.md +284 -0
  212. package/.aios-core/development/tasks/generate-migration-strategy.md +522 -0
  213. package/.aios-core/development/tasks/generate-shock-report.md +501 -0
  214. package/.aios-core/development/tasks/github-devops-github-pr-automation.md +664 -0
  215. package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -0
  216. package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -0
  217. package/.aios-core/development/tasks/github-devops-version-management.md +483 -0
  218. package/.aios-core/development/tasks/improve-self.md +823 -0
  219. package/.aios-core/development/tasks/index-docs.md +388 -0
  220. package/.aios-core/development/tasks/init-project-status.md +506 -0
  221. package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -0
  222. package/.aios-core/development/tasks/kb-mode-interaction.md +284 -0
  223. package/.aios-core/development/tasks/learn-patterns.md +901 -0
  224. package/.aios-core/development/tasks/mcp-workflow.md +437 -0
  225. package/.aios-core/development/tasks/modify-agent.md +382 -0
  226. package/.aios-core/development/tasks/modify-task.md +425 -0
  227. package/.aios-core/development/tasks/modify-workflow.md +466 -0
  228. package/.aios-core/development/tasks/next.md +294 -0
  229. package/.aios-core/development/tasks/patterns.md +334 -0
  230. package/.aios-core/development/tasks/po-backlog-add.md +370 -0
  231. package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -0
  232. package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -0
  233. package/.aios-core/development/tasks/po-pull-story.md +316 -0
  234. package/.aios-core/development/tasks/po-stories-index.md +351 -0
  235. package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -0
  236. package/.aios-core/development/tasks/po-sync-story.md +303 -0
  237. package/.aios-core/development/tasks/pr-automation.md +701 -0
  238. package/.aios-core/development/tasks/propose-modification.md +843 -0
  239. package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -0
  240. package/.aios-core/development/tasks/qa-gate.md +374 -0
  241. package/.aios-core/development/tasks/qa-generate-tests.md +1175 -0
  242. package/.aios-core/development/tasks/qa-nfr-assess.md +558 -0
  243. package/.aios-core/development/tasks/qa-review-proposal.md +1158 -0
  244. package/.aios-core/development/tasks/qa-review-story.md +683 -0
  245. package/.aios-core/development/tasks/qa-risk-profile.md +567 -0
  246. package/.aios-core/development/tasks/qa-run-tests.md +277 -0
  247. package/.aios-core/development/tasks/qa-test-design.md +388 -0
  248. package/.aios-core/development/tasks/qa-trace-requirements.md +477 -0
  249. package/.aios-core/development/tasks/release-management.md +723 -0
  250. package/.aios-core/development/tasks/search-mcp.md +309 -0
  251. package/.aios-core/development/tasks/security-audit.md +554 -0
  252. package/.aios-core/development/tasks/security-scan.md +790 -0
  253. package/.aios-core/development/tasks/setup-database.md +741 -0
  254. package/.aios-core/development/tasks/setup-design-system.md +462 -0
  255. package/.aios-core/development/tasks/setup-github.md +874 -0
  256. package/.aios-core/development/tasks/setup-llm-routing.md +229 -0
  257. package/.aios-core/development/tasks/setup-mcp-docker.md +627 -0
  258. package/.aios-core/development/tasks/setup-project-docs.md +440 -0
  259. package/.aios-core/development/tasks/shard-doc.md +538 -0
  260. package/.aios-core/development/tasks/sm-create-next-story.md +480 -0
  261. package/.aios-core/development/tasks/squad-creator-analyze.md +315 -0
  262. package/.aios-core/development/tasks/squad-creator-create.md +312 -0
  263. package/.aios-core/development/tasks/squad-creator-design.md +334 -0
  264. package/.aios-core/development/tasks/squad-creator-download.md +167 -0
  265. package/.aios-core/development/tasks/squad-creator-extend.md +411 -0
  266. package/.aios-core/development/tasks/squad-creator-list.md +225 -0
  267. package/.aios-core/development/tasks/squad-creator-migrate.md +243 -0
  268. package/.aios-core/development/tasks/squad-creator-publish.md +229 -0
  269. package/.aios-core/development/tasks/squad-creator-sync-synkra.md +315 -0
  270. package/.aios-core/development/tasks/squad-creator-validate.md +159 -0
  271. package/.aios-core/development/tasks/sync-documentation.md +865 -0
  272. package/.aios-core/development/tasks/tailwind-upgrade.md +294 -0
  273. package/.aios-core/development/tasks/test-as-user.md +621 -0
  274. package/.aios-core/development/tasks/test-validation-task.md +171 -0
  275. package/.aios-core/development/tasks/undo-last.md +347 -0
  276. package/.aios-core/development/tasks/update-manifest.md +410 -0
  277. package/.aios-core/development/tasks/ux-create-wireframe.md +617 -0
  278. package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -0
  279. package/.aios-core/development/tasks/ux-user-research.md +559 -0
  280. package/.aios-core/development/tasks/validate-next-story.md +423 -0
  281. package/.aios-core/development/tasks/waves.md +205 -0
  282. package/.aios-core/development/templates/service-template/README.md.hbs +158 -0
  283. package/.aios-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -0
  284. package/.aios-core/development/templates/service-template/client.ts.hbs +403 -0
  285. package/.aios-core/development/templates/service-template/errors.ts.hbs +182 -0
  286. package/.aios-core/development/templates/service-template/index.ts.hbs +120 -0
  287. package/.aios-core/development/templates/service-template/jest.config.js +89 -0
  288. package/.aios-core/development/templates/service-template/package.json.hbs +87 -0
  289. package/.aios-core/development/templates/service-template/tsconfig.json +45 -0
  290. package/.aios-core/development/templates/service-template/types.ts.hbs +145 -0
  291. package/.aios-core/development/templates/squad/agent-template.md +69 -0
  292. package/.aios-core/development/templates/squad/checklist-template.md +82 -0
  293. package/.aios-core/development/templates/squad/data-template.yaml +105 -0
  294. package/.aios-core/development/templates/squad/script-template.js +179 -0
  295. package/.aios-core/development/templates/squad/task-template.md +125 -0
  296. package/.aios-core/development/templates/squad/template-template.md +97 -0
  297. package/.aios-core/development/templates/squad/tool-template.js +103 -0
  298. package/.aios-core/development/templates/squad/workflow-template.yaml +108 -0
  299. package/.aios-core/development/workflows/README.md +84 -0
  300. package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -0
  301. package/.aios-core/development/workflows/brownfield-service.yaml +187 -0
  302. package/.aios-core/development/workflows/brownfield-ui.yaml +197 -0
  303. package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -0
  304. package/.aios-core/development/workflows/greenfield-service.yaml +206 -0
  305. package/.aios-core/development/workflows/greenfield-ui.yaml +235 -0
  306. package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -0
  307. package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -0
  308. package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -0
  309. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -0
  310. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -0
  311. package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -0
  312. package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -0
  313. package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -0
  314. package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -0
  315. package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -0
  316. package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -0
  317. package/.aios-core/elicitation/agent-elicitation.js +272 -0
  318. package/.aios-core/elicitation/task-elicitation.js +281 -0
  319. package/.aios-core/elicitation/workflow-elicitation.js +315 -0
  320. package/.aios-core/index.esm.js +16 -0
  321. package/.aios-core/index.js +16 -0
  322. package/.aios-core/infrastructure/README.md +126 -0
  323. package/.aios-core/infrastructure/index.js +199 -0
  324. package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -0
  325. package/.aios-core/infrastructure/integrations/pm-adapters/clickup-adapter.js +345 -0
  326. package/.aios-core/infrastructure/integrations/pm-adapters/github-adapter.js +392 -0
  327. package/.aios-core/infrastructure/integrations/pm-adapters/jira-adapter.js +448 -0
  328. package/.aios-core/infrastructure/integrations/pm-adapters/local-adapter.js +175 -0
  329. package/.aios-core/infrastructure/scripts/aios-validator.js +294 -0
  330. package/.aios-core/infrastructure/scripts/approval-workflow.js +643 -0
  331. package/.aios-core/infrastructure/scripts/atomic-layer-classifier.js +308 -0
  332. package/.aios-core/infrastructure/scripts/backup-manager.js +607 -0
  333. package/.aios-core/infrastructure/scripts/batch-creator.js +608 -0
  334. package/.aios-core/infrastructure/scripts/branch-manager.js +391 -0
  335. package/.aios-core/infrastructure/scripts/capability-analyzer.js +535 -0
  336. package/.aios-core/infrastructure/scripts/clickup-helpers.js +226 -0
  337. package/.aios-core/infrastructure/scripts/code-quality-improver.js +1312 -0
  338. package/.aios-core/infrastructure/scripts/commit-message-generator.js +850 -0
  339. package/.aios-core/infrastructure/scripts/component-generator.js +738 -0
  340. package/.aios-core/infrastructure/scripts/component-metadata.js +627 -0
  341. package/.aios-core/infrastructure/scripts/component-search.js +277 -0
  342. package/.aios-core/infrastructure/scripts/config-cache.js +322 -0
  343. package/.aios-core/infrastructure/scripts/config-loader.js +349 -0
  344. package/.aios-core/infrastructure/scripts/conflict-resolver.js +675 -0
  345. package/.aios-core/infrastructure/scripts/coverage-analyzer.js +882 -0
  346. package/.aios-core/infrastructure/scripts/dependency-analyzer.js +638 -0
  347. package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +703 -0
  348. package/.aios-core/infrastructure/scripts/diff-generator.js +129 -0
  349. package/.aios-core/infrastructure/scripts/documentation-integrity/brownfield-analyzer.js +501 -0
  350. package/.aios-core/infrastructure/scripts/documentation-integrity/config-generator.js +368 -0
  351. package/.aios-core/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +308 -0
  352. package/.aios-core/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
  353. package/.aios-core/infrastructure/scripts/documentation-integrity/gitignore-generator.js +312 -0
  354. package/.aios-core/infrastructure/scripts/documentation-integrity/index.js +74 -0
  355. package/.aios-core/infrastructure/scripts/documentation-integrity/mode-detector.js +389 -0
  356. package/.aios-core/infrastructure/scripts/documentation-synchronizer.js +1432 -0
  357. package/.aios-core/infrastructure/scripts/framework-analyzer.js +746 -0
  358. package/.aios-core/infrastructure/scripts/git-config-detector.js +293 -0
  359. package/.aios-core/infrastructure/scripts/git-wrapper.js +443 -0
  360. package/.aios-core/infrastructure/scripts/ide-sync/README.md +184 -0
  361. package/.aios-core/infrastructure/scripts/ide-sync/agent-parser.js +295 -0
  362. package/.aios-core/infrastructure/scripts/ide-sync/index.js +502 -0
  363. package/.aios-core/infrastructure/scripts/ide-sync/redirect-generator.js +200 -0
  364. package/.aios-core/infrastructure/scripts/ide-sync/transformers/antigravity.js +105 -0
  365. package/.aios-core/infrastructure/scripts/ide-sync/transformers/claude-code.js +84 -0
  366. package/.aios-core/infrastructure/scripts/ide-sync/transformers/cursor.js +94 -0
  367. package/.aios-core/infrastructure/scripts/ide-sync/transformers/trae.js +125 -0
  368. package/.aios-core/infrastructure/scripts/ide-sync/transformers/windsurf.js +106 -0
  369. package/.aios-core/infrastructure/scripts/ide-sync/validator.js +273 -0
  370. package/.aios-core/infrastructure/scripts/improvement-engine.js +758 -0
  371. package/.aios-core/infrastructure/scripts/improvement-validator.js +710 -0
  372. package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +280 -0
  373. package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
  374. package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
  375. package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.cmd +80 -0
  376. package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.sh +62 -0
  377. package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.cmd +26 -0
  378. package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.sh +18 -0
  379. package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
  380. package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
  381. package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
  382. package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
  383. package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
  384. package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +970 -0
  385. package/.aios-core/infrastructure/scripts/modification-validator.js +555 -0
  386. package/.aios-core/infrastructure/scripts/output-formatter.js +297 -0
  387. package/.aios-core/infrastructure/scripts/performance-analyzer.js +758 -0
  388. package/.aios-core/infrastructure/scripts/performance-and-error-resolver.js +258 -0
  389. package/.aios-core/infrastructure/scripts/performance-optimizer.js +1902 -0
  390. package/.aios-core/infrastructure/scripts/performance-tracker.js +452 -0
  391. package/.aios-core/infrastructure/scripts/pm-adapter-factory.js +181 -0
  392. package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -0
  393. package/.aios-core/infrastructure/scripts/project-status-loader.js +445 -0
  394. package/.aios-core/infrastructure/scripts/refactoring-suggester.js +1139 -0
  395. package/.aios-core/infrastructure/scripts/repository-detector.js +64 -0
  396. package/.aios-core/infrastructure/scripts/sandbox-tester.js +618 -0
  397. package/.aios-core/infrastructure/scripts/security-checker.js +359 -0
  398. package/.aios-core/infrastructure/scripts/spot-check-validator.js +149 -0
  399. package/.aios-core/infrastructure/scripts/status-mapper.js +115 -0
  400. package/.aios-core/infrastructure/scripts/template-engine.js +240 -0
  401. package/.aios-core/infrastructure/scripts/template-validator.js +279 -0
  402. package/.aios-core/infrastructure/scripts/test-generator.js +844 -0
  403. package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1081 -0
  404. package/.aios-core/infrastructure/scripts/test-utilities-fast.js +126 -0
  405. package/.aios-core/infrastructure/scripts/test-utilities.js +200 -0
  406. package/.aios-core/infrastructure/scripts/tool-resolver.js +360 -0
  407. package/.aios-core/infrastructure/scripts/transaction-manager.js +590 -0
  408. package/.aios-core/infrastructure/scripts/usage-analytics.js +634 -0
  409. package/.aios-core/infrastructure/scripts/validate-output-pattern.js +213 -0
  410. package/.aios-core/infrastructure/scripts/visual-impact-generator.js +1056 -0
  411. package/.aios-core/infrastructure/scripts/yaml-validator.js +397 -0
  412. package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -0
  413. package/.aios-core/infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml +176 -0
  414. package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +168 -0
  415. package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -0
  416. package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -0
  417. package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -0
  418. package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -0
  419. package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -0
  420. package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -0
  421. package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -0
  422. package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -0
  423. package/.aios-core/infrastructure/templates/project-docs/coding-standards-tmpl.md +346 -0
  424. package/.aios-core/infrastructure/templates/project-docs/source-tree-tmpl.md +177 -0
  425. package/.aios-core/infrastructure/templates/project-docs/tech-stack-tmpl.md +267 -0
  426. package/.aios-core/infrastructure/tests/project-status-loader.test.js +394 -0
  427. package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -0
  428. package/.aios-core/infrastructure/tests/validate-module.js +97 -0
  429. package/.aios-core/infrastructure/tools/README.md +222 -0
  430. package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -0
  431. package/.aios-core/infrastructure/tools/cli/llm-routing.yaml +126 -0
  432. package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -0
  433. package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -0
  434. package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -0
  435. package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -0
  436. package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -0
  437. package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -0
  438. package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -0
  439. package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -0
  440. package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -0
  441. package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -0
  442. package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -0
  443. package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -0
  444. package/.aios-core/install-manifest.yaml +2338 -0
  445. package/.aios-core/manifests/schema/manifest-schema.json +190 -0
  446. package/.aios-core/package.json +103 -0
  447. package/.aios-core/product/README.md +56 -0
  448. package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
  449. package/.aios-core/product/checklists/architect-checklist.md +444 -0
  450. package/.aios-core/product/checklists/change-checklist.md +183 -0
  451. package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
  452. package/.aios-core/product/checklists/database-design-checklist.md +119 -0
  453. package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -0
  454. package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -0
  455. package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
  456. package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
  457. package/.aios-core/product/checklists/pm-checklist.md +376 -0
  458. package/.aios-core/product/checklists/po-master-checklist.md +442 -0
  459. package/.aios-core/product/checklists/pre-push-checklist.md +108 -0
  460. package/.aios-core/product/checklists/release-checklist.md +122 -0
  461. package/.aios-core/product/checklists/story-dod-checklist.md +102 -0
  462. package/.aios-core/product/checklists/story-draft-checklist.md +216 -0
  463. package/.aios-core/product/data/atomic-design-principles.md +108 -0
  464. package/.aios-core/product/data/brainstorming-techniques.md +37 -0
  465. package/.aios-core/product/data/consolidation-algorithms.md +142 -0
  466. package/.aios-core/product/data/database-best-practices.md +182 -0
  467. package/.aios-core/product/data/design-token-best-practices.md +107 -0
  468. package/.aios-core/product/data/elicitation-methods.md +135 -0
  469. package/.aios-core/product/data/integration-patterns.md +207 -0
  470. package/.aios-core/product/data/migration-safety-guide.md +329 -0
  471. package/.aios-core/product/data/mode-selection-best-practices.md +471 -0
  472. package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
  473. package/.aios-core/product/data/rls-security-patterns.md +333 -0
  474. package/.aios-core/product/data/roi-calculation-guide.md +142 -0
  475. package/.aios-core/product/data/supabase-patterns.md +330 -0
  476. package/.aios-core/product/data/test-levels-framework.md +149 -0
  477. package/.aios-core/product/data/test-priorities-matrix.md +175 -0
  478. package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
  479. package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -0
  480. package/.aios-core/product/templates/activation-instructions-template.md +258 -0
  481. package/.aios-core/product/templates/adr.hbs +125 -0
  482. package/.aios-core/product/templates/agent-template.yaml +121 -0
  483. package/.aios-core/product/templates/architecture-tmpl.yaml +651 -0
  484. package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +156 -0
  485. package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +476 -0
  486. package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +280 -0
  487. package/.aios-core/product/templates/changelog-template.md +134 -0
  488. package/.aios-core/product/templates/command-rationalization-matrix.md +152 -0
  489. package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +293 -0
  490. package/.aios-core/product/templates/component-react-tmpl.tsx +98 -0
  491. package/.aios-core/product/templates/dbdr.hbs +241 -0
  492. package/.aios-core/product/templates/design-story-tmpl.yaml +587 -0
  493. package/.aios-core/product/templates/ds-artifact-analysis.md +70 -0
  494. package/.aios-core/product/templates/engine/elicitation.js +298 -0
  495. package/.aios-core/product/templates/engine/index.js +308 -0
  496. package/.aios-core/product/templates/engine/loader.js +231 -0
  497. package/.aios-core/product/templates/engine/renderer.js +343 -0
  498. package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -0
  499. package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -0
  500. package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -0
  501. package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -0
  502. package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -0
  503. package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -0
  504. package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -0
  505. package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -0
  506. package/.aios-core/product/templates/engine/validator.js +294 -0
  507. package/.aios-core/product/templates/epic.hbs +212 -0
  508. package/.aios-core/product/templates/eslintrc-security.json +32 -0
  509. package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +206 -0
  510. package/.aios-core/product/templates/front-end-spec-tmpl.yaml +349 -0
  511. package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +805 -0
  512. package/.aios-core/product/templates/github-actions-cd.yml +212 -0
  513. package/.aios-core/product/templates/github-actions-ci.yml +172 -0
  514. package/.aios-core/product/templates/github-pr-template.md +67 -0
  515. package/.aios-core/product/templates/gordon-mcp.yaml +140 -0
  516. package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -0
  517. package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -0
  518. package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -0
  519. package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -0
  520. package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -0
  521. package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -0
  522. package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -0
  523. package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -0
  524. package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -0
  525. package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -0
  526. package/.aios-core/product/templates/market-research-tmpl.yaml +252 -0
  527. package/.aios-core/product/templates/mcp-workflow.js +271 -0
  528. package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -0
  529. package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -0
  530. package/.aios-core/product/templates/personalized-agent-template.md +258 -0
  531. package/.aios-core/product/templates/personalized-checklist-template.md +340 -0
  532. package/.aios-core/product/templates/personalized-task-template-v2.md +905 -0
  533. package/.aios-core/product/templates/personalized-task-template.md +344 -0
  534. package/.aios-core/product/templates/personalized-template-file.yaml +322 -0
  535. package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -0
  536. package/.aios-core/product/templates/pmdr.hbs +186 -0
  537. package/.aios-core/product/templates/prd-tmpl.yaml +202 -0
  538. package/.aios-core/product/templates/prd-v2.0.hbs +216 -0
  539. package/.aios-core/product/templates/prd.hbs +201 -0
  540. package/.aios-core/product/templates/project-brief-tmpl.yaml +221 -0
  541. package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -0
  542. package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -0
  543. package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -0
  544. package/.aios-core/product/templates/shock-report-tmpl.html +502 -0
  545. package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -0
  546. package/.aios-core/product/templates/story-tmpl.yaml +332 -0
  547. package/.aios-core/product/templates/story.hbs +263 -0
  548. package/.aios-core/product/templates/task-execution-report.md +495 -0
  549. package/.aios-core/product/templates/task-template.md +123 -0
  550. package/.aios-core/product/templates/task.hbs +170 -0
  551. package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -0
  552. package/.aios-core/product/templates/tmpl-migration-script.sql +91 -0
  553. package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -0
  554. package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -0
  555. package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -0
  556. package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -0
  557. package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -0
  558. package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -0
  559. package/.aios-core/product/templates/tmpl-seed-data.sql +140 -0
  560. package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -0
  561. package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -0
  562. package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -0
  563. package/.aios-core/product/templates/tmpl-trigger.sql +152 -0
  564. package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -0
  565. package/.aios-core/product/templates/tmpl-view.sql +177 -0
  566. package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -0
  567. package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -0
  568. package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -0
  569. package/.aios-core/product/templates/workflow-template.yaml +134 -0
  570. package/.aios-core/quality/metrics-collector.js +599 -0
  571. package/.aios-core/quality/metrics-hook.js +260 -0
  572. package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -0
  573. package/.aios-core/quality/seed-metrics.js +336 -0
  574. package/.aios-core/schemas/squad-design-schema.json +299 -0
  575. package/.aios-core/schemas/squad-schema.json +185 -0
  576. package/.aios-core/scripts/README.md +122 -0
  577. package/.aios-core/scripts/aios-doc-template.md +325 -0
  578. package/.aios-core/scripts/batch-migrate-phase1.ps1 +36 -0
  579. package/.aios-core/scripts/batch-migrate-phase2.ps1 +88 -0
  580. package/.aios-core/scripts/batch-migrate-phase3.ps1 +45 -0
  581. package/.aios-core/scripts/command-execution-hook.js +201 -0
  582. package/.aios-core/scripts/migrate-framework-docs.sh +300 -0
  583. package/.aios-core/scripts/session-context-loader.js +45 -0
  584. package/.aios-core/scripts/test-template-system.js +941 -0
  585. package/.aios-core/scripts/validate-phase1.ps1 +35 -0
  586. package/.aios-core/scripts/workflow-management.md +69 -0
  587. package/.aios-core/user-guide.md +1413 -0
  588. package/.aios-core/utils/aios-validator.js +25 -0
  589. package/.aios-core/workflow-intelligence/__tests__/confidence-scorer.test.js +334 -0
  590. package/.aios-core/workflow-intelligence/__tests__/integration.test.js +337 -0
  591. package/.aios-core/workflow-intelligence/__tests__/suggestion-engine.test.js +433 -0
  592. package/.aios-core/workflow-intelligence/__tests__/wave-analyzer.test.js +458 -0
  593. package/.aios-core/workflow-intelligence/__tests__/workflow-registry.test.js +302 -0
  594. package/.aios-core/workflow-intelligence/engine/confidence-scorer.js +305 -0
  595. package/.aios-core/workflow-intelligence/engine/output-formatter.js +285 -0
  596. package/.aios-core/workflow-intelligence/engine/suggestion-engine.js +603 -0
  597. package/.aios-core/workflow-intelligence/engine/wave-analyzer.js +676 -0
  598. package/.aios-core/workflow-intelligence/index.js +327 -0
  599. package/.aios-core/workflow-intelligence/learning/capture-hook.js +147 -0
  600. package/.aios-core/workflow-intelligence/learning/index.js +230 -0
  601. package/.aios-core/workflow-intelligence/learning/pattern-capture.js +340 -0
  602. package/.aios-core/workflow-intelligence/learning/pattern-store.js +498 -0
  603. package/.aios-core/workflow-intelligence/learning/pattern-validator.js +309 -0
  604. package/.aios-core/workflow-intelligence/registry/workflow-registry.js +358 -0
  605. package/.aios-core/working-in-the-brownfield.md +361 -0
  606. package/.claude/rules/mcp-usage.md +176 -0
  607. package/LICENSE +48 -0
  608. package/README.md +705 -0
  609. package/bin/aios-init.js +867 -0
  610. package/bin/aios-minimal.js +26 -0
  611. package/bin/aios.js +280 -0
  612. package/bin/modules/env-config.js +436 -0
  613. package/bin/modules/mcp-installer.js +383 -0
  614. package/bin/utils/install-errors.js +339 -0
  615. package/bin/utils/install-transaction.js +445 -0
  616. package/package.json +126 -0
  617. package/packages/installer/package.json +39 -0
  618. package/packages/installer/src/config/configure-environment.js +312 -0
  619. package/packages/installer/src/config/templates/core-config-template.js +183 -0
  620. package/packages/installer/src/config/templates/env-template.js +270 -0
  621. package/packages/installer/src/config/validation/config-validator.js +243 -0
  622. package/packages/installer/src/detection/detect-project-type.js +81 -0
  623. package/packages/installer/src/wizard/wizard.js +244 -0
  624. package/packages/installer/tests/integration/environment-configuration.test.js +329 -0
  625. package/packages/installer/tests/integration/wizard-detection.test.js +351 -0
  626. package/packages/installer/tests/unit/config-validator.test.js +315 -0
  627. package/packages/installer/tests/unit/detection/detect-project-type.test.js +401 -0
  628. package/packages/installer/tests/unit/env-template.test.js +187 -0
  629. package/scripts/generate-install-manifest.js +337 -0
  630. package/scripts/validate-manifest.js +265 -0
  631. package/src/config/ide-configs.js +189 -0
  632. package/src/installer/aios-core-installer.js +319 -0
  633. package/src/installer/brownfield-upgrader.js +438 -0
  634. package/src/installer/dependency-installer.js +335 -0
  635. package/src/installer/file-hasher.js +137 -0
  636. package/src/utils/aios-colors.js +234 -0
  637. package/src/wizard/feedback.js +218 -0
  638. package/src/wizard/ide-config-generator.js +536 -0
  639. package/src/wizard/ide-selector.js +84 -0
  640. package/src/wizard/index.js +589 -0
  641. package/src/wizard/questions.js +249 -0
  642. package/src/wizard/validation/index.js +120 -0
  643. package/src/wizard/validation/report-generator.js +269 -0
  644. package/src/wizard/validation/troubleshooting-system.js +346 -0
  645. package/src/wizard/validation/validators/config-validator.js +362 -0
  646. package/src/wizard/validation/validators/dependency-validator.js +333 -0
  647. package/src/wizard/validation/validators/file-structure-validator.js +181 -0
  648. package/src/wizard/validation/validators/mcp-health-checker.js +310 -0
  649. package/src/wizard/validators.js +274 -0
  650. package/templates/squad/LICENSE +21 -0
  651. package/templates/squad/README.md +37 -0
  652. package/templates/squad/agents/example-agent.yaml +36 -0
  653. package/templates/squad/package.json +19 -0
  654. package/templates/squad/squad.yaml +25 -0
  655. package/templates/squad/tasks/example-task.yaml +46 -0
  656. package/templates/squad/templates/example-template.md +24 -0
  657. package/templates/squad/tests/example-agent.test.js +53 -0
  658. package/templates/squad/workflows/example-workflow.yaml +54 -0
  659. package/tools/diagnose-installation.js +266 -0
  660. package/tools/diagnose-npx-issue.ps1 +96 -0
  661. package/tools/quick-diagnose.cmd +85 -0
  662. package/tools/quick-diagnose.ps1 +117 -0
@@ -0,0 +1,783 @@
1
+ /**
2
+ * Squad Validator Utility
3
+ *
4
+ * Validates squads against:
5
+ * 1. JSON Schema (squad.yaml/config.yaml)
6
+ * 2. Directory structure (task-first architecture)
7
+ * 3. Task format (TASK-FORMAT-SPECIFICATION-V1)
8
+ * 4. Agent definitions
9
+ *
10
+ * Used by: squad-creator agent (*validate-squad task)
11
+ *
12
+ * @module squad-validator
13
+ * @version 1.0.0
14
+ * @see Story SQS-3: Squad Validator + JSON Schema
15
+ */
16
+
17
+ const Ajv = require('ajv');
18
+ const fs = require('fs').promises;
19
+ const path = require('path');
20
+ const yaml = require('js-yaml');
21
+
22
+ /**
23
+ * Load schema - handle both require and dynamic loading
24
+ * @returns {Object} JSON Schema
25
+ */
26
+ function loadSchema() {
27
+ try {
28
+ return require('../../../schemas/squad-schema.json');
29
+ } catch {
30
+ // Fallback for test environments
31
+ return null;
32
+ }
33
+ }
34
+
35
+ /**
36
+ * Supported manifest file names in order of preference
37
+ * @constant {string[]}
38
+ */
39
+ const MANIFEST_FILES = ['squad.yaml', 'config.yaml'];
40
+
41
+ /**
42
+ * Required fields in tasks (TASK-FORMAT-SPECIFICATION-V1)
43
+ * @constant {string[]}
44
+ */
45
+ const TASK_REQUIRED_FIELDS = [
46
+ 'task',
47
+ 'responsavel',
48
+ 'responsavel_type',
49
+ 'atomic_layer',
50
+ 'Entrada',
51
+ 'Saida',
52
+ 'Checklist',
53
+ ];
54
+
55
+ /**
56
+ * Error codes for SquadValidatorError
57
+ * @enum {string}
58
+ */
59
+ const ValidationErrorCodes = {
60
+ MANIFEST_NOT_FOUND: 'MANIFEST_NOT_FOUND',
61
+ YAML_PARSE_ERROR: 'YAML_PARSE_ERROR',
62
+ SCHEMA_ERROR: 'SCHEMA_ERROR',
63
+ DEPRECATED_MANIFEST: 'DEPRECATED_MANIFEST',
64
+ MISSING_DIRECTORY: 'MISSING_DIRECTORY',
65
+ NO_TASKS: 'NO_TASKS',
66
+ TASK_MISSING_FIELD: 'TASK_MISSING_FIELD',
67
+ TASK_READ_ERROR: 'TASK_READ_ERROR',
68
+ AGENT_INVALID_FORMAT: 'AGENT_INVALID_FORMAT',
69
+ FILE_NOT_FOUND: 'FILE_NOT_FOUND',
70
+ INVALID_NAMING: 'INVALID_NAMING',
71
+ };
72
+
73
+ /**
74
+ * Validation result structure
75
+ * @typedef {Object} ValidationResult
76
+ * @property {boolean} valid - Whether validation passed (no errors)
77
+ * @property {Array<ValidationError>} errors - Critical errors that fail validation
78
+ * @property {Array<ValidationWarning>} warnings - Non-critical issues
79
+ * @property {Array<string>} suggestions - Helpful suggestions
80
+ */
81
+
82
+ /**
83
+ * Validation error structure
84
+ * @typedef {Object} ValidationError
85
+ * @property {string} code - Error code from ValidationErrorCodes
86
+ * @property {string} message - Human-readable error message
87
+ * @property {string} [suggestion] - Suggested fix
88
+ * @property {string} [path] - JSON path where error occurred
89
+ * @property {string} [file] - File where error occurred
90
+ */
91
+
92
+ /**
93
+ * Squad Validator class for validating squad structure and content
94
+ */
95
+ class SquadValidator {
96
+ /**
97
+ * Create a SquadValidator instance
98
+ * @param {Object} [options={}] - Configuration options
99
+ * @param {boolean} [options.verbose=false] - Enable verbose logging
100
+ * @param {boolean} [options.strict=false] - Treat warnings as errors
101
+ * @param {Object} [options.schema] - Custom schema (for testing)
102
+ */
103
+ constructor(options = {}) {
104
+ this.verbose = options.verbose || false;
105
+ this.strict = options.strict || false;
106
+
107
+ // Initialize AJV with schema
108
+ this.ajv = new Ajv({ allErrors: true, verbose: true });
109
+ const schema = options.schema || loadSchema();
110
+ if (schema) {
111
+ this.validateSchema = this.ajv.compile(schema);
112
+ } else {
113
+ this.validateSchema = null;
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Log message if verbose mode is enabled
119
+ * @private
120
+ * @param {string} message - Message to log
121
+ */
122
+ _log(message) {
123
+ if (this.verbose) {
124
+ console.log(`[SquadValidator] ${message}`);
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Validate entire squad
130
+ *
131
+ * Runs all validation checks:
132
+ * 1. Manifest validation (schema)
133
+ * 2. Directory structure
134
+ * 3. Task format
135
+ * 4. Agent definitions
136
+ *
137
+ * @param {string} squadPath - Path to squad directory
138
+ * @returns {Promise<ValidationResult>} Validation result
139
+ *
140
+ * @example
141
+ * const validator = new SquadValidator();
142
+ * const result = await validator.validate('./squads/my-squad');
143
+ * if (result.valid) {
144
+ * console.log('Squad is valid!');
145
+ * } else {
146
+ * console.log('Errors:', result.errors);
147
+ * }
148
+ */
149
+ async validate(squadPath) {
150
+ this._log(`Validating squad: ${squadPath}`);
151
+
152
+ const result = {
153
+ valid: true,
154
+ errors: [],
155
+ warnings: [],
156
+ suggestions: [],
157
+ };
158
+
159
+ // 1. Validate manifest
160
+ const manifestResult = await this.validateManifest(squadPath);
161
+ this._mergeResults(result, manifestResult);
162
+
163
+ // 2. Validate directory structure
164
+ const structureResult = await this.validateStructure(squadPath);
165
+ this._mergeResults(result, structureResult);
166
+
167
+ // 3. Validate tasks (task-first!)
168
+ const tasksResult = await this.validateTasks(squadPath);
169
+ this._mergeResults(result, tasksResult);
170
+
171
+ // 4. Validate agents
172
+ const agentsResult = await this.validateAgents(squadPath);
173
+ this._mergeResults(result, agentsResult);
174
+
175
+ // 5. Validate config references (SQS-10)
176
+ const configResult = await this.validateConfigReferences(squadPath);
177
+ this._mergeResults(result, configResult);
178
+
179
+ // In strict mode, warnings become errors
180
+ if (this.strict && result.warnings.length > 0) {
181
+ result.errors.push(...result.warnings);
182
+ result.warnings = [];
183
+ result.valid = false;
184
+ }
185
+
186
+ this._log(`Validation complete: ${result.valid ? 'VALID' : 'INVALID'}`);
187
+ return result;
188
+ }
189
+
190
+ /**
191
+ * Validate manifest against JSON Schema
192
+ *
193
+ * @param {string} squadPath - Path to squad directory
194
+ * @returns {Promise<ValidationResult>} Validation result for manifest
195
+ */
196
+ async validateManifest(squadPath) {
197
+ this._log(`Validating manifest in: ${squadPath}`);
198
+
199
+ const result = {
200
+ valid: true,
201
+ errors: [],
202
+ warnings: [],
203
+ suggestions: [],
204
+ };
205
+
206
+ // Find manifest file
207
+ const manifestPath = await this._findManifest(squadPath);
208
+ if (!manifestPath) {
209
+ result.valid = false;
210
+ result.errors.push({
211
+ code: ValidationErrorCodes.MANIFEST_NOT_FOUND,
212
+ message: `No manifest found in ${squadPath}/ (expected squad.yaml or config.yaml)`,
213
+ suggestion: 'Create squad.yaml with required fields: name, version',
214
+ });
215
+ return result;
216
+ }
217
+
218
+ // Deprecation warning for config.yaml
219
+ const manifestFilename = path.basename(manifestPath);
220
+ if (manifestFilename === 'config.yaml') {
221
+ result.warnings.push({
222
+ code: ValidationErrorCodes.DEPRECATED_MANIFEST,
223
+ message: 'config.yaml is deprecated, rename to squad.yaml',
224
+ suggestion: 'mv config.yaml squad.yaml',
225
+ file: manifestFilename,
226
+ });
227
+ }
228
+
229
+ // Parse YAML
230
+ let manifest;
231
+ try {
232
+ const content = await fs.readFile(manifestPath, 'utf-8');
233
+ manifest = yaml.load(content);
234
+ } catch (error) {
235
+ result.valid = false;
236
+ result.errors.push({
237
+ code: ValidationErrorCodes.YAML_PARSE_ERROR,
238
+ message: `Failed to parse manifest: ${error.message}`,
239
+ suggestion: 'Check YAML syntax - use a YAML linter',
240
+ file: manifestFilename,
241
+ });
242
+ return result;
243
+ }
244
+
245
+ // Validate against schema
246
+ if (this.validateSchema && manifest) {
247
+ const schemaValid = this.validateSchema(manifest);
248
+ if (!schemaValid) {
249
+ result.valid = false;
250
+ for (const err of this.validateSchema.errors) {
251
+ result.errors.push({
252
+ code: ValidationErrorCodes.SCHEMA_ERROR,
253
+ path: err.instancePath || '/',
254
+ message: err.message,
255
+ suggestion: this._getSchemaSuggestion(err),
256
+ });
257
+ }
258
+ }
259
+ }
260
+
261
+ this._log(`Manifest validation: ${result.valid ? 'PASS' : 'FAIL'}`);
262
+ return result;
263
+ }
264
+
265
+ /**
266
+ * Validate directory structure
267
+ *
268
+ * Checks for expected directories in task-first architecture.
269
+ *
270
+ * @param {string} squadPath - Path to squad directory
271
+ * @returns {Promise<ValidationResult>} Validation result for structure
272
+ */
273
+ async validateStructure(squadPath) {
274
+ this._log(`Validating structure of: ${squadPath}`);
275
+
276
+ const result = {
277
+ valid: true,
278
+ errors: [],
279
+ warnings: [],
280
+ suggestions: [],
281
+ };
282
+
283
+ // Expected directories (task-first: tasks and agents are primary)
284
+ const expectedDirs = ['tasks', 'agents'];
285
+ const optionalDirs = [
286
+ 'workflows',
287
+ 'checklists',
288
+ 'templates',
289
+ 'tools',
290
+ 'scripts',
291
+ 'data',
292
+ 'config',
293
+ ];
294
+
295
+ // Check expected directories (warn if missing)
296
+ for (const dir of expectedDirs) {
297
+ const dirPath = path.join(squadPath, dir);
298
+ if (!(await this._pathExists(dirPath))) {
299
+ result.warnings.push({
300
+ code: ValidationErrorCodes.MISSING_DIRECTORY,
301
+ message: `Expected directory not found: ${dir}/`,
302
+ suggestion: `mkdir ${dir} (task-first architecture recommends tasks/ and agents/)`,
303
+ });
304
+ }
305
+ }
306
+
307
+ // Validate files referenced in manifest exist
308
+ const manifestPath = await this._findManifest(squadPath);
309
+ if (manifestPath) {
310
+ try {
311
+ const content = await fs.readFile(manifestPath, 'utf-8');
312
+ const manifest = yaml.load(content);
313
+
314
+ if (manifest && manifest.components) {
315
+ await this._validateReferencedFiles(
316
+ squadPath,
317
+ manifest.components,
318
+ result,
319
+ );
320
+ }
321
+ } catch {
322
+ // Already handled in manifest validation
323
+ }
324
+ }
325
+
326
+ this._log(`Structure validation: ${result.errors.length} errors, ${result.warnings.length} warnings`);
327
+ return result;
328
+ }
329
+
330
+ /**
331
+ * Validate task files against TASK-FORMAT-SPECIFICATION-V1
332
+ *
333
+ * @param {string} squadPath - Path to squad directory
334
+ * @returns {Promise<ValidationResult>} Validation result for tasks
335
+ */
336
+ async validateTasks(squadPath) {
337
+ this._log(`Validating tasks in: ${squadPath}`);
338
+
339
+ const result = {
340
+ valid: true,
341
+ errors: [],
342
+ warnings: [],
343
+ suggestions: [],
344
+ };
345
+
346
+ const tasksDir = path.join(squadPath, 'tasks');
347
+
348
+ // Check if tasks directory exists
349
+ if (!(await this._pathExists(tasksDir))) {
350
+ return result; // Already warned in structure validation
351
+ }
352
+
353
+ // Get task files
354
+ let files;
355
+ try {
356
+ files = await fs.readdir(tasksDir);
357
+ } catch (error) {
358
+ result.errors.push({
359
+ code: ValidationErrorCodes.TASK_READ_ERROR,
360
+ message: `Failed to read tasks directory: ${error.message}`,
361
+ });
362
+ result.valid = false;
363
+ return result;
364
+ }
365
+
366
+ const taskFiles = files.filter((f) => f.endsWith('.md'));
367
+
368
+ if (taskFiles.length === 0) {
369
+ result.warnings.push({
370
+ code: ValidationErrorCodes.NO_TASKS,
371
+ message: 'No task files found in tasks/',
372
+ suggestion: 'Task-first architecture: Create at least one task file',
373
+ });
374
+ return result;
375
+ }
376
+
377
+ // Validate each task file
378
+ for (const taskFile of taskFiles) {
379
+ const taskPath = path.join(tasksDir, taskFile);
380
+ const taskResult = await this._validateTaskFile(taskPath);
381
+ this._mergeResults(result, taskResult);
382
+ }
383
+
384
+ this._log(`Task validation: ${taskFiles.length} files checked`);
385
+ return result;
386
+ }
387
+
388
+ /**
389
+ * Validate config references in squad.yaml
390
+ * Implements AC10.4: Validates that referenced config files actually exist
391
+ *
392
+ * @param {string} squadPath - Path to squad directory
393
+ * @returns {Promise<ValidationResult>} Validation result for config references
394
+ * @see Story SQS-10: Project Config Reference for Squads
395
+ */
396
+ async validateConfigReferences(squadPath) {
397
+ this._log(`Validating config references in: ${squadPath}`);
398
+
399
+ const result = {
400
+ valid: true,
401
+ errors: [],
402
+ warnings: [],
403
+ suggestions: [],
404
+ };
405
+
406
+ // Find and parse manifest
407
+ const manifestPath = await this._findManifest(squadPath);
408
+ if (!manifestPath) {
409
+ return result; // Already handled in manifest validation
410
+ }
411
+
412
+ let manifest;
413
+ try {
414
+ const content = await fs.readFile(manifestPath, 'utf-8');
415
+ manifest = yaml.load(content);
416
+ } catch {
417
+ return result; // Already handled in manifest validation
418
+ }
419
+
420
+ // Check config section
421
+ if (!manifest || !manifest.config) {
422
+ return result; // No config section to validate
423
+ }
424
+
425
+ const configFields = ['coding-standards', 'tech-stack', 'source-tree'];
426
+
427
+ for (const field of configFields) {
428
+ const configPath = manifest.config[field];
429
+ if (!configPath) continue;
430
+
431
+ const resolvedPath = await this._resolveConfigPath(squadPath, configPath);
432
+ if (!resolvedPath) {
433
+ // Check if this is a project-level reference that doesn't exist
434
+ if (configPath.includes('..') || configPath.includes('docs/framework')) {
435
+ result.warnings.push({
436
+ code: ValidationErrorCodes.FILE_NOT_FOUND,
437
+ message: `Config reference not found: ${configPath}`,
438
+ suggestion: `Create the file at ${configPath} or update squad.yaml to use local config (config/${field}.md)`,
439
+ });
440
+ } else {
441
+ // Local config file missing - this is an error
442
+ result.errors.push({
443
+ code: ValidationErrorCodes.FILE_NOT_FOUND,
444
+ message: `Local config file not found: ${configPath}`,
445
+ suggestion: `Create ${path.join(squadPath, configPath)} or remove from config section`,
446
+ });
447
+ result.valid = false;
448
+ }
449
+ }
450
+ }
451
+
452
+ this._log(`Config validation: ${result.errors.length} errors, ${result.warnings.length} warnings`);
453
+ return result;
454
+ }
455
+
456
+ /**
457
+ * Validate agent definitions
458
+ *
459
+ * @param {string} squadPath - Path to squad directory
460
+ * @returns {Promise<ValidationResult>} Validation result for agents
461
+ */
462
+ async validateAgents(squadPath) {
463
+ this._log(`Validating agents in: ${squadPath}`);
464
+
465
+ const result = {
466
+ valid: true,
467
+ errors: [],
468
+ warnings: [],
469
+ suggestions: [],
470
+ };
471
+
472
+ const agentsDir = path.join(squadPath, 'agents');
473
+
474
+ // Check if agents directory exists
475
+ if (!(await this._pathExists(agentsDir))) {
476
+ return result; // Already warned in structure validation
477
+ }
478
+
479
+ // Get agent files
480
+ let files;
481
+ try {
482
+ files = await fs.readdir(agentsDir);
483
+ } catch (error) {
484
+ return result;
485
+ }
486
+
487
+ const agentFiles = files.filter((f) => f.endsWith('.md'));
488
+
489
+ // Validate each agent file
490
+ for (const agentFile of agentFiles) {
491
+ const agentPath = path.join(agentsDir, agentFile);
492
+ try {
493
+ const content = await fs.readFile(agentPath, 'utf-8');
494
+
495
+ // Check for basic agent structure (YAML frontmatter or markdown structure)
496
+ const hasYamlFrontmatter = content.includes('agent:');
497
+ const hasMarkdownHeading = content.match(/^#\s+.+/m);
498
+
499
+ if (!hasYamlFrontmatter && !hasMarkdownHeading) {
500
+ result.warnings.push({
501
+ code: ValidationErrorCodes.AGENT_INVALID_FORMAT,
502
+ file: agentFile,
503
+ message: 'Agent file may not follow AIOS agent definition format',
504
+ suggestion:
505
+ 'Use agent: YAML frontmatter or markdown heading structure',
506
+ });
507
+ }
508
+
509
+ // Check naming convention (kebab-case)
510
+ if (!this._isKebabCase(path.basename(agentFile, '.md'))) {
511
+ result.warnings.push({
512
+ code: ValidationErrorCodes.INVALID_NAMING,
513
+ file: agentFile,
514
+ message: 'Agent filename should be kebab-case',
515
+ suggestion: 'Rename to use lowercase letters and hyphens only',
516
+ });
517
+ }
518
+ } catch (error) {
519
+ result.errors.push({
520
+ code: ValidationErrorCodes.TASK_READ_ERROR,
521
+ file: agentFile,
522
+ message: `Failed to read agent file: ${error.message}`,
523
+ });
524
+ result.valid = false;
525
+ }
526
+ }
527
+
528
+ this._log(`Agent validation: ${agentFiles.length} files checked`);
529
+ return result;
530
+ }
531
+
532
+ /**
533
+ * Format validation result for display
534
+ *
535
+ * @param {ValidationResult} result - Validation result
536
+ * @param {string} squadPath - Path to squad
537
+ * @returns {string} Formatted output
538
+ */
539
+ formatResult(result, squadPath) {
540
+ const lines = [];
541
+
542
+ lines.push(`Validating squad: ${squadPath}/`);
543
+ lines.push('');
544
+
545
+ // Errors
546
+ if (result.errors.length > 0) {
547
+ lines.push(`Errors: ${result.errors.length}`);
548
+ for (const err of result.errors) {
549
+ const filePart = err.file ? ` (${err.file})` : '';
550
+ const pathPart = err.path ? ` at ${err.path}` : '';
551
+ lines.push(` - [${err.code}]${pathPart}${filePart}: ${err.message}`);
552
+ if (err.suggestion) {
553
+ lines.push(` Suggestion: ${err.suggestion}`);
554
+ }
555
+ }
556
+ lines.push('');
557
+ }
558
+
559
+ // Warnings
560
+ if (result.warnings.length > 0) {
561
+ lines.push(`Warnings: ${result.warnings.length}`);
562
+ for (const warn of result.warnings) {
563
+ const filePart = warn.file ? ` (${warn.file})` : '';
564
+ lines.push(` - [${warn.code}]${filePart}: ${warn.message}`);
565
+ if (warn.suggestion) {
566
+ lines.push(` Suggestion: ${warn.suggestion}`);
567
+ }
568
+ }
569
+ lines.push('');
570
+ }
571
+
572
+ // Result
573
+ if (result.valid) {
574
+ if (result.warnings.length > 0) {
575
+ lines.push('Result: VALID (with warnings)');
576
+ } else {
577
+ lines.push('Result: VALID');
578
+ }
579
+ } else {
580
+ lines.push('Result: INVALID');
581
+ }
582
+
583
+ return lines.join('\n');
584
+ }
585
+
586
+ // ============ Private Helper Methods ============
587
+
588
+ /**
589
+ * Find manifest file in squad directory
590
+ * @private
591
+ */
592
+ async _findManifest(squadPath) {
593
+ for (const filename of MANIFEST_FILES) {
594
+ const manifestPath = path.join(squadPath, filename);
595
+ if (await this._pathExists(manifestPath)) {
596
+ return manifestPath;
597
+ }
598
+ }
599
+ return null;
600
+ }
601
+
602
+ /**
603
+ * Check if path exists
604
+ * @private
605
+ */
606
+ async _pathExists(filePath) {
607
+ try {
608
+ await fs.access(filePath);
609
+ return true;
610
+ } catch {
611
+ return false;
612
+ }
613
+ }
614
+
615
+ /**
616
+ * Resolve config path - check both local and project-level paths
617
+ * Implements AC10.4: Validator Path Resolution
618
+ *
619
+ * @param {string} squadPath - Squad directory
620
+ * @param {string} configPath - Path from squad.yaml config section
621
+ * @returns {Promise<string|null>} Resolved absolute path or null if not found
622
+ * @see Story SQS-10: Project Config Reference for Squads
623
+ * @private
624
+ */
625
+ async _resolveConfigPath(squadPath, configPath) {
626
+ if (!configPath) return null;
627
+
628
+ // Resolve path relative to squad directory
629
+ // path.resolve handles both local paths (config/file.md) and relative paths (../../docs/framework/...)
630
+ // Simplified from redundant path.resolve + path.join (CodeRabbit nitpick)
631
+ const resolvedPath = path.resolve(squadPath, configPath);
632
+ if (await this._pathExists(resolvedPath)) {
633
+ this._log(`Resolved config path: ${configPath} -> ${resolvedPath}`);
634
+ return resolvedPath;
635
+ }
636
+
637
+ this._log(`Config path not found: ${configPath}`);
638
+ return null;
639
+ }
640
+
641
+ /**
642
+ * Validate a single task file
643
+ * @private
644
+ */
645
+ async _validateTaskFile(taskPath) {
646
+ const result = {
647
+ valid: true,
648
+ errors: [],
649
+ warnings: [],
650
+ suggestions: [],
651
+ };
652
+ const filename = path.basename(taskPath);
653
+
654
+ try {
655
+ const content = await fs.readFile(taskPath, 'utf-8');
656
+
657
+ // Check for required fields (case-insensitive, handle accents)
658
+ for (const field of TASK_REQUIRED_FIELDS) {
659
+ // Create patterns that handle Portuguese accents
660
+ const patterns = [
661
+ new RegExp(`^[#*-]*\\s*${field}\\s*:`, 'im'),
662
+ new RegExp(
663
+ `^[#*-]*\\s*${field.replace(/a/g, '[aá]').replace(/i/g, '[ií]')}\\s*:`,
664
+ 'im',
665
+ ),
666
+ // Also check for markdown headers with the field
667
+ new RegExp(`^#+\\s*${field}`, 'im'),
668
+ ];
669
+
670
+ const found = patterns.some((p) => p.test(content));
671
+ if (!found) {
672
+ result.warnings.push({
673
+ code: ValidationErrorCodes.TASK_MISSING_FIELD,
674
+ file: filename,
675
+ message: `Task missing recommended field: ${field}`,
676
+ suggestion: `Add "${field}:" to ${filename} (TASK-FORMAT-SPECIFICATION-V1)`,
677
+ });
678
+ }
679
+ }
680
+
681
+ // Check naming convention
682
+ if (!this._isKebabCase(path.basename(filename, '.md'))) {
683
+ result.warnings.push({
684
+ code: ValidationErrorCodes.INVALID_NAMING,
685
+ file: filename,
686
+ message: 'Task filename should be kebab-case',
687
+ suggestion: 'Rename to use lowercase letters and hyphens only',
688
+ });
689
+ }
690
+ } catch (error) {
691
+ result.errors.push({
692
+ code: ValidationErrorCodes.TASK_READ_ERROR,
693
+ file: filename,
694
+ message: `Failed to read task: ${error.message}`,
695
+ });
696
+ result.valid = false;
697
+ }
698
+
699
+ return result;
700
+ }
701
+
702
+ /**
703
+ * Validate files referenced in manifest components
704
+ * @private
705
+ */
706
+ async _validateReferencedFiles(squadPath, components, result) {
707
+ const componentDirs = {
708
+ tasks: 'tasks',
709
+ agents: 'agents',
710
+ workflows: 'workflows',
711
+ checklists: 'checklists',
712
+ templates: 'templates',
713
+ tools: 'tools',
714
+ scripts: 'scripts',
715
+ };
716
+
717
+ for (const [component, dir] of Object.entries(componentDirs)) {
718
+ if (components[component] && Array.isArray(components[component])) {
719
+ for (const file of components[component]) {
720
+ const filePath = path.join(squadPath, dir, file);
721
+ if (!(await this._pathExists(filePath))) {
722
+ result.errors.push({
723
+ code: ValidationErrorCodes.FILE_NOT_FOUND,
724
+ message: `Referenced file not found: ${dir}/${file}`,
725
+ suggestion: `Create ${filePath} or remove from components.${component}`,
726
+ });
727
+ result.valid = false;
728
+ }
729
+ }
730
+ }
731
+ }
732
+ }
733
+
734
+ /**
735
+ * Check if string is kebab-case
736
+ * @private
737
+ */
738
+ _isKebabCase(str) {
739
+ return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(str);
740
+ }
741
+
742
+ /**
743
+ * Get suggestion for schema error
744
+ * @private
745
+ */
746
+ _getSchemaSuggestion(error) {
747
+ const suggestions = {
748
+ 'must match pattern':
749
+ 'Use correct format (kebab-case for names, semver for versions)',
750
+ 'must be string': 'Wrap value in quotes',
751
+ 'must be array': 'Use YAML array syntax: [item1, item2] or - item',
752
+ 'must have required property': 'Add the missing required property',
753
+ 'must be equal to one of the allowed values': 'Use one of the allowed values',
754
+ };
755
+
756
+ for (const [key, suggestion] of Object.entries(suggestions)) {
757
+ if (error.message && error.message.includes(key)) {
758
+ return suggestion;
759
+ }
760
+ }
761
+ return 'Check squad.yaml syntax against the schema';
762
+ }
763
+
764
+ /**
765
+ * Merge validation results
766
+ * @private
767
+ */
768
+ _mergeResults(target, source) {
769
+ target.errors.push(...(source.errors || []));
770
+ target.warnings.push(...(source.warnings || []));
771
+ target.suggestions.push(...(source.suggestions || []));
772
+ if (source.errors && source.errors.length > 0) {
773
+ target.valid = false;
774
+ }
775
+ }
776
+ }
777
+
778
+ module.exports = {
779
+ SquadValidator,
780
+ ValidationErrorCodes,
781
+ TASK_REQUIRED_FIELDS,
782
+ MANIFEST_FILES,
783
+ };