claude-mpm 3.9.11__py3-none-any.whl → 4.0.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +2 -2
  3. claude_mpm/__main__.py +3 -2
  4. claude_mpm/agents/__init__.py +85 -79
  5. claude_mpm/agents/agent_loader.py +464 -1003
  6. claude_mpm/agents/agent_loader_integration.py +45 -45
  7. claude_mpm/agents/agents_metadata.py +29 -30
  8. claude_mpm/agents/async_agent_loader.py +156 -138
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/base_agent_loader.py +179 -151
  11. claude_mpm/agents/frontmatter_validator.py +229 -130
  12. claude_mpm/agents/schema/agent_schema.json +1 -1
  13. claude_mpm/agents/system_agent_config.py +213 -147
  14. claude_mpm/agents/templates/__init__.py +13 -13
  15. claude_mpm/agents/templates/code_analyzer.json +2 -2
  16. claude_mpm/agents/templates/data_engineer.json +1 -1
  17. claude_mpm/agents/templates/documentation.json +23 -11
  18. claude_mpm/agents/templates/engineer.json +22 -6
  19. claude_mpm/agents/templates/memory_manager.json +1 -1
  20. claude_mpm/agents/templates/ops.json +2 -2
  21. claude_mpm/agents/templates/project_organizer.json +1 -1
  22. claude_mpm/agents/templates/qa.json +1 -1
  23. claude_mpm/agents/templates/refactoring_engineer.json +222 -0
  24. claude_mpm/agents/templates/research.json +20 -14
  25. claude_mpm/agents/templates/security.json +1 -1
  26. claude_mpm/agents/templates/ticketing.json +2 -2
  27. claude_mpm/agents/templates/version_control.json +1 -1
  28. claude_mpm/agents/templates/web_qa.json +3 -1
  29. claude_mpm/agents/templates/web_ui.json +2 -2
  30. claude_mpm/cli/__init__.py +79 -51
  31. claude_mpm/cli/__main__.py +3 -2
  32. claude_mpm/cli/commands/__init__.py +20 -20
  33. claude_mpm/cli/commands/agents.py +279 -247
  34. claude_mpm/cli/commands/aggregate.py +138 -157
  35. claude_mpm/cli/commands/cleanup.py +147 -147
  36. claude_mpm/cli/commands/config.py +93 -76
  37. claude_mpm/cli/commands/info.py +17 -16
  38. claude_mpm/cli/commands/mcp.py +140 -905
  39. claude_mpm/cli/commands/mcp_command_router.py +139 -0
  40. claude_mpm/cli/commands/mcp_config_commands.py +20 -0
  41. claude_mpm/cli/commands/mcp_install_commands.py +20 -0
  42. claude_mpm/cli/commands/mcp_server_commands.py +175 -0
  43. claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
  44. claude_mpm/cli/commands/memory.py +239 -203
  45. claude_mpm/cli/commands/monitor.py +330 -86
  46. claude_mpm/cli/commands/run.py +380 -429
  47. claude_mpm/cli/commands/run_config_checker.py +160 -0
  48. claude_mpm/cli/commands/socketio_monitor.py +235 -0
  49. claude_mpm/cli/commands/tickets.py +363 -220
  50. claude_mpm/cli/parser.py +24 -1156
  51. claude_mpm/cli/parsers/__init__.py +29 -0
  52. claude_mpm/cli/parsers/agents_parser.py +136 -0
  53. claude_mpm/cli/parsers/base_parser.py +331 -0
  54. claude_mpm/cli/parsers/config_parser.py +85 -0
  55. claude_mpm/cli/parsers/mcp_parser.py +152 -0
  56. claude_mpm/cli/parsers/memory_parser.py +138 -0
  57. claude_mpm/cli/parsers/monitor_parser.py +124 -0
  58. claude_mpm/cli/parsers/run_parser.py +147 -0
  59. claude_mpm/cli/parsers/tickets_parser.py +203 -0
  60. claude_mpm/cli/ticket_cli.py +7 -3
  61. claude_mpm/cli/utils.py +55 -37
  62. claude_mpm/cli_module/__init__.py +6 -6
  63. claude_mpm/cli_module/args.py +188 -140
  64. claude_mpm/cli_module/commands.py +79 -70
  65. claude_mpm/cli_module/migration_example.py +38 -60
  66. claude_mpm/config/__init__.py +32 -25
  67. claude_mpm/config/agent_config.py +151 -119
  68. claude_mpm/config/experimental_features.py +71 -73
  69. claude_mpm/config/paths.py +94 -208
  70. claude_mpm/config/socketio_config.py +84 -73
  71. claude_mpm/constants.py +35 -18
  72. claude_mpm/core/__init__.py +9 -6
  73. claude_mpm/core/agent_name_normalizer.py +68 -71
  74. claude_mpm/core/agent_registry.py +372 -521
  75. claude_mpm/core/agent_session_manager.py +74 -63
  76. claude_mpm/core/base_service.py +116 -87
  77. claude_mpm/core/cache.py +119 -153
  78. claude_mpm/core/claude_runner.py +425 -1120
  79. claude_mpm/core/config.py +263 -168
  80. claude_mpm/core/config_aliases.py +69 -61
  81. claude_mpm/core/config_constants.py +292 -0
  82. claude_mpm/core/constants.py +57 -99
  83. claude_mpm/core/container.py +211 -178
  84. claude_mpm/core/exceptions.py +233 -89
  85. claude_mpm/core/factories.py +92 -54
  86. claude_mpm/core/framework_loader.py +378 -220
  87. claude_mpm/core/hook_manager.py +198 -83
  88. claude_mpm/core/hook_performance_config.py +136 -0
  89. claude_mpm/core/injectable_service.py +61 -55
  90. claude_mpm/core/interactive_session.py +165 -155
  91. claude_mpm/core/interfaces.py +221 -195
  92. claude_mpm/core/lazy.py +96 -96
  93. claude_mpm/core/logger.py +133 -107
  94. claude_mpm/core/logging_config.py +185 -157
  95. claude_mpm/core/minimal_framework_loader.py +20 -15
  96. claude_mpm/core/mixins.py +30 -29
  97. claude_mpm/core/oneshot_session.py +215 -181
  98. claude_mpm/core/optimized_agent_loader.py +134 -138
  99. claude_mpm/core/optimized_startup.py +159 -157
  100. claude_mpm/core/pm_hook_interceptor.py +85 -72
  101. claude_mpm/core/service_registry.py +103 -101
  102. claude_mpm/core/session_manager.py +97 -87
  103. claude_mpm/core/socketio_pool.py +212 -158
  104. claude_mpm/core/tool_access_control.py +58 -51
  105. claude_mpm/core/types.py +46 -24
  106. claude_mpm/core/typing_utils.py +166 -82
  107. claude_mpm/core/unified_agent_registry.py +721 -0
  108. claude_mpm/core/unified_config.py +550 -0
  109. claude_mpm/core/unified_paths.py +549 -0
  110. claude_mpm/dashboard/index.html +1 -1
  111. claude_mpm/dashboard/open_dashboard.py +51 -17
  112. claude_mpm/dashboard/static/built/components/agent-inference.js +2 -0
  113. claude_mpm/dashboard/static/built/components/event-processor.js +2 -0
  114. claude_mpm/dashboard/static/built/components/event-viewer.js +2 -0
  115. claude_mpm/dashboard/static/built/components/export-manager.js +2 -0
  116. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +2 -0
  117. claude_mpm/dashboard/static/built/components/hud-library-loader.js +2 -0
  118. claude_mpm/dashboard/static/built/components/hud-manager.js +2 -0
  119. claude_mpm/dashboard/static/built/components/hud-visualizer.js +2 -0
  120. claude_mpm/dashboard/static/built/components/module-viewer.js +2 -0
  121. claude_mpm/dashboard/static/built/components/session-manager.js +2 -0
  122. claude_mpm/dashboard/static/built/components/socket-manager.js +2 -0
  123. claude_mpm/dashboard/static/built/components/ui-state-manager.js +2 -0
  124. claude_mpm/dashboard/static/built/components/working-directory.js +2 -0
  125. claude_mpm/dashboard/static/built/dashboard.js +2 -0
  126. claude_mpm/dashboard/static/built/socket-client.js +2 -0
  127. claude_mpm/dashboard/static/css/dashboard.css +27 -8
  128. claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
  129. claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
  130. claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
  131. claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
  132. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
  133. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
  134. claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
  135. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
  136. claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  137. claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
  138. claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
  139. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
  140. claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
  141. claude_mpm/dashboard/static/dist/dashboard.js +2 -0
  142. claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  143. claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
  144. claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
  145. claude_mpm/dashboard/static/js/components/event-viewer.js +93 -72
  146. claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
  147. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +110 -96
  148. claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
  149. claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
  150. claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
  151. claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
  152. claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
  153. claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
  154. claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
  155. claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
  156. claude_mpm/dashboard/static/js/dashboard.js +178 -453
  157. claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
  158. claude_mpm/dashboard/static/js/socket-client.js +133 -53
  159. claude_mpm/dashboard/templates/index.html +40 -50
  160. claude_mpm/experimental/cli_enhancements.py +60 -58
  161. claude_mpm/generators/__init__.py +1 -1
  162. claude_mpm/generators/agent_profile_generator.py +75 -65
  163. claude_mpm/hooks/__init__.py +1 -1
  164. claude_mpm/hooks/base_hook.py +33 -28
  165. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  166. claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
  167. claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
  168. claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
  169. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
  170. claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
  171. claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
  172. claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
  173. claude_mpm/hooks/memory_integration_hook.py +140 -100
  174. claude_mpm/hooks/tool_call_interceptor.py +89 -76
  175. claude_mpm/hooks/validation_hooks.py +57 -49
  176. claude_mpm/init.py +145 -121
  177. claude_mpm/models/__init__.py +9 -9
  178. claude_mpm/models/agent_definition.py +33 -23
  179. claude_mpm/models/agent_session.py +228 -200
  180. claude_mpm/scripts/__init__.py +1 -1
  181. claude_mpm/scripts/socketio_daemon.py +192 -75
  182. claude_mpm/scripts/socketio_server_manager.py +328 -0
  183. claude_mpm/scripts/start_activity_logging.py +25 -22
  184. claude_mpm/services/__init__.py +68 -43
  185. claude_mpm/services/agent_capabilities_service.py +271 -0
  186. claude_mpm/services/agents/__init__.py +23 -32
  187. claude_mpm/services/agents/deployment/__init__.py +3 -3
  188. claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
  189. claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
  190. claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
  191. claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
  192. claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
  193. claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
  194. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
  195. claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
  196. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
  197. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
  198. claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
  199. claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
  200. claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
  201. claude_mpm/services/agents/deployment/agent_validator.py +352 -0
  202. claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
  203. claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
  204. claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
  205. claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
  206. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  207. claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
  208. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  209. claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
  210. claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
  211. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  212. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  213. claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
  214. claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
  215. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  216. claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
  217. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  218. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  219. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  220. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  221. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
  222. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  223. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  224. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
  225. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
  226. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
  227. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
  228. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
  229. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  230. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
  231. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  232. claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
  233. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
  234. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  235. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  236. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  237. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  238. claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
  239. claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
  240. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  241. claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
  242. claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
  243. claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
  244. claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
  245. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  246. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  247. claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
  248. claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
  249. claude_mpm/services/agents/loading/__init__.py +2 -2
  250. claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
  251. claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
  252. claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
  253. claude_mpm/services/agents/management/__init__.py +2 -2
  254. claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
  255. claude_mpm/services/agents/management/agent_management_service.py +209 -156
  256. claude_mpm/services/agents/memory/__init__.py +9 -6
  257. claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
  258. claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
  259. claude_mpm/services/agents/memory/analyzer.py +430 -0
  260. claude_mpm/services/agents/memory/content_manager.py +376 -0
  261. claude_mpm/services/agents/memory/template_generator.py +468 -0
  262. claude_mpm/services/agents/registry/__init__.py +7 -10
  263. claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
  264. claude_mpm/services/agents/registry/modification_tracker.py +351 -285
  265. claude_mpm/services/async_session_logger.py +187 -153
  266. claude_mpm/services/claude_session_logger.py +87 -72
  267. claude_mpm/services/command_handler_service.py +217 -0
  268. claude_mpm/services/communication/__init__.py +3 -2
  269. claude_mpm/services/core/__init__.py +50 -97
  270. claude_mpm/services/core/base.py +60 -53
  271. claude_mpm/services/core/interfaces/__init__.py +188 -0
  272. claude_mpm/services/core/interfaces/agent.py +351 -0
  273. claude_mpm/services/core/interfaces/communication.py +343 -0
  274. claude_mpm/services/core/interfaces/infrastructure.py +413 -0
  275. claude_mpm/services/core/interfaces/service.py +434 -0
  276. claude_mpm/services/core/interfaces.py +19 -944
  277. claude_mpm/services/event_aggregator.py +208 -170
  278. claude_mpm/services/exceptions.py +387 -308
  279. claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
  280. claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
  281. claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
  282. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
  283. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
  284. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
  285. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
  286. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
  287. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  288. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  289. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  290. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  291. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
  292. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  293. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  294. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
  295. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
  296. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  297. claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
  298. claude_mpm/services/hook_service.py +106 -114
  299. claude_mpm/services/infrastructure/__init__.py +7 -5
  300. claude_mpm/services/infrastructure/context_preservation.py +233 -199
  301. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  302. claude_mpm/services/infrastructure/logging.py +83 -76
  303. claude_mpm/services/infrastructure/monitoring.py +547 -404
  304. claude_mpm/services/mcp_gateway/__init__.py +30 -13
  305. claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
  306. claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
  307. claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
  308. claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
  309. claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
  310. claude_mpm/services/mcp_gateway/core/base.py +80 -67
  311. claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
  312. claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
  313. claude_mpm/services/mcp_gateway/main.py +287 -137
  314. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  315. claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
  316. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  317. claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
  318. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
  319. claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
  320. claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
  321. claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
  322. claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
  323. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
  324. claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
  325. claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
  326. claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
  327. claude_mpm/services/memory/__init__.py +2 -2
  328. claude_mpm/services/memory/builder.py +451 -362
  329. claude_mpm/services/memory/cache/__init__.py +2 -2
  330. claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
  331. claude_mpm/services/memory/cache/simple_cache.py +107 -93
  332. claude_mpm/services/memory/indexed_memory.py +195 -193
  333. claude_mpm/services/memory/optimizer.py +267 -234
  334. claude_mpm/services/memory/router.py +571 -263
  335. claude_mpm/services/memory_hook_service.py +237 -0
  336. claude_mpm/services/port_manager.py +575 -0
  337. claude_mpm/services/project/__init__.py +3 -3
  338. claude_mpm/services/project/analyzer.py +451 -305
  339. claude_mpm/services/project/registry.py +262 -240
  340. claude_mpm/services/recovery_manager.py +287 -231
  341. claude_mpm/services/response_tracker.py +87 -67
  342. claude_mpm/services/runner_configuration_service.py +587 -0
  343. claude_mpm/services/session_management_service.py +304 -0
  344. claude_mpm/services/socketio/__init__.py +4 -4
  345. claude_mpm/services/socketio/client_proxy.py +174 -0
  346. claude_mpm/services/socketio/handlers/__init__.py +3 -3
  347. claude_mpm/services/socketio/handlers/base.py +44 -30
  348. claude_mpm/services/socketio/handlers/connection.py +166 -64
  349. claude_mpm/services/socketio/handlers/file.py +123 -108
  350. claude_mpm/services/socketio/handlers/git.py +607 -373
  351. claude_mpm/services/socketio/handlers/hook.py +185 -0
  352. claude_mpm/services/socketio/handlers/memory.py +4 -4
  353. claude_mpm/services/socketio/handlers/project.py +4 -4
  354. claude_mpm/services/socketio/handlers/registry.py +53 -38
  355. claude_mpm/services/socketio/server/__init__.py +18 -0
  356. claude_mpm/services/socketio/server/broadcaster.py +252 -0
  357. claude_mpm/services/socketio/server/core.py +399 -0
  358. claude_mpm/services/socketio/server/main.py +323 -0
  359. claude_mpm/services/socketio_client_manager.py +160 -133
  360. claude_mpm/services/socketio_server.py +36 -1885
  361. claude_mpm/services/subprocess_launcher_service.py +316 -0
  362. claude_mpm/services/system_instructions_service.py +258 -0
  363. claude_mpm/services/ticket_manager.py +19 -533
  364. claude_mpm/services/utility_service.py +285 -0
  365. claude_mpm/services/version_control/__init__.py +18 -21
  366. claude_mpm/services/version_control/branch_strategy.py +20 -10
  367. claude_mpm/services/version_control/conflict_resolution.py +37 -13
  368. claude_mpm/services/version_control/git_operations.py +52 -21
  369. claude_mpm/services/version_control/semantic_versioning.py +92 -53
  370. claude_mpm/services/version_control/version_parser.py +145 -125
  371. claude_mpm/services/version_service.py +270 -0
  372. claude_mpm/storage/__init__.py +2 -2
  373. claude_mpm/storage/state_storage.py +177 -181
  374. claude_mpm/ticket_wrapper.py +2 -2
  375. claude_mpm/utils/__init__.py +2 -2
  376. claude_mpm/utils/agent_dependency_loader.py +453 -243
  377. claude_mpm/utils/config_manager.py +157 -118
  378. claude_mpm/utils/console.py +1 -1
  379. claude_mpm/utils/dependency_cache.py +102 -107
  380. claude_mpm/utils/dependency_manager.py +52 -47
  381. claude_mpm/utils/dependency_strategies.py +131 -96
  382. claude_mpm/utils/environment_context.py +110 -102
  383. claude_mpm/utils/error_handler.py +75 -55
  384. claude_mpm/utils/file_utils.py +80 -67
  385. claude_mpm/utils/framework_detection.py +12 -11
  386. claude_mpm/utils/import_migration_example.py +12 -60
  387. claude_mpm/utils/imports.py +48 -45
  388. claude_mpm/utils/path_operations.py +100 -93
  389. claude_mpm/utils/robust_installer.py +172 -164
  390. claude_mpm/utils/session_logging.py +30 -23
  391. claude_mpm/utils/subprocess_utils.py +99 -61
  392. claude_mpm/validation/__init__.py +1 -1
  393. claude_mpm/validation/agent_validator.py +151 -111
  394. claude_mpm/validation/frontmatter_validator.py +92 -71
  395. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/METADATA +90 -22
  396. claude_mpm-4.0.4.dist-info/RECORD +417 -0
  397. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/entry_points.txt +1 -0
  398. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/licenses/LICENSE +1 -1
  399. claude_mpm/cli/commands/run_guarded.py +0 -511
  400. claude_mpm/config/memory_guardian_config.py +0 -325
  401. claude_mpm/config/memory_guardian_yaml.py +0 -335
  402. claude_mpm/core/config_paths.py +0 -150
  403. claude_mpm/core/memory_aware_runner.py +0 -353
  404. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  405. claude_mpm/deployment_paths.py +0 -261
  406. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  407. claude_mpm/models/state_models.py +0 -433
  408. claude_mpm/services/agent/__init__.py +0 -24
  409. claude_mpm/services/agent/deployment.py +0 -2548
  410. claude_mpm/services/agent/management.py +0 -598
  411. claude_mpm/services/agent/registry.py +0 -813
  412. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  413. claude_mpm/services/communication/socketio.py +0 -1935
  414. claude_mpm/services/communication/websocket.py +0 -479
  415. claude_mpm/services/framework_claude_md_generator.py +0 -624
  416. claude_mpm/services/health_monitor.py +0 -893
  417. claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
  418. claude_mpm/services/infrastructure/health_monitor.py +0 -775
  419. claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
  420. claude_mpm/services/infrastructure/memory_guardian.py +0 -944
  421. claude_mpm/services/infrastructure/restart_protection.py +0 -642
  422. claude_mpm/services/infrastructure/state_manager.py +0 -774
  423. claude_mpm/services/mcp_gateway/manager.py +0 -334
  424. claude_mpm/services/optimized_hook_service.py +0 -542
  425. claude_mpm/services/project_analyzer.py +0 -864
  426. claude_mpm/services/project_registry.py +0 -608
  427. claude_mpm/services/standalone_socketio_server.py +0 -1300
  428. claude_mpm/services/ticket_manager_di.py +0 -318
  429. claude_mpm/services/ticketing_service_original.py +0 -510
  430. claude_mpm/utils/paths.py +0 -395
  431. claude_mpm/utils/platform_memory.py +0 -524
  432. claude_mpm-3.9.11.dist-info/RECORD +0 -306
  433. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/WHEEL +0 -0
  434. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,152 @@
