claude-mpm 4.1.6__py3-none-any.whl → 4.24.0__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/BUILD_NUMBER +1 -1
- claude_mpm/VERSION +1 -1
- claude_mpm/__init__.py +20 -5
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
- claude_mpm/agents/BASE_DOCUMENTATION.md +53 -0
- claude_mpm/agents/BASE_ENGINEER.md +658 -0
- claude_mpm/agents/BASE_OPS.md +219 -0
- claude_mpm/agents/BASE_PM.md +431 -214
- claude_mpm/agents/BASE_PROMPT_ENGINEER.md +787 -0
- claude_mpm/agents/BASE_QA.md +167 -0
- claude_mpm/agents/BASE_RESEARCH.md +53 -0
- claude_mpm/agents/MEMORY.md +3 -0
- claude_mpm/agents/OUTPUT_STYLE.md +335 -0
- claude_mpm/agents/PM_INSTRUCTIONS.md +1159 -0
- claude_mpm/agents/WORKFLOW.md +355 -187
- claude_mpm/agents/agent_loader.py +40 -10
- claude_mpm/agents/agent_loader_integration.py +3 -2
- claude_mpm/agents/agents_metadata.py +57 -0
- claude_mpm/agents/async_agent_loader.py +3 -3
- claude_mpm/agents/base_agent_loader.py +11 -9
- claude_mpm/agents/frontmatter_validator.py +291 -251
- claude_mpm/agents/system_agent_config.py +3 -2
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +17 -0
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +3 -0
- claude_mpm/agents/templates/README.md +465 -0
- claude_mpm/agents/templates/agent-manager.json +267 -18
- claude_mpm/agents/templates/agentic-coder-optimizer.json +248 -0
- claude_mpm/agents/templates/api_qa.json +16 -4
- claude_mpm/agents/templates/circuit_breakers.md +638 -0
- claude_mpm/agents/templates/clerk-ops.json +235 -0
- claude_mpm/agents/templates/code_analyzer.json +25 -9
- claude_mpm/agents/templates/content-agent.json +358 -0
- claude_mpm/agents/templates/dart_engineer.json +307 -0
- claude_mpm/agents/templates/data_engineer.json +87 -14
- claude_mpm/agents/templates/documentation.json +76 -13
- claude_mpm/agents/templates/engineer.json +44 -10
- claude_mpm/agents/templates/gcp_ops_agent.json +253 -0
- claude_mpm/agents/templates/git_file_tracking.md +584 -0
- claude_mpm/agents/templates/golang_engineer.json +270 -0
- claude_mpm/agents/templates/imagemagick.json +5 -2
- claude_mpm/agents/templates/java_engineer.json +346 -0
- claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
- claude_mpm/agents/templates/local_ops_agent.json +1840 -0
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +39 -0
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +400 -0
- claude_mpm/agents/templates/memory_manager.json +6 -3
- claude_mpm/agents/templates/nextjs_engineer.json +285 -0
- claude_mpm/agents/templates/ops.json +27 -8
- claude_mpm/agents/templates/php-engineer.json +287 -0
- claude_mpm/agents/templates/pm_examples.md +474 -0
- claude_mpm/agents/templates/pm_red_flags.md +262 -0
- claude_mpm/agents/templates/product_owner.json +338 -0
- claude_mpm/agents/templates/project_organizer.json +19 -5
- claude_mpm/agents/templates/prompt-engineer.json +737 -0
- claude_mpm/agents/templates/python_engineer.json +387 -0
- claude_mpm/agents/templates/qa.json +26 -6
- claude_mpm/agents/templates/react_engineer.json +239 -0
- claude_mpm/agents/templates/refactoring_engineer.json +15 -5
- claude_mpm/agents/templates/research.json +47 -22
- claude_mpm/agents/templates/response_format.md +583 -0
- claude_mpm/agents/templates/ruby-engineer.json +280 -0
- claude_mpm/agents/templates/rust_engineer.json +275 -0
- claude_mpm/agents/templates/security.json +59 -10
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/agents/templates/tauri_engineer.json +274 -0
- claude_mpm/agents/templates/ticketing.json +16 -7
- claude_mpm/agents/templates/typescript_engineer.json +285 -0
- claude_mpm/agents/templates/validation_templates.md +312 -0
- claude_mpm/agents/templates/vercel_ops_agent.json +164 -33
- claude_mpm/agents/templates/version_control.json +16 -4
- claude_mpm/agents/templates/web_qa.json +243 -21
- claude_mpm/agents/templates/web_ui.json +18 -5
- claude_mpm/cli/__init__.py +38 -363
- claude_mpm/cli/commands/__init__.py +8 -0
- claude_mpm/cli/commands/agent_manager.py +675 -20
- claude_mpm/cli/commands/agent_state_manager.py +186 -0
- claude_mpm/cli/commands/agents.py +722 -150
- claude_mpm/cli/commands/agents_detect.py +380 -0
- claude_mpm/cli/commands/agents_recommend.py +309 -0
- claude_mpm/cli/commands/aggregate.py +10 -6
- claude_mpm/cli/commands/analyze.py +553 -0
- claude_mpm/cli/commands/analyze_code.py +528 -0
- claude_mpm/cli/commands/auto_configure.py +570 -0
- claude_mpm/cli/commands/cleanup.py +12 -12
- claude_mpm/cli/commands/config.py +47 -13
- claude_mpm/cli/commands/configure.py +488 -884
- claude_mpm/cli/commands/configure_agent_display.py +261 -0
- claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
- claude_mpm/cli/commands/configure_hook_manager.py +225 -0
- claude_mpm/cli/commands/configure_models.py +18 -0
- claude_mpm/cli/commands/configure_navigation.py +167 -0
- claude_mpm/cli/commands/configure_paths.py +104 -0
- claude_mpm/cli/commands/configure_persistence.py +254 -0
- claude_mpm/cli/commands/configure_startup_manager.py +646 -0
- claude_mpm/cli/commands/configure_template_editor.py +497 -0
- claude_mpm/cli/commands/configure_validators.py +73 -0
- claude_mpm/cli/commands/dashboard.py +286 -0
- claude_mpm/cli/commands/debug.py +1386 -0
- claude_mpm/cli/commands/doctor.py +43 -7
- claude_mpm/cli/commands/info.py +3 -4
- claude_mpm/cli/commands/local_deploy.py +537 -0
- claude_mpm/cli/commands/mcp.py +17 -10
- claude_mpm/cli/commands/mcp_command_router.py +11 -0
- claude_mpm/cli/commands/mcp_config.py +154 -0
- claude_mpm/cli/commands/mcp_external_commands.py +249 -0
- claude_mpm/cli/commands/mcp_install_commands.py +101 -32
- claude_mpm/cli/commands/mcp_pipx_config.py +2 -2
- claude_mpm/cli/commands/mcp_setup_external.py +868 -0
- claude_mpm/cli/commands/memory.py +55 -21
- claude_mpm/cli/commands/monitor.py +168 -617
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +525 -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 +195 -0
- claude_mpm/cli/commands/run.py +169 -42
- claude_mpm/cli/commands/search.py +458 -0
- claude_mpm/cli/commands/skills.py +488 -0
- claude_mpm/cli/commands/uninstall.py +176 -0
- claude_mpm/cli/commands/upgrade.py +152 -0
- claude_mpm/cli/commands/verify.py +119 -0
- claude_mpm/cli/executor.py +204 -0
- claude_mpm/cli/helpers.py +105 -0
- claude_mpm/cli/interactive/__init__.py +21 -0
- claude_mpm/cli/interactive/agent_wizard.py +962 -0
- claude_mpm/cli/interactive/skills_wizard.py +491 -0
- claude_mpm/cli/parser.py +79 -2
- claude_mpm/cli/parsers/__init__.py +7 -1
- claude_mpm/cli/parsers/agent_manager_parser.py +161 -1
- claude_mpm/cli/parsers/agents_parser.py +116 -0
- claude_mpm/cli/parsers/analyze_code_parser.py +170 -0
- claude_mpm/cli/parsers/analyze_parser.py +135 -0
- claude_mpm/cli/parsers/auto_configure_parser.py +245 -0
- claude_mpm/cli/parsers/base_parser.py +187 -3
- claude_mpm/cli/parsers/configure_parser.py +34 -15
- claude_mpm/cli/parsers/dashboard_parser.py +113 -0
- claude_mpm/cli/parsers/debug_parser.py +319 -0
- claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
- claude_mpm/cli/parsers/mcp_parser.py +15 -0
- claude_mpm/cli/parsers/monitor_parser.py +12 -2
- claude_mpm/cli/parsers/mpm_init_parser.py +311 -0
- claude_mpm/cli/parsers/run_parser.py +5 -0
- claude_mpm/cli/parsers/search_parser.py +245 -0
- claude_mpm/cli/parsers/skills_parser.py +137 -0
- claude_mpm/cli/shared/argument_patterns.py +20 -13
- claude_mpm/cli/shared/base_command.py +2 -2
- claude_mpm/cli/shared/output_formatters.py +28 -19
- claude_mpm/cli/startup.py +562 -0
- claude_mpm/cli/startup_logging.py +179 -13
- claude_mpm/cli/utils.py +53 -2
- claude_mpm/commands/__init__.py +14 -0
- claude_mpm/commands/mpm-agents-detect.md +168 -0
- claude_mpm/commands/mpm-agents-recommend.md +214 -0
- claude_mpm/commands/mpm-agents.md +122 -0
- claude_mpm/commands/mpm-auto-configure.md +269 -0
- claude_mpm/commands/mpm-config.md +141 -0
- claude_mpm/commands/mpm-doctor.md +24 -0
- claude_mpm/commands/mpm-help.md +290 -0
- claude_mpm/commands/mpm-init.md +521 -0
- claude_mpm/commands/mpm-monitor.md +409 -0
- claude_mpm/commands/mpm-organize.md +295 -0
- claude_mpm/commands/mpm-resume.md +372 -0
- claude_mpm/commands/mpm-status.md +75 -0
- claude_mpm/commands/mpm-tickets.md +151 -0
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +21 -0
- claude_mpm/config/agent_config.py +4 -4
- claude_mpm/config/experimental_features.py +7 -7
- claude_mpm/config/model_config.py +428 -0
- claude_mpm/config/paths.py +3 -2
- claude_mpm/config/socketio_config.py +36 -7
- claude_mpm/constants.py +27 -1
- claude_mpm/core/__init__.py +53 -17
- claude_mpm/core/agent_name_normalizer.py +3 -2
- claude_mpm/core/agent_registry.py +2 -2
- claude_mpm/core/agent_session_manager.py +10 -10
- claude_mpm/core/api_validator.py +330 -0
- claude_mpm/core/base_service.py +33 -23
- claude_mpm/core/cache.py +9 -9
- claude_mpm/core/claude_runner.py +19 -8
- claude_mpm/core/config.py +103 -8
- claude_mpm/core/config_aliases.py +7 -6
- claude_mpm/core/constants.py +65 -0
- claude_mpm/core/container.py +11 -5
- claude_mpm/core/enums.py +452 -0
- claude_mpm/core/error_handler.py +623 -0
- claude_mpm/core/factories.py +1 -1
- claude_mpm/core/file_utils.py +764 -0
- claude_mpm/core/framework/__init__.py +38 -0
- claude_mpm/core/framework/formatters/__init__.py +11 -0
- claude_mpm/core/framework/formatters/capability_generator.py +367 -0
- claude_mpm/core/framework/formatters/content_formatter.py +288 -0
- claude_mpm/core/framework/formatters/context_generator.py +185 -0
- claude_mpm/core/framework/loaders/__init__.py +13 -0
- claude_mpm/core/framework/loaders/agent_loader.py +210 -0
- claude_mpm/core/framework/loaders/file_loader.py +223 -0
- claude_mpm/core/framework/loaders/instruction_loader.py +161 -0
- claude_mpm/core/framework/loaders/packaged_loader.py +232 -0
- claude_mpm/core/framework/processors/__init__.py +11 -0
- claude_mpm/core/framework/processors/memory_processor.py +230 -0
- claude_mpm/core/framework/processors/metadata_processor.py +146 -0
- claude_mpm/core/framework/processors/template_processor.py +244 -0
- claude_mpm/core/framework_loader.py +323 -1491
- claude_mpm/core/hook_manager.py +8 -6
- claude_mpm/core/injectable_service.py +11 -8
- claude_mpm/core/instruction_reinforcement_hook.py +267 -0
- claude_mpm/core/interactive_session.py +55 -8
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/lazy.py +3 -3
- claude_mpm/core/log_manager.py +100 -28
- claude_mpm/core/logger.py +19 -14
- claude_mpm/core/logging_config.py +6 -2
- claude_mpm/core/logging_utils.py +520 -0
- claude_mpm/core/oneshot_session.py +51 -7
- claude_mpm/core/optimized_agent_loader.py +9 -9
- claude_mpm/core/optimized_startup.py +1 -1
- claude_mpm/core/output_style_manager.py +12 -192
- claude_mpm/core/pm_hook_interceptor.py +118 -15
- claude_mpm/core/service_registry.py +7 -3
- claude_mpm/core/session_manager.py +14 -12
- claude_mpm/core/shared/config_loader.py +1 -1
- claude_mpm/core/socketio_pool.py +15 -15
- claude_mpm/core/tool_access_control.py +3 -2
- claude_mpm/core/types.py +4 -11
- claude_mpm/core/typing_utils.py +7 -6
- claude_mpm/core/unified_agent_registry.py +116 -12
- claude_mpm/core/unified_config.py +6 -6
- claude_mpm/core/unified_paths.py +23 -20
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +1 -0
- claude_mpm/dashboard/__init__.py +12 -0
- claude_mpm/dashboard/analysis_runner.py +455 -0
- claude_mpm/dashboard/api/simple_directory.py +261 -0
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +188 -0
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +156 -0
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +38 -0
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +92 -0
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +248 -0
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +61 -0
- claude_mpm/dashboard/static/archive/test_activity_connection.html +179 -0
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +68 -0
- claude_mpm/dashboard/static/archive/test_dashboard.html +409 -0
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +519 -0
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +181 -0
- claude_mpm/dashboard/static/archive/test_file_data.html +315 -0
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +243 -0
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +234 -0
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +117 -0
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +115 -0
- claude_mpm/dashboard/static/archive/test_file_viewer.html +224 -0
- claude_mpm/dashboard/static/archive/test_final_activity.html +220 -0
- claude_mpm/dashboard/static/archive/test_tab_fix.html +139 -0
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +1 -0
- claude_mpm/dashboard/static/built/components/activity-tree.js +2 -0
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +777 -0
- claude_mpm/dashboard/static/built/components/agent-inference.js +1 -1
- claude_mpm/dashboard/static/built/components/build-tracker.js +333 -0
- claude_mpm/dashboard/static/built/components/code-simple.js +857 -0
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +353 -0
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +235 -0
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +409 -0
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +435 -0
- claude_mpm/dashboard/static/built/components/code-tree.js +2 -0
- claude_mpm/dashboard/static/built/components/code-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/connection-debug.js +654 -0
- claude_mpm/dashboard/static/built/components/diff-viewer.js +891 -0
- claude_mpm/dashboard/static/built/components/event-processor.js +1 -1
- claude_mpm/dashboard/static/built/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/export-manager.js +1 -1
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +443 -0
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +690 -0
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +1 -1
- claude_mpm/dashboard/static/built/components/file-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/nav-bar.js +145 -0
- claude_mpm/dashboard/static/built/components/page-structure.js +429 -0
- claude_mpm/dashboard/static/built/components/session-manager.js +1 -1
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/working-directory.js +1 -1
- claude_mpm/dashboard/static/built/connection-manager.js +536 -0
- claude_mpm/dashboard/static/built/dashboard.js +1 -1
- claude_mpm/dashboard/static/built/extension-error-handler.js +164 -0
- claude_mpm/dashboard/static/built/react/events.js +30 -0
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +396 -0
- claude_mpm/dashboard/static/built/shared/event-bus.js +330 -0
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +540 -0
- claude_mpm/dashboard/static/built/shared/logger.js +385 -0
- claude_mpm/dashboard/static/built/shared/page-structure.js +249 -0
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +253 -0
- claude_mpm/dashboard/static/built/socket-client.js +1 -1
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +185 -0
- claude_mpm/dashboard/static/css/activity.css +1958 -0
- claude_mpm/dashboard/static/css/dashboard.css +1413 -72
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +1 -0
- claude_mpm/dashboard/static/dist/components/activity-tree.js +2 -0
- claude_mpm/dashboard/static/dist/components/agent-inference.js +1 -1
- claude_mpm/dashboard/static/dist/components/code-tree.js +2 -0
- claude_mpm/dashboard/static/dist/components/code-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-processor.js +1 -1
- claude_mpm/dashboard/static/dist/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/export-manager.js +1 -1
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +1 -1
- claude_mpm/dashboard/static/dist/components/file-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/session-manager.js +1 -1
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/working-directory.js +1 -1
- claude_mpm/dashboard/static/dist/dashboard.js +1 -1
- claude_mpm/dashboard/static/dist/react/events.js +30 -0
- claude_mpm/dashboard/static/dist/socket-client.js +1 -1
- claude_mpm/dashboard/static/events.html +607 -0
- claude_mpm/dashboard/static/index.html +635 -0
- claude_mpm/dashboard/static/js/components/activity-tree.js +1871 -0
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +4 -1
- claude_mpm/dashboard/static/js/components/agent-inference.js +3 -0
- claude_mpm/dashboard/static/js/components/build-tracker.js +23 -13
- claude_mpm/dashboard/static/js/components/code-simple.js +857 -0
- claude_mpm/dashboard/static/js/components/diff-viewer.js +891 -0
- claude_mpm/dashboard/static/js/components/event-processor.js +3 -107
- claude_mpm/dashboard/static/js/components/event-viewer.js +98 -11
- claude_mpm/dashboard/static/js/components/export-manager.js +3 -0
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +443 -0
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +690 -0
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +30 -10
- claude_mpm/dashboard/static/js/components/file-viewer.js +580 -0
- claude_mpm/dashboard/static/js/components/module-viewer.js +68 -205
- claude_mpm/dashboard/static/js/components/session-manager.js +46 -10
- claude_mpm/dashboard/static/js/components/socket-manager.js +16 -0
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +359 -40
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +1824 -0
- claude_mpm/dashboard/static/js/components/working-directory.js +61 -10
- claude_mpm/dashboard/static/js/connection-manager.js +1 -1
- claude_mpm/dashboard/static/js/dashboard.js +523 -622
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +396 -0
- claude_mpm/dashboard/static/js/shared/event-bus.js +330 -0
- claude_mpm/dashboard/static/js/shared/logger.js +385 -0
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +253 -0
- claude_mpm/dashboard/static/js/socket-client.js +549 -62
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +562 -0
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +185 -0
- claude_mpm/dashboard/static/legacy/activity.html +736 -0
- claude_mpm/dashboard/static/legacy/agents.html +786 -0
- claude_mpm/dashboard/static/legacy/files.html +747 -0
- claude_mpm/dashboard/static/legacy/tools.html +831 -0
- claude_mpm/dashboard/static/monitors.html +431 -0
- claude_mpm/dashboard/static/production/events.html +659 -0
- claude_mpm/dashboard/static/production/main.html +698 -0
- claude_mpm/dashboard/static/production/monitors.html +483 -0
- claude_mpm/dashboard/static/socket.io.min.js +7 -0
- claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +7 -0
- claude_mpm/dashboard/static/test-archive/dashboard.html +635 -0
- claude_mpm/dashboard/static/test-archive/debug-events.html +147 -0
- claude_mpm/dashboard/static/test-archive/test-navigation.html +256 -0
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +180 -0
- claude_mpm/dashboard/static/test-archive/test_debug.html +25 -0
- claude_mpm/dashboard/templates/code_simple.html +153 -0
- claude_mpm/dashboard/templates/index.html +267 -9
- claude_mpm/experimental/__init__.py +10 -0
- claude_mpm/experimental/cli_enhancements.py +4 -2
- claude_mpm/generators/agent_profile_generator.py +5 -3
- claude_mpm/hooks/__init__.py +37 -1
- claude_mpm/hooks/base_hook.py +5 -4
- claude_mpm/hooks/claude_hooks/connection_pool.py +4 -4
- claude_mpm/hooks/claude_hooks/event_handlers.py +21 -18
- claude_mpm/hooks/claude_hooks/hook_handler.py +209 -25
- claude_mpm/hooks/claude_hooks/installer.py +783 -0
- claude_mpm/hooks/claude_hooks/memory_integration.py +3 -3
- claude_mpm/hooks/claude_hooks/response_tracking.py +57 -17
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +64 -49
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +140 -76
- claude_mpm/hooks/claude_hooks/services/state_manager.py +11 -9
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +3 -3
- claude_mpm/hooks/failure_learning/__init__.py +60 -0
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +235 -0
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +217 -0
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +286 -0
- claude_mpm/hooks/instruction_reinforcement.py +301 -0
- claude_mpm/hooks/kuzu_enrichment_hook.py +263 -0
- claude_mpm/hooks/kuzu_memory_hook.py +386 -0
- claude_mpm/hooks/kuzu_response_hook.py +183 -0
- claude_mpm/hooks/memory_integration_hook.py +1 -1
- claude_mpm/hooks/session_resume_hook.py +121 -0
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/hooks/tool_call_interceptor.py +8 -5
- claude_mpm/hooks/validation_hooks.py +3 -3
- claude_mpm/init.py +23 -4
- claude_mpm/models/agent_session.py +8 -6
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/schemas/__init__.py +12 -0
- claude_mpm/scripts/claude-hook-handler.sh +187 -0
- claude_mpm/scripts/launch_monitor.py +85 -0
- claude_mpm/scripts/mcp_server.py +3 -5
- claude_mpm/scripts/mpm_doctor.py +3 -2
- claude_mpm/scripts/socketio_daemon.py +156 -396
- claude_mpm/services/__init__.py +144 -160
- claude_mpm/services/agents/__init__.py +18 -5
- claude_mpm/services/agents/agent_builder.py +13 -11
- claude_mpm/services/agents/auto_config_manager.py +796 -0
- claude_mpm/services/agents/deployment/agent_config_provider.py +127 -27
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_deployment.py +38 -15
- claude_mpm/services/agents/deployment/agent_discovery_service.py +125 -7
- claude_mpm/services/agents/deployment/agent_filesystem_manager.py +5 -5
- claude_mpm/services/agents/deployment/agent_format_converter.py +56 -12
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +4 -2
- claude_mpm/services/agents/deployment/agent_operation_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_record_service.py +5 -6
- claude_mpm/services/agents/deployment/agent_state_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_template_builder.py +722 -37
- claude_mpm/services/agents/deployment/agent_validator.py +31 -7
- claude_mpm/services/agents/deployment/agent_version_manager.py +9 -1
- claude_mpm/services/agents/deployment/agent_versioning.py +1 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
- claude_mpm/services/agents/deployment/deployment_config_loader.py +131 -7
- claude_mpm/services/agents/deployment/deployment_type_detector.py +10 -14
- claude_mpm/services/agents/deployment/deployment_wrapper.py +58 -0
- claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
- claude_mpm/services/agents/deployment/local_template_deployment.py +360 -0
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +134 -38
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +8 -7
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +7 -5
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +9 -6
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +9 -6
- claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
- claude_mpm/services/agents/deployment/validation/template_validator.py +64 -44
- claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
- claude_mpm/services/agents/loading/agent_profile_loader.py +10 -9
- claude_mpm/services/agents/loading/base_agent_manager.py +16 -6
- claude_mpm/services/agents/loading/framework_agent_loader.py +2 -2
- claude_mpm/services/agents/local_template_manager.py +744 -0
- claude_mpm/services/agents/management/agent_capabilities_generator.py +3 -2
- claude_mpm/services/agents/management/agent_management_service.py +5 -5
- claude_mpm/services/agents/memory/agent_memory_manager.py +32 -29
- claude_mpm/services/agents/memory/content_manager.py +17 -9
- claude_mpm/services/agents/memory/memory_categorization_service.py +4 -2
- claude_mpm/services/agents/memory/memory_file_service.py +32 -6
- claude_mpm/services/agents/memory/memory_format_service.py +7 -7
- claude_mpm/services/agents/memory/memory_limits_service.py +4 -2
- claude_mpm/services/agents/memory/template_generator.py +3 -3
- claude_mpm/services/agents/observers.py +547 -0
- claude_mpm/services/agents/recommender.py +615 -0
- claude_mpm/services/agents/registry/deployed_agent_discovery.py +3 -3
- claude_mpm/services/agents/registry/modification_tracker.py +30 -19
- claude_mpm/services/async_session_logger.py +141 -98
- claude_mpm/services/claude_session_logger.py +82 -74
- claude_mpm/services/cli/agent_cleanup_service.py +6 -5
- claude_mpm/services/cli/agent_dependency_service.py +1 -1
- claude_mpm/services/cli/agent_listing_service.py +5 -5
- claude_mpm/services/cli/agent_validation_service.py +6 -5
- claude_mpm/services/cli/memory_crud_service.py +12 -7
- claude_mpm/services/cli/memory_output_formatter.py +2 -2
- claude_mpm/services/cli/resume_service.py +617 -0
- claude_mpm/services/cli/session_manager.py +104 -13
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +372 -0
- claude_mpm/services/cli/startup_checker.py +13 -21
- claude_mpm/services/cli/unified_dashboard_manager.py +439 -0
- claude_mpm/services/command_deployment_service.py +17 -9
- claude_mpm/services/command_handler_service.py +11 -5
- claude_mpm/services/core/__init__.py +33 -1
- claude_mpm/services/core/base.py +26 -11
- claude_mpm/services/core/cache_manager.py +1 -3
- claude_mpm/services/core/interfaces/__init__.py +90 -3
- claude_mpm/services/core/interfaces/agent.py +184 -0
- claude_mpm/services/core/interfaces/health.py +172 -0
- claude_mpm/services/core/interfaces/model.py +281 -0
- claude_mpm/services/core/interfaces/process.py +372 -0
- claude_mpm/services/core/interfaces/project.py +121 -0
- claude_mpm/services/core/interfaces/restart.py +307 -0
- claude_mpm/services/core/interfaces/stability.py +260 -0
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/memory_manager.py +92 -47
- claude_mpm/services/core/models/__init__.py +79 -0
- claude_mpm/services/core/models/agent_config.py +384 -0
- claude_mpm/services/core/models/health.py +162 -0
- claude_mpm/services/core/models/process.py +239 -0
- claude_mpm/services/core/models/restart.py +302 -0
- claude_mpm/services/core/models/stability.py +264 -0
- claude_mpm/services/core/models/toolchain.py +306 -0
- claude_mpm/services/core/path_resolver.py +37 -18
- claude_mpm/services/core/service_container.py +2 -2
- claude_mpm/services/diagnostics/__init__.py +2 -2
- claude_mpm/services/diagnostics/checks/__init__.py +4 -2
- claude_mpm/services/diagnostics/checks/agent_check.py +30 -32
- claude_mpm/services/diagnostics/checks/claude_code_check.py +270 -0
- claude_mpm/services/diagnostics/checks/common_issues_check.py +28 -27
- claude_mpm/services/diagnostics/checks/configuration_check.py +26 -25
- claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
- claude_mpm/services/diagnostics/checks/installation_check.py +165 -60
- claude_mpm/services/diagnostics/checks/instructions_check.py +22 -24
- claude_mpm/services/diagnostics/checks/mcp_check.py +57 -43
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +1066 -0
- claude_mpm/services/diagnostics/checks/monitor_check.py +24 -23
- claude_mpm/services/diagnostics/checks/startup_log_check.py +14 -11
- claude_mpm/services/diagnostics/diagnostic_runner.py +22 -13
- claude_mpm/services/diagnostics/doctor_reporter.py +275 -47
- claude_mpm/services/diagnostics/models.py +37 -21
- claude_mpm/services/event_aggregator.py +5 -3
- claude_mpm/services/event_bus/direct_relay.py +152 -13
- claude_mpm/services/event_bus/event_bus.py +51 -9
- claude_mpm/services/event_bus/relay.py +33 -14
- claude_mpm/services/events/consumers/dead_letter.py +7 -5
- claude_mpm/services/events/core.py +5 -6
- claude_mpm/services/events/producers/hook.py +6 -6
- claude_mpm/services/events/producers/system.py +8 -8
- claude_mpm/services/exceptions.py +5 -5
- claude_mpm/services/framework_claude_md_generator/__init__.py +1 -1
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +5 -5
- claude_mpm/services/framework_claude_md_generator/content_validator.py +2 -2
- claude_mpm/services/framework_claude_md_generator/deployment_manager.py +3 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +2 -2
- claude_mpm/services/framework_claude_md_generator/version_manager.py +1 -1
- claude_mpm/services/hook_installer_service.py +506 -0
- claude_mpm/services/hook_service.py +5 -6
- claude_mpm/services/infrastructure/context_preservation.py +13 -11
- claude_mpm/services/infrastructure/daemon_manager.py +9 -9
- claude_mpm/services/infrastructure/logging.py +2 -2
- claude_mpm/services/infrastructure/monitoring/__init__.py +12 -12
- claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
- claude_mpm/services/infrastructure/monitoring/base.py +5 -13
- claude_mpm/services/infrastructure/monitoring/network.py +7 -6
- claude_mpm/services/infrastructure/monitoring/process.py +13 -12
- claude_mpm/services/infrastructure/monitoring/resources.py +8 -7
- claude_mpm/services/infrastructure/monitoring/service.py +16 -15
- claude_mpm/services/infrastructure/monitoring.py +12 -12
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/local_ops/__init__.py +165 -0
- claude_mpm/services/local_ops/crash_detector.py +257 -0
- claude_mpm/services/local_ops/health_checks/__init__.py +28 -0
- claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
- claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
- claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
- claude_mpm/services/local_ops/health_manager.py +430 -0
- claude_mpm/services/local_ops/log_monitor.py +396 -0
- claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
- claude_mpm/services/local_ops/process_manager.py +595 -0
- claude_mpm/services/local_ops/resource_monitor.py +331 -0
- claude_mpm/services/local_ops/restart_manager.py +401 -0
- claude_mpm/services/local_ops/restart_policy.py +387 -0
- claude_mpm/services/local_ops/state_manager.py +372 -0
- claude_mpm/services/local_ops/unified_manager.py +600 -0
- claude_mpm/services/mcp_config_manager.py +1612 -0
- claude_mpm/services/mcp_gateway/__init__.py +97 -93
- claude_mpm/services/mcp_gateway/auto_configure.py +43 -38
- claude_mpm/services/mcp_gateway/config/config_loader.py +3 -3
- claude_mpm/services/mcp_gateway/config/configuration.py +23 -4
- claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
- claude_mpm/services/mcp_gateway/core/base.py +20 -33
- claude_mpm/services/mcp_gateway/core/process_pool.py +585 -31
- claude_mpm/services/mcp_gateway/core/singleton_manager.py +2 -2
- claude_mpm/services/mcp_gateway/core/startup_verification.py +3 -3
- claude_mpm/services/mcp_gateway/main.py +90 -15
- claude_mpm/services/mcp_gateway/registry/service_registry.py +4 -2
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +12 -9
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +4 -4
- claude_mpm/services/mcp_gateway/server/stdio_server.py +9 -15
- claude_mpm/services/mcp_gateway/tools/__init__.py +14 -2
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +15 -15
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +10 -9
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +654 -0
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +36 -34
- claude_mpm/services/mcp_gateway/tools/hello_world.py +8 -8
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +551 -0
- claude_mpm/services/mcp_gateway/utils/__init__.py +14 -0
- claude_mpm/services/mcp_gateway/utils/package_version_checker.py +160 -0
- claude_mpm/services/mcp_gateway/utils/update_preferences.py +170 -0
- claude_mpm/services/mcp_service_verifier.py +729 -0
- claude_mpm/services/memory/builder.py +9 -8
- claude_mpm/services/memory/cache/shared_prompt_cache.py +2 -1
- claude_mpm/services/memory/cache/simple_cache.py +2 -2
- claude_mpm/services/memory/failure_tracker.py +578 -0
- claude_mpm/services/memory/indexed_memory.py +8 -8
- claude_mpm/services/memory/optimizer.py +8 -9
- claude_mpm/services/memory/router.py +3 -3
- claude_mpm/services/memory_hook_service.py +165 -4
- claude_mpm/services/model/__init__.py +147 -0
- claude_mpm/services/model/base_provider.py +365 -0
- claude_mpm/services/model/claude_provider.py +412 -0
- claude_mpm/services/model/model_router.py +453 -0
- claude_mpm/services/model/ollama_provider.py +415 -0
- claude_mpm/services/monitor/__init__.py +20 -0
- claude_mpm/services/monitor/daemon.py +671 -0
- claude_mpm/services/monitor/daemon_manager.py +963 -0
- claude_mpm/services/monitor/event_emitter.py +350 -0
- claude_mpm/services/monitor/handlers/__init__.py +21 -0
- claude_mpm/services/monitor/handlers/code_analysis.py +332 -0
- claude_mpm/services/monitor/handlers/dashboard.py +299 -0
- claude_mpm/services/monitor/handlers/file.py +264 -0
- claude_mpm/services/monitor/handlers/hooks.py +512 -0
- claude_mpm/services/monitor/management/__init__.py +18 -0
- claude_mpm/services/monitor/management/health.py +124 -0
- claude_mpm/services/monitor/management/lifecycle.py +724 -0
- claude_mpm/services/monitor/server.py +817 -0
- claude_mpm/services/monitor_build_service.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/orphan_detection.py +786 -0
- claude_mpm/services/port_manager.py +2 -2
- claude_mpm/services/project/__init__.py +23 -0
- claude_mpm/services/project/analyzer.py +3 -3
- claude_mpm/services/project/architecture_analyzer.py +6 -6
- claude_mpm/services/project/archive_manager.py +1045 -0
- claude_mpm/services/project/dependency_analyzer.py +8 -8
- claude_mpm/services/project/detection_strategies.py +719 -0
- claude_mpm/services/project/documentation_manager.py +553 -0
- claude_mpm/services/project/enhanced_analyzer.py +572 -0
- claude_mpm/services/project/language_analyzer.py +3 -3
- claude_mpm/services/project/metrics_collector.py +7 -10
- claude_mpm/services/project/project_organizer.py +1005 -0
- claude_mpm/services/project/registry.py +13 -7
- claude_mpm/services/project/toolchain_analyzer.py +581 -0
- claude_mpm/services/project_port_allocator.py +596 -0
- claude_mpm/services/response_tracker.py +21 -10
- claude_mpm/services/runner_configuration_service.py +1 -0
- claude_mpm/services/self_upgrade_service.py +500 -0
- claude_mpm/services/session_management_service.py +7 -5
- claude_mpm/services/session_manager.py +380 -0
- claude_mpm/services/shared/__init__.py +2 -1
- claude_mpm/services/shared/async_service_base.py +16 -27
- claude_mpm/services/shared/config_service_base.py +17 -14
- claude_mpm/services/shared/lifecycle_service_base.py +1 -14
- claude_mpm/services/shared/service_factory.py +8 -5
- claude_mpm/services/socketio/client_proxy.py +60 -5
- claude_mpm/services/socketio/dashboard_server.py +361 -0
- claude_mpm/services/socketio/event_normalizer.py +74 -6
- claude_mpm/services/socketio/handlers/__init__.py +5 -0
- claude_mpm/services/socketio/handlers/base.py +2 -2
- claude_mpm/services/socketio/handlers/code_analysis.py +682 -0
- claude_mpm/services/socketio/handlers/connection.py +21 -40
- claude_mpm/services/socketio/handlers/connection_handler.py +16 -28
- claude_mpm/services/socketio/handlers/file.py +46 -10
- claude_mpm/services/socketio/handlers/git.py +8 -8
- claude_mpm/services/socketio/handlers/hook.py +29 -17
- claude_mpm/services/socketio/handlers/registry.py +4 -0
- claude_mpm/services/socketio/monitor_client.py +364 -0
- claude_mpm/services/socketio/server/broadcaster.py +9 -7
- claude_mpm/services/socketio/server/connection_manager.py +131 -68
- claude_mpm/services/socketio/server/core.py +275 -22
- claude_mpm/services/socketio/server/eventbus_integration.py +20 -14
- claude_mpm/services/socketio/server/main.py +99 -29
- claude_mpm/services/socketio_client_manager.py +4 -4
- claude_mpm/services/subprocess_launcher_service.py +19 -15
- claude_mpm/services/system_instructions_service.py +2 -2
- claude_mpm/services/ticket_services/formatter_service.py +1 -1
- claude_mpm/services/ticket_services/validation_service.py +5 -5
- claude_mpm/services/unified/__init__.py +65 -0
- claude_mpm/services/unified/analyzer_strategies/__init__.py +44 -0
- claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +518 -0
- claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +680 -0
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +903 -0
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +746 -0
- claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +733 -0
- claude_mpm/services/unified/config_strategies/__init__.py +175 -0
- claude_mpm/services/unified/config_strategies/config_schema.py +731 -0
- claude_mpm/services/unified/config_strategies/context_strategy.py +747 -0
- claude_mpm/services/unified/config_strategies/error_handling_strategy.py +1005 -0
- claude_mpm/services/unified/config_strategies/file_loader_strategy.py +881 -0
- claude_mpm/services/unified/config_strategies/unified_config_service.py +823 -0
- claude_mpm/services/unified/config_strategies/validation_strategy.py +1148 -0
- claude_mpm/services/unified/deployment_strategies/__init__.py +97 -0
- claude_mpm/services/unified/deployment_strategies/base.py +553 -0
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +573 -0
- claude_mpm/services/unified/deployment_strategies/local.py +607 -0
- claude_mpm/services/unified/deployment_strategies/utils.py +667 -0
- claude_mpm/services/unified/deployment_strategies/vercel.py +475 -0
- claude_mpm/services/unified/interfaces.py +475 -0
- claude_mpm/services/unified/migration.py +509 -0
- claude_mpm/services/unified/strategies.py +534 -0
- claude_mpm/services/unified/unified_analyzer.py +542 -0
- claude_mpm/services/unified/unified_config.py +691 -0
- claude_mpm/services/unified/unified_deployment.py +470 -0
- claude_mpm/services/utility_service.py +6 -3
- claude_mpm/services/version_control/branch_strategy.py +2 -2
- claude_mpm/services/version_control/conflict_resolution.py +8 -4
- claude_mpm/services/version_control/git_operations.py +26 -24
- claude_mpm/services/version_control/semantic_versioning.py +14 -14
- claude_mpm/services/version_control/version_parser.py +14 -11
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/services/visualization/__init__.py +19 -0
- claude_mpm/services/visualization/mermaid_generator.py +938 -0
- claude_mpm/skills/__init__.py +42 -0
- claude_mpm/skills/agent_skills_injector.py +324 -0
- claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
- claude_mpm/skills/bundled/__init__.py +6 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +157 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +303 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +573 -0
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +286 -0
- claude_mpm/skills/skill_manager.py +310 -0
- claude_mpm/skills/skills_registry.py +348 -0
- claude_mpm/skills/skills_service.py +739 -0
- claude_mpm/storage/state_storage.py +31 -31
- claude_mpm/tools/__init__.py +10 -0
- claude_mpm/tools/__main__.py +208 -0
- 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/tools/code_tree_builder.py +631 -0
- claude_mpm/tools/code_tree_events.py +420 -0
- claude_mpm/tools/socketio_debug.py +671 -0
- claude_mpm/utils/agent_dependency_loader.py +108 -27
- claude_mpm/utils/common.py +544 -0
- claude_mpm/utils/config_manager.py +12 -6
- claude_mpm/utils/database_connector.py +298 -0
- claude_mpm/utils/dependency_cache.py +2 -2
- claude_mpm/utils/dependency_strategies.py +15 -10
- claude_mpm/utils/display_helper.py +260 -0
- claude_mpm/utils/environment_context.py +4 -3
- claude_mpm/utils/error_handler.py +5 -3
- claude_mpm/utils/file_utils.py +13 -14
- claude_mpm/utils/git_analyzer.py +407 -0
- claude_mpm/utils/log_cleanup.py +627 -0
- claude_mpm/utils/path_operations.py +7 -4
- claude_mpm/utils/robust_installer.py +133 -24
- claude_mpm/utils/session_logging.py +2 -2
- claude_mpm/utils/subprocess_utils.py +9 -8
- claude_mpm/validation/agent_validator.py +6 -6
- claude_mpm/validation/frontmatter_validator.py +6 -6
- claude_mpm-4.24.0.dist-info/METADATA +675 -0
- claude_mpm-4.24.0.dist-info/RECORD +1018 -0
- {claude_mpm-4.1.6.dist-info → claude_mpm-4.24.0.dist-info}/entry_points.txt +1 -0
- claude_mpm/agents/INSTRUCTIONS.md +0 -237
- claude_mpm/agents/schema/agent_schema.json +0 -314
- claude_mpm/agents/templates/agent-manager.md +0 -304
- claude_mpm/cli/commands/configure_tui.py +0 -1921
- claude_mpm/cli/commands/socketio_monitor.py +0 -233
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1040
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
- claude_mpm/scripts/socketio_daemon_hardened.py +0 -937
- claude_mpm/scripts/socketio_server_manager.py +0 -349
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
- claude_mpm/services/cli/dashboard_launcher.py +0 -424
- claude_mpm/services/cli/socketio_manager.py +0 -498
- claude_mpm/services/diagnostics/checks/claude_desktop_check.py +0 -286
- claude_mpm/services/mcp_gateway/tools/ticket_tools.py +0 -645
- claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +0 -602
- claude_mpm/services/project/analyzer_refactored.py +0 -450
- claude_mpm-4.1.6.dist-info/METADATA +0 -325
- claude_mpm-4.1.6.dist-info/RECORD +0 -550
- {claude_mpm-4.1.6.dist-info → claude_mpm-4.24.0.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.6.dist-info → claude_mpm-4.24.0.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.6.dist-info → claude_mpm-4.24.0.dist-info}/top_level.txt +0 -0
|
@@ -16,7 +16,7 @@ import gzip
|
|
|
16
16
|
import json
|
|
17
17
|
import shutil
|
|
18
18
|
from dataclasses import dataclass, field
|
|
19
|
-
from datetime import datetime
|
|
19
|
+
from datetime import datetime, timezone
|
|
20
20
|
from typing import Any, Dict, List, Optional
|
|
21
21
|
|
|
22
22
|
import ijson # For streaming JSON parsing
|
|
@@ -151,7 +151,7 @@ class ContextPreservationService(BaseService):
|
|
|
151
151
|
return None
|
|
152
152
|
|
|
153
153
|
# Use streaming to find active conversation
|
|
154
|
-
with
|
|
154
|
+
with self.claude_json_path.open("rb") as f:
|
|
155
155
|
parser = ijson.parse(f)
|
|
156
156
|
|
|
157
157
|
active_conv_id = None
|
|
@@ -203,9 +203,11 @@ class ContextPreservationService(BaseService):
|
|
|
203
203
|
await self._create_backup()
|
|
204
204
|
|
|
205
205
|
# Load and filter conversations
|
|
206
|
-
cutoff_time = datetime.now().timestamp() - (
|
|
206
|
+
cutoff_time = datetime.now(timezone.utc).timestamp() - (
|
|
207
|
+
keep_recent_days * 86400
|
|
208
|
+
)
|
|
207
209
|
|
|
208
|
-
with
|
|
210
|
+
with self.claude_json_path.open() as f:
|
|
209
211
|
data = json.load(f)
|
|
210
212
|
|
|
211
213
|
original_count = len(data.get("conversations", []))
|
|
@@ -237,7 +239,7 @@ class ContextPreservationService(BaseService):
|
|
|
237
239
|
|
|
238
240
|
# Write compressed version
|
|
239
241
|
temp_path = self.claude_json_path.with_suffix(".tmp")
|
|
240
|
-
with open(
|
|
242
|
+
with temp_path.open("w") as f:
|
|
241
243
|
json.dump(data, f, separators=(",", ":")) # Compact format
|
|
242
244
|
|
|
243
245
|
# Replace original
|
|
@@ -292,7 +294,7 @@ class ContextPreservationService(BaseService):
|
|
|
292
294
|
try:
|
|
293
295
|
if Path(file_path).exists():
|
|
294
296
|
valid_files.append(file_path)
|
|
295
|
-
except:
|
|
297
|
+
except Exception:
|
|
296
298
|
pass # Invalid path
|
|
297
299
|
|
|
298
300
|
return valid_files
|
|
@@ -314,7 +316,7 @@ class ContextPreservationService(BaseService):
|
|
|
314
316
|
# Use streaming to extract preferences
|
|
315
317
|
preferences = {}
|
|
316
318
|
|
|
317
|
-
with
|
|
319
|
+
with self.claude_json_path.open("rb") as f:
|
|
318
320
|
parser = ijson.parse(f)
|
|
319
321
|
|
|
320
322
|
for prefix, event, value in parser:
|
|
@@ -337,7 +339,7 @@ class ContextPreservationService(BaseService):
|
|
|
337
339
|
) -> ConversationState:
|
|
338
340
|
"""Parse Claude JSON using standard JSON parser."""
|
|
339
341
|
try:
|
|
340
|
-
with
|
|
342
|
+
with self.claude_json_path.open() as f:
|
|
341
343
|
data = json.load(f)
|
|
342
344
|
|
|
343
345
|
return await self._extract_conversation_state(data, extract_full)
|
|
@@ -355,7 +357,7 @@ class ContextPreservationService(BaseService):
|
|
|
355
357
|
preferences = {}
|
|
356
358
|
open_files = []
|
|
357
359
|
|
|
358
|
-
with
|
|
360
|
+
with self.claude_json_path.open("rb") as f:
|
|
359
361
|
parser = ijson.parse(f)
|
|
360
362
|
|
|
361
363
|
conversation_count = 0
|
|
@@ -516,7 +518,7 @@ class ContextPreservationService(BaseService):
|
|
|
516
518
|
async def _create_backup(self) -> Path:
|
|
517
519
|
"""Create backup of Claude configuration."""
|
|
518
520
|
try:
|
|
519
|
-
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
521
|
+
timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
520
522
|
backup_name = f"claude_backup_{timestamp}.json"
|
|
521
523
|
|
|
522
524
|
# Compress if large
|
|
@@ -525,7 +527,7 @@ class ContextPreservationService(BaseService):
|
|
|
525
527
|
backup_name += ".gz"
|
|
526
528
|
backup_path = self.claude_backup_dir / backup_name
|
|
527
529
|
|
|
528
|
-
with
|
|
530
|
+
with self.claude_json_path.open("rb") as f_in:
|
|
529
531
|
with gzip.open(backup_path, "wb") as f_out:
|
|
530
532
|
shutil.copyfileobj(f_in, f_out)
|
|
531
533
|
else:
|
|
@@ -16,7 +16,6 @@ This service handles:
|
|
|
16
16
|
- Status monitoring and health checks
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
|
-
import logging
|
|
20
19
|
import os
|
|
21
20
|
import signal
|
|
22
21
|
import subprocess
|
|
@@ -32,9 +31,10 @@ except ImportError:
|
|
|
32
31
|
import psutil
|
|
33
32
|
|
|
34
33
|
# from claude_mpm.core.base_service import BaseService
|
|
34
|
+
from claude_mpm.core.logging_utils import get_logger
|
|
35
35
|
from claude_mpm.services.socketio.server.main import SocketIOServer
|
|
36
36
|
|
|
37
|
-
logger =
|
|
37
|
+
logger = get_logger(__name__)
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
class SocketIODaemonManager:
|
|
@@ -80,7 +80,7 @@ class SocketIODaemonManager:
|
|
|
80
80
|
return False
|
|
81
81
|
|
|
82
82
|
try:
|
|
83
|
-
with
|
|
83
|
+
with self.pid_file.open() as f:
|
|
84
84
|
pid = int(f.read().strip())
|
|
85
85
|
|
|
86
86
|
# Check if process exists and is running
|
|
@@ -107,7 +107,7 @@ class SocketIODaemonManager:
|
|
|
107
107
|
)
|
|
108
108
|
if response.status_code == 200:
|
|
109
109
|
return response.json()
|
|
110
|
-
except:
|
|
110
|
+
except Exception:
|
|
111
111
|
pass
|
|
112
112
|
return None
|
|
113
113
|
|
|
@@ -135,7 +135,7 @@ class SocketIODaemonManager:
|
|
|
135
135
|
pid = os.fork()
|
|
136
136
|
if pid > 0:
|
|
137
137
|
# Parent process - save PID and exit
|
|
138
|
-
with
|
|
138
|
+
with self.pid_file.open("w") as f:
|
|
139
139
|
f.write(str(pid))
|
|
140
140
|
logger.info(f"Socket.IO server started as daemon (PID: {pid})")
|
|
141
141
|
return True
|
|
@@ -155,7 +155,7 @@ class SocketIODaemonManager:
|
|
|
155
155
|
os.umask(0)
|
|
156
156
|
|
|
157
157
|
# Redirect stdout/stderr to log file
|
|
158
|
-
with
|
|
158
|
+
with self.log_file.open("a") as log:
|
|
159
159
|
os.dup2(log.fileno(), sys.stdout.fileno())
|
|
160
160
|
os.dup2(log.fileno(), sys.stderr.fileno())
|
|
161
161
|
|
|
@@ -199,7 +199,7 @@ class SocketIODaemonManager:
|
|
|
199
199
|
return False
|
|
200
200
|
|
|
201
201
|
try:
|
|
202
|
-
with
|
|
202
|
+
with self.pid_file.open() as f:
|
|
203
203
|
pid = int(f.read().strip())
|
|
204
204
|
|
|
205
205
|
logger.info(f"Stopping Socket.IO server (PID: {pid})")
|
|
@@ -254,7 +254,7 @@ class SocketIODaemonManager:
|
|
|
254
254
|
}
|
|
255
255
|
|
|
256
256
|
if status_info["running"]:
|
|
257
|
-
with
|
|
257
|
+
with self.pid_file.open() as f:
|
|
258
258
|
status_info["pid"] = int(f.read().strip())
|
|
259
259
|
|
|
260
260
|
# Check port accessibility
|
|
@@ -265,7 +265,7 @@ class SocketIODaemonManager:
|
|
|
265
265
|
result = sock.connect_ex((self.host, self.port))
|
|
266
266
|
sock.close()
|
|
267
267
|
status_info["port_accessible"] = result == 0
|
|
268
|
-
except:
|
|
268
|
+
except Exception:
|
|
269
269
|
status_info["port_accessible"] = False
|
|
270
270
|
|
|
271
271
|
# Check for conflicts
|
|
@@ -11,7 +11,7 @@ Part of TSK-0046: Service Layer Architecture Reorganization
|
|
|
11
11
|
|
|
12
12
|
import json
|
|
13
13
|
import logging
|
|
14
|
-
from datetime import datetime
|
|
14
|
+
from datetime import datetime, timezone
|
|
15
15
|
from typing import Any, Dict, List, Optional
|
|
16
16
|
|
|
17
17
|
from claude_mpm.core.logger import get_logger
|
|
@@ -92,7 +92,7 @@ class LoggingService(SyncBaseService, IStructuredLogger):
|
|
|
92
92
|
|
|
93
93
|
if self.structured_logging:
|
|
94
94
|
log_entry = {
|
|
95
|
-
"timestamp": datetime.
|
|
95
|
+
"timestamp": datetime.now(timezone.utc).isoformat(),
|
|
96
96
|
"level": level,
|
|
97
97
|
"message": message,
|
|
98
98
|
"context": context,
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
Exports main monitoring components for backward compatibility.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
from ....core.enums import HealthStatus
|
|
6
7
|
from .aggregator import MonitoringAggregatorService
|
|
7
8
|
from .base import (
|
|
8
9
|
HealthChecker,
|
|
9
10
|
HealthCheckResult,
|
|
10
11
|
HealthMetric,
|
|
11
|
-
HealthStatus,
|
|
12
12
|
)
|
|
13
13
|
|
|
14
14
|
# Legacy exports for backward compatibility
|
|
@@ -24,20 +24,20 @@ from .resources import ResourceMonitorService
|
|
|
24
24
|
from .service import ServiceHealthService
|
|
25
25
|
|
|
26
26
|
__all__ = [
|
|
27
|
-
|
|
28
|
-
"ResourceMonitorService",
|
|
29
|
-
"ProcessHealthService",
|
|
30
|
-
"ServiceHealthService",
|
|
31
|
-
"NetworkHealthService",
|
|
32
|
-
"MonitoringAggregatorService",
|
|
33
|
-
# Base components
|
|
34
|
-
"HealthStatus",
|
|
35
|
-
"HealthMetric",
|
|
27
|
+
"AdvancedHealthMonitor",
|
|
36
28
|
"HealthCheckResult",
|
|
37
29
|
"HealthChecker",
|
|
30
|
+
"HealthMetric",
|
|
31
|
+
# Base components
|
|
32
|
+
"HealthStatus",
|
|
33
|
+
"MonitoringAggregatorService",
|
|
34
|
+
"NetworkConnectivityChecker",
|
|
35
|
+
"NetworkHealthService",
|
|
36
|
+
"ProcessHealthService",
|
|
38
37
|
# Legacy compatibility
|
|
39
38
|
"ProcessResourceChecker",
|
|
40
|
-
|
|
39
|
+
# New service-based API
|
|
40
|
+
"ResourceMonitorService",
|
|
41
41
|
"ServiceHealthChecker",
|
|
42
|
-
"
|
|
42
|
+
"ServiceHealthService",
|
|
43
43
|
]
|
|
@@ -9,12 +9,12 @@ import time
|
|
|
9
9
|
from collections import deque
|
|
10
10
|
from typing import Any, Callable, Dict, List, Optional
|
|
11
11
|
|
|
12
|
+
from ....core.enums import HealthStatus
|
|
12
13
|
from .base import (
|
|
13
14
|
BaseMonitoringService,
|
|
14
15
|
HealthChecker,
|
|
15
16
|
HealthCheckResult,
|
|
16
17
|
HealthMetric,
|
|
17
|
-
HealthStatus,
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
|
|
@@ -212,14 +212,14 @@ class MonitoringAggregatorService(BaseMonitoringService):
|
|
|
212
212
|
|
|
213
213
|
total_metrics = len(metrics)
|
|
214
214
|
|
|
215
|
-
#
|
|
216
|
-
if status_counts[HealthStatus.
|
|
217
|
-
return HealthStatus.
|
|
215
|
+
# Unhealthy if any unhealthy metrics
|
|
216
|
+
if status_counts[HealthStatus.UNHEALTHY] > 0:
|
|
217
|
+
return HealthStatus.UNHEALTHY
|
|
218
218
|
|
|
219
|
-
#
|
|
220
|
-
|
|
221
|
-
if
|
|
222
|
-
return HealthStatus.
|
|
219
|
+
# Degraded if >30% degraded metrics
|
|
220
|
+
degraded_ratio = status_counts[HealthStatus.DEGRADED] / total_metrics
|
|
221
|
+
if degraded_ratio > 0.3:
|
|
222
|
+
return HealthStatus.DEGRADED
|
|
223
223
|
|
|
224
224
|
# Unknown if >50% unknown metrics
|
|
225
225
|
unknown_ratio = status_counts[HealthStatus.UNKNOWN] / total_metrics
|
|
@@ -375,10 +375,10 @@ class MonitoringAggregatorService(BaseMonitoringService):
|
|
|
375
375
|
checks_count = len(recent_results)
|
|
376
376
|
|
|
377
377
|
# Determine aggregated status
|
|
378
|
-
if status_counts[HealthStatus.
|
|
379
|
-
aggregated_status = HealthStatus.
|
|
380
|
-
elif status_counts[HealthStatus.
|
|
381
|
-
aggregated_status = HealthStatus.
|
|
378
|
+
if status_counts[HealthStatus.UNHEALTHY] > 0:
|
|
379
|
+
aggregated_status = HealthStatus.UNHEALTHY
|
|
380
|
+
elif status_counts[HealthStatus.DEGRADED] > checks_count * 0.3:
|
|
381
|
+
aggregated_status = HealthStatus.DEGRADED
|
|
382
382
|
elif status_counts[HealthStatus.UNKNOWN] > checks_count * 0.5:
|
|
383
383
|
aggregated_status = HealthStatus.UNKNOWN
|
|
384
384
|
else:
|
|
@@ -7,17 +7,9 @@ import time
|
|
|
7
7
|
from abc import ABC, abstractmethod
|
|
8
8
|
from dataclasses import asdict, dataclass
|
|
9
9
|
from datetime import datetime, timezone
|
|
10
|
-
from enum import Enum
|
|
11
10
|
from typing import Any, Dict, List, Optional, Union
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
class HealthStatus(Enum):
|
|
15
|
-
"""Health status levels for monitoring."""
|
|
16
|
-
|
|
17
|
-
HEALTHY = "healthy"
|
|
18
|
-
WARNING = "warning"
|
|
19
|
-
CRITICAL = "critical"
|
|
20
|
-
UNKNOWN = "unknown"
|
|
12
|
+
from ....core.enums import HealthStatus
|
|
21
13
|
|
|
22
14
|
|
|
23
15
|
@dataclass
|
|
@@ -75,11 +67,11 @@ class HealthCheckResult:
|
|
|
75
67
|
"healthy_metrics": len(
|
|
76
68
|
[m for m in self.metrics if m.status == HealthStatus.HEALTHY]
|
|
77
69
|
),
|
|
78
|
-
"
|
|
79
|
-
[m for m in self.metrics if m.status == HealthStatus.
|
|
70
|
+
"degraded_metrics": len(
|
|
71
|
+
[m for m in self.metrics if m.status == HealthStatus.DEGRADED]
|
|
80
72
|
),
|
|
81
|
-
"
|
|
82
|
-
[m for m in self.metrics if m.status == HealthStatus.
|
|
73
|
+
"unhealthy_metrics": len(
|
|
74
|
+
[m for m in self.metrics if m.status == HealthStatus.UNHEALTHY]
|
|
83
75
|
),
|
|
84
76
|
}
|
|
85
77
|
|
|
@@ -6,7 +6,8 @@ Monitors network connectivity, port availability, and socket health.
|
|
|
6
6
|
import socket
|
|
7
7
|
from typing import Dict, List, Optional
|
|
8
8
|
|
|
9
|
-
from .
|
|
9
|
+
from ....core.enums import HealthStatus
|
|
10
|
+
from .base import BaseMonitoringService, HealthMetric
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class NetworkHealthService(BaseMonitoringService):
|
|
@@ -98,7 +99,7 @@ class NetworkHealthService(BaseMonitoringService):
|
|
|
98
99
|
HealthMetric(
|
|
99
100
|
name="socket_creation",
|
|
100
101
|
value=False,
|
|
101
|
-
status=HealthStatus.
|
|
102
|
+
status=HealthStatus.UNHEALTHY,
|
|
102
103
|
message=f"Failed to create socket: {e}",
|
|
103
104
|
)
|
|
104
105
|
)
|
|
@@ -142,11 +143,11 @@ class NetworkHealthService(BaseMonitoringService):
|
|
|
142
143
|
)
|
|
143
144
|
)
|
|
144
145
|
else:
|
|
145
|
-
# Determine if this is
|
|
146
|
+
# Determine if this is unhealthy or degraded based on endpoint type
|
|
146
147
|
status = (
|
|
147
|
-
HealthStatus.
|
|
148
|
+
HealthStatus.DEGRADED
|
|
148
149
|
if "optional" in name.lower()
|
|
149
|
-
else HealthStatus.
|
|
150
|
+
else HealthStatus.UNHEALTHY
|
|
150
151
|
)
|
|
151
152
|
metrics.append(
|
|
152
153
|
HealthMetric(
|
|
@@ -161,7 +162,7 @@ class NetworkHealthService(BaseMonitoringService):
|
|
|
161
162
|
HealthMetric(
|
|
162
163
|
name=metric_name,
|
|
163
164
|
value=False,
|
|
164
|
-
status=HealthStatus.
|
|
165
|
+
status=HealthStatus.DEGRADED,
|
|
165
166
|
message=f"Connection to {host}:{port} timed out after {timeout}s",
|
|
166
167
|
)
|
|
167
168
|
)
|
|
@@ -6,8 +6,9 @@ Monitors individual process health including CPU, memory, file descriptors, and
|
|
|
6
6
|
from typing import List
|
|
7
7
|
|
|
8
8
|
from claude_mpm.core.constants import ResourceLimits, TimeoutConfig
|
|
9
|
+
from claude_mpm.core.enums import HealthStatus
|
|
9
10
|
|
|
10
|
-
from .base import BaseMonitoringService, HealthMetric
|
|
11
|
+
from .base import BaseMonitoringService, HealthMetric
|
|
11
12
|
|
|
12
13
|
try:
|
|
13
14
|
import psutil
|
|
@@ -66,7 +67,7 @@ class ProcessHealthService(BaseMonitoringService):
|
|
|
66
67
|
HealthMetric(
|
|
67
68
|
name="psutil_availability",
|
|
68
69
|
value=False,
|
|
69
|
-
status=HealthStatus.
|
|
70
|
+
status=HealthStatus.DEGRADED,
|
|
70
71
|
message="psutil not available for process monitoring",
|
|
71
72
|
)
|
|
72
73
|
)
|
|
@@ -77,7 +78,7 @@ class ProcessHealthService(BaseMonitoringService):
|
|
|
77
78
|
HealthMetric(
|
|
78
79
|
name="process_exists",
|
|
79
80
|
value=False,
|
|
80
|
-
status=HealthStatus.
|
|
81
|
+
status=HealthStatus.UNHEALTHY,
|
|
81
82
|
message=f"Process {self.pid} not found",
|
|
82
83
|
)
|
|
83
84
|
)
|
|
@@ -90,7 +91,7 @@ class ProcessHealthService(BaseMonitoringService):
|
|
|
90
91
|
HealthMetric(
|
|
91
92
|
name="process_exists",
|
|
92
93
|
value=False,
|
|
93
|
-
status=HealthStatus.
|
|
94
|
+
status=HealthStatus.UNHEALTHY,
|
|
94
95
|
message=f"Process {self.pid} is no longer running",
|
|
95
96
|
)
|
|
96
97
|
)
|
|
@@ -119,7 +120,7 @@ class ProcessHealthService(BaseMonitoringService):
|
|
|
119
120
|
HealthMetric(
|
|
120
121
|
name="process_exists",
|
|
121
122
|
value=False,
|
|
122
|
-
status=HealthStatus.
|
|
123
|
+
status=HealthStatus.UNHEALTHY,
|
|
123
124
|
message=f"Process {self.pid} no longer exists",
|
|
124
125
|
)
|
|
125
126
|
)
|
|
@@ -153,7 +154,7 @@ class ProcessHealthService(BaseMonitoringService):
|
|
|
153
154
|
status=(
|
|
154
155
|
HealthStatus.HEALTHY
|
|
155
156
|
if process_healthy
|
|
156
|
-
else HealthStatus.
|
|
157
|
+
else HealthStatus.UNHEALTHY
|
|
157
158
|
),
|
|
158
159
|
message=f"Process status: {status}",
|
|
159
160
|
)
|
|
@@ -179,9 +180,9 @@ class ProcessHealthService(BaseMonitoringService):
|
|
|
179
180
|
cpu_status = HealthStatus.HEALTHY
|
|
180
181
|
if cpu_percent > self.cpu_threshold:
|
|
181
182
|
cpu_status = (
|
|
182
|
-
HealthStatus.
|
|
183
|
+
HealthStatus.DEGRADED
|
|
183
184
|
if cpu_percent < self.cpu_threshold * 1.2
|
|
184
|
-
else HealthStatus.
|
|
185
|
+
else HealthStatus.UNHEALTHY
|
|
185
186
|
)
|
|
186
187
|
|
|
187
188
|
metrics.append(
|
|
@@ -213,9 +214,9 @@ class ProcessHealthService(BaseMonitoringService):
|
|
|
213
214
|
memory_status = HealthStatus.HEALTHY
|
|
214
215
|
if memory_mb > self.memory_threshold_mb:
|
|
215
216
|
memory_status = (
|
|
216
|
-
HealthStatus.
|
|
217
|
+
HealthStatus.DEGRADED
|
|
217
218
|
if memory_mb < self.memory_threshold_mb * 1.2
|
|
218
|
-
else HealthStatus.
|
|
219
|
+
else HealthStatus.UNHEALTHY
|
|
219
220
|
)
|
|
220
221
|
|
|
221
222
|
metrics.append(
|
|
@@ -256,9 +257,9 @@ class ProcessHealthService(BaseMonitoringService):
|
|
|
256
257
|
fd_status = HealthStatus.HEALTHY
|
|
257
258
|
if fd_count > self.fd_threshold:
|
|
258
259
|
fd_status = (
|
|
259
|
-
HealthStatus.
|
|
260
|
+
HealthStatus.DEGRADED
|
|
260
261
|
if fd_count < self.fd_threshold * 1.2
|
|
261
|
-
else HealthStatus.
|
|
262
|
+
else HealthStatus.UNHEALTHY
|
|
262
263
|
)
|
|
263
264
|
|
|
264
265
|
metrics.append(
|
|
@@ -5,7 +5,8 @@ Monitors system-wide resource usage including CPU, memory, and disk utilization.
|
|
|
5
5
|
|
|
6
6
|
from typing import Dict, List, Optional
|
|
7
7
|
|
|
8
|
-
from .
|
|
8
|
+
from ....core.enums import HealthStatus
|
|
9
|
+
from .base import BaseMonitoringService, HealthMetric
|
|
9
10
|
|
|
10
11
|
try:
|
|
11
12
|
import psutil
|
|
@@ -53,7 +54,7 @@ class ResourceMonitorService(BaseMonitoringService):
|
|
|
53
54
|
HealthMetric(
|
|
54
55
|
name="psutil_availability",
|
|
55
56
|
value=False,
|
|
56
|
-
status=HealthStatus.
|
|
57
|
+
status=HealthStatus.DEGRADED,
|
|
57
58
|
message="psutil not available for resource monitoring",
|
|
58
59
|
)
|
|
59
60
|
)
|
|
@@ -176,15 +177,15 @@ class ResourceMonitorService(BaseMonitoringService):
|
|
|
176
177
|
# Load average (Unix only)
|
|
177
178
|
try:
|
|
178
179
|
if hasattr(psutil, "getloadavg"):
|
|
179
|
-
load1, load5,
|
|
180
|
+
load1, load5, _load15 = psutil.getloadavg()
|
|
180
181
|
cpu_count = psutil.cpu_count()
|
|
181
182
|
|
|
182
183
|
# Load is concerning if > cpu_count
|
|
183
184
|
load_status = HealthStatus.HEALTHY
|
|
184
185
|
if load1 > cpu_count:
|
|
185
|
-
load_status = HealthStatus.
|
|
186
|
+
load_status = HealthStatus.DEGRADED
|
|
186
187
|
if load1 > cpu_count * 1.5:
|
|
187
|
-
load_status = HealthStatus.
|
|
188
|
+
load_status = HealthStatus.UNHEALTHY
|
|
188
189
|
|
|
189
190
|
metrics.append(
|
|
190
191
|
HealthMetric(
|
|
@@ -220,8 +221,8 @@ class ResourceMonitorService(BaseMonitoringService):
|
|
|
220
221
|
if value < threshold:
|
|
221
222
|
return HealthStatus.HEALTHY
|
|
222
223
|
if value < threshold * 1.1: # 10% above threshold
|
|
223
|
-
return HealthStatus.
|
|
224
|
-
return HealthStatus.
|
|
224
|
+
return HealthStatus.DEGRADED
|
|
225
|
+
return HealthStatus.UNHEALTHY
|
|
225
226
|
|
|
226
227
|
def get_resource_summary(self) -> Optional[Dict[str, float]]:
|
|
227
228
|
"""Get quick resource summary without full health check.
|
|
@@ -6,7 +6,8 @@ Monitors service-specific metrics like client connections, event processing, and
|
|
|
6
6
|
import time
|
|
7
7
|
from typing import Any, Dict, List
|
|
8
8
|
|
|
9
|
-
from .
|
|
9
|
+
from ....core.enums import HealthStatus
|
|
10
|
+
from .base import BaseMonitoringService, HealthMetric
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class ServiceHealthService(BaseMonitoringService):
|
|
@@ -79,9 +80,9 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
79
80
|
|
|
80
81
|
# Determine status based on thresholds
|
|
81
82
|
if client_count > self.max_clients:
|
|
82
|
-
client_status = HealthStatus.
|
|
83
|
+
client_status = HealthStatus.UNHEALTHY
|
|
83
84
|
elif client_count > self.max_clients * 0.8:
|
|
84
|
-
client_status = HealthStatus.
|
|
85
|
+
client_status = HealthStatus.DEGRADED
|
|
85
86
|
else:
|
|
86
87
|
client_status = HealthStatus.HEALTHY
|
|
87
88
|
|
|
@@ -129,7 +130,7 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
129
130
|
# Determine status based on rate
|
|
130
131
|
rate_status = HealthStatus.HEALTHY
|
|
131
132
|
if event_rate == 0 and events_processed > 0:
|
|
132
|
-
rate_status = HealthStatus.
|
|
133
|
+
rate_status = HealthStatus.DEGRADED # Processing stopped
|
|
133
134
|
|
|
134
135
|
metrics.append(
|
|
135
136
|
HealthMetric(
|
|
@@ -157,9 +158,9 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
157
158
|
queue_size = self.service_stats["event_queue_size"]
|
|
158
159
|
queue_status = HealthStatus.HEALTHY
|
|
159
160
|
if queue_size > 1000:
|
|
160
|
-
queue_status = HealthStatus.
|
|
161
|
+
queue_status = HealthStatus.DEGRADED
|
|
161
162
|
if queue_size > 5000:
|
|
162
|
-
queue_status = HealthStatus.
|
|
163
|
+
queue_status = HealthStatus.UNHEALTHY
|
|
163
164
|
|
|
164
165
|
metrics.append(
|
|
165
166
|
HealthMetric(
|
|
@@ -191,9 +192,9 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
191
192
|
|
|
192
193
|
# Determine status based on rate
|
|
193
194
|
if error_rate > self.max_error_rate:
|
|
194
|
-
error_status = HealthStatus.
|
|
195
|
+
error_status = HealthStatus.UNHEALTHY
|
|
195
196
|
elif error_rate > self.max_error_rate * 0.5:
|
|
196
|
-
error_status = HealthStatus.
|
|
197
|
+
error_status = HealthStatus.DEGRADED
|
|
197
198
|
else:
|
|
198
199
|
error_status = HealthStatus.HEALTHY
|
|
199
200
|
|
|
@@ -213,7 +214,7 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
213
214
|
name="total_errors",
|
|
214
215
|
value=errors,
|
|
215
216
|
status=(
|
|
216
|
-
HealthStatus.HEALTHY if errors == 0 else HealthStatus.
|
|
217
|
+
HealthStatus.HEALTHY if errors == 0 else HealthStatus.DEGRADED
|
|
217
218
|
),
|
|
218
219
|
)
|
|
219
220
|
)
|
|
@@ -228,7 +229,7 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
228
229
|
status=(
|
|
229
230
|
HealthStatus.HEALTHY
|
|
230
231
|
if recent_errors == 0
|
|
231
|
-
else HealthStatus.
|
|
232
|
+
else HealthStatus.DEGRADED
|
|
232
233
|
),
|
|
233
234
|
)
|
|
234
235
|
)
|
|
@@ -263,9 +264,9 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
263
264
|
|
|
264
265
|
# Determine status based on staleness
|
|
265
266
|
if time_since_activity > self.stale_activity_seconds * 2:
|
|
266
|
-
activity_status = HealthStatus.
|
|
267
|
+
activity_status = HealthStatus.UNHEALTHY
|
|
267
268
|
elif time_since_activity > self.stale_activity_seconds:
|
|
268
|
-
activity_status = HealthStatus.
|
|
269
|
+
activity_status = HealthStatus.DEGRADED
|
|
269
270
|
else:
|
|
270
271
|
activity_status = HealthStatus.HEALTHY
|
|
271
272
|
|
|
@@ -282,7 +283,7 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
282
283
|
HealthMetric(
|
|
283
284
|
name="time_since_last_activity",
|
|
284
285
|
value=-1,
|
|
285
|
-
status=HealthStatus.
|
|
286
|
+
status=HealthStatus.DEGRADED,
|
|
286
287
|
message="No last activity recorded",
|
|
287
288
|
)
|
|
288
289
|
)
|
|
@@ -307,9 +308,9 @@ class ServiceHealthService(BaseMonitoringService):
|
|
|
307
308
|
|
|
308
309
|
# Determine status based on response time
|
|
309
310
|
if avg_time > 1000: # > 1 second
|
|
310
|
-
time_status = HealthStatus.
|
|
311
|
+
time_status = HealthStatus.UNHEALTHY
|
|
311
312
|
elif avg_time > 500: # > 500ms
|
|
312
|
-
time_status = HealthStatus.
|
|
313
|
+
time_status = HealthStatus.DEGRADED
|
|
313
314
|
else:
|
|
314
315
|
time_status = HealthStatus.HEALTHY
|
|
315
316
|
|
|
@@ -30,7 +30,7 @@ For backward compatibility, legacy classes are still available:
|
|
|
30
30
|
"""
|
|
31
31
|
|
|
32
32
|
# Re-export all components from the modular implementation
|
|
33
|
-
from .monitoring import (
|
|
33
|
+
from .monitoring import (
|
|
34
34
|
AdvancedHealthMonitor,
|
|
35
35
|
HealthChecker,
|
|
36
36
|
HealthCheckResult,
|
|
@@ -47,22 +47,22 @@ from .monitoring import ( # noqa: F401; New service-based API; Base components;
|
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
__all__ = [
|
|
50
|
-
|
|
51
|
-
"ResourceMonitorService",
|
|
52
|
-
"ProcessHealthService",
|
|
53
|
-
"ServiceHealthService",
|
|
54
|
-
"NetworkHealthService",
|
|
55
|
-
"MonitoringAggregatorService",
|
|
56
|
-
# Base components
|
|
57
|
-
"HealthStatus",
|
|
58
|
-
"HealthMetric",
|
|
50
|
+
"AdvancedHealthMonitor",
|
|
59
51
|
"HealthCheckResult",
|
|
60
52
|
"HealthChecker",
|
|
53
|
+
"HealthMetric",
|
|
54
|
+
# Base components
|
|
55
|
+
"HealthStatus",
|
|
56
|
+
"MonitoringAggregatorService",
|
|
57
|
+
"NetworkConnectivityChecker",
|
|
58
|
+
"NetworkHealthService",
|
|
59
|
+
"ProcessHealthService",
|
|
61
60
|
# Legacy compatibility
|
|
62
61
|
"ProcessResourceChecker",
|
|
63
|
-
|
|
62
|
+
# New service-based API
|
|
63
|
+
"ResourceMonitorService",
|
|
64
64
|
"ServiceHealthChecker",
|
|
65
|
-
"
|
|
65
|
+
"ServiceHealthService",
|
|
66
66
|
]
|
|
67
67
|
|
|
68
68
|
# Module metadata
|