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
@@ -0,0 +1,271 @@
1
+ from pathlib import Path
2
+
3
+ """Agent capabilities service for discovering and generating agent capability descriptions.
4
+
5
+ This service handles:
6
+ 1. Agent discovery from multiple directories (system, user, project)
7
+ 2. Agent categorization based on content and naming
8
+ 3. Generation of capability descriptions for Claude
9
+ 4. Fallback capabilities when no agents are found
10
+
11
+ Extracted from ClaudeRunner to follow Single Responsibility Principle.
12
+ """
13
+
14
+ import logging
15
+ from typing import Dict, Optional
16
+
17
+ from claude_mpm.core.base_service import BaseService
18
+ from claude_mpm.core.logging_config import get_logger
19
+ from claude_mpm.services.core.interfaces import AgentCapabilitiesInterface
20
+
21
+
22
+ class AgentCapabilitiesService(BaseService, AgentCapabilitiesInterface):
23
+ """Service for discovering and generating agent capability descriptions."""
24
+
25
+ def __init__(self):
26
+ """Initialize the agent capabilities service."""
27
+ super().__init__(name="agent_capabilities_service")
28
+
29
+ async def _initialize(self) -> None:
30
+ """Initialize the service. No special initialization needed."""
31
+ pass
32
+
33
+ async def _cleanup(self) -> None:
34
+ """Cleanup service resources. No cleanup needed."""
35
+ pass
36
+
37
+ def generate_agent_capabilities(self, agent_type: str = "general") -> str:
38
+ """Generate formatted agent capabilities for Claude.
39
+
40
+ Args:
41
+ agent_type: Type of agent to generate capabilities for
42
+
43
+ Returns:
44
+ Formatted capabilities string for Claude consumption
45
+ """
46
+ # Delegate to the existing implementation
47
+ return self.generate_deployed_agent_capabilities()
48
+
49
+ def generate_deployed_agent_capabilities(self) -> str:
50
+ """Generate agent capabilities from deployed agents following Claude Code's hierarchy.
51
+
52
+ Follows the agent precedence order:
53
+ 1. Project agents (.claude/agents/) - highest priority
54
+ 2. User agents (~/.config/claude/agents/) - middle priority
55
+ 3. System agents (claude-desktop installation) - lowest priority
56
+
57
+ Project agents override user/system agents with the same ID.
58
+
59
+ Returns:
60
+ str: Formatted agent capabilities description
61
+ """
62
+ try:
63
+ # Track discovered agents by ID to handle overrides
64
+ discovered_agents = {}
65
+
66
+ # 1. First read system agents (lowest priority)
67
+ system_agents_dirs = [
68
+ Path.home()
69
+ / "Library"
70
+ / "Application Support"
71
+ / "Claude"
72
+ / "agents", # macOS
73
+ Path.home() / ".config" / "claude" / "agents", # Linux
74
+ Path.home() / "AppData" / "Roaming" / "Claude" / "agents", # Windows
75
+ ]
76
+
77
+ for system_dir in system_agents_dirs:
78
+ if system_dir.exists():
79
+ self._discover_agents_from_dir(
80
+ system_dir, discovered_agents, "system"
81
+ )
82
+ break
83
+
84
+ # 2. Then read user agents (middle priority, overrides system)
85
+ user_agents_dir = Path.home() / ".config" / "claude" / "agents"
86
+ if user_agents_dir.exists():
87
+ self._discover_agents_from_dir(
88
+ user_agents_dir, discovered_agents, "user"
89
+ )
90
+
91
+ # 3. Finally read project agents (highest priority, overrides all)
92
+ project_agents_dir = Path.cwd() / ".claude" / "agents"
93
+ if project_agents_dir.exists():
94
+ self._discover_agents_from_dir(
95
+ project_agents_dir, discovered_agents, "project"
96
+ )
97
+
98
+ if not discovered_agents:
99
+ self.logger.warning("No agents found in any tier")
100
+ return self._get_fallback_capabilities()
101
+
102
+ # Build capabilities section from discovered agents using list and join for better performance
103
+ section_parts = [
104
+ "\n## Available Agent Capabilities\n\n",
105
+ "You have the following specialized agents available for delegation:\n\n",
106
+ ]
107
+
108
+ # Group agents by category
109
+ agents_by_category = {}
110
+ for agent_id, agent_info in discovered_agents.items():
111
+ category = agent_info["category"]
112
+ if category not in agents_by_category:
113
+ agents_by_category[category] = []
114
+ agents_by_category[category].append(agent_info)
115
+
116
+ # Output agents by category
117
+ for category in sorted(agents_by_category.keys()):
118
+ section_parts.append(f"\n### {category} Agents\n")
119
+ for agent in sorted(
120
+ agents_by_category[category], key=lambda x: x["name"]
121
+ ):
122
+ tier_indicator = (
123
+ f" [{agent['tier']}]" if agent["tier"] != "project" else ""
124
+ )
125
+ section_parts.append(
126
+ f"- **{agent['name']}** (`{agent['id']}`{tier_indicator}): {agent['description']}\n"
127
+ )
128
+
129
+ # Add summary
130
+ section_parts.append(
131
+ f"\n**Total Available Agents**: {len(discovered_agents)}\n"
132
+ )
133
+
134
+ # Show tier distribution
135
+ tier_counts = {}
136
+ for agent in discovered_agents.values():
137
+ tier = agent["tier"]
138
+ tier_counts[tier] = tier_counts.get(tier, 0) + 1
139
+
140
+ if len(tier_counts) > 1:
141
+ section_parts.append("**Agent Sources**: ")
142
+ tier_summary = []
143
+ for tier in ["project", "user", "system"]:
144
+ if tier in tier_counts:
145
+ tier_summary.append(f"{tier_counts[tier]} {tier}")
146
+ section_parts.append(", ".join(tier_summary) + "\n")
147
+
148
+ section_parts.append(
149
+ "Use the agent ID in parentheses when delegating tasks via the Task tool.\n"
150
+ )
151
+
152
+ # Join all parts for final section
153
+ section = "".join(section_parts)
154
+
155
+ self.logger.info(
156
+ f"Generated capabilities for {len(discovered_agents)} agents "
157
+ + f"(project: {tier_counts.get('project', 0)}, "
158
+ + f"user: {tier_counts.get('user', 0)}, "
159
+ + f"system: {tier_counts.get('system', 0)})"
160
+ )
161
+ return section
162
+
163
+ except Exception as e:
164
+ self.logger.error(f"Failed to generate deployed agent capabilities: {e}")
165
+ return self._get_fallback_capabilities()
166
+
167
+ def _discover_agents_from_dir(
168
+ self, agents_dir: Path, discovered_agents: dict, tier: str
169
+ ):
170
+ """Discover agents from a specific directory and add/override in discovered_agents.
171
+
172
+ Args:
173
+ agents_dir: Directory to search for agent .md files
174
+ discovered_agents: Dictionary to update with discovered agents
175
+ tier: The tier this directory represents (system/user/project)
176
+ """
177
+ if not agents_dir.exists():
178
+ return
179
+
180
+ agent_files = list(agents_dir.glob("*.md"))
181
+ for agent_file in sorted(agent_files):
182
+ try:
183
+ agent_id = agent_file.stem
184
+
185
+ # Read agent content
186
+ content = agent_file.read_text(encoding="utf-8")
187
+
188
+ # Extract name and description from content
189
+ lines = content.split("\n")
190
+ name = agent_id.replace("-", " ").replace("_", " ").title()
191
+ description = f"Specialized agent for {agent_id.replace('-', ' ')}"
192
+
193
+ # Try to extract better name and description from content
194
+ for line in lines:
195
+ line = line.strip()
196
+ if line.startswith("# "):
197
+ name = line[2:].strip()
198
+ elif line.startswith("Description:"):
199
+ description = line[12:].strip()
200
+ elif "description" in line.lower() and ":" in line:
201
+ description = line.split(":", 1)[1].strip()
202
+
203
+ # Categorize the agent
204
+ category = self._categorize_agent(agent_id, content)
205
+
206
+ # Add/override in discovered agents (higher tier overrides lower)
207
+ discovered_agents[agent_id] = {
208
+ "id": agent_id,
209
+ "name": name,
210
+ "description": description,
211
+ "category": category,
212
+ "tier": tier,
213
+ "path": str(agent_file),
214
+ }
215
+
216
+ self.logger.debug(f"Discovered {tier} agent: {agent_id} ({category})")
217
+
218
+ except Exception as e:
219
+ self.logger.debug(f"Could not parse agent {agent_file}: {e}")
220
+ continue
221
+
222
+ def _categorize_agent(self, agent_id: str, content: str) -> str:
223
+ """Categorize an agent based on its ID and content."""
224
+ agent_id_lower = agent_id.lower()
225
+ content_lower = content.lower()
226
+
227
+ if "engineer" in agent_id_lower or "engineering" in content_lower:
228
+ return "Development"
229
+ elif "research" in agent_id_lower or "research" in content_lower:
230
+ return "Research"
231
+ elif (
232
+ "qa" in agent_id_lower
233
+ or "test" in agent_id_lower
234
+ or "quality" in content_lower
235
+ ):
236
+ return "Quality Assurance"
237
+ elif "doc" in agent_id_lower or "documentation" in content_lower:
238
+ return "Documentation"
239
+ elif "security" in agent_id_lower or "security" in content_lower:
240
+ return "Security"
241
+ elif "data" in agent_id_lower or "database" in content_lower:
242
+ return "Data"
243
+ elif (
244
+ "ops" in agent_id_lower
245
+ or "deploy" in agent_id_lower
246
+ or "operations" in content_lower
247
+ ):
248
+ return "Operations"
249
+ elif "git" in agent_id_lower or "version" in content_lower:
250
+ return "Version Control"
251
+ else:
252
+ return "General"
253
+
254
+ def _get_fallback_capabilities(self) -> str:
255
+ """Return fallback agent capabilities when deployed agents can't be read."""
256
+ return """
257
+ ## Available Agent Capabilities
258
+
259
+ You have the following specialized agents available for delegation:
260
+
261
+ - **Engineer Agent**: Code implementation and development
262
+ - **Research Agent**: Investigation and analysis
263
+ - **QA Agent**: Testing and quality assurance
264
+ - **Documentation Agent**: Documentation creation and maintenance
265
+ - **Security Agent**: Security analysis and protection
266
+ - **Data Engineer Agent**: Data management and pipelines
267
+ - **Ops Agent**: Deployment and operations
268
+ - **Version Control Agent**: Git operations and version management
269
+
270
+ Use these agents to delegate specialized work via the Task tool.
271
+ """
@@ -1,52 +1,43 @@
1
1
  """Agent services module - hierarchical organization of agent-related services."""
