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
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * HUD Manager Module
3
- *
3
+ *
4
4
  * Manages HUD (Heads-Up Display) visualization mode, including toggling between
5
5
  * normal and HUD views, processing events for visualization, and coordinating
6
6
  * with the HUD visualizer component.
7
- *
7
+ *
8
8
  * WHY: Extracted from main dashboard to isolate HUD-specific functionality
9
9
  * and provide better separation between standard event viewing and advanced
10
10
  * HUD visualization modes. This improves maintainability of complex visualization logic.
11
- *
11
+ *
12
12
  * DESIGN DECISION: Acts as a coordinator between the dashboard state and the
13
13
  * HUD visualizer component, managing mode switching and event processing
14
14
  * while maintaining clean separation from core dashboard functionality.
@@ -20,15 +20,15 @@ class HUDManager {
20
20
  this.hudVisualizer = null;
21
21
  this.hudMode = false;
22
22
  this.isInitialized = false;
23
-
23
+
24
24
  this.initializeHUDVisualizer();
25
25
  this.setupEventHandlers();
26
-
26
+
27
27
  // Initial button state update with a small delay to ensure all components are ready
28
28
  setTimeout(() => {
29
29
  this.updateHUDButtonState();
30
30
  }, 100);
31
-
31
+
32
32
  console.log('HUD manager initialized');
33
33
  }
34
34
 
