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
|
@@ -24,50 +24,50 @@
|
|
|
24
24
|
border-radius: 4px;
|
|
25
25
|
margin-bottom: 20px;
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
/* Tree visualization styles */
|
|
29
29
|
.tree-node {
|
|
30
30
|
cursor: pointer;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
.tree-node circle {
|
|
34
34
|
fill: #fff;
|
|
35
35
|
stroke: steelblue;
|
|
36
36
|
stroke-width: 2px;
|
|
37
37
|
transition: all 0.3s ease;
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
.tree-node:hover circle {
|
|
41
41
|
fill: #e6f3ff;
|
|
42
42
|
stroke-width: 3px;
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
.tree-node text {
|
|
46
46
|
font: 12px sans-serif;
|
|
47
47
|
pointer-events: none;
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
.tree-link {
|
|
51
51
|
fill: none;
|
|
52
52
|
stroke: #ccc;
|
|
53
53
|
stroke-width: 2px;
|
|
54
54
|
}
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
.view-toggle button {
|
|
57
57
|
transition: all 0.3s ease;
|
|
58
58
|
}
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
.view-toggle button:hover {
|
|
61
61
|
transform: translateY(-1px);
|
|
62
62
|
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
.file-selector input:focus {
|
|
66
66
|
outline: none;
|
|
67
67
|
border-color: #007cba;
|
|
68
68
|
box-shadow: 0 0 0 2px rgba(0, 124, 186, 0.2);
|
|
69
69
|
}
|
|
70
|
-
|
|
70
|
+
|
|
71
71
|
.tree-legend {
|
|
72
72
|
position: absolute;
|
|
73
73
|
top: 10px;
|
|
@@ -79,13 +79,13 @@
|
|
|
79
79
|
font-size: 12px;
|
|
80
80
|
z-index: 1000;
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
.tree-legend-item {
|
|
84
84
|
margin: 2px 0;
|
|
85
85
|
display: flex;
|
|
86
86
|
align-items: center;
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
|
|
89
89
|
.tree-legend-color {
|
|
90
90
|
width: 12px;
|
|
91
91
|
height: 12px;
|
|
@@ -103,15 +103,15 @@
|
|
|
103
103
|
<div>⏳ Page loaded...</div>
|
|
104
104
|
</div>
|
|
105
105
|
</div>
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
<div id="code-container">
|
|
108
108
|
<!-- SimpleCodeView will render here -->
|
|
109
109
|
</div>
|
|
110
110
|
</div>
|
|
111
|
-
|
|
111
|
+
|
|
112
112
|
<script>
|
|
113
113
|
console.log('[HTML] Page script starting');
|
|
114
|
-
|
|
114
|
+
|
|
115
115
|
function addStatus(message) {
|
|
116
116
|
const statusDiv = document.getElementById('status-messages');
|
|
117
117
|
if (statusDiv) {
|
|
@@ -119,27 +119,27 @@
|
|
|
119
119
|
}
|
|
120
120
|
console.log('[HTML Status]', message);
|
|
121
121
|
}
|
|
122
|
-
|
|
122
|
+
|
|
123
123
|
addStatus('⏳ Loading code-simple.js...');
|
|
124
124
|
</script>
|
|
125
|
-
|
|
125
|
+
|
|
126
126
|
<!-- D3.js for tree visualization -->
|
|
127
|
-
<script src="https://d3js.org/d3.v7.min.js"
|
|
127
|
+
<script src="https://d3js.org/d3.v7.min.js"
|
|
128
128
|
onload="addStatus('✅ D3.js loaded successfully')"
|
|
129
129
|
onerror="addStatus('❌ Failed to load D3.js')"></script>
|
|
130
|
-
|
|
130
|
+
|
|
131
131
|
<!-- Socket.IO for real-time communication -->
|
|
132
|
-
<script src="https://cdn.socket.io/4.7.2/socket.io.min.js"
|
|
132
|
+
<script src="https://cdn.socket.io/4.7.2/socket.io.min.js"
|
|
133
133
|
onload="addStatus('✅ Socket.IO loaded successfully')"
|
|
134
134
|
onerror="addStatus('❌ Failed to load Socket.IO')"></script>
|
|
135
|
-
|
|
136
|
-
<script src="/static/js/components/code-simple.js"
|
|
135
|
+
|
|
136
|
+
<script src="/static/js/components/code-simple.js"
|
|
137
137
|
onload="addStatus('✅ code-simple.js loaded successfully')"
|
|
138
138
|
onerror="addStatus('❌ Failed to load code-simple.js')"></script>
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
<script>
|
|
141
141
|
addStatus('⏳ Waiting for initialization...');
|
|
142
|
-
|
|
142
|
+
|
|
143
143
|
// Check initialization after a delay
|
|
144
144
|
setTimeout(() => {
|
|
145
145
|
if (window.simpleCodeView) {
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
<!-- External Dependencies -->
|
|
17
17
|
<script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
<!-- D3.js for Activity Tree Visualization -->
|
|
20
20
|
<script src="https://d3js.org/d3.v7.min.js"></script>
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
<!-- Font Awesome for icons -->
|
|
23
23
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
24
24
|
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
<body>
|
|
142
142
|
<!-- Connection Notifications Area -->
|
|
143
143
|
<div id="connection-notifications" class="connection-notifications"></div>
|
|
144
|
-
|
|
144
|
+
|
|
145
145
|
<div class="container">
|
|
146
146
|
<!-- Header Section -->
|
|
147
147
|
<div class="header">
|
|
@@ -435,19 +435,19 @@
|
|
|
435
435
|
// Set up working directory environment variables
|
|
436
436
|
// These will be used by the working-directory component
|
|
437
437
|
// The server will inject these values through a separate API call
|
|
438
|
-
|
|
438
|
+
|
|
439
439
|
// Get the current working directory from the server
|
|
440
440
|
fetch('/api/working-directory')
|
|
441
441
|
.then(response => response.json())
|
|
442
442
|
.then(data => {
|
|
443
443
|
window.processWorkingDirectory = data.working_directory || '/Users/masa/Projects/claude-mpm';
|
|
444
444
|
window.homeDirectory = data.home_directory || '/Users/masa';
|
|
445
|
-
|
|
445
|
+
|
|
446
446
|
// Store in session storage for persistence
|
|
447
447
|
if (window.processWorkingDirectory && window.processWorkingDirectory !== '/') {
|
|
448
448
|
sessionStorage.setItem('currentWorkingDirectory', window.processWorkingDirectory);
|
|
449
449
|
}
|
|
450
|
-
|
|
450
|
+
|
|
451
451
|
// Dispatch event to notify components that working directory is ready
|
|
452
452
|
window.dispatchEvent(new CustomEvent('workingDirectoryInitialized', {
|
|
453
453
|
detail: {
|
|
@@ -462,10 +462,10 @@
|
|
|
462
462
|
window.processWorkingDirectory = '/Users/masa/Projects/claude-mpm';
|
|
463
463
|
window.homeDirectory = '/Users/masa';
|
|
464
464
|
});
|
|
465
|
-
|
|
465
|
+
|
|
466
466
|
// Add timestamp-based cache busting and ensure proper loading order
|
|
467
467
|
const timestamp = Date.now();
|
|
468
|
-
|
|
468
|
+
|
|
469
469
|
// Load modules sequentially to ensure dashboard.js loads first
|
|
470
470
|
const loadModule = (src) => {
|
|
471
471
|
return new Promise((resolve, reject) => {
|
|
@@ -477,7 +477,7 @@
|
|
|
477
477
|
document.body.appendChild(script);
|
|
478
478
|
});
|
|
479
479
|
};
|
|
480
|
-
|
|
480
|
+
|
|
481
481
|
// Load shared services first, then components
|
|
482
482
|
// Load services sequentially to ensure dependencies are available
|
|
483
483
|
loadModule('/static/js/shared/tooltip-service.js')
|
|
@@ -540,21 +540,21 @@
|
|
|
540
540
|
console.error('[CRITICAL] Error loading dashboard modules:', error);
|
|
541
541
|
console.error('Stack trace:', error.stack);
|
|
542
542
|
});
|
|
543
|
-
|
|
543
|
+
|
|
544
544
|
// Give modules time to execute and initialize dashboard
|
|
545
545
|
setTimeout(() => {
|
|
546
546
|
console.log('Checking dashboard initialization...');
|
|
547
|
-
|
|
547
|
+
|
|
548
548
|
if (window.dashboard) {
|
|
549
549
|
console.log('Dashboard found, checking auto-connect status...');
|
|
550
|
-
|
|
550
|
+
|
|
551
551
|
// Force auto-connect if not already connected
|
|
552
552
|
if (window.dashboard.socketManager) {
|
|
553
553
|
const socketManager = window.dashboard.socketManager;
|
|
554
|
-
|
|
554
|
+
|
|
555
555
|
if (!socketManager.isConnected() && !socketManager.isConnecting()) {
|
|
556
556
|
console.log('Dashboard loaded but not connected, forcing auto-connect...');
|
|
557
|
-
|
|
557
|
+
|
|
558
558
|
// Try to trigger auto-connect manually
|
|
559
559
|
const params = new URLSearchParams(window.location.search);
|
|
560
560
|
socketManager.initializeFromURL(params);
|
|
@@ -566,23 +566,23 @@
|
|
|
566
566
|
}
|
|
567
567
|
} else {
|
|
568
568
|
console.warn('Dashboard still not initialized after module loading');
|
|
569
|
-
|
|
569
|
+
|
|
570
570
|
// Try to manually trigger initialization
|
|
571
571
|
if (document.readyState === 'complete' || document.readyState === 'interactive') {
|
|
572
572
|
console.log('Document ready, attempting to trigger dashboard initialization...');
|
|
573
573
|
document.dispatchEvent(new Event('DOMContentLoaded'));
|
|
574
574
|
}
|
|
575
575
|
}
|
|
576
|
-
|
|
576
|
+
|
|
577
577
|
// Debug: Test connection settings button
|
|
578
578
|
const connectionToggleBtn = document.getElementById('connection-toggle-btn');
|
|
579
579
|
if (connectionToggleBtn) {
|
|
580
580
|
console.log('Connection toggle button found, testing functionality...');
|
|
581
|
-
|
|
581
|
+
|
|
582
582
|
// Add a debug click handler to ensure the button works
|
|
583
583
|
connectionToggleBtn.addEventListener('click', () => {
|
|
584
584
|
console.log('Connection toggle button clicked (debug handler)');
|
|
585
|
-
|
|
585
|
+
|
|
586
586
|
if (window.dashboard && window.dashboard.socketManager) {
|
|
587
587
|
console.log('Calling socketManager.toggleConnectionControls()');
|
|
588
588
|
window.dashboard.socketManager.toggleConnectionControls();
|
|
@@ -31,11 +31,7 @@ import click
|
|
|
31
31
|
|
|
32
32
|
from claude_mpm.core.logging_utils import get_logger
|
|
33
33
|
from claude_mpm.hooks.validation_hooks import ValidationHooks
|
|
34
|
-
from claude_mpm.utils.error_handler import
|
|
35
|
-
ErrorContext,
|
|
36
|
-
MPMError,
|
|
37
|
-
handle_errors,
|
|
38
|
-
)
|
|
34
|
+
from claude_mpm.utils.error_handler import ErrorContext, MPMError, handle_errors
|
|
39
35
|
from claude_mpm.validation import AgentValidator, ValidationResult
|
|
40
36
|
|
|
41
37
|
logger = get_logger(__name__)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -393,7 +393,9 @@ class EventHandlers:
|
|
|
393
393
|
"status": (
|
|
394
394
|
"success"
|
|
395
395
|
if exit_code == 0
|
|
396
|
-
else "blocked"
|
|
396
|
+
else "blocked"
|
|
397
|
+
if exit_code == 2
|
|
398
|
+
else "error"
|
|
397
399
|
),
|
|
398
400
|
"duration_ms": duration,
|
|
399
401
|
"result_summary": result_data,
|
|
@@ -311,11 +311,12 @@ class ClaudeHookHandler:
|
|
|
311
311
|
)
|
|
312
312
|
|
|
313
313
|
# Route event to appropriate handler
|
|
314
|
-
|
|
314
|
+
# Handlers can optionally return modified input for PreToolUse events
|
|
315
|
+
modified_input = self._route_event(event)
|
|
315
316
|
|
|
316
317
|
# Always continue execution (only if not already sent)
|
|
317
318
|
if not _continue_sent:
|
|
318
|
-
self._continue_execution()
|
|
319
|
+
self._continue_execution(modified_input)
|
|
319
320
|
_continue_sent = True
|
|
320
321
|
|
|
321
322
|
except Exception:
|
|
@@ -376,7 +377,7 @@ class ClaudeHookHandler:
|
|
|
376
377
|
print(f"Error reading hook event: {e}", file=sys.stderr)
|
|
377
378
|
return None
|
|
378
379
|
|
|
379
|
-
def _route_event(self, event: dict) ->
|
|
380
|
+
def _route_event(self, event: dict) -> Optional[dict]:
|
|
380
381
|
"""
|
|
381
382
|
Route event to appropriate handler based on type.
|
|
382
383
|
|
|
@@ -385,6 +386,9 @@ class ClaudeHookHandler:
|
|
|
385
386
|
|
|
386
387
|
Args:
|
|
387
388
|
event: Hook event dictionary
|
|
389
|
+
|
|
390
|
+
Returns:
|
|
391
|
+
Modified input for PreToolUse events (v2.0.30+), None otherwise
|
|
388
392
|
"""
|
|
389
393
|
# Try multiple field names for compatibility
|
|
390
394
|
hook_type = (
|
|
@@ -416,23 +420,36 @@ class ClaudeHookHandler:
|
|
|
416
420
|
handler = event_handlers.get(hook_type)
|
|
417
421
|
if handler:
|
|
418
422
|
try:
|
|
419
|
-
|
|
423
|
+
# Handlers can optionally return modified input
|
|
424
|
+
result = handler(event)
|
|
425
|
+
# Only PreToolUse handlers should return modified input
|
|
426
|
+
if hook_type == "PreToolUse" and result is not None:
|
|
427
|
+
return result
|
|
420
428
|
except Exception as e:
|
|
421
429
|
if DEBUG:
|
|
422
430
|
print(f"Error handling {hook_type}: {e}", file=sys.stderr)
|
|
423
431
|
|
|
432
|
+
return None
|
|
433
|
+
|
|
424
434
|
def handle_subagent_stop(self, event: dict):
|
|
425
435
|
"""Delegate subagent stop processing to the specialized processor."""
|
|
426
436
|
self.subagent_processor.process_subagent_stop(event)
|
|
427
437
|
|
|
428
|
-
def _continue_execution(self) -> None:
|
|
438
|
+
def _continue_execution(self, modified_input: Optional[dict] = None) -> None:
|
|
429
439
|
"""
|
|
430
|
-
Send continue action to Claude.
|
|
440
|
+
Send continue action to Claude with optional input modification.
|
|
431
441
|
|
|
432
442
|
WHY: Centralized response ensures consistent format
|
|
433
443
|
and makes it easier to add response modifications.
|
|
444
|
+
|
|
445
|
+
Args:
|
|
446
|
+
modified_input: Modified tool parameters for PreToolUse hooks (v2.0.30+)
|
|
434
447
|
"""
|
|
435
|
-
|
|
448
|
+
if modified_input is not None:
|
|
449
|
+
# Claude Code v2.0.30+ supports modifying PreToolUse tool inputs
|
|
450
|
+
print(json.dumps({"action": "continue", "tool_input": modified_input}))
|
|
451
|
+
else:
|
|
452
|
+
print(json.dumps({"action": "continue"}))
|
|
436
453
|
|
|
437
454
|
# Delegation methods for compatibility with event_handlers
|
|
438
455
|
def _track_delegation(self, session_id: str, agent_type: str, request_data=None):
|
|
@@ -192,6 +192,8 @@ main "$@"
|
|
|
192
192
|
|
|
193
193
|
# Minimum Claude Code version required for hook monitoring
|
|
194
194
|
MIN_CLAUDE_VERSION = "1.0.92"
|
|
195
|
+
# Minimum version for PreToolUse input modification support
|
|
196
|
+
MIN_PRETOOL_MODIFY_VERSION = "2.0.30"
|
|
195
197
|
|
|
196
198
|
def __init__(self):
|
|
197
199
|
"""Initialize the hook installer."""
|
|
@@ -292,6 +294,42 @@ main "$@"
|
|
|
292
294
|
|
|
293
295
|
return (True, f"Claude Code {version} is compatible with hook monitoring.")
|
|
294
296
|
|
|
297
|
+
def supports_pretool_modify(self) -> bool:
|
|
298
|
+
"""
|
|
299
|
+
Check if the installed Claude Code version supports PreToolUse input modification.
|
|
300
|
+
|
|
301
|
+
PreToolUse input modification was added in Claude Code v2.0.30.
|
|
302
|
+
|
|
303
|
+
Returns:
|
|
304
|
+
True if version supports input modification, False otherwise
|
|
305
|
+
"""
|
|
306
|
+
version = self.get_claude_version()
|
|
307
|
+
|
|
308
|
+
if version is None:
|
|
309
|
+
return False
|
|
310
|
+
|
|
311
|
+
def parse_version(v: str) -> List[int]:
|
|
312
|
+
"""Parse semantic version string to list of integers."""
|
|
313
|
+
try:
|
|
314
|
+
return [int(x) for x in v.split(".")]
|
|
315
|
+
except (ValueError, AttributeError):
|
|
316
|
+
return [0]
|
|
317
|
+
|
|
318
|
+
current = parse_version(version)
|
|
319
|
+
required = parse_version(self.MIN_PRETOOL_MODIFY_VERSION)
|
|
320
|
+
|
|
321
|
+
# Compare versions
|
|
322
|
+
for i in range(max(len(current), len(required))):
|
|
323
|
+
curr_part = current[i] if i < len(current) else 0
|
|
324
|
+
req_part = required[i] if i < len(required) else 0
|
|
325
|
+
|
|
326
|
+
if curr_part < req_part:
|
|
327
|
+
return False
|
|
328
|
+
if curr_part > req_part:
|
|
329
|
+
return True
|
|
330
|
+
|
|
331
|
+
return True
|
|
332
|
+
|
|
295
333
|
def get_hook_script_path(self) -> Path:
|
|
296
334
|
"""Get the path to the hook handler script based on installation method.
|
|
297
335
|
|
|
@@ -677,6 +715,7 @@ main "$@"
|
|
|
677
715
|
# Check version compatibility
|
|
678
716
|
claude_version = self.get_claude_version()
|
|
679
717
|
is_compatible, version_message = self.is_version_compatible()
|
|
718
|
+
pretool_modify_supported = self.supports_pretool_modify()
|
|
680
719
|
|
|
681
720
|
is_valid, issues = self.verify_hooks()
|
|
682
721
|
|
|
@@ -701,6 +740,12 @@ main "$@"
|
|
|
701
740
|
"version_compatible": is_compatible,
|
|
702
741
|
"version_message": version_message,
|
|
703
742
|
"deployment_type": "deployment-root", # New field to indicate new architecture
|
|
743
|
+
"pretool_modify_supported": pretool_modify_supported, # v2.0.30+ feature
|
|
744
|
+
"pretool_modify_message": (
|
|
745
|
+
f"PreToolUse input modification supported (v{claude_version})"
|
|
746
|
+
if pretool_modify_supported
|
|
747
|
+
else f"PreToolUse input modification requires Claude Code {self.MIN_PRETOOL_MODIFY_VERSION}+ (current: {claude_version or 'unknown'})"
|
|
748
|
+
),
|
|
704
749
|
}
|
|
705
750
|
|
|
706
751
|
# Check Claude settings for hook configuration
|
|
@@ -5,8 +5,19 @@ This module provides utilities for integrating with the memory system,
|
|
|
5
5
|
including pre and post delegation hooks.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import logging
|
|
9
9
|
import sys
|
|
10
|
+
|
|
11
|
+
# Reconfigure logging to INFO level BEFORE kuzu-memory imports
|
|
12
|
+
# This overrides kuzu-memory's WARNING-level basicConfig (fixes 1M-445)
|
|
13
|
+
logging.basicConfig(
|
|
14
|
+
level=logging.INFO,
|
|
15
|
+
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
|
16
|
+
force=True, # Python 3.8+ - reconfigures root logger
|
|
17
|
+
stream=sys.stderr,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
import os
|
|
10
21
|
from datetime import datetime, timezone
|
|
11
22
|
from typing import Optional
|
|
12
23
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -35,14 +35,8 @@ Usage:
|
|
|
35
35
|
hook_service.register_hook(get_learning_extraction_hook())
|
|
36
36
|
"""
|
|
37
37
|
|
|
38
|
-
from .failure_detection_hook import
|
|
39
|
-
|
|
40
|
-
get_failure_detection_hook,
|
|
41
|
-
)
|
|
42
|
-
from .fix_detection_hook import (
|
|
43
|
-
FixDetectionHook,
|
|
44
|
-
get_fix_detection_hook,
|
|
45
|
-
)
|
|
38
|
+
from .failure_detection_hook import FailureDetectionHook, get_failure_detection_hook
|
|
39
|
+
from .fix_detection_hook import FixDetectionHook, get_fix_detection_hook
|
|
46
40
|
from .learning_extraction_hook import (
|
|
47
41
|
LearningExtractionHook,
|
|
48
42
|
get_learning_extraction_hook,
|
|
@@ -21,12 +21,7 @@ Integration points:
|
|
|
21
21
|
import logging
|
|
22
22
|
from typing import Any, Dict
|
|
23
23
|
|
|
24
|
-
from claude_mpm.hooks.base_hook import
|
|
25
|
-
BaseHook,
|
|
26
|
-
HookContext,
|
|
27
|
-
HookResult,
|
|
28
|
-
HookType,
|
|
29
|
-
)
|
|
24
|
+
from claude_mpm.hooks.base_hook import BaseHook, HookContext, HookResult, HookType
|
|
30
25
|
from claude_mpm.services.memory.failure_tracker import get_failure_tracker
|
|
31
26
|
|
|
32
27
|
logger = logging.getLogger(__name__)
|
|
@@ -23,12 +23,7 @@ Integration points:
|
|
|
23
23
|
import logging
|
|
24
24
|
from typing import Any, Dict
|
|
25
25
|
|
|
26
|
-
from claude_mpm.hooks.base_hook import
|
|
27
|
-
BaseHook,
|
|
28
|
-
HookContext,
|
|
29
|
-
HookResult,
|
|
30
|
-
HookType,
|
|
31
|
-
)
|
|
26
|
+
from claude_mpm.hooks.base_hook import BaseHook, HookContext, HookResult, HookType
|
|
32
27
|
from claude_mpm.services.memory.failure_tracker import get_failure_tracker
|
|
33
28
|
|
|
34
29
|
logger = logging.getLogger(__name__)
|
|
@@ -23,12 +23,7 @@ Integration points:
|
|
|
23
23
|
import logging
|
|
24
24
|
from typing import Any
|
|
25
25
|
|
|
26
|
-
from claude_mpm.hooks.base_hook import
|
|
27
|
-
BaseHook,
|
|
28
|
-
HookContext,
|
|
29
|
-
HookResult,
|
|
30
|
-
HookType,
|
|
31
|
-
)
|
|
26
|
+
from claude_mpm.hooks.base_hook import BaseHook, HookContext, HookResult, HookType
|
|
32
27
|
from claude_mpm.services.memory.failure_tracker import get_failure_tracker
|
|
33
28
|
|
|
34
29
|
logger = logging.getLogger(__name__)
|
|
@@ -20,11 +20,7 @@ DESIGN DECISIONS:
|
|
|
20
20
|
import logging
|
|
21
21
|
from typing import Any, Optional
|
|
22
22
|
|
|
23
|
-
from claude_mpm.hooks.base_hook import
|
|
24
|
-
HookContext,
|
|
25
|
-
HookResult,
|
|
26
|
-
PostDelegationHook,
|
|
27
|
-
)
|
|
23
|
+
from claude_mpm.hooks.base_hook import HookContext, HookResult, PostDelegationHook
|
|
28
24
|
from claude_mpm.hooks.kuzu_memory_hook import get_kuzu_memory_hook
|
|
29
25
|
|
|
30
26
|
logger = logging.getLogger(__name__)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Simple PreToolUse Hook Example for Claude Code v2.0.30+
|
|
4
|
+
|
|
5
|
+
This is a minimal example showing the basic structure of a PreToolUse hook
|
|
6
|
+
that can modify tool inputs.
|
|
7
|
+
|
|
8
|
+
To use this hook:
|
|
9
|
+
1. Copy this file to ~/.claude-mpm/hooks/
|
|
10
|
+
2. Make it executable: chmod +x ~/.claude-mpm/hooks/pre_tool_use_simple.py
|
|
11
|
+
3. Add to ~/.claude/settings.json:
|
|
12
|
+
|
|
13
|
+
{
|
|
14
|
+
"hooks": {
|
|
15
|
+
"PreToolUse": [
|
|
16
|
+
{
|
|
17
|
+
"matcher": "*",
|
|
18
|
+
"hooks": [
|
|
19
|
+
{
|
|
20
|
+
"type": "command",
|
|
21
|
+
"command": "/Users/YOUR_USERNAME/.claude-mpm/hooks/pre_tool_use_simple.py",
|
|
22
|
+
"modifyInput": true
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
import json
|
|
32
|
+
import sys
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def main():
|
|
36
|
+
"""Process PreToolUse event and optionally modify input."""
|
|
37
|
+
try:
|
|
38
|
+
# Read event from stdin
|
|
39
|
+
event_data = sys.stdin.read()
|
|
40
|
+
if not event_data.strip():
|
|
41
|
+
print(json.dumps({"action": "continue"}))
|
|
42
|
+
return
|
|
43
|
+
|
|
44
|
+
event = json.loads(event_data)
|
|
45
|
+
tool_name = event.get("tool_name", "")
|
|
46
|
+
tool_input = event.get("tool_input", {})
|
|
47
|
+
|
|
48
|
+
# Example: Add line numbers to all Grep operations
|
|
49
|
+
if tool_name == "Grep" and "-n" not in tool_input:
|
|
50
|
+
modified_input = tool_input.copy()
|
|
51
|
+
modified_input["-n"] = True
|
|
52
|
+
print(json.dumps({"action": "continue", "tool_input": modified_input}))
|
|
53
|
+
return
|
|
54
|
+
|
|
55
|
+
# Example: Block operations on .env files
|
|
56
|
+
if tool_name in ["Write", "Edit", "Read"]:
|
|
57
|
+
file_path = tool_input.get("file_path", "")
|
|
58
|
+
if ".env" in file_path:
|
|
59
|
+
print(
|
|
60
|
+
json.dumps(
|
|
61
|
+
{
|
|
62
|
+
"action": "block",
|
|
63
|
+
"message": "Access to .env file blocked for security",
|
|
64
|
+
}
|
|
65
|
+
)
|
|
66
|
+
)
|
|
67
|
+
return
|
|
68
|
+
|
|
69
|
+
# Default: continue without modification
|
|
70
|
+
print(json.dumps({"action": "continue"}))
|
|
71
|
+
|
|
72
|
+
except Exception:
|
|
73
|
+
# Always continue on error to avoid blocking Claude
|
|
74
|
+
print(json.dumps({"action": "continue"}))
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
if __name__ == "__main__":
|
|
78
|
+
main()
|