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.

Files changed (454) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +23 -6
  3. claude_mpm/agents/OUTPUT_STYLE.md +3 -48
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +1783 -34
  5. claude_mpm/agents/WORKFLOW.md +75 -2
  6. claude_mpm/agents/base_agent.json +6 -3
  7. claude_mpm/agents/frontmatter_validator.py +1 -1
  8. claude_mpm/agents/templates/api_qa.json +5 -2
  9. claude_mpm/agents/templates/circuit_breakers.md +108 -2
  10. claude_mpm/agents/templates/documentation.json +33 -6
  11. claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
  12. claude_mpm/agents/templates/php-engineer.json +10 -4
  13. claude_mpm/agents/templates/pm_red_flags.md +89 -19
  14. claude_mpm/agents/templates/project_organizer.json +7 -3
  15. claude_mpm/agents/templates/qa.json +2 -1
  16. claude_mpm/agents/templates/react_engineer.json +1 -0
  17. claude_mpm/agents/templates/research.json +82 -12
  18. claude_mpm/agents/templates/security.json +4 -4
  19. claude_mpm/agents/templates/tauri_engineer.json +274 -0
  20. claude_mpm/agents/templates/ticketing.json +10 -6
  21. claude_mpm/agents/templates/version_control.json +4 -2
  22. claude_mpm/agents/templates/web_qa.json +2 -1
  23. claude_mpm/cli/README.md +253 -0
  24. claude_mpm/cli/__init__.py +11 -1
  25. claude_mpm/cli/commands/aggregate.py +1 -1
  26. claude_mpm/cli/commands/analyze.py +3 -3
  27. claude_mpm/cli/commands/cleanup.py +1 -1
  28. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  29. claude_mpm/cli/commands/debug.py +12 -12
  30. claude_mpm/cli/commands/hook_errors.py +277 -0
  31. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  32. claude_mpm/cli/commands/mcp_install_commands.py.backup +284 -0
  33. claude_mpm/cli/commands/mpm_init/README.md +365 -0
  34. claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
  35. claude_mpm/cli/commands/mpm_init/core.py +573 -0
  36. claude_mpm/cli/commands/mpm_init/display.py +341 -0
  37. claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
  38. claude_mpm/cli/commands/mpm_init/modes.py +397 -0
  39. claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
  40. claude_mpm/cli/commands/mpm_init_cli.py +396 -0
  41. claude_mpm/cli/commands/mpm_init_handler.py +67 -1
  42. claude_mpm/cli/commands/run.py +124 -128
  43. claude_mpm/cli/commands/skills.py +522 -34
  44. claude_mpm/cli/executor.py +56 -0
  45. claude_mpm/cli/interactive/agent_wizard.py +5 -5
  46. claude_mpm/cli/parsers/base_parser.py +28 -0
  47. claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
  48. claude_mpm/cli/parsers/skills_parser.py +138 -0
  49. claude_mpm/cli/startup.py +111 -8
  50. claude_mpm/cli/startup_display.py +480 -0
  51. claude_mpm/cli/utils.py +1 -1
  52. claude_mpm/cli_module/commands.py +1 -1
  53. claude_mpm/cli_module/refactoring_guide.md +253 -0
  54. claude_mpm/commands/mpm-help.md +3 -0
  55. claude_mpm/commands/mpm-init.md +19 -3
  56. claude_mpm/commands/mpm-resume.md +372 -0
  57. claude_mpm/commands/mpm-tickets.md +56 -7
  58. claude_mpm/commands/mpm.md +1 -0
  59. claude_mpm/config/agent_capabilities.yaml +658 -0
  60. claude_mpm/config/async_logging_config.yaml +145 -0
  61. claude_mpm/constants.py +12 -0
  62. claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
  63. claude_mpm/core/api_validator.py +1 -1
  64. claude_mpm/core/claude_runner.py +14 -1
  65. claude_mpm/core/config.py +8 -0
  66. claude_mpm/core/constants.py +1 -1
  67. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  68. claude_mpm/core/hook_error_memory.py +381 -0
  69. claude_mpm/core/hook_manager.py +41 -2
  70. claude_mpm/core/interactive_session.py +48 -3
  71. claude_mpm/core/interfaces.py +56 -1
  72. claude_mpm/core/logger.py +3 -1
  73. claude_mpm/core/oneshot_session.py +39 -0
  74. claude_mpm/d2/.gitignore +22 -0
  75. claude_mpm/d2/ARCHITECTURE_COMPARISON.md +273 -0
  76. claude_mpm/d2/FLASK_INTEGRATION.md +156 -0
  77. claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +452 -0
  78. claude_mpm/d2/QUICKSTART.md +186 -0
  79. claude_mpm/d2/README.md +232 -0
  80. claude_mpm/d2/STORE_FIX_SUMMARY.md +167 -0
  81. claude_mpm/d2/SVELTE5_STORES_GUIDE.md +180 -0
  82. claude_mpm/d2/TESTING.md +288 -0
  83. claude_mpm/d2/index.html +118 -0
  84. claude_mpm/d2/package.json +19 -0
  85. claude_mpm/d2/src/App.svelte +110 -0
  86. claude_mpm/d2/src/components/Header.svelte +153 -0
  87. claude_mpm/d2/src/components/MainContent.svelte +74 -0
  88. claude_mpm/d2/src/components/Sidebar.svelte +85 -0
  89. claude_mpm/d2/src/components/tabs/EventsTab.svelte +326 -0
  90. claude_mpm/d2/src/lib/socketio.js +144 -0
  91. claude_mpm/d2/src/main.js +7 -0
  92. claude_mpm/d2/src/stores/events.js +114 -0
  93. claude_mpm/d2/src/stores/socket.js +108 -0
  94. claude_mpm/d2/src/stores/theme.js +65 -0
  95. claude_mpm/d2/svelte.config.js +12 -0
  96. claude_mpm/d2/vite.config.js +15 -0
  97. claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
  98. claude_mpm/dashboard/BUILD_NUMBER +1 -0
  99. claude_mpm/dashboard/README.md +121 -0
  100. claude_mpm/dashboard/VERSION +1 -0
  101. claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +273 -0
  102. claude_mpm/dashboard/react/components/ErrorBoundary.tsx +75 -0
  103. claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +141 -0
  104. claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +36 -0
  105. claude_mpm/dashboard/react/components/shared/FilterBar.tsx +89 -0
  106. claude_mpm/dashboard/react/contexts/DashboardContext.tsx +215 -0
  107. claude_mpm/dashboard/react/entries/events.tsx +165 -0
  108. claude_mpm/dashboard/react/hooks/useEvents.ts +191 -0
  109. claude_mpm/dashboard/react/hooks/useSocket.ts +225 -0
  110. claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +170 -0
  111. claude_mpm/dashboard/static/built/components/activity-tree.js.map +1 -0
  112. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +101 -101
  113. claude_mpm/dashboard/static/built/components/agent-inference.js.map +1 -0
  114. claude_mpm/dashboard/static/built/components/build-tracker.js +59 -59
  115. claude_mpm/dashboard/static/built/components/code-simple.js +107 -107
  116. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +29 -29
  117. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +24 -24
  118. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +27 -27
  119. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +25 -25
  120. claude_mpm/dashboard/static/built/components/code-tree.js.map +1 -0
  121. claude_mpm/dashboard/static/built/components/code-viewer.js.map +1 -0
  122. claude_mpm/dashboard/static/built/components/connection-debug.js +101 -101
  123. claude_mpm/dashboard/static/built/components/diff-viewer.js +113 -113
  124. claude_mpm/dashboard/static/built/components/event-processor.js.map +1 -0
  125. claude_mpm/dashboard/static/built/components/event-viewer.js.map +1 -0
  126. claude_mpm/dashboard/static/built/components/export-manager.js.map +1 -0
  127. claude_mpm/dashboard/static/built/components/file-change-tracker.js +57 -57
  128. claude_mpm/dashboard/static/built/components/file-change-viewer.js +74 -74
  129. claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +1 -0
  130. claude_mpm/dashboard/static/built/components/file-viewer.js.map +1 -0
  131. claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +1 -0
  132. claude_mpm/dashboard/static/built/components/hud-manager.js.map +1 -0
  133. claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +1 -0
  134. claude_mpm/dashboard/static/built/components/module-viewer.js.map +1 -0
  135. claude_mpm/dashboard/static/built/components/session-manager.js.map +1 -0
  136. claude_mpm/dashboard/static/built/components/socket-manager.js.map +1 -0
  137. claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +1 -0
  138. claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +1 -0
  139. claude_mpm/dashboard/static/built/components/working-directory.js.map +1 -0
  140. claude_mpm/dashboard/static/built/connection-manager.js +76 -76
  141. claude_mpm/dashboard/static/built/dashboard.js.map +1 -0
  142. claude_mpm/dashboard/static/built/extension-error-handler.js +22 -22
  143. claude_mpm/dashboard/static/built/react/events.js.map +1 -0
  144. claude_mpm/dashboard/static/built/shared/dom-helpers.js +9 -9
  145. claude_mpm/dashboard/static/built/shared/event-bus.js +5 -5
  146. claude_mpm/dashboard/static/built/shared/logger.js +16 -16
  147. claude_mpm/dashboard/static/built/shared/tooltip-service.js +6 -6
  148. claude_mpm/dashboard/static/built/socket-client.js.map +1 -0
  149. claude_mpm/dashboard/static/css/activity.css +69 -69
  150. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  151. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  152. claude_mpm/dashboard/static/index.html +22 -22
  153. claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +170 -0
  154. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  155. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  156. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  157. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  158. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  159. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  160. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  161. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  162. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  163. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  164. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  165. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  166. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  167. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  168. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  169. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  170. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  171. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  172. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  173. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  174. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  175. claude_mpm/dashboard/static/js/shared/dom-helpers.js +9 -9
  176. claude_mpm/dashboard/static/js/shared/event-bus.js +5 -5
  177. claude_mpm/dashboard/static/js/shared/logger.js +16 -16
  178. claude_mpm/dashboard/static/js/shared/tooltip-service.js +6 -6
  179. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  180. claude_mpm/dashboard/static/navigation-test-results.md +118 -0
  181. claude_mpm/dashboard/static/production/main.html +21 -21
  182. claude_mpm/dashboard/static/test-archive/dashboard.html +22 -22
  183. claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
  184. claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
  185. claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
  186. claude_mpm/dashboard/templates/code_simple.html +23 -23
  187. claude_mpm/dashboard/templates/index.html +18 -18
  188. claude_mpm/hooks/README.md +143 -0
  189. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  190. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  191. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  192. claude_mpm/hooks/templates/README.md +180 -0
  193. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  194. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  195. claude_mpm/hooks/templates/settings.json.example +147 -0
  196. claude_mpm/schemas/agent_schema.json +596 -0
  197. claude_mpm/schemas/frontmatter_schema.json +165 -0
  198. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  199. claude_mpm/scripts/start_activity_logging.py +3 -1
  200. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  201. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  202. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  203. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  204. claude_mpm/services/agents/loading/framework_agent_loader.py +8 -8
  205. claude_mpm/services/agents/local_template_manager.py +3 -1
  206. claude_mpm/services/cli/session_pause_manager.py +504 -0
  207. claude_mpm/services/cli/session_resume_helper.py +36 -16
  208. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  209. claude_mpm/services/core/base.py +26 -11
  210. claude_mpm/services/core/interfaces.py +56 -1
  211. claude_mpm/services/core/models/agent_config.py +3 -0
  212. claude_mpm/services/core/models/process.py +4 -0
  213. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  214. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  215. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  216. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  217. claude_mpm/services/diagnostics/doctor_reporter.py +6 -4
  218. claude_mpm/services/diagnostics/models.py +21 -0
  219. claude_mpm/services/event_bus/README.md +244 -0
  220. claude_mpm/services/event_bus/direct_relay.py +3 -3
  221. claude_mpm/services/event_bus/event_bus.py +36 -3
  222. claude_mpm/services/event_bus/relay.py +23 -7
  223. claude_mpm/services/events/README.md +303 -0
  224. claude_mpm/services/events/consumers/logging.py +1 -2
  225. claude_mpm/services/framework_claude_md_generator/README.md +119 -0
  226. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  227. claude_mpm/services/local_ops/__init__.py +2 -0
  228. claude_mpm/services/local_ops/process_manager.py +1 -1
  229. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  230. claude_mpm/services/mcp_gateway/README.md +185 -0
  231. claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
  232. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  233. claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
  234. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  235. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  236. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
  237. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  238. claude_mpm/services/memory/failure_tracker.py +19 -4
  239. claude_mpm/services/memory/optimizer.py +1 -1
  240. claude_mpm/services/model/model_router.py +8 -9
  241. claude_mpm/services/monitor/daemon.py +1 -1
  242. claude_mpm/services/monitor/server.py +2 -2
  243. claude_mpm/services/native_agent_converter.py +356 -0
  244. claude_mpm/services/port_manager.py +1 -1
  245. claude_mpm/services/project/documentation_manager.py +2 -1
  246. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  247. claude_mpm/services/runner_configuration_service.py +1 -0
  248. claude_mpm/services/self_upgrade_service.py +165 -7
  249. claude_mpm/services/skills_config.py +547 -0
  250. claude_mpm/services/skills_deployer.py +955 -0
  251. claude_mpm/services/socketio/handlers/connection.py +1 -1
  252. claude_mpm/services/socketio/handlers/connection.py.backup +217 -0
  253. claude_mpm/services/socketio/handlers/git.py +2 -2
  254. claude_mpm/services/socketio/handlers/hook.py.backup +154 -0
  255. claude_mpm/services/static/.gitkeep +2 -0
  256. claude_mpm/services/system_instructions_service.py +1 -3
  257. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  258. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  259. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  260. claude_mpm/services/version_control/VERSION +1 -0
  261. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  262. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  263. claude_mpm/skills/__init__.py +3 -3
  264. claude_mpm/skills/agent_skills_injector.py +42 -49
  265. claude_mpm/skills/bundled/.gitkeep +2 -0
  266. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +4 -0
  267. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +108 -114
  268. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  269. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  270. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  271. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  272. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  273. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +46 -41
  274. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  275. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  276. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +36 -73
  277. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  278. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  279. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +100 -125
  280. claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +63 -0
  281. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  282. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  283. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  284. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  285. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +28 -72
  286. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +11 -0
  287. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  288. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  289. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +272 -0
  290. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  291. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  292. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  293. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  294. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  295. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  296. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  297. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  298. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  299. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  300. claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +202 -0
  301. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +13 -1
  302. claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  303. claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +322 -0
  304. claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  305. claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +202 -0
  306. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +11 -0
  307. claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
  308. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +109 -277
  309. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  310. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  311. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
  312. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
  313. claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +22 -0
  314. claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +2 -0
  315. claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +202 -0
  316. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +135 -155
  317. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  318. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  319. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  320. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  321. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  322. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +13 -12
  323. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
  324. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
  325. claude_mpm/skills/bundled/performance-profiling.md +6 -0
  326. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  327. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  328. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  329. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  330. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  331. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  332. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  333. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  334. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  335. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  336. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  337. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  338. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  339. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  340. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  341. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  342. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  343. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  344. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  345. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  346. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  347. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  348. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  349. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  350. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  351. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  352. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +21 -25
  353. claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +158 -0
  354. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  355. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  356. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  357. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  358. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  359. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  360. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +86 -250
  361. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  362. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  363. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  364. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  365. claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +202 -0
  366. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +145 -57
  367. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  368. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
  369. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
  370. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
  371. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  372. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  373. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +37 -15
  374. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  375. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  376. claude_mpm/skills/skills_registry.py +44 -48
  377. claude_mpm/skills/skills_service.py +117 -108
  378. claude_mpm/templates/questions/EXAMPLES.md +501 -0
  379. claude_mpm/templates/questions/__init__.py +43 -0
  380. claude_mpm/templates/questions/base.py +193 -0
  381. claude_mpm/templates/questions/pr_strategy.py +314 -0
  382. claude_mpm/templates/questions/project_init.py +388 -0
  383. claude_mpm/templates/questions/ticket_mgmt.py +397 -0
  384. claude_mpm/tools/README_SOCKETIO_DEBUG.md +224 -0
  385. claude_mpm/tools/__main__.py +8 -8
  386. claude_mpm/tools/code_tree_analyzer/README.md +64 -0
  387. claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
  388. claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
  389. claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
  390. claude_mpm/tools/code_tree_analyzer/core.py +380 -0
  391. claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
  392. claude_mpm/tools/code_tree_analyzer/events.py +168 -0
  393. claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
  394. claude_mpm/tools/code_tree_analyzer/models.py +39 -0
  395. claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
  396. claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
  397. claude_mpm/utils/agent_dependency_loader.py +3 -3
  398. claude_mpm/utils/dependency_cache.py +3 -1
  399. claude_mpm/utils/gitignore.py +241 -0
  400. claude_mpm/utils/log_cleanup.py +3 -3
  401. claude_mpm/utils/robust_installer.py +3 -5
  402. claude_mpm/utils/structured_questions.py +619 -0
  403. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/METADATA +218 -31
  404. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +409 -246
  405. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  406. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  407. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  408. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  409. claude_mpm/cli/commands/mpm_init.py +0 -2093
  410. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  411. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  412. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  413. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  414. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  415. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  416. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  417. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  418. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  419. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  420. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  421. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  422. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  423. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  424. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  425. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  426. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  427. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  428. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  429. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  430. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  431. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  432. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  433. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  434. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  435. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  436. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  437. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  438. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  439. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  440. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  441. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  442. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  443. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  444. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  445. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  446. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  447. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  448. claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
  449. claude_mpm/tools/code_tree_analyzer.py +0 -1825
  450. /claude_mpm/skills/bundled/collaboration/requesting-code-review/{code-reviewer.md → references/code-reviewer-template.md} +0 -0
  451. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
  452. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
  453. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
  454. {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