claude-mpm 3.9.9__py3-none-any.whl → 4.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +2 -2
  3. claude_mpm/__main__.py +3 -2
  4. claude_mpm/agents/__init__.py +85 -79
  5. claude_mpm/agents/agent_loader.py +464 -1003
  6. claude_mpm/agents/agent_loader_integration.py +45 -45
  7. claude_mpm/agents/agents_metadata.py +29 -30
  8. claude_mpm/agents/async_agent_loader.py +156 -138
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/base_agent_loader.py +179 -151
  11. claude_mpm/agents/frontmatter_validator.py +229 -130
  12. claude_mpm/agents/schema/agent_schema.json +1 -1
  13. claude_mpm/agents/system_agent_config.py +213 -147
  14. claude_mpm/agents/templates/__init__.py +13 -13
  15. claude_mpm/agents/templates/code_analyzer.json +2 -2
  16. claude_mpm/agents/templates/data_engineer.json +1 -1
  17. claude_mpm/agents/templates/documentation.json +23 -11
  18. claude_mpm/agents/templates/engineer.json +22 -6
  19. claude_mpm/agents/templates/memory_manager.json +155 -0
  20. claude_mpm/agents/templates/ops.json +2 -2
  21. claude_mpm/agents/templates/project_organizer.json +1 -1
  22. claude_mpm/agents/templates/qa.json +1 -1
  23. claude_mpm/agents/templates/refactoring_engineer.json +222 -0
  24. claude_mpm/agents/templates/research.json +20 -14
  25. claude_mpm/agents/templates/security.json +1 -1
  26. claude_mpm/agents/templates/ticketing.json +1 -1
  27. claude_mpm/agents/templates/version_control.json +1 -1
  28. claude_mpm/agents/templates/web_qa.json +3 -1
  29. claude_mpm/agents/templates/web_ui.json +2 -2
  30. claude_mpm/cli/__init__.py +90 -49
  31. claude_mpm/cli/__main__.py +3 -2
  32. claude_mpm/cli/commands/__init__.py +21 -18
  33. claude_mpm/cli/commands/agents.py +279 -247
  34. claude_mpm/cli/commands/aggregate.py +138 -157
  35. claude_mpm/cli/commands/cleanup.py +147 -147
  36. claude_mpm/cli/commands/config.py +93 -76
  37. claude_mpm/cli/commands/info.py +17 -16
  38. claude_mpm/cli/commands/mcp.py +143 -762
  39. claude_mpm/cli/commands/mcp_command_router.py +139 -0
  40. claude_mpm/cli/commands/mcp_config_commands.py +20 -0
  41. claude_mpm/cli/commands/mcp_install_commands.py +20 -0
  42. claude_mpm/cli/commands/mcp_server_commands.py +175 -0
  43. claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
  44. claude_mpm/cli/commands/memory.py +239 -203
  45. claude_mpm/cli/commands/monitor.py +203 -81
  46. claude_mpm/cli/commands/run.py +380 -429
  47. claude_mpm/cli/commands/run_config_checker.py +160 -0
  48. claude_mpm/cli/commands/socketio_monitor.py +235 -0
  49. claude_mpm/cli/commands/tickets.py +305 -197
  50. claude_mpm/cli/parser.py +24 -1150
  51. claude_mpm/cli/parsers/__init__.py +29 -0
  52. claude_mpm/cli/parsers/agents_parser.py +136 -0
  53. claude_mpm/cli/parsers/base_parser.py +331 -0
  54. claude_mpm/cli/parsers/config_parser.py +85 -0
  55. claude_mpm/cli/parsers/mcp_parser.py +152 -0
  56. claude_mpm/cli/parsers/memory_parser.py +138 -0
  57. claude_mpm/cli/parsers/monitor_parser.py +104 -0
  58. claude_mpm/cli/parsers/run_parser.py +147 -0
  59. claude_mpm/cli/parsers/tickets_parser.py +203 -0
  60. claude_mpm/cli/ticket_cli.py +7 -3
  61. claude_mpm/cli/utils.py +55 -37
  62. claude_mpm/cli_module/__init__.py +6 -6
  63. claude_mpm/cli_module/args.py +188 -140
  64. claude_mpm/cli_module/commands.py +79 -70
  65. claude_mpm/cli_module/migration_example.py +38 -60
  66. claude_mpm/config/__init__.py +32 -25
  67. claude_mpm/config/agent_config.py +151 -119
  68. claude_mpm/config/experimental_features.py +217 -0
  69. claude_mpm/config/paths.py +94 -208
  70. claude_mpm/config/socketio_config.py +84 -73
  71. claude_mpm/constants.py +36 -18
  72. claude_mpm/core/__init__.py +9 -6
  73. claude_mpm/core/agent_name_normalizer.py +68 -71
  74. claude_mpm/core/agent_registry.py +372 -521
  75. claude_mpm/core/agent_session_manager.py +74 -63
  76. claude_mpm/core/base_service.py +116 -87
  77. claude_mpm/core/cache.py +119 -153
  78. claude_mpm/core/claude_runner.py +425 -1120
  79. claude_mpm/core/config.py +263 -168
  80. claude_mpm/core/config_aliases.py +69 -61
  81. claude_mpm/core/config_constants.py +292 -0
  82. claude_mpm/core/constants.py +57 -99
  83. claude_mpm/core/container.py +211 -178
  84. claude_mpm/core/exceptions.py +233 -89
  85. claude_mpm/core/factories.py +92 -54
  86. claude_mpm/core/framework_loader.py +378 -220
  87. claude_mpm/core/hook_manager.py +198 -83
  88. claude_mpm/core/hook_performance_config.py +136 -0
  89. claude_mpm/core/injectable_service.py +61 -55
  90. claude_mpm/core/interactive_session.py +165 -155
  91. claude_mpm/core/interfaces.py +221 -195
  92. claude_mpm/core/lazy.py +96 -96
  93. claude_mpm/core/logger.py +133 -107
  94. claude_mpm/core/logging_config.py +185 -157
  95. claude_mpm/core/minimal_framework_loader.py +20 -15
  96. claude_mpm/core/mixins.py +30 -29
  97. claude_mpm/core/oneshot_session.py +215 -181
  98. claude_mpm/core/optimized_agent_loader.py +134 -138
  99. claude_mpm/core/optimized_startup.py +159 -157
  100. claude_mpm/core/pm_hook_interceptor.py +85 -72
  101. claude_mpm/core/service_registry.py +103 -101
  102. claude_mpm/core/session_manager.py +97 -87
  103. claude_mpm/core/socketio_pool.py +212 -158
  104. claude_mpm/core/tool_access_control.py +58 -51
  105. claude_mpm/core/types.py +46 -24
  106. claude_mpm/core/typing_utils.py +166 -82
  107. claude_mpm/core/unified_agent_registry.py +721 -0
  108. claude_mpm/core/unified_config.py +550 -0
  109. claude_mpm/core/unified_paths.py +549 -0
  110. claude_mpm/dashboard/index.html +1 -1
  111. claude_mpm/dashboard/open_dashboard.py +51 -17
  112. claude_mpm/dashboard/static/css/dashboard.css +27 -8
  113. claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
  114. claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
  115. claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
  116. claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
  117. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
  118. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
  119. claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
  120. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
  121. claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  122. claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
  123. claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
  124. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
  125. claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
  126. claude_mpm/dashboard/static/dist/dashboard.js +2 -0
  127. claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  128. claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
  129. claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
  130. claude_mpm/dashboard/static/js/components/event-viewer.js +74 -70
  131. claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
  132. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +106 -92
  133. claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
  134. claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
  135. claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
  136. claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
  137. claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
  138. claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
  139. claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
  140. claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
  141. claude_mpm/dashboard/static/js/dashboard.js +178 -453
  142. claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
  143. claude_mpm/dashboard/static/js/socket-client.js +120 -54
  144. claude_mpm/dashboard/templates/index.html +40 -50
  145. claude_mpm/experimental/cli_enhancements.py +60 -58
  146. claude_mpm/generators/__init__.py +1 -1
  147. claude_mpm/generators/agent_profile_generator.py +75 -65
  148. claude_mpm/hooks/__init__.py +1 -1
  149. claude_mpm/hooks/base_hook.py +33 -28
  150. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  151. claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
  152. claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
  153. claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
  154. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
  155. claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
  156. claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
  157. claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
  158. claude_mpm/hooks/memory_integration_hook.py +140 -100
  159. claude_mpm/hooks/tool_call_interceptor.py +89 -76
  160. claude_mpm/hooks/validation_hooks.py +57 -49
  161. claude_mpm/init.py +145 -121
  162. claude_mpm/models/__init__.py +9 -9
  163. claude_mpm/models/agent_definition.py +33 -23
  164. claude_mpm/models/agent_session.py +228 -200
  165. claude_mpm/scripts/__init__.py +1 -1
  166. claude_mpm/scripts/socketio_daemon.py +192 -75
  167. claude_mpm/scripts/socketio_server_manager.py +328 -0
  168. claude_mpm/scripts/start_activity_logging.py +25 -22
  169. claude_mpm/services/__init__.py +68 -43
  170. claude_mpm/services/agent_capabilities_service.py +271 -0
  171. claude_mpm/services/agents/__init__.py +23 -32
  172. claude_mpm/services/agents/deployment/__init__.py +3 -3
  173. claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
  174. claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
  175. claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
  176. claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
  177. claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
  178. claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
  179. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
  180. claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
  181. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
  182. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
  183. claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
  184. claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
  185. claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
  186. claude_mpm/services/agents/deployment/agent_validator.py +352 -0
  187. claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
  188. claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
  189. claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
  190. claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
  191. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  192. claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
  193. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  194. claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
  195. claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
  196. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  197. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  198. claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
  199. claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
  200. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  201. claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
  202. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  203. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  204. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  205. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  206. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
  207. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  208. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  209. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
  210. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
  211. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
  212. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
  213. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
  214. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  215. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
  216. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  217. claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
  218. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
  219. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  220. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  221. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  222. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  223. claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
  224. claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
  225. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  226. claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
  227. claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
  228. claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
  229. claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
  230. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  231. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  232. claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
  233. claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
  234. claude_mpm/services/agents/loading/__init__.py +2 -2
  235. claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
  236. claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
  237. claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
  238. claude_mpm/services/agents/management/__init__.py +2 -2
  239. claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
  240. claude_mpm/services/agents/management/agent_management_service.py +209 -156
  241. claude_mpm/services/agents/memory/__init__.py +9 -6
  242. claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
  243. claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
  244. claude_mpm/services/agents/memory/analyzer.py +430 -0
  245. claude_mpm/services/agents/memory/content_manager.py +376 -0
  246. claude_mpm/services/agents/memory/template_generator.py +468 -0
  247. claude_mpm/services/agents/registry/__init__.py +7 -10
  248. claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
  249. claude_mpm/services/agents/registry/modification_tracker.py +351 -285
  250. claude_mpm/services/async_session_logger.py +187 -153
  251. claude_mpm/services/claude_session_logger.py +87 -72
  252. claude_mpm/services/command_handler_service.py +217 -0
  253. claude_mpm/services/communication/__init__.py +3 -2
  254. claude_mpm/services/core/__init__.py +50 -97
  255. claude_mpm/services/core/base.py +60 -53
  256. claude_mpm/services/core/interfaces/__init__.py +188 -0
  257. claude_mpm/services/core/interfaces/agent.py +351 -0
  258. claude_mpm/services/core/interfaces/communication.py +343 -0
  259. claude_mpm/services/core/interfaces/infrastructure.py +413 -0
  260. claude_mpm/services/core/interfaces/service.py +434 -0
  261. claude_mpm/services/core/interfaces.py +19 -944
  262. claude_mpm/services/event_aggregator.py +208 -170
  263. claude_mpm/services/exceptions.py +387 -308
  264. claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
  265. claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
  266. claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
  267. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
  268. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
  269. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
  270. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
  271. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
  272. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  273. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  274. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  275. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  276. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
  277. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  278. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  279. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
  280. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
  281. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  282. claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
  283. claude_mpm/services/hook_service.py +106 -114
  284. claude_mpm/services/infrastructure/__init__.py +7 -5
  285. claude_mpm/services/infrastructure/context_preservation.py +571 -0
  286. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  287. claude_mpm/services/infrastructure/logging.py +83 -76
  288. claude_mpm/services/infrastructure/monitoring.py +547 -404
  289. claude_mpm/services/mcp_gateway/__init__.py +40 -23
  290. claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
  291. claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
  292. claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
  293. claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
  294. claude_mpm/services/mcp_gateway/core/__init__.py +14 -21
  295. claude_mpm/services/mcp_gateway/core/base.py +80 -67
  296. claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
  297. claude_mpm/services/mcp_gateway/core/interfaces.py +97 -93
  298. claude_mpm/services/mcp_gateway/main.py +307 -127
  299. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  300. claude_mpm/services/mcp_gateway/registry/service_registry.py +100 -101
  301. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  302. claude_mpm/services/mcp_gateway/server/__init__.py +4 -4
  303. claude_mpm/services/mcp_gateway/server/{mcp_server.py → mcp_gateway.py} +149 -153
  304. claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
  305. claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
  306. claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
  307. claude_mpm/services/mcp_gateway/tools/base_adapter.py +110 -121
  308. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
  309. claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
  310. claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
  311. claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
  312. claude_mpm/services/memory/__init__.py +2 -2
  313. claude_mpm/services/memory/builder.py +451 -362
  314. claude_mpm/services/memory/cache/__init__.py +2 -2
  315. claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
  316. claude_mpm/services/memory/cache/simple_cache.py +107 -93
  317. claude_mpm/services/memory/indexed_memory.py +195 -193
  318. claude_mpm/services/memory/optimizer.py +267 -234
  319. claude_mpm/services/memory/router.py +571 -263
  320. claude_mpm/services/memory_hook_service.py +237 -0
  321. claude_mpm/services/port_manager.py +223 -0
  322. claude_mpm/services/project/__init__.py +3 -3
  323. claude_mpm/services/project/analyzer.py +451 -305
  324. claude_mpm/services/project/registry.py +262 -240
  325. claude_mpm/services/recovery_manager.py +287 -231
  326. claude_mpm/services/response_tracker.py +87 -67
  327. claude_mpm/services/runner_configuration_service.py +587 -0
  328. claude_mpm/services/session_management_service.py +304 -0
  329. claude_mpm/services/socketio/__init__.py +4 -4
  330. claude_mpm/services/socketio/client_proxy.py +174 -0
  331. claude_mpm/services/socketio/handlers/__init__.py +3 -3
  332. claude_mpm/services/socketio/handlers/base.py +44 -30
  333. claude_mpm/services/socketio/handlers/connection.py +145 -65
  334. claude_mpm/services/socketio/handlers/file.py +123 -108
  335. claude_mpm/services/socketio/handlers/git.py +607 -373
  336. claude_mpm/services/socketio/handlers/hook.py +170 -0
  337. claude_mpm/services/socketio/handlers/memory.py +4 -4
  338. claude_mpm/services/socketio/handlers/project.py +4 -4
  339. claude_mpm/services/socketio/handlers/registry.py +53 -38
  340. claude_mpm/services/socketio/server/__init__.py +18 -0
  341. claude_mpm/services/socketio/server/broadcaster.py +252 -0
  342. claude_mpm/services/socketio/server/core.py +399 -0
  343. claude_mpm/services/socketio/server/main.py +323 -0
  344. claude_mpm/services/socketio_client_manager.py +160 -133
  345. claude_mpm/services/socketio_server.py +36 -1885
  346. claude_mpm/services/subprocess_launcher_service.py +316 -0
  347. claude_mpm/services/system_instructions_service.py +258 -0
  348. claude_mpm/services/ticket_manager.py +20 -534
  349. claude_mpm/services/utility_service.py +285 -0
  350. claude_mpm/services/version_control/__init__.py +18 -21
  351. claude_mpm/services/version_control/branch_strategy.py +20 -10
  352. claude_mpm/services/version_control/conflict_resolution.py +37 -13
  353. claude_mpm/services/version_control/git_operations.py +52 -21
  354. claude_mpm/services/version_control/semantic_versioning.py +92 -53
  355. claude_mpm/services/version_control/version_parser.py +145 -125
  356. claude_mpm/services/version_service.py +270 -0
  357. claude_mpm/storage/__init__.py +9 -0
  358. claude_mpm/storage/state_storage.py +552 -0
  359. claude_mpm/ticket_wrapper.py +2 -2
  360. claude_mpm/utils/__init__.py +2 -2
  361. claude_mpm/utils/agent_dependency_loader.py +453 -243
  362. claude_mpm/utils/config_manager.py +157 -118
  363. claude_mpm/utils/console.py +1 -1
  364. claude_mpm/utils/dependency_cache.py +102 -107
  365. claude_mpm/utils/dependency_manager.py +52 -47
  366. claude_mpm/utils/dependency_strategies.py +131 -96
  367. claude_mpm/utils/environment_context.py +110 -102
  368. claude_mpm/utils/error_handler.py +75 -55
  369. claude_mpm/utils/file_utils.py +80 -67
  370. claude_mpm/utils/framework_detection.py +12 -11
  371. claude_mpm/utils/import_migration_example.py +12 -60
  372. claude_mpm/utils/imports.py +48 -45
  373. claude_mpm/utils/path_operations.py +100 -93
  374. claude_mpm/utils/robust_installer.py +172 -164
  375. claude_mpm/utils/session_logging.py +30 -23
  376. claude_mpm/utils/subprocess_utils.py +99 -61
  377. claude_mpm/validation/__init__.py +1 -1
  378. claude_mpm/validation/agent_validator.py +151 -111
  379. claude_mpm/validation/frontmatter_validator.py +92 -71
  380. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/METADATA +51 -2
  381. claude_mpm-4.0.3.dist-info/RECORD +402 -0
  382. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/entry_points.txt +1 -0
  383. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/licenses/LICENSE +1 -1
  384. claude_mpm/config/memory_guardian_config.py +0 -325
  385. claude_mpm/core/config_paths.py +0 -150
  386. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  387. claude_mpm/deployment_paths.py +0 -261
  388. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  389. claude_mpm/models/state_models.py +0 -433
  390. claude_mpm/services/agent/__init__.py +0 -24
  391. claude_mpm/services/agent/deployment.py +0 -2548
  392. claude_mpm/services/agent/management.py +0 -598
  393. claude_mpm/services/agent/registry.py +0 -813
  394. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  395. claude_mpm/services/communication/socketio.py +0 -1935
  396. claude_mpm/services/communication/websocket.py +0 -479
  397. claude_mpm/services/framework_claude_md_generator.py +0 -624
  398. claude_mpm/services/health_monitor.py +0 -893
  399. claude_mpm/services/infrastructure/memory_guardian.py +0 -770
  400. claude_mpm/services/mcp_gateway/server/mcp_server_simple.py +0 -444
  401. claude_mpm/services/optimized_hook_service.py +0 -542
  402. claude_mpm/services/project_analyzer.py +0 -864
  403. claude_mpm/services/project_registry.py +0 -608
  404. claude_mpm/services/standalone_socketio_server.py +0 -1300
  405. claude_mpm/services/ticket_manager_di.py +0 -318
  406. claude_mpm/services/ticketing_service_original.py +0 -510
  407. claude_mpm/utils/paths.py +0 -395
  408. claude_mpm/utils/platform_memory.py +0 -524
  409. claude_mpm-3.9.9.dist-info/RECORD +0 -293
  410. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/WHEEL +0 -0
  411. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/top_level.txt +0 -0
