claude-mpm 3.9.11__py3-none-any.whl → 4.0.3__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 (419) 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 +1 -1
  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 +203 -81
  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 +305 -197
  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 +104 -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/css/dashboard.css +27 -8
  113. claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
  114. claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
  115. claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
  116. claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
  117. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
  118. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
  119. claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
  120. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
  121. claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  122. claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
  123. claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
  124. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
  125. claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
  126. claude_mpm/dashboard/static/dist/dashboard.js +2 -0
  127. claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  128. claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
  129. claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
  130. claude_mpm/dashboard/static/js/components/event-viewer.js +74 -70
  131. claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
  132. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +106 -92
  133. claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
  134. claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
  135. claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
  136. claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
  137. claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
  138. claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
  139. claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
  140. claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
  141. claude_mpm/dashboard/static/js/dashboard.js +178 -453
  142. claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
  143. claude_mpm/dashboard/static/js/socket-client.js +120 -54
  144. claude_mpm/dashboard/templates/index.html +40 -50
  145. claude_mpm/experimental/cli_enhancements.py +60 -58
  146. claude_mpm/generators/__init__.py +1 -1
  147. claude_mpm/generators/agent_profile_generator.py +75 -65
  148. claude_mpm/hooks/__init__.py +1 -1
  149. claude_mpm/hooks/base_hook.py +33 -28
  150. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  151. claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
  152. claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
  153. claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
  154. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
  155. claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
  156. claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
  157. claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
  158. claude_mpm/hooks/memory_integration_hook.py +140 -100
  159. claude_mpm/hooks/tool_call_interceptor.py +89 -76
  160. claude_mpm/hooks/validation_hooks.py +57 -49
  161. claude_mpm/init.py +145 -121
  162. claude_mpm/models/__init__.py +9 -9
  163. claude_mpm/models/agent_definition.py +33 -23
  164. claude_mpm/models/agent_session.py +228 -200
  165. claude_mpm/scripts/__init__.py +1 -1
  166. claude_mpm/scripts/socketio_daemon.py +192 -75
  167. claude_mpm/scripts/socketio_server_manager.py +328 -0
  168. claude_mpm/scripts/start_activity_logging.py +25 -22
  169. claude_mpm/services/__init__.py +68 -43
  170. claude_mpm/services/agent_capabilities_service.py +271 -0
  171. claude_mpm/services/agents/__init__.py +23 -32
  172. claude_mpm/services/agents/deployment/__init__.py +3 -3
  173. claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
  174. claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
  175. claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
  176. claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
  177. claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
  178. claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
  179. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
  180. claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
  181. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
  182. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
  183. claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
  184. claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
  185. claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
  186. claude_mpm/services/agents/deployment/agent_validator.py +352 -0
  187. claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
  188. claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
  189. claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
  190. claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
  191. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  192. claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
  193. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  194. claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
  195. claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
  196. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  197. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  198. claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
  199. claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
  200. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  201. claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
  202. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  203. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  204. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  205. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  206. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
  207. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  208. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  209. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
  210. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
  211. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
  212. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
  213. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
  214. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  215. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
  216. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  217. claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
  218. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
  219. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  220. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  221. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  222. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  223. claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
  224. claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
  225. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  226. claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
  227. claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
  228. claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
  229. claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
  230. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  231. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  232. claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
  233. claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
  234. claude_mpm/services/agents/loading/__init__.py +2 -2
  235. claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
  236. claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
  237. claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
  238. claude_mpm/services/agents/management/__init__.py +2 -2
  239. claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
  240. claude_mpm/services/agents/management/agent_management_service.py +209 -156
  241. claude_mpm/services/agents/memory/__init__.py +9 -6
  242. claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
  243. claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
  244. claude_mpm/services/agents/memory/analyzer.py +430 -0
  245. claude_mpm/services/agents/memory/content_manager.py +376 -0
  246. claude_mpm/services/agents/memory/template_generator.py +468 -0
  247. claude_mpm/services/agents/registry/__init__.py +7 -10
  248. claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
  249. claude_mpm/services/agents/registry/modification_tracker.py +351 -285
  250. claude_mpm/services/async_session_logger.py +187 -153
  251. claude_mpm/services/claude_session_logger.py +87 -72
  252. claude_mpm/services/command_handler_service.py +217 -0
  253. claude_mpm/services/communication/__init__.py +3 -2
  254. claude_mpm/services/core/__init__.py +50 -97
  255. claude_mpm/services/core/base.py +60 -53
  256. claude_mpm/services/core/interfaces/__init__.py +188 -0
  257. claude_mpm/services/core/interfaces/agent.py +351 -0
  258. claude_mpm/services/core/interfaces/communication.py +343 -0
  259. claude_mpm/services/core/interfaces/infrastructure.py +413 -0
  260. claude_mpm/services/core/interfaces/service.py +434 -0
  261. claude_mpm/services/core/interfaces.py +19 -944
  262. claude_mpm/services/event_aggregator.py +208 -170
  263. claude_mpm/services/exceptions.py +387 -308
  264. claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
  265. claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
  266. claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
  267. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
  268. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
  269. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
  270. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
  271. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
  272. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  273. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  274. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  275. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  276. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
  277. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  278. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  279. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
  280. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
  281. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  282. claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
  283. claude_mpm/services/hook_service.py +106 -114
  284. claude_mpm/services/infrastructure/__init__.py +7 -5
  285. claude_mpm/services/infrastructure/context_preservation.py +233 -199
  286. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  287. claude_mpm/services/infrastructure/logging.py +83 -76
  288. claude_mpm/services/infrastructure/monitoring.py +547 -404
  289. claude_mpm/services/mcp_gateway/__init__.py +30 -13
  290. claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
  291. claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
  292. claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
  293. claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
  294. claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
  295. claude_mpm/services/mcp_gateway/core/base.py +80 -67
  296. claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
  297. claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
  298. claude_mpm/services/mcp_gateway/main.py +287 -137
  299. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  300. claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
  301. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  302. claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
  303. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
  304. claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
  305. claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
  306. claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
  307. claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
  308. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
  309. claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
  310. claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
  311. claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
  312. claude_mpm/services/memory/__init__.py +2 -2
  313. claude_mpm/services/memory/builder.py +451 -362
  314. claude_mpm/services/memory/cache/__init__.py +2 -2
  315. claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
  316. claude_mpm/services/memory/cache/simple_cache.py +107 -93
  317. claude_mpm/services/memory/indexed_memory.py +195 -193
  318. claude_mpm/services/memory/optimizer.py +267 -234
  319. claude_mpm/services/memory/router.py +571 -263
  320. claude_mpm/services/memory_hook_service.py +237 -0
  321. claude_mpm/services/port_manager.py +223 -0
  322. claude_mpm/services/project/__init__.py +3 -3
  323. claude_mpm/services/project/analyzer.py +451 -305
  324. claude_mpm/services/project/registry.py +262 -240
  325. claude_mpm/services/recovery_manager.py +287 -231
  326. claude_mpm/services/response_tracker.py +87 -67
  327. claude_mpm/services/runner_configuration_service.py +587 -0
  328. claude_mpm/services/session_management_service.py +304 -0
  329. claude_mpm/services/socketio/__init__.py +4 -4
  330. claude_mpm/services/socketio/client_proxy.py +174 -0
  331. claude_mpm/services/socketio/handlers/__init__.py +3 -3
  332. claude_mpm/services/socketio/handlers/base.py +44 -30
  333. claude_mpm/services/socketio/handlers/connection.py +145 -65
  334. claude_mpm/services/socketio/handlers/file.py +123 -108
  335. claude_mpm/services/socketio/handlers/git.py +607 -373
  336. claude_mpm/services/socketio/handlers/hook.py +170 -0
  337. claude_mpm/services/socketio/handlers/memory.py +4 -4
  338. claude_mpm/services/socketio/handlers/project.py +4 -4
  339. claude_mpm/services/socketio/handlers/registry.py +53 -38
  340. claude_mpm/services/socketio/server/__init__.py +18 -0
  341. claude_mpm/services/socketio/server/broadcaster.py +252 -0
  342. claude_mpm/services/socketio/server/core.py +399 -0
  343. claude_mpm/services/socketio/server/main.py +323 -0
  344. claude_mpm/services/socketio_client_manager.py +160 -133
  345. claude_mpm/services/socketio_server.py +36 -1885
  346. claude_mpm/services/subprocess_launcher_service.py +316 -0
  347. claude_mpm/services/system_instructions_service.py +258 -0
  348. claude_mpm/services/ticket_manager.py +19 -533
  349. claude_mpm/services/utility_service.py +285 -0
  350. claude_mpm/services/version_control/__init__.py +18 -21
  351. claude_mpm/services/version_control/branch_strategy.py +20 -10
  352. claude_mpm/services/version_control/conflict_resolution.py +37 -13
  353. claude_mpm/services/version_control/git_operations.py +52 -21
  354. claude_mpm/services/version_control/semantic_versioning.py +92 -53
  355. claude_mpm/services/version_control/version_parser.py +145 -125
  356. claude_mpm/services/version_service.py +270 -0
  357. claude_mpm/storage/__init__.py +2 -2
  358. claude_mpm/storage/state_storage.py +177 -181
  359. claude_mpm/ticket_wrapper.py +2 -2
  360. claude_mpm/utils/__init__.py +2 -2
  361. claude_mpm/utils/agent_dependency_loader.py +453 -243
  362. claude_mpm/utils/config_manager.py +157 -118
  363. claude_mpm/utils/console.py +1 -1
  364. claude_mpm/utils/dependency_cache.py +102 -107
  365. claude_mpm/utils/dependency_manager.py +52 -47
  366. claude_mpm/utils/dependency_strategies.py +131 -96
  367. claude_mpm/utils/environment_context.py +110 -102
  368. claude_mpm/utils/error_handler.py +75 -55
  369. claude_mpm/utils/file_utils.py +80 -67
  370. claude_mpm/utils/framework_detection.py +12 -11
  371. claude_mpm/utils/import_migration_example.py +12 -60
  372. claude_mpm/utils/imports.py +48 -45
  373. claude_mpm/utils/path_operations.py +100 -93
  374. claude_mpm/utils/robust_installer.py +172 -164
  375. claude_mpm/utils/session_logging.py +30 -23
  376. claude_mpm/utils/subprocess_utils.py +99 -61
  377. claude_mpm/validation/__init__.py +1 -1
  378. claude_mpm/validation/agent_validator.py +151 -111
  379. claude_mpm/validation/frontmatter_validator.py +92 -71
  380. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/METADATA +27 -1
  381. claude_mpm-4.0.3.dist-info/RECORD +402 -0
  382. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/entry_points.txt +1 -0
  383. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/licenses/LICENSE +1 -1
  384. claude_mpm/cli/commands/run_guarded.py +0 -511
  385. claude_mpm/config/memory_guardian_config.py +0 -325
  386. claude_mpm/config/memory_guardian_yaml.py +0 -335
  387. claude_mpm/core/config_paths.py +0 -150
  388. claude_mpm/core/memory_aware_runner.py +0 -353
  389. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  390. claude_mpm/deployment_paths.py +0 -261
  391. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  392. claude_mpm/models/state_models.py +0 -433
  393. claude_mpm/services/agent/__init__.py +0 -24
  394. claude_mpm/services/agent/deployment.py +0 -2548
  395. claude_mpm/services/agent/management.py +0 -598
  396. claude_mpm/services/agent/registry.py +0 -813
  397. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  398. claude_mpm/services/communication/socketio.py +0 -1935
  399. claude_mpm/services/communication/websocket.py +0 -479
  400. claude_mpm/services/framework_claude_md_generator.py +0 -624
  401. claude_mpm/services/health_monitor.py +0 -893
  402. claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
  403. claude_mpm/services/infrastructure/health_monitor.py +0 -775
  404. claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
  405. claude_mpm/services/infrastructure/memory_guardian.py +0 -944
  406. claude_mpm/services/infrastructure/restart_protection.py +0 -642
  407. claude_mpm/services/infrastructure/state_manager.py +0 -774
  408. claude_mpm/services/mcp_gateway/manager.py +0 -334
  409. claude_mpm/services/optimized_hook_service.py +0 -542
  410. claude_mpm/services/project_analyzer.py +0 -864
  411. claude_mpm/services/project_registry.py +0 -608
  412. claude_mpm/services/standalone_socketio_server.py +0 -1300
  413. claude_mpm/services/ticket_manager_di.py +0 -318
  414. claude_mpm/services/ticketing_service_original.py +0 -510
  415. claude_mpm/utils/paths.py +0 -395
  416. claude_mpm/utils/platform_memory.py +0 -524
  417. claude_mpm-3.9.11.dist-info/RECORD +0 -306
  418. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/WHEEL +0 -0
  419. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/top_level.txt +0 -0
