claude-mpm 4.20.3__py3-none-any.whl → 5.1.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_PM.md +35 -6
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1241 -667
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +75 -2
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/circuit-breakers.md +1254 -0
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +37 -2
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +188 -30
- claude_mpm/cli/commands/agents.py +959 -36
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/auto_configure.py +537 -239
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +924 -45
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mpm_init/__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/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +125 -167
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +835 -44
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +1032 -47
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
- claude_mpm/cli/parsers/base_parser.py +53 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +145 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +564 -108
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +17 -2
- claude_mpm/commands/mpm-init.md +28 -3
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/mpm-session-resume.md +381 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +11 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +13 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +19 -35
- claude_mpm/core/config.py +24 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/framework/processors/metadata_processor.py +1 -1
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +131 -10
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +110 -8
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/unified_config.py +22 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
- claude_mpm/hooks/claude_hooks/installer.py +45 -0
- claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
- claude_mpm/services/agents/local_template_manager.py +50 -10
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/cli/session_pause_manager.py +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/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +31 -11
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/core/models/agent_config.py +3 -0
- claude_mpm/services/core/models/process.py +4 -0
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
- claude_mpm/services/diagnostics/models.py +21 -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/consumers/logging.py +1 -2
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +5 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/local_ops/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_config_manager.py +75 -145
- 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 +41 -26
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/mcp_service_verifier.py +6 -3
- 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 +29 -9
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/port_manager.py +1 -1
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +17 -3
- claude_mpm/services/self_upgrade_service.py +165 -7
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +2 -2
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/system_instructions_service.py +1 -3
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +3 -3
- claude_mpm/skills/agent_skills_injector.py +42 -49
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -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/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/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/scripts/with_server.py +37 -15
- claude_mpm/skills/skills_registry.py +44 -48
- claude_mpm/skills/skills_service.py +117 -108
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/tools/code_tree_analyzer/__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 +80 -13
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +244 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- 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-5.1.8.dist-info}/METADATA +496 -65
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +328 -416
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -180
- claude_mpm/agents/templates/circuit_breakers.md +0 -638
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -211
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -281
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -140
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -242
- claude_mpm/agents/templates/react_engineer.json +0 -238
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -188
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/ticketing.json +0 -177
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -157
- claude_mpm/agents/templates/web_qa.json +0 -399
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/cli/commands/mpm_init.py +0 -2093
- claude_mpm/commands/mpm-tickets.md +0 -102
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
- claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
- claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
- claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
- claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
- claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
- claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
- claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/built/react/events.js +0 -30
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
- claude_mpm/dashboard/static/built/shared/logger.js +0 -385
- claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/react/events.js +0 -30
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/js/shared/logger.js +0 -385
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/legacy/activity.html +0 -736
- claude_mpm/dashboard/static/legacy/agents.html +0 -786
- claude_mpm/dashboard/static/legacy/files.html +0 -747
- claude_mpm/dashboard/static/legacy/tools.html +0 -831
- claude_mpm/dashboard/static/monitors.html +0 -431
- claude_mpm/dashboard/static/production/events.html +0 -659
- claude_mpm/dashboard/static/production/main.html +0 -698
- claude_mpm/dashboard/static/production/monitors.html +0 -483
- claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
- claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
- claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
- claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -75
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -184
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -107
- claude_mpm/skills/bundled/collaboration/requesting-code-review/code-reviewer.md +0 -146
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -118
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -177
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -175
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -314
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -227
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -74
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -32
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -328
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -209
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -123
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -304
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -96
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
- /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
- /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
- /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Startup display banner for Claude MPM.
|
|
3
|
+
|
|
4
|
+
Shows welcome message, version info, ASCII art, and what's new section.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import re
|
|
9
|
+
import shutil
|
|
10
|
+
import subprocess
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
from typing import List
|
|
13
|
+
|
|
14
|
+
from claude_mpm.utils.git_analyzer import is_git_repository
|
|
15
|
+
|
|
16
|
+
# ANSI color codes
|
|
17
|
+
CYAN = "\033[36m" # Cyan for header highlight (Claude Code style)
|
|
18
|
+
DIM = "\033[2m" # Dim text for subtle launch message
|
|
19
|
+
RESET = "\033[0m"
|
|
20
|
+
|
|
21
|
+
# Banner dimension defaults (will be calculated based on terminal width)
|
|
22
|
+
MIN_WIDTH = 100 # Minimum banner width
|
|
23
|
+
MAX_WIDTH = 200 # Maximum banner width
|
|
24
|
+
DEFAULT_WIDTH = 160 # Default if terminal width cannot be determined
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _get_terminal_width() -> int:
|
|
28
|
+
"""
|
|
29
|
+
Get terminal width with reasonable bounds.
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
Terminal width (75% of actual) clamped between MIN_WIDTH and MAX_WIDTH
|
|
33
|
+
"""
|
|
34
|
+
try:
|
|
35
|
+
full_width = shutil.get_terminal_size().columns
|
|
36
|
+
# Use 75% of terminal width for more compact display
|
|
37
|
+
width = int(full_width * 0.75)
|
|
38
|
+
# Apply reasonable bounds
|
|
39
|
+
return max(MIN_WIDTH, min(width, MAX_WIDTH))
|
|
40
|
+
except Exception:
|
|
41
|
+
# 75% of 160 = 120
|
|
42
|
+
return 120
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _get_username() -> str:
|
|
46
|
+
"""Get username from environment or default to 'User'."""
|
|
47
|
+
return os.environ.get("USER") or os.environ.get("USERNAME") or "User"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _get_recent_commits(max_commits: int = 3) -> List[str]:
|
|
51
|
+
"""
|
|
52
|
+
Get recent git commits for display in startup banner.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
max_commits: Maximum number of commits to retrieve (default: 3)
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
List of formatted commit strings (hash • relative_time • message)
|
|
59
|
+
Empty list if not a git repo or if any error occurs
|
|
60
|
+
|
|
61
|
+
Format: "a3f5b7c • 2 hours ago • fix: resolve critical error"
|
|
62
|
+
"""
|
|
63
|
+
try:
|
|
64
|
+
# Check if we're in a git repository
|
|
65
|
+
if not is_git_repository("."):
|
|
66
|
+
return []
|
|
67
|
+
|
|
68
|
+
# Run git log with custom format
|
|
69
|
+
result = subprocess.run(
|
|
70
|
+
["git", "log", "--format=%h • %ar • %s", f"-{max_commits}"],
|
|
71
|
+
capture_output=True,
|
|
72
|
+
text=True,
|
|
73
|
+
check=True,
|
|
74
|
+
timeout=2,
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
if not result.stdout.strip():
|
|
78
|
+
return []
|
|
79
|
+
|
|
80
|
+
# Split into lines and return
|
|
81
|
+
commits = [
|
|
82
|
+
line.strip() for line in result.stdout.strip().split("\n") if line.strip()
|
|
83
|
+
]
|
|
84
|
+
return commits[:max_commits]
|
|
85
|
+
|
|
86
|
+
except Exception:
|
|
87
|
+
# Fail silently - return empty list on any error
|
|
88
|
+
# (not a git repo, git not installed, timeout, etc.)
|
|
89
|
+
return []
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _strip_ansi_codes(text: str) -> str:
|
|
93
|
+
"""Remove ANSI color codes from text."""
|
|
94
|
+
ansi_escape = re.compile(r"\x1b\[[0-9;]*m")
|
|
95
|
+
return ansi_escape.sub("", text)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def _get_display_width(text: str) -> int:
|
|
99
|
+
"""
|
|
100
|
+
Calculate display width accounting for emojis and wide characters.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
text: Text to measure (without ANSI codes)
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Display width in terminal columns
|
|
107
|
+
"""
|
|
108
|
+
width = 0
|
|
109
|
+
for char in text:
|
|
110
|
+
# Emoji and wide characters take 2 columns
|
|
111
|
+
if ord(char) > 0x1F000: # Emoji range
|
|
112
|
+
width += 2
|
|
113
|
+
else:
|
|
114
|
+
width += 1
|
|
115
|
+
return width
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _parse_changelog_highlights(max_items: int = 3, max_width: int = 130) -> List[str]:
|
|
119
|
+
"""
|
|
120
|
+
Parse CHANGELOG.md to extract highlights from latest version.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
max_items: Maximum number of highlights to return
|
|
124
|
+
max_width: Maximum width for each highlight
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
List of formatted bullet points for display.
|
|
128
|
+
"""
|
|
129
|
+
changelog_path = Path(__file__).parent.parent.parent.parent / "CHANGELOG.md"
|
|
130
|
+
|
|
131
|
+
if not changelog_path.exists():
|
|
132
|
+
return ["No changelog available"]
|
|
133
|
+
|
|
134
|
+
try:
|
|
135
|
+
with open(changelog_path, encoding="utf-8") as f:
|
|
136
|
+
lines = f.readlines()
|
|
137
|
+
|
|
138
|
+
# Find latest version section (skip [Unreleased])
|
|
139
|
+
in_version_section = False
|
|
140
|
+
highlights = []
|
|
141
|
+
|
|
142
|
+
for i, line in enumerate(lines):
|
|
143
|
+
line = line.rstrip()
|
|
144
|
+
|
|
145
|
+
# Skip unreleased section
|
|
146
|
+
if line.startswith("## [Unreleased]"):
|
|
147
|
+
continue
|
|
148
|
+
|
|
149
|
+
# Found latest version
|
|
150
|
+
if line.startswith("## [") and not in_version_section:
|
|
151
|
+
in_version_section = True
|
|
152
|
+
continue
|
|
153
|
+
|
|
154
|
+
# Next version section means we're done
|
|
155
|
+
if line.startswith("## [") and in_version_section:
|
|
156
|
+
break
|
|
157
|
+
|
|
158
|
+
# Extract any bullet points from any section in latest version
|
|
159
|
+
if in_version_section:
|
|
160
|
+
# Skip section headers
|
|
161
|
+
if line.startswith("###"):
|
|
162
|
+
continue
|
|
163
|
+
|
|
164
|
+
# Extract bullet points
|
|
165
|
+
if line.startswith("-"):
|
|
166
|
+
# Get first line of multi-line items
|
|
167
|
+
item = line[2:].strip() # Remove "- " prefix
|
|
168
|
+
|
|
169
|
+
# Clean up markdown formatting
|
|
170
|
+
item = item.replace("**", "") # Remove bold markers
|
|
171
|
+
|
|
172
|
+
# Truncate if too long
|
|
173
|
+
if len(item) > max_width:
|
|
174
|
+
item = item[: max_width - 3] + "..."
|
|
175
|
+
|
|
176
|
+
highlights.append(item)
|
|
177
|
+
|
|
178
|
+
if len(highlights) >= max_items:
|
|
179
|
+
break
|
|
180
|
+
|
|
181
|
+
if not highlights:
|
|
182
|
+
highlights = ["See CHANGELOG.md for details"]
|
|
183
|
+
|
|
184
|
+
return highlights[:max_items]
|
|
185
|
+
|
|
186
|
+
except Exception:
|
|
187
|
+
return ["See CHANGELOG.md for details"]
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def _get_alien_art() -> List[str]:
|
|
191
|
+
"""Return multi-alien ASCII art with teal/cyan highlighting."""
|
|
192
|
+
return [
|
|
193
|
+
f"{CYAN}▐▛███▜▌ ▐▛███▜▌{RESET}", # Two aliens - Width: 15 chars
|
|
194
|
+
f"{CYAN}▝▜█████▛▘▝▜█████▛▘{RESET}", # Two aliens base - Width: 18 chars
|
|
195
|
+
f"{CYAN}▘▘ ▝▝ ▘▘ ▝▝{RESET}", # Two aliens feet - Width: 14 chars
|
|
196
|
+
]
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def _format_logging_status(logging_level: str) -> str:
|
|
200
|
+
"""Format logging status with helpful indicator."""
|
|
201
|
+
if logging_level == "OFF":
|
|
202
|
+
return "Logging: OFF (default)"
|
|
203
|
+
if logging_level == "DEBUG":
|
|
204
|
+
return f"Logging: {logging_level} (verbose)"
|
|
205
|
+
return f"Logging: {logging_level}"
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def _get_cwd_display(max_width: int = 40) -> str:
|
|
209
|
+
"""Get current working directory, truncated if needed."""
|
|
210
|
+
cwd = str(Path.cwd())
|
|
211
|
+
|
|
212
|
+
if len(cwd) <= max_width:
|
|
213
|
+
return cwd
|
|
214
|
+
|
|
215
|
+
# Truncate from the left with ellipsis
|
|
216
|
+
return "..." + cwd[-(max_width - 3) :]
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def _format_two_column_line(
|
|
220
|
+
left: str, right: str, left_panel_width: int, right_panel_width: int
|
|
221
|
+
) -> str:
|
|
222
|
+
"""
|
|
223
|
+
Format a two-column line with precise width control.
|
|
224
|
+
|
|
225
|
+
Args:
|
|
226
|
+
left: Left panel content (will be centered in left_panel_width)
|
|
227
|
+
right: Right panel content (will be left-aligned in right_panel_width)
|
|
228
|
+
left_panel_width: Width of left panel in characters
|
|
229
|
+
right_panel_width: Width of right panel in characters
|
|
230
|
+
|
|
231
|
+
Returns:
|
|
232
|
+
Formatted line with exact character widths
|
|
233
|
+
"""
|
|
234
|
+
# Strip ANSI codes for width calculation
|
|
235
|
+
left_display = _strip_ansi_codes(left)
|
|
236
|
+
right_display = _strip_ansi_codes(right)
|
|
237
|
+
|
|
238
|
+
# Calculate actual display width
|
|
239
|
+
left_width = _get_display_width(left_display)
|
|
240
|
+
right_width = _get_display_width(right_display)
|
|
241
|
+
|
|
242
|
+
# Calculate padding for left panel (centered)
|
|
243
|
+
left_padding = (left_panel_width - left_width) // 2
|
|
244
|
+
right_padding = left_panel_width - left_width - left_padding
|
|
245
|
+
|
|
246
|
+
# Format left panel with centering
|
|
247
|
+
left_formatted = " " * left_padding + left + " " * right_padding
|
|
248
|
+
|
|
249
|
+
# Format right panel (left-aligned)
|
|
250
|
+
# Right panel content should exactly fill right_panel_width
|
|
251
|
+
right_formatted = right + " " * (right_panel_width - right_width)
|
|
252
|
+
|
|
253
|
+
return f"│{left_formatted}│ {right_formatted}│"
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def display_startup_banner(version: str, logging_level: str) -> None:
|
|
257
|
+
"""
|
|
258
|
+
Display startup banner with welcome message and info.
|
|
259
|
+
|
|
260
|
+
Banner dynamically adjusts to terminal width with cyan header highlight
|
|
261
|
+
(Claude Code style).
|
|
262
|
+
|
|
263
|
+
Args:
|
|
264
|
+
version: Claude MPM version string
|
|
265
|
+
logging_level: Current logging level (OFF/INFO/DEBUG)
|
|
266
|
+
"""
|
|
267
|
+
# Note: Banner is shown BEFORE "Launching Claude..." progress bar (in cli/__init__.py)
|
|
268
|
+
# This ensures users see welcome message before background services start
|
|
269
|
+
print() # Empty line before banner
|
|
270
|
+
|
|
271
|
+
# Get terminal width and calculate panel sizes
|
|
272
|
+
terminal_width = _get_terminal_width()
|
|
273
|
+
left_panel_width = int(terminal_width * 0.25) # ~25% for left panel
|
|
274
|
+
# -4 accounts for: 2 borders (│) + 2 column separators (│ and space)
|
|
275
|
+
right_panel_width = terminal_width - left_panel_width - 4
|
|
276
|
+
|
|
277
|
+
username = _get_username()
|
|
278
|
+
|
|
279
|
+
# Get recent git commits for "Recent activity" section
|
|
280
|
+
recent_commits = _get_recent_commits(max_commits=3)
|
|
281
|
+
|
|
282
|
+
# Build header line with cyan highlight (Claude Code style)
|
|
283
|
+
header = f"─── Claude MPM v{version} "
|
|
284
|
+
header_padding = "─" * (terminal_width - len(header) - 2) # -2 for ╭╮
|
|
285
|
+
top_line = f"{CYAN}╭{header}{header_padding}╮{RESET}"
|
|
286
|
+
|
|
287
|
+
# Build content lines (plain text, no color)
|
|
288
|
+
lines = []
|
|
289
|
+
|
|
290
|
+
# Line 1: Empty left | "Recent activity" right
|
|
291
|
+
lines.append(
|
|
292
|
+
_format_two_column_line(
|
|
293
|
+
"", "Recent activity", left_panel_width, right_panel_width
|
|
294
|
+
)
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
# Lines 2-4: Welcome message + commit activity (3 lines total)
|
|
298
|
+
welcome_msg = f"Welcome back {username}!"
|
|
299
|
+
|
|
300
|
+
# Truncate commits to fit right panel width (leave 2 chars margin)
|
|
301
|
+
max_commit_width = right_panel_width - 2
|
|
302
|
+
truncated_commits = []
|
|
303
|
+
for commit in recent_commits:
|
|
304
|
+
if len(commit) > max_commit_width:
|
|
305
|
+
truncated_commits.append(commit[: max_commit_width - 3] + "...")
|
|
306
|
+
else:
|
|
307
|
+
truncated_commits.append(commit)
|
|
308
|
+
|
|
309
|
+
# Line 2: Welcome message | First commit or "No recent activity"
|
|
310
|
+
if truncated_commits:
|
|
311
|
+
lines.append(
|
|
312
|
+
_format_two_column_line(
|
|
313
|
+
welcome_msg, truncated_commits[0], left_panel_width, right_panel_width
|
|
314
|
+
)
|
|
315
|
+
)
|
|
316
|
+
else:
|
|
317
|
+
lines.append(
|
|
318
|
+
_format_two_column_line(
|
|
319
|
+
welcome_msg, "No recent activity", left_panel_width, right_panel_width
|
|
320
|
+
)
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
# Line 3: Empty left | Second commit or empty
|
|
324
|
+
if len(truncated_commits) >= 2:
|
|
325
|
+
lines.append(
|
|
326
|
+
_format_two_column_line(
|
|
327
|
+
"", truncated_commits[1], left_panel_width, right_panel_width
|
|
328
|
+
)
|
|
329
|
+
)
|
|
330
|
+
else:
|
|
331
|
+
lines.append(
|
|
332
|
+
_format_two_column_line("", "", left_panel_width, right_panel_width)
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
# Line 4: Empty left | Third commit or empty
|
|
336
|
+
if len(truncated_commits) >= 3:
|
|
337
|
+
lines.append(
|
|
338
|
+
_format_two_column_line(
|
|
339
|
+
"", truncated_commits[2], left_panel_width, right_panel_width
|
|
340
|
+
)
|
|
341
|
+
)
|
|
342
|
+
else:
|
|
343
|
+
lines.append(
|
|
344
|
+
_format_two_column_line("", "", left_panel_width, right_panel_width)
|
|
345
|
+
)
|
|
346
|
+
|
|
347
|
+
# Line 5: Empty left | separator right
|
|
348
|
+
separator = "─" * right_panel_width
|
|
349
|
+
lines.append(
|
|
350
|
+
_format_two_column_line("", separator, left_panel_width, right_panel_width)
|
|
351
|
+
)
|
|
352
|
+
|
|
353
|
+
# Line 6: Alien art line 1 | "What's new"
|
|
354
|
+
alien_art = _get_alien_art()
|
|
355
|
+
lines.append(
|
|
356
|
+
_format_two_column_line(
|
|
357
|
+
alien_art[0], "What's new", left_panel_width, right_panel_width
|
|
358
|
+
)
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
# Lines 7-8: More alien art | changelog highlights
|
|
362
|
+
max_highlight_width = right_panel_width - 5 # Leave some margin
|
|
363
|
+
highlights = _parse_changelog_highlights(max_items=3, max_width=max_highlight_width)
|
|
364
|
+
|
|
365
|
+
if len(highlights) >= 1:
|
|
366
|
+
lines.append(
|
|
367
|
+
_format_two_column_line(
|
|
368
|
+
alien_art[1], highlights[0], left_panel_width, right_panel_width
|
|
369
|
+
)
|
|
370
|
+
)
|
|
371
|
+
else:
|
|
372
|
+
lines.append(
|
|
373
|
+
_format_two_column_line(
|
|
374
|
+
alien_art[1], "", left_panel_width, right_panel_width
|
|
375
|
+
)
|
|
376
|
+
)
|
|
377
|
+
|
|
378
|
+
if len(highlights) >= 2:
|
|
379
|
+
lines.append(
|
|
380
|
+
_format_two_column_line(
|
|
381
|
+
alien_art[2], highlights[1], left_panel_width, right_panel_width
|
|
382
|
+
)
|
|
383
|
+
)
|
|
384
|
+
else:
|
|
385
|
+
lines.append(
|
|
386
|
+
_format_two_column_line(
|
|
387
|
+
alien_art[2], "", left_panel_width, right_panel_width
|
|
388
|
+
)
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
# Line 9: Empty | third highlight or link
|
|
392
|
+
if len(highlights) >= 3:
|
|
393
|
+
lines.append(
|
|
394
|
+
_format_two_column_line(
|
|
395
|
+
"", highlights[2], left_panel_width, right_panel_width
|
|
396
|
+
)
|
|
397
|
+
)
|
|
398
|
+
else:
|
|
399
|
+
lines.append(
|
|
400
|
+
_format_two_column_line(
|
|
401
|
+
"", "/mpm-help for more", left_panel_width, right_panel_width
|
|
402
|
+
)
|
|
403
|
+
)
|
|
404
|
+
|
|
405
|
+
# Line 10: Model info | separator
|
|
406
|
+
separator = "─" * right_panel_width
|
|
407
|
+
lines.append(
|
|
408
|
+
_format_two_column_line(
|
|
409
|
+
"Sonnet 4.5 · Claude MPM", separator, left_panel_width, right_panel_width
|
|
410
|
+
)
|
|
411
|
+
)
|
|
412
|
+
|
|
413
|
+
# Line 11: CWD | MPM Commands header
|
|
414
|
+
cwd = _get_cwd_display(left_panel_width - 2)
|
|
415
|
+
lines.append(
|
|
416
|
+
_format_two_column_line(
|
|
417
|
+
cwd, "MPM Commands", left_panel_width, right_panel_width
|
|
418
|
+
)
|
|
419
|
+
)
|
|
420
|
+
|
|
421
|
+
# Line 12: Empty | /mpm command
|
|
422
|
+
lines.append(
|
|
423
|
+
_format_two_column_line(
|
|
424
|
+
"", " /mpm - MPM overview", left_panel_width, right_panel_width
|
|
425
|
+
)
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
# Line 13: Empty | /mpm-agents command
|
|
429
|
+
lines.append(
|
|
430
|
+
_format_two_column_line(
|
|
431
|
+
"", " /mpm-agents - Show agents", left_panel_width, right_panel_width
|
|
432
|
+
)
|
|
433
|
+
)
|
|
434
|
+
|
|
435
|
+
# Line 14: Empty | /mpm-doctor command
|
|
436
|
+
lines.append(
|
|
437
|
+
_format_two_column_line(
|
|
438
|
+
"", " /mpm-doctor - Run diagnostics", left_panel_width, right_panel_width
|
|
439
|
+
)
|
|
440
|
+
)
|
|
441
|
+
|
|
442
|
+
# Line 15: Empty | empty
|
|
443
|
+
lines.append(_format_two_column_line("", "", left_panel_width, right_panel_width))
|
|
444
|
+
|
|
445
|
+
# Line 16: Empty | autocomplete tip
|
|
446
|
+
lines.append(
|
|
447
|
+
_format_two_column_line(
|
|
448
|
+
"", "Type / for autocomplete", left_panel_width, right_panel_width
|
|
449
|
+
)
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
# Build bottom line (plain text, no color)
|
|
453
|
+
bottom_line = f"╰{'─' * (terminal_width - 2)}╯"
|
|
454
|
+
|
|
455
|
+
# Print banner (only header has cyan color)
|
|
456
|
+
print(top_line)
|
|
457
|
+
for line in lines:
|
|
458
|
+
print(line)
|
|
459
|
+
print(bottom_line)
|
|
460
|
+
print() # Empty line after banner
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
def should_show_banner(args) -> bool:
|
|
464
|
+
"""
|
|
465
|
+
Determine if startup banner should be displayed.
|
|
466
|
+
|
|
467
|
+
Skip banner for: --help, --version, info, doctor, config, configure commands
|
|
468
|
+
"""
|
|
469
|
+
# Check for help/version flags
|
|
470
|
+
if hasattr(args, "help") and args.help:
|
|
471
|
+
return False
|
|
472
|
+
if hasattr(args, "version") and args.version:
|
|
473
|
+
return False
|
|
474
|
+
|
|
475
|
+
# Check for commands that should skip banner
|
|
476
|
+
skip_commands = {"info", "doctor", "config", "configure"}
|
|
477
|
+
if hasattr(args, "command") and args.command in skip_commands:
|
|
478
|
+
return False
|
|
479
|
+
|
|
480
|
+
return True
|
claude_mpm/cli/utils.py
CHANGED
|
@@ -171,7 +171,7 @@ def setup_logging(args) -> object:
|
|
|
171
171
|
|
|
172
172
|
# Set default logging level if not specified
|
|
173
173
|
if not hasattr(args, "logging") or args.logging is None:
|
|
174
|
-
args.logging = LogLevel.
|
|
174
|
+
args.logging = LogLevel.OFF.value
|
|
175
175
|
|
|
176
176
|
# Handle deprecated --debug flag
|
|
177
177
|
if hasattr(args, "debug") and args.debug and args.logging == LogLevel.INFO.value:
|
|
@@ -107,7 +107,7 @@ class CommandRegistry:
|
|
|
107
107
|
|
|
108
108
|
# Apply extra arguments
|
|
109
109
|
for arg_name, arg_config in command.extra_args.items():
|
|
110
|
-
flags = arg_config.pop("flags", [f
|
|
110
|
+
flags = arg_config.pop("flags", [f"--{arg_name.replace('_', '-')}"])
|
|
111
111
|
subparser.add_argument(*flags, **arg_config)
|
|
112
112
|
|
|
113
113
|
# Store handler reference
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/agents
|
|
3
|
+
command: auto-configure
|
|
4
|
+
aliases: [mpm-agents-auto-configure]
|
|
5
|
+
migration_target: /mpm/agents:auto-configure
|
|
6
|
+
category: agents
|
|
7
|
+
deprecated_aliases: [mpm-auto-configure]
|
|
8
|
+
description: Automatically detect project toolchain and configure appropriate agents
|
|
9
|
+
---
|
|
1
10
|
# Automatically configure agents based on project detection
|
|
2
11
|
|
|
3
12
|
Automatically detect your project's toolchain and configure the most appropriate agents.
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/agents
|
|
3
|
+
command: detect
|
|
4
|
+
aliases: [mpm-agents-detect]
|
|
5
|
+
migration_target: /mpm/agents:detect
|
|
6
|
+
category: agents
|
|
7
|
+
deprecated_aliases: []
|
|
8
|
+
description: Scan project to detect programming languages, frameworks, tools, and configurations
|
|
9
|
+
---
|
|
1
10
|
# Detect project toolchain and frameworks
|
|
2
11
|
|
|
3
12
|
Scan your project to detect programming languages, frameworks, tools, and configurations.
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/agents
|
|
3
|
+
command: list
|
|
4
|
+
aliases: [mpm-agents-list]
|
|
5
|
+
migration_target: /mpm/agents:list
|
|
6
|
+
category: agents
|
|
7
|
+
deprecated_aliases: [mpm-agents]
|
|
8
|
+
description: List all available Claude MPM agents with versions and deployment status
|
|
9
|
+
---
|
|
1
10
|
# Show available agents and their versions
|
|
2
11
|
|
|
3
12
|
Show all available Claude MPM agents with their versions and deployment status.
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/agents
|
|
3
|
+
command: recommend
|
|
4
|
+
aliases: [mpm-agents-recommend]
|
|
5
|
+
migration_target: /mpm/agents:recommend
|
|
6
|
+
category: agents
|
|
7
|
+
deprecated_aliases: []
|
|
8
|
+
description: Get intelligent agent recommendations based on detected project toolchain
|
|
9
|
+
---
|
|
1
10
|
# Show recommended agents for detected project stack
|
|
2
11
|
|
|
3
12
|
Get intelligent agent recommendations based on your project's detected toolchain.
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/config
|
|
3
|
+
command: view
|
|
4
|
+
aliases: [mpm-config-view]
|
|
5
|
+
migration_target: /mpm/config:view
|
|
6
|
+
category: config
|
|
7
|
+
deprecated_aliases: [mpm-config]
|
|
8
|
+
description: View and validate Claude MPM configuration settings
|
|
9
|
+
---
|
|
1
10
|
# View and validate claude-mpm configuration
|
|
2
11
|
|
|
3
12
|
Manage Claude MPM configuration settings through validation, viewing, and status checks.
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/system
|
|
3
|
+
command: doctor
|
|
4
|
+
aliases: [mpm-doctor]
|
|
5
|
+
migration_target: /mpm/system:doctor
|
|
6
|
+
category: system
|
|
7
|
+
deprecated_aliases: []
|
|
8
|
+
description: Run comprehensive diagnostic checks on Claude MPM installation
|
|
9
|
+
---
|
|
1
10
|
# Run diagnostic checks on claude-mpm installation
|
|
2
11
|
|
|
3
12
|
Run comprehensive diagnostic checks on your Claude MPM installation to identify and fix common issues.
|
claude_mpm/commands/mpm-help.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/system
|
|
3
|
+
command: help
|
|
4
|
+
aliases: [mpm-help]
|
|
5
|
+
migration_target: /mpm/system:help
|
|
6
|
+
category: system
|
|
7
|
+
deprecated_aliases: []
|
|
8
|
+
description: Display help information for Claude MPM slash commands and CLI capabilities
|
|
9
|
+
---
|
|
1
10
|
# Show help for available MPM commands
|
|
2
11
|
|
|
3
12
|
Display help information for Claude MPM slash commands and CLI capabilities.
|
|
@@ -63,6 +72,9 @@ Available Commands:
|
|
|
63
72
|
/mpm-doctor [--fix] [--verbose]
|
|
64
73
|
Diagnose and fix common issues
|
|
65
74
|
|
|
75
|
+
/mpm-postmortem [--auto-fix] [--create-prs]
|
|
76
|
+
Analyze session errors and suggest improvements
|
|
77
|
+
|
|
66
78
|
/mpm-agents [list|deploy|remove] [name]
|
|
67
79
|
Manage agent deployment
|
|
68
80
|
|
|
@@ -78,8 +90,8 @@ Available Commands:
|
|
|
78
90
|
/mpm-config [validate|view|status]
|
|
79
91
|
Manage configuration settings
|
|
80
92
|
|
|
81
|
-
/mpm-
|
|
82
|
-
|
|
93
|
+
/mpm-ticket [organize|proceed|status|update|project]
|
|
94
|
+
High-level ticketing workflows and project management
|
|
83
95
|
|
|
84
96
|
/mpm-organize [--dry-run] [--force]
|
|
85
97
|
Organize project file structure
|
|
@@ -87,6 +99,9 @@ Available Commands:
|
|
|
87
99
|
/mpm-init [update]
|
|
88
100
|
Initialize or update project documentation
|
|
89
101
|
|
|
102
|
+
/mpm-resume
|
|
103
|
+
Create session resume files for easy work resumption
|
|
104
|
+
|
|
90
105
|
/mpm-monitor [start|stop|restart|status|port]
|
|
91
106
|
Manage Socket.IO monitoring server and dashboard
|
|
92
107
|
|
claude_mpm/commands/mpm-init.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/system
|
|
3
|
+
command: init
|
|
4
|
+
aliases: [mpm-init]
|
|
5
|
+
migration_target: /mpm/system:init
|
|
6
|
+
category: system
|
|
7
|
+
deprecated_aliases: []
|
|
8
|
+
description: Initialize or update project for Claude Code and Claude MPM
|
|
9
|
+
---
|
|
1
10
|
# /mpm-init [update]
|
|
2
11
|
|
|
3
12
|
Initialize or intelligently update your project for optimal use with Claude Code and Claude MPM using the Agentic Coder Optimizer agent.
|
|
@@ -44,6 +53,7 @@ This command has two primary modes:
|
|
|
44
53
|
- **🧠 Memory System**: Initializes project knowledge retention
|
|
45
54
|
- **🔧 Tool Configuration**: Sets up linting, formatting, testing
|
|
46
55
|
- **📝 Holistic Review**: Final organization and validation pass
|
|
56
|
+
- **🔒 GitIgnore Management**: Automatically excludes claude-mpm config directories
|
|
47
57
|
|
|
48
58
|
## Options
|
|
49
59
|
|
|
@@ -205,14 +215,27 @@ When enabled, performs:
|
|
|
205
215
|
- Initializes memory files for project knowledge
|
|
206
216
|
- Documents memory usage patterns
|
|
207
217
|
|
|
208
|
-
### 7.
|
|
218
|
+
### 7. GitIgnore Management (Automatic)
|
|
219
|
+
During initialization:
|
|
220
|
+
- **Automatic Updates**: Adds `.claude-mpm/` and `.claude/agents/` to `.gitignore`
|
|
221
|
+
- **Smart Detection**: Skips entries that already exist (no duplicates)
|
|
222
|
+
- **Safe Operation**: Creates `.gitignore` if missing, preserves existing content
|
|
223
|
+
- **Non-Blocking**: Continues initialization even if `.gitignore` update fails
|
|
224
|
+
|
|
225
|
+
**Entries Added**:
|
|
226
|
+
- `.claude-mpm/`: Configuration directory (sessions, logs, etc.)
|
|
227
|
+
- `.claude/agents/`: Agent runtime files
|
|
228
|
+
|
|
229
|
+
This ensures claude-mpm configuration files never get committed to version control.
|
|
230
|
+
|
|
231
|
+
### 8. Holistic Organization (Final Step)
|
|
209
232
|
After all tasks, performs a comprehensive review:
|
|
210
233
|
- Reorganizes content by priority
|
|
211
234
|
- Validates completeness
|
|
212
235
|
- Ensures single-path principle
|
|
213
236
|
- Adds meta-instructions for maintenance
|
|
214
237
|
|
|
215
|
-
###
|
|
238
|
+
### 9. Update Mode Features (NEW)
|
|
216
239
|
When updating existing documentation:
|
|
217
240
|
- **Smart Merging**: Intelligently merges new content with existing
|
|
218
241
|
- **Custom Preservation**: Keeps your project-specific sections
|
|
@@ -309,7 +332,7 @@ Working on:
|
|
|
309
332
|
|
|
310
333
|
📝 Files Modified:
|
|
311
334
|
• src/claude_mpm/services/cli/resume_service.py (new)
|
|
312
|
-
• src/claude_mpm/cli/commands/mpm_init
|
|
335
|
+
• src/claude_mpm/cli/commands/mpm_init/ (refactored into package)
|
|
313
336
|
|
|
314
337
|
🎯 Next Steps:
|
|
315
338
|
• Implement ResumeService class
|
|
@@ -470,6 +493,7 @@ The command delegates to the Agentic Coder Optimizer agent which:
|
|
|
470
493
|
- ✅ **Memory system**: Initialized for knowledge retention
|
|
471
494
|
- ✅ **Developer docs**: Technical documentation (with AST analysis)
|
|
472
495
|
- ✅ **Priority organization**: Instructions ranked by importance
|
|
496
|
+
- ✅ **.gitignore**: Configuration directories automatically excluded
|
|
473
497
|
|
|
474
498
|
### For Existing Projects (Update Mode)
|
|
475
499
|
- ✅ **Updated CLAUDE.md**: Refreshed with latest standards
|
|
@@ -478,6 +502,7 @@ The command delegates to the Agentic Coder Optimizer agent which:
|
|
|
478
502
|
- ✅ **Structure verified**: Missing directories created
|
|
479
503
|
- ✅ **Files organized**: Misplaced files moved (if --organize)
|
|
480
504
|
- ✅ **Change summary**: Report of what was updated
|
|
505
|
+
- ✅ **.gitignore**: Config directories added if not present
|
|
481
506
|
|
|
482
507
|
### For Quick Update Mode (`/mpm-init update`)
|
|
483
508
|
- ✅ **Activity Report**: Summary of recent 30-day git activity
|