1
+ from pathlib import Path
2
+
3
+ """
4
+ MCP command parser for claude-mpm CLI.
5
+
6
+ WHY: This module contains all arguments specific to MCP Gateway management,
7
+ extracted from the monolithic parser.py for better organization.
8
+
9
+ DESIGN DECISION: MCP commands handle Model Context Protocol Gateway server
10
+ and tool management with complex subcommand structures.
11
+ """
12
+
13
+ import argparse
14
+
15
+ from ...constants import CLICommands, MCPCommands
16
+ from .base_parser import add_common_arguments
17
+
18
+
19
+ def add_mcp_subparser(subparsers) -> argparse.ArgumentParser:
20
+ """
21
+ Add the MCP subparser with all MCP Gateway management commands.
22
+
23
+ WHY: MCP management has multiple complex subcommands for server management,
24
+ tool registration, and configuration that need their own structures.
25
+
26
+ Args:
27
+ subparsers: The subparsers object from the main parser
28
+
29
+ Returns:
30
+ The configured MCP subparser
31
+ """
32
+ # MCP command with subcommands
33
+ mcp_parser = subparsers.add_parser(
34
+ CLICommands.MCP.value, help="Manage MCP Gateway server and tools"
35
+ )
36
+ add_common_arguments(mcp_parser)
37
+
38
+ mcp_subparsers = mcp_parser.add_subparsers(
39
+ dest="mcp_command", help="MCP commands", metavar="SUBCOMMAND"
40
+ )
41
+
42
+ # Install MCP Gateway
43
+ install_mcp_parser = mcp_subparsers.add_parser(
44
+ MCPCommands.INSTALL.value, help="Install and configure MCP Gateway"
45
+ )
46
+ install_mcp_parser.add_argument(
47
+ "--force", action="store_true", help="Force overwrite existing configuration"
48
+ )
49
+
50
+ # Start MCP server
51
+ start_mcp_parser = mcp_subparsers.add_parser(
52
+ MCPCommands.START.value, help="Start the MCP Gateway server"
53
+ )
54
+ start_mcp_parser.add_argument(
55
+ "--mode",
56
+ choices=["stdio", "standalone"],
57
+ default="stdio",
58
+ help="Server mode: stdio for Claude integration, standalone for testing (default: stdio)",
59
+ )
60
+ start_mcp_parser.add_argument(
61
+ "--port",
62
+ type=int,
63
+ default=8766,
64
+ help="Port for standalone mode (default: 8766)",
65
+ )
66
+ start_mcp_parser.add_argument(
67
+ "--config-file", type=Path, help="Path to MCP configuration file"
68
+ )
69
+ start_mcp_parser.add_argument(
70
+ "--test", action="store_true", help="Run in test mode with debug output"
71
+ )
72
+ start_mcp_parser.add_argument(
73
+ "--instructions",
74
+ action="store_true",
75
+ help="Show setup instructions instead of running server",
76
+ )
77
+ start_mcp_parser.add_argument(
78
+ "--daemon", action="store_true", help="Run as daemon (not recommended for MCP)"
79
+ )
80
+
81
+ # Stop MCP server
82
+ stop_mcp_parser = mcp_subparsers.add_parser(
83
+ MCPCommands.STOP.value, help="Stop the MCP Gateway server"
84
+ )
85
+
86
+ # MCP status
87
+ status_mcp_parser = mcp_subparsers.add_parser(
88
+ MCPCommands.STATUS.value, help="Check server and tool status"
89
+ )
90
+ status_mcp_parser.add_argument(
91
+ "--verbose", action="store_true", help="Show detailed status information"
92
+ )
93
+
94
+ # List/manage tools
95
+ tools_mcp_parser = mcp_subparsers.add_parser(
96
+ MCPCommands.TOOLS.value, help="List and manage registered tools"
97
+ )
98
+ tools_mcp_parser.add_argument(
99
+ "tool_action",
100
+ nargs="?",
101
+ choices=["list", "enable", "disable"],
102
+ default="list",
103
+ help="Tool action (default: list)",
104
+ )
105
+ tools_mcp_parser.add_argument(
106
+ "tool_name", nargs="?", help="Tool name for enable/disable actions"
107
+ )
108
+ tools_mcp_parser.add_argument(
109
+ "--verbose",
110
+ action="store_true",
111
+ help="Show detailed tool information including schemas",
112
+ )
113
+
114
+ # Register new tool
115
+ register_mcp_parser = mcp_subparsers.add_parser(
116
+ MCPCommands.REGISTER.value, help="Register a new MCP tool"
117
+ )
118
+ register_mcp_parser.add_argument("name", help="Tool name")
119
+ register_mcp_parser.add_argument("description", help="Tool description")
120
+ register_mcp_parser.add_argument(
121
+ "--schema-file", type=Path, help="Path to JSON schema file for tool input"
122
+ )
123
+ register_mcp_parser.add_argument(
124
+ "--adapter", help="Path to custom tool adapter module"
125
+ )
126
+ register_mcp_parser.add_argument(
127
+ "--save", action="store_true", help="Save tool to configuration"
128
+ )
129
+
130
+ # Test tool invocation
131
+ test_mcp_parser = mcp_subparsers.add_parser(
132
+ MCPCommands.TEST.value, help="Test MCP tool invocation"
133
+ )
134
+ test_mcp_parser.add_argument("tool_name", help="Name of tool to test")
135
+ test_mcp_parser.add_argument("--args", help="Tool arguments as JSON string")
136
+ test_mcp_parser.add_argument(
137
+ "--args-file", type=Path, help="Path to JSON file containing tool arguments"
138
+ )
139
+
140
+ # Manage configuration
141
+ config_mcp_parser = mcp_subparsers.add_parser(
142
+ MCPCommands.CONFIG.value, help="View and manage MCP configuration"
143
+ )
144
+ config_mcp_parser.add_argument(
145
+ "config_action",
146
+ nargs="?",
147
+ choices=["view", "edit", "reset"],
148
+ default="view",
149
+ help="Configuration action (default: view)",
150
+ )
151
+
152
+ return mcp_parser
@@ -0,0 +1,138 @@
1
+ """
2
+ Memory command parser for claude-mpm CLI.
3
+
4
+ WHY: This module contains all arguments specific to memory management commands,
5
+ extracted from the monolithic parser.py for better organization.
6
+
7
+ DESIGN DECISION: Memory commands handle agent memory files and have their own
8
+ subcommand structure that benefits from separation.
9
+ """
10
+
11
+ import argparse
12
+
13
+ from ...constants import CLICommands, MemoryCommands
14
+ from .base_parser import add_common_arguments
15
+
16
+
17
+ def add_memory_subparser(subparsers) -> argparse.ArgumentParser:
18
+ """
19
+ Add the memory subparser with all memory management commands.
20
+
21
+ WHY: Memory management has multiple subcommands for initialization,
22
+ listing, and management that need their own argument structures.
23
+
24
+ Args:
25
+ subparsers: The subparsers object from the main parser
26
+
27
+ Returns:
28
+ The configured memory subparser
29
+ """
30
+ # Memory command with subcommands
31
+ memory_parser = subparsers.add_parser(
32
+ CLICommands.MEMORY.value, help="Manage agent memory files"
33
+ )
34
+ add_common_arguments(memory_parser)
35
+
36
+ memory_subparsers = memory_parser.add_subparsers(
37
+ dest="memory_command", help="Memory commands", metavar="SUBCOMMAND"
38
+ )
39
+
40
+ # Init command
41
+ init_parser = memory_subparsers.add_parser(
42
+ MemoryCommands.INIT.value,
43
+ help="Initialize project-specific memories via PM agent",
44
+ )
45
+ init_parser.add_argument(
46
+ "--force",
47
+ action="store_true",
48
+ help="Force initialization even if memories already exist",
49
+ )
50
+ init_parser.add_argument(
51
+ "--template", help="Memory template to use for initialization"
52
+ )
53
+
54
+ # List command
55
+ list_parser = memory_subparsers.add_parser(
56
+ MemoryCommands.SHOW.value, help="List available memory files"
57
+ )
58
+ list_parser.add_argument(
59
+ "--type", choices=["project", "user", "system"], help="Filter by memory type"
60
+ )
61
+ list_parser.add_argument(
62
+ "--verbose", action="store_true", help="Show detailed memory information"
63
+ )
64
+
65
+ # View command
66
+ view_parser = memory_subparsers.add_parser(
67
+ MemoryCommands.VIEW.value, help="View memory file contents"
68
+ )
69
+ view_parser.add_argument("memory_name", help="Name of the memory file to view")
70
+ view_parser.add_argument(
71
+ "--raw", action="store_true", help="Show raw memory content without formatting"
72
+ )
73
+
74
+ # Edit command
75
+ edit_parser = memory_subparsers.add_parser(
76
+ MemoryCommands.ADD.value, help="Edit memory file"
77
+ )
78
+ edit_parser.add_argument("memory_name", help="Name of the memory file to edit")
79
+ edit_parser.add_argument("--editor", help="Editor to use (overrides default)")
80
+
81
+ # Create command
82
+ create_parser = memory_subparsers.add_parser(
83
+ MemoryCommands.BUILD.value, help="Create new memory file"
84
+ )
85
+ create_parser.add_argument("memory_name", help="Name of the memory file to create")
86
+ create_parser.add_argument(
87
+ "--type",
88
+ choices=["project", "user"],
89
+ default="project",
90
+ help="Type of memory to create (default: project)",
91
+ )
92
+ create_parser.add_argument("--template", help="Template to use for the new memory")
93
+ create_parser.add_argument("--content", help="Initial content for the memory file")
94
+
95
+ # Delete command
96
+ delete_parser = memory_subparsers.add_parser(
97
+ MemoryCommands.CLEAN.value, help="Delete memory file"
98
+ )
99
+ delete_parser.add_argument("memory_name", help="Name of the memory file to delete")
100
+ delete_parser.add_argument(
101
+ "--force", action="store_true", help="Force deletion without confirmation"
102
+ )
103
+ delete_parser.add_argument(
104
+ "--backup", action="store_true", help="Create backup before deletion"
105
+ )
106
+
107
+ # Sync command
108
+ sync_parser = memory_subparsers.add_parser(
109
+ MemoryCommands.OPTIMIZE.value, help="Sync memory files across environments"
110
+ )
111
+ sync_parser.add_argument(
112
+ "--source",
113
+ choices=["project", "user", "system"],
114
+ help="Source memory type to sync from",
115
+ )
116
+ sync_parser.add_argument(
117
+ "--target", choices=["project", "user"], help="Target memory type to sync to"
118
+ )
119
+ sync_parser.add_argument(
120
+ "--dry-run",
121
+ action="store_true",
122
+ help="Show what would be synced without actually syncing",
123
+ )
124
+
125
+ # Validate command
126
+ validate_parser = memory_subparsers.add_parser(
127
+ MemoryCommands.STATUS.value, help="Validate memory file format and content"
128
+ )
129
+ validate_parser.add_argument(
130
+ "memory_name",
131
+ nargs="?",
132
+ help="Name of specific memory file to validate (default: all)",
133
+ )
134
+ validate_parser.add_argument(
135
+ "--strict", action="store_true", help="Use strict validation rules"
136
+ )
137
+
138
+ return memory_parser
@@ -0,0 +1,124 @@
1
+ """
2
+ Monitor command parser for claude-mpm CLI.
3
+
4
+ WHY: This module contains all arguments specific to monitoring server management,
5
+ extracted from the monolithic parser.py for better organization.
6
+
7
+ DESIGN DECISION: Monitor commands handle Socket.IO server management and
8
+ have their own subcommand structure.
9
+ """
10
+
11
+ import argparse
12
+
13
+ from ...constants import CLICommands, MonitorCommands
14
+ from .base_parser import add_common_arguments
15
+
16
+
17
+ def add_monitor_subparser(subparsers) -> argparse.ArgumentParser:
18
+ """
19
+ Add the monitor subparser with all monitoring server commands.
20
+
21
+ WHY: Monitor management has multiple subcommands for starting, stopping,
22
+ and managing the Socket.IO monitoring server.
23
+
24
+ Args:
25
+ subparsers: The subparsers object from the main parser
26
+
27
+ Returns:
28
+ The configured monitor subparser
29
+ """
30
+ # Monitor command with subcommands
31
+ monitor_parser = subparsers.add_parser(
32
+ CLICommands.MONITOR.value, help="Manage Socket.IO monitoring server"
33
+ )
34
+ add_common_arguments(monitor_parser)
35
+
36
+ monitor_subparsers = monitor_parser.add_subparsers(
37
+ dest="monitor_command", help="Monitor commands", metavar="SUBCOMMAND"
38
+ )
39
+
40
+ # Start monitor
41
+ start_monitor_parser = monitor_subparsers.add_parser(
42
+ MonitorCommands.START.value, help="Start Socket.IO monitoring server"
43
+ )
44
+ start_monitor_parser.add_argument(
45
+ "--port", type=int, help="Port to start server on (auto-select if not specified)"
46
+ )
47
+ start_monitor_parser.add_argument(
48
+ "--host", default="localhost", help="Host to bind to (default: localhost)"
49
+ )
50
+ start_monitor_parser.add_argument(
51
+ "--dashboard", action="store_true", help="Enable web dashboard interface"
52
+ )
53
+ start_monitor_parser.add_argument(
54
+ "--dashboard-port",
55
+ type=int,
56
+ default=8766,
57
+ help="Dashboard port (default: 8766)",
58
+ )
59
+ start_monitor_parser.add_argument(
60
+ "--background", action="store_true", help="Run server in background"
61
+ )
62
+ start_monitor_parser.add_argument(
63
+ "--force", action="store_true",
64
+ help="Force kill daemon processes to reclaim ports (use with caution)"
65
+ )
66
+ start_monitor_parser.add_argument(
67
+ "--no-reclaim", dest="reclaim", action="store_false", default=True,
68
+ help="Don't automatically reclaim ports from debug scripts"
69
+ )
70
+
71
+ # Stop monitor
72
+ stop_monitor_parser = monitor_subparsers.add_parser(
73
+ MonitorCommands.STOP.value, help="Stop Socket.IO monitoring server"
74
+ )
75
+ stop_monitor_parser.add_argument(
76
+ "--port", type=int, help="Port of server to stop (stops all if not specified)"
77
+ )
78
+ stop_monitor_parser.add_argument(
79
+ "--force", action="store_true", help="Force stop even if clients are connected"
80
+ )
81
+
82
+ # Restart monitor
83
+ restart_monitor_parser = monitor_subparsers.add_parser(
84
+ MonitorCommands.RESTART.value, help="Restart Socket.IO monitoring server"
85
+ )
86
+ restart_monitor_parser.add_argument(
87
+ "--port", type=int, help="Port to restart on"
88
+ )
89
+ restart_monitor_parser.add_argument(
90
+ "--host", default="localhost", help="Host to bind to (default: localhost)"
91
+ )
92
+
93
+ # Status monitor
94
+ status_monitor_parser = monitor_subparsers.add_parser(
95
+ MonitorCommands.STATUS.value, help="Check monitoring server status"
96
+ )
97
+ status_monitor_parser.add_argument(
98
+ "--verbose", action="store_true", help="Show detailed status information"
99
+ )
100
+ status_monitor_parser.add_argument(
101
+ "--show-ports", action="store_true",
102
+ help="Show status of all ports in the range (8765-8785)"
103
+ )
104
+
105
+ # Port monitor (start/restart on specific port)
106
+ port_monitor_parser = monitor_subparsers.add_parser(
107
+ MonitorCommands.PORT.value, help="Start/restart monitoring server on specific port"
108
+ )
109
+ port_monitor_parser.add_argument(
110
+ "port", type=int, help="Port number to use"
111
+ )
112
+ port_monitor_parser.add_argument(
113
+ "--host", default="localhost", help="Host to bind to (default: localhost)"
114
+ )
115
+ port_monitor_parser.add_argument(
116
+ "--force", action="store_true",
117
+ help="Force kill daemon processes to reclaim port (use with caution)"
118
+ )
119
+ port_monitor_parser.add_argument(
120
+ "--no-reclaim", dest="reclaim", action="store_false", default=True,
121
+ help="Don't automatically reclaim port from debug scripts"
122
+ )
123
+
124
+ return monitor_parser
@@ -0,0 +1,147 @@
1
+ """
2
+ Run command parser for claude-mpm CLI.
3
+
4
+ WHY: This module contains all arguments specific to the run command,
5
+ extracted from the monolithic parser.py for better organization.
6
+
7
+ DESIGN DECISION: Run command arguments are complex enough to warrant
8
+ their own module, including hook management, ticket creation, and
9
+ interaction modes.
10
+ """
11
+
12
+ import argparse
13
+
14
+ from ...constants import CLICommands
15
+ from .base_parser import add_common_arguments
16
+
17
+
18
+ def add_run_arguments(parser: argparse.ArgumentParser) -> None:
19
+ """
20
+ Add arguments specific to the run command.
21
+
22
+ WHY: The run command has specific arguments for controlling how Claude sessions
23
+ are executed, including hook management, ticket creation, and interaction modes.
24
+
25
+ Args:
26
+ parser: The argument parser to add arguments to
27
+ """
28
+ run_group = parser.add_argument_group("run options")
29
+
30
+ run_group.add_argument(
31
+ "--no-hooks",
32
+ action="store_true",
33
+ help="Disable hook service (runs without hooks)",
34
+ )
35
+ run_group.add_argument(
36
+ "--no-tickets", action="store_true", help="Disable automatic ticket creation"
37
+ )
38
+ run_group.add_argument(
39
+ "--intercept-commands",
40
+ action="store_true",
41
+ help="Enable command interception in interactive mode (intercepts /mpm: commands)",
42
+ )
43
+ run_group.add_argument(
44
+ "--no-native-agents",
45
+ action="store_true",
46
+ help="Disable deployment of Claude Code native agents",
47
+ )
48
+ run_group.add_argument(
49
+ "--launch-method",
50
+ choices=["exec", "subprocess"],
51
+ default="exec",
52
+ help="Method to launch Claude: exec (replace process) or subprocess (child process)",
53
+ )
54
+ # Monitor options - consolidated monitoring and management interface
55
+ run_group.add_argument(
56
+ "--monitor",
57
+ action="store_true",
58
+ help="Enable monitoring and management interface with WebSocket server and dashboard (default port: 8765)",
59
+ )
60
+ run_group.add_argument(
61
+ "--websocket-port",
62
+ type=int,
63
+ default=8765,
64
+ help="WebSocket server port (default: 8765)",
65
+ )
66
+ run_group.add_argument(
67
+ "--force",
68
+ action="store_true",
69
+ help="Force operations even with warnings (e.g., large .claude.json file)",
70
+ )
71
+ run_group.add_argument(
72
+ "--resume",
73
+ type=str,
74
+ nargs="?",
75
+ const="last",
76
+ help="Resume a session (last session if no ID specified, or specific session ID)",
77
+ )
78
+
79
+ # Dependency checking options
80
+ dep_group = parser.add_argument_group("dependency options")
81
+ dep_group.add_argument(
82
+ "--no-check-dependencies",
83
+ action="store_false",
84
+ dest="check_dependencies",
85
+ help="Skip agent dependency checking at startup",
86
+ )
87
+ dep_group.add_argument(
88
+ "--force-check-dependencies",
89
+ action="store_true",
90
+ help="Force dependency checking even if cached results exist",
91
+ )
92
+ dep_group.add_argument(
93
+ "--no-prompt",
94
+ action="store_true",
95
+ help="Never prompt for dependency installation (non-interactive mode)",
96
+ )
97
+ dep_group.add_argument(
98
+ "--force-prompt",
99
+ action="store_true",
100
+ help="Force interactive prompting even in non-TTY environments (use with caution)",
101
+ )
102
+
103
+ # Input/output options
104
+ io_group = parser.add_argument_group("input/output options")
105
+ io_group.add_argument(
106
+ "-i",
107
+ "--input",
108
+ type=str,
109
+ help="Input text or file path (for non-interactive mode)",
110
+ )
111
+ io_group.add_argument(
112
+ "--non-interactive",
113
+ action="store_true",
114
+ help="Run in non-interactive mode (read from stdin or --input)",
115
+ )
116
+
117
+ # Claude CLI arguments
118
+ parser.add_argument(
119
+ "claude_args",
120
+ nargs=argparse.REMAINDER,
121
+ help="Additional arguments to pass to Claude CLI (use -- before Claude args)",
122
+ )
123
+
124
+
125
+ def add_run_subparser(subparsers) -> argparse.ArgumentParser:
126
+ """
127
+ Add the run subparser to the main parser.
128
+
129
+ WHY: This creates the explicit 'run' command subparser with all
130
+ run-specific arguments.
131
+
132
+ Args:
133
+ subparsers: The subparsers object from the main parser
134
+
135
+ Returns:
136
+ The configured run subparser
137
+ """
138
+ # Run command (explicit)
139
+ run_parser = subparsers.add_parser(
140
+ CLICommands.RUN.value,
141
+ help="Run orchestrated Claude session (default)",
142
+ formatter_class=argparse.RawDescriptionHelpFormatter,
143
+ )
144
+ add_common_arguments(run_parser)
145
+ add_run_arguments(run_parser)
146
+
147
+ return run_parser