claude-mpm 4.16.0__py3-none-any.whl → 4.25.10__py3-none-any.whl

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.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

Files changed (531) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_ENGINEER.md +286 -0
  3. claude_mpm/agents/BASE_PM.md +272 -23
  4. claude_mpm/agents/OUTPUT_STYLE.md +3 -48
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +1821 -32
  6. claude_mpm/agents/WORKFLOW.md +75 -2
  7. claude_mpm/agents/agent_loader.py +4 -4
  8. claude_mpm/agents/base_agent.json +6 -3
  9. claude_mpm/agents/frontmatter_validator.py +1 -1
  10. claude_mpm/agents/templates/api_qa.json +5 -2
  11. claude_mpm/agents/templates/circuit_breakers.md +108 -2
  12. claude_mpm/agents/templates/documentation.json +33 -6
  13. claude_mpm/agents/templates/engineer.json +5 -1
  14. claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
  15. claude_mpm/agents/templates/php-engineer.json +10 -4
  16. claude_mpm/agents/templates/pm_red_flags.md +89 -19
  17. claude_mpm/agents/templates/project_organizer.json +7 -3
  18. claude_mpm/agents/templates/python_engineer.json +8 -3
  19. claude_mpm/agents/templates/qa.json +2 -1
  20. claude_mpm/agents/templates/react_engineer.json +1 -0
  21. claude_mpm/agents/templates/research.json +82 -12
  22. claude_mpm/agents/templates/rust_engineer.json +12 -7
  23. claude_mpm/agents/templates/security.json +4 -4
  24. claude_mpm/agents/templates/svelte-engineer.json +225 -0
  25. claude_mpm/agents/templates/tauri_engineer.json +274 -0
  26. claude_mpm/agents/templates/ticketing.json +10 -6
  27. claude_mpm/agents/templates/version_control.json +4 -2
  28. claude_mpm/agents/templates/web_qa.json +2 -1
  29. claude_mpm/cli/README.md +253 -0
  30. claude_mpm/cli/__init__.py +11 -1
  31. claude_mpm/cli/commands/__init__.py +2 -0
  32. claude_mpm/cli/commands/aggregate.py +1 -1
  33. claude_mpm/cli/commands/analyze.py +3 -3
  34. claude_mpm/cli/commands/cleanup.py +1 -1
  35. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  36. claude_mpm/cli/commands/debug.py +12 -12
  37. claude_mpm/cli/commands/hook_errors.py +277 -0
  38. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  39. claude_mpm/cli/commands/mcp_install_commands.py.backup +284 -0
  40. claude_mpm/cli/commands/mpm_init/README.md +365 -0
  41. claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
  42. claude_mpm/cli/commands/mpm_init/core.py +573 -0
  43. claude_mpm/cli/commands/mpm_init/display.py +341 -0
  44. claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
  45. claude_mpm/cli/commands/mpm_init/modes.py +397 -0
  46. claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
  47. claude_mpm/cli/commands/mpm_init_cli.py +396 -0
  48. claude_mpm/cli/commands/mpm_init_handler.py +67 -1
  49. claude_mpm/cli/commands/run.py +124 -128
  50. claude_mpm/cli/commands/skills.py +922 -0
  51. claude_mpm/cli/executor.py +58 -0
  52. claude_mpm/cli/interactive/agent_wizard.py +5 -5
  53. claude_mpm/cli/parsers/base_parser.py +35 -0
  54. claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
  55. claude_mpm/cli/parsers/skills_parser.py +275 -0
  56. claude_mpm/cli/startup.py +168 -8
  57. claude_mpm/cli/startup_display.py +480 -0
  58. claude_mpm/cli/utils.py +1 -1
  59. claude_mpm/cli_module/commands.py +1 -1
  60. claude_mpm/cli_module/refactoring_guide.md +253 -0
  61. claude_mpm/commands/mpm-auto-configure.md +52 -0
  62. claude_mpm/commands/mpm-help.md +6 -0
  63. claude_mpm/commands/mpm-init.md +130 -8
  64. claude_mpm/commands/mpm-resume.md +372 -0
  65. claude_mpm/commands/mpm-tickets.md +56 -7
  66. claude_mpm/commands/mpm-version.md +113 -0
  67. claude_mpm/commands/mpm.md +2 -0
  68. claude_mpm/config/agent_capabilities.yaml +658 -0
  69. claude_mpm/config/agent_config.py +2 -2
  70. claude_mpm/config/async_logging_config.yaml +145 -0
  71. claude_mpm/constants.py +24 -0
  72. claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
  73. claude_mpm/core/api_validator.py +1 -1
  74. claude_mpm/core/claude_runner.py +14 -1
  75. claude_mpm/core/config.py +50 -0
  76. claude_mpm/core/constants.py +1 -1
  77. claude_mpm/core/factories.py +1 -1
  78. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  79. claude_mpm/core/hook_error_memory.py +381 -0
  80. claude_mpm/core/hook_manager.py +41 -2
  81. claude_mpm/core/interactive_session.py +48 -3
  82. claude_mpm/core/interfaces.py +56 -1
  83. claude_mpm/core/logger.py +3 -1
  84. claude_mpm/core/oneshot_session.py +39 -0
  85. claude_mpm/core/optimized_agent_loader.py +3 -3
  86. claude_mpm/d2/.gitignore +22 -0
  87. claude_mpm/d2/ARCHITECTURE_COMPARISON.md +273 -0
  88. claude_mpm/d2/FLASK_INTEGRATION.md +156 -0
  89. claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +452 -0
  90. claude_mpm/d2/QUICKSTART.md +186 -0
  91. claude_mpm/d2/README.md +232 -0
  92. claude_mpm/d2/STORE_FIX_SUMMARY.md +167 -0
  93. claude_mpm/d2/SVELTE5_STORES_GUIDE.md +180 -0
  94. claude_mpm/d2/TESTING.md +288 -0
  95. claude_mpm/d2/index.html +118 -0
  96. claude_mpm/d2/package.json +19 -0
  97. claude_mpm/d2/src/App.svelte +110 -0
  98. claude_mpm/d2/src/components/Header.svelte +153 -0
  99. claude_mpm/d2/src/components/MainContent.svelte +74 -0
  100. claude_mpm/d2/src/components/Sidebar.svelte +85 -0
  101. claude_mpm/d2/src/components/tabs/EventsTab.svelte +326 -0
  102. claude_mpm/d2/src/lib/socketio.js +144 -0
  103. claude_mpm/d2/src/main.js +7 -0
  104. claude_mpm/d2/src/stores/events.js +114 -0
  105. claude_mpm/d2/src/stores/socket.js +108 -0
  106. claude_mpm/d2/src/stores/theme.js +65 -0
  107. claude_mpm/d2/svelte.config.js +12 -0
  108. claude_mpm/d2/vite.config.js +15 -0
  109. claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
  110. claude_mpm/dashboard/BUILD_NUMBER +1 -0
  111. claude_mpm/dashboard/README.md +121 -0
  112. claude_mpm/dashboard/VERSION +1 -0
  113. claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +273 -0
  114. claude_mpm/dashboard/react/components/ErrorBoundary.tsx +75 -0
  115. claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +141 -0
  116. claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +36 -0
  117. claude_mpm/dashboard/react/components/shared/FilterBar.tsx +89 -0
  118. claude_mpm/dashboard/react/contexts/DashboardContext.tsx +215 -0
  119. claude_mpm/dashboard/react/entries/events.tsx +165 -0
  120. claude_mpm/dashboard/react/hooks/useEvents.ts +191 -0
  121. claude_mpm/dashboard/react/hooks/useSocket.ts +225 -0
  122. claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +170 -0
  123. claude_mpm/dashboard/static/built/components/activity-tree.js.map +1 -0
  124. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +101 -101
  125. claude_mpm/dashboard/static/built/components/agent-inference.js.map +1 -0
  126. claude_mpm/dashboard/static/built/components/build-tracker.js +59 -59
  127. claude_mpm/dashboard/static/built/components/code-simple.js +107 -107
  128. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +29 -29
  129. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +24 -24
  130. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +27 -27
  131. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +25 -25
  132. claude_mpm/dashboard/static/built/components/code-tree.js.map +1 -0
  133. claude_mpm/dashboard/static/built/components/code-viewer.js.map +1 -0
  134. claude_mpm/dashboard/static/built/components/connection-debug.js +101 -101
  135. claude_mpm/dashboard/static/built/components/diff-viewer.js +113 -113
  136. claude_mpm/dashboard/static/built/components/event-processor.js.map +1 -0
  137. claude_mpm/dashboard/static/built/components/event-viewer.js.map +1 -0
  138. claude_mpm/dashboard/static/built/components/export-manager.js.map +1 -0
  139. claude_mpm/dashboard/static/built/components/file-change-tracker.js +57 -57
  140. claude_mpm/dashboard/static/built/components/file-change-viewer.js +74 -74
  141. claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +1 -0
  142. claude_mpm/dashboard/static/built/components/file-viewer.js.map +1 -0
  143. claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +1 -0
  144. claude_mpm/dashboard/static/built/components/hud-manager.js.map +1 -0
  145. claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +1 -0
  146. claude_mpm/dashboard/static/built/components/module-viewer.js.map +1 -0
  147. claude_mpm/dashboard/static/built/components/session-manager.js.map +1 -0
  148. claude_mpm/dashboard/static/built/components/socket-manager.js.map +1 -0
  149. claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +1 -0
  150. claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +1 -0
  151. claude_mpm/dashboard/static/built/components/working-directory.js.map +1 -0
  152. claude_mpm/dashboard/static/built/connection-manager.js +76 -76
  153. claude_mpm/dashboard/static/built/dashboard.js.map +1 -0
  154. claude_mpm/dashboard/static/built/extension-error-handler.js +22 -22
  155. claude_mpm/dashboard/static/built/react/events.js.map +1 -0
  156. claude_mpm/dashboard/static/built/shared/dom-helpers.js +9 -9
  157. claude_mpm/dashboard/static/built/shared/event-bus.js +5 -5
  158. claude_mpm/dashboard/static/built/shared/logger.js +16 -16
  159. claude_mpm/dashboard/static/built/shared/tooltip-service.js +6 -6
  160. claude_mpm/dashboard/static/built/socket-client.js.map +1 -0
  161. claude_mpm/dashboard/static/css/activity.css +69 -69
  162. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  163. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  164. claude_mpm/dashboard/static/index.html +22 -22
  165. claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +170 -0
  166. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  167. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  168. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  169. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  170. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  171. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  172. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  173. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  174. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  175. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  176. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  177. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  178. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  179. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  180. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  181. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  182. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  183. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  184. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  185. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  186. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  187. claude_mpm/dashboard/static/js/shared/dom-helpers.js +9 -9
  188. claude_mpm/dashboard/static/js/shared/event-bus.js +5 -5
  189. claude_mpm/dashboard/static/js/shared/logger.js +16 -16
  190. claude_mpm/dashboard/static/js/shared/tooltip-service.js +6 -6
  191. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  192. claude_mpm/dashboard/static/navigation-test-results.md +118 -0
  193. claude_mpm/dashboard/static/production/main.html +21 -21
  194. claude_mpm/dashboard/static/test-archive/dashboard.html +22 -22
  195. claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
  196. claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
  197. claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
  198. claude_mpm/dashboard/templates/code_simple.html +23 -23
  199. claude_mpm/dashboard/templates/index.html +18 -18
  200. claude_mpm/hooks/README.md +143 -0
  201. claude_mpm/hooks/__init__.py +8 -0
  202. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  203. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  204. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  205. claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
  206. claude_mpm/hooks/session_resume_hook.py +121 -0
  207. claude_mpm/hooks/templates/README.md +180 -0
  208. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  209. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  210. claude_mpm/hooks/templates/settings.json.example +147 -0
  211. claude_mpm/models/resume_log.py +340 -0
  212. claude_mpm/schemas/agent_schema.json +596 -0
  213. claude_mpm/schemas/frontmatter_schema.json +165 -0
  214. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  215. claude_mpm/scripts/start_activity_logging.py +3 -1
  216. claude_mpm/services/agents/auto_config_manager.py +1 -1
  217. claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
  218. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  219. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  220. claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
  221. claude_mpm/services/agents/deployment/agent_validator.py +17 -1
  222. claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
  223. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  224. claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
  225. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  226. claude_mpm/services/agents/loading/framework_agent_loader.py +8 -8
  227. claude_mpm/services/agents/local_template_manager.py +4 -2
  228. claude_mpm/services/agents/recommender.py +47 -0
  229. claude_mpm/services/cli/resume_service.py +617 -0
  230. claude_mpm/services/cli/session_manager.py +87 -0
  231. claude_mpm/services/cli/session_pause_manager.py +504 -0
  232. claude_mpm/services/cli/session_resume_helper.py +372 -0
  233. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  234. claude_mpm/services/core/base.py +26 -11
  235. claude_mpm/services/core/interfaces.py +56 -1
  236. claude_mpm/services/core/models/agent_config.py +3 -0
  237. claude_mpm/services/core/models/process.py +4 -0
  238. claude_mpm/services/core/path_resolver.py +1 -1
  239. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  240. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  241. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  242. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  243. claude_mpm/services/diagnostics/doctor_reporter.py +6 -4
  244. claude_mpm/services/diagnostics/models.py +21 -0
  245. claude_mpm/services/event_bus/README.md +244 -0
  246. claude_mpm/services/event_bus/direct_relay.py +3 -3
  247. claude_mpm/services/event_bus/event_bus.py +36 -3
  248. claude_mpm/services/event_bus/relay.py +23 -7
  249. claude_mpm/services/events/README.md +303 -0
  250. claude_mpm/services/events/consumers/logging.py +1 -2
  251. claude_mpm/services/framework_claude_md_generator/README.md +119 -0
  252. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  253. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  254. claude_mpm/services/local_ops/__init__.py +2 -0
  255. claude_mpm/services/local_ops/process_manager.py +1 -1
  256. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  257. claude_mpm/services/mcp_config_manager.py +7 -131
  258. claude_mpm/services/mcp_gateway/README.md +185 -0
  259. claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
  260. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  261. claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
  262. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  263. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  264. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
  265. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  266. claude_mpm/services/memory/failure_tracker.py +19 -4
  267. claude_mpm/services/memory/optimizer.py +1 -1
  268. claude_mpm/services/model/model_router.py +8 -9
  269. claude_mpm/services/monitor/daemon.py +1 -1
  270. claude_mpm/services/monitor/server.py +2 -2
  271. claude_mpm/services/native_agent_converter.py +356 -0
  272. claude_mpm/services/port_manager.py +1 -1
  273. claude_mpm/services/project/documentation_manager.py +2 -1
  274. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  275. claude_mpm/services/runner_configuration_service.py +1 -0
  276. claude_mpm/services/self_upgrade_service.py +165 -7
  277. claude_mpm/services/session_manager.py +205 -1
  278. claude_mpm/services/skills_config.py +547 -0
  279. claude_mpm/services/skills_deployer.py +955 -0
  280. claude_mpm/services/socketio/handlers/connection.py +1 -1
  281. claude_mpm/services/socketio/handlers/connection.py.backup +217 -0
  282. claude_mpm/services/socketio/handlers/git.py +2 -2
  283. claude_mpm/services/socketio/handlers/hook.py.backup +154 -0
  284. claude_mpm/services/static/.gitkeep +2 -0
  285. claude_mpm/services/system_instructions_service.py +1 -3
  286. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  287. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  288. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  289. claude_mpm/services/unified/deployment_strategies/local.py +1 -1
  290. claude_mpm/services/version_control/VERSION +1 -0
  291. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  292. claude_mpm/services/version_service.py +104 -1
  293. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  294. claude_mpm/skills/__init__.py +21 -0
  295. claude_mpm/skills/agent_skills_injector.py +324 -0
  296. claude_mpm/skills/bundled/.gitkeep +2 -0
  297. claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
  298. claude_mpm/skills/bundled/api-documentation.md +393 -0
  299. claude_mpm/skills/bundled/async-testing.md +571 -0
  300. claude_mpm/skills/bundled/code-review.md +143 -0
  301. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
  302. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
  303. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  304. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  305. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  306. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  307. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  308. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
  309. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
  310. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  311. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  312. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
  313. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  314. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  315. claude_mpm/skills/bundled/database-migration.md +199 -0
  316. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
  317. claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +63 -0
  318. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  319. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  320. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  321. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  322. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  323. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  324. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  325. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  326. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  327. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  328. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  329. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  330. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  331. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  332. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
  333. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
  334. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  335. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  336. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
  337. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  338. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  339. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  340. claude_mpm/skills/bundled/git-workflow.md +414 -0
  341. claude_mpm/skills/bundled/imagemagick.md +204 -0
  342. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  343. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  344. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  345. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  346. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  347. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  348. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  349. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  350. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  351. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  352. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  353. claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +202 -0
  354. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
  355. claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  356. claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +322 -0
  357. claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  358. claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +202 -0
  359. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
  360. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  361. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  362. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  363. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  364. claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
  365. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
  366. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  367. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  368. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  369. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  370. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  371. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  372. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +157 -0
  373. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -0
  374. claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +22 -0
  375. claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +2 -0
  376. claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +202 -0
  377. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
  378. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  379. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  380. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  381. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  382. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  383. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +303 -0
  384. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
  385. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
  386. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  387. claude_mpm/skills/bundled/pdf.md +141 -0
  388. claude_mpm/skills/bundled/performance-profiling.md +573 -0
  389. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  390. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  391. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  392. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  393. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  394. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  395. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  396. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  397. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  398. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  399. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  400. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  401. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  402. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  403. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  404. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  405. claude_mpm/skills/bundled/security-scanning.md +327 -0
  406. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  407. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  408. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  409. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  410. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  411. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  412. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  413. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  414. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  415. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  416. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  417. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  418. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  419. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
  420. claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +158 -0
  421. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  422. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  423. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  424. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  425. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  426. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  427. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  428. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  429. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  430. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  431. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  432. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  433. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
  434. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  435. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  436. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  437. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  438. claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +202 -0
  439. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
  440. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  441. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
  442. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
  443. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
  444. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  445. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  446. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
  447. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  448. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  449. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  450. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  451. claude_mpm/skills/bundled/xlsx.md +157 -0
  452. claude_mpm/skills/registry.py +97 -9
  453. claude_mpm/skills/skills_registry.py +347 -0
  454. claude_mpm/skills/skills_service.py +739 -0
  455. claude_mpm/templates/questions/EXAMPLES.md +501 -0
  456. claude_mpm/templates/questions/__init__.py +43 -0
  457. claude_mpm/templates/questions/base.py +193 -0
  458. claude_mpm/templates/questions/pr_strategy.py +314 -0
  459. claude_mpm/templates/questions/project_init.py +388 -0
  460. claude_mpm/templates/questions/ticket_mgmt.py +397 -0
  461. claude_mpm/tools/README_SOCKETIO_DEBUG.md +224 -0
  462. claude_mpm/tools/__main__.py +8 -8
  463. claude_mpm/tools/code_tree_analyzer/README.md +64 -0
  464. claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
  465. claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
  466. claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
  467. claude_mpm/tools/code_tree_analyzer/core.py +380 -0
  468. claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
  469. claude_mpm/tools/code_tree_analyzer/events.py +168 -0
  470. claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
  471. claude_mpm/tools/code_tree_analyzer/models.py +39 -0
  472. claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
  473. claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
  474. claude_mpm/utils/agent_dependency_loader.py +5 -5
  475. claude_mpm/utils/dependency_cache.py +3 -1
  476. claude_mpm/utils/gitignore.py +241 -0
  477. claude_mpm/utils/log_cleanup.py +3 -3
  478. claude_mpm/utils/robust_installer.py +3 -5
  479. claude_mpm/utils/structured_questions.py +619 -0
  480. claude_mpm-4.25.10.dist-info/METADATA +789 -0
  481. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +485 -240
  482. claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md +0 -602
  483. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  484. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  485. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  486. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  487. claude_mpm/cli/commands/mpm_init.py +0 -2008
  488. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  489. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  490. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  491. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  492. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  493. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  494. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  495. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  496. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  497. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  498. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  499. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  500. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  501. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  502. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  503. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  504. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  505. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  506. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  507. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  508. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  509. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  510. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  511. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  512. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  513. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  514. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  515. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  516. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  517. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  518. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  519. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  520. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  521. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  522. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  523. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  524. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  525. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  526. claude_mpm/tools/code_tree_analyzer.py +0 -1825
  527. claude_mpm-4.16.0.dist-info/METADATA +0 -453
  528. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
  529. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
  530. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
  531. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,573 @@