@@ -13,36 +13,35 @@ Design Principles:
13
13
 
14
14
  Usage:
15
15
  from claude_mpm.core.exceptions import ConfigurationError, AgentDeploymentError
16
-
16
+
17
17
  # With context for debugging
18
18
  raise ConfigurationError(
19
19
  "Invalid agent configuration",
20
20
  context={"agent_id": "engineer", "field": "version", "value": "invalid"}
21
21
  )
22
-
22
+
23
23
  # Simple usage
24
24
  raise AgentDeploymentError("Failed to deploy agent to .claude/agents directory")
25
25
  """
26
26
 
27
- from typing import Dict, Any, Optional, List
28
- from pathlib import Path
27
+ from typing import Any, Dict, List, Optional
29
28
 
30
29
 
31
30
  class MPMError(Exception):
32
31
  """Base exception class for all Claude MPM errors.
33
-
32
+
34
33
  This base class provides common functionality for all MPM exceptions including
35
34
  context storage for debugging and structured error representation.
36
-
35
+
37
36
  Attributes:
38
37
  message: Human-readable error message
39
38
  context: Optional dictionary with additional debugging context
40
39
  error_code: Machine-readable error code (defaults to class name in lowercase)
41
40
  """
42
-
41
+
43
42
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
44
43
  """Initialize MPM error with message and optional context.
