claude-mpm 4.21.3__py3-none-any.whl → 5.1.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_PM.md +12 -0
- claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +3 -48
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
- claude_mpm/agents/PM_INSTRUCTIONS.md +1239 -674
- claude_mpm/agents/WORKFLOW.md +75 -2
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/frontmatter_validator.py +69 -1
- claude_mpm/agents/templates/circuit-breakers.md +1254 -0
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +37 -2
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +188 -30
- claude_mpm/cli/commands/agents.py +1128 -36
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/auto_configure.py +537 -239
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +935 -45
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mpm_init/core.py +50 -2
- claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
- claude_mpm/cli/commands/mpm_init/prompts.py +6 -6
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +125 -167
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +757 -20
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +1032 -47
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +310 -4
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
- claude_mpm/cli/parsers/base_parser.py +53 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +145 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +564 -108
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +14 -2
- claude_mpm/commands/mpm-init.md +27 -2
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +10 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +13 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +19 -35
- claude_mpm/core/config.py +24 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/framework/processors/metadata_processor.py +1 -1
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +131 -10
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +110 -8
- claude_mpm/core/output_style_manager.py +173 -43
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/unified_agent_registry.py +129 -1
- claude_mpm/core/unified_config.py +22 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
- claude_mpm/hooks/claude_hooks/installer.py +45 -0
- claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/models/agent_definition.py +7 -0
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +225 -18
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +557 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
- claude_mpm/services/agents/local_template_manager.py +50 -10
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/cli/session_pause_manager.py +1 -1
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +7 -2
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/event_bus/event_bus.py +36 -3
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +3 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/local_ops/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/memory/optimizer.py +1 -1
- claude_mpm/services/model/model_router.py +8 -9
- claude_mpm/services/monitor/daemon.py +29 -9
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/port_manager.py +1 -1
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +17 -3
- claude_mpm/services/self_upgrade_service.py +165 -7
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +2 -2
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/system_instructions_service.py +1 -3
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/performance-profiling.md +6 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
- claude_mpm/skills/skills_registry.py +0 -1
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/tools/code_tree_analyzer/analysis.py +1 -1
- claude_mpm/utils/agent_dependency_loader.py +80 -13
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +244 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/METADATA +496 -65
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/RECORD +284 -443
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -180
- claude_mpm/agents/templates/circuit_breakers.md +0 -638
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -211
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -287
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -140
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -242
- claude_mpm/agents/templates/react_engineer.json +0 -238
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -188
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/ticketing.json +0 -177
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -157
- claude_mpm/agents/templates/web_qa.json +0 -399
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/commands/mpm-tickets.md +0 -102
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
- claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
- claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
- claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
- claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
- claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
- claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
- claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/built/react/events.js +0 -30
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
- claude_mpm/dashboard/static/built/shared/logger.js +0 -385
- claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/react/events.js +0 -30
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/js/shared/logger.js +0 -385
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/legacy/activity.html +0 -736
- claude_mpm/dashboard/static/legacy/agents.html +0 -786
- claude_mpm/dashboard/static/legacy/files.html +0 -747
- claude_mpm/dashboard/static/legacy/tools.html +0 -831
- claude_mpm/dashboard/static/monitors.html +0 -431
- claude_mpm/dashboard/static/production/events.html +0 -659
- claude_mpm/dashboard/static/production/main.html +0 -698
- claude_mpm/dashboard/static/production/monitors.html +0 -483
- claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
- claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
- claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
- claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
- /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
- /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
- /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
- /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/WHEEL +0 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"""Protocol definitions for session management dependencies.
|
|
2
|
+
|
|
3
|
+
These protocols use Python's typing.Protocol for structural subtyping,
|
|
4
|
+
allowing dependency injection without circular imports.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import Any, Dict, Optional, Protocol, Tuple
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class InteractiveSessionProtocol(Protocol):
|
|
11
|
+
"""Protocol for interactive session orchestration.
|
|
12
|
+
|
|
13
|
+
This protocol defines the interface that SessionManagementService
|
|
14
|
+
needs from InteractiveSession without requiring a full import.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
def initialize_interactive_session(self) -> Tuple[bool, Optional[str]]:
|
|
18
|
+
"""Initialize the interactive session environment.
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
Tuple of (success, error_message)
|
|
22
|
+
"""
|
|
23
|
+
...
|
|
24
|
+
|
|
25
|
+
def setup_interactive_environment(self) -> Tuple[bool, Dict[str, Any]]:
|
|
26
|
+
"""Set up the interactive environment including agents and commands.
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
Tuple of (success, environment_dict)
|
|
30
|
+
"""
|
|
31
|
+
...
|
|
32
|
+
|
|
33
|
+
def handle_interactive_input(self, environment: Dict[str, Any]) -> bool:
|
|
34
|
+
"""Handle the interactive input/output loop.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
environment: Dictionary with command, env vars, and session info
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
True if successful, False otherwise
|
|
41
|
+
"""
|
|
42
|
+
...
|
|
43
|
+
|
|
44
|
+
def cleanup_interactive_session(self) -> None:
|
|
45
|
+
"""Clean up resources after interactive session ends."""
|
|
46
|
+
...
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class OneshotSessionProtocol(Protocol):
|
|
50
|
+
"""Protocol for oneshot session orchestration.
|
|
51
|
+
|
|
52
|
+
This protocol defines the interface that SessionManagementService
|
|
53
|
+
needs from OneshotSession without requiring a full import.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
def initialize_session(self, prompt: str) -> Tuple[bool, Optional[str]]:
|
|
57
|
+
"""Initialize the oneshot session.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
prompt: The command or prompt to execute
|
|
61
|
+
|
|
62
|
+
Returns:
|
|
63
|
+
Tuple of (success, error_message)
|
|
64
|
+
"""
|
|
65
|
+
...
|
|
66
|
+
|
|
67
|
+
def deploy_agents(self) -> bool:
|
|
68
|
+
"""Deploy agents for the session.
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
True if successful, False otherwise
|
|
72
|
+
"""
|
|
73
|
+
...
|
|
74
|
+
|
|
75
|
+
def setup_infrastructure(self) -> Dict[str, Any]:
|
|
76
|
+
"""Set up session infrastructure.
|
|
77
|
+
|
|
78
|
+
Returns:
|
|
79
|
+
Dictionary with infrastructure configuration
|
|
80
|
+
"""
|
|
81
|
+
...
|
|
82
|
+
|
|
83
|
+
def execute_command(
|
|
84
|
+
self, prompt: str, context: Optional[str], infrastructure: Dict[str, Any]
|
|
85
|
+
) -> Tuple[bool, Optional[str]]:
|
|
86
|
+
"""Execute the command with given context and infrastructure.
|
|
87
|
+
|
|
88
|
+
Args:
|
|
89
|
+
prompt: Command to execute
|
|
90
|
+
context: Optional context
|
|
91
|
+
infrastructure: Infrastructure configuration
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
Tuple of (success, response)
|
|
95
|
+
"""
|
|
96
|
+
...
|
|
97
|
+
|
|
98
|
+
def cleanup_session(self) -> None:
|
|
99
|
+
"""Clean up session resources."""
|
|
100
|
+
...
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class SessionManagementProtocol(Protocol):
|
|
104
|
+
"""Protocol for session management service.
|
|
105
|
+
|
|
106
|
+
This protocol defines the interface that ClaudeRunner needs from
|
|
107
|
+
SessionManagementService without requiring a full import.
|
|
108
|
+
"""
|
|
109
|
+
|
|
110
|
+
def run_interactive_session(self, initial_context: Optional[str] = None) -> bool:
|
|
111
|
+
"""Run Claude in interactive mode.
|
|
112
|
+
|
|
113
|
+
Args:
|
|
114
|
+
initial_context: Optional initial context to pass to Claude
|
|
115
|
+
|
|
116
|
+
Returns:
|
|
117
|
+
True if successful, False otherwise
|
|
118
|
+
"""
|
|
119
|
+
...
|
|
120
|
+
|
|
121
|
+
def run_oneshot_session(self, prompt: str, context: Optional[str] = None) -> bool:
|
|
122
|
+
"""Run Claude with a single prompt.
|
|
123
|
+
|
|
124
|
+
Args:
|
|
125
|
+
prompt: The command or prompt to execute
|
|
126
|
+
context: Optional context to prepend to the prompt
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
True if successful, False otherwise
|
|
130
|
+
"""
|
|
131
|
+
...
|
|
@@ -16,11 +16,14 @@ class SingletonManager:
|
|
|
16
16
|
|
|
17
17
|
Reduces duplication by providing thread-safe singleton patterns
|
|
18
18
|
that can be used across different classes.
|
|
19
|
+
|
|
20
|
+
Uses RLock (reentrant locks) to support recursive calls from
|
|
21
|
+
SingletonMixin.__new__ and @singleton decorator patterns.
|
|
19
22
|
"""
|
|
20
23
|
|
|
21
24
|
_instances: Dict[Type, Any] = {}
|
|
22
|
-
_locks: Dict[Type, threading.
|
|
23
|
-
_global_lock = threading.
|
|
25
|
+
_locks: Dict[Type, threading.RLock] = {}
|
|
26
|
+
_global_lock = threading.RLock()
|
|
24
27
|
|
|
25
28
|
@classmethod
|
|
26
29
|
def get_instance(
|
|
@@ -42,7 +45,7 @@ class SingletonManager:
|
|
|
42
45
|
if singleton_class not in cls._locks:
|
|
43
46
|
with cls._global_lock:
|
|
44
47
|
if singleton_class not in cls._locks:
|
|
45
|
-
cls._locks[singleton_class] = threading.
|
|
48
|
+
cls._locks[singleton_class] = threading.RLock()
|
|
46
49
|
|
|
47
50
|
# Get instance with class-specific lock
|
|
48
51
|
with cls._locks[singleton_class]:
|
|
@@ -50,9 +53,13 @@ class SingletonManager:
|
|
|
50
53
|
logger = get_logger("singleton_manager")
|
|
51
54
|
logger.debug(f"Creating singleton instance: {singleton_class.__name__}")
|
|
52
55
|
|
|
53
|
-
|
|
56
|
+
# Use object.__new__ to bypass SingletonMixin.__new__ and avoid recursion
|
|
57
|
+
instance = object.__new__(singleton_class)
|
|
54
58
|
cls._instances[singleton_class] = instance
|
|
55
59
|
|
|
60
|
+
# Now call __init__ explicitly with the stored instance
|
|
61
|
+
instance.__init__(*args, **kwargs)
|
|
62
|
+
|
|
56
63
|
return instance
|
|
57
64
|
|
|
58
65
|
return cls._instances[singleton_class]
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""System context utilities for Claude runner.
|
|
2
|
+
|
|
3
|
+
This module provides shared context creation functions that can be used
|
|
4
|
+
across different modules without circular dependencies.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def create_simple_context() -> str:
|
|
9
|
+
"""Create basic context for Claude.
|
|
10
|
+
|
|
11
|
+
This function is extracted to avoid circular imports between
|
|
12
|
+
claude_runner.py and interactive_session.py.
|
|
13
|
+
|
|
14
|
+
Returns:
|
|
15
|
+
Basic system context string for Claude
|
|
16
|
+
"""
|
|
17
|
+
return """You are Claude Code running in Claude MPM (Multi-Agent Project Manager).
|
|
18
|
+
|
|
19
|
+
You have access to native subagents via the Task tool with subagent_type parameter:
|
|
20
|
+
- engineer: For coding, implementation, and technical tasks
|
|
21
|
+
- qa: For testing, validation, and quality assurance
|
|
22
|
+
- documentation: For docs, guides, and explanations
|
|
23
|
+
- research: For investigation and analysis
|
|
24
|
+
- security: For security-related tasks
|
|
25
|
+
- ops: For deployment and infrastructure
|
|
26
|
+
- version-control: For git and version management
|
|
27
|
+
- data-engineer: For data processing and APIs
|
|
28
|
+
|
|
29
|
+
Use these agents by calling: Task(description="task description", subagent_type="agent_name")
|
|
30
|
+
|
|
31
|
+
IMPORTANT: The Task tool accepts both naming formats:
|
|
32
|
+
- Capitalized format: "Research", "Engineer", "QA", "Version Control", "Data Engineer"
|
|
33
|
+
- Lowercase format: "research", "engineer", "qa", "version-control", "data-engineer"
|
|
34
|
+
|
|
35
|
+
Both formats work correctly. When you see capitalized names (matching TodoWrite prefixes),
|
|
36
|
+
automatically normalize them to lowercase-hyphenated format for the Task tool.
|
|
37
|
+
|
|
38
|
+
Work efficiently and delegate appropriately to subagents when needed."""
|
|
@@ -84,6 +84,12 @@ class AgentMetadata:
|
|
|
84
84
|
version: str = "1.0.0"
|
|
85
85
|
author: str = ""
|
|
86
86
|
tags: List[str] = None
|
|
87
|
+
# NEW: Collection-based identification fields
|
|
88
|
+
collection_id: Optional[str] = None # Format: owner/repo-name
|
|
89
|
+
source_path: Optional[str] = None # Relative path in repo
|
|
90
|
+
canonical_id: Optional[str] = (
|
|
91
|
+
None # Format: collection_id:agent_id or legacy:filename
|
|
92
|
+
)
|
|
87
93
|
|
|
88
94
|
def __post_init__(self):
|
|
89
95
|
"""Initialize default values for mutable fields."""
|
|
@@ -690,6 +696,111 @@ class UnifiedAgentRegistry:
|
|
|
690
696
|
"""Get all memory-aware agents."""
|
|
691
697
|
return self.list_agents(agent_type=AgentType.MEMORY_AWARE)
|
|
692
698
|
|
|
699
|
+
def get_agents_by_collection(self, collection_id: str) -> List[AgentMetadata]:
|
|
700
|
+
"""Get all agents from a specific collection.
|
|
701
|
+
|
|
702
|
+
NEW: Enables collection-based agent selection.
|
|
703
|
+
|
|
704
|
+
Args:
|
|
705
|
+
collection_id: Collection identifier (e.g., "bobmatnyc/claude-mpm-agents")
|
|
706
|
+
|
|
707
|
+
Returns:
|
|
708
|
+
List of agents from the specified collection
|
|
709
|
+
|
|
710
|
+
Example:
|
|
711
|
+
>>> registry = get_agent_registry()
|
|
712
|
+
>>> agents = registry.get_agents_by_collection("bobmatnyc/claude-mpm-agents")
|
|
713
|
+
>>> len(agents)
|
|
714
|
+
45
|
|
715
|
+
"""
|
|
716
|
+
if not self.registry:
|
|
717
|
+
self.discover_agents()
|
|
718
|
+
|
|
719
|
+
collection_agents = [
|
|
720
|
+
agent
|
|
721
|
+
for agent in self.registry.values()
|
|
722
|
+
if agent.collection_id == collection_id
|
|
723
|
+
]
|
|
724
|
+
|
|
725
|
+
return sorted(collection_agents, key=lambda a: a.name)
|
|
726
|
+
|
|
727
|
+
def list_collections(self) -> List[Dict[str, Any]]:
|
|
728
|
+
"""List all available collections with agent counts.
|
|
729
|
+
|
|
730
|
+
NEW: Provides overview of available collections.
|
|
731
|
+
|
|
732
|
+
Returns:
|
|
733
|
+
List of collection info dictionaries with:
|
|
734
|
+
- collection_id: Collection identifier
|
|
735
|
+
- agent_count: Number of agents in collection
|
|
736
|
+
- agents: List of agent names in collection
|
|
737
|
+
|
|
738
|
+
Example:
|
|
739
|
+
>>> registry = get_agent_registry()
|
|
740
|
+
>>> collections = registry.list_collections()
|
|
741
|
+
>>> collections
|
|
742
|
+
[
|
|
743
|
+
{
|
|
744
|
+
"collection_id": "bobmatnyc/claude-mpm-agents",
|
|
745
|
+
"agent_count": 45,
|
|
746
|
+
"agents": ["pm", "engineer", "qa", ...]
|
|
747
|
+
}
|
|
748
|
+
]
|
|
749
|
+
"""
|
|
750
|
+
if not self.registry:
|
|
751
|
+
self.discover_agents()
|
|
752
|
+
|
|
753
|
+
# Group agents by collection_id
|
|
754
|
+
collections_map: Dict[str, List[str]] = {}
|
|
755
|
+
|
|
756
|
+
for agent in self.registry.values():
|
|
757
|
+
if not agent.collection_id:
|
|
758
|
+
# Skip agents without collection (legacy or local)
|
|
759
|
+
continue
|
|
760
|
+
|
|
761
|
+
if agent.collection_id not in collections_map:
|
|
762
|
+
collections_map[agent.collection_id] = []
|
|
763
|
+
|
|
764
|
+
collections_map[agent.collection_id].append(agent.name)
|
|
765
|
+
|
|
766
|
+
# Convert to list format
|
|
767
|
+
collections = [
|
|
768
|
+
{
|
|
769
|
+
"collection_id": coll_id,
|
|
770
|
+
"agent_count": len(agent_names),
|
|
771
|
+
"agents": sorted(agent_names),
|
|
772
|
+
}
|
|
773
|
+
for coll_id, agent_names in collections_map.items()
|
|
774
|
+
]
|
|
775
|
+
|
|
776
|
+
return sorted(collections, key=lambda c: c["collection_id"])
|
|
777
|
+
|
|
778
|
+
def get_agent_by_canonical_id(self, canonical_id: str) -> Optional[AgentMetadata]:
|
|
779
|
+
"""Get agent by canonical ID (primary matching key).
|
|
780
|
+
|
|
781
|
+
NEW: Primary matching method using canonical_id.
|
|
782
|
+
|
|
783
|
+
Args:
|
|
784
|
+
canonical_id: Canonical identifier (e.g., "bobmatnyc/claude-mpm-agents:pm")
|
|
785
|
+
|
|
786
|
+
Returns:
|
|
787
|
+
AgentMetadata if found, None otherwise
|
|
788
|
+
|
|
789
|
+
Example:
|
|
790
|
+
>>> registry = get_agent_registry()
|
|
791
|
+
>>> agent = registry.get_agent_by_canonical_id("bobmatnyc/claude-mpm-agents:pm")
|
|
792
|
+
>>> agent.name
|
|
793
|
+
'Project Manager Agent'
|
|
794
|
+
"""
|
|
795
|
+
if not self.registry:
|
|
796
|
+
self.discover_agents()
|
|
797
|
+
|
|
798
|
+
for agent in self.registry.values():
|
|
799
|
+
if agent.canonical_id == canonical_id:
|
|
800
|
+
return agent
|
|
801
|
+
|
|
802
|
+
return None
|
|
803
|
+
|
|
693
804
|
def add_discovery_path(self, path: Union[str, Path]) -> None:
|
|
694
805
|
"""Add a new path for agent discovery."""
|
|
695
806
|
path = Path(path)
|
|
@@ -809,6 +920,21 @@ def get_registry_stats() -> Dict[str, Any]:
|
|
|
809
920
|
return get_agent_registry().get_registry_stats()
|
|
810
921
|
|
|
811
922
|
|
|
923
|
+
def get_agents_by_collection(collection_id: str) -> List[AgentMetadata]:
|
|
924
|
+
"""Get all agents from a specific collection."""
|
|
925
|
+
return get_agent_registry().get_agents_by_collection(collection_id)
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
def list_collections() -> List[Dict[str, Any]]:
|
|
929
|
+
"""List all available collections."""
|
|
930
|
+
return get_agent_registry().list_collections()
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
def get_agent_by_canonical_id(canonical_id: str) -> Optional[AgentMetadata]:
|
|
934
|
+
"""Get agent by canonical ID."""
|
|
935
|
+
return get_agent_registry().get_agent_by_canonical_id(canonical_id)
|
|
936
|
+
|
|
937
|
+
|
|
812
938
|
# Legacy function names for backward compatibility
|
|
813
939
|
def listAgents() -> List[str]:
|
|
814
940
|
"""Legacy function: Get list of agent names."""
|
|
@@ -838,14 +964,16 @@ __all__ = [
|
|
|
838
964
|
"discover_agents",
|
|
839
965
|
"discover_agents_sync",
|
|
840
966
|
"get_agent",
|
|
967
|
+
"get_agent_by_canonical_id",
|
|
841
968
|
"get_agent_names",
|
|
842
969
|
"get_agent_registry",
|
|
970
|
+
"get_agents_by_collection",
|
|
843
971
|
"get_core_agents",
|
|
844
972
|
"get_project_agents",
|
|
845
973
|
"get_registry_stats",
|
|
846
974
|
"get_specialized_agents",
|
|
847
|
-
# Legacy compatibility
|
|
848
975
|
"listAgents",
|
|
849
976
|
"list_agents",
|
|
850
977
|
"list_agents_all",
|
|
978
|
+
"list_collections",
|
|
851
979
|
]
|
|
@@ -218,6 +218,27 @@ class DevelopmentConfig(BaseModel):
|
|
|
218
218
|
)
|
|
219
219
|
|
|
220
220
|
|
|
221
|
+
class DocumentationConfig(BaseModel):
|
|
222
|
+
"""Documentation routing and management configuration."""
|
|
223
|
+
|
|
224
|
+
docs_path: str = Field(
|
|
225
|
+
default="docs/research/",
|
|
226
|
+
description="Default path for session documentation (relative to project root)",
|
|
227
|
+
)
|
|
228
|
+
attach_to_tickets: bool = Field(
|
|
229
|
+
default=True,
|
|
230
|
+
description="Attach work products to tickets when ticket context exists",
|
|
231
|
+
)
|
|
232
|
+
backup_locally: bool = Field(
|
|
233
|
+
default=True,
|
|
234
|
+
description="Always create local backup copies of documentation",
|
|
235
|
+
)
|
|
236
|
+
enable_ticket_detection: bool = Field(
|
|
237
|
+
default=True,
|
|
238
|
+
description="Enable automatic ticket context detection from user messages",
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
|
|
221
242
|
class UnifiedConfig(BaseSettings):
|
|
222
243
|
"""
|
|
223
244
|
Unified configuration model for Claude MPM.
|
|
@@ -242,6 +263,7 @@ class UnifiedConfig(BaseSettings):
|
|
|
242
263
|
performance: PerformanceConfig = Field(default_factory=PerformanceConfig)
|
|
243
264
|
sessions: SessionConfig = Field(default_factory=SessionConfig)
|
|
244
265
|
development: DevelopmentConfig = Field(default_factory=DevelopmentConfig)
|
|
266
|
+
documentation: DocumentationConfig = Field(default_factory=DocumentationConfig)
|
|
245
267
|
|
|
246
268
|
# Path configuration
|
|
247
269
|
base_path: Optional[Path] = Field(
|