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
@@ -5,122 +5,126 @@ Validates generated content structure and completeness.
5
5
  """
6
6
 
7
7
  import re
8
- from typing import Tuple, List, Set
8
+ from typing import List, Set, Tuple
9
9
 
10
10
 
11
11
  class ContentValidator:
12
12
  """Validates framework CLAUDE.md content for completeness and correctness."""
13
-
13
+
14
14
  # Required sections that must be present
15
15
  REQUIRED_SECTIONS = [
16
- (r'CLAUDE_MD_VERSION:', 'Version metadata'),
17
- (r'## 🤖 AI ASSISTANT ROLE DESIGNATION', 'Role designation section'),
18
- (r'## A\) AGENTS', 'Agents section'),
19
- (r'## B\) TODO AND TASK TOOLS', 'Todo/Task tools section'),
20
- (r'## C\) CLAUDE-PM INIT', 'Claude-PM init section'),
21
- (r'## 🚨 CORE ORCHESTRATION PRINCIPLES', 'Orchestration principles'),
22
- (r'## 🔥🚨 CRITICAL: SUBPROCESS VALIDATION PROTOCOL', 'Subprocess validation'),
23
- (r'## 🚨 CRITICAL DELEGATION CONSTRAINTS', 'Delegation constraints'),
24
- (r'## 🚨 TROUBLESHOOTING', 'Troubleshooting section'),
25
- (r'## Core Responsibilities', 'Core responsibilities'),
16
+ (r"CLAUDE_MD_VERSION:", "Version metadata"),
17
+ (r"## 🤖 AI ASSISTANT ROLE DESIGNATION", "Role designation section"),
18
+ (r"## A\) AGENTS", "Agents section"),
19
+ (r"## B\) TODO AND TASK TOOLS", "Todo/Task tools section"),
20
+ (r"## C\) CLAUDE-PM INIT", "Claude-PM init section"),
21
+ (r"## 🚨 CORE ORCHESTRATION PRINCIPLES", "Orchestration principles"),
22
+ (r"## 🔥🚨 CRITICAL: SUBPROCESS VALIDATION PROTOCOL", "Subprocess validation"),
23
+ (r"## 🚨 CRITICAL DELEGATION CONSTRAINTS", "Delegation constraints"),
24
+ (r"## 🚨 TROUBLESHOOTING", "Troubleshooting section"),
25
+ (r"## Core Responsibilities", "Core responsibilities"),
26
26
  ]
27
-
27
+
28
28
  # Template variables that are allowed to remain unsubstituted for runtime
29
29
  ALLOWED_RUNTIME_VARS = {
30
- '{{DEPLOYMENT_ID}}',
31
- '{{PLATFORM}}',
32
- '{{PYTHON_CMD}}',
33
- '{{PLATFORM_NOTES}}'
30
+ "{{DEPLOYMENT_ID}}",
31
+ "{{PLATFORM}}",
32
+ "{{PYTHON_CMD}}",
33
+ "{{PLATFORM_NOTES}}",
34
34
  }
35
-
35
+
36
36
  def validate_content(self, content: str) -> Tuple[bool, List[str]]:
37
37
  """
38
38
  Validate that generated content has all required sections.
39
-
39
+
40
40
  Args:
41
41
  content: Content to validate
42
-
42
+
43
43
  Returns:
44
44
  Tuple of (is_valid, list_of_issues)