45
-
44
+
46
45
  Args:
47
46
  message: Human-readable error message
48
47
  context: Optional dictionary with debugging context
@@ -51,24 +50,25 @@ class MPMError(Exception):
51
50
  self.message = message
52
51
  self.context = context or {}
53
52
  self.error_code = self._generate_error_code()
54
-
53
+
55
54
  def _generate_error_code(self) -> str:
56
55
  """Generate error code from class name."""
57
56
  # Convert class name from CamelCase to snake_case
58
57
  name = self.__class__.__name__
59
58
  # Remove 'Error' suffix if present
60
- if name.endswith('Error'):
59
+ if name.endswith("Error"):
61
60
  name = name[:-5]
62
61
  # Special case for MPM acronym
63
- if name == 'MPM':
64
- return 'mpm'
62
+ if name == "MPM":
63
+ return "mpm"
65
64
  # Convert to snake_case
66
65
  import re
67
- return re.sub(r'(?<!^)(?=[A-Z])', '_', name).lower()
68
-
66
+
67
+ return re.sub(r"(?<!^)(?=[A-Z])", "_", name).lower()
68
+
69
69
  def to_dict(self) -> Dict[str, Any]:
70
70
  """Convert error to dictionary format for structured logging/handling.
71
-
71
+
72
72
  Returns:
73
73
  Dictionary with error type, code, message, and context
74
74
  """
