claude-mpm 4.24.0__py3-none-any.whl → 5.0.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 +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +721 -911
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +4 -4
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +370 -3
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +48 -0
- 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 +38 -2
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +188 -30
- claude_mpm/cli/commands/agents.py +959 -36
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/auto_configure.py +2 -6
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +769 -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 +49 -1
- 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 +123 -165
- 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 +955 -45
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- 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 +538 -106
- 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/claude_runner.py +5 -34
- claude_mpm/core/config.py +16 -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/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +91 -10
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +71 -8
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
- claude_mpm/services/agents/local_template_manager.py +50 -10
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/cli/session_pause_manager.py +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/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/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/resource_monitor.py +1 -1
- 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/kuzu_memory_service.py +6 -2
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/model/model_router.py +1 -2
- 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/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/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +16 -3
- 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 +1 -1
- 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/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/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/utils/agent_dependency_loader.py +77 -10
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +2 -4
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/METADATA +396 -43
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/RECORD +268 -422
- 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 -183
- 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 -238
- 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/javascript_engineer_agent.json +0 -380
- 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 -144
- 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 -243
- claude_mpm/agents/templates/react_engineer.json +0 -239
- 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/tauri_engineer.json +0 -274
- claude_mpm/agents/templates/ticketing.json +0 -178
- 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 -159
- claude_mpm/agents/templates/web_qa.json +0 -400
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/commands/mpm-tickets.md +0 -151
- 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.24.0.dist-info → claude_mpm-5.0.9.dist-info}/WHEEL +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.0.9.dist-info}/top_level.txt +0 -0
|
@@ -539,7 +539,7 @@ class ConnectionEventHandler(BaseEventHandler):
|
|
|
539
539
|
if data and "timestamp" in data:
|
|
540
540
|
rtt = current_time - data["timestamp"]
|
|
541
541
|
if rtt < 10: # Reasonable RTT
|
|
542
|
-
self.logger.debug(f"🏓 Pong from {sid}, RTT: {rtt*1000:.1f}ms")
|
|
542
|
+
self.logger.debug(f"🏓 Pong from {sid}, RTT: {rtt * 1000:.1f}ms")
|
|
543
543
|
|
|
544
544
|
def _normalize_event(self, event_data: Dict[str, Any]) -> Dict[str, Any]:
|
|
545
545
|
"""Normalize event format to ensure consistency.
|
|
@@ -745,7 +745,7 @@ class GitEventHandler(BaseEventHandler):
|
|
|
745
745
|
stdout=asyncio.subprocess.PIPE,
|
|
746
746
|
stderr=asyncio.subprocess.PIPE,
|
|
747
747
|
)
|
|
748
|
-
diff_output,
|
|
748
|
+
diff_output, _ = await diff_proc.communicate()
|
|
749
749
|
|
|
750
750
|
if diff_proc.returncode == 0:
|
|
751
751
|
return {
|
|
@@ -34,10 +34,7 @@ import contextlib
|
|
|
34
34
|
|
|
35
35
|
from claude_mpm.services.version_service import VersionService
|
|
36
36
|
|
|
37
|
-
from ....core.constants import
|
|
38
|
-
SystemLimits,
|
|
39
|
-
TimeoutConfig,
|
|
40
|
-
)
|
|
37
|
+
from ....core.constants import SystemLimits, TimeoutConfig
|
|
41
38
|
from ....core.logging_config import get_logger
|
|
42
39
|
from ....core.unified_paths import get_project_root, get_scripts_dir
|
|
43
40
|
from ...exceptions import SocketIOServerError as MPMConnectionError
|
|
@@ -30,9 +30,7 @@ except ImportError:
|
|
|
30
30
|
aiohttp = None
|
|
31
31
|
web = None
|
|
32
32
|
|
|
33
|
-
from ....core.constants import
|
|
34
|
-
SystemLimits,
|
|
35
|
-
)
|
|
33
|
+
from ....core.constants import SystemLimits
|
|
36
34
|
from ....core.logging_config import get_logger
|
|
37
35
|
from ...core.interfaces.communication import SocketIOServiceInterface
|
|
38
36
|
from ..handlers import EventHandlerRegistry, FileEventHandler, GitEventHandler
|
|
@@ -112,9 +112,7 @@ class SystemInstructionsService(BaseService, SystemInstructionsInterface):
|
|
|
112
112
|
self.agent_capabilities_service
|
|
113
113
|
and "{{AGENT_CAPABILITIES}}" in base_pm_content
|
|
114
114
|
):
|
|
115
|
-
capabilities = (
|
|
116
|
-
self.agent_capabilities_service.generate_deployed_agent_capabilities()
|
|
117
|
-
)
|
|
115
|
+
capabilities = self.agent_capabilities_service.generate_deployed_agent_capabilities()
|
|
118
116
|
base_pm_content = base_pm_content.replace(
|
|
119
117
|
"{{AGENT_CAPABILITIES}}", capabilities
|
|
120
118
|
)
|
|
@@ -527,13 +527,11 @@ class PerformanceAnalyzerStrategy(AnalyzerStrategy):
|
|
|
527
527
|
and node.iter.func.id == "range"
|
|
528
528
|
and len(node.iter.args) == 1
|
|
529
529
|
):
|
|
530
|
-
|
|
531
530
|
if isinstance(node.iter.args[0], ast.Call):
|
|
532
531
|
if (
|
|
533
532
|
isinstance(node.iter.args[0].func, ast.Name)
|
|
534
533
|
and node.iter.args[0].func.id == "len"
|
|
535
534
|
):
|
|
536
|
-
|
|
537
535
|
results["optimizations"].append(
|
|
538
536
|
{
|
|
539
537
|
"type": "range_len_pattern",
|
|
@@ -562,7 +560,6 @@ class PerformanceAnalyzerStrategy(AnalyzerStrategy):
|
|
|
562
560
|
"min",
|
|
563
561
|
"max",
|
|
564
562
|
]:
|
|
565
|
-
|
|
566
563
|
results["optimizations"].append(
|
|
567
564
|
{
|
|
568
565
|
"type": "generator_opportunity",
|
|
@@ -17,11 +17,7 @@ from claude_mpm.core.enums import HealthStatus, OperationResult
|
|
|
17
17
|
from claude_mpm.core.logging_utils import get_logger
|
|
18
18
|
from claude_mpm.services.unified.strategies import StrategyMetadata, StrategyPriority
|
|
19
19
|
|
|
20
|
-
from .base import
|
|
21
|
-
DeploymentContext,
|
|
22
|
-
DeploymentResult,
|
|
23
|
-
DeploymentStrategy,
|
|
24
|
-
)
|
|
20
|
+
from .base import DeploymentContext, DeploymentResult, DeploymentStrategy
|
|
25
21
|
|
|
26
22
|
|
|
27
23
|
class VercelDeploymentStrategy(DeploymentStrategy):
|
|
@@ -34,11 +34,7 @@ from .interfaces import (
|
|
|
34
34
|
ServiceCapability,
|
|
35
35
|
ServiceMetadata,
|
|
36
36
|
)
|
|
37
|
-
from .strategies import
|
|
38
|
-
DeploymentStrategy,
|
|
39
|
-
StrategyContext,
|
|
40
|
-
get_strategy_registry,
|
|
41
|
-
)
|
|
37
|
+
from .strategies import DeploymentStrategy, StrategyContext, get_strategy_registry
|
|
42
38
|
|
|
43
39
|
|
|
44
40
|
class UnifiedDeploymentService(IDeploymentService, IUnifiedService):
|
|
@@ -458,17 +458,19 @@ class ConflictResolutionManager:
|
|
|
458
458
|
|
|
459
459
|
for i, marker in enumerate(markers):
|
|
460
460
|
if not marker.ours_content and marker.theirs_content:
|
|
461
|
-
suggestions.append(
|
|
461
|
+
suggestions.append(
|
|
462
|
+
f"Conflict {i + 1}: Accept incoming changes (theirs)"
|
|
463
|
+
)
|
|
462
464
|
elif marker.ours_content and not marker.theirs_content:
|
|
463
|
-
suggestions.append(f"Conflict {i+1}: Keep current changes (ours)")
|
|
465
|
+
suggestions.append(f"Conflict {i + 1}: Keep current changes (ours)")
|
|
464
466
|
elif self._only_whitespace_differences(
|
|
465
467
|
marker.ours_content, marker.theirs_content
|
|
466
468
|
):
|
|
467
469
|
suggestions.append(
|
|
468
|
-
f"Conflict {i+1}: Whitespace differences only - can auto-resolve"
|
|
470
|
+
f"Conflict {i + 1}: Whitespace differences only - can auto-resolve"
|
|
469
471
|
)
|
|
470
472
|
else:
|
|
471
|
-
suggestions.append(f"Conflict {i+1}: Manual merge required")
|
|
473
|
+
suggestions.append(f"Conflict {i + 1}: Manual merge required")
|
|
472
474
|
|
|
473
475
|
return "; ".join(suggestions)
|
|
474
476
|
|
|
@@ -6,11 +6,7 @@ This module provides visualization services for code analysis,
|
|
|
6
6
|
including Mermaid diagram generation for various code structures.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from .mermaid_generator import
|
|
10
|
-
DiagramConfig,
|
|
11
|
-
DiagramType,
|
|
12
|
-
MermaidGeneratorService,
|
|
13
|
-
)
|
|
9
|
+
from .mermaid_generator import DiagramConfig, DiagramType, MermaidGeneratorService
|
|
14
10
|
|
|
15
11
|
__all__ = [
|
|
16
12
|
"DiagramConfig",
|
|
@@ -307,9 +307,8 @@ class MermaidGeneratorService(SyncBaseService):
|
|
|
307
307
|
import_from = imp.get("from", imp.get("module", ""))
|
|
308
308
|
if import_from:
|
|
309
309
|
import_name = self._extract_module_name(import_from)
|
|
310
|
-
if (
|
|
311
|
-
|
|
312
|
-
and self._is_external_module(import_name)
|
|
310
|
+
if not config.include_external and self._is_external_module(
|
|
311
|
+
import_name
|
|
313
312
|
):
|
|
314
313
|
continue
|
|
315
314
|
modules.add(import_name)
|
|
@@ -84,7 +84,7 @@ def main():
|
|
|
84
84
|
try:
|
|
85
85
|
# Start all servers
|
|
86
86
|
for i, server in enumerate(servers):
|
|
87
|
-
print(f"Starting server {i+1}/{len(servers)}: {server['cmd']}")
|
|
87
|
+
print(f"Starting server {i + 1}/{len(servers)}: {server['cmd']}")
|
|
88
88
|
|
|
89
89
|
# Use shell=True to support commands with cd and &&
|
|
90
90
|
process = subprocess.Popen(
|
|
@@ -121,7 +121,7 @@ def main():
|
|
|
121
121
|
except subprocess.TimeoutExpired:
|
|
122
122
|
process.kill()
|
|
123
123
|
process.wait()
|
|
124
|
-
print(f"Server {i+1} stopped")
|
|
124
|
+
print(f"Server {i + 1} stopped")
|
|
125
125
|
print("All servers stopped")
|
|
126
126
|
|
|
127
127
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""Structured question templates for common PM workflows.
|
|
2
|
+
|
|
3
|
+
This package provides reusable question templates that PM agents can use to gather
|
|
4
|
+
user input in a structured way. Templates are pre-configured QuestionSet objects
|
|
5
|
+
that can be customized based on context.
|
|
6
|
+
|
|
7
|
+
Available Templates:
|
|
8
|
+
- PR Strategy: Questions about PR workflow, draft preferences, auto-merge
|
|
9
|
+
- Project Initialization: Questions about project type, language, frameworks
|
|
10
|
+
- Ticket Management: Questions about ticket prioritization and scope
|
|
11
|
+
|
|
12
|
+
Example Usage:
|
|
13
|
+
>>> from claude_mpm.templates.questions.pr_strategy import PRWorkflowTemplate
|
|
14
|
+
>>> template = PRWorkflowTemplate(num_tickets=3)
|
|
15
|
+
>>> question_set = template.build()
|
|
16
|
+
>>> params = question_set.to_ask_user_question_params()
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
from claude_mpm.templates.questions.base import ConditionalTemplate, QuestionTemplate
|
|
20
|
+
from claude_mpm.templates.questions.pr_strategy import PRWorkflowTemplate
|
|
21
|
+
from claude_mpm.templates.questions.project_init import (
|
|
22
|
+
DevelopmentWorkflowTemplate,
|
|
23
|
+
ProjectTypeTemplate,
|
|
24
|
+
)
|
|
25
|
+
from claude_mpm.templates.questions.ticket_mgmt import (
|
|
26
|
+
TicketPrioritizationTemplate,
|
|
27
|
+
TicketScopeTemplate,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
__all__ = [
|
|
31
|
+
"ConditionalTemplate",
|
|
32
|
+
"DevelopmentWorkflowTemplate",
|
|
33
|
+
"PRWorkflowTemplate",
|
|
34
|
+
"ProjectTypeTemplate",
|
|
35
|
+
"QuestionTemplate",
|
|
36
|
+
"TicketPrioritizationTemplate",
|
|
37
|
+
"TicketScopeTemplate",
|
|
38
|
+
]
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"""Base classes for structured question templates.
|
|
2
|
+
|
|
3
|
+
This module provides abstract base classes for creating reusable question templates.
|
|
4
|
+
Templates encapsulate common question patterns and can be context-aware.
|
|
5
|
+
|
|
6
|
+
Design Patterns:
|
|
7
|
+
- Template Method: Define question structure, subclasses provide details
|
|
8
|
+
- Strategy: Different templates for different workflows
|
|
9
|
+
- Factory: Templates build QuestionSet objects
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from abc import ABC, abstractmethod
|
|
15
|
+
from typing import TYPE_CHECKING, Any
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from claude_mpm.utils.structured_questions import QuestionSet
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class QuestionTemplate(ABC):
|
|
22
|
+
"""Abstract base class for question templates.
|
|
23
|
+
|
|
24
|
+
Subclasses should implement the build() method to construct a QuestionSet
|
|
25
|
+
based on template-specific logic and any provided context.
|
|
26
|
+
|
|
27
|
+
Example:
|
|
28
|
+
>>> class MyTemplate(QuestionTemplate):
|
|
29
|
+
... def build(self) -> QuestionSet:
|
|
30
|
+
... question = QuestionBuilder().ask("...").build()
|
|
31
|
+
... return QuestionSet([question])
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
@abstractmethod
|
|
35
|
+
def build(self) -> QuestionSet:
|
|
36
|
+
"""Build and return a QuestionSet.
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
QuestionSet ready for use with AskUserQuestion tool
|
|
40
|
+
|
|
41
|
+
Raises:
|
|
42
|
+
QuestionValidationError: If question construction fails
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
def to_params(self) -> dict[str, Any]:
|
|
46
|
+
"""Build question set and convert to AskUserQuestion parameters.
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
Dictionary suitable for AskUserQuestion tool
|
|
50
|
+
|
|
51
|
+
Raises:
|
|
52
|
+
QuestionValidationError: If question construction fails
|
|
53
|
+
"""
|
|
54
|
+
return self.build().to_ask_user_question_params()
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class ConditionalTemplate(QuestionTemplate):
|
|
58
|
+
"""Template that adjusts questions based on context.
|
|
59
|
+
|
|
60
|
+
This base class provides infrastructure for templates that need to vary
|
|
61
|
+
their questions based on runtime context (e.g., number of tickets,
|
|
62
|
+
project type, etc.).
|
|
63
|
+
|
|
64
|
+
Attributes:
|
|
65
|
+
context: Dictionary of context values that affect question selection
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
def __init__(self, **context: Any) -> None:
|
|
69
|
+
"""Initialize with context values.
|
|
70
|
+
|
|
71
|
+
Args:
|
|
72
|
+
**context: Arbitrary context values used to determine questions
|
|
73
|
+
"""
|
|
74
|
+
self.context = context
|
|
75
|
+
|
|
76
|
+
def get_context(self, key: str, default: Any = None) -> Any:
|
|
77
|
+
"""Get a context value.
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
key: Context key to retrieve
|
|
81
|
+
default: Default value if key not found
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
Context value or default
|
|
85
|
+
"""
|
|
86
|
+
return self.context.get(key, default)
|
|
87
|
+
|
|
88
|
+
def has_context(self, key: str) -> bool:
|
|
89
|
+
"""Check if context key exists.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
key: Context key to check
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
True if key exists in context, False otherwise
|
|
96
|
+
"""
|
|
97
|
+
return key in self.context
|
|
98
|
+
|
|
99
|
+
def should_include_question(self, question_id: str) -> bool:
|
|
100
|
+
"""Determine if a question should be included based on context.
|
|
101
|
+
|
|
102
|
+
Subclasses can override this to implement conditional logic.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
question_id: Identifier for the question being considered
|
|
106
|
+
|
|
107
|
+
Returns:
|
|
108
|
+
True if question should be included, False otherwise
|
|
109
|
+
"""
|
|
110
|
+
return True
|
|
111
|
+
|
|
112
|
+
@abstractmethod
|
|
113
|
+
def build(self) -> QuestionSet:
|
|
114
|
+
"""Build QuestionSet based on context.
|
|
115
|
+
|
|
116
|
+
Subclasses must implement this to create context-aware questions.
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
QuestionSet with questions appropriate for the context
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class MultiStepTemplate(QuestionTemplate):
|
|
124
|
+
"""Template for multi-step question workflows.
|
|
125
|
+
|
|
126
|
+
Some workflows require multiple rounds of questions, where later questions
|
|
127
|
+
depend on answers to earlier ones. This base class provides infrastructure
|
|
128
|
+
for such workflows.
|
|
129
|
+
|
|
130
|
+
Note: Initial implementation focuses on single-step templates. This class
|
|
131
|
+
is provided for future extensibility.
|
|
132
|
+
"""
|
|
133
|
+
|
|
134
|
+
def __init__(self) -> None:
|
|
135
|
+
"""Initialize multi-step template."""
|
|
136
|
+
self._current_step = 0
|
|
137
|
+
self._answers: dict[str, Any] = {}
|
|
138
|
+
|
|
139
|
+
def set_answers(self, step: int, answers: dict[str, Any]) -> None:
|
|
140
|
+
"""Record answers from a previous step.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
step: Step number (0-indexed)
|
|
144
|
+
answers: Parsed answers from ResponseParser
|
|
145
|
+
"""
|
|
146
|
+
self._answers[str(step)] = answers
|
|
147
|
+
|
|
148
|
+
def get_answers(self, step: int) -> dict[str, Any] | None:
|
|
149
|
+
"""Get answers from a previous step.
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
step: Step number (0-indexed)
|
|
153
|
+
|
|
154
|
+
Returns:
|
|
155
|
+
Answers dictionary or None if step not completed
|
|
156
|
+
"""
|
|
157
|
+
return self._answers.get(str(step))
|
|
158
|
+
|
|
159
|
+
@abstractmethod
|
|
160
|
+
def build_step(self, step: int) -> QuestionSet:
|
|
161
|
+
"""Build questions for a specific step.
|
|
162
|
+
|
|
163
|
+
Args:
|
|
164
|
+
step: Step number (0-indexed)
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
QuestionSet for the specified step
|
|
168
|
+
"""
|
|
169
|
+
|
|
170
|
+
def build(self) -> QuestionSet:
|
|
171
|
+
"""Build questions for the current step.
|
|
172
|
+
|
|
173
|
+
Returns:
|
|
174
|
+
QuestionSet for current step
|
|
175
|
+
"""
|
|
176
|
+
return self.build_step(self._current_step)
|
|
177
|
+
|
|
178
|
+
def advance_step(self) -> None:
|
|
179
|
+
"""Move to the next step."""
|
|
180
|
+
self._current_step += 1
|
|
181
|
+
|
|
182
|
+
@property
|
|
183
|
+
def current_step(self) -> int:
|
|
184
|
+
"""Get current step number."""
|
|
185
|
+
return self._current_step
|
|
186
|
+
|
|
187
|
+
@abstractmethod
|
|
188
|
+
def is_complete(self) -> bool:
|
|
189
|
+
"""Check if all steps are complete.
|
|
190
|
+
|
|
191
|
+
Returns:
|
|
192
|
+
True if workflow is complete, False otherwise
|
|
193
|
+
"""
|