2
2
 
3
3
  # Registry exports
4
- from .registry.agent_registry import (
5
- AgentRegistry,
6
- AgentMetadata,
7
- AgentTier,
8
- AgentType,
9
- )
10
- from .registry.deployed_agent_discovery import DeployedAgentDiscovery
11
- from .registry.modification_tracker import (
12
- AgentModificationTracker,
13
- ModificationType,
14
- ModificationTier,
15
- AgentModification,
16
- ModificationHistory,
17
- )
18
-
19
- # Loading exports
20
- from .loading.framework_agent_loader import FrameworkAgentLoader
21
- from .loading.agent_profile_loader import AgentProfileLoader
22
- from .loading.base_agent_manager import BaseAgentManager
23
-
24
4
  # Deployment exports
25
5
  from .deployment.agent_deployment import AgentDeploymentService
26
6
  from .deployment.agent_lifecycle_manager import (
27
7
  AgentLifecycleManager,
28
- LifecycleState,
29
- LifecycleOperation,
30
8
  AgentLifecycleRecord,
9
+ LifecycleOperation,
31
10
  LifecycleOperationResult,
11
+ LifecycleState,
32
12
  )
33
13
  from .deployment.agent_versioning import AgentVersionManager
14
+ from .loading.agent_profile_loader import AgentProfileLoader
15
+ from .loading.base_agent_manager import BaseAgentManager
16
+
17
+ # Loading exports
18
+ from .loading.framework_agent_loader import FrameworkAgentLoader
19
+ from .management.agent_capabilities_generator import AgentCapabilitiesGenerator
20
+
21
+ # Management exports
22
+ from .management.agent_management_service import AgentManager
34
23
 