@@ -76,9 +76,9 @@ class MPMError(Exception):
76
76
  "error_type": self.__class__.__name__,
77
77
  "error_code": self.error_code,
78
78
  "message": self.message,
79
- "context": self.context
79
+ "context": self.context,
80
80
  }
81
-
81
+
82
82
  def __str__(self) -> str:
83
83
  """String representation with context if available."""
84
84
  if self.context:
@@ -89,42 +89,44 @@ class MPMError(Exception):
89
89
 
90
90
  class AgentDeploymentError(MPMError):
91
91
  """Exception raised when agent deployment fails.
92
-
92
+
93
93
  This error occurs during agent deployment to .claude/agents directory,
94
94
  including template building, version checking, and file operations.
95
-
95
+
96
96
  Common causes:
97
97
  - Template file not found or invalid
98
98
  - Permission issues with .claude/agents directory
99
99
  - Version conflicts or migration failures
100
100
  - YAML generation errors
101
101
  """
102
-
102
+
103
103
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
104
104
  """Initialize agent deployment error.
105
-
105
+
106
106
  Args:
107
107
  message: Error message describing deployment failure
108
108
  context: Optional context with agent_id, template_path, deployment_path, etc.
109
109
  """
110
110
  super().__init__(message, context)
111
-
111
+
112
112
  # Add helpful guidance based on context
