claude-mpm 4.25.10__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 +12 -0
- claude_mpm/agents/PM_INSTRUCTIONS.md +1055 -2230
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +4 -4
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +576 -66
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +28 -3
- 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/auto_configure.py +537 -239
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +924 -45
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +1 -39
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +322 -19
- claude_mpm/cli/executor.py +22 -3
- claude_mpm/cli/interactive/agent_wizard.py +1028 -43
- 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 +25 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +7 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +456 -103
- claude_mpm/cli/startup_display.py +4 -4
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +14 -2
- claude_mpm/commands/mpm-init.md +9 -0
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +10 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +1 -0
- claude_mpm/core/claude_runner.py +5 -34
- claude_mpm/core/config.py +16 -0
- 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/interactive_session.py +83 -7
- claude_mpm/core/oneshot_session.py +71 -8
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/unified_config.py +22 -0
- 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/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/models/git_repository.py +198 -0
- 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_lifecycle_manager.py +1 -5
- 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/multi_source_deployment_service.py +115 -15
- 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 +1 -4
- claude_mpm/services/agents/local_template_manager.py +47 -9
- 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/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +7 -2
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- 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 +34 -6
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +3 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/monitor/daemon.py +28 -8
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/runner_configuration_service.py +16 -3
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/templates/questions/__init__.py +2 -7
- claude_mpm/templates/questions/pr_strategy.py +1 -4
- claude_mpm/templates/questions/project_init.py +1 -4
- claude_mpm/templates/questions/ticket_mgmt.py +1 -4
- claude_mpm/utils/agent_dependency_loader.py +77 -10
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/gitignore.py +3 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +356 -112
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +188 -439
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -183
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -238
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -287
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -144
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -243
- claude_mpm/agents/templates/react_engineer.json +0 -239
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -258
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/tauri_engineer.json +0 -274
- claude_mpm/agents/templates/ticketing.json +0 -181
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -159
- claude_mpm/agents/templates/web_qa.json +0 -400
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/cli/README.md +0 -253
- claude_mpm/cli/commands/mcp_install_commands.py.backup +0 -284
- claude_mpm/cli/commands/mpm_init/README.md +0 -365
- claude_mpm/cli_module/refactoring_guide.md +0 -253
- claude_mpm/commands/mpm-tickets.md +0 -151
- claude_mpm/config/agent_capabilities.yaml +0 -658
- claude_mpm/config/async_logging_config.yaml +0 -145
- claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +0 -34
- claude_mpm/d2/.gitignore +0 -22
- claude_mpm/d2/ARCHITECTURE_COMPARISON.md +0 -273
- claude_mpm/d2/FLASK_INTEGRATION.md +0 -156
- claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +0 -452
- claude_mpm/d2/QUICKSTART.md +0 -186
- claude_mpm/d2/README.md +0 -232
- claude_mpm/d2/STORE_FIX_SUMMARY.md +0 -167
- claude_mpm/d2/SVELTE5_STORES_GUIDE.md +0 -180
- claude_mpm/d2/TESTING.md +0 -288
- claude_mpm/d2/index.html +0 -118
- claude_mpm/d2/package.json +0 -19
- claude_mpm/d2/src/App.svelte +0 -110
- claude_mpm/d2/src/components/Header.svelte +0 -153
- claude_mpm/d2/src/components/MainContent.svelte +0 -74
- claude_mpm/d2/src/components/Sidebar.svelte +0 -85
- claude_mpm/d2/src/components/tabs/EventsTab.svelte +0 -326
- claude_mpm/d2/src/lib/socketio.js +0 -144
- claude_mpm/d2/src/main.js +0 -7
- claude_mpm/d2/src/stores/events.js +0 -114
- claude_mpm/d2/src/stores/socket.js +0 -108
- claude_mpm/d2/src/stores/theme.js +0 -65
- claude_mpm/d2/svelte.config.js +0 -12
- claude_mpm/d2/vite.config.js +0 -15
- claude_mpm/dashboard/.claude-mpm/memories/README.md +0 -36
- claude_mpm/dashboard/BUILD_NUMBER +0 -1
- claude_mpm/dashboard/README.md +0 -121
- claude_mpm/dashboard/VERSION +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +0 -273
- claude_mpm/dashboard/react/components/ErrorBoundary.tsx +0 -75
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +0 -141
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +0 -36
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/react/components/shared/FilterBar.tsx +0 -89
- claude_mpm/dashboard/react/contexts/DashboardContext.tsx +0 -215
- claude_mpm/dashboard/react/entries/events.tsx +0 -165
- claude_mpm/dashboard/react/hooks/useEvents.ts +0 -191
- claude_mpm/dashboard/react/hooks/useSocket.ts +0 -225
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +0 -170
- 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/activity-tree.js.map +0 -1
- 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/agent-inference.js.map +0 -1
- 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-tree.js.map +0 -1
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js.map +0 -1
- 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-processor.js.map +0 -1
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js.map +0 -1
- 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-tool-tracker.js.map +0 -1
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js.map +0 -1
- 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/session-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js.map +0 -1
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/dashboard.js.map +0 -1
- 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/react/events.js.map +0 -1
- 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/socket-client.js.map +0 -1
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +0 -170
- 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/navigation-test-results.md +0 -118
- 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/templates/.claude-mpm/memories/README.md +0 -36
- claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +0 -39
- claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +0 -38
- claude_mpm/hooks/README.md +0 -143
- claude_mpm/hooks/templates/README.md +0 -180
- claude_mpm/hooks/templates/settings.json.example +0 -147
- claude_mpm/schemas/agent_schema.json +0 -596
- claude_mpm/schemas/frontmatter_schema.json +0 -165
- claude_mpm/services/event_bus/README.md +0 -244
- claude_mpm/services/events/README.md +0 -303
- claude_mpm/services/framework_claude_md_generator/README.md +0 -119
- claude_mpm/services/mcp_gateway/README.md +0 -185
- claude_mpm/services/socketio/handlers/connection.py.backup +0 -217
- claude_mpm/services/socketio/handlers/hook.py.backup +0 -154
- claude_mpm/services/static/.gitkeep +0 -2
- claude_mpm/services/version_control/VERSION +0 -1
- claude_mpm/skills/bundled/.gitkeep +0 -2
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +0 -317
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +0 -251
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
- claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +0 -63
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
- claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +0 -611
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +0 -596
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +0 -260
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +0 -315
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +0 -436
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +0 -433
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +0 -452
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +0 -404
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +0 -420
- claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +0 -54
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +0 -322
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
- claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +0 -22
- claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +0 -2
- claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
- claude_mpm/skills/bundled/react/flexlayout-react.md +0 -742
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
- claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +0 -495
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +0 -599
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +0 -535
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +0 -613
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +0 -648
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +0 -673
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +0 -767
- claude_mpm/skills/bundled/tauri/tauri-performance.md +0 -669
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +0 -573
- claude_mpm/skills/bundled/tauri/tauri-testing.md +0 -384
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +0 -628
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
- claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +0 -158
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +0 -458
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +0 -411
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +0 -317
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +0 -270
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +0 -436
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
- claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
- claude_mpm/templates/questions/EXAMPLES.md +0 -501
- claude_mpm/tools/README_SOCKETIO_DEBUG.md +0 -224
- claude_mpm/tools/code_tree_analyzer/README.md +0 -64
- /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/{pm_red_flags.md → pm-red-flags.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.25.10.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"title": "Agent Frontmatter Schema",
|
|
5
|
-
"description": "Schema for validating agent file frontmatter in .md, .claude, and .claude-mpm files",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": [
|
|
8
|
-
"name",
|
|
9
|
-
"description",
|
|
10
|
-
"version",
|
|
11
|
-
"model"
|
|
12
|
-
],
|
|
13
|
-
"properties": {
|
|
14
|
-
"name": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"pattern": "^[a-z][a-z0-9_-]*$",
|
|
17
|
-
"minLength": 1,
|
|
18
|
-
"maxLength": 50,
|
|
19
|
-
"description": "Agent identifier (kebab-case or snake_case)"
|
|
20
|
-
},
|
|
21
|
-
"description": {
|
|
22
|
-
"type": "string",
|
|
23
|
-
"minLength": 10,
|
|
24
|
-
"maxLength": 200,
|
|
25
|
-
"description": "Brief description of agent purpose"
|
|
26
|
-
},
|
|
27
|
-
"version": {
|
|
28
|
-
"type": "string",
|
|
29
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
30
|
-
"description": "Semantic version (e.g., 1.0.0)"
|
|
31
|
-
},
|
|
32
|
-
"base_version": {
|
|
33
|
-
"type": "string",
|
|
34
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
35
|
-
"description": "Base agent version this extends"
|
|
36
|
-
},
|
|
37
|
-
"author": {
|
|
38
|
-
"type": "string",
|
|
39
|
-
"minLength": 1,
|
|
40
|
-
"maxLength": 100,
|
|
41
|
-
"description": "Author name or organization"
|
|
42
|
-
},
|
|
43
|
-
"tools": {
|
|
44
|
-
"type": "array",
|
|
45
|
-
"items": {
|
|
46
|
-
"type": "string",
|
|
47
|
-
"enum": [
|
|
48
|
-
"Read",
|
|
49
|
-
"Write",
|
|
50
|
-
"Edit",
|
|
51
|
-
"MultiEdit",
|
|
52
|
-
"Grep",
|
|
53
|
-
"Glob",
|
|
54
|
-
"LS",
|
|
55
|
-
"Bash",
|
|
56
|
-
"WebSearch",
|
|
57
|
-
"WebFetch",
|
|
58
|
-
"NotebookRead",
|
|
59
|
-
"NotebookEdit",
|
|
60
|
-
"TodoWrite",
|
|
61
|
-
"ExitPlanMode",
|
|
62
|
-
"git",
|
|
63
|
-
"docker",
|
|
64
|
-
"kubectl",
|
|
65
|
-
"terraform",
|
|
66
|
-
"aws",
|
|
67
|
-
"gcloud",
|
|
68
|
-
"azure"
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
|
-
"uniqueItems": true,
|
|
72
|
-
"description": "List of available tools for the agent"
|
|
73
|
-
},
|
|
74
|
-
"model": {
|
|
75
|
-
"type": "string",
|
|
76
|
-
"enum": ["opus", "sonnet", "haiku"],
|
|
77
|
-
"description": "Claude model tier to use"
|
|
78
|
-
},
|
|
79
|
-
"tags": {
|
|
80
|
-
"type": "array",
|
|
81
|
-
"items": {
|
|
82
|
-
"type": "string",
|
|
83
|
-
"pattern": "^[a-z][a-z0-9-]*$"
|
|
84
|
-
},
|
|
85
|
-
"uniqueItems": true,
|
|
86
|
-
"description": "Tags for categorization"
|
|
87
|
-
},
|
|
88
|
-
"category": {
|
|
89
|
-
"type": "string",
|
|
90
|
-
"enum": ["engineering", "research", "quality", "operations", "specialized"],
|
|
91
|
-
"description": "Agent category"
|
|
92
|
-
},
|
|
93
|
-
"max_tokens": {
|
|
94
|
-
"type": "integer",
|
|
95
|
-
"minimum": 1000,
|
|
96
|
-
"maximum": 200000,
|
|
97
|
-
"default": 8192,
|
|
98
|
-
"description": "Maximum tokens for response"
|
|
99
|
-
},
|
|
100
|
-
"temperature": {
|
|
101
|
-
"type": "number",
|
|
102
|
-
"minimum": 0,
|
|
103
|
-
"maximum": 1,
|
|
104
|
-
"default": 0.7,
|
|
105
|
-
"description": "Model temperature setting"
|
|
106
|
-
},
|
|
107
|
-
"resource_tier": {
|
|
108
|
-
"type": "string",
|
|
109
|
-
"enum": ["basic", "standard", "intensive", "lightweight"],
|
|
110
|
-
"description": "Resource allocation tier"
|
|
111
|
-
},
|
|
112
|
-
"dependencies": {
|
|
113
|
-
"type": "array",
|
|
114
|
-
"items": {
|
|
115
|
-
"type": "string"
|
|
116
|
-
},
|
|
117
|
-
"description": "Other agents this agent depends on"
|
|
118
|
-
},
|
|
119
|
-
"capabilities": {
|
|
120
|
-
"type": "array",
|
|
121
|
-
"items": {
|
|
122
|
-
"type": "string"
|
|
123
|
-
},
|
|
124
|
-
"description": "List of agent capabilities"
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
"additionalProperties": true,
|
|
128
|
-
"definitions": {
|
|
129
|
-
"model_mappings": {
|
|
130
|
-
"description": "Mappings for model normalization",
|
|
131
|
-
"mappings": {
|
|
132
|
-
"claude-3-5-sonnet-20241022": "sonnet",
|
|
133
|
-
"claude-3-5-sonnet-20240620": "sonnet",
|
|
134
|
-
"claude-sonnet-4-20250514": "sonnet",
|
|
135
|
-
"claude-4-sonnet-20250514": "sonnet",
|
|
136
|
-
"claude-3-sonnet-20240229": "sonnet",
|
|
137
|
-
"20241022": "sonnet",
|
|
138
|
-
"claude-3-opus-20240229": "opus",
|
|
139
|
-
"claude-opus-4-20250514": "opus",
|
|
140
|
-
"claude-4-opus-20250514": "opus",
|
|
141
|
-
"claude-3-haiku-20240307": "haiku",
|
|
142
|
-
"claude-3-5-haiku-20241022": "haiku"
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
"tool_corrections": {
|
|
146
|
-
"description": "Common tool name corrections",
|
|
147
|
-
"mappings": {
|
|
148
|
-
"read": "Read",
|
|
149
|
-
"write": "Write",
|
|
150
|
-
"edit": "Edit",
|
|
151
|
-
"multiedit": "MultiEdit",
|
|
152
|
-
"grep": "Grep",
|
|
153
|
-
"glob": "Glob",
|
|
154
|
-
"ls": "LS",
|
|
155
|
-
"bash": "Bash",
|
|
156
|
-
"websearch": "WebSearch",
|
|
157
|
-
"webfetch": "WebFetch",
|
|
158
|
-
"notebookread": "NotebookRead",
|
|
159
|
-
"notebookedit": "NotebookEdit",
|
|
160
|
-
"todowrite": "TodoWrite",
|
|
161
|
-
"exitplanmode": "ExitPlanMode"
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
# EventBus Service
|
|
2
|
-
|
|
3
|
-
A decoupled event handling system for claude-mpm that enables loose coupling between event producers (like hooks) and consumers (like Socket.IO).
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The EventBus service provides a centralized publish-subscribe system that:
|
|
8
|
-
- Decouples event producers from consumers
|
|
9
|
-
- Supports both synchronous and asynchronous handlers
|
|
10
|
-
- Provides event filtering and routing capabilities
|
|
11
|
-
- Isolates failures in individual consumers
|
|
12
|
-
- Offers comprehensive monitoring and statistics
|
|
13
|
-
|
|
14
|
-
## Architecture
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
Hook Handler → EventBus → Multiple Consumers
|
|
18
|
-
├── Socket.IO Relay
|
|
19
|
-
├── Logging Service
|
|
20
|
-
├── Analytics
|
|
21
|
-
└── Custom Handlers
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Key Components
|
|
25
|
-
|
|
26
|
-
### EventBus (`event_bus.py`)
|
|
27
|
-
- Singleton pattern for centralized event coordination
|
|
28
|
-
- Thread-safe event publishing from any context
|
|
29
|
-
- Support for wildcard subscriptions (`hook.*`)
|
|
30
|
-
- Event filtering and routing
|
|
31
|
-
- Built-in statistics and history tracking
|
|
32
|
-
|
|
33
|
-
### SocketIORelay (`relay.py`)
|
|
34
|
-
- Consumes events from EventBus
|
|
35
|
-
- Relays to Socket.IO clients
|
|
36
|
-
- Handles connection failures gracefully
|
|
37
|
-
- Single point of Socket.IO management
|
|
38
|
-
|
|
39
|
-
### Configuration (`config.py`)
|
|
40
|
-
- Environment variable support
|
|
41
|
-
- Runtime configuration changes
|
|
42
|
-
- Easy testing with different settings
|
|
43
|
-
|
|
44
|
-
## Installation
|
|
45
|
-
|
|
46
|
-
The EventBus requires `pyee` (Python EventEmitter):
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
pip install pyee>=13.0.0
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Usage
|
|
53
|
-
|
|
54
|
-
### Basic Publishing
|
|
55
|
-
|
|
56
|
-
```python
|
|
57
|
-
from claude_mpm.services.event_bus import EventBus
|
|
58
|
-
|
|
59
|
-
# Get singleton instance
|
|
60
|
-
event_bus = EventBus.get_instance()
|
|
61
|
-
|
|
62
|
-
# Publish an event
|
|
63
|
-
event_bus.publish("hook.pre_tool", {
|
|
64
|
-
"tool_name": "Read",
|
|
65
|
-
"file_path": "/example.py",
|
|
66
|
-
"sessionId": "abc-123"
|
|
67
|
-
})
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Subscribing to Events
|
|
71
|
-
|
|
72
|
-
```python
|
|
73
|
-
# Subscribe to specific event
|
|
74
|
-
def handle_pre_tool(data):
|
|
75
|
-
print(f"Tool: {data.get('tool_name')}")
|
|
76
|
-
|
|
77
|
-
event_bus.on("hook.pre_tool", handle_pre_tool)
|
|
78
|
-
|
|
79
|
-
# Subscribe to wildcard pattern
|
|
80
|
-
def handle_all_hooks(event_type, data):
|
|
81
|
-
print(f"Hook event: {event_type}")
|
|
82
|
-
|
|
83
|
-
event_bus.on("hook.*", handle_all_hooks)
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Async Handlers
|
|
87
|
-
|
|
88
|
-
```python
|
|
89
|
-
async def async_handler(data):
|
|
90
|
-
await process_async(data)
|
|
91
|
-
|
|
92
|
-
event_bus.on("app.async_event", async_handler)
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Event Filtering
|
|
96
|
-
|
|
97
|
-
```python
|
|
98
|
-
# Only allow specific events
|
|
99
|
-
event_bus.add_filter("hook.*")
|
|
100
|
-
event_bus.add_filter("system.critical.*")
|
|
101
|
-
|
|
102
|
-
# Events outside filters will be dropped
|
|
103
|
-
event_bus.publish("app.user_action", {}) # Filtered out
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### Socket.IO Integration
|
|
107
|
-
|
|
108
|
-
```python
|
|
109
|
-
from claude_mpm.services.event_bus import SocketIORelay
|
|
110
|
-
|
|
111
|
-
# Create and start relay
|
|
112
|
-
relay = SocketIORelay(port=8765)
|
|
113
|
-
relay.start()
|
|
114
|
-
|
|
115
|
-
# Events published to EventBus will be relayed to Socket.IO
|
|
116
|
-
event_bus.publish("hook.subagent_stop", {
|
|
117
|
-
"agent_type": "Engineer",
|
|
118
|
-
"result": "Success"
|
|
119
|
-
})
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Configuration
|
|
123
|
-
|
|
124
|
-
Configure via environment variables:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
# EventBus settings
|
|
128
|
-
export CLAUDE_MPM_EVENTBUS_ENABLED=true
|
|
129
|
-
export CLAUDE_MPM_EVENTBUS_DEBUG=false
|
|
130
|
-
export CLAUDE_MPM_EVENTBUS_HISTORY_SIZE=100
|
|
131
|
-
export CLAUDE_MPM_EVENTBUS_FILTERS="hook.*,system.critical.*"
|
|
132
|
-
|
|
133
|
-
# Relay settings
|
|
134
|
-
export CLAUDE_MPM_RELAY_ENABLED=true
|
|
135
|
-
export CLAUDE_MPM_SOCKETIO_PORT=8765
|
|
136
|
-
export CLAUDE_MPM_RELAY_DEBUG=false
|
|
137
|
-
export CLAUDE_MPM_RELAY_MAX_RETRIES=3
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Migration from Direct Socket.IO
|
|
141
|
-
|
|
142
|
-
### Before (Direct Socket.IO)
|
|
143
|
-
```python
|
|
144
|
-
# In hook_handler.py
|
|
145
|
-
client = socketio.Client()
|
|
146
|
-
client.connect("http://localhost:8765")
|
|
147
|
-
client.emit("claude_event", normalized_data)
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### After (EventBus)
|
|
151
|
-
```python
|
|
152
|
-
# In hook_handler.py
|
|
153
|
-
event_bus = EventBus.get_instance()
|
|
154
|
-
event_bus.publish("hook.pre_tool", data)
|
|
155
|
-
|
|
156
|
-
# Socket.IO handled by relay (separate concern)
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
## Benefits
|
|
160
|
-
|
|
161
|
-
1. **Decoupling**: Hooks don't need to know about Socket.IO
|
|
162
|
-
2. **Testability**: Easy to test without Socket.IO running
|
|
163
|
-
3. **Reliability**: Failures in one consumer don't affect others
|
|
164
|
-
4. **Flexibility**: Add new consumers without modifying producers
|
|
165
|
-
5. **Performance**: Events processed asynchronously
|
|
166
|
-
6. **Monitoring**: Built-in statistics and event history
|
|
167
|
-
|
|
168
|
-
## Testing
|
|
169
|
-
|
|
170
|
-
Run the test suite:
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
# Integration tests
|
|
174
|
-
python scripts/test_eventbus_integration.py
|
|
175
|
-
|
|
176
|
-
# Usage examples
|
|
177
|
-
python scripts/eventbus_usage_example.py
|
|
178
|
-
|
|
179
|
-
# Complete flow test
|
|
180
|
-
python scripts/test_eventbus_flow.py
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
## Monitoring
|
|
184
|
-
|
|
185
|
-
Get EventBus statistics:
|
|
186
|
-
|
|
187
|
-
```python
|
|
188
|
-
stats = event_bus.get_stats()
|
|
189
|
-
print(f"Events published: {stats['events_published']}")
|
|
190
|
-
print(f"Events filtered: {stats['events_filtered']}")
|
|
191
|
-
|
|
192
|
-
# Recent event history
|
|
193
|
-
recent = event_bus.get_recent_events(10)
|
|
194
|
-
for event in recent:
|
|
195
|
-
print(f"{event['type']} at {event['timestamp']}")
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
## Error Handling
|
|
199
|
-
|
|
200
|
-
Errors in consumers are isolated:
|
|
201
|
-
|
|
202
|
-
```python
|
|
203
|
-
def good_handler(data):
|
|
204
|
-
process(data) # Always runs
|
|
205
|
-
|
|
206
|
-
def bad_handler(data):
|
|
207
|
-
raise Exception("Error") # Doesn't affect good_handler
|
|
208
|
-
|
|
209
|
-
event_bus.on("app.event", good_handler)
|
|
210
|
-
event_bus.on("app.event", bad_handler)
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Performance
|
|
214
|
-
|
|
215
|
-
- Handles 30,000+ events/second
|
|
216
|
-
- Minimal memory overhead
|
|
217
|
-
- Thread-safe for concurrent publishing
|
|
218
|
-
- Efficient wildcard matching
|
|
219
|
-
|
|
220
|
-
## Troubleshooting
|
|
221
|
-
|
|
222
|
-
### Events not being received
|
|
223
|
-
1. Check if EventBus is enabled: `CLAUDE_MPM_EVENTBUS_ENABLED=true`
|
|
224
|
-
2. Verify no filters are blocking: `event_bus.clear_filters()`
|
|
225
|
-
3. Check handler registration: `event_bus.on("event_type", handler)`
|
|
226
|
-
|
|
227
|
-
### Socket.IO relay not working
|
|
228
|
-
1. Verify Socket.IO server is running on configured port
|
|
229
|
-
2. Check relay is started: `relay.start()`
|
|
230
|
-
3. Enable debug logging: `CLAUDE_MPM_RELAY_DEBUG=true`
|
|
231
|
-
|
|
232
|
-
### High memory usage
|
|
233
|
-
1. Reduce history size: `CLAUDE_MPM_EVENTBUS_HISTORY_SIZE=50`
|
|
234
|
-
2. Clear history periodically: `event_bus.clear_history()`
|
|
235
|
-
|
|
236
|
-
## Future Enhancements
|
|
237
|
-
|
|
238
|
-
- [ ] Persistent event storage
|
|
239
|
-
- [ ] Event replay capabilities
|
|
240
|
-
- [ ] Advanced routing rules
|
|
241
|
-
- [ ] Event prioritization
|
|
242
|
-
- [ ] Distributed EventBus (Redis backend)
|
|
243
|
-
- [ ] Event schema validation
|
|
244
|
-
- [ ] Rate limiting per consumer
|
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
# Event Bus System
|
|
2
|
-
|
|
3
|
-
A decoupled, reliable event system for Claude MPM that separates event producers from consumers, enabling better testing, maintenance, and extensibility.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The Event Bus system provides a central hub for all events in the Claude MPM framework. Instead of components directly calling Socket.IO or other services, they publish events to the bus, which routes them to interested consumers.
|
|
8
|
-
|
|
9
|
-
## Architecture
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
Producers → Event Bus → Consumers
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
### Key Components
|
|
16
|
-
|
|
17
|
-
- **EventBus**: Central routing and queuing system
|
|
18
|
-
- **Event**: Standard event format with metadata
|
|
19
|
-
- **Producers**: Publish events without knowing consumers
|
|
20
|
-
- **Consumers**: Subscribe to topics and process events
|
|
21
|
-
- **Topics**: Hierarchical event categorization
|
|
22
|
-
|
|
23
|
-
## Benefits
|
|
24
|
-
|
|
25
|
-
### 1. Decoupling
|
|
26
|
-
- Producers don't know about consumers
|
|
27
|
-
- Socket.IO is just another consumer
|
|
28
|
-
- Easy to add/remove consumers without affecting producers
|
|
29
|
-
|
|
30
|
-
### 2. Reliability
|
|
31
|
-
- Events queued when consumers unavailable
|
|
32
|
-
- Retry logic with exponential backoff
|
|
33
|
-
- Dead letter queue for failed events
|
|
34
|
-
- Graceful degradation
|
|
35
|
-
|
|
36
|
-
### 3. Testability
|
|
37
|
-
- Test producers without Socket.IO
|
|
38
|
-
- Mock event bus for unit tests
|
|
39
|
-
- Test consumers in isolation
|
|
40
|
-
- Deterministic event flow
|
|
41
|
-
|
|
42
|
-
### 4. Observability
|
|
43
|
-
- Central metrics collection
|
|
44
|
-
- Event flow monitoring
|
|
45
|
-
- Performance tracking
|
|
46
|
-
- Debug logging
|
|
47
|
-
|
|
48
|
-
### 5. Flexibility
|
|
49
|
-
- Topic-based filtering
|
|
50
|
-
- Event transformation
|
|
51
|
-
- Batch processing
|
|
52
|
-
- Priority queuing
|
|
53
|
-
|
|
54
|
-
## Usage
|
|
55
|
-
|
|
56
|
-
### Basic Setup
|
|
57
|
-
|
|
58
|
-
```python
|
|
59
|
-
from claude_mpm.services.events import EventBus, SocketIOConsumer, LoggingConsumer
|
|
60
|
-
|
|
61
|
-
# Create and start event bus
|
|
62
|
-
bus = EventBus()
|
|
63
|
-
await bus.start()
|
|
64
|
-
|
|
65
|
-
# Add consumers
|
|
66
|
-
socketio_consumer = SocketIOConsumer()
|
|
67
|
-
await bus.subscribe(socketio_consumer)
|
|
68
|
-
|
|
69
|
-
logging_consumer = LoggingConsumer(topics=["hook.**"])
|
|
70
|
-
await bus.subscribe(logging_consumer)
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Publishing Events
|
|
74
|
-
|
|
75
|
-
```python
|
|
76
|
-
from claude_mpm.services.events import HookEventProducer
|
|
77
|
-
|
|
78
|
-
# Create producer
|
|
79
|
-
producer = HookEventProducer(bus)
|
|
80
|
-
|
|
81
|
-
# Publish events
|
|
82
|
-
await producer.publish_response({
|
|
83
|
-
"content": "Assistant response text",
|
|
84
|
-
"model": "claude-3",
|
|
85
|
-
})
|
|
86
|
-
|
|
87
|
-
await producer.publish_tool_use(
|
|
88
|
-
tool_name="Read",
|
|
89
|
-
tool_params={"file_path": "/path/to/file"},
|
|
90
|
-
tool_result="File contents",
|
|
91
|
-
)
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Creating Custom Consumers
|
|
95
|
-
|
|
96
|
-
```python
|
|
97
|
-
from claude_mpm.services.events import IEventConsumer, ConsumerConfig
|
|
98
|
-
|
|
99
|
-
class CustomConsumer(IEventConsumer):
|
|
100
|
-
def __init__(self):
|
|
101
|
-
self._config = ConsumerConfig(
|
|
102
|
-
name="CustomConsumer",
|
|
103
|
-
topics=["system.**"], # Subscribe to system events
|
|
104
|
-
priority=ConsumerPriority.NORMAL,
|
|
105
|
-
)
|
|
106
|
-
|
|
107
|
-
async def consume(self, event: Event) -> bool:
|
|
108
|
-
# Process event
|
|
109
|
-
print(f"Processing: {event.topic} - {event.type}")
|
|
110
|
-
return True
|
|
111
|
-
|
|
112
|
-
# Implement other required methods...
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Topic Hierarchy
|
|
116
|
-
|
|
117
|
-
Events are organized in a hierarchical topic structure:
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
hook.* # Hook system events
|
|
121
|
-
.response # Assistant responses
|
|
122
|
-
.tool # Tool usage
|
|
123
|
-
.subagent.* # Subagent events
|
|
124
|
-
.error # Hook errors
|
|
125
|
-
|
|
126
|
-
system.* # System events
|
|
127
|
-
.lifecycle.* # Service startup/shutdown
|
|
128
|
-
.health # Health status
|
|
129
|
-
.config # Configuration changes
|
|
130
|
-
.performance # Performance metrics
|
|
131
|
-
.error # System errors
|
|
132
|
-
.warning # System warnings
|
|
133
|
-
|
|
134
|
-
cli.* # CLI command events
|
|
135
|
-
agent.* # Agent events
|
|
136
|
-
build.* # Build monitoring events
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Topic Patterns
|
|
140
|
-
|
|
141
|
-
- `hook.*` - Matches `hook.response` but not `hook.tool.usage`
|
|
142
|
-
- `hook.**` - Matches all hook events including nested
|
|
143
|
-
- `**` - Matches all events
|
|
144
|
-
|
|
145
|
-
## Event Format
|
|
146
|
-
|
|
147
|
-
```python
|
|
148
|
-
@dataclass
|
|
149
|
-
class Event:
|
|
150
|
-
id: str # Unique event ID
|
|
151
|
-
topic: str # Event topic
|
|
152
|
-
type: str # Event type
|
|
153
|
-
timestamp: datetime # Creation time
|
|
154
|
-
source: str # Event source
|
|
155
|
-
data: Dict[str, Any] # Event payload
|
|
156
|
-
metadata: EventMetadata # Processing metadata
|
|
157
|
-
correlation_id: str # Track related events
|
|
158
|
-
priority: EventPriority # Processing priority
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Consumers
|
|
162
|
-
|
|
163
|
-
### Built-in Consumers
|
|
164
|
-
|
|
165
|
-
#### SocketIOConsumer
|
|
166
|
-
- Emits events via Socket.IO
|
|
167
|
-
- Batching for efficiency
|
|
168
|
-
- Automatic reconnection
|
|
169
|
-
- Connection pooling
|
|
170
|
-
|
|
171
|
-
#### LoggingConsumer
|
|
172
|
-
- Logs events for debugging
|
|
173
|
-
- Configurable log levels
|
|
174
|
-
- JSON formatting
|
|
175
|
-
- Topic filtering
|
|
176
|
-
|
|
177
|
-
#### MetricsConsumer
|
|
178
|
-
- Collects event statistics
|
|
179
|
-
- Rate calculation
|
|
180
|
-
- Latency tracking
|
|
181
|
-
- Top event analysis
|
|
182
|
-
|
|
183
|
-
#### DeadLetterConsumer
|
|
184
|
-
- Stores failed events
|
|
185
|
-
- Event replay capability
|
|
186
|
-
- Retention policies
|
|
187
|
-
- Failure analysis
|
|
188
|
-
|
|
189
|
-
## Producers
|
|
190
|
-
|
|
191
|
-
### Built-in Producers
|
|
192
|
-
|
|
193
|
-
#### HookEventProducer
|
|
194
|
-
- Publishes hook system events
|
|
195
|
-
- Helper methods for common events
|
|
196
|
-
- Correlation tracking
|
|
197
|
-
|
|
198
|
-
#### SystemEventProducer
|
|
199
|
-
- Publishes system-level events
|
|
200
|
-
- Service lifecycle events
|
|
201
|
-
- Health and metrics
|
|
202
|
-
- Configuration changes
|
|
203
|
-
|
|
204
|
-
## Configuration
|
|
205
|
-
|
|
206
|
-
### EventBus Options
|
|
207
|
-
|
|
208
|
-
```python
|
|
209
|
-
EventBus(
|
|
210
|
-
max_queue_size=10000, # Maximum queued events
|
|
211
|
-
process_interval=0.01, # Processing frequency
|
|
212
|
-
batch_timeout=0.1, # Batch wait time
|
|
213
|
-
enable_metrics=True, # Track metrics
|
|
214
|
-
enable_persistence=False, # Persist to disk
|
|
215
|
-
)
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### Consumer Configuration
|
|
219
|
-
|
|
220
|
-
```python
|
|
221
|
-
ConsumerConfig(
|
|
222
|
-
name="MyConsumer",
|
|
223
|
-
topics=["hook.**"], # Topics to subscribe
|
|
224
|
-
priority=ConsumerPriority.HIGH,
|
|
225
|
-
batch_size=10, # Process in batches
|
|
226
|
-
batch_timeout=0.5, # Batch wait time
|
|
227
|
-
max_retries=3, # Retry failed events
|
|
228
|
-
retry_backoff=2.0, # Backoff multiplier
|
|
229
|
-
filter_func=my_filter, # Event filter
|
|
230
|
-
transform_func=my_transform, # Event transformer
|
|
231
|
-
)
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
## Migration Guide
|
|
235
|
-
|
|
236
|
-
### Updating Hook Handler
|
|
237
|
-
|
|
238
|
-
Before (Direct Socket.IO):
|
|
239
|
-
```python
|
|
240
|
-
# Old: Direct Socket.IO dependency
|
|
241
|
-
socketio_client = socketio.Client()
|
|
242
|
-
socketio_client.emit("hook_event", event_data)
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
After (Event Bus):
|
|
246
|
-
```python
|
|
247
|
-
# New: Publish to event bus
|
|
248
|
-
producer = HookEventProducer(event_bus)
|
|
249
|
-
await producer.publish_response(response_data)
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
### Testing
|
|
253
|
-
|
|
254
|
-
Before:
|
|
255
|
-
```python
|
|
256
|
-
# Hard to test - needs Socket.IO server
|
|
257
|
-
def test_hook_handler():
|
|
258
|
-
# Complex setup with Socket.IO
|
|
259
|
-
pass
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
After:
|
|
263
|
-
```python
|
|
264
|
-
# Easy to test - mock event bus
|
|
265
|
-
def test_hook_handler():
|
|
266
|
-
mock_bus = Mock()
|
|
267
|
-
producer = HookEventProducer(mock_bus)
|
|
268
|
-
await producer.publish_response(data)
|
|
269
|
-
mock_bus.publish.assert_called_once()
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
## Performance
|
|
273
|
-
|
|
274
|
-
- **Publish Latency**: <1ms average
|
|
275
|
-
- **Processing Throughput**: 10,000+ events/sec
|
|
276
|
-
- **Memory Usage**: ~100 bytes per queued event
|
|
277
|
-
- **CPU Overhead**: <5% for typical load
|
|
278
|
-
|
|
279
|
-
## Best Practices
|
|
280
|
-
|
|
281
|
-
1. **Use Topics Wisely**: Create logical topic hierarchies
|
|
282
|
-
2. **Set Priorities**: Critical events should have higher priority
|
|
283
|
-
3. **Handle Errors**: Consumers should handle their own errors
|
|
284
|
-
4. **Monitor Metrics**: Track queue size and processing rates
|
|
285
|
-
5. **Test in Isolation**: Test producers and consumers separately
|
|
286
|
-
6. **Batch When Possible**: Improve efficiency with batching
|
|
287
|
-
7. **Clean Shutdown**: Always call `bus.stop()` for graceful shutdown
|
|
288
|
-
|
|
289
|
-
## Examples
|
|
290
|
-
|
|
291
|
-
See the `scripts/` directory for complete examples:
|
|
292
|
-
- `test_event_bus.py` - Basic event bus demonstration
|
|
293
|
-
- `hook_handler_with_event_bus.py` - Hook handler integration
|
|
294
|
-
|
|
295
|
-
## Future Enhancements
|
|
296
|
-
|
|
297
|
-
- [ ] Persistent event storage
|
|
298
|
-
- [ ] Event replay from timestamp
|
|
299
|
-
- [ ] Distributed event bus (Redis/RabbitMQ backend)
|
|
300
|
-
- [ ] Event schema validation
|
|
301
|
-
- [ ] Advanced routing rules
|
|
302
|
-
- [ ] Event compression
|
|
303
|
-
- [ ] WebSocket consumer for real-time streaming
|