claude-mpm 4.21.3__py3-none-any.whl → 5.1.9__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 (517) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +12 -0
  3. claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +3 -48
  4. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +1239 -674
  6. claude_mpm/agents/WORKFLOW.md +75 -2
  7. claude_mpm/agents/__init__.py +6 -0
  8. claude_mpm/agents/agent_loader.py +1 -4
  9. claude_mpm/agents/base_agent.json +6 -3
  10. claude_mpm/agents/base_agent_loader.py +10 -35
  11. claude_mpm/agents/frontmatter_validator.py +69 -1
  12. claude_mpm/agents/templates/circuit-breakers.md +1254 -0
  13. claude_mpm/agents/templates/context-management-examples.md +544 -0
  14. claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
  15. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  16. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  17. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  18. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  19. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  20. claude_mpm/cli/__init__.py +37 -2
  21. claude_mpm/cli/commands/__init__.py +2 -0
  22. claude_mpm/cli/commands/agent_source.py +774 -0
  23. claude_mpm/cli/commands/agent_state_manager.py +188 -30
  24. claude_mpm/cli/commands/agents.py +1128 -36
  25. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  26. claude_mpm/cli/commands/agents_discover.py +338 -0
  27. claude_mpm/cli/commands/aggregate.py +1 -1
  28. claude_mpm/cli/commands/analyze.py +3 -3
  29. claude_mpm/cli/commands/auto_configure.py +537 -239
  30. claude_mpm/cli/commands/cleanup.py +1 -1
  31. claude_mpm/cli/commands/config.py +7 -4
  32. claude_mpm/cli/commands/configure.py +935 -45
  33. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  34. claude_mpm/cli/commands/configure_navigation.py +63 -46
  35. claude_mpm/cli/commands/debug.py +12 -12
  36. claude_mpm/cli/commands/doctor.py +10 -2
  37. claude_mpm/cli/commands/hook_errors.py +277 -0
  38. claude_mpm/cli/commands/local_deploy.py +1 -4
  39. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  40. claude_mpm/cli/commands/mpm_init/core.py +50 -2
  41. claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
  42. claude_mpm/cli/commands/mpm_init/prompts.py +6 -6
  43. claude_mpm/cli/commands/postmortem.py +401 -0
  44. claude_mpm/cli/commands/run.py +125 -167
  45. claude_mpm/cli/commands/skill_source.py +694 -0
  46. claude_mpm/cli/commands/skills.py +757 -20
  47. claude_mpm/cli/executor.py +78 -3
  48. claude_mpm/cli/interactive/agent_wizard.py +1032 -47
  49. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  50. claude_mpm/cli/parsers/agents_parser.py +310 -4
  51. claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
  52. claude_mpm/cli/parsers/base_parser.py +53 -0
  53. claude_mpm/cli/parsers/config_parser.py +96 -43
  54. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  55. claude_mpm/cli/parsers/skills_parser.py +145 -0
  56. claude_mpm/cli/parsers/source_parser.py +138 -0
  57. claude_mpm/cli/startup.py +564 -108
  58. claude_mpm/cli/startup_display.py +480 -0
  59. claude_mpm/cli/utils.py +1 -1
  60. claude_mpm/cli_module/commands.py +1 -1
  61. claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
  62. claude_mpm/commands/mpm-agents-detect.md +9 -0
  63. claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
  64. claude_mpm/commands/mpm-agents-recommend.md +9 -0
  65. claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
  66. claude_mpm/commands/mpm-doctor.md +9 -0
  67. claude_mpm/commands/mpm-help.md +14 -2
  68. claude_mpm/commands/mpm-init.md +27 -2
  69. claude_mpm/commands/mpm-monitor.md +9 -0
  70. claude_mpm/commands/mpm-postmortem.md +123 -0
  71. claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
  72. claude_mpm/commands/mpm-status.md +9 -0
  73. claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
  74. claude_mpm/commands/mpm-ticket-view.md +552 -0
  75. claude_mpm/commands/mpm-version.md +9 -0
  76. claude_mpm/commands/mpm.md +10 -0
  77. claude_mpm/config/agent_presets.py +488 -0
  78. claude_mpm/config/agent_sources.py +325 -0
  79. claude_mpm/config/skill_presets.py +392 -0
  80. claude_mpm/config/skill_sources.py +590 -0
  81. claude_mpm/constants.py +13 -0
  82. claude_mpm/core/api_validator.py +1 -1
  83. claude_mpm/core/claude_runner.py +19 -35
  84. claude_mpm/core/config.py +24 -0
  85. claude_mpm/core/constants.py +1 -1
  86. claude_mpm/core/framework/__init__.py +3 -16
  87. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  88. claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
  89. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  90. claude_mpm/core/hook_error_memory.py +381 -0
  91. claude_mpm/core/hook_manager.py +41 -2
  92. claude_mpm/core/interactive_session.py +131 -10
  93. claude_mpm/core/logger.py +3 -1
  94. claude_mpm/core/oneshot_session.py +110 -8
  95. claude_mpm/core/output_style_manager.py +173 -43
  96. claude_mpm/core/protocols/__init__.py +23 -0
  97. claude_mpm/core/protocols/runner_protocol.py +103 -0
  98. claude_mpm/core/protocols/session_protocol.py +131 -0
  99. claude_mpm/core/shared/singleton_manager.py +11 -4
  100. claude_mpm/core/system_context.py +38 -0
  101. claude_mpm/core/unified_agent_registry.py +129 -1
  102. claude_mpm/core/unified_config.py +22 -0
  103. claude_mpm/dashboard/static/css/activity.css +69 -69
  104. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  105. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  106. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  107. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  108. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  109. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  110. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  111. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  112. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  113. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  114. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  115. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  116. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  117. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  118. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  119. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  120. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  121. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  122. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  123. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  124. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  125. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  126. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  127. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  128. claude_mpm/dashboard/templates/code_simple.html +23 -23
  129. claude_mpm/dashboard/templates/index.html +18 -18
  130. claude_mpm/experimental/cli_enhancements.py +1 -5
  131. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  132. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  133. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  134. claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
  135. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  136. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  137. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  138. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  139. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  140. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  141. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  142. claude_mpm/models/agent_definition.py +7 -0
  143. claude_mpm/models/git_repository.py +198 -0
  144. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  145. claude_mpm/scripts/start_activity_logging.py +3 -1
  146. claude_mpm/services/agents/agent_builder.py +45 -9
  147. claude_mpm/services/agents/agent_preset_service.py +238 -0
  148. claude_mpm/services/agents/agent_selection_service.py +484 -0
  149. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  150. claude_mpm/services/agents/cache_git_manager.py +621 -0
  151. claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
  152. claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
  153. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  154. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  155. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  156. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  157. claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
  158. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  159. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  160. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  161. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +225 -18
  162. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  163. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  164. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +557 -0
  165. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  166. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  167. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  168. claude_mpm/services/agents/git_source_manager.py +629 -0
  169. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  170. claude_mpm/services/agents/local_template_manager.py +50 -10
  171. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  172. claude_mpm/services/agents/sources/__init__.py +13 -0
  173. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  174. claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
  175. claude_mpm/services/agents/startup_sync.py +239 -0
  176. claude_mpm/services/agents/toolchain_detector.py +474 -0
  177. claude_mpm/services/analysis/__init__.py +25 -0
  178. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  179. claude_mpm/services/analysis/postmortem_service.py +765 -0
  180. claude_mpm/services/cli/session_pause_manager.py +1 -1
  181. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  182. claude_mpm/services/command_deployment_service.py +200 -6
  183. claude_mpm/services/core/base.py +7 -2
  184. claude_mpm/services/core/interfaces/__init__.py +1 -3
  185. claude_mpm/services/core/interfaces/health.py +1 -4
  186. claude_mpm/services/core/models/__init__.py +2 -11
  187. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  188. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  189. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  190. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  191. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  192. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  193. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  194. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  195. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  196. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  197. claude_mpm/services/event_bus/direct_relay.py +3 -3
  198. claude_mpm/services/event_bus/event_bus.py +36 -3
  199. claude_mpm/services/events/consumers/logging.py +1 -2
  200. claude_mpm/services/git/__init__.py +21 -0
  201. claude_mpm/services/git/git_operations_service.py +494 -0
  202. claude_mpm/services/github/__init__.py +21 -0
  203. claude_mpm/services/github/github_cli_service.py +397 -0
  204. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  205. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  206. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  207. claude_mpm/services/instructions/__init__.py +9 -0
  208. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  209. claude_mpm/services/local_ops/__init__.py +3 -13
  210. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  211. claude_mpm/services/local_ops/health_manager.py +1 -4
  212. claude_mpm/services/local_ops/process_manager.py +1 -1
  213. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  214. claude_mpm/services/mcp_config_manager.py +75 -145
  215. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  216. claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
  217. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
  218. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  219. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  220. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  221. claude_mpm/services/mcp_service_verifier.py +6 -3
  222. claude_mpm/services/memory/optimizer.py +1 -1
  223. claude_mpm/services/model/model_router.py +8 -9
  224. claude_mpm/services/monitor/daemon.py +29 -9
  225. claude_mpm/services/monitor/daemon_manager.py +96 -19
  226. claude_mpm/services/monitor/server.py +2 -2
  227. claude_mpm/services/native_agent_converter.py +356 -0
  228. claude_mpm/services/port_manager.py +1 -1
  229. claude_mpm/services/pr/__init__.py +14 -0
  230. claude_mpm/services/pr/pr_template_service.py +329 -0
  231. claude_mpm/services/project/documentation_manager.py +2 -1
  232. claude_mpm/services/project/project_organizer.py +4 -0
  233. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  234. claude_mpm/services/runner_configuration_service.py +17 -3
  235. claude_mpm/services/self_upgrade_service.py +165 -7
  236. claude_mpm/services/session_management_service.py +16 -4
  237. claude_mpm/services/skills/__init__.py +18 -0
  238. claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
  239. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  240. claude_mpm/services/skills_config.py +547 -0
  241. claude_mpm/services/skills_deployer.py +955 -0
  242. claude_mpm/services/socketio/handlers/connection.py +1 -1
  243. claude_mpm/services/socketio/handlers/git.py +2 -2
  244. claude_mpm/services/socketio/server/core.py +1 -4
  245. claude_mpm/services/socketio/server/main.py +1 -3
  246. claude_mpm/services/system_instructions_service.py +1 -3
  247. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  248. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  249. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  250. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  251. claude_mpm/services/unified/unified_deployment.py +1 -5
  252. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  253. claude_mpm/services/visualization/__init__.py +1 -5
  254. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  255. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  256. claude_mpm/skills/bundled/performance-profiling.md +6 -0
  257. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
  258. claude_mpm/skills/skills_registry.py +0 -1
  259. claude_mpm/templates/questions/__init__.py +38 -0
  260. claude_mpm/templates/questions/base.py +193 -0
  261. claude_mpm/templates/questions/pr_strategy.py +311 -0
  262. claude_mpm/templates/questions/project_init.py +385 -0
  263. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  264. claude_mpm/tools/__main__.py +8 -8
  265. claude_mpm/tools/code_tree_analyzer/analysis.py +1 -1
  266. claude_mpm/utils/agent_dependency_loader.py +80 -13
  267. claude_mpm/utils/agent_filters.py +288 -0
  268. claude_mpm/utils/dependency_cache.py +3 -1
  269. claude_mpm/utils/gitignore.py +244 -0
  270. claude_mpm/utils/log_cleanup.py +3 -3
  271. claude_mpm/utils/migration.py +372 -0
  272. claude_mpm/utils/progress.py +387 -0
  273. claude_mpm/utils/robust_installer.py +3 -5
  274. claude_mpm/utils/structured_questions.py +619 -0
  275. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/METADATA +496 -65
  276. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/RECORD +284 -443
  277. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  278. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  279. claude_mpm/agents/templates/agent-manager.json +0 -273
  280. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  281. claude_mpm/agents/templates/api_qa.json +0 -180
  282. claude_mpm/agents/templates/circuit_breakers.md +0 -638
  283. claude_mpm/agents/templates/clerk-ops.json +0 -235
  284. claude_mpm/agents/templates/code_analyzer.json +0 -101
  285. claude_mpm/agents/templates/content-agent.json +0 -358
  286. claude_mpm/agents/templates/dart_engineer.json +0 -307
  287. claude_mpm/agents/templates/data_engineer.json +0 -225
  288. claude_mpm/agents/templates/documentation.json +0 -211
  289. claude_mpm/agents/templates/engineer.json +0 -210
  290. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  291. claude_mpm/agents/templates/golang_engineer.json +0 -270
  292. claude_mpm/agents/templates/imagemagick.json +0 -264
  293. claude_mpm/agents/templates/java_engineer.json +0 -346
  294. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  295. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  296. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  297. claude_mpm/agents/templates/memory_manager.json +0 -158
  298. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  299. claude_mpm/agents/templates/ops.json +0 -185
  300. claude_mpm/agents/templates/php-engineer.json +0 -287
  301. claude_mpm/agents/templates/product_owner.json +0 -338
  302. claude_mpm/agents/templates/project_organizer.json +0 -140
  303. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  304. claude_mpm/agents/templates/python_engineer.json +0 -387
  305. claude_mpm/agents/templates/qa.json +0 -242
  306. claude_mpm/agents/templates/react_engineer.json +0 -238
  307. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  308. claude_mpm/agents/templates/research.json +0 -188
  309. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  310. claude_mpm/agents/templates/rust_engineer.json +0 -275
  311. claude_mpm/agents/templates/security.json +0 -202
  312. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  313. claude_mpm/agents/templates/ticketing.json +0 -177
  314. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  315. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  316. claude_mpm/agents/templates/version_control.json +0 -157
  317. claude_mpm/agents/templates/web_qa.json +0 -399
  318. claude_mpm/agents/templates/web_ui.json +0 -189
  319. claude_mpm/commands/mpm-tickets.md +0 -102
  320. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  321. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  322. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  323. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  324. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  325. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  326. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  327. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  328. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  329. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  330. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  331. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  332. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  333. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  334. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  335. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  336. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  337. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  338. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  339. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  340. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  341. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  342. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  343. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  344. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  345. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  346. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  347. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  348. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  349. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  350. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  351. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  352. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  353. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  354. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  355. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  356. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  357. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  358. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  359. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  360. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  361. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  362. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  363. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  364. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  365. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  366. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  367. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  368. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  369. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  370. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  371. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  372. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  373. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  374. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  375. claude_mpm/dashboard/static/built/react/events.js +0 -30
  376. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  377. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  378. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  379. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  380. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  381. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  382. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  383. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  384. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  385. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  386. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  387. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  388. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  389. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  390. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  391. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  392. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  393. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  394. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  395. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  396. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  397. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  398. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  399. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  400. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  401. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  402. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  403. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  404. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  405. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  406. claude_mpm/dashboard/static/events.html +0 -607
  407. claude_mpm/dashboard/static/index.html +0 -635
  408. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  409. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  410. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  411. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  412. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  413. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  414. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  415. claude_mpm/dashboard/static/legacy/files.html +0 -747
  416. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  417. claude_mpm/dashboard/static/monitors.html +0 -431
  418. claude_mpm/dashboard/static/production/events.html +0 -659
  419. claude_mpm/dashboard/static/production/main.html +0 -698
  420. claude_mpm/dashboard/static/production/monitors.html +0 -483
  421. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  422. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  423. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  424. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  425. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  426. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  427. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  428. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  429. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  430. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  431. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  432. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  433. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  434. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  435. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  436. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  437. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  438. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  439. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  440. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  441. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  442. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  443. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  444. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  445. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  446. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  447. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  448. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  449. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  450. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  451. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  452. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  453. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  454. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  455. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  456. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  457. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  458. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  459. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  460. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  461. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  462. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  463. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  464. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  465. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  466. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  467. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  468. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  469. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  470. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  471. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  472. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  473. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  474. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  475. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  476. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  477. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  478. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  479. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  480. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  481. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  482. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  483. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  484. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  485. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  486. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  487. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  488. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  489. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  490. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  491. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  492. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  493. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  494. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  495. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  496. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  497. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  498. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  499. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  500. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  501. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  502. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  503. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  504. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  505. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  506. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  507. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  508. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  509. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  510. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  511. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  512. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  513. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  514. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/WHEEL +0 -0
  515. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/entry_points.txt +0 -0
  516. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/licenses/LICENSE +0 -0
  517. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,480 @@