113
113
  if context:
114
- if 'agent_id' in context:
114
+ if "agent_id" in context:
115
115
  self.message = f"[Agent: {context['agent_id']}] {message}"
116
- if 'template_path' in context and 'not found' in message.lower():
117
- self.message += f"\nEnsure template exists at: {context['template_path']}"
118
- if 'permission' in message.lower():
116
+ if "template_path" in context and "not found" in message.lower():
117
+ self.message += (
118
+ f"\nEnsure template exists at: {context['template_path']}"
119
+ )
120
+ if "permission" in message.lower():
119
121
  self.message += "\nCheck directory permissions for .claude/agents"
120
122
 
121
123
 
122
124
  class ConfigurationError(MPMError):
123
125
  """Exception raised when configuration validation fails.
124
-
126
+
125
127
  This error occurs when configuration files are invalid, missing required
126
128
  fields, or contain incompatible values.
127
-
129
+
128
130
  Common causes:
129
131
  - Missing required configuration fields
130
132
  - Invalid data types or formats
@@ -132,34 +134,34 @@ class ConfigurationError(MPMError):
132
134
  - Schema validation failures
133
135
  - Incompatible configuration versions
134
136
  """
135
-
137
+
136
138
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
137
139
  """Initialize configuration error.
138
-
140
+
139
141
  Args:
140
142
  message: Error message describing configuration issue
141
143
  context: Optional context with config_file, field, expected_type, actual_value, etc.
142
144
  """
143
145
  super().__init__(message, context)
144
-
146
+
145
147
  # Add helpful guidance based on context
146
148
  if context:
147
- if 'config_file' in context:
149
+ if "config_file" in context:
148
150
  self.message = f"[Config: {context['config_file']}] {message}"
149
- if 'field' in context:
151
+ if "field" in context:
150
152
  self.message += f"\nField: {context['field']}"