45
45
  """
46
46
  issues = []
47
-
47
+
48
48
  # Check for required sections
49
49
  for pattern, section_name in self.REQUIRED_SECTIONS:
50
50
  if not re.search(pattern, content):
51
51
  issues.append(f"Missing required section: {section_name}")
52
-
52
+
53
53
  # Check for unsubstituted template variables
54
- unsubstituted = re.findall(r'\{\{[^}]+\}\}', content)
55
- unexpected_vars = [var for var in unsubstituted if var not in self.ALLOWED_RUNTIME_VARS]
54
+ unsubstituted = re.findall(r"\{\{[^}]+\}\}", content)
55
+ unexpected_vars = [
56
+ var for var in unsubstituted if var not in self.ALLOWED_RUNTIME_VARS
57
+ ]
56
58
  if unexpected_vars:
57
- issues.append(f"Unsubstituted template variables: {', '.join(set(unexpected_vars))}")
58
-
59
+ issues.append(
60
+ f"Unsubstituted template variables: {', '.join(set(unexpected_vars))}"
61
+ )
62
+
59
63
  # Validate version format - now accepts simple serial numbers
60
- version_match = re.search(r'CLAUDE_MD_VERSION:\s*(\d+)(?:-(\d+))?', content)
64
+ version_match = re.search(r"CLAUDE_MD_VERSION:\s*(\d+)(?:-(\d+))?", content)
61
65
  if not version_match:
62
66
  issues.append("Invalid or missing CLAUDE_MD_VERSION format")
63
-
67
+
64
68
  # Check for proper structure
65
69
  if not content.strip():
66
70
  issues.append("Content is empty")
67
-
71
+
68
72
  # Validate agent section completeness
69
- if '## A) AGENTS' in content:
73
+ if "## A) AGENTS" in content:
70
74
  required_agents = [
71
- 'Documentation Agent',
72
- 'Ticketing Agent',
73
- 'Version Control Agent',
74
- 'QA Agent',
75
- 'Research Agent',
76
- 'Ops Agent',
77
- 'Security Agent',
78
- 'Engineer Agent',
79
- 'Data Engineer Agent'
75
+ "Documentation Agent",
76
+ "Ticketing Agent",
77
+ "Version Control Agent",
78
+ "QA Agent",
79
+ "Research Agent",
80
+ "Ops Agent",
81
+ "Security Agent",
82
+ "Engineer Agent",
83
+ "Data Engineer Agent",
80
84
  ]
81
85
  for agent in required_agents:
82
86
  if agent not in content:
83
87
  issues.append(f"Missing core agent: {agent}")
84
-
88
+
85
89
  return len(issues) == 0, issues
86
-
90
+
87
91
  def validate_section_order(self, sections: List[str]) -> Tuple[bool, List[str]]:
88
92
  """
89
93
  Validate that sections are in the correct order.
90
-
94
+
91
95
  Args:
92
96
  sections: List of section names in order
93
-
97
+
94
98
  Returns:
95
99
  Tuple of (is_valid, list_of_issues)
96
100
  """
97
101
  expected_order = [
98
- 'header',
99
- 'role_designation',
100
- 'agents',
101
- 'todo_task_tools',
102
- 'claude_pm_init',
103
- 'orchestration_principles',
104
- 'subprocess_validation',
105
- 'delegation_constraints',
106
- 'environment_config',
107
- 'troubleshooting',
108
- 'core_responsibilities',
109
- 'footer'
102
+ "header",
103
+ "role_designation",
104
+ "agents",
105
+ "todo_task_tools",
106
+ "claude_pm_init",
107
+ "orchestration_principles",
108
+ "subprocess_validation",
109
+ "delegation_constraints",
110
+ "environment_config",
111
+ "troubleshooting",
112
+ "core_responsibilities",
113
+ "footer",
110
114
  ]
111
-
115
+
112
116
  issues = []
113
-
117
+
114
118
  # Check that all expected sections are present
115
119
  missing = set(expected_order) - set(sections)
116
120
  if missing:
117
121
  issues.append(f"Missing sections: {', '.join(missing)}")
118
-
122
+
119
123
  # Check order (only for sections that exist in both lists)
120
124
  common_sections = [s for s in sections if s in expected_order]
121
125
  expected_common = [s for s in expected_order if s in sections]
122
-
126
+
123
127
  if common_sections != expected_common:
124
128
  issues.append("Sections are not in the expected order")
125
-
126
- return len(issues) == 0, issues
129
+
130
+ return len(issues) == 0, issues
@@ -1,27 +1,32 @@
1
+ from pathlib import Path
2
+
1
3
  """
2
4
  Deployment management for framework CLAUDE.md templates.
3
5
 
4
6
  Handles deployment operations to parent directories.
5
7
  """
6
8
 
7
- from pathlib import Path
8
- from typing import Tuple, Optional
9
9
  from datetime import datetime, timezone
10
- from .version_manager import VersionManager
11
- from .content_validator import ContentValidator
10
+ from typing import Optional, Tuple
12
11
 
13
12
  # Import framework detection utilities
14
13
  from ...utils.framework_detection import is_framework_source_directory
14
+ from .content_validator import ContentValidator
15
+ from .version_manager import VersionManager
15
16
 
16
17
 
17
18
  class DeploymentManager:
18
19
  """Manages deployment of framework CLAUDE.md to parent directories."""
19
-
20
- def __init__(self, version_manager: VersionManager, validator: ContentValidator,
21
- target_filename: str = "INSTRUCTIONS.md"):
20
+
21
+ def __init__(
22
+ self,
23
+ version_manager: VersionManager,
24
+ validator: ContentValidator,
25
+ target_filename: str = "INSTRUCTIONS.md",
26
+ ):
22
27
  """
