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,203 @@
1
+ """
2
+ Tickets command parser for claude-mpm CLI.
3
+
4
+ WHY: This module contains all arguments specific to ticket management commands,
5
+ extracted from the monolithic parser.py for better organization.
6
+
7
+ DESIGN DECISION: Ticket commands have their own complex subcommand structure
8
+ that warrants a dedicated module.
9
+ """
10
+
11
+ import argparse
12
+
13
+ from ...constants import CLICommands, TicketCommands
14
+ from .base_parser import add_common_arguments
15
+
16
+
17
+ def add_tickets_subparser(subparsers) -> argparse.ArgumentParser:
18
+ """
19
+ Add the tickets subparser with all ticket management commands.
20
+
21
+ WHY: Ticket management has multiple subcommands (create, list, view, etc.)
22
+ that need their own argument structures.
23
+
24
+ Args:
25
+ subparsers: The subparsers object from the main parser
26
+
27
+ Returns:
28
+ The configured tickets subparser
29
+ """
30
+ # Tickets command with subcommands
31
+ tickets_parser = subparsers.add_parser(
32
+ CLICommands.TICKETS.value, help="Manage tickets and tracking"
33
+ )
34
+ add_common_arguments(tickets_parser)
35
+
36
+ tickets_subparsers = tickets_parser.add_subparsers(
37
+ dest="tickets_command", help="Ticket commands", metavar="SUBCOMMAND"
38
+ )
39
+
40
+ # Create ticket
41
+ create_ticket_parser = tickets_subparsers.add_parser(
42
+ TicketCommands.CREATE.value, help="Create a new ticket"
43
+ )
44
+ create_ticket_parser.add_argument("title", help="Ticket title")
45
+ create_ticket_parser.add_argument(
46
+ "-t",
47
+ "--type",
48
+ default="task",
49
+ choices=["task", "bug", "feature", "issue", "epic"],
50
+ help="Ticket type (default: task)",
51
+ )
52
+ create_ticket_parser.add_argument(
53
+ "-p",
54
+ "--priority",
55
+ default="medium",
56
+ choices=["low", "medium", "high", "critical"],
57
+ help="Priority level (default: medium)",
58
+ )
59
+ create_ticket_parser.add_argument(
60
+ "-d",
61
+ "--description",
62
+ nargs="*",
63
+ help="Ticket description (multiple words allowed)",
64
+ )
65
+ create_ticket_parser.add_argument("--tags", help="Comma-separated list of tags")
66
+ create_ticket_parser.add_argument(
67
+ "--parent-epic", help="Parent epic ID for this ticket"
68
+ )
69
+ create_ticket_parser.add_argument(
70
+ "--parent-issue", help="Parent issue ID for this ticket"
71
+ )
72
+
73
+ # List tickets
74
+ list_tickets_parser = tickets_subparsers.add_parser(
75
+ TicketCommands.LIST.value, help="List tickets"
76
+ )
77
+ list_tickets_parser.add_argument(
78
+ "-t",
79
+ "--type",
80
+ choices=["task", "bug", "feature", "issue", "epic"],
81
+ help="Filter by ticket type",
82
+ )
83
+ list_tickets_parser.add_argument(
84
+ "-s",
85
+ "--status",
86
+ choices=["open", "in_progress", "closed", "all"],
87
+ default="open",
88
+ help="Filter by status (default: open)",
89
+ )
90
+ list_tickets_parser.add_argument(
91
+ "-p",
92
+ "--priority",
93
+ choices=["low", "medium", "high", "critical"],
94
+ help="Filter by priority",
95
+ )
96
+ list_tickets_parser.add_argument(
97
+ "--limit",
98
+ type=int,
99
+ default=20,
100
+ help="Maximum number of tickets to show (default: 20)",
101
+ )
102
+ list_tickets_parser.add_argument(
103
+ "--page", type=int, default=1, help="Page number for pagination (default: 1)"
104
+ )
105
+ list_tickets_parser.add_argument(
106
+ "--page-size",
107
+ type=int,
108
+ default=20,
109
+ help="Number of tickets per page (default: 20)",
110
+ )
111
+ list_tickets_parser.add_argument(
112
+ "--verbose", action="store_true", help="Show detailed ticket information"
113
+ )
114
+
115
+ # View ticket
116
+ view_ticket_parser = tickets_subparsers.add_parser(
117
+ TicketCommands.VIEW.value, help="View ticket details"
118
+ )
119
+ view_ticket_parser.add_argument("ticket_id", help="Ticket ID to view")
120
+ view_ticket_parser.add_argument(
121
+ "--with-comments", action="store_true", help="Include comments in the view"
122
+ )
123
+
124
+ # Update ticket
125
+ update_ticket_parser = tickets_subparsers.add_parser(
126
+ TicketCommands.UPDATE.value, help="Update ticket"
127
+ )
128
+ update_ticket_parser.add_argument("ticket_id", help="Ticket ID to update")
129
+ update_ticket_parser.add_argument(
130
+ "-p",
131
+ "--priority",
132
+ choices=["low", "medium", "high", "critical"],
133
+ help="Update priority",
134
+ )
135
+ update_ticket_parser.add_argument(
136
+ "-s",
137
+ "--status",
138
+ choices=["open", "in_progress", "closed"],
139
+ help="Update status",
140
+ )
141
+ update_ticket_parser.add_argument("--title", help="Update title")
142
+ update_ticket_parser.add_argument("--description", help="Update description")
143
+ update_ticket_parser.add_argument("--add-tags", help="Comma-separated tags to add")
144
+ update_ticket_parser.add_argument(
145
+ "--remove-tags", help="Comma-separated tags to remove"
146
+ )
147
+
148
+ # Close ticket
149
+ close_ticket_parser = tickets_subparsers.add_parser(
150
+ TicketCommands.CLOSE.value, help="Close ticket"
151
+ )
152
+ close_ticket_parser.add_argument("ticket_id", help="Ticket ID to close")
153
+ close_ticket_parser.add_argument("--comment", help="Closing comment")
154
+
155
+ # Delete ticket
156
+ delete_ticket_parser = tickets_subparsers.add_parser(
157
+ TicketCommands.DELETE.value, help="Delete ticket"
158
+ )
159
+ delete_ticket_parser.add_argument("ticket_id", help="Ticket ID to delete")
160
+ delete_ticket_parser.add_argument(
161
+ "--force", action="store_true", help="Force deletion without confirmation"
162
+ )
163
+ delete_ticket_parser.add_argument(
164
+ "--archive", action="store_true", help="Archive instead of permanent deletion"
165
+ )
166
+
167
+ # Search tickets
168
+ search_tickets_parser = tickets_subparsers.add_parser(
169
+ TicketCommands.SEARCH.value, help="Search tickets"
170
+ )
171
+ search_tickets_parser.add_argument(
172
+ "query", help="Search query (searches title and description)"
173
+ )
174
+ search_tickets_parser.add_argument(
175
+ "-t",
176
+ "--type",
177
+ choices=["task", "bug", "feature", "issue", "epic"],
178
+ help="Filter by ticket type",
179
+ )
180
+ search_tickets_parser.add_argument(
181
+ "--limit", type=int, default=10, help="Maximum number of results (default: 10)"
182
+ )
183
+
184
+ # Comment on ticket
185
+ comment_ticket_parser = tickets_subparsers.add_parser(
186
+ TicketCommands.COMMENT.value, help="Add comment to ticket"
187
+ )
188
+ comment_ticket_parser.add_argument("ticket_id", help="Ticket ID to comment on")
189
+ comment_ticket_parser.add_argument("comment", help="Comment text")
190
+
191
+ # Workflow management
192
+ workflow_ticket_parser = tickets_subparsers.add_parser(
193
+ TicketCommands.WORKFLOW.value, help="Manage ticket workflow"
194
+ )
195
+ workflow_ticket_parser.add_argument("ticket_id", help="Ticket ID")
196
+ workflow_ticket_parser.add_argument(
197
+ "state",
198
+ choices=["open", "in_progress", "review", "testing", "closed"],
199
+ help="New workflow state",
200
+ )
201
+ workflow_ticket_parser.add_argument("--comment", help="Workflow transition comment")
202
+
203
+ return tickets_parser
@@ -1,4 +1,6 @@
1
- #\!/usr/bin/env python3
1
+ from pathlib import Path
2
+
3
+ # \!/usr/bin/env python3
2
4
  """
3
5
  Ticket CLI module for claude-mpm.
4
6
 
@@ -7,7 +9,7 @@ It delegates to the scripts/ticket.py module for implementation.
7
9
  """
