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
@@ -1,317 +1,203 @@
1
1
  """
2
2
  Centralized path management for claude-mpm.
3
3
 
4
+ This module provides the primary interface for path management operations.
5
+ All functionality has been consolidated into the unified path management system.
6
+
4
7
  This module provides a consistent, reliable way to access project paths
5
8
  without fragile parent.parent.parent patterns.
6
9
  """
7
10
 
8
- import os
11
+ import logging
9
12
  import sys
10
13
  from pathlib import Path
11
14
  from typing import Optional, Union
12
- from functools import cached_property
13
- import logging
15
+
16
+ # Import from the unified path management system
17
+ from ..core.unified_paths import get_path_manager
14
18
 
15
19
  logger = logging.getLogger(__name__)
16
20
 
17
21
 
18
22
  class ClaudeMPMPaths:
19
23
  """
20
- Centralized path management for the claude-mpm project.
21
-
22
- This class provides a singleton instance with properties for all common paths
23
- in the project, eliminating the need for fragile Path(__file__).parent.parent patterns.
24
-
24
+ Primary interface for the unified path management system.
25
+
26
+ This class provides access to all path operations through the UnifiedPathManager.
27
+
25
28
  Usage:
26
29
  from claude_mpm.config.paths import paths
27
-
30
+
28
31
  # Access common paths
29
32
  project_root = paths.project_root
30
33
  agents_dir = paths.agents_dir
31
34
  config_file = paths.config_dir / "some_config.yaml"
32
35
  """
33
-
34
- _instance: Optional['ClaudeMPMPaths'] = None
35
- _project_root: Optional[Path] = None
36
- _is_installed: bool = False
37
-
38
- def __new__(cls) -> 'ClaudeMPMPaths':
36
+
37
+ _instance: Optional["ClaudeMPMPaths"] = None
38
+ _path_manager = None
39
+
40
+ def __new__(cls) -> "ClaudeMPMPaths":
39
41
  """Singleton pattern to ensure single instance."""
40
42
  if cls._instance is None:
41
43
  cls._instance = super().__new__(cls)
42
44
  return cls._instance
43
-
45
+
44
46
  def __init__(self):
45
- """Initialize paths if not already done."""
46
- if self._project_root is None:
47
- self._is_installed = False
48
- self._detect_project_root()
49
-
50
- def _detect_project_root(self) -> None:
51
- """
52
- Detect the project root directory.
53
-
54
- Strategy:
55
- 1. Look for definitive project markers (pyproject.toml, setup.py)
56
- 2. Look for combination of markers to ensure we're at the right level
57
- 3. Walk up from current file location
58
- 4. Handle both development and installed environments
59
- """
60
- # Start from this file's location
61
- current = Path(__file__).resolve()
62
-
63
- # Check if we're in an installed environment (site-packages)
64
- # In pip/pipx installs, the package is directly in site-packages
65
- if 'site-packages' in str(current) or 'dist-packages' in str(current):
66
- # We're in an installed environment
67
- # The claude_mpm package directory itself is the "root" for resources
68
- import claude_mpm
69
- self._project_root = Path(claude_mpm.__file__).parent
70
- self._is_installed = True
71
- logger.debug(f"Installed environment detected, using package dir: {self._project_root}")
72
- return
73
-
74
- # We're in a development environment, look for project markers
75
- for parent in current.parents:
76
- # Check for definitive project root indicators
77
- # Prioritize pyproject.toml and setup.py as they're only at root
78
- if (parent / 'pyproject.toml').exists() or (parent / 'setup.py').exists():
79
- self._project_root = parent
80
- self._is_installed = False
81
- logger.debug(f"Project root detected at: {parent} (found pyproject.toml or setup.py)")
82
- return
83
-
84
- # Secondary check: .git directory + VERSION file together
85
- # This combination is more likely to be the real project root
86
- if (parent / '.git').exists() and (parent / 'VERSION').exists():
87
- self._project_root = parent
88
- self._is_installed = False
89
- logger.debug(f"Project root detected at: {parent} (found .git and VERSION)")
90
- return
91
-
92
- # Fallback: walk up to find claude-mpm directory name
93
- for parent in current.parents:
94
- if parent.name == 'claude-mpm':
95
- self._project_root = parent
96
- self._is_installed = False
97
- logger.debug(f"Project root detected at: {parent} (by directory name)")
98
- return
99
-
100
- # Last resort fallback: 3 levels up from this file
101
- # paths.py is in src/claude_mpm/config/
102
- self._project_root = current.parent.parent.parent
103
- self._is_installed = False
104
- logger.warning(f"Project root fallback to: {self._project_root}")
105
-
47
+ """Initialize paths using the unified path manager."""
48
+ if self._path_manager is None:
49
+ self._path_manager = get_path_manager()
50
+
51
+ # ========================================================================
52
+ # Compatibility Properties - Delegate to UnifiedPathManager
53
+ # ========================================================================
54
+
106
55
  @property