23
28
  Initialize deployment manager.
24
-
29
+
25
30
  Args:
26
31
  version_manager: Version management instance
27
32
  validator: Content validator instance
@@ -31,49 +36,55 @@ class DeploymentManager:
31
36
  self.version_manager = version_manager
32
37
  self.validator = validator
33
38
  self.target_filename = target_filename
34
-
35
- def deploy_to_parent(self,
36
- content: str,
37
- parent_path: Path,
38
- force: bool = False) -> Tuple[bool, str]:
39
+
40
+ def deploy_to_parent(
41
+ self, content: str, parent_path: Path, force: bool = False
42
+ ) -> Tuple[bool, str]:
39
43
  """
40
44
  Deploy generated content to a parent directory.
41
-
45
+
42
46
  WHY: Enhanced to ensure fresh agent capabilities generation on each deployment.
43
47
  - Checks for template variables that need processing
44
48
  - Re-processes content to get current deployed agents
45
49
  - Ensures INSTRUCTIONS.md always reflects latest agent configuration
46
-
50
+
47
51
  Args:
48
52
  content: Content to deploy
49
53
  parent_path: Path to parent directory
50
54
  force: Force deployment even if versions match
51
-
55
+
52
56
  Returns:
53
57
  Tuple of (success, message)
54
58
  """
55
59
  # Check if we're in the framework source directory
56
60
  is_framework, markers = is_framework_source_directory(parent_path)
57
61
  if is_framework:
58
- return True, f"Skipping deployment - detected framework source directory (markers: {', '.join(markers)})"
59
-
62
+ return (
63
+ True,
64
+ f"Skipping deployment - detected framework source directory (markers: {', '.join(markers)})",
65
+ )
66
+
60
67
  # Use configured target filename
61
68
  target_file = parent_path / self.target_filename
62
-
69
+
63
70
  # Check if content contains template variables that need processing
64
- if '{{capabilities-list}}' in content:
71
+ if "{{capabilities-list}}" in content:
65
72
  # Content needs processing - let ContentAssembler handle it
66
73
  from .content_assembler import ContentAssembler
74
+
67
75
  assembler = ContentAssembler()
68
-
76
+
69
77
  # Re-process content to get fresh agent data
70
78
  # Pass content as a single section to preserve structure
71
79
  processed_content = assembler.apply_template_variables(content)
72
80
  content = processed_content
73
-
81
+
74
82
  # Validate content before deployment
75
83
  # Skip validation for INSTRUCTIONS.md format (different from CLAUDE.md)
76
- if "<!-- FRAMEWORK_VERSION:" in content and "# Claude Multi-Agent Project Manager Instructions" in content:
84
+ if (
85
+ "<!-- FRAMEWORK_VERSION:" in content
86
+ and "# Claude Multi-Agent Project Manager Instructions" in content
87
+ ):
77
88
  # This is INSTRUCTIONS.md format, skip CLAUDE.md validation
78
89
  pass
79
90
  else:
@@ -81,82 +92,90 @@ class DeploymentManager:
81
92
  is_valid, issues = self.validator.validate_content(content)
82
93
  if not is_valid:
83
94
  return False, f"Validation failed: {'; '.join(issues)}"
84
-
95
+
85
96
  # Check if file exists and compare versions
86
97
  if target_file.exists() and not force:
87
- with open(target_file, 'r') as f:
98
+ with open(target_file, "r") as f:
88
99
  existing_content = f.read()
89
- existing_fw_ver = self.version_manager.parse_current_version(existing_content)
90
-
100
+ existing_fw_ver = self.version_manager.parse_current_version(
101
+ existing_content
102
+ )
103
+
91
104
  if existing_fw_ver == self.version_manager.framework_version:
92
105
  return True, f"Version {existing_fw_ver} already deployed"
93
-
106
+
94
107
  # Deploy
95
108
  try:
96
109
  # Ensure parent directory exists
97
110
  parent_path.mkdir(parents=True, exist_ok=True)
98
-
111
+
99
112
  # Write content
100
- with open(target_file, 'w') as f:
113
+ with open(target_file, "w") as f:
101
114
  f.write(content)
102
-
115
+
103
116
  # Get version info for success message
104
117
  fw_ver = self.version_manager.parse_current_version(content)
105
118
  version_str = fw_ver
106
-
119
+
107
120
  return True, f"Successfully deployed version {version_str}"
108
121
  except Exception as e:
109
122
  return False, f"Deployment failed: {str(e)}"
110
-
123
+
111
124
  def check_deployment_needed(self, parent_path: Path) -> Tuple[bool, str]:
112
125
  """
113
126
  Check if deployment is needed for a parent directory.
114
-
127
+
115
128
  Args:
116
129
  parent_path: Path to parent directory
117
-
130
+
118
131
  Returns:
119
132
  Tuple of (needed, reason)
120
133
  """
121
134
  target_file = parent_path / self.target_filename
122
-
135
+
123
136
  if not target_file.exists():
124
137
  return True, f"{self.target_filename} does not exist"
125
-
138
+
126
139
  try:
127
- with open(target_file, 'r') as f:
140
+ with open(target_file, "r") as f:
128
141
  existing_content = f.read()
129
- existing_fw_ver = self.version_manager.parse_current_version(existing_content)
130
-
142
+ existing_fw_ver = self.version_manager.parse_current_version(
143
+ existing_content
144
+ )
145
+
131
146
  if existing_fw_ver != self.version_manager.framework_version:
132
- return True, f"Version mismatch: {existing_fw_ver} vs {self.version_manager.framework_version}"
133
-
147
+ return (
148
+ True,
149
+ f"Version mismatch: {existing_fw_ver} vs {self.version_manager.framework_version}",
150
+ )
151
+
134
152
  return False, "Already up to date"
135
153
  except Exception as e:
136
154
  return True, f"Error checking existing file: {str(e)}"
137
-
155
+
138
156
  def backup_existing(self, parent_path: Path) -> Optional[Path]:
139
157
  """
140
158
  Create a backup of existing target file before deployment.
141
-
159
+
142
160
  Args:
143
161
  parent_path: Path to parent directory
144
-
162
+
145
163
  Returns:
146
164
  Path to backup file if created, None otherwise
147
165
  """
148
166
  target_file = parent_path / self.target_filename
149
-
167
+
150
168
  if not target_file.exists():
151
169
  return None
152
-
170
+
153
171
  # Create backup filename with timestamp
154
172
  timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
155
173
  backup_file = parent_path / f"{self.target_filename}.backup.{timestamp}"
156
-
174
+
157
175
  try:
158
176
  import shutil
177
+
159
178
  shutil.copy2(target_file, backup_file)
160
179
  return backup_file
161
180
  except Exception:
162
- return None
181
+ return None
@@ -4,36 +4,36 @@ Section generators for framework CLAUDE.md template.
4
4
  This module provides base classes and registry for section generators.
5
5
  """
6
6
 
7
- from typing import Dict, Any, Optional
8
7
  from abc import ABC, abstractmethod
9
8
  from datetime import datetime
9
+ from typing import Any, Dict, Optional
10
10
 
11
11
 
12
12
  class BaseSectionGenerator(ABC):
13
13
  """Base class for all section generators."""
14
-
14
+
15
15
  def __init__(self, framework_version: str):
16
16
  """
17
17
  Initialize section generator.
18
-
18
+
19
19
  Args:
20
20
  framework_version: Current framework version
21
21
  """
22
22
  self.framework_version = framework_version
23
-
23
+
24
24
  @abstractmethod
25
25
  def generate(self, data: Dict[str, Any]) -> str:
26
26
  """
27
27
  Generate section content.
28
-
28
+
29
29
  Args:
30
30
  data: Section-specific data
31
-
31
+
32
32
  Returns:
33
33
  str: Generated section content
34
34
  """
35
35
  pass
36
-
36
+
37
37
  def get_timestamp(self) -> str:
38
38
  """Get current UTC timestamp."""
39
39
  return datetime.utcnow().isoformat()
@@ -41,33 +41,33 @@ class BaseSectionGenerator(ABC):
41
41
 
42
42
  class SectionGeneratorRegistry:
43
43
  """Registry for section generators."""
44
-
44
+
45
45
  def __init__(self):
46
46
  """Initialize registry."""
47
47
  self._generators = {}
48
-
48
+
49
49
  def register(self, name: str, generator_class: type):
50
50
  """