151
- if 'expected_type' in context:
153
+ if "expected_type" in context:
152
154
  self.message += f" (expected: {context['expected_type']})"
153
- if 'actual_value' in context:
155
+ if "actual_value" in context:
154
156
  self.message += f" (got: {context['actual_value']})"
155
157
 
156
158
 
157
159
  class ConnectionError(MPMError):
158
160
  """Exception raised when network or SocketIO connection fails.
159
-
161
+
160
162
  This error occurs during network operations, including SocketIO server
161
163
  connections, port binding, and inter-process communication.
162
-
164
+
163
165
  Common causes:
164
166
  - Port already in use
165
167
  - Network interface unavailable
@@ -167,32 +169,32 @@ class ConnectionError(MPMError):
167
169
  - Connection timeout
168
170
  - Authentication failures
169
171
  """
170
-
172
+
171
173
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
172
174
  """Initialize connection error.
173
-
175
+
174
176
  Args:
175
177
  message: Error message describing connection failure
176
178
  context: Optional context with host, port, timeout, retry_count, etc.
177
179
  """
178
180
  super().__init__(message, context)
179
-
181
+
180
182
  # Add helpful guidance based on context
181
183
  if context:
182
- if 'host' in context and 'port' in context:
184
+ if "host" in context and "port" in context:
183
185
  self.message = f"[{context['host']}:{context['port']}] {message}"
184
- if 'timeout' in context:
186
+ if "timeout" in context:
185
187
  self.message += f"\nConnection timeout: {context['timeout']}s"
186
- if 'retry_count' in context:
188
+ if "retry_count" in context:
187
189
  self.message += f"\nRetry attempts: {context['retry_count']}"
188
190
 
189
191
 
190
192
  class ValidationError(MPMError):
191
193
  """Exception raised when input validation fails.
192
-
194
+
193
195
  This error occurs when user input, agent definitions, or data structures
194
196
  fail validation against expected schemas or constraints.
195
-
197
+
196
198
  Common causes:
197
199
  - Invalid agent schema
198
200
  - Missing required fields
@@ -200,34 +202,34 @@ class ValidationError(MPMError):
200
202
  - Value out of allowed range
201
203
  - Format violations (e.g., invalid JSON/YAML)
202
204
  """
203
-
205
+
204
206
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
205
207
  """Initialize validation error.
206
-
208
+
207
209
  Args:
208
210
  message: Error message describing validation failure
209
211
  context: Optional context with field, value, constraint, schema_path, etc.
210
212
  """
211
213
  super().__init__(message, context)
212
-
214
+
213
215
  # Add helpful guidance based on context
214
216
  if context:
215
- if 'field' in context:
217
+ if "field" in context:
216
218
  self.message = f"[Field: {context['field']}] {message}"
217
- if 'constraint' in context:
219
+ if "constraint" in context:
218
220
  self.message += f"\nConstraint: {context['constraint']}"
219
- if 'value' in context:
221
+ if "value" in context:
220
222
  self.message += f"\nProvided value: {context['value']}"
221
- if 'schema_path' in context:
223
+ if "schema_path" in context:
222
224
  self.message += f"\nSchema: {context['schema_path']}"
223
225
 
224
226
 
225
227
  class ServiceNotFoundError(MPMError):
226
228
  """Exception raised when DI container cannot find requested service.
227
-
229
+
228
230
  This error occurs when the dependency injection container cannot locate
229
231
  or instantiate a requested service.
230
-
232
+
231
233
  Common causes:
232
234
  - Service not registered in container
233
235
  - Circular dependencies
@@ -235,22 +237,22 @@ class ServiceNotFoundError(MPMError):
235
237
  - Service initialization failure
236
238
  - Incorrect service name or type
237
239
  """
238
-
240
+
239
241
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
240
242
  """Initialize service not found error.
241
-
243
+
242
244
  Args:
243
245
  message: Error message describing missing service
244
246
  context: Optional context with service_name, service_type, available_services, etc.
245
247
  """
246
248
  super().__init__(message, context)
247
-
249
+
248
250
  # Add helpful guidance based on context
249
251
  if context:
250
- if 'service_name' in context:
252
+ if "service_name" in context:
251
253
  self.message = f"[Service: {context['service_name']}] {message}"
252
- if 'available_services' in context:
253
- services = context['available_services']
254
+ if "available_services" in context:
255
+ services = context["available_services"]
254
256
  if isinstance(services, list) and services:
255
257
  self.message += f"\nAvailable services: {', '.join(services[:5])}"
256
258
  if len(services) > 5:
@@ -259,48 +261,48 @@ class ServiceNotFoundError(MPMError):
259
261
 
260
262
  class MemoryError(MPMError):
261
263
  """Exception raised when memory service operations fail.
262
-
264
+
263
265
  This error occurs during agent memory operations including storage,
264
266
  retrieval, optimization, and routing.
265
-
267
+
266
268
  Common causes:
267
269
  - Memory storage failure
268
270
  - Corrupted memory data
269
271
  - Memory quota exceeded
270
272
  - Routing configuration errors
271
273
  - Serialization/deserialization failures
272
-
274
+
273
275
  Note: This shadows Python's built-in MemoryError but is scoped to
274
276
  claude_mpm.core.exceptions.MemoryError for clarity.
275
277
  """
