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.
- claude_mpm/VERSION +1 -1
- claude_mpm/__init__.py +2 -2
- claude_mpm/__main__.py +3 -2
- claude_mpm/agents/__init__.py +85 -79
- claude_mpm/agents/agent_loader.py +464 -1003
- claude_mpm/agents/agent_loader_integration.py +45 -45
- claude_mpm/agents/agents_metadata.py +29 -30
- claude_mpm/agents/async_agent_loader.py +156 -138
- claude_mpm/agents/base_agent.json +1 -1
- claude_mpm/agents/base_agent_loader.py +179 -151
- claude_mpm/agents/frontmatter_validator.py +229 -130
- claude_mpm/agents/schema/agent_schema.json +1 -1
- claude_mpm/agents/system_agent_config.py +213 -147
- claude_mpm/agents/templates/__init__.py +13 -13
- claude_mpm/agents/templates/code_analyzer.json +2 -2
- claude_mpm/agents/templates/data_engineer.json +1 -1
- claude_mpm/agents/templates/documentation.json +23 -11
- claude_mpm/agents/templates/engineer.json +22 -6
- claude_mpm/agents/templates/memory_manager.json +1 -1
- claude_mpm/agents/templates/ops.json +2 -2
- claude_mpm/agents/templates/project_organizer.json +1 -1
- claude_mpm/agents/templates/qa.json +1 -1
- claude_mpm/agents/templates/refactoring_engineer.json +222 -0
- claude_mpm/agents/templates/research.json +20 -14
- claude_mpm/agents/templates/security.json +1 -1
- claude_mpm/agents/templates/ticketing.json +2 -2
- claude_mpm/agents/templates/version_control.json +1 -1
- claude_mpm/agents/templates/web_qa.json +3 -1
- claude_mpm/agents/templates/web_ui.json +2 -2
- claude_mpm/cli/__init__.py +79 -51
- claude_mpm/cli/__main__.py +3 -2
- claude_mpm/cli/commands/__init__.py +20 -20
- claude_mpm/cli/commands/agents.py +279 -247
- claude_mpm/cli/commands/aggregate.py +138 -157
- claude_mpm/cli/commands/cleanup.py +147 -147
- claude_mpm/cli/commands/config.py +93 -76
- claude_mpm/cli/commands/info.py +17 -16
- claude_mpm/cli/commands/mcp.py +140 -905
- claude_mpm/cli/commands/mcp_command_router.py +139 -0
- claude_mpm/cli/commands/mcp_config_commands.py +20 -0
- claude_mpm/cli/commands/mcp_install_commands.py +20 -0
- claude_mpm/cli/commands/mcp_server_commands.py +175 -0
- claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
- claude_mpm/cli/commands/memory.py +239 -203
- claude_mpm/cli/commands/monitor.py +330 -86
- claude_mpm/cli/commands/run.py +380 -429
- claude_mpm/cli/commands/run_config_checker.py +160 -0
- claude_mpm/cli/commands/socketio_monitor.py +235 -0
- claude_mpm/cli/commands/tickets.py +363 -220
- claude_mpm/cli/parser.py +24 -1156
- claude_mpm/cli/parsers/__init__.py +29 -0
- claude_mpm/cli/parsers/agents_parser.py +136 -0
- claude_mpm/cli/parsers/base_parser.py +331 -0
- claude_mpm/cli/parsers/config_parser.py +85 -0
- claude_mpm/cli/parsers/mcp_parser.py +152 -0
- claude_mpm/cli/parsers/memory_parser.py +138 -0
- claude_mpm/cli/parsers/monitor_parser.py +124 -0
- claude_mpm/cli/parsers/run_parser.py +147 -0
- claude_mpm/cli/parsers/tickets_parser.py +203 -0
- claude_mpm/cli/ticket_cli.py +7 -3
- claude_mpm/cli/utils.py +55 -37
- claude_mpm/cli_module/__init__.py +6 -6
- claude_mpm/cli_module/args.py +188 -140
- claude_mpm/cli_module/commands.py +79 -70
- claude_mpm/cli_module/migration_example.py +38 -60
- claude_mpm/config/__init__.py +32 -25
- claude_mpm/config/agent_config.py +151 -119
- claude_mpm/config/experimental_features.py +71 -73
- claude_mpm/config/paths.py +94 -208
- claude_mpm/config/socketio_config.py +84 -73
- claude_mpm/constants.py +35 -18
- claude_mpm/core/__init__.py +9 -6
- claude_mpm/core/agent_name_normalizer.py +68 -71
- claude_mpm/core/agent_registry.py +372 -521
- claude_mpm/core/agent_session_manager.py +74 -63
- claude_mpm/core/base_service.py +116 -87
- claude_mpm/core/cache.py +119 -153
- claude_mpm/core/claude_runner.py +425 -1120
- claude_mpm/core/config.py +263 -168
- claude_mpm/core/config_aliases.py +69 -61
- claude_mpm/core/config_constants.py +292 -0
- claude_mpm/core/constants.py +57 -99
- claude_mpm/core/container.py +211 -178
- claude_mpm/core/exceptions.py +233 -89
- claude_mpm/core/factories.py +92 -54
- claude_mpm/core/framework_loader.py +378 -220
- claude_mpm/core/hook_manager.py +198 -83
- claude_mpm/core/hook_performance_config.py +136 -0
- claude_mpm/core/injectable_service.py +61 -55
- claude_mpm/core/interactive_session.py +165 -155
- claude_mpm/core/interfaces.py +221 -195
- claude_mpm/core/lazy.py +96 -96
- claude_mpm/core/logger.py +133 -107
- claude_mpm/core/logging_config.py +185 -157
- claude_mpm/core/minimal_framework_loader.py +20 -15
- claude_mpm/core/mixins.py +30 -29
- claude_mpm/core/oneshot_session.py +215 -181
- claude_mpm/core/optimized_agent_loader.py +134 -138
- claude_mpm/core/optimized_startup.py +159 -157
- claude_mpm/core/pm_hook_interceptor.py +85 -72
- claude_mpm/core/service_registry.py +103 -101
- claude_mpm/core/session_manager.py +97 -87
- claude_mpm/core/socketio_pool.py +212 -158
- claude_mpm/core/tool_access_control.py +58 -51
- claude_mpm/core/types.py +46 -24
- claude_mpm/core/typing_utils.py +166 -82
- claude_mpm/core/unified_agent_registry.py +721 -0
- claude_mpm/core/unified_config.py +550 -0
- claude_mpm/core/unified_paths.py +549 -0
- claude_mpm/dashboard/index.html +1 -1
- claude_mpm/dashboard/open_dashboard.py +51 -17
- claude_mpm/dashboard/static/built/components/agent-inference.js +2 -0
- claude_mpm/dashboard/static/built/components/event-processor.js +2 -0
- claude_mpm/dashboard/static/built/components/event-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/export-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +2 -0
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +2 -0
- claude_mpm/dashboard/static/built/components/hud-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +2 -0
- claude_mpm/dashboard/static/built/components/module-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/session-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/socket-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/working-directory.js +2 -0
- claude_mpm/dashboard/static/built/dashboard.js +2 -0
- claude_mpm/dashboard/static/built/socket-client.js +2 -0
- claude_mpm/dashboard/static/css/dashboard.css +27 -8
- claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
- claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
- claude_mpm/dashboard/static/dist/dashboard.js +2 -0
- claude_mpm/dashboard/static/dist/socket-client.js +2 -0
- claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
- claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
- claude_mpm/dashboard/static/js/components/event-viewer.js +93 -72
- claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +110 -96
- claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
- claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
- claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
- claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
- claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
- claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
- claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
- claude_mpm/dashboard/static/js/dashboard.js +178 -453
- claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
- claude_mpm/dashboard/static/js/socket-client.js +133 -53
- claude_mpm/dashboard/templates/index.html +40 -50
- claude_mpm/experimental/cli_enhancements.py +60 -58
- claude_mpm/generators/__init__.py +1 -1
- claude_mpm/generators/agent_profile_generator.py +75 -65
- claude_mpm/hooks/__init__.py +1 -1
- claude_mpm/hooks/base_hook.py +33 -28
- claude_mpm/hooks/claude_hooks/__init__.py +1 -1
- claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
- claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
- claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
- claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
- claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
- claude_mpm/hooks/memory_integration_hook.py +140 -100
- claude_mpm/hooks/tool_call_interceptor.py +89 -76
- claude_mpm/hooks/validation_hooks.py +57 -49
- claude_mpm/init.py +145 -121
- claude_mpm/models/__init__.py +9 -9
- claude_mpm/models/agent_definition.py +33 -23
- claude_mpm/models/agent_session.py +228 -200
- claude_mpm/scripts/__init__.py +1 -1
- claude_mpm/scripts/socketio_daemon.py +192 -75
- claude_mpm/scripts/socketio_server_manager.py +328 -0
- claude_mpm/scripts/start_activity_logging.py +25 -22
- claude_mpm/services/__init__.py +68 -43
- claude_mpm/services/agent_capabilities_service.py +271 -0
- claude_mpm/services/agents/__init__.py +23 -32
- claude_mpm/services/agents/deployment/__init__.py +3 -3
- claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
- claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
- claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
- claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
- claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
- claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
- claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
- claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
- claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
- claude_mpm/services/agents/deployment/agent_validator.py +352 -0
- claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
- claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
- claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
- claude_mpm/services/agents/deployment/config/__init__.py +13 -0
- claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
- claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
- claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
- claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
- claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
- claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
- claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
- claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
- claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
- claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
- claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
- claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
- claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
- claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
- claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
- claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
- claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
- claude_mpm/services/agents/deployment/results/__init__.py +13 -0
- claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
- claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
- claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
- claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
- claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
- claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
- claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
- claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
- claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
- claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
- claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
- claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
- claude_mpm/services/agents/loading/__init__.py +2 -2
- claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
- claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
- claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
- claude_mpm/services/agents/management/__init__.py +2 -2
- claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
- claude_mpm/services/agents/management/agent_management_service.py +209 -156
- claude_mpm/services/agents/memory/__init__.py +9 -6
- claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
- claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
- claude_mpm/services/agents/memory/analyzer.py +430 -0
- claude_mpm/services/agents/memory/content_manager.py +376 -0
- claude_mpm/services/agents/memory/template_generator.py +468 -0
- claude_mpm/services/agents/registry/__init__.py +7 -10
- claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
- claude_mpm/services/agents/registry/modification_tracker.py +351 -285
- claude_mpm/services/async_session_logger.py +187 -153
- claude_mpm/services/claude_session_logger.py +87 -72
- claude_mpm/services/command_handler_service.py +217 -0
- claude_mpm/services/communication/__init__.py +3 -2
- claude_mpm/services/core/__init__.py +50 -97
- claude_mpm/services/core/base.py +60 -53
- claude_mpm/services/core/interfaces/__init__.py +188 -0
- claude_mpm/services/core/interfaces/agent.py +351 -0
- claude_mpm/services/core/interfaces/communication.py +343 -0
- claude_mpm/services/core/interfaces/infrastructure.py +413 -0
- claude_mpm/services/core/interfaces/service.py +434 -0
- claude_mpm/services/core/interfaces.py +19 -944
- claude_mpm/services/event_aggregator.py +208 -170
- claude_mpm/services/exceptions.py +387 -308
- claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
- claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
- claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
- claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
- claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
- claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
- claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
- claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
- claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
- claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
- claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
- claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
- claude_mpm/services/hook_service.py +106 -114
- claude_mpm/services/infrastructure/__init__.py +7 -5
- claude_mpm/services/infrastructure/context_preservation.py +233 -199
- claude_mpm/services/infrastructure/daemon_manager.py +279 -0
- claude_mpm/services/infrastructure/logging.py +83 -76
- claude_mpm/services/infrastructure/monitoring.py +547 -404
- claude_mpm/services/mcp_gateway/__init__.py +30 -13
- claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
- claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
- claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
- claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
- claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
- claude_mpm/services/mcp_gateway/core/base.py +80 -67
- claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
- claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
- claude_mpm/services/mcp_gateway/main.py +287 -137
- claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
- claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
- claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
- claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
- claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
- claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
- claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
- claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
- claude_mpm/services/memory/__init__.py +2 -2
- claude_mpm/services/memory/builder.py +451 -362
- claude_mpm/services/memory/cache/__init__.py +2 -2
- claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
- claude_mpm/services/memory/cache/simple_cache.py +107 -93
- claude_mpm/services/memory/indexed_memory.py +195 -193
- claude_mpm/services/memory/optimizer.py +267 -234
- claude_mpm/services/memory/router.py +571 -263
- claude_mpm/services/memory_hook_service.py +237 -0
- claude_mpm/services/port_manager.py +575 -0
- claude_mpm/services/project/__init__.py +3 -3
- claude_mpm/services/project/analyzer.py +451 -305
- claude_mpm/services/project/registry.py +262 -240
- claude_mpm/services/recovery_manager.py +287 -231
- claude_mpm/services/response_tracker.py +87 -67
- claude_mpm/services/runner_configuration_service.py +587 -0
- claude_mpm/services/session_management_service.py +304 -0
- claude_mpm/services/socketio/__init__.py +4 -4
- claude_mpm/services/socketio/client_proxy.py +174 -0
- claude_mpm/services/socketio/handlers/__init__.py +3 -3
- claude_mpm/services/socketio/handlers/base.py +44 -30
- claude_mpm/services/socketio/handlers/connection.py +166 -64
- claude_mpm/services/socketio/handlers/file.py +123 -108
- claude_mpm/services/socketio/handlers/git.py +607 -373
- claude_mpm/services/socketio/handlers/hook.py +185 -0
- claude_mpm/services/socketio/handlers/memory.py +4 -4
- claude_mpm/services/socketio/handlers/project.py +4 -4
- claude_mpm/services/socketio/handlers/registry.py +53 -38
- claude_mpm/services/socketio/server/__init__.py +18 -0
- claude_mpm/services/socketio/server/broadcaster.py +252 -0
- claude_mpm/services/socketio/server/core.py +399 -0
- claude_mpm/services/socketio/server/main.py +323 -0
- claude_mpm/services/socketio_client_manager.py +160 -133
- claude_mpm/services/socketio_server.py +36 -1885
- claude_mpm/services/subprocess_launcher_service.py +316 -0
- claude_mpm/services/system_instructions_service.py +258 -0
- claude_mpm/services/ticket_manager.py +19 -533
- claude_mpm/services/utility_service.py +285 -0
- claude_mpm/services/version_control/__init__.py +18 -21
- claude_mpm/services/version_control/branch_strategy.py +20 -10
- claude_mpm/services/version_control/conflict_resolution.py +37 -13
- claude_mpm/services/version_control/git_operations.py +52 -21
- claude_mpm/services/version_control/semantic_versioning.py +92 -53
- claude_mpm/services/version_control/version_parser.py +145 -125
- claude_mpm/services/version_service.py +270 -0
- claude_mpm/storage/__init__.py +2 -2
- claude_mpm/storage/state_storage.py +177 -181
- claude_mpm/ticket_wrapper.py +2 -2
- claude_mpm/utils/__init__.py +2 -2
- claude_mpm/utils/agent_dependency_loader.py +453 -243
- claude_mpm/utils/config_manager.py +157 -118
- claude_mpm/utils/console.py +1 -1
- claude_mpm/utils/dependency_cache.py +102 -107
- claude_mpm/utils/dependency_manager.py +52 -47
- claude_mpm/utils/dependency_strategies.py +131 -96
- claude_mpm/utils/environment_context.py +110 -102
- claude_mpm/utils/error_handler.py +75 -55
- claude_mpm/utils/file_utils.py +80 -67
- claude_mpm/utils/framework_detection.py +12 -11
- claude_mpm/utils/import_migration_example.py +12 -60
- claude_mpm/utils/imports.py +48 -45
- claude_mpm/utils/path_operations.py +100 -93
- claude_mpm/utils/robust_installer.py +172 -164
- claude_mpm/utils/session_logging.py +30 -23
- claude_mpm/utils/subprocess_utils.py +99 -61
- claude_mpm/validation/__init__.py +1 -1
- claude_mpm/validation/agent_validator.py +151 -111
- claude_mpm/validation/frontmatter_validator.py +92 -71
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/METADATA +90 -22
- claude_mpm-4.0.4.dist-info/RECORD +417 -0
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/entry_points.txt +1 -0
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/licenses/LICENSE +1 -1
- claude_mpm/cli/commands/run_guarded.py +0 -511
- claude_mpm/config/memory_guardian_config.py +0 -325
- claude_mpm/config/memory_guardian_yaml.py +0 -335
- claude_mpm/core/config_paths.py +0 -150
- claude_mpm/core/memory_aware_runner.py +0 -353
- claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
- claude_mpm/deployment_paths.py +0 -261
- claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
- claude_mpm/models/state_models.py +0 -433
- claude_mpm/services/agent/__init__.py +0 -24
- claude_mpm/services/agent/deployment.py +0 -2548
- claude_mpm/services/agent/management.py +0 -598
- claude_mpm/services/agent/registry.py +0 -813
- claude_mpm/services/agents/registry/agent_registry.py +0 -813
- claude_mpm/services/communication/socketio.py +0 -1935
- claude_mpm/services/communication/websocket.py +0 -479
- claude_mpm/services/framework_claude_md_generator.py +0 -624
- claude_mpm/services/health_monitor.py +0 -893
- claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
- claude_mpm/services/infrastructure/health_monitor.py +0 -775
- claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
- claude_mpm/services/infrastructure/memory_guardian.py +0 -944
- claude_mpm/services/infrastructure/restart_protection.py +0 -642
- claude_mpm/services/infrastructure/state_manager.py +0 -774
- claude_mpm/services/mcp_gateway/manager.py +0 -334
- claude_mpm/services/optimized_hook_service.py +0 -542
- claude_mpm/services/project_analyzer.py +0 -864
- claude_mpm/services/project_registry.py +0 -608
- claude_mpm/services/standalone_socketio_server.py +0 -1300
- claude_mpm/services/ticket_manager_di.py +0 -318
- claude_mpm/services/ticketing_service_original.py +0 -510
- claude_mpm/utils/paths.py +0 -395
- claude_mpm/utils/platform_memory.py +0 -524
- claude_mpm-3.9.11.dist-info/RECORD +0 -306
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/WHEEL +0 -0
- {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 | 
            +
            }
         |