1
+ """
2
+ Startup display banner for Claude MPM.
3
+
4
+ Shows welcome message, version info, ASCII art, and what's new section.
5
+ """
6
+
7
+ import os
8
+ import re
9
+ import shutil
10
+ import subprocess
11
+ from pathlib import Path
12
+ from typing import List
13
+
14
+ from claude_mpm.utils.git_analyzer import is_git_repository
15
+
16
+ # ANSI color codes
17
+ CYAN = "\033[36m" # Cyan for header highlight (Claude Code style)
18
+ DIM = "\033[2m" # Dim text for subtle launch message
19
+ RESET = "\033[0m"
20
+
21
+ # Banner dimension defaults (will be calculated based on terminal width)
22
+ MIN_WIDTH = 100 # Minimum banner width
23
+ MAX_WIDTH = 200 # Maximum banner width
24
+ DEFAULT_WIDTH = 160 # Default if terminal width cannot be determined
25
+
26
+
27
+ def _get_terminal_width() -> int:
28
+ """
29
+ Get terminal width with reasonable bounds.
30
+
31
+ Returns:
32
+ Terminal width (75% of actual) clamped between MIN_WIDTH and MAX_WIDTH
33
+ """
34
+ try:
35
+ full_width = shutil.get_terminal_size().columns
36
+ # Use 75% of terminal width for more compact display
37
+ width = int(full_width * 0.75)
38
+ # Apply reasonable bounds
39
+ return max(MIN_WIDTH, min(width, MAX_WIDTH))
40
+ except Exception:
41
+ # 75% of 160 = 120
42
+ return 120
43
+
44
+
45
+ def _get_username() -> str:
46
+ """Get username from environment or default to 'User'."""
47
+ return os.environ.get("USER") or os.environ.get("USERNAME") or "User"
48
+
49
+
50
+ def _get_recent_commits(max_commits: int = 3) -> List[str]:
51
+ """
52
+ Get recent git commits for display in startup banner.
53
+
54
+ Args:
55
+ max_commits: Maximum number of commits to retrieve (default: 3)
56
+
57
+ Returns:
58
+ List of formatted commit strings (hash • relative_time • message)
59
+ Empty list if not a git repo or if any error occurs
60
+
61
+ Format: "a3f5b7c • 2 hours ago • fix: resolve critical error"
62
+ """
63
+ try:
64
+ # Check if we're in a git repository
65
+ if not is_git_repository("."):
66
+ return []
67
+
68
+ # Run git log with custom format
69
+ result = subprocess.run(
70
+ ["git", "log", "--format=%h • %ar • %s", f"-{max_commits}"],
71
+ capture_output=True,
72
+ text=True,
73
+ check=True,
74
+ timeout=2,
75
+ )
76
+
77
+ if not result.stdout.strip():
78
+ return []
79
+
80
+ # Split into lines and return
81
+ commits = [
82
+ line.strip() for line in result.stdout.strip().split("\n") if line.strip()
83
+ ]
84
+ return commits[:max_commits]
85
+
86
+ except Exception:
87
+ # Fail silently - return empty list on any error
88
+ # (not a git repo, git not installed, timeout, etc.)
89
+ return []
90
+
91
+
92
+ def _strip_ansi_codes(text: str) -> str:
93
+ """Remove ANSI color codes from text."""
94
+ ansi_escape = re.compile(r"\x1b\[[0-9;]*m")
95
+ return ansi_escape.sub("", text)
96
+
97
+
98
+ def _get_display_width(text: str) -> int:
99
+ """
100
+ Calculate display width accounting for emojis and wide characters.
101
+
102
+ Args:
103
+ text: Text to measure (without ANSI codes)
104
+
105
+ Returns:
106
+ Display width in terminal columns
107
+ """
108
+ width = 0
109
+ for char in text:
110
+ # Emoji and wide characters take 2 columns
111
+ if ord(char) > 0x1F000: # Emoji range
112
+ width += 2
113
+ else:
114
+ width += 1
115
+ return width
116
+
117
+
118
+ def _parse_changelog_highlights(max_items: int = 3, max_width: int = 130) -> List[str]:
119
+ """
120
+ Parse CHANGELOG.md to extract highlights from latest version.
121
+
122
+ Args:
123
+ max_items: Maximum number of highlights to return
124
+ max_width: Maximum width for each highlight
125
+
126
+ Returns:
127
+ List of formatted bullet points for display.
128
+ """
129
+ changelog_path = Path(__file__).parent.parent.parent.parent / "CHANGELOG.md"
130
+
131
+ if not changelog_path.exists():
132
+ return ["No changelog available"]
133
+
134
+ try:
135
+ with open(changelog_path, encoding="utf-8") as f:
136
+ lines = f.readlines()
137
+
138
+ # Find latest version section (skip [Unreleased])
139
+ in_version_section = False
140
+ highlights = []
141
+
142
+ for i, line in enumerate(lines):
143
+ line = line.rstrip()
144
+
145
+ # Skip unreleased section
146
+ if line.startswith("## [Unreleased]"):
147
+ continue
148
+
149
+ # Found latest version
150
+ if line.startswith("## [") and not in_version_section:
151
+ in_version_section = True
152
+ continue
153
+
154
+ # Next version section means we're done
155
+ if line.startswith("## [") and in_version_section:
156
+ break
157
+
158
+ # Extract any bullet points from any section in latest version
159
+ if in_version_section:
160
+ # Skip section headers
161
+ if line.startswith("###"):
162
+ continue
163
+
164
+ # Extract bullet points
165
+ if line.startswith("-"):
166
+ # Get first line of multi-line items
167
+ item = line[2:].strip() # Remove "- " prefix
168
+
169
+ # Clean up markdown formatting
170
+ item = item.replace("**", "") # Remove bold markers
171
+
172
+ # Truncate if too long
173
+ if len(item) > max_width:
174
+ item = item[: max_width - 3] + "..."
175
+
176
+ highlights.append(item)
177
+
178
+ if len(highlights) >= max_items:
179
+ break
180
+
181
+ if not highlights:
182
+ highlights = ["See CHANGELOG.md for details"]
183
+
184
+ return highlights[:max_items]
185
+
186
+ except Exception:
187
+ return ["See CHANGELOG.md for details"]
188
+
189
+
190
+ def _get_alien_art() -> List[str]:
191
+ """Return multi-alien ASCII art with teal/cyan highlighting."""
192
+ return [
193
+ f"{CYAN}▐▛███▜▌ ▐▛███▜▌{RESET}", # Two aliens - Width: 15 chars
194
+ f"{CYAN}▝▜█████▛▘▝▜█████▛▘{RESET}", # Two aliens base - Width: 18 chars
195
+ f"{CYAN}▘▘ ▝▝ ▘▘ ▝▝{RESET}", # Two aliens feet - Width: 14 chars
196
+ ]
197
+
198
+
199
+ def _format_logging_status(logging_level: str) -> str:
200
+ """Format logging status with helpful indicator."""
201
+ if logging_level == "OFF":
202
+ return "Logging: OFF (default)"
203
+ if logging_level == "DEBUG":
204
+ return f"Logging: {logging_level} (verbose)"
205
+ return f"Logging: {logging_level}"
206
+
207
+
208
+ def _get_cwd_display(max_width: int = 40) -> str:
209
+ """Get current working directory, truncated if needed."""
210
+ cwd = str(Path.cwd())
211
+
212
+ if len(cwd) <= max_width:
213
+ return cwd
214
+
215
+ # Truncate from the left with ellipsis
216
+ return "..." + cwd[-(max_width - 3) :]
217
+
218
+
219
+ def _format_two_column_line(
220
+ left: str, right: str, left_panel_width: int, right_panel_width: int
221
+ ) -> str:
222
+ """
223
+ Format a two-column line with precise width control.
224
+
225
+ Args:
226
+ left: Left panel content (will be centered in left_panel_width)
227
+ right: Right panel content (will be left-aligned in right_panel_width)
228
+ left_panel_width: Width of left panel in characters
229
+ right_panel_width: Width of right panel in characters
230
+
231
+ Returns:
232
+ Formatted line with exact character widths
233
+ """
234
+ # Strip ANSI codes for width calculation
235
+ left_display = _strip_ansi_codes(left)
236
+ right_display = _strip_ansi_codes(right)
237
+
238
+ # Calculate actual display width
239
+ left_width = _get_display_width(left_display)
240
+ right_width = _get_display_width(right_display)
241
+
242
+ # Calculate padding for left panel (centered)
243
+ left_padding = (left_panel_width - left_width) // 2
244
+ right_padding = left_panel_width - left_width - left_padding
245
+
246
+ # Format left panel with centering
247
+ left_formatted = " " * left_padding + left + " " * right_padding
248
+
249
+ # Format right panel (left-aligned)
250
+ # Right panel content should exactly fill right_panel_width
251
+ right_formatted = right + " " * (right_panel_width - right_width)
252
+
253
+ return f"│{left_formatted}│ {right_formatted}│"
254
+
255
+
256
+ def display_startup_banner(version: str, logging_level: str) -> None:
257
+ """
258
+ Display startup banner with welcome message and info.
259
+
260
+ Banner dynamically adjusts to terminal width with cyan header highlight
261
+ (Claude Code style).
262
+
263
+ Args:
264
+ version: Claude MPM version string
265
+ logging_level: Current logging level (OFF/INFO/DEBUG)
266
+ """
267
+ # Note: Banner is shown BEFORE "Launching Claude..." progress bar (in cli/__init__.py)
268
+ # This ensures users see welcome message before background services start
269
+ print() # Empty line before banner
270
+
271
+ # Get terminal width and calculate panel sizes
272
+ terminal_width = _get_terminal_width()
273
+ left_panel_width = int(terminal_width * 0.25) # ~25% for left panel
274
+ # -4 accounts for: 2 borders (│) + 2 column separators (│ and space)
275
+ right_panel_width = terminal_width - left_panel_width - 4
276
+
277
+ username = _get_username()
278
+
279
+ # Get recent git commits for "Recent activity" section
280
+ recent_commits = _get_recent_commits(max_commits=3)
281
+
282
+ # Build header line with cyan highlight (Claude Code style)
283
+ header = f"─── Claude MPM v{version} "
284
+ header_padding = "─" * (terminal_width - len(header) - 2) # -2 for ╭╮
285
+ top_line = f"{CYAN}╭{header}{header_padding}╮{RESET}"
286
+
287
+ # Build content lines (plain text, no color)
288
+ lines = []
289
+
290
+ # Line 1: Empty left | "Recent activity" right
291
+ lines.append(
292
+ _format_two_column_line(
293
+ "", "Recent activity", left_panel_width, right_panel_width
294
+ )
295
+ )
296
+
297
+ # Lines 2-4: Welcome message + commit activity (3 lines total)
298
+ welcome_msg = f"Welcome back {username}!"
299
+
300
+ # Truncate commits to fit right panel width (leave 2 chars margin)
301
+ max_commit_width = right_panel_width - 2
302
+ truncated_commits = []
303
+ for commit in recent_commits:
304
+ if len(commit) > max_commit_width:
305
+ truncated_commits.append(commit[: max_commit_width - 3] + "...")
306
+ else:
307
+ truncated_commits.append(commit)
308
+
309
+ # Line 2: Welcome message | First commit or "No recent activity"
310
+ if truncated_commits:
311
+ lines.append(
312
+ _format_two_column_line(
313
+ welcome_msg, truncated_commits[0], left_panel_width, right_panel_width
314
+ )
315
+ )
316
+ else:
317
+ lines.append(
318
+ _format_two_column_line(
319
+ welcome_msg, "No recent activity", left_panel_width, right_panel_width
320
+ )
321
+ )
322
+
323
+ # Line 3: Empty left | Second commit or empty
324
+ if len(truncated_commits) >= 2:
325
+ lines.append(
326
+ _format_two_column_line(
327
+ "", truncated_commits[1], left_panel_width, right_panel_width
328
+ )
329
+ )
330
+ else:
331
+ lines.append(
332
+ _format_two_column_line("", "", left_panel_width, right_panel_width)
333
+ )
334
+
335
+ # Line 4: Empty left | Third commit or empty
336
+ if len(truncated_commits) >= 3:
337
+ lines.append(
338
+ _format_two_column_line(
339
+ "", truncated_commits[2], left_panel_width, right_panel_width
340
+ )
341
+ )
342
+ else:
343
+ lines.append(
344
+ _format_two_column_line("", "", left_panel_width, right_panel_width)
345
+ )
346
+
347
+ # Line 5: Empty left | separator right
348
+ separator = "─" * right_panel_width
349
+ lines.append(
350
+ _format_two_column_line("", separator, left_panel_width, right_panel_width)
351
+ )
352
+
353
+ # Line 6: Alien art line 1 | "What's new"
354
+ alien_art = _get_alien_art()
355
+ lines.append(
356
+ _format_two_column_line(
357
+ alien_art[0], "What's new", left_panel_width, right_panel_width
358
+ )
359
+ )
360
+
361
+ # Lines 7-8: More alien art | changelog highlights
362
+ max_highlight_width = right_panel_width - 5 # Leave some margin
363
+ highlights = _parse_changelog_highlights(max_items=3, max_width=max_highlight_width)
364
+
365
+ if len(highlights) >= 1:
366
+ lines.append(
367
+ _format_two_column_line(
368
+ alien_art[1], highlights[0], left_panel_width, right_panel_width
369
+ )
370
+ )
371
+ else:
372
+ lines.append(
373
+ _format_two_column_line(
374
+ alien_art[1], "", left_panel_width, right_panel_width
375
+ )
376
+ )
377
+
378
+ if len(highlights) >= 2:
379
+ lines.append(
380
+ _format_two_column_line(
381
+ alien_art[2], highlights[1], left_panel_width, right_panel_width
382
+ )
383
+ )
384
+ else:
385
+ lines.append(
386
+ _format_two_column_line(
387
+ alien_art[2], "", left_panel_width, right_panel_width
388
+ )
389
+ )
390
+
391
+ # Line 9: Empty | third highlight or link
392
+ if len(highlights) >= 3:
393
+ lines.append(
394
+ _format_two_column_line(
395
+ "", highlights[2], left_panel_width, right_panel_width
396
+ )
397
+ )
398
+ else:
399
+ lines.append(
400
+ _format_two_column_line(
401
+ "", "/mpm-help for more", left_panel_width, right_panel_width
402
+ )
403
+ )
404
+
405
+ # Line 10: Model info | separator
406
+ separator = "─" * right_panel_width
407
+ lines.append(
408
+ _format_two_column_line(
409
+ "Sonnet 4.5 · Claude MPM", separator, left_panel_width, right_panel_width
410
+ )
411
+ )
412
+
413
+ # Line 11: CWD | MPM Commands header
414
+ cwd = _get_cwd_display(left_panel_width - 2)
415
+ lines.append(
416
+ _format_two_column_line(
417
+ cwd, "MPM Commands", left_panel_width, right_panel_width
418
+ )
419
+ )
420
+
421
+ # Line 12: Empty | /mpm command
422
+ lines.append(
423
+ _format_two_column_line(
424
+ "", " /mpm - MPM overview", left_panel_width, right_panel_width
425
+ )
426
+ )
427
+
428
+ # Line 13: Empty | /mpm-agents command
429
+ lines.append(
430
+ _format_two_column_line(
431
+ "", " /mpm-agents - Show agents", left_panel_width, right_panel_width
432
+ )
433
+ )
434
+
435
+ # Line 14: Empty | /mpm-doctor command
436
+ lines.append(
437
+ _format_two_column_line(
438
+ "", " /mpm-doctor - Run diagnostics", left_panel_width, right_panel_width
439
+ )
440
+ )
441
+
442
+ # Line 15: Empty | empty
443
+ lines.append(_format_two_column_line("", "", left_panel_width, right_panel_width))
444
+
445
+ # Line 16: Empty | autocomplete tip
446
+ lines.append(
447
+ _format_two_column_line(
448
+ "", "Type / for autocomplete", left_panel_width, right_panel_width
449
+ )
450
+ )
451
+
452
+ # Build bottom line (plain text, no color)
453
+ bottom_line = f"╰{'─' * (terminal_width - 2)}╯"
454
+
455
+ # Print banner (only header has cyan color)
456
+ print(top_line)
457
+ for line in lines:
458
+ print(line)
459
+ print(bottom_line)
460
+ print() # Empty line after banner
461
+
462
+
463
+ def should_show_banner(args) -> bool:
464
+ """
465
+ Determine if startup banner should be displayed.
466
+
467
+ Skip banner for: --help, --version, info, doctor, config, configure commands
468
+ """
469
+ # Check for help/version flags
470
+ if hasattr(args, "help") and args.help:
471
+ return False
472
+ if hasattr(args, "version") and args.version:
473
+ return False
474
+
475
+ # Check for commands that should skip banner
476
+ skip_commands = {"info", "doctor", "config", "configure"}
477
+ if hasattr(args, "command") and args.command in skip_commands:
478
+ return False
479
+
480
+ return True
claude_mpm/cli/utils.py CHANGED
@@ -171,7 +171,7 @@ def setup_logging(args) -> object:
171
171
 