35
24
  # Memory exports
36
- from .memory.agent_memory_manager import (
37
- AgentMemoryManager,
38
- get_memory_manager,
39
- )
25
+ from .memory.agent_memory_manager import AgentMemoryManager, get_memory_manager
40
26
  from .memory.agent_persistence_service import (
41
27
  AgentPersistenceService,
42
- PersistenceStrategy,
43
28
  PersistenceOperation,
44
29
  PersistenceRecord,
30
+ PersistenceStrategy,
31
+ )
32
+ from .registry import AgentMetadata, AgentRegistry, AgentTier, AgentType
33
+ from .registry.deployed_agent_discovery import DeployedAgentDiscovery
34
+ from .registry.modification_tracker import (
35
+ AgentModification,
36
+ AgentModificationTracker,
37
+ ModificationHistory,
38
+ ModificationTier,
39
+ ModificationType,
45
40
  )
46
-
47
- # Management exports
48
- from .management.agent_management_service import AgentManager
49
- from .management.agent_capabilities_generator import AgentCapabilitiesGenerator
50
41
 
51
42
  __all__ = [
52
43
  # Registry
@@ -82,4 +73,4 @@ __all__ = [
82
73
  # Management
83
74
  "AgentManager",
84
75
  "AgentCapabilitiesGenerator",
85
- ]
76
+ ]
@@ -3,10 +3,10 @@
3
3
  from .agent_deployment import AgentDeploymentService
