claude-mpm 3.9.11__py3-none-any.whl → 4.0.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +2 -2
  3. claude_mpm/__main__.py +3 -2
  4. claude_mpm/agents/__init__.py +85 -79
  5. claude_mpm/agents/agent_loader.py +464 -1003
  6. claude_mpm/agents/agent_loader_integration.py +45 -45
  7. claude_mpm/agents/agents_metadata.py +29 -30
  8. claude_mpm/agents/async_agent_loader.py +156 -138
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/base_agent_loader.py +179 -151
  11. claude_mpm/agents/frontmatter_validator.py +229 -130
  12. claude_mpm/agents/schema/agent_schema.json +1 -1
  13. claude_mpm/agents/system_agent_config.py +213 -147
  14. claude_mpm/agents/templates/__init__.py +13 -13
  15. claude_mpm/agents/templates/code_analyzer.json +2 -2
  16. claude_mpm/agents/templates/data_engineer.json +1 -1
  17. claude_mpm/agents/templates/documentation.json +23 -11
  18. claude_mpm/agents/templates/engineer.json +22 -6
  19. claude_mpm/agents/templates/memory_manager.json +1 -1
  20. claude_mpm/agents/templates/ops.json +2 -2
  21. claude_mpm/agents/templates/project_organizer.json +1 -1
  22. claude_mpm/agents/templates/qa.json +1 -1
  23. claude_mpm/agents/templates/refactoring_engineer.json +222 -0
  24. claude_mpm/agents/templates/research.json +20 -14
  25. claude_mpm/agents/templates/security.json +1 -1
  26. claude_mpm/agents/templates/ticketing.json +2 -2
  27. claude_mpm/agents/templates/version_control.json +1 -1
  28. claude_mpm/agents/templates/web_qa.json +3 -1
  29. claude_mpm/agents/templates/web_ui.json +2 -2
  30. claude_mpm/cli/__init__.py +79 -51
  31. claude_mpm/cli/__main__.py +3 -2
  32. claude_mpm/cli/commands/__init__.py +20 -20
  33. claude_mpm/cli/commands/agents.py +279 -247
  34. claude_mpm/cli/commands/aggregate.py +138 -157
  35. claude_mpm/cli/commands/cleanup.py +147 -147
  36. claude_mpm/cli/commands/config.py +93 -76
  37. claude_mpm/cli/commands/info.py +17 -16
  38. claude_mpm/cli/commands/mcp.py +140 -905
  39. claude_mpm/cli/commands/mcp_command_router.py +139 -0
  40. claude_mpm/cli/commands/mcp_config_commands.py +20 -0
  41. claude_mpm/cli/commands/mcp_install_commands.py +20 -0
  42. claude_mpm/cli/commands/mcp_server_commands.py +175 -0
  43. claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
  44. claude_mpm/cli/commands/memory.py +239 -203
  45. claude_mpm/cli/commands/monitor.py +330 -86
  46. claude_mpm/cli/commands/run.py +380 -429
  47. claude_mpm/cli/commands/run_config_checker.py +160 -0
  48. claude_mpm/cli/commands/socketio_monitor.py +235 -0
  49. claude_mpm/cli/commands/tickets.py +363 -220
  50. claude_mpm/cli/parser.py +24 -1156
  51. claude_mpm/cli/parsers/__init__.py +29 -0
  52. claude_mpm/cli/parsers/agents_parser.py +136 -0
  53. claude_mpm/cli/parsers/base_parser.py +331 -0
  54. claude_mpm/cli/parsers/config_parser.py +85 -0
  55. claude_mpm/cli/parsers/mcp_parser.py +152 -0
  56. claude_mpm/cli/parsers/memory_parser.py +138 -0
  57. claude_mpm/cli/parsers/monitor_parser.py +124 -0
  58. claude_mpm/cli/parsers/run_parser.py +147 -0
  59. claude_mpm/cli/parsers/tickets_parser.py +203 -0
  60. claude_mpm/cli/ticket_cli.py +7 -3
  61. claude_mpm/cli/utils.py +55 -37
  62. claude_mpm/cli_module/__init__.py +6 -6
  63. claude_mpm/cli_module/args.py +188 -140
  64. claude_mpm/cli_module/commands.py +79 -70
  65. claude_mpm/cli_module/migration_example.py +38 -60
  66. claude_mpm/config/__init__.py +32 -25
  67. claude_mpm/config/agent_config.py +151 -119
  68. claude_mpm/config/experimental_features.py +71 -73
  69. claude_mpm/config/paths.py +94 -208
  70. claude_mpm/config/socketio_config.py +84 -73
  71. claude_mpm/constants.py +35 -18
  72. claude_mpm/core/__init__.py +9 -6
  73. claude_mpm/core/agent_name_normalizer.py +68 -71
  74. claude_mpm/core/agent_registry.py +372 -521
  75. claude_mpm/core/agent_session_manager.py +74 -63
  76. claude_mpm/core/base_service.py +116 -87
  77. claude_mpm/core/cache.py +119 -153
  78. claude_mpm/core/claude_runner.py +425 -1120
  79. claude_mpm/core/config.py +263 -168
  80. claude_mpm/core/config_aliases.py +69 -61
  81. claude_mpm/core/config_constants.py +292 -0
  82. claude_mpm/core/constants.py +57 -99
  83. claude_mpm/core/container.py +211 -178
  84. claude_mpm/core/exceptions.py +233 -89
  85. claude_mpm/core/factories.py +92 -54
  86. claude_mpm/core/framework_loader.py +378 -220
  87. claude_mpm/core/hook_manager.py +198 -83
  88. claude_mpm/core/hook_performance_config.py +136 -0
  89. claude_mpm/core/injectable_service.py +61 -55
  90. claude_mpm/core/interactive_session.py +165 -155
  91. claude_mpm/core/interfaces.py +221 -195
  92. claude_mpm/core/lazy.py +96 -96
  93. claude_mpm/core/logger.py +133 -107
  94. claude_mpm/core/logging_config.py +185 -157
  95. claude_mpm/core/minimal_framework_loader.py +20 -15
  96. claude_mpm/core/mixins.py +30 -29
  97. claude_mpm/core/oneshot_session.py +215 -181
  98. claude_mpm/core/optimized_agent_loader.py +134 -138
  99. claude_mpm/core/optimized_startup.py +159 -157
  100. claude_mpm/core/pm_hook_interceptor.py +85 -72
  101. claude_mpm/core/service_registry.py +103 -101
  102. claude_mpm/core/session_manager.py +97 -87
  103. claude_mpm/core/socketio_pool.py +212 -158
  104. claude_mpm/core/tool_access_control.py +58 -51
  105. claude_mpm/core/types.py +46 -24
  106. claude_mpm/core/typing_utils.py +166 -82
  107. claude_mpm/core/unified_agent_registry.py +721 -0
  108. claude_mpm/core/unified_config.py +550 -0
  109. claude_mpm/core/unified_paths.py +549 -0
  110. claude_mpm/dashboard/index.html +1 -1
  111. claude_mpm/dashboard/open_dashboard.py +51 -17
  112. claude_mpm/dashboard/static/built/components/agent-inference.js +2 -0
  113. claude_mpm/dashboard/static/built/components/event-processor.js +2 -0
  114. claude_mpm/dashboard/static/built/components/event-viewer.js +2 -0
  115. claude_mpm/dashboard/static/built/components/export-manager.js +2 -0
  116. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +2 -0
  117. claude_mpm/dashboard/static/built/components/hud-library-loader.js +2 -0
  118. claude_mpm/dashboard/static/built/components/hud-manager.js +2 -0
  119. claude_mpm/dashboard/static/built/components/hud-visualizer.js +2 -0
  120. claude_mpm/dashboard/static/built/components/module-viewer.js +2 -0
  121. claude_mpm/dashboard/static/built/components/session-manager.js +2 -0
  122. claude_mpm/dashboard/static/built/components/socket-manager.js +2 -0
  123. claude_mpm/dashboard/static/built/components/ui-state-manager.js +2 -0
  124. claude_mpm/dashboard/static/built/components/working-directory.js +2 -0
  125. claude_mpm/dashboard/static/built/dashboard.js +2 -0
  126. claude_mpm/dashboard/static/built/socket-client.js +2 -0
  127. claude_mpm/dashboard/static/css/dashboard.css +27 -8
  128. claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
  129. claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
  130. claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
  131. claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
  132. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
  133. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
  134. claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
  135. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
  136. claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  137. claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
  138. claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
  139. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
  140. claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
  141. claude_mpm/dashboard/static/dist/dashboard.js +2 -0
  142. claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  143. claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
  144. claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
  145. claude_mpm/dashboard/static/js/components/event-viewer.js +93 -72
  146. claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
  147. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +110 -96
  148. claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
  149. claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
  150. claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
  151. claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
  152. claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
  153. claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
  154. claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
  155. claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
  156. claude_mpm/dashboard/static/js/dashboard.js +178 -453
  157. claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
  158. claude_mpm/dashboard/static/js/socket-client.js +133 -53
  159. claude_mpm/dashboard/templates/index.html +40 -50
  160. claude_mpm/experimental/cli_enhancements.py +60 -58
  161. claude_mpm/generators/__init__.py +1 -1
  162. claude_mpm/generators/agent_profile_generator.py +75 -65
  163. claude_mpm/hooks/__init__.py +1 -1
  164. claude_mpm/hooks/base_hook.py +33 -28
  165. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  166. claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
  167. claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
  168. claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
  169. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
  170. claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
  171. claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
  172. claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
  173. claude_mpm/hooks/memory_integration_hook.py +140 -100
  174. claude_mpm/hooks/tool_call_interceptor.py +89 -76
  175. claude_mpm/hooks/validation_hooks.py +57 -49
  176. claude_mpm/init.py +145 -121
  177. claude_mpm/models/__init__.py +9 -9
  178. claude_mpm/models/agent_definition.py +33 -23
  179. claude_mpm/models/agent_session.py +228 -200
  180. claude_mpm/scripts/__init__.py +1 -1
  181. claude_mpm/scripts/socketio_daemon.py +192 -75
  182. claude_mpm/scripts/socketio_server_manager.py +328 -0
  183. claude_mpm/scripts/start_activity_logging.py +25 -22
  184. claude_mpm/services/__init__.py +68 -43
  185. claude_mpm/services/agent_capabilities_service.py +271 -0
  186. claude_mpm/services/agents/__init__.py +23 -32
  187. claude_mpm/services/agents/deployment/__init__.py +3 -3
  188. claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
  189. claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
  190. claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
  191. claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
  192. claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
  193. claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
  194. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
  195. claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
  196. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
  197. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
  198. claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
  199. claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
  200. claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
  201. claude_mpm/services/agents/deployment/agent_validator.py +352 -0
  202. claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
  203. claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
  204. claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
  205. claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
  206. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  207. claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
  208. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  209. claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
  210. claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
  211. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  212. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  213. claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
  214. claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
  215. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  216. claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
  217. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  218. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  219. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  220. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  221. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
  222. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  223. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  224. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
  225. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
  226. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
  227. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
  228. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
  229. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  230. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
  231. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  232. claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
  233. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
  234. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  235. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  236. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  237. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  238. claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
  239. claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
  240. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  241. claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
  242. claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
  243. claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
  244. claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
  245. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  246. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  247. claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
  248. claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
  249. claude_mpm/services/agents/loading/__init__.py +2 -2
  250. claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
  251. claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
  252. claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
  253. claude_mpm/services/agents/management/__init__.py +2 -2
  254. claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
  255. claude_mpm/services/agents/management/agent_management_service.py +209 -156
  256. claude_mpm/services/agents/memory/__init__.py +9 -6
  257. claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
  258. claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
  259. claude_mpm/services/agents/memory/analyzer.py +430 -0
  260. claude_mpm/services/agents/memory/content_manager.py +376 -0
  261. claude_mpm/services/agents/memory/template_generator.py +468 -0
  262. claude_mpm/services/agents/registry/__init__.py +7 -10
  263. claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
  264. claude_mpm/services/agents/registry/modification_tracker.py +351 -285
  265. claude_mpm/services/async_session_logger.py +187 -153
  266. claude_mpm/services/claude_session_logger.py +87 -72
  267. claude_mpm/services/command_handler_service.py +217 -0
  268. claude_mpm/services/communication/__init__.py +3 -2
  269. claude_mpm/services/core/__init__.py +50 -97
  270. claude_mpm/services/core/base.py +60 -53
  271. claude_mpm/services/core/interfaces/__init__.py +188 -0
  272. claude_mpm/services/core/interfaces/agent.py +351 -0
  273. claude_mpm/services/core/interfaces/communication.py +343 -0
  274. claude_mpm/services/core/interfaces/infrastructure.py +413 -0
  275. claude_mpm/services/core/interfaces/service.py +434 -0
  276. claude_mpm/services/core/interfaces.py +19 -944
  277. claude_mpm/services/event_aggregator.py +208 -170
  278. claude_mpm/services/exceptions.py +387 -308
  279. claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
  280. claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
  281. claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
  282. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
  283. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
  284. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
  285. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
  286. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
  287. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  288. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  289. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  290. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  291. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
  292. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  293. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  294. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
  295. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
  296. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  297. claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
  298. claude_mpm/services/hook_service.py +106 -114
  299. claude_mpm/services/infrastructure/__init__.py +7 -5
  300. claude_mpm/services/infrastructure/context_preservation.py +233 -199
  301. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  302. claude_mpm/services/infrastructure/logging.py +83 -76
  303. claude_mpm/services/infrastructure/monitoring.py +547 -404
  304. claude_mpm/services/mcp_gateway/__init__.py +30 -13
  305. claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
  306. claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
  307. claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
  308. claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
  309. claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
  310. claude_mpm/services/mcp_gateway/core/base.py +80 -67
  311. claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
  312. claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
  313. claude_mpm/services/mcp_gateway/main.py +287 -137
  314. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  315. claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
  316. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  317. claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
  318. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
  319. claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
  320. claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
  321. claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
  322. claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
  323. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
  324. claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
  325. claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
  326. claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
  327. claude_mpm/services/memory/__init__.py +2 -2
  328. claude_mpm/services/memory/builder.py +451 -362
  329. claude_mpm/services/memory/cache/__init__.py +2 -2
  330. claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
  331. claude_mpm/services/memory/cache/simple_cache.py +107 -93
  332. claude_mpm/services/memory/indexed_memory.py +195 -193
  333. claude_mpm/services/memory/optimizer.py +267 -234
  334. claude_mpm/services/memory/router.py +571 -263
  335. claude_mpm/services/memory_hook_service.py +237 -0
  336. claude_mpm/services/port_manager.py +575 -0
  337. claude_mpm/services/project/__init__.py +3 -3
  338. claude_mpm/services/project/analyzer.py +451 -305
  339. claude_mpm/services/project/registry.py +262 -240
  340. claude_mpm/services/recovery_manager.py +287 -231
  341. claude_mpm/services/response_tracker.py +87 -67
  342. claude_mpm/services/runner_configuration_service.py +587 -0
  343. claude_mpm/services/session_management_service.py +304 -0
  344. claude_mpm/services/socketio/__init__.py +4 -4
  345. claude_mpm/services/socketio/client_proxy.py +174 -0
  346. claude_mpm/services/socketio/handlers/__init__.py +3 -3
  347. claude_mpm/services/socketio/handlers/base.py +44 -30
  348. claude_mpm/services/socketio/handlers/connection.py +166 -64
  349. claude_mpm/services/socketio/handlers/file.py +123 -108
  350. claude_mpm/services/socketio/handlers/git.py +607 -373
  351. claude_mpm/services/socketio/handlers/hook.py +185 -0
  352. claude_mpm/services/socketio/handlers/memory.py +4 -4
  353. claude_mpm/services/socketio/handlers/project.py +4 -4
  354. claude_mpm/services/socketio/handlers/registry.py +53 -38
  355. claude_mpm/services/socketio/server/__init__.py +18 -0
  356. claude_mpm/services/socketio/server/broadcaster.py +252 -0
  357. claude_mpm/services/socketio/server/core.py +399 -0
  358. claude_mpm/services/socketio/server/main.py +323 -0
  359. claude_mpm/services/socketio_client_manager.py +160 -133
  360. claude_mpm/services/socketio_server.py +36 -1885
  361. claude_mpm/services/subprocess_launcher_service.py +316 -0
  362. claude_mpm/services/system_instructions_service.py +258 -0
  363. claude_mpm/services/ticket_manager.py +19 -533
  364. claude_mpm/services/utility_service.py +285 -0
  365. claude_mpm/services/version_control/__init__.py +18 -21
  366. claude_mpm/services/version_control/branch_strategy.py +20 -10
  367. claude_mpm/services/version_control/conflict_resolution.py +37 -13
  368. claude_mpm/services/version_control/git_operations.py +52 -21
  369. claude_mpm/services/version_control/semantic_versioning.py +92 -53
  370. claude_mpm/services/version_control/version_parser.py +145 -125
  371. claude_mpm/services/version_service.py +270 -0
  372. claude_mpm/storage/__init__.py +2 -2
  373. claude_mpm/storage/state_storage.py +177 -181
  374. claude_mpm/ticket_wrapper.py +2 -2
  375. claude_mpm/utils/__init__.py +2 -2
  376. claude_mpm/utils/agent_dependency_loader.py +453 -243
  377. claude_mpm/utils/config_manager.py +157 -118
  378. claude_mpm/utils/console.py +1 -1
  379. claude_mpm/utils/dependency_cache.py +102 -107
  380. claude_mpm/utils/dependency_manager.py +52 -47
  381. claude_mpm/utils/dependency_strategies.py +131 -96
  382. claude_mpm/utils/environment_context.py +110 -102
  383. claude_mpm/utils/error_handler.py +75 -55
  384. claude_mpm/utils/file_utils.py +80 -67
  385. claude_mpm/utils/framework_detection.py +12 -11
  386. claude_mpm/utils/import_migration_example.py +12 -60
  387. claude_mpm/utils/imports.py +48 -45
  388. claude_mpm/utils/path_operations.py +100 -93
  389. claude_mpm/utils/robust_installer.py +172 -164
  390. claude_mpm/utils/session_logging.py +30 -23
  391. claude_mpm/utils/subprocess_utils.py +99 -61
  392. claude_mpm/validation/__init__.py +1 -1
  393. claude_mpm/validation/agent_validator.py +151 -111
  394. claude_mpm/validation/frontmatter_validator.py +92 -71
  395. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/METADATA +90 -22
  396. claude_mpm-4.0.4.dist-info/RECORD +417 -0
  397. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/entry_points.txt +1 -0
  398. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/licenses/LICENSE +1 -1
  399. claude_mpm/cli/commands/run_guarded.py +0 -511
  400. claude_mpm/config/memory_guardian_config.py +0 -325
  401. claude_mpm/config/memory_guardian_yaml.py +0 -335
  402. claude_mpm/core/config_paths.py +0 -150
  403. claude_mpm/core/memory_aware_runner.py +0 -353
  404. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  405. claude_mpm/deployment_paths.py +0 -261
  406. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  407. claude_mpm/models/state_models.py +0 -433
  408. claude_mpm/services/agent/__init__.py +0 -24
  409. claude_mpm/services/agent/deployment.py +0 -2548
  410. claude_mpm/services/agent/management.py +0 -598
  411. claude_mpm/services/agent/registry.py +0 -813
  412. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  413. claude_mpm/services/communication/socketio.py +0 -1935
  414. claude_mpm/services/communication/websocket.py +0 -479
  415. claude_mpm/services/framework_claude_md_generator.py +0 -624
  416. claude_mpm/services/health_monitor.py +0 -893
  417. claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
  418. claude_mpm/services/infrastructure/health_monitor.py +0 -775
  419. claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
  420. claude_mpm/services/infrastructure/memory_guardian.py +0 -944
  421. claude_mpm/services/infrastructure/restart_protection.py +0 -642
  422. claude_mpm/services/infrastructure/state_manager.py +0 -774
  423. claude_mpm/services/mcp_gateway/manager.py +0 -334
  424. claude_mpm/services/optimized_hook_service.py +0 -542
  425. claude_mpm/services/project_analyzer.py +0 -864
  426. claude_mpm/services/project_registry.py +0 -608
  427. claude_mpm/services/standalone_socketio_server.py +0 -1300
  428. claude_mpm/services/ticket_manager_di.py +0 -318
  429. claude_mpm/services/ticketing_service_original.py +0 -510
  430. claude_mpm/utils/paths.py +0 -395
  431. claude_mpm/utils/platform_memory.py +0 -524
  432. claude_mpm-3.9.11.dist-info/RECORD +0 -306
  433. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/WHEEL +0 -0
  434. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/top_level.txt +0 -0
@@ -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
+ }