172
172
  # Set default logging level if not specified
173
173
  if not hasattr(args, "logging") or args.logging is None:
174
- args.logging = LogLevel.INFO.value
174
+ args.logging = LogLevel.OFF.value
175
175
 
176
176
  # Handle deprecated --debug flag
177
177
  if hasattr(args, "debug") and args.debug and args.logging == LogLevel.INFO.value:
@@ -107,7 +107,7 @@ class CommandRegistry:
107
107
 
108
108
  # Apply extra arguments
109
109
  for arg_name, arg_config in command.extra_args.items():
110
- flags = arg_config.pop("flags", [f'--{arg_name.replace("_", "-")}'])
110
+ flags = arg_config.pop("flags", [f"--{arg_name.replace('_', '-')}"])
111
111
  subparser.add_argument(*flags, **arg_config)
112
112
 
113
113
  # Store handler reference
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/agents
3
+ command: auto-configure
4
+ aliases: [mpm-agents-auto-configure]
5
+ migration_target: /mpm/agents:auto-configure
6
+ category: agents
7
+ deprecated_aliases: [mpm-auto-configure]
8
+ description: Automatically detect project toolchain and configure appropriate agents
9
+ ---
1
10
  # Automatically configure agents based on project detection
2
11
 
3
12
  Automatically detect your project's toolchain and configure the most appropriate agents.
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/agents
3
+ command: detect
4
+ aliases: [mpm-agents-detect]
5
+ migration_target: /mpm/agents:detect
6
+ category: agents
7
+ deprecated_aliases: []
8
+ description: Scan project to detect programming languages, frameworks, tools, and configurations
9
+ ---
1
10
  # Detect project toolchain and frameworks
