claude-mpm 3.9.11__py3-none-any.whl โ†’ 4.0.4__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.
Files changed (434) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +2 -2
  3. claude_mpm/__main__.py +3 -2
  4. claude_mpm/agents/__init__.py +85 -79
  5. claude_mpm/agents/agent_loader.py +464 -1003
  6. claude_mpm/agents/agent_loader_integration.py +45 -45
  7. claude_mpm/agents/agents_metadata.py +29 -30
  8. claude_mpm/agents/async_agent_loader.py +156 -138
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/base_agent_loader.py +179 -151
  11. claude_mpm/agents/frontmatter_validator.py +229 -130
  12. claude_mpm/agents/schema/agent_schema.json +1 -1
  13. claude_mpm/agents/system_agent_config.py +213 -147
  14. claude_mpm/agents/templates/__init__.py +13 -13
  15. claude_mpm/agents/templates/code_analyzer.json +2 -2
  16. claude_mpm/agents/templates/data_engineer.json +1 -1
  17. claude_mpm/agents/templates/documentation.json +23 -11
  18. claude_mpm/agents/templates/engineer.json +22 -6
  19. claude_mpm/agents/templates/memory_manager.json +1 -1
  20. claude_mpm/agents/templates/ops.json +2 -2
  21. claude_mpm/agents/templates/project_organizer.json +1 -1
  22. claude_mpm/agents/templates/qa.json +1 -1
  23. claude_mpm/agents/templates/refactoring_engineer.json +222 -0
  24. claude_mpm/agents/templates/research.json +20 -14
  25. claude_mpm/agents/templates/security.json +1 -1
  26. claude_mpm/agents/templates/ticketing.json +2 -2
  27. claude_mpm/agents/templates/version_control.json +1 -1
  28. claude_mpm/agents/templates/web_qa.json +3 -1
  29. claude_mpm/agents/templates/web_ui.json +2 -2
  30. claude_mpm/cli/__init__.py +79 -51
  31. claude_mpm/cli/__main__.py +3 -2
  32. claude_mpm/cli/commands/__init__.py +20 -20
  33. claude_mpm/cli/commands/agents.py +279 -247
  34. claude_mpm/cli/commands/aggregate.py +138 -157
  35. claude_mpm/cli/commands/cleanup.py +147 -147
  36. claude_mpm/cli/commands/config.py +93 -76
  37. claude_mpm/cli/commands/info.py +17 -16
  38. claude_mpm/cli/commands/mcp.py +140 -905
  39. claude_mpm/cli/commands/mcp_command_router.py +139 -0
  40. claude_mpm/cli/commands/mcp_config_commands.py +20 -0
  41. claude_mpm/cli/commands/mcp_install_commands.py +20 -0
  42. claude_mpm/cli/commands/mcp_server_commands.py +175 -0
  43. claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
  44. claude_mpm/cli/commands/memory.py +239 -203
  45. claude_mpm/cli/commands/monitor.py +330 -86
  46. claude_mpm/cli/commands/run.py +380 -429
  47. claude_mpm/cli/commands/run_config_checker.py +160 -0
  48. claude_mpm/cli/commands/socketio_monitor.py +235 -0
  49. claude_mpm/cli/commands/tickets.py +363 -220
  50. claude_mpm/cli/parser.py +24 -1156
  51. claude_mpm/cli/parsers/__init__.py +29 -0
  52. claude_mpm/cli/parsers/agents_parser.py +136 -0
  53. claude_mpm/cli/parsers/base_parser.py +331 -0
  54. claude_mpm/cli/parsers/config_parser.py +85 -0
  55. claude_mpm/cli/parsers/mcp_parser.py +152 -0
  56. claude_mpm/cli/parsers/memory_parser.py +138 -0
  57. claude_mpm/cli/parsers/monitor_parser.py +124 -0
  58. claude_mpm/cli/parsers/run_parser.py +147 -0
  59. claude_mpm/cli/parsers/tickets_parser.py +203 -0
  60. claude_mpm/cli/ticket_cli.py +7 -3
  61. claude_mpm/cli/utils.py +55 -37
  62. claude_mpm/cli_module/__init__.py +6 -6
  63. claude_mpm/cli_module/args.py +188 -140
  64. claude_mpm/cli_module/commands.py +79 -70
  65. claude_mpm/cli_module/migration_example.py +38 -60
  66. claude_mpm/config/__init__.py +32 -25
  67. claude_mpm/config/agent_config.py +151 -119
  68. claude_mpm/config/experimental_features.py +71 -73
  69. claude_mpm/config/paths.py +94 -208
  70. claude_mpm/config/socketio_config.py +84 -73
  71. claude_mpm/constants.py +35 -18
  72. claude_mpm/core/__init__.py +9 -6
  73. claude_mpm/core/agent_name_normalizer.py +68 -71
  74. claude_mpm/core/agent_registry.py +372 -521
  75. claude_mpm/core/agent_session_manager.py +74 -63
  76. claude_mpm/core/base_service.py +116 -87
  77. claude_mpm/core/cache.py +119 -153
  78. claude_mpm/core/claude_runner.py +425 -1120
  79. claude_mpm/core/config.py +263 -168
  80. claude_mpm/core/config_aliases.py +69 -61
  81. claude_mpm/core/config_constants.py +292 -0
  82. claude_mpm/core/constants.py +57 -99
  83. claude_mpm/core/container.py +211 -178
  84. claude_mpm/core/exceptions.py +233 -89
  85. claude_mpm/core/factories.py +92 -54
  86. claude_mpm/core/framework_loader.py +378 -220
  87. claude_mpm/core/hook_manager.py +198 -83
  88. claude_mpm/core/hook_performance_config.py +136 -0
  89. claude_mpm/core/injectable_service.py +61 -55
  90. claude_mpm/core/interactive_session.py +165 -155
  91. claude_mpm/core/interfaces.py +221 -195
  92. claude_mpm/core/lazy.py +96 -96
  93. claude_mpm/core/logger.py +133 -107
  94. claude_mpm/core/logging_config.py +185 -157
  95. claude_mpm/core/minimal_framework_loader.py +20 -15
  96. claude_mpm/core/mixins.py +30 -29
  97. claude_mpm/core/oneshot_session.py +215 -181
  98. claude_mpm/core/optimized_agent_loader.py +134 -138
  99. claude_mpm/core/optimized_startup.py +159 -157
  100. claude_mpm/core/pm_hook_interceptor.py +85 -72
  101. claude_mpm/core/service_registry.py +103 -101
  102. claude_mpm/core/session_manager.py +97 -87
  103. claude_mpm/core/socketio_pool.py +212 -158
  104. claude_mpm/core/tool_access_control.py +58 -51
  105. claude_mpm/core/types.py +46 -24
  106. claude_mpm/core/typing_utils.py +166 -82
  107. claude_mpm/core/unified_agent_registry.py +721 -0
  108. claude_mpm/core/unified_config.py +550 -0
  109. claude_mpm/core/unified_paths.py +549 -0
  110. claude_mpm/dashboard/index.html +1 -1
  111. claude_mpm/dashboard/open_dashboard.py +51 -17
  112. claude_mpm/dashboard/static/built/components/agent-inference.js +2 -0
  113. claude_mpm/dashboard/static/built/components/event-processor.js +2 -0
  114. claude_mpm/dashboard/static/built/components/event-viewer.js +2 -0
  115. claude_mpm/dashboard/static/built/components/export-manager.js +2 -0
  116. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +2 -0
  117. claude_mpm/dashboard/static/built/components/hud-library-loader.js +2 -0
  118. claude_mpm/dashboard/static/built/components/hud-manager.js +2 -0
  119. claude_mpm/dashboard/static/built/components/hud-visualizer.js +2 -0
  120. claude_mpm/dashboard/static/built/components/module-viewer.js +2 -0
  121. claude_mpm/dashboard/static/built/components/session-manager.js +2 -0
  122. claude_mpm/dashboard/static/built/components/socket-manager.js +2 -0
  123. claude_mpm/dashboard/static/built/components/ui-state-manager.js +2 -0
  124. claude_mpm/dashboard/static/built/components/working-directory.js +2 -0
  125. claude_mpm/dashboard/static/built/dashboard.js +2 -0
  126. claude_mpm/dashboard/static/built/socket-client.js +2 -0
  127. claude_mpm/dashboard/static/css/dashboard.css +27 -8
  128. claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
  129. claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
  130. claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
  131. claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
  132. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
  133. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
  134. claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
  135. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
  136. claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  137. claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
  138. claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
  139. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
  140. claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
  141. claude_mpm/dashboard/static/dist/dashboard.js +2 -0
  142. claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  143. claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
  144. claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
  145. claude_mpm/dashboard/static/js/components/event-viewer.js +93 -72
  146. claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
  147. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +110 -96
  148. claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
  149. claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
  150. claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
  151. claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
  152. claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
  153. claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
  154. claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
  155. claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
  156. claude_mpm/dashboard/static/js/dashboard.js +178 -453
  157. claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
  158. claude_mpm/dashboard/static/js/socket-client.js +133 -53
  159. claude_mpm/dashboard/templates/index.html +40 -50
  160. claude_mpm/experimental/cli_enhancements.py +60 -58
  161. claude_mpm/generators/__init__.py +1 -1
  162. claude_mpm/generators/agent_profile_generator.py +75 -65
  163. claude_mpm/hooks/__init__.py +1 -1
  164. claude_mpm/hooks/base_hook.py +33 -28
  165. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  166. claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
  167. claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
  168. claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
  169. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
  170. claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
  171. claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
  172. claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
  173. claude_mpm/hooks/memory_integration_hook.py +140 -100
  174. claude_mpm/hooks/tool_call_interceptor.py +89 -76
  175. claude_mpm/hooks/validation_hooks.py +57 -49
  176. claude_mpm/init.py +145 -121
  177. claude_mpm/models/__init__.py +9 -9
  178. claude_mpm/models/agent_definition.py +33 -23
  179. claude_mpm/models/agent_session.py +228 -200
  180. claude_mpm/scripts/__init__.py +1 -1
  181. claude_mpm/scripts/socketio_daemon.py +192 -75
  182. claude_mpm/scripts/socketio_server_manager.py +328 -0
  183. claude_mpm/scripts/start_activity_logging.py +25 -22
  184. claude_mpm/services/__init__.py +68 -43
  185. claude_mpm/services/agent_capabilities_service.py +271 -0
  186. claude_mpm/services/agents/__init__.py +23 -32
  187. claude_mpm/services/agents/deployment/__init__.py +3 -3
  188. claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
  189. claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
  190. claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
  191. claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
  192. claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
  193. claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
  194. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
  195. claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
  196. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
  197. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
  198. claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
  199. claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
  200. claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
  201. claude_mpm/services/agents/deployment/agent_validator.py +352 -0
  202. claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
  203. claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
  204. claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
  205. claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
  206. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  207. claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
  208. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  209. claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
  210. claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
  211. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  212. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  213. claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
  214. claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
  215. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  216. claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
  217. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  218. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  219. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  220. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  221. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
  222. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  223. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  224. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
  225. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
  226. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
  227. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
  228. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
  229. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  230. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
  231. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  232. claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
  233. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
  234. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  235. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  236. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  237. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  238. claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
  239. claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
  240. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  241. claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
  242. claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
  243. claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
  244. claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
  245. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  246. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  247. claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
  248. claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
  249. claude_mpm/services/agents/loading/__init__.py +2 -2
  250. claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
  251. claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
  252. claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
  253. claude_mpm/services/agents/management/__init__.py +2 -2
  254. claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
  255. claude_mpm/services/agents/management/agent_management_service.py +209 -156
  256. claude_mpm/services/agents/memory/__init__.py +9 -6
  257. claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
  258. claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
  259. claude_mpm/services/agents/memory/analyzer.py +430 -0
  260. claude_mpm/services/agents/memory/content_manager.py +376 -0
  261. claude_mpm/services/agents/memory/template_generator.py +468 -0
  262. claude_mpm/services/agents/registry/__init__.py +7 -10
  263. claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
  264. claude_mpm/services/agents/registry/modification_tracker.py +351 -285
  265. claude_mpm/services/async_session_logger.py +187 -153
  266. claude_mpm/services/claude_session_logger.py +87 -72
  267. claude_mpm/services/command_handler_service.py +217 -0
  268. claude_mpm/services/communication/__init__.py +3 -2
  269. claude_mpm/services/core/__init__.py +50 -97
  270. claude_mpm/services/core/base.py +60 -53
  271. claude_mpm/services/core/interfaces/__init__.py +188 -0
  272. claude_mpm/services/core/interfaces/agent.py +351 -0
  273. claude_mpm/services/core/interfaces/communication.py +343 -0
  274. claude_mpm/services/core/interfaces/infrastructure.py +413 -0
  275. claude_mpm/services/core/interfaces/service.py +434 -0
  276. claude_mpm/services/core/interfaces.py +19 -944
  277. claude_mpm/services/event_aggregator.py +208 -170
  278. claude_mpm/services/exceptions.py +387 -308
  279. claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
  280. claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
  281. claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
  282. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
  283. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
  284. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
  285. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
  286. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
  287. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  288. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  289. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  290. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  291. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
  292. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  293. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  294. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
  295. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
  296. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  297. claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
  298. claude_mpm/services/hook_service.py +106 -114
  299. claude_mpm/services/infrastructure/__init__.py +7 -5
  300. claude_mpm/services/infrastructure/context_preservation.py +233 -199
  301. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  302. claude_mpm/services/infrastructure/logging.py +83 -76
  303. claude_mpm/services/infrastructure/monitoring.py +547 -404
  304. claude_mpm/services/mcp_gateway/__init__.py +30 -13
  305. claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
  306. claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
  307. claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
  308. claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
  309. claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
  310. claude_mpm/services/mcp_gateway/core/base.py +80 -67
  311. claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
  312. claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
  313. claude_mpm/services/mcp_gateway/main.py +287 -137
  314. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  315. claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
  316. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  317. claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
  318. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
  319. claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
  320. claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
  321. claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
  322. claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
  323. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
  324. claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
  325. claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
  326. claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
  327. claude_mpm/services/memory/__init__.py +2 -2
  328. claude_mpm/services/memory/builder.py +451 -362
  329. claude_mpm/services/memory/cache/__init__.py +2 -2
  330. claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
  331. claude_mpm/services/memory/cache/simple_cache.py +107 -93
  332. claude_mpm/services/memory/indexed_memory.py +195 -193
  333. claude_mpm/services/memory/optimizer.py +267 -234
  334. claude_mpm/services/memory/router.py +571 -263
  335. claude_mpm/services/memory_hook_service.py +237 -0
  336. claude_mpm/services/port_manager.py +575 -0
  337. claude_mpm/services/project/__init__.py +3 -3
  338. claude_mpm/services/project/analyzer.py +451 -305
  339. claude_mpm/services/project/registry.py +262 -240
  340. claude_mpm/services/recovery_manager.py +287 -231
  341. claude_mpm/services/response_tracker.py +87 -67
  342. claude_mpm/services/runner_configuration_service.py +587 -0
  343. claude_mpm/services/session_management_service.py +304 -0
  344. claude_mpm/services/socketio/__init__.py +4 -4
  345. claude_mpm/services/socketio/client_proxy.py +174 -0
  346. claude_mpm/services/socketio/handlers/__init__.py +3 -3
  347. claude_mpm/services/socketio/handlers/base.py +44 -30
  348. claude_mpm/services/socketio/handlers/connection.py +166 -64
  349. claude_mpm/services/socketio/handlers/file.py +123 -108
  350. claude_mpm/services/socketio/handlers/git.py +607 -373
  351. claude_mpm/services/socketio/handlers/hook.py +185 -0
  352. claude_mpm/services/socketio/handlers/memory.py +4 -4
  353. claude_mpm/services/socketio/handlers/project.py +4 -4
  354. claude_mpm/services/socketio/handlers/registry.py +53 -38
  355. claude_mpm/services/socketio/server/__init__.py +18 -0
  356. claude_mpm/services/socketio/server/broadcaster.py +252 -0
  357. claude_mpm/services/socketio/server/core.py +399 -0
  358. claude_mpm/services/socketio/server/main.py +323 -0
  359. claude_mpm/services/socketio_client_manager.py +160 -133
  360. claude_mpm/services/socketio_server.py +36 -1885
  361. claude_mpm/services/subprocess_launcher_service.py +316 -0
  362. claude_mpm/services/system_instructions_service.py +258 -0
  363. claude_mpm/services/ticket_manager.py +19 -533
  364. claude_mpm/services/utility_service.py +285 -0
  365. claude_mpm/services/version_control/__init__.py +18 -21
  366. claude_mpm/services/version_control/branch_strategy.py +20 -10
  367. claude_mpm/services/version_control/conflict_resolution.py +37 -13
  368. claude_mpm/services/version_control/git_operations.py +52 -21
  369. claude_mpm/services/version_control/semantic_versioning.py +92 -53
  370. claude_mpm/services/version_control/version_parser.py +145 -125
  371. claude_mpm/services/version_service.py +270 -0
  372. claude_mpm/storage/__init__.py +2 -2
  373. claude_mpm/storage/state_storage.py +177 -181
  374. claude_mpm/ticket_wrapper.py +2 -2
  375. claude_mpm/utils/__init__.py +2 -2
  376. claude_mpm/utils/agent_dependency_loader.py +453 -243
  377. claude_mpm/utils/config_manager.py +157 -118
  378. claude_mpm/utils/console.py +1 -1
  379. claude_mpm/utils/dependency_cache.py +102 -107
  380. claude_mpm/utils/dependency_manager.py +52 -47
  381. claude_mpm/utils/dependency_strategies.py +131 -96
  382. claude_mpm/utils/environment_context.py +110 -102
  383. claude_mpm/utils/error_handler.py +75 -55
  384. claude_mpm/utils/file_utils.py +80 -67
  385. claude_mpm/utils/framework_detection.py +12 -11
  386. claude_mpm/utils/import_migration_example.py +12 -60
  387. claude_mpm/utils/imports.py +48 -45
  388. claude_mpm/utils/path_operations.py +100 -93
  389. claude_mpm/utils/robust_installer.py +172 -164
  390. claude_mpm/utils/session_logging.py +30 -23
  391. claude_mpm/utils/subprocess_utils.py +99 -61
  392. claude_mpm/validation/__init__.py +1 -1
  393. claude_mpm/validation/agent_validator.py +151 -111
  394. claude_mpm/validation/frontmatter_validator.py +92 -71
  395. {claude_mpm-3.9.11.dist-info โ†’ claude_mpm-4.0.4.dist-info}/METADATA +90 -22
  396. claude_mpm-4.0.4.dist-info/RECORD +417 -0
  397. {claude_mpm-3.9.11.dist-info โ†’ claude_mpm-4.0.4.dist-info}/entry_points.txt +1 -0
  398. {claude_mpm-3.9.11.dist-info โ†’ claude_mpm-4.0.4.dist-info}/licenses/LICENSE +1 -1
  399. claude_mpm/cli/commands/run_guarded.py +0 -511
  400. claude_mpm/config/memory_guardian_config.py +0 -325
  401. claude_mpm/config/memory_guardian_yaml.py +0 -335
  402. claude_mpm/core/config_paths.py +0 -150
  403. claude_mpm/core/memory_aware_runner.py +0 -353
  404. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  405. claude_mpm/deployment_paths.py +0 -261
  406. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  407. claude_mpm/models/state_models.py +0 -433
  408. claude_mpm/services/agent/__init__.py +0 -24
  409. claude_mpm/services/agent/deployment.py +0 -2548
  410. claude_mpm/services/agent/management.py +0 -598
  411. claude_mpm/services/agent/registry.py +0 -813
  412. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  413. claude_mpm/services/communication/socketio.py +0 -1935
  414. claude_mpm/services/communication/websocket.py +0 -479
  415. claude_mpm/services/framework_claude_md_generator.py +0 -624
  416. claude_mpm/services/health_monitor.py +0 -893
  417. claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
  418. claude_mpm/services/infrastructure/health_monitor.py +0 -775
  419. claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
  420. claude_mpm/services/infrastructure/memory_guardian.py +0 -944
  421. claude_mpm/services/infrastructure/restart_protection.py +0 -642
  422. claude_mpm/services/infrastructure/state_manager.py +0 -774
  423. claude_mpm/services/mcp_gateway/manager.py +0 -334
  424. claude_mpm/services/optimized_hook_service.py +0 -542
  425. claude_mpm/services/project_analyzer.py +0 -864
  426. claude_mpm/services/project_registry.py +0 -608
  427. claude_mpm/services/standalone_socketio_server.py +0 -1300
  428. claude_mpm/services/ticket_manager_di.py +0 -318
  429. claude_mpm/services/ticketing_service_original.py +0 -510
  430. claude_mpm/utils/paths.py +0 -395
  431. claude_mpm/utils/platform_memory.py +0 -524
  432. claude_mpm-3.9.11.dist-info/RECORD +0 -306
  433. {claude_mpm-3.9.11.dist-info โ†’ claude_mpm-4.0.4.dist-info}/WHEEL +0 -0
  434. {claude_mpm-3.9.11.dist-info โ†’ claude_mpm-4.0.4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,139 @@
1
+ """MCP command router for CLI commands.
2
+
3
+ This module routes MCP commands to their appropriate handlers.
4
+ Extracted from mcp.py to reduce complexity and improve maintainability.
5
+ """
6
+
7
+ import asyncio
8
+ from typing import Any
9
+
10
+ from ...constants import MCPCommands
11
+
12
+
13
+ class MCPCommandRouter:
14
+ """Routes MCP commands to appropriate handlers."""
15
+
16
+ def __init__(self, logger):
17
+ """Initialize the command router."""
18
+ self.logger = logger
19
+
20
+ def route_command(self, args) -> int:
21
+ """Route command to appropriate handler."""
22
+ if args.mcp_command == MCPCommands.START.value:
23
+ return asyncio.run(self._start_server(args))
24
+
25
+ elif args.mcp_command == MCPCommands.STOP.value:
26
+ return self._stop_server(args)
27
+
28
+ elif args.mcp_command == MCPCommands.STATUS.value:
29
+ return self._show_status(args)
30
+
31
+ elif args.mcp_command == MCPCommands.TOOLS.value:
32
+ return self._manage_tools(args)
33
+
34
+ elif args.mcp_command == MCPCommands.REGISTER.value:
35
+ return self._register_tool(args)
36
+
37
+ elif args.mcp_command == MCPCommands.TEST.value:
38
+ return self._test_tool(args)
39
+
40
+ elif args.mcp_command == MCPCommands.INSTALL.value:
41
+ return self._install_gateway(args)
42
+
43
+ elif args.mcp_command == MCPCommands.CONFIG.value:
44
+ return self._manage_config(args)
45
+
46
+ elif args.mcp_command == "cleanup":
47
+ return self._cleanup_locks(args)
48
+
49
+ else:
50
+ self.logger.error(f"Unknown MCP command: {args.mcp_command}")
51
+ print(f"Unknown MCP command: {args.mcp_command}")
52
+ self._show_help()
53
+ return 1
54
+
55
+ async def _start_server(self, args) -> int:
56
+ """Start server command handler."""
57
+ from .mcp_server_commands import MCPServerCommands
58
+
59
+ handler = MCPServerCommands(self.logger)
60
+ return await handler.start_server(args)
61
+
62
+ def _stop_server(self, args) -> int:
63
+ """Stop server command handler."""
64
+ from .mcp_server_commands import MCPServerCommands
65
+
66
+ handler = MCPServerCommands(self.logger)
67
+ return handler.stop_server(args)
68
+
69
+ def _show_status(self, args) -> int:
70
+ """Show status command handler."""
71
+ from .mcp_server_commands import MCPServerCommands
72
+
73
+ handler = MCPServerCommands(self.logger)
74
+ return handler.show_status(args)
75
+
76
+ def _manage_tools(self, args) -> int:
77
+ """Manage tools command handler."""
78
+ from .mcp_tool_commands import MCPToolCommands
79
+
80
+ handler = MCPToolCommands(self.logger)
81
+ return handler.manage_tools(args)
82
+
83
+ def _register_tool(self, args) -> int:
84
+ """Register tool command handler."""
85
+ from .mcp_tool_commands import MCPToolCommands
86
+
87
+ handler = MCPToolCommands(self.logger)
88
+ return handler.register_tool(args)
89
+
90
+ def _test_tool(self, args) -> int:
91
+ """Test tool command handler."""
92
+ from .mcp_tool_commands import MCPToolCommands
93
+
94
+ handler = MCPToolCommands(self.logger)
95
+ return handler.test_tool(args)
96
+
97
+ def _install_gateway(self, args) -> int:
98
+ """Install gateway command handler."""
99
+ from .mcp_install_commands import MCPInstallCommands
100
+
101
+ handler = MCPInstallCommands(self.logger)
102
+ return handler.install_gateway(args)
103
+
104
+ def _manage_config(self, args) -> int:
105
+ """Manage config command handler."""
106
+ from .mcp_config_commands import MCPConfigCommands
107
+
108
+ handler = MCPConfigCommands(self.logger)
109
+ return handler.manage_config(args)
110
+
111
+ def _cleanup_locks(self, args) -> int:
112
+ """Cleanup locks command handler."""
113
+ from .mcp_server_commands import MCPServerCommands
114
+
115
+ handler = MCPServerCommands(self.logger)
116
+ return handler.cleanup_locks(args)
117
+
118
+ def _show_help(self):
119
+ """Show available MCP commands."""
120
+ print("\nAvailable MCP commands:")
121
+ print(" install - Install and configure MCP Gateway")
122
+ print(" start - Start the MCP Gateway server (stdio mode)")
123
+ print(" stop - Stop the MCP Gateway server")
124
+ print(" status - Show server and tool status")
125
+ print(" tools - List and manage registered tools")
126
+ print(" register - Register a new tool")
127
+ print(" test - Test tool invocation")
128
+ print(" config - View and manage configuration")
129
+ print(" cleanup - Clean up legacy files")
130
+ print("\nFor help with a specific command:")
131
+ print(" claude-mpm mcp <command> --help")
132
+ print("\nExamples:")
133
+ print(" claude-mpm mcp install")
134
+ print(" claude-mpm mcp start # Run server (for Claude Code)")
135
+ print(" claude-mpm mcp start --instructions # Show setup instructions")
136
+ print(" claude-mpm mcp start --test # Test mode with debug output")
137
+ print(" claude-mpm mcp tools")
138
+ print(" claude-mpm mcp register my-tool")
139
+ print(" claude-mpm mcp test my-tool")
@@ -0,0 +1,20 @@
1
+ """MCP config command implementations.
2
+
3
+ This module provides MCP configuration commands.
4
+ Extracted from mcp.py to reduce complexity and improve maintainability.
5
+ """
6
+
7
+
8
+ class MCPConfigCommands:
9
+ """Handles MCP config commands."""
10
+
11
+ def __init__(self, logger):
12
+ """Initialize the MCP config commands handler."""
13
+ self.logger = logger
14
+
15
+ def manage_config(self, args):
16
+ """Manage MCP configuration command."""
17
+ self.logger.info("MCP configuration management command called")
18
+ print("โš™๏ธ MCP configuration management functionality has been simplified")
19
+ print(" This command is now a placeholder - full implementation needed")
20
+ return 0
@@ -0,0 +1,20 @@
1
+ """MCP install command implementations.
2
+
3
+ This module provides MCP installation commands.
4
+ Extracted from mcp.py to reduce complexity and improve maintainability.
5
+ """
6
+
7
+
8
+ class MCPInstallCommands:
9
+ """Handles MCP install commands."""
10
+
11
+ def __init__(self, logger):
12
+ """Initialize the MCP install commands handler."""
13
+ self.logger = logger
14
+
15
+ def install_gateway(self, args):
16
+ """Install MCP gateway command."""
17
+ self.logger.info("MCP gateway installation command called")
18
+ print("๐Ÿ“ฆ MCP gateway installation functionality has been simplified")
19
+ print(" This command is now a placeholder - full implementation needed")
20
+ return 0
@@ -0,0 +1,175 @@
1
+ """MCP server command implementations.
2
+
3
+ This module provides MCP server management commands.
4
+ Extracted from mcp.py to reduce complexity and improve maintainability.
5
+ """
6
+
7
+ import asyncio
8
+ import subprocess
9
+ import sys
10
+ from pathlib import Path
11
+
12
+
13
+ class MCPServerCommands:
14
+ """Handles MCP server commands."""
15
+
16
+ def __init__(self, logger):
17
+ """Initialize the MCP server commands handler."""
18
+ self.logger = logger
19
+
20
+ async def start_server(self, args):
21
+ """Start MCP server command.
22
+
23
+ WHY: This command starts the MCP server using the proper stdio-based
24
+ implementation that Claude Code can communicate with.
25
+ NOTE: MCP is ONLY for Claude Code - NOT for Claude Desktop.
26
+
27
+ DESIGN DECISION: When called without flags, we run the server directly
28
+ for Claude Code compatibility. With --instructions flag, we show setup info.
29
+ """
30
+ self.logger.info("MCP server start command called")
31
+
32
+ # Check if we're being called by Claude Code (no special flags)
33
+ show_instructions = getattr(args, "instructions", False)
34
+ test_mode = getattr(args, "test", False)
35
+ daemon_mode = getattr(args, "daemon", False)
36
+
37
+ if daemon_mode:
38
+ # Daemon mode - not recommended for MCP
39
+ print("โš ๏ธ MCP servers are designed to be spawned by Claude Code")
40
+ print(" Running as a daemon is not recommended.")
41
+ print(" Note: MCP is ONLY for Claude Code, not Claude Desktop.")
42
+ return 1
43
+
44
+ if show_instructions:
45
+ # Show configuration instructions
46
+ print("๐Ÿš€ MCP Server Setup Instructions for Claude Code")
47
+ print("=" * 50)
48
+ print("\nโ„น๏ธ IMPORTANT: MCP is ONLY for Claude Code - NOT for Claude Desktop!")
49
+ print(" Claude Desktop uses a different system for agent deployment.")
50
+ print("\nThe MCP server is designed to be spawned by Claude Code.")
51
+ print("\nTo use the MCP server with Claude Code:")
52
+ print("\n1. Add this to your Claude Code configuration (~/.claude.json):")
53
+ print("\n{")
54
+ print(' "mcpServers": {')
55
+ print(' "claude-mpm": {')
56
+
57
+ # Find the correct binary path
58
+ bin_path = Path(sys.executable).parent / "claude-mpm-mcp"
59
+ if not bin_path.exists():
60
+ # Try to find it in the project bin directory
61
+ project_root = Path(__file__).parent.parent.parent.parent.parent
62
+ bin_path = project_root / "bin" / "claude-mpm-mcp"
63
+
64
+ if bin_path.exists():
65
+ print(f' "command": "{bin_path}"')
66
+ else:
67
+ print(' "command": "claude-mpm-mcp"')
68
+ print(" // Or use the full path if not in PATH:")
69
+ print(' // "command": "/path/to/claude-mpm/bin/claude-mpm-mcp"')
70
+
71
+ print(" }")
72
+ print(" }")
73
+ print("}")
74
+ print("\n2. Restart Claude Code to load the MCP server")
75
+ print("\n3. The server will be automatically started when needed")
76
+ print("\nOr use the registration script:")
77
+ print(" python scripts/register_mcp_gateway.py")
78
+ print("\nTo test the server directly, run:")
79
+ print(" claude-mpm mcp start --test")
80
+ print("\nFor more information, see:")
81
+ print(" https://github.com/anthropics/mcp")
82
+
83
+ return 0
84
+
85
+ # Default behavior: Run the server directly (for Claude Code compatibility)
86
+ # When Claude Code spawns "claude-mpm mcp start", it expects the server to run
87
+ if test_mode:
88
+ print("๐Ÿงช Starting MCP server in test mode...")
89
+ print(" This will run the server with stdio communication.")
90
+ print(" Press Ctrl+C to stop.\n")
91
+
92
+ try:
93
+ # Configure logging to stderr for MCP mode
94
+ import logging
95
+ import sys
96
+
97
+ # Disable all stdout logging when running MCP server
98
+ # to prevent interference with JSON-RPC protocol
99
+ root_logger = logging.getLogger()
100
+
101
+ # Remove any existing handlers that might log to stdout
102
+ for handler in root_logger.handlers[:]:
103
+ if hasattr(handler, "stream") and handler.stream == sys.stdout:
104
+ root_logger.removeHandler(handler)
105
+
106
+ # Add stderr handler if needed (but keep it minimal)
107
+ if not test_mode:
108
+ # In production mode, minimize stderr output too
109
+ logging.basicConfig(
110
+ level=logging.ERROR,
111
+ format="%(message)s",
112
+ stream=sys.stderr,
113
+ force=True,
114
+ )
115
+ else:
116
+ # In test mode, allow more verbose stderr logging
117
+ logging.basicConfig(
118
+ level=logging.INFO,
119
+ format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
120
+ stream=sys.stderr,
121
+ force=True,
122
+ )
123
+
124
+ # Import and run the stdio server directly
125
+ from ...services.mcp_gateway.server.stdio_server import SimpleMCPServer
126
+
127
+ server = SimpleMCPServer(name="claude-mpm-gateway", version="1.0.0")
128
+
129
+ # Run the server (handles stdio communication)
130
+ await server.run()
131
+ return 0
132
+
133
+ except ImportError as e:
134
+ self.logger.error(f"Failed to import MCP server: {e}")
135
+ # Don't print to stdout as it would interfere with JSON-RPC protocol
136
+ # Log to stderr instead
137
+ import sys
138
+
139
+ print(
140
+ f"โŒ Error: Could not import MCP server components: {e}", file=sys.stderr
141
+ )
142
+ print("\nMake sure the MCP package is installed:", file=sys.stderr)
143
+ print(" pip install mcp", file=sys.stderr)
144
+ return 1
145
+ except KeyboardInterrupt:
146
+ # Graceful shutdown
147
+ self.logger.info("MCP server interrupted")
148
+ return 0
149
+ except Exception as e:
150
+ self.logger.error(f"Server error: {e}")
151
+ import sys
152
+
153
+ print(f"โŒ Error running server: {e}", file=sys.stderr)
154
+ return 1
155
+
156
+ def stop_server(self, args):
157
+ """Stop MCP server command."""
158
+ self.logger.info("MCP server stop command called")
159
+ print("๐Ÿ›‘ MCP server stop functionality has been simplified")
160
+ print(" This command is now a placeholder - full implementation needed")
161
+ return 0
162
+
163
+ def show_status(self, args):
164
+ """Show MCP server status command."""
165
+ self.logger.info("MCP server status command called")
166
+ print("๐Ÿ“Š MCP server status functionality has been simplified")
167
+ print(" This command is now a placeholder - full implementation needed")
168
+ return 0
169
+
170
+ def cleanup_locks(self, args):
171
+ """Cleanup MCP server locks command."""
172
+ self.logger.info("MCP server cleanup locks command called")
173
+ print("๐Ÿงน MCP server cleanup locks functionality has been simplified")
174
+ print(" This command is now a placeholder - full implementation needed")
175
+ return 0
@@ -0,0 +1,34 @@
1
+ """MCP tool command implementations.
2
+
3
+ This module provides MCP tool management commands.
4
+ Extracted from mcp.py to reduce complexity and improve maintainability.
5
+ """
6
+
7
+
8
+ class MCPToolCommands:
9
+ """Handles MCP tool commands."""
10
+
11
+ def __init__(self, logger):
12
+ """Initialize the MCP tool commands handler."""
13
+ self.logger = logger
14
+
15
+ def manage_tools(self, args):
16
+ """Manage MCP tools command."""
17
+ self.logger.info("MCP tools management command called")
18
+ print("๐Ÿ”ง MCP tools management functionality has been simplified")
19
+ print(" This command is now a placeholder - full implementation needed")
20
+ return 0
21
+
22
+ def register_tool(self, args):
23
+ """Register MCP tool command."""
24
+ self.logger.info("MCP tool registration command called")
25
+ print("๐Ÿ“ MCP tool registration functionality has been simplified")
26
+ print(" This command is now a placeholder - full implementation needed")
27
+ return 0
28
+
29
+ def test_tool(self, args):
30
+ """Test MCP tool command."""
31
+ self.logger.info("MCP tool testing command called")
32
+ print("๐Ÿงช MCP tool testing functionality has been simplified")
33
+ print(" This command is now a placeholder - full implementation needed")
34
+ return 0