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
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
import time
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
+
from claude_mpm.core.enums import OperationResult
|
|
6
7
|
from claude_mpm.services.agents.deployment.processors import (
|
|
7
8
|
AgentDeploymentContext,
|
|
8
9
|
AgentDeploymentResult,
|
|
9
10
|
AgentProcessor,
|
|
10
11
|
)
|
|
11
12
|
|
|
12
|
-
from .base_step import BaseDeploymentStep, StepResult
|
|
13
|
+
from .base_step import BaseDeploymentStep, StepResult
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
class AgentProcessingStep(BaseDeploymentStep):
|
|
@@ -37,7 +38,7 @@ class AgentProcessingStep(BaseDeploymentStep):
|
|
|
37
38
|
if not context.template_files:
|
|
38
39
|
self.logger.warning("No template files to process")
|
|
39
40
|
return StepResult(
|
|
40
|
-
status=
|
|
41
|
+
status=OperationResult.SKIPPED,
|
|
41
42
|
message="No template files found to process",
|
|
42
43
|
execution_time=time.time() - start_time,
|
|
43
44
|
)
|
|
@@ -103,13 +104,13 @@ class AgentProcessingStep(BaseDeploymentStep):
|
|
|
103
104
|
|
|
104
105
|
# Determine step status
|
|
105
106
|
if failed_count == 0:
|
|
106
|
-
status =
|
|
107
|
+
status = OperationResult.SUCCESS
|
|
107
108
|
message = f"Successfully processed {processed_count} agents in {execution_time:.3f}s"
|
|
108
109
|
elif processed_count > 0:
|
|
109
|
-
status =
|
|
110
|
+
status = OperationResult.WARNING
|
|
110
111
|
message = f"Processed {processed_count} agents with {failed_count} failures in {execution_time:.3f}s"
|
|
111
112
|
else:
|
|
112
|
-
status =
|
|
113
|
+
status = OperationResult.FAILED
|
|
113
114
|
message = f"Failed to process any agents ({failed_count} failures) in {execution_time:.3f}s"
|
|
114
115
|
|
|
115
116
|
self.logger.info(message)
|
|
@@ -127,7 +128,7 @@ class AgentProcessingStep(BaseDeploymentStep):
|
|
|
127
128
|
context.add_error(error_msg)
|
|
128
129
|
|
|
129
130
|
return StepResult(
|
|
130
|
-
status=
|
|
131
|
+
status=OperationResult.FAILED,
|
|
131
132
|
message=error_msg,
|
|
132
133
|
error=e,
|
|
133
134
|
execution_time=execution_time,
|
|
@@ -229,7 +230,7 @@ class AgentProcessingStep(BaseDeploymentStep):
|
|
|
229
230
|
cwd = Path.cwd()
|
|
230
231
|
if str(cwd) in template_str:
|
|
231
232
|
return "project"
|
|
232
|
-
except:
|
|
233
|
+
except Exception:
|
|
233
234
|
pass
|
|
234
235
|
|
|
235
236
|
# Check if it's a user agent
|
|
@@ -2,26 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, abstractmethod
|
|
4
4
|
from dataclasses import dataclass
|
|
5
|
-
from enum import Enum
|
|
6
5
|
from typing import Optional
|
|
7
6
|
|
|
7
|
+
from claude_mpm.core.enums import OperationResult
|
|
8
8
|
from claude_mpm.core.logger import get_logger
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class StepStatus(Enum):
|
|
12
|
-
"""Status of a pipeline step execution."""
|
|
13
|
-
|
|
14
|
-
SUCCESS = "success"
|
|
15
|
-
FAILURE = "failure"
|
|
16
|
-
SKIPPED = "skipped"
|
|
17
|
-
WARNING = "warning"
|
|
18
|
-
|
|
19
|
-
|
|
20
11
|
@dataclass
|
|
21
12
|
class StepResult:
|
|
22
13
|
"""Result of executing a pipeline step."""
|
|
23
14
|
|
|
24
|
-
status:
|
|
15
|
+
status: OperationResult
|
|
25
16
|
message: Optional[str] = None
|
|
26
17
|
error: Optional[Exception] = None
|
|
27
18
|
execution_time: Optional[float] = None
|
|
@@ -29,22 +20,22 @@ class StepResult:
|
|
|
29
20
|
@property
|
|
30
21
|
def is_success(self) -> bool:
|
|
31
22
|
"""Check if the step was successful."""
|
|
32
|
-
return self.status ==
|
|
23
|
+
return self.status == OperationResult.SUCCESS
|
|
33
24
|
|
|
34
25
|
@property
|
|
35
26
|
def is_failure(self) -> bool:
|
|
36
27
|
"""Check if the step failed."""
|
|
37
|
-
return self.status ==
|
|
28
|
+
return self.status == OperationResult.FAILED
|
|
38
29
|
|
|
39
30
|
@property
|
|
40
31
|
def is_skipped(self) -> bool:
|
|
41
32
|
"""Check if the step was skipped."""
|
|
42
|
-
return self.status ==
|
|
33
|
+
return self.status == OperationResult.SKIPPED
|
|
43
34
|
|
|
44
35
|
@property
|
|
45
36
|
def is_warning(self) -> bool:
|
|
46
37
|
"""Check if the step completed with warnings."""
|
|
47
|
-
return self.status ==
|
|
38
|
+
return self.status == OperationResult.WARNING
|
|
48
39
|
|
|
49
40
|
|
|
50
41
|
class BaseDeploymentStep(ABC):
|
|
@@ -67,7 +58,7 @@ class BaseDeploymentStep(ABC):
|
|
|
67
58
|
self.logger = get_logger(f"{__name__}.{self.__class__.__name__}")
|
|
68
59
|
|
|
69
60
|
@abstractmethod
|
|
70
|
-
def execute(self, context) -> StepResult:
|
|
61
|
+
def execute(self, context) -> "StepResult":
|
|
71
62
|
"""Execute this deployment step.
|
|
72
63
|
|
|
73
64
|
Args:
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
import time
|
|
4
4
|
|
|
5
5
|
from claude_mpm.core.config import Config
|
|
6
|
+
from claude_mpm.core.enums import OperationResult
|
|
6
7
|
|
|
7
|
-
from .base_step import BaseDeploymentStep, StepResult
|
|
8
|
+
from .base_step import BaseDeploymentStep, StepResult
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class ConfigurationLoadStep(BaseDeploymentStep):
|
|
@@ -54,7 +55,7 @@ class ConfigurationLoadStep(BaseDeploymentStep):
|
|
|
54
55
|
context.step_timings[self.name] = execution_time
|
|
55
56
|
|
|
56
57
|
return StepResult(
|
|
57
|
-
status=
|
|
58
|
+
status=OperationResult.SUCCESS,
|
|
58
59
|
message=f"Configuration loaded successfully in {execution_time:.3f}s",
|
|
59
60
|
execution_time=execution_time,
|
|
60
61
|
)
|
|
@@ -68,7 +69,7 @@ class ConfigurationLoadStep(BaseDeploymentStep):
|
|
|
68
69
|
context.add_error(error_msg)
|
|
69
70
|
|
|
70
71
|
return StepResult(
|
|
71
|
-
status=
|
|
72
|
+
status=OperationResult.FAILED,
|
|
72
73
|
message=error_msg,
|
|
73
74
|
error=e,
|
|
74
75
|
execution_time=execution_time,
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
import time
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
-
from .
|
|
6
|
+
from claude_mpm.core.enums import OperationResult
|
|
7
|
+
|
|
8
|
+
from .base_step import BaseDeploymentStep, StepResult
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
class TargetDirectorySetupStep(BaseDeploymentStep):
|
|
@@ -48,10 +50,10 @@ class TargetDirectorySetupStep(BaseDeploymentStep):
|
|
|
48
50
|
try:
|
|
49
51
|
test_file.write_text("test")
|
|
50
52
|
test_file.unlink()
|
|
51
|
-
except Exception:
|
|
53
|
+
except Exception as e:
|
|
52
54
|
raise PermissionError(
|
|
53
55
|
f"Target directory is not writable: {context.actual_target_dir}"
|
|
54
|
-
)
|
|
56
|
+
) from e
|
|
55
57
|
|
|
56
58
|
self.logger.info(f"Target directory set up: {context.actual_target_dir}")
|
|
57
59
|
|
|
@@ -59,7 +61,7 @@ class TargetDirectorySetupStep(BaseDeploymentStep):
|
|
|
59
61
|
context.step_timings[self.name] = execution_time
|
|
60
62
|
|
|
61
63
|
return StepResult(
|
|
62
|
-
status=
|
|
64
|
+
status=OperationResult.SUCCESS,
|
|
63
65
|
message=f"Target directory set up at {context.actual_target_dir} in {execution_time:.3f}s",
|
|
64
66
|
execution_time=execution_time,
|
|
65
67
|
)
|
|
@@ -73,7 +75,7 @@ class TargetDirectorySetupStep(BaseDeploymentStep):
|
|
|
73
75
|
context.add_error(error_msg)
|
|
74
76
|
|
|
75
77
|
return StepResult(
|
|
76
|
-
status=
|
|
78
|
+
status=OperationResult.FAILED,
|
|
77
79
|
message=error_msg,
|
|
78
80
|
error=e,
|
|
79
81
|
execution_time=execution_time,
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import time
|
|
4
4
|
|
|
5
|
+
from claude_mpm.core.enums import OperationResult
|
|
5
6
|
from claude_mpm.services.agents.deployment.validation import DeploymentValidator
|
|
6
7
|
|
|
7
|
-
from .base_step import BaseDeploymentStep, StepResult
|
|
8
|
+
from .base_step import BaseDeploymentStep, StepResult
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class ValidationStep(BaseDeploymentStep):
|
|
@@ -49,13 +50,13 @@ class ValidationStep(BaseDeploymentStep):
|
|
|
49
50
|
|
|
50
51
|
# Determine step status
|
|
51
52
|
if not validation_result.is_valid:
|
|
52
|
-
status =
|
|
53
|
+
status = OperationResult.FAILED
|
|
53
54
|
message = f"Validation failed with {validation_result.error_count} errors in {execution_time:.3f}s"
|
|
54
55
|
elif validation_result.has_warnings:
|
|
55
|
-
status =
|
|
56
|
+
status = OperationResult.WARNING
|
|
56
57
|
message = f"Validation completed with {validation_result.warning_count} warnings in {execution_time:.3f}s"
|
|
57
58
|
else:
|
|
58
|
-
status =
|
|
59
|
+
status = OperationResult.SUCCESS
|
|
59
60
|
message = f"Validation passed successfully in {execution_time:.3f}s"
|
|
60
61
|
|
|
61
62
|
self.logger.info(message)
|
|
@@ -73,7 +74,7 @@ class ValidationStep(BaseDeploymentStep):
|
|
|
73
74
|
context.add_error(error_msg)
|
|
74
75
|
|
|
75
76
|
return StepResult(
|
|
76
|
-
status=
|
|
77
|
+
status=OperationResult.FAILED,
|
|
77
78
|
message=error_msg,
|
|
78
79
|
error=e,
|
|
79
80
|
execution_time=execution_time,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import Any, Dict, List, Optional, Tuple
|
|
5
5
|
|
|
6
|
+
from claude_mpm.core.enums import OperationResult
|
|
6
7
|
from claude_mpm.core.interfaces import AgentDeploymentInterface
|
|
7
8
|
from claude_mpm.core.logger import get_logger
|
|
8
9
|
|
|
@@ -116,8 +117,10 @@ class RefactoredAgentDeploymentService(AgentDeploymentInterface):
|
|
|
116
117
|
)
|
|
117
118
|
|
|
118
119
|
# Ensure success field is present
|
|
119
|
-
if
|
|
120
|
-
results[
|
|
120
|
+
if OperationResult.SUCCESS.value not in results:
|
|
121
|
+
results[OperationResult.SUCCESS.value] = not bool(
|
|
122
|
+
results.get("errors", [])
|
|
123
|
+
)
|
|
121
124
|
|
|
122
125
|
self.logger.info(f"Deployment completed: {results.get('success', False)}")
|
|
123
126
|
return results
|
|
@@ -125,7 +128,7 @@ class RefactoredAgentDeploymentService(AgentDeploymentInterface):
|
|
|
125
128
|
except Exception as e:
|
|
126
129
|
self.logger.error(f"Deployment failed: {e}", exc_info=True)
|
|
127
130
|
return {
|
|
128
|
-
|
|
131
|
+
OperationResult.SUCCESS.value: False,
|
|
129
132
|
"error": str(e),
|
|
130
133
|
"deployed": [],
|
|
131
134
|
"updated": [],
|
|
@@ -235,7 +238,7 @@ class RefactoredAgentDeploymentService(AgentDeploymentInterface):
|
|
|
235
238
|
# Build status information
|
|
236
239
|
return {
|
|
237
240
|
"service_version": "refactored-1.0.0",
|
|
238
|
-
"status":
|
|
241
|
+
"status": OperationResult.SUCCESS,
|
|
239
242
|
"templates_dir": str(self.templates_dir),
|
|
240
243
|
"base_agent_path": str(self.base_agent_path),
|
|
241
244
|
"working_directory": str(self.working_directory),
|
|
@@ -255,7 +258,7 @@ class RefactoredAgentDeploymentService(AgentDeploymentInterface):
|
|
|
255
258
|
self.logger.error(f"Failed to get deployment status: {e}", exc_info=True)
|
|
256
259
|
return {
|
|
257
260
|
"service_version": "refactored-1.0.0",
|
|
258
|
-
"status":
|
|
261
|
+
"status": OperationResult.ERROR,
|
|
259
262
|
"error": str(e),
|
|
260
263
|
}
|
|
261
264
|
|
|
@@ -301,7 +304,7 @@ class RefactoredAgentDeploymentService(AgentDeploymentInterface):
|
|
|
301
304
|
except Exception as e:
|
|
302
305
|
self.logger.error(f"Async deployment failed: {e}", exc_info=True)
|
|
303
306
|
return {
|
|
304
|
-
|
|
307
|
+
OperationResult.SUCCESS.value: False,
|
|
305
308
|
"error": str(e),
|
|
306
309
|
"deployed": [],
|
|
307
310
|
"updated": [],
|
|
@@ -70,12 +70,15 @@ class SystemInstructionsDeployer:
|
|
|
70
70
|
target_file = claude_dir / target_name
|
|
71
71
|
|
|
72
72
|
# Check if update needed
|
|
73
|
-
if
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
if (
|
|
74
|
+
not force_rebuild
|
|
75
|
+
and target_file.exists()
|
|
76
|
+
and target_file.stat().st_mtime >= source_path.stat().st_mtime
|
|
77
|
+
):
|
|
78
|
+
# File is up to date based on modification time
|
|
79
|
+
results["skipped"].append(target_name)
|
|
80
|
+
self.logger.debug(f"Framework file {target_name} up to date")
|
|
81
|
+
continue
|
|
79
82
|
|
|
80
83
|
# Read and deploy framework file
|
|
81
84
|
file_content = source_path.read_text()
|
|
@@ -5,10 +5,12 @@ including template validation, agent file validation, and
|
|
|
5
5
|
deployment environment validation.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
from claude_mpm.core.enums import ValidationSeverity
|
|
9
|
+
|
|
8
10
|
from .agent_validator import AgentValidator
|
|
9
11
|
from .deployment_validator import DeploymentValidator
|
|
10
12
|
from .template_validator import TemplateValidator
|
|
11
|
-
from .validation_result import ValidationResult
|
|
13
|
+
from .validation_result import ValidationResult
|
|
12
14
|
|
|
13
15
|
__all__ = [
|
|
14
16
|
"AgentValidator",
|
|
@@ -31,7 +31,7 @@ class TemplateValidator:
|
|
|
31
31
|
"agent_type": str,
|
|
32
32
|
"metadata": dict,
|
|
33
33
|
"capabilities": dict,
|
|
34
|
-
"instructions":
|
|
34
|
+
"instructions": str,
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
# Required metadata fields
|
|
@@ -45,13 +45,10 @@ class TemplateValidator:
|
|
|
45
45
|
# Required capabilities fields
|
|
46
46
|
self.required_capabilities_fields = {
|
|
47
47
|
"model": str,
|
|
48
|
-
"
|
|
48
|
+
"resource_tier": str,
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
#
|
|
52
|
-
self.required_instructions_fields = {
|
|
53
|
-
"system_prompt": str,
|
|
54
|
-
}
|
|
51
|
+
# Instructions is now a string field, not a dictionary
|
|
55
52
|
|
|
56
53
|
def validate_template_file(self, template_file: Path) -> ValidationResult:
|
|
57
54
|
"""Validate a template file.
|
|
@@ -90,9 +87,11 @@ class TemplateValidator:
|
|
|
90
87
|
if "capabilities" in template_data:
|
|
91
88
|
self._validate_capabilities(template_data["capabilities"], result)
|
|
92
89
|
|
|
93
|
-
# Validate instructions
|
|
90
|
+
# Validate instructions (now a string field)
|
|
94
91
|
if "instructions" in template_data:
|
|
95
|
-
self.
|
|
92
|
+
self._validate_instructions_string(
|
|
93
|
+
template_data["instructions"], result
|
|
94
|
+
)
|
|
96
95
|
|
|
97
96
|
# Validate agent ID format
|
|
98
97
|
if "agent_id" in template_data:
|
|
@@ -191,10 +190,19 @@ class TemplateValidator:
|
|
|
191
190
|
|
|
192
191
|
if "tags" in metadata:
|
|
193
192
|
tags = metadata["tags"]
|
|
194
|
-
if
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
193
|
+
if isinstance(tags, str):
|
|
194
|
+
# Convert comma-separated string to list for validation
|
|
195
|
+
tag_list = [tag.strip() for tag in tags.split(",") if tag.strip()]
|
|
196
|
+
if len(tag_list) == 0:
|
|
197
|
+
result.add_warning("No tags specified", field_name="metadata.tags")
|
|
198
|
+
elif isinstance(tags, list):
|
|
199
|
+
if len(tags) == 0:
|
|
200
|
+
result.add_warning("No tags specified", field_name="metadata.tags")
|
|
201
|
+
else:
|
|
202
|
+
result.add_error(
|
|
203
|
+
"Tags should be a list or comma-separated string",
|
|
204
|
+
field_name="metadata.tags",
|
|
205
|
+
)
|
|
198
206
|
|
|
199
207
|
def _validate_capabilities(
|
|
200
208
|
self, capabilities: Dict[str, Any], result: ValidationResult
|
|
@@ -230,7 +238,7 @@ class TemplateValidator:
|
|
|
230
238
|
suggestion=f"Use one of: {', '.join(valid_models)}",
|
|
231
239
|
)
|
|
232
240
|
|
|
233
|
-
# Validate tools
|
|
241
|
+
# Validate tools (optional field but validate if present)
|
|
234
242
|
if "tools" in capabilities:
|
|
235
243
|
tools = capabilities["tools"]
|
|
236
244
|
if not isinstance(tools, list):
|
|
@@ -242,43 +250,55 @@ class TemplateValidator:
|
|
|
242
250
|
"No tools specified", field_name="capabilities.tools"
|
|
243
251
|
)
|
|
244
252
|
|
|
245
|
-
|
|
246
|
-
|
|
253
|
+
# Validate resource_tier
|
|
254
|
+
if "resource_tier" in capabilities:
|
|
255
|
+
resource_tier = capabilities["resource_tier"]
|
|
256
|
+
valid_tiers = ["basic", "standard", "intensive", "lightweight", "high"]
|
|
257
|
+
if resource_tier not in valid_tiers:
|
|
258
|
+
result.add_warning(
|
|
259
|
+
f"Unknown resource tier '{resource_tier}'",
|
|
260
|
+
field_name="capabilities.resource_tier",
|
|
261
|
+
suggestion=f"Use one of: {', '.join(valid_tiers)}",
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
def _validate_instructions_string(
|
|
265
|
+
self, instructions: str, result: ValidationResult
|
|
247
266
|
) -> None:
|
|
248
|
-
"""Validate instructions
|
|
267
|
+
"""Validate instructions string.
|
|
249
268
|
|
|
250
269
|
Args:
|
|
251
|
-
instructions: Instructions
|
|
270
|
+
instructions: Instructions string
|
|
252
271
|
result: ValidationResult to update
|
|
253
272
|
"""
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
value = instructions[field]
|
|
262
|
-
if not isinstance(value, expected_type):
|
|
263
|
-
result.add_error(
|
|
264
|
-
f"Instructions field '{field}' should be {expected_type.__name__}, got {type(value).__name__}",
|
|
265
|
-
field_name=f"instructions.{field}",
|
|
266
|
-
)
|
|
273
|
+
# Check if instructions is actually a string
|
|
274
|
+
if not isinstance(instructions, str):
|
|
275
|
+
result.add_error(
|
|
276
|
+
f"Instructions should be a string, got {type(instructions).__name__}",
|
|
277
|
+
field_name="instructions",
|
|
278
|
+
)
|
|
279
|
+
return
|
|
267
280
|
|
|
268
|
-
#
|
|
269
|
-
if
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
281
|
+
# Check if instructions is not empty
|
|
282
|
+
if not instructions or not instructions.strip():
|
|
283
|
+
result.add_error(
|
|
284
|
+
"Instructions cannot be empty",
|
|
285
|
+
field_name="instructions",
|
|
286
|
+
)
|
|
287
|
+
elif len(instructions) < 20:
|
|
288
|
+
result.add_warning(
|
|
289
|
+
"Instructions are very short",
|
|
290
|
+
field_name="instructions",
|
|
291
|
+
suggestion="Provide more detailed instructions",
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
# Check for file references that might be invalid
|
|
295
|
+
if instructions.startswith("file:"):
|
|
296
|
+
file_ref = instructions[5:] # Remove "file:" prefix
|
|
297
|
+
result.add_warning(
|
|
298
|
+
f"Instructions reference external file: {file_ref}",
|
|
299
|
+
field_name="instructions",
|
|
300
|
+
suggestion="Consider embedding instructions directly or ensure the referenced file exists",
|
|
301
|
+
)
|
|
282
302
|
|
|
283
303
|
def _validate_agent_id(self, agent_id: str, result: ValidationResult) -> None:
|
|
284
304
|
"""Validate agent ID format.
|
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
"""Validation result classes for deployment validation."""
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass, field
|
|
4
|
-
from enum import Enum
|
|
5
4
|
from typing import Any, Dict, List, Optional
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
class ValidationSeverity(Enum):
|
|
9
|
-
"""Severity levels for validation issues."""
|
|
10
|
-
|
|
11
|
-
INFO = "info"
|
|
12
|
-
WARNING = "warning"
|
|
13
|
-
ERROR = "error"
|
|
14
|
-
CRITICAL = "critical"
|
|
6
|
+
from claude_mpm.core.enums import ValidationSeverity
|
|
15
7
|
|
|
16
8
|
|
|
17
9
|
@dataclass
|
|
@@ -21,10 +21,8 @@ multi-file implementation for better maintainability.
|
|
|
21
21
|
|
|
22
22
|
import asyncio
|
|
23
23
|
import json
|
|
24
|
-
import logging
|
|
25
|
-
import os
|
|
26
24
|
from dataclasses import dataclass, field
|
|
27
|
-
from datetime import datetime
|
|
25
|
+
from datetime import datetime, timezone
|
|
28
26
|
from enum import Enum
|
|
29
27
|
from pathlib import Path
|
|
30
28
|
from typing import Any, Dict, List, Optional, Tuple
|
|
@@ -33,11 +31,12 @@ import yaml
|
|
|
33
31
|
|
|
34
32
|
from claude_mpm.core.base_service import BaseService
|
|
35
33
|
from claude_mpm.core.config import Config
|
|
34
|
+
from claude_mpm.core.logging_utils import get_logger
|
|
36
35
|
from claude_mpm.core.unified_paths import get_path_manager
|
|
37
36
|
from claude_mpm.services.agents.registry import AgentRegistry
|
|
38
37
|
from claude_mpm.services.memory.cache.shared_prompt_cache import SharedPromptCache
|
|
39
38
|
|
|
40
|
-
logger =
|
|
39
|
+
logger = get_logger(__name__)
|
|
41
40
|
|
|
42
41
|
# ============================================================================
|
|
43
42
|
# Data Models
|
|
@@ -113,7 +112,7 @@ class AgentProfileLoader(BaseService):
|
|
|
113
112
|
super().__init__(name="agent_profile_loader", config=config)
|
|
114
113
|
|
|
115
114
|
# Core configuration
|
|
116
|
-
self.working_directory = Path(
|
|
115
|
+
self.working_directory = Path(Path.cwd())
|
|
117
116
|
self.framework_path = self._detect_framework_path()
|
|
118
117
|
self.user_home = Path.home()
|
|
119
118
|
|
|
@@ -227,7 +226,9 @@ class AgentProfileLoader(BaseService):
|
|
|
227
226
|
# Check cache first
|
|
228
227
|
if use_cache and agent_name in self.profile_cache:
|
|
229
228
|
profile = self.profile_cache[agent_name]
|
|
230
|
-
if (
|
|
229
|
+
if (
|
|
230
|
+
datetime.now(timezone.utc) - profile.loaded_at
|
|
231
|
+
).seconds < self.cache_ttl:
|
|
231
232
|
self.load_metrics[f"{agent_name}_cache_hit"] = (
|
|
232
233
|
asyncio.get_event_loop().time() - start_time
|
|
233
234
|
)
|
|
@@ -322,7 +323,7 @@ class AgentProfileLoader(BaseService):
|
|
|
322
323
|
try:
|
|
323
324
|
data = yaml.safe_load(content)
|
|
324
325
|
instructions = data.get("instructions", "")
|
|
325
|
-
except:
|
|
326
|
+
except Exception:
|
|
326
327
|
data = json.loads(content)
|
|
327
328
|
instructions = data.get("instructions", "")
|
|
328
329
|
|
|
@@ -455,7 +456,7 @@ class AgentProfileLoader(BaseService):
|
|
|
455
456
|
|
|
456
457
|
if prompt_file.exists():
|
|
457
458
|
try:
|
|
458
|
-
with open(
|
|
459
|
+
with prompt_file.open() as f:
|
|
459
460
|
data = json.load(f)
|
|
460
461
|
for prompt_data in data:
|
|
461
462
|
prompt = ImprovedPrompt(
|
|
@@ -498,7 +499,7 @@ class AgentProfileLoader(BaseService):
|
|
|
498
499
|
|
|
499
500
|
# Save to file
|
|
500
501
|
prompt_file = self.improved_prompts_path / f"{agent_name}_prompts.json"
|
|
501
|
-
with open(
|
|
502
|
+
with prompt_file.open("w") as f:
|
|
502
503
|
json.dump(
|
|
503
504
|
[
|
|
504
505
|
{
|
|
@@ -7,18 +7,27 @@ Specialized manager for base_agent.md with structured update capabilities.
|
|
|
7
7
|
Enforces template structure and provides section-specific update methods.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
import logging
|
|
11
10
|
from dataclasses import dataclass, field
|
|
12
|
-
from datetime import datetime
|
|
11
|
+
from datetime import datetime, timezone
|
|
13
12
|
from enum import Enum
|
|
14
13
|
from pathlib import Path
|
|
15
14
|
from typing import Any, Dict, List, Optional
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
# Lazy import for base_agent_loader to reduce initialization overhead
|
|
17
|
+
# base_agent_loader adds ~500ms to import time
|
|
18
|
+
# from claude_mpm.agents.base_agent_loader import clear_base_agent_cache
|
|
19
|
+
from claude_mpm.core.logging_utils import get_logger
|
|
18
20
|
from claude_mpm.services.memory.cache.shared_prompt_cache import SharedPromptCache
|
|
19
21
|
from claude_mpm.services.shared import ConfigServiceBase
|
|
20
22
|
|
|
21
|
-
logger =
|
|
23
|
+
logger = get_logger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _get_clear_base_agent_cache():
|
|
27
|
+
"""Lazy loader for clear_base_agent_cache function."""
|
|
28
|
+
from claude_mpm.agents.base_agent_loader import clear_base_agent_cache
|
|
29
|
+
|
|
30
|
+
return clear_base_agent_cache
|
|
22
31
|
|
|
23
32
|
|
|
24
33
|
class BaseAgentSection(str, Enum):
|
|
@@ -134,7 +143,8 @@ class BaseAgentManager(ConfigServiceBase):
|
|
|
134
143
|
content = self._structure_to_markdown(current)
|
|
135
144
|
self.base_agent_path.write_text(content, encoding="utf-8")
|
|
136
145
|
|
|
137
|
-
# Clear caches
|
|
146
|
+
# Clear caches (lazy load to avoid import overhead)
|
|
147
|
+
clear_base_agent_cache = _get_clear_base_agent_cache()
|
|
138
148
|
clear_base_agent_cache()
|
|
139
149
|
self.cache.invalidate("base_agent:instructions")
|
|
140
150
|
|
|
@@ -358,7 +368,7 @@ class BaseAgentManager(ConfigServiceBase):
|
|
|
358
368
|
|
|
359
369
|
def _create_backup(self) -> Path:
|
|
360
370
|
"""Create a timestamped backup of base_agent.md."""
|
|
361
|
-
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
371
|
+
timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
362
372
|
backup_path = self.base_agent_path.parent / f"base_agent_{timestamp}.backup"
|
|
363
373
|
|
|
364
374
|
if self.base_agent_path.exists():
|
|
@@ -12,7 +12,6 @@ This service integrates with the main agent_loader.py to provide
|
|
|
12
12
|
markdown-based agent profiles alongside JSON-based templates.
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
-
import logging
|
|
16
15
|
from pathlib import Path
|
|
17
16
|
from typing import Any, Dict, Optional
|
|
18
17
|
|
|
@@ -20,9 +19,10 @@ from claude_mpm.agents.agent_loader import (
|
|
|
20
19
|
AgentTier,
|
|
21
20
|
list_agents_by_tier,
|
|
22
21
|
)
|
|
22
|
+
from claude_mpm.core.logging_utils import get_logger
|
|
23
23
|
from claude_mpm.core.unified_paths import get_path_manager
|
|
24
24
|
|
|
25
|
-
logger =
|
|
25
|
+
logger = get_logger(__name__)
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class FrameworkAgentLoader:
|