51
51
  Register a section generator.
52
-
52
+
53
53
  Args:
54
54
  name: Section name
55
55
  generator_class: Generator class
56
56
  """
57
57
  self._generators[name] = generator_class
58
-
58
+
59
59
  def get(self, name: str) -> Optional[type]:
60
60
  """
61
61
  Get a section generator class.
62
-
62
+
63
63
  Args:
64
64
  name: Section name
65
-
65
+
66
66
  Returns:
67
67
  Generator class or None
68
68
  """
69
69
  return self._generators.get(name)
70
-
70
+
71
71
  def list_sections(self) -> list:
72
72
  """Get list of registered section names."""
73
73
  return list(self._generators.keys())
@@ -76,31 +76,31 @@ class SectionGeneratorRegistry:
76
76
  # Global registry instance
77
77
  section_registry = SectionGeneratorRegistry()
78
78
 
79
+ from .agents import AgentsGenerator
80
+ from .claude_pm_init import ClaudePmInitGenerator
81
+ from .core_responsibilities import CoreResponsibilitiesGenerator
82
+ from .delegation_constraints import DelegationConstraintsGenerator
83
+ from .environment_config import EnvironmentConfigGenerator
84
+ from .footer import FooterGenerator
79
85
 
80
86
  # Import and register all section generators
81
87
  from .header import HeaderGenerator
82
- from .role_designation import RoleDesignationGenerator
83
- from .agents import AgentsGenerator
84
- from .todo_task_tools import TodoTaskToolsGenerator
85
- from .claude_pm_init import ClaudePmInitGenerator
86
88
  from .orchestration_principles import OrchestrationPrinciplesGenerator
89
+ from .role_designation import RoleDesignationGenerator
87
90
  from .subprocess_validation import SubprocessValidationGenerator
88
- from .delegation_constraints import DelegationConstraintsGenerator
89
- from .environment_config import EnvironmentConfigGenerator
91
+ from .todo_task_tools import TodoTaskToolsGenerator
90
92
  from .troubleshooting import TroubleshootingGenerator
91
- from .core_responsibilities import CoreResponsibilitiesGenerator
92
- from .footer import FooterGenerator
93
93
 
94
94
  # Register all generators
95
- section_registry.register('header', HeaderGenerator)
96
- section_registry.register('role_designation', RoleDesignationGenerator)
97
- section_registry.register('agents', AgentsGenerator)
98
- section_registry.register('todo_task_tools', TodoTaskToolsGenerator)
99
- section_registry.register('claude_pm_init', ClaudePmInitGenerator)
100
- section_registry.register('orchestration_principles', OrchestrationPrinciplesGenerator)
101
- section_registry.register('subprocess_validation', SubprocessValidationGenerator)
102
- section_registry.register('delegation_constraints', DelegationConstraintsGenerator)
103
- section_registry.register('environment_config', EnvironmentConfigGenerator)
104
- section_registry.register('troubleshooting', TroubleshootingGenerator)
105
- section_registry.register('core_responsibilities', CoreResponsibilitiesGenerator)
106
- section_registry.register('footer', FooterGenerator)
95
+ section_registry.register("header", HeaderGenerator)
96
+ section_registry.register("role_designation", RoleDesignationGenerator)
97
+ section_registry.register("agents", AgentsGenerator)
98
+ section_registry.register("todo_task_tools", TodoTaskToolsGenerator)
99
+ section_registry.register("claude_pm_init", ClaudePmInitGenerator)
100
+ section_registry.register("orchestration_principles", OrchestrationPrinciplesGenerator)
101
+ section_registry.register("subprocess_validation", SubprocessValidationGenerator)
102
+ section_registry.register("delegation_constraints", DelegationConstraintsGenerator)
103
+ section_registry.register("environment_config", EnvironmentConfigGenerator)
104
+ section_registry.register("troubleshooting", TroubleshootingGenerator)
105
+ section_registry.register("core_responsibilities", CoreResponsibilitiesGenerator)
106
+ section_registry.register("footer", FooterGenerator)