8
10
 
9
11
  import sys
10
- from pathlib import Path
12
+
11
13
 
12
14
  def main():
13
15
  """Main entry point for ticket CLI alias."""
@@ -16,8 +18,9 @@ def main():
16
18
  # Try to import from scripts
17
19
  scripts_dir = Path(__file__).parent.parent.parent.parent / "scripts"
18
20
  sys.path.insert(0, str(scripts_dir))
19
-
21
+
20
22
  from ticket import main as ticket_main
23
+
21
24
  return ticket_main()
22
25
  except ImportError:
23
26
  print("Error: Ticket functionality not available")
@@ -27,5 +30,6 @@ def main():
27
30
  print(f"Error running ticket command: {e}")
28
31
  return 1
29
32
 
33
+
30
34
  if __name__ == "__main__":
31
35
  sys.exit(main())
claude_mpm/cli/utils.py CHANGED
@@ -7,7 +7,6 @@ for common CLI operations.
7
7
  """
8
8
 
9
9
  import sys
10
- from pathlib import Path
11
10
  from typing import Optional
12
11
 
13
12
  from ..core.logger import get_logger
@@ -16,19 +15,19 @@ from ..core.logger import get_logger
16
15
  def get_user_input(input_arg: Optional[str], logger) -> str:
17
16
  """
