claude-mpm 4.24.0__py3-none-any.whl → 5.0.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_PM.md +12 -0
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +721 -911
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +4 -4
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +370 -3
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +48 -0
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +38 -2
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +188 -30
- claude_mpm/cli/commands/agents.py +959 -36
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/auto_configure.py +2 -6
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +769 -45
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mpm_init/core.py +49 -1
- claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
- claude_mpm/cli/commands/mpm_init/prompts.py +6 -6
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +123 -165
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +757 -20
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +955 -45
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- claude_mpm/cli/parsers/base_parser.py +53 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +145 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +538 -106
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +14 -2
- claude_mpm/commands/mpm-init.md +27 -2
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +10 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +13 -0
- claude_mpm/core/claude_runner.py +5 -34
- claude_mpm/core/config.py +16 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +91 -10
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +71 -8
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
- claude_mpm/services/agents/local_template_manager.py +50 -10
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/cli/session_pause_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +7 -2
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +3 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/local_ops/resource_monitor.py +1 -1
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/model/model_router.py +1 -2
- claude_mpm/services/monitor/daemon.py +29 -9
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/port_manager.py +1 -1
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +16 -3
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +1 -1
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/system_instructions_service.py +1 -3
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
- claude_mpm/skills/skills_registry.py +0 -1
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/utils/agent_dependency_loader.py +77 -10
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +2 -4
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/METADATA +396 -43
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/RECORD +268 -422
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -183
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -238
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -287
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -144
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -243
- claude_mpm/agents/templates/react_engineer.json +0 -239
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -188
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/tauri_engineer.json +0 -274
- claude_mpm/agents/templates/ticketing.json +0 -178
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -159
- claude_mpm/agents/templates/web_qa.json +0 -400
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/commands/mpm-tickets.md +0 -151
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
- claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
- claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
- claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
- claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
- claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
- claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
- claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/built/react/events.js +0 -30
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
- claude_mpm/dashboard/static/built/shared/logger.js +0 -385
- claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/react/events.js +0 -30
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/js/shared/logger.js +0 -385
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/legacy/activity.html +0 -736
- claude_mpm/dashboard/static/legacy/agents.html +0 -786
- claude_mpm/dashboard/static/legacy/files.html +0 -747
- claude_mpm/dashboard/static/legacy/tools.html +0 -831
- claude_mpm/dashboard/static/monitors.html +0 -431
- claude_mpm/dashboard/static/production/events.html +0 -659
- claude_mpm/dashboard/static/production/main.html +0 -698
- claude_mpm/dashboard/static/production/monitors.html +0 -483
- claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
- claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
- claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
- claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
- /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
- /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
- /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
- /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/WHEEL +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/top_level.txt +0 -0
|
@@ -203,8 +203,8 @@ class UnifiedMonitorServer:
|
|
|
203
203
|
# Create Socket.IO server with proper ping configuration
|
|
204
204
|
self.sio = socketio.AsyncServer(
|
|
205
205
|
cors_allowed_origins="*",
|
|
206
|
-
logger=
|
|
207
|
-
engineio_logger=
|
|
206
|
+
logger=True, # Enable to see Socket.IO events and connection lifecycle
|
|
207
|
+
engineio_logger=True, # Enable to see Engine.IO protocol handshake details
|
|
208
208
|
ping_interval=30, # 30 seconds ping interval (matches client expectation)
|
|
209
209
|
ping_timeout=60, # 60 seconds ping timeout (generous for stability)
|
|
210
210
|
)
|
|
@@ -431,7 +431,7 @@ class PortManager:
|
|
|
431
431
|
return port
|
|
432
432
|
|
|
433
433
|
self.logger.error(
|
|
434
|
-
f"No available ports in range {self.PORT_RANGE.start}-{self.PORT_RANGE.stop-1}"
|
|
434
|
+
f"No available ports in range {self.PORT_RANGE.start}-{self.PORT_RANGE.stop - 1}"
|
|
435
435
|
)
|
|
436
436
|
return None
|
|
437
437
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pull Request Services Package
|
|
3
|
+
==============================
|
|
4
|
+
|
|
5
|
+
Provides PR template generation and workflow automation.
|
|
6
|
+
Used by agent-improver and skills-manager agents.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from .pr_template_service import PRTemplateService, PRType
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"PRTemplateService",
|
|
13
|
+
"PRType",
|
|
14
|
+
]
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pull Request Template Service
|
|
3
|
+
==============================
|
|
4
|
+
|
|
5
|
+
Generates consistent PR titles and descriptions for agent/skill improvements.
|
|
6
|
+
|
|
7
|
+
Design Decisions:
|
|
8
|
+
- Follows conventional commit format
|
|
9
|
+
- Generates comprehensive PR descriptions with testing checklists
|
|
10
|
+
- Supports both agent and skill PR types
|
|
11
|
+
- Validates conventional commit message format
|
|
12
|
+
|
|
13
|
+
Example:
|
|
14
|
+
>>> service = PRTemplateService()
|
|
15
|
+
>>> title = service.generate_pr_title("research", "improve memory efficiency", PRType.AGENT)
|
|
16
|
+
>>> print(title)
|
|
17
|
+
feat(agent): improve research - improve memory efficiency
|
|
18
|
+
|
|
19
|
+
>>> body = service.generate_agent_pr_body(
|
|
20
|
+
... agent_name="research",
|
|
21
|
+
... problem="Memory exhaustion with >50 files",
|
|
22
|
+
... solution="Add hard limit of 5 files per session",
|
|
23
|
+
... testing_notes="Tested with 100-file codebase",
|
|
24
|
+
... related_issues=["#157"]
|
|
25
|
+
... )
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
from enum import Enum
|
|
29
|
+
from typing import List, Optional
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class PRType(Enum):
|
|
33
|
+
"""Type of pull request."""
|
|
34
|
+
|
|
35
|
+
AGENT = "agent"
|
|
36
|
+
SKILL = "skill"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class PRTemplateService:
|
|
40
|
+
"""
|
|
41
|
+
Service for generating PR templates.
|
|
42
|
+
|
|
43
|
+
Generates consistent PR titles and descriptions following
|
|
44
|
+
conventional commit format and best practices.
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
# Conventional commit types
|
|
48
|
+
COMMIT_TYPES = {
|
|
49
|
+
"feat": "New feature or enhancement",
|
|
50
|
+
"fix": "Bug fix",
|
|
51
|
+
"docs": "Documentation changes",
|
|
52
|
+
"refactor": "Code refactoring without feature changes",
|
|
53
|
+
"test": "Adding or updating tests",
|
|
54
|
+
"chore": "Maintenance tasks",
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
def generate_pr_title(
|
|
58
|
+
self,
|
|
59
|
+
item_name: str,
|
|
60
|
+
brief_description: str,
|
|
61
|
+
pr_type: PRType,
|
|
62
|
+
commit_type: str = "feat",
|
|
63
|
+
) -> str:
|
|
64
|
+
"""
|
|
65
|
+
Generate PR title in conventional commit format.
|
|
66
|
+
|
|
67
|
+
Format: {commit_type}({scope}): {item} - {brief_description}
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
item_name: Agent or skill name (e.g., "research", "fastapi-testing")
|
|
71
|
+
brief_description: Brief description (e.g., "improve memory handling")
|
|
72
|
+
pr_type: Type of PR (agent or skill)
|
|
73
|
+
commit_type: Conventional commit type (default: "feat")
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
Formatted PR title
|
|
77
|
+
|
|
78
|
+
Example:
|
|
79
|
+
>>> service = PRTemplateService()
|
|
80
|
+
>>> service.generate_pr_title("research", "improve memory handling", PRType.AGENT)
|
|
81
|
+
'feat(agent): improve research - improve memory handling'
|
|
82
|
+
"""
|
|
83
|
+
scope = pr_type.value
|
|
84
|
+
return f"{commit_type}({scope}): improve {item_name} - {brief_description}"
|
|
85
|
+
|
|
86
|
+
def generate_agent_pr_body(
|
|
87
|
+
self,
|
|
88
|
+
agent_name: str,
|
|
89
|
+
problem: str,
|
|
90
|
+
solution: str,
|
|
91
|
+
testing_notes: str,
|
|
92
|
+
related_issues: Optional[List[str]] = None,
|
|
93
|
+
) -> str:
|
|
94
|
+
"""
|
|
95
|
+
Generate PR body for agent improvements.
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
agent_name: Agent name (e.g., "research")
|
|
99
|
+
problem: Problem statement (what wasn't working)
|
|
100
|
+
solution: Solution overview (what was changed)
|
|
101
|
+
testing_notes: Testing performed
|
|
102
|
+
related_issues: Related issue numbers (e.g., ["#157", "#142"])
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
Formatted PR body in markdown
|
|
106
|
+
|
|
107
|
+
Example:
|
|
108
|
+
>>> service = PRTemplateService()
|
|
109
|
+
>>> body = service.generate_agent_pr_body(
|
|
110
|
+
... agent_name="research",
|
|
111
|
+
... problem="Memory exhaustion when analyzing >50 files",
|
|
112
|
+
... solution="Add hard limit of 5 files per session with MCP summarizer",
|
|
113
|
+
... testing_notes="Tested with 100-file codebase, memory stayed under 4GB",
|
|
114
|
+
... related_issues=["#157"]
|
|
115
|
+
... )
|
|
116
|
+
"""
|
|
117
|
+
related_section = ""
|
|
118
|
+
if related_issues:
|
|
119
|
+
related_section = "\n\n## Related Issues\n\n"
|
|
120
|
+
for issue in related_issues:
|
|
121
|
+
# Check if it's just a number or already has #
|
|
122
|
+
issue_ref = issue if issue.startswith("#") else f"#{issue}"
|
|
123
|
+
related_section += f"Closes {issue_ref}\n"
|
|
124
|
+
|
|
125
|
+
return f"""## Problem Statement
|
|
126
|
+
|
|
127
|
+
{problem}
|
|
128
|
+
|
|
129
|
+
## Proposed Solution
|
|
130
|
+
|
|
131
|
+
{solution}
|
|
132
|
+
|
|
133
|
+
## Changes Made
|
|
134
|
+
|
|
135
|
+
**Agent:** `{agent_name}`
|
|
136
|
+
|
|
137
|
+
{self._format_changes_placeholder()}
|
|
138
|
+
|
|
139
|
+
## Testing Performed
|
|
140
|
+
|
|
141
|
+
{testing_notes}
|
|
142
|
+
|
|
143
|
+
- [x] Validated YAML frontmatter syntax
|
|
144
|
+
- [x] Tested agent with sample tasks
|
|
145
|
+
- [x] Verified no regression in existing behavior
|
|
146
|
+
{related_section}
|
|
147
|
+
## Checklist
|
|
148
|
+
|
|
149
|
+
- [x] Instructions are clear and unambiguous
|
|
150
|
+
- [x] No conflicting guidance
|
|
151
|
+
- [x] Follows agent architecture best practices
|
|
152
|
+
- [x] Documentation updated if needed
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
🤖 Generated with Claude MPM Agent Improver
|
|
156
|
+
Co-Authored-By: agent-improver <noreply@anthropic.com>
|
|
157
|
+
"""
|
|
158
|
+
|
|
159
|
+
def generate_skill_pr_body(
|
|
160
|
+
self,
|
|
161
|
+
skill_name: str,
|
|
162
|
+
improvements: str,
|
|
163
|
+
justification: str,
|
|
164
|
+
examples: str,
|
|
165
|
+
related_issues: Optional[List[str]] = None,
|
|
166
|
+
) -> str:
|
|
167
|
+
"""
|
|
168
|
+
Generate PR body for skill improvements.
|
|
169
|
+
|
|
170
|
+
Args:
|
|
171
|
+
skill_name: Skill name (e.g., "fastapi-testing")
|
|
172
|
+
improvements: Description of improvements made
|
|
173
|
+
justification: Why these improvements were needed
|
|
174
|
+
examples: Examples added or updated
|
|
175
|
+
related_issues: Related issue numbers
|
|
176
|
+
|
|
177
|
+
Returns:
|
|
178
|
+
Formatted PR body in markdown
|
|
179
|
+
|
|
180
|
+
Example:
|
|
181
|
+
>>> service = PRTemplateService()
|
|
182
|
+
>>> body = service.generate_skill_pr_body(
|
|
183
|
+
... skill_name="fastapi-testing",
|
|
184
|
+
... improvements="Added async test patterns and database handling",
|
|
185
|
+
... justification="Users struggled with async endpoint testing",
|
|
186
|
+
... examples="pytest-asyncio config, AsyncClient usage, DB rollback patterns",
|
|
187
|
+
... related_issues=["#203"]
|
|
188
|
+
... )
|
|
189
|
+
"""
|
|
190
|
+
related_section = ""
|
|
191
|
+
if related_issues:
|
|
192
|
+
related_section = "\n\n## Related Issues\n\n"
|
|
193
|
+
for issue in related_issues:
|
|
194
|
+
issue_ref = issue if issue.startswith("#") else f"#{issue}"
|
|
195
|
+
related_section += f"Requested by: Issue {issue_ref}\n"
|
|
196
|
+
|
|
197
|
+
return f"""## Skill Enhancement
|
|
198
|
+
|
|
199
|
+
**Skill:** `{skill_name}`
|
|
200
|
+
|
|
201
|
+
## Motivation
|
|
202
|
+
|
|
203
|
+
{justification}
|
|
204
|
+
|
|
205
|
+
## Improvements
|
|
206
|
+
|
|
207
|
+
{improvements}
|
|
208
|
+
|
|
209
|
+
## Examples Added
|
|
210
|
+
|
|
211
|
+
{examples}
|
|
212
|
+
|
|
213
|
+
## Testing
|
|
214
|
+
|
|
215
|
+
- [x] Validated YAML frontmatter
|
|
216
|
+
- [x] Verified skill syntax
|
|
217
|
+
- [x] Tested examples in relevant project
|
|
218
|
+
- [x] No conflicts with existing skills
|
|
219
|
+
{related_section}
|
|
220
|
+
---
|
|
221
|
+
🤖 Generated with Claude MPM Skills Manager
|
|
222
|
+
Co-Authored-By: skills-manager <noreply@anthropic.com>
|
|
223
|
+
"""
|
|
224
|
+
|
|
225
|
+
def validate_conventional_commit(self, message: str) -> bool:
|
|
226
|
+
"""
|
|
227
|
+
Validate that message follows conventional commit format.
|
|
228
|
+
|
|
229
|
+
Format: type(scope): description
|
|
230
|
+
|
|
231
|
+
Args:
|
|
232
|
+
message: Commit message to validate
|
|
233
|
+
|
|
234
|
+
Returns:
|
|
235
|
+
True if message follows conventional commit format
|
|
236
|
+
|
|
237
|
+
Example:
|
|
238
|
+
>>> service = PRTemplateService()
|
|
239
|
+
>>> service.validate_conventional_commit("feat(agent): improve research")
|
|
240
|
+
True
|
|
241
|
+
>>> service.validate_conventional_commit("improve research agent")
|
|
242
|
+
False
|
|
243
|
+
"""
|
|
244
|
+
if not message:
|
|
245
|
+
return False
|
|
246
|
+
|
|
247
|
+
# Extract first line (title)
|
|
248
|
+
first_line = message.split("\n")[0]
|
|
249
|
+
|
|
250
|
+
# Check basic format: type(scope): description
|
|
251
|
+
if ":" not in first_line:
|
|
252
|
+
return False
|
|
253
|
+
|
|
254
|
+
# Split into type/scope and description
|
|
255
|
+
parts = first_line.split(":", 1)
|
|
256
|
+
if len(parts) != 2:
|
|
257
|
+
return False
|
|
258
|
+
|
|
259
|
+
type_scope = parts[0].strip()
|
|
260
|
+
description = parts[1].strip()
|
|
261
|
+
|
|
262
|
+
# Check type(scope) format
|
|
263
|
+
if "(" not in type_scope or ")" not in type_scope:
|
|
264
|
+
return False
|
|
265
|
+
|
|
266
|
+
# Extract type
|
|
267
|
+
commit_type = type_scope.split("(")[0].strip()
|
|
268
|
+
|
|
269
|
+
# Validate type is recognized
|
|
270
|
+
if commit_type not in self.COMMIT_TYPES:
|
|
271
|
+
return False
|
|
272
|
+
|
|
273
|
+
# Check description is not empty
|
|
274
|
+
if not description:
|
|
275
|
+
return False
|
|
276
|
+
|
|
277
|
+
return True
|
|
278
|
+
|
|
279
|
+
def _format_changes_placeholder(self) -> str:
|
|
280
|
+
"""
|
|
281
|
+
Generate placeholder text for changes section.
|
|
282
|
+
|
|
283
|
+
Returns:
|
|
284
|
+
Formatted changes placeholder
|
|
285
|
+
"""
|
|
286
|
+
return """_Detailed changes will be visible in the diff. Key modifications:_
|
|
287
|
+
- [List specific instruction changes]
|
|
288
|
+
- [List frontmatter updates if any]
|
|
289
|
+
- [List any related file changes]"""
|
|
290
|
+
|
|
291
|
+
def generate_commit_message(
|
|
292
|
+
self,
|
|
293
|
+
item_name: str,
|
|
294
|
+
brief_description: str,
|
|
295
|
+
detailed_changes: str,
|
|
296
|
+
pr_type: PRType,
|
|
297
|
+
commit_type: str = "feat",
|
|
298
|
+
) -> str:
|
|
299
|
+
"""
|
|
300
|
+
Generate conventional commit message.
|
|
301
|
+
|
|
302
|
+
Args:
|
|
303
|
+
item_name: Agent or skill name
|
|
304
|
+
brief_description: Brief description
|
|
305
|
+
detailed_changes: Detailed list of changes
|
|
306
|
+
pr_type: Type (agent or skill)
|
|
307
|
+
commit_type: Conventional commit type
|
|
308
|
+
|
|
309
|
+
Returns:
|
|
310
|
+
Formatted commit message
|
|
311
|
+
|
|
312
|
+
Example:
|
|
313
|
+
>>> service = PRTemplateService()
|
|
314
|
+
>>> msg = service.generate_commit_message(
|
|
315
|
+
... "research",
|
|
316
|
+
... "improve memory efficiency",
|
|
317
|
+
... "- Add hard limit of 5 files\\n- Document MCP summarizer",
|
|
318
|
+
... PRType.AGENT
|
|
319
|
+
... )
|
|
320
|
+
"""
|
|
321
|
+
scope = pr_type.value
|
|
322
|
+
title = f"{commit_type}({scope}): improve {item_name} - {brief_description}"
|
|
323
|
+
|
|
324
|
+
return f"""{title}
|
|
325
|
+
|
|
326
|
+
{detailed_changes}
|
|
327
|
+
|
|
328
|
+
🤖 Generated with Claude MPM
|
|
329
|
+
"""
|
|
@@ -369,7 +369,8 @@ class DocumentationManager:
|
|
|
369
369
|
sorted_sections = sorted(
|
|
370
370
|
sections.items(),
|
|
371
371
|
key=lambda x: self.SECTION_PRIORITY.get(
|
|
372
|
-
self._get_section_key(x[0]),
|
|
372
|
+
self._get_section_key(x[0]),
|
|
373
|
+
50, # Default priority
|
|
373
374
|
),
|
|
374
375
|
reverse=True, # Higher priority first
|
|
375
376
|
)
|
|
@@ -318,7 +318,9 @@ class ToolchainAnalyzerService(BaseService, IToolchainAnalyzer):
|
|
|
318
318
|
else (
|
|
319
319
|
3
|
|
320
320
|
if f.confidence == ConfidenceLevel.MEDIUM
|
|
321
|
-
else 2
|
|
321
|
+
else 2
|
|
322
|
+
if f.confidence == ConfidenceLevel.LOW
|
|
323
|
+
else 1
|
|
322
324
|
)
|
|
323
325
|
),
|
|
324
326
|
f.popularity_score,
|
|
@@ -10,10 +10,14 @@ This service handles:
|
|
|
10
10
|
5. Hook service registration
|
|
11
11
|
|
|
12
12
|
Extracted from ClaudeRunner to follow Single Responsibility Principle.
|
|
13
|
+
|
|
14
|
+
DEPENDENCY INJECTION:
|
|
15
|
+
This service uses protocol-based dependency injection to avoid circular imports
|
|
16
|
+
when registering the SessionManagementService.
|
|
13
17
|
"""
|
|
14
18
|
|
|
15
19
|
import os
|
|
16
|
-
from typing import Any, Dict, List, Optional, Tuple
|
|
20
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple
|
|
17
21
|
|
|
18
22
|
from claude_mpm.core.base_service import BaseService
|
|
19
23
|
from claude_mpm.core.config import Config
|
|
@@ -22,6 +26,13 @@ from claude_mpm.core.logger import get_project_logger
|
|
|
22
26
|
from claude_mpm.core.shared.config_loader import ConfigLoader
|
|
23
27
|
from claude_mpm.services.core.interfaces import RunnerConfigurationInterface
|
|
24
28
|
|
|
29
|
+
# Protocol imports for type checking without circular dependencies
|
|
30
|
+
if TYPE_CHECKING:
|
|
31
|
+
from claude_mpm.core.protocols import ClaudeRunnerProtocol
|
|
32
|
+
else:
|
|
33
|
+
# At runtime, accept any object with matching interface
|
|
34
|
+
ClaudeRunnerProtocol = Any
|
|
35
|
+
|
|
25
36
|
|
|
26
37
|
class RunnerConfigurationService(BaseService, RunnerConfigurationInterface):
|
|
27
38
|
"""Service for configuring and initializing ClaudeRunner components."""
|
|
@@ -495,12 +506,14 @@ class RunnerConfigurationService(BaseService, RunnerConfigurationInterface):
|
|
|
495
506
|
)
|
|
496
507
|
return None
|
|
497
508
|
|
|
498
|
-
def register_session_management_service(
|
|
509
|
+
def register_session_management_service(
|
|
510
|
+
self, container, runner: "ClaudeRunnerProtocol"
|
|
511
|
+
):
|
|
499
512
|
"""Register session management service in the DI container.
|
|
500
513
|
|
|
501
514
|
Args:
|
|
502
515
|
container: DI container instance
|
|
503
|
-
runner: ClaudeRunner instance
|
|
516
|
+
runner: ClaudeRunner instance (or any object matching ClaudeRunnerProtocol)
|
|
504
517
|
|
|
505
518
|
Returns:
|
|
506
519
|
Initialized session management service or None if failed
|
|
@@ -9,29 +9,41 @@ This service handles:
|
|
|
9
9
|
4. Session logging and cleanup
|
|
10
10
|
|
|
11
11
|
Extracted from ClaudeRunner to follow Single Responsibility Principle.
|
|
12
|
+
|
|
13
|
+
DEPENDENCY INJECTION:
|
|
14
|
+
This service uses protocol-based dependency injection to avoid circular imports.
|
|
15
|
+
It accepts a ClaudeRunnerProtocol instead of importing ClaudeRunner directly.
|
|
12
16
|
"""
|
|
13
17
|
|
|
14
18
|
import time
|
|
15
19
|
import uuid
|
|
16
20
|
from datetime import timezone
|
|
17
|
-
from typing import Any, Dict, List, Optional
|
|
21
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
|
18
22
|
|
|
19
23
|
from claude_mpm.core.base_service import BaseService
|
|
20
24
|
from claude_mpm.core.enums import OperationResult, ServiceState
|
|
21
25
|
from claude_mpm.services.core.interfaces import SessionManagementInterface
|
|
22
26
|
|
|
27
|
+
# Protocol imports for type checking without circular dependencies
|
|
28
|
+
if TYPE_CHECKING:
|
|
29
|
+
from claude_mpm.core.protocols import ClaudeRunnerProtocol
|
|
30
|
+
else:
|
|
31
|
+
# At runtime, accept any object with matching interface
|
|
32
|
+
ClaudeRunnerProtocol = Any
|
|
33
|
+
|
|
23
34
|
|
|
24
35
|
class SessionManagementService(BaseService, SessionManagementInterface):
|
|
25
36
|
"""Service for managing Claude session orchestration."""
|
|
26
37
|
|
|
27
|
-
def __init__(self, runner=None):
|
|
38
|
+
def __init__(self, runner: Optional["ClaudeRunnerProtocol"] = None):
|
|
28
39
|
"""Initialize the session management service.
|
|
29
40
|
|
|
30
41
|
Args:
|
|
31
|
-
runner: ClaudeRunner instance
|
|
42
|
+
runner: ClaudeRunner instance (or any object matching ClaudeRunnerProtocol)
|
|
43
|
+
for delegation
|
|
32
44
|
"""
|
|
33
45
|
super().__init__(name="session_management_service")
|
|
34
|
-
self.runner = runner
|
|
46
|
+
self.runner: Optional[ClaudeRunnerProtocol] = runner
|
|
35
47
|
self.active_sessions = {} # Track active sessions
|
|
36
48
|
|
|
37
49
|
async def _initialize(self) -> None:
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""Skills management services.
|
|
2
|
+
|
|
3
|
+
This package provides services for Git-based skills management:
|
|
4
|
+
- GitSkillSourceManager: Multi-repository orchestration with priority resolution
|
|
5
|
+
- SkillDiscoveryService: Parse skills from Git repositories (Markdown with YAML frontmatter)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from claude_mpm.services.skills.git_skill_source_manager import GitSkillSourceManager
|
|
9
|
+
from claude_mpm.services.skills.skill_discovery_service import (
|
|
10
|
+
SkillDiscoveryService,
|
|
11
|
+
SkillMetadata,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"GitSkillSourceManager",
|
|
16
|
+
"SkillDiscoveryService",
|
|
17
|
+
"SkillMetadata",
|
|
18
|
+
]
|