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
|
@@ -6,13 +6,18 @@ local agents with user-friendly prompts, intelligent defaults, and validation.
|
|
|
6
6
|
|
|
7
7
|
import json
|
|
8
8
|
import re
|
|
9
|
+
import shutil
|
|
9
10
|
import sys
|
|
10
11
|
from pathlib import Path
|
|
11
12
|
from typing import Any, Dict, List, Optional, Tuple
|
|
12
13
|
|
|
13
14
|
import questionary
|
|
14
|
-
from questionary import Style
|
|
15
15
|
|
|
16
|
+
from claude_mpm.cli.interactive.questionary_styles import (
|
|
17
|
+
BANNER_WIDTH,
|
|
18
|
+
MPM_STYLE,
|
|
19
|
+
print_section_header,
|
|
20
|
+
)
|
|
16
21
|
from claude_mpm.core.logging_config import get_logger
|
|
17
22
|
from claude_mpm.services.agents.local_template_manager import (
|
|
18
23
|
LocalAgentTemplate,
|
|
@@ -22,16 +27,6 @@ from claude_mpm.utils.agent_filters import apply_all_filters
|
|
|
22
27
|
|
|
23
28
|
logger = get_logger(__name__)
|
|
24
29
|
|
|
25
|
-
# Questionary style matching Rich cyan theme (consistent with configure.py)
|
|
26
|
-
QUESTIONARY_STYLE = Style(
|
|
27
|
-
[
|
|
28
|
-
("selected", "fg:cyan bold"),
|
|
29
|
-
("pointer", "fg:cyan bold"),
|
|
30
|
-
("highlighted", "fg:cyan"),
|
|
31
|
-
("question", "fg:cyan bold"),
|
|
32
|
-
]
|
|
33
|
-
)
|
|
34
|
-
|
|
35
30
|
|
|
36
31
|
class AgentWizard:
|
|
37
32
|
"""
|
|
@@ -61,6 +56,50 @@ class AgentWizard:
|
|
|
61
56
|
self.source_manager = None
|
|
62
57
|
self.discovery_enabled = False
|
|
63
58
|
|
|
59
|
+
@staticmethod
|
|
60
|
+
def _calculate_column_widths(
|
|
61
|
+
terminal_width: int, columns: Dict[str, int]
|
|
62
|
+
) -> Dict[str, int]:
|
|
63
|
+
"""Calculate dynamic column widths based on terminal size.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
terminal_width: Current terminal width in characters
|
|
67
|
+
columns: Dict mapping column names to minimum widths
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
Dict mapping column names to calculated widths
|
|
71
|
+
|
|
72
|
+
Design:
|
|
73
|
+
- Ensures minimum widths are respected
|
|
74
|
+
- Distributes extra space proportionally
|
|
75
|
+
- Handles narrow terminals gracefully (minimum 80 chars)
|
|
76
|
+
"""
|
|
77
|
+
# Ensure minimum terminal width
|
|
78
|
+
min_terminal_width = 80
|
|
79
|
+
terminal_width = max(terminal_width, min_terminal_width)
|
|
80
|
+
|
|
81
|
+
# Calculate total minimum width needed
|
|
82
|
+
total_min_width = sum(columns.values())
|
|
83
|
+
|
|
84
|
+
# Account for spacing between columns
|
|
85
|
+
overhead = len(columns) + 1
|
|
86
|
+
available_width = terminal_width - overhead
|
|
87
|
+
|
|
88
|
+
# If we have extra space, distribute proportionally
|
|
89
|
+
if available_width > total_min_width:
|
|
90
|
+
extra_space = available_width - total_min_width
|
|
91
|
+
total_weight = sum(columns.values())
|
|
92
|
+
|
|
93
|
+
result = {}
|
|
94
|
+
for col_name, min_width in columns.items():
|
|
95
|
+
# Distribute extra space based on minimum width proportion
|
|
96
|
+
proportion = min_width / total_weight
|
|
97
|
+
extra = int(extra_space * proportion)
|
|
98
|
+
result[col_name] = min_width + extra
|
|
99
|
+
return result
|
|
100
|
+
# Terminal too narrow, use minimum widths
|
|
101
|
+
return columns.copy()
|
|
102
|
+
|
|
64
103
|
def run_interactive_create(self) -> Tuple[bool, str]:
|
|
65
104
|
"""Run interactive agent creation wizard.
|
|
66
105
|
|
|
@@ -68,9 +107,7 @@ class AgentWizard:
|
|
|
68
107
|
Tuple of (success, message)
|
|
69
108
|
"""
|
|
70
109
|
try:
|
|
71
|
-
|
|
72
|
-
print("🧙♂️ Agent Creation Wizard")
|
|
73
|
-
print("=" * 60)
|
|
110
|
+
print_section_header("🧙♂️", "Agent Creation Wizard", width=BANNER_WIDTH)
|
|
74
111
|
print("\nI'll guide you through creating a custom local agent.")
|
|
75
112
|
print("Press Ctrl+C anytime to cancel.\n")
|
|
76
113
|
|
|
@@ -236,9 +273,7 @@ class AgentWizard:
|
|
|
236
273
|
# Get merged agents from all sources
|
|
237
274
|
all_agents = self._merge_agent_sources()
|
|
238
275
|
|
|
239
|
-
|
|
240
|
-
print("🔧 Agent Management Menu")
|
|
241
|
-
print("=" * 60)
|
|
276
|
+
print_section_header("🔧", "Agent Management Menu", width=BANNER_WIDTH)
|
|
242
277
|
|
|
243
278
|
if not all_agents:
|
|
244
279
|
print(
|
|
@@ -259,25 +294,55 @@ class AgentWizard:
|
|
|
259
294
|
print("❌ Invalid choice. Please try again.")
|
|
260
295
|
continue
|
|
261
296
|
|
|
262
|
-
# Show existing agents in a table
|
|
297
|
+
# Show existing agents in a table with dynamic widths
|
|
263
298
|
print(f"\n📋 Found {len(all_agents)} agent(s):\n")
|
|
299
|
+
|
|
300
|
+
# Calculate dynamic column widths based on terminal size
|
|
301
|
+
terminal_width = shutil.get_terminal_size().columns
|
|
302
|
+
min_widths = {
|
|
303
|
+
"#": 4,
|
|
304
|
+
"Agent ID": 30,
|
|
305
|
+
"Name": 20,
|
|
306
|
+
"Source": 15,
|
|
307
|
+
"Status": 10,
|
|
308
|
+
}
|
|
309
|
+
widths = self._calculate_column_widths(terminal_width, min_widths)
|
|
310
|
+
|
|
311
|
+
# Print header with dynamic widths
|
|
264
312
|
print(
|
|
265
|
-
f"{'#':<
|
|
313
|
+
f"{'#':<{widths['#']}} "
|
|
314
|
+
f"{'Agent ID':<{widths['Agent ID']}} "
|
|
315
|
+
f"{'Name':<{widths['Name']}} "
|
|
316
|
+
f"{'Source':<{widths['Source']}} "
|
|
317
|
+
f"{'Status':<{widths['Status']}}"
|
|
266
318
|
)
|
|
267
|
-
|
|
319
|
+
separator_width = sum(widths.values()) + len(widths) - 1
|
|
320
|
+
print("-" * separator_width)
|
|
268
321
|
|
|
269
322
|
for i, agent in enumerate(all_agents, 1):
|
|
270
323
|
agent_id = agent["agent_id"]
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
324
|
+
# Truncate to fit dynamic width
|
|
325
|
+
if len(agent_id) > widths["Agent ID"]:
|
|
326
|
+
agent_id = agent_id[: widths["Agent ID"] - 1] + "…"
|
|
327
|
+
|
|
328
|
+
name = agent["name"]
|
|
329
|
+
if len(name) > widths["Name"]:
|
|
330
|
+
name = name[: widths["Name"] - 1] + "…"
|
|
331
|
+
|
|
274
332
|
source_label = (
|
|
275
|
-
f"[{agent['source_type']}] {agent['source_identifier']}"
|
|
333
|
+
f"[{agent['source_type']}] {agent['source_identifier']}"
|
|
276
334
|
)
|
|
335
|
+
if len(source_label) > widths["Source"]:
|
|
336
|
+
source_label = source_label[: widths["Source"] - 1] + "…"
|
|
337
|
+
|
|
277
338
|
status = "✓ Deployed" if agent["deployed"] else "Available"
|
|
278
339
|
|
|
279
340
|
print(
|
|
280
|
-
f"{i:<
|
|
341
|
+
f"{i:<{widths['#']}} "
|
|
342
|
+
f"{agent_id:<{widths['Agent ID']}} "
|
|
343
|
+
f"{name:<{widths['Name']}} "
|
|
344
|
+
f"{source_label:<{widths['Source']}} "
|
|
345
|
+
f"{status:<{widths['Status']}}"
|
|
281
346
|
)
|
|
282
347
|
|
|
283
348
|
# Build menu choices with arrow-key navigation
|
|
@@ -309,7 +374,7 @@ class AgentWizard:
|
|
|
309
374
|
choice = questionary.select(
|
|
310
375
|
"Agent Management Menu:",
|
|
311
376
|
choices=menu_choices,
|
|
312
|
-
style=
|
|
377
|
+
style=MPM_STYLE,
|
|
313
378
|
).ask()
|
|
314
379
|
|
|
315
380
|
if not choice: # User pressed Esc
|
|
@@ -701,9 +766,7 @@ class AgentWizard:
|
|
|
701
766
|
|
|
702
767
|
def _confirm_creation(self, config: Dict[str, Any]) -> bool:
|
|
703
768
|
"""Show preview and get confirmation from user."""
|
|
704
|
-
|
|
705
|
-
print("📋 Agent Configuration Preview")
|
|
706
|
-
print("=" * 60)
|
|
769
|
+
print_section_header("📋", "Agent Configuration Preview", width=BANNER_WIDTH)
|
|
707
770
|
|
|
708
771
|
print(f"Agent ID: {config['agent_id']}")
|
|
709
772
|
print(f"Name: {config['name']}")
|
|
@@ -720,7 +783,8 @@ class AgentWizard:
|
|
|
720
783
|
print("\nInstructions Preview:")
|
|
721
784
|
print(f" {config['instructions_preview']}")
|
|
722
785
|
|
|
723
|
-
print(
|
|
786
|
+
print()
|
|
787
|
+
print("=" * BANNER_WIDTH)
|
|
724
788
|
|
|
725
789
|
while True:
|
|
726
790
|
confirm = input("\nCreate this agent? [Y/n]: ").strip().lower()
|
|
@@ -971,8 +1035,7 @@ class AgentWizard:
|
|
|
971
1035
|
|
|
972
1036
|
def _interactive_delete_menu(self, templates: list) -> Tuple[bool, str]:
|
|
973
1037
|
"""Interactive deletion menu for multiple agents."""
|
|
974
|
-
|
|
975
|
-
print("=" * 50)
|
|
1038
|
+
print_section_header("🗑️", "Delete Agents", width=BANNER_WIDTH)
|
|
976
1039
|
|
|
977
1040
|
if not templates:
|
|
978
1041
|
return False, "No agents available to delete"
|
|
@@ -1079,9 +1142,9 @@ class AgentWizard:
|
|
|
1079
1142
|
Args:
|
|
1080
1143
|
agent: Agent metadata dictionary
|
|
1081
1144
|
"""
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1145
|
+
print_section_header(
|
|
1146
|
+
"📄", f"Agent Details: {agent['agent_id']}", width=BANNER_WIDTH
|
|
1147
|
+
)
|
|
1085
1148
|
print(f"Name: {agent['name']}")
|
|
1086
1149
|
print(f"Category: {agent['category'] or 'N/A'}")
|
|
1087
1150
|
print(f"Source: [{agent['source_type']}] {agent['source_identifier']}")
|
|
@@ -1113,9 +1176,7 @@ class AgentWizard:
|
|
|
1113
1176
|
input("\nPress Enter to continue...")
|
|
1114
1177
|
return
|
|
1115
1178
|
|
|
1116
|
-
|
|
1117
|
-
print("📦 Deploy Agent")
|
|
1118
|
-
print("=" * 60)
|
|
1179
|
+
print_section_header("📦", "Deploy Agent", width=BANNER_WIDTH)
|
|
1119
1180
|
print(f"\n{len(deployable)} agent(s) available to deploy:\n")
|
|
1120
1181
|
|
|
1121
1182
|
# Build agent selection choices with arrow-key navigation
|
|
@@ -1125,7 +1186,7 @@ class AgentWizard:
|
|
|
1125
1186
|
]
|
|
1126
1187
|
|
|
1127
1188
|
choice = questionary.select(
|
|
1128
|
-
"Select agent to deploy:", choices=agent_choices, style=
|
|
1189
|
+
"Select agent to deploy:", choices=agent_choices, style=MPM_STYLE
|
|
1129
1190
|
).ask()
|
|
1130
1191
|
|
|
1131
1192
|
if not choice: # User pressed Esc
|
|
@@ -1221,9 +1282,7 @@ class AgentWizard:
|
|
|
1221
1282
|
return
|
|
1222
1283
|
|
|
1223
1284
|
while True:
|
|
1224
|
-
|
|
1225
|
-
print("🔍 Browse & Filter Agents")
|
|
1226
|
-
print("=" * 60)
|
|
1285
|
+
print_section_header("🔍", "Browse & Filter Agents", width=BANNER_WIDTH)
|
|
1227
1286
|
|
|
1228
1287
|
# Show filter menu with arrow-key navigation
|
|
1229
1288
|
print("\n[bold]Filter by:[/bold]")
|
|
@@ -1239,7 +1298,7 @@ class AgentWizard:
|
|
|
1239
1298
|
choice = questionary.select(
|
|
1240
1299
|
"Browse & Filter Agents:",
|
|
1241
1300
|
choices=filter_choices,
|
|
1242
|
-
style=
|
|
1301
|
+
style=MPM_STYLE,
|
|
1243
1302
|
).ask()
|
|
1244
1303
|
|
|
1245
1304
|
if not choice or "Back" in choice:
|
|
@@ -1268,7 +1327,7 @@ class AgentWizard:
|
|
|
1268
1327
|
cat_choices = [f"{idx}. {cat}" for idx, cat in enumerate(categories, 1)]
|
|
1269
1328
|
|
|
1270
1329
|
cat_choice = questionary.select(
|
|
1271
|
-
"Select category:", choices=cat_choices, style=
|
|
1330
|
+
"Select category:", choices=cat_choices, style=MPM_STYLE
|
|
1272
1331
|
).ask()
|
|
1273
1332
|
|
|
1274
1333
|
if not cat_choice: # User pressed Esc
|
|
@@ -1299,7 +1358,7 @@ class AgentWizard:
|
|
|
1299
1358
|
Path.home()
|
|
1300
1359
|
/ ".claude-mpm"
|
|
1301
1360
|
/ "cache"
|
|
1302
|
-
/ "
|
|
1361
|
+
/ "agents"
|
|
1303
1362
|
/ "bobmatnyc"
|
|
1304
1363
|
/ "claude-mpm-agents"
|
|
1305
1364
|
/ "AUTO-DEPLOY-INDEX.md"
|
|
@@ -1344,7 +1403,7 @@ class AgentWizard:
|
|
|
1344
1403
|
Path.home()
|
|
1345
1404
|
/ ".claude-mpm"
|
|
1346
1405
|
/ "cache"
|
|
1347
|
-
/ "
|
|
1406
|
+
/ "agents"
|
|
1348
1407
|
/ "bobmatnyc"
|
|
1349
1408
|
/ "claude-mpm-agents"
|
|
1350
1409
|
/ "AUTO-DEPLOY-INDEX.md"
|
|
@@ -1382,9 +1441,11 @@ class AgentWizard:
|
|
|
1382
1441
|
continue
|
|
1383
1442
|
|
|
1384
1443
|
# Display filtered results
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1444
|
+
print_section_header(
|
|
1445
|
+
"📋",
|
|
1446
|
+
f"{filter_description} ({len(filtered_agents)} agents)",
|
|
1447
|
+
width=BANNER_WIDTH,
|
|
1448
|
+
)
|
|
1388
1449
|
|
|
1389
1450
|
if not filtered_agents:
|
|
1390
1451
|
print("\n[yellow]No agents found matching filter[/yellow]")
|
|
@@ -1448,7 +1509,7 @@ class AgentWizard:
|
|
|
1448
1509
|
]
|
|
1449
1510
|
|
|
1450
1511
|
agent_choice = questionary.select(
|
|
1451
|
-
"Select agent to deploy:", choices=agent_choices, style=
|
|
1512
|
+
"Select agent to deploy:", choices=agent_choices, style=MPM_STYLE
|
|
1452
1513
|
).ask()
|
|
1453
1514
|
|
|
1454
1515
|
if not agent_choice: # User pressed Esc
|
|
@@ -1554,7 +1615,7 @@ class AgentWizard:
|
|
|
1554
1615
|
]
|
|
1555
1616
|
|
|
1556
1617
|
agent_choice = questionary.select(
|
|
1557
|
-
"Select agent to view:", choices=agent_choices, style=
|
|
1618
|
+
"Select agent to view:", choices=agent_choices, style=MPM_STYLE
|
|
1558
1619
|
).ask()
|
|
1559
1620
|
|
|
1560
1621
|
if not agent_choice: # User pressed Esc
|
|
@@ -1577,9 +1638,7 @@ class AgentWizard:
|
|
|
1577
1638
|
preset_service = AgentPresetService(self.source_manager)
|
|
1578
1639
|
|
|
1579
1640
|
while True:
|
|
1580
|
-
|
|
1581
|
-
print("📦 Deploy Agent Preset")
|
|
1582
|
-
print("=" * 60)
|
|
1641
|
+
print_section_header("📦", "Deploy Agent Preset", width=BANNER_WIDTH)
|
|
1583
1642
|
|
|
1584
1643
|
# List available presets
|
|
1585
1644
|
presets = preset_service.list_presets()
|
|
@@ -1615,9 +1674,7 @@ class AgentWizard:
|
|
|
1615
1674
|
preset_name = presets[idx]["name"]
|
|
1616
1675
|
|
|
1617
1676
|
# Show preset details
|
|
1618
|
-
|
|
1619
|
-
print(f"📦 Preset: {preset_name}")
|
|
1620
|
-
print("=" * 60)
|
|
1677
|
+
print_section_header("📦", f"Preset: {preset_name}", width=BANNER_WIDTH)
|
|
1621
1678
|
print(f"\n[bold]Description:[/bold] {presets[idx]['description']}\n")
|
|
1622
1679
|
|
|
1623
1680
|
# Resolve preset
|
|
@@ -1797,9 +1854,7 @@ class AgentWizard:
|
|
|
1797
1854
|
input("\nPress Enter to continue...")
|
|
1798
1855
|
return
|
|
1799
1856
|
|
|
1800
|
-
|
|
1801
|
-
print("🔗 Manage Agent Sources")
|
|
1802
|
-
print("=" * 60)
|
|
1857
|
+
print_section_header("🔗", "Manage Agent Sources", width=BANNER_WIDTH)
|
|
1803
1858
|
|
|
1804
1859
|
try:
|
|
1805
1860
|
from claude_mpm.config.agent_sources import AgentSourceConfiguration
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Shared questionary styles for consistent TUI across Claude MPM.
|
|
2
|
+
|
|
3
|
+
This module provides unified styling for all interactive questionary interfaces
|
|
4
|
+
to ensure visual consistency across agent wizard, skill selector, and other TUI components.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from questionary import Style
|
|
8
|
+
|
|
9
|
+
# Standard cyan-themed style for all selectors
|
|
10
|
+
# Matches the pattern used in agent_wizard.py and skill_selector.py
|
|
11
|
+
MPM_STYLE = Style(
|
|
12
|
+
[
|
|
13
|
+
("qmark", "fg:cyan bold"),
|
|
14
|
+
("question", "bold"),
|
|
15
|
+
("answer", "fg:cyan"),
|
|
16
|
+
("pointer", "fg:cyan bold"),
|
|
17
|
+
("highlighted", "fg:cyan bold"),
|
|
18
|
+
("selected", "fg:cyan"),
|
|
19
|
+
]
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
# Banner constants for consistent formatting
|
|
23
|
+
BANNER_WIDTH = 60
|
|
24
|
+
BANNER_CHAR = "="
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def print_banner(title: str, width: int = BANNER_WIDTH) -> None:
|
|
28
|
+
"""Print a styled banner matching agent selector format.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
title: Title text to display in the banner
|
|
32
|
+
width: Total width of the banner in characters (default: 60)
|
|
33
|
+
|
|
34
|
+
Example:
|
|
35
|
+
>>> print_banner("Agent Creation Wizard")
|
|
36
|
+
============================================================
|
|
37
|
+
Agent Creation Wizard
|
|
38
|
+
============================================================
|
|
39
|
+
"""
|
|
40
|
+
print()
|
|
41
|
+
print(BANNER_CHAR * width)
|
|
42
|
+
print(f"{title:^{width}}")
|
|
43
|
+
print(BANNER_CHAR * width)
|
|
44
|
+
print()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def print_section_header(emoji: str, title: str, width: int = BANNER_WIDTH) -> None:
|
|
48
|
+
"""Print a section header with emoji and title.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
emoji: Emoji to display before the title
|
|
52
|
+
title: Section title text
|
|
53
|
+
width: Total width of the header line (default: 60)
|
|
54
|
+
|
|
55
|
+
Example:
|
|
56
|
+
>>> print_section_header("🔧", "Agent Management Menu")
|
|
57
|
+
|
|
58
|
+
============================================================
|
|
59
|
+
🔧 Agent Management Menu
|
|
60
|
+
============================================================
|
|
61
|
+
"""
|
|
62
|
+
print()
|
|
63
|
+
print(BANNER_CHAR * width)
|
|
64
|
+
print(f"{emoji} {title}")
|
|
65
|
+
print(BANNER_CHAR * width)
|