claude-mpm 4.20.3__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_PM.md +23 -6
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1783 -34
- claude_mpm/agents/WORKFLOW.md +75 -2
- 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/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/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/security.json +4 -4
- 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/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 +522 -34
- claude_mpm/cli/executor.py +56 -0
- claude_mpm/cli/interactive/agent_wizard.py +5 -5
- claude_mpm/cli/parsers/base_parser.py +28 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skills_parser.py +138 -0
- claude_mpm/cli/startup.py +111 -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-help.md +3 -0
- claude_mpm/commands/mpm-init.md +19 -3
- claude_mpm/commands/mpm-resume.md +372 -0
- claude_mpm/commands/mpm-tickets.md +56 -7
- claude_mpm/commands/mpm.md +1 -0
- claude_mpm/config/agent_capabilities.yaml +658 -0
- claude_mpm/config/async_logging_config.yaml +145 -0
- claude_mpm/constants.py +12 -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 +8 -0
- claude_mpm/core/constants.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/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/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/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/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/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- 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 +3 -1
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +36 -16
- 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/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/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_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/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/version_control/VERSION +1 -0
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +3 -3
- claude_mpm/skills/agent_skills_injector.py +42 -49
- claude_mpm/skills/bundled/.gitkeep +2 -0
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +4 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +108 -114
- 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 +46 -41
- 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 +36 -73
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +100 -125
- 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/verification-before-completion/SKILL.md +28 -72
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +11 -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 +272 -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/main/artifacts-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +13 -1
- 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 +11 -0
- claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +109 -277
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
- 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 +135 -155
- 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 +13 -12
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
- claude_mpm/skills/bundled/performance-profiling.md +6 -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/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/tauri/tauri-async-patterns.md +495 -0
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
- claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
- claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +21 -25
- 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-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 +86 -250
- 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 +145 -57
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
- 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 +37 -15
- 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/skills_registry.py +44 -48
- claude_mpm/skills/skills_service.py +117 -108
- 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 +3 -3
- 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.20.3.dist-info → claude_mpm-4.25.10.dist-info}/METADATA +218 -31
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +409 -246
- 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 -2093
- 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/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- /claude_mpm/skills/bundled/collaboration/requesting-code-review/{code-reviewer.md → references/code-reviewer-template.md} +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/top_level.txt +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tree Breadcrumb Navigation
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Breadcrumb navigation and status display for the code tree.
|
|
5
5
|
* Provides path navigation and activity status updates.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* @module tree-breadcrumb
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -48,7 +48,7 @@ class TreeBreadcrumb {
|
|
|
48
48
|
// Create path navigation
|
|
49
49
|
const pathContainer = document.createElement('div');
|
|
50
50
|
pathContainer.className = 'tree-breadcrumb-path-container';
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
this.pathElement = document.createElement('div');
|
|
53
53
|
this.pathElement.id = 'tree-breadcrumb-path';
|
|
54
54
|
this.pathElement.className = 'tree-breadcrumb-path';
|
|
@@ -57,7 +57,7 @@ class TreeBreadcrumb {
|
|
|
57
57
|
// Create status/activity display
|
|
58
58
|
const statusContainer = document.createElement('div');
|
|
59
59
|
statusContainer.className = 'tree-breadcrumb-status-container';
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
this.statusElement = document.createElement('div');
|
|
62
62
|
this.statusElement.id = 'breadcrumb-content';
|
|
63
63
|
this.statusElement.className = 'breadcrumb-content';
|
|
@@ -83,14 +83,14 @@ class TreeBreadcrumb {
|
|
|
83
83
|
*/
|
|
84
84
|
updatePath(path) {
|
|
85
85
|
this.currentPath = path || '/';
|
|
86
|
-
|
|
86
|
+
|
|
87
87
|
if (!this.pathElement) return;
|
|
88
88
|
|
|
89
89
|
// Clear existing path
|
|
90
90
|
this.pathElement.innerHTML = '';
|
|
91
91
|
|
|
92
|
-
if (!this.workingDirectory ||
|
|
93
|
-
this.workingDirectory === 'Loading...' ||
|
|
92
|
+
if (!this.workingDirectory ||
|
|
93
|
+
this.workingDirectory === 'Loading...' ||
|
|
94
94
|
this.workingDirectory === 'Not selected') {
|
|
95
95
|
this.pathElement.textContent = 'No project selected';
|
|
96
96
|
return;
|
|
@@ -98,7 +98,7 @@ class TreeBreadcrumb {
|
|
|
98
98
|
|
|
99
99
|
// Build path segments
|
|
100
100
|
const segments = this.buildSegments(this.currentPath);
|
|
101
|
-
|
|
101
|
+
|
|
102
102
|
// Create clickable segments
|
|
103
103
|
segments.forEach((segment, index) => {
|
|
104
104
|
if (index > 0) {
|
|
@@ -109,17 +109,17 @@ class TreeBreadcrumb {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
const segmentElement = document.createElement('span');
|
|
112
|
-
segmentElement.className = index === segments.length - 1 ?
|
|
112
|
+
segmentElement.className = index === segments.length - 1 ?
|
|
113
113
|
'breadcrumb-segment current' : 'breadcrumb-segment';
|
|
114
114
|
segmentElement.textContent = segment.name;
|
|
115
|
-
|
|
115
|
+
|
|
116
116
|
// Add click handler for non-current segments
|
|
117
117
|
if (index < segments.length - 1) {
|
|
118
118
|
segmentElement.style.cursor = 'pointer';
|
|
119
119
|
segmentElement.addEventListener('click', () => {
|
|
120
120
|
this.navigateToSegment(segment.path);
|
|
121
121
|
});
|
|
122
|
-
|
|
122
|
+
|
|
123
123
|
// Add hover effect
|
|
124
124
|
segmentElement.addEventListener('mouseenter', () => {
|
|
125
125
|
segmentElement.classList.add('hover');
|
|
@@ -128,7 +128,7 @@ class TreeBreadcrumb {
|
|
|
128
128
|
segmentElement.classList.remove('hover');
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
|
-
|
|
131
|
+
|
|
132
132
|
this.pathElement.appendChild(segmentElement);
|
|
133
133
|
});
|
|
134
134
|
|
|
@@ -143,7 +143,7 @@ class TreeBreadcrumb {
|
|
|
143
143
|
*/
|
|
144
144
|
buildSegments(path) {
|
|
145
145
|
const segments = [];
|
|
146
|
-
|
|
146
|
+
|
|
147
147
|
// Add root/project segment
|
|
148
148
|
const projectName = this.workingDirectory.split('/').pop() || 'Root';
|
|
149
149
|
segments.push({
|
|
@@ -155,7 +155,7 @@ class TreeBreadcrumb {
|
|
|
155
155
|
if (path && path !== '/') {
|
|
156
156
|
const pathParts = path.split('/').filter(p => p.length > 0);
|
|
157
157
|
let currentPath = '';
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
pathParts.forEach(part => {
|
|
160
160
|
currentPath += '/' + part;
|
|
161
161
|
segments.push({
|
|
@@ -184,15 +184,15 @@ class TreeBreadcrumb {
|
|
|
184
184
|
*/
|
|
185
185
|
navigateToSegment(path) {
|
|
186
186
|
if (path === null) return; // Skip ellipsis
|
|
187
|
-
|
|
187
|
+
|
|
188
188
|
this.currentPath = path;
|
|
189
189
|
this.updatePath(path);
|
|
190
|
-
|
|
190
|
+
|
|
191
191
|
// Call navigation callback if provided
|
|
192
192
|
if (this.navigationCallback) {
|
|
193
193
|
this.navigationCallback(path);
|
|
194
194
|
}
|
|
195
|
-
|
|
195
|
+
|
|
196
196
|
// Dispatch custom event
|
|
197
197
|
const event = new CustomEvent('breadcrumbNavigation', {
|
|
198
198
|
detail: { path }
|
|
@@ -207,10 +207,10 @@ class TreeBreadcrumb {
|
|
|
207
207
|
*/
|
|
208
208
|
updateStatus(message, type = 'info') {
|
|
209
209
|
if (!this.statusElement) return;
|
|
210
|
-
|
|
210
|
+
|
|
211
211
|
this.statusElement.textContent = message;
|
|
212
212
|
this.statusElement.className = `breadcrumb-content breadcrumb-${type}`;
|
|
213
|
-
|
|
213
|
+
|
|
214
214
|
// Add fade animation for status changes
|
|
215
215
|
this.statusElement.style.animation = 'none';
|
|
216
216
|
setTimeout(() => {
|
|
@@ -225,18 +225,18 @@ class TreeBreadcrumb {
|
|
|
225
225
|
*/
|
|
226
226
|
updateActivityTicker(message, type = 'info') {
|
|
227
227
|
this.updateStatus(message, type);
|
|
228
|
-
|
|
228
|
+
|
|
229
229
|
// Optional: Add to activity history
|
|
230
230
|
if (!this.activityHistory) {
|
|
231
231
|
this.activityHistory = [];
|
|
232
232
|
}
|
|
233
|
-
|
|
233
|
+
|
|
234
234
|
this.activityHistory.push({
|
|
235
235
|
message,
|
|
236
236
|
type,
|
|
237
237
|
timestamp: Date.now()
|
|
238
238
|
});
|
|
239
|
-
|
|
239
|
+
|
|
240
240
|
// Keep only last 100 activities
|
|
241
241
|
if (this.activityHistory.length > 100) {
|
|
242
242
|
this.activityHistory.shift();
|
|
@@ -248,7 +248,7 @@ class TreeBreadcrumb {
|
|
|
248
248
|
*/
|
|
249
249
|
handlePathOverflow() {
|
|
250
250
|
if (!this.pathElement) return;
|
|
251
|
-
|
|
251
|
+
|
|
252
252
|
// Check if path overflows
|
|
253
253
|
if (this.pathElement.scrollWidth > this.pathElement.clientWidth) {
|
|
254
254
|
// Add scroll buttons or implement horizontal scroll
|
|
@@ -266,7 +266,7 @@ class TreeBreadcrumb {
|
|
|
266
266
|
*/
|
|
267
267
|
showLoading(message = 'Loading...') {
|
|
268
268
|
this.updateStatus(message, 'info');
|
|
269
|
-
|
|
269
|
+
|
|
270
270
|
// Add loading spinner if needed
|
|
271
271
|
if (this.statusElement) {
|
|
272
272
|
const spinner = document.createElement('span');
|
|
@@ -310,16 +310,16 @@ class TreeBreadcrumb {
|
|
|
310
310
|
clear() {
|
|
311
311
|
this.currentPath = '/';
|
|
312
312
|
this.workingDirectory = null;
|
|
313
|
-
|
|
313
|
+
|
|
314
314
|
if (this.pathElement) {
|
|
315
315
|
this.pathElement.innerHTML = '';
|
|
316
316
|
}
|
|
317
|
-
|
|
317
|
+
|
|
318
318
|
if (this.statusElement) {
|
|
319
319
|
this.statusElement.textContent = '';
|
|
320
320
|
this.statusElement.className = 'breadcrumb-content';
|
|
321
321
|
}
|
|
322
|
-
|
|
322
|
+
|
|
323
323
|
this.activityHistory = [];
|
|
324
324
|
}
|
|
325
325
|
|
|
@@ -328,11 +328,11 @@ class TreeBreadcrumb {
|
|
|
328
328
|
*/
|
|
329
329
|
destroy() {
|
|
330
330
|
this.clear();
|
|
331
|
-
|
|
331
|
+
|
|
332
332
|
if (this.container) {
|
|
333
333
|
this.container.innerHTML = '';
|
|
334
334
|
}
|
|
335
|
-
|
|
335
|
+
|
|
336
336
|
this.container = null;
|
|
337
337
|
this.pathElement = null;
|
|
338
338
|
this.statusElement = null;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tree Constants and Configuration
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Constants and default configurations for the code tree visualization.
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
6
|
* @module tree-constants
|
|
7
7
|
*/
|
|
8
8
|
|
|
@@ -11,12 +11,12 @@ const treeConstants = {
|
|
|
11
11
|
DEFAULT_MARGIN: { top: 20, right: 20, bottom: 20, left: 20 },
|
|
12
12
|
DEFAULT_WIDTH: 960,
|
|
13
13
|
DEFAULT_HEIGHT: 600,
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
// Animation settings
|
|
16
16
|
ANIMATION_DURATION: 750,
|
|
17
17
|
TOOLTIP_FADE_DURATION: 200,
|
|
18
18
|
TOOLTIP_HIDE_DELAY: 500,
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
// Node visualization
|
|
21
21
|
NODE_RADIUS: {
|
|
22
22
|
DEFAULT: 6,
|
|
@@ -24,38 +24,38 @@ const treeConstants = {
|
|
|
24
24
|
LARGE: 8,
|
|
25
25
|
EXPANDED: 10
|
|
26
26
|
},
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
// Colors
|
|
29
29
|
COLORS: {
|
|
30
30
|
// Complexity colors
|
|
31
31
|
COMPLEXITY_LOW: '#52c41a', // Green
|
|
32
32
|
COMPLEXITY_MEDIUM: '#faad14', // Orange
|
|
33
33
|
COMPLEXITY_HIGH: '#f5222d', // Red
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
// Node state colors
|
|
36
36
|
NODE_DEFAULT: '#69b7ff',
|
|
37
37
|
NODE_SELECTED: '#1890ff',
|
|
38
38
|
NODE_HOVER: '#40a9ff',
|
|
39
39
|
NODE_LOADING: '#ffc53d',
|
|
40
40
|
NODE_ERROR: '#ff4d4f',
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
// Link colors
|
|
43
43
|
LINK_DEFAULT: '#d9d9d9',
|
|
44
44
|
LINK_SELECTED: '#1890ff',
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
// Text colors
|
|
47
47
|
TEXT_PRIMARY: '#262626',
|
|
48
48
|
TEXT_SECONDARY: '#8c8c8c',
|
|
49
49
|
TEXT_DISABLED: '#bfbfbf'
|
|
50
50
|
},
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
// Tree layout
|
|
53
53
|
TREE_LAYOUT: {
|
|
54
54
|
NODE_SIZE: [100, 40],
|
|
55
55
|
SEPARATION: (a, b) => (a.parent === b.parent ? 1 : 2),
|
|
56
56
|
RADIAL_SEPARATION: (a, b) => (a.parent === b.parent ? 1 : 2) / a.depth
|
|
57
57
|
},
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
// File type mappings
|
|
60
60
|
LANGUAGE_EXTENSIONS: {
|
|
61
61
|
'py': 'python',
|
|
@@ -95,7 +95,7 @@ const treeConstants = {
|
|
|
95
95
|
'bat': 'batch',
|
|
96
96
|
'md': 'markdown'
|
|
97
97
|
},
|
|
98
|
-
|
|
98
|
+
|
|
99
99
|
// Default filters
|
|
100
100
|
DEFAULT_FILTERS: {
|
|
101
101
|
language: 'all',
|
|
@@ -104,7 +104,7 @@ const treeConstants = {
|
|
|
104
104
|
maxComplexity: 999,
|
|
105
105
|
showHidden: false
|
|
106
106
|
},
|
|
107
|
-
|
|
107
|
+
|
|
108
108
|
// API endpoints
|
|
109
109
|
API_ENDPOINTS: {
|
|
110
110
|
FILE_READ: '/api/file/read',
|
|
@@ -112,7 +112,7 @@ const treeConstants = {
|
|
|
112
112
|
ANALYZE_DIRECTORY: '/api/analyze/directory',
|
|
113
113
|
SEARCH: '/api/search'
|
|
114
114
|
},
|
|
115
|
-
|
|
115
|
+
|
|
116
116
|
// WebSocket events
|
|
117
117
|
SOCKET_EVENTS: {
|
|
118
118
|
CONNECT: 'connect',
|
|
@@ -126,7 +126,7 @@ const treeConstants = {
|
|
|
126
126
|
NODE_EXPANDED: 'node_expanded',
|
|
127
127
|
NODE_COLLAPSED: 'node_collapsed'
|
|
128
128
|
},
|
|
129
|
-
|
|
129
|
+
|
|
130
130
|
// Messages
|
|
131
131
|
MESSAGES: {
|
|
132
132
|
NO_WORKING_DIR: 'Please select a working directory to view the code tree',
|
|
@@ -139,7 +139,7 @@ const treeConstants = {
|
|
|
139
139
|
CLICK_TO_EXPLORE: 'Click to explore contents',
|
|
140
140
|
CLICK_TO_ANALYZE: 'Click to analyze file'
|
|
141
141
|
},
|
|
142
|
-
|
|
142
|
+
|
|
143
143
|
// Performance thresholds
|
|
144
144
|
PERFORMANCE: {
|
|
145
145
|
MAX_NODES_RENDER: 1000,
|
|
@@ -148,7 +148,7 @@ const treeConstants = {
|
|
|
148
148
|
DEBOUNCE_RESIZE: 150,
|
|
149
149
|
CACHE_TTL: 300000 // 5 minutes
|
|
150
150
|
},
|
|
151
|
-
|
|
151
|
+
|
|
152
152
|
// Icon mappings
|
|
153
153
|
ICONS: {
|
|
154
154
|
// Node type icons
|
|
@@ -160,13 +160,13 @@ const treeConstants = {
|
|
|
160
160
|
VARIABLE: '📍',
|
|
161
161
|
DIRECTORY: '📁',
|
|
162
162
|
FILE: '📄',
|
|
163
|
-
|
|
163
|
+
|
|
164
164
|
// State icons
|
|
165
165
|
LOADING: '⏳',
|
|
166
166
|
ERROR: '❌',
|
|
167
167
|
WARNING: '⚠️',
|
|
168
168
|
SUCCESS: '✅',
|
|
169
|
-
|
|
169
|
+
|
|
170
170
|
// Action icons
|
|
171
171
|
EXPAND: '▶',
|
|
172
172
|
COLLAPSE: '▼',
|
|
@@ -175,34 +175,34 @@ const treeConstants = {
|
|
|
175
175
|
REFRESH: '🔄',
|
|
176
176
|
SETTINGS: '⚙️'
|
|
177
177
|
},
|
|
178
|
-
|
|
178
|
+
|
|
179
179
|
// CSS classes
|
|
180
180
|
CSS_CLASSES: {
|
|
181
181
|
// Container classes
|
|
182
182
|
CONTAINER: 'code-tree-container',
|
|
183
183
|
SVG: 'code-tree-svg',
|
|
184
184
|
GROUP: 'code-tree-group',
|
|
185
|
-
|
|
185
|
+
|
|
186
186
|
// Node classes
|
|
187
187
|
NODE: 'tree-node',
|
|
188
188
|
NODE_SELECTED: 'tree-node-selected',
|
|
189
189
|
NODE_HOVER: 'tree-node-hover',
|
|
190
190
|
NODE_LOADING: 'tree-node-loading',
|
|
191
191
|
NODE_ERROR: 'tree-node-error',
|
|
192
|
-
|
|
192
|
+
|
|
193
193
|
// Link classes
|
|
194
194
|
LINK: 'tree-link',
|
|
195
195
|
LINK_SELECTED: 'tree-link-selected',
|
|
196
|
-
|
|
196
|
+
|
|
197
197
|
// Text classes
|
|
198
198
|
LABEL: 'tree-label',
|
|
199
199
|
LABEL_PRIMARY: 'tree-label-primary',
|
|
200
200
|
LABEL_SECONDARY: 'tree-label-secondary',
|
|
201
|
-
|
|
201
|
+
|
|
202
202
|
// Tooltip classes
|
|
203
203
|
TOOLTIP: 'code-tree-tooltip',
|
|
204
204
|
TOOLTIP_VISIBLE: 'code-tree-tooltip-visible',
|
|
205
|
-
|
|
205
|
+
|
|
206
206
|
// Control classes
|
|
207
207
|
CONTROLS: 'tree-controls',
|
|
208
208
|
CONTROL_BTN: 'tree-control-btn',
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tree Search Functionality
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Search and filter functionality for the code tree visualization.
|
|
5
5
|
* Provides searching, filtering, and highlighting capabilities.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* @module tree-search
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -27,7 +27,7 @@ class TreeSearch {
|
|
|
27
27
|
*/
|
|
28
28
|
setSearchTerm(term, callback, immediate = false) {
|
|
29
29
|
this.searchTerm = term.toLowerCase();
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
if (callback) {
|
|
32
32
|
if (immediate) {
|
|
33
33
|
callback(this.searchTerm);
|
|
@@ -35,7 +35,7 @@ class TreeSearch {
|
|
|
35
35
|
this.debounce(() => callback(this.searchTerm), this.debounceDelay);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
// Add to history if not empty and not duplicate
|
|
40
40
|
if (term && this.searchHistory[0] !== term) {
|
|
41
41
|
this.searchHistory.unshift(term);
|
|
@@ -85,7 +85,7 @@ class TreeSearch {
|
|
|
85
85
|
root.descendants().forEach(node => {
|
|
86
86
|
const shouldHide = !this.nodeMatchesFilters(node);
|
|
87
87
|
node.data._hidden = shouldHide;
|
|
88
|
-
|
|
88
|
+
|
|
89
89
|
// Mark node for search highlighting
|
|
90
90
|
if (this.searchTerm && !shouldHide) {
|
|
91
91
|
node.data._highlighted = this.nodeMatchesSearch(node);
|
|
@@ -138,18 +138,18 @@ class TreeSearch {
|
|
|
138
138
|
if (this.languageFilter === 'all') {
|
|
139
139
|
return true;
|
|
140
140
|
}
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
// Check node language
|
|
143
143
|
if (node.data.language === this.languageFilter) {
|
|
144
144
|
return true;
|
|
145
145
|
}
|
|
146
|
-
|
|
146
|
+
|
|
147
147
|
// Check if any children match (for directories)
|
|
148
148
|
if (node.children || node._children) {
|
|
149
149
|
const children = node.children || node._children;
|
|
150
150
|
return children.some(child => this.matchesLanguageFilter(child));
|
|
151
151
|
}
|
|
152
|
-
|
|
152
|
+
|
|
153
153
|
return false;
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -191,8 +191,8 @@ class TreeSearch {
|
|
|
191
191
|
if (node.data.complexity === undefined) {
|
|
192
192
|
return true; // No complexity data, show by default
|
|
193
193
|
}
|
|
194
|
-
|
|
195
|
-
return node.data.complexity >= this.complexityFilter.min &&
|
|
194
|
+
|
|
195
|
+
return node.data.complexity >= this.complexityFilter.min &&
|
|
196
196
|
node.data.complexity <= this.complexityFilter.max;
|
|
197
197
|
}
|
|
198
198
|
|
|
@@ -205,7 +205,7 @@ class TreeSearch {
|
|
|
205
205
|
if (this.typeFilter === 'all') {
|
|
206
206
|
return true;
|
|
207
207
|
}
|
|
208
|
-
|
|
208
|
+
|
|
209
209
|
return node.data.type === this.typeFilter;
|
|
210
210
|
}
|
|
211
211
|
|
|
@@ -218,7 +218,7 @@ class TreeSearch {
|
|
|
218
218
|
if (!this.searchTerm) {
|
|
219
219
|
return false;
|
|
220
220
|
}
|
|
221
|
-
|
|
221
|
+
|
|
222
222
|
const name = (node.data.name || '').toLowerCase();
|
|
223
223
|
return name.includes(this.searchTerm);
|
|
224
224
|
}
|
|
@@ -229,7 +229,7 @@ class TreeSearch {
|
|
|
229
229
|
*/
|
|
230
230
|
resetNodeVisibility(root) {
|
|
231
231
|
if (!root) return;
|
|
232
|
-
|
|
232
|
+
|
|
233
233
|
root.descendants().forEach(node => {
|
|
234
234
|
node.data._hidden = false;
|
|
235
235
|
node.data._highlighted = false;
|
|
@@ -245,21 +245,21 @@ class TreeSearch {
|
|
|
245
245
|
const checkVisibility = (node) => {
|
|
246
246
|
if (node.children) {
|
|
247
247
|
let hasVisibleChild = false;
|
|
248
|
-
|
|
248
|
+
|
|
249
249
|
node.children.forEach(child => {
|
|
250
250
|
checkVisibility(child);
|
|
251
251
|
if (!child.data._hidden) {
|
|
252
252
|
hasVisibleChild = true;
|
|
253
253
|
}
|
|
254
254
|
});
|
|
255
|
-
|
|
255
|
+
|
|
256
256
|
// If node has visible children, it must be visible too
|
|
257
257
|
if (hasVisibleChild && node.data._hidden) {
|
|
258
258
|
node.data._hidden = false;
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
261
|
};
|
|
262
|
-
|
|
262
|
+
|
|
263
263
|
checkVisibility(root);
|
|
264
264
|
}
|
|
265
265
|
|
|
@@ -271,16 +271,16 @@ class TreeSearch {
|
|
|
271
271
|
*/
|
|
272
272
|
searchByPath(root, pattern) {
|
|
273
273
|
if (!root || !pattern) return [];
|
|
274
|
-
|
|
274
|
+
|
|
275
275
|
const results = [];
|
|
276
276
|
const regexPattern = this.pathPatternToRegex(pattern);
|
|
277
|
-
|
|
277
|
+
|
|
278
278
|
root.descendants().forEach(node => {
|
|
279
279
|
if (node.data.path && regexPattern.test(node.data.path)) {
|
|
280
280
|
results.push(node);
|
|
281
281
|
}
|
|
282
282
|
});
|
|
283
|
-
|
|
283
|
+
|
|
284
284
|
return results;
|
|
285
285
|
}
|
|
286
286
|
|
|
@@ -296,7 +296,7 @@ class TreeSearch {
|
|
|
296
296
|
const regexStr = escaped
|
|
297
297
|
.replace(/\*/g, '.*') // * matches any characters
|
|
298
298
|
.replace(/\?/g, '.'); // ? matches single character
|
|
299
|
-
|
|
299
|
+
|
|
300
300
|
return new RegExp('^' + regexStr + '$', 'i');
|
|
301
301
|
}
|
|
302
302
|
|
|
@@ -308,10 +308,10 @@ class TreeSearch {
|
|
|
308
308
|
*/
|
|
309
309
|
getSearchSuggestions(root, prefix = '') {
|
|
310
310
|
if (!root) return [];
|
|
311
|
-
|
|
311
|
+
|
|
312
312
|
const suggestions = new Set();
|
|
313
313
|
const lowerPrefix = prefix.toLowerCase();
|
|
314
|
-
|
|
314
|
+
|
|
315
315
|
root.descendants().forEach(node => {
|
|
316
316
|
if (node.data.name) {
|
|
317
317
|
const name = node.data.name.toLowerCase();
|
|
@@ -320,7 +320,7 @@ class TreeSearch {
|
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
322
|
});
|
|
323
|
-
|
|
323
|
+
|
|
324
324
|
return Array.from(suggestions).sort().slice(0, 10);
|
|
325
325
|
}
|
|
326
326
|
|
|
@@ -332,11 +332,11 @@ class TreeSearch {
|
|
|
332
332
|
*/
|
|
333
333
|
highlightSearchTerm(text, term = null) {
|
|
334
334
|
const searchTerm = term || this.searchTerm;
|
|
335
|
-
|
|
335
|
+
|
|
336
336
|
if (!searchTerm || !text) {
|
|
337
337
|
return text;
|
|
338
338
|
}
|
|
339
|
-
|
|
339
|
+
|
|
340
340
|
const regex = new RegExp(`(${this.escapeRegex(searchTerm)})`, 'gi');
|
|
341
341
|
return text.replace(regex, '<mark>$1</mark>');
|
|
342
342
|
}
|
|
@@ -357,7 +357,7 @@ class TreeSearch {
|
|
|
357
357
|
*/
|
|
358
358
|
getFilterSummary() {
|
|
359
359
|
const parts = [];
|
|
360
|
-
|
|
360
|
+
|
|
361
361
|
if (this.searchTerm) {
|
|
362
362
|
parts.push(`Search: "${this.searchTerm}"`);
|
|
363
363
|
}
|
|
@@ -370,7 +370,7 @@ class TreeSearch {
|
|
|
370
370
|
if (this.complexityFilter.min > 0 || this.complexityFilter.max < 999) {
|
|
371
371
|
parts.push(`Complexity: ${this.complexityFilter.min}-${this.complexityFilter.max}`);
|
|
372
372
|
}
|
|
373
|
-
|
|
373
|
+
|
|
374
374
|
return parts.length > 0 ? parts.join(', ') : 'No filters applied';
|
|
375
375
|
}
|
|
376
376
|
|