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
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Claude MPM - Multi-Agent Project Manager
|
|
2
|
+
|
|
3
|
+
Access Claude MPM functionality and manage your multi-agent orchestration.
|
|
4
|
+
|
|
5
|
+
Available MPM commands:
|
|
6
|
+
- /mpm-agents - Show available agents and versions
|
|
7
|
+
- /mpm-doctor - Run diagnostic checks
|
|
8
|
+
- /mpm-help - Show command help
|
|
9
|
+
- /mpm-status - Show MPM status
|
|
10
|
+
- /mpm-config - Manage configuration
|
|
11
|
+
- /mpm-resume - Create session resume files
|
|
12
|
+
- /mpm-version - Display version information for project, agents, and skills
|
|
13
|
+
|
|
14
|
+
Claude MPM extends Claude Code with:
|
|
15
|
+
- Multi-agent orchestration
|
|
16
|
+
- Project-specific PM instructions
|
|
17
|
+
- Agent memory management
|
|
18
|
+
- WebSocket monitoring
|
|
19
|
+
- Hook system for automation
|
|
20
|
+
|
|
21
|
+
For more information, use /mpm-help [command]
|
|
@@ -14,17 +14,17 @@ This module handles:
|
|
|
14
14
|
UPDATED: Migrated to use shared ConfigLoader pattern (TSK-0141)
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
import logging
|
|
18
17
|
import os
|
|
19
18
|
from dataclasses import dataclass, field
|
|
20
19
|
from enum import Enum
|
|
21
20
|
from pathlib import Path
|
|
22
21
|
from typing import Any, Dict, List, Optional
|
|
23
22
|
|
|
23
|
+
from claude_mpm.core.logging_utils import get_logger
|
|
24
24
|
from claude_mpm.core.shared.config_loader import ConfigLoader, ConfigPattern
|
|
25
25
|
from claude_mpm.core.unified_paths import get_path_manager
|
|
26
26
|
|
|
27
|
-
logger =
|
|
27
|
+
logger = get_logger(__name__)
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class AgentPrecedenceMode(Enum):
|
|
@@ -242,7 +242,7 @@ class AgentConfig:
|
|
|
242
242
|
Path.cwd() / get_path_manager().CONFIG_DIR / "agent_config.yaml"
|
|
243
243
|
)
|
|
244
244
|
if project_config.exists():
|
|
245
|
-
logger.
|
|
245
|
+
logger.debug(f"Loading project agent config from {project_config}")
|
|
246
246
|
file_config = cls.from_file(project_config)
|
|
247
247
|
# Merge with environment config (env takes precedence)
|
|
248
248
|
config = cls._merge_configs(config, file_config)
|
|
@@ -252,7 +252,7 @@ class AgentConfig:
|
|
|
252
252
|
if user_config_dir:
|
|
253
253
|
user_config = user_config_dir / "agent_config.yaml"
|
|
254
254
|
if user_config.exists():
|
|
255
|
-
logger.
|
|
255
|
+
logger.debug(f"Loading user agent config from {user_config}")
|
|
256
256
|
file_config = cls.from_file(user_config)
|
|
257
257
|
config = cls._merge_configs(config, file_config)
|
|
258
258
|
|
|
@@ -12,7 +12,7 @@ gradual rollout of experimental features while maintaining stability in producti
|
|
|
12
12
|
|
|
13
13
|
import json
|
|
14
14
|
import os
|
|
15
|
-
from typing import Dict, Optional
|
|
15
|
+
from typing import ClassVar, Dict, Optional
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class ExperimentalFeatures:
|
|
@@ -26,7 +26,7 @@ class ExperimentalFeatures:
|
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
28
|
# Default feature flags
|
|
29
|
-
DEFAULTS = {
|
|
29
|
+
DEFAULTS: ClassVar[Dict[str, bool]] = {
|
|
30
30
|
"enable_mcp_gateway": False, # MCP Gateway is experimental
|
|
31
31
|
"enable_advanced_aggregation": False, # Advanced aggregation features
|
|
32
32
|
"show_experimental_warnings": True, # Show warnings for experimental features
|
|
@@ -34,7 +34,7 @@ class ExperimentalFeatures:
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
# Warning messages for experimental features
|
|
37
|
-
WARNINGS = {
|
|
37
|
+
WARNINGS: ClassVar[Dict[str, str]] = {
|
|
38
38
|
"mcp_gateway": (
|
|
39
39
|
"⚠️ EXPERIMENTAL FEATURE: MCP Gateway is in early access.\n"
|
|
40
40
|
" Tool integration may be unstable. Not recommended for production use."
|
|
@@ -64,7 +64,7 @@ class ExperimentalFeatures:
|
|
|
64
64
|
"""
|
|
65
65
|
if self._config_file and self._config_file.exists():
|
|
66
66
|
try:
|
|
67
|
-
with
|
|
67
|
+
with self._config_file.open() as f:
|
|
68
68
|
config = json.load(f)
|
|
69
69
|
experimental = config.get("experimental_features", {})
|
|
70
70
|
self._features.update(experimental)
|
|
@@ -125,7 +125,7 @@ class ExperimentalFeatures:
|
|
|
125
125
|
accepted_file = Path.home() / ".claude-mpm" / ".experimental_accepted"
|
|
126
126
|
if accepted_file.exists():
|
|
127
127
|
try:
|
|
128
|
-
with open(
|
|
128
|
+
with accepted_file.open() as f:
|
|
129
129
|
accepted = json.load(f)
|
|
130
130
|
if feature in accepted.get("features", []):
|
|
131
131
|
return False
|
|
@@ -148,7 +148,7 @@ class ExperimentalFeatures:
|
|
|
148
148
|
|
|
149
149
|
try:
|
|
150
150
|
if accepted_file.exists():
|
|
151
|
-
with open(
|
|
151
|
+
with accepted_file.open() as f:
|
|
152
152
|
data = json.load(f)
|
|
153
153
|
else:
|
|
154
154
|
data = {"features": [], "timestamp": {}}
|
|
@@ -159,7 +159,7 @@ class ExperimentalFeatures:
|
|
|
159
159
|
"CLAUDE_MPM_TIMESTAMP", str(Path.cwd())
|
|
160
160
|
)
|
|
161
161
|
|
|
162
|
-
with open(
|
|
162
|
+
with accepted_file.open("w") as f:
|
|
163
163
|
json.dump(data, f, indent=2)
|
|
164
164
|
except Exception:
|
|
165
165
|
# Silently ignore errors in acceptance tracking
|
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Model Configuration Management for Claude MPM Framework
|
|
3
|
+
=======================================================
|
|
4
|
+
|
|
5
|
+
WHY: Centralizes configuration for model providers, routing strategy, and
|
|
6
|
+
model selection. Supports configuration files, environment variables, and
|
|
7
|
+
programmatic configuration.
|
|
8
|
+
|
|
9
|
+
DESIGN DECISION: Uses Pydantic for configuration validation and type safety.
|
|
10
|
+
Supports loading from YAML files and environment variables with sensible defaults.
|
|
11
|
+
|
|
12
|
+
CONFIGURATION STRUCTURE:
|
|
13
|
+
```yaml
|
|
14
|
+
content_agent:
|
|
15
|
+
model_provider: auto # auto|ollama|claude|privacy
|
|
16
|
+
|
|
17
|
+
ollama:
|
|
18
|
+
enabled: true
|
|
19
|
+
host: http://localhost:11434
|
|
20
|
+
fallback_to_cloud: true
|
|
21
|
+
timeout: 30
|
|
22
|
+
models:
|
|
23
|
+
seo_analysis: llama3.3:70b
|
|
24
|
+
readability: gemma2:9b
|
|
25
|
+
grammar: qwen3:14b
|
|
26
|
+
summarization: mistral:7b
|
|
27
|
+
keyword_extraction: seoassistant
|
|
28
|
+
|
|
29
|
+
claude:
|
|
30
|
+
enabled: true
|
|
31
|
+
model: claude-3-5-sonnet-20241022
|
|
32
|
+
max_tokens: 4096
|
|
33
|
+
temperature: 0.7
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
ENVIRONMENT VARIABLES:
|
|
37
|
+
- MODEL_PROVIDER: Override provider strategy
|
|
38
|
+
- OLLAMA_HOST: Override Ollama endpoint
|
|
39
|
+
- OLLAMA_ENABLED: Enable/disable Ollama
|
|
40
|
+
- CLAUDE_ENABLED: Enable/disable Claude
|
|
41
|
+
- ANTHROPIC_API_KEY: Claude API key
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
import os
|
|
45
|
+
from pathlib import Path
|
|
46
|
+
from typing import Any, Dict, Optional
|
|
47
|
+
|
|
48
|
+
from pydantic import BaseModel, Field
|
|
49
|
+
|
|
50
|
+
try:
|
|
51
|
+
import yaml
|
|
52
|
+
except ImportError:
|
|
53
|
+
yaml = None # type: ignore
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class OllamaConfig(BaseModel):
|
|
57
|
+
"""
|
|
58
|
+
Configuration for Ollama provider.
|
|
59
|
+
|
|
60
|
+
WHY: Separates Ollama-specific settings for better organization
|
|
61
|
+
and validation.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
enabled: bool = Field(default=True, description="Enable Ollama provider")
|
|
65
|
+
host: str = Field(
|
|
66
|
+
default="http://localhost:11434",
|
|
67
|
+
description="Ollama API endpoint",
|
|
68
|
+
)
|
|
69
|
+
fallback_to_cloud: bool = Field(
|
|
70
|
+
default=True,
|
|
71
|
+
description="Allow fallback to cloud on Ollama failure",
|
|
72
|
+
)
|
|
73
|
+
timeout: int = Field(default=30, description="Request timeout in seconds")
|
|
74
|
+
models: Dict[str, str] = Field(
|
|
75
|
+
default_factory=dict,
|
|
76
|
+
description="Task-specific model mappings",
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
class Config:
|
|
80
|
+
"""Pydantic config."""
|
|
81
|
+
|
|
82
|
+
extra = "allow"
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class ClaudeConfig(BaseModel):
|
|
86
|
+
"""
|
|
87
|
+
Configuration for Claude provider.
|
|
88
|
+
|
|
89
|
+
WHY: Separates Claude-specific settings for better organization
|
|
90
|
+
and validation.
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
enabled: bool = Field(default=True, description="Enable Claude provider")
|
|
94
|
+
model: str = Field(
|
|
95
|
+
default="claude-3-5-sonnet-20241022",
|
|
96
|
+
description="Default Claude model",
|
|
97
|
+
)
|
|
98
|
+
max_tokens: int = Field(
|
|
99
|
+
default=4096,
|
|
100
|
+
description="Maximum response tokens",
|
|
101
|
+
)
|
|
102
|
+
temperature: float = Field(
|
|
103
|
+
default=0.7,
|
|
104
|
+
description="Sampling temperature (0.0-1.0)",
|
|
105
|
+
)
|
|
106
|
+
api_key: Optional[str] = Field(
|
|
107
|
+
default=None,
|
|
108
|
+
description="Anthropic API key (can use env var)",
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
class Config:
|
|
112
|
+
"""Pydantic config."""
|
|
113
|
+
|
|
114
|
+
extra = "allow"
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
class ModelProviderConfig(BaseModel):
|
|
118
|
+
"""
|
|
119
|
+
Main model provider configuration.
|
|
120
|
+
|
|
121
|
+
WHY: Top-level configuration containing all model-related settings.
|
|
122
|
+
Validates configuration at load time to catch errors early.
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
provider: str = Field(
|
|
126
|
+
default="auto",
|
|
127
|
+
description="Provider strategy: auto|ollama|claude|privacy",
|
|
128
|
+
)
|
|
129
|
+
ollama: OllamaConfig = Field(
|
|
130
|
+
default_factory=OllamaConfig,
|
|
131
|
+
description="Ollama provider configuration",
|
|
132
|
+
)
|
|
133
|
+
claude: ClaudeConfig = Field(
|
|
134
|
+
default_factory=ClaudeConfig,
|
|
135
|
+
description="Claude provider configuration",
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
class Config:
|
|
139
|
+
"""Pydantic config."""
|
|
140
|
+
|
|
141
|
+
extra = "allow"
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class ModelConfigManager:
|
|
145
|
+
"""
|
|
146
|
+
Manager for model configuration.
|
|
147
|
+
|
|
148
|
+
WHY: Provides centralized configuration loading with support for
|
|
149
|
+
multiple sources (files, env vars, defaults) and validation.
|
|
150
|
+
|
|
151
|
+
Usage:
|
|
152
|
+
manager = ModelConfigManager()
|
|
153
|
+
config = manager.load_config()
|
|
154
|
+
|
|
155
|
+
# Get router config
|
|
156
|
+
router_config = manager.get_router_config(config)
|
|
157
|
+
|
|
158
|
+
# Get provider configs
|
|
159
|
+
ollama_config = manager.get_ollama_config(config)
|
|
160
|
+
claude_config = manager.get_claude_config(config)
|
|
161
|
+
"""
|
|
162
|
+
|
|
163
|
+
DEFAULT_CONFIG_PATHS = [
|
|
164
|
+
".claude/configuration.yaml",
|
|
165
|
+
"configuration.yaml",
|
|
166
|
+
".claude-mpm/configuration.yaml",
|
|
167
|
+
str(Path("~/.claude-mpm/configuration.yaml").expanduser()),
|
|
168
|
+
]
|
|
169
|
+
|
|
170
|
+
@staticmethod
|
|
171
|
+
def load_config(
|
|
172
|
+
config_path: Optional[str] = None,
|
|
173
|
+
) -> ModelProviderConfig:
|
|
174
|
+
"""
|
|
175
|
+
Load model configuration from file and environment.
|
|
176
|
+
|
|
177
|
+
WHY: Supports multiple configuration sources with priority:
|
|
178
|
+
1. Explicit config_path parameter
|
|
179
|
+
2. Environment variables
|
|
180
|
+
3. Configuration file
|
|
181
|
+
4. Default values
|
|
182
|
+
|
|
183
|
+
Args:
|
|
184
|
+
config_path: Optional path to configuration file
|
|
185
|
+
|
|
186
|
+
Returns:
|
|
187
|
+
ModelProviderConfig with merged settings
|
|
188
|
+
"""
|
|
189
|
+
config_data: Dict[str, Any] = {}
|
|
190
|
+
|
|
191
|
+
# Try to load from file
|
|
192
|
+
if config_path and Path(config_path).exists():
|
|
193
|
+
config_data = ModelConfigManager._load_yaml_file(config_path)
|
|
194
|
+
else:
|
|
195
|
+
# Try default paths
|
|
196
|
+
for default_path in ModelConfigManager.DEFAULT_CONFIG_PATHS:
|
|
197
|
+
if Path(default_path).exists():
|
|
198
|
+
config_data = ModelConfigManager._load_yaml_file(default_path)
|
|
199
|
+
break
|
|
200
|
+
|
|
201
|
+
# Extract content_agent section if present
|
|
202
|
+
if "content_agent" in config_data:
|
|
203
|
+
config_data = config_data["content_agent"]
|
|
204
|
+
|
|
205
|
+
# Override with environment variables
|
|
206
|
+
config_data = ModelConfigManager._apply_env_overrides(config_data)
|
|
207
|
+
|
|
208
|
+
# Create and validate config
|
|
209
|
+
try:
|
|
210
|
+
return ModelProviderConfig(**config_data)
|
|
211
|
+
except Exception as e:
|
|
212
|
+
# If validation fails, return default config
|
|
213
|
+
print(f"Warning: Failed to load config: {e}. Using defaults.")
|
|
214
|
+
return ModelProviderConfig()
|
|
215
|
+
|
|
216
|
+
@staticmethod
|
|
217
|
+
def _load_yaml_file(path: str) -> Dict[str, Any]:
|
|
218
|
+
"""
|
|
219
|
+
Load YAML configuration file.
|
|
220
|
+
|
|
221
|
+
Args:
|
|
222
|
+
path: Path to YAML file
|
|
223
|
+
|
|
224
|
+
Returns:
|
|
225
|
+
Dictionary of configuration
|
|
226
|
+
"""
|
|
227
|
+
if yaml is None:
|
|
228
|
+
return {}
|
|
229
|
+
|
|
230
|
+
try:
|
|
231
|
+
path_obj = Path(path)
|
|
232
|
+
with path_obj.open() as f:
|
|
233
|
+
data = yaml.safe_load(f)
|
|
234
|
+
return data or {}
|
|
235
|
+
except Exception as e:
|
|
236
|
+
print(f"Warning: Failed to load {path}: {e}")
|
|
237
|
+
return {}
|
|
238
|
+
|
|
239
|
+
@staticmethod
|
|
240
|
+
def _apply_env_overrides(config: Dict[str, Any]) -> Dict[str, Any]:
|
|
241
|
+
"""
|
|
242
|
+
Apply environment variable overrides.
|
|
243
|
+
|
|
244
|
+
WHY: Allows runtime configuration without modifying files.
|
|
245
|
+
Useful for containerized deployments and CI/CD.
|
|
246
|
+
|
|
247
|
+
Args:
|
|
248
|
+
config: Base configuration
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
Configuration with env overrides applied
|
|
252
|
+
"""
|
|
253
|
+
# Provider strategy
|
|
254
|
+
if "MODEL_PROVIDER" in os.environ:
|
|
255
|
+
config["provider"] = os.environ["MODEL_PROVIDER"]
|
|
256
|
+
|
|
257
|
+
# Ollama settings
|
|
258
|
+
if "ollama" not in config:
|
|
259
|
+
config["ollama"] = {}
|
|
260
|
+
|
|
261
|
+
if "OLLAMA_ENABLED" in os.environ:
|
|
262
|
+
config["ollama"]["enabled"] = os.environ["OLLAMA_ENABLED"].lower() == "true"
|
|
263
|
+
|
|
264
|
+
if "OLLAMA_HOST" in os.environ:
|
|
265
|
+
config["ollama"]["host"] = os.environ["OLLAMA_HOST"]
|
|
266
|
+
|
|
267
|
+
if "OLLAMA_TIMEOUT" in os.environ:
|
|
268
|
+
try:
|
|
269
|
+
config["ollama"]["timeout"] = int(os.environ["OLLAMA_TIMEOUT"])
|
|
270
|
+
except ValueError:
|
|
271
|
+
pass
|
|
272
|
+
|
|
273
|
+
if "OLLAMA_FALLBACK_TO_CLOUD" in os.environ:
|
|
274
|
+
config["ollama"]["fallback_to_cloud"] = (
|
|
275
|
+
os.environ["OLLAMA_FALLBACK_TO_CLOUD"].lower() == "true"
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
# Claude settings
|
|
279
|
+
if "claude" not in config:
|
|
280
|
+
config["claude"] = {}
|
|
281
|
+
|
|
282
|
+
if "CLAUDE_ENABLED" in os.environ:
|
|
283
|
+
config["claude"]["enabled"] = os.environ["CLAUDE_ENABLED"].lower() == "true"
|
|
284
|
+
|
|
285
|
+
if "ANTHROPIC_API_KEY" in os.environ:
|
|
286
|
+
config["claude"]["api_key"] = os.environ["ANTHROPIC_API_KEY"]
|
|
287
|
+
|
|
288
|
+
if "CLAUDE_MODEL" in os.environ:
|
|
289
|
+
config["claude"]["model"] = os.environ["CLAUDE_MODEL"]
|
|
290
|
+
|
|
291
|
+
if "CLAUDE_MAX_TOKENS" in os.environ:
|
|
292
|
+
try:
|
|
293
|
+
config["claude"]["max_tokens"] = int(os.environ["CLAUDE_MAX_TOKENS"])
|
|
294
|
+
except ValueError:
|
|
295
|
+
pass
|
|
296
|
+
|
|
297
|
+
if "CLAUDE_TEMPERATURE" in os.environ:
|
|
298
|
+
try:
|
|
299
|
+
config["claude"]["temperature"] = float(
|
|
300
|
+
os.environ["CLAUDE_TEMPERATURE"]
|
|
301
|
+
)
|
|
302
|
+
except ValueError:
|
|
303
|
+
pass
|
|
304
|
+
|
|
305
|
+
return config
|
|
306
|
+
|
|
307
|
+
@staticmethod
|
|
308
|
+
def get_router_config(config: ModelProviderConfig) -> Dict[str, Any]:
|
|
309
|
+
"""
|
|
310
|
+
Get router configuration from model config.
|
|
311
|
+
|
|
312
|
+
Args:
|
|
313
|
+
config: Model provider configuration
|
|
314
|
+
|
|
315
|
+
Returns:
|
|
316
|
+
Dictionary suitable for ModelRouter initialization
|
|
317
|
+
"""
|
|
318
|
+
return {
|
|
319
|
+
"strategy": config.provider,
|
|
320
|
+
"fallback_enabled": config.ollama.fallback_to_cloud,
|
|
321
|
+
"ollama_config": ModelConfigManager.get_ollama_config(config),
|
|
322
|
+
"claude_config": ModelConfigManager.get_claude_config(config),
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
@staticmethod
|
|
326
|
+
def get_ollama_config(config: ModelProviderConfig) -> Dict[str, Any]:
|
|
327
|
+
"""
|
|
328
|
+
Get Ollama provider configuration.
|
|
329
|
+
|
|
330
|
+
Args:
|
|
331
|
+
config: Model provider configuration
|
|
332
|
+
|
|
333
|
+
Returns:
|
|
334
|
+
Dictionary suitable for OllamaProvider initialization
|
|
335
|
+
"""
|
|
336
|
+
return {
|
|
337
|
+
"host": config.ollama.host,
|
|
338
|
+
"timeout": config.ollama.timeout,
|
|
339
|
+
"models": config.ollama.models,
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
@staticmethod
|
|
343
|
+
def get_claude_config(config: ModelProviderConfig) -> Dict[str, Any]:
|
|
344
|
+
"""
|
|
345
|
+
Get Claude provider configuration.
|
|
346
|
+
|
|
347
|
+
Args:
|
|
348
|
+
config: Model provider configuration
|
|
349
|
+
|
|
350
|
+
Returns:
|
|
351
|
+
Dictionary suitable for ClaudeProvider initialization
|
|
352
|
+
"""
|
|
353
|
+
return {
|
|
354
|
+
"api_key": config.claude.api_key,
|
|
355
|
+
"model": config.claude.model,
|
|
356
|
+
"max_tokens": config.claude.max_tokens,
|
|
357
|
+
"temperature": config.claude.temperature,
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
@staticmethod
|
|
361
|
+
def create_sample_config(output_path: str) -> None:
|
|
362
|
+
"""
|
|
363
|
+
Create sample configuration file.
|
|
364
|
+
|
|
365
|
+
WHY: Helps users get started with proper configuration.
|
|
366
|
+
|
|
367
|
+
Args:
|
|
368
|
+
output_path: Path where to write sample config
|
|
369
|
+
"""
|
|
370
|
+
sample_config = """# Claude MPM Model Provider Configuration
|
|
371
|
+
# ==========================================
|
|
372
|
+
|
|
373
|
+
content_agent:
|
|
374
|
+
# Provider strategy: auto|ollama|claude|privacy
|
|
375
|
+
# - auto: Try Ollama first, fallback to Claude
|
|
376
|
+
# - ollama: Local-only, fail if unavailable
|
|
377
|
+
# - claude: Cloud-only, always use Claude
|
|
378
|
+
# - privacy: Like ollama but with privacy-focused error messages
|
|
379
|
+
model_provider: auto
|
|
380
|
+
|
|
381
|
+
# Ollama Configuration (local models)
|
|
382
|
+
ollama:
|
|
383
|
+
enabled: true
|
|
384
|
+
host: http://localhost:11434
|
|
385
|
+
fallback_to_cloud: true # Allow fallback to Claude on error
|
|
386
|
+
timeout: 30 # Request timeout in seconds
|
|
387
|
+
|
|
388
|
+
# Task-specific model mappings (optional)
|
|
389
|
+
# Defaults are provided if not specified
|
|
390
|
+
models:
|
|
391
|
+
seo_analysis: llama3.3:70b
|
|
392
|
+
readability: gemma2:9b
|
|
393
|
+
grammar: qwen3:14b
|
|
394
|
+
summarization: mistral:7b
|
|
395
|
+
keyword_extraction: seoassistant
|
|
396
|
+
accessibility: gemma2:9b
|
|
397
|
+
sentiment: gemma2:9b
|
|
398
|
+
general: gemma2:9b
|
|
399
|
+
|
|
400
|
+
# Claude Configuration (cloud models)
|
|
401
|
+
claude:
|
|
402
|
+
enabled: true
|
|
403
|
+
model: claude-3-5-sonnet-20241022
|
|
404
|
+
max_tokens: 4096
|
|
405
|
+
temperature: 0.7
|
|
406
|
+
# api_key: sk-ant-... # Or use ANTHROPIC_API_KEY env var
|
|
407
|
+
|
|
408
|
+
# Environment Variable Overrides:
|
|
409
|
+
# - MODEL_PROVIDER: Override provider strategy
|
|
410
|
+
# - OLLAMA_HOST: Override Ollama endpoint
|
|
411
|
+
# - OLLAMA_ENABLED: Enable/disable Ollama (true/false)
|
|
412
|
+
# - CLAUDE_ENABLED: Enable/disable Claude (true/false)
|
|
413
|
+
# - ANTHROPIC_API_KEY: Claude API key
|
|
414
|
+
# - CLAUDE_MODEL: Override Claude model
|
|
415
|
+
"""
|
|
416
|
+
|
|
417
|
+
output_path_obj = Path(output_path)
|
|
418
|
+
output_path_obj.parent.mkdir(parents=True, exist_ok=True)
|
|
419
|
+
with output_path_obj.open("w") as f:
|
|
420
|
+
f.write(sample_config)
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
__all__ = [
|
|
424
|
+
"ClaudeConfig",
|
|
425
|
+
"ModelConfigManager",
|
|
426
|
+
"ModelProviderConfig",
|
|
427
|
+
"OllamaConfig",
|
|
428
|
+
]
|
claude_mpm/config/paths.py
CHANGED
|
@@ -8,14 +8,15 @@ This module provides a consistent, reliable way to access project paths
|
|
|
8
8
|
without fragile parent.parent.parent patterns.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
import logging
|
|
12
11
|
from pathlib import Path
|
|
13
12
|
from typing import Optional, Union
|
|
14
13
|
|
|
14
|
+
from claude_mpm.core.logging_utils import get_logger
|
|
15
|
+
|
|
15
16
|
# Import from the unified path management system
|
|
16
17
|
from ..core.unified_paths import get_path_manager
|
|
17
18
|
|
|
18
|
-
logger =
|
|
19
|
+
logger = get_logger(__name__)
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
class ClaudeMPMPaths:
|
|
@@ -10,6 +10,8 @@ WHY configuration management:
|
|
|
10
10
|
- Supports multiple deployment scenarios (local, PyPI, Docker, etc.)
|
|
11
11
|
- Provides environment-specific defaults
|
|
12
12
|
- Allows runtime configuration overrides
|
|
13
|
+
|
|
14
|
+
CRITICAL: Ping/pong settings MUST match between client and server to prevent disconnections!
|
|
13
15
|
"""
|
|
14
16
|
|
|
15
17
|
import os
|
|
@@ -19,6 +21,30 @@ from typing import Any, Dict, List, Optional
|
|
|
19
21
|
# Import constants for default values
|
|
20
22
|
from claude_mpm.core.constants import NetworkConfig, RetryConfig, SystemLimits
|
|
21
23
|
|
|
24
|
+
# Connection stability settings - MUST be consistent between client and server
|
|
25
|
+
CONNECTION_CONFIG = {
|
|
26
|
+
# Ping/pong intervals (milliseconds for client, seconds for server)
|
|
27
|
+
"ping_interval_ms": 25000, # 25 seconds (for client JavaScript)
|
|
28
|
+
"ping_interval": 25, # 25 seconds (for server Python) - reduced for stability
|
|
29
|
+
"ping_timeout_ms": 20000, # 20 seconds (for client JavaScript)
|
|
30
|
+
"ping_timeout": 20, # 20 seconds (for server Python)
|
|
31
|
+
# Connection management
|
|
32
|
+
"stale_timeout": 90, # 90 seconds before considering connection stale (was 180)
|
|
33
|
+
"health_check_interval": 30, # Health check every 30 seconds
|
|
34
|
+
"event_ttl": 300, # Keep events for 5 minutes for replay
|
|
35
|
+
"connection_timeout": 10, # 10 seconds for initial connection timeout
|
|
36
|
+
# Client reconnection settings
|
|
37
|
+
"reconnection_attempts": 5, # Number of reconnection attempts
|
|
38
|
+
"reconnection_delay": 1000, # Initial delay in ms
|
|
39
|
+
"reconnection_delay_max": 5000, # Maximum delay in ms
|
|
40
|
+
# Feature flags
|
|
41
|
+
"enable_extra_heartbeat": False, # Disable redundant heartbeats
|
|
42
|
+
"enable_health_monitoring": True, # Enable connection health monitoring
|
|
43
|
+
# Buffer settings
|
|
44
|
+
"max_events_buffer": 1000, # Maximum events to buffer per client
|
|
45
|
+
"max_http_buffer_size": 1e8, # 100MB max buffer for large payloads
|
|
46
|
+
}
|
|
47
|
+
|
|
22
48
|
|
|
23
49
|
@dataclass
|
|
24
50
|
class SocketIOConfig:
|
|
@@ -29,11 +55,14 @@ class SocketIOConfig:
|
|
|
29
55
|
port: int = NetworkConfig.DEFAULT_DASHBOARD_PORT
|
|
30
56
|
server_id: Optional[str] = None
|
|
31
57
|
|
|
32
|
-
# Connection settings
|
|
58
|
+
# Connection settings - Use centralized config for consistency
|
|
33
59
|
cors_allowed_origins: str = "*" # Configure properly for production
|
|
34
|
-
ping_timeout: int =
|
|
35
|
-
ping_interval: int =
|
|
36
|
-
max_http_buffer_size: int =
|
|
60
|
+
ping_timeout: int = CONNECTION_CONFIG["ping_timeout"] # 20 seconds
|
|
61
|
+
ping_interval: int = CONNECTION_CONFIG["ping_interval"] # 25 seconds (was 45)
|
|
62
|
+
max_http_buffer_size: int = int(CONNECTION_CONFIG["max_http_buffer_size"])
|
|
63
|
+
connection_timeout: int = CONNECTION_CONFIG.get(
|
|
64
|
+
"connection_timeout", 10
|
|
65
|
+
) # 10 seconds
|
|
37
66
|
|
|
38
67
|
# Compatibility settings
|
|
39
68
|
min_client_version: str = "0.7.0"
|
|
@@ -157,7 +186,7 @@ class ConfigManager:
|
|
|
157
186
|
def detect_environment(self) -> str:
|
|
158
187
|
"""Detect the current deployment environment."""
|
|
159
188
|
# Check for Docker
|
|
160
|
-
if
|
|
189
|
+
if Path("/.dockerenv").exists() or os.getenv("DOCKER_CONTAINER"):
|
|
161
190
|
return "docker"
|
|
162
191
|
|
|
163
192
|
# Check for production indicators
|
|
@@ -220,7 +249,7 @@ class ConfigManager:
|
|
|
220
249
|
for config_path in self.config_search_paths:
|
|
221
250
|
if config_path.exists():
|
|
222
251
|
try:
|
|
223
|
-
with open(
|
|
252
|
+
with config_path.open() as f:
|
|
224
253
|
return json.load(f)
|
|
225
254
|
except Exception as e:
|
|
226
255
|
print(f"Warning: Failed to load config from {config_path}: {e}")
|
|
@@ -238,7 +267,7 @@ class ConfigManager:
|
|
|
238
267
|
path = config_dir / self.config_file_name
|
|
239
268
|
|
|
240
269
|
try:
|
|
241
|
-
with open(
|
|
270
|
+
with path.open("w") as f:
|
|
242
271
|
json.dump(config.to_dict(), f, indent=2)
|
|
243
272
|
return True
|
|
244
273
|
except Exception as e:
|