18
17
  Get user input based on command line arguments.
19
-
18
+
20
19
  WHY: This function handles the three ways users can provide input:
21
20
  1. Direct text via -i/--input
22
21
  2. File path via -i/--input
23
22
  3. stdin (for piping)
24
-
23
+
25
24
  DESIGN DECISION: We check if the input is a file path first, then fall back
26
25
  to treating it as direct text. This allows maximum flexibility.
27
-
26
+
28
27
  Args:
29
28
  input_arg: The value of the -i/--input argument
30
29
  logger: Logger instance for output
31
-
30
+
32
31
  Returns:
33
32
  The user input as a string
34
33
  """
@@ -50,64 +49,74 @@ def get_user_input(input_arg: Optional[str], logger) -> str:
50
49
  def get_agent_versions_display() -> Optional[str]:
51
50
  """
52
51
  Get formatted agent versions display as a string.
53
-
52
+
54
53
  WHY: This function provides a single source of truth for agent version
55
54
  information that can be displayed both at startup and on-demand via the
56
55
  /mpm agents command. This ensures consistency in how agent versions are
57
56
  presented to users.
58
-
57
+
59
58
  Returns:
60
59
  Formatted string containing agent version information, or None if failed
61
60
  """
62
61
  try:
63
- from ..services import AgentDeploymentService
64
62
  import os
65
63
  from pathlib import Path
66
-
64
+
65
+ from ..services import AgentDeploymentService
66
+
67
67
  # Determine the user's working directory from environment
68
68
  user_working_dir = None
69
- if 'CLAUDE_MPM_USER_PWD' in os.environ:
70
- user_working_dir = Path(os.environ['CLAUDE_MPM_USER_PWD'])
71
-
69
+ if "CLAUDE_MPM_USER_PWD" in os.environ:
70
+ user_working_dir = Path(os.environ["CLAUDE_MPM_USER_PWD"])
71
+
72
72
  deployment_service = AgentDeploymentService(working_directory=user_working_dir)
73
-
73
+
74
74
  # Get deployed agents
75
75
  verification = deployment_service.verify_deployment()
76
76
  if not verification.get("agents_found"):
77
77
  return None
78
-
78
+
79
79
  output_lines = []
80
80
  output_lines.append("\nDeployed Agent Versions:")
81
81
  output_lines.append("-" * 40)
82
-
82
+
83
83
  # Sort agents by name for consistent display
84
- agents = sorted(verification["agents_found"], key=lambda x: x.get('name', x.get('file', '')))
85
-
84
+ agents = sorted(
85
+ verification["agents_found"], key=lambda x: x.get("name", x.get("file", ""))
86
+ )
87
+
86
88
  for agent in agents:
87
- name = agent.get('name', 'unknown')
88
- version = agent.get('version', 'unknown')
89
+ name = agent.get("name", "unknown")
90
+ version = agent.get("version", "unknown")
89
91
  # Format: name (version)
90
92
  output_lines.append(f" {name:<20} {version}")
91
-
93
+
92
94
  # Add base agent version info
93
95
  try:
94
96
  import json
97
+
95
98
  base_agent_path = deployment_service.base_agent_path
96
99
  if base_agent_path.exists():
97
100
  base_data = json.loads(base_agent_path.read_text())
98
101
  # Parse version the same way as AgentDeploymentService
99
- raw_version = base_data.get('base_version') or base_data.get('version', 0)
102
+ raw_version = base_data.get("base_version") or base_data.get(
103
+ "version", 0
104
+ )
100
105
  base_version_tuple = deployment_service._parse_version(raw_version)
101
- base_version_str = deployment_service._format_version_display(base_version_tuple)
106
+ base_version_str = deployment_service._format_version_display(
107
+ base_version_tuple
108
+ )
102
109
  output_lines.append(f"\n Base Agent Version: {base_version_str}")
103
110
  except:
104
111
  pass
105
-
112
+
106
113
  # Check for agents needing migration
107
114
  if verification.get("agents_needing_migration"):
108
- output_lines.append(f"\n ⚠️ {len(verification['agents_needing_migration'])} agent(s) need migration to semantic versioning")
115
+ output_lines.append(
116
+ f"\n ⚠️ {len(verification['agents_needing_migration'])} agent(s) need migration to semantic versioning"
117
+ )
109
118
  output_lines.append(f" Run 'claude-mpm agents deploy' to update")
110
-
119
+
111
120
  output_lines.append("-" * 40)
112
121
  return "\n".join(output_lines)
113
122
  except Exception as e:
@@ -120,7 +129,7 @@ def get_agent_versions_display() -> Optional[str]:
120
129
  def list_agent_versions_at_startup() -> None:
121
130
  """