@@ -8,18 +8,19 @@ establishing contracts for dependency injection and service orchestration.
8
8
  Part of ISS-0034: Infrastructure Setup - MCP Gateway Project Foundation
9
9
  """
10
10
 
11
+ import asyncio
11
12
  from abc import ABC, abstractmethod
12
- from typing import Any, Dict, List, Optional, Callable, Union
13
13
  from dataclasses import dataclass
14
14
  from datetime import datetime
15
15
  from pathlib import Path
16
- import asyncio
16
+ from typing import Any, Callable, Dict, List, Optional, Union
17
17
 
18
18
 
19
19
  # Tool-related data structures
20
20
  @dataclass
21
21
  class MCPToolDefinition:
22
22
  """Definition of an MCP tool."""
23
+
23
24
  name: str
24
25
  description: str
25
26
  input_schema: Dict[str, Any]
@@ -31,6 +32,7 @@ class MCPToolDefinition:
31
32
  @dataclass
32
33
  class MCPToolInvocation:
33
34
  """Represents a tool invocation request."""
35
+
34
36
  tool_name: str
35
37
  parameters: Dict[str, Any]
36
38
  context: Optional[Dict[str, Any]] = None
@@ -41,6 +43,7 @@ class MCPToolInvocation:
41
43
  @dataclass
42
44
  class MCPToolResult:
43
45
  """Result from a tool invocation."""
46
+
44
47
  success: bool
45
48
  data: Optional[Any] = None
46
49
  error: Optional[str] = None
@@ -52,73 +55,73 @@ class MCPToolResult:
52
55
  class IMCPConfiguration(ABC):
53
56
  """
