claude-mpm 4.25.10__py3-none-any.whl → 5.1.8__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/PM_INSTRUCTIONS.md +1055 -2230
- 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_loader.py +10 -35
- claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +576 -66
- claude_mpm/agents/templates/context-management-examples.md +544 -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 +28 -3
- 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/auto_configure.py +537 -239
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +924 -45
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +1 -39
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +322 -19
- claude_mpm/cli/executor.py +22 -3
- claude_mpm/cli/interactive/agent_wizard.py +1028 -43
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
- claude_mpm/cli/parsers/base_parser.py +25 -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 +7 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +456 -103
- claude_mpm/cli/startup_display.py +4 -4
- 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 +9 -0
- 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 +1 -0
- claude_mpm/core/claude_runner.py +5 -34
- claude_mpm/core/config.py +16 -0
- 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/interactive_session.py +83 -7
- 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/core/unified_config.py +22 -0
- 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/memory_integration.py +12 -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/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_lifecycle_manager.py +1 -5
- 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/multi_source_deployment_service.py +115 -15
- 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 +1 -4
- claude_mpm/services/agents/local_template_manager.py +47 -9
- 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/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_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- 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 +34 -6
- 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/mcp_config_manager.py +75 -145
- 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_service_verifier.py +6 -3
- claude_mpm/services/monitor/daemon.py +28 -8
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/project_organizer.py +4 -0
- 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/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/templates/questions/__init__.py +2 -7
- claude_mpm/templates/questions/pr_strategy.py +1 -4
- claude_mpm/templates/questions/project_init.py +1 -4
- claude_mpm/templates/questions/ticket_mgmt.py +1 -4
- claude_mpm/utils/agent_dependency_loader.py +77 -10
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/gitignore.py +3 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +356 -112
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +188 -439
- 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/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 -258
- 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 -181
- 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/cli/README.md +0 -253
- claude_mpm/cli/commands/mcp_install_commands.py.backup +0 -284
- claude_mpm/cli/commands/mpm_init/README.md +0 -365
- claude_mpm/cli_module/refactoring_guide.md +0 -253
- claude_mpm/commands/mpm-tickets.md +0 -151
- claude_mpm/config/agent_capabilities.yaml +0 -658
- claude_mpm/config/async_logging_config.yaml +0 -145
- claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +0 -34
- claude_mpm/d2/.gitignore +0 -22
- claude_mpm/d2/ARCHITECTURE_COMPARISON.md +0 -273
- claude_mpm/d2/FLASK_INTEGRATION.md +0 -156
- claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +0 -452
- claude_mpm/d2/QUICKSTART.md +0 -186
- claude_mpm/d2/README.md +0 -232
- claude_mpm/d2/STORE_FIX_SUMMARY.md +0 -167
- claude_mpm/d2/SVELTE5_STORES_GUIDE.md +0 -180
- claude_mpm/d2/TESTING.md +0 -288
- claude_mpm/d2/index.html +0 -118
- claude_mpm/d2/package.json +0 -19
- claude_mpm/d2/src/App.svelte +0 -110
- claude_mpm/d2/src/components/Header.svelte +0 -153
- claude_mpm/d2/src/components/MainContent.svelte +0 -74
- claude_mpm/d2/src/components/Sidebar.svelte +0 -85
- claude_mpm/d2/src/components/tabs/EventsTab.svelte +0 -326
- claude_mpm/d2/src/lib/socketio.js +0 -144
- claude_mpm/d2/src/main.js +0 -7
- claude_mpm/d2/src/stores/events.js +0 -114
- claude_mpm/d2/src/stores/socket.js +0 -108
- claude_mpm/d2/src/stores/theme.js +0 -65
- claude_mpm/d2/svelte.config.js +0 -12
- claude_mpm/d2/vite.config.js +0 -15
- claude_mpm/dashboard/.claude-mpm/memories/README.md +0 -36
- claude_mpm/dashboard/BUILD_NUMBER +0 -1
- claude_mpm/dashboard/README.md +0 -121
- claude_mpm/dashboard/VERSION +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +0 -273
- claude_mpm/dashboard/react/components/ErrorBoundary.tsx +0 -75
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +0 -141
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +0 -36
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/react/components/shared/FilterBar.tsx +0 -89
- claude_mpm/dashboard/react/contexts/DashboardContext.tsx +0 -215
- claude_mpm/dashboard/react/entries/events.tsx +0 -165
- claude_mpm/dashboard/react/hooks/useEvents.ts +0 -191
- claude_mpm/dashboard/react/hooks/useSocket.ts +0 -225
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +0 -170
- 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/activity-tree.js.map +0 -1
- 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/agent-inference.js.map +0 -1
- 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-tree.js.map +0 -1
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js.map +0 -1
- 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-processor.js.map +0 -1
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js.map +0 -1
- 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-tool-tracker.js.map +0 -1
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js.map +0 -1
- 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/session-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js.map +0 -1
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/dashboard.js.map +0 -1
- 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/react/events.js.map +0 -1
- 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/socket-client.js.map +0 -1
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +0 -170
- 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/navigation-test-results.md +0 -118
- 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/templates/.claude-mpm/memories/README.md +0 -36
- claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +0 -39
- claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +0 -38
- claude_mpm/hooks/README.md +0 -143
- claude_mpm/hooks/templates/README.md +0 -180
- claude_mpm/hooks/templates/settings.json.example +0 -147
- claude_mpm/schemas/agent_schema.json +0 -596
- claude_mpm/schemas/frontmatter_schema.json +0 -165
- claude_mpm/services/event_bus/README.md +0 -244
- claude_mpm/services/events/README.md +0 -303
- claude_mpm/services/framework_claude_md_generator/README.md +0 -119
- claude_mpm/services/mcp_gateway/README.md +0 -185
- claude_mpm/services/socketio/handlers/connection.py.backup +0 -217
- claude_mpm/services/socketio/handlers/hook.py.backup +0 -154
- claude_mpm/services/static/.gitkeep +0 -2
- claude_mpm/services/version_control/VERSION +0 -1
- claude_mpm/skills/bundled/.gitkeep +0 -2
- 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/git-worktrees.md +0 -317
- 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/stacked-prs.md +0 -251
- 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/find-polluter.sh +0 -63
- 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/infrastructure/env-manager/INTEGRATION.md +0 -611
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +0 -596
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +0 -260
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +0 -315
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +0 -436
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +0 -433
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +0 -452
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +0 -404
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +0 -420
- claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +0 -54
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +0 -322
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +0 -202
- 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/LICENSE.txt +0 -202
- 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/mcp-builder/scripts/example_evaluation.xml +0 -22
- claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +0 -2
- claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +0 -202
- 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/react/flexlayout-react.md +0 -742
- 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/tauri/tauri-async-patterns.md +0 -495
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +0 -599
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +0 -535
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +0 -613
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +0 -648
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +0 -673
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +0 -767
- claude_mpm/skills/bundled/tauri/tauri-performance.md +0 -669
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +0 -573
- claude_mpm/skills/bundled/tauri/tauri-testing.md +0 -384
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +0 -628
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
- claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +0 -158
- 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/test-quality-inspector/SKILL.md +0 -458
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +0 -411
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +0 -317
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +0 -270
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +0 -436
- 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/LICENSE.txt +0 -202
- 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/templates/questions/EXAMPLES.md +0 -501
- claude_mpm/tools/README_SOCKETIO_DEBUG.md +0 -224
- claude_mpm/tools/code_tree_analyzer/README.md +0 -64
- /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/{pm_red_flags.md → pm-red-flags.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.25.10.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
|
@@ -83,6 +83,7 @@ class SkillsManagementCommand(BaseCommand):
|
|
|
83
83
|
SkillsCommands.UPDATE.value: self._update_skills,
|
|
84
84
|
SkillsCommands.INFO.value: self._show_skill_info,
|
|
85
85
|
SkillsCommands.CONFIG.value: self._manage_config,
|
|
86
|
+
SkillsCommands.CONFIGURE.value: self._configure_skills,
|
|
86
87
|
# GitHub deployment commands
|
|
87
88
|
SkillsCommands.DEPLOY_FROM_GITHUB.value: self._deploy_from_github,
|
|
88
89
|
SkillsCommands.LIST_AVAILABLE.value: self._list_available_github_skills,
|
|
@@ -195,55 +196,109 @@ class SkillsManagementCommand(BaseCommand):
|
|
|
195
196
|
return CommandResult(success=False, message=str(e), exit_code=1)
|
|
196
197
|
|
|
197
198
|
def _deploy_skills(self, args) -> CommandResult:
|
|
198
|
-
"""Deploy
|
|
199
|
+
"""Deploy skills using two-phase sync: cache → deploy.
|
|
200
|
+
|
|
201
|
+
Phase 3 Integration (1M-486): Uses Git skill source manager for deployment.
|
|
202
|
+
- Phase 1: Sync skills to ~/.claude-mpm/cache/skills/ (if needed)
|
|
203
|
+
- Phase 2: Deploy from cache to project .claude-mpm/skills/
|
|
204
|
+
|
|
205
|
+
This replaces bundled skill deployment with a multi-project
|
|
206
|
+
architecture where one cache serves multiple project deployments.
|
|
207
|
+
"""
|
|
199
208
|
try:
|
|
209
|
+
from pathlib import Path
|
|
210
|
+
|
|
211
|
+
from ...config.skill_sources import SkillSourceConfiguration
|
|
212
|
+
from ...services.skills.git_skill_source_manager import (
|
|
213
|
+
GitSkillSourceManager,
|
|
214
|
+
)
|
|
215
|
+
|
|
200
216
|
force = getattr(args, "force", False)
|
|
201
217
|
specific_skills = getattr(args, "skills", None)
|
|
202
218
|
|
|
203
219
|
console.print("\n[bold cyan]Deploying skills...[/bold cyan]\n")
|
|
204
220
|
|
|
205
|
-
|
|
206
|
-
|
|
221
|
+
# Initialize git skill source manager
|
|
222
|
+
config = SkillSourceConfiguration.load()
|
|
223
|
+
git_skill_manager = GitSkillSourceManager(config)
|
|
224
|
+
project_dir = Path.cwd()
|
|
225
|
+
|
|
226
|
+
# Phase 1: Sync skills to cache
|
|
227
|
+
console.print("[dim]Phase 1: Syncing skills to cache...[/dim]")
|
|
228
|
+
sync_results = git_skill_manager.sync_all_sources(force=force)
|
|
229
|
+
|
|
230
|
+
synced_count = sum(
|
|
231
|
+
1 for result in sync_results.values() if result.get("synced")
|
|
232
|
+
)
|
|
233
|
+
console.print(f"[dim]Synced {synced_count} skill source(s)[/dim]\n")
|
|
234
|
+
|
|
235
|
+
# Phase 2: Deploy from cache to project
|
|
236
|
+
console.print("[dim]Phase 2: Deploying from cache to project...[/dim]\n")
|
|
237
|
+
deploy_result = git_skill_manager.deploy_skills_to_project(
|
|
238
|
+
project_dir=project_dir,
|
|
239
|
+
skill_list=specific_skills,
|
|
240
|
+
force=force,
|
|
207
241
|
)
|
|
208
242
|
|
|
209
243
|
# Display results
|
|
210
|
-
if
|
|
244
|
+
if deploy_result["deployed"]:
|
|
211
245
|
console.print(
|
|
212
|
-
f"[green]✓ Deployed {len(
|
|
246
|
+
f"[green]✓ Deployed {len(deploy_result['deployed'])} skill(s):[/green]"
|
|
213
247
|
)
|
|
214
|
-
for skill in
|
|
248
|
+
for skill in deploy_result["deployed"]:
|
|
215
249
|
console.print(f" • {skill}")
|
|
216
250
|
console.print()
|
|
217
251
|
|
|
218
|
-
if
|
|
252
|
+
if deploy_result["updated"]:
|
|
219
253
|
console.print(
|
|
220
|
-
f"[
|
|
254
|
+
f"[green]⟳ Updated {len(deploy_result['updated'])} skill(s):[/green]"
|
|
221
255
|
)
|
|
222
|
-
for skill in
|
|
256
|
+
for skill in deploy_result["updated"]:
|
|
257
|
+
console.print(f" • {skill}")
|
|
258
|
+
console.print()
|
|
259
|
+
|
|
260
|
+
if deploy_result["skipped"]:
|
|
261
|
+
console.print(
|
|
262
|
+
f"[yellow]⊘ Skipped {len(deploy_result['skipped'])} skill(s) (already up-to-date):[/yellow]"
|
|
263
|
+
)
|
|
264
|
+
for skill in deploy_result["skipped"]:
|
|
223
265
|
console.print(f" • {skill}")
|
|
224
266
|
console.print("[dim]Use --force to redeploy[/dim]\n")
|
|
225
267
|
|
|
226
|
-
if
|
|
268
|
+
if deploy_result["failed"]:
|
|
227
269
|
console.print(
|
|
228
|
-
f"[red]✗ Failed to deploy {len(
|
|
270
|
+
f"[red]✗ Failed to deploy {len(deploy_result['failed'])} skill(s):[/red]"
|
|
229
271
|
)
|
|
230
|
-
for skill
|
|
231
|
-
console.print(f" • {skill}
|
|
272
|
+
for skill in deploy_result["failed"]:
|
|
273
|
+
console.print(f" • {skill}")
|
|
232
274
|
console.print()
|
|
233
275
|
|
|
234
276
|
# Summary
|
|
277
|
+
success_count = len(deploy_result["deployed"]) + len(
|
|
278
|
+
deploy_result["updated"]
|
|
279
|
+
)
|
|
235
280
|
total = (
|
|
236
|
-
|
|
281
|
+
success_count
|
|
282
|
+
+ len(deploy_result["skipped"])
|
|
283
|
+
+ len(deploy_result["failed"])
|
|
237
284
|
)
|
|
238
285
|
console.print(
|
|
239
|
-
f"[bold]Summary:[/bold] {
|
|
240
|
-
f"{len(
|
|
241
|
-
f"(Total: {total})\n"
|
|
286
|
+
f"[bold]Summary:[/bold] {success_count} deployed/updated, "
|
|
287
|
+
f"{len(deploy_result['skipped'])} skipped, "
|
|
288
|
+
f"{len(deploy_result['failed'])} errors (Total: {total})\n"
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
console.print(
|
|
292
|
+
f"[dim]Deployment directory: {deploy_result['deployment_dir']}[/dim]\n"
|
|
242
293
|
)
|
|
243
294
|
|
|
244
295
|
# Exit with error if any deployments failed
|
|
245
|
-
exit_code = 1 if
|
|
246
|
-
return CommandResult(
|
|
296
|
+
exit_code = 1 if deploy_result["failed"] else 0
|
|
297
|
+
return CommandResult(
|
|
298
|
+
success=not deploy_result["failed"],
|
|
299
|
+
message=f"Deployed {success_count} skills from cache",
|
|
300
|
+
exit_code=exit_code,
|
|
301
|
+
)
|
|
247
302
|
|
|
248
303
|
except Exception as e:
|
|
249
304
|
console.print(f"[red]Error deploying skills: {e}[/red]")
|
|
@@ -896,6 +951,254 @@ class SkillsManagementCommand(BaseCommand):
|
|
|
896
951
|
return CommandResult(success=False, message=str(e), exit_code=1)
|
|
897
952
|
except Exception as e:
|
|
898
953
|
console.print(f"[red]Unexpected error: {e}[/red]")
|
|
954
|
+
|
|
955
|
+
def _configure_skills(self, args) -> CommandResult:
|
|
956
|
+
"""Interactive skills configuration with checkbox selection.
|
|
957
|
+
|
|
958
|
+
Provides checkbox-based selection interface matching agents configure UX:
|
|
959
|
+
- Status column showing Installed/Available
|
|
960
|
+
- Pre-selection for installed skills
|
|
961
|
+
- Apply/Adjust/Cancel menu
|
|
962
|
+
- While loop for adjustment
|
|
963
|
+
- Simplified labels (checkbox state only)
|
|
964
|
+
|
|
965
|
+
This is Option 3 (Hybrid approach): Separate command for interactive mode
|
|
966
|
+
while keeping deploy-github for CLI automation.
|
|
967
|
+
"""
|
|
968
|
+
try:
|
|
969
|
+
import questionary
|
|
970
|
+
from questionary import Choice, Style
|
|
971
|
+
from rich.prompt import Prompt
|
|
972
|
+
|
|
973
|
+
# Questionary style (matching agents configure)
|
|
974
|
+
QUESTIONARY_STYLE = Style(
|
|
975
|
+
[
|
|
976
|
+
(
|
|
977
|
+
"selected",
|
|
978
|
+
"fg:#e0e0e0 bold",
|
|
979
|
+
), # Light gray - excellent readability
|
|
980
|
+
(
|
|
981
|
+
"pointer",
|
|
982
|
+
"fg:#ffd700 bold",
|
|
983
|
+
), # Gold/yellow - highly visible pointer
|
|
984
|
+
("highlighted", "fg:#e0e0e0"), # Light gray - clear hover state
|
|
985
|
+
(
|
|
986
|
+
"question",
|
|
987
|
+
"fg:#e0e0e0 bold",
|
|
988
|
+
), # Light gray bold - prominent questions
|
|
989
|
+
("checkbox", "fg:#00ff00"), # Green - for checked boxes
|
|
990
|
+
(
|
|
991
|
+
"checkbox-selected",
|
|
992
|
+
"fg:#00ff00 bold",
|
|
993
|
+
), # Green bold - for checked selected boxes
|
|
994
|
+
]
|
|
995
|
+
)
|
|
996
|
+
|
|
997
|
+
console.print("\n[bold cyan]Interactive Skills Configuration[/bold cyan]\n")
|
|
998
|
+
console.print(
|
|
999
|
+
"[dim]Select skills to install/uninstall using checkboxes[/dim]"
|
|
1000
|
+
)
|
|
1001
|
+
console.print("[dim]● = Installed, ○ = Available[/dim]\n")
|
|
1002
|
+
|
|
1003
|
+
# Get deployed skills for status detection
|
|
1004
|
+
deployed_result = self.skills_deployer.check_deployed_skills()
|
|
1005
|
+
deployed_skills = {
|
|
1006
|
+
skill["name"] for skill in deployed_result.get("skills", [])
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
# Get available skills from GitHub
|
|
1010
|
+
console.print("[dim]Fetching available skills from GitHub...[/dim]\n")
|
|
1011
|
+
available_result = self.skills_deployer.list_available_skills()
|
|
1012
|
+
|
|
1013
|
+
if available_result.get("error"):
|
|
1014
|
+
console.print(f"[red]Error: {available_result['error']}[/red]")
|
|
1015
|
+
return CommandResult(
|
|
1016
|
+
success=False, message=available_result["error"], exit_code=1
|
|
1017
|
+
)
|
|
1018
|
+
|
|
1019
|
+
# Flatten skills by category
|
|
1020
|
+
all_skills = []
|
|
1021
|
+
for category, skills in available_result.get("by_category", {}).items():
|
|
1022
|
+
for skill in skills:
|
|
1023
|
+
skill_info = {
|
|
1024
|
+
"name": skill.get("name", "unknown"),
|
|
1025
|
+
"category": category,
|
|
1026
|
+
"is_deployed": skill.get("name", "unknown") in deployed_skills,
|
|
1027
|
+
}
|
|
1028
|
+
all_skills.append(skill_info)
|
|
1029
|
+
|
|
1030
|
+
# Sort by deployed status (deployed first), then by name
|
|
1031
|
+
all_skills.sort(key=lambda s: (not s["is_deployed"], s["name"]))
|
|
1032
|
+
|
|
1033
|
+
# Build checkbox choices with pre-selection
|
|
1034
|
+
# Loop to allow adjusting selection
|
|
1035
|
+
while True:
|
|
1036
|
+
skill_choices = []
|
|
1037
|
+
skill_map = {} # For lookup after selection
|
|
1038
|
+
|
|
1039
|
+
for skill in all_skills:
|
|
1040
|
+
skill_name = skill["name"]
|
|
1041
|
+
category = skill["category"]
|
|
1042
|
+
is_deployed = skill["is_deployed"]
|
|
1043
|
+
|
|
1044
|
+
# Simple format: "skill-name (category)"
|
|
1045
|
+
# Checkbox state (checked/unchecked) indicates installed status
|
|
1046
|
+
choice_text = f"{skill_name} ({category})"
|
|
1047
|
+
|
|
1048
|
+
# Pre-select if deployed
|
|
1049
|
+
choice = Choice(
|
|
1050
|
+
title=choice_text, value=skill_name, checked=is_deployed
|
|
1051
|
+
)
|
|
1052
|
+
|
|
1053
|
+
skill_choices.append(choice)
|
|
1054
|
+
skill_map[skill_name] = skill
|
|
1055
|
+
|
|
1056
|
+
# Display checkbox selection
|
|
1057
|
+
selected_skills = questionary.checkbox(
|
|
1058
|
+
"Select skills (Space to toggle, Enter to confirm):",
|
|
1059
|
+
choices=skill_choices,
|
|
1060
|
+
style=QUESTIONARY_STYLE,
|
|
1061
|
+
).ask()
|
|
1062
|
+
|
|
1063
|
+
if selected_skills is None:
|
|
1064
|
+
# User cancelled (Ctrl+C)
|
|
1065
|
+
console.print("[yellow]Skills configuration cancelled[/yellow]")
|
|
1066
|
+
return CommandResult(success=True, exit_code=0)
|
|
1067
|
+
|
|
1068
|
+
# Determine changes
|
|
1069
|
+
to_install = []
|
|
1070
|
+
to_remove = []
|
|
1071
|
+
|
|
1072
|
+
for skill in all_skills:
|
|
1073
|
+
skill_name = skill["name"]
|
|
1074
|
+
is_deployed = skill["is_deployed"]
|
|
1075
|
+
is_selected = skill_name in selected_skills
|
|
1076
|
+
|
|
1077
|
+
if is_selected and not is_deployed:
|
|
1078
|
+
to_install.append(skill_name)
|
|
1079
|
+
elif not is_selected and is_deployed:
|
|
1080
|
+
to_remove.append(skill_name)
|
|
1081
|
+
|
|
1082
|
+
# Show summary of changes
|
|
1083
|
+
console.print("\n[bold]Changes to apply:[/bold]")
|
|
1084
|
+
if to_install:
|
|
1085
|
+
console.print(
|
|
1086
|
+
f"\n[green]✓ Install ({len(to_install)} skills):[/green]"
|
|
1087
|
+
)
|
|
1088
|
+
for skill in to_install:
|
|
1089
|
+
console.print(f" • {skill}")
|
|
1090
|
+
|
|
1091
|
+
if to_remove:
|
|
1092
|
+
console.print(
|
|
1093
|
+
f"\n[yellow]✗ Remove ({len(to_remove)} skills):[/yellow]"
|
|
1094
|
+
)
|
|
1095
|
+
for skill in to_remove:
|
|
1096
|
+
console.print(f" • {skill}")
|
|
1097
|
+
|
|
1098
|
+
if not to_install and not to_remove:
|
|
1099
|
+
console.print(
|
|
1100
|
+
"\n[dim]No changes (selection matches current deployment)[/dim]"
|
|
1101
|
+
)
|
|
1102
|
+
|
|
1103
|
+
console.print()
|
|
1104
|
+
|
|
1105
|
+
# Ask user to confirm, adjust, or cancel
|
|
1106
|
+
action = questionary.select(
|
|
1107
|
+
"\nWhat would you like to do?",
|
|
1108
|
+
choices=[
|
|
1109
|
+
Choice("Apply these changes", value="apply"),
|
|
1110
|
+
Choice("Adjust selection", value="adjust"),
|
|
1111
|
+
Choice("Cancel", value="cancel"),
|
|
1112
|
+
],
|
|
1113
|
+
default="apply",
|
|
1114
|
+
style=QUESTIONARY_STYLE,
|
|
1115
|
+
).ask()
|
|
1116
|
+
|
|
1117
|
+
if action == "cancel":
|
|
1118
|
+
console.print("[yellow]Changes cancelled[/yellow]")
|
|
1119
|
+
Prompt.ask("\nPress Enter to continue")
|
|
1120
|
+
return CommandResult(success=True, exit_code=0)
|
|
1121
|
+
if action == "adjust":
|
|
1122
|
+
# Loop back to skill selection
|
|
1123
|
+
console.print("\n[dim]Adjusting selection...[/dim]\n")
|
|
1124
|
+
continue
|
|
1125
|
+
|
|
1126
|
+
# Apply changes
|
|
1127
|
+
success = True
|
|
1128
|
+
errors = []
|
|
1129
|
+
|
|
1130
|
+
# Install skills
|
|
1131
|
+
if to_install:
|
|
1132
|
+
console.print("\n[bold cyan]Installing skills...[/bold cyan]\n")
|
|
1133
|
+
for skill_name in to_install:
|
|
1134
|
+
try:
|
|
1135
|
+
# Deploy single skill
|
|
1136
|
+
result = self.skills_deployer.deploy_skills(
|
|
1137
|
+
skill_names=[skill_name], force=False
|
|
1138
|
+
)
|
|
1139
|
+
|
|
1140
|
+
if result.get("errors"):
|
|
1141
|
+
errors.extend(result["errors"])
|
|
1142
|
+
success = False
|
|
1143
|
+
else:
|
|
1144
|
+
console.print(
|
|
1145
|
+
f"[green]✓ Installed: {skill_name}[/green]"
|
|
1146
|
+
)
|
|
1147
|
+
except Exception as e:
|
|
1148
|
+
errors.append(f"Failed to install {skill_name}: {e}")
|
|
1149
|
+
success = False
|
|
1150
|
+
|
|
1151
|
+
# Remove skills
|
|
1152
|
+
if to_remove:
|
|
1153
|
+
console.print("\n[bold yellow]Removing skills...[/bold yellow]\n")
|
|
1154
|
+
for skill_name in to_remove:
|
|
1155
|
+
try:
|
|
1156
|
+
# Remove single skill
|
|
1157
|
+
result = self.skills_deployer.remove_skills(
|
|
1158
|
+
skill_names=[skill_name]
|
|
1159
|
+
)
|
|
1160
|
+
|
|
1161
|
+
if result.get("errors"):
|
|
1162
|
+
errors.extend(result["errors"])
|
|
1163
|
+
success = False
|
|
1164
|
+
else:
|
|
1165
|
+
console.print(
|
|
1166
|
+
f"[yellow]✗ Removed: {skill_name}[/yellow]"
|
|
1167
|
+
)
|
|
1168
|
+
except Exception as e:
|
|
1169
|
+
errors.append(f"Failed to remove {skill_name}: {e}")
|
|
1170
|
+
success = False
|
|
1171
|
+
|
|
1172
|
+
# Show errors if any
|
|
1173
|
+
if errors:
|
|
1174
|
+
console.print(f"\n[red]✗ {len(errors)} error(s):[/red]")
|
|
1175
|
+
for error in errors:
|
|
1176
|
+
console.print(f" • {error}")
|
|
1177
|
+
|
|
1178
|
+
# Show restart instructions
|
|
1179
|
+
if success and (to_install or to_remove):
|
|
1180
|
+
console.print(
|
|
1181
|
+
"\n[bold green]✓ Changes applied successfully![/bold green]"
|
|
1182
|
+
)
|
|
1183
|
+
console.print("\n[yellow]⚠️ Important:[/yellow]")
|
|
1184
|
+
console.print(" Restart Claude Code for changes to take effect")
|
|
1185
|
+
|
|
1186
|
+
console.print()
|
|
1187
|
+
Prompt.ask("\nPress Enter to continue")
|
|
1188
|
+
|
|
1189
|
+
# Exit the loop after successful execution
|
|
1190
|
+
break
|
|
1191
|
+
|
|
1192
|
+
exit_code = 0 if success else 1
|
|
1193
|
+
return CommandResult(success=success, exit_code=exit_code)
|
|
1194
|
+
|
|
1195
|
+
except Exception as e:
|
|
1196
|
+
console.print(f"[red]Error in skills configuration: {e}[/red]")
|
|
1197
|
+
import traceback
|
|
1198
|
+
|
|
1199
|
+
console.print(f"[dim]{traceback.format_exc()}[/dim]")
|
|
1200
|
+
return CommandResult(success=False, message=str(e), exit_code=1)
|
|
1201
|
+
|
|
899
1202
|
return CommandResult(success=False, message=str(e), exit_code=1)
|
|
900
1203
|
|
|
901
1204
|
|
claude_mpm/cli/executor.py
CHANGED
|
@@ -13,7 +13,6 @@ from .commands import (
|
|
|
13
13
|
cleanup_memory,
|
|
14
14
|
manage_agent_manager,
|
|
15
15
|
manage_agents,
|
|
16
|
-
manage_config,
|
|
17
16
|
manage_configure,
|
|
18
17
|
manage_debug,
|
|
19
18
|
manage_mcp,
|
|
@@ -126,6 +125,22 @@ def execute_command(command: str, args) -> int:
|
|
|
126
125
|
result = handle_verify(args)
|
|
127
126
|
return result if result is not None else 0
|
|
128
127
|
|
|
128
|
+
# Handle skill-source command with lazy import
|
|
129
|
+
if command == "skill-source":
|
|
130
|
+
# Lazy import to avoid loading unless needed
|
|
131
|
+
from .commands.skill_source import skill_source_command
|
|
132
|
+
|
|
133
|
+
result = skill_source_command(args)
|
|
134
|
+
return result if result is not None else 0
|
|
135
|
+
|
|
136
|
+
# Handle agent-source command with lazy import
|
|
137
|
+
if command == "agent-source":
|
|
138
|
+
# Lazy import to avoid loading unless needed
|
|
139
|
+
from .commands.agent_source import agent_source_command
|
|
140
|
+
|
|
141
|
+
result = agent_source_command(args)
|
|
142
|
+
return result if result is not None else 0
|
|
143
|
+
|
|
129
144
|
# Handle auto-configure command with lazy import
|
|
130
145
|
if command == "auto-configure":
|
|
131
146
|
# Lazy import to avoid loading unless needed
|
|
@@ -213,8 +228,10 @@ def execute_command(command: str, args) -> int:
|
|
|
213
228
|
CLICommands.MEMORY.value: manage_memory,
|
|
214
229
|
CLICommands.MONITOR.value: manage_monitor,
|
|
215
230
|
CLICommands.DASHBOARD.value: manage_dashboard,
|
|
216
|
-
|
|
217
|
-
|
|
231
|
+
# Configuration management commands (synonymous)
|
|
232
|
+
# Both 'config' and 'configure' launch the interactive configuration TUI
|
|
233
|
+
CLICommands.CONFIG.value: manage_configure, # Alias to configure
|
|
234
|
+
CLICommands.CONFIGURE.value: manage_configure, # Interactive configuration TUI
|
|
218
235
|
CLICommands.AGGREGATE.value: aggregate_command,
|
|
219
236
|
CLICommands.ANALYZE_CODE.value: manage_analyze_code,
|
|
220
237
|
CLICommands.CLEANUP.value: cleanup_memory,
|
|
@@ -249,6 +266,8 @@ def execute_command(command: str, args) -> int:
|
|
|
249
266
|
"verify",
|
|
250
267
|
"auto-configure",
|
|
251
268
|
"local-deploy",
|
|
269
|
+
"skill-source",
|
|
270
|
+
"agent-source",
|
|
252
271
|
]
|
|
253
272
|
|
|
254
273
|
suggestion = suggest_similar_commands(command, all_commands)
|