1
+ """Core MPMInitCommand class for project initialization.
2
+
3
+ This module contains the main command class responsible for orchestrating
4
+ the MPM project initialization process, including configuration generation,
5
+ agent delegation, and workflow management.
6
+ """
7
+
8
+ import contextlib
9
+ import subprocess
10
+ import tempfile
11
+ from pathlib import Path
12
+ from typing import Any, Dict, List, Optional
13
+
14
+ from rich.console import Console
15
+ from rich.progress import Progress, SpinnerColumn, TextColumn
16
+
17
+ from claude_mpm.core.enums import OperationResult
18
+ from claude_mpm.core.logging_utils import get_logger
19
+ from claude_mpm.services.project.archive_manager import ArchiveManager
20
+ from claude_mpm.services.project.documentation_manager import DocumentationManager
21
+ from claude_mpm.services.project.enhanced_analyzer import EnhancedProjectAnalyzer
22
+ from claude_mpm.services.project.project_organizer import ProjectOrganizer
23
+ from claude_mpm.utils.display_helper import DisplayHelper
24
+
25
+ # Import from sibling modules in the mpm_init package
26
+ from . import display, git_activity, modes, prompts
27
+
28
+ logger = get_logger(__name__)
29
+
30
+
31
+ class MPMInitCommand:
32
+ """Initialize projects for optimal Claude Code and Claude MPM usage."""
33
+
34
+ def __init__(self, project_path: Optional[Path] = None):
35
+ """Initialize the MPM-Init command."""
36
+ self.project_path = project_path or Path.cwd()
37
+ self.claude_mpm_script = self._find_claude_mpm_script()
38
+ self.console = Console()
39
+
40
+ # Initialize service components
41
+ self.doc_manager = DocumentationManager(self.project_path)
42
+ self.organizer = ProjectOrganizer(self.project_path)
43
+ self.archive_manager = ArchiveManager(self.project_path)
44
+ self.analyzer = EnhancedProjectAnalyzer(self.project_path)
45
+ self.display = DisplayHelper(self.console)
46
+
47
+ def initialize_project(
48
+ self,
49
+ project_type: Optional[str] = None,
50
+ framework: Optional[str] = None,
51
+ force: bool = False,
52
+ verbose: bool = False,
53
+ ast_analysis: bool = True,
54
+ update_mode: bool = False,
55
+ review_only: bool = False,
56
+ organize_files: bool = False,
57
+ preserve_custom: bool = True,
58
+ skip_archive: bool = False,
59
+ dry_run: bool = False,
60
+ quick_update: bool = False,
61
+ catchup: bool = False,
62
+ non_interactive: bool = False,
63
+ days: int = 30,
64
+ export: Optional[str] = None,
65
+ ) -> Dict:
66
+ """
67
+ Initialize project with Agentic Coder Optimizer standards.
68
+
69
+ Args:
70
+ project_type: Type of project (web, api, cli, library, etc.)
71
+ framework: Specific framework if applicable
72
+ force: Force initialization even if project already configured
73
+ verbose: Show detailed output
74
+ ast_analysis: Enable AST analysis for enhanced documentation
75
+ update_mode: Update existing CLAUDE.md instead of recreating
76
+ review_only: Review project state without making changes
77
+ organize_files: Organize misplaced files into proper directories
78
+ preserve_custom: Preserve custom sections when updating
79
+ skip_archive: Skip archiving existing files
80
+ dry_run: Show what would be done without making changes
81
+ quick_update: Perform lightweight update based on recent git activity
82
+ catchup: Show recent commit history from all branches for PM context
83
+ non_interactive: Non-interactive mode - display report only without prompting
84
+ days: Number of days for git history analysis (7, 14, 30, 60, or 90)
85
+ export: Export report to file (path or "auto" for default location)
86
+
87
+ Returns:
88
+ Dict containing initialization results
89
+ """
90
+ try:
91
+ # Determine initialization mode
92
+ claude_md = self.project_path / "CLAUDE.md"
93
+ has_existing = claude_md.exists()
94
+
95
+ if review_only:
96
+ return self._run_review_mode()
97
+
98
+ if catchup:
99
+ data = self._catchup()
100
+ self._display_catchup(data)
101
+ return {
102
+ "status": OperationResult.SUCCESS,
103
+ "mode": "catchup",
104
+ "catchup_data": data,
105
+ }
106
+
107
+ if quick_update:
108
+ return self._run_quick_update_mode(
109
+ days=days,
110
+ non_interactive=non_interactive,
111
+ export=export,
112
+ )
113
+
114
+ if has_existing and not force and not update_mode:
115
+ # Auto-select update mode if organize_files or dry_run is specified
116
+ if organize_files or dry_run:
117
+ update_mode = True
118
+ self.console.print(
119
+ "[cyan]Auto-selecting update mode for organization tasks.[/cyan]\n"
120
+ )
121
+ else:
122
+ # Offer update mode
123
+ self.console.print(
124
+ "[yellow]⚠️ Project already has CLAUDE.md file.[/yellow]\n"
125
+ )
126
+
127
+ # Show current documentation analysis
128
+ doc_analysis = self.doc_manager.analyze_existing_content()
129
+ self._display_documentation_status(doc_analysis)
130
+
131
+ # Ask user what to do
132
+ action = self._prompt_update_action()
133
+
134
+ if action == "update":
135
+ update_mode = True
136
+ elif action == "recreate":
137
+ force = True
138
+ elif action == "review":
139
+ return self._run_review_mode()
140
+ else:
141
+ return {
142
+ "status": OperationResult.CANCELLED,
143
+ "message": "Initialization cancelled",
144
+ }
145
+
146
+ # Handle dry-run mode
147
+ if dry_run:
148
+ return self._run_dry_run_mode(organize_files, has_existing)
149
+
150
+ # Run pre-initialization checks
151
+ if not review_only:
152
+ pre_check_result = self._run_pre_initialization_checks(
153
+ organize_files, skip_archive, has_existing
154
+ )
155
+ if pre_check_result.get("status") == OperationResult.ERROR:
156
+ return pre_check_result
157
+
158
+ # Update .gitignore to exclude claude-mpm configuration directories
159
+ if not review_only and not dry_run:
160
+ self._update_gitignore()
161
+
162
+ # Build the delegation prompt
163
+ if update_mode:
164
+ prompt = self._build_update_prompt(
165
+ project_type, framework, ast_analysis, preserve_custom
166
+ )
167
+ else:
168
+ prompt = self._build_initialization_prompt(
169
+ project_type, framework, ast_analysis
170
+ )
171
+
172
+ # Show appropriate plan based on mode
173
+ if update_mode:
174
+ self._show_update_plan(ast_analysis, preserve_custom)
175
+ else:
176
+ self._show_initialization_plan(ast_analysis)
177
+
178
+ # Execute via claude-mpm run command
179
+ with Progress(
180
+ SpinnerColumn(),
181
+ TextColumn("[progress.description]{task.description}"),
182
+ console=self.console,
183
+ ) as progress:
184
+ task_desc = (
185
+ "[cyan]Updating documentation..."
186
+ if update_mode
187
+ else "[cyan]Delegating to Agentic Coder Optimizer..."
188
+ )
189
+ task = progress.add_task(task_desc, total=None)
190
+
191
+ # Run the initialization through subprocess
192
+ result = self._run_initialization(prompt, verbose, update_mode)
193
+
194
+ complete_desc = (
195
+ "[green]✓ Update complete"
196
+ if update_mode
197
+ else "[green]✓ Initialization complete"
198
+ )
199
+ progress.update(task, description=complete_desc)
200
+
201
+ # Post-processing for update mode
202
+ if update_mode and result.get("status") == OperationResult.SUCCESS:
203
+ self._handle_update_post_processing()
204
+
205
+ return result
206
+
207
+ except Exception as e:
208
+ logger.error(f"Failed to initialize project: {e}")
209
+ self.console.print(f"[red]❌ Error: {e}[/red]")
210
+ return {"status": OperationResult.ERROR, "message": str(e)}
211
+
212
+ def _find_claude_mpm_script(self) -> Path:
213
+ """Find the claude-mpm script location."""
214
+ # Try to find claude-mpm in the project scripts directory first
215
+ project_root = Path(__file__).parent.parent.parent.parent.parent
216
+ script_path = project_root / "scripts" / "claude-mpm"
217
+ if script_path.exists():
218
+ return script_path
219
+ # Otherwise assume it's in PATH
220
+ return Path("claude-mpm")
221
+
222
+ def _build_claude_mpm_command(self, verbose: bool) -> List[str]:
223
+ """Build the claude-mpm run command with appropriate arguments."""
224
+ cmd = [str(self.claude_mpm_script)]
225
+
226
+ # Add top-level flags that go before 'run' subcommand
227
+ cmd.append("--no-check-dependencies")
228
+
229
+ # Now add the run subcommand
230
+ cmd.append("run")
231
+
232
+ # Add non-interactive mode
233
+ # We'll pass the prompt via stdin instead of -i flag
234
+ cmd.append("--non-interactive")
235
+
236
+ # Add verbose flag if requested (run subcommand argument)
237
+ if verbose:
238
+ cmd.append("--verbose")
239
+
240
+ return cmd
241
+
242
+ def _run_initialization(
243
+ self,
244
+ prompt: str,
245
+ verbose: bool,
246
+ update_mode: bool = False,
247
+ ) -> Dict:
248
+ """Run the initialization through subprocess calling claude-mpm."""
249
+ try:
250
+ # Write prompt to temporary file
251
+ with tempfile.NamedTemporaryFile(
252
+ mode="w", suffix=".txt", delete=False
253
+ ) as tmp_file:
254
+ tmp_file.write(prompt)
255
+ prompt_file = tmp_file.name
256
+
257
+ try:
258
+ # Build the command
259
+ cmd = self._build_claude_mpm_command(verbose)
260
+ # Add the input file flag
261
+ cmd.extend(["-i", prompt_file])
262
+
263
+ # Log the command if verbose
264
+ if verbose:
265
+ self.console.print(f"[dim]Running: {' '.join(cmd)}[/dim]")
266
+ self.console.print(f"[dim]Prompt file: {prompt_file}[/dim]")
267
+
268
+ # Execute the command
269
+ result = subprocess.run(
270
+ cmd,
271
+ capture_output=True,
272
+ text=True,
273
+ cwd=str(self.project_path),
274
+ check=False,
275
+ )
276
+ finally:
277
+ # Clean up temporary file
278
+ with contextlib.suppress(Exception):
279
+ Path(prompt_file).unlink()
280
+
281
+ # Display output if verbose
282
+ if verbose and result.stdout:
283
+ self.console.print(result.stdout)
284
+ if verbose and result.stderr:
285
+ self.console.print(f"[yellow]{result.stderr}[/yellow]")
286
+
287
+ # Check result - be more lenient with return codes
288
+ if result.returncode == 0 or (self.project_path / "CLAUDE.md").exists():
289
+ response = {
290
+ "status": OperationResult.SUCCESS,
291
+ "message": "Project initialized successfully",
292
+ "files_created": [],
293
+ "files_updated": [],
294
+ "next_steps": [],
295
+ }
296
+
297
+ # Check if CLAUDE.md was created
298
+ claude_md = self.project_path / "CLAUDE.md"
299
+ if claude_md.exists():
300
+ response["files_created"].append("CLAUDE.md")
301
+
302
+ # Check for other common files
303
+ for file_name in ["CODE.md", "DEVELOPER.md", "STRUCTURE.md", "OPS.md"]:
304
+ file_path = self.project_path / file_name
305
+ if file_path.exists():
306
+ response["files_created"].append(file_name)
307
+
308
+ # Add next steps
309
+ response["next_steps"] = [
310
+ "Review the generated CLAUDE.md documentation",
311
+ "Verify the project structure meets your needs",
312
+ "Run 'claude-mpm run' to start using the optimized setup",
313
+ ]
314
+
315
+ # Display results
316
+ self._display_results(response, verbose)
317
+
318
+ return response
319
+
320
+ # Extract meaningful error message
321
+ error_msg = (
322
+ result.stderr
323
+ if result.stderr
324
+ else result.stdout
325
+ if result.stdout
326
+ else "Unknown error occurred"
327
+ )
328
+
329
+ logger.error(f"claude-mpm run failed: {error_msg}")
330
+ return {
331
+ "status": OperationResult.ERROR,
332
+ "message": f"Initialization failed: {error_msg}",
333
+ }
334
+
335
+ except FileNotFoundError:
336
+ logger.error("claude-mpm command not found")
337
+ self.console.print(
338
+ "[red]Error: claude-mpm command not found. Ensure Claude MPM is properly installed.[/red]"
339
+ )
340
+ return {"status": OperationResult.ERROR, "message": "claude-mpm not found"}
341
+ except Exception as e:
342
+ logger.error(f"Initialization failed: {e}")
343
+ return {"status": OperationResult.ERROR, "message": str(e)}
344
+
345
+ def _run_pre_initialization_checks(
346
+ self, organize_files: bool, skip_archive: bool, has_existing: bool
347
+ ) -> Dict:
348
+ """Run pre-initialization checks and preparations."""
349
+ checks_passed = []
350
+ warnings = []
351
+
352
+ # Run comprehensive project readiness check
353
+ _ready, actions = self.organizer.ensure_project_ready(
354
+ auto_organize=organize_files,
355
+ safe_mode=True, # Only perform safe operations by default
356
+ )
357
+
358
+ if actions:
359
+ checks_passed.extend(actions)
360
+
361
+ # Get structure validation report
362
+ validation = self.organizer.validate_structure()
363
+ if validation["warnings"]:
364
+ warnings.extend(validation["warnings"])
365
+ if validation["errors"]:
366
+ warnings.extend(validation["errors"])
367
+
368
+ # Show structure grade
369
+ if validation.get("grade"):
370
+ checks_passed.append(f"Structure validation: {validation['grade']}")
371
+
372
+ # Archive existing documentation if needed
373
+ if has_existing and not skip_archive:
374
+ if self.archive_manager.auto_archive_before_update(
375
+ self.project_path / "CLAUDE.md", update_reason="Before mpm-init update"
376
+ ):
377
+ checks_passed.append("Archived existing CLAUDE.md")
378
+
379
+ # Check for issues in validation report
380
+ if validation.get("issues"):
381
+ for issue in validation["issues"]:
382
+ warnings.append(issue["description"])
383
+
384
+ if warnings:
385
+ self.console.print("\n[yellow]⚠️ Project issues detected:[/yellow]")
386
+ for warning in warnings[:5]:
387
+ self.console.print(f" • {warning}")
388
+ self.console.print()
389
+
390
+ if checks_passed:
391
+ self.console.print("[green]✅ Pre-initialization checks:[/green]")
392
+ for check in checks_passed:
393
+ self.console.print(f" • {check}")
394
+ self.console.print()
395
+
396
+ return {
397
+ "status": OperationResult.SUCCESS,
398
+ "checks_passed": checks_passed,
399
+ "warnings": warnings,
400
+ }
401
+
402
+ def _update_gitignore(self) -> None:
403
+ """Update .gitignore to exclude claude-mpm configuration directories.
404
+
405
+ Ensures that claude-mpm configuration directories are added to .gitignore
406
+ to prevent them from being committed to version control.
407
+
408
+ This is a non-destructive operation that:
409
+ - Creates .gitignore if it doesn't exist
410
+ - Appends missing entries only (never duplicates)
411
+ - Preserves all existing content
412
+
413
+ Standard entries added:
414
+ - .claude-mpm/: Main configuration directory
415
+ - .claude/agents/: Agent runtime files
416
+ """
417
+ from claude_mpm.utils.gitignore import ensure_claude_mpm_gitignore
418
+
419
+ try:
420
+ result = ensure_claude_mpm_gitignore(str(self.project_path))
421
+
422
+ if result.get("status") == "success":
423
+ if result.get("added"):
424
+ self.console.print(
425
+ f"[green]✓[/green] Updated .gitignore: {', '.join(result['added'])}"
426
+ )
427
+ logger.info(f"Added to .gitignore: {result['added']}")
428
+ elif result.get("existing"):
429
+ logger.debug(f".gitignore already contains: {result['existing']}")
430
+ else:
431
+ # Non-critical error - log but don't fail initialization
432
+ logger.warning(
433
+ f"Could not update .gitignore: {result.get('error', 'Unknown error')}"
434
+ )
435
+ self.console.print(
436
+ f"[yellow]⚠️ Could not update .gitignore: {result.get('error')}[/yellow]"
437
+ )
438
+
439
+ except Exception as e:
440
+ # Non-critical error - log but don't fail initialization
441
+ logger.warning(f"Error updating .gitignore: {e}")
442
+ self.console.print(f"[yellow]⚠️ Could not update .gitignore: {e}[/yellow]")
443
+
444
+ def _build_initialization_prompt(
445
+ self,
446
+ project_type: Optional[str] = None,
447
+ framework: Optional[str] = None,
448
+ ast_analysis: bool = True,
449
+ ) -> str:
450
+ """Build the initialization prompt for the agent."""
451
+ return prompts.build_initialization_prompt(
452
+ self.project_path, project_type, framework, ast_analysis
453
+ )
454
+
455
+ def _build_update_prompt(
456
+ self,
457
+ project_type: Optional[str],
458
+ framework: Optional[str],
459
+ ast_analysis: bool,
460
+ preserve_custom: bool,
461
+ ) -> str:
462
+ """Build prompt for update mode."""
463
+ # Get existing content analysis
464
+ doc_analysis = self.doc_manager.analyze_existing_content()
465
+
466
+ return prompts.build_update_prompt(
467
+ self.project_path,
468
+ doc_analysis,
469
+ project_type,
470
+ framework,
471
+ ast_analysis,
472
+ preserve_custom,
473
+ )
474
+
475
+ def _display_documentation_status(self, analysis: Dict) -> None:
476
+ """Display current documentation status."""
477
+ display.display_documentation_status(self.display, analysis)
478
+
479
+ def _prompt_update_action(self) -> str:
480
+ """Prompt user for update action."""
481
+ return modes.prompt_update_action(self.console)
482
+
483
+ def _run_review_mode(self) -> Dict:
484
+ """Run review mode to analyze project without changes."""
485
+ return modes.run_review_mode(
486
+ self.console,
487
+ self.display,
488
+ self.organizer,
489
+ self.doc_manager,
490
+ self.analyzer,
491
+ )
492
+
493
+ def _run_quick_update_mode(
494
+ self,
495
+ days: int = 30,
496
+ non_interactive: bool = False,
497
+ export: Optional[str] = None,
498
+ ) -> Dict:
499
+ """Run quick update mode - lightweight update based on recent git activity."""
500
+ return modes.run_quick_update_mode(
501
+ self.console,
502
+ self.display,
503
+ self.project_path,
504
+ self.analyzer,
505
+ self.doc_manager,
506
+ self.archive_manager,
507
+ days=days,
508
+ non_interactive=non_interactive,
509
+ export=export,
510
+ )
511
+
512
+ def _catchup(self) -> Dict[str, Any]:
513
+ """Get recent commit history for PM context."""
514
+ return git_activity.catchup(self.project_path)
515
+
516
+ def _display_catchup(self, data: Dict[str, Any]) -> None:
517
+ """Display catchup information to console.
518
+
519
+ Args:
520
+ data: Commit history data from _catchup()
521
+ """
522
+ display.display_catchup(self.display, self.console, data)
523
+
524
+ def _run_dry_run_mode(self, organize_files: bool, has_existing: bool) -> Dict:
525
+ """Run dry-run mode to show what would be done without making changes."""
526
+ return modes.run_dry_run_mode(
527
+ self.console,
528
+ self.organizer,
529
+ self.doc_manager,
530
+ organize_files,
531
+ has_existing,
532
+ )
533
+
534
+ def _show_update_plan(self, ast_analysis: bool, preserve_custom: bool) -> None:
535
+ """Show update mode plan."""
536
+ display.show_update_plan(self.console, ast_analysis, preserve_custom)
537
+
538
+ def _show_initialization_plan(self, ast_analysis: bool) -> None:
539
+ """Show standard initialization plan."""
540
+ display.show_initialization_plan(self.console, ast_analysis)
541
+
542
+ def _handle_update_post_processing(self) -> None:
543
+ """Handle post-processing after successful update."""
544
+ modes.handle_update_post_processing(
545
+ self.console,
546
+ self.project_path,
547
+ self.doc_manager,
548
+ self.archive_manager,
549
+ )
550
+
551
+ def _display_results(self, result: Dict, verbose: bool):
552
+ """Display initialization results."""
553
+ display.display_results(self.display, self.console, result, verbose)
554
+
555
+ def handle_context(
556
+ self,
557
+ session_id: Optional[str] = None,
558
+ list_sessions: bool = False,
559
+ days: int = 7,
560
+ ) -> Dict[str, Any]:
561
+ """Provide intelligent context for resuming work based on git history."""
562
+ return git_activity.handle_context(
563
+ self.project_path, session_id, list_sessions, days
564
+ )
565
+
566
+ def _build_research_context_prompt(
567
+ self, git_analysis: Dict[str, Any], days: int
568
+ ) -> str:
569
+ """Build structured Research agent delegation prompt from git analysis."""
570
+ return prompts.build_research_context_prompt(git_analysis, days)
571
+
572
+
573
+ __all__ = ["MPMInitCommand"]