122
131
  List deployed agent versions at startup.
123
-
132
+
124
133
  WHY: Users want to see what agents are available when they start a session.
125
134
  This provides immediate feedback about the deployed agent environment.
126
135
  """
@@ -133,47 +142,56 @@ def list_agent_versions_at_startup() -> None:
133
142
  def setup_logging(args) -> object:
134
143
  """
135
144
  Set up logging based on parsed arguments.
136
-
145
+
137
146
  WHY: This centralizes logging setup logic, handling the deprecated --debug flag
138
147
  and the new --logging argument consistently across all commands.
139
-
148
+
140
149
  Args:
141
150
  args: Parsed command line arguments
142
-
151
+
143
152
  Returns:
144
153
  Logger instance
145
154
  """
146
- from ..core.logger import setup_logging as core_setup_logging, get_logger
147
155
  from ..constants import LogLevel
148
-
156
+ from ..core.logger import get_logger
157
+ from ..core.logger import setup_logging as core_setup_logging
158
+
159
+ # Set default logging level if not specified
160
+ if not hasattr(args, "logging") or args.logging is None:
161
+ args.logging = LogLevel.INFO.value
162
+
149
163
  # Handle deprecated --debug flag
150
- if hasattr(args, 'debug') and args.debug and args.logging == LogLevel.INFO.value:
164
+ if hasattr(args, "debug") and args.debug and args.logging == LogLevel.INFO.value:
151
165
  args.logging = LogLevel.DEBUG.value
152
-
166
+
153
167
  # Only setup logging if not OFF
154
168
  if args.logging != LogLevel.OFF.value:
155
- logger = core_setup_logging(level=args.logging, log_dir=args.log_dir)
169
+ logger = core_setup_logging(
170
+ level=args.logging, log_dir=getattr(args, "log_dir", None)
171
+ )
156
172
  else:
157
173
  # Minimal logger for CLI feedback
158
174
  import logging
175
+
159
176
  logger = logging.getLogger("cli")
160
177
  logger.setLevel(logging.WARNING)
161
-
178
+
162
179
  return logger
163
180
 
164
181
 
165
182
  def ensure_directories() -> None:
166
183
  """
167
184
  Ensure required directories exist on first run.
168
-
185
+
169
186
  WHY: Claude-mpm needs certain directories to function properly. Rather than
170
187
  failing when they don't exist, we create them automatically for a better
171
188
  user experience.
172
189
  """
173
190
  try:
174
191
  from ..init import ensure_directories as init_ensure_directories
192
+
175
193
  init_ensure_directories()
176
194
  except Exception:
177
195
  # Continue even if initialization fails
178
196
  # The individual commands will handle missing directories as needed
179
- pass
197
+ pass
@@ -5,11 +5,11 @@ to reduce complexity in the main CLI function.
5
5
  """
6
6
 
7
7
  from .args import ArgumentRegistry
8
- from .commands import CommandRegistry, CommandDefinition, register_standard_commands
8
+ from .commands import CommandDefinition, CommandRegistry, register_standard_commands
9
9
 
10
10
  __all__ = [
11
- 'ArgumentRegistry',
12
- 'CommandRegistry',
13
- 'CommandDefinition',
14
- 'register_standard_commands'
15
- ]
11
+ "ArgumentRegistry",
12
+ "CommandRegistry",
13
+ "CommandDefinition",
14
+ "register_standard_commands",
15
+ ]