2
11
 
3
12
  Scan your project to detect programming languages, frameworks, tools, and configurations.
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/agents
3
+ command: list
4
+ aliases: [mpm-agents-list]
5
+ migration_target: /mpm/agents:list
6
+ category: agents
7
+ deprecated_aliases: [mpm-agents]
8
+ description: List all available Claude MPM agents with versions and deployment status
9
+ ---
1
10
  # Show available agents and their versions
2
11
 
3
12
  Show all available Claude MPM agents with their versions and deployment status.
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/agents
3
+ command: recommend
4
+ aliases: [mpm-agents-recommend]
5
+ migration_target: /mpm/agents:recommend
6
+ category: agents
7
+ deprecated_aliases: []
8
+ description: Get intelligent agent recommendations based on detected project toolchain
9
+ ---
1
10
  # Show recommended agents for detected project stack
2
11
 
3
12
  Get intelligent agent recommendations based on your project's detected toolchain.
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/config
3
+ command: view
4
+ aliases: [mpm-config-view]
5
+ migration_target: /mpm/config:view
6
+ category: config
7
+ deprecated_aliases: [mpm-config]
8
+ description: View and validate Claude MPM configuration settings
9
+ ---
1
10
  # View and validate claude-mpm configuration
2
11
 
3
12
  Manage Claude MPM configuration settings through validation, viewing, and status checks.
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/system
3
+ command: doctor
4
+ aliases: [mpm-doctor]
5
+ migration_target: /mpm/system:doctor
6
+ category: system
7
+ deprecated_aliases: []
8
+ description: Run comprehensive diagnostic checks on Claude MPM installation
9
+ ---
1
10
  # Run diagnostic checks on claude-mpm installation
