claude-mpm 4.16.0__py3-none-any.whl → 4.25.10__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_ENGINEER.md +286 -0
- claude_mpm/agents/BASE_PM.md +272 -23
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1821 -32
- claude_mpm/agents/WORKFLOW.md +75 -2
- claude_mpm/agents/agent_loader.py +4 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/api_qa.json +5 -2
- claude_mpm/agents/templates/circuit_breakers.md +108 -2
- claude_mpm/agents/templates/documentation.json +33 -6
- claude_mpm/agents/templates/engineer.json +5 -1
- claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
- claude_mpm/agents/templates/php-engineer.json +10 -4
- claude_mpm/agents/templates/pm_red_flags.md +89 -19
- claude_mpm/agents/templates/project_organizer.json +7 -3
- claude_mpm/agents/templates/python_engineer.json +8 -3
- claude_mpm/agents/templates/qa.json +2 -1
- claude_mpm/agents/templates/react_engineer.json +1 -0
- claude_mpm/agents/templates/research.json +82 -12
- claude_mpm/agents/templates/rust_engineer.json +12 -7
- claude_mpm/agents/templates/security.json +4 -4
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/agents/templates/tauri_engineer.json +274 -0
- claude_mpm/agents/templates/ticketing.json +10 -6
- claude_mpm/agents/templates/version_control.json +4 -2
- claude_mpm/agents/templates/web_qa.json +2 -1
- claude_mpm/cli/README.md +253 -0
- claude_mpm/cli/__init__.py +11 -1
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mcp_install_commands.py.backup +284 -0
- claude_mpm/cli/commands/mpm_init/README.md +365 -0
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +573 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +67 -1
- claude_mpm/cli/commands/run.py +124 -128
- claude_mpm/cli/commands/skills.py +922 -0
- claude_mpm/cli/executor.py +58 -0
- claude_mpm/cli/interactive/agent_wizard.py +5 -5
- claude_mpm/cli/parsers/base_parser.py +35 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skills_parser.py +275 -0
- claude_mpm/cli/startup.py +168 -8
- 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/cli_module/refactoring_guide.md +253 -0
- claude_mpm/commands/mpm-auto-configure.md +52 -0
- claude_mpm/commands/mpm-help.md +6 -0
- claude_mpm/commands/mpm-init.md +130 -8
- claude_mpm/commands/mpm-resume.md +372 -0
- claude_mpm/commands/mpm-tickets.md +56 -7
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +2 -0
- claude_mpm/config/agent_capabilities.yaml +658 -0
- claude_mpm/config/agent_config.py +2 -2
- claude_mpm/config/async_logging_config.yaml +145 -0
- claude_mpm/constants.py +24 -0
- claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +14 -1
- claude_mpm/core/config.py +50 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/factories.py +1 -1
- 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 +48 -3
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +39 -0
- claude_mpm/core/optimized_agent_loader.py +3 -3
- claude_mpm/d2/.gitignore +22 -0
- claude_mpm/d2/ARCHITECTURE_COMPARISON.md +273 -0
- claude_mpm/d2/FLASK_INTEGRATION.md +156 -0
- claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +452 -0
- claude_mpm/d2/QUICKSTART.md +186 -0
- claude_mpm/d2/README.md +232 -0
- claude_mpm/d2/STORE_FIX_SUMMARY.md +167 -0
- claude_mpm/d2/SVELTE5_STORES_GUIDE.md +180 -0
- claude_mpm/d2/TESTING.md +288 -0
- claude_mpm/d2/index.html +118 -0
- claude_mpm/d2/package.json +19 -0
- claude_mpm/d2/src/App.svelte +110 -0
- claude_mpm/d2/src/components/Header.svelte +153 -0
- claude_mpm/d2/src/components/MainContent.svelte +74 -0
- claude_mpm/d2/src/components/Sidebar.svelte +85 -0
- claude_mpm/d2/src/components/tabs/EventsTab.svelte +326 -0
- claude_mpm/d2/src/lib/socketio.js +144 -0
- claude_mpm/d2/src/main.js +7 -0
- claude_mpm/d2/src/stores/events.js +114 -0
- claude_mpm/d2/src/stores/socket.js +108 -0
- claude_mpm/d2/src/stores/theme.js +65 -0
- claude_mpm/d2/svelte.config.js +12 -0
- claude_mpm/d2/vite.config.js +15 -0
- claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
- claude_mpm/dashboard/BUILD_NUMBER +1 -0
- claude_mpm/dashboard/README.md +121 -0
- claude_mpm/dashboard/VERSION +1 -0
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +273 -0
- claude_mpm/dashboard/react/components/ErrorBoundary.tsx +75 -0
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +141 -0
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +36 -0
- claude_mpm/dashboard/react/components/shared/FilterBar.tsx +89 -0
- claude_mpm/dashboard/react/contexts/DashboardContext.tsx +215 -0
- claude_mpm/dashboard/react/entries/events.tsx +165 -0
- claude_mpm/dashboard/react/hooks/useEvents.ts +191 -0
- claude_mpm/dashboard/react/hooks/useSocket.ts +225 -0
- claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +170 -0
- claude_mpm/dashboard/static/built/components/activity-tree.js.map +1 -0
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/built/components/agent-inference.js.map +1 -0
- claude_mpm/dashboard/static/built/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/built/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +29 -29
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +24 -24
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +27 -27
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +25 -25
- claude_mpm/dashboard/static/built/components/code-tree.js.map +1 -0
- claude_mpm/dashboard/static/built/components/code-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/built/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/built/components/event-processor.js.map +1 -0
- claude_mpm/dashboard/static/built/components/event-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/export-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +1 -0
- claude_mpm/dashboard/static/built/components/file-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/module-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/session-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/socket-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/working-directory.js.map +1 -0
- claude_mpm/dashboard/static/built/connection-manager.js +76 -76
- claude_mpm/dashboard/static/built/dashboard.js.map +1 -0
- claude_mpm/dashboard/static/built/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/built/react/events.js.map +1 -0
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +9 -9
- claude_mpm/dashboard/static/built/shared/event-bus.js +5 -5
- claude_mpm/dashboard/static/built/shared/logger.js +16 -16
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +6 -6
- claude_mpm/dashboard/static/built/socket-client.js.map +1 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/index.html +22 -22
- claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +170 -0
- 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/shared/dom-helpers.js +9 -9
- claude_mpm/dashboard/static/js/shared/event-bus.js +5 -5
- claude_mpm/dashboard/static/js/shared/logger.js +16 -16
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +6 -6
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/static/navigation-test-results.md +118 -0
- claude_mpm/dashboard/static/production/main.html +21 -21
- claude_mpm/dashboard/static/test-archive/dashboard.html +22 -22
- claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
- claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
- claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/hooks/README.md +143 -0
- claude_mpm/hooks/__init__.py +8 -0
- 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/claude_hooks/response_tracking.py +35 -1
- claude_mpm/hooks/session_resume_hook.py +121 -0
- claude_mpm/hooks/templates/README.md +180 -0
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/hooks/templates/settings.json.example +147 -0
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/schemas/agent_schema.json +596 -0
- claude_mpm/schemas/frontmatter_schema.json +165 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/auto_config_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
- claude_mpm/services/agents/deployment/agent_validator.py +17 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/loading/framework_agent_loader.py +8 -8
- claude_mpm/services/agents/local_template_manager.py +4 -2
- claude_mpm/services/agents/recommender.py +47 -0
- claude_mpm/services/cli/resume_service.py +617 -0
- claude_mpm/services/cli/session_manager.py +87 -0
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +372 -0
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/core/base.py +26 -11
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/agent_config.py +3 -0
- claude_mpm/services/core/models/process.py +4 -0
- claude_mpm/services/core/path_resolver.py +1 -1
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- 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/doctor_reporter.py +6 -4
- claude_mpm/services/diagnostics/models.py +21 -0
- claude_mpm/services/event_bus/README.md +244 -0
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/event_bus/event_bus.py +36 -3
- claude_mpm/services/event_bus/relay.py +23 -7
- claude_mpm/services/events/README.md +303 -0
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/framework_claude_md_generator/README.md +119 -0
- claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/local_ops/__init__.py +2 -0
- claude_mpm/services/local_ops/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_config_manager.py +7 -131
- claude_mpm/services/mcp_gateway/README.md +185 -0
- claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
- 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/external_mcp_services.py +26 -21
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/memory/failure_tracker.py +19 -4
- 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/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/session_manager.py +205 -1
- 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/connection.py.backup +217 -0
- claude_mpm/services/socketio/handlers/git.py +2 -2
- claude_mpm/services/socketio/handlers/hook.py.backup +154 -0
- claude_mpm/services/static/.gitkeep +2 -0
- 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/local.py +1 -1
- claude_mpm/services/version_control/VERSION +1 -0
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +21 -0
- claude_mpm/skills/agent_skills_injector.py +324 -0
- claude_mpm/skills/bundled/.gitkeep +2 -0
- claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +63 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +322 -0
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +157 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +22 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +2 -0
- claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +303 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +573 -0
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
- claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
- claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
- claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +158 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +97 -9
- claude_mpm/skills/skills_registry.py +347 -0
- claude_mpm/skills/skills_service.py +739 -0
- claude_mpm/templates/questions/EXAMPLES.md +501 -0
- claude_mpm/templates/questions/__init__.py +43 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +314 -0
- claude_mpm/templates/questions/project_init.py +388 -0
- claude_mpm/templates/questions/ticket_mgmt.py +397 -0
- claude_mpm/tools/README_SOCKETIO_DEBUG.md +224 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/tools/code_tree_analyzer/README.md +64 -0
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/utils/agent_dependency_loader.py +5 -5
- 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/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- claude_mpm-4.25.10.dist-info/METADATA +789 -0
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +485 -240
- claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md +0 -602
- 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/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/cli/commands/mpm_init.py +0 -2008
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- 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/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/test-archive/test_debug.html +0 -25
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- claude_mpm-4.16.0.dist-info/METADATA +0 -453
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# CLI Refactoring Guide
|
|
2
|
+
|
|
3
|
+
This guide shows how to refactor the main() function in `/src/claude_mpm/cli.py` to reduce complexity from 16 to under 10.
|
|
4
|
+
|
|
5
|
+
## Current Issues
|
|
6
|
+
|
|
7
|
+
1. **High Cyclomatic Complexity (16)**
|
|
8
|
+
- Multiple nested conditionals
|
|
9
|
+
- Duplicate argument definitions
|
|
10
|
+
- Mixed concerns in one function
|
|
11
|
+
|
|
12
|
+
2. **Code Duplication**
|
|
13
|
+
- Arguments defined twice (global level + run subcommand)
|
|
14
|
+
- Similar patterns repeated for each command
|
|
15
|
+
|
|
16
|
+
3. **Poor Maintainability**
|
|
17
|
+
- Adding new commands requires multiple changes
|
|
18
|
+
- Hard to test individual components
|
|
19
|
+
|
|
20
|
+
## Refactoring Steps
|
|
21
|
+
|
|
22
|
+
### Step 1: Update imports in cli.py
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
# Add to imports
|
|
26
|
+
from .cli import ArgumentRegistry, CommandRegistry, register_standard_commands
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Step 2: Replace main() function
|
|
30
|
+
|
|
31
|
+
Replace the entire `main()` function with:
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
def main(argv: Optional[list] = None):
|
|
35
|
+
"""Main CLI entry point with reduced complexity."""
|
|
36
|
+
# Initialize registries
|
|
37
|
+
arg_registry = ArgumentRegistry()
|
|
38
|
+
cmd_registry = CommandRegistry(arg_registry)
|
|
39
|
+
|
|
40
|
+
# Register standard commands
|
|
41
|
+
register_standard_commands(cmd_registry)
|
|
42
|
+
|
|
43
|
+
# Create parser
|
|
44
|
+
parser = argparse.ArgumentParser(
|
|
45
|
+
prog="claude-mpm",
|
|
46
|
+
description=f"Claude Multi-Agent Project Manager v{__version__}",
|
|
47
|
+
epilog="By default, runs an orchestrated Claude session."
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
# Store version for ArgumentRegistry
|
|
51
|
+
parser._version = f"claude-mpm {__version__}"
|
|
52
|
+
|
|
53
|
+
# Apply global arguments
|
|
54
|
+
arg_registry.apply_arguments(parser, groups=['global'])
|
|
55
|
+
|
|
56
|
+
# Apply run arguments at top level (for default behavior)
|
|
57
|
+
arg_registry.apply_arguments(parser, groups=['run'], exclude=['no_hooks'])
|
|
58
|
+
|
|
59
|
+
# Set up subcommands
|
|
60
|
+
cmd_registry.setup_subcommands(parser)
|
|
61
|
+
|
|
62
|
+
# Parse arguments
|
|
63
|
+
args = parser.parse_args(argv)
|
|
64
|
+
|
|
65
|
+
# Set up logging
|
|
66
|
+
_setup_logging(args)
|
|
67
|
+
|
|
68
|
+
# Initialize hook service
|
|
69
|
+
hook_manager = _initialize_hook_service(args)
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
# Execute command
|
|
73
|
+
result = cmd_registry.execute_command(args, hook_manager=hook_manager)
|
|
74
|
+
if result is None and not args.command:
|
|
75
|
+
parser.print_help()
|
|
76
|
+
return 1
|
|
77
|
+
return result or 0
|
|
78
|
+
|
|
79
|
+
except KeyboardInterrupt:
|
|
80
|
+
get_logger("cli").info("Session interrupted by user")
|
|
81
|
+
return 0
|
|
82
|
+
except Exception as e:
|
|
83
|
+
logger = get_logger("cli")
|
|
84
|
+
logger.error(f"Error: {e}")
|
|
85
|
+
if args.debug:
|
|
86
|
+
import traceback
|
|
87
|
+
traceback.print_exc()
|
|
88
|
+
return 1
|
|
89
|
+
finally:
|
|
90
|
+
if hook_manager:
|
|
91
|
+
hook_manager.stop_service()
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Step 3: Extract helper functions
|
|
95
|
+
|
|
96
|
+
Add these helper functions after main():
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
def _setup_logging(args):
|
|
100
|
+
"""Set up logging based on arguments."""
|
|
101
|
+
if args.debug and args.logging == "OFF":
|
|
102
|
+
args.logging = "DEBUG"
|
|
103
|
+
|
|
104
|
+
if args.logging != "OFF":
|
|
105
|
+
setup_logging(level=args.logging, log_dir=args.log_dir)
|
|
106
|
+
else:
|
|
107
|
+
import logging
|
|
108
|
+
logger = logging.getLogger("cli")
|
|
109
|
+
logger.setLevel(logging.WARNING)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def _initialize_hook_service(args):
|
|
113
|
+
"""Initialize hook service if enabled."""
|
|
114
|
+
if getattr(args, 'no_hooks', False):
|
|
115
|
+
return None
|
|
116
|
+
|
|
117
|
+
try:
|
|
118
|
+
from .config.hook_config import HookConfig
|
|
119
|
+
|
|
120
|
+
if not HookConfig.is_hooks_enabled():
|
|
121
|
+
get_logger("cli").info("Hooks disabled via configuration")
|
|
122
|
+
return None
|
|
123
|
+
|
|
124
|
+
hook_manager = HookServiceManager(log_dir=args.log_dir)
|
|
125
|
+
if hook_manager.start_service():
|
|
126
|
+
logger = get_logger("cli")
|
|
127
|
+
logger.info(f"Hook service started on port {hook_manager.port}")
|
|
128
|
+
print(f"Hook service started on port {hook_manager.port}")
|
|
129
|
+
return hook_manager
|
|
130
|
+
else:
|
|
131
|
+
logger = get_logger("cli")
|
|
132
|
+
logger.warning("Failed to start hook service")
|
|
133
|
+
print("Failed to start hook service, continuing without hooks")
|
|
134
|
+
return None
|
|
135
|
+
|
|
136
|
+
except Exception as e:
|
|
137
|
+
get_logger("cli").warning(f"Hook service init failed: {e}")
|
|
138
|
+
return None
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Step 4: Update command handler signatures
|
|
142
|
+
|
|
143
|
+
Ensure all command handlers accept `**kwargs`:
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
def run_session(args, hook_manager=None, **kwargs):
|
|
147
|
+
"""Run an orchestrated Claude session."""
|
|
148
|
+
# ... existing implementation
|
|
149
|
+
|
|
150
|
+
def list_tickets(args, **kwargs):
|
|
151
|
+
"""List recent tickets."""
|
|
152
|
+
# ... existing implementation
|
|
153
|
+
|
|
154
|
+
def show_info(args, hook_manager=None, **kwargs):
|
|
155
|
+
"""Show framework and configuration information."""
|
|
156
|
+
# ... existing implementation
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Benefits Achieved
|
|
160
|
+
|
|
161
|
+
### Complexity Reduction
|
|
162
|
+
- **Before**: Cyclomatic complexity of 16
|
|
163
|
+
- **After**: Cyclomatic complexity of ~8
|
|
164
|
+
|
|
165
|
+
### Code Organization
|
|
166
|
+
- Centralized argument definitions
|
|
167
|
+
- No duplicate argument definitions
|
|
168
|
+
- Clear separation of concerns
|
|
169
|
+
- Easier to add new commands
|
|
170
|
+
|
|
171
|
+
### Maintainability
|
|
172
|
+
- New commands can be added with a single `register()` call
|
|
173
|
+
- Arguments are defined once and reused
|
|
174
|
+
- Helper functions are testable in isolation
|
|
175
|
+
- Registry pattern allows for extension
|
|
176
|
+
|
|
177
|
+
## Adding New Commands
|
|
178
|
+
|
|
179
|
+
With the registry system, adding a new command is simple:
|
|
180
|
+
|
|
181
|
+
```python
|
|
182
|
+
# In your code or plugin
|
|
183
|
+
def my_command(args, **kwargs):
|
|
184
|
+
"""Implementation of your command."""
|
|
185
|
+
print(f"Running my command with args: {args}")
|
|
186
|
+
return 0
|
|
187
|
+
|
|
188
|
+
# Register it
|
|
189
|
+
cmd_registry.register(
|
|
190
|
+
name='mycommand',
|
|
191
|
+
help_text='Description of my command',
|
|
192
|
+
handler=my_command,
|
|
193
|
+
argument_groups=['framework'], # Reuse existing argument groups
|
|
194
|
+
extra_args={
|
|
195
|
+
'custom_arg': {
|
|
196
|
+
'flags': ['--custom'],
|
|
197
|
+
'type': str,
|
|
198
|
+
'help': 'A custom argument for this command'
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Testing
|
|
205
|
+
|
|
206
|
+
The refactored code is easier to test:
|
|
207
|
+
|
|
208
|
+
```python
|
|
209
|
+
# Test argument registry
|
|
210
|
+
def test_argument_registry():
|
|
211
|
+
registry = ArgumentRegistry()
|
|
212
|
+
parser = argparse.ArgumentParser()
|
|
213
|
+
registry.apply_arguments(parser, groups=['logging'])
|
|
214
|
+
|
|
215
|
+
# Verify logging arguments were added
|
|
216
|
+
args = parser.parse_args(['--logging', 'DEBUG'])
|
|
217
|
+
assert args.logging == 'DEBUG'
|
|
218
|
+
|
|
219
|
+
# Test command registry
|
|
220
|
+
def test_command_registry():
|
|
221
|
+
arg_reg = ArgumentRegistry()
|
|
222
|
+
cmd_reg = CommandRegistry(arg_reg)
|
|
223
|
+
|
|
224
|
+
called = False
|
|
225
|
+
def test_handler(args, **kwargs):
|
|
226
|
+
nonlocal called
|
|
227
|
+
called = True
|
|
228
|
+
return 0
|
|
229
|
+
|
|
230
|
+
cmd_reg.register('test', 'Test command', test_handler)
|
|
231
|
+
|
|
232
|
+
parser = argparse.ArgumentParser()
|
|
233
|
+
cmd_reg.setup_subcommands(parser)
|
|
234
|
+
|
|
235
|
+
args = parser.parse_args(['test'])
|
|
236
|
+
result = cmd_reg.execute_command(args)
|
|
237
|
+
|
|
238
|
+
assert called
|
|
239
|
+
assert result == 0
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Migration Checklist
|
|
243
|
+
|
|
244
|
+
- [ ] Create `/src/claude_mpm/cli/` directory
|
|
245
|
+
- [ ] Create `args.py` with ArgumentRegistry
|
|
246
|
+
- [ ] Create `commands.py` with CommandRegistry
|
|
247
|
+
- [ ] Create `__init__.py` to export classes
|
|
248
|
+
- [ ] Update imports in `cli.py`
|
|
249
|
+
- [ ] Replace main() function
|
|
250
|
+
- [ ] Add helper functions
|
|
251
|
+
- [ ] Update command handler signatures
|
|
252
|
+
- [ ] Test the refactored CLI
|
|
253
|
+
- [ ] Verify complexity is reduced to ≤10
|
|
@@ -201,6 +201,58 @@ Next steps:
|
|
|
201
201
|
- docker-ops
|
|
202
202
|
- local-ops-agent
|
|
203
203
|
|
|
204
|
+
## Default Configuration Fallback
|
|
205
|
+
|
|
206
|
+
When auto-configuration cannot detect your project's toolchain (e.g., a new or uncommon language/framework), it automatically falls back to a sensible set of default general-purpose agents instead of leaving your project unconfigured.
|
|
207
|
+
|
|
208
|
+
### When Defaults are Applied
|
|
209
|
+
|
|
210
|
+
Default agents are deployed when:
|
|
211
|
+
- Primary language is detected as "Unknown"
|
|
212
|
+
- No specific framework or toolchain can be identified
|
|
213
|
+
- No agent recommendations can be generated from detected technologies
|
|
214
|
+
|
|
215
|
+
### Default Agents
|
|
216
|
+
|
|
217
|
+
The following general-purpose agents are recommended with moderate confidence (0.7):
|
|
218
|
+
|
|
219
|
+
- **engineer**: General-purpose engineer for code implementation
|
|
220
|
+
- **research**: Code exploration and analysis
|
|
221
|
+
- **qa**: Testing and quality assurance
|
|
222
|
+
- **ops**: Infrastructure and deployment operations
|
|
223
|
+
- **documentation**: Documentation and technical writing
|
|
224
|
+
|
|
225
|
+
All default recommendations will be marked with `is_default: True` in the metadata.
|
|
226
|
+
|
|
227
|
+
### Disabling Default Fallback
|
|
228
|
+
|
|
229
|
+
To disable the default configuration fallback, edit `.claude-mpm/config/agent_capabilities.yaml`:
|
|
230
|
+
|
|
231
|
+
```yaml
|
|
232
|
+
default_configuration:
|
|
233
|
+
enabled: false # Disable default fallback
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
When disabled, auto-configuration will recommend zero agents if the toolchain cannot be detected.
|
|
237
|
+
|
|
238
|
+
### Customizing Defaults
|
|
239
|
+
|
|
240
|
+
You can customize which agents are deployed by default by editing the `default_configuration.agents` section in `.claude-mpm/config/agent_capabilities.yaml`:
|
|
241
|
+
|
|
242
|
+
```yaml
|
|
243
|
+
default_configuration:
|
|
244
|
+
enabled: true
|
|
245
|
+
min_confidence: 0.7 # Confidence score for default recommendations
|
|
246
|
+
agents:
|
|
247
|
+
- agent_id: engineer
|
|
248
|
+
reasoning: "General-purpose engineer for code implementation"
|
|
249
|
+
priority: 1
|
|
250
|
+
- agent_id: research
|
|
251
|
+
reasoning: "Code exploration and analysis"
|
|
252
|
+
priority: 2
|
|
253
|
+
# Add or remove agents as needed
|
|
254
|
+
```
|
|
255
|
+
|
|
204
256
|
## Tips
|
|
205
257
|
|
|
206
258
|
1. **Start with preview**: Always run with `--preview` first to see recommendations
|
claude_mpm/commands/mpm-help.md
CHANGED
|
@@ -87,9 +87,15 @@ Available Commands:
|
|
|
87
87
|
/mpm-init [update]
|
|
88
88
|
Initialize or update project documentation
|
|
89
89
|
|
|
90
|
+
/mpm-resume
|
|
91
|
+
Create session resume files for easy work resumption
|
|
92
|
+
|
|
90
93
|
/mpm-monitor [start|stop|restart|status|port]
|
|
91
94
|
Manage Socket.IO monitoring server and dashboard
|
|
92
95
|
|
|
96
|
+
/mpm-version
|
|
97
|
+
Display comprehensive version information including project version, all agents with versions, and all skills with versions
|
|
98
|
+
|
|
93
99
|
Use '/mpm-help <command>' for detailed help on a specific command.
|
|
94
100
|
```
|
|
95
101
|
|
claude_mpm/commands/mpm-init.md
CHANGED
|
@@ -9,6 +9,9 @@ Initialize or intelligently update your project for optimal use with Claude Code
|
|
|
9
9
|
/mpm-init update # Lightweight update based on recent git activity
|
|
10
10
|
/mpm-init context # Intelligent context analysis from git history
|
|
11
11
|
/mpm-init context --days 14 # Analyze last 14 days of git history
|
|
12
|
+
/mpm-init resume # Resume from stop event logs (NEW)
|
|
13
|
+
/mpm-init resume --list # List all sessions from logs
|
|
14
|
+
/mpm-init resume --session-id ID # Resume specific session
|
|
12
15
|
/mpm-init catchup # Quick commit history display (no analysis)
|
|
13
16
|
/mpm-init --review # Review project state without changes
|
|
14
17
|
/mpm-init --update # Full update of existing CLAUDE.md
|
|
@@ -24,7 +27,9 @@ This command has two primary modes:
|
|
|
24
27
|
- **Project initialization/updates**: Delegates to the Agentic Coder Optimizer agent for documentation, tooling, and workflow setup
|
|
25
28
|
- **Context analysis** (context/catchup): Provides intelligent project context from git history for resuming work
|
|
26
29
|
|
|
27
|
-
**
|
|
30
|
+
**Resume Modes**: The command provides two resume capabilities:
|
|
31
|
+
- `/mpm-init resume`: Reads stop event logs from `.claude-mpm/responses/` to help resume work
|
|
32
|
+
- `/mpm-init context`: Analyzes git history for intelligent work resumption (delegates to Research agent)
|
|
28
33
|
|
|
29
34
|
**Quick Update Mode**: Running `/mpm-init update` performs a lightweight update focused on recent git activity. It analyzes recent commits, generates an activity report, and updates documentation with minimal changes. Perfect for quick refreshes after development sprints.
|
|
30
35
|
|
|
@@ -39,6 +44,7 @@ This command has two primary modes:
|
|
|
39
44
|
- **🧠 Memory System**: Initializes project knowledge retention
|
|
40
45
|
- **🔧 Tool Configuration**: Sets up linting, formatting, testing
|
|
41
46
|
- **📝 Holistic Review**: Final organization and validation pass
|
|
47
|
+
- **🔒 GitIgnore Management**: Automatically excludes claude-mpm config directories
|
|
42
48
|
|
|
43
49
|
## Options
|
|
44
50
|
|
|
@@ -87,8 +93,46 @@ Analyzes recent git commits to identify:
|
|
|
87
93
|
|
|
88
94
|
**NOT session state**: This does NOT save/restore conversation state like Claude Code. Instead, it reconstructs project context from git history using conventional commits and commit message analysis.
|
|
89
95
|
|
|
90
|
-
#### `/mpm-init resume`
|
|
91
|
-
|
|
96
|
+
#### `/mpm-init resume` (Stop Event Logs)
|
|
97
|
+
```bash
|
|
98
|
+
/mpm-init resume # Show latest session from logs
|
|
99
|
+
/mpm-init resume --list # List all sessions
|
|
100
|
+
/mpm-init resume --session-id ID # Resume specific session
|
|
101
|
+
/mpm-init resume --last 5 # Show last 5 sessions
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Reads from stop event logs to help resume work from previous sessions:
|
|
105
|
+
|
|
106
|
+
**Data Sources** (two-tier strategy):
|
|
107
|
+
1. **Resume logs** (preferred): `.claude-mpm/resume-logs/*.md` - Structured 10k-token summaries
|
|
108
|
+
2. **Response logs** (fallback): `.claude-mpm/responses/*.json` - Raw conversation stop events
|
|
109
|
+
|
|
110
|
+
**What it shows**:
|
|
111
|
+
- When session ended (time ago)
|
|
112
|
+
- What was being worked on (request)
|
|
113
|
+
- Tasks completed (from PM responses)
|
|
114
|
+
- Files modified (from PM tracking)
|
|
115
|
+
- Next steps (from PM recommendations)
|
|
116
|
+
- Stop reason (why session ended)
|
|
117
|
+
- Token usage (context consumption)
|
|
118
|
+
- Git context (branch, working directory)
|
|
119
|
+
|
|
120
|
+
**How it works**:
|
|
121
|
+
1. Scans response logs in `.claude-mpm/responses/`
|
|
122
|
+
2. Groups by `session_id`
|
|
123
|
+
3. Parses PM response JSON for context
|
|
124
|
+
4. Extracts tasks, files, next steps from PM summaries
|
|
125
|
+
5. Displays comprehensive resume context
|
|
126
|
+
|
|
127
|
+
**Use Cases**:
|
|
128
|
+
- Resume work after context threshold pause
|
|
129
|
+
- Review what was accomplished in previous session
|
|
130
|
+
- Understand why session stopped (max_tokens, end_turn, etc.)
|
|
131
|
+
- See exact files and tasks from last session
|
|
132
|
+
|
|
133
|
+
**Difference from `context`**:
|
|
134
|
+
- **resume**: Reads actual stop event logs (what PM logged)
|
|
135
|
+
- **context**: Analyzes git commits (what was committed)
|
|
92
136
|
|
|
93
137
|
### `/mpm-init catchup` (Simple Git History)
|
|
94
138
|
```bash
|
|
@@ -162,14 +206,27 @@ When enabled, performs:
|
|
|
162
206
|
- Initializes memory files for project knowledge
|
|
163
207
|
- Documents memory usage patterns
|
|
164
208
|
|
|
165
|
-
### 7.
|
|
209
|
+
### 7. GitIgnore Management (Automatic)
|
|
210
|
+
During initialization:
|
|
211
|
+
- **Automatic Updates**: Adds `.claude-mpm/` and `.claude/agents/` to `.gitignore`
|
|
212
|
+
- **Smart Detection**: Skips entries that already exist (no duplicates)
|
|
213
|
+
- **Safe Operation**: Creates `.gitignore` if missing, preserves existing content
|
|
214
|
+
- **Non-Blocking**: Continues initialization even if `.gitignore` update fails
|
|
215
|
+
|
|
216
|
+
**Entries Added**:
|
|
217
|
+
- `.claude-mpm/`: Configuration directory (sessions, logs, etc.)
|
|
218
|
+
- `.claude/agents/`: Agent runtime files
|
|
219
|
+
|
|
220
|
+
This ensures claude-mpm configuration files never get committed to version control.
|
|
221
|
+
|
|
222
|
+
### 8. Holistic Organization (Final Step)
|
|
166
223
|
After all tasks, performs a comprehensive review:
|
|
167
224
|
- Reorganizes content by priority
|
|
168
225
|
- Validates completeness
|
|
169
226
|
- Ensures single-path principle
|
|
170
227
|
- Adds meta-instructions for maintenance
|
|
171
228
|
|
|
172
|
-
###
|
|
229
|
+
### 9. Update Mode Features (NEW)
|
|
173
230
|
When updating existing documentation:
|
|
174
231
|
- **Smart Merging**: Intelligently merges new content with existing
|
|
175
232
|
- **Custom Preservation**: Keeps your project-specific sections
|
|
@@ -225,6 +282,66 @@ This provides intelligent analysis including:
|
|
|
225
282
|
|
|
226
283
|
The old `resume` command redirects to `context` with a deprecation warning.
|
|
227
284
|
|
|
285
|
+
### Resume from Stop Event Logs
|
|
286
|
+
|
|
287
|
+
Display context from previous sessions using stop event logs:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
/mpm-init resume # Show latest session
|
|
291
|
+
/mpm-init resume --list # List all available sessions
|
|
292
|
+
/mpm-init resume --session-id abc123 # Resume specific session
|
|
293
|
+
/mpm-init resume --last 10 # Show last 10 sessions
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Shows comprehensive context including:
|
|
297
|
+
- What was being worked on
|
|
298
|
+
- Tasks completed (from PM tracking)
|
|
299
|
+
- Files modified
|
|
300
|
+
- Next steps recommended
|
|
301
|
+
- Stop reason (context limit, completion, etc.)
|
|
302
|
+
- Token usage
|
|
303
|
+
- Time elapsed since session
|
|
304
|
+
|
|
305
|
+
**Example Output:**
|
|
306
|
+
```
|
|
307
|
+
================================================================================
|
|
308
|
+
📋 Resume Context - Session from 2 hours ago
|
|
309
|
+
================================================================================
|
|
310
|
+
|
|
311
|
+
Session ID: 20251104_143000
|
|
312
|
+
Ended: 2024-11-04 14:30 (2 hours ago)
|
|
313
|
+
Stop Reason: Context threshold reached (70%)
|
|
314
|
+
Token Usage: 140,000 / 200,000 (70%)
|
|
315
|
+
|
|
316
|
+
Working on:
|
|
317
|
+
"Implementing auto-pause and resume functionality"
|
|
318
|
+
|
|
319
|
+
✅ Completed:
|
|
320
|
+
• Researched stop event logging system
|
|
321
|
+
• Found response logs in .claude-mpm/responses/
|
|
322
|
+
• Identified two-tier resume strategy
|
|
323
|
+
|
|
324
|
+
📝 Files Modified:
|
|
325
|
+
• src/claude_mpm/services/cli/resume_service.py (new)
|
|
326
|
+
• src/claude_mpm/cli/commands/mpm_init/ (refactored into package)
|
|
327
|
+
|
|
328
|
+
🎯 Next Steps:
|
|
329
|
+
• Implement ResumeService class
|
|
330
|
+
• Add resume subcommand to mpm-init
|
|
331
|
+
• Test with real response logs
|
|
332
|
+
|
|
333
|
+
Git Context:
|
|
334
|
+
Branch: main
|
|
335
|
+
Working Directory: /Users/masa/Projects/claude-mpm
|
|
336
|
+
================================================================================
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**Use Cases:**
|
|
340
|
+
- Resume after hitting context limit
|
|
341
|
+
- Review what was accomplished in last session
|
|
342
|
+
- See exact next steps recommended by PM
|
|
343
|
+
- Understand why session stopped
|
|
344
|
+
|
|
228
345
|
### Quick Git History (Catchup)
|
|
229
346
|
|
|
230
347
|
Display recent commit history without analysis:
|
|
@@ -367,6 +484,7 @@ The command delegates to the Agentic Coder Optimizer agent which:
|
|
|
367
484
|
- ✅ **Memory system**: Initialized for knowledge retention
|
|
368
485
|
- ✅ **Developer docs**: Technical documentation (with AST analysis)
|
|
369
486
|
- ✅ **Priority organization**: Instructions ranked by importance
|
|
487
|
+
- ✅ **.gitignore**: Configuration directories automatically excluded
|
|
370
488
|
|
|
371
489
|
### For Existing Projects (Update Mode)
|
|
372
490
|
- ✅ **Updated CLAUDE.md**: Refreshed with latest standards
|
|
@@ -375,6 +493,7 @@ The command delegates to the Agentic Coder Optimizer agent which:
|
|
|
375
493
|
- ✅ **Structure verified**: Missing directories created
|
|
376
494
|
- ✅ **Files organized**: Misplaced files moved (if --organize)
|
|
377
495
|
- ✅ **Change summary**: Report of what was updated
|
|
496
|
+
- ✅ **.gitignore**: Config directories added if not present
|
|
378
497
|
|
|
379
498
|
### For Quick Update Mode (`/mpm-init update`)
|
|
380
499
|
- ✅ **Activity Report**: Summary of recent 30-day git activity
|
|
@@ -388,9 +507,12 @@ The command delegates to the Agentic Coder Optimizer agent which:
|
|
|
388
507
|
## Notes
|
|
389
508
|
|
|
390
509
|
- **Quick Update vs Full Update**: Use `/mpm-init update` for fast activity-based updates (30 days), or `/mpm-init --update` for comprehensive doc refresh
|
|
391
|
-
- **
|
|
392
|
-
-
|
|
393
|
-
-
|
|
510
|
+
- **Resume Strategies**:
|
|
511
|
+
- **`/mpm-init resume`**: Read stop event logs (what PM tracked in last session)
|
|
512
|
+
- **`/mpm-init context`**: Analyze git history (intelligent work stream analysis via Research)
|
|
513
|
+
- **`/mpm-init catchup`**: Quick commit history display (no analysis)
|
|
514
|
+
- **Stop Event Logs**: Response logs in `.claude-mpm/responses/` contain PM summaries with tasks, files, and next steps
|
|
515
|
+
- **Two-Tier Resume**: Prefers structured resume logs (`.claude-mpm/resume-logs/`), falls back to response logs
|
|
394
516
|
- **Smart Mode**: Automatically detects existing CLAUDE.md and offers update vs recreate
|
|
395
517
|
- **Safe Updates**: Previous versions always archived before updating
|
|
396
518
|
- **Custom Content**: Your project-specific sections are preserved by default
|