claude-mpm 5.0.9__py3-none-any.whl → 5.6.23__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/__init__.py +4 -0
- claude_mpm/agents/BASE_AGENT.md +164 -0
- claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +115 -0
- claude_mpm/agents/CLAUDE_MPM_RESEARCH_OUTPUT_STYLE.md +413 -0
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +186 -0
- claude_mpm/agents/MEMORY.md +1 -1
- claude_mpm/agents/PM_INSTRUCTIONS.md +479 -616
- claude_mpm/agents/WORKFLOW.md +6 -253
- claude_mpm/agents/agent_loader.py +13 -44
- claude_mpm/agents/base_agent.json +1 -1
- claude_mpm/agents/frontmatter_validator.py +70 -2
- claude_mpm/agents/templates/circuit-breakers.md +457 -62
- claude_mpm/cli/__init__.py +5 -2
- claude_mpm/cli/__main__.py +4 -0
- claude_mpm/cli/chrome_devtools_installer.py +175 -0
- claude_mpm/cli/commands/agent_state_manager.py +18 -27
- claude_mpm/cli/commands/agents.py +177 -41
- claude_mpm/cli/commands/agents_reconcile.py +197 -0
- claude_mpm/cli/commands/auto_configure.py +723 -236
- claude_mpm/cli/commands/autotodos.py +566 -0
- claude_mpm/cli/commands/commander.py +216 -0
- claude_mpm/cli/commands/config.py +88 -2
- claude_mpm/cli/commands/configure.py +1874 -170
- claude_mpm/cli/commands/configure_agent_display.py +27 -6
- 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 +232 -46
- claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +280 -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 +379 -204
- claude_mpm/cli/commands/summarize.py +413 -0
- claude_mpm/cli/executor.py +141 -19
- claude_mpm/cli/interactive/__init__.py +10 -0
- claude_mpm/cli/interactive/agent_wizard.py +115 -60
- claude_mpm/cli/interactive/questionary_styles.py +65 -0
- claude_mpm/cli/interactive/skill_selector.py +481 -0
- claude_mpm/cli/parsers/agents_parser.py +54 -9
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
- claude_mpm/cli/parsers/base_parser.py +88 -1
- claude_mpm/cli/parsers/commander_parser.py +116 -0
- claude_mpm/cli/parsers/config_parser.py +153 -83
- 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 +1 -1
- claude_mpm/cli/startup.py +1017 -266
- 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 +36 -0
- claude_mpm/commands/mpm-doctor.md +16 -21
- claude_mpm/commands/mpm-help.md +12 -286
- claude_mpm/commands/mpm-init.md +88 -506
- claude_mpm/commands/mpm-monitor.md +22 -401
- claude_mpm/commands/mpm-organize.md +128 -0
- 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/agent_sources.py +27 -0
- 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/formatters/content_formatter.py +3 -13
- claude_mpm/core/framework/loaders/agent_loader.py +8 -5
- claude_mpm/core/framework/loaders/instruction_loader.py +52 -11
- claude_mpm/core/framework_loader.py +4 -2
- claude_mpm/core/hook_manager.py +51 -3
- claude_mpm/core/interactive_session.py +12 -11
- claude_mpm/core/logger.py +39 -9
- claude_mpm/core/logging_utils.py +35 -11
- 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 +219 -44
- claude_mpm/core/shared/config_loader.py +3 -1
- claude_mpm/core/socketio_pool.py +16 -8
- claude_mpm/core/unified_agent_registry.py +134 -16
- claude_mpm/core/unified_config.py +76 -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/correlation_manager.py +60 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +479 -128
- claude_mpm/hooks/claude_hooks/hook_handler.py +254 -83
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh +6 -11
- claude_mpm/hooks/claude_hooks/installer.py +149 -18
- claude_mpm/hooks/claude_hooks/memory_integration.py +67 -19
- claude_mpm/hooks/claude_hooks/response_tracking.py +44 -62
- 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__/duplicate_detector.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 +69 -30
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +36 -103
- claude_mpm/hooks/claude_hooks/services/state_manager.py +23 -36
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +73 -75
- claude_mpm/hooks/kuzu_memory_hook.py +5 -5
- claude_mpm/hooks/memory_integration_hook.py +46 -1
- claude_mpm/hooks/session_resume_hook.py +89 -1
- claude_mpm/hooks/templates/pre_tool_use_template.py +10 -2
- claude_mpm/init.py +276 -19
- claude_mpm/models/agent_definition.py +7 -0
- claude_mpm/models/git_repository.py +3 -3
- claude_mpm/scripts/claude-hook-handler.sh +87 -20
- claude_mpm/scripts/launch_monitor.py +93 -13
- claude_mpm/scripts/start_activity_logging.py +0 -0
- claude_mpm/services/agents/agent_builder.py +3 -3
- claude_mpm/services/agents/agent_recommendation_service.py +278 -0
- claude_mpm/services/agents/agent_review_service.py +280 -0
- 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 +6 -5
- claude_mpm/services/agents/deployment/agent_format_converter.py +25 -13
- claude_mpm/services/agents/deployment/agent_template_builder.py +42 -20
- 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 +348 -29
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +570 -68
- claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
- claude_mpm/services/agents/git_source_manager.py +57 -4
- claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
- 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 +129 -11
- claude_mpm/services/agents/startup_sync.py +27 -4
- claude_mpm/services/agents/toolchain_detector.py +10 -6
- claude_mpm/services/analysis/__init__.py +11 -1
- claude_mpm/services/analysis/clone_detector.py +1030 -0
- 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 +81 -10
- 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_bus/config.py +3 -1
- claude_mpm/services/event_log.py +325 -0
- claude_mpm/services/git/git_operations_service.py +101 -16
- 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.py +9 -2
- claude_mpm/services/monitor/daemon_manager.py +54 -7
- claude_mpm/services/monitor/management/lifecycle.py +15 -3
- claude_mpm/services/monitor/server.py +796 -30
- claude_mpm/services/pm_skills_deployer.py +884 -0
- claude_mpm/services/profile_manager.py +337 -0
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/self_upgrade_service.py +120 -12
- claude_mpm/services/skills/__init__.py +3 -0
- claude_mpm/services/skills/git_skill_source_manager.py +303 -12
- claude_mpm/services/skills/selective_skill_deployer.py +869 -0
- claude_mpm/services/skills/skill_discovery_service.py +74 -4
- claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
- claude_mpm/services/skills_deployer.py +294 -55
- claude_mpm/services/socketio/dashboard_server.py +1 -0
- claude_mpm/services/socketio/event_normalizer.py +51 -6
- claude_mpm/services/socketio/handlers/hook.py +14 -7
- claude_mpm/services/socketio/server/core.py +386 -108
- claude_mpm/services/socketio/server/main.py +12 -4
- claude_mpm/services/version_control/git_operations.py +103 -0
- 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 +17 -44
- claude_mpm/utils/gitignore.py +3 -0
- claude_mpm/utils/migration.py +4 -4
- claude_mpm/utils/robust_installer.py +86 -21
- claude_mpm-5.6.23.dist-info/METADATA +393 -0
- {claude_mpm-5.0.9.dist-info → claude_mpm-5.6.23.dist-info}/RECORD +508 -261
- claude_mpm-5.6.23.dist-info/entry_points.txt +5 -0
- claude_mpm-5.6.23.dist-info/licenses/LICENSE +94 -0
- claude_mpm-5.6.23.dist-info/licenses/LICENSE-FAQ.md +153 -0
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
- claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
- claude_mpm/agents/BASE_OPS.md +0 -219
- claude_mpm/agents/BASE_PM.md +0 -480
- claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
- claude_mpm/agents/BASE_QA.md +0 -167
- claude_mpm/agents/BASE_RESEARCH.md +0 -53
- claude_mpm/agents/OUTPUT_STYLE.md +0 -290
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +0 -1322
- claude_mpm/agents/base_agent_loader.py +0 -601
- claude_mpm/cli/commands/agents_detect.py +0 -380
- claude_mpm/cli/commands/agents_recommend.py +0 -309
- claude_mpm/cli/ticket_cli.py +0 -35
- claude_mpm/commands/mpm-agents-auto-configure.md +0 -278
- claude_mpm/commands/mpm-agents-detect.md +0 -177
- claude_mpm/commands/mpm-agents-list.md +0 -131
- claude_mpm/commands/mpm-agents-recommend.md +0 -223
- claude_mpm/commands/mpm-config-view.md +0 -150
- claude_mpm/commands/mpm-ticket-organize.md +0 -304
- claude_mpm/dashboard/analysis_runner.py +0 -455
- claude_mpm/dashboard/index.html +0 -13
- claude_mpm/dashboard/open_dashboard.py +0 -66
- claude_mpm/dashboard/static/css/activity.css +0 -1958
- claude_mpm/dashboard/static/css/connection-status.css +0 -370
- claude_mpm/dashboard/static/css/dashboard.css +0 -4701
- claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
- claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
- claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
- claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
- claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
- claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
- claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
- claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
- claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
- claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
- claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
- claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
- claude_mpm/dashboard/static/js/connection-manager.js +0 -536
- claude_mpm/dashboard/static/js/dashboard.js +0 -1914
- claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/js/socket-client.js +0 -1474
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/socket.io.min.js +0 -7
- claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
- claude_mpm/dashboard/templates/code_simple.html +0 -153
- claude_mpm/dashboard/templates/index.html +0 -606
- claude_mpm/dashboard/test_dashboard.html +0 -372
- 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/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/scripts/mcp_server.py +0 -75
- claude_mpm/scripts/mcp_wrapper.py +0 -39
- claude_mpm/services/mcp_gateway/__init__.py +0 -159
- claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
- claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
- claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
- claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
- claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
- claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
- claude_mpm/services/mcp_gateway/core/base.py +0 -312
- claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
- claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
- claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
- claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
- claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
- claude_mpm/services/mcp_gateway/main.py +0 -589
- claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
- claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
- claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
- claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
- claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
- claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
- claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
- claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
- claude_mpm-5.0.9.dist-info/METADATA +0 -1028
- claude_mpm-5.0.9.dist-info/entry_points.txt +0 -10
- claude_mpm-5.0.9.dist-info/licenses/LICENSE +0 -21
- {claude_mpm-5.0.9.dist-info → claude_mpm-5.6.23.dist-info}/WHEEL +0 -0
- {claude_mpm-5.0.9.dist-info → claude_mpm-5.6.23.dist-info}/top_level.txt +0 -0
|
@@ -134,73 +134,265 @@ PM: Task(agent="engineer", task="Add express dependency to package.json")
|
|
|
134
134
|
|
|
135
135
|
## Circuit Breaker #2: Investigation Detection
|
|
136
136
|
|
|
137
|
-
**Purpose**:
|
|
137
|
+
**Purpose**: Block PM from investigation work through pre-action enforcement
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
**Effectiveness Target**: 95% compliance (upgraded from 40% reactive detection)
|
|
140
|
+
**Model**: Pre-action blocking pattern (Circuit Breaker #6 architecture)
|
|
141
|
+
**Related Tests**: `tests/one-shot/pm-investigation-violations/test_001.md` through `test_005.md`
|
|
142
|
+
**Research Analysis**: `docs/research/pm-investigation-violation-analysis.md`
|
|
140
143
|
|
|
141
|
-
|
|
144
|
+
### Core Principle
|
|
142
145
|
|
|
143
|
-
|
|
144
|
-
- Reading more than 1 file per session
|
|
145
|
-
- Using `Read` tool for code exploration
|
|
146
|
-
- Checking file contents for investigation
|
|
147
|
-
- Reading documentation for understanding
|
|
146
|
+
PM must detect investigation intent BEFORE using investigation tools. This circuit breaker enforces mandatory Research delegation for any task requiring code analysis, multi-file reading, or solution exploration.
|
|
148
147
|
|
|
149
|
-
|
|
150
|
-
- Using `Grep` tool for code search
|
|
151
|
-
- Using `Glob` tool for file discovery
|
|
152
|
-
- Using `WebSearch` or `WebFetch` for research
|
|
153
|
-
- Analyzing code patterns or architecture
|
|
148
|
+
### Pre-Action Blocking Protocol
|
|
154
149
|
|
|
155
|
-
|
|
156
|
-
- Searching for solutions or approaches
|
|
157
|
-
- Examining dependencies or imports
|
|
158
|
-
- Checking logs for debugging
|
|
159
|
-
- Running git commands for history (`git log`, `git blame`)
|
|
150
|
+
**MANDATORY: PM checks for investigation signals before tool execution**
|
|
160
151
|
|
|
161
|
-
|
|
152
|
+
#### Step 1: User Request Analysis (BLOCKING)
|
|
162
153
|
|
|
163
|
-
|
|
154
|
+
Before any tool use, PM analyzes user request for investigation triggers:
|
|
164
155
|
|
|
165
|
-
|
|
156
|
+
**Investigation Trigger Keywords**:
|
|
166
157
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
158
|
+
| Category | Keywords | Action |
|
|
159
|
+
|----------|----------|--------|
|
|
160
|
+
| **Investigation Verbs** | "investigate", "check", "look at", "explore", "examine" | Block → Delegate to Research |
|
|
161
|
+
| **Analysis Requests** | "analyze", "review", "inspect", "understand", "figure out" | Block → Delegate to Research |
|
|
162
|
+
| **Problem Diagnosis** | "debug", "find out", "what's wrong", "why is", "how does" | Block → Delegate to Research |
|
|
163
|
+
| **Code Exploration** | "see what", "show me", "where is", "find the code" | Block → Delegate to Research |
|
|
172
164
|
|
|
173
|
-
|
|
165
|
+
**Detection Rule**: If user request contains ANY trigger keyword → PM MUST delegate to Research BEFORE using Read/Grep/Glob/WebSearch/WebFetch tools.
|
|
174
166
|
|
|
175
|
-
|
|
167
|
+
**Example**:
|
|
168
|
+
```
|
|
169
|
+
User: "Investigate why authentication is failing"
|
|
170
|
+
↓
|
|
171
|
+
PM detects: "investigate" (trigger keyword)
|
|
172
|
+
↓
|
|
173
|
+
BLOCK: Read/Grep/Glob tools forbidden
|
|
174
|
+
↓
|
|
175
|
+
PM delegates: Task(agent="research", task="Investigate authentication failure")
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
#### Step 2: PM Self-Awareness Check (BLOCKING)
|
|
179
|
+
|
|
180
|
+
PM monitors own statements for investigation language:
|
|
181
|
+
|
|
182
|
+
**Self-Detection Triggers**:
|
|
183
|
+
|
|
184
|
+
| PM Statement | Violation Type | Required Self-Correction |
|
|
185
|
+
|--------------|----------------|--------------------------|
|
|
186
|
+
| "I'll investigate..." | Investigation intent | "I'll have Research investigate..." |
|
|
187
|
+
| "Let me check..." | Investigation intent | "I'll delegate to Research to check..." |
|
|
188
|
+
| "I'll look at..." | Investigation intent | "I'll have Research analyze..." |
|
|
189
|
+
| "I'll analyze..." | Investigation intent | "I'll delegate to Research to analyze..." |
|
|
190
|
+
| "I'll explore..." | Investigation intent | "I'll have Research explore..." |
|
|
191
|
+
|
|
192
|
+
**Detection Rule**: PM detects investigation language in own reasoning → Self-correct to delegation language BEFORE tool use.
|
|
193
|
+
|
|
194
|
+
**Example**:
|
|
195
|
+
```
|
|
196
|
+
PM thinks: "I'll investigate this bug..."
|
|
197
|
+
↓
|
|
198
|
+
PM detects: "investigate" in own statement (trigger)
|
|
199
|
+
↓
|
|
200
|
+
PM corrects: "I'll have Research investigate this bug..."
|
|
201
|
+
↓
|
|
202
|
+
PM delegates: Task(agent="research", task="...")
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### Step 3: Read Tool Limit Enforcement (BLOCKING)
|
|
206
|
+
|
|
207
|
+
**Absolute Rule**: PM can read EXACTLY ONE file per task for delegation context only.
|
|
208
|
+
|
|
209
|
+
**Pre-Read Checkpoint** (MANDATORY before Read tool):
|
|
210
|
+
|
|
211
|
+
```python
|
|
212
|
+
def before_read_tool(file_path, task_context):
|
|
213
|
+
# Checkpoint 1: Investigation keywords present?
|
|
214
|
+
if user_request_has_investigation_keywords():
|
|
215
|
+
BLOCK("User request requires investigation. Delegate to Research. Zero reads allowed.")
|
|
216
|
+
|
|
217
|
+
# Checkpoint 2: Already used Read once?
|
|
218
|
+
if read_count_this_task >= 1:
|
|
219
|
+
BLOCK("PM already read one file. Second read forbidden. Delegate to Research.")
|
|
220
|
+
|
|
221
|
+
# Checkpoint 3: Source code file?
|
|
222
|
+
if is_source_code(file_path): # .py, .js, .ts, .java, .go, etc.
|
|
223
|
+
BLOCK("PM cannot read source code. Delegate to Research for code investigation.")
|
|
224
|
+
|
|
225
|
+
# Checkpoint 4: Task requires codebase understanding?
|
|
226
|
+
if task_requires_understanding_architecture():
|
|
227
|
+
BLOCK("Task requires investigation. Delegate to Research. Zero reads allowed.")
|
|
228
|
+
|
|
229
|
+
# All checkpoints passed - allow ONE file read
|
|
230
|
+
read_count_this_task += 1
|
|
231
|
+
ALLOW(file_path)
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Blocking Conditions**:
|
|
235
|
+
- Read count ≥ 1 → Block second read
|
|
236
|
+
- Source code file → Block (any .py/.js/.ts/.java/.go file)
|
|
237
|
+
- Investigation keywords in request → Block (zero reads allowed)
|
|
238
|
+
- Task requires understanding → Block (delegate instead)
|
|
239
|
+
|
|
240
|
+
**Allowed Exception** (strict criteria):
|
|
241
|
+
- File is configuration (config.json, database.yaml, package.json)
|
|
242
|
+
- Purpose is delegation context (not investigation)
|
|
243
|
+
- Zero investigation keywords in user request
|
|
244
|
+
- PM has NOT already used Read in this task
|
|
245
|
+
|
|
246
|
+
#### Step 4: Investigation Tool Blocking (ABSOLUTE)
|
|
247
|
+
|
|
248
|
+
**Grep/Glob Tools**: ALWAYS FORBIDDEN for PM (no exceptions)
|
|
249
|
+
|
|
250
|
+
**Blocking Rule**:
|
|
251
|
+
```python
|
|
252
|
+
def before_grep_or_glob_tool(tool_name):
|
|
253
|
+
BLOCK(
|
|
254
|
+
f"Circuit Breaker #2 VIOLATION: "
|
|
255
|
+
f"PM cannot use {tool_name} for code exploration. "
|
|
256
|
+
f"MUST delegate to Research agent."
|
|
257
|
+
)
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**WebSearch/WebFetch Tools**: ALWAYS FORBIDDEN for PM (no exceptions)
|
|
261
|
+
|
|
262
|
+
**Blocking Rule**:
|
|
263
|
+
```python
|
|
264
|
+
def before_web_research_tool(tool_name):
|
|
265
|
+
BLOCK(
|
|
266
|
+
f"Circuit Breaker #2 VIOLATION: "
|
|
267
|
+
f"PM cannot use {tool_name} for research. "
|
|
268
|
+
f"MUST delegate to Research agent."
|
|
269
|
+
)
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Rationale**: These tools are investigation tools by design. PM using them indicates investigation work that must be delegated.
|
|
273
|
+
|
|
274
|
+
### Trigger Conditions Summary
|
|
176
275
|
|
|
177
|
-
**
|
|
276
|
+
**BLOCK immediately if PM attempts**:
|
|
178
277
|
|
|
179
|
-
|
|
278
|
+
1. **Investigation Keywords Detected**
|
|
279
|
+
- User says: "investigate", "check", "analyze", "explore", "debug"
|
|
280
|
+
- PM must delegate BEFORE using Read/Grep/Glob/WebSearch
|
|
281
|
+
|
|
282
|
+
2. **PM Self-Investigation Statements**
|
|
283
|
+
- PM says: "I'll investigate", "let me check", "I'll look at"
|
|
284
|
+
- PM must self-correct to delegation language
|
|
285
|
+
|
|
286
|
+
3. **Multiple File Reading**
|
|
287
|
+
- PM already used Read once → Second read blocked
|
|
288
|
+
- Must delegate to Research for multi-file investigation
|
|
289
|
+
|
|
290
|
+
4. **Source Code Reading**
|
|
291
|
+
- PM attempts Read on .py/.js/.ts/.java/.go files → Blocked
|
|
292
|
+
- Must delegate to Research for code investigation
|
|
293
|
+
|
|
294
|
+
5. **Investigation Tools**
|
|
295
|
+
- Grep/Glob/WebSearch/WebFetch → Always blocked
|
|
296
|
+
- Must delegate to Research (no exceptions)
|
|
297
|
+
|
|
298
|
+
### Violation Response
|
|
299
|
+
|
|
300
|
+
**→ BLOCK BEFORE TOOL EXECUTION**
|
|
301
|
+
|
|
302
|
+
**→ ERROR MESSAGE**:
|
|
303
|
+
```
|
|
304
|
+
"Circuit Breaker #2 VIOLATION: [specific violation]
|
|
305
|
+
PM cannot investigate directly.
|
|
306
|
+
MUST delegate to Research agent."
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
**→ REQUIRED ACTION**: Immediate delegation to Research agent
|
|
310
|
+
|
|
311
|
+
**→ VIOLATIONS LOGGED**: Track for session compliance report
|
|
312
|
+
|
|
313
|
+
### Delegation Targets
|
|
314
|
+
|
|
315
|
+
**Delegate investigation work to**:
|
|
316
|
+
- **Research**: Code investigation, multi-file analysis, web research, documentation reading
|
|
317
|
+
- **Code Analyzer**: Architecture review, pattern analysis (after Research provides context)
|
|
318
|
+
- **Ops**: Log analysis, debugging production issues
|
|
319
|
+
- **Version Control**: Git history investigation, code evolution analysis
|
|
180
320
|
|
|
181
321
|
### Examples
|
|
182
322
|
|
|
183
|
-
####
|
|
323
|
+
#### Pre-Action Blocking (CORRECT)
|
|
184
324
|
|
|
185
325
|
```
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
PM:
|
|
189
|
-
|
|
190
|
-
PM:
|
|
191
|
-
|
|
326
|
+
User: "Investigate authentication failure"
|
|
327
|
+
↓
|
|
328
|
+
PM detects: "investigate" keyword
|
|
329
|
+
↓
|
|
330
|
+
PM blocks: Read/Grep/Glob tools (BEFORE use)
|
|
331
|
+
↓
|
|
332
|
+
PM delegates: Task(agent="research", task="Investigate authentication failure")
|
|
333
|
+
↓
|
|
334
|
+
Tool usage count: 0 (zero tools used by PM)
|
|
192
335
|
```
|
|
193
336
|
|
|
194
|
-
####
|
|
337
|
+
#### Self-Correction (CORRECT)
|
|
195
338
|
|
|
196
339
|
```
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
PM:
|
|
200
|
-
|
|
201
|
-
PM:
|
|
340
|
+
User: "Check why login is broken"
|
|
341
|
+
↓
|
|
342
|
+
PM thinks: "I'll investigate the login code..."
|
|
343
|
+
↓
|
|
344
|
+
PM detects: "investigate" in own statement
|
|
345
|
+
↓
|
|
346
|
+
PM corrects: "I'll have Research investigate..."
|
|
347
|
+
↓
|
|
348
|
+
PM delegates: Task(agent="research", task="Investigate login bug")
|
|
202
349
|
```
|
|
203
350
|
|
|
351
|
+
#### Read Limit Enforcement (CORRECT)
|
|
352
|
+
|
|
353
|
+
```
|
|
354
|
+
User: "Check auth and session code"
|
|
355
|
+
↓
|
|
356
|
+
PM detects: "check" + multiple components
|
|
357
|
+
↓
|
|
358
|
+
PM reasoning: "Would need to read auth.js AND session.js (>1 file)"
|
|
359
|
+
↓
|
|
360
|
+
PM blocks: Read tool (BEFORE first read)
|
|
361
|
+
↓
|
|
362
|
+
PM delegates: Task(agent="research", task="Analyze auth and session code")
|
|
363
|
+
↓
|
|
364
|
+
Read count: 0 (zero reads by PM)
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
#### Violation Examples (BLOCKED)
|
|
368
|
+
|
|
369
|
+
```
|
|
370
|
+
❌ PM: Read("src/auth.js") then Read("src/session.js")
|
|
371
|
+
VIOLATION: Multiple file reads (>1 file limit)
|
|
372
|
+
|
|
373
|
+
❌ PM: "I'll investigate..." then uses Read tool
|
|
374
|
+
VIOLATION: Investigation language detected, proceeded anyway
|
|
375
|
+
|
|
376
|
+
❌ PM: Grep(pattern="authentication")
|
|
377
|
+
VIOLATION: Investigation tool usage (Grep always forbidden)
|
|
378
|
+
|
|
379
|
+
❌ PM: User says "investigate", PM uses Read
|
|
380
|
+
VIOLATION: Investigation keyword ignored, proceeded with tools
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### Success Metrics
|
|
384
|
+
|
|
385
|
+
**Target Effectiveness**: 95% compliance
|
|
386
|
+
|
|
387
|
+
**Measurement Criteria**:
|
|
388
|
+
1. **Trigger Word Detection**: 90%+ of investigation keywords detected
|
|
389
|
+
2. **Self-Awareness**: 85%+ of PM investigation statements self-corrected
|
|
390
|
+
3. **Pre-Action Blocking**: 95%+ of blocks occur BEFORE tool use
|
|
391
|
+
4. **Read Limit Compliance**: 98%+ tasks follow one-file maximum rule
|
|
392
|
+
5. **Overall Violation Rate**: <10% sessions with Circuit Breaker #2 violations
|
|
393
|
+
|
|
394
|
+
**Test Validation**: All 5 test cases in `tests/one-shot/pm-investigation-violations/` must pass
|
|
395
|
+
|
|
204
396
|
---
|
|
205
397
|
|
|
206
398
|
## Circuit Breaker #3: Unverified Assertion Detection
|
|
@@ -331,23 +523,25 @@ PM: Task(agent="qa", task="Verify bug fix with regression test")
|
|
|
331
523
|
|
|
332
524
|
### KEY PRINCIPLE
|
|
333
525
|
|
|
334
|
-
PM delegates
|
|
526
|
+
PM delegates ALL work - implementation AND verification.
|
|
335
527
|
|
|
336
528
|
**Workflow:**
|
|
337
|
-
1. **DELEGATE** to agent (using Task tool)
|
|
529
|
+
1. **DELEGATE** implementation to appropriate agent (using Task tool)
|
|
338
530
|
2. **WAIT** for agent to complete work
|
|
339
|
-
3. **
|
|
340
|
-
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
|
+
|
|
534
|
+
### PM NEVER Uses Verification Commands
|
|
341
535
|
|
|
342
|
-
|
|
536
|
+
**FORBIDDEN for PM** (must delegate to local-ops or QA):
|
|
343
537
|
|
|
344
|
-
|
|
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
|
|
345
543
|
|
|
346
|
-
|
|
347
|
-
- `lsof`, `netstat`, `ss` - Port and network checks
|
|
348
|
-
- `ps`, `pgrep` - Process status checks
|
|
349
|
-
- `pm2 status`, `docker ps` - Service status
|
|
350
|
-
- Health check endpoints
|
|
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.
|
|
351
545
|
|
|
352
546
|
### Examples
|
|
353
547
|
|
|
@@ -358,23 +552,29 @@ These commands are ALLOWED for quality assurance AFTER delegating implementation
|
|
|
358
552
|
PM: Bash("npm start") # VIOLATION - implementing
|
|
359
553
|
PM: "App running on localhost:3000" # VIOLATION - no delegation
|
|
360
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
|
+
|
|
361
559
|
# Wrong: PM testing before delegating implementation
|
|
362
560
|
PM: Bash("npm test") # VIOLATION - testing without implementation
|
|
363
561
|
|
|
364
562
|
# Wrong: "Let me" thinking
|
|
365
563
|
PM: "Let me check the code..." # VIOLATION - should delegate
|
|
366
564
|
PM: "Let me fix this bug..." # VIOLATION - should delegate
|
|
565
|
+
PM: "Let me verify the deployment..." # VIOLATION - should delegate to local-ops
|
|
367
566
|
```
|
|
368
567
|
|
|
369
568
|
#### ✅ CORRECT Examples
|
|
370
569
|
|
|
371
570
|
```
|
|
372
|
-
# Correct: Delegate
|
|
373
|
-
PM: Task(agent="local-ops
|
|
374
|
-
[
|
|
375
|
-
PM:
|
|
376
|
-
|
|
377
|
-
|
|
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"
|
|
378
578
|
|
|
379
579
|
# Correct: Delegate implementation, then delegate testing
|
|
380
580
|
PM: Task(agent="engineer", task="Fix authentication bug")
|
|
@@ -386,6 +586,7 @@ PM: "Bug fix verified by QA: All tests passed"
|
|
|
386
586
|
# Correct: Thinking in delegation terms
|
|
387
587
|
PM: "I'll have Research check the code..."
|
|
388
588
|
PM: "I'll delegate this fix to Engineer..."
|
|
589
|
+
PM: "I'll have local-ops verify the deployment..."
|
|
389
590
|
```
|
|
390
591
|
|
|
391
592
|
---
|
|
@@ -558,11 +759,68 @@ PM: "All test files tracked in git"
|
|
|
558
759
|
|
|
559
760
|
**CRITICAL**: PM MUST NEVER use ticketing tools directly - ALWAYS delegate to ticketing.
|
|
560
761
|
|
|
561
|
-
#### Ticketing Tool Direct Usage
|
|
762
|
+
#### Ticketing Tool Direct Usage (BLOCKING)
|
|
562
763
|
- PM uses any mcp-ticketer tools (`mcp__mcp-ticketer__*`)
|
|
563
764
|
- PM runs aitrackdown CLI commands (`aitrackdown create`, `aitrackdown show`, etc.)
|
|
564
765
|
- PM accesses Linear/GitHub/JIRA APIs directly
|
|
565
766
|
- PM reads/writes ticket data without delegating
|
|
767
|
+
- PM uses WebFetch on ticket URLs (Linear, GitHub, JIRA)
|
|
768
|
+
|
|
769
|
+
#### Pre-Action Enforcement Hook
|
|
770
|
+
|
|
771
|
+
**BEFORE PM uses ANY tool, check:**
|
|
772
|
+
|
|
773
|
+
```python
|
|
774
|
+
# Forbidden tool patterns for PM
|
|
775
|
+
FORBIDDEN_TICKETING_TOOLS = [
|
|
776
|
+
"mcp__mcp-ticketer__", # All mcp-ticketer tools
|
|
777
|
+
"aitrackdown", # CLI commands
|
|
778
|
+
"linear.app", # Linear URLs in WebFetch
|
|
779
|
+
"github.com/*/issues/", # GitHub issue URLs
|
|
780
|
+
"*/jira/", # JIRA URLs
|
|
781
|
+
]
|
|
782
|
+
|
|
783
|
+
def before_pm_tool_use(tool_name, tool_params):
|
|
784
|
+
# Block mcp-ticketer tools
|
|
785
|
+
if tool_name.startswith("mcp__mcp-ticketer__"):
|
|
786
|
+
raise ViolationError(
|
|
787
|
+
"Circuit Breaker #6 VIOLATION: "
|
|
788
|
+
"PM cannot use mcp-ticketer tools directly. "
|
|
789
|
+
"MUST delegate to ticketing agent. "
|
|
790
|
+
f"Attempted: {tool_name}"
|
|
791
|
+
)
|
|
792
|
+
|
|
793
|
+
# Block ticket URL access
|
|
794
|
+
if tool_name == "WebFetch":
|
|
795
|
+
url = tool_params.get("url", "")
|
|
796
|
+
for forbidden in ["linear.app", "github.com", "jira"]:
|
|
797
|
+
if forbidden in url and ("issue" in url or "ticket" in url):
|
|
798
|
+
raise ViolationError(
|
|
799
|
+
"Circuit Breaker #6 VIOLATION: "
|
|
800
|
+
"PM cannot access ticket URLs directly. "
|
|
801
|
+
"MUST delegate to ticketing agent. "
|
|
802
|
+
f"URL: {url}"
|
|
803
|
+
)
|
|
804
|
+
|
|
805
|
+
# Block Bash commands for ticketing CLIs
|
|
806
|
+
if tool_name == "Bash":
|
|
807
|
+
command = tool_params.get("command", "")
|
|
808
|
+
if "aitrackdown" in command:
|
|
809
|
+
raise ViolationError(
|
|
810
|
+
"Circuit Breaker #6 VIOLATION: "
|
|
811
|
+
"PM cannot use aitrackdown CLI directly. "
|
|
812
|
+
"MUST delegate to ticketing agent. "
|
|
813
|
+
f"Command: {command}"
|
|
814
|
+
)
|
|
815
|
+
```
|
|
816
|
+
|
|
817
|
+
#### Tool Usage Detection Patterns
|
|
818
|
+
|
|
819
|
+
**Ticket URL Detection** (triggers delegation):
|
|
820
|
+
- `https://linear.app/*/issue/*` → Delegate to ticketing
|
|
821
|
+
- `https://github.com/*/issues/*` → Delegate to ticketing
|
|
822
|
+
- `https://*/jira/browse/*` → Delegate to ticketing
|
|
823
|
+
- Any URL containing both "ticket" and platform name → Delegate to ticketing
|
|
566
824
|
|
|
567
825
|
### Why This Matters
|
|
568
826
|
|
|
@@ -905,6 +1163,139 @@ Before delegating implementation, PM MUST verify:
|
|
|
905
1163
|
|
|
906
1164
|
---
|
|
907
1165
|
|
|
1166
|
+
## Circuit Breaker #8: Skills Management Violation
|
|
1167
|
+
|
|
1168
|
+
**Purpose**: Prevent PM from performing skill operations directly instead of delegating to mpm-skills-manager
|
|
1169
|
+
|
|
1170
|
+
### Trigger Conditions
|
|
1171
|
+
|
|
1172
|
+
**IF PM attempts ANY of the following:**
|
|
1173
|
+
|
|
1174
|
+
#### Direct Skill Operations
|
|
1175
|
+
- PM creates SKILL.md files directly (using Write/Edit tools)
|
|
1176
|
+
- PM modifies manifest.json for skills
|
|
1177
|
+
- PM attempts to deploy skills without mpm-skills-manager
|
|
1178
|
+
- PM creates PRs to skills repository directly
|
|
1179
|
+
- PM recommends skills without technology detection
|
|
1180
|
+
- PM attempts skill validation or structure checks
|
|
1181
|
+
|
|
1182
|
+
#### Missing Delegation Signals
|
|
1183
|
+
- User request contains skill keywords but PM doesn't delegate
|
|
1184
|
+
- PM attempts to handle "create skill", "add skill", "improve skill" requests directly
|
|
1185
|
+
- PM tries to analyze technology stack without mpm-skills-manager
|
|
1186
|
+
- PM bypasses skill workflow for skill-related operations
|
|
1187
|
+
|
|
1188
|
+
### Violation Response
|
|
1189
|
+
|
|
1190
|
+
**→ STOP IMMEDIATELY**
|
|
1191
|
+
|
|
1192
|
+
**→ ERROR**: `"PM VIOLATION - Must delegate skill operations to mpm-skills-manager"`
|
|
1193
|
+
|
|
1194
|
+
**→ REQUIRED ACTION**: Delegate ALL skill operations to mpm-skills-manager agent
|
|
1195
|
+
|
|
1196
|
+
**→ VIOLATIONS TRACKED AND REPORTED**
|
|
1197
|
+
|
|
1198
|
+
### Correct Delegation Pattern
|
|
1199
|
+
|
|
1200
|
+
PM delegates ALL skill operations to mpm-skills-manager:
|
|
1201
|
+
- "I'll have mpm-skills-manager create the [technology] skill"
|
|
1202
|
+
- "I'll delegate skill recommendation to mpm-skills-manager"
|
|
1203
|
+
- "mpm-skills-manager will handle the PR for this skill improvement"
|
|
1204
|
+
- "I'll have mpm-skills-manager detect the project technology stack"
|
|
1205
|
+
|
|
1206
|
+
### Why This Matters
|
|
1207
|
+
|
|
1208
|
+
**mpm-skills-manager provides critical functionality:**
|
|
1209
|
+
- Technology stack detection from project files
|
|
1210
|
+
- Skill validation and structure enforcement
|
|
1211
|
+
- manifest.json integrity management
|
|
1212
|
+
- GitHub PR workflow integration for skill contributions
|
|
1213
|
+
- Skill versioning and lifecycle management
|
|
1214
|
+
|
|
1215
|
+
**PM lacks skill management expertise:**
|
|
1216
|
+
- No access to skill validation tools
|
|
1217
|
+
- No knowledge of manifest.json structure requirements
|
|
1218
|
+
- No PR workflow integration for skills repository
|
|
1219
|
+
- Risk of creating malformed skills without validation
|
|
1220
|
+
|
|
1221
|
+
### Examples
|
|
1222
|
+
|
|
1223
|
+
#### ❌ VIOLATION Examples
|
|
1224
|
+
|
|
1225
|
+
```
|
|
1226
|
+
# Violation: PM creating skill file directly
|
|
1227
|
+
User: "Create a FastAPI skill"
|
|
1228
|
+
PM: Write(file_path="skills/fastapi/SKILL.md", ...) # ❌ VIOLATION
|
|
1229
|
+
|
|
1230
|
+
# Violation: PM modifying manifest directly
|
|
1231
|
+
PM: Edit(file_path="manifest.json", ...) # ❌ VIOLATION
|
|
1232
|
+
|
|
1233
|
+
# Violation: PM creating PR to skills repository
|
|
1234
|
+
PM: Task(agent="version-control", task="Create PR to claude-code-skills") # ❌ VIOLATION
|
|
1235
|
+
|
|
1236
|
+
# Violation: PM recommending skills without detection
|
|
1237
|
+
User: "What skills do I need?"
|
|
1238
|
+
PM: "You need React and FastAPI skills" # ❌ VIOLATION - no technology detection
|
|
1239
|
+
```
|
|
1240
|
+
|
|
1241
|
+
#### ✅ CORRECT Examples
|
|
1242
|
+
|
|
1243
|
+
```
|
|
1244
|
+
# Correct: Skill creation delegation
|
|
1245
|
+
User: "Create a FastAPI skill"
|
|
1246
|
+
PM: Task(agent="mpm-skills-manager", task="Create comprehensive skill for FastAPI framework")
|
|
1247
|
+
|
|
1248
|
+
# Correct: Skill recommendation delegation
|
|
1249
|
+
User: "What skills do I need for this project?"
|
|
1250
|
+
PM: Task(agent="mpm-skills-manager", task="Detect project technology stack and recommend relevant skills")
|
|
1251
|
+
|
|
1252
|
+
# Correct: Skill improvement delegation
|
|
1253
|
+
User: "The React skill is missing hooks patterns"
|
|
1254
|
+
PM: Task(agent="mpm-skills-manager", task="Improve React skill by adding hooks patterns section")
|
|
1255
|
+
|
|
1256
|
+
# Correct: Technology detection delegation
|
|
1257
|
+
User: "What frameworks are we using?"
|
|
1258
|
+
PM: Task(agent="mpm-skills-manager", task="Analyze project files and identify all frameworks and technologies")
|
|
1259
|
+
```
|
|
1260
|
+
|
|
1261
|
+
### Enforcement Levels
|
|
1262
|
+
|
|
1263
|
+
| Violation Count | Response | Action |
|
|
1264
|
+
|----------------|----------|--------|
|
|
1265
|
+
| **Violation #1** | ⚠️ WARNING | PM reminded to delegate skill operations to mpm-skills-manager |
|
|
1266
|
+
| **Violation #2** | 🚨 ESCALATION | PM must STOP and delegate to mpm-skills-manager immediately |
|
|
1267
|
+
| **Violation #3+** | ❌ FAILURE | Session marked as non-compliant, skill operations blocked |
|
|
1268
|
+
|
|
1269
|
+
### Skill-Related Trigger Keywords
|
|
1270
|
+
|
|
1271
|
+
**PM should detect these keywords and delegate to mpm-skills-manager:**
|
|
1272
|
+
|
|
1273
|
+
**Skill Operations**:
|
|
1274
|
+
- "skill", "add skill", "create skill", "new skill"
|
|
1275
|
+
- "improve skill", "update skill", "skill is missing"
|
|
1276
|
+
- "deploy skill", "install skill", "remove skill"
|
|
1277
|
+
|
|
1278
|
+
**Technology Detection**:
|
|
1279
|
+
- "detect stack", "analyze technologies", "what frameworks"
|
|
1280
|
+
- "project stack", "identify dependencies"
|
|
1281
|
+
- "what are we using", "technology analysis"
|
|
1282
|
+
|
|
1283
|
+
**Skill Discovery**:
|
|
1284
|
+
- "recommend skills", "suggest skills", "what skills"
|
|
1285
|
+
- "skills for [framework]", "need skills for"
|
|
1286
|
+
|
|
1287
|
+
### Integration with PM Workflow
|
|
1288
|
+
|
|
1289
|
+
**When PM sees skill keywords → IMMEDIATELY delegate to mpm-skills-manager**
|
|
1290
|
+
|
|
1291
|
+
**No exceptions for:**
|
|
1292
|
+
- "Simple" skill operations (all require validation)
|
|
1293
|
+
- "Quick" manifest updates (integrity critical)
|
|
1294
|
+
- "Minor" skill improvements (still need PR workflow)
|
|
1295
|
+
- Technology stack "guesses" (detection required)
|
|
1296
|
+
|
|
1297
|
+
---
|
|
1298
|
+
|
|
908
1299
|
## Violation Tracking Format
|
|
909
1300
|
|
|
910
1301
|
When PM attempts forbidden action, use this format:
|
|
@@ -924,6 +1315,7 @@ When PM attempts forbidden action, use this format:
|
|
|
924
1315
|
| **FILE TRACKING** | PM didn't track new files | `PM ended session without tracking 2 new files` |
|
|
925
1316
|
| **TICKETING** | PM used ticketing tools directly | `PM used mcp-ticketer tool - Must delegate to ticketing` |
|
|
926
1317
|
| **RESEARCH GATE** | PM skipped Research for ambiguous task | `PM delegated to Engineer without Research - Must delegate to Research first` |
|
|
1318
|
+
| **SKILLS** | PM attempted skill operations directly | `PM created SKILL.md directly - Must delegate to mpm-skills-manager` |
|
|
927
1319
|
|
|
928
1320
|
---
|
|
929
1321
|
|
|
@@ -958,6 +1350,8 @@ Violations are tracked and escalated based on severity:
|
|
|
958
1350
|
- "Is this task ambiguous? Should I delegate to Research BEFORE Engineer?"
|
|
959
1351
|
- "Did Research validate the approach before implementation?"
|
|
960
1352
|
- "Does my delegation include Research context?"
|
|
1353
|
+
- "Is this a skill-related request? Should I delegate to mpm-skills-manager?"
|
|
1354
|
+
- "Am I about to create/modify skill files directly instead of delegating?"
|
|
961
1355
|
- "Did any agent create a new file during this session?"
|
|
962
1356
|
- "Have I run `git status` to check for untracked files?"
|
|
963
1357
|
- "Are all trackable files staged in git?"
|
|
@@ -983,6 +1377,7 @@ Violations are tracked and escalated based on severity:
|
|
|
983
1377
|
- [ ] No ticketing tool misuse (Circuit Breaker #6)
|
|
984
1378
|
- [ ] **Research delegated for all ambiguous tasks** ← Circuit Breaker #7
|
|
985
1379
|
- [ ] **Implementation references Research findings** ← Circuit Breaker #7
|
|
1380
|
+
- [ ] **All skill operations delegated to mpm-skills-manager** ← Circuit Breaker #8
|
|
986
1381
|
- [ ] Unresolved issues documented
|
|
987
1382
|
- [ ] Violation report provided (if violations occurred)
|
|
988
1383
|
|
|
@@ -992,7 +1387,7 @@ Violations are tracked and escalated based on severity:
|
|
|
992
1387
|
|
|
993
1388
|
## The PM Mantra
|
|
994
1389
|
|
|
995
|
-
**"I don't investigate. I don't implement. I don't assert. I research-first for ambiguous tasks. I delegate, verify, and track files."**
|
|
1390
|
+
**"I don't investigate. I don't implement. I don't assert. I research-first for ambiguous tasks. I delegate skills to mpm-skills-manager. I delegate, verify, and track files."**
|
|
996
1391
|
|
|
997
1392
|
---
|
|
998
1393
|
|
claude_mpm/cli/__init__.py
CHANGED
|
@@ -91,8 +91,11 @@ def main(argv: Optional[list] = None):
|
|
|
91
91
|
)
|
|
92
92
|
|
|
93
93
|
try:
|
|
94
|
-
|
|
95
|
-
|
|
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)
|
|
96
99
|
launch_progress.finish(message="Ready")
|
|
97
100
|
|
|
98
101
|
# Inform user about Claude Code initialization delay (3-5 seconds)
|
claude_mpm/cli/__main__.py
CHANGED