4
4
  from .agent_lifecycle_manager import (
5
5
  AgentLifecycleManager,
6
- LifecycleState,
7
- LifecycleOperation,
8
6
  AgentLifecycleRecord,
7
+ LifecycleOperation,
9
8
  LifecycleOperationResult,
9
+ LifecycleState,
10
10
  )
11
11
  from .agent_versioning import AgentVersionManager
12
12
 
@@ -18,4 +18,4 @@ __all__ = [
18
18
  "AgentLifecycleRecord",
19
19
  "LifecycleOperationResult",
20
20
  "AgentVersionManager",
21
- ]
21
+ ]
@@ -0,0 +1,310 @@
1
+ """Agent configuration provider for deployment service.
2
+
3
+ This module provides agent-specific configurations and tools for different agent types.
4
+ Extracted from AgentDeploymentService to reduce complexity and improve maintainability.
5
+ """
6
+
7
+ from typing import Any, Dict, List
8
+
9
+ from claude_mpm.core.constants import ResourceLimits, SystemLimits, TimeoutConfig
10
+
11
+
12
+ class AgentConfigProvider:
13
+ """Provides agent-specific configurations and tools."""
14
+
15
+ @staticmethod
16
+ def get_agent_tools(agent_name: str, metadata: Dict[str, Any]) -> List[str]:
17
+ """
18
+ Get appropriate tools for an agent based on its type.
19
+
20
+ Args:
21
+ agent_name: Name of the agent
22
+ metadata: Agent metadata
23
+
24
+ Returns:
25
+ List of tool names
26
+ """
27
+ # Base tools all agents should have
28
+ base_tools = [
29
+ "Read",
30
+ "Write",
31
+ "Edit",
32
+ "MultiEdit",
33
+ "Grep",
34
+ "Glob",
35
+ "LS",
36
+ "TodoWrite",
37
+ ]
38
+
39
+ # Agent-specific tools
40
+ agent_tools = {
41
+ "engineer": base_tools + ["Bash", "WebSearch", "WebFetch"],
42
+ "qa": base_tools + ["Bash", "WebSearch"],
43
+ "documentation": base_tools + ["WebSearch", "WebFetch"],
44
+ "research": base_tools + ["WebSearch", "WebFetch", "Bash"],
45
+ "security": base_tools + ["Bash", "WebSearch", "Grep"],
46
+ "ops": base_tools + ["Bash", "WebSearch"],
47
+ "data_engineer": base_tools + ["Bash", "WebSearch"],
48
+ "version_control": base_tools + ["Bash"],
49
+ }
50
+
51
+ # Return specific tools or default set
52
+ return agent_tools.get(agent_name, base_tools + ["Bash", "WebSearch"])
53
+
54
+ @staticmethod
55
+ def get_agent_specific_config(agent_name: str) -> Dict[str, Any]:
56
+ """
57
+ Get agent-specific configuration based on agent type.
58
+
59
+ Args:
60
+ agent_name: Name of the agent
61
+
62
+ Returns:
63
+ Dictionary of agent-specific configuration
64
+ """
65
+ # Base configuration all agents share
66
+ base_config = {
67
+ "timeout": TimeoutConfig.DEFAULT_TIMEOUT,
68
+ "max_tokens": SystemLimits.MAX_TOKEN_LIMIT,
69
+ "memory_limit": ResourceLimits.STANDARD_MEMORY_RANGE[
70
+ 0
71
+ ], # Use lower bound of standard memory
72
+ "cpu_limit": ResourceLimits.STANDARD_CPU_RANGE[
73
+ 1
74
+ ], # Use upper bound of standard CPU
75
+ "network_access": True,
76
+ }
77
+
78
+ # Agent-specific configurations
79
+ configs = AgentConfigProvider._get_agent_configs(base_config)
80
+
81
+ # Return the specific config or a default
82
+ return configs.get(
83
+ agent_name, AgentConfigProvider._get_default_config(agent_name, base_config)
84
+ )
85
+
86
+ @staticmethod
87
+ def _get_agent_configs(base_config: Dict[str, Any]) -> Dict[str, Dict[str, Any]]:
88
+ """Get all agent-specific configurations."""
89
+ return {
90
+ "engineer": {
91
+ **base_config,
92
+ "description": "Code implementation, development, and inline documentation",
93
+ "tags": '["engineer", "development", "coding", "implementation"]',
94
+ "tools": '["Read", "Write", "Edit", "MultiEdit", "Bash", "Grep", "Glob", "LS", "WebSearch", "TodoWrite"]',
95
+ "temperature": 0.2,
96
+ "when_to_use": [
97
+ "Code implementation needed",
98
+ "Bug fixes required",
99
+ "Refactoring tasks",
100
+ ],
101
+ "specialized_knowledge": [
102
+ "Programming best practices",
103
+ "Design patterns",
104
+ "Code optimization",
105
+ ],
106
+ "unique_capabilities": [
107
+ "Write production code",
108
+ "Debug complex issues",
109
+ "Refactor codebases",
110
+ ],
111
+ "primary_role": "Code implementation and development",
112
+ "specializations": '["coding", "debugging", "refactoring", "optimization"]',
113
+ "authority": "ALL code implementation decisions",
114
+ },
115
+ "qa": {
116
+ **base_config,
117
+ "description": "Quality assurance, testing, and validation",
118
+ "tags": '["qa", "testing", "quality", "validation"]',
119
+ "tools": '["Read", "Write", "Edit", "Bash", "Grep", "Glob", "LS", "TodoWrite"]',
120
+ "temperature": 0.1,
121
+ "when_to_use": [
122
+ "Testing needed",
123
+ "Quality validation",
124
+ "Test coverage analysis",
125
+ ],
126
+ "specialized_knowledge": [
127
+ "Testing methodologies",
128
+ "Quality metrics",
129
+ "Test automation",
130
+ ],
131
+ "unique_capabilities": [
132
+ "Execute test suites",
133
+ "Identify edge cases",
134
+ "Validate quality",
135
+ ],
136
+ "primary_role": "Testing and quality assurance",
137
+ "specializations": '["testing", "validation", "quality-assurance", "coverage"]',
138
+ "authority": "ALL testing and quality decisions",
139
+ },
140
+ "documentation": {
141
+ **base_config,
142
+ "description": "Documentation creation, maintenance, and changelog generation",
143
+ "tags": '["documentation", "writing", "changelog", "docs"]',
144
+ "tools": '["Read", "Write", "Edit", "MultiEdit", "Grep", "Glob", "LS", "WebSearch", "TodoWrite"]',
145
+ "temperature": 0.3,
146
+ "when_to_use": [
147
+ "Documentation updates needed",
148
+ "Changelog generation",
149
+ "README updates",
150
+ ],
151
+ "specialized_knowledge": [
152
+ "Technical writing",
153
+ "Documentation standards",
154
+ "Semantic versioning",
155
+ ],
156
+ "unique_capabilities": [
157
+ "Create clear documentation",
158
+ "Generate changelogs",
159
+ "Maintain docs",
160
+ ],
161
+ "primary_role": "Documentation and technical writing",
162
+ "specializations": '["technical-writing", "changelog", "api-docs", "guides"]',
163
+ "authority": "ALL documentation decisions",
164
+ },
165
+ "research": {
166
+ **base_config,
167
+ "description": "Technical research, analysis, and investigation",
168
+ "tags": '["research", "analysis", "investigation", "evaluation"]',
169
+ "tools": '["Read", "Grep", "Glob", "LS", "WebSearch", "WebFetch", "TodoWrite"]',
170
+ "temperature": 0.4,
171
+ "when_to_use": [
172
+ "Technical research needed",
173
+ "Solution evaluation",
174
+ "Best practices investigation",
175
+ ],
176
+ "specialized_knowledge": [
177
+ "Research methodologies",
178
+ "Technical analysis",
179
+ "Evaluation frameworks",
180
+ ],
181
+ "unique_capabilities": [
182
+ "Deep investigation",
183
+ "Comparative analysis",
184
+ "Evidence-based recommendations",
185
+ ],
186
+ "primary_role": "Research and technical analysis",
187
+ "specializations": '["investigation", "analysis", "evaluation", "recommendations"]',
188
+ "authority": "ALL research decisions",
189
+ },
190
+ "security": {
191
+ **base_config,
192
+ "description": "Security analysis, vulnerability assessment, and protection",
193
+ "tags": '["security", "vulnerability", "protection", "audit"]',
194
+ "tools": '["Read", "Grep", "Glob", "LS", "Bash", "WebSearch", "TodoWrite"]',
195
+ "temperature": 0.1,
196
+ "when_to_use": [
197
+ "Security review needed",
198
+ "Vulnerability assessment",
199
+ "Security audit",
200
+ ],
201
+ "specialized_knowledge": [
202
+ "Security best practices",
203
+ "OWASP guidelines",
204
+ "Vulnerability patterns",
205
+ ],
206
+ "unique_capabilities": [
207
+ "Identify vulnerabilities",
208
+ "Security auditing",
209
+ "Threat modeling",
210
+ ],
211
+ "primary_role": "Security analysis and protection",
212
+ "specializations": '["vulnerability-assessment", "security-audit", "threat-modeling", "protection"]',
213
+ "authority": "ALL security decisions",
214
+ },
215
+ "ops": {
216
+ **base_config,
217
+ "description": "Deployment, operations, and infrastructure management",
218
+ "tags": '["ops", "deployment", "infrastructure", "devops"]',
219
+ "tools": '["Read", "Write", "Edit", "Bash", "Grep", "Glob", "LS", "TodoWrite"]',
220
+ "temperature": 0.2,
221
+ "when_to_use": [
222
+ "Deployment configuration",
223
+ "Infrastructure setup",
224
+ "CI/CD pipeline work",
225
+ ],
226
+ "specialized_knowledge": [
227
+ "Deployment best practices",
228
+ "Infrastructure as code",
229
+ "CI/CD",
230
+ ],
231
+ "unique_capabilities": [
232
+ "Configure deployments",
233
+ "Manage infrastructure",
234
+ "Automate operations",
235
+ ],
236
+ "primary_role": "Operations and deployment management",
237
+ "specializations": '["deployment", "infrastructure", "automation", "monitoring"]',
238
+ "authority": "ALL operations decisions",
239
+ },
240
+ "data_engineer": {
241
+ **base_config,
242
+ "description": "Data pipeline management and AI API integrations",
243
+ "tags": '["data", "pipeline", "etl", "ai-integration"]',
244
+ "tools": '["Read", "Write", "Edit", "Bash", "Grep", "Glob", "LS", "WebSearch", "TodoWrite"]',
245
+ "temperature": 0.2,
246
+ "when_to_use": [
247
+ "Data pipeline setup",
248
+ "Database design",
249
+ "AI API integration",
250
+ ],
251
+ "specialized_knowledge": [
252
+ "Data architectures",
253
+ "ETL processes",
254
+ "AI/ML APIs",
255
+ ],
256
+ "unique_capabilities": [
257
+ "Design data schemas",
258
+ "Build pipelines",
259
+ "Integrate AI services",
260
+ ],
261
+ "primary_role": "Data engineering and AI integration",
262
+ "specializations": '["data-pipelines", "etl", "database", "ai-integration"]',
263
+ "authority": "ALL data engineering decisions",
264
+ },
265
+ "version_control": {
266
+ **base_config,
267
+ "description": "Git operations, version management, and release coordination",
268
+ "tags": '["git", "version-control", "release", "branching"]',
269
+ "tools": '["Read", "Bash", "Grep", "Glob", "LS", "TodoWrite"]',
270
+ "temperature": 0.1,
271
+ "network_access": False, # Git operations are local
272
+ "when_to_use": [
273
+ "Git operations needed",
274
+ "Version bumping",
275
+ "Release management",
276
+ ],
277
+ "specialized_knowledge": [
278
+ "Git workflows",
279
+ "Semantic versioning",
280
+ "Release processes",
281
+ ],
282
+ "unique_capabilities": [
283
+ "Complex git operations",
284
+ "Version management",
285
+ "Release coordination",
286
+ ],
287
+ "primary_role": "Version control and release management",
288
+ "specializations": '["git", "versioning", "branching", "releases"]',
289
+ "authority": "ALL version control decisions",
290
+ },
291
+ }
292
+
293
+ @staticmethod
294
+ def _get_default_config(
295
+ agent_name: str, base_config: Dict[str, Any]
296
+ ) -> Dict[str, Any]:
297
+ """Get default configuration for unknown agent types."""
298
+ return {
299
+ **base_config,
300
+ "description": f"{agent_name.title()} agent for specialized tasks",
301
+ "tags": f'["{agent_name}", "specialized", "mpm"]',
302
+ "tools": '["Read", "Write", "Edit", "Grep", "Glob", "LS", "TodoWrite"]',
303
+ "temperature": 0.3,
304
+ "when_to_use": [f"When {agent_name} expertise is needed"],
305
+ "specialized_knowledge": [f"{agent_name.title()} domain knowledge"],
306
+ "unique_capabilities": [f"{agent_name.title()} specialized operations"],
307
+ "primary_role": f"{agent_name.title()} operations",
308
+ "specializations": f'["{agent_name}"]',
309
+ "authority": f"ALL {agent_name} decisions",
310
+ }