54
57
  Interface for MCP configuration management.
55
-
58
+
56
59
  Handles loading, validation, and access to MCP Gateway configuration.
57
60
  """
58
-
61
+
59
62
  @abstractmethod
60
63
  def load_config(self, config_path: Path) -> bool:
61
64
  """
62
65
  Load configuration from a file.
63
-
66
+
64
67
  Args:
65
68
  config_path: Path to configuration file
66
-
69
+
67
70
  Returns:
68
71
  True if configuration loaded successfully
69
72
  """
70
73
  pass
71
-
74
+
72
75
  @abstractmethod
73
76
  def get(self, key: str, default: Any = None) -> Any:
74
77
  """
75
78
  Get configuration value by key.
76
-
79
+
77
80
  Args:
78
81
  key: Configuration key (supports dot notation)
79
82
  default: Default value if key not found
80
-
83
+
81
84
  Returns:
82
85
  Configuration value or default
83
86
  """
84
87
  pass
85
-
88
+
86
89
  @abstractmethod
87
90
  def set(self, key: str, value: Any) -> None:
88
91
  """
89
92
  Set configuration value.
90
-
93
+
91
94
  Args:
92
95
  key: Configuration key (supports dot notation)
93
96
  value: Configuration value
94
97
  """
95
98
  pass
96
-
99
+
97
100
  @abstractmethod
98
101
  def validate(self) -> bool:
99
102
  """