107
56
  def project_root(self) -> Path:
108
57
  """Get the project root directory."""
109
- if self._project_root is None:
110
- self._detect_project_root()
111
- return self._project_root
112
-
58
+ return self._path_manager.project_root
59
+
60
+ @property
61
+ def framework_root(self) -> Path:
62
+ """Get the framework root directory."""
63
+ return self._path_manager.framework_root
64
+
113
65
  @property
114
66
  def src_dir(self) -> Path:
115
67
  """Get the src directory."""
116
- if hasattr(self, '_is_installed') and self._is_installed:
117
- # In installed environment, there's no src directory
118
- # Return the package directory itself
119
- return self.project_root.parent
120
- return self.project_root / "src"
121
-
68
+ return self._path_manager.framework_root / "src"
69
+
122
70
  @property
123
71
  def claude_mpm_dir(self) -> Path:
124
72
  """Get the main claude_mpm package directory."""
125
- if hasattr(self, '_is_installed') and self._is_installed:
126
- # In installed environment, project_root IS the claude_mpm directory
127
- return self.project_root
128
- return self.src_dir / "claude_mpm"
129
-
73
+ return self._path_manager.package_root
74
+
130
75
  @property
131
76
  def agents_dir(self) -> Path:
132
77
  """Get the agents directory."""
133
- if hasattr(self, '_is_installed') and self._is_installed:
134
- # In installed environment, agents is directly under the package
135
- return self.project_root / "agents"
136
- return self.claude_mpm_dir / "agents"
137
-
78
+ return self._path_manager.get_agents_dir("framework")
79
+
138
80
  @property
139
81
  def services_dir(self) -> Path:
140
82
  """Get the services directory."""
141
- return self.claude_mpm_dir / "services"
142
-
83
+ return self._path_manager.package_root / "services"
84
+
143
85
  @property
144
86
  def hooks_dir(self) -> Path:
145
87
  """Get the hooks directory."""
146
- return self.claude_mpm_dir / "hooks"
147
-
88
+ return self._path_manager.package_root / "hooks"
89
+
148
90
  @property
149
91
  def config_dir(self) -> Path:
150
92
  """Get the config directory."""
151
- return self.claude_mpm_dir / "config"
152
-
93
+ return self._path_manager.package_root / "config"
94
+
153
95
  @property
154
96
  def cli_dir(self) -> Path:
155
97
  """Get the CLI directory."""
156
- return self.claude_mpm_dir / "cli"
157
-
98
+ return self._path_manager.package_root / "cli"
99
+
158
100
  @property
159
101
  def core_dir(self) -> Path:
160
102
  """Get the core directory."""
161
- return self.claude_mpm_dir / "core"
162
-
103
+ return self._path_manager.package_root / "core"
104
+
163
105
  @property
164
106
  def schemas_dir(self) -> Path:
165
107
  """Get the schemas directory."""
166
- return self.claude_mpm_dir / "schemas"
167
-
108
+ return self._path_manager.package_root / "schemas"
109
+
168
110
  @property
169
111
  def scripts_dir(self) -> Path:
170
112
  """Get the scripts directory."""
171
- if hasattr(self, '_is_installed') and self._is_installed:
172
- # In installed environment, scripts might be in a different location or not exist
173
- # Return a path that won't cause issues but indicates it's not available
174
- return Path.home() / '.claude-mpm' / 'scripts'
175
- return self.project_root / "scripts"
176
-
113
+ return self._path_manager.get_scripts_dir()
114
+
177
115
  @property
178
116
  def tests_dir(self) -> Path:
179
117
  """Get the tests directory."""
180
- if hasattr(self, '_is_installed') and self._is_installed:
181
- # Tests aren't distributed with installed packages
182
- return Path.home() / '.claude-mpm' / 'tests'
183
- return self.project_root / "tests"
184
-
118
+ return self._path_manager.project_root / "tests"
119
+
185
120
  @property
186
121
  def docs_dir(self) -> Path:
187
122
  """Get the documentation directory."""
188
- if hasattr(self, '_is_installed') and self._is_installed:
189
- # Docs might be installed separately or not at all
190
- return Path.home() / '.claude-mpm' / 'docs'
191
- return self.project_root / "docs"
192
-
123
+ return self._path_manager.project_root / "docs"
124
+
193
125
  @property
194
126
  def logs_dir(self) -> Path:
195
127
  """Get the logs directory (creates if doesn't exist)."""
196
- if hasattr(self, '_is_installed') and self._is_installed:
197
- # Use user's home directory for logs in installed environment
198
- logs = Path.home() / '.claude-mpm' / 'logs'
199
- else:
200
- logs = self.project_root / "logs"
201
- logs.mkdir(parents=True, exist_ok=True)
202
- return logs
203
-
128
+ logs_dir = self._path_manager.get_logs_dir("project")
129
+ self._path_manager.ensure_directory(logs_dir)
130
+ return logs_dir
131
+
204
132
  @property
205
133
  def temp_dir(self) -> Path:
206
134
  """Get the temporary files directory (creates if doesn't exist)."""
207
- if hasattr(self, '_is_installed') and self._is_installed:
208
- # Use user's home directory for temp files in installed environment
209
- temp = Path.home() / '.claude-mpm' / '.tmp'
210
- else:
211
- temp = self.project_root / ".tmp"
212
- temp.mkdir(parents=True, exist_ok=True)
213
- return temp
214
-
135
+ temp_dir = self._path_manager.project_root / ".tmp"
136
+ self._path_manager.ensure_directory(temp_dir)
137
+ return temp_dir
138
+
215
139
  @property
216
140
  def claude_mpm_dir_hidden(self) -> Path:
217
141
  """Get the hidden .claude-mpm directory (creates if doesn't exist)."""
218
- if hasattr(self, '_is_installed') and self._is_installed:
219
- # Use current working directory in installed environment
220
- hidden = Path.cwd() / ".claude-mpm"
221
- else:
222
- hidden = self.project_root / ".claude-mpm"
223
- hidden.mkdir(exist_ok=True)
224
- return hidden
225
-
226
- @cached_property
142
+ hidden_dir = self._path_manager.get_config_dir("project")
143
+ self._path_manager.ensure_directory(hidden_dir)
144
+ return hidden_dir
145
+
146
+ @property
227
147
  def version_file(self) -> Path:
228
148
  """Get the VERSION file path."""
229
- return self.project_root / "VERSION"
230
-
231
- @cached_property
149
+ return self._path_manager.project_root / "VERSION"
150
+
151
+ @property
232
152
  def pyproject_file(self) -> Path:
233
153
  """Get the pyproject.toml file path."""
234
- return self.project_root / "pyproject.toml"
235
-
236
- @cached_property
154
+ return self._path_manager.project_root / "pyproject.toml"
155
+
156
+ @property
237
157
  def package_json_file(self) -> Path:
238
158
  """Get the package.json file path."""
239
- return self.project_root / "package.json"
240
-
241
- @cached_property
159
+ return self._path_manager.project_root / "package.json"
160
+
161
+ @property
242
162
  def claude_md_file(self) -> Path:
243
163
  """Get the CLAUDE.md file path."""
244
- return self.project_root / "CLAUDE.md"
245
-
164
+ return self._path_manager.project_root / "CLAUDE.md"
165
+
246
166
  def get_version(self) -> str:
247
- """
248
- Get the project version from various sources.
249
-
250
- Returns:
251
- Version string or 'unknown' if not found.
252
- """
253
- # Try VERSION file first
254
- if self.version_file.exists():
255
- return self.version_file.read_text().strip()
256
-
257
- # Try package metadata
258
- try:
259
- from importlib.metadata import version
260
- return version('claude-mpm')
261
- except Exception:
262
- pass
263
-
264
- return 'unknown'
265
-
167
+ """Get the project version from various sources."""
168
+ return self._path_manager.get_version()
169
+
266
170
  def ensure_in_path(self) -> None:
267
171
  """Ensure src directory is in Python path."""
268
- src_str = str(self.src_dir)
269
- if src_str not in sys.path:
270
- sys.path.insert(0, src_str)
271
-
172
+ self._path_manager.ensure_src_in_path()
173
+
272
174
  def relative_to_project(self, path: Union[str, Path]) -> Path:
273
- """
274
- Get a path relative to the project root.
275
-
276
- Args:
277
- path: Path to make relative
278
-
279
- Returns:
280
- Path relative to project root
281
- """
175
+ """Get a path relative to the project root."""
282
176
  abs_path = Path(path).resolve()
283
177
  try:
284
178
  return abs_path.relative_to(self.project_root)
285
179
  except ValueError:
286
180
  return abs_path
287
-
181
+
288
182
  def resolve_config_path(self, config_name: str) -> Path:
289
- """
290
- Resolve a configuration file path.
291
-
292
- Args:
293
- config_name: Name of the config file
294
-
295
- Returns:
296
- Full path to the config file
297
- """
183
+ """Resolve a configuration file path."""
298
184
  # Check in config directory first
299
185
  config_path = self.config_dir / config_name
300
186
  if config_path.exists():
301
187
  return config_path
302
-
188
+
303
189
  # Check in project root
304
190
  root_path = self.project_root / config_name
305
191
  if root_path.exists():
306
192
  return root_path
307
-
193
+
308
194
  # Return config dir path as default
309
195
  return config_path
310
-
196
+
311
197
  def __str__(self) -> str:
312
198
  """String representation."""
313
199
  return f"ClaudeMPMPaths(root={self.project_root})"
314
-
200
+
315
201
  def __repr__(self) -> str:
316
202
  """Developer representation."""
317
203
  return (
@@ -369,4 +255,4 @@ def ensure_src_in_path() -> None:
369
255
 
370
256
 
371
257
  # Auto-ensure src is in path when module is imported
372
- ensure_src_in_path()
258
+ ensure_src_in_path()