claude-mpm 4.21.3__py3-none-any.whl → 5.0.2__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.
- 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 +632 -334
- claude_mpm/agents/WORKFLOW.md +75 -2
- 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/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} +89 -19
- 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/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +125 -20
- claude_mpm/cli/commands/agents.py +684 -13
- 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/cleanup.py +1 -1
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +478 -44
- 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 +50 -2
- 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/run.py +124 -128
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +435 -1
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +919 -41
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +173 -4
- claude_mpm/cli/parsers/base_parser.py +49 -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 +138 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +499 -84
- 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 +11 -2
- claude_mpm/commands/mpm-init.md +27 -2
- claude_mpm/commands/mpm-monitor.md +9 -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 +258 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +12 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +17 -10
- claude_mpm/core/config.py +24 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/framework/processors/metadata_processor.py +1 -1
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +112 -5
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +94 -4
- 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/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
- claude_mpm/hooks/claude_hooks/installer.py +45 -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/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- 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/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 +1055 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/cli/session_pause_manager.py +1 -1
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +92 -1
- 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/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/event_bus/event_bus.py +36 -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/infrastructure/monitoring/resources.py +1 -1
- 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/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- 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/document_summarizer.py +1 -1
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/memory/optimizer.py +1 -1
- claude_mpm/services/model/model_router.py +8 -9
- claude_mpm/services/monitor/daemon.py +1 -1
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- 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 +1 -0
- claude_mpm/services/self_upgrade_service.py +165 -7
- 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 +2 -2
- 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/cloud_strategies.py +1 -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/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/performance-profiling.md +6 -0
- 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/tools/code_tree_analyzer/analysis.py +1 -1
- claude_mpm/utils/agent_dependency_loader.py +80 -13
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/progress.py +383 -0
- claude_mpm/utils/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/METADATA +429 -59
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/RECORD +252 -425
- 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 -180
- 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 -211
- 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/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 -140
- 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 -242
- claude_mpm/agents/templates/react_engineer.json +0 -238
- 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/ticketing.json +0 -177
- 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 -157
- claude_mpm/agents/templates/web_qa.json +0 -399
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/commands/mpm-tickets.md +0 -102
- 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.21.3.dist-info → claude_mpm-5.0.2.dist-info}/WHEEL +0 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
GitHub Integration Services Package
|
|
3
|
+
====================================
|
|
4
|
+
|
|
5
|
+
Provides GitHub CLI integration for PR workflow automation.
|
|
6
|
+
Used by agent-improver and skills-manager agents.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from .github_cli_service import (
|
|
10
|
+
GitHubAuthenticationError,
|
|
11
|
+
GitHubCLIError,
|
|
12
|
+
GitHubCLINotInstalledError,
|
|
13
|
+
GitHubCLIService,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"GitHubAuthenticationError",
|
|
18
|
+
"GitHubCLIError",
|
|
19
|
+
"GitHubCLINotInstalledError",
|
|
20
|
+
"GitHubCLIService",
|
|
21
|
+
]
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
"""
|
|
2
|
+
GitHub CLI Service
|
|
3
|
+
==================
|
|
4
|
+
|
|
5
|
+
Provides GitHub CLI (gh) integration for PR creation and management.
|
|
6
|
+
|
|
7
|
+
Design Decisions:
|
|
8
|
+
- Uses gh CLI as primary method (best UX, inherits authentication)
|
|
9
|
+
- Provides helpful installation prompts if gh CLI not found
|
|
10
|
+
- Validates authentication before operations
|
|
11
|
+
- Supports environment variable fallback for CI/CD
|
|
12
|
+
|
|
13
|
+
Example:
|
|
14
|
+
>>> service = GitHubCLIService()
|
|
15
|
+
>>> if service.is_gh_installed():
|
|
16
|
+
... if service.is_authenticated():
|
|
17
|
+
... pr_url = service.create_pr(
|
|
18
|
+
... repo="bobmatnyc/claude-mpm-agents",
|
|
19
|
+
... title="feat(agent): improve research agent",
|
|
20
|
+
... body="## Problem\\n...",
|
|
21
|
+
... base="main"
|
|
22
|
+
... )
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
import shutil
|
|
26
|
+
import subprocess
|
|
27
|
+
from typing import Optional, Tuple
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# Custom Exceptions
|
|
31
|
+
class GitHubCLIError(Exception):
|
|
32
|
+
"""Base exception for GitHub CLI errors."""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class GitHubCLINotInstalledError(GitHubCLIError):
|
|
36
|
+
"""Raised when gh CLI is not installed."""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class GitHubAuthenticationError(GitHubCLIError):
|
|
40
|
+
"""Raised when gh CLI authentication fails."""
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class GitHubCLIService:
|
|
44
|
+
"""
|
|
45
|
+
Service for GitHub CLI operations.
|
|
46
|
+
|
|
47
|
+
Provides abstraction over gh CLI for PR creation and management.
|
|
48
|
+
Validates installation and authentication state before operations.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
def __init__(self, timeout: int = 30):
|
|
52
|
+
"""
|
|
53
|
+
Initialize GitHub CLI service.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
timeout: Command timeout in seconds (default: 30)
|
|
57
|
+
"""
|
|
58
|
+
self.timeout = timeout
|
|
59
|
+
|
|
60
|
+
def is_gh_installed(self) -> bool:
|
|
61
|
+
"""
|
|
62
|
+
Check if gh CLI is installed.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
True if gh CLI is available in PATH
|
|
66
|
+
|
|
67
|
+
Example:
|
|
68
|
+
>>> service = GitHubCLIService()
|
|
69
|
+
>>> if not service.is_gh_installed():
|
|
70
|
+
... print(service.get_installation_instructions())
|
|
71
|
+
"""
|
|
72
|
+
return shutil.which("gh") is not None
|
|
73
|
+
|
|
74
|
+
def is_authenticated(self) -> bool:
|
|
75
|
+
"""
|
|
76
|
+
Check if gh CLI is authenticated.
|
|
77
|
+
|
|
78
|
+
Returns:
|
|
79
|
+
True if gh CLI is authenticated with GitHub
|
|
80
|
+
|
|
81
|
+
Raises:
|
|
82
|
+
GitHubCLINotInstalledError: If gh CLI is not installed
|
|
83
|
+
"""
|
|
84
|
+
if not self.is_gh_installed():
|
|
85
|
+
raise GitHubCLINotInstalledError(
|
|
86
|
+
"GitHub CLI (gh) is not installed. "
|
|
87
|
+
+ self.get_installation_instructions()
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
try:
|
|
91
|
+
returncode, _stdout, _stderr = self._run_gh_command(
|
|
92
|
+
["gh", "auth", "status"]
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
# gh auth status returns 0 if authenticated
|
|
96
|
+
return returncode == 0
|
|
97
|
+
|
|
98
|
+
except Exception:
|
|
99
|
+
return False
|
|
100
|
+
|
|
101
|
+
def get_installation_instructions(self) -> str:
|
|
102
|
+
"""
|
|
103
|
+
Get platform-specific installation instructions for gh CLI.
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Installation instructions as formatted string
|
|
107
|
+
|
|
108
|
+
Example:
|
|
109
|
+
>>> service = GitHubCLIService()
|
|
110
|
+
>>> print(service.get_installation_instructions())
|
|
111
|
+
GitHub CLI not detected. Please install it to enable PR creation:
|
|
112
|
+
|
|
113
|
+
macOS: brew install gh
|
|
114
|
+
Linux: See https://github.com/cli/cli#installation
|
|
115
|
+
|
|
116
|
+
After installation, authenticate with: gh auth login
|
|
117
|
+
"""
|
|
118
|
+
return """
|
|
119
|
+
GitHub CLI not detected. Please install it to enable PR creation:
|
|
120
|
+
|
|
121
|
+
macOS:
|
|
122
|
+
brew install gh
|
|
123
|
+
|
|
124
|
+
Linux:
|
|
125
|
+
# Debian/Ubuntu
|
|
126
|
+
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
|
|
127
|
+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
|
|
128
|
+
sudo apt update
|
|
129
|
+
sudo apt install gh
|
|
130
|
+
|
|
131
|
+
# Fedora/CentOS/RHEL
|
|
132
|
+
sudo dnf install gh
|
|
133
|
+
|
|
134
|
+
# For other distributions, see: https://github.com/cli/cli#installation
|
|
135
|
+
|
|
136
|
+
Windows:
|
|
137
|
+
winget install --id GitHub.cli
|
|
138
|
+
|
|
139
|
+
After installation, authenticate with:
|
|
140
|
+
gh auth login
|
|
141
|
+
|
|
142
|
+
For more information, visit: https://cli.github.com/
|
|
143
|
+
""".strip()
|
|
144
|
+
|
|
145
|
+
def get_authentication_instructions(self) -> str:
|
|
146
|
+
"""
|
|
147
|
+
Get authentication instructions for gh CLI.
|
|
148
|
+
|
|
149
|
+
Returns:
|
|
150
|
+
Authentication instructions as formatted string
|
|
151
|
+
"""
|
|
152
|
+
return """
|
|
153
|
+
GitHub CLI is installed but not authenticated.
|
|
154
|
+
|
|
155
|
+
To authenticate, run:
|
|
156
|
+
gh auth login
|
|
157
|
+
|
|
158
|
+
This will guide you through the authentication process.
|
|
159
|
+
You can authenticate via:
|
|
160
|
+
- Browser (recommended)
|
|
161
|
+
- Personal access token
|
|
162
|
+
|
|
163
|
+
After authentication, you'll be able to create PRs directly.
|
|
164
|
+
""".strip()
|
|
165
|
+
|
|
166
|
+
def create_pr(
|
|
167
|
+
self,
|
|
168
|
+
repo: str,
|
|
169
|
+
title: str,
|
|
170
|
+
body: str,
|
|
171
|
+
base: str = "main",
|
|
172
|
+
head: Optional[str] = None,
|
|
173
|
+
draft: bool = False,
|
|
174
|
+
) -> str:
|
|
175
|
+
"""
|
|
176
|
+
Create a pull request using gh CLI.
|
|
177
|
+
|
|
178
|
+
Args:
|
|
179
|
+
repo: Repository in format "owner/repo" (e.g., "bobmatnyc/claude-mpm-agents")
|
|
180
|
+
title: PR title
|
|
181
|
+
body: PR description (markdown)
|
|
182
|
+
base: Base branch (default: "main")
|
|
183
|
+
head: Head branch (optional, uses current branch if not specified)
|
|
184
|
+
draft: Create as draft PR (default: False)
|
|
185
|
+
|
|
186
|
+
Returns:
|
|
187
|
+
PR URL
|
|
188
|
+
|
|
189
|
+
Raises:
|
|
190
|
+
GitHubCLINotInstalledError: If gh CLI not installed
|
|
191
|
+
GitHubAuthenticationError: If not authenticated
|
|
192
|
+
GitHubCLIError: If PR creation fails
|
|
193
|
+
|
|
194
|
+
Example:
|
|
195
|
+
>>> service = GitHubCLIService()
|
|
196
|
+
>>> pr_url = service.create_pr(
|
|
197
|
+
... repo="bobmatnyc/claude-mpm-agents",
|
|
198
|
+
... title="feat(agent): improve research agent",
|
|
199
|
+
... body="## Problem\\nMemory exhaustion...",
|
|
200
|
+
... base="main"
|
|
201
|
+
... )
|
|
202
|
+
>>> print(f"PR created: {pr_url}")
|
|
203
|
+
"""
|
|
204
|
+
# Validate installation
|
|
205
|
+
if not self.is_gh_installed():
|
|
206
|
+
raise GitHubCLINotInstalledError(
|
|
207
|
+
"GitHub CLI (gh) is not installed. "
|
|
208
|
+
+ self.get_installation_instructions()
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
# Validate authentication
|
|
212
|
+
if not self.is_authenticated():
|
|
213
|
+
raise GitHubAuthenticationError(
|
|
214
|
+
"GitHub CLI is not authenticated. "
|
|
215
|
+
+ self.get_authentication_instructions()
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
# Build command
|
|
219
|
+
cmd = [
|
|
220
|
+
"gh",
|
|
221
|
+
"pr",
|
|
222
|
+
"create",
|
|
223
|
+
"--repo",
|
|
224
|
+
repo,
|
|
225
|
+
"--title",
|
|
226
|
+
title,
|
|
227
|
+
"--body",
|
|
228
|
+
body,
|
|
229
|
+
"--base",
|
|
230
|
+
base,
|
|
231
|
+
]
|
|
232
|
+
|
|
233
|
+
if head:
|
|
234
|
+
cmd.extend(["--head", head])
|
|
235
|
+
|
|
236
|
+
if draft:
|
|
237
|
+
cmd.append("--draft")
|
|
238
|
+
|
|
239
|
+
# Execute command
|
|
240
|
+
try:
|
|
241
|
+
returncode, stdout, stderr = self._run_gh_command(cmd)
|
|
242
|
+
|
|
243
|
+
if returncode != 0:
|
|
244
|
+
raise GitHubCLIError(f"Failed to create PR: {stderr}")
|
|
245
|
+
|
|
246
|
+
# Extract PR URL from output (gh outputs the URL)
|
|
247
|
+
return stdout.strip().split("\n")[-1]
|
|
248
|
+
|
|
249
|
+
except subprocess.TimeoutExpired as e:
|
|
250
|
+
raise GitHubCLIError(
|
|
251
|
+
f"PR creation timed out after {self.timeout} seconds"
|
|
252
|
+
) from e
|
|
253
|
+
except Exception as e:
|
|
254
|
+
raise GitHubCLIError(f"Failed to create PR: {e}") from e
|
|
255
|
+
|
|
256
|
+
def check_pr_exists(
|
|
257
|
+
self, repo: str, head: str, base: str = "main"
|
|
258
|
+
) -> Optional[str]:
|
|
259
|
+
"""
|
|
260
|
+
Check if a PR already exists for the given head branch.
|
|
261
|
+
|
|
262
|
+
Args:
|
|
263
|
+
repo: Repository in format "owner/repo"
|
|
264
|
+
head: Head branch name
|
|
265
|
+
base: Base branch (default: "main")
|
|
266
|
+
|
|
267
|
+
Returns:
|
|
268
|
+
PR URL if exists, None otherwise
|
|
269
|
+
|
|
270
|
+
Raises:
|
|
271
|
+
GitHubCLINotInstalledError: If gh CLI not installed
|
|
272
|
+
GitHubCLIError: If command fails
|
|
273
|
+
"""
|
|
274
|
+
if not self.is_gh_installed():
|
|
275
|
+
raise GitHubCLINotInstalledError(self.get_installation_instructions())
|
|
276
|
+
|
|
277
|
+
try:
|
|
278
|
+
cmd = [
|
|
279
|
+
"gh",
|
|
280
|
+
"pr",
|
|
281
|
+
"list",
|
|
282
|
+
"--repo",
|
|
283
|
+
repo,
|
|
284
|
+
"--head",
|
|
285
|
+
head,
|
|
286
|
+
"--base",
|
|
287
|
+
base,
|
|
288
|
+
"--json",
|
|
289
|
+
"url",
|
|
290
|
+
"--jq",
|
|
291
|
+
".[0].url",
|
|
292
|
+
]
|
|
293
|
+
|
|
294
|
+
returncode, stdout, _stderr = self._run_gh_command(cmd)
|
|
295
|
+
|
|
296
|
+
if returncode != 0:
|
|
297
|
+
return None
|
|
298
|
+
|
|
299
|
+
pr_url = stdout.strip()
|
|
300
|
+
return pr_url if pr_url else None
|
|
301
|
+
|
|
302
|
+
except Exception:
|
|
303
|
+
return None
|
|
304
|
+
|
|
305
|
+
def get_pr_status(self, pr_url: str) -> Optional[dict]:
|
|
306
|
+
"""
|
|
307
|
+
Get PR status information.
|
|
308
|
+
|
|
309
|
+
Args:
|
|
310
|
+
pr_url: PR URL
|
|
311
|
+
|
|
312
|
+
Returns:
|
|
313
|
+
Dictionary with PR status or None if failed
|
|
314
|
+
|
|
315
|
+
Raises:
|
|
316
|
+
GitHubCLINotInstalledError: If gh CLI not installed
|
|
317
|
+
"""
|
|
318
|
+
if not self.is_gh_installed():
|
|
319
|
+
raise GitHubCLINotInstalledError(self.get_installation_instructions())
|
|
320
|
+
|
|
321
|
+
try:
|
|
322
|
+
cmd = [
|
|
323
|
+
"gh",
|
|
324
|
+
"pr",
|
|
325
|
+
"view",
|
|
326
|
+
pr_url,
|
|
327
|
+
"--json",
|
|
328
|
+
"title,state,url,number",
|
|
329
|
+
]
|
|
330
|
+
|
|
331
|
+
returncode, stdout, _stderr = self._run_gh_command(cmd)
|
|
332
|
+
|
|
333
|
+
if returncode != 0:
|
|
334
|
+
return None
|
|
335
|
+
|
|
336
|
+
import json
|
|
337
|
+
|
|
338
|
+
return json.loads(stdout)
|
|
339
|
+
|
|
340
|
+
except Exception:
|
|
341
|
+
return None
|
|
342
|
+
|
|
343
|
+
def _run_gh_command(self, command: list) -> Tuple[int, str, str]:
|
|
344
|
+
"""
|
|
345
|
+
Run gh command and return result.
|
|
346
|
+
|
|
347
|
+
Args:
|
|
348
|
+
command: Command and arguments
|
|
349
|
+
|
|
350
|
+
Returns:
|
|
351
|
+
Tuple of (returncode, stdout, stderr)
|
|
352
|
+
|
|
353
|
+
Raises:
|
|
354
|
+
subprocess.TimeoutExpired: If command times out
|
|
355
|
+
"""
|
|
356
|
+
try:
|
|
357
|
+
result = subprocess.run(
|
|
358
|
+
command,
|
|
359
|
+
check=False,
|
|
360
|
+
capture_output=True,
|
|
361
|
+
text=True,
|
|
362
|
+
timeout=self.timeout,
|
|
363
|
+
)
|
|
364
|
+
|
|
365
|
+
return result.returncode, result.stdout, result.stderr
|
|
366
|
+
|
|
367
|
+
except subprocess.TimeoutExpired:
|
|
368
|
+
raise
|
|
369
|
+
except Exception as e:
|
|
370
|
+
raise GitHubCLIError(f"Failed to run gh command: {e}") from e
|
|
371
|
+
|
|
372
|
+
def validate_environment(self) -> Tuple[bool, str]:
|
|
373
|
+
"""
|
|
374
|
+
Validate GitHub CLI environment is ready for operations.
|
|
375
|
+
|
|
376
|
+
Returns:
|
|
377
|
+
Tuple of (is_valid, message)
|
|
378
|
+
|
|
379
|
+
Example:
|
|
380
|
+
>>> service = GitHubCLIService()
|
|
381
|
+
>>> valid, msg = service.validate_environment()
|
|
382
|
+
>>> if not valid:
|
|
383
|
+
... print(f"GitHub CLI not ready: {msg}")
|
|
384
|
+
... print(service.get_installation_instructions())
|
|
385
|
+
"""
|
|
386
|
+
# Check installation
|
|
387
|
+
if not self.is_gh_installed():
|
|
388
|
+
return False, "GitHub CLI (gh) is not installed"
|
|
389
|
+
|
|
390
|
+
# Check authentication
|
|
391
|
+
try:
|
|
392
|
+
if not self.is_authenticated():
|
|
393
|
+
return False, "GitHub CLI is not authenticated"
|
|
394
|
+
except Exception as e:
|
|
395
|
+
return False, f"Failed to check authentication: {e}"
|
|
396
|
+
|
|
397
|
+
return True, "GitHub CLI is ready"
|
|
@@ -5,11 +5,7 @@ Exports main monitoring components for backward compatibility.
|
|
|
5
5
|
|
|
6
6
|
from ....core.enums import HealthStatus
|
|
7
7
|
from .aggregator import MonitoringAggregatorService
|
|
8
|
-
from .base import
|
|
9
|
-
HealthChecker,
|
|
10
|
-
HealthCheckResult,
|
|
11
|
-
HealthMetric,
|
|
12
|
-
)
|
|
8
|
+
from .base import HealthChecker, HealthCheckResult, HealthMetric
|
|
13
9
|
|
|
14
10
|
# Legacy exports for backward compatibility
|
|
15
11
|
from .legacy import (
|
|
@@ -10,12 +10,7 @@ from collections import deque
|
|
|
10
10
|
from typing import Any, Callable, Dict, List, Optional
|
|
11
11
|
|
|
12
12
|
from ....core.enums import HealthStatus
|
|
13
|
-
from .base import
|
|
14
|
-
BaseMonitoringService,
|
|
15
|
-
HealthChecker,
|
|
16
|
-
HealthCheckResult,
|
|
17
|
-
HealthMetric,
|
|
18
|
-
)
|
|
13
|
+
from .base import BaseMonitoringService, HealthChecker, HealthCheckResult, HealthMetric
|
|
19
14
|
|
|
20
15
|
|
|
21
16
|
class MonitoringAggregatorService(BaseMonitoringService):
|
|
@@ -177,7 +177,7 @@ class ResourceMonitorService(BaseMonitoringService):
|
|
|
177
177
|
# Load average (Unix only)
|
|
178
178
|
try:
|
|
179
179
|
if hasattr(psutil, "getloadavg"):
|
|
180
|
-
load1, load5,
|
|
180
|
+
load1, load5, _load15 = psutil.getloadavg()
|
|
181
181
|
cpu_count = psutil.cpu_count()
|
|
182
182
|
|
|
183
183
|
# Load is concerning if > cpu_count
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""Instruction caching services for Claude MPM.
|
|
2
|
+
|
|
3
|
+
This package provides services for caching PM instructions to overcome
|
|
4
|
+
CLI argument length limitations on Linux systems.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from .instruction_cache_service import InstructionCacheService
|
|
8
|
+
|
|
9
|
+
__all__ = ["InstructionCacheService"]
|