100
103
  Validate the current configuration.
101
-
104
+
102
105
  Returns:
103
106
  True if configuration is valid
104
107
  """
105
108
  pass
106
-
109
+
107
110
  @abstractmethod
108
111
  def get_server_config(self) -> Dict[str, Any]:
109
112
  """
110
113
  Get MCP server configuration.
111
-
114
+
112
115
  Returns:
113
116
  Server configuration dictionary
114
117
  """
115
118
  pass
116
-
119
+
117
120
  @abstractmethod
118
121
  def get_tools_config(self) -> Dict[str, Any]:
119
122
  """
120
123
  Get tools configuration.
121
-
124
+
122
125
  Returns:
123
126
  Tools configuration dictionary
124
127
  """
@@ -128,56 +131,56 @@ class IMCPConfiguration(ABC):
128
131
  class IMCPToolAdapter(ABC):
129
132
  """
130
133
  Interface for MCP tool adapters.
131
-
134
+
132
135
  Tool adapters wrap external tools to make them MCP-compatible.
133
136
  """
134
-
137
+
135
138
  @abstractmethod
136
139
  def get_definition(self) -> MCPToolDefinition:
137
140
  """
138
141
  Get the tool definition.
139
-
142
+
140
143
  Returns:
141
144
  Tool definition with schema and metadata
