claude-mpm 4.16.0__py3-none-any.whl → 4.25.10__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_ENGINEER.md +286 -0
- claude_mpm/agents/BASE_PM.md +272 -23
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1821 -32
- claude_mpm/agents/WORKFLOW.md +75 -2
- claude_mpm/agents/agent_loader.py +4 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/api_qa.json +5 -2
- claude_mpm/agents/templates/circuit_breakers.md +108 -2
- claude_mpm/agents/templates/documentation.json +33 -6
- claude_mpm/agents/templates/engineer.json +5 -1
- claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
- claude_mpm/agents/templates/php-engineer.json +10 -4
- claude_mpm/agents/templates/pm_red_flags.md +89 -19
- claude_mpm/agents/templates/project_organizer.json +7 -3
- claude_mpm/agents/templates/python_engineer.json +8 -3
- claude_mpm/agents/templates/qa.json +2 -1
- claude_mpm/agents/templates/react_engineer.json +1 -0
- claude_mpm/agents/templates/research.json +82 -12
- claude_mpm/agents/templates/rust_engineer.json +12 -7
- claude_mpm/agents/templates/security.json +4 -4
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/agents/templates/tauri_engineer.json +274 -0
- claude_mpm/agents/templates/ticketing.json +10 -6
- claude_mpm/agents/templates/version_control.json +4 -2
- claude_mpm/agents/templates/web_qa.json +2 -1
- claude_mpm/cli/README.md +253 -0
- claude_mpm/cli/__init__.py +11 -1
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mcp_install_commands.py.backup +284 -0
- claude_mpm/cli/commands/mpm_init/README.md +365 -0
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +573 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +67 -1
- claude_mpm/cli/commands/run.py +124 -128
- claude_mpm/cli/commands/skills.py +922 -0
- claude_mpm/cli/executor.py +58 -0
- claude_mpm/cli/interactive/agent_wizard.py +5 -5
- claude_mpm/cli/parsers/base_parser.py +35 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skills_parser.py +275 -0
- claude_mpm/cli/startup.py +168 -8
- 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/cli_module/refactoring_guide.md +253 -0
- claude_mpm/commands/mpm-auto-configure.md +52 -0
- claude_mpm/commands/mpm-help.md +6 -0
- claude_mpm/commands/mpm-init.md +130 -8
- claude_mpm/commands/mpm-resume.md +372 -0
- claude_mpm/commands/mpm-tickets.md +56 -7
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +2 -0
- claude_mpm/config/agent_capabilities.yaml +658 -0
- claude_mpm/config/agent_config.py +2 -2
- claude_mpm/config/async_logging_config.yaml +145 -0
- claude_mpm/constants.py +24 -0
- claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +14 -1
- claude_mpm/core/config.py +50 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/factories.py +1 -1
- 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 +48 -3
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +39 -0
- claude_mpm/core/optimized_agent_loader.py +3 -3
- claude_mpm/d2/.gitignore +22 -0
- claude_mpm/d2/ARCHITECTURE_COMPARISON.md +273 -0
- claude_mpm/d2/FLASK_INTEGRATION.md +156 -0
- claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +452 -0
- claude_mpm/d2/QUICKSTART.md +186 -0
- claude_mpm/d2/README.md +232 -0
- claude_mpm/d2/STORE_FIX_SUMMARY.md +167 -0
- claude_mpm/d2/SVELTE5_STORES_GUIDE.md +180 -0
- claude_mpm/d2/TESTING.md +288 -0
- claude_mpm/d2/index.html +118 -0
- claude_mpm/d2/package.json +19 -0
- claude_mpm/d2/src/App.svelte +110 -0
- claude_mpm/d2/src/components/Header.svelte +153 -0
- claude_mpm/d2/src/components/MainContent.svelte +74 -0
- claude_mpm/d2/src/components/Sidebar.svelte +85 -0
- claude_mpm/d2/src/components/tabs/EventsTab.svelte +326 -0
- claude_mpm/d2/src/lib/socketio.js +144 -0
- claude_mpm/d2/src/main.js +7 -0
- claude_mpm/d2/src/stores/events.js +114 -0
- claude_mpm/d2/src/stores/socket.js +108 -0
- claude_mpm/d2/src/stores/theme.js +65 -0
- claude_mpm/d2/svelte.config.js +12 -0
- claude_mpm/d2/vite.config.js +15 -0
- claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
- claude_mpm/dashboard/BUILD_NUMBER +1 -0
- claude_mpm/dashboard/README.md +121 -0
- claude_mpm/dashboard/VERSION +1 -0
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +273 -0
- claude_mpm/dashboard/react/components/ErrorBoundary.tsx +75 -0
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +141 -0
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +36 -0
- claude_mpm/dashboard/react/components/shared/FilterBar.tsx +89 -0
- claude_mpm/dashboard/react/contexts/DashboardContext.tsx +215 -0
- claude_mpm/dashboard/react/entries/events.tsx +165 -0
- claude_mpm/dashboard/react/hooks/useEvents.ts +191 -0
- claude_mpm/dashboard/react/hooks/useSocket.ts +225 -0
- claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +170 -0
- claude_mpm/dashboard/static/built/components/activity-tree.js.map +1 -0
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/built/components/agent-inference.js.map +1 -0
- claude_mpm/dashboard/static/built/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/built/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +29 -29
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +24 -24
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +27 -27
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +25 -25
- claude_mpm/dashboard/static/built/components/code-tree.js.map +1 -0
- claude_mpm/dashboard/static/built/components/code-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/built/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/built/components/event-processor.js.map +1 -0
- claude_mpm/dashboard/static/built/components/event-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/export-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +1 -0
- claude_mpm/dashboard/static/built/components/file-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/module-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/session-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/socket-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +1 -0
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +1 -0
- claude_mpm/dashboard/static/built/components/working-directory.js.map +1 -0
- claude_mpm/dashboard/static/built/connection-manager.js +76 -76
- claude_mpm/dashboard/static/built/dashboard.js.map +1 -0
- claude_mpm/dashboard/static/built/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/built/react/events.js.map +1 -0
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +9 -9
- claude_mpm/dashboard/static/built/shared/event-bus.js +5 -5
- claude_mpm/dashboard/static/built/shared/logger.js +16 -16
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +6 -6
- claude_mpm/dashboard/static/built/socket-client.js.map +1 -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/index.html +22 -22
- claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +170 -0
- 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/shared/dom-helpers.js +9 -9
- claude_mpm/dashboard/static/js/shared/event-bus.js +5 -5
- claude_mpm/dashboard/static/js/shared/logger.js +16 -16
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +6 -6
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/static/navigation-test-results.md +118 -0
- claude_mpm/dashboard/static/production/main.html +21 -21
- claude_mpm/dashboard/static/test-archive/dashboard.html +22 -22
- claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
- claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
- claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/hooks/README.md +143 -0
- claude_mpm/hooks/__init__.py +8 -0
- 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/response_tracking.py +35 -1
- claude_mpm/hooks/session_resume_hook.py +121 -0
- claude_mpm/hooks/templates/README.md +180 -0
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/hooks/templates/settings.json.example +147 -0
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/schemas/agent_schema.json +596 -0
- claude_mpm/schemas/frontmatter_schema.json +165 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/auto_config_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
- claude_mpm/services/agents/deployment/agent_validator.py +17 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/loading/framework_agent_loader.py +8 -8
- claude_mpm/services/agents/local_template_manager.py +4 -2
- claude_mpm/services/agents/recommender.py +47 -0
- claude_mpm/services/cli/resume_service.py +617 -0
- claude_mpm/services/cli/session_manager.py +87 -0
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +372 -0
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/core/base.py +26 -11
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/agent_config.py +3 -0
- claude_mpm/services/core/models/process.py +4 -0
- claude_mpm/services/core/path_resolver.py +1 -1
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- 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/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/doctor_reporter.py +6 -4
- claude_mpm/services/diagnostics/models.py +21 -0
- claude_mpm/services/event_bus/README.md +244 -0
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/event_bus/event_bus.py +36 -3
- claude_mpm/services/event_bus/relay.py +23 -7
- claude_mpm/services/events/README.md +303 -0
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/framework_claude_md_generator/README.md +119 -0
- claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/local_ops/__init__.py +2 -0
- 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 +7 -131
- claude_mpm/services/mcp_gateway/README.md +185 -0
- claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
- 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/external_mcp_services.py +26 -21
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/memory/failure_tracker.py +19 -4
- claude_mpm/services/memory/optimizer.py +1 -1
- claude_mpm/services/model/model_router.py +8 -9
- claude_mpm/services/monitor/daemon.py +1 -1
- 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/project/documentation_manager.py +2 -1
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +1 -0
- claude_mpm/services/self_upgrade_service.py +165 -7
- claude_mpm/services/session_manager.py +205 -1
- 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/connection.py.backup +217 -0
- claude_mpm/services/socketio/handlers/git.py +2 -2
- claude_mpm/services/socketio/handlers/hook.py.backup +154 -0
- claude_mpm/services/static/.gitkeep +2 -0
- 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/local.py +1 -1
- claude_mpm/services/version_control/VERSION +1 -0
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +21 -0
- claude_mpm/skills/agent_skills_injector.py +324 -0
- claude_mpm/skills/bundled/.gitkeep +2 -0
- claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +63 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +322 -0
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +157 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +22 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +2 -0
- claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +303 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +573 -0
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
- claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
- claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
- claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +158 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +97 -9
- claude_mpm/skills/skills_registry.py +347 -0
- claude_mpm/skills/skills_service.py +739 -0
- claude_mpm/templates/questions/EXAMPLES.md +501 -0
- claude_mpm/templates/questions/__init__.py +43 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +314 -0
- claude_mpm/templates/questions/project_init.py +388 -0
- claude_mpm/templates/questions/ticket_mgmt.py +397 -0
- claude_mpm/tools/README_SOCKETIO_DEBUG.md +224 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/tools/code_tree_analyzer/README.md +64 -0
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/utils/agent_dependency_loader.py +5 -5
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- claude_mpm-4.25.10.dist-info/METADATA +789 -0
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +485 -240
- claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md +0 -602
- 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/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/cli/commands/mpm_init.py +0 -2008
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- 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/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/test-archive/test_debug.html +0 -25
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- claude_mpm-4.16.0.dist-info/METADATA +0 -453
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
"""Ticket management question templates.
|
|
2
|
+
|
|
3
|
+
This module provides templates for gathering user preferences about ticket
|
|
4
|
+
prioritization, scope, and management during sprint planning and execution.
|
|
5
|
+
|
|
6
|
+
Templates:
|
|
7
|
+
- TicketPrioritizationTemplate: How to order/prioritize tickets
|
|
8
|
+
- TicketScopeTemplate: Testing and documentation requirements per ticket
|
|
9
|
+
- TicketDependencyTemplate: How to handle ticket dependencies
|
|
10
|
+
|
|
11
|
+
These templates help PM make informed decisions about ticket execution order
|
|
12
|
+
and completeness criteria.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from typing import TYPE_CHECKING
|
|
18
|
+
|
|
19
|
+
from claude_mpm.templates.questions.base import ConditionalTemplate
|
|
20
|
+
from claude_mpm.utils.structured_questions import (
|
|
21
|
+
QuestionBuilder,
|
|
22
|
+
QuestionSet,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
if TYPE_CHECKING:
|
|
26
|
+
from claude_mpm.utils.structured_questions import StructuredQuestion
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class TicketPrioritizationTemplate(ConditionalTemplate):
|
|
30
|
+
"""Template for ticket prioritization decisions.
|
|
31
|
+
|
|
32
|
+
Asks about:
|
|
33
|
+
- How to order tickets (priority-based, dependency-based, etc.)
|
|
34
|
+
- Whether to work serially or in parallel
|
|
35
|
+
- How to handle blockers
|
|
36
|
+
|
|
37
|
+
Context Parameters:
|
|
38
|
+
num_tickets (int): Number of tickets to prioritize
|
|
39
|
+
has_dependencies (bool): Whether tickets have interdependencies
|
|
40
|
+
team_size (int): Number of engineers available
|
|
41
|
+
|
|
42
|
+
Example:
|
|
43
|
+
>>> template = TicketPrioritizationTemplate(
|
|
44
|
+
... num_tickets=5,
|
|
45
|
+
... has_dependencies=True,
|
|
46
|
+
... team_size=1
|
|
47
|
+
... )
|
|
48
|
+
>>> question_set = template.build()
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
def __init__(
|
|
52
|
+
self,
|
|
53
|
+
num_tickets: int = 1,
|
|
54
|
+
has_dependencies: bool = False,
|
|
55
|
+
team_size: int = 1,
|
|
56
|
+
**context,
|
|
57
|
+
):
|
|
58
|
+
"""Initialize ticket prioritization template.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
num_tickets: Number of tickets to manage
|
|
62
|
+
has_dependencies: Whether tickets depend on each other
|
|
63
|
+
team_size: Number of engineers available
|
|
64
|
+
**context: Additional context values
|
|
65
|
+
"""
|
|
66
|
+
super().__init__(
|
|
67
|
+
num_tickets=num_tickets,
|
|
68
|
+
has_dependencies=has_dependencies,
|
|
69
|
+
team_size=team_size,
|
|
70
|
+
**context,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
def build(self) -> QuestionSet:
|
|
74
|
+
"""Build ticket prioritization questions.
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
QuestionSet with prioritization questions
|
|
78
|
+
"""
|
|
79
|
+
num_tickets = self.get_context("num_tickets", 1)
|
|
80
|
+
has_dependencies = self.get_context("has_dependencies", False)
|
|
81
|
+
team_size = self.get_context("team_size", 1)
|
|
82
|
+
|
|
83
|
+
questions: list[StructuredQuestion] = []
|
|
84
|
+
|
|
85
|
+
# Question 1: Prioritization strategy (only if multiple tickets)
|
|
86
|
+
if num_tickets > 1:
|
|
87
|
+
if has_dependencies:
|
|
88
|
+
priority_question = (
|
|
89
|
+
QuestionBuilder()
|
|
90
|
+
.ask("How should we handle ticket dependencies?")
|
|
91
|
+
.header("Dependencies")
|
|
92
|
+
.add_option(
|
|
93
|
+
"Sequential execution",
|
|
94
|
+
"Complete tickets in dependency order (foundational work first)",
|
|
95
|
+
)
|
|
96
|
+
.add_option(
|
|
97
|
+
"Parallel where possible",
|
|
98
|
+
"Work on independent tickets in parallel, sequential for dependent ones",
|
|
99
|
+
)
|
|
100
|
+
.build()
|
|
101
|
+
)
|
|
102
|
+
else:
|
|
103
|
+
priority_question = (
|
|
104
|
+
QuestionBuilder()
|
|
105
|
+
.ask("How should we prioritize the tickets?")
|
|
106
|
+
.header("Priority")
|
|
107
|
+
.add_option(
|
|
108
|
+
"User-visible first",
|
|
109
|
+
"Prioritize features that directly impact users",
|
|
110
|
+
)
|
|
111
|
+
.add_option(
|
|
112
|
+
"Infrastructure first",
|
|
113
|
+
"Build foundational components before user-facing features",
|
|
114
|
+
)
|
|
115
|
+
.add_option(
|
|
116
|
+
"Quick wins first",
|
|
117
|
+
"Start with easiest tickets to build momentum",
|
|
118
|
+
)
|
|
119
|
+
.add_option(
|
|
120
|
+
"High risk first",
|
|
121
|
+
"Tackle uncertain/risky tickets early to derisk project",
|
|
122
|
+
)
|
|
123
|
+
.build()
|
|
124
|
+
)
|
|
125
|
+
questions.append(priority_question)
|
|
126
|
+
|
|
127
|
+
# Question 2: Execution strategy (only if multiple tickets and team)
|
|
128
|
+
if num_tickets > 1 and team_size >= 1:
|
|
129
|
+
execution_question = (
|
|
130
|
+
QuestionBuilder()
|
|
131
|
+
.ask("How should tickets be executed?")
|
|
132
|
+
.header("Execution")
|
|
133
|
+
.add_option(
|
|
134
|
+
"One at a time",
|
|
135
|
+
"Complete each ticket fully before starting the next",
|
|
136
|
+
)
|
|
137
|
+
.add_option(
|
|
138
|
+
"Parallel execution",
|
|
139
|
+
"Work on multiple tickets simultaneously when possible",
|
|
140
|
+
)
|
|
141
|
+
.build()
|
|
142
|
+
)
|
|
143
|
+
questions.append(execution_question)
|
|
144
|
+
|
|
145
|
+
# Fallback for single ticket or default case
|
|
146
|
+
if not questions:
|
|
147
|
+
scope_question = (
|
|
148
|
+
QuestionBuilder()
|
|
149
|
+
.ask("What should be the ticket completion criteria?")
|
|
150
|
+
.header("Criteria")
|
|
151
|
+
.add_option(
|
|
152
|
+
"Implementation only",
|
|
153
|
+
"Code implementation complete, basic functionality working",
|
|
154
|
+
)
|
|
155
|
+
.add_option(
|
|
156
|
+
"Implementation + tests",
|
|
157
|
+
"Code complete with passing unit tests",
|
|
158
|
+
)
|
|
159
|
+
.build()
|
|
160
|
+
)
|
|
161
|
+
questions.append(scope_question)
|
|
162
|
+
|
|
163
|
+
return QuestionSet(questions)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
class TicketScopeTemplate(ConditionalTemplate):
|
|
167
|
+
"""Template for ticket scope and completeness requirements.
|
|
168
|
+
|
|
169
|
+
Asks about:
|
|
170
|
+
- Testing requirements (unit, integration, e2e)
|
|
171
|
+
- Documentation requirements
|
|
172
|
+
- Code review requirements
|
|
173
|
+
- Definition of done
|
|
174
|
+
|
|
175
|
+
Context Parameters:
|
|
176
|
+
ticket_type (str): Type of ticket (feature, bug, refactor)
|
|
177
|
+
is_user_facing (bool): Whether ticket affects end users
|
|
178
|
+
project_maturity (str): Project stage (prototype, beta, production)
|
|
179
|
+
|
|
180
|
+
Example:
|
|
181
|
+
>>> template = TicketScopeTemplate(
|
|
182
|
+
... ticket_type="feature",
|
|
183
|
+
... is_user_facing=True,
|
|
184
|
+
... project_maturity="production"
|
|
185
|
+
... )
|
|
186
|
+
>>> question_set = template.build()
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
def __init__(
|
|
190
|
+
self,
|
|
191
|
+
ticket_type: str | None = "feature",
|
|
192
|
+
is_user_facing: bool = False,
|
|
193
|
+
project_maturity: str = "development",
|
|
194
|
+
**context,
|
|
195
|
+
):
|
|
196
|
+
"""Initialize ticket scope template.
|
|
197
|
+
|
|
198
|
+
Args:
|
|
199
|
+
ticket_type: Type of ticket (feature, bug, refactor, etc.)
|
|
200
|
+
is_user_facing: Whether changes affect end users
|
|
201
|
+
project_maturity: Stage of project (prototype, development, production)
|
|
202
|
+
**context: Additional context values
|
|
203
|
+
"""
|
|
204
|
+
super().__init__(
|
|
205
|
+
ticket_type=ticket_type,
|
|
206
|
+
is_user_facing=is_user_facing,
|
|
207
|
+
project_maturity=project_maturity,
|
|
208
|
+
**context,
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
def build(self) -> QuestionSet:
|
|
212
|
+
"""Build ticket scope questions.
|
|
213
|
+
|
|
214
|
+
Returns:
|
|
215
|
+
QuestionSet with scope questions
|
|
216
|
+
"""
|
|
217
|
+
ticket_type = self.get_context("ticket_type", "feature")
|
|
218
|
+
is_user_facing = self.get_context("is_user_facing", False)
|
|
219
|
+
project_maturity = self.get_context("project_maturity", "development")
|
|
220
|
+
|
|
221
|
+
questions: list[StructuredQuestion] = []
|
|
222
|
+
|
|
223
|
+
# Question 1: Testing requirements
|
|
224
|
+
if project_maturity == "production" or is_user_facing:
|
|
225
|
+
testing_question = (
|
|
226
|
+
QuestionBuilder()
|
|
227
|
+
.ask("What testing is required for this ticket?")
|
|
228
|
+
.header("Testing")
|
|
229
|
+
.add_option(
|
|
230
|
+
"Comprehensive",
|
|
231
|
+
"Unit tests, integration tests, and e2e tests required",
|
|
232
|
+
)
|
|
233
|
+
.add_option(
|
|
234
|
+
"Standard",
|
|
235
|
+
"Unit tests and integration tests for critical paths",
|
|
236
|
+
)
|
|
237
|
+
.add_option(
|
|
238
|
+
"Basic",
|
|
239
|
+
"Unit tests for core functionality only",
|
|
240
|
+
)
|
|
241
|
+
.build()
|
|
242
|
+
)
|
|
243
|
+
else:
|
|
244
|
+
testing_question = (
|
|
245
|
+
QuestionBuilder()
|
|
246
|
+
.ask("What testing is required for this ticket?")
|
|
247
|
+
.header("Testing")
|
|
248
|
+
.add_option(
|
|
249
|
+
"Unit tests",
|
|
250
|
+
"Unit tests covering core functionality",
|
|
251
|
+
)
|
|
252
|
+
.add_option(
|
|
253
|
+
"Integration tests",
|
|
254
|
+
"Integration tests for component interactions",
|
|
255
|
+
)
|
|
256
|
+
.add_option(
|
|
257
|
+
"Manual testing",
|
|
258
|
+
"Manual verification sufficient for now",
|
|
259
|
+
)
|
|
260
|
+
.build()
|
|
261
|
+
)
|
|
262
|
+
questions.append(testing_question)
|
|
263
|
+
|
|
264
|
+
# Question 2: Documentation requirements
|
|
265
|
+
if is_user_facing or ticket_type == "feature":
|
|
266
|
+
docs_question = (
|
|
267
|
+
QuestionBuilder()
|
|
268
|
+
.ask("What documentation is needed?")
|
|
269
|
+
.header("Docs")
|
|
270
|
+
.add_option(
|
|
271
|
+
"Full documentation",
|
|
272
|
+
"API docs, user guide, and code comments",
|
|
273
|
+
)
|
|
274
|
+
.add_option(
|
|
275
|
+
"API docs only",
|
|
276
|
+
"Document public interfaces and usage examples",
|
|
277
|
+
)
|
|
278
|
+
.add_option(
|
|
279
|
+
"Code comments",
|
|
280
|
+
"Inline comments for complex logic only",
|
|
281
|
+
)
|
|
282
|
+
.add_option(
|
|
283
|
+
"None",
|
|
284
|
+
"Code is self-documenting, no additional docs needed",
|
|
285
|
+
)
|
|
286
|
+
.build()
|
|
287
|
+
)
|
|
288
|
+
questions.append(docs_question)
|
|
289
|
+
|
|
290
|
+
return QuestionSet(questions)
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
class TicketDependencyTemplate(ConditionalTemplate):
|
|
294
|
+
"""Template for handling ticket dependencies and blocking issues.
|
|
295
|
+
|
|
296
|
+
Asks about:
|
|
297
|
+
- How to handle blocked tickets
|
|
298
|
+
- Whether to wait or work around dependencies
|
|
299
|
+
- Parallel work strategies
|
|
300
|
+
|
|
301
|
+
Context Parameters:
|
|
302
|
+
blocked_tickets (int): Number of tickets currently blocked
|
|
303
|
+
blocking_type (str): Type of blocker (technical, external, approval)
|
|
304
|
+
|
|
305
|
+
Example:
|
|
306
|
+
>>> template = TicketDependencyTemplate(
|
|
307
|
+
... blocked_tickets=2,
|
|
308
|
+
... blocking_type="external"
|
|
309
|
+
... )
|
|
310
|
+
>>> question_set = template.build()
|
|
311
|
+
"""
|
|
312
|
+
|
|
313
|
+
def __init__(
|
|
314
|
+
self,
|
|
315
|
+
blocked_tickets: int = 0,
|
|
316
|
+
blocking_type: str | None = None,
|
|
317
|
+
**context,
|
|
318
|
+
):
|
|
319
|
+
"""Initialize ticket dependency template.
|
|
320
|
+
|
|
321
|
+
Args:
|
|
322
|
+
blocked_tickets: Number of blocked tickets
|
|
323
|
+
blocking_type: Type of blocker (technical, external, approval, etc.)
|
|
324
|
+
**context: Additional context values
|
|
325
|
+
"""
|
|
326
|
+
super().__init__(
|
|
327
|
+
blocked_tickets=blocked_tickets, blocking_type=blocking_type, **context
|
|
328
|
+
)
|
|
329
|
+
|
|
330
|
+
def build(self) -> QuestionSet:
|
|
331
|
+
"""Build dependency handling questions.
|
|
332
|
+
|
|
333
|
+
Returns:
|
|
334
|
+
QuestionSet with dependency questions
|
|
335
|
+
"""
|
|
336
|
+
blocked_tickets = self.get_context("blocked_tickets", 0)
|
|
337
|
+
blocking_type = self.get_context("blocking_type")
|
|
338
|
+
|
|
339
|
+
questions: list[StructuredQuestion] = []
|
|
340
|
+
|
|
341
|
+
# Question about handling blockers
|
|
342
|
+
if blocked_tickets > 0:
|
|
343
|
+
if blocking_type == "external":
|
|
344
|
+
blocker_question = (
|
|
345
|
+
QuestionBuilder()
|
|
346
|
+
.ask("How should we handle external dependencies?")
|
|
347
|
+
.header("Blockers")
|
|
348
|
+
.add_option(
|
|
349
|
+
"Wait for unblock",
|
|
350
|
+
"Pause blocked tickets until external dependency resolves",
|
|
351
|
+
)
|
|
352
|
+
.add_option(
|
|
353
|
+
"Mock and continue",
|
|
354
|
+
"Create mocks/stubs to continue development",
|
|
355
|
+
)
|
|
356
|
+
.add_option(
|
|
357
|
+
"Work around",
|
|
358
|
+
"Find alternative implementation to avoid dependency",
|
|
359
|
+
)
|
|
360
|
+
.build()
|
|
361
|
+
)
|
|
362
|
+
else:
|
|
363
|
+
blocker_question = (
|
|
364
|
+
QuestionBuilder()
|
|
365
|
+
.ask("How should we handle blocked tickets?")
|
|
366
|
+
.header("Blockers")
|
|
367
|
+
.add_option(
|
|
368
|
+
"Resolve blockers first",
|
|
369
|
+
"Prioritize unblocking tickets before continuing",
|
|
370
|
+
)
|
|
371
|
+
.add_option(
|
|
372
|
+
"Parallel work",
|
|
373
|
+
"Work on unblocked tickets while resolving blockers",
|
|
374
|
+
)
|
|
375
|
+
.build()
|
|
376
|
+
)
|
|
377
|
+
questions.append(blocker_question)
|
|
378
|
+
|
|
379
|
+
# Default question if no specific blockers
|
|
380
|
+
if not questions:
|
|
381
|
+
dependency_question = (
|
|
382
|
+
QuestionBuilder()
|
|
383
|
+
.ask("How should we manage ticket dependencies?")
|
|
384
|
+
.header("Dependencies")
|
|
385
|
+
.add_option(
|
|
386
|
+
"Strict ordering",
|
|
387
|
+
"Maintain strict dependency order, wait for prerequisites",
|
|
388
|
+
)
|
|
389
|
+
.add_option(
|
|
390
|
+
"Flexible approach",
|
|
391
|
+
"Start dependent work in parallel with preparation work",
|
|
392
|
+
)
|
|
393
|
+
.build()
|
|
394
|
+
)
|
|
395
|
+
questions.append(dependency_question)
|
|
396
|
+
|
|
397
|
+
return QuestionSet(questions)
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# SocketIO Debug Tool
|
|
2
|
+
|
|
3
|
+
A professional debugging tool for monitoring and analyzing SocketIO events in the claude-mpm dashboard.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The SocketIO debug tool is an essential utility for developers working on the claude-mpm dashboard. It provides real-time monitoring, filtering, and analysis of all SocketIO events flowing through the system.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
### 🔍 Real-Time Event Monitoring
|
|
12
|
+
- Live streaming of all SocketIO events
|
|
13
|
+
- Color-coded output with event type icons
|
|
14
|
+
- Automatic reconnection with exponential backoff
|
|
15
|
+
- Connection health monitoring with latency tracking
|
|
16
|
+
|
|
17
|
+
### 📊 Event Analysis
|
|
18
|
+
- Aggregated statistics and summaries
|
|
19
|
+
- Event rate calculation (events/second)
|
|
20
|
+
- Tool usage tracking
|
|
21
|
+
- Session monitoring and tracking
|
|
22
|
+
- Pattern detection for event bursts and gaps
|
|
23
|
+
|
|
24
|
+
### 🎯 Flexible Display Modes
|
|
25
|
+
- **Live Mode** (default): Real-time scrolling event display
|
|
26
|
+
- **Summary Mode**: Aggregated statistics and counts
|
|
27
|
+
- **Raw Mode**: Unformatted JSON output for debugging
|
|
28
|
+
- **Pretty Mode**: Enhanced formatting with colors and icons
|
|
29
|
+
- **Filtered Mode**: Show only specific event types
|
|
30
|
+
|
|
31
|
+
### 💾 Data Export
|
|
32
|
+
- Save events to JSONL format for analysis
|
|
33
|
+
- Quiet mode for background logging
|
|
34
|
+
- Configurable output paths
|
|
35
|
+
|
|
36
|
+
## Installation
|
|
37
|
+
|
|
38
|
+
The tool is included with claude-mpm and requires no additional installation.
|
|
39
|
+
|
|
40
|
+
## Usage
|
|
41
|
+
|
|
42
|
+
### Basic Commands
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Monitor all events in real-time
|
|
46
|
+
claude-mpm debug socketio
|
|
47
|
+
|
|
48
|
+
# Show event summary statistics
|
|
49
|
+
claude-mpm debug socketio --summary
|
|
50
|
+
|
|
51
|
+
# Filter specific event types
|
|
52
|
+
claude-mpm debug socketio --filter PreToolUse PostToolUse
|
|
53
|
+
|
|
54
|
+
# Save events to file
|
|
55
|
+
claude-mpm debug socketio --output events.jsonl
|
|
56
|
+
|
|
57
|
+
# Quiet mode for scripts
|
|
58
|
+
claude-mpm debug socketio --quiet --output events.jsonl
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Connection Options
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Connect to specific server
|
|
65
|
+
claude-mpm debug socketio --host localhost --port 8765
|
|
66
|
+
|
|
67
|
+
# Configure reconnection
|
|
68
|
+
claude-mpm debug socketio --max-reconnect 20 --reconnect-delay 2.0
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Display Modes
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Live monitoring (default)
|
|
75
|
+
claude-mpm debug socketio --live
|
|
76
|
+
|
|
77
|
+
# Statistical summary
|
|
78
|
+
claude-mpm debug socketio --summary
|
|
79
|
+
|
|
80
|
+
# Raw JSON output
|
|
81
|
+
claude-mpm debug socketio --raw
|
|
82
|
+
|
|
83
|
+
# Enhanced pretty output
|
|
84
|
+
claude-mpm debug socketio --pretty
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Output Format Examples
|
|
88
|
+
|
|
89
|
+
### Live Mode Output
|
|
90
|
+
```
|
|
91
|
+
╭─────────────────────────────────────────╮
|
|
92
|
+
│ SocketIO Event Monitor v1.0 │
|
|
93
|
+
├─────────────────────────────────────────┤
|
|
94
|
+
│ Server: localhost:8765 │
|
|
95
|
+
│ Status: ✅ Connected │
|
|
96
|
+
│ Latency: 12ms │
|
|
97
|
+
│ Uptime: 00:05:42 │
|
|
98
|
+
╰─────────────────────────────────────────╯
|
|
99
|
+
|
|
100
|
+
[14:23:45.123] 🔧 PreToolUse
|
|
101
|
+
├─ Tool: Read
|
|
102
|
+
├─ Session: abc-123-def
|
|
103
|
+
└─ Args: {"file_path": "README.md"}
|
|
104
|
+
|
|
105
|
+
[14:23:46.456] ✅ PostToolUse
|
|
106
|
+
├─ Tool: Read
|
|
107
|
+
├─ Duration: 1.33s
|
|
108
|
+
└─ Success: true
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Summary Mode Output
|
|
112
|
+
```
|
|
113
|
+
SOCKETIO EVENT MONITOR SUMMARY
|
|
114
|
+
=====================================
|
|
115
|
+
Server: localhost:8765
|
|
116
|
+
Status: ✅ Connected
|
|
117
|
+
Latency: 15ms
|
|
118
|
+
Uptime: 00:10:23
|
|
119
|
+
-------------------------------------
|
|
120
|
+
Total Events: 147
|
|
121
|
+
Events/Second: 2.4
|
|
122
|
+
Active Sessions: 3
|
|
123
|
+
-------------------------------------
|
|
124
|
+
Event Types:
|
|
125
|
+
PreToolUse: 42
|
|
126
|
+
PostToolUse: 41
|
|
127
|
+
SubagentStart: 18
|
|
128
|
+
SubagentStop: 17
|
|
129
|
+
-------------------------------------
|
|
130
|
+
Tool Usage:
|
|
131
|
+
Read: 31
|
|
132
|
+
Write: 22
|
|
133
|
+
Edit: 18
|
|
134
|
+
Task: 15
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Event Types
|
|
138
|
+
|
|
139
|
+
Common event types you'll encounter:
|
|
140
|
+
|
|
141
|
+
- **Start/Stop**: Main session lifecycle events
|
|
142
|
+
- **SubagentStart/SubagentStop**: Subagent delegation events
|
|
143
|
+
- **PreToolUse/PostToolUse**: Tool invocation tracking
|
|
144
|
+
- **MemoryUpdate**: Memory system changes
|
|
145
|
+
- **ConfigChange**: Configuration updates
|
|
146
|
+
- **Error/Warning**: System issues and alerts
|
|
147
|
+
|
|
148
|
+
## Integration with Dashboard
|
|
149
|
+
|
|
150
|
+
The debug tool connects to the same SocketIO server as the dashboard, allowing you to:
|
|
151
|
+
|
|
152
|
+
1. Monitor events while using the dashboard
|
|
153
|
+
2. Debug event flow issues
|
|
154
|
+
3. Verify event data structure
|
|
155
|
+
4. Track performance metrics
|
|
156
|
+
|
|
157
|
+
## Advanced Usage
|
|
158
|
+
|
|
159
|
+
### Filtering Multiple Event Types
|
|
160
|
+
```bash
|
|
161
|
+
claude-mpm debug socketio --filter Start Stop SubagentStart SubagentStop
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Combining with Other Tools
|
|
165
|
+
```bash
|
|
166
|
+
# Monitor and analyze with jq
|
|
167
|
+
claude-mpm debug socketio --raw | jq '.data.tool'
|
|
168
|
+
|
|
169
|
+
# Save and analyze offline
|
|
170
|
+
claude-mpm debug socketio --output events.jsonl
|
|
171
|
+
cat events.jsonl | jq 'select(.type == "PreToolUse")'
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Background Monitoring
|
|
175
|
+
```bash
|
|
176
|
+
# Run in background with output
|
|
177
|
+
nohup claude-mpm debug socketio --quiet --output /var/log/claude-events.jsonl &
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Troubleshooting
|
|
181
|
+
|
|
182
|
+
### Connection Issues
|
|
183
|
+
- Ensure SocketIO server is running: `claude-mpm monitor status`
|
|
184
|
+
- Check port availability: `claude-mpm debug connections`
|
|
185
|
+
- Verify firewall settings for localhost connections
|
|
186
|
+
|
|
187
|
+
### No Events Appearing
|
|
188
|
+
- Start a Claude session in another terminal: `claude-mpm run`
|
|
189
|
+
- Check server health: `claude-mpm debug connections --check-health`
|
|
190
|
+
- Verify event broadcasting is enabled
|
|
191
|
+
|
|
192
|
+
### Performance Impact
|
|
193
|
+
The debug tool has minimal performance impact:
|
|
194
|
+
- Passive event listening only
|
|
195
|
+
- Efficient event processing
|
|
196
|
+
- Optional file writing in separate thread
|
|
197
|
+
|
|
198
|
+
## Development
|
|
199
|
+
|
|
200
|
+
### Extending the Tool
|
|
201
|
+
|
|
202
|
+
The tool is designed to be extensible. Key files:
|
|
203
|
+
|
|
204
|
+
- `/src/claude_mpm/tools/socketio_debug.py` - Main tool implementation
|
|
205
|
+
- `/src/claude_mpm/cli/commands/debug.py` - CLI command integration
|
|
206
|
+
- `/src/claude_mpm/cli/parsers/debug_parser.py` - Argument parsing
|
|
207
|
+
|
|
208
|
+
### Adding New Features
|
|
209
|
+
|
|
210
|
+
1. Event filtering by regex patterns
|
|
211
|
+
2. Event replay from saved files
|
|
212
|
+
3. Performance profiling integration
|
|
213
|
+
4. Custom event handlers
|
|
214
|
+
|
|
215
|
+
## Related Commands
|
|
216
|
+
|
|
217
|
+
- `claude-mpm monitor status` - Check SocketIO server status
|
|
218
|
+
- `claude-mpm monitor start` - Start SocketIO server
|
|
219
|
+
- `claude-mpm debug connections` - Show active connections
|
|
220
|
+
- `claude-mpm run --websocket` - Run with SocketIO enabled
|
|
221
|
+
|
|
222
|
+
## Support
|
|
223
|
+
|
|
224
|
+
For issues or feature requests, please refer to the main claude-mpm documentation or submit an issue on the project repository.
|
claude_mpm/tools/__main__.py
CHANGED
|
@@ -173,14 +173,14 @@ def main():
|
|
|
173
173
|
Code Analysis Summary
|
|
174
174
|
=====================
|
|
175
175
|
Path: {path}
|
|
176
|
-
Files processed: {stats.get(
|
|
177
|
-
Total nodes: {stats.get(
|
|
178
|
-
Classes: {stats.get(
|
|
179
|
-
Functions: {stats.get(
|
|
180
|
-
Imports: {stats.get(
|
|
181
|
-
Languages: {
|
|
182
|
-
Average complexity: {stats.get(
|
|
183
|
-
Duration: {stats.get(
|
|
176
|
+
Files processed: {stats.get("files_processed", 0)}
|
|
177
|
+
Total nodes: {stats.get("total_nodes", 0)}
|
|
178
|
+
Classes: {stats.get("classes", 0)}
|
|
179
|
+
Functions: {stats.get("functions", 0)}
|
|
180
|
+
Imports: {stats.get("imports", 0)}
|
|
181
|
+
Languages: {", ".join(stats.get("languages", []))}
|
|
182
|
+
Average complexity: {stats.get("avg_complexity", 0):.2f}
|
|
183
|
+
Duration: {stats.get("duration", 0):.2f}s
|
|
184
184
|
"""
|
|
185
185
|
if output_file:
|
|
186
186
|
output_file.write(summary)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Code Tree Analyzer Module
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The Code Tree Analyzer provides AST-based analysis of source code files across multiple programming languages.
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
|
|
9
|
+
This module has been refactored from a single 1,825-line file into focused, maintainable components:
|
|
10
|
+
|
|
11
|
+
### Core Components
|
|
12
|
+
|
|
13
|
+
- **`core.py`** - Main CodeTreeAnalyzer orchestrator
|
|
14
|
+
- **`models.py`** - CodeNode data structure
|
|
15
|
+
- **`gitignore.py`** - GitignoreManager for pattern matching
|
|
16
|
+
- **`python_analyzer.py`** - Python AST analysis
|
|
17
|
+
- **`multilang_analyzer.py`** - Multi-language support via tree-sitter
|
|
18
|
+
|
|
19
|
+
### Supporting Modules
|
|
20
|
+
|
|
21
|
+
- **`cache.py`** - Caching logic for analyzed files
|
|
22
|
+
- **`discovery.py`** - Directory traversal and file discovery
|
|
23
|
+
- **`events.py`** - Event emission for UI updates
|
|
24
|
+
- **`analysis.py`** - File analysis coordination
|
|
25
|
+
|
|
26
|
+
## Design Principles
|
|
27
|
+
|
|
28
|
+
- **Single Responsibility**: Each module handles one clear concern
|
|
29
|
+
- **Backward Compatibility**: All existing imports work unchanged
|
|
30
|
+
- **Testability**: Isolated components are easier to test
|
|
31
|
+
- **Maintainability**: ~200-300 lines per file, well-documented
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
from claude_mpm.tools.code_tree_analyzer import CodeTreeAnalyzer, CodeNode
|
|
37
|
+
|
|
38
|
+
# Create analyzer
|
|
39
|
+
analyzer = CodeTreeAnalyzer(emit_events=True)
|
|
40
|
+
|
|
41
|
+
# Analyze directory
|
|
42
|
+
result = analyzer.analyze_directory(Path("/path/to/code"))
|
|
43
|
+
|
|
44
|
+
# Access results
|
|
45
|
+
print(result['stats'])
|
|
46
|
+
for node in result['nodes']:
|
|
47
|
+
print(f"{node.name} ({node.node_type})")
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Supported Languages
|
|
51
|
+
|
|
52
|
+
- Python (via AST module)
|
|
53
|
+
- JavaScript/TypeScript (via tree-sitter)
|
|
54
|
+
- Generic support for other languages
|
|
55
|
+
|
|
56
|
+
## Event System
|
|
57
|
+
|
|
58
|
+
The analyzer emits real-time events during analysis:
|
|
59
|
+
- File discovery
|
|
60
|
+
- Analysis progress
|
|
61
|
+
- Node extraction
|
|
62
|
+
- Error handling
|
|
63
|
+
|
|
64
|
+
These events enable live UI updates in the dashboard.
|