276
-
278
+
277
279
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
278
280
  """Initialize memory error.
279
-
281
+
280
282
  Args:
281
283
  message: Error message describing memory operation failure
282
284
  context: Optional context with agent_id, memory_type, operation, storage_path, etc.
283
285
  """
284
286
  super().__init__(message, context)
285
-
287
+
286
288
  # Add helpful guidance based on context
287
289
  if context:
288
- if 'agent_id' in context:
290
+ if "agent_id" in context:
289
291
  self.message = f"[Agent: {context['agent_id']}] {message}"
290
- if 'memory_type' in context:
292
+ if "memory_type" in context:
291
293
  self.message += f"\nMemory type: {context['memory_type']}"
292
- if 'operation' in context:
294
+ if "operation" in context:
293
295
  self.message += f"\nOperation: {context['operation']}"
294
- if 'storage_path' in context:
296
+ if "storage_path" in context:
295
297
  self.message += f"\nStorage: {context['storage_path']}"
296
298
 
297
299
 
298
300
  class HookError(MPMError):
299
301
  """Exception raised when hook execution fails.
300
-
302
+
301
303
  This error occurs during pre/post hook execution in the hook system,
302
304
  including hook registration, invocation, and cleanup.
303
-
305
+
304
306
  Common causes:
305
307
  - Hook handler exceptions
306
308
  - Hook timeout
@@ -308,34 +310,34 @@ class HookError(MPMError):
308
310
  - Hook configuration errors
309
311
  - Incompatible hook versions
310
312
  """
311
-
313
+
312
314
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
313
315
  """Initialize hook error.
314
-
316
+
315
317
  Args:
316
318
  message: Error message describing hook failure
317
319
  context: Optional context with hook_name, hook_type, event, error_details, etc.
318
320
  """
319
321
  super().__init__(message, context)
320
-
322
+
321
323
  # Add helpful guidance based on context
322
324
  if context:
323
- if 'hook_name' in context:
325
+ if "hook_name" in context:
324
326
  self.message = f"[Hook: {context['hook_name']}] {message}"
325
- if 'hook_type' in context:
327
+ if "hook_type" in context:
326
328
  self.message += f"\nType: {context['hook_type']}"
327
- if 'event' in context:
329
+ if "event" in context:
328
330
  self.message += f"\nEvent: {context['event']}"
329
- if 'error_details' in context:
331
+ if "error_details" in context:
330
332
  self.message += f"\nDetails: {context['error_details']}"
331
333
 
332
334
 
333
335
  class SessionError(MPMError):
334
336
  """Exception raised when session management fails.
335
-
337
+
336
338
  This error occurs during Claude session lifecycle management including
337
339
  session creation, state management, and cleanup.
338
-
340
+
339
341
  Common causes:
340
342
  - Session initialization failure
341
343
  - Invalid session state
@@ -343,42 +345,180 @@ class SessionError(MPMError):
343
345
  - Resource allocation failure
344
346
  - Session persistence errors
345
347
  """
346
-
348
+
347
349
  def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
348
350
  """Initialize session error.
349
-
351
+
350
352
  Args:
351
353
  message: Error message describing session failure
352
354
  context: Optional context with session_id, session_type, state, operation, etc.
353
355
  """
354
356
  super().__init__(message, context)
355
-
357
+
356
358
  # Add helpful guidance based on context
357
359
  if context:
358
- if 'session_id' in context:
360
+ if "session_id" in context:
359
361
  self.message = f"[Session: {context['session_id']}] {message}"
360
- if 'session_type' in context:
362
+ if "session_type" in context:
361
363
  self.message += f"\nType: {context['session_type']}"
362
- if 'state' in context:
364
+ if "state" in context:
363
365
  self.message += f"\nState: {context['state']}"
364
- if 'operation' in context:
366
+ if "operation" in context:
365
367
  self.message += f"\nOperation: {context['operation']}"
366
368
 
367
369
 