2
11
 
3
12
  Run comprehensive diagnostic checks on your Claude MPM installation to identify and fix common issues.
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/system
3
+ command: help
4
+ aliases: [mpm-help]
5
+ migration_target: /mpm/system:help
6
+ category: system
7
+ deprecated_aliases: []
8
+ description: Display help information for Claude MPM slash commands and CLI capabilities
9
+ ---
1
10
  # Show help for available MPM commands
2
11
 
3
12
  Display help information for Claude MPM slash commands and CLI capabilities.
@@ -63,6 +72,9 @@ Available Commands:
63
72
  /mpm-doctor [--fix] [--verbose]
64
73
  Diagnose and fix common issues
65
74
 
75
+ /mpm-postmortem [--auto-fix] [--create-prs]
76
+ Analyze session errors and suggest improvements
77
+
66
78
  /mpm-agents [list|deploy|remove] [name]
67
79
  Manage agent deployment
68
80
 
@@ -78,8 +90,8 @@ Available Commands:
78
90
  /mpm-config [validate|view|status]
79
91
  Manage configuration settings
80
92
 
81
- /mpm-tickets [list|create|update]
82
- Manage project tickets
93
+ /mpm-ticket [organize|proceed|status|update|project]
94
+ High-level ticketing workflows and project management
83
95
 