@@ -39,11 +39,11 @@ class HUDManager {
39
39
  try {
40
40
  this.hudVisualizer = new HUDVisualizer();
41
41
  window.hudVisualizer = this.hudVisualizer; // Backward compatibility
42
-
42
+
43
43
  // Initialize HUD visualizer
44
44
  this.hudVisualizer.initialize();
45
45
  this.isInitialized = true;
46
-
46
+
47
47
  console.log('HUD visualizer initialized successfully');
48
48
  } catch (error) {
49
49
  console.error('Failed to initialize HUD visualizer:', error);
@@ -56,7 +56,7 @@ class HUDManager {
56
56
  */
57
57
  setupEventHandlers() {
58
58
  console.log('[HUD-DEBUG] Setting up HUD event handlers');
59
-
59
+
60
60
  // HUD toggle button
61
61
  const hudToggleBtn = document.getElementById('hud-toggle-btn');
62
62
  if (hudToggleBtn) {
@@ -84,7 +84,7 @@ class HUDManager {
84
84
  console.log('[HUD-DEBUG] sessionChanged event received:', e.detail);
85
85
  this.updateHUDButtonState();
86
86
  });
87
-
87
+
88
88
  // Also listen for sessionFilterChanged for backward compatibility
89
89
  console.log('[HUD-DEBUG] Adding sessionFilterChanged event listener');
90
90
  document.addEventListener('sessionFilterChanged', (e) => {
@@ -98,7 +98,7 @@ class HUDManager {
98
98
  */
99
99
  toggleHUD() {
100
100
  console.log('[HUD-DEBUG] toggleHUD called');
101
-
101
+
102
102
  if (!this.isSessionSelected()) {
103
103
  console.log('[HUD-DEBUG] Cannot toggle HUD: No session selected');
104
104
  return;
@@ -112,9 +112,9 @@ class HUDManager {
112
112
  const oldMode = this.hudMode;
113
113
  this.hudMode = !this.hudMode;
114
114
  console.log('[HUD-DEBUG] HUD mode changed from', oldMode, 'to', this.hudMode);
115
-
115
+
116
116
  this.updateHUDDisplay();
117
-
117
+
118
118
  console.log('[HUD-DEBUG] HUD mode toggled:', this.hudMode ? 'ON' : 'OFF');
119
119
  }
120
120
 
@@ -126,14 +126,14 @@ class HUDManager {
126
126
  const hasManager = !!this.sessionManager;
127
127
  const selectedId = this.sessionManager?.selectedSessionId;
128
128
  const isValidSelection = selectedId && selectedId !== 'all' && selectedId !== '';
129
-
129
+
130
130
  console.log('[HUD-DEBUG] isSessionSelected check:', {
131
131
  hasManager: hasManager,
132
132
  selectedId: selectedId,
133
133
  isValidSelection: isValidSelection,
134
134
  finalResult: hasManager && isValidSelection
135
135
  });
136
-
136
+
137
137
  return hasManager && isValidSelection;
138
138
  }
139
139
 
@@ -142,16 +142,16 @@ class HUDManager {
142
142
  */
143
143
  updateHUDDisplay() {
144
144
  console.log('[HUD-DEBUG] updateHUDDisplay called, hudMode:', this.hudMode);
145
-
145
+
146
146
  const eventsWrapper = document.querySelector('.events-wrapper');
147
147
  const hudToggleBtn = document.getElementById('hud-toggle-btn');
148
-
148
+
149
149
  console.log('[HUD-DEBUG] DOM elements found:', {
150
150
  eventsWrapper: !!eventsWrapper,
151
151
  hudToggleBtn: !!hudToggleBtn,
152
152
  hudVisualizer: !!this.hudVisualizer
153
153
  });
154
-
154
+
155
155
  if (!eventsWrapper || !hudToggleBtn) {
156
156
  console.error('[HUD-DEBUG] Missing DOM elements for HUD display update');
157
157
  return;
@@ -163,13 +163,13 @@ class HUDManager {
163
163
  eventsWrapper.classList.add('hud-mode');
164
164
  hudToggleBtn.classList.add('btn-hud-active');
165
165
  hudToggleBtn.textContent = 'Normal View';
166
-
166
+
167
167
  // Activate HUD visualizer and process events
168
168
  if (this.hudVisualizer) {
169
169
  console.log('[HUD-DEBUG] Activating HUD visualizer...');
170
170
  this.hudVisualizer.activate().then(() => {
171
171
  console.log('[HUD-DEBUG] HUD visualizer activated successfully, processing existing events...');
172
-
172
+
173
173
  // Additional resize attempts after DOM settles
174
174
  setTimeout(() => {
175
175
  console.log('[HUD-DEBUG] Post-activation resize check...');
@@ -177,7 +177,7 @@ class HUDManager {
177
177
  this.hudVisualizer.ensureContainerResize();
178
178
  }
179
179
  }, 100);
180
-
180
+
181
181
  // Process existing events after libraries are loaded
182
182
  this.processExistingEventsForHUD();
183
183
  }).catch((error) => {
@@ -196,7 +196,7 @@ class HUDManager {
196
196
  eventsWrapper.classList.remove('hud-mode');
197
197
  hudToggleBtn.classList.remove('btn-hud-active');
198
198
  hudToggleBtn.textContent = 'HUD View';
199
-
199
+
200
200
  // Deactivate HUD visualizer
201
201
  if (this.hudVisualizer) {
202
202
  console.log('[HUD-DEBUG] Deactivating HUD visualizer...');
@@ -210,7 +210,7 @@ class HUDManager {
210
210
  */
211
211
  updateHUDButtonState() {
212
212
  console.log('[HUD-DEBUG] updateHUDButtonState called');
213
-
213
+
214
214
  const hudToggleBtn = document.getElementById('hud-toggle-btn');
215
215
  if (!hudToggleBtn) {
216
216
  console.warn('[HUD-DEBUG] HUD toggle button not found in DOM');
@@ -219,7 +219,7 @@ class HUDManager {
219
219
  console.log('[HUD-DEBUG] Available buttons:', Array.from(allButtons).map(btn => ({ id: btn.id, className: btn.className, text: btn.textContent })));
220
220
  return;
221
221
  }
222
-
222
+
223
223
  console.log('[HUD-DEBUG] HUD button found:', {
224
224
  id: hudToggleBtn.id,
225
225
  className: hudToggleBtn.className,
@@ -230,7 +230,7 @@ class HUDManager {
230
230
 
231
231
  const sessionSelected = this.isSessionSelected();
232
232
  const selectedSessionId = this.sessionManager?.selectedSessionId;
233
-
233
+
234
234
  console.log('[HUD-DEBUG] HUD Button State Update:', {
235
235
  sessionSelected,
236
236
  selectedSessionId,
@@ -246,7 +246,7 @@ class HUDManager {
246
246
  hudToggleBtn.disabled = true;
247
247
  hudToggleBtn.title = 'Select a session to enable HUD mode';
248
248
  console.log('[HUD-DEBUG] HUD button disabled - no session selected');
249
-
249
+
250
250
  // Disable HUD mode if currently active
251
251
  if (this.hudMode) {
252
252
  console.log('[HUD-DEBUG] Disabling HUD mode because no session selected');
@@ -254,7 +254,7 @@ class HUDManager {
254
254
  this.updateHUDDisplay();
255
255
  }
256
256
  }
257
-
257
+
258
258
  console.log('[HUD-DEBUG] Final HUD button state:', {
259
259
  disabled: hudToggleBtn.disabled,
260
260
  title: hudToggleBtn.title
@@ -267,49 +267,49 @@ class HUDManager {
267
267
  */
268
268
  processExistingEventsForHUD() {
269
269
  console.log('[HUD-MANAGER-DEBUG] processExistingEventsForHUD called');
270
-
270
+
271
271
  if (!this.hudVisualizer) {
272
272
  console.error('[HUD-MANAGER-DEBUG] No HUD visualizer available');
273
273
  return;
274
274
  }
275
-
275
+
276
276
  if (!this.eventViewer) {
277
277
  console.error('[HUD-MANAGER-DEBUG] No event viewer available');
278
278
  return;
279
279
  }
280
-
280
+
281
281
  console.log('[HUD-MANAGER-DEBUG] 🔄 Processing existing events for HUD visualization...');
282
-
282
+
283
283
  // Clear existing visualization
284
284
  this.hudVisualizer.clear();
285
-
285
+
286
286
  // Get all events (not just filtered ones) to build complete tree structure
287
287
  const allEvents = this.eventViewer.getAllEvents();
288
288
  console.log(`[HUD-MANAGER-DEBUG] Retrieved ${allEvents ? allEvents.length : 0} events from event viewer`);
289
-
289
+
290
290
  if (!allEvents) {
291
291
  console.error('[HUD-MANAGER-DEBUG] Event viewer returned null/undefined events');
292
292
  return;
293
293
  }
294
-
294
+
295
295
  if (!Array.isArray(allEvents)) {
296
296
  console.error('[HUD-MANAGER-DEBUG] Event viewer returned non-array:', typeof allEvents);
297
297
  return;
298
298
  }
299
-
299
+
300
300
  if (allEvents.length === 0) {
301
301
  console.log('⚠️ No events available for HUD processing');
302
302
  return;
303
303
  }
304
-
304
+
305
305
  console.log(`[HUD-MANAGER-DEBUG] 📊 Found ${allEvents.length} total events for HUD processing`);
306
-
306
+
307
307
  // Check if we should filter by selected session
308
308
  const selectedSessionId = this.sessionManager?.selectedSessionId;
309
309
  console.log(`[HUD-MANAGER-DEBUG] Selected session ID: ${selectedSessionId}`);
310
-
310
+
311
311
  let eventsToProcess = allEvents;
312
-
312
+
313
313
  if (selectedSessionId && selectedSessionId !== '' && selectedSessionId !== 'all') {
314
314
  console.log(`[HUD-MANAGER-DEBUG] Filtering events for session: ${selectedSessionId}`);
315
315
  eventsToProcess = allEvents.filter(event => {
@@ -324,27 +324,27 @@ class HUDManager {
324
324
  } else {
325
325
  console.log('[HUD-MANAGER-DEBUG] No session filtering - processing all events');
326
326
  }
327
-
327
+
328
328
  // Sort events by timestamp to ensure chronological processing
329
329
  const sortedEvents = eventsToProcess.slice().sort((a, b) => {
330
330
  const timeA = new Date(a.timestamp).getTime();
331
331
  const timeB = new Date(b.timestamp).getTime();
332
332
  return timeA - timeB;
333
333
  });
334
-
334
+
335
335
  console.log(`[HUD-MANAGER-DEBUG] Sorted ${sortedEvents.length} events chronologically`);
336
-
336
+
337
337
  // Process events in chronological order
338
338
  console.log(`[HUD-MANAGER-DEBUG] Calling hudVisualizer.processExistingEvents with ${sortedEvents.length} events`);
339
339
  this.hudVisualizer.processExistingEvents(sortedEvents);
340
-
340
+
341
341
  console.log(`[HUD-MANAGER-DEBUG] ✅ Processed ${sortedEvents.length} events for HUD visualization`);
342
-
342
+
343
343
  // After processing, check if nodes were created
344
344
  setTimeout(() => {
345
345
  const nodeCount = this.hudVisualizer?.nodes?.size || 0;
346
346
  console.log(`[HUD-MANAGER-DEBUG] HUD visualizer now has ${nodeCount} nodes`);
347
-
347
+
348
348
  if (nodeCount === 0) {
349
349
  console.warn(`[HUD-MANAGER-DEBUG] No nodes created! Check event processing logic`);
350
350
  console.log(`[HUD-MANAGER-DEBUG] Sample processed events:`, sortedEvents.slice(0, 3));
@@ -424,7 +424,7 @@ class HUDManager {
424
424
  console.log('Reinitializing HUD manager...');
425
425
  this.isInitialized = false;
426
426
  this.hudMode = false;
427
-
427
+
428
428
  this.initializeHUDVisualizer();
429
429
  this.updateHUDDisplay();
430
430
  this.updateHUDButtonState();
@@ -445,12 +445,12 @@ class HUDManager {
445
445
  selectedSessionId: this.sessionManager?.selectedSessionId,
446
446
  isSessionSelected: this.isSessionSelected()
447
447
  });
448
-
448
+
449
449
  if (!this.isSessionSelected()) {
450
450
  console.error('[HUD-DEBUG] Cannot debug HUD: No session selected');
451
451
  return;
452
452
  }
453
-
453
+
454
454
  // Force HUD mode and call updateHUDDisplay
455
455
  this.hudMode = true;
456
456
  this.updateHUDDisplay();
@@ -464,7 +464,7 @@ class HUDManager {
464
464
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] ===============================');
465
465
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] COMPREHENSIVE HUD DEBUG START');
466
466
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] ===============================');
467
-
467
+
468
468
  // 1. Check HUD Manager state
469
469
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] 1. HUD Manager State:');
470
470
  const managerState = {
@@ -477,7 +477,7 @@ class HUDManager {
477
477
  isSessionSelected: this.isSessionSelected()
478
478
  };
479
479
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG]', managerState);
480
-
480
+
481
481
  // 2. Check DOM elements
482
482
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] 2. DOM Elements:');
483
483
  const domElements = {
@@ -488,7 +488,7 @@ class HUDManager {
488
488
  normalView: !!document.getElementById('normal-view')
489
489
  };
490
490
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG]', domElements);
491
-
491
+
492
492
  // 3. Force activate HUD if not active
493
493
  if (!this.hudMode) {
494
494
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] 3. HUD not active, forcing activation...');
@@ -501,13 +501,13 @@ class HUDManager {
501
501
  this.sessionManager.selectedSessionId = firstSession;
502
502
  }
503
503
  }
504
-
504
+
505
505
  this.hudMode = true;
506
506
  this.updateHUDDisplay();
507
507
  } else {
508
508
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] 3. HUD already active');
509
509
  }
510
-
510
+
511
511
  // 4. Wait for HUD activation, then run visualizer debug
512
512
  setTimeout(() => {
513
513
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] 4. Running HUD Visualizer Debug...');
@@ -517,13 +517,13 @@ class HUDManager {
517
517
  console.error('[HUD-MANAGER-COMPREHENSIVE-DEBUG] HUD Visualizer debug method not available');
518
518
  }
519
519
  }, 1000);
520
-
520
+
521
521
  // 5. Add test events if event viewer has no events
522
522
  setTimeout(() => {
523
523
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] 5. Checking event data...');
524
524
  const allEvents = this.eventViewer?.getAllEvents();
525
525
  console.log(`[HUD-MANAGER-COMPREHENSIVE-DEBUG] Found ${allEvents ? allEvents.length : 0} events`);
526
-
526
+
527
527
  if (!allEvents || allEvents.length === 0) {
528
528
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] No events found, adding test events...');
529
529
  this.debugAddTestEvents();
@@ -532,7 +532,7 @@ class HUDManager {
532
532
  this.processExistingEventsForHUD();
533
533
  }
534
534
  }, 1500);
535
-
535
+
536
536
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] Comprehensive debug initiated. Check logs above.');
537
537
  }
538
538
 
@@ -544,9 +544,9 @@ class HUDManager {
544
544
  console.error('[HUD-MANAGER-COMPREHENSIVE-DEBUG] No HUD visualizer for test events');
545
545
  return;
546
546
  }
547
-
547
+
548
548
  console.log('[HUD-MANAGER-COMPREHENSIVE-DEBUG] Adding test events...');
549
-
549
+
550
550
  const testEvents = [
551
551
  {
552
552
  timestamp: new Date().toISOString(),
@@ -560,7 +560,7 @@ class HUDManager {
560
560
  hook_event_name: 'hook',
561
561
  subtype: 'user_prompt',
562
562
  session_id: 'debug-session-001',
563
- data: {
563
+ data: {
564
564
  session_id: 'debug-session-001',
565
565
  prompt_preview: 'Debug the HUD rendering issue'
566
566
  }
@@ -570,7 +570,7 @@ class HUDManager {
570
570
  hook_event_name: 'hook',
571
571
  subtype: 'pre_tool',
572
572
  session_id: 'debug-session-001',
573
- data: {
573
+ data: {
574
574
  session_id: 'debug-session-001',
575
575
  tool_name: 'Read'
576
576
  }
@@ -580,7 +580,7 @@ class HUDManager {
580
580
  hook_event_name: 'agent',
581
581
  subtype: 'activated',
582
582
  session_id: 'debug-session-001',
583
- data: {
583
+ data: {
584
584
  session_id: 'debug-session-001',
585
585
  agent_type: 'engineer',
586
586
  agent_name: 'Debug Engineer'
@@ -591,15 +591,15 @@ class HUDManager {
591
591
  hook_event_name: 'todo',
592
592
  subtype: 'updated',
593
593
  session_id: 'debug-session-001',
594
- data: {
594
+ data: {
595
595
  session_id: 'debug-session-001'
596
596
  }
597
597
  }
598
598
  ];
599
-
599
+
600
600
  console.log(`[HUD-MANAGER-COMPREHENSIVE-DEBUG] Processing ${testEvents.length} test events...`);
601
601
  this.hudVisualizer.processExistingEvents(testEvents);
602
-
602
+
603
603
  // Also add to event viewer if it exists
604
604
  if (this.eventViewer && this.eventViewer.addEvent) {
605
605
  testEvents.forEach(event => {
@@ -613,25 +613,25 @@ class HUDManager {
613
613
  */
614
614
  debugForceHUDVisibility() {
615
615
  console.log('[HUD-MANAGER-VISIBILITY-DEBUG] Forcing HUD visibility...');
616
-
616
+
617
617
  // Force HUD mode DOM changes
618
618
  const eventsWrapper = document.querySelector('.events-wrapper');
619
619
  const hudVisualizer = document.getElementById('hud-visualizer');
620
620
  const hudCytoscape = document.getElementById('hud-cytoscape');
621
621
  const normalView = document.getElementById('normal-view');
622
-
622
+
623
623
  if (eventsWrapper) {
624
624
  eventsWrapper.classList.add('hud-mode');
625
625
  console.log('[HUD-MANAGER-VISIBILITY-DEBUG] Added hud-mode class to events-wrapper');
626
626
  }
627
-
627
+
628
628
  if (hudVisualizer) {
629
629
  hudVisualizer.style.display = 'block';
630
630
  hudVisualizer.style.visibility = 'visible';
631
631
  hudVisualizer.style.opacity = '1';
632
632
  console.log('[HUD-MANAGER-VISIBILITY-DEBUG] Forced HUD visualizer visibility');
633
633
  }
634
-
634
+
635
635
  if (hudCytoscape) {
636
636
  hudCytoscape.style.width = '100%';
637
637
  hudCytoscape.style.height = '500px';
@@ -639,12 +639,12 @@ class HUDManager {
639
639
  hudCytoscape.style.border = '2px solid #007bff';
640
640
  console.log('[HUD-MANAGER-VISIBILITY-DEBUG] Forced HUD cytoscape container dimensions and visibility');
641
641
  }
642
-
642
+
643
643
  if (normalView) {
644
644
  normalView.style.display = 'none';
645
645
  console.log('[HUD-MANAGER-VISIBILITY-DEBUG] Hidden normal view');
646
646
  }
647
-
647
+
648
648
  // Wait then test canvas
649
649
  setTimeout(() => {
650
650
  if (this.hudVisualizer && this.hudVisualizer.debugDrawSimpleShape) {
@@ -662,10 +662,10 @@ class HUDManager {
662
662
  this.hudVisualizer.deactivate();
663
663
  this.hudVisualizer.clear();
664
664
  }
665
-
665
+
666
666
  this.hudMode = false;
667
667
  this.isInitialized = false;
668
-
668
+
669
669
  console.log('HUD manager cleaned up');
670
670
  }
671
- }
671
+ }