370
+ class FileOperationError(MPMError):
371
+ """Exception raised when file system operations fail.
372
+
373
+ This error occurs during file I/O operations including reading, writing,
374
+ copying, moving, and permission changes.
375
+
376
+ Common causes:
377
+ - File not found
378
+ - Permission denied
379
+ - Disk space exhausted
380
+ - Path too long
381
+ - File locked by another process
382
+ """
383
+
384
+ def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
385
+ """Initialize file operation error.
386
+
387
+ Args:
388
+ message: Error message describing file operation failure
389
+ context: Optional context with file_path, operation, permissions, etc.
390
+ """
391
+ super().__init__(message, context)
392
+
393
+ # Add helpful guidance based on context
394
+ if context:
395
+ if "file_path" in context:
396
+ self.message = f"[File: {context['file_path']}] {message}"
397
+ if "operation" in context:
398
+ self.message += f"\nOperation: {context['operation']}"
399
+ if "permissions" in context:
400
+ self.message += f"\nRequired permissions: {context['permissions']}"
401
+
402
+
403
+ class ProcessError(MPMError):
404
+ """Exception raised when subprocess operations fail.
405
+
406
+ This error occurs during subprocess execution including command launching,
407
+ process monitoring, and cleanup.
408
+
409
+ Common causes:
410
+ - Command not found
411
+ - Process timeout
412
+ - Non-zero exit code
413
+ - Permission denied
414
+ - Resource limits exceeded
415
+ """
416
+
417
+ def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
418
+ """Initialize process error.
419
+
420
+ Args:
421
+ message: Error message describing process failure
422
+ context: Optional context with command, exit_code, stdout, stderr, etc.
423
+ """
424
+ super().__init__(message, context)
425
+
426
+ # Add helpful guidance based on context
427
+ if context:
428
+ if "command" in context:
429
+ self.message = f"[Command: {context['command']}] {message}"
430
+ if "exit_code" in context:
431
+ self.message += f"\nExit code: {context['exit_code']}"
432
+ if "stderr" in context and context["stderr"]:
433
+ stderr_preview = str(context["stderr"])[:200]
434
+ self.message += f"\nError output: {stderr_preview}"
435
+ if len(str(context["stderr"])) > 200:
436
+ self.message += "..."
437
+
438
+
439
+ class RegistryError(MPMError):
440
+ """Exception raised when registry operations fail.
441
+
442
+ This error occurs during agent registry operations including registration,
443
+ lookup, modification tracking, and discovery.
444
+
445
+ Common causes:
446
+ - Agent not found in registry
447
+ - Registry corruption
448
+ - Concurrent modification conflicts
449
+ - Invalid registry state
450
+ - Registry initialization failure
451
+ """
452
+
453
+ def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
454
+ """Initialize registry error.
455
+
456
+ Args:
457
+ message: Error message describing registry failure
458
+ context: Optional context with agent_id, registry_type, operation, etc.
459
+ """
460
+ super().__init__(message, context)
461
+
462
+ # Add helpful guidance based on context
463
+ if context:
464
+ if "agent_id" in context:
465
+ self.message = f"[Agent: {context['agent_id']}] {message}"
466
+ if "registry_type" in context:
467
+ self.message += f"\nRegistry: {context['registry_type']}"
468
+ if "operation" in context:
469
+ self.message += f"\nOperation: {context['operation']}"
470
+
471
+
472
+ class SerializationError(MPMError):
473
+ """Exception raised when serialization/deserialization fails.
474
+
475
+ This error occurs during JSON/YAML/pickle operations including encoding,
476
+ decoding, and format validation.
477
+
478
+ Common causes:
479
+ - Invalid JSON/YAML syntax
480
+ - Unsupported data types
481
+ - Encoding/decoding errors
482
+ - Corrupted data
483
+ - Schema validation failures
484
+ """
485
+
486
+ def __init__(self, message: str, context: Optional[Dict[str, Any]] = None):
487
+ """Initialize serialization error.
488
+
489
+ Args:
490
+ message: Error message describing serialization failure
491
+ context: Optional context with format, data_type, file_path, etc.
492
+ """
493
+ super().__init__(message, context)
494
+
495
+ # Add helpful guidance based on context
496
+ if context:
497
+ if "format" in context:
498
+ self.message = f"[Format: {context['format']}] {message}"
499
+ if "data_type" in context:
500
+ self.message += f"\nData type: {context['data_type']}"
501
+ if "file_path" in context:
502
+ self.message += f"\nFile: {context['file_path']}"
503
+
504
+
368
505
  # Backward compatibility imports
369
506
  # These allow existing code to continue working while migrating to new exceptions
370
507
  def create_agent_deployment_error(message: str, **kwargs) -> AgentDeploymentError:
371
508
  """Factory function for creating agent deployment errors with context."""
372
509
  return AgentDeploymentError(message, context=kwargs if kwargs else None)
373
510
 
511
+
374
512
  def create_configuration_error(message: str, **kwargs) -> ConfigurationError:
375
513
  """Factory function for creating configuration errors with context."""
376
514
  return ConfigurationError(message, context=kwargs if kwargs else None)
377
515
 
516
+
378
517
  def create_connection_error(message: str, **kwargs) -> ConnectionError:
379
518
  """Factory function for creating connection errors with context."""
380
519
  return ConnectionError(message, context=kwargs if kwargs else None)
381
520
 
521
+
382
522
  def create_validation_error(message: str, **kwargs) -> ValidationError:
383
523
  """Factory function for creating validation errors with context."""
384
524
  return ValidationError(message, context=kwargs if kwargs else None)
@@ -389,4 +529,8 @@ DEPLOYMENT_ERRORS = (AgentDeploymentError,)
389
529
  CONFIGURATION_ERRORS = (ConfigurationError, ValidationError)
390
530
  NETWORK_ERRORS = (ConnectionError,)
391
531
  SERVICE_ERRORS = (ServiceNotFoundError, MemoryError, HookError, SessionError)
392
- ALL_MPM_ERRORS = (MPMError,) # Catches all MPM-specific exceptions
532
+ FILE_ERRORS = (FileOperationError,)
533
+ PROCESS_ERRORS = (ProcessError,)
534
+ REGISTRY_ERRORS = (RegistryError,)
535
+ SERIALIZATION_ERRORS = (SerializationError,)
536
+ ALL_MPM_ERRORS = (MPMError,) # Catches all MPM-specific exceptions