claude-mpm 4.20.3__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_PM.md +23 -6
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1783 -34
- claude_mpm/agents/WORKFLOW.md +75 -2
- 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/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/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/security.json +4 -4
- 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/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 +522 -34
- claude_mpm/cli/executor.py +56 -0
- claude_mpm/cli/interactive/agent_wizard.py +5 -5
- claude_mpm/cli/parsers/base_parser.py +28 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skills_parser.py +138 -0
- claude_mpm/cli/startup.py +111 -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-help.md +3 -0
- claude_mpm/commands/mpm-init.md +19 -3
- claude_mpm/commands/mpm-resume.md +372 -0
- claude_mpm/commands/mpm-tickets.md +56 -7
- claude_mpm/commands/mpm.md +1 -0
- claude_mpm/config/agent_capabilities.yaml +658 -0
- claude_mpm/config/async_logging_config.yaml +145 -0
- claude_mpm/constants.py +12 -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 +8 -0
- claude_mpm/core/constants.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/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/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/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/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/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- 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 +3 -1
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +36 -16
- 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/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/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_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/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/version_control/VERSION +1 -0
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +3 -3
- claude_mpm/skills/agent_skills_injector.py +42 -49
- claude_mpm/skills/bundled/.gitkeep +2 -0
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +4 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +108 -114
- 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 +46 -41
- 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 +36 -73
- 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/debugging/root-cause-tracing/SKILL.md +100 -125
- 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/verification-before-completion/SKILL.md +28 -72
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +11 -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 +272 -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/main/artifacts-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +13 -1
- 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 +11 -0
- claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +109 -277
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
- 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 +135 -155
- 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 +13 -12
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
- claude_mpm/skills/bundled/performance-profiling.md +6 -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/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/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/testing/condition-based-waiting/SKILL.md +21 -25
- 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-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 +86 -250
- 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 +145 -57
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
- 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 +37 -15
- 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/skills_registry.py +44 -48
- claude_mpm/skills/skills_service.py +117 -108
- 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 +3 -3
- 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.20.3.dist-info → claude_mpm-4.25.10.dist-info}/METADATA +218 -31
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +409 -246
- 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 -2093
- 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/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- /claude_mpm/skills/bundled/collaboration/requesting-code-review/{code-reviewer.md → references/code-reviewer-template.md} +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.20.3.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
|
claude_mpm/commands/mpm-help.md
CHANGED
|
@@ -87,6 +87,9 @@ 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
|
|
claude_mpm/commands/mpm-init.md
CHANGED
|
@@ -44,6 +44,7 @@ This command has two primary modes:
|
|
|
44
44
|
- **🧠 Memory System**: Initializes project knowledge retention
|
|
45
45
|
- **🔧 Tool Configuration**: Sets up linting, formatting, testing
|
|
46
46
|
- **📝 Holistic Review**: Final organization and validation pass
|
|
47
|
+
- **🔒 GitIgnore Management**: Automatically excludes claude-mpm config directories
|
|
47
48
|
|
|
48
49
|
## Options
|
|
49
50
|
|
|
@@ -205,14 +206,27 @@ When enabled, performs:
|
|
|
205
206
|
- Initializes memory files for project knowledge
|
|
206
207
|
- Documents memory usage patterns
|
|
207
208
|
|
|
208
|
-
### 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)
|
|
209
223
|
After all tasks, performs a comprehensive review:
|
|
210
224
|
- Reorganizes content by priority
|
|
211
225
|
- Validates completeness
|
|
212
226
|
- Ensures single-path principle
|
|
213
227
|
- Adds meta-instructions for maintenance
|
|
214
228
|
|
|
215
|
-
###
|
|
229
|
+
### 9. Update Mode Features (NEW)
|
|
216
230
|
When updating existing documentation:
|
|
217
231
|
- **Smart Merging**: Intelligently merges new content with existing
|
|
218
232
|
- **Custom Preservation**: Keeps your project-specific sections
|
|
@@ -309,7 +323,7 @@ Working on:
|
|
|
309
323
|
|
|
310
324
|
📝 Files Modified:
|
|
311
325
|
• src/claude_mpm/services/cli/resume_service.py (new)
|
|
312
|
-
• src/claude_mpm/cli/commands/mpm_init
|
|
326
|
+
• src/claude_mpm/cli/commands/mpm_init/ (refactored into package)
|
|
313
327
|
|
|
314
328
|
🎯 Next Steps:
|
|
315
329
|
• Implement ResumeService class
|
|
@@ -470,6 +484,7 @@ The command delegates to the Agentic Coder Optimizer agent which:
|
|
|
470
484
|
- ✅ **Memory system**: Initialized for knowledge retention
|
|
471
485
|
- ✅ **Developer docs**: Technical documentation (with AST analysis)
|
|
472
486
|
- ✅ **Priority organization**: Instructions ranked by importance
|
|
487
|
+
- ✅ **.gitignore**: Configuration directories automatically excluded
|
|
473
488
|
|
|
474
489
|
### For Existing Projects (Update Mode)
|
|
475
490
|
- ✅ **Updated CLAUDE.md**: Refreshed with latest standards
|
|
@@ -478,6 +493,7 @@ The command delegates to the Agentic Coder Optimizer agent which:
|
|
|
478
493
|
- ✅ **Structure verified**: Missing directories created
|
|
479
494
|
- ✅ **Files organized**: Misplaced files moved (if --organize)
|
|
480
495
|
- ✅ **Change summary**: Report of what was updated
|
|
496
|
+
- ✅ **.gitignore**: Config directories added if not present
|
|
481
497
|
|
|
482
498
|
### For Quick Update Mode (`/mpm-init update`)
|
|
483
499
|
- ✅ **Activity Report**: Summary of recent 30-day git activity
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# /mpm-resume - Load Previous Session
|
|
2
|
+
|
|
3
|
+
Load and display context from the most recent paused session to seamlessly continue your work.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/mpm-resume
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
This command **loads and displays** the most recent paused session from automatic session saves, allowing you to resume work with full context restoration.
|
|
14
|
+
|
|
15
|
+
Unlike `/mpm-init pause` which *creates* a new session save, this command *loads* existing session data that was automatically created when context usage reached 70% (140k/200k tokens).
|
|
16
|
+
|
|
17
|
+
**Key Points:**
|
|
18
|
+
- Reads from `.claude-mpm/sessions/` directory (automatically created at 70% context)
|
|
19
|
+
- Displays up to ~40,000 tokens (~20% of 200k context budget)
|
|
20
|
+
- Shows session summary, completed work, in-progress tasks, and git context
|
|
21
|
+
- Does NOT create any new files - only reads and displays
|
|
22
|
+
|
|
23
|
+
## What Gets Displayed
|
|
24
|
+
|
|
25
|
+
When you run `/mpm-resume`, PM will display:
|
|
26
|
+
|
|
27
|
+
### Session Summary
|
|
28
|
+
- **Time Elapsed**: How long ago the session was paused
|
|
29
|
+
- **Context Usage**: Token usage at time of pause (e.g., "67.6% - 135,259/200,000 tokens")
|
|
30
|
+
- **Working On**: What you were working on when paused
|
|
31
|
+
- **Session Duration**: How long the previous session lasted
|
|
32
|
+
|
|
33
|
+
### Completed Work
|
|
34
|
+
- List of accomplishments from the paused session
|
|
35
|
+
- What was delivered and committed
|
|
36
|
+
- Key milestones achieved
|
|
37
|
+
|
|
38
|
+
### Current Tasks
|
|
39
|
+
- **In Progress**: Tasks that were being worked on
|
|
40
|
+
- **Pending**: Tasks that were planned but not started
|
|
41
|
+
- **Completed**: Recently finished tasks for context
|
|
42
|
+
|
|
43
|
+
### Git Context
|
|
44
|
+
- **Branch**: Current branch name
|
|
45
|
+
- **Recent Commits**: Last 5-10 commits with SHAs and messages
|
|
46
|
+
- **Status**: Clean/dirty working directory
|
|
47
|
+
- **Changes Since Pause**: New commits made since session was saved
|
|
48
|
+
|
|
49
|
+
### Next Recommended Actions
|
|
50
|
+
- Priority-ordered list of next steps
|
|
51
|
+
- Estimated time for each task
|
|
52
|
+
- Status and blockers for pending work
|
|
53
|
+
|
|
54
|
+
## Session Storage Location
|
|
55
|
+
|
|
56
|
+
Sessions are automatically saved to:
|
|
57
|
+
```
|
|
58
|
+
<project-root>/.claude-mpm/sessions/session-YYYYMMDD-HHMMSS.json
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Legacy location** (backward compatible):
|
|
62
|
+
```
|
|
63
|
+
<project-root>/.claude-mpm/sessions/pause/session-YYYYMMDD-HHMMSS.json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The system automatically checks both locations and uses the most recent session.
|
|
67
|
+
|
|
68
|
+
## Example Output
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
================================================================================
|
|
72
|
+
📋 PAUSED SESSION FOUND
|
|
73
|
+
================================================================================
|
|
74
|
+
|
|
75
|
+
Paused: 2 hours ago
|
|
76
|
+
|
|
77
|
+
Last working on: Week 2 Skills Integration - Content Preparation
|
|
78
|
+
|
|
79
|
+
Completed:
|
|
80
|
+
✓ Week 1: Complete infrastructure - 8,900 lines of production-ready code
|
|
81
|
+
✓ Week 1: Skills loading system with automatic progressive disclosure
|
|
82
|
+
✓ Week 2: 15 of 23 skills downloaded (65% complete)
|
|
83
|
+
✓ Week 2: 2 Tier 1 skills refactored to progressive disclosure
|
|
84
|
+
✓ Code quality: All CRITICAL and HIGH issues resolved
|
|
85
|
+
|
|
86
|
+
Next steps:
|
|
87
|
+
• Refactor Tier 2 skills (verification-before-completion, webapp-testing)
|
|
88
|
+
• Download remaining 8 skills from community repositories
|
|
89
|
+
• Refactor remaining 13 skills to progressive disclosure
|
|
90
|
+
• Generate license attributions for all bundled skills
|
|
91
|
+
|
|
92
|
+
Git changes since pause: 3 commits
|
|
93
|
+
|
|
94
|
+
Recent commits:
|
|
95
|
+
ac765731 - feat(skills): Week 2 progress - 15 skills downloaded (Bob Matsuoka)
|
|
96
|
+
205e532e - fix(skills): address CRITICAL and HIGH priority issues (Bob Matsuoka)
|
|
97
|
+
06a6d6a0 - feat: add automated pre-publish cleanup to release (Bob Matsuoka)
|
|
98
|
+
|
|
99
|
+
Context Usage: 67.6% (135,259/200,000 tokens)
|
|
100
|
+
Session Duration: 12 hours
|
|
101
|
+
|
|
102
|
+
================================================================================
|
|
103
|
+
Use this context to resume work, or start fresh if not relevant.
|
|
104
|
+
================================================================================
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Implementation
|
|
108
|
+
|
|
109
|
+
When PM receives `/mpm-resume`, it should:
|
|
110
|
+
|
|
111
|
+
1. **Check for Sessions**
|
|
112
|
+
```python
|
|
113
|
+
from claude_mpm.services.cli.session_resume_helper import SessionResumeHelper
|
|
114
|
+
|
|
115
|
+
helper = SessionResumeHelper()
|
|
116
|
+
if not helper.has_paused_sessions():
|
|
117
|
+
return "No paused sessions found"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
2. **Load Most Recent Session**
|
|
121
|
+
```python
|
|
122
|
+
session_data = helper.get_most_recent_session()
|
|
123
|
+
if not session_data:
|
|
124
|
+
return "Failed to load session data"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
3. **Format and Display Context**
|
|
128
|
+
```python
|
|
129
|
+
# Extract key information
|
|
130
|
+
conversation = session_data.get("conversation", {})
|
|
131
|
+
git_context = session_data.get("git_context", {})
|
|
132
|
+
context_usage = session_data.get("context_usage", {})
|
|
133
|
+
todos = session_data.get("todos", {})
|
|
134
|
+
|
|
135
|
+
# Display formatted output (see Example Output above)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
4. **Calculate Git Changes**
|
|
139
|
+
```python
|
|
140
|
+
# Get commits since pause
|
|
141
|
+
paused_at = session_data.get("paused_at")
|
|
142
|
+
new_commits = helper.get_git_changes_since_pause(paused_at, [])
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
5. **Limit Output to ~40k Tokens**
|
|
146
|
+
- Session summary: ~2k tokens
|
|
147
|
+
- Accomplishments (first 10): ~3k tokens
|
|
148
|
+
- Next steps (first 10): ~3k tokens
|
|
149
|
+
- Git context: ~5k tokens
|
|
150
|
+
- Todos: ~2k tokens
|
|
151
|
+
- Recent commits (up to 10): ~5k tokens
|
|
152
|
+
- **Total**: ~20k tokens (well under 40k limit)
|
|
153
|
+
|
|
154
|
+
## Token Budget Management
|
|
155
|
+
|
|
156
|
+
**Context Budget**: 200,000 tokens total
|
|
157
|
+
**Resume Load**: ~20,000-40,000 tokens (10-20% of context)
|
|
158
|
+
|
|
159
|
+
This leaves 160,000+ tokens for actual work after loading session context.
|
|
160
|
+
|
|
161
|
+
## Session Data Format
|
|
162
|
+
|
|
163
|
+
Sessions are stored as JSON with this structure:
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"session_id": "session-YYYYMMDD-HHMMSS",
|
|
168
|
+
"paused_at": "ISO-8601 timestamp",
|
|
169
|
+
"duration_hours": 12,
|
|
170
|
+
"context_usage": {
|
|
171
|
+
"tokens_used": 135259,
|
|
172
|
+
"tokens_total": 200000,
|
|
173
|
+
"percentage": 67.6
|
|
174
|
+
},
|
|
175
|
+
"conversation": {
|
|
176
|
+
"primary_task": "What user was working on",
|
|
177
|
+
"current_phase": "Current phase of work",
|
|
178
|
+
"summary": "Brief summary",
|
|
179
|
+
"accomplishments": ["list of completed items"],
|
|
180
|
+
"next_steps": [
|
|
181
|
+
{
|
|
182
|
+
"priority": 1,
|
|
183
|
+
"task": "Task description",
|
|
184
|
+
"estimated_hours": "8-12",
|
|
185
|
+
"status": "ready"
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
"git_context": {
|
|
190
|
+
"branch": "main",
|
|
191
|
+
"recent_commits": [...],
|
|
192
|
+
"status": {...}
|
|
193
|
+
},
|
|
194
|
+
"todos": {
|
|
195
|
+
"active": [...],
|
|
196
|
+
"completed": [...]
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## When to Use This Command
|
|
202
|
+
|
|
203
|
+
Use `/mpm-resume` when:
|
|
204
|
+
- **Starting a new session**: After closing and reopening Claude CLI
|
|
205
|
+
- **Context unclear**: You need to remember what you were working on
|
|
206
|
+
- **After a break**: Coming back after hours or days
|
|
207
|
+
- **Team handoff**: Another developer wants to understand current state
|
|
208
|
+
- **Lost context**: Accidentally closed CLI and need to recover
|
|
209
|
+
|
|
210
|
+
## Differences from Automatic Resume
|
|
211
|
+
|
|
212
|
+
| Feature | Automatic Resume (70% context) | /mpm-resume Command |
|
|
213
|
+
|---------|-------------------------------|---------------------|
|
|
214
|
+
| **Trigger** | Automatic at 70% context | Manual user command |
|
|
215
|
+
| **When** | PM startup (if session exists) | Anytime during session |
|
|
216
|
+
| **Creates Files** | No (reads existing) | No (reads existing) |
|
|
217
|
+
| **Session Source** | Same (`.claude-mpm/sessions/`) | Same (`.claude-mpm/sessions/`) |
|
|
218
|
+
| **Display Format** | Identical | Identical |
|
|
219
|
+
| **Token Usage** | ~20-40k tokens | ~20-40k tokens |
|
|
220
|
+
|
|
221
|
+
Both features use the **same underlying system** (`SessionResumeHelper`), just triggered differently.
|
|
222
|
+
|
|
223
|
+
## No Files Created
|
|
224
|
+
|
|
225
|
+
**IMPORTANT**: This command does NOT create any new files.
|
|
226
|
+
|
|
227
|
+
It ONLY reads from existing session files that were automatically created by the system at 70% context usage.
|
|
228
|
+
|
|
229
|
+
If you want to manually create a session save (for example, at 50% context before hitting 70%), use a different workflow or wait for automatic save at 70%.
|
|
230
|
+
|
|
231
|
+
## Related Features
|
|
232
|
+
|
|
233
|
+
- **Automatic Session Save**: System creates sessions at 70% context automatically
|
|
234
|
+
- **Automatic Session Resume**: PM startup hook displays sessions automatically
|
|
235
|
+
- `/mpm-init pause`: Manual session pause workflow (if available)
|
|
236
|
+
- `/mpm-init context`: Analyze git history for intelligent resumption
|
|
237
|
+
- `/mpm-status`: Check current MPM status
|
|
238
|
+
|
|
239
|
+
## Error Handling
|
|
240
|
+
|
|
241
|
+
### No Sessions Found
|
|
242
|
+
```
|
|
243
|
+
No paused sessions found in .claude-mpm/sessions/
|
|
244
|
+
|
|
245
|
+
To create a session save, continue working until context reaches 70% (140k tokens),
|
|
246
|
+
at which point the system will automatically save your session state.
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Failed to Load Session
|
|
250
|
+
```
|
|
251
|
+
Paused session file found but failed to load.
|
|
252
|
+
|
|
253
|
+
File: .claude-mpm/sessions/session-20251107-152740.json
|
|
254
|
+
Error: Invalid JSON format
|
|
255
|
+
|
|
256
|
+
You may need to manually inspect or delete this file.
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Invalid Session Format
|
|
260
|
+
```
|
|
261
|
+
Session file loaded but missing required fields.
|
|
262
|
+
|
|
263
|
+
The session file may be corrupted or from an older version.
|
|
264
|
+
Consider running /mpm-doctor to check system health.
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Benefits
|
|
268
|
+
|
|
269
|
+
- **Instant Context**: Get full context in seconds without reading git logs
|
|
270
|
+
- **No Mental Load**: Don't need to remember what you were doing
|
|
271
|
+
- **Zero File Creation**: Pure read operation, no side effects
|
|
272
|
+
- **Team Collaboration**: Share context with team members
|
|
273
|
+
- **Graceful Recovery**: Recover from accidental CLI closures
|
|
274
|
+
- **Smart Filtering**: Only shows relevant information (~20k tokens)
|
|
275
|
+
- **Git Awareness**: See what changed since pause
|
|
276
|
+
|
|
277
|
+
## Best Practices
|
|
278
|
+
|
|
279
|
+
1. **Use Early**: Run `/mpm-resume` at start of each session if sessions exist
|
|
280
|
+
2. **Check Git Changes**: Pay attention to commits made since pause
|
|
281
|
+
3. **Validate Context**: Verify the session is still relevant before continuing
|
|
282
|
+
4. **Clear Old Sessions**: Periodically clean up old session files
|
|
283
|
+
5. **Combine with Git**: Use alongside `git log` for complete picture
|
|
284
|
+
|
|
285
|
+
## Technical Details
|
|
286
|
+
|
|
287
|
+
**Implementation Files:**
|
|
288
|
+
- Service: `/src/claude_mpm/services/cli/session_resume_helper.py`
|
|
289
|
+
- Hook: `/src/claude_mpm/hooks/session_resume_hook.py`
|
|
290
|
+
- Command: This file
|
|
291
|
+
|
|
292
|
+
**Key Functions:**
|
|
293
|
+
- `SessionResumeHelper.has_paused_sessions()` - Check if sessions exist
|
|
294
|
+
- `SessionResumeHelper.get_most_recent_session()` - Load latest session
|
|
295
|
+
- `SessionResumeHelper.format_resume_prompt()` - Format display output
|
|
296
|
+
- `SessionResumeHelper.get_git_changes_since_pause()` - Calculate git delta
|
|
297
|
+
|
|
298
|
+
**Token Estimation:**
|
|
299
|
+
- Session metadata: 1-2k tokens
|
|
300
|
+
- Accomplishments (10 items): 2-4k tokens
|
|
301
|
+
- Next steps (10 items): 2-4k tokens
|
|
302
|
+
- Git commits (10 commits): 3-5k tokens
|
|
303
|
+
- Todos (20 items): 2-3k tokens
|
|
304
|
+
- Formatting/structure: 1-2k tokens
|
|
305
|
+
- **Total**: 11-20k tokens (safely under 40k limit)
|
|
306
|
+
|
|
307
|
+
## Troubleshooting
|
|
308
|
+
|
|
309
|
+
### Session Not Found
|
|
310
|
+
**Problem**: Command reports no sessions exist
|
|
311
|
+
|
|
312
|
+
**Solutions:**
|
|
313
|
+
1. Check directory exists: `ls .claude-mpm/sessions/`
|
|
314
|
+
2. Check for legacy location: `ls .claude-mpm/sessions/pause/`
|
|
315
|
+
3. Verify session files: `ls .claude-mpm/sessions/session-*.json`
|
|
316
|
+
4. Session auto-saves at 70% context - may not exist yet
|
|
317
|
+
|
|
318
|
+
### Git Changes Not Showing
|
|
319
|
+
**Problem**: "No git changes since pause" but commits were made
|
|
320
|
+
|
|
321
|
+
**Solutions:**
|
|
322
|
+
1. Verify git repository: `git status`
|
|
323
|
+
2. Check commit timestamps: `git log --since="<pause_time>"`
|
|
324
|
+
3. Ensure session timestamp is correct
|
|
325
|
+
4. Check timezone issues
|
|
326
|
+
|
|
327
|
+
### Display Too Large
|
|
328
|
+
**Problem**: Session context exceeds token budget
|
|
329
|
+
|
|
330
|
+
**Solutions:**
|
|
331
|
+
1. System automatically limits to first 10 items
|
|
332
|
+
2. Full session details available in JSON file
|
|
333
|
+
3. Use `cat .claude-mpm/sessions/session-*.json` for complete data
|
|
334
|
+
4. Summary is optimized for 20k tokens max
|
|
335
|
+
|
|
336
|
+
## Example Session Resume Workflow
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# User starts new Claude CLI session
|
|
340
|
+
$ claude-code
|
|
341
|
+
|
|
342
|
+
# PM automatically checks for sessions on startup
|
|
343
|
+
# (Automatic resume hook displays session if found)
|
|
344
|
+
|
|
345
|
+
# OR user manually requests resume
|
|
346
|
+
User: "/mpm-resume"
|
|
347
|
+
|
|
348
|
+
# PM loads and displays session context
|
|
349
|
+
PM: [Displays formatted session context as shown in Example Output]
|
|
350
|
+
|
|
351
|
+
# User decides to continue work
|
|
352
|
+
User: "Let's continue with the next priority task"
|
|
353
|
+
|
|
354
|
+
# PM uses session context to understand what to do next
|
|
355
|
+
PM: "Based on the paused session, the next priority is to refactor
|
|
356
|
+
the verification-before-completion skill. I'll delegate this to Engineer..."
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
## Version History
|
|
360
|
+
|
|
361
|
+
- **v4.21.1**: Fixed command behavior - now loads sessions instead of creating files
|
|
362
|
+
- **v4.21.0**: Added `/mpm-resume` command (incorrect behavior - created files)
|
|
363
|
+
- **v4.19.0**: Automatic session resume infrastructure implemented
|
|
364
|
+
- **v4.18.x**: Session pause/resume foundation
|
|
365
|
+
|
|
366
|
+
## Support
|
|
367
|
+
|
|
368
|
+
For issues or questions:
|
|
369
|
+
- Run `/mpm-doctor` to check system health
|
|
370
|
+
- Check logs: `.claude-mpm/logs/claude-mpm.log`
|
|
371
|
+
- Verify session files: `ls -la .claude-mpm/sessions/`
|
|
372
|
+
- Review documentation: `/docs/features/session-auto-resume.md`
|