claude-mpm 4.20.3__py3-none-any.whl → 5.1.8__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 +35 -6
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1241 -667
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +75 -2
- 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 +1254 -0
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
- 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 +37 -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 +537 -239
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +924 -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/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +573 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +67 -1
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +125 -167
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +835 -44
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +1032 -47
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
- claude_mpm/cli/parsers/base_parser.py +53 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- 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 +564 -108
- 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 +17 -2
- claude_mpm/commands/mpm-init.md +28 -3
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/mpm-session-resume.md +381 -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 +11 -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/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +19 -35
- claude_mpm/core/config.py +24 -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/framework/processors/metadata_processor.py +1 -1
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +131 -10
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +110 -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/core/unified_config.py +22 -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/hook_handler.py +24 -7
- claude_mpm/hooks/claude_hooks/installer.py +45 -0
- claude_mpm/hooks/claude_hooks/memory_integration.py +12 -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/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- 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 +504 -0
- claude_mpm/services/cli/session_resume_helper.py +36 -16
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +31 -11
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/core/models/agent_config.py +3 -0
- claude_mpm/services/core/models/process.py +4 -0
- 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/diagnostics/models.py +21 -0
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/event_bus/event_bus.py +36 -3
- claude_mpm/services/event_bus/relay.py +23 -7
- 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/infrastructure/monitoring/resources.py +1 -1
- 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 +5 -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/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +41 -26
- 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/document_summarizer.py +1 -1
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/memory/failure_tracker.py +19 -4
- claude_mpm/services/memory/optimizer.py +1 -1
- claude_mpm/services/model/model_router.py +8 -9
- 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/native_agent_converter.py +356 -0
- 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/project_organizer.py +4 -0
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +17 -3
- claude_mpm/services/self_upgrade_service.py +165 -7
- 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 +2 -2
- 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/cloud_strategies.py +1 -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/__init__.py +3 -3
- claude_mpm/skills/agent_skills_injector.py +42 -49
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +13 -12
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
- claude_mpm/skills/bundled/performance-profiling.md +6 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +37 -15
- claude_mpm/skills/skills_registry.py +44 -48
- claude_mpm/skills/skills_service.py +117 -108
- 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/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/utils/agent_dependency_loader.py +80 -13
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +244 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +496 -65
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +328 -416
- 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 -180
- claude_mpm/agents/templates/circuit_breakers.md +0 -638
- 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 -211
- 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/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 -281
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -140
- 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 -242
- claude_mpm/agents/templates/react_engineer.json +0 -238
- 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/ticketing.json +0 -177
- 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 -157
- claude_mpm/agents/templates/web_qa.json +0 -399
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/cli/commands/mpm_init.py +0 -2093
- claude_mpm/commands/mpm-tickets.md +0 -102
- 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 -75
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -184
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -107
- claude_mpm/skills/bundled/collaboration/requesting-code-review/code-reviewer.md +0 -146
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -118
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -177
- 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 -175
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -314
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -227
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -74
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -32
- 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 -328
- 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/skill-creator/SKILL.md +0 -209
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -123
- 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 -304
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -96
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- /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.20.3.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
|
@@ -407,10 +407,10 @@ class AgentInference {
|
|
|
407
407
|
|
|
408
408
|
// Track SubagentStart events for orphan detection
|
|
409
409
|
const hookEventName = event.hook_event_name || event.data?.hook_event_name || '';
|
|
410
|
-
const isSubagentStart = hookEventName === 'SubagentStart' ||
|
|
410
|
+
const isSubagentStart = hookEventName === 'SubagentStart' ||
|
|
411
411
|
event.type === 'hook.subagent_start' ||
|
|
412
412
|
event.subtype === 'subagent_start';
|
|
413
|
-
|
|
413
|
+
|
|
414
414
|
if (isSubagentStart && inference.type === 'subagent') {
|
|
415
415
|
// Track this SubagentStart event
|
|
416
416
|
if (!this.state.subagentStartEvents.has(inference.agentName)) {
|
|
@@ -619,7 +619,7 @@ class AgentInference {
|
|
|
619
619
|
// Get all PM delegations
|
|
620
620
|
const pmDelegations = this.getPMDelegations();
|
|
621
621
|
const events = this.eventViewer.events;
|
|
622
|
-
|
|
622
|
+
|
|
623
623
|
// Build hierarchy tree
|
|
624
624
|
const hierarchy = {
|
|
625
625
|
mainPM: {
|
|
@@ -637,7 +637,7 @@ class AgentInference {
|
|
|
637
637
|
totalEvents: 0
|
|
638
638
|
}
|
|
639
639
|
};
|
|
640
|
-
|
|
640
|
+
|
|
641
641
|
// Process explicit PM delegations
|
|
642
642
|
for (const [delegationId, delegation] of pmDelegations) {
|
|
643
643
|
hierarchy.mainPM.delegations.push({
|
|
@@ -651,7 +651,7 @@ class AgentInference {
|
|
|
651
651
|
});
|
|
652
652
|
hierarchy.mainPM.totalEvents += delegation.agentEvents.length;
|
|
653
653
|
}
|
|
654
|
-
|
|
654
|
+
|
|
655
655
|
// Find PM's own events
|
|
656
656
|
events.forEach((event, index) => {
|
|
657
657
|
const inference = this.getInferredAgent(index);
|
|
@@ -663,7 +663,7 @@ class AgentInference {
|
|
|
663
663
|
hierarchy.mainPM.totalEvents++;
|
|
664
664
|
}
|
|
665
665
|
});
|
|
666
|
-
|
|
666
|
+
|
|
667
667
|
// Find orphan subagent events
|
|
668
668
|
const orphanEvents = new Map();
|
|
669
669
|
events.forEach((event, index) => {
|
|
@@ -677,7 +677,7 @@ class AgentInference {
|
|
|
677
677
|
break;
|
|
678
678
|
}
|
|
679
679
|
}
|
|
680
|
-
|
|
680
|
+
|
|
681
681
|
if (isOrphan) {
|
|
682
682
|
const agentName = inference.agentName;
|
|
683
683
|
if (!orphanEvents.has(agentName)) {
|
|
@@ -691,7 +691,7 @@ class AgentInference {
|
|
|
691
691
|
}
|
|
692
692
|
}
|
|
693
693
|
});
|
|
694
|
-
|
|
694
|
+
|
|
695
695
|
// Add orphan agents as implied PM delegations
|
|
696
696
|
for (const [agentName, agentEvents] of orphanEvents) {
|
|
697
697
|
hierarchy.impliedPM.delegations.push({
|
|
@@ -705,10 +705,10 @@ class AgentInference {
|
|
|
705
705
|
});
|
|
706
706
|
hierarchy.impliedPM.totalEvents += agentEvents.length;
|
|
707
707
|
}
|
|
708
|
-
|
|
708
|
+
|
|
709
709
|
return hierarchy;
|
|
710
710
|
}
|
|
711
|
-
|
|
711
|
+
|
|
712
712
|
/**
|
|
713
713
|
* Extract task context from PM call
|
|
714
714
|
* @param {Object} pmCall - PM's Task tool call
|
|
@@ -716,35 +716,35 @@ class AgentInference {
|
|
|
716
716
|
*/
|
|
717
717
|
extractTaskContext(pmCall) {
|
|
718
718
|
if (!pmCall) return 'Unknown task';
|
|
719
|
-
|
|
719
|
+
|
|
720
720
|
const params = pmCall.tool_parameters || pmCall.data?.tool_parameters || {};
|
|
721
721
|
return params.task || params.request || params.description || 'Task delegation';
|
|
722
722
|
}
|
|
723
|
-
|
|
723
|
+
|
|
724
724
|
/**
|
|
725
725
|
* Identify orphan subagents (SubagentStart without PM Task delegation)
|
|
726
726
|
* @param {Array} events - All events to analyze
|
|
727
727
|
*/
|
|
728
728
|
identifyOrphanSubagents(events) {
|
|
729
729
|
const ORPHAN_TIME_WINDOW = 5000; // 5 seconds to group orphans together
|
|
730
|
-
|
|
730
|
+
|
|
731
731
|
// Check each SubagentStart event
|
|
732
732
|
for (const [agentName, startEvents] of this.state.subagentStartEvents) {
|
|
733
733
|
for (const startEvent of startEvents) {
|
|
734
734
|
const eventIndex = startEvent.eventIndex;
|
|
735
735
|
const timestamp = new Date(startEvent.timestamp).getTime();
|
|
736
|
-
|
|
736
|
+
|
|
737
737
|
// Check if this SubagentStart has a corresponding PM Task delegation
|
|
738
738
|
let hasTaskDelegation = false;
|
|
739
|
-
|
|
739
|
+
|
|
740
740
|
// Look for a Task tool call within a reasonable time window before this SubagentStart
|
|
741
741
|
for (let i = Math.max(0, eventIndex - 20); i < eventIndex; i++) {
|
|
742
742
|
const prevEvent = events[i];
|
|
743
743
|
if (!prevEvent) continue;
|
|
744
|
-
|
|
744
|
+
|
|
745
745
|
const prevTimestamp = new Date(prevEvent.timestamp).getTime();
|
|
746
746
|
const timeDiff = timestamp - prevTimestamp;
|
|
747
|
-
|
|
747
|
+
|
|
748
748
|
// Check if this is a Task tool call within 10 seconds
|
|
749
749
|
if (prevEvent.tool_name === 'Task' && timeDiff >= 0 && timeDiff < 10000) {
|
|
750
750
|
const inference = this.state.eventAgentMap.get(i);
|
|
@@ -754,7 +754,7 @@ class AgentInference {
|
|
|
754
754
|
}
|
|
755
755
|
}
|
|
756
756
|
}
|
|
757
|
-
|
|
757
|
+
|
|
758
758
|
// If no Task delegation found, mark as orphan
|
|
759
759
|
if (!hasTaskDelegation) {
|
|
760
760
|
this.state.orphanSubagents.set(eventIndex, {
|
|
@@ -767,11 +767,11 @@ class AgentInference {
|
|
|
767
767
|
}
|
|
768
768
|
}
|
|
769
769
|
}
|
|
770
|
-
|
|
770
|
+
|
|
771
771
|
// Group orphan subagents by time proximity or session
|
|
772
772
|
this.groupOrphanSubagents(ORPHAN_TIME_WINDOW);
|
|
773
773
|
}
|
|
774
|
-
|
|
774
|
+
|
|
775
775
|
/**
|
|
776
776
|
* Group orphan subagents that occur close together in time or same session
|
|
777
777
|
* @param {number} timeWindow - Time window in milliseconds for grouping
|
|
@@ -779,25 +779,25 @@ class AgentInference {
|
|
|
779
779
|
groupOrphanSubagents(timeWindow) {
|
|
780
780
|
const orphansList = Array.from(this.state.orphanSubagents.values())
|
|
781
781
|
.sort((a, b) => new Date(a.timestamp) - new Date(b.timestamp));
|
|
782
|
-
|
|
782
|
+
|
|
783
783
|
let currentGroup = null;
|
|
784
784
|
let lastTimestamp = null;
|
|
785
|
-
|
|
785
|
+
|
|
786
786
|
for (const orphan of orphansList) {
|
|
787
787
|
const timestamp = new Date(orphan.timestamp).getTime();
|
|
788
|
-
|
|
788
|
+
|
|
789
789
|
// Check if this orphan should be in the same group
|
|
790
|
-
if (!currentGroup ||
|
|
790
|
+
if (!currentGroup ||
|
|
791
791
|
(lastTimestamp && timestamp - lastTimestamp > timeWindow)) {
|
|
792
792
|
// Start a new group
|
|
793
793
|
currentGroup = `implied_pm_${orphan.sessionId}_${timestamp}`;
|
|
794
794
|
}
|
|
795
|
-
|
|
795
|
+
|
|
796
796
|
orphan.groupingKey = currentGroup;
|
|
797
797
|
lastTimestamp = timestamp;
|
|
798
798
|
}
|
|
799
799
|
}
|
|
800
|
-
|
|
800
|
+
|
|
801
801
|
/**
|
|
802
802
|
* Check if a subagent event is an orphan (no PM Task delegation)
|
|
803
803
|
* @param {number} eventIndex - Index of the event
|
|
@@ -806,23 +806,23 @@ class AgentInference {
|
|
|
806
806
|
isOrphanSubagent(eventIndex) {
|
|
807
807
|
return this.state.orphanSubagents.has(eventIndex);
|
|
808
808
|
}
|
|
809
|
-
|
|
809
|
+
|
|
810
810
|
/**
|
|
811
811
|
* Get orphan subagent context for an event
|
|
812
|
-
* @param {number} eventIndex - Index of the event
|
|
812
|
+
* @param {number} eventIndex - Index of the event
|
|
813
813
|
* @returns {Object|null} Orphan context or null
|
|
814
814
|
*/
|
|
815
815
|
getOrphanContext(eventIndex) {
|
|
816
816
|
return this.state.orphanSubagents.get(eventIndex) || null;
|
|
817
817
|
}
|
|
818
|
-
|
|
818
|
+
|
|
819
819
|
/**
|
|
820
820
|
* Get all orphan subagent groups
|
|
821
821
|
* @returns {Map} Map of groupingKey -> array of orphan contexts
|
|
822
822
|
*/
|
|
823
823
|
getOrphanGroups() {
|
|
824
824
|
const groups = new Map();
|
|
825
|
-
|
|
825
|
+
|
|
826
826
|
for (const orphan of this.state.orphanSubagents.values()) {
|
|
827
827
|
const key = orphan.groupingKey;
|
|
828
828
|
if (!groups.has(key)) {
|
|
@@ -830,7 +830,7 @@ class AgentInference {
|
|
|
830
830
|
}
|
|
831
831
|
groups.get(key).push(orphan);
|
|
832
832
|
}
|
|
833
|
-
|
|
833
|
+
|
|
834
834
|
return groups;
|
|
835
835
|
}
|
|
836
836
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Build Tracker Component
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* WHY: Displays and manages version/build information for both MPM and Monitor UI,
|
|
5
5
|
* providing users with clear visibility of the current system versions.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* DESIGN DECISION: Implemented as a standalone component that can be easily
|
|
8
8
|
* integrated into the dashboard header, with automatic updates from SocketIO.
|
|
9
9
|
*/
|
|
@@ -24,29 +24,29 @@ export class BuildTracker {
|
|
|
24
24
|
full_version: "v0.0.0"
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
// Socket client reference (will be set during initialization)
|
|
29
29
|
this.socketClient = null;
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
// Initialize the component
|
|
32
32
|
this.init();
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
/**
|
|
36
36
|
* Initialize the build tracker component
|
|
37
37
|
*/
|
|
38
38
|
async init() {
|
|
39
39
|
// Try to load version.json for dashboard version
|
|
40
40
|
await this.loadDashboardVersion();
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
this.createElements();
|
|
43
43
|
this.setupEventListeners();
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
/**
|
|
47
47
|
* Load dashboard version from version.json if available
|
|
48
|
-
*
|
|
49
|
-
* WHY: Attempts to load the actual dashboard version from the
|
|
48
|
+
*
|
|
49
|
+
* WHY: Attempts to load the actual dashboard version from the
|
|
50
50
|
* version.json file created by the version management script.
|
|
51
51
|
* Falls back to defaults if file is not available.
|
|
52
52
|
*/
|
|
@@ -56,7 +56,7 @@ export class BuildTracker {
|
|
|
56
56
|
const response = await fetch('/version.json');
|
|
57
57
|
if (response.ok) {
|
|
58
58
|
const versionData = await response.json();
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
// Update monitor build info with loaded data
|
|
61
61
|
this.buildInfo.monitor = {
|
|
62
62
|
version: versionData.version || "1.0.0",
|
|
@@ -64,17 +64,17 @@ export class BuildTracker {
|
|
|
64
64
|
formatted_build: versionData.formatted_build || "0001",
|
|
65
65
|
full_version: versionData.full_version || "v1.0.0-0001"
|
|
66
66
|
};
|
|
67
|
-
|
|
67
|
+
|
|
68
68
|
// Dashboard version loaded successfully
|
|
69
69
|
}
|
|
70
70
|
} catch (error) {
|
|
71
71
|
// Silently fall back to defaults if version.json not available
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
|
|
74
|
+
|
|
75
75
|
/**
|
|
76
76
|
* Create the DOM elements for version display
|
|
77
|
-
*
|
|
77
|
+
*
|
|
78
78
|
* WHY: Creates a clean, unobtrusive version display that fits
|
|
79
79
|
* seamlessly into the dashboard header.
|
|
80
80
|
*/
|
|
@@ -83,7 +83,7 @@ export class BuildTracker {
|
|
|
83
83
|
this.element = document.createElement('div');
|
|
84
84
|
this.element.className = 'version-display';
|
|
85
85
|
this.element.id = 'version-display';
|
|
86
|
-
|
|
86
|
+
|
|
87
87
|
// Create MPM version element
|
|
88
88
|
const mpmVersion = document.createElement('span');
|
|
89
89
|
mpmVersion.className = 'version-item mpm-version';
|
|
@@ -92,12 +92,12 @@ export class BuildTracker {
|
|
|
92
92
|
<span class="version-label">MPM</span>
|
|
93
93
|
<span class="version-value">v0.0.0</span>
|
|
94
94
|
`;
|
|
95
|
-
|
|
95
|
+
|
|
96
96
|
// Create separator
|
|
97
97
|
const separator = document.createElement('span');
|
|
98
98
|
separator.className = 'version-separator';
|
|
99
99
|
separator.textContent = '|';
|
|
100
|
-
|
|
100
|
+
|
|
101
101
|
// Create Monitor version element
|
|
102
102
|
const monitorVersion = document.createElement('span');
|
|
103
103
|
monitorVersion.className = 'version-item monitor-version';
|
|
@@ -106,69 +106,69 @@ export class BuildTracker {
|
|
|
106
106
|
<span class="version-label">Monitor</span>
|
|
107
107
|
<span class="version-value">v1.0.0-0001</span>
|
|
108
108
|
`;
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
// Assemble elements
|
|
111
111
|
this.element.appendChild(mpmVersion);
|
|
112
112
|
this.element.appendChild(separator);
|
|
113
113
|
this.element.appendChild(monitorVersion);
|
|
114
|
-
|
|
114
|
+
|
|
115
115
|
// Add tooltip for detailed info
|
|
116
116
|
this.element.title = 'Click for detailed version information';
|
|
117
117
|
}
|
|
118
|
-
|
|
118
|
+
|
|
119
119
|
/**
|
|
120
120
|
* Set the socket client for receiving updates
|
|
121
|
-
*
|
|
121
|
+
*
|
|
122
122
|
* @param {Object} socketClient - The Socket.IO client instance
|
|
123
123
|
*/
|
|
124
124
|
setSocketClient(socketClient) {
|
|
125
125
|
this.socketClient = socketClient;
|
|
126
|
-
|
|
126
|
+
|
|
127
127
|
// Listen for build info updates
|
|
128
128
|
if (this.socketClient && this.socketClient.socket) {
|
|
129
129
|
// Listen for welcome message with build info
|
|
130
130
|
this.socketClient.socket.on('welcome', (eventData) => {
|
|
131
131
|
// Handle both old format (direct) and new schema (nested in data)
|
|
132
|
-
const buildInfo = eventData.build_info ||
|
|
132
|
+
const buildInfo = eventData.build_info ||
|
|
133
133
|
(eventData.data && eventData.data.build_info);
|
|
134
134
|
if (buildInfo) {
|
|
135
135
|
this.updateBuildInfo(buildInfo);
|
|
136
136
|
}
|
|
137
137
|
});
|
|
138
|
-
|
|
138
|
+
|
|
139
139
|
// Listen for status updates with build info
|
|
140
140
|
this.socketClient.socket.on('status', (eventData) => {
|
|
141
141
|
// Handle both old format (direct) and new schema (nested in data)
|
|
142
|
-
const buildInfo = eventData.build_info ||
|
|
142
|
+
const buildInfo = eventData.build_info ||
|
|
143
143
|
(eventData.data && eventData.data.build_info);
|
|
144
144
|
if (buildInfo) {
|
|
145
145
|
this.updateBuildInfo(buildInfo);
|
|
146
146
|
}
|
|
147
147
|
});
|
|
148
|
-
|
|
148
|
+
|
|
149
149
|
// Listen for explicit build info updates
|
|
150
150
|
this.socketClient.socket.on('build_info', (data) => {
|
|
151
151
|
this.updateBuildInfo(data);
|
|
152
152
|
});
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
|
|
155
|
+
|
|
156
156
|
/**
|
|
157
157
|
* Update the build information
|
|
158
|
-
*
|
|
158
|
+
*
|
|
159
159
|
* @param {Object} buildInfo - Build information from server
|
|
160
160
|
*/
|
|
161
161
|
updateBuildInfo(buildInfo) {
|
|
162
162
|
// Store the build info
|
|
163
163
|
this.buildInfo = buildInfo;
|
|
164
|
-
|
|
164
|
+
|
|
165
165
|
// Update display
|
|
166
166
|
this.updateDisplay();
|
|
167
167
|
}
|
|
168
|
-
|
|
168
|
+
|
|
169
169
|
/**
|
|
170
170
|
* Update the version display elements
|
|
171
|
-
*
|
|
171
|
+
*
|
|
172
172
|
* WHY: Keeps the UI in sync with the latest version information
|
|
173
173
|
* received from the server.
|
|
174
174
|
*/
|
|
@@ -176,23 +176,23 @@ export class BuildTracker {
|
|
|
176
176
|
// Update MPM version
|
|
177
177
|
const mpmElement = this.element.querySelector('.mpm-version .version-value');
|
|
178
178
|
if (mpmElement && this.buildInfo.mpm) {
|
|
179
|
-
const mpmVersion = this.buildInfo.mpm.full_version ||
|
|
179
|
+
const mpmVersion = this.buildInfo.mpm.full_version ||
|
|
180
180
|
`v${this.buildInfo.mpm.version}`;
|
|
181
181
|
mpmElement.textContent = mpmVersion;
|
|
182
|
-
|
|
182
|
+
|
|
183
183
|
// Add build number to tooltip if available
|
|
184
184
|
if (this.buildInfo.mpm.build && this.buildInfo.mpm.build !== "unknown") {
|
|
185
185
|
mpmElement.parentElement.title = `MPM Build: ${this.buildInfo.mpm.build}`;
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
|
-
|
|
188
|
+
|
|
189
189
|
// Update Monitor version
|
|
190
190
|
const monitorElement = this.element.querySelector('.monitor-version .version-value');
|
|
191
191
|
if (monitorElement && this.buildInfo.monitor) {
|
|
192
|
-
const monitorVersion = this.buildInfo.monitor.full_version ||
|
|
192
|
+
const monitorVersion = this.buildInfo.monitor.full_version ||
|
|
193
193
|
`v${this.buildInfo.monitor.version}-${this.buildInfo.monitor.formatted_build}`;
|
|
194
194
|
monitorElement.textContent = monitorVersion;
|
|
195
|
-
|
|
195
|
+
|
|
196
196
|
// Add last updated to tooltip if available
|
|
197
197
|
if (this.buildInfo.monitor.last_updated) {
|
|
198
198
|
const lastUpdated = new Date(this.buildInfo.monitor.last_updated).toLocaleString();
|
|
@@ -200,10 +200,10 @@ export class BuildTracker {
|
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
|
-
|
|
203
|
+
|
|
204
204
|
/**
|
|
205
205
|
* Setup event listeners
|
|
206
|
-
*
|
|
206
|
+
*
|
|
207
207
|
* WHY: Allows users to interact with the version display for
|
|
208
208
|
* additional information or actions.
|
|
209
209
|
*/
|
|
@@ -213,16 +213,16 @@ export class BuildTracker {
|
|
|
213
213
|
this.showDetailedInfo();
|
|
214
214
|
});
|
|
215
215
|
}
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
/**
|
|
218
218
|
* Show detailed version information in a modal or alert
|
|
219
|
-
*
|
|
219
|
+
*
|
|
220
220
|
* WHY: Provides power users with detailed build and version
|
|
221
221
|
* information for debugging and support purposes.
|
|
222
222
|
*/
|
|
223
223
|
showDetailedInfo() {
|
|
224
224
|
const info = [];
|
|
225
|
-
|
|
225
|
+
|
|
226
226
|
// MPM information
|
|
227
227
|
if (this.buildInfo.mpm) {
|
|
228
228
|
info.push('=== MPM Framework ===');
|
|
@@ -232,9 +232,9 @@ export class BuildTracker {
|
|
|
232
232
|
}
|
|
233
233
|
info.push(`Full: ${this.buildInfo.mpm.full_version}`);
|
|
234
234
|
}
|
|
235
|
-
|
|
235
|
+
|
|
236
236
|
info.push('');
|
|
237
|
-
|
|
237
|
+
|
|
238
238
|
// Monitor information
|
|
239
239
|
if (this.buildInfo.monitor) {
|
|
240
240
|
info.push('=== Monitor UI ===');
|
|
@@ -246,9 +246,9 @@ export class BuildTracker {
|
|
|
246
246
|
info.push(`Updated: ${lastUpdated}`);
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
|
|
249
|
+
|
|
250
250
|
// Version information compiled
|
|
251
|
-
|
|
251
|
+
|
|
252
252
|
// Create a simple modal-like display
|
|
253
253
|
const modal = document.createElement('div');
|
|
254
254
|
modal.className = 'version-modal';
|
|
@@ -259,51 +259,51 @@ export class BuildTracker {
|
|
|
259
259
|
<button onclick="this.parentElement.parentElement.remove()">Close</button>
|
|
260
260
|
</div>
|
|
261
261
|
`;
|
|
262
|
-
|
|
262
|
+
|
|
263
263
|
// Add to body
|
|
264
264
|
document.body.appendChild(modal);
|
|
265
|
-
|
|
265
|
+
|
|
266
266
|
// Auto-remove after 10 seconds
|
|
267
267
|
setTimeout(() => {
|
|
268
268
|
modal.remove();
|
|
269
269
|
}, 10000);
|
|
270
270
|
}
|
|
271
|
-
|
|
271
|
+
|
|
272
272
|
/**
|
|
273
273
|
* Mount the component to a parent element
|
|
274
|
-
*
|
|
274
|
+
*
|
|
275
275
|
* @param {HTMLElement|string} parent - Parent element or selector
|
|
276
276
|
*/
|
|
277
277
|
mount(parent) {
|
|
278
|
-
const parentElement = typeof parent === 'string'
|
|
279
|
-
? document.querySelector(parent)
|
|
278
|
+
const parentElement = typeof parent === 'string'
|
|
279
|
+
? document.querySelector(parent)
|
|
280
280
|
: parent;
|
|
281
|
-
|
|
281
|
+
|
|
282
282
|
if (!this.element) {
|
|
283
283
|
return;
|
|
284
284
|
}
|
|
285
|
-
|
|
285
|
+
|
|
286
286
|
if (!parentElement) {
|
|
287
287
|
return;
|
|
288
288
|
}
|
|
289
|
-
|
|
289
|
+
|
|
290
290
|
// Check if already mounted to prevent duplicates
|
|
291
291
|
if (this.element.parentNode === parentElement) {
|
|
292
292
|
return;
|
|
293
293
|
}
|
|
294
|
-
|
|
294
|
+
|
|
295
295
|
parentElement.appendChild(this.element);
|
|
296
296
|
}
|
|
297
|
-
|
|
297
|
+
|
|
298
298
|
/**
|
|
299
299
|
* Get the component's DOM element
|
|
300
|
-
*
|
|
300
|
+
*
|
|
301
301
|
* @returns {HTMLElement} The component's root element
|
|
302
302
|
*/
|
|
303
303
|
getElement() {
|
|
304
304
|
return this.element;
|
|
305
305
|
}
|
|
306
|
-
|
|
306
|
+
|
|
307
307
|
/**
|
|
308
308
|
* Destroy the component and clean up
|
|
309
309
|
*/
|
|
@@ -311,14 +311,14 @@ export class BuildTracker {
|
|
|
311
311
|
if (this.element && this.element.parentNode) {
|
|
312
312
|
this.element.parentNode.removeChild(this.element);
|
|
313
313
|
}
|
|
314
|
-
|
|
314
|
+
|
|
315
315
|
// Clean up socket listeners
|
|
316
316
|
if (this.socketClient && this.socketClient.socket) {
|
|
317
317
|
this.socketClient.socket.off('welcome');
|
|
318
318
|
this.socketClient.socket.off('status');
|
|
319
319
|
this.socketClient.socket.off('build_info');
|
|
320
320
|
}
|
|
321
|
-
|
|
321
|
+
|
|
322
322
|
this.element = null;
|
|
323
323
|
this.socketClient = null;
|
|
324
324
|
}
|