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,468 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Memory Template Generator
4
+ ========================
5
+
6
+ Generates project-specific memory templates for agents based on project analysis.
7
+
8
+ This module provides:
9
+ - Project-specific memory template creation
10
+ - Section generation based on project characteristics
11
+ - Domain-specific knowledge starters
12
+ - Fallback templates when project analysis fails
13
+ """
14
+
15
+ import logging
16
+ from datetime import datetime
17
+ from pathlib import Path
18
+ from typing import Any, Dict, List
19
+
20
+ from claude_mpm.core.config import Config
21
+ from claude_mpm.services.project.analyzer import ProjectAnalyzer
22
+
23
+
24
+ class MemoryTemplateGenerator:
25
+ """Generates project-specific memory templates for agents.
26
+
27
+ WHY: Instead of generic templates, agents need project-specific knowledge
28
+ from the start. This class analyzes the current project and creates contextual
29
+ memories with actual project characteristics.
30
+ """
31
+
32
+ REQUIRED_SECTIONS = [
33
+ "Project Architecture",
34
+ "Implementation Guidelines",
35
+ "Common Mistakes to Avoid",
36
+ "Current Technical Context",
37
+ ]
38
+
39
+ def __init__(
40
+ self, config: Config, working_directory: Path, project_analyzer: ProjectAnalyzer
41
+ ):
42
+ """Initialize the template generator.
43
+
44
+ Args:
45
+ config: Configuration object
46
+ working_directory: Working directory path
47
+ project_analyzer: Project analyzer instance
48
+ """
49
+ self.config = config
50
+ self.working_directory = working_directory
51
+ self.project_analyzer = project_analyzer
52
+ self.logger = logging.getLogger(f"{__name__}.{self.__class__.__name__}")
53
+
54
+ def create_default_memory(self, agent_id: str, limits: Dict[str, Any]) -> str:
55
+ """Create project-specific default memory file for agent.
56
+
57
+ Args:
58
+ agent_id: The agent identifier
59
+ limits: Memory limits for this agent
60
+
61
+ Returns:
62
+ str: The project-specific memory template content
63
+ """
64
+ # Convert agent_id to proper name, handling cases like "test_agent" -> "Test"
65
+ agent_name = agent_id.replace("_agent", "").replace("_", " ").title()
66
+ timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
67
+
68
+ # Analyze the project for context-specific content
69
+ try:
70
+ project_characteristics = self.project_analyzer.analyze_project()
71
+ project_context = self.project_analyzer.get_project_context_summary()
72
+
73
+ self.logger.info(
74
+ f"Creating project-specific memory for {agent_id} using analyzed project context"
75
+ )
76
+ except Exception as e:
77
+ self.logger.warning(
78
+ f"Error analyzing project for {agent_id}, falling back to basic template: {e}"
79
+ )
80
+ return self._create_basic_memory_template(agent_id, limits)
81
+
82
+ # Create project-specific sections
83
+ architecture_items = self._generate_architecture_section(
84
+ project_characteristics
85
+ )
86
+ coding_patterns = self._generate_coding_patterns_section(
87
+ project_characteristics
88
+ )
89
+ implementation_guidelines = self._generate_implementation_guidelines(
90
+ project_characteristics
91
+ )
92
+ tech_context = self._generate_technical_context(project_characteristics)
93
+ integration_points = self._generate_integration_points(project_characteristics)
94
+
95
+ template = f"""# {agent_name} Agent Memory - {project_characteristics.project_name}
96
+
97
+ <!-- MEMORY LIMITS: {limits['max_file_size_kb']}KB max | {limits['max_sections']} sections max | {limits['max_items_per_section']} items per section -->
98
+ <!-- Last Updated: {timestamp} | Auto-updated by: {agent_id} -->
99
+
100
+ ## Project Context
101
+ {project_context}
102
+
103
+ ## Project Architecture
104
+ {self._format_section_items(architecture_items)}
105
+
106
+ ## Coding Patterns Learned
107
+ {self._format_section_items(coding_patterns)}
108
+
109
+ ## Implementation Guidelines
110
+ {self._format_section_items(implementation_guidelines)}
111
+
112
+ ## Domain-Specific Knowledge
113
+ <!-- Agent-specific knowledge for {project_characteristics.project_name} domain -->
114
+ {self._generate_domain_knowledge_starters(project_characteristics, agent_id)}
115
+
116
+ ## Effective Strategies
117
+ <!-- Successful approaches discovered through experience -->
118
+
119
+ ## Common Mistakes to Avoid
120
+ {self._format_section_items(self._generate_common_mistakes(project_characteristics))}
121
+
122
+ ## Integration Points
123
+ {self._format_section_items(integration_points)}
124
+
125
+ ## Performance Considerations
126
+ {self._format_section_items(self._generate_performance_considerations(project_characteristics))}
127
+
128
+ ## Current Technical Context
129
+ {self._format_section_items(tech_context)}
130
+
131
+ ## Recent Learnings
132
+ <!-- Most recent discoveries and insights -->
133
+ """
134
+
135
+ return template
136
+
137
+ def _create_basic_memory_template(
138
+ self, agent_id: str, limits: Dict[str, Any]
139
+ ) -> str:
140
+ """Create basic memory template when project analysis fails.
141
+
142
+ Args:
143
+ agent_id: The agent identifier
144
+ limits: Memory limits for this agent
145
+
146
+ Returns:
147
+ str: Basic memory template
148
+ """
149
+ agent_name = agent_id.replace("_agent", "").replace("_", " ").title()
150
+ project_name = self.working_directory.name
151
+ timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
152
+
153
+ return f"""# {agent_name} Agent Memory - {project_name}
154
+
155
+ <!-- MEMORY LIMITS: {limits['max_file_size_kb']}KB max | {limits['max_sections']} sections max | {limits['max_items_per_section']} items per section -->
156
+ <!-- Last Updated: {timestamp} | Auto-updated by: {agent_id} -->
157
+
158
+ ## Project Context
159
+ {project_name}: Software project requiring analysis
160
+
161
+ ## Project Architecture
162
+ - Analyze project structure to understand architecture patterns
163
+
164
+ ## Coding Patterns Learned
165
+ - Observe codebase patterns and conventions during tasks
166
+
167
+ ## Implementation Guidelines
168
+ - Extract implementation guidelines from project documentation
169
+
170
+ ## Domain-Specific Knowledge
171
+ <!-- Agent-specific knowledge accumulates here -->
172
+
173
+ ## Effective Strategies
174
+ <!-- Successful approaches discovered through experience -->
175
+
176
+ ## Common Mistakes to Avoid
177
+ - Learn from errors encountered during project work
178
+
179
+ ## Integration Points
180
+ <!-- Key interfaces and integration patterns -->
181
+
182
+ ## Performance Considerations
183
+ <!-- Performance insights and optimization patterns -->
184
+
185
+ ## Current Technical Context
186
+ - Project analysis pending - gather context during tasks
187
+
188
+ ## Recent Learnings
189
+ <!-- Most recent discoveries and insights -->
190
+ """
191
+
192
+ def _generate_architecture_section(self, characteristics) -> List[str]:
193
+ """Generate architecture section items based on project analysis."""
194
+ items = []
195
+
196
+ # Architecture type
197
+ items.append(
198
+ f"{characteristics.architecture_type} with {characteristics.primary_language or 'mixed'} implementation"
199
+ )
200
+
201
+ # Key directories structure
202
+ if characteristics.key_directories:
203
+ key_dirs = ", ".join(characteristics.key_directories[:5])
204
+ items.append(f"Main directories: {key_dirs}")
205
+
206
+ # Main modules
207
+ if characteristics.main_modules:
208
+ modules = ", ".join(characteristics.main_modules[:4])
209
+ items.append(f"Core modules: {modules}")
210
+
211
+ # Entry points
212
+ if characteristics.entry_points:
213
+ entries = ", ".join(characteristics.entry_points[:3])
214
+ items.append(f"Entry points: {entries}")
215
+
216
+ # Frameworks affecting architecture
217
+ if characteristics.web_frameworks:
218
+ frameworks = ", ".join(characteristics.web_frameworks[:3])
219
+ items.append(f"Web framework stack: {frameworks}")
220
+
221
+ return items[:8] # Limit to prevent overwhelming
222
+
223
+ def _generate_coding_patterns_section(self, characteristics) -> List[str]:
224
+ """Generate coding patterns section based on project analysis."""
225
+ items = []
226
+
227
+ # Language-specific patterns
228
+ if characteristics.primary_language == "python":
229
+ items.append("Python project: use type hints, follow PEP 8 conventions")
230
+ if "django" in [fw.lower() for fw in characteristics.web_frameworks]:
231
+ items.append("Django patterns: models, views, templates separation")
232
+ elif "flask" in [fw.lower() for fw in characteristics.web_frameworks]:
233
+ items.append(
234
+ "Flask patterns: blueprint organization, app factory pattern"
235
+ )
236
+ elif characteristics.primary_language == "node_js":
237
+ items.append("Node.js project: use async/await, ES6+ features")
238
+ if "express" in [fw.lower() for fw in characteristics.web_frameworks]:
239
+ items.append("Express patterns: middleware usage, route organization")
240
+
241
+ # Framework-specific patterns
242
+ for framework in characteristics.frameworks[:3]:
243
+ if "react" in framework.lower():
244
+ items.append("React patterns: component composition, hooks usage")
245
+ elif "vue" in framework.lower():
246
+ items.append("Vue patterns: single file components, composition API")
247
+
248
+ # Code conventions found
249
+ for convention in characteristics.code_conventions[:3]:
250
+ items.append(f"Project uses: {convention}")
251
+
252
+ return items[:8]
253
+
254
+ def _generate_implementation_guidelines(self, characteristics) -> List[str]:
255
+ """Generate implementation guidelines based on project analysis."""
256
+ items = []
257
+
258
+ # Package manager guidance
259
+ if characteristics.package_manager:
260
+ items.append(
261
+ f"Use {characteristics.package_manager} for dependency management"
262
+ )
263
+
264
+ # Testing guidelines
265
+ if characteristics.testing_framework:
266
+ items.append(f"Write tests using {characteristics.testing_framework}")
267
+
268
+ # Test patterns
269
+ for pattern in characteristics.test_patterns[:2]:
270
+ items.append(f"Follow {pattern.lower()}")
271
+
272
+ # Build tools
273
+ if characteristics.build_tools:
274
+ tools = ", ".join(characteristics.build_tools[:2])
275
+ items.append(f"Use build tools: {tools}")
276
+
277
+ # Configuration patterns
278
+ for config_pattern in characteristics.configuration_patterns[:2]:
279
+ items.append(f"Configuration: {config_pattern}")
280
+
281
+ # Important files to reference
282
+ important_configs = characteristics.important_configs[:3]
283
+ if important_configs:
284
+ configs = ", ".join(important_configs)
285
+ items.append(f"Key config files: {configs}")
286
+
287
+ return items[:8]
288
+
289
+ def _generate_technical_context(self, characteristics) -> List[str]:
290
+ """Generate current technical context based on project analysis."""
291
+ items = []
292
+
293
+ # Technology stack summary
294
+ tech_stack = []
295
+ if characteristics.primary_language:
296
+ tech_stack.append(characteristics.primary_language)
297
+ tech_stack.extend(characteristics.frameworks[:2])
298
+ if tech_stack:
299
+ items.append(f"Tech stack: {', '.join(tech_stack)}")
300
+
301
+ # Databases in use
302
+ if characteristics.databases:
303
+ dbs = ", ".join(characteristics.databases[:3])
304
+ items.append(f"Data storage: {dbs}")
305
+
306
+ # API patterns
307
+ if characteristics.api_patterns:
308
+ apis = ", ".join(characteristics.api_patterns[:2])
309
+ items.append(f"API patterns: {apis}")
310
+
311
+ # Key dependencies
312
+ if characteristics.key_dependencies:
313
+ deps = ", ".join(characteristics.key_dependencies[:4])
314
+ items.append(f"Key dependencies: {deps}")
315
+
316
+ # Documentation available
317
+ if characteristics.documentation_files:
318
+ docs = ", ".join(characteristics.documentation_files[:3])
319
+ items.append(f"Documentation: {docs}")
320
+
321
+ return items[:8]
322
+
323
+ def _generate_integration_points(self, characteristics) -> List[str]:
324
+ """Generate integration points based on project analysis."""
325
+ items = []
326
+
327
+ # Database integrations
328
+ for db in characteristics.databases[:3]:
329
+ items.append(f"{db.title()} database integration")
330
+
331
+ # Web framework integrations
332
+ for framework in characteristics.web_frameworks[:2]:
333
+ items.append(f"{framework} web framework integration")
334
+
335
+ # API integrations
336
+ for api_pattern in characteristics.api_patterns[:2]:
337
+ items.append(f"{api_pattern} integration pattern")
338
+
339
+ # Common integration patterns based on dependencies
340
+ integration_deps = [
341
+ dep
342
+ for dep in characteristics.key_dependencies
343
+ if any(
344
+ keyword in dep.lower()
345
+ for keyword in ["redis", "rabbit", "celery", "kafka", "docker"]
346
+ )
347
+ ]
348
+ for dep in integration_deps[:3]:
349
+ items.append(f"{dep} integration")
350
+
351
+ return items[:6]
352
+
353
+ def _generate_common_mistakes(self, characteristics) -> List[str]:
354
+ """Generate common mistakes based on project type and stack."""
355
+ items = []
356
+
357
+ # Language-specific mistakes
358
+ if characteristics.primary_language == "python":
359
+ items.append("Avoid circular imports - use late imports when needed")
360
+ items.append(
361
+ "Don't ignore virtual environment - always activate before work"
362
+ )
363
+ elif characteristics.primary_language == "node_js":
364
+ items.append("Avoid callback hell - use async/await consistently")
365
+ items.append("Don't commit node_modules - ensure .gitignore is correct")
366
+
367
+ # Framework-specific mistakes
368
+ if "django" in [fw.lower() for fw in characteristics.web_frameworks]:
369
+ items.append("Don't skip migrations - always create and apply them")
370
+ elif "flask" in [fw.lower() for fw in characteristics.web_frameworks]:
371
+ items.append("Avoid app context issues - use proper application factory")
372
+
373
+ # Database-specific mistakes
374
+ if characteristics.databases:
375
+ items.append("Don't ignore database transactions in multi-step operations")
376
+ items.append("Avoid N+1 queries - use proper joins or prefetching")
377
+
378
+ # Testing mistakes
379
+ if characteristics.testing_framework:
380
+ items.append(
381
+ "Don't skip test isolation - ensure tests can run independently"
382
+ )
383
+
384
+ return items[:8]
385
+
386
+ def _generate_performance_considerations(self, characteristics) -> List[str]:
387
+ """Generate performance considerations based on project stack."""
388
+ items = []
389
+
390
+ # Language-specific performance
391
+ if characteristics.primary_language == "python":
392
+ items.append("Use list comprehensions over loops where appropriate")
393
+ items.append("Consider caching for expensive operations")
394
+ elif characteristics.primary_language == "node_js":
395
+ items.append("Leverage event loop - avoid blocking operations")
396
+ items.append("Use streams for large data processing")
397
+
398
+ # Database performance
399
+ if characteristics.databases:
400
+ items.append("Index frequently queried columns")
401
+ items.append("Use connection pooling for database connections")
402
+
403
+ # Web framework performance
404
+ if characteristics.web_frameworks:
405
+ items.append("Implement appropriate caching strategies")
406
+ items.append("Optimize static asset delivery")
407
+
408
+ # Framework-specific performance
409
+ if "react" in [fw.lower() for fw in characteristics.frameworks]:
410
+ items.append("Use React.memo for expensive component renders")
411
+
412
+ return items[:6]
413
+
414
+ def _generate_domain_knowledge_starters(
415
+ self, characteristics, agent_id: str
416
+ ) -> str:
417
+ """Generate domain-specific knowledge starters based on project and agent type."""
418
+ items = []
419
+
420
+ # Project terminology
421
+ if characteristics.project_terminology:
422
+ terms = ", ".join(characteristics.project_terminology[:4])
423
+ items.append(f"- Key project terms: {terms}")
424
+
425
+ # Agent-specific starters
426
+ if "research" in agent_id.lower():
427
+ items.append(
428
+ "- Focus on code analysis, pattern discovery, and architectural insights"
429
+ )
430
+ if characteristics.documentation_files:
431
+ items.append(
432
+ "- Prioritize documentation analysis for comprehensive understanding"
433
+ )
434
+ elif "engineer" in agent_id.lower():
435
+ items.append(
436
+ "- Focus on implementation patterns, coding standards, and best practices"
437
+ )
438
+ if characteristics.testing_framework:
439
+ items.append(
440
+ f"- Ensure test coverage using {characteristics.testing_framework}"
441
+ )
442
+ elif "pm" in agent_id.lower() or "manager" in agent_id.lower():
443
+ items.append(
444
+ "- Focus on project coordination, task delegation, and progress tracking"
445
+ )
446
+ items.append(
447
+ "- Monitor integration points and cross-component dependencies"
448
+ )
449
+
450
+ return (
451
+ "\n".join(items)
452
+ if items
453
+ else "<!-- Domain knowledge will accumulate here -->"
454
+ )
455
+
456
+ def _format_section_items(self, items: List[str]) -> str:
457
+ """Format list of items as markdown bullet points."""
458
+ if not items:
459
+ return "<!-- Items will be added as knowledge accumulates -->"
460
+
461
+ formatted_items = []
462
+ for item in items:
463
+ # Ensure each item starts with a dash and is properly formatted
464
+ if not item.startswith("- "):
465
+ item = f"- {item}"
466
+ formatted_items.append(item)
467
+
468
+ return "\n".join(formatted_items)
@@ -1,18 +1,15 @@
1
1
  """Agent registry services for discovery and tracking."""
2
2
 
3
- from .agent_registry import (
4
- AgentRegistry,
5
- AgentMetadata,
6
- AgentTier,
7
- AgentType,
8
- )
3
+ from claude_mpm.core.unified_agent_registry import AgentMetadata, AgentTier, AgentType
4
+ from claude_mpm.core.unified_agent_registry import UnifiedAgentRegistry as AgentRegistry
5
+
9
6
  from .deployed_agent_discovery import DeployedAgentDiscovery
10
7
  from .modification_tracker import (
11
- AgentModificationTracker,
12
- ModificationType,
13
- ModificationTier,
14
8
  AgentModification,
9
+ AgentModificationTracker,
15
10
  ModificationHistory,
11
+ ModificationTier,
12
+ ModificationType,
16
13
  )
17
14
 
18
15
  __all__ = [
@@ -26,4 +23,4 @@ __all__ = [
26
23
  "ModificationTier",
27
24
  "AgentModification",
28
25
  "ModificationHistory",
29
- ]
26
+ ]