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
@@ -1,3 +1,5 @@
1
+ from pathlib import Path
2
+
1
3
  """Socket.IO server configuration for different deployment scenarios.
2
4
 
3
5
  This module provides configuration management for Socket.IO servers
@@ -12,66 +14,69 @@ WHY configuration management:
12
14
 
13
15
  import os
14
16
  from dataclasses import dataclass
15
- from pathlib import Path
16
- from typing import Dict, Any, List, Optional
17
+ from typing import Any, Dict, List, Optional
17
18
 
18
19
  # Import constants for default values
19
- from claude_mpm.core.constants import NetworkConfig, SystemLimits, RetryConfig
20
+ from claude_mpm.core.constants import NetworkConfig, RetryConfig, SystemLimits
20
21
 
21
22
 
22
23
  @dataclass
23
24
  class SocketIOConfig:
24
25
  """Configuration for Socket.IO server instances."""
25
-
26
+
26
27
  # Server settings
27
28
  host: str = "localhost"
28
29
  port: int = NetworkConfig.DEFAULT_DASHBOARD_PORT
29
30
  server_id: Optional[str] = None
30
-
31
+
31
32
  # Connection settings
32
33
  cors_allowed_origins: str = "*" # Configure properly for production
33
34
  ping_timeout: int = NetworkConfig.PING_TIMEOUT_STANDARD
34
35
  ping_interval: int = NetworkConfig.PING_INTERVAL_STANDARD
35
36
  max_http_buffer_size: int = 1000000
36
-
37
+
37
38
  # Compatibility settings
38
39
  min_client_version: str = "0.7.0"
39
40
  max_history_size: int = SystemLimits.MAX_EVENT_HISTORY
40
-
41
+
41
42
  # Deployment settings
42
43
  deployment_mode: str = "auto" # auto, standalone, embedded, client
43
44
  auto_start: bool = True
44
45
  persistent: bool = True
45
-
46
+
46
47
  # Logging settings
47
48
  log_level: str = "INFO"
48
49
  log_to_file: bool = False
49
50
  log_file_path: Optional[str] = None
50
-
51
+
51
52
  # Health monitoring
52
53
  health_check_interval: int = 30
53
54
  max_connection_attempts: int = RetryConfig.MAX_CONNECTION_RETRIES
54
55
  reconnection_delay: int = 1
55
-
56
+
56
57
  @classmethod
57
- def from_env(cls) -> 'SocketIOConfig':
58
+ def from_env(cls) -> "SocketIOConfig":
58
59
  """Create configuration from environment variables."""
59
60
  return cls(
60
- host=os.getenv('CLAUDE_MPM_SOCKETIO_HOST', 'localhost'),
61
- port=int(os.getenv('CLAUDE_MPM_SOCKETIO_PORT', '8765')),
62
- server_id=os.getenv('CLAUDE_MPM_SOCKETIO_SERVER_ID'),
63
- cors_allowed_origins=os.getenv('CLAUDE_MPM_SOCKETIO_CORS', '*'),
64
- ping_timeout=int(os.getenv('CLAUDE_MPM_SOCKETIO_PING_TIMEOUT', '60')),
65
- ping_interval=int(os.getenv('CLAUDE_MPM_SOCKETIO_PING_INTERVAL', '25')),
66
- deployment_mode=os.getenv('CLAUDE_MPM_SOCKETIO_MODE', 'auto'),
67
- auto_start=os.getenv('CLAUDE_MPM_SOCKETIO_AUTO_START', 'true').lower() == 'true',
68
- persistent=os.getenv('CLAUDE_MPM_SOCKETIO_PERSISTENT', 'true').lower() == 'true',
69
- log_level=os.getenv('CLAUDE_MPM_SOCKETIO_LOG_LEVEL', 'INFO'),
70
- max_history_size=int(os.getenv('CLAUDE_MPM_SOCKETIO_HISTORY_SIZE', '10000'))
61
+ host=os.getenv("CLAUDE_MPM_SOCKETIO_HOST", "localhost"),
62
+ port=int(os.getenv("CLAUDE_MPM_SOCKETIO_PORT", "8765")),
63
+ server_id=os.getenv("CLAUDE_MPM_SOCKETIO_SERVER_ID"),
64
+ cors_allowed_origins=os.getenv("CLAUDE_MPM_SOCKETIO_CORS", "*"),
65
+ ping_timeout=int(os.getenv("CLAUDE_MPM_SOCKETIO_PING_TIMEOUT", "60")),
66
+ ping_interval=int(os.getenv("CLAUDE_MPM_SOCKETIO_PING_INTERVAL", "25")),
67
+ deployment_mode=os.getenv("CLAUDE_MPM_SOCKETIO_MODE", "auto"),
68
+ auto_start=os.getenv("CLAUDE_MPM_SOCKETIO_AUTO_START", "true").lower()
69
+ == "true",
70
+ persistent=os.getenv("CLAUDE_MPM_SOCKETIO_PERSISTENT", "true").lower()
71
+ == "true",
72
+ log_level=os.getenv("CLAUDE_MPM_SOCKETIO_LOG_LEVEL", "INFO"),
73
+ max_history_size=int(
74
+ os.getenv("CLAUDE_MPM_SOCKETIO_HISTORY_SIZE", "10000")
75
+ ),
71
76
  )
72
-
77
+
73
78
  @classmethod
74
- def for_development(cls) -> 'SocketIOConfig':
79
+ def for_development(cls) -> "SocketIOConfig":
75
80
  """Configuration optimized for development."""
76
81
  return cls(
77
82
  host="localhost",
@@ -80,11 +85,11 @@ class SocketIOConfig:
80
85
  log_level="DEBUG",
81
86
  ping_timeout=30,
82
87
  ping_interval=10,
83
- max_history_size=5000
88
+ max_history_size=5000,
84
89
  )
85
-
90
+
86
91
  @classmethod
87
- def for_production(cls) -> 'SocketIOConfig':
92
+ def for_production(cls) -> "SocketIOConfig":
88
93
  """Configuration optimized for production."""
89
94
  return cls(
90
95
  host="0.0.0.0", # Bind to all interfaces in production
@@ -97,11 +102,11 @@ class SocketIOConfig:
97
102
  log_file_path="/var/log/claude-mpm-socketio.log",
98
103
  ping_timeout=120,
99
104
  ping_interval=30,
100
- max_history_size=20000
105
+ max_history_size=20000,
101
106
  )
102
-
107
+
103
108
  @classmethod
104
- def for_docker(cls) -> 'SocketIOConfig':
109
+ def for_docker(cls) -> "SocketIOConfig":
105
110
  """Configuration optimized for Docker deployment."""
106
111
  return cls(
107
112
  host="0.0.0.0",
@@ -111,36 +116,36 @@ class SocketIOConfig:
111
116
  log_level="INFO",
112
117
  ping_timeout=90,
113
118
  ping_interval=25,
114
- max_history_size=15000
119
+ max_history_size=15000,
115
120
  )
116
-
121
+
117
122
  def to_dict(self) -> Dict[str, Any]:
118
123
  """Convert configuration to dictionary."""
119
124
  return {
120
- 'host': self.host,
121
- 'port': self.port,
122
- 'server_id': self.server_id,
123
- 'cors_allowed_origins': self.cors_allowed_origins,
124
- 'ping_timeout': self.ping_timeout,
125
- 'ping_interval': self.ping_interval,
126
- 'max_http_buffer_size': self.max_http_buffer_size,
127
- 'min_client_version': self.min_client_version,
128
- 'max_history_size': self.max_history_size,
129
- 'deployment_mode': self.deployment_mode,
130
- 'auto_start': self.auto_start,
131
- 'persistent': self.persistent,
132
- 'log_level': self.log_level,
133
- 'log_to_file': self.log_to_file,
134
- 'log_file_path': self.log_file_path,
135
- 'health_check_interval': self.health_check_interval,
136
- 'max_connection_attempts': self.max_connection_attempts,
137
- 'reconnection_delay': self.reconnection_delay
125
+ "host": self.host,
126
+ "port": self.port,
127
+ "server_id": self.server_id,
128
+ "cors_allowed_origins": self.cors_allowed_origins,
129
+ "ping_timeout": self.ping_timeout,
130
+ "ping_interval": self.ping_interval,
131
+ "max_http_buffer_size": self.max_http_buffer_size,
132
+ "min_client_version": self.min_client_version,
133
+ "max_history_size": self.max_history_size,
134
+ "deployment_mode": self.deployment_mode,
135
+ "auto_start": self.auto_start,
136
+ "persistent": self.persistent,
137
+ "log_level": self.log_level,
138
+ "log_to_file": self.log_to_file,
139
+ "log_file_path": self.log_file_path,
140
+ "health_check_interval": self.health_check_interval,
141
+ "max_connection_attempts": self.max_connection_attempts,
142
+ "reconnection_delay": self.reconnection_delay,
138
143
  }
139
144
 
140
145
 
141
146
  class ConfigManager:
142
147
  """Manages Socket.IO configuration across different environments."""
143
-
148
+
144
149
  def __init__(self):
145
150
  self.config_file_name = "socketio_config.json"
146
151
  self.config_search_paths = [
@@ -148,34 +153,38 @@ class ConfigManager:
148
153
  Path.home() / ".claude-mpm" / self.config_file_name, # User home
149
154
  Path("/etc/claude-mpm") / self.config_file_name, # System config
150
155
  ]
151
-
156
+
152
157
  def detect_environment(self) -> str:
153
158
  """Detect the current deployment environment."""
154
159
  # Check for Docker
155
- if os.path.exists('/.dockerenv') or os.getenv('DOCKER_CONTAINER'):
160
+ if os.path.exists("/.dockerenv") or os.getenv("DOCKER_CONTAINER"):
156
161
  return "docker"
157
-
162
+
158
163
  # Check for production indicators
159
- if os.getenv('ENVIRONMENT') == 'production' or os.getenv('NODE_ENV') == 'production':
164
+ if (
165
+ os.getenv("ENVIRONMENT") == "production"
166
+ or os.getenv("NODE_ENV") == "production"
167
+ ):
160
168
  return "production"
161
-
169
+
162
170
  # Check if running from installed package
163
171
  try:
164
172
  import claude_mpm
173
+
165
174
  pkg_path = Path(claude_mpm.__file__).parent
166
- if 'site-packages' in str(pkg_path) or 'dist-packages' in str(pkg_path):
175
+ if "site-packages" in str(pkg_path) or "dist-packages" in str(pkg_path):
167
176
  return "installed"
168
177
  except ImportError:
169
178
  pass
170
-
179
+
171
180
  # Default to development
172
181
  return "development"
173
-
182
+
174
183
  def get_config(self, environment: str = None) -> SocketIOConfig:
175
184
  """Get configuration for the specified environment."""
176
185
  if environment is None:
177
186
  environment = self.detect_environment()
178
-
187
+
179
188
  # Start with environment-specific defaults
180
189
  if environment == "production":
181
190
  config = SocketIOConfig.for_production()
@@ -185,49 +194,51 @@ class ConfigManager:
185
194
  config = SocketIOConfig.for_development()
186
195
  else:
187
196
  config = SocketIOConfig()
188
-
197
+
189
198
  # Override with environment variables
190
199
  env_config = SocketIOConfig.from_env()
191
200
  for field in config.__dataclass_fields__:
192
201
  env_value = getattr(env_config, field)
193
- if env_value != getattr(SocketIOConfig(), field): # Only if different from default
202
+ if env_value != getattr(
203
+ SocketIOConfig(), field
204
+ ): # Only if different from default
194
205
  setattr(config, field, env_value)
195
-
206
+
196
207
  # Override with config file if available
197
208
  config_file_data = self._load_config_file()
198
209
  if config_file_data:
199
210
  for key, value in config_file_data.items():
200
211
  if hasattr(config, key):
201
212
  setattr(config, key, value)
202
-
213
+
203
214
  return config
204
-
215
+
205
216
  def _load_config_file(self) -> Optional[Dict[str, Any]]:
206
217
  """Load configuration from file if available."""
207
218
  import json
208
-
219
+
209
220
  for config_path in self.config_search_paths:
210
221
  if config_path.exists():
211
222
  try:
212
- with open(config_path, 'r') as f:
223
+ with open(config_path, "r") as f:
213
224
  return json.load(f)
214
225
  except Exception as e:
215
226
  print(f"Warning: Failed to load config from {config_path}: {e}")
216
-
227
+
217
228
  return None
218
-
229
+
219
230
  def save_config(self, config: SocketIOConfig, path: str = None) -> bool:
220
231
  """Save configuration to file."""
221
232
  import json
222
-
233
+
223
234
  if path is None:
224
235
  # Use user config directory
225
236
  config_dir = Path.home() / ".claude-mpm"
226
237
  config_dir.mkdir(exist_ok=True)
227
238
  path = config_dir / self.config_file_name
228
-
239
+
229
240
  try:
230
- with open(path, 'w') as f:
241
+ with open(path, "w") as f:
231
242
  json.dump(config.to_dict(), f, indent=2)
232
243
  return True
233
244
  except Exception as e:
@@ -256,4 +267,4 @@ def get_discovery_hosts(config: SocketIOConfig) -> List[str]:
256
267
  # If server binds to all interfaces, try localhost and 127.0.0.1 for discovery
257
268
  return ["localhost", "127.0.0.1"]
258
269
  else:
259
- return [config.host, "localhost", "127.0.0.1"]
270
+ return [config.host, "localhost", "127.0.0.1"]
claude_mpm/constants.py CHANGED
@@ -1,16 +1,18 @@
1
1
  """Constants for Claude MPM."""
2
2
 
3
3
  from enum import Enum
4
+ from pathlib import Path
4
5
 
5
6
 
6
7
  class CLIPrefix(str, Enum):
7
8
  """CLI command prefix constants."""
9
+
8
10
  MPM = "--mpm:"
9
-
11
+
10
12
  def __add__(self, other: str) -> str:
11
13
  """Allow prefix + command concatenation."""
12
14
  return self.value + other
13
-
15
+
14
16
  def wrap(self, flag: str) -> str:
15
17
  """Wrap a flag with the prefix."""
16
18
  if flag.startswith("--"):
@@ -22,6 +24,7 @@ class CLIPrefix(str, Enum):
22
24
 
23
25
  class CLICommands(str, Enum):
24
26
  """CLI command constants."""
27
+
25
28
  RUN = "run"
26
29
  RUN_GUARDED = "run-guarded"
27
30
  TICKETS = "tickets"
@@ -33,28 +36,29 @@ class CLICommands(str, Enum):
33
36
  AGGREGATE = "aggregate"
34
37
  CLEANUP = "cleanup-memory"
35
38
  MCP = "mcp"
36
-
39
+
37
40
  def with_prefix(self, prefix: CLIPrefix = CLIPrefix.MPM) -> str:
38
41
  """Get command with prefix."""
39
42
  return prefix + self.value
40
-
43
+
41
44
  @classmethod
42
45
  def get_mpm_commands(cls) -> list[str]:
43
46
  """Get list of MPM-specific commands with prefix."""
44
47
  return [cmd.with_prefix() for cmd in cls]
45
-
48
+
46
49
  @classmethod
47
50
  def is_mpm_command(cls, command: str) -> bool:
48
51
  """Check if a command is an MPM command."""
49
52
  # Check both with and without prefix
50
53
  if command.startswith(CLIPrefix.MPM.value):
51
- base_command = command[len(CLIPrefix.MPM.value):]
54
+ base_command = command[len(CLIPrefix.MPM.value) :]
52
55
  return base_command in [cmd.value for cmd in cls]
53
56
  return command in [cmd.value for cmd in cls]
54
57
 
55
58
 
56
59
  class AgentCommands(str, Enum):
57
60
  """Agent subcommand constants."""
61
+
58
62
  LIST = "list"
59
63
  VIEW = "view"
60
64
  FIX = "fix"
@@ -65,6 +69,7 @@ class AgentCommands(str, Enum):
65
69
 
66
70
  class MemoryCommands(str, Enum):
67
71
  """Memory subcommand constants."""
72
+
68
73
  INIT = "init"
69
74
  STATUS = "status"
70
75
  VIEW = "view"
@@ -79,14 +84,17 @@ class MemoryCommands(str, Enum):
79
84
 
80
85
  class MonitorCommands(str, Enum):
81
86
  """Monitor subcommand constants."""
87
+
82
88
  START = "start"
83
89
  STOP = "stop"
84
90
  RESTART = "restart"
91
+ STATUS = "status"
85
92
  PORT = "port"
86
93
 
87
94
 
88
95
  class ConfigCommands(str, Enum):
89
96
  """Config subcommand constants."""
97
+
90
98
  VALIDATE = "validate"
91
99
  VIEW = "view"
92
100
  STATUS = "status"
@@ -94,6 +102,7 @@ class ConfigCommands(str, Enum):
94
102
 
95
103
  class AggregateCommands(str, Enum):
96
104
  """Event aggregator subcommand constants."""
105
+
97
106
  START = "start"
98
107
  STOP = "stop"
99
108
  STATUS = "status"
@@ -104,6 +113,7 @@ class AggregateCommands(str, Enum):
104
113
 
105
114
  class MCPCommands(str, Enum):
106
115
  """MCP Gateway subcommand constants."""
116
+
107
117
  INSTALL = "install"
108
118
  START = "start"
109
119
  STOP = "stop"
@@ -116,6 +126,7 @@ class MCPCommands(str, Enum):
116
126
 
117
127
  class TicketCommands(str, Enum):
118
128
  """Ticket subcommand constants."""
129
+
119
130
  CREATE = "create"
120
131
  LIST = "list"
121
132
  VIEW = "view"
@@ -129,33 +140,34 @@ class TicketCommands(str, Enum):
129
140
 
130
141
  class CLIFlags(str, Enum):
131
142
  """CLI flag constants (without prefix)."""
143
+
132
144
  # Logging flags
133
145
  DEBUG = "debug"
134
146
  LOGGING = "logging"
135
147
  LOG_DIR = "log-dir"
136
-
148
+
137
149
  # Framework flags
138
150
  FRAMEWORK_PATH = "framework-path"
139
151
  AGENTS_DIR = "agents-dir"
140
-
152
+
141
153
  # Hook flags
142
154
  NO_HOOKS = "no-hooks"
143
-
155
+
144
156
  # Ticket flags
145
157
  NO_TICKETS = "no-tickets"
146
-
158
+
147
159
  # Input/output flags
148
160
  INPUT = "input"
149
161
  NON_INTERACTIVE = "non-interactive"
150
-
162
+
151
163
  # Orchestration flags
152
164
  SUBPROCESS = "subprocess"
153
165
  INTERACTIVE_SUBPROCESS = "interactive-subprocess"
154
166
  TODO_HIJACK = "todo-hijack"
155
-
167
+
156
168
  # Agent flags
157
169
  NO_NATIVE_AGENTS = "no-native-agents"
158
-
170
+
159
171
  def with_prefix(self, short: bool = False) -> str:
160
172
  """Get flag with MPM prefix."""
161
173
  prefix = CLIPrefix.MPM.value
@@ -167,6 +179,7 @@ class CLIFlags(str, Enum):
167
179
 
168
180
  class LogLevel(str, Enum):
169
181
  """Logging level constants."""
182
+
170
183
  OFF = "OFF"
171
184
  INFO = "INFO"
172
185
  DEBUG = "DEBUG"
@@ -174,6 +187,7 @@ class LogLevel(str, Enum):
174
187
 
175
188
  class OrchestratorMode(str, Enum):
176
189
  """Orchestrator mode constants."""
190
+
177
191
  SYSTEM_PROMPT = "system_prompt"
178
192
  SUBPROCESS = "subprocess"
179
193
  INTERACTIVE_SUBPROCESS = "interactive_subprocess"
@@ -181,11 +195,12 @@ class OrchestratorMode(str, Enum):
181
195
 
182
196
  class EnvironmentVars(str, Enum):
183
197
  """Environment variable constants."""
198
+
184
199
  CLAUDE_CONFIG_DIR = "CLAUDE_CONFIG_DIR"
185
200
  CLAUDE_MAX_PARALLEL_SUBAGENTS = "CLAUDE_MAX_PARALLEL_SUBAGENTS"
186
201
  CLAUDE_TIMEOUT = "CLAUDE_TIMEOUT"
187
202
  CLAUDE_MPM_DEBUG = "CLAUDE_MPM_DEBUG"
188
-
203
+
189
204
  # Default values
190
205
  DEFAULT_MAX_AGENTS = "10"
191
206
  DEFAULT_TIMEOUT = "600000" # 10 minutes in milliseconds
@@ -193,15 +208,17 @@ class EnvironmentVars(str, Enum):
193
208
 
194
209
  class Paths(str, Enum):
195
210
  """Path constants."""
211
+
196
212
  CLAUDE_AGENTS_DIR = ".claude/agents"
197
213
  CLAUDE_CONFIG_DIR = ".claude"
198
214
  MPM_LOG_DIR = ".claude-mpm/logs"
199
215
  MPM_SESSION_DIR = ".claude-mpm/session"
200
216
  MPM_PROMPTS_DIR = ".claude-mpm/prompts"
201
-
202
-
217
+
218
+
203
219
  class AgentMetadata(str, Enum):
204
220
  """Agent metadata field constants."""
221
+
205
222
  NAME = "name"
206
223
  DESCRIPTION = "description"
207
224
  VERSION = "version"
@@ -212,11 +229,11 @@ class AgentMetadata(str, Enum):
212
229
  TIMEOUT = "timeout"
213
230
  MAX_TOKENS = "max_tokens"
214
231
  TEMPERATURE = "temperature"
215
-
232
+
216
233
  # Default values
217
234
  DEFAULT_AUTHOR = "claude-mpm"
218
235
  DEFAULT_VERSION = "1.0.0"
219
236
  DEFAULT_PRIORITY = "medium"
220
237
  DEFAULT_TIMEOUT = 600
221
238
  DEFAULT_MAX_TOKENS = 8192
222
- DEFAULT_TEMPERATURE = 0.5
239
+ DEFAULT_TEMPERATURE = 0.5
@@ -1,17 +1,20 @@
1
1
  """Core components for Claude MPM."""
2
2
 
3
3
  from .claude_runner import ClaudeRunner
4
- from .mixins import LoggerMixin
5
4
  from .config import Config
6
5
 
7
6
  # Import DI components
8
7
  from .container import DIContainer, ServiceLifetime, get_container
9
- from .service_registry import ServiceRegistry, get_service_registry, initialize_services
10
- from .injectable_service import InjectableService
11
8
  from .factories import (
12
- ServiceFactory, AgentServiceFactory, SessionManagerFactory,
13
- ConfigurationFactory, get_factory_registry
9
+ AgentServiceFactory,
10
+ ConfigurationFactory,
11
+ ServiceFactory,
12
+ SessionManagerFactory,
13
+ get_factory_registry,
14
14
  )
15
+ from .injectable_service import InjectableService
16
+ from .mixins import LoggerMixin
17
+ from .service_registry import ServiceRegistry, get_service_registry, initialize_services
15
18
 
16
19
  __all__ = [
17
20
  "ClaudeRunner",
@@ -29,4 +32,4 @@ __all__ = [
29
32
  "SessionManagerFactory",
30
33
  "ConfigurationFactory",
31
34
  "get_factory_registry",
32
- ]
35
+ ]