claude-mpm 3.9.9__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 (411) 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 +155 -0
  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 +90 -49
  31. claude_mpm/cli/__main__.py +3 -2
  32. claude_mpm/cli/commands/__init__.py +21 -18
  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 +143 -762
  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 -1150
  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 +217 -0
  69. claude_mpm/config/paths.py +94 -208
  70. claude_mpm/config/socketio_config.py +84 -73
  71. claude_mpm/constants.py +36 -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 +571 -0
  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 +40 -23
  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 +14 -21
  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 +97 -93
  298. claude_mpm/services/mcp_gateway/main.py +307 -127
  299. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  300. claude_mpm/services/mcp_gateway/registry/service_registry.py +100 -101
  301. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  302. claude_mpm/services/mcp_gateway/server/__init__.py +4 -4
  303. claude_mpm/services/mcp_gateway/server/{mcp_server.py → mcp_gateway.py} +149 -153
  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 +110 -121
  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 +20 -534
  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 +9 -0
  358. claude_mpm/storage/state_storage.py +552 -0
  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.9.dist-info → claude_mpm-4.0.3.dist-info}/METADATA +51 -2
  381. claude_mpm-4.0.3.dist-info/RECORD +402 -0
  382. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/entry_points.txt +1 -0
  383. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/licenses/LICENSE +1 -1
  384. claude_mpm/config/memory_guardian_config.py +0 -325
  385. claude_mpm/core/config_paths.py +0 -150
  386. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  387. claude_mpm/deployment_paths.py +0 -261
  388. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  389. claude_mpm/models/state_models.py +0 -433
  390. claude_mpm/services/agent/__init__.py +0 -24
  391. claude_mpm/services/agent/deployment.py +0 -2548
  392. claude_mpm/services/agent/management.py +0 -598
  393. claude_mpm/services/agent/registry.py +0 -813
  394. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  395. claude_mpm/services/communication/socketio.py +0 -1935
  396. claude_mpm/services/communication/websocket.py +0 -479
  397. claude_mpm/services/framework_claude_md_generator.py +0 -624
  398. claude_mpm/services/health_monitor.py +0 -893
  399. claude_mpm/services/infrastructure/memory_guardian.py +0 -770
  400. claude_mpm/services/mcp_gateway/server/mcp_server_simple.py +0 -444
  401. claude_mpm/services/optimized_hook_service.py +0 -542
  402. claude_mpm/services/project_analyzer.py +0 -864
  403. claude_mpm/services/project_registry.py +0 -608
  404. claude_mpm/services/standalone_socketio_server.py +0 -1300
  405. claude_mpm/services/ticket_manager_di.py +0 -318
  406. claude_mpm/services/ticketing_service_original.py +0 -510
  407. claude_mpm/utils/paths.py +0 -395
  408. claude_mpm/utils/platform_memory.py +0 -524
  409. claude_mpm-3.9.9.dist-info/RECORD +0 -293
  410. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/WHEEL +0 -0
  411. {claude_mpm-3.9.9.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,7 +24,9 @@ class CLIPrefix(str, Enum):
22
24
 
23
25
  class CLICommands(str, Enum):
24
26
  """CLI command constants."""
27
+
25
28
  RUN = "run"
29
+ RUN_GUARDED = "run-guarded"
26
30
  TICKETS = "tickets"
27
31
  INFO = "info"
28
32
  AGENTS = "agents"
@@ -32,28 +36,29 @@ class CLICommands(str, Enum):
32
36
  AGGREGATE = "aggregate"
33
37
  CLEANUP = "cleanup-memory"
34
38
  MCP = "mcp"
35
-
39
+
36
40
  def with_prefix(self, prefix: CLIPrefix = CLIPrefix.MPM) -> str:
37
41
  """Get command with prefix."""
38
42
  return prefix + self.value
39
-
43
+
40
44
  @classmethod
41
45
  def get_mpm_commands(cls) -> list[str]:
42
46
  """Get list of MPM-specific commands with prefix."""
43
47
  return [cmd.with_prefix() for cmd in cls]
44
-
48
+
45
49
  @classmethod
46
50
  def is_mpm_command(cls, command: str) -> bool:
47
51
  """Check if a command is an MPM command."""
48
52
  # Check both with and without prefix
49
53
  if command.startswith(CLIPrefix.MPM.value):
50
- base_command = command[len(CLIPrefix.MPM.value):]
54
+ base_command = command[len(CLIPrefix.MPM.value) :]
51
55
  return base_command in [cmd.value for cmd in cls]
52
56
  return command in [cmd.value for cmd in cls]
53
57
 
54
58
 
55
59
  class AgentCommands(str, Enum):
56
60
  """Agent subcommand constants."""
61
+
57
62
  LIST = "list"
58
63
  VIEW = "view"
59
64
  FIX = "fix"
@@ -64,6 +69,7 @@ class AgentCommands(str, Enum):
64
69
 
65
70
  class MemoryCommands(str, Enum):
66
71
  """Memory subcommand constants."""
72
+
67
73
  INIT = "init"
68
74
  STATUS = "status"
69
75
  VIEW = "view"
@@ -78,14 +84,17 @@ class MemoryCommands(str, Enum):
78
84
 
79
85
  class MonitorCommands(str, Enum):
80
86
  """Monitor subcommand constants."""
87
+
81
88
  START = "start"
82
89
  STOP = "stop"
83
90
  RESTART = "restart"
91
+ STATUS = "status"
84
92
  PORT = "port"
85
93
 
86
94
 
87
95
  class ConfigCommands(str, Enum):
88
96
  """Config subcommand constants."""
97
+
89
98
  VALIDATE = "validate"
90
99
  VIEW = "view"
91
100
  STATUS = "status"
@@ -93,6 +102,7 @@ class ConfigCommands(str, Enum):
93
102
 
94
103
  class AggregateCommands(str, Enum):
95
104
  """Event aggregator subcommand constants."""
105
+
96
106
  START = "start"
97
107
  STOP = "stop"
98
108
  STATUS = "status"
@@ -103,6 +113,7 @@ class AggregateCommands(str, Enum):
103
113
 
104
114
  class MCPCommands(str, Enum):
105
115
  """MCP Gateway subcommand constants."""
116
+
106
117
  INSTALL = "install"
107
118
  START = "start"
108
119
  STOP = "stop"
@@ -115,6 +126,7 @@ class MCPCommands(str, Enum):
115
126
 
116
127
  class TicketCommands(str, Enum):
117
128
  """Ticket subcommand constants."""
129
+
118
130
  CREATE = "create"
119
131
  LIST = "list"
120
132
  VIEW = "view"
@@ -128,33 +140,34 @@ class TicketCommands(str, Enum):
128
140
 
129
141
  class CLIFlags(str, Enum):
130
142
  """CLI flag constants (without prefix)."""
143
+
131
144
  # Logging flags
132
145
  DEBUG = "debug"
133
146
  LOGGING = "logging"
134
147
  LOG_DIR = "log-dir"
135
-
148
+
136
149
  # Framework flags
137
150
  FRAMEWORK_PATH = "framework-path"
138
151
  AGENTS_DIR = "agents-dir"
139
-
152
+
140
153
  # Hook flags
141
154
  NO_HOOKS = "no-hooks"
142
-
155
+
143
156
  # Ticket flags
144
157
  NO_TICKETS = "no-tickets"
145
-
158
+
146
159
  # Input/output flags
147
160
  INPUT = "input"
148
161
  NON_INTERACTIVE = "non-interactive"
149
-
162
+
150
163
  # Orchestration flags
151
164
  SUBPROCESS = "subprocess"
152
165
  INTERACTIVE_SUBPROCESS = "interactive-subprocess"
153
166
  TODO_HIJACK = "todo-hijack"
154
-
167
+
155
168
  # Agent flags
156
169
  NO_NATIVE_AGENTS = "no-native-agents"
157
-
170
+
158
171
  def with_prefix(self, short: bool = False) -> str:
159
172
  """Get flag with MPM prefix."""
160
173
  prefix = CLIPrefix.MPM.value
@@ -166,6 +179,7 @@ class CLIFlags(str, Enum):
166
179
 
167
180
  class LogLevel(str, Enum):
168
181
  """Logging level constants."""
182
+
169
183
  OFF = "OFF"
170
184
  INFO = "INFO"
171
185
  DEBUG = "DEBUG"
@@ -173,6 +187,7 @@ class LogLevel(str, Enum):
173
187
 
174
188
  class OrchestratorMode(str, Enum):
175
189
  """Orchestrator mode constants."""
190
+
176
191
  SYSTEM_PROMPT = "system_prompt"
177
192
  SUBPROCESS = "subprocess"
178
193
  INTERACTIVE_SUBPROCESS = "interactive_subprocess"
@@ -180,11 +195,12 @@ class OrchestratorMode(str, Enum):
180
195
 
181
196
  class EnvironmentVars(str, Enum):
182
197
  """Environment variable constants."""
198
+
183
199
  CLAUDE_CONFIG_DIR = "CLAUDE_CONFIG_DIR"
184
200
  CLAUDE_MAX_PARALLEL_SUBAGENTS = "CLAUDE_MAX_PARALLEL_SUBAGENTS"
185
201
  CLAUDE_TIMEOUT = "CLAUDE_TIMEOUT"
186
202
  CLAUDE_MPM_DEBUG = "CLAUDE_MPM_DEBUG"
187
-
203
+
188
204
  # Default values
189
205
  DEFAULT_MAX_AGENTS = "10"
190
206
  DEFAULT_TIMEOUT = "600000" # 10 minutes in milliseconds
@@ -192,15 +208,17 @@ class EnvironmentVars(str, Enum):
192
208
 
193
209
  class Paths(str, Enum):
194
210
  """Path constants."""
211
+
195
212
  CLAUDE_AGENTS_DIR = ".claude/agents"
196
213
  CLAUDE_CONFIG_DIR = ".claude"
197
214
  MPM_LOG_DIR = ".claude-mpm/logs"
198
215
  MPM_SESSION_DIR = ".claude-mpm/session"
199
216
  MPM_PROMPTS_DIR = ".claude-mpm/prompts"
200
-
201
-
217
+
218
+
202
219
  class AgentMetadata(str, Enum):
203
220
  """Agent metadata field constants."""
221
+
204
222
  NAME = "name"
205
223
  DESCRIPTION = "description"
206
224
  VERSION = "version"
@@ -211,11 +229,11 @@ class AgentMetadata(str, Enum):
211
229
  TIMEOUT = "timeout"
212
230
  MAX_TOKENS = "max_tokens"
213
231
  TEMPERATURE = "temperature"
214
-
232
+
215
233
  # Default values
216
234
  DEFAULT_AUTHOR = "claude-mpm"
217
235
  DEFAULT_VERSION = "1.0.0"
218
236
  DEFAULT_PRIORITY = "medium"
219
237
  DEFAULT_TIMEOUT = 600
220
238
  DEFAULT_MAX_TOKENS = 8192
221
- 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
+ ]