142
145
  """
143
146
  pass
144
-
147
+
145
148
  @abstractmethod
146
149
  async def invoke(self, invocation: MCPToolInvocation) -> MCPToolResult:
147
150
  """
148
151
  Invoke the tool with given parameters.
149
-
152
+
150
153
  Args:
151
154
  invocation: Tool invocation request
152
-
155
+
153
156
  Returns:
154
157
  Tool execution result
155
158
  """
156
159
  pass
157
-
160
+
158
161
  @abstractmethod
159
162
  def validate_parameters(self, parameters: Dict[str, Any]) -> bool:
160
163
  """
161
164
  Validate tool parameters against schema.
162
-
165
+
163
166
  Args:
164
167
  parameters: Parameters to validate
165
-
168
+
166
169
  Returns:
167
170
  True if parameters are valid
168
171
  """
169
172
  pass
170
-
173
+
171
174
  @abstractmethod
172
175
  async def initialize(self) -> bool:
173
176
  """
174
177
  Initialize the tool adapter.
175
-
178
+
176
179
  Returns:
177
180
  True if initialization successful
178
181
  """
179
182
  pass
180
-
183
+
181
184
  @abstractmethod
182
185
  async def shutdown(self) -> None:
183
186
  """
@@ -189,80 +192,80 @@ class IMCPToolAdapter(ABC):
189
192
  class IMCPToolRegistry(ABC):
190
193
  """
191
194
  Interface for MCP tool registry.
192
-
195
+
193
196
  Manages registration, discovery, and invocation of MCP tools.
194
197
  """
195
-
198
+
196
199
  @abstractmethod
197
200
  def register_tool(self, adapter: IMCPToolAdapter) -> bool:
198
201
  """
199
202
  Register a tool adapter.
200
-
203
+
201
204
  Args:
202
205
  adapter: Tool adapter to register
203
-
206
+
204
207
  Returns:
205
208
  True if registration successful
206
209
  """
207
210
  pass
208
-
211
+
209
212
  @abstractmethod
210
213
  def unregister_tool(self, tool_name: str) -> bool:
211
214
  """
212
215
  Unregister a tool by name.
213
-
216
+
214
217
  Args:
215
218
  tool_name: Name of tool to unregister
216
-
219
+
217
220
  Returns:
218
221
  True if unregistration successful
219
222
  """
220
223
  pass
221
-
224
+
222
225
  @abstractmethod
223
226
  def get_tool(self, tool_name: str) -> Optional[IMCPToolAdapter]:
224
227
  """
225
228
  Get a tool adapter by name.
226
-
229
+
227
230
  Args:
228
231
  tool_name: Name of the tool
229
-
232
+
230
233
  Returns:
231
234
  Tool adapter if found, None otherwise
232
235
  """
233
236
  pass
234
-
237
+
235
238
  @abstractmethod
236
239
  def list_tools(self) -> List[MCPToolDefinition]:
237
240
  """
238
241
  List all registered tools.
239
-
242
+
240
243
  Returns:
241
244
  List of tool definitions
242
245
  """
243
246
  pass
244
-
247
+
245
248
  @abstractmethod
246
249
  async def invoke_tool(self, invocation: MCPToolInvocation) -> MCPToolResult:
247
250
  """
248
251
  Invoke a tool through the registry.
249
-
252
+
250
253
  Args:
251
254
  invocation: Tool invocation request
252
-
255
+
253
256
  Returns:
254
257
  Tool execution result
255
258
  """
256
259
  pass
257
-
260
+
258
261
  @abstractmethod
259
262
  def search_tools(self, query: str) -> List[MCPToolDefinition]:
260
263
  """
261
264
  Search for tools by query.
262
-
265
+
263
266
  Args:
264
267
  query: Search query
265
-
268
+
266
269
  Returns:
267
270
  List of matching tool definitions
268
271
  """
@@ -272,58 +275,58 @@ class IMCPToolRegistry(ABC):
272
275
  class IMCPCommunication(ABC):
273
276
  """
274
277
  Interface for MCP communication handling.
275
-
278
+
276
279
  Manages stdio-based communication with MCP clients.
277
280
  """
278
-
281
+
279
282
  @abstractmethod
280
283
  async def send_message(self, message: Dict[str, Any]) -> None:
281
284
  """
282
285
  Send a message to the MCP client.
283
-
286
+
284
287
  Args:
285
288
  message: Message to send
286
289
  """
287
290
  pass
288
-
291
+
289
292
  @abstractmethod
290
293
  async def receive_message(self) -> Optional[Dict[str, Any]]:
291
294
  """
292
295
  Receive a message from the MCP client.
293
-
296
+
294
297
  Returns:
295
298
  Received message or None if no message available
296
299
  """
297
300
  pass
298
-
301
+
299
302
  @abstractmethod
300
303
  async def send_response(self, request_id: str, result: Any) -> None:
301
304
  """
302
305
  Send a response to a request.
303
-
306
+
304
307
  Args:
305
308
  request_id: ID of the request being responded to
306
309
  result: Result data
307
310
  """
308
311
  pass
309
-
312
+
310
313
  @abstractmethod
311
314
  async def send_error(self, request_id: str, error: str, code: int = -1) -> None:
312
315
  """
313
316
  Send an error response.
314
-
317
+
315
318
  Args:
316
319
  request_id: ID of the request that caused the error
317
320
  error: Error message
318
321
  code: Error code
319
322
  """
320
323
  pass
321
-
324
+
322
325
  @abstractmethod
323
326
  def is_connected(self) -> bool:
324
327
  """
325
328
  Check if communication channel is connected.
326
-
329
+
327
330
  Returns:
328
331
  True if connected
329
332
  """
@@ -333,72 +336,72 @@ class IMCPCommunication(ABC):
333
336
  class IMCPLifecycle(ABC):
334
337
  """
335
338
  Interface for MCP service lifecycle management.
336
-
339
+
337
340
  Manages initialization, startup, shutdown, and health monitoring.
338
341
  """
339
-
342
+
340
343
  @abstractmethod
341
344
  async def initialize(self) -> bool:
342
345
  """
343
346
  Initialize the MCP service.
344
-
347
+
345
348
  Returns:
346
349
  True if initialization successful
347
350
  """
348
351
  pass
349
-
352
+
350
353
  @abstractmethod
351
354
  async def start(self) -> bool:
352
355
  """
353
356
  Start the MCP service.
354
-
357
+
355
358
  Returns:
356
359
  True if startup successful
357
360
  """
358
361
  pass
359
-
362
+
360
363
  @abstractmethod
361
364
  async def stop(self) -> None:
362
365
  """
363
366
  Stop the MCP service gracefully.
364
367
  """
365
368
  pass
366
-
369
+
367
370
  @abstractmethod
368
371
  async def restart(self) -> bool:
369
372
  """
370
373
  Restart the MCP service.
371
-
374
+
372
375
  Returns:
373
376
  True if restart successful
374
377
  """
375
378
  pass
376
-
379
+
377
380
  @abstractmethod
378
381
  def get_state(self) -> str:
379
382
  """
380
383
  Get current service state.
381
-
384
+
382
385
  Returns:
383
386
  Service state (e.g., "initialized", "running", "stopped")
384
387
  """
385
388
  pass
386
-
389
+
387
390
  @abstractmethod
388
391
  def is_healthy(self) -> bool:
389
392
  """
390
393
  Check if service is healthy.
391
-
394
+
392
395
  Returns:
393
396
  True if service is healthy
394
397
  """
395
398
  pass
396
-
399
+
397
400
  @abstractmethod
398
401
  def get_health_status(self) -> Dict[str, Any]:
399
402
  """
400
403
  Get detailed health status.
401
-
404
+
402
405
  Returns:
403
406
  Health status information
404
407
  """
@@ -412,40 +415,40 @@ class IMCPGateway(IMCPLifecycle):
412
415
  Orchestrates tool registry, communication, and request handling.
413
416
  Acts as a protocol bridge between Claude Desktop and internal tools.
414
417
  """
415
-
418
+
416
419
  @abstractmethod
417
420
  def set_tool_registry(self, registry: IMCPToolRegistry) -> None:
418
421
  """
419
422
  Set the tool registry for the server.
420
-
423
+
421
424
  Args:
422
425
  registry: Tool registry to use
423
426
  """
424
427
  pass
425
-
428
+
426
429
  @abstractmethod
427
430
  def set_communication(self, communication: IMCPCommunication) -> None:
428
431
  """
429
432
  Set the communication handler.
430
-
433
+
431
434
  Args:
432
435
  communication: Communication handler to use
433
436
  """
434
437
  pass
435
-
438
+
436
439
  @abstractmethod
437
440
  async def handle_request(self, request: Dict[str, Any]) -> Dict[str, Any]:
438
441
  """
439
442
  Handle an MCP request.
440
-
443
+
441
444
  Args:
442
445
  request: MCP request message
443
-
446
+
444
447
  Returns:
445
448
  Response message
446
449
  """
447
450
  pass
448
-
451
+
449
452
  @abstractmethod
450
453
  async def run(self) -> None:
451
454
  """
@@ -454,18 +457,18 @@ class IMCPGateway(IMCPLifecycle):
454
457
  This method should handle incoming requests and manage the gateway lifecycle.
455
458
  """
456
459
  pass
457
-
460
+
458
461
  @abstractmethod
459
462
  def register_handler(self, method: str, handler: Callable) -> None:
460
463
  """
461
464
  Register a custom request handler.
462
-
465
+
463
466
  Args:
464
467
  method: Method name to handle
465
468
  handler: Handler function
466
469
  """
467
470
  pass
468
-
471
+
469
472
  @abstractmethod
470
473
  def get_capabilities(self) -> Dict[str, Any]:
471
474
  """
@@ -474,4 +477,4 @@ class IMCPGateway(IMCPLifecycle):
474
477
  Returns:
475
478
  Dictionary of gateway capabilities
476
479
  """
477
- pass
480
+ pass