mdan-method 2.6.3

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 (612) hide show
  1. package/.mdan/config/config.yaml +36 -0
  2. package/.mdan/state/MDAN-STATE.template.json +39 -0
  3. package/AGENTS.md +308 -0
  4. package/AGENTS_LIST.md +946 -0
  5. package/ARCHITECTURE.md +590 -0
  6. package/CHANGELOG.md +1770 -0
  7. package/CONTRIBUTING.md +512 -0
  8. package/INSTALL.md +246 -0
  9. package/LICENSE +30 -0
  10. package/MDAN.fr.md +259 -0
  11. package/README.md +233 -0
  12. package/SECURITY.md +85 -0
  13. package/USAGE.md +368 -0
  14. package/app/__init__.py +5 -0
  15. package/app/cis/agents/__init__.py +31 -0
  16. package/app/cis/agents/brainstorming-coach/__init__.py +3 -0
  17. package/app/cis/agents/brainstorming-coach/agent.py +162 -0
  18. package/app/cis/agents/brainstorming-coach/prompt.yaml +53 -0
  19. package/app/cis/agents/creative-problem-solver/__init__.py +3 -0
  20. package/app/cis/agents/creative-problem-solver/agent.py +233 -0
  21. package/app/cis/agents/creative-problem-solver/prompt.yaml +74 -0
  22. package/app/cis/agents/design-thinking-coach/__init__.py +3 -0
  23. package/app/cis/agents/design-thinking-coach/agent.py +241 -0
  24. package/app/cis/agents/design-thinking-coach/prompt.yaml +77 -0
  25. package/app/cis/agents/innovation-strategist/__init__.py +3 -0
  26. package/app/cis/agents/innovation-strategist/agent.py +271 -0
  27. package/app/cis/agents/innovation-strategist/prompt.yaml +70 -0
  28. package/app/cis/agents/presentation-master/__init__.py +3 -0
  29. package/app/cis/agents/presentation-master/agent.py +420 -0
  30. package/app/cis/agents/presentation-master/prompt.yaml +62 -0
  31. package/app/cis/agents/storyteller/__init__.py +3 -0
  32. package/app/cis/agents/storyteller/agent.py +303 -0
  33. package/app/cis/agents/storyteller/prompt.yaml +99 -0
  34. package/app/core/__init__.py +5 -0
  35. package/app/core/agents/__init__.py +5 -0
  36. package/app/core/agents/mdan-master/__init__.py +7 -0
  37. package/app/core/agents/mdan-master/agent.py +302 -0
  38. package/app/core/agents/mdan-master/prompt.yaml +105 -0
  39. package/app/mmb/agents/__init__.py +24 -0
  40. package/app/mmb/agents/agent-builder/__init__.py +5 -0
  41. package/app/mmb/agents/agent-builder/agent.py +261 -0
  42. package/app/mmb/agents/agent-builder/prompt.yaml +48 -0
  43. package/app/mmb/agents/module-builder/__init__.py +5 -0
  44. package/app/mmb/agents/module-builder/agent.py +299 -0
  45. package/app/mmb/agents/module-builder/prompt.yaml +50 -0
  46. package/app/mmb/agents/workflow-builder/__init__.py +5 -0
  47. package/app/mmb/agents/workflow-builder/agent.py +318 -0
  48. package/app/mmb/agents/workflow-builder/prompt.yaml +52 -0
  49. package/app/mmm/agents/__init__.py +48 -0
  50. package/app/mmm/agents/analyst/__init__.py +7 -0
  51. package/app/mmm/agents/analyst/agent.py +384 -0
  52. package/app/mmm/agents/analyst/prompt.yaml +62 -0
  53. package/app/mmm/agents/architect/__init__.py +7 -0
  54. package/app/mmm/agents/architect/agent.py +300 -0
  55. package/app/mmm/agents/architect/prompt.yaml +66 -0
  56. package/app/mmm/agents/dev/__init__.py +7 -0
  57. package/app/mmm/agents/dev/agent.py +285 -0
  58. package/app/mmm/agents/dev/prompt.yaml +62 -0
  59. package/app/mmm/agents/pm/__init__.py +7 -0
  60. package/app/mmm/agents/pm/agent.py +417 -0
  61. package/app/mmm/agents/pm/prompt.yaml +64 -0
  62. package/app/mmm/agents/qa/__init__.py +7 -0
  63. package/app/mmm/agents/qa/agent.py +267 -0
  64. package/app/mmm/agents/qa/prompt.yaml +67 -0
  65. package/app/mmm/agents/quick-flow-solo-dev/__init__.py +7 -0
  66. package/app/mmm/agents/quick-flow-solo-dev/agent.py +319 -0
  67. package/app/mmm/agents/quick-flow-solo-dev/prompt.yaml +60 -0
  68. package/app/mmm/agents/sm/__init__.py +7 -0
  69. package/app/mmm/agents/sm/agent.py +357 -0
  70. package/app/mmm/agents/sm/prompt.yaml +61 -0
  71. package/app/mmm/agents/tech-writer/__init__.py +7 -0
  72. package/app/mmm/agents/tech-writer/agent.py +420 -0
  73. package/app/mmm/agents/tech-writer/prompt.yaml +70 -0
  74. package/app/mmm/agents/ux-designer/__init__.py +14 -0
  75. package/app/mmm/agents/ux-designer/agent.py +412 -0
  76. package/app/mmm/agents/ux-designer/prompt.yaml +37 -0
  77. package/app/packs/__init__.py +32 -0
  78. package/app/packs/db-optimization/__init__.py +13 -0
  79. package/app/packs/db-optimization/agents/__init__.py +11 -0
  80. package/app/packs/db-optimization/agents/db-performance-analyst/__init__.py +5 -0
  81. package/app/packs/db-optimization/agents/db-performance-analyst/agent.py +559 -0
  82. package/app/packs/db-optimization/agents/db-performance-analyst/prompt.yaml +63 -0
  83. package/app/packs/db-optimization/agents/indexing-specialist/__init__.py +5 -0
  84. package/app/packs/db-optimization/agents/indexing-specialist/agent.py +713 -0
  85. package/app/packs/db-optimization/agents/indexing-specialist/prompt.yaml +92 -0
  86. package/app/packs/db-optimization/agents/query-optimizer/__init__.py +5 -0
  87. package/app/packs/db-optimization/agents/query-optimizer/agent.py +566 -0
  88. package/app/packs/db-optimization/agents/query-optimizer/prompt.yaml +74 -0
  89. package/app/packs/devops-azure/__init__.py +13 -0
  90. package/app/packs/devops-azure/agents/__init__.py +11 -0
  91. package/app/packs/devops-azure/agents/azure-specialist/__init__.py +5 -0
  92. package/app/packs/devops-azure/agents/azure-specialist/agent.py +584 -0
  93. package/app/packs/devops-azure/agents/azure-specialist/prompt.yaml +301 -0
  94. package/app/packs/devops-azure/agents/cicd-architect/__init__.py +5 -0
  95. package/app/packs/devops-azure/agents/cicd-architect/agent.py +665 -0
  96. package/app/packs/devops-azure/agents/cicd-architect/prompt.yaml +409 -0
  97. package/app/packs/devops-azure/agents/devops-engineer/__init__.py +5 -0
  98. package/app/packs/devops-azure/agents/devops-engineer/agent.py +545 -0
  99. package/app/packs/devops-azure/agents/devops-engineer/prompt.yaml +263 -0
  100. package/app/packs/fintech/__init__.py +13 -0
  101. package/app/packs/fintech/agents/__init__.py +11 -0
  102. package/app/packs/fintech/agents/compliance-officer/__init__.py +5 -0
  103. package/app/packs/fintech/agents/compliance-officer/agent.py +449 -0
  104. package/app/packs/fintech/agents/compliance-officer/prompt.yaml +135 -0
  105. package/app/packs/fintech/agents/financial-analyst/__init__.py +5 -0
  106. package/app/packs/fintech/agents/financial-analyst/agent.py +392 -0
  107. package/app/packs/fintech/agents/financial-analyst/prompt.yaml +143 -0
  108. package/app/packs/fintech/agents/risk-manager/__init__.py +5 -0
  109. package/app/packs/fintech/agents/risk-manager/agent.py +664 -0
  110. package/app/packs/fintech/agents/risk-manager/prompt.yaml +240 -0
  111. package/app/tea/agents/tea/__init__.py +9 -0
  112. package/app/tea/agents/tea/agent.py +689 -0
  113. package/app/tea/agents/tea/prompt.yaml +100 -0
  114. package/cli/v1/mdan.py +421 -0
  115. package/cli/v1/mdan.sh +724 -0
  116. package/cli/v1/mdan_crewai.py +539 -0
  117. package/docs/404.md +9 -0
  118. package/docs/_STYLE_GUIDE.md +370 -0
  119. package/docs/explanation/advanced-elicitation.md +49 -0
  120. package/docs/explanation/adversarial-review.md +59 -0
  121. package/docs/explanation/brainstorming.md +33 -0
  122. package/docs/explanation/established-projects-faq.md +50 -0
  123. package/docs/explanation/party-mode.md +59 -0
  124. package/docs/explanation/preventing-agent-conflicts.md +112 -0
  125. package/docs/explanation/project-context.md +157 -0
  126. package/docs/explanation/quick-flow.md +73 -0
  127. package/docs/explanation/why-solutioning-matters.md +77 -0
  128. package/docs/how-to/customize-mdan.md +172 -0
  129. package/docs/how-to/established-projects.md +117 -0
  130. package/docs/how-to/get-answers-about-mdan.md +134 -0
  131. package/docs/how-to/install-mdan.md +97 -0
  132. package/docs/how-to/non-interactive-installation.md +171 -0
  133. package/docs/how-to/project-context.md +136 -0
  134. package/docs/how-to/quick-fixes.md +123 -0
  135. package/docs/how-to/shard-large-documents.md +78 -0
  136. package/docs/how-to/upgrade-to-v6.md +97 -0
  137. package/docs/index.md +59 -0
  138. package/docs/reference/agents.md +28 -0
  139. package/docs/reference/commands.md +151 -0
  140. package/docs/reference/modules.md +76 -0
  141. package/docs/reference/testing.md +106 -0
  142. package/docs/reference/workflow-map.md +89 -0
  143. package/docs/roadmap.mdx +136 -0
  144. package/docs/tutorials/getting-started.md +286 -0
  145. package/examples/crewai/crewai_auto_mode.py +62 -0
  146. package/examples/crewai/crewai_custom_crew.py +85 -0
  147. package/examples/crewai/crewai_debate.py +57 -0
  148. package/examples/crewai/crewai_with_serper.py +82 -0
  149. package/examples/crewai/crewai_with_sql.py +117 -0
  150. package/integrations/__init__.py +33 -0
  151. package/integrations/crewai/__init__.py +27 -0
  152. package/integrations/crewai/agents/__init__.py +21 -0
  153. package/integrations/crewai/agents/architect_agent.py +264 -0
  154. package/integrations/crewai/agents/dev_agent.py +271 -0
  155. package/integrations/crewai/agents/devops_agent.py +421 -0
  156. package/integrations/crewai/agents/doc_agent.py +388 -0
  157. package/integrations/crewai/agents/product_agent.py +203 -0
  158. package/integrations/crewai/agents/security_agent.py +386 -0
  159. package/integrations/crewai/agents/test_agent.py +358 -0
  160. package/integrations/crewai/agents/ux_agent.py +257 -0
  161. package/integrations/crewai/flows/__init__.py +13 -0
  162. package/integrations/crewai/flows/auto_flow.py +451 -0
  163. package/integrations/crewai/flows/build_flow.py +297 -0
  164. package/integrations/crewai/flows/debate_flow.py +422 -0
  165. package/integrations/crewai/flows/discovery_flow.py +267 -0
  166. package/integrations/crewai/orchestrator.py +558 -0
  167. package/integrations/crewai/skills/__init__.py +8 -0
  168. package/integrations/crewai/skills/skill_router.py +534 -0
  169. package/integrations/crewai/tools/__init__.py +11 -0
  170. package/integrations/crewai/tools/file_tool.py +355 -0
  171. package/integrations/crewai/tools/serper_tool.py +169 -0
  172. package/integrations/crewai/tools/sql_tool.py +435 -0
  173. package/integrations/docs/all-integrations.md +300 -0
  174. package/integrations/docs/cursor.md +74 -0
  175. package/integrations/docs/mcp.md +153 -0
  176. package/integrations/docs/windsurf.md +48 -0
  177. package/package.json +119 -0
  178. package/prompts/cis/brainstorming-coach.yaml +53 -0
  179. package/prompts/cis/creative-problem-solver.yaml +74 -0
  180. package/prompts/cis/design-thinking-coach.yaml +77 -0
  181. package/prompts/cis/innovation-strategist.yaml +70 -0
  182. package/prompts/cis/presentation-master.yaml +62 -0
  183. package/prompts/cis/storyteller.yaml +99 -0
  184. package/prompts/core/mdan-master.yaml +105 -0
  185. package/prompts/mmb/agent-builder.yaml +48 -0
  186. package/prompts/mmb/module-builder.yaml +50 -0
  187. package/prompts/mmb/workflow-builder.yaml +52 -0
  188. package/prompts/mmm/analyst.yaml +62 -0
  189. package/prompts/mmm/architect.yaml +66 -0
  190. package/prompts/mmm/dev.yaml +62 -0
  191. package/prompts/mmm/pm.yaml +64 -0
  192. package/prompts/mmm/qa.yaml +67 -0
  193. package/prompts/mmm/quick-flow-solo-dev.yaml +60 -0
  194. package/prompts/mmm/sm.yaml +61 -0
  195. package/prompts/mmm/tech-writer.yaml +70 -0
  196. package/prompts/mmm/ux-designer.yaml +33 -0
  197. package/prompts/packs/db-optimization/db-performance-analyst.yaml +63 -0
  198. package/prompts/packs/db-optimization/indexing-specialist.yaml +92 -0
  199. package/prompts/packs/db-optimization/query-optimizer.yaml +74 -0
  200. package/prompts/packs/devops-azure/azure-specialist.yaml +301 -0
  201. package/prompts/packs/devops-azure/cicd-architect.yaml +409 -0
  202. package/prompts/packs/devops-azure/devops-engineer.yaml +263 -0
  203. package/prompts/packs/fintech/compliance-officer.yaml +135 -0
  204. package/prompts/packs/fintech/financial-analyst.yaml +143 -0
  205. package/prompts/packs/fintech/risk-manager.yaml +240 -0
  206. package/prompts/tea/tea.yaml +100 -0
  207. package/requirements.txt +5 -0
  208. package/requirements_crewai.txt +37 -0
  209. package/src/agents/module-help.csv +31 -0
  210. package/src/agents/module.yaml +50 -0
  211. package/src/agents/team/analyst.agent.yaml +43 -0
  212. package/src/agents/team/architect.agent.yaml +29 -0
  213. package/src/agents/team/dev.agent.yaml +38 -0
  214. package/src/agents/team/pm.agent.yaml +44 -0
  215. package/src/agents/team/qa.agent.yaml +58 -0
  216. package/src/agents/team/quick-flow-solo-dev.agent.yaml +32 -0
  217. package/src/agents/team/sm.agent.yaml +37 -0
  218. package/src/agents/team/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
  219. package/src/agents/team/tech-writer/tech-writer.agent.yaml +46 -0
  220. package/src/agents/team/ux-designer.agent.yaml +27 -0
  221. package/src/agents/teams/default-party.csv +20 -0
  222. package/src/agents/teams/team-fullstack.yaml +12 -0
  223. package/src/core/WIZARD-ENGINE.md +94 -0
  224. package/src/core/agents/mdan-master.agent.yaml +133 -0
  225. package/src/core/tasks/editorial-review-prose.xml +102 -0
  226. package/src/core/tasks/editorial-review-structure.xml +208 -0
  227. package/src/core/tasks/help.md +86 -0
  228. package/src/core/tasks/index-docs.xml +65 -0
  229. package/src/core/tasks/review-adversarial-general.xml +49 -0
  230. package/src/core/tasks/shard-doc.xml +108 -0
  231. package/src/core/tasks/workflow.xml +235 -0
  232. package/src/memory/MEMORY-AUTO.json +66 -0
  233. package/src/memory/MEMORY-SYSTEM.md +61 -0
  234. package/src/memory/v1-memory-system.md +197 -0
  235. package/src/memory/v1-resume-protocol.md +379 -0
  236. package/src/packs/db-optimization/agents/prompt.yaml +63 -0
  237. package/src/packs/devops-azure/agents/prompt.yaml +301 -0
  238. package/src/packs/fintech/agents/prompt.yaml +135 -0
  239. package/src/phases/auto/auto-01-load.md +165 -0
  240. package/src/phases/auto/auto-02-discover.md +207 -0
  241. package/src/phases/auto/auto-03-plan.md +509 -0
  242. package/src/phases/auto/auto-04-architect.md +567 -0
  243. package/src/phases/auto/auto-05-implement.md +713 -0
  244. package/src/phases/auto/auto-06-test.md +559 -0
  245. package/src/phases/auto/auto-07-deploy.md +510 -0
  246. package/src/phases/auto/auto-08-doc.md +970 -0
  247. package/src/phases/manual/01-discover.md +136 -0
  248. package/src/phases/manual/02-design.md +147 -0
  249. package/src/phases/manual/03-build.md +113 -0
  250. package/src/phases/manual/04-verify.md +107 -0
  251. package/src/phases/manual/05-ship.md +156 -0
  252. package/src/protocols/debate-protocol.md +58 -0
  253. package/src/protocols/universal-envelope.md +42 -0
  254. package/src/protocols/v1-debate-protocol.md +454 -0
  255. package/src/protocols/v1-universal-envelope.md +273 -0
  256. package/src/utility/agent-components/activation-rules.txt +6 -0
  257. package/src/utility/agent-components/activation-steps.txt +14 -0
  258. package/src/utility/agent-components/agent-command-header.md +1 -0
  259. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  260. package/src/utility/agent-components/handler-action.txt +4 -0
  261. package/src/utility/agent-components/handler-data.txt +5 -0
  262. package/src/utility/agent-components/handler-exec.txt +6 -0
  263. package/src/utility/agent-components/handler-multi.txt +14 -0
  264. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  265. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  266. package/src/utility/agent-components/handler-workflow.txt +10 -0
  267. package/src/utility/agent-components/menu-handlers.txt +6 -0
  268. package/src/wizards/01-discover/create-product-brief/steps/step-01-init.md +7 -0
  269. package/src/wizards/01-discover/create-product-brief/steps/step-02-vision.md +7 -0
  270. package/src/wizards/01-discover/create-product-brief/steps/step-03-users.md +7 -0
  271. package/src/wizards/01-discover/create-product-brief/steps/step-04-scope.md +7 -0
  272. package/src/wizards/01-discover/create-product-brief/steps/step-05-metrics.md +7 -0
  273. package/src/wizards/01-discover/create-product-brief/steps/step-06-complete.md +7 -0
  274. package/src/wizards/01-discover/create-product-brief/templates/product-brief.template.md +14 -0
  275. package/src/wizards/01-discover/create-product-brief/wizard.md +105 -0
  276. package/src/wizards/01-discover/research/domain-steps/step-01-init.md +137 -0
  277. package/src/wizards/01-discover/research/domain-steps/step-02-domain-analysis.md +229 -0
  278. package/src/wizards/01-discover/research/domain-steps/step-03-competitive-landscape.md +238 -0
  279. package/src/wizards/01-discover/research/domain-steps/step-04-regulatory-focus.md +206 -0
  280. package/src/wizards/01-discover/research/domain-steps/step-05-technical-trends.md +234 -0
  281. package/src/wizards/01-discover/research/domain-steps/step-06-research-synthesis.md +444 -0
  282. package/src/wizards/01-discover/research/market-steps/step-01-init.md +182 -0
  283. package/src/wizards/01-discover/research/market-steps/step-02-customer-behavior.md +237 -0
  284. package/src/wizards/01-discover/research/market-steps/step-03-customer-pain-points.md +249 -0
  285. package/src/wizards/01-discover/research/market-steps/step-04-customer-decisions.md +259 -0
  286. package/src/wizards/01-discover/research/market-steps/step-05-competitive-analysis.md +177 -0
  287. package/src/wizards/01-discover/research/market-steps/step-06-research-completion.md +476 -0
  288. package/src/wizards/01-discover/research/technical-steps/step-01-init.md +137 -0
  289. package/src/wizards/01-discover/research/technical-steps/step-02-technical-overview.md +239 -0
  290. package/src/wizards/01-discover/research/technical-steps/step-03-integration-patterns.md +248 -0
  291. package/src/wizards/01-discover/research/technical-steps/step-04-architectural-patterns.md +202 -0
  292. package/src/wizards/01-discover/research/technical-steps/step-05-implementation-research.md +233 -0
  293. package/src/wizards/01-discover/research/technical-steps/step-06-research-synthesis.md +487 -0
  294. package/src/wizards/01-discover/research/templates/research.template.md +29 -0
  295. package/src/wizards/01-discover/research/workflow-domain-research.md +54 -0
  296. package/src/wizards/01-discover/research/workflow-market-research.md +54 -0
  297. package/src/wizards/01-discover/research/workflow-technical-research.md +54 -0
  298. package/src/wizards/02-plan/create-prd/data/domain-complexity.csv +15 -0
  299. package/src/wizards/02-plan/create-prd/data/prd-purpose.md +197 -0
  300. package/src/wizards/02-plan/create-prd/data/project-types.csv +11 -0
  301. package/src/wizards/02-plan/create-prd/steps/step-01-init.md +191 -0
  302. package/src/wizards/02-plan/create-prd/steps/step-01b-continue.md +152 -0
  303. package/src/wizards/02-plan/create-prd/steps/step-02-discovery.md +224 -0
  304. package/src/wizards/02-plan/create-prd/steps/step-02b-vision.md +154 -0
  305. package/src/wizards/02-plan/create-prd/steps/step-02c-executive-summary.md +170 -0
  306. package/src/wizards/02-plan/create-prd/steps/step-03-success.md +226 -0
  307. package/src/wizards/02-plan/create-prd/steps/step-04-journeys.md +213 -0
  308. package/src/wizards/02-plan/create-prd/steps/step-05-domain.md +207 -0
  309. package/src/wizards/02-plan/create-prd/steps/step-06-innovation.md +226 -0
  310. package/src/wizards/02-plan/create-prd/steps/step-07-project-type.md +237 -0
  311. package/src/wizards/02-plan/create-prd/steps/step-08-scoping.md +228 -0
  312. package/src/wizards/02-plan/create-prd/steps/step-09-functional.md +231 -0
  313. package/src/wizards/02-plan/create-prd/steps/step-10-nonfunctional.md +242 -0
  314. package/src/wizards/02-plan/create-prd/steps/step-11-polish.md +217 -0
  315. package/src/wizards/02-plan/create-prd/steps/step-12-complete.md +124 -0
  316. package/src/wizards/02-plan/create-prd/templates/prd-template.md +10 -0
  317. package/src/wizards/02-plan/create-prd/wizard.md +63 -0
  318. package/src/wizards/02-plan/create-ux-design/steps/step-01-init.md +135 -0
  319. package/src/wizards/02-plan/create-ux-design/steps/step-01b-continue.md +127 -0
  320. package/src/wizards/02-plan/create-ux-design/steps/step-02-discovery.md +190 -0
  321. package/src/wizards/02-plan/create-ux-design/steps/step-03-core-experience.md +216 -0
  322. package/src/wizards/02-plan/create-ux-design/steps/step-04-emotional-response.md +219 -0
  323. package/src/wizards/02-plan/create-ux-design/steps/step-05-inspiration.md +234 -0
  324. package/src/wizards/02-plan/create-ux-design/steps/step-06-design-system.md +252 -0
  325. package/src/wizards/02-plan/create-ux-design/steps/step-07-defining-experience.md +254 -0
  326. package/src/wizards/02-plan/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  327. package/src/wizards/02-plan/create-ux-design/steps/step-09-design-directions.md +224 -0
  328. package/src/wizards/02-plan/create-ux-design/steps/step-10-user-journeys.md +241 -0
  329. package/src/wizards/02-plan/create-ux-design/steps/step-11-component-strategy.md +248 -0
  330. package/src/wizards/02-plan/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  331. package/src/wizards/02-plan/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  332. package/src/wizards/02-plan/create-ux-design/steps/step-14-complete.md +171 -0
  333. package/src/wizards/02-plan/create-ux-design/templates/ux-design-template.md +13 -0
  334. package/src/wizards/02-plan/create-ux-design/wizard.md +42 -0
  335. package/src/wizards/03-architect/create-architecture/data/domain-complexity.csv +13 -0
  336. package/src/wizards/03-architect/create-architecture/data/project-types.csv +7 -0
  337. package/src/wizards/03-architect/create-architecture/steps/step-01-init.md +153 -0
  338. package/src/wizards/03-architect/create-architecture/steps/step-01b-continue.md +173 -0
  339. package/src/wizards/03-architect/create-architecture/steps/step-02-context.md +224 -0
  340. package/src/wizards/03-architect/create-architecture/steps/step-03-starter.md +329 -0
  341. package/src/wizards/03-architect/create-architecture/steps/step-04-decisions.md +318 -0
  342. package/src/wizards/03-architect/create-architecture/steps/step-05-patterns.md +359 -0
  343. package/src/wizards/03-architect/create-architecture/steps/step-06-structure.md +379 -0
  344. package/src/wizards/03-architect/create-architecture/steps/step-07-validation.md +359 -0
  345. package/src/wizards/03-architect/create-architecture/steps/step-08-complete.md +76 -0
  346. package/src/wizards/03-architect/create-architecture/templates/architecture-decision-template.md +12 -0
  347. package/src/wizards/03-architect/create-architecture/wizard.md +49 -0
  348. package/src/wizards/03-architect/create-epics/steps/step-01-validate-prerequisites.md +259 -0
  349. package/src/wizards/03-architect/create-epics/steps/step-02-design-epics.md +233 -0
  350. package/src/wizards/03-architect/create-epics/steps/step-03-create-stories.md +272 -0
  351. package/src/wizards/03-architect/create-epics/steps/step-04-final-validation.md +149 -0
  352. package/src/wizards/03-architect/create-epics/templates/epics-template.md +57 -0
  353. package/src/wizards/03-architect/create-epics/wizard.md +58 -0
  354. package/src/wizards/04-build/code-review/checklist.md +23 -0
  355. package/src/wizards/04-build/code-review/instructions.xml +227 -0
  356. package/src/wizards/04-build/code-review/workflow.yaml +43 -0
  357. package/src/wizards/04-build/dev-story/checklist.md +80 -0
  358. package/src/wizards/04-build/dev-story/instructions.xml +410 -0
  359. package/src/wizards/04-build/dev-story/workflow.yaml +20 -0
  360. package/src/wizards/04-build/sprint-planning/checklist.md +33 -0
  361. package/src/wizards/04-build/sprint-planning/instructions.md +226 -0
  362. package/src/wizards/04-build/sprint-planning/sprint-status-template.yaml +55 -0
  363. package/src/wizards/04-build/sprint-planning/workflow.yaml +47 -0
  364. package/src/wizards/05-ship/document-project/templates/deep-dive-template.md +345 -0
  365. package/src/wizards/05-ship/document-project/templates/index-template.md +169 -0
  366. package/src/wizards/05-ship/document-project/templates/project-overview-template.md +103 -0
  367. package/src/wizards/05-ship/document-project/templates/project-scan-report-schema.json +160 -0
  368. package/src/wizards/05-ship/document-project/templates/source-tree-template.md +135 -0
  369. package/src/wizards/05-ship/document-project/wizard.md +130 -0
  370. package/src/wizards/quick/quick-dev/steps/step-01-mode-detection.md +174 -0
  371. package/src/wizards/quick/quick-dev/steps/step-02-context-gathering.md +118 -0
  372. package/src/wizards/quick/quick-dev/steps/step-03-execute.md +111 -0
  373. package/src/wizards/quick/quick-dev/steps/step-04-self-check.md +111 -0
  374. package/src/wizards/quick/quick-dev/steps/step-05-adversarial-review.md +104 -0
  375. package/src/wizards/quick/quick-dev/steps/step-06-resolve-findings.md +146 -0
  376. package/src/wizards/quick/quick-dev/wizard.md +50 -0
  377. package/src/wizards/quick/quick-spec/steps/step-01-understand.md +189 -0
  378. package/src/wizards/quick/quick-spec/steps/step-02-investigate.md +143 -0
  379. package/src/wizards/quick/quick-spec/steps/step-03-generate.md +126 -0
  380. package/src/wizards/quick/quick-spec/steps/step-04-review.md +200 -0
  381. package/src/wizards/quick/quick-spec/templates/tech-spec-template.md +74 -0
  382. package/src/wizards/quick/quick-spec/wizard.md +79 -0
  383. package/src/wizards/special/brainstorming/methods/brain-methods.csv +62 -0
  384. package/src/wizards/special/brainstorming/steps/step-01-session-setup.md +197 -0
  385. package/src/wizards/special/brainstorming/steps/step-01b-continue.md +122 -0
  386. package/src/wizards/special/brainstorming/steps/step-02a-user-selected.md +225 -0
  387. package/src/wizards/special/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  388. package/src/wizards/special/brainstorming/steps/step-02c-random-selection.md +209 -0
  389. package/src/wizards/special/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  390. package/src/wizards/special/brainstorming/steps/step-03-technique-execution.md +399 -0
  391. package/src/wizards/special/brainstorming/steps/step-04-idea-organization.md +303 -0
  392. package/src/wizards/special/brainstorming/wizard.md +58 -0
  393. package/src/wizards/special/party-mode/steps/step-01-agent-loading.md +138 -0
  394. package/src/wizards/special/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  395. package/src/wizards/special/party-mode/steps/step-03-graceful-exit.md +168 -0
  396. package/src/wizards/special/party-mode/wizard.md +194 -0
  397. package/test/README.md +295 -0
  398. package/test/adversarial-review-tests/README.md +56 -0
  399. package/test/adversarial-review-tests/sample-content.md +46 -0
  400. package/test/adversarial-review-tests/test-cases.yaml +103 -0
  401. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
  402. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
  403. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
  404. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
  405. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
  406. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
  407. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
  408. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
  409. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
  410. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
  411. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
  412. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
  413. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
  414. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
  415. package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
  416. package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
  417. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
  418. package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
  419. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
  420. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
  421. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
  422. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
  423. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
  424. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
  425. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
  426. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
  427. package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
  428. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
  429. package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
  430. package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
  431. package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
  432. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
  433. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
  434. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
  435. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
  436. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
  437. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
  438. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
  439. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
  440. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
  441. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
  442. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
  443. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
  444. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
  445. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
  446. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
  447. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
  448. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
  449. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
  450. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
  451. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
  452. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
  453. package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +3 -0
  454. package/test/fixtures/file-refs-csv/invalid/empty-data.csv +1 -0
  455. package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +3 -0
  456. package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +3 -0
  457. package/test/fixtures/file-refs-csv/valid/bmm-style.csv +3 -0
  458. package/test/fixtures/file-refs-csv/valid/core-style.csv +3 -0
  459. package/test/fixtures/file-refs-csv/valid/minimal.csv +2 -0
  460. package/test/test-agent-schema.js +387 -0
  461. package/test/test-cli-integration.sh +159 -0
  462. package/test/test-file-refs-csv.js +133 -0
  463. package/test/test-installation-components.js +212 -0
  464. package/test/test-rehype-plugins.mjs +1050 -0
  465. package/test/unit-test-schema.js +133 -0
  466. package/tests/run_all_tests.py +80 -0
  467. package/tests/scenarios/cis/brainstorming-coach.test.py +150 -0
  468. package/tests/scenarios/cis/creative-problem-solver.test.py +167 -0
  469. package/tests/scenarios/cis/design-thinking-coach.test.py +177 -0
  470. package/tests/scenarios/cis/innovation-strategist.test.py +191 -0
  471. package/tests/scenarios/cis/presentation-master.test.py +240 -0
  472. package/tests/scenarios/cis/storyteller.test.py +324 -0
  473. package/tests/scenarios/core/mdan-master.test.py +281 -0
  474. package/tests/scenarios/mmb/agent-builder.test.py +124 -0
  475. package/tests/scenarios/mmb/module-builder.test.py +124 -0
  476. package/tests/scenarios/mmb/workflow-builder.test.py +124 -0
  477. package/tests/scenarios/mmm/analyst.test.py +138 -0
  478. package/tests/scenarios/mmm/architect.test.py +138 -0
  479. package/tests/scenarios/mmm/dev.test.py +138 -0
  480. package/tests/scenarios/mmm/pm.test.py +138 -0
  481. package/tests/scenarios/mmm/qa.test.py +138 -0
  482. package/tests/scenarios/mmm/quick-flow-solo-dev.test.py +138 -0
  483. package/tests/scenarios/mmm/sm.test.py +138 -0
  484. package/tests/scenarios/mmm/tech-writer.test.py +138 -0
  485. package/tests/scenarios/mmm/ux-designer.test.py +294 -0
  486. package/tests/scenarios/packs/db-optimization/db-performance-analyst.test.py +108 -0
  487. package/tests/scenarios/packs/db-optimization/indexing-specialist.test.py +108 -0
  488. package/tests/scenarios/packs/db-optimization/query-optimizer.test.py +106 -0
  489. package/tests/scenarios/packs/devops-azure/azure-specialist.test.py +125 -0
  490. package/tests/scenarios/packs/devops-azure/cicd-architect.test.py +122 -0
  491. package/tests/scenarios/packs/devops-azure/devops-engineer.test.py +128 -0
  492. package/tests/scenarios/packs/fintech/compliance-officer.test.py +165 -0
  493. package/tests/scenarios/packs/fintech/financial-analyst.test.py +184 -0
  494. package/tests/scenarios/packs/fintech/risk-manager.test.py +171 -0
  495. package/tests/scenarios/tea/tea.test.py +346 -0
  496. package/tests/simple_cis_test.py +285 -0
  497. package/tests/simple_db_optimization_test.py +199 -0
  498. package/tests/simple_devops_test.py +193 -0
  499. package/tests/simple_fintech_test.py +205 -0
  500. package/tests/simple_mmb_test.py +103 -0
  501. package/tests/simple_mmm_test.py +159 -0
  502. package/tests/simple_tea_test.py +80 -0
  503. package/tests/simple_test.py +111 -0
  504. package/tests/simple_ux_designer_test.py +144 -0
  505. package/tests/validate_yaml.py +86 -0
  506. package/tools/build-docs.mjs +463 -0
  507. package/tools/cli/README.md +60 -0
  508. package/tools/cli/commands/install.js +87 -0
  509. package/tools/cli/commands/status.js +65 -0
  510. package/tools/cli/commands/uninstall.js +167 -0
  511. package/tools/cli/external-official-modules.yaml +53 -0
  512. package/tools/cli/installers/install-messages.yaml +39 -0
  513. package/tools/cli/installers/lib/core/config-collector.js +1285 -0
  514. package/tools/cli/installers/lib/core/custom-module-cache.js +260 -0
  515. package/tools/cli/installers/lib/core/dependency-resolver.js +743 -0
  516. package/tools/cli/installers/lib/core/detector.js +223 -0
  517. package/tools/cli/installers/lib/core/ide-config-manager.js +157 -0
  518. package/tools/cli/installers/lib/core/installer.js +3162 -0
  519. package/tools/cli/installers/lib/core/manifest-generator.js +1081 -0
  520. package/tools/cli/installers/lib/core/manifest.js +1038 -0
  521. package/tools/cli/installers/lib/custom/handler.js +358 -0
  522. package/tools/cli/installers/lib/ide/_base-ide.js +665 -0
  523. package/tools/cli/installers/lib/ide/_config-driven.js +634 -0
  524. package/tools/cli/installers/lib/ide/codex.js +440 -0
  525. package/tools/cli/installers/lib/ide/github-copilot.js +699 -0
  526. package/tools/cli/installers/lib/ide/kilo.js +269 -0
  527. package/tools/cli/installers/lib/ide/manager.js +342 -0
  528. package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
  529. package/tools/cli/installers/lib/ide/platform-codes.yaml +243 -0
  530. package/tools/cli/installers/lib/ide/rovodev.js +257 -0
  531. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +180 -0
  532. package/tools/cli/installers/lib/ide/shared/mdan-artifacts.js +174 -0
  533. package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
  534. package/tools/cli/installers/lib/ide/shared/path-utils.js +299 -0
  535. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +366 -0
  536. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +318 -0
  537. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  538. package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
  539. package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
  540. package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
  541. package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
  542. package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +14 -0
  543. package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
  544. package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
  545. package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
  546. package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
  547. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
  548. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
  549. package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +16 -0
  550. package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +9 -0
  551. package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +9 -0
  552. package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md +15 -0
  553. package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +7 -0
  554. package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +15 -0
  555. package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +13 -0
  556. package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +13 -0
  557. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +16 -0
  558. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +16 -0
  559. package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
  560. package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
  561. package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
  562. package/tools/cli/installers/lib/ide/templates/split/.gitkeep +0 -0
  563. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
  564. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  565. package/tools/cli/installers/lib/message-loader.js +83 -0
  566. package/tools/cli/installers/lib/modules/external-manager.js +136 -0
  567. package/tools/cli/installers/lib/modules/manager.js +1498 -0
  568. package/tools/cli/lib/activation-builder.js +165 -0
  569. package/tools/cli/lib/agent/compiler.js +525 -0
  570. package/tools/cli/lib/agent/installer.js +680 -0
  571. package/tools/cli/lib/agent/template-engine.js +152 -0
  572. package/tools/cli/lib/agent-analyzer.js +109 -0
  573. package/tools/cli/lib/agent-party-generator.js +194 -0
  574. package/tools/cli/lib/cli-utils.js +182 -0
  575. package/tools/cli/lib/config.js +213 -0
  576. package/tools/cli/lib/file-ops.js +204 -0
  577. package/tools/cli/lib/platform-codes.js +116 -0
  578. package/tools/cli/lib/project-root.js +77 -0
  579. package/tools/cli/lib/prompts.js +809 -0
  580. package/tools/cli/lib/ui.js +1936 -0
  581. package/tools/cli/lib/xml-handler.js +177 -0
  582. package/tools/cli/lib/xml-to-markdown.js +82 -0
  583. package/tools/cli/lib/yaml-format.js +245 -0
  584. package/tools/cli/lib/yaml-xml-builder.js +587 -0
  585. package/tools/cli/mdan-cli.js +106 -0
  586. package/tools/docs/_prompt-external-modules-page.md +59 -0
  587. package/tools/docs/fix-refs.md +91 -0
  588. package/tools/fix-doc-links.js +285 -0
  589. package/tools/format-workflow-md.js +263 -0
  590. package/tools/lib/xml-utils.js +13 -0
  591. package/tools/mdan-npx-wrapper.js +38 -0
  592. package/tools/migrate-custom-module-paths.js +124 -0
  593. package/tools/platform-codes.yaml +157 -0
  594. package/tools/schema/agent.js +491 -0
  595. package/tools/validate-agent-schema.js +110 -0
  596. package/tools/validate-doc-links.js +407 -0
  597. package/tools/validate-file-refs.js +554 -0
  598. package/tools/validate-svg-changes.sh +356 -0
  599. package/website/README.md +75 -0
  600. package/website/astro.config.mjs +136 -0
  601. package/website/public/favicon.ico +0 -0
  602. package/website/public/workflow-map-diagram.html +361 -0
  603. package/website/src/components/Banner.astro +62 -0
  604. package/website/src/components/Header.astro +96 -0
  605. package/website/src/components/MobileMenuFooter.astro +33 -0
  606. package/website/src/content/config.ts +6 -0
  607. package/website/src/lib/site-url.mjs +25 -0
  608. package/website/src/pages/404.astro +11 -0
  609. package/website/src/pages/robots.txt.ts +48 -0
  610. package/website/src/rehype-base-paths.js +112 -0
  611. package/website/src/rehype-markdown-links.js +119 -0
  612. package/website/src/styles/custom.css +805 -0
