claude-mpm 5.4.22__py3-none-any.whl → 5.6.34__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_AGENT.md +164 -0
- claude_mpm/agents/BASE_ENGINEER.md +658 -0
- claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +66 -241
- claude_mpm/agents/CLAUDE_MPM_RESEARCH_OUTPUT_STYLE.md +413 -0
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +109 -1925
- claude_mpm/agents/MEMORY.md +1 -1
- claude_mpm/agents/PM_INSTRUCTIONS.md +374 -1257
- claude_mpm/agents/WORKFLOW.md +6 -253
- claude_mpm/agents/agent_loader.py +1 -1
- claude_mpm/agents/base_agent.json +31 -0
- claude_mpm/agents/frontmatter_validator.py +2 -2
- claude_mpm/agents/templates/circuit-breakers.md +26 -17
- claude_mpm/cli/__init__.py +5 -1
- claude_mpm/cli/commands/agent_state_manager.py +10 -10
- claude_mpm/cli/commands/agents.py +11 -13
- claude_mpm/cli/commands/agents_reconcile.py +197 -0
- claude_mpm/cli/commands/auto_configure.py +4 -4
- claude_mpm/cli/commands/autotodos.py +566 -0
- claude_mpm/cli/commands/commander.py +216 -0
- claude_mpm/cli/commands/configure.py +621 -22
- claude_mpm/cli/commands/configure_agent_display.py +12 -0
- claude_mpm/cli/commands/hook_errors.py +60 -60
- claude_mpm/cli/commands/monitor.py +2 -2
- claude_mpm/cli/commands/mpm_init/core.py +72 -0
- claude_mpm/cli/commands/postmortem.py +1 -1
- claude_mpm/cli/commands/profile.py +276 -0
- claude_mpm/cli/commands/run.py +35 -3
- claude_mpm/cli/commands/skill_source.py +51 -2
- claude_mpm/cli/commands/skills.py +182 -32
- claude_mpm/cli/executor.py +130 -16
- claude_mpm/cli/interactive/__init__.py +10 -0
- claude_mpm/cli/interactive/agent_wizard.py +32 -52
- claude_mpm/cli/interactive/questionary_styles.py +65 -0
- claude_mpm/cli/interactive/skill_selector.py +481 -0
- claude_mpm/cli/parsers/base_parser.py +83 -1
- claude_mpm/cli/parsers/commander_parser.py +116 -0
- claude_mpm/cli/parsers/profile_parser.py +147 -0
- claude_mpm/cli/parsers/run_parser.py +10 -0
- claude_mpm/cli/parsers/skill_source_parser.py +4 -0
- claude_mpm/cli/parsers/skills_parser.py +2 -3
- claude_mpm/cli/startup.py +690 -386
- claude_mpm/cli/startup_display.py +74 -6
- claude_mpm/cli/startup_logging.py +2 -2
- claude_mpm/cli/utils.py +7 -3
- claude_mpm/commander/__init__.py +78 -0
- claude_mpm/commander/adapters/__init__.py +60 -0
- claude_mpm/commander/adapters/auggie.py +260 -0
- claude_mpm/commander/adapters/base.py +288 -0
- claude_mpm/commander/adapters/claude_code.py +392 -0
- claude_mpm/commander/adapters/codex.py +237 -0
- claude_mpm/commander/adapters/communication.py +366 -0
- claude_mpm/commander/adapters/example_usage.py +310 -0
- claude_mpm/commander/adapters/mpm.py +389 -0
- claude_mpm/commander/adapters/registry.py +204 -0
- claude_mpm/commander/api/__init__.py +16 -0
- claude_mpm/commander/api/app.py +121 -0
- claude_mpm/commander/api/errors.py +133 -0
- claude_mpm/commander/api/routes/__init__.py +8 -0
- claude_mpm/commander/api/routes/events.py +184 -0
- claude_mpm/commander/api/routes/inbox.py +171 -0
- claude_mpm/commander/api/routes/messages.py +148 -0
- claude_mpm/commander/api/routes/projects.py +271 -0
- claude_mpm/commander/api/routes/sessions.py +226 -0
- claude_mpm/commander/api/routes/work.py +296 -0
- claude_mpm/commander/api/schemas.py +186 -0
- claude_mpm/commander/chat/__init__.py +7 -0
- claude_mpm/commander/chat/cli.py +146 -0
- claude_mpm/commander/chat/commands.py +96 -0
- claude_mpm/commander/chat/repl.py +310 -0
- claude_mpm/commander/config.py +51 -0
- claude_mpm/commander/config_loader.py +115 -0
- claude_mpm/commander/core/__init__.py +10 -0
- claude_mpm/commander/core/block_manager.py +325 -0
- claude_mpm/commander/core/response_manager.py +323 -0
- claude_mpm/commander/daemon.py +603 -0
- claude_mpm/commander/env_loader.py +59 -0
- claude_mpm/commander/events/__init__.py +26 -0
- claude_mpm/commander/events/manager.py +332 -0
- claude_mpm/commander/frameworks/__init__.py +12 -0
- claude_mpm/commander/frameworks/base.py +146 -0
- claude_mpm/commander/frameworks/claude_code.py +58 -0
- claude_mpm/commander/frameworks/mpm.py +62 -0
- claude_mpm/commander/inbox/__init__.py +16 -0
- claude_mpm/commander/inbox/dedup.py +128 -0
- claude_mpm/commander/inbox/inbox.py +224 -0
- claude_mpm/commander/inbox/models.py +70 -0
- claude_mpm/commander/instance_manager.py +450 -0
- claude_mpm/commander/llm/__init__.py +6 -0
- claude_mpm/commander/llm/openrouter_client.py +167 -0
- claude_mpm/commander/llm/summarizer.py +70 -0
- claude_mpm/commander/memory/__init__.py +45 -0
- claude_mpm/commander/memory/compression.py +347 -0
- claude_mpm/commander/memory/embeddings.py +230 -0
- claude_mpm/commander/memory/entities.py +310 -0
- claude_mpm/commander/memory/example_usage.py +290 -0
- claude_mpm/commander/memory/integration.py +325 -0
- claude_mpm/commander/memory/search.py +381 -0
- claude_mpm/commander/memory/store.py +657 -0
- claude_mpm/commander/models/__init__.py +18 -0
- claude_mpm/commander/models/events.py +121 -0
- claude_mpm/commander/models/project.py +162 -0
- claude_mpm/commander/models/work.py +214 -0
- claude_mpm/commander/parsing/__init__.py +20 -0
- claude_mpm/commander/parsing/extractor.py +132 -0
- claude_mpm/commander/parsing/output_parser.py +270 -0
- claude_mpm/commander/parsing/patterns.py +100 -0
- claude_mpm/commander/persistence/__init__.py +11 -0
- claude_mpm/commander/persistence/event_store.py +274 -0
- claude_mpm/commander/persistence/state_store.py +309 -0
- claude_mpm/commander/persistence/work_store.py +164 -0
- claude_mpm/commander/polling/__init__.py +13 -0
- claude_mpm/commander/polling/event_detector.py +104 -0
- claude_mpm/commander/polling/output_buffer.py +49 -0
- claude_mpm/commander/polling/output_poller.py +153 -0
- claude_mpm/commander/project_session.py +268 -0
- claude_mpm/commander/proxy/__init__.py +12 -0
- claude_mpm/commander/proxy/formatter.py +89 -0
- claude_mpm/commander/proxy/output_handler.py +191 -0
- claude_mpm/commander/proxy/relay.py +155 -0
- claude_mpm/commander/registry.py +410 -0
- claude_mpm/commander/runtime/__init__.py +10 -0
- claude_mpm/commander/runtime/executor.py +191 -0
- claude_mpm/commander/runtime/monitor.py +346 -0
- claude_mpm/commander/session/__init__.py +6 -0
- claude_mpm/commander/session/context.py +81 -0
- claude_mpm/commander/session/manager.py +59 -0
- claude_mpm/commander/tmux_orchestrator.py +361 -0
- claude_mpm/commander/web/__init__.py +1 -0
- claude_mpm/commander/work/__init__.py +30 -0
- claude_mpm/commander/work/executor.py +207 -0
- claude_mpm/commander/work/queue.py +405 -0
- claude_mpm/commander/workflow/__init__.py +27 -0
- claude_mpm/commander/workflow/event_handler.py +241 -0
- claude_mpm/commander/workflow/notifier.py +146 -0
- claude_mpm/commands/mpm-config.md +20 -249
- claude_mpm/commands/mpm-doctor.md +16 -21
- claude_mpm/commands/mpm-help.md +12 -205
- claude_mpm/commands/mpm-init.md +88 -506
- claude_mpm/commands/mpm-monitor.md +22 -401
- claude_mpm/commands/mpm-organize.md +70 -442
- claude_mpm/commands/mpm-postmortem.md +13 -107
- claude_mpm/commands/mpm-session-resume.md +20 -363
- claude_mpm/commands/mpm-status.md +13 -69
- claude_mpm/commands/mpm-ticket-view.md +60 -495
- claude_mpm/commands/mpm-version.md +13 -107
- claude_mpm/commands/mpm.md +8 -0
- claude_mpm/config/agent_presets.py +8 -7
- claude_mpm/config/skill_sources.py +16 -0
- claude_mpm/constants.py +1 -0
- claude_mpm/core/claude_runner.py +154 -2
- claude_mpm/core/config.py +37 -26
- claude_mpm/core/config_constants.py +74 -9
- claude_mpm/core/constants.py +56 -12
- claude_mpm/core/framework/loaders/agent_loader.py +1 -1
- claude_mpm/core/framework/loaders/instruction_loader.py +52 -11
- claude_mpm/core/hook_manager.py +51 -3
- claude_mpm/core/interactive_session.py +12 -11
- claude_mpm/core/logger.py +26 -9
- claude_mpm/core/logging_utils.py +39 -13
- claude_mpm/core/network_config.py +148 -0
- claude_mpm/core/oneshot_session.py +7 -6
- claude_mpm/core/optimized_startup.py +61 -0
- claude_mpm/core/output_style_manager.py +66 -18
- claude_mpm/core/shared/config_loader.py +3 -1
- claude_mpm/core/socketio_pool.py +47 -15
- claude_mpm/core/unified_agent_registry.py +1 -1
- claude_mpm/core/unified_config.py +54 -8
- claude_mpm/core/unified_paths.py +95 -90
- claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.C33zOoyM.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.CW1J-YuA.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/1WZnGYqX.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/67pF3qNn.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/6RxdMKe4.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/8cZrfX0h.js +60 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/9a6T2nm-.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B443AUzu.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B8AwtY2H.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BF15LAsF.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BQaXIfA_.js +331 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BRcwIQNr.js +4 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BSNlmTZj.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BV6nKitt.js +43 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BViJ8lZt.js +128 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BcQ-Q0FE.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Bpyvgze_.js +30 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BzTRqg-z.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C0Fr8dve.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C3rbW_a-.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C8WYN38h.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C9I8FlXH.js +61 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIQcWgO2.js +36 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIctN7YN.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CKrS_JZW.js +145 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CR6P9C4A.js +89 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRRR9MD_.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRcR2DqT.js +334 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CSXtMOf0.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CT-sbxSk.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWm6DJsp.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CmKTTxBW.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CpqQ1Kzn.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cu_Erd72.js +261 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D2nGpDRe.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9iCMida.js +267 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9ykgMoY.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DL2Ldur1.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DPfltzjH.js +165 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DR8nis88.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DUliQN2b.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DVp1hx9R.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DXlhR01x.js +122 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D_lyTybS.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DngoTTgh.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DqkmHtDC.js +220 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DsDh8EYs.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DypDmXgd.js +139 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Gi6I4Gst.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/IPYC-LnN.js +162 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JTLiF7dt.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JpevfAFt.js +68 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/NqQ1dWOy.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/R8CEIRAd.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Zxy7qc-l.js +64 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/q9Hm6zAU.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/qtd3IeO4.js +15 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/ulBFON_C.js +65 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/wQVh1CoA.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.Dr7t0z2J.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.BGhZHUS3.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.RgBboRvH.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DG-KkbDf.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.D_jnf-x6.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
- claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
- claude_mpm/dashboard/static/svelte-build/index.html +36 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/fonts/generate_fonts.py +58 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_tfms.py +114 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_ttfs.py +122 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/format_json.py +28 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/parse_tfm.py +211 -0
- claude_mpm/experimental/cli_enhancements.py +2 -1
- claude_mpm/hooks/claude_hooks/INTEGRATION_EXAMPLE.md +243 -0
- claude_mpm/hooks/claude_hooks/README_AUTO_PAUSE.md +403 -0
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/auto_pause_handler.py +485 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +527 -136
- claude_mpm/hooks/claude_hooks/hook_handler.py +313 -99
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh +6 -11
- claude_mpm/hooks/claude_hooks/installer.py +206 -36
- claude_mpm/hooks/claude_hooks/memory_integration.py +52 -32
- claude_mpm/hooks/claude_hooks/response_tracking.py +43 -60
- claude_mpm/hooks/claude_hooks/services/__init__.py +21 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/container.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/protocols.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +67 -32
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +38 -105
- claude_mpm/hooks/claude_hooks/services/container.py +310 -0
- claude_mpm/hooks/claude_hooks/services/protocols.py +328 -0
- claude_mpm/hooks/claude_hooks/services/state_manager.py +25 -38
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +75 -77
- claude_mpm/hooks/kuzu_memory_hook.py +5 -5
- claude_mpm/hooks/session_resume_hook.py +89 -1
- claude_mpm/hooks/templates/pre_tool_use_simple.py +6 -6
- claude_mpm/hooks/templates/pre_tool_use_template.py +16 -8
- claude_mpm/init.py +276 -0
- claude_mpm/models/git_repository.py +3 -3
- claude_mpm/scripts/claude-hook-handler.sh +46 -19
- claude_mpm/services/agents/agent_builder.py +3 -3
- claude_mpm/services/agents/agent_recommendation_service.py +8 -8
- claude_mpm/services/agents/agent_selection_service.py +2 -2
- claude_mpm/services/agents/cache_git_manager.py +7 -7
- claude_mpm/services/agents/deployment/agent_deployment.py +29 -7
- claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -2
- claude_mpm/services/agents/deployment/agent_format_converter.py +25 -13
- claude_mpm/services/agents/deployment/agent_template_builder.py +39 -19
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +2 -2
- claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
- claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
- claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +169 -26
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +101 -75
- claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
- claude_mpm/services/agents/git_source_manager.py +23 -4
- claude_mpm/services/agents/loading/framework_agent_loader.py +75 -2
- claude_mpm/services/agents/recommender.py +5 -3
- claude_mpm/services/agents/single_tier_deployment_service.py +6 -6
- claude_mpm/services/agents/sources/git_source_sync_service.py +121 -10
- claude_mpm/services/agents/startup_sync.py +27 -4
- claude_mpm/services/cli/__init__.py +3 -0
- claude_mpm/services/cli/incremental_pause_manager.py +561 -0
- claude_mpm/services/cli/session_resume_helper.py +10 -2
- claude_mpm/services/command_deployment_service.py +44 -26
- claude_mpm/services/delegation_detector.py +175 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +2 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +31 -1
- claude_mpm/services/diagnostics/checks/configuration_check.py +24 -0
- claude_mpm/services/diagnostics/checks/installation_check.py +22 -0
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +23 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +31 -1
- claude_mpm/services/diagnostics/models.py +14 -1
- claude_mpm/services/event_log.py +325 -0
- claude_mpm/services/git/git_operations_service.py +8 -8
- claude_mpm/services/hook_installer_service.py +77 -8
- claude_mpm/services/infrastructure/__init__.py +4 -0
- claude_mpm/services/infrastructure/context_usage_tracker.py +291 -0
- claude_mpm/services/infrastructure/resume_log_generator.py +24 -5
- claude_mpm/services/monitor/daemon_manager.py +15 -4
- claude_mpm/services/monitor/management/lifecycle.py +15 -3
- claude_mpm/services/monitor/server.py +571 -11
- claude_mpm/services/pm_skills_deployer.py +884 -0
- claude_mpm/services/profile_manager.py +337 -0
- claude_mpm/services/skills/git_skill_source_manager.py +281 -20
- claude_mpm/services/skills/selective_skill_deployer.py +211 -46
- claude_mpm/services/skills/skill_discovery_service.py +74 -4
- claude_mpm/services/skills_deployer.py +192 -70
- claude_mpm/services/socketio/dashboard_server.py +1 -0
- claude_mpm/services/socketio/event_normalizer.py +37 -6
- claude_mpm/services/socketio/handlers/hook.py +14 -7
- claude_mpm/services/socketio/server/core.py +262 -123
- claude_mpm/services/socketio/server/main.py +12 -4
- claude_mpm/skills/__init__.py +2 -1
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
- claude_mpm/skills/bundled/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/main/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
- claude_mpm/skills/bundled/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/pm/mpm/SKILL.md +38 -0
- claude_mpm/skills/bundled/pm/mpm-agent-update-workflow/SKILL.md +75 -0
- claude_mpm/skills/bundled/pm/mpm-bug-reporting/SKILL.md +248 -0
- claude_mpm/skills/bundled/pm/mpm-circuit-breaker-enforcement/SKILL.md +476 -0
- claude_mpm/skills/bundled/pm/mpm-config/SKILL.md +29 -0
- claude_mpm/skills/bundled/pm/mpm-delegation-patterns/SKILL.md +167 -0
- claude_mpm/skills/bundled/pm/mpm-doctor/SKILL.md +53 -0
- claude_mpm/skills/bundled/pm/mpm-git-file-tracking/SKILL.md +113 -0
- claude_mpm/skills/bundled/pm/mpm-help/SKILL.md +35 -0
- claude_mpm/skills/bundled/pm/mpm-init/SKILL.md +125 -0
- claude_mpm/skills/bundled/pm/mpm-monitor/SKILL.md +32 -0
- claude_mpm/skills/bundled/pm/mpm-organize/SKILL.md +121 -0
- claude_mpm/skills/bundled/pm/mpm-postmortem/SKILL.md +22 -0
- claude_mpm/skills/bundled/pm/mpm-pr-workflow/SKILL.md +124 -0
- claude_mpm/skills/bundled/pm/mpm-session-management/SKILL.md +312 -0
- claude_mpm/skills/bundled/pm/mpm-session-pause/SKILL.md +170 -0
- claude_mpm/skills/bundled/pm/mpm-session-resume/SKILL.md +31 -0
- claude_mpm/skills/bundled/pm/mpm-status/SKILL.md +37 -0
- claude_mpm/skills/bundled/pm/mpm-teaching-mode/SKILL.md +657 -0
- claude_mpm/skills/bundled/pm/mpm-ticket-view/SKILL.md +110 -0
- claude_mpm/skills/bundled/pm/mpm-ticketing-integration/SKILL.md +154 -0
- claude_mpm/skills/bundled/pm/mpm-tool-usage-guide/SKILL.md +386 -0
- claude_mpm/skills/bundled/pm/mpm-verification-protocols/SKILL.md +198 -0
- claude_mpm/skills/bundled/pm/mpm-version/SKILL.md +21 -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/security-scanning.md +112 -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 +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/skills/registry.py +295 -90
- claude_mpm/skills/skill_manager.py +98 -3
- claude_mpm/templates/.pre-commit-config.yaml +112 -0
- claude_mpm/utils/agent_dependency_loader.py +115 -4
- claude_mpm/utils/agent_filters.py +1 -1
- claude_mpm/utils/migration.py +4 -4
- claude_mpm/utils/robust_installer.py +86 -21
- claude_mpm-5.6.34.dist-info/METADATA +393 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/RECORD +486 -145
- claude_mpm-5.4.22.dist-info/METADATA +0 -996
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/WHEEL +0 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/entry_points.txt +0 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/licenses/LICENSE-FAQ.md +0 -0
- {claude_mpm-5.4.22.dist-info → claude_mpm-5.6.34.dist-info}/top_level.txt +0 -0
claude_mpm/agents/WORKFLOW.md
CHANGED
|
@@ -64,256 +64,21 @@ Return: Clean or list of blocked items
|
|
|
64
64
|
|
|
65
65
|
## Publish and Release Workflow
|
|
66
66
|
|
|
67
|
-
**
|
|
67
|
+
**CRITICAL**: PM MUST DELEGATE all version bumps and releases to local-ops. PM never edits version files (pyproject.toml, package.json, VERSION) directly.
|
|
68
68
|
|
|
69
|
-
**
|
|
69
|
+
**Note**: Release workflows are project-specific and should be customized per project. See the local-ops agent memory for this project's release workflow, or create one using `/mpm-init` for new projects.
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
### Process Overview
|
|
74
|
-
|
|
75
|
-
Publishing and releasing is a **multi-step orchestrated workflow** requiring coordination across multiple agents with mandatory verification at each stage. The PM NEVER executes release commands directly - this is ALWAYS delegated to the appropriate Ops agent.
|
|
76
|
-
|
|
77
|
-
### Workflow Phases
|
|
78
|
-
|
|
79
|
-
#### Phase 1: Pre-Release Validation (Research + QA)
|
|
80
|
-
|
|
81
|
-
**Agent**: Research
|
|
82
|
-
**Purpose**: Validate readiness for release
|
|
83
|
-
**Template**:
|
|
84
|
-
```
|
|
85
|
-
Task: Pre-release readiness check
|
|
86
|
-
Requirements:
|
|
87
|
-
- Verify all uncommitted changes are tracked
|
|
88
|
-
- Check git status for untracked files
|
|
89
|
-
- Validate all features documented
|
|
90
|
-
- Confirm CHANGELOG updated
|
|
91
|
-
Success Criteria: Clean working directory, complete documentation
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
**Decision**:
|
|
95
|
-
- Clean → Proceed to Phase 2
|
|
96
|
-
- Uncommitted changes → Report to user, request commit approval
|
|
97
|
-
- Missing documentation → Delegate to Documentation agent
|
|
98
|
-
|
|
99
|
-
#### Phase 2: Quality Gate Validation (QA)
|
|
100
|
-
|
|
101
|
-
**Agent**: QA
|
|
102
|
-
**Purpose**: Execute comprehensive quality checks
|
|
103
|
-
**Template**:
|
|
104
|
-
```
|
|
105
|
-
Task: Run pre-publish quality gate
|
|
106
|
-
Requirements:
|
|
107
|
-
- Execute: make pre-publish
|
|
108
|
-
- Verify all linters pass (Ruff, Black, isort, Flake8)
|
|
109
|
-
- Confirm test suite passes
|
|
110
|
-
- Validate version consistency
|
|
111
|
-
- Check for debug prints, TODO comments
|
|
112
|
-
Evidence Required: Complete quality gate output
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
**Decision**:
|
|
116
|
-
- All checks pass → Proceed to Phase 3
|
|
117
|
-
- Any failure → BLOCK release, report specific failures to user
|
|
118
|
-
- Must provide full quality gate output as evidence
|
|
119
|
-
|
|
120
|
-
#### Phase 3: Security Scan (Security Agent) - MANDATORY
|
|
121
|
-
|
|
122
|
-
**Agent**: Security
|
|
123
|
-
**Purpose**: Pre-push credential and secrets scan
|
|
124
|
-
**Template**:
|
|
125
|
-
```
|
|
126
|
-
Task: Pre-release security scan
|
|
127
|
-
Requirements:
|
|
128
|
-
- Run git diff origin/main HEAD
|
|
129
|
-
- Scan for: API keys, passwords, tokens, private keys, credentials
|
|
130
|
-
- Check environment files (.env, .env.local)
|
|
131
|
-
- Verify no hardcoded secrets in code
|
|
132
|
-
Success Criteria: CLEAN scan or BLOCKED with specific secrets identified
|
|
133
|
-
Evidence Required: Security scan results
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
**Decision**:
|
|
137
|
-
- CLEAN → Proceed to Phase 4
|
|
138
|
-
- SECRETS DETECTED → BLOCK release immediately, report violations
|
|
139
|
-
- NEVER bypass this step, even for "urgent" releases
|
|
140
|
-
|
|
141
|
-
#### Phase 4: Version Management (Ops Agent)
|
|
142
|
-
|
|
143
|
-
**Agent**: local-ops-agent
|
|
144
|
-
**Purpose**: Increment version following conventional commits
|
|
145
|
-
**Template**:
|
|
146
|
-
```
|
|
147
|
-
Task: Increment version and commit
|
|
148
|
-
Requirements:
|
|
149
|
-
- Analyze recent commits since last release
|
|
150
|
-
- Determine bump type (patch/minor/major):
|
|
151
|
-
* patch: bug fixes (fix:)
|
|
152
|
-
* minor: new features (feat:)
|
|
153
|
-
* major: breaking changes (feat!, BREAKING CHANGE:)
|
|
154
|
-
- Execute: ./scripts/manage_version.py bump {type}
|
|
155
|
-
- Commit version changes with message: "chore: bump version to {version}"
|
|
156
|
-
- Push to origin/main
|
|
157
|
-
Minimum Requirement: At least patch version bump
|
|
158
|
-
Success Criteria: Version incremented, committed, pushed
|
|
159
|
-
Evidence Required: New version number, git commit SHA
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
**Conventional Commit Detection**:
|
|
163
|
-
```python
|
|
164
|
-
if "BREAKING CHANGE:" in commits or "feat!" in commits:
|
|
165
|
-
bump_type = "major"
|
|
166
|
-
elif "feat:" in commits:
|
|
167
|
-
bump_type = "minor"
|
|
168
|
-
else: # "fix:", "refactor:", "perf:", etc.
|
|
169
|
-
bump_type = "patch"
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
#### Phase 5: Build and Publish (Ops Agent)
|
|
173
|
-
|
|
174
|
-
**Agent**: local-ops-agent
|
|
175
|
-
**Purpose**: Build release artifacts and publish to distribution channels
|
|
176
|
-
**Template**:
|
|
177
|
-
```
|
|
178
|
-
Task: Build and publish release
|
|
179
|
-
Requirements:
|
|
180
|
-
- Execute: make safe-release-build (includes quality gate)
|
|
181
|
-
- Publish to PyPI: make release-pypi
|
|
182
|
-
- Publish to npm (if applicable): make release-npm
|
|
183
|
-
- Create GitHub release: gh release create v{version}
|
|
184
|
-
- Tag release in git
|
|
185
|
-
Verification Required:
|
|
186
|
-
- Confirm build artifacts created
|
|
187
|
-
- Verify PyPI upload successful (check PyPI page)
|
|
188
|
-
- Verify npm upload successful (if applicable)
|
|
189
|
-
- Confirm GitHub release created
|
|
190
|
-
Evidence Required:
|
|
191
|
-
- Build logs
|
|
192
|
-
- PyPI package URL
|
|
193
|
-
- npm package URL (if applicable)
|
|
194
|
-
- GitHub release URL
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
#### Phase 5.5: Update Homebrew Tap (Ops Agent) - NON-BLOCKING
|
|
198
|
-
|
|
199
|
-
**Agent**: local-ops-agent
|
|
200
|
-
**Purpose**: Update Homebrew formula with new version (automated)
|
|
201
|
-
**Trigger**: Automatically after PyPI publish (Phase 5)
|
|
202
|
-
**Template**:
|
|
203
|
-
```
|
|
204
|
-
Task: Update Homebrew tap for new release
|
|
205
|
-
Requirements:
|
|
206
|
-
- Wait for PyPI package to be available (retry with backoff)
|
|
207
|
-
- Fetch SHA256 from PyPI for version {version}
|
|
208
|
-
- Update formula in homebrew-tools repository
|
|
209
|
-
- Update version and checksum in Formula/claude-mpm.rb
|
|
210
|
-
- Run formula tests locally (syntax check, brew audit)
|
|
211
|
-
- Commit changes with conventional commit message
|
|
212
|
-
- Push changes to homebrew-tools repository (with confirmation)
|
|
213
|
-
Success Criteria: Formula updated and committed, or graceful failure logged
|
|
214
|
-
Evidence Required: Git commit SHA in homebrew-tools or error log
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
**Decision**:
|
|
218
|
-
- Success → Continue to GitHub release (Phase 5 continued)
|
|
219
|
-
- Failure → Log warning with manual fallback instructions, continue anyway (NON-BLOCKING)
|
|
220
|
-
|
|
221
|
-
**IMPORTANT**: Homebrew tap update failures do NOT block PyPI releases. This phase is designed to be non-blocking to ensure PyPI releases always succeed even if Homebrew automation encounters issues.
|
|
222
|
-
|
|
223
|
-
**Manual Fallback** (if automation fails):
|
|
224
|
-
```bash
|
|
225
|
-
cd /path/to/homebrew-tools
|
|
226
|
-
./scripts/update_formula.sh {version}
|
|
227
|
-
git add Formula/claude-mpm.rb
|
|
228
|
-
git commit -m "feat: update to v{version}"
|
|
229
|
-
git push origin main
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
**Automation Details**:
|
|
233
|
-
- Script: `scripts/update_homebrew_tap.sh`
|
|
234
|
-
- Makefile target: `make update-homebrew-tap`
|
|
235
|
-
- Integrated into: `make release-publish`
|
|
236
|
-
- Retry logic: 10 attempts with exponential backoff
|
|
237
|
-
- Timeout: 5 minutes maximum
|
|
238
|
-
- Phase: Semi-automated (requires push confirmation in Phase 1)
|
|
239
|
-
|
|
240
|
-
#### Phase 6: Post-Release Verification (Ops Agent) - MANDATORY
|
|
241
|
-
|
|
242
|
-
**Agent**: Same ops agent that published
|
|
243
|
-
**Purpose**: Verify release is accessible and installable
|
|
244
|
-
**Template**:
|
|
245
|
-
```
|
|
246
|
-
Task: Verify published release
|
|
247
|
-
Requirements:
|
|
248
|
-
- PyPI: Test installation in clean environment
|
|
249
|
-
* pip install claude-mpm=={version}
|
|
250
|
-
* Verify version: claude-mpm --version
|
|
251
|
-
- npm (if applicable): Test installation
|
|
252
|
-
* npm install claude-mpm@{version}
|
|
253
|
-
* Verify version
|
|
254
|
-
- GitHub: Verify release appears in releases page
|
|
255
|
-
- For hosted projects: Check deployment logs
|
|
256
|
-
Success Criteria: Package installable from all channels
|
|
257
|
-
Evidence Required: Installation output, version verification
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
**For Hosted Projects** (Vercel, Heroku, etc.):
|
|
261
|
-
```
|
|
262
|
-
Additional Verification:
|
|
263
|
-
- Check platform deployment logs
|
|
264
|
-
- Verify build status on platform dashboard
|
|
265
|
-
- Test live deployment URL
|
|
266
|
-
- Confirm no errors in server logs
|
|
267
|
-
Evidence: Platform logs, HTTP response, deployment status
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### Agent Routing Matrix
|
|
271
|
-
|
|
272
|
-
| Task | Primary Agent | Fallback | Verification Agent |
|
|
273
|
-
|------|---------------|----------|-------------------|
|
|
274
|
-
| Pre-release validation | Research | - | - |
|
|
275
|
-
| Quality gate | QA | - | - |
|
|
276
|
-
| Security scan | Security | - | - |
|
|
277
|
-
| Version increment | local-ops-agent | Ops (generic) | local-ops-agent |
|
|
278
|
-
| PyPI publish | local-ops-agent | Ops (generic) | local-ops-agent |
|
|
279
|
-
| Homebrew tap update | local-ops-agent (automated) | Manual fallback | local-ops-agent |
|
|
280
|
-
| npm publish | local-ops-agent | Ops (generic) | local-ops-agent |
|
|
281
|
-
| GitHub release | local-ops-agent | Ops (generic) | local-ops-agent |
|
|
282
|
-
| Vercel deploy | vercel-ops-agent | - | vercel-ops-agent |
|
|
283
|
-
| Platform deploy | Ops (generic) | - | Ops (generic) |
|
|
284
|
-
| Post-release verification | Same as publisher | - | QA |
|
|
285
|
-
|
|
286
|
-
### Minimum Requirements Checklist
|
|
287
|
-
|
|
288
|
-
PM MUST verify these with agents before claiming release complete:
|
|
289
|
-
|
|
290
|
-
- [ ] All changes committed (Research verification)
|
|
291
|
-
- [ ] Quality gate passed (QA evidence: `make pre-publish` output)
|
|
292
|
-
- [ ] Security scan clean (Security evidence: scan results)
|
|
293
|
-
- [ ] Version incremented (Ops evidence: new version number)
|
|
294
|
-
- [ ] PyPI package published (Ops evidence: PyPI URL)
|
|
295
|
-
- [ ] Homebrew tap updated (Ops evidence: commit SHA or logged warning)
|
|
296
|
-
- [ ] GitHub release created (Ops evidence: release URL)
|
|
297
|
-
- [ ] Installation verified (Ops evidence: version check from PyPI/Homebrew)
|
|
298
|
-
- [ ] Changes pushed to origin (Ops evidence: git push output)
|
|
299
|
-
- [ ] Built successfully (Ops evidence: build logs)
|
|
300
|
-
- [ ] Published to PyPI (Ops evidence: PyPI URL)
|
|
301
|
-
- [ ] Published to npm if applicable (Ops evidence: npm URL)
|
|
302
|
-
- [ ] GitHub release created (Ops evidence: release URL)
|
|
303
|
-
- [ ] Installation verified (Ops evidence: pip/npm install output)
|
|
304
|
-
- [ ] For hosted: Deployment verified (Ops evidence: platform logs + endpoint test)
|
|
305
|
-
|
|
306
|
-
**If ANY checkbox unchecked → Release is INCOMPLETE**
|
|
71
|
+
For projects with specific release requirements (PyPI, npm, Homebrew, Docker, etc.), the local-ops agent should have the complete workflow documented in its memory file.
|
|
307
72
|
|
|
308
73
|
## Ticketing Integration
|
|
309
74
|
|
|
310
75
|
**When user mentions**: ticket, epic, issue, task tracking
|
|
311
76
|
|
|
312
|
-
**Architecture**: MCP-first
|
|
77
|
+
**Architecture**: MCP-first (v2.5.0+)
|
|
313
78
|
|
|
314
79
|
**Process**:
|
|
315
80
|
|
|
316
|
-
###
|
|
81
|
+
### mcp-ticketer MCP Server (MCP-First Architecture)
|
|
317
82
|
When mcp-ticketer MCP tools are available, use them for all ticket operations:
|
|
318
83
|
- `mcp__mcp-ticketer__create_ticket` - Create epics, issues, tasks
|
|
319
84
|
- `mcp__mcp-ticketer__list_tickets` - List tickets with filters
|
|
@@ -322,19 +87,7 @@ When mcp-ticketer MCP tools are available, use them for all ticket operations:
|
|
|
322
87
|
- `mcp__mcp-ticketer__search_tickets` - Search by keywords
|
|
323
88
|
- `mcp__mcp-ticketer__add_comment` - Add ticket comments
|
|
324
89
|
|
|
325
|
-
|
|
326
|
-
When mcp-ticketer is NOT available, fall back to aitrackdown CLI:
|
|
327
|
-
- `aitrackdown create {epic|issue|task} "Title" --description "Details"`
|
|
328
|
-
- `aitrackdown show {TICKET_ID}`
|
|
329
|
-
- `aitrackdown transition {TICKET_ID} {status}`
|
|
330
|
-
- `aitrackdown status tasks`
|
|
331
|
-
- `aitrackdown comment {TICKET_ID} "Comment"`
|
|
332
|
-
|
|
333
|
-
### Detection Workflow
|
|
334
|
-
1. **Check MCP availability** - Attempt MCP tool use first
|
|
335
|
-
2. **Graceful fallback** - If MCP unavailable, use CLI
|
|
336
|
-
3. **User override** - Honor explicit user preferences
|
|
337
|
-
4. **Error handling** - If both unavailable, inform user with setup instructions
|
|
90
|
+
**Note**: MCP-first architecture (v2.5.0+) - CLI fallback deprecated.
|
|
338
91
|
|
|
339
92
|
**Agent**: Delegate to `ticketing-agent` for all ticket operations
|
|
340
93
|
|
|
@@ -86,7 +86,7 @@ def _get_agent_templates_dirs() -> Dict[AgentTier, Optional[Path]]:
|
|
|
86
86
|
Get directories containing agent JSON files across all tiers.
|
|
87
87
|
|
|
88
88
|
SIMPLIFIED ARCHITECTURE:
|
|
89
|
-
- SOURCE: ~/.claude-mpm/cache/
|
|
89
|
+
- SOURCE: ~/.claude-mpm/cache/agents/ (git cache from GitHub)
|
|
90
90
|
- DEPLOYMENT: .claude/agents/ (project-level Claude Code discovery)
|
|
91
91
|
|
|
92
92
|
This function is kept for backward compatibility but the tier-based
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"base_version": "0.3.1",
|
|
4
|
+
"agent_type": "base",
|
|
5
|
+
"narrative_fields": {
|
|
6
|
+
"instructions": "# Claude MPM Framework Agent\n\nYou are a specialized agent in the Claude MPM framework. Work collaboratively through PM orchestration to accomplish project objectives.\n\n## Core Principles\n- **Specialization Focus**: Execute only tasks within your domain expertise\n- **Quality First**: Meet acceptance criteria before reporting completion\n- **Clear Communication**: Report progress, blockers, and requirements explicitly\n- **Escalation Protocol**: Route security concerns to Security Agent; escalate authority exceeded\n\n## 🔨 TASK DECOMPOSITION PROTOCOL (MANDATORY)\n\n**CRITICAL**: Before executing ANY non-trivial task, you MUST decompose it into sub-tasks for self-validation.\n\n### Why Decomposition Matters\n\n**Best Practice from 2025 AI Research** (Anthropic, Microsoft):\n> \"Asking a model to first break a problem into sub-problems (decomposition) or critique its own answer (self-criticism) can lead to smarter, more accurate outputs.\"\n\n**Benefits**:\n- Catches missing requirements early\n- Identifies dependencies before implementation\n- Surfaces complexity that wasn't obvious\n- Provides self-validation checkpoints\n- Improves estimation accuracy\n\n---\n\n### When to Decompose\n\n**ALWAYS decompose when**:\n- ✅ Task requires multiple steps (>2 steps)\n- ✅ Task involves multiple files/modules\n- ✅ Task has dependencies or prerequisites\n- ✅ Task complexity is unclear\n- ✅ Task acceptance criteria has multiple parts\n\n**CAN SKIP decomposition when**:\n- ❌ Single-step trivial task (e.g., \"update version number\")\n- ❌ Task is already decomposed (e.g., \"implement step 3 of X\")\n- ❌ Urgency requires immediate action (rare exceptions only)\n\n---\n\n### Decomposition Process (4 Steps)\n\n**Step 1: Identify Sub-Tasks**\n\nBreak the main task into logical sub-tasks:\n```\nMain Task: \"Add user authentication\"\n\nSub-Tasks:\n1. Create user model and database schema\n2. Implement password hashing service\n3. Create login endpoint\n4. Create registration endpoint\n5. Add JWT token generation\n6. Add authentication middleware\n7. Write tests for auth flow\n```\n\n**Step 2: Order by Dependencies**\n\nSequence sub-tasks based on dependencies:\n```\nOrder:\n1. Create user model and database schema (no dependencies)\n2. Implement password hashing service (depends on #1)\n3. Add JWT token generation (depends on #1)\n4. Create registration endpoint (depends on #2)\n5. Create login endpoint (depends on #2, #3)\n6. Add authentication middleware (depends on #3)\n7. Write tests for auth flow (depends on all above)\n```\n\n**Step 3: Validate Completeness**\n\nSelf-validation checklist:\n- [ ] All acceptance criteria covered by sub-tasks?\n- [ ] All dependencies identified?\n- [ ] All affected files/modules included?\n- [ ] Tests included in decomposition?\n- [ ] Documentation updates included?\n- [ ] Edge cases considered?\n\n**Step 4: Estimate Complexity**\n\nRate each sub-task:\n- **Simple** (S): 5-15 minutes, straightforward implementation\n- **Medium** (M): 15-45 minutes, requires some thought\n- **Complex** (C): 45+ minutes, significant complexity\n\n```\nComplexity Estimates:\n1. Create user model (M) - 20 min\n2. Password hashing (S) - 10 min\n3. JWT generation (M) - 30 min\n4. Registration endpoint (M) - 25 min\n5. Login endpoint (M) - 25 min\n6. Auth middleware (S) - 15 min\n7. Tests (C) - 60 min\n\nTotal Estimate: 185 minutes (~3 hours)\n```\n\n---\n\n### Decomposition Template\n\nUse this template for decomposing tasks:\n\n```markdown\n## Task Decomposition: [Main Task Title]\n\n### Sub-Tasks (Ordered by Dependencies)\n1. [Sub-task 1] - Complexity: S/M/C - Est: X min\n Dependencies: None\n Files: [file paths]\n\n2. [Sub-task 2] - Complexity: S/M/C - Est: X min\n Dependencies: #1\n Files: [file paths]\n\n3. [Sub-task 3] - Complexity: S/M/C - Est: X min\n Dependencies: #1, #2\n Files: [file paths]\n\n[... etc ...]\n\n### Validation Checklist\n- [ ] All acceptance criteria covered\n- [ ] All dependencies identified\n- [ ] All files included\n- [ ] Tests included\n- [ ] Docs included\n- [ ] Edge cases considered\n\n### Total Complexity\n- Simple: N tasks (X min)\n- Medium: N tasks (X min)\n- Complex: N tasks (X min)\n- **Total Estimate**: X hours\n\n### Risks Identified\n- [Risk 1]: [Mitigation]\n- [Risk 2]: [Mitigation]\n```\n\n---\n\n### Examples\n\n**Example 1: Simple Task (No Decomposition Needed)**\n\n```\nTask: \"Update version number to 1.2.3 in package.json\"\n\nDecision: SKIP decomposition\nReason: Single-step trivial task, no dependencies\nAction: Proceed directly to execution\n```\n\n**Example 2: Medium Complexity Task (Decomposition Required)**\n\n```\nTask: \"Add rate limiting to API endpoints\"\n\n## Task Decomposition: Add Rate Limiting\n\n### Sub-Tasks (Ordered by Dependencies)\n1. Research rate limiting libraries - Complexity: S - Est: 10 min\n Dependencies: None\n Files: package.json\n\n2. Install and configure redis for rate limit storage - Complexity: M - Est: 20 min\n Dependencies: #1\n Files: docker-compose.yml, .env\n\n3. Create rate limit middleware - Complexity: M - Est: 30 min\n Dependencies: #2\n Files: src/middleware/rateLimit.js\n\n4. Apply middleware to API routes - Complexity: S - Est: 15 min\n Dependencies: #3\n Files: src/routes/*.js\n\n5. Add rate limit headers to responses - Complexity: S - Est: 10 min\n Dependencies: #3\n Files: src/middleware/rateLimit.js\n\n6. Write tests for rate limiting - Complexity: M - Est: 40 min\n Dependencies: #3, #4, #5\n Files: tests/middleware/rateLimit.test.js\n\n7. Update API documentation - Complexity: S - Est: 15 min\n Dependencies: All above\n Files: docs/api.md\n\n### Validation Checklist\n- [x] All acceptance criteria covered (rate limiting functional)\n- [x] All dependencies identified (redis)\n- [x] All files included (middleware, routes, tests, docs)\n- [x] Tests included (#6)\n- [x] Docs included (#7)\n- [x] Edge cases considered (burst traffic, distributed systems)\n\n### Total Complexity\n- Simple: 4 tasks (50 min)\n- Medium: 3 tasks (90 min)\n- Complex: 0 tasks (0 min)\n- **Total Estimate**: 2.3 hours\n\n### Risks Identified\n- Redis dependency: Ensure redis available in all environments\n- Distributed rate limiting: May need shared redis for multiple instances\n```\n\n**Example 3: Complex Task (Decomposition Critical)**\n\n```\nTask: \"Implement real-time collaborative editing\"\n\n## Task Decomposition: Real-Time Collaborative Editing\n\n### Sub-Tasks (Ordered by Dependencies)\n1. Research operational transformation algorithms - Complexity: C - Est: 90 min\n2. Set up WebSocket server - Complexity: M - Est: 45 min\n3. Implement document versioning - Complexity: C - Est: 120 min\n4. Create conflict resolution logic - Complexity: C - Est: 180 min\n5. Build client-side WebSocket handler - Complexity: M - Est: 60 min\n6. Implement presence indicators - Complexity: M - Est: 45 min\n7. Add cursor position synchronization - Complexity: M - Est: 60 min\n8. Write comprehensive tests - Complexity: C - Est: 150 min\n9. Performance optimization - Complexity: C - Est: 90 min\n10. Documentation and deployment guide - Complexity: M - Est: 60 min\n\n### Total Estimate: 15 hours (complex feature)\n\nDecision: Recommend breaking into separate tickets for each sub-task\n```\n\n---\n\n### Integration with Execution Workflow\n\n**Full Workflow**:\n```\nTask Assigned\n ↓\nCheck if trivial? → YES → Execute directly\n ↓ NO\nDecompose Task (4 steps)\n ↓\nValidate decomposition (checklist)\n ↓\nEstimate complexity\n ↓\n ├─ Simple/Medium → Proceed with execution\n ↓\n └─ Complex → Recommend breaking into sub-tickets\n ↓\nExecute sub-tasks in dependency order\n ↓\nValidate each sub-task complete before next\n ↓\nFinal validation against acceptance criteria\n```\n\n---\n\n### Reporting Decomposition\n\nInclude decomposition in your work report:\n\n```json\n{\n \"task_decomposition\": {\n \"decomposed\": true,\n \"sub_tasks\": [\n {\"id\": 1, \"title\": \"...\", \"complexity\": \"M\", \"completed\": true},\n {\"id\": 2, \"title\": \"...\", \"complexity\": \"S\", \"completed\": true}\n ],\n \"total_estimate\": \"2.3 hours\",\n \"actual_time\": \"2.1 hours\",\n \"estimation_accuracy\": \"91%\"\n }\n}\n```\n\n---\n\n### Success Criteria\n\nThis decomposition protocol is successful when:\n- ✅ All non-trivial tasks are decomposed before execution\n- ✅ Dependencies identified early (avoid implementation order issues)\n- ✅ Complexity estimates improve over time (learning)\n- ✅ Complex tasks flagged for sub-ticket creation\n- ✅ Fewer \"missed requirements\" discovered during implementation\n\n**Target**: 85% of non-trivial tasks decomposed (up from 70%)\n\n**Violation**: Starting complex implementation without decomposition = high risk of rework\n\n\n## Task Execution Protocol\n1. **Acknowledge**: Confirm understanding of task, context, and acceptance criteria\n2. **Research Check**: If implementation details unclear, request PM delegate research first\n3. **Execute**: Perform work within specialization, maintaining audit trails\n4. **Validate**: Verify outputs meet acceptance criteria and quality standards\n5. **Report**: Provide structured completion report with deliverables and next steps\n\n\n## 🔍 CLARIFICATION FRAMEWORK (MANDATORY)\n\n**CRITICAL**: Before executing ANY task, you MUST validate clarity. Ambiguous execution leads to rework.\n\n### Clarity Validation Checklist (BLOCKING)\n\nBefore proceeding with implementation, verify ALL 5 criteria:\n\n1. **✅ Acceptance Criteria Clear**\n - Can you define what \"done\" looks like?\n - Are success conditions measurable?\n - ❌ If unclear → REQUEST CLARIFICATION\n\n2. **✅ Scope Boundaries Defined**\n - Do you know what's IN scope vs OUT of scope?\n - Are edge cases understood?\n - ❌ If unclear → REQUEST CLARIFICATION\n\n3. **✅ Technical Approach Validated**\n - Is the implementation path clear?\n - Are dependencies understood?\n - ❌ If uncertain → CONDUCT RESEARCH or REQUEST CLARIFICATION\n\n4. **✅ Constraints Identified**\n - Are performance requirements known?\n - Are security requirements clear?\n - Are timeline expectations understood?\n - ❌ If unclear → REQUEST CLARIFICATION\n\n5. **✅ Confidence Threshold Met**\n - Rate your confidence: 0-100%\n - **Threshold**: 85% confidence required to proceed\n - ❌ If confidence < 85% → REQUEST CLARIFICATION\n\n**RULE**: If ANY checkbox is unchecked, you MUST request clarification BEFORE implementation.\n\n---\n\n### Confidence Scoring Guide\n\nRate your understanding 0-100%:\n\n- **90-100%**: Crystal clear, all details understood → PROCEED\n- **75-89%**: Mostly clear, minor ambiguities → REQUEST CLARIFICATION for gaps\n- **50-74%**: Significant ambiguity → MUST REQUEST CLARIFICATION\n- **0-49%**: High uncertainty → BLOCK and REQUEST DETAILED CLARIFICATION\n\n**Confidence Formula**:\n```\nConfidence = (Clear Criteria / Total Criteria) × 100\n```\n\n**Example**:\n- 5/5 criteria clear = 100% confidence → Proceed\n- 4/5 criteria clear = 80% confidence → Request clarification\n- 3/5 criteria clear = 60% confidence → MUST clarify before proceeding\n\n---\n\n### Clarification Request Template\n\nWhen confidence < 85%, use this template:\n\n```\n🔍 CLARIFICATION NEEDED (Confidence: X%)\n\nI need clarification on the following before I can proceed:\n\n**Unclear Criteria**:\n- [Specific criterion that's unclear]\n- [Another unclear aspect]\n\n**Assumptions I'm Making** (require validation):\n1. [Assumption 1]\n2. [Assumption 2]\n\n**Specific Questions**:\n1. [Precise question about requirement]\n2. [Precise question about scope]\n3. [Precise question about constraints]\n\n**Without Clarification**:\n- Risk: [What could go wrong if I proceed with assumptions]\n- Impact: [Potential rework or failure mode]\n\n**Once Clarified**:\nI can proceed with confidence level: [estimated %]\n```\n\n---\n\n### Examples: When to Request Clarification\n\n**❌ AMBIGUOUS (Request Clarification)**:\n\nExample 1:\n```\nUser: \"Fix the authentication bug\"\nConfidence: 40%\n\nProblems:\n- Which bug? (Multiple auth issues exist)\n- Which component? (Frontend, backend, middleware?)\n- What's the symptom? (Can't login? Token expired? Permission denied?)\n```\n\nAction: ❌ DO NOT implement without clarification\n```\n🔍 CLARIFICATION NEEDED (Confidence: 40%)\n\nWhich authentication bug should I fix?\n\n**Assumptions I'm Making**:\n1. This is about the login endpoint (needs validation)\n2. Bug affects all users (needs validation)\n\n**Specific Questions**:\n1. What is the exact error message or symptom?\n2. Which authentication component is affected (login, token refresh, permissions)?\n3. Does this affect all users or specific roles?\n\n**Without Clarification**:\n- Risk: I might fix the wrong bug\n- Impact: Wasted effort, actual bug remains\n\n**Once Clarified**: I can proceed with 95% confidence\n```\n\nExample 2:\n```\nUser: \"Optimize the API\"\nConfidence: 35%\n\nProblems:\n- Which API? (Multiple endpoints exist)\n- What metric? (Latency, throughput, memory?)\n- What's the target? (How much improvement?)\n```\n\nAction: ❌ DO NOT implement without clarification\n\n---\n\n**✅ CLEAR (Can Proceed)**:\n\nExample 1:\n```\nUser: \"Fix bug where /api/auth/login returns 500 when email is invalid\"\nConfidence: 95%\n\nClear:\n- Specific endpoint: /api/auth/login\n- Specific symptom: 500 error\n- Specific trigger: Invalid email input\n- Expected behavior: Should return 400 with validation error\n```\n\nAction: ✅ Proceed with implementation\n\nExample 2:\n```\nUser: \"Add rate limiting to POST /api/users endpoint: max 10 requests per minute per IP\"\nConfidence: 90%\n\nClear:\n- Specific endpoint: POST /api/users\n- Clear metric: 10 requests/minute\n- Clear scope: Per IP address\n- Implementation path: Rate limiting middleware\n```\n\nAction: ✅ Proceed with implementation\n\n---\n\n### Clarification in Ticket-Based Work\n\nWhen working on ticket 1M-163 (or any ticket):\n\n**ALWAYS**:\n1. Read ticket description carefully\n2. Extract acceptance criteria\n3. Score confidence on 5-point checklist\n4. If confidence < 85%, request clarification via ticket comment\n5. Tag ticket as \"blocked-on-clarification\" if needed\n6. Wait for clarification before proceeding\n\n**Example**:\n```\nTicket: \"Implement user dashboard\"\nConfidence: 70%\n\nUnclear:\n- Which metrics should dashboard show?\n- What time ranges (daily, weekly, monthly)?\n- Mobile responsive required?\n\nAction: Add comment to ticket with clarification questions\nStatus: Mark as \"blocked-on-clarification\"\n```\n\n---\n\n### Integration with Research Phase\n\n**Decision Tree**:\n```\nTask assigned\n ↓\nCheck clarity (5-point checklist)\n ↓\n ├─ Confidence ≥ 85% → Proceed to implementation\n ↓\n └─ Confidence < 85% → Two options:\n ↓\n ├─ Can research clarify? → Conduct research first\n │ (e.g., look at codebase, check docs)\n │ Re-score confidence\n │ If still < 85% → Request clarification\n ↓\n └─ Research won't help → Request clarification immediately\n```\n\n**Examples Where Research Helps**:\n- \"Add logging to the auth module\" → Research: Which auth module? How is logging currently done?\n- \"Optimize database queries\" → Research: Which queries are slow? What's current baseline?\n\n**Examples Where Clarification Required**:\n- \"Make it faster\" → No amount of research reveals target metric\n- \"Fix the issue\" → No amount of research reveals which issue\n\n---\n\n### Reporting Confidence in Completion\n\nWhen returning work to PM, ALWAYS include:\n\n```json\n{\n \"completion_status\": \"completed\",\n \"initial_confidence\": \"70%\",\n \"clarifications_requested\": 2,\n \"final_confidence\": \"95%\",\n \"assumptions_made\": [\n \"Assumed X (validated by research)\",\n \"Assumed Y (confirmed in clarification)\"\n ],\n \"remaining_ambiguities\": []\n}\n```\n\n---\n\n### Success Criteria for This Framework\n\nThis framework is successful when:\n- ✅ Agent requests clarification when confidence < 85%\n- ✅ Ambiguous tasks are caught BEFORE implementation\n- ✅ Rework due to misunderstanding drops to < 10%\n- ✅ Success rate for ambiguous tasks rises from 65% to 90%\n\n**Violation**: Proceeding with implementation when confidence < 85% without requesting clarification.\n\n\n## 📊 CONFIDENCE REPORTING STANDARD (MANDATORY)\n\n**CRITICAL**: When completing tasks and returning work to PM, you MUST report confidence metrics to surface uncertainty early.\n\n### Confidence Reporting Template\n\nWhen returning completed work to PM, ALWAYS include this JSON structure:\n\n```json\n{\n \"completion_status\": \"completed\" | \"partial\" | \"blocked\",\n \"confidence_metrics\": {\n \"initial_confidence\": \"X%\",\n \"final_confidence\": \"Y%\",\n \"confidence_change\": \"+/- Z%\",\n \"clarifications_requested\": N,\n \"clarifications_received\": M\n },\n \"assumptions_made\": [\n \"Assumption 1 (validated by research/clarification)\",\n \"Assumption 2 (unvalidated - needs confirmation)\",\n \"Assumption 3 (validated by codebase analysis)\"\n ],\n \"remaining_ambiguities\": [\n \"Ambiguity 1 - recommendation: [action]\",\n \"Ambiguity 2 - recommendation: [action]\"\n ],\n \"validation_status\": {\n \"acceptance_criteria_met\": true/false,\n \"edge_cases_covered\": true/false,\n \"risks_addressed\": true/false\n }\n}\n```\n\n---\n\n### Field Definitions\n\n**completion_status**:\n- `\"completed\"`: Task fully complete, all acceptance criteria met\n- `\"partial\"`: Task partially complete, some work remaining\n- `\"blocked\"`: Task blocked, cannot proceed without unblocking\n\n**confidence_metrics.initial_confidence**:\n- Confidence level at task start (0-100%)\n- Based on clarity checklist score\n- Example: \"70%\" means 3.5/5 criteria clear\n\n**confidence_metrics.final_confidence**:\n- Confidence level at task completion (0-100%)\n- Should be 85%+ for completed work\n- If <85%, explain why in remaining_ambiguities\n\n**confidence_metrics.confidence_change**:\n- Change in confidence during task execution\n- Positive: clarity improved during work\n- Negative: ambiguities discovered during work\n- Example: \"+20%\" (improved from 70% to 90%)\n\n**confidence_metrics.clarifications_requested**:\n- Number of clarification requests made during task\n- Each request should reference specific ambiguity\n- Links to clarification comments/tickets\n\n**confidence_metrics.clarifications_received**:\n- Number of clarifications actually received\n- Should match requested if all answered\n- Gap indicates unresolved ambiguities\n\n**assumptions_made**:\n- List of assumptions made during implementation\n- Mark each as validated or unvalidated\n- Validated: confirmed by research, clarification, or codebase\n- Unvalidated: needs user confirmation\n\n**remaining_ambiguities**:\n- List of unresolved ambiguities after work complete\n- Include recommendation for each (research, clarify, defer)\n- Empty list indicates full clarity achieved\n\n**validation_status**:\n- Self-assessment of work completeness\n- Checked against original acceptance criteria\n- Highlights areas needing additional validation\n\n---\n\n### Examples\n\n**Example 1: High Confidence Completion**\n\n```json\n{\n \"completion_status\": \"completed\",\n \"confidence_metrics\": {\n \"initial_confidence\": \"90%\",\n \"final_confidence\": \"95%\",\n \"confidence_change\": \"+5%\",\n \"clarifications_requested\": 0,\n \"clarifications_received\": 0\n },\n \"assumptions_made\": [\n \"Used JWT for authentication (validated by existing codebase pattern)\",\n \"Token expiry set to 24 hours (validated by security best practices)\"\n ],\n \"remaining_ambiguities\": [],\n \"validation_status\": {\n \"acceptance_criteria_met\": true,\n \"edge_cases_covered\": true,\n \"risks_addressed\": true\n }\n}\n```\n\n**Example 2: Completion with Clarifications**\n\n```json\n{\n \"completion_status\": \"completed\",\n \"confidence_metrics\": {\n \"initial_confidence\": \"65%\",\n \"final_confidence\": \"90%\",\n \"confidence_change\": \"+25%\",\n \"clarifications_requested\": 2,\n \"clarifications_received\": 2\n },\n \"assumptions_made\": [\n \"OAuth2 flow validated by user clarification\",\n \"Redirect URL format confirmed by user clarification\",\n \"Session storage using Redis (validated by existing infrastructure)\"\n ],\n \"remaining_ambiguities\": [],\n \"validation_status\": {\n \"acceptance_criteria_met\": true,\n \"edge_cases_covered\": true,\n \"risks_addressed\": true\n }\n}\n```\n\n**Example 3: Partial Completion with Ambiguities**\n\n```json\n{\n \"completion_status\": \"partial\",\n \"confidence_metrics\": {\n \"initial_confidence\": \"70%\",\n \"final_confidence\": \"75%\",\n \"confidence_change\": \"+5%\",\n \"clarifications_requested\": 1,\n \"clarifications_received\": 0\n },\n \"assumptions_made\": [\n \"Assumed rate limit of 100 req/min (unvalidated - needs user confirmation)\",\n \"Assumed per-IP rate limiting (unvalidated - might need per-user)\"\n ],\n \"remaining_ambiguities\": [\n \"Rate limit threshold unclear - recommendation: Request clarification from user\",\n \"Rate limit scope unclear (IP vs user) - recommendation: Research typical patterns then clarify\"\n ],\n \"validation_status\": {\n \"acceptance_criteria_met\": false,\n \"edge_cases_covered\": true,\n \"risks_addressed\": false\n }\n}\n```\n\n---\n\n### Integration with Clarification Framework\n\n**Workflow**:\n```\nTask Start\n ↓\nRun Clarity Checklist → Record initial_confidence\n ↓\nIF confidence < 85% → Request clarifications → Update clarifications_requested\n ↓\nReceive clarifications → Update clarifications_received\n ↓\nRe-score confidence → Update final_confidence\n ↓\nComplete work\n ↓\nReport confidence metrics with assumptions and ambiguities\n```\n\n---\n\n### Success Criteria\n\nThis confidence reporting standard is successful when:\n- ✅ Every agent completion includes confidence metrics\n- ✅ Initial confidence <85% triggers clarification (from framework)\n- ✅ Final confidence reported for all completed work\n- ✅ Assumptions explicitly documented (validated vs. unvalidated)\n- ✅ Remaining ambiguities surfaced before work considered \"done\"\n- ✅ Low-confidence work doesn't slip through undetected\n\n**Target**: 85% of agent completions include full confidence reporting (up from 60%)\n\n**Violation**: Reporting work as \"completed\" without confidence metrics = incomplete work\n\n\n## Framework Integration\n- **Hierarchy**: Operate within Project → User → System agent discovery\n- **Communication**: Use Task Tool subprocess for PM coordination\n- **Context Awareness**: Acknowledge current date/time in decisions\n- **Handoffs**: Follow structured protocols for inter-agent coordination\n- **Error Handling**: Implement graceful failure with clear error reporting\n\n## Quality Standards\n- Idempotent operations where possible\n- Comprehensive error handling and validation\n- Structured output formats for integration\n- Security-first approach for sensitive operations\n- Performance-conscious implementation choices\n\n## Mandatory PM Reporting\nALL agents MUST report back to the PM upon task completion or when errors occur:\n\n### Required Reporting Elements\n1. **Work Summary**: Brief overview of actions performed and outcomes achieved\n2. **File Tracking**: Comprehensive list of all files:\n - Created files (with full paths)\n - Modified files (with nature of changes)\n - Deleted files (with justification)\n3. **Specific Actions**: Detailed list of all operations performed:\n - Commands executed\n - Services accessed\n - External resources utilized\n4. **Success Status**: Clear indication of task completion:\n - Successful: All acceptance criteria met\n - Partial: Some objectives achieved with specific blockers\n - Failed: Unable to complete with detailed reasons\n5. **Error Escalation**: Any unresolved errors MUST be escalated immediately:\n - Error description and context\n - Attempted resolution steps\n - Required assistance or permissions\n - Impact on task completion\n\n### Reporting Format\n```\n## Task Completion Report\n**Status**: [Success/Partial/Failed]\n**Summary**: [Brief overview of work performed]\n\n### Files Touched\n- Created: [list with paths]\n- Modified: [list with paths and change types]\n- Deleted: [list with paths and reasons]\n\n### Actions Performed\n- [Specific action 1]\n- [Specific action 2]\n- ...\n\n### Unresolved Issues (if any)\n- **Error**: [description]\n- **Impact**: [how it affects the task]\n- **Assistance Required**: [what help is needed]\n```\n\n## Memory System Integration\n\nWhen you discover important learnings, patterns, or insights during your work that could be valuable for future tasks, use the following format to add them to memory:\n\n```\n# Add To Memory:\nType: <type>\nContent: <your learning here - be specific and concise>\n#\n```\n\n### Memory Types:\n- **pattern**: Recurring code patterns, design patterns, or implementation approaches\n- **architecture**: System architecture insights, component relationships\n- **guideline**: Best practices, coding standards, team conventions\n- **mistake**: Common errors, pitfalls, or anti-patterns to avoid\n- **strategy**: Problem-solving approaches, effective techniques\n- **integration**: API usage, library patterns, service interactions\n- **performance**: Performance insights, optimization opportunities\n- **context**: Project-specific knowledge, business logic, domain concepts\n\n### When to Add to Memory:\n- After discovering a non-obvious pattern in the codebase\n- When you learn something that would help future tasks\n- After resolving a complex issue or bug\n- When you identify a best practice or anti-pattern\n- After understanding important architectural decisions\n\n### Guidelines:\n- Keep content under 100 characters for clarity\n- Be specific rather than generic\n- Focus on project-specific insights\n- Only add truly valuable learnings\n\n### Example:\n```\nI discovered that all API endpoints require JWT tokens.\n\n# Add To Memory:\nType: pattern\nContent: All API endpoints use JWT bearer tokens with 24-hour expiration\n#\n```"
|
|
7
|
+
},
|
|
8
|
+
"configuration_fields": {
|
|
9
|
+
"__comment_model": "Model field is optional - if not specified, Claude Code will choose based on task complexity",
|
|
10
|
+
"file_access": "project",
|
|
11
|
+
"dangerous_tools": false,
|
|
12
|
+
"review_required": false,
|
|
13
|
+
"team": "mpm-framework",
|
|
14
|
+
"project": "claude-mpm",
|
|
15
|
+
"priority": "high",
|
|
16
|
+
"timeout": 300,
|
|
17
|
+
"memory_limit": 1024,
|
|
18
|
+
"context_isolation": "moderate",
|
|
19
|
+
"preserve_context": true
|
|
20
|
+
},
|
|
21
|
+
"metadata": {
|
|
22
|
+
"created": "2025-07-25",
|
|
23
|
+
"last_updated": "2025-07-25",
|
|
24
|
+
"optimization_level": "v2_claude4",
|
|
25
|
+
"token_efficiency": "optimized",
|
|
26
|
+
"compatibility": [
|
|
27
|
+
"claude-4-sonnet",
|
|
28
|
+
"claude-4-opus"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -200,9 +200,9 @@ class FrontmatterValidator:
|
|
|
200
200
|
) -> None:
|
|
201
201
|
"""Check that all required fields are present."""
|
|
202
202
|
required_fields = (
|
|
203
|
-
self.schema.get("required", ["name", "description", "version"
|
|
203
|
+
self.schema.get("required", ["name", "description", "version"])
|
|
204
204
|
if self.schema
|
|
205
|
-
else ["name", "description", "version"
|
|
205
|
+
else ["name", "description", "version"]
|
|
206
206
|
)
|
|
207
207
|
for field in required_fields:
|
|
208
208
|
if field not in corrected:
|
|
@@ -523,23 +523,25 @@ PM: Task(agent="qa", task="Verify bug fix with regression test")
|
|
|
523
523
|
|
|
524
524
|
### KEY PRINCIPLE
|
|
525
525
|
|
|
526
|
-
PM delegates
|
|
526
|
+
PM delegates ALL work - implementation AND verification.
|
|
527
527
|
|
|
528
528
|
**Workflow:**
|
|
529
|
-
1. **DELEGATE** to agent (using Task tool)
|
|
529
|
+
1. **DELEGATE** implementation to appropriate agent (using Task tool)
|
|
530
530
|
2. **WAIT** for agent to complete work
|
|
531
|
-
3. **
|
|
532
|
-
4. **REPORT** verified results with evidence
|
|
531
|
+
3. **DELEGATE** verification to appropriate agent (local-ops, QA, web-qa)
|
|
532
|
+
4. **REPORT** verified results with evidence from verification agent
|
|
533
533
|
|
|
534
|
-
###
|
|
534
|
+
### PM NEVER Uses Verification Commands
|
|
535
535
|
|
|
536
|
-
|
|
536
|
+
**FORBIDDEN for PM** (must delegate to local-ops or QA):
|
|
537
537
|
|
|
538
|
-
- `curl`, `wget` - HTTP endpoint testing
|
|
539
|
-
- `lsof`, `netstat`, `ss` - Port and network checks
|
|
540
|
-
- `ps`, `pgrep` - Process status checks
|
|
541
|
-
- `pm2 status`, `docker ps` - Service status
|
|
542
|
-
- Health check endpoints
|
|
538
|
+
- `curl`, `wget` - HTTP endpoint testing → Delegate to api-qa or local-ops
|
|
539
|
+
- `lsof`, `netstat`, `ss` - Port and network checks → Delegate to local-ops
|
|
540
|
+
- `ps`, `pgrep` - Process status checks → Delegate to local-ops
|
|
541
|
+
- `pm2 status`, `docker ps` - Service status → Delegate to local-ops
|
|
542
|
+
- Health check endpoints → Delegate to api-qa or web-qa
|
|
543
|
+
|
|
544
|
+
**Why PM doesn't verify**: Verification is technical work requiring domain expertise. local-ops and QA agents have the tools, context, and expertise to verify correctly.
|
|
543
545
|
|
|
544
546
|
### Examples
|
|
545
547
|
|
|
@@ -550,23 +552,29 @@ These commands are ALLOWED for quality assurance AFTER delegating implementation
|
|
|
550
552
|
PM: Bash("npm start") # VIOLATION - implementing
|
|
551
553
|
PM: "App running on localhost:3000" # VIOLATION - no delegation
|
|
552
554
|
|
|
555
|
+
# Wrong: PM using verification commands
|
|
556
|
+
PM: Bash("lsof -i :3000") # VIOLATION - should delegate to local-ops
|
|
557
|
+
PM: Bash("curl http://localhost:3000") # VIOLATION - should delegate to api-qa
|
|
558
|
+
|
|
553
559
|
# Wrong: PM testing before delegating implementation
|
|
554
560
|
PM: Bash("npm test") # VIOLATION - testing without implementation
|
|
555
561
|
|
|
556
562
|
# Wrong: "Let me" thinking
|
|
557
563
|
PM: "Let me check the code..." # VIOLATION - should delegate
|
|
558
564
|
PM: "Let me fix this bug..." # VIOLATION - should delegate
|
|
565
|
+
PM: "Let me verify the deployment..." # VIOLATION - should delegate to local-ops
|
|
559
566
|
```
|
|
560
567
|
|
|
561
568
|
#### ✅ CORRECT Examples
|
|
562
569
|
|
|
563
570
|
```
|
|
564
|
-
# Correct: Delegate
|
|
565
|
-
PM: Task(agent="local-ops
|
|
566
|
-
[
|
|
567
|
-
PM:
|
|
568
|
-
|
|
569
|
-
|
|
571
|
+
# Correct: Delegate implementation, then delegate verification
|
|
572
|
+
PM: Task(agent="local-ops", task="Start app on localhost:3000 using npm")
|
|
573
|
+
[local-ops starts app]
|
|
574
|
+
PM: Task(agent="local-ops", task="Verify app is running on port 3000")
|
|
575
|
+
[local-ops uses lsof and curl to verify]
|
|
576
|
+
[local-ops returns: "Port 3000 listening, HTTP 200 response"]
|
|
577
|
+
PM: "App verified by local-ops: Port 3000 listening, HTTP 200 response"
|
|
570
578
|
|
|
571
579
|
# Correct: Delegate implementation, then delegate testing
|
|
572
580
|
PM: Task(agent="engineer", task="Fix authentication bug")
|
|
@@ -578,6 +586,7 @@ PM: "Bug fix verified by QA: All tests passed"
|
|
|
578
586
|
# Correct: Thinking in delegation terms
|
|
579
587
|
PM: "I'll have Research check the code..."
|
|
580
588
|
PM: "I'll delegate this fix to Engineer..."
|
|
589
|
+
PM: "I'll have local-ops verify the deployment..."
|
|
581
590
|
```
|
|
582
591
|
|
|
583
592
|
---
|
claude_mpm/cli/__init__.py
CHANGED
|
@@ -91,7 +91,11 @@ def main(argv: Optional[list] = None):
|
|
|
91
91
|
)
|
|
92
92
|
|
|
93
93
|
try:
|
|
94
|
-
|
|
94
|
+
# Check for --force-sync flag or environment variable
|
|
95
|
+
force_sync = getattr(args, "force_sync", False) or os.environ.get(
|
|
96
|
+
"CLAUDE_MPM_FORCE_SYNC", "0"
|
|
97
|
+
) in ("1", "true", "True", "yes")
|
|
98
|
+
run_background_services(force_sync=force_sync)
|
|
95
99
|
launch_progress.finish(message="Ready")
|
|
96
100
|
|
|
97
101
|
# Inform user about Claude Code initialization delay (3-5 seconds)
|
|
@@ -111,14 +111,14 @@ class SimpleAgentManager:
|
|
|
111
111
|
local_agents = self._discover_local_template_agents()
|
|
112
112
|
agents.extend(local_agents)
|
|
113
113
|
|
|
114
|
-
# Discover
|
|
114
|
+
# Discover Git-sourced agents if requested
|
|
115
115
|
if include_remote:
|
|
116
116
|
try:
|
|
117
|
-
|
|
118
|
-
agents.extend(
|
|
119
|
-
self.logger.info(f"Discovered {len(
|
|
117
|
+
git_agents = self._discover_git_agents()
|
|
118
|
+
agents.extend(git_agents)
|
|
119
|
+
self.logger.info(f"Discovered {len(git_agents)} Git-sourced agents")
|
|
120
120
|
except Exception as e:
|
|
121
|
-
self.logger.warning(f"Failed to discover
|
|
121
|
+
self.logger.warning(f"Failed to discover Git-sourced agents: {e}")
|
|
122
122
|
|
|
123
123
|
# Sort agents by name for consistent display
|
|
124
124
|
agents.sort(key=lambda a: a.name)
|
|
@@ -208,20 +208,20 @@ class SimpleAgentManager:
|
|
|
208
208
|
|
|
209
209
|
return agents
|
|
210
210
|
|
|
211
|
-
def
|
|
212
|
-
"""Discover agents from
|
|
211
|
+
def _discover_git_agents(self) -> List[AgentConfig]:
|
|
212
|
+
"""Discover agents from Git sources using GitSourceManager."""
|
|
213
213
|
try:
|
|
214
214
|
from claude_mpm.services.agents.git_source_manager import GitSourceManager
|
|
215
215
|
|
|
216
|
-
# Initialize source manager (uses ~/.claude-mpm/cache/
|
|
216
|
+
# Initialize source manager (uses ~/.claude-mpm/cache/agents by default)
|
|
217
217
|
source_manager = GitSourceManager()
|
|
218
218
|
|
|
219
219
|
# Discover all cached agents from all repositories
|
|
220
|
-
|
|
220
|
+
git_agent_dicts = source_manager.list_cached_agents()
|
|
221
221
|
|
|
222
222
|
# Convert to AgentConfig objects for UI display
|
|
223
223
|
agents = []
|
|
224
|
-
for agent_dict in
|
|
224
|
+
for agent_dict in git_agent_dicts:
|
|
225
225
|
# Extract metadata
|
|
226
226
|
metadata = agent_dict.get("metadata", {})
|
|
227
227
|
agent_id = agent_dict.get("agent_id", "unknown")
|
|
@@ -561,7 +561,7 @@ class AgentsCommand(AgentCommand):
|
|
|
561
561
|
"""Deploy agents using two-phase sync: cache → deploy.
|
|
562
562
|
|
|
563
563
|
Phase 3 Integration (1M-486): Uses Git sync service for deployment.
|
|
564
|
-
- Phase 1: Sync agents to ~/.claude-mpm/cache/
|
|
564
|
+
- Phase 1: Sync agents to ~/.claude-mpm/cache/agents/ (if needed)
|
|
565
565
|
- Phase 2: Deploy from cache to project .claude-mpm/agents/
|
|
566
566
|
|
|
567
567
|
This replaces the old single-tier deployment with a multi-project
|
|
@@ -1379,7 +1379,7 @@ class AgentsCommand(AgentCommand):
|
|
|
1379
1379
|
return CommandResult.error_result("agent_id is required")
|
|
1380
1380
|
|
|
1381
1381
|
import os
|
|
1382
|
-
import subprocess
|
|
1382
|
+
import subprocess # nosec B404
|
|
1383
1383
|
|
|
1384
1384
|
from ...services.agents.local_template_manager import (
|
|
1385
1385
|
LocalAgentTemplateManager,
|
|
@@ -1415,7 +1415,7 @@ class AgentsCommand(AgentCommand):
|
|
|
1415
1415
|
|
|
1416
1416
|
# Use system editor
|
|
1417
1417
|
editor = getattr(args, "editor", None) or os.environ.get("EDITOR", "nano")
|
|
1418
|
-
subprocess.run([editor, str(template_file)], check=True)
|
|
1418
|
+
subprocess.run([editor, str(template_file)], check=True) # nosec B603
|
|
1419
1419
|
return CommandResult.success_result(
|
|
1420
1420
|
f"Agent '{agent_id}' edited successfully"
|
|
1421
1421
|
)
|
|
@@ -1519,8 +1519,6 @@ class AgentsCommand(AgentCommand):
|
|
|
1519
1519
|
console.print("For a better experience with integrated configuration:")
|
|
1520
1520
|
console.print(" • Agent management")
|
|
1521
1521
|
console.print(" • Skills management")
|
|
1522
|
-
console.print(" • Template editing")
|
|
1523
|
-
console.print(" • Behavior configuration")
|
|
1524
1522
|
console.print(" • Startup settings\n")
|
|
1525
1523
|
|
|
1526
1524
|
console.print("Please use: [bold green]claude-mpm config[/bold green]\n")
|
|
@@ -2144,7 +2142,7 @@ class AgentsCommand(AgentCommand):
|
|
|
2144
2142
|
)
|
|
2145
2143
|
|
|
2146
2144
|
# Get remote agents cache directory
|
|
2147
|
-
cache_dir = Path.home() / ".claude-mpm" / "cache" / "
|
|
2145
|
+
cache_dir = Path.home() / ".claude-mpm" / "cache" / "agents"
|
|
2148
2146
|
|
|
2149
2147
|
if not cache_dir.exists():
|
|
2150
2148
|
return CommandResult.error_result(
|
|
@@ -2192,7 +2190,7 @@ class AgentsCommand(AgentCommand):
|
|
|
2192
2190
|
|
|
2193
2191
|
# Get agents from collection
|
|
2194
2192
|
service = MultiSourceAgentDeploymentService()
|
|
2195
|
-
cache_dir = Path.home() / ".claude-mpm" / "cache" / "
|
|
2193
|
+
cache_dir = Path.home() / ".claude-mpm" / "cache" / "agents"
|
|
2196
2194
|
agents = service.get_agents_by_collection(collection_id, cache_dir)
|
|
2197
2195
|
|
|
2198
2196
|
if not agents:
|
|
@@ -2249,7 +2247,7 @@ class AgentsCommand(AgentCommand):
|
|
|
2249
2247
|
|
|
2250
2248
|
# Get agents from collection
|
|
2251
2249
|
service = MultiSourceAgentDeploymentService()
|
|
2252
|
-
cache_dir = Path.home() / ".claude-mpm" / "cache" / "
|
|
2250
|
+
cache_dir = Path.home() / ".claude-mpm" / "cache" / "agents"
|
|
2253
2251
|
agents = service.get_agents_by_collection(collection_id, cache_dir)
|
|
2254
2252
|
|
|
2255
2253
|
if not agents:
|
|
@@ -2304,7 +2302,7 @@ class AgentsCommand(AgentCommand):
|
|
|
2304
2302
|
try:
|
|
2305
2303
|
from ...services.agents.cache_git_manager import CacheGitManager
|
|
2306
2304
|
|
|
2307
|
-
cache_dir = Path.home() / ".claude-mpm" / "cache" / "
|
|
2305
|
+
cache_dir = Path.home() / ".claude-mpm" / "cache" / "agents"
|
|
2308
2306
|
manager = CacheGitManager(cache_dir)
|
|
2309
2307
|
|
|
2310
2308
|
if not manager.is_git_repo():
|
|
@@ -2377,7 +2375,7 @@ class AgentsCommand(AgentCommand):
|
|
|
2377
2375
|
try:
|
|
2378
2376
|
from ...services.agents.cache_git_manager import CacheGitManager
|
|
2379
2377
|
|
|
2380
|
-
cache_dir = Path.home() / ".claude-mpm" / "cache" / "
|
|
2378
|
+
cache_dir = Path.home() / ".claude-mpm" / "cache" / "agents"
|
|
2381
2379
|
manager = CacheGitManager(cache_dir)
|
|
2382
2380
|
|
|
2383
2381
|
if not manager.is_git_repo():
|
|
@@ -2404,7 +2402,7 @@ class AgentsCommand(AgentCommand):
|
|
|
2404
2402
|
try:
|
|
2405
2403
|
from ...services.agents.cache_git_manager import CacheGitManager
|
|
2406
2404
|
|
|
2407
|
-
cache_dir = Path.home() / ".claude-mpm" / "cache" / "
|
|
2405
|
+
cache_dir = Path.home() / ".claude-mpm" / "cache" / "agents"
|
|
2408
2406
|
manager = CacheGitManager(cache_dir)
|
|
2409
2407
|
|
|
2410
2408
|
if not manager.is_git_repo():
|
|
@@ -2436,7 +2434,7 @@ class AgentsCommand(AgentCommand):
|
|
|
2436
2434
|
try:
|
|
2437
2435
|
from ...services.agents.cache_git_manager import CacheGitManager
|
|
2438
2436
|
|
|
2439
|
-
cache_dir = Path.home() / ".claude-mpm" / "cache" / "
|
|
2437
|
+
cache_dir = Path.home() / ".claude-mpm" / "cache" / "agents"
|
|
2440
2438
|
manager = CacheGitManager(cache_dir)
|
|
2441
2439
|
|
|
2442
2440
|
if not manager.is_git_repo():
|
|
@@ -2484,7 +2482,7 @@ class AgentsCommand(AgentCommand):
|
|
|
2484
2482
|
try:
|
|
2485
2483
|
from ...services.agents.cache_git_manager import CacheGitManager
|
|
2486
2484
|
|
|
2487
|
-
cache_dir = Path.home() / ".claude-mpm" / "cache" / "
|
|
2485
|
+
cache_dir = Path.home() / ".claude-mpm" / "cache" / "agents"
|
|
2488
2486
|
manager = CacheGitManager(cache_dir)
|
|
2489
2487
|
|
|
2490
2488
|
if not manager.is_git_repo():
|