claude-mpm 4.24.0__py3-none-any.whl → 5.0.9__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.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_PM.md +12 -0
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +721 -911
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +4 -4
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +370 -3
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +48 -0
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +38 -2
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +188 -30
- claude_mpm/cli/commands/agents.py +959 -36
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/auto_configure.py +2 -6
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +769 -45
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mpm_init/core.py +49 -1
- claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
- claude_mpm/cli/commands/mpm_init/prompts.py +6 -6
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +123 -165
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +757 -20
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +955 -45
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- claude_mpm/cli/parsers/base_parser.py +53 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +145 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +538 -106
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +14 -2
- claude_mpm/commands/mpm-init.md +27 -2
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +10 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +13 -0
- claude_mpm/core/claude_runner.py +5 -34
- claude_mpm/core/config.py +16 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +91 -10
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +71 -8
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
- claude_mpm/services/agents/local_template_manager.py +50 -10
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/cli/session_pause_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +7 -2
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +3 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/local_ops/resource_monitor.py +1 -1
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/model/model_router.py +1 -2
- claude_mpm/services/monitor/daemon.py +29 -9
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/port_manager.py +1 -1
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +16 -3
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +1 -1
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/system_instructions_service.py +1 -3
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
- claude_mpm/skills/skills_registry.py +0 -1
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/utils/agent_dependency_loader.py +77 -10
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +2 -4
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/METADATA +396 -43
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/RECORD +268 -422
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -183
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -238
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -287
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -144
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -243
- claude_mpm/agents/templates/react_engineer.json +0 -239
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -188
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/tauri_engineer.json +0 -274
- claude_mpm/agents/templates/ticketing.json +0 -178
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -159
- claude_mpm/agents/templates/web_qa.json +0 -400
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/commands/mpm-tickets.md +0 -151
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
- claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
- claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
- claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
- claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
- claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
- claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
- claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/built/react/events.js +0 -30
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
- claude_mpm/dashboard/static/built/shared/logger.js +0 -385
- claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/react/events.js +0 -30
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/js/shared/logger.js +0 -385
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/legacy/activity.html +0 -736
- claude_mpm/dashboard/static/legacy/agents.html +0 -786
- claude_mpm/dashboard/static/legacy/files.html +0 -747
- claude_mpm/dashboard/static/legacy/tools.html +0 -831
- claude_mpm/dashboard/static/monitors.html +0 -431
- claude_mpm/dashboard/static/production/events.html +0 -659
- claude_mpm/dashboard/static/production/main.html +0 -698
- claude_mpm/dashboard/static/production/monitors.html +0 -483
- claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
- claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
- claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
- claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
- /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
- /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
- /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
- /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/WHEEL +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/top_level.txt +0 -0
|
@@ -177,7 +177,7 @@ class WorkingDirectoryManager {
|
|
|
177
177
|
console.log('[WORKING-DIR-DEBUG] setWorkingDirectory called with:', this.repr(dir));
|
|
178
178
|
|
|
179
179
|
this.currentWorkingDir = dir;
|
|
180
|
-
|
|
180
|
+
|
|
181
181
|
// Store in session storage for persistence during the session
|
|
182
182
|
if (dir && this.validateDirectoryPath(dir)) {
|
|
183
183
|
sessionStorage.setItem('currentWorkingDirectory', dir);
|
|
@@ -316,13 +316,13 @@ class WorkingDirectoryManager {
|
|
|
316
316
|
*/
|
|
317
317
|
getDefaultWorkingDir() {
|
|
318
318
|
console.log('[WORKING-DIR-DEBUG] getDefaultWorkingDir called');
|
|
319
|
-
|
|
319
|
+
|
|
320
320
|
// Try to get from the current working directory if set
|
|
321
321
|
if (this.currentWorkingDir && this.validateDirectoryPath(this.currentWorkingDir)) {
|
|
322
322
|
console.log('[WORKING-DIR-DEBUG] Using current working directory:', this.currentWorkingDir);
|
|
323
323
|
return this.currentWorkingDir;
|
|
324
324
|
}
|
|
325
|
-
|
|
325
|
+
|
|
326
326
|
// Try to get from header display
|
|
327
327
|
const headerWorkingDir = document.querySelector('.working-dir-text');
|
|
328
328
|
if (headerWorkingDir?.textContent?.trim()) {
|
|
@@ -367,11 +367,11 @@ class WorkingDirectoryManager {
|
|
|
367
367
|
const eventsWithDir = window.socketClient.events
|
|
368
368
|
.filter(e => e.data && (e.data.working_directory || e.data.cwd || e.data.working_dir))
|
|
369
369
|
.reverse();
|
|
370
|
-
|
|
370
|
+
|
|
371
371
|
if (eventsWithDir.length > 0) {
|
|
372
372
|
const recentEvent = eventsWithDir[0];
|
|
373
|
-
const dir = recentEvent.data.working_directory ||
|
|
374
|
-
recentEvent.data.cwd ||
|
|
373
|
+
const dir = recentEvent.data.working_directory ||
|
|
374
|
+
recentEvent.data.cwd ||
|
|
375
375
|
recentEvent.data.working_dir;
|
|
376
376
|
console.log('[WORKING-DIR-DEBUG] Using working directory from recent event:', dir);
|
|
377
377
|
return dir;
|
|
@@ -393,7 +393,7 @@ class WorkingDirectoryManager {
|
|
|
393
393
|
console.log('[WORKING-DIR-DEBUG] Using session storage working directory:', this.repr(sessionWorkingDir));
|
|
394
394
|
return sessionWorkingDir;
|
|
395
395
|
}
|
|
396
|
-
|
|
396
|
+
|
|
397
397
|
// Try to get the current working directory from environment/process
|
|
398
398
|
// This should be the directory where claude-mpm was started from
|
|
399
399
|
const processWorkingDir = window.processWorkingDirectory || process?.cwd?.() || null;
|
|
@@ -401,7 +401,7 @@ class WorkingDirectoryManager {
|
|
|
401
401
|
console.log('[WORKING-DIR-DEBUG] Using process working directory:', this.repr(processWorkingDir));
|
|
402
402
|
return processWorkingDir;
|
|
403
403
|
}
|
|
404
|
-
|
|
404
|
+
|
|
405
405
|
// Final fallback - use current working directory if available, otherwise home directory
|
|
406
406
|
// Never default to root "/" as it's not a useful default for code viewing
|
|
407
407
|
const homeDir = window.homeDirectory || process?.env?.HOME || process?.env?.USERPROFILE || null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Enhanced Connection Manager for Dashboard
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Provides robust connection management with:
|
|
5
5
|
* - Persistent client ID across reconnections
|
|
6
6
|
* - Event sequence tracking and replay
|
|
@@ -29,11 +29,11 @@ class EnhancedConnectionManager {
|
|
|
29
29
|
this.lastPongTime = null;
|
|
30
30
|
this.missedHeartbeats = 0;
|
|
31
31
|
this.maxMissedHeartbeats = 3;
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
// Event buffering for offline mode
|
|
34
34
|
this.eventBuffer = [];
|
|
35
35
|
this.maxEventBuffer = 100;
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
// Connection metrics
|
|
38
38
|
this.metrics = {
|
|
39
39
|
connectTime: null,
|
|
@@ -44,16 +44,16 @@ class EnhancedConnectionManager {
|
|
|
44
44
|
eventsAcked: 0,
|
|
45
45
|
lastActivity: null
|
|
46
46
|
};
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
// Status update callbacks
|
|
49
49
|
this.statusCallbacks = new Set();
|
|
50
50
|
this.qualityCallbacks = new Set();
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
// Initialize
|
|
53
53
|
this.setupEventHandlers();
|
|
54
54
|
this.startHealthMonitoring();
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
/**
|
|
58
58
|
* Load or generate client ID for persistent identification
|
|
59
59
|
*/
|
|
@@ -65,7 +65,7 @@ class EnhancedConnectionManager {
|
|
|
65
65
|
}
|
|
66
66
|
return clientId;
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
|
|
69
69
|
/**
|
|
70
70
|
* Load last received event sequence for replay
|
|
71
71
|
*/
|
|
@@ -73,7 +73,7 @@ class EnhancedConnectionManager {
|
|
|
73
73
|
const sequence = localStorage.getItem('claude_mpm_last_sequence');
|
|
74
74
|
return sequence ? parseInt(sequence, 10) : 0;
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
/**
|
|
78
78
|
* Save last received event sequence
|
|
79
79
|
*/
|
|
@@ -81,16 +81,16 @@ class EnhancedConnectionManager {
|
|
|
81
81
|
this.lastSequence = sequence;
|
|
82
82
|
localStorage.setItem('claude_mpm_last_sequence', sequence.toString());
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
/**
|
|
86
86
|
* Connect with enhanced options and authentication
|
|
87
87
|
*/
|
|
88
88
|
connect(port = '8765') {
|
|
89
89
|
const url = `http://localhost:${port}`;
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
console.log(`[ConnectionManager] Connecting to ${url} with client ID: ${this.clientId}`);
|
|
92
92
|
this.updateConnectionState('connecting');
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
// Create socket with enhanced options
|
|
95
95
|
this.socket = io(url, {
|
|
96
96
|
auth: {
|
|
@@ -106,11 +106,11 @@ class EnhancedConnectionManager {
|
|
|
106
106
|
pingInterval: 25000,
|
|
107
107
|
pingTimeout: 20000
|
|
108
108
|
});
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
this.setupSocketHandlers();
|
|
111
111
|
this.socketClient.socket = this.socket;
|
|
112
112
|
}
|
|
113
|
-
|
|
113
|
+
|
|
114
114
|
/**
|
|
115
115
|
* Calculate exponential backoff delay for reconnection
|
|
116
116
|
*/
|
|
@@ -121,13 +121,13 @@ class EnhancedConnectionManager {
|
|
|
121
121
|
);
|
|
122
122
|
return delay + Math.random() * 1000; // Add jitter
|
|
123
123
|
}
|
|
124
|
-
|
|
124
|
+
|
|
125
125
|
/**
|
|
126
126
|
* Setup socket event handlers
|
|
127
127
|
*/
|
|
128
128
|
setupSocketHandlers() {
|
|
129
129
|
if (!this.socket) return;
|
|
130
|
-
|
|
130
|
+
|
|
131
131
|
// Connection established
|
|
132
132
|
this.socket.on('connection_established', (data) => {
|
|
133
133
|
console.log('[ConnectionManager] Connection established:', data);
|
|
@@ -138,60 +138,60 @@ class EnhancedConnectionManager {
|
|
|
138
138
|
this.missedHeartbeats = 0;
|
|
139
139
|
this.updateConnectionState('connected');
|
|
140
140
|
this.startHeartbeat();
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
// Flush buffered events if any
|
|
143
143
|
this.flushEventBuffer();
|
|
144
144
|
});
|
|
145
|
-
|
|
145
|
+
|
|
146
146
|
// Event replay after reconnection
|
|
147
147
|
this.socket.on('event_replay', (data) => {
|
|
148
148
|
console.log(`[ConnectionManager] Replaying ${data.count} events from sequence ${data.from_sequence}`);
|
|
149
|
-
|
|
149
|
+
|
|
150
150
|
if (data.events && data.events.length > 0) {
|
|
151
151
|
data.events.forEach(event => {
|
|
152
152
|
// Update sequence
|
|
153
153
|
if (event.sequence) {
|
|
154
154
|
this.saveLastSequence(event.sequence);
|
|
155
155
|
}
|
|
156
|
-
|
|
156
|
+
|
|
157
157
|
// Process replayed event
|
|
158
158
|
this.socketClient.handleEvent('claude_event', event);
|
|
159
159
|
});
|
|
160
|
-
|
|
160
|
+
|
|
161
161
|
this.showNotification(`Replayed ${data.count} missed events`, 'info');
|
|
162
162
|
}
|
|
163
163
|
});
|
|
164
|
-
|
|
164
|
+
|
|
165
165
|
// Normal event with sequence tracking
|
|
166
166
|
this.socket.on('claude_event', (event) => {
|
|
167
167
|
if (event.sequence) {
|
|
168
168
|
this.saveLastSequence(event.sequence);
|
|
169
|
-
|
|
169
|
+
|
|
170
170
|
// Send acknowledgment
|
|
171
171
|
this.socket.emit('acknowledge_event', {
|
|
172
172
|
sequence: event.sequence
|
|
173
173
|
});
|
|
174
|
-
|
|
174
|
+
|
|
175
175
|
this.metrics.eventsAcked++;
|
|
176
176
|
}
|
|
177
|
-
|
|
177
|
+
|
|
178
178
|
this.metrics.totalEvents++;
|
|
179
179
|
this.metrics.lastActivity = Date.now();
|
|
180
180
|
});
|
|
181
|
-
|
|
181
|
+
|
|
182
182
|
// Heartbeat response
|
|
183
183
|
this.socket.on('heartbeat_response', (data) => {
|
|
184
184
|
this.missedHeartbeats = 0;
|
|
185
185
|
this.updateConnectionQuality(1.0);
|
|
186
186
|
});
|
|
187
|
-
|
|
187
|
+
|
|
188
188
|
// Pong response
|
|
189
189
|
this.socket.on('pong', (data) => {
|
|
190
190
|
this.lastPongTime = Date.now();
|
|
191
191
|
const latency = this.lastPongTime - this.lastPingTime;
|
|
192
192
|
this.updateLatency(latency);
|
|
193
193
|
});
|
|
194
|
-
|
|
194
|
+
|
|
195
195
|
// Connection stats response
|
|
196
196
|
this.socket.on('connection_stats', (data) => {
|
|
197
197
|
console.log('[ConnectionManager] Connection stats:', data);
|
|
@@ -199,7 +199,7 @@ class EnhancedConnectionManager {
|
|
|
199
199
|
this.updateConnectionQuality(data.connection.quality);
|
|
200
200
|
}
|
|
201
201
|
});
|
|
202
|
-
|
|
202
|
+
|
|
203
203
|
// Standard Socket.IO events
|
|
204
204
|
this.socket.on('connect', () => {
|
|
205
205
|
console.log('[ConnectionManager] Socket connected');
|
|
@@ -209,13 +209,13 @@ class EnhancedConnectionManager {
|
|
|
209
209
|
this.metrics.totalReconnections++;
|
|
210
210
|
}
|
|
211
211
|
});
|
|
212
|
-
|
|
212
|
+
|
|
213
213
|
this.socket.on('disconnect', (reason) => {
|
|
214
214
|
console.log('[ConnectionManager] Socket disconnected:', reason);
|
|
215
215
|
this.metrics.disconnectTime = Date.now();
|
|
216
216
|
this.updateConnectionState('disconnected');
|
|
217
217
|
this.stopHeartbeat();
|
|
218
|
-
|
|
218
|
+
|
|
219
219
|
// Handle different disconnect reasons
|
|
220
220
|
if (reason === 'io server disconnect') {
|
|
221
221
|
// Server initiated disconnect
|
|
@@ -225,11 +225,11 @@ class EnhancedConnectionManager {
|
|
|
225
225
|
this.showNotification('Connection timeout - attempting to reconnect', 'warning');
|
|
226
226
|
}
|
|
227
227
|
});
|
|
228
|
-
|
|
228
|
+
|
|
229
229
|
this.socket.on('connect_error', (error) => {
|
|
230
230
|
console.error('[ConnectionManager] Connection error:', error.message);
|
|
231
231
|
this.reconnectAttempts++;
|
|
232
|
-
|
|
232
|
+
|
|
233
233
|
if (this.reconnectAttempts >= this.maxReconnectAttempts) {
|
|
234
234
|
this.updateConnectionState('failed');
|
|
235
235
|
this.showNotification('Failed to connect after multiple attempts', 'error');
|
|
@@ -241,34 +241,34 @@ class EnhancedConnectionManager {
|
|
|
241
241
|
);
|
|
242
242
|
}
|
|
243
243
|
});
|
|
244
|
-
|
|
244
|
+
|
|
245
245
|
this.socket.on('reconnect', (attemptNumber) => {
|
|
246
246
|
console.log(`[ConnectionManager] Reconnected after ${attemptNumber} attempts`);
|
|
247
247
|
this.showNotification('Reconnected successfully', 'success');
|
|
248
|
-
|
|
248
|
+
|
|
249
249
|
// Request event replay
|
|
250
250
|
this.socket.emit('request_replay', {
|
|
251
251
|
last_sequence: this.lastSequence
|
|
252
252
|
});
|
|
253
253
|
});
|
|
254
|
-
|
|
254
|
+
|
|
255
255
|
this.socket.on('reconnect_attempt', (attemptNumber) => {
|
|
256
256
|
console.log(`[ConnectionManager] Reconnection attempt ${attemptNumber}`);
|
|
257
257
|
this.updateConnectionState('reconnecting');
|
|
258
258
|
});
|
|
259
259
|
}
|
|
260
|
-
|
|
260
|
+
|
|
261
261
|
/**
|
|
262
262
|
* Start heartbeat monitoring
|
|
263
263
|
*/
|
|
264
264
|
startHeartbeat() {
|
|
265
265
|
this.stopHeartbeat();
|
|
266
|
-
|
|
266
|
+
|
|
267
267
|
this.heartbeatTimer = setInterval(() => {
|
|
268
268
|
if (this.socket && this.socket.connected) {
|
|
269
269
|
this.socket.emit('heartbeat');
|
|
270
270
|
this.missedHeartbeats++;
|
|
271
|
-
|
|
271
|
+
|
|
272
272
|
if (this.missedHeartbeats >= this.maxMissedHeartbeats) {
|
|
273
273
|
console.warn('[ConnectionManager] Too many missed heartbeats, connection may be stale');
|
|
274
274
|
this.updateConnectionQuality(0.3);
|
|
@@ -276,7 +276,7 @@ class EnhancedConnectionManager {
|
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
}, this.heartbeatInterval);
|
|
279
|
-
|
|
279
|
+
|
|
280
280
|
// Also start ping monitoring for latency
|
|
281
281
|
this.pingTimer = setInterval(() => {
|
|
282
282
|
if (this.socket && this.socket.connected) {
|
|
@@ -285,7 +285,7 @@ class EnhancedConnectionManager {
|
|
|
285
285
|
}
|
|
286
286
|
}, 10000); // Every 10 seconds
|
|
287
287
|
}
|
|
288
|
-
|
|
288
|
+
|
|
289
289
|
/**
|
|
290
290
|
* Stop heartbeat monitoring
|
|
291
291
|
*/
|
|
@@ -294,13 +294,13 @@ class EnhancedConnectionManager {
|
|
|
294
294
|
clearInterval(this.heartbeatTimer);
|
|
295
295
|
this.heartbeatTimer = null;
|
|
296
296
|
}
|
|
297
|
-
|
|
297
|
+
|
|
298
298
|
if (this.pingTimer) {
|
|
299
299
|
clearInterval(this.pingTimer);
|
|
300
300
|
this.pingTimer = null;
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
|
-
|
|
303
|
+
|
|
304
304
|
/**
|
|
305
305
|
* Start health monitoring
|
|
306
306
|
*/
|
|
@@ -311,7 +311,7 @@ class EnhancedConnectionManager {
|
|
|
311
311
|
this.socket.emit('get_connection_stats');
|
|
312
312
|
}
|
|
313
313
|
}, 60000); // Every minute
|
|
314
|
-
|
|
314
|
+
|
|
315
315
|
// Activity timeout detection
|
|
316
316
|
setInterval(() => {
|
|
317
317
|
if (this.connectionState === 'connected' && this.metrics.lastActivity) {
|
|
@@ -323,20 +323,20 @@ class EnhancedConnectionManager {
|
|
|
323
323
|
}
|
|
324
324
|
}, 30000); // Check every 30 seconds
|
|
325
325
|
}
|
|
326
|
-
|
|
326
|
+
|
|
327
327
|
/**
|
|
328
328
|
* Update connection state and notify listeners
|
|
329
329
|
*/
|
|
330
330
|
updateConnectionState(state) {
|
|
331
331
|
const previousState = this.connectionState;
|
|
332
332
|
this.connectionState = state;
|
|
333
|
-
|
|
333
|
+
|
|
334
334
|
if (previousState !== state) {
|
|
335
335
|
console.log(`[ConnectionManager] State change: ${previousState} -> ${state}`);
|
|
336
|
-
|
|
336
|
+
|
|
337
337
|
// Update UI
|
|
338
338
|
this.updateConnectionUI(state);
|
|
339
|
-
|
|
339
|
+
|
|
340
340
|
// Notify callbacks
|
|
341
341
|
this.statusCallbacks.forEach(callback => {
|
|
342
342
|
try {
|
|
@@ -347,13 +347,13 @@ class EnhancedConnectionManager {
|
|
|
347
347
|
});
|
|
348
348
|
}
|
|
349
349
|
}
|
|
350
|
-
|
|
350
|
+
|
|
351
351
|
/**
|
|
352
352
|
* Update connection quality score
|
|
353
353
|
*/
|
|
354
354
|
updateConnectionQuality(quality) {
|
|
355
355
|
this.connectionQuality = Math.max(0, Math.min(1, quality));
|
|
356
|
-
|
|
356
|
+
|
|
357
357
|
// Notify callbacks
|
|
358
358
|
this.qualityCallbacks.forEach(callback => {
|
|
359
359
|
try {
|
|
@@ -362,11 +362,11 @@ class EnhancedConnectionManager {
|
|
|
362
362
|
console.error('Error in quality callback:', error);
|
|
363
363
|
}
|
|
364
364
|
});
|
|
365
|
-
|
|
365
|
+
|
|
366
366
|
// Update UI indicator
|
|
367
367
|
this.updateQualityUI(this.connectionQuality);
|
|
368
368
|
}
|
|
369
|
-
|
|
369
|
+
|
|
370
370
|
/**
|
|
371
371
|
* Update latency display
|
|
372
372
|
*/
|
|
@@ -374,7 +374,7 @@ class EnhancedConnectionManager {
|
|
|
374
374
|
const latencyElement = document.getElementById('connection-latency');
|
|
375
375
|
if (latencyElement) {
|
|
376
376
|
latencyElement.textContent = `${latency}ms`;
|
|
377
|
-
|
|
377
|
+
|
|
378
378
|
// Color code based on latency
|
|
379
379
|
if (latency < 50) {
|
|
380
380
|
latencyElement.className = 'latency-good';
|
|
@@ -385,14 +385,14 @@ class EnhancedConnectionManager {
|
|
|
385
385
|
}
|
|
386
386
|
}
|
|
387
387
|
}
|
|
388
|
-
|
|
388
|
+
|
|
389
389
|
/**
|
|
390
390
|
* Update connection UI based on state
|
|
391
391
|
*/
|
|
392
392
|
updateConnectionUI(state) {
|
|
393
393
|
const statusElement = document.getElementById('connection-status');
|
|
394
394
|
if (!statusElement) return;
|
|
395
|
-
|
|
395
|
+
|
|
396
396
|
const stateConfig = {
|
|
397
397
|
'connecting': { text: 'Connecting...', class: 'status-connecting', icon: '⟳' },
|
|
398
398
|
'connected': { text: 'Connected', class: 'status-connected', icon: '●' },
|
|
@@ -401,23 +401,23 @@ class EnhancedConnectionManager {
|
|
|
401
401
|
'stale': { text: 'Connection Stale', class: 'status-stale', icon: '⚠' },
|
|
402
402
|
'failed': { text: 'Connection Failed', class: 'status-failed', icon: '✕' }
|
|
403
403
|
};
|
|
404
|
-
|
|
404
|
+
|
|
405
405
|
const config = stateConfig[state] || stateConfig['disconnected'];
|
|
406
406
|
statusElement.innerHTML = `<span>${config.icon}</span> ${config.text}`;
|
|
407
407
|
statusElement.className = `status-badge ${config.class}`;
|
|
408
408
|
}
|
|
409
|
-
|
|
409
|
+
|
|
410
410
|
/**
|
|
411
411
|
* Update connection quality UI
|
|
412
412
|
*/
|
|
413
413
|
updateQualityUI(quality) {
|
|
414
414
|
const qualityElement = document.getElementById('connection-quality');
|
|
415
415
|
if (!qualityElement) return;
|
|
416
|
-
|
|
416
|
+
|
|
417
417
|
const percentage = Math.round(quality * 100);
|
|
418
418
|
let qualityClass = 'quality-good';
|
|
419
419
|
let qualityText = 'Excellent';
|
|
420
|
-
|
|
420
|
+
|
|
421
421
|
if (quality < 0.3) {
|
|
422
422
|
qualityClass = 'quality-poor';
|
|
423
423
|
qualityText = 'Poor';
|
|
@@ -425,7 +425,7 @@ class EnhancedConnectionManager {
|
|
|
425
425
|
qualityClass = 'quality-moderate';
|
|
426
426
|
qualityText = 'Fair';
|
|
427
427
|
}
|
|
428
|
-
|
|
428
|
+
|
|
429
429
|
qualityElement.innerHTML = `
|
|
430
430
|
<div class="quality-bar ${qualityClass}">
|
|
431
431
|
<div class="quality-fill" style="width: ${percentage}%"></div>
|
|
@@ -433,7 +433,7 @@ class EnhancedConnectionManager {
|
|
|
433
433
|
<span class="quality-text">${qualityText} (${percentage}%)</span>
|
|
434
434
|
`;
|
|
435
435
|
}
|
|
436
|
-
|
|
436
|
+
|
|
437
437
|
/**
|
|
438
438
|
* Buffer events when disconnected
|
|
439
439
|
*/
|
|
@@ -441,68 +441,68 @@ class EnhancedConnectionManager {
|
|
|
441
441
|
if (this.eventBuffer.length >= this.maxEventBuffer) {
|
|
442
442
|
this.eventBuffer.shift(); // Remove oldest
|
|
443
443
|
}
|
|
444
|
-
|
|
444
|
+
|
|
445
445
|
this.eventBuffer.push({
|
|
446
446
|
...event,
|
|
447
447
|
buffered_at: Date.now()
|
|
448
448
|
});
|
|
449
|
-
|
|
449
|
+
|
|
450
450
|
// Save to localStorage for persistence
|
|
451
451
|
localStorage.setItem('claude_mpm_event_buffer', JSON.stringify(this.eventBuffer));
|
|
452
452
|
}
|
|
453
|
-
|
|
453
|
+
|
|
454
454
|
/**
|
|
455
455
|
* Flush buffered events after reconnection
|
|
456
456
|
*/
|
|
457
457
|
flushEventBuffer() {
|
|
458
458
|
if (this.eventBuffer.length === 0) return;
|
|
459
|
-
|
|
459
|
+
|
|
460
460
|
console.log(`[ConnectionManager] Flushing ${this.eventBuffer.length} buffered events`);
|
|
461
|
-
|
|
461
|
+
|
|
462
462
|
// Process buffered events
|
|
463
463
|
this.eventBuffer.forEach(event => {
|
|
464
464
|
this.socketClient.handleEvent('claude_event', event);
|
|
465
465
|
});
|
|
466
|
-
|
|
466
|
+
|
|
467
467
|
// Clear buffer
|
|
468
468
|
this.eventBuffer = [];
|
|
469
469
|
localStorage.removeItem('claude_mpm_event_buffer');
|
|
470
470
|
}
|
|
471
|
-
|
|
471
|
+
|
|
472
472
|
/**
|
|
473
473
|
* Show notification to user
|
|
474
474
|
*/
|
|
475
475
|
showNotification(message, type = 'info') {
|
|
476
476
|
const notificationArea = document.getElementById('connection-notifications');
|
|
477
477
|
if (!notificationArea) return;
|
|
478
|
-
|
|
478
|
+
|
|
479
479
|
const notification = document.createElement('div');
|
|
480
480
|
notification.className = `notification notification-${type}`;
|
|
481
481
|
notification.textContent = message;
|
|
482
|
-
|
|
482
|
+
|
|
483
483
|
notificationArea.appendChild(notification);
|
|
484
|
-
|
|
484
|
+
|
|
485
485
|
// Auto-remove after 5 seconds
|
|
486
486
|
setTimeout(() => {
|
|
487
487
|
notification.style.opacity = '0';
|
|
488
488
|
setTimeout(() => notification.remove(), 300);
|
|
489
489
|
}, 5000);
|
|
490
490
|
}
|
|
491
|
-
|
|
491
|
+
|
|
492
492
|
/**
|
|
493
493
|
* Register status change callback
|
|
494
494
|
*/
|
|
495
495
|
onStatusChange(callback) {
|
|
496
496
|
this.statusCallbacks.add(callback);
|
|
497
497
|
}
|
|
498
|
-
|
|
498
|
+
|
|
499
499
|
/**
|
|
500
500
|
* Register quality change callback
|
|
501
501
|
*/
|
|
502
502
|
onQualityChange(callback) {
|
|
503
503
|
this.qualityCallbacks.add(callback);
|
|
504
504
|
}
|
|
505
|
-
|
|
505
|
+
|
|
506
506
|
/**
|
|
507
507
|
* Get connection metrics
|
|
508
508
|
*/
|
|
@@ -516,18 +516,18 @@ class EnhancedConnectionManager {
|
|
|
516
516
|
bufferedEvents: this.eventBuffer.length
|
|
517
517
|
};
|
|
518
518
|
}
|
|
519
|
-
|
|
519
|
+
|
|
520
520
|
/**
|
|
521
521
|
* Disconnect and cleanup
|
|
522
522
|
*/
|
|
523
523
|
disconnect() {
|
|
524
524
|
this.stopHeartbeat();
|
|
525
|
-
|
|
525
|
+
|
|
526
526
|
if (this.socket) {
|
|
527
527
|
this.socket.disconnect();
|
|
528
528
|
this.socket = null;
|
|
529
529
|
}
|
|
530
|
-
|
|
530
|
+
|
|
531
531
|
this.updateConnectionState('disconnected');
|
|
532
532
|
}
|
|
533
533
|
}
|