84
96
  /mpm-organize [--dry-run] [--force]
85
97
  Organize project file structure
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/system
3
+ command: init
4
+ aliases: [mpm-init]
5
+ migration_target: /mpm/system:init
6
+ category: system
7
+ deprecated_aliases: []
8
+ description: Initialize or update project for Claude Code and Claude MPM
9
+ ---
1
10
  # /mpm-init [update]
2
11
 
3
12
  Initialize or intelligently update your project for optimal use with Claude Code and Claude MPM using the Agentic Coder Optimizer agent.
@@ -44,6 +53,7 @@ This command has two primary modes:
44
53
  - **🧠 Memory System**: Initializes project knowledge retention
45
54
  - **🔧 Tool Configuration**: Sets up linting, formatting, testing
46
55
  - **📝 Holistic Review**: Final organization and validation pass
56
+ - **🔒 GitIgnore Management**: Automatically excludes claude-mpm config directories
47
57
 
48
58
  ## Options
49
59
 
@@ -205,14 +215,27 @@ When enabled, performs:
205
215
  - Initializes memory files for project knowledge
206
216
  - Documents memory usage patterns
207
217
 
208
- ### 7. Holistic Organization (Final Step)
218
+ ### 7. GitIgnore Management (Automatic)
219
+ During initialization:
220
+ - **Automatic Updates**: Adds `.claude-mpm/` and `.claude/agents/` to `.gitignore`
221
+ - **Smart Detection**: Skips entries that already exist (no duplicates)
222
+ - **Safe Operation**: Creates `.gitignore` if missing, preserves existing content
223
+ - **Non-Blocking**: Continues initialization even if `.gitignore` update fails
224
+
225
+ **Entries Added**:
226
+ - `.claude-mpm/`: Configuration directory (sessions, logs, etc.)
227
+ - `.claude/agents/`: Agent runtime files
228
+
229
+ This ensures claude-mpm configuration files never get committed to version control.
230
+
231
+ ### 8. Holistic Organization (Final Step)
209
232
  After all tasks, performs a comprehensive review:
210
233
  - Reorganizes content by priority
211
234
  - Validates completeness
212
235
  - Ensures single-path principle
213
236
  - Adds meta-instructions for maintenance
214
237
 
215
- ### 8. Update Mode Features (NEW)
238
+ ### 9. Update Mode Features (NEW)
216
239
  When updating existing documentation:
217
240
  - **Smart Merging**: Intelligently merges new content with existing
218
241
  - **Custom Preservation**: Keeps your project-specific sections
@@ -470,6 +493,7 @@ The command delegates to the Agentic Coder Optimizer agent which:
470
493
  - ✅ **Memory system**: Initialized for knowledge retention
471
494
  - ✅ **Developer docs**: Technical documentation (with AST analysis)
472
495
  - ✅ **Priority organization**: Instructions ranked by importance
496
+ - ✅ **.gitignore**: Configuration directories automatically excluded
473
497
 
474
498
  ### For Existing Projects (Update Mode)
475
499
  - ✅ **Updated CLAUDE.md**: Refreshed with latest standards
@@ -478,6 +502,7 @@ The command delegates to the Agentic Coder Optimizer agent which:
478
502
  - ✅ **Structure verified**: Missing directories created
479
503
  - ✅ **Files organized**: Misplaced files moved (if --organize)
480
504
  - ✅ **Change summary**: Report of what was updated
505
+ - ✅ **.gitignore**: Config directories added if not present
481
506
 
482
507
  ### For Quick Update Mode (`/mpm-init update`)
483
508
  - ✅ **Activity Report**: Summary of recent 30-day git activity
@@ -1,3 +1,12 @@
1
+ ---
2
+ namespace: mpm/system
3
+ command: monitor
4
+ aliases: [mpm-monitor]
5
+ migration_target: /mpm/system:monitor
6
+ category: system
7
+ deprecated_aliases: []
8
+ description: Control Claude MPM monitoring server for real-time dashboard interface
9
+ ---
1
10
  # Manage Socket.IO monitoring server
2
11
 
3
12
  Control the Claude MPM monitoring server that powers the real-time dashboard interface for event tracking and project visualization.