@@ -0,0 +1,539 @@
1
+ #!/usr/bin/env python3
2
+ """MDAN CrewAI CLI - CrewAI integration commands"""
3
+
4
+ import asyncio
5
+ import json
6
+ import os
7
+ import sys
8
+ from pathlib import Path
9
+
10
+ try:
11
+ import click
12
+ except ImportError:
13
+ print("Error: Click is required. Install with: pip install click")
14
+ sys.exit(1)
15
+
16
+ # CrewAI imports - will be loaded lazily
17
+ CREWAI_AVAILABLE = False
18
+ try:
19
+ from integrations.crewai.orchestrator import CrewAIOrchestrator
20
+ from integrations.crewai.skills.skill_router import SkillRouter
21
+
22
+ CREWAI_AVAILABLE = True
23
+ except ImportError:
24
+ CREWAI_AVAILABLE = False
25
+
26
+ # Colors
27
+ GREEN = "\033[0;32m"
28
+ RED = "\033[0;31m"
29
+ YELLOW = "\033[1;33m"
30
+ CYAN = "\033[0;36m"
31
+ MAGENTA = "\033[0;35m"
32
+ BOLD = "\033[1m"
33
+ NC = "\033[0m"
34
+
35
+
36
+ def run_async(coro):
37
+ """Run async coroutine in sync context."""
38
+ try:
39
+ loop = asyncio.get_event_loop()
40
+ except RuntimeError:
41
+ loop = asyncio.new_event_loop()
42
+ asyncio.set_event_loop(loop)
43
+ return loop.run_until_complete(coro)
44
+
45
+
46
+ @click.group(name="crewai")
47
+ def crewai_cli():
48
+ """CrewAI integration commands for MDAN."""
49
+ pass
50
+
51
+
52
+ @crewai_cli.command()
53
+ @click.option(
54
+ "--project-path", default=".", help="Project path (default: current directory)"
55
+ )
56
+ def init(project_path):
57
+ """Initialize CrewAI in a project."""
58
+ project_path = Path(project_path).resolve()
59
+
60
+ click.echo(f"{CYAN}🚀 Initializing CrewAI in: {BOLD}{project_path}{NC}")
61
+
62
+ # Create crewai_config.yaml if it doesn't exist
63
+ config_file = project_path / "crewai_config.yaml"
64
+
65
+ if config_file.exists():
66
+ click.echo(f"{YELLOW}⚠️ CrewAI config already exists at {config_file}{NC}")
67
+ click.echo(f" {BOLD}Next:{NC} Edit the config file to customize your setup")
68
+ return
69
+
70
+ default_config = """# CrewAI Configuration for MDAN
71
+ # Copy this file and customize for your project
72
+
73
+ # LLM Configuration
74
+ llm:
75
+ provider: "openai" # openai, anthropic, local
76
+ model: "gpt-4"
77
+ temperature: 0.7
78
+ max_tokens: 4096
79
+
80
+ # Database Configuration (optional)
81
+ database:
82
+ type: "sqlite" # postgresql, mysql, sqlserver, sqlite
83
+ host: "localhost"
84
+ port: 5432
85
+ database: "mdan_db"
86
+ username: ""
87
+ password: ""
88
+
89
+ # Serper API Key (for web search)
90
+ serper_api_key: "${SERPER_API_KEY}"
91
+
92
+ # Auto Mode Settings
93
+ auto_mode:
94
+ enabled: true
95
+ save_context: true
96
+ context_save_threshold: 0.8 # Save at 80% token usage
97
+
98
+ # Agent Settings
99
+ agents:
100
+ product:
101
+ enabled: true
102
+ verbose: true
103
+ architect:
104
+ enabled: true
105
+ verbose: true
106
+ ux:
107
+ enabled: true
108
+ verbose: true
109
+ dev:
110
+ enabled: true
111
+ verbose: true
112
+ test:
113
+ enabled: true
114
+ verbose: true
115
+ security:
116
+ enabled: true
117
+ verbose: true
118
+ devops:
119
+ enabled: true
120
+ verbose: true
121
+ doc:
122
+ enabled: true
123
+ verbose: true
124
+
125
+ # Flow Settings
126
+ flows:
127
+ auto:
128
+ enabled: true
129
+ discovery:
130
+ enabled: true
131
+ build:
132
+ enabled: true
133
+ debate:
134
+ enabled: true
135
+ """
136
+
137
+ config_file.write_text(default_config)
138
+
139
+ # Create .env.example if it doesn't exist
140
+ env_example = project_path / ".env.example"
141
+ if not env_example.exists():
142
+ env_example.write_text("""# CrewAI Environment Variables
143
+ # Copy this to .env and fill in your values
144
+
145
+ # OpenAI API Key
146
+ OPENAI_API_KEY=your-openai-api-key-here
147
+
148
+ # Serper API Key (for web search)
149
+ SERPER_API_KEY=your-serper-api-key-here
150
+
151
+ # Database Configuration (optional)
152
+ DB_HOST=localhost
153
+ DB_PORT=5432
154
+ DB_NAME=mdan_db
155
+ DB_USER=your-db-user
156
+ DB_PASSWORD=your-db-password
157
+ """)
158
+
159
+ click.echo(f"{GREEN}✅ CrewAI initialized successfully!{NC}")
160
+ click.echo(f" {BOLD}Config file:{NC} {config_file}")
161
+ click.echo(f" {BOLD}Env example:{NC} {env_example}")
162
+ click.echo(f"\n {BOLD}Next:{NC}")
163
+ click.echo(" 1. Copy .env.example to .env and fill in your API keys")
164
+ click.echo(" 2. Customize crewai_config.yaml if needed")
165
+ click.echo(f" 3. Run: {CYAN}mdan crewai status{NC}")
166
+
167
+
168
+ @crewai_cli.command()
169
+ @click.argument("task")
170
+ @click.option(
171
+ "--project-path", default=".", help="Project path (default: current directory)"
172
+ )
173
+ @click.option("--save-context", is_flag=True, help="Save context after execution")
174
+ def auto(task, project_path, save_context):
175
+ """Run autonomous mode with a task."""
176
+ if not CREWAI_AVAILABLE:
177
+ click.echo(f"{RED}❌ CrewAI integration not found{NC}")
178
+ click.echo(f" Install with: {CYAN}pip install -r requirements_crewai.txt{NC}")
179
+ click.echo(
180
+ f" Note: CrewAI requires Python 3.10-3.13 (current: {sys.version_info.major}.{sys.version_info.minor})"
181
+ )
182
+ sys.exit(1)
183
+
184
+ project_path = Path(project_path).resolve()
185
+
186
+ # Check for environment variables
187
+ if not os.getenv("OPENAI_API_KEY"):
188
+ click.echo(f"{RED}❌ OPENAI_API_KEY not set{NC}")
189
+ click.echo(f" Set it with: {CYAN}export OPENAI_API_KEY=your-key{NC}")
190
+ sys.exit(1)
191
+
192
+ click.echo(f"{CYAN}🚀 Starting autonomous mode...{NC}")
193
+ click.echo(f"{BOLD}Task:{NC} {task}\n")
194
+
195
+ try:
196
+ orchestrator = CrewAIOrchestrator(
197
+ project_path=str(project_path),
198
+ auto_mode=True,
199
+ serper_api_key=os.getenv("SERPER_API_KEY"),
200
+ )
201
+
202
+ result = run_async(orchestrator.run_auto_mode(task))
203
+
204
+ if result.get("status") == "success":
205
+ click.echo(f"\n{GREEN}✅ Autonomous mode completed successfully!{NC}")
206
+
207
+ if save_context:
208
+ state_file = project_path / "mdan_crewai_state.json"
209
+ orchestrator.save_state(str(state_file))
210
+ click.echo(f" {BOLD}State saved:{NC} {state_file}")
211
+
212
+ # Display result summary
213
+ if "result" in result:
214
+ click.echo(f"\n{BOLD}Result:{NC}")
215
+ if isinstance(result["result"], dict):
216
+ click.echo(json.dumps(result["result"], indent=2))
217
+ else:
218
+ click.echo(str(result["result"]))
219
+ else:
220
+ click.echo(f"\n{RED}❌ Error:{NC} {result.get('error', 'Unknown error')}")
221
+ sys.exit(1)
222
+
223
+ except Exception as e:
224
+ click.echo(f"\n{RED}❌ Error:{NC} {str(e)}")
225
+ sys.exit(1)
226
+
227
+
228
+ @crewai_cli.command()
229
+ @click.argument("topic")
230
+ @click.option(
231
+ "--project-path", default=".", help="Project path (default: current directory)"
232
+ )
233
+ @click.option("--rounds", default=3, help="Number of debate rounds (default: 3)")
234
+ def debate(topic, project_path, rounds):
235
+ """Start a multi-agent debate on a topic."""
236
+ if not CREWAI_AVAILABLE:
237
+ click.echo(f"{RED}❌ CrewAI integration not found{NC}")
238
+ click.echo(f" Install with: {CYAN}pip install -r requirements_crewai.txt{NC}")
239
+ click.echo(
240
+ f" Note: CrewAI requires Python 3.10-3.13 (current: {sys.version_info.major}.{sys.version_info.minor})"
241
+ )
242
+ sys.exit(1)
243
+
244
+ project_path = Path(project_path).resolve()
245
+
246
+ if not os.getenv("OPENAI_API_KEY"):
247
+ click.echo(f"{RED}❌ OPENAI_API_KEY not set{NC}")
248
+ click.echo(f" Set it with: {CYAN}export OPENAI_API_KEY=your-key{NC}")
249
+ sys.exit(1)
250
+
251
+ click.echo(f"{CYAN}🎯 Starting multi-agent debate...{NC}")
252
+ click.echo(f"{BOLD}Topic:{NC} {topic}")
253
+ click.echo(f"{BOLD}Rounds:{NC} {rounds}\n")
254
+
255
+ try:
256
+ orchestrator = CrewAIOrchestrator(
257
+ project_path=str(project_path),
258
+ serper_api_key=os.getenv("SERPER_API_KEY"),
259
+ )
260
+
261
+ result = run_async(orchestrator.start_debate(topic))
262
+
263
+ if result.get("status") == "success":
264
+ click.echo(f"\n{GREEN}✅ Debate completed!{NC}")
265
+
266
+ if "result" in result:
267
+ click.echo(f"\n{BOLD}Debate Summary:{NC}")
268
+ if isinstance(result["result"], dict):
269
+ click.echo(json.dumps(result["result"], indent=2))
270
+ else:
271
+ click.echo(str(result["result"]))
272
+ else:
273
+ click.echo(f"\n{RED}❌ Error:{NC} {result.get('error', 'Unknown error')}")
274
+ sys.exit(1)
275
+
276
+ except Exception as e:
277
+ click.echo(f"\n{RED}❌ Error:{NC} {str(e)}")
278
+ sys.exit(1)
279
+
280
+
281
+ @crewai_cli.command()
282
+ @click.argument("agent_name")
283
+ @click.argument("task")
284
+ @click.option(
285
+ "--project-path", default=".", help="Project path (default: current directory)"
286
+ )
287
+ def agent(agent_name, task, project_path):
288
+ """Execute a task with a specific agent."""
289
+ if not CREWAI_AVAILABLE:
290
+ click.echo(f"{RED}❌ CrewAI integration not found{NC}")
291
+ click.echo(f" Install with: {CYAN}pip install -r requirements_crewai.txt{NC}")
292
+ click.echo(
293
+ f" Note: CrewAI requires Python 3.10-3.13 (current: {sys.version_info.major}.{sys.version_info.minor})"
294
+ )
295
+ sys.exit(1)
296
+
297
+ project_path = Path(project_path).resolve()
298
+
299
+ valid_agents = [
300
+ "product",
301
+ "architect",
302
+ "ux",
303
+ "dev",
304
+ "test",
305
+ "security",
306
+ "devops",
307
+ "doc",
308
+ ]
309
+
310
+ if agent_name not in valid_agents:
311
+ click.echo(f"{RED}❌ Invalid agent: {agent_name}{NC}")
312
+ click.echo(f" Valid agents: {', '.join(valid_agents)}")
313
+ sys.exit(1)
314
+
315
+ if not os.getenv("OPENAI_API_KEY"):
316
+ click.echo(f"{RED}❌ OPENAI_API_KEY not set{NC}")
317
+ click.echo(f" Set it with: {CYAN}export OPENAI_API_KEY=your-key{NC}")
318
+ sys.exit(1)
319
+
320
+ click.echo(f"{CYAN}🤖 Executing task with {BOLD}{agent_name}{NC} agent...")
321
+ click.echo(f"{BOLD}Task:{NC} {task}\n")
322
+
323
+ try:
324
+ orchestrator = CrewAIOrchestrator(
325
+ project_path=str(project_path),
326
+ serper_api_key=os.getenv("SERPER_API_KEY"),
327
+ )
328
+
329
+ result = run_async(orchestrator.execute_task(task))
330
+
331
+ if result.get("status") == "success":
332
+ click.echo(f"\n{GREEN}✅ Task completed!{NC}")
333
+
334
+ if "result" in result:
335
+ click.echo(f"\n{BOLD}Result:{NC}")
336
+ if isinstance(result["result"], dict):
337
+ click.echo(json.dumps(result["result"], indent=2))
338
+ else:
339
+ click.echo(str(result["result"]))
340
+ else:
341
+ click.echo(f"\n{RED}❌ Error:{NC} {result.get('error', 'Unknown error')}")
342
+ sys.exit(1)
343
+
344
+ except Exception as e:
345
+ click.echo(f"\n{RED}❌ Error:{NC} {str(e)}")
346
+ sys.exit(1)
347
+
348
+
349
+ @crewai_cli.command()
350
+ @click.argument("flow_name")
351
+ @click.argument("task")
352
+ @click.option(
353
+ "--project-path", default=".", help="Project path (default: current directory)"
354
+ )
355
+ def flow(flow_name, task, project_path):
356
+ """Execute a specific flow."""
357
+ if not CREWAI_AVAILABLE:
358
+ click.echo(f"{RED}❌ CrewAI integration not found{NC}")
359
+ click.echo(f" Install with: {CYAN}pip install -r requirements_crewai.txt{NC}")
360
+ click.echo(
361
+ f" Note: CrewAI requires Python 3.10-3.13 (current: {sys.version_info.major}.{sys.version_info.minor})"
362
+ )
363
+ sys.exit(1)
364
+
365
+ project_path = Path(project_path).resolve()
366
+
367
+ valid_flows = ["auto", "discovery", "build", "debate"]
368
+
369
+ if flow_name not in valid_flows:
370
+ click.echo(f"{RED}❌ Invalid flow: {flow_name}{NC}")
371
+ click.echo(f" Valid flows: {', '.join(valid_flows)}")
372
+ sys.exit(1)
373
+
374
+ if not os.getenv("OPENAI_API_KEY"):
375
+ click.echo(f"{RED}❌ OPENAI_API_KEY not set{NC}")
376
+ click.echo(f" Set it with: {CYAN}export OPENAI_API_KEY=your-key{NC}")
377
+ sys.exit(1)
378
+
379
+ click.echo(f"{CYAN}🔄 Executing {BOLD}{flow_name}{NC} flow...")
380
+ click.echo(f"{BOLD}Task:{NC} {task}\n")
381
+
382
+ try:
383
+ orchestrator = CrewAIOrchestrator(
384
+ project_path=str(project_path),
385
+ serper_api_key=os.getenv("SERPER_API_KEY"),
386
+ )
387
+
388
+ result = run_async(orchestrator.execute_task(task))
389
+
390
+ if result.get("status") == "success":
391
+ click.echo(f"\n{GREEN}✅ Flow completed!{NC}")
392
+
393
+ if "result" in result:
394
+ click.echo(f"\n{BOLD}Result:{NC}")
395
+ if isinstance(result["result"], dict):
396
+ click.echo(json.dumps(result["result"], indent=2))
397
+ else:
398
+ click.echo(str(result["result"]))
399
+ else:
400
+ click.echo(f"\n{RED}❌ Error:{NC} {result.get('error', 'Unknown error')}")
401
+ sys.exit(1)
402
+
403
+ except Exception as e:
404
+ click.echo(f"\n{RED}❌ Error:{NC} {str(e)}")
405
+ sys.exit(1)
406
+
407
+
408
+ @crewai_cli.command()
409
+ def skills():
410
+ """List available skills."""
411
+ if not CREWAI_AVAILABLE:
412
+ click.echo(f"{RED}❌ CrewAI integration not found{NC}")
413
+ click.echo(f" Install with: {CYAN}pip install -r requirements_crewai.txt{NC}")
414
+ click.echo(
415
+ f" Note: CrewAI requires Python 3.10-3.13 (current: {sys.version_info.major}.{sys.version_info.minor})"
416
+ )
417
+ sys.exit(1)
418
+
419
+ click.echo(f"{CYAN}📚 Available Skills:{NC}\n")
420
+
421
+ try:
422
+ router = SkillRouter()
423
+ all_skills = router.get_all_skills()
424
+
425
+ # Group by category
426
+ categories = {}
427
+ for skill_name, skill_info in all_skills.items():
428
+ category = skill_info.get("category", "General")
429
+ if category not in categories:
430
+ categories[category] = []
431
+ categories[category].append((skill_name, skill_info))
432
+
433
+ for category, skills in sorted(categories.items()):
434
+ click.echo(f"{BOLD}{category}:{NC}")
435
+ for skill_name, skill_info in skills:
436
+ description = skill_info.get("description", "No description")
437
+ click.echo(f" • {skill_name}: {description}")
438
+ click.echo()
439
+
440
+ except Exception as e:
441
+ click.echo(f"{RED}❌ Error loading skills: {str(e)}{NC}")
442
+ sys.exit(1)
443
+
444
+
445
+ @crewai_cli.command()
446
+ @click.option(
447
+ "--project-path", default=".", help="Project path (default: current directory)"
448
+ )
449
+ def status(project_path):
450
+ """Show CrewAI status."""
451
+ project_path = Path(project_path).resolve()
452
+
453
+ click.echo(f"{CYAN}📊 CrewAI Status{NC}\n")
454
+
455
+ # Check if CrewAI is available
456
+ if not CREWAI_AVAILABLE:
457
+ click.echo(f"{RED}❌ CrewAI integration not found{NC}")
458
+ click.echo(f" Install with: {CYAN}pip install -r requirements_crewai.txt{NC}")
459
+ click.echo(
460
+ f" Note: CrewAI requires Python 3.10-3.13 (current: {sys.version_info.major}.{sys.version_info.minor})"
461
+ )
462
+ return
463
+
464
+ # Check config file
465
+ config_file = project_path / "crewai_config.yaml"
466
+ if config_file.exists():
467
+ click.echo(f"{GREEN}✅ Config file:{NC} {config_file}")
468
+ else:
469
+ click.echo(f"{YELLOW}⚠️ Config file not found{NC}")
470
+ click.echo(f" Run: {CYAN}mdan crewai init{NC}")
471
+ return
472
+
473
+ # Check environment variables
474
+ click.echo(f"\n{BOLD}Environment Variables:{NC}")
475
+
476
+ if os.getenv("OPENAI_API_KEY"):
477
+ click.echo(f" {GREEN}✅{NC} OPENAI_API_KEY: Set")
478
+ else:
479
+ click.echo(f" {RED}❌{NC} OPENAI_API_KEY: Not set")
480
+
481
+ if os.getenv("SERPER_API_KEY"):
482
+ click.echo(f" {GREEN}✅{NC} SERPER_API_KEY: Set")
483
+ else:
484
+ click.echo(f" {YELLOW}⚠️{NC} SERPER_API_KEY: Not set (optional)")
485
+
486
+ # Check state file
487
+ state_file = project_path / "mdan_crewai_state.json"
488
+ if state_file.exists():
489
+ click.echo(f"\n{GREEN}✅ State file:{NC} {state_file}")
490
+ try:
491
+ with open(state_file) as f:
492
+ state = json.load(f)
493
+ click.echo(
494
+ f" {BOLD}Current Phase:{NC} {state.get('current_phase', 'N/A')}"
495
+ )
496
+ click.echo(
497
+ f" {BOLD}Auto Mode:{NC} {state.get('auto_mode_enabled', False)}"
498
+ )
499
+ click.echo(
500
+ f" {BOLD}Tasks Completed:{NC} {len(state.get('task_history', []))}"
501
+ )
502
+ except Exception:
503
+ click.echo(f" {YELLOW}⚠️ Could not read state file{NC}")
504
+
505
+ # Check integrations
506
+ click.echo(f"\n{BOLD}Integrations:{NC}")
507
+
508
+ import importlib.util
509
+
510
+ if importlib.util.find_spec("integrations.crewai.tools.serper_tool") is not None:
511
+ click.echo(f" {GREEN}✅{NC} Serper Tool: Available")
512
+ else:
513
+ click.echo(f" {RED}❌{NC} Serper Tool: Not available")
514
+
515
+ if importlib.util.find_spec("integrations.crewai.tools.sql_tool") is not None:
516
+ click.echo(f" {GREEN}✅{NC} SQL Tool: Available")
517
+ else:
518
+ click.echo(f" {RED}❌{NC} SQL Tool: Not available")
519
+
520
+ if importlib.util.find_spec("integrations.crewai.tools.file_tool") is not None:
521
+ click.echo(f" {GREEN}✅{NC} File Tool: Available")
522
+ else:
523
+ click.echo(f" {RED}❌{NC} File Tool: Not available")
524
+
525
+ # List agents
526
+ click.echo(f"\n{BOLD}Available Agents:{NC}")
527
+ agents = ["product", "architect", "ux", "dev", "test", "security", "devops", "doc"]
528
+ for agent in agents:
529
+ click.echo(f" • {agent}")
530
+
531
+ # List flows
532
+ click.echo(f"\n{BOLD}Available Flows:{NC}")
533
+ flows = ["auto", "discovery", "build", "debate"]
534
+ for flow in flows:
535
+ click.echo(f" • {flow}")
536
+
537
+
538
+ if __name__ == "__main__":
539
+ crewai_cli()
package/docs/404.md ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: Page Not Found
3
+ template: splash
4
+ ---
5
+
6
+
7
+ The page you're looking for doesn't exist or has been moved.
8
+
9
+ [Return to Home](./index.md)