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,6 +1,6 @@
1
1
  /**
2
2
  * Connection Debug Panel
3
- *
3
+ *
4
4
  * Provides detailed connection metrics and debugging tools
5
5
  * for troubleshooting connection issues.
6
6
  */
@@ -10,17 +10,17 @@ class ConnectionDebugPanel {
10
10
  this.connectionManager = connectionManager;
11
11
  this.isVisible = false;
12
12
  this.updateInterval = null;
13
-
13
+
14
14
  this.init();
15
15
  }
16
-
16
+
17
17
  init() {
18
18
  // Create debug panel HTML
19
19
  this.createPanel();
20
-
20
+
21
21
  // Setup event listeners
22
22
  this.setupEventListeners();
23
-
23
+
24
24
  // Start metric updates when visible
25
25
  this.connectionManager.onStatusChange(() => {
26
26
  if (this.isVisible) {
@@ -28,19 +28,19 @@ class ConnectionDebugPanel {
28
28
  }
29
29
  });
30
30
  }
31
-
31
+
32
32
  createPanel() {
33
33
  const panel = document.createElement('div');
34
34
  panel.id = 'connection-debug-panel';
35
35
  panel.className = 'connection-debug-panel';
36
36
  panel.style.display = 'none';
37
-
37
+
38
38
  panel.innerHTML = `
39
39
  <div class="debug-panel-header">
40
40
  <h3>🔧 Connection Debug</h3>
41
41
  <button id="close-debug-panel" class="btn-close">✕</button>
42
42
  </div>
43
-
43
+
44
44
  <div class="debug-panel-content">
45
45
  <!-- Connection Info -->
46
46
  <div class="debug-section">
@@ -68,7 +68,7 @@ class ConnectionDebugPanel {
68
68
  </div>
69
69
  </div>
70
70
  </div>
71
-
71
+
72
72
  <!-- Connection Metrics -->
73
73
  <div class="debug-section">
74
74
  <h4>Metrics</h4>
@@ -91,7 +91,7 @@ class ConnectionDebugPanel {
91
91
  </div>
92
92
  </div>
93
93
  </div>
94
-
94
+
95
95
  <!-- Connection Timeline -->
96
96
  <div class="debug-section">
97
97
  <h4>Connection Timeline</h4>
@@ -99,7 +99,7 @@ class ConnectionDebugPanel {
99
99
  <!-- Timeline events will be added here -->
100
100
  </div>
101
101
  </div>
102
-
102
+
103
103
  <!-- Debug Actions -->
104
104
  <div class="debug-section">
105
105
  <h4>Debug Actions</h4>
@@ -111,7 +111,7 @@ class ConnectionDebugPanel {
111
111
  <button id="debug-export-logs" class="btn-action">Export Logs</button>
112
112
  </div>
113
113
  </div>
114
-
114
+
115
115
  <!-- Network Tests -->
116
116
  <div class="debug-section">
117
117
  <h4>Network Tests</h4>
@@ -130,7 +130,7 @@ class ConnectionDebugPanel {
130
130
  </div>
131
131
  </div>
132
132
  </div>
133
-
133
+
134
134
  <!-- Event Log -->
135
135
  <div class="debug-section">
136
136
  <h4>Recent Events</h4>
@@ -140,13 +140,13 @@ class ConnectionDebugPanel {
140
140
  </div>
141
141
  </div>
142
142
  `;
143
-
143
+
144
144
  document.body.appendChild(panel);
145
-
145
+
146
146
  // Add styles
147
147
  this.addStyles();
148
148
  }
149
-
149
+
150
150
  addStyles() {
151
151
  const style = document.createElement('style');
152
152
  style.textContent = `
@@ -164,7 +164,7 @@ class ConnectionDebugPanel {
164
164
  display: flex;
165
165
  flex-direction: column;
166
166
  }
167
-
167
+
168
168
  .debug-panel-header {
169
169
  display: flex;
170
170
  justify-content: space-between;
@@ -173,12 +173,12 @@ class ConnectionDebugPanel {
173
173
  background: linear-gradient(135deg, #667eea 0%, #4299e1 100%);
174
174
  color: white;
175
175
  }
176
-
176
+
177
177
  .debug-panel-header h3 {
178
178
  margin: 0;
179
179
  font-size: 16px;
180
180
  }
181
-
181
+
182
182
  .btn-close {
183
183
  background: rgba(255,255,255,0.2);
184
184
  border: none;
@@ -190,63 +190,63 @@ class ConnectionDebugPanel {
190
190
  font-size: 16px;
191
191
  transition: background 0.2s;
192
192
  }
193
-
193
+
194
194
  .btn-close:hover {
195
195
  background: rgba(255,255,255,0.3);
196
196
  }
197
-
197
+
198
198
  .debug-panel-content {
199
199
  overflow-y: auto;
200
200
  padding: 16px;
201
201
  max-height: calc(80vh - 60px);
202
202
  }
203
-
203
+
204
204
  .debug-section {
205
205
  margin-bottom: 20px;
206
206
  padding-bottom: 16px;
207
207
  border-bottom: 1px solid #e2e8f0;
208
208
  }
209
-
209
+
210
210
  .debug-section:last-child {
211
211
  border-bottom: none;
212
212
  }
213
-
213
+
214
214
  .debug-section h4 {
215
215
  margin: 0 0 12px 0;
216
216
  font-size: 14px;
217
217
  color: #2d3748;
218
218
  font-weight: 600;
219
219
  }
220
-
220
+
221
221
  .debug-info {
222
222
  background: #f7fafc;
223
223
  padding: 12px;
224
224
  border-radius: 8px;
225
225
  }
226
-
226
+
227
227
  .info-row {
228
228
  display: flex;
229
229
  justify-content: space-between;
230
230
  padding: 4px 0;
231
231
  font-size: 13px;
232
232
  }
233
-
233
+
234
234
  .info-label {
235
235
  color: #718096;
236
236
  }
237
-
237
+
238
238
  .info-value {
239
239
  font-family: 'SF Mono', Monaco, monospace;
240
240
  color: #2d3748;
241
241
  font-weight: 500;
242
242
  }
243
-
243
+
244
244
  .debug-actions {
245
245
  display: grid;
246
246
  grid-template-columns: repeat(2, 1fr);
247
247
  gap: 8px;
248
248
  }
249
-
249
+
250
250
  .btn-action {
251
251
  padding: 8px 12px;
252
252
  background: #4299e1;
@@ -257,23 +257,23 @@ class ConnectionDebugPanel {
257
257
  cursor: pointer;
258
258
  transition: background 0.2s;
259
259
  }
260
-
260
+
261
261
  .btn-action:hover {
262
262
  background: #3182ce;
263
263
  }
264
-
264
+
265
265
  .network-tests {
266
266
  display: flex;
267
267
  flex-direction: column;
268
268
  gap: 8px;
269
269
  }
270
-
270
+
271
271
  .test-row {
272
272
  display: flex;
273
273
  align-items: center;
274
274
  gap: 12px;
275
275
  }
276
-
276
+
277
277
  .btn-test {
278
278
  flex: 0 0 120px;
279
279
  padding: 6px 12px;
@@ -284,7 +284,7 @@ class ConnectionDebugPanel {
284
284
  font-size: 12px;
285
285
  cursor: pointer;
286
286
  }
287
-
287
+
288
288
  .test-result {
289
289
  flex: 1;
290
290
  padding: 6px 12px;
@@ -293,7 +293,7 @@ class ConnectionDebugPanel {
293
293
  font-size: 12px;
294
294
  font-family: 'SF Mono', Monaco, monospace;
295
295
  }
296
-
296
+
297
297
  .debug-timeline {
298
298
  max-height: 150px;
299
299
  overflow-y: auto;
@@ -302,26 +302,26 @@ class ConnectionDebugPanel {
302
302
  border-radius: 8px;
303
303
  font-size: 12px;
304
304
  }
305
-
305
+
306
306
  .timeline-event {
307
307
  padding: 4px 0;
308
308
  border-bottom: 1px solid #e2e8f0;
309
309
  }
310
-
310
+
311
311
  .timeline-event:last-child {
312
312
  border-bottom: none;
313
313
  }
314
-
314
+
315
315
  .timeline-time {
316
316
  color: #718096;
317
317
  font-size: 11px;
318
318
  }
319
-
319
+
320
320
  .timeline-desc {
321
321
  color: #2d3748;
322
322
  margin-top: 2px;
323
323
  }
324
-
324
+
325
325
  .event-log {
326
326
  max-height: 200px;
327
327
  overflow-y: auto;
@@ -332,24 +332,24 @@ class ConnectionDebugPanel {
332
332
  font-family: 'SF Mono', Monaco, monospace;
333
333
  font-size: 11px;
334
334
  }
335
-
335
+
336
336
  .log-entry {
337
337
  padding: 2px 0;
338
338
  }
339
-
339
+
340
340
  .log-time {
341
341
  color: #718096;
342
342
  }
343
-
343
+
344
344
  .log-type {
345
345
  color: #4299e1;
346
346
  font-weight: 600;
347
347
  }
348
-
348
+
349
349
  .log-data {
350
350
  color: #cbd5e0;
351
351
  }
352
-
352
+
353
353
  @media (max-width: 768px) {
354
354
  .connection-debug-panel {
355
355
  right: 10px;
@@ -358,72 +358,72 @@ class ConnectionDebugPanel {
358
358
  }
359
359
  }
360
360
  `;
361
-
361
+
362
362
  document.head.appendChild(style);
363
363
  }
364
-
364
+
365
365
  setupEventListeners() {
366
366
  // Close button
367
367
  document.getElementById('close-debug-panel').addEventListener('click', () => {
368
368
  this.hide();
369
369
  });
370
-
370
+
371
371
  // Debug actions
372
372
  document.getElementById('debug-force-reconnect').addEventListener('click', () => {
373
373
  this.forceReconnect();
374
374
  });
375
-
375
+
376
376
  document.getElementById('debug-request-stats').addEventListener('click', () => {
377
377
  this.requestStats();
378
378
  });
379
-
379
+
380
380
  document.getElementById('debug-clear-buffer').addEventListener('click', () => {
381
381
  this.clearBuffer();
382
382
  });
383
-
383
+
384
384
  document.getElementById('debug-simulate-disconnect').addEventListener('click', () => {
385
385
  this.simulateDisconnect();
386
386
  });
387
-
387
+
388
388
  document.getElementById('debug-export-logs').addEventListener('click', () => {
389
389
  this.exportLogs();
390
390
  });
391
-
391
+
392
392
  // Network tests
393
393
  document.getElementById('test-latency').addEventListener('click', () => {
394
394
  this.testLatency();
395
395
  });
396
-
396
+
397
397
  document.getElementById('test-throughput').addEventListener('click', () => {
398
398
  this.testThroughput();
399
399
  });
400
-
400
+
401
401
  document.getElementById('test-stability').addEventListener('click', () => {
402
402
  this.testStability();
403
403
  });
404
404
  }
405
-
405
+
406
406
  show() {
407
407
  const panel = document.getElementById('connection-debug-panel');
408
408
  panel.style.display = 'flex';
409
409
  this.isVisible = true;
410
-
410
+
411
411
  // Start metric updates
412
412
  this.startMetricUpdates();
413
-
413
+
414
414
  // Initial update
415
415
  this.updateMetrics();
416
416
  }
417
-
417
+
418
418
  hide() {
419
419
  const panel = document.getElementById('connection-debug-panel');
420
420
  panel.style.display = 'none';
421
421
  this.isVisible = false;
422
-
422
+
423
423
  // Stop metric updates
424
424
  this.stopMetricUpdates();
425
425
  }
426
-
426
+
427
427
  toggle() {
428
428
  if (this.isVisible) {
429
429
  this.hide();
@@ -431,78 +431,78 @@ class ConnectionDebugPanel {
431
431
  this.show();
432
432
  }
433
433
  }
434
-
434
+
435
435
  startMetricUpdates() {
436
436
  this.updateInterval = setInterval(() => {
437
437
  this.updateMetrics();
438
438
  }, 1000);
439
439
  }
440
-
440
+
441
441
  stopMetricUpdates() {
442
442
  if (this.updateInterval) {
443
443
  clearInterval(this.updateInterval);
444
444
  this.updateInterval = null;
445
445
  }
446
446
  }
447
-
447
+
448
448
  updateMetrics() {
449
449
  const metrics = this.connectionManager.getMetrics();
450
450
  const socket = this.connectionManager.socket;
451
-
451
+
452
452
  // Update connection info
453
453
  document.getElementById('debug-client-id').textContent = metrics.clientId || '--';
454
454
  document.getElementById('debug-socket-id').textContent = socket?.id || '--';
455
455
  document.getElementById('debug-state').textContent = metrics.connectionState || '--';
456
- document.getElementById('debug-quality').textContent =
456
+ document.getElementById('debug-quality').textContent =
457
457
  `${Math.round(metrics.connectionQuality * 100)}%`;
458
458
  document.getElementById('debug-sequence').textContent = metrics.lastSequence || '0';
459
-
459
+
460
460
  // Update metrics
461
461
  document.getElementById('debug-total-events').textContent = metrics.totalEvents || '0';
462
462
  document.getElementById('debug-events-acked').textContent = metrics.eventsAcked || '0';
463
463
  document.getElementById('debug-buffered').textContent = metrics.bufferedEvents || '0';
464
464
  document.getElementById('debug-reconnects').textContent = metrics.totalReconnections || '0';
465
465
  }
466
-
466
+
467
467
  addTimelineEvent(description) {
468
468
  const timeline = document.getElementById('debug-timeline');
469
469
  const event = document.createElement('div');
470
470
  event.className = 'timeline-event';
471
-
471
+
472
472
  const now = new Date();
473
473
  event.innerHTML = `
474
474
  <div class="timeline-time">${now.toLocaleTimeString()}</div>
475
475
  <div class="timeline-desc">${description}</div>
476
476
  `;
477
-
477
+
478
478
  timeline.insertBefore(event, timeline.firstChild);
479
-
479
+
480
480
  // Keep only last 20 events
481
481
  while (timeline.children.length > 20) {
482
482
  timeline.removeChild(timeline.lastChild);
483
483
  }
484
484
  }
485
-
485
+
486
486
  addLogEntry(type, data) {
487
487
  const log = document.getElementById('debug-event-log');
488
488
  const entry = document.createElement('div');
489
489
  entry.className = 'log-entry';
490
-
490
+
491
491
  const now = new Date();
492
492
  entry.innerHTML = `
493
493
  <span class="log-time">${now.toLocaleTimeString()}</span>
494
494
  <span class="log-type">${type}</span>
495
495
  <span class="log-data">${JSON.stringify(data)}</span>
496
496
  `;
497
-
497
+
498
498
  log.insertBefore(entry, log.firstChild);
499
-
499
+
500
500
  // Keep only last 50 entries
501
501
  while (log.children.length > 50) {
502
502
  log.removeChild(log.lastChild);
503
503
  }
504
504
  }
505
-
505
+
506
506
  // Debug actions
507
507
  forceReconnect() {
508
508
  this.addTimelineEvent('Force reconnect initiated');
@@ -513,47 +513,47 @@ class ConnectionDebugPanel {
513
513
  }, 100);
514
514
  }
515
515
  }
516
-
516
+
517
517
  requestStats() {
518
518
  this.addTimelineEvent('Requesting connection stats');
519
519
  if (this.connectionManager.socket) {
520
520
  this.connectionManager.socket.emit('get_connection_stats');
521
521
  }
522
522
  }
523
-
523
+
524
524
  clearBuffer() {
525
525
  this.addTimelineEvent('Clearing event buffer');
526
526
  this.connectionManager.eventBuffer = [];
527
527
  localStorage.removeItem('claude_mpm_event_buffer');
528
528
  this.updateMetrics();
529
529
  }
530
-
530
+
531
531
  simulateDisconnect() {
532
532
  this.addTimelineEvent('Simulating disconnect');
533
533
  if (this.connectionManager.socket) {
534
534
  this.connectionManager.socket.disconnect();
535
535
  }
536
536
  }
537
-
537
+
538
538
  exportLogs() {
539
539
  const logs = {
540
540
  metrics: this.connectionManager.getMetrics(),
541
541
  timeline: [],
542
542
  events: []
543
543
  };
544
-
544
+
545
545
  // Collect timeline events
546
546
  const timeline = document.getElementById('debug-timeline');
547
547
  Array.from(timeline.children).forEach(child => {
548
548
  logs.timeline.push(child.textContent.trim());
549
549
  });
550
-
550
+
551
551
  // Collect event log
552
552
  const eventLog = document.getElementById('debug-event-log');
553
553
  Array.from(eventLog.children).forEach(child => {
554
554
  logs.events.push(child.textContent.trim());
555
555
  });
556
-
556
+
557
557
  // Download as JSON
558
558
  const blob = new Blob([JSON.stringify(logs, null, 2)], { type: 'application/json' });
559
559
  const url = URL.createObjectURL(blob);
@@ -562,18 +562,18 @@ class ConnectionDebugPanel {
562
562
  a.download = `connection-debug-${Date.now()}.json`;
563
563
  a.click();
564
564
  URL.revokeObjectURL(url);
565
-
565
+
566
566
  this.addTimelineEvent('Logs exported');
567
567
  }
568
-
568
+
569
569
  // Network tests
570
570
  async testLatency() {
571
571
  const resultEl = document.getElementById('latency-result');
572
572
  resultEl.textContent = 'Testing...';
573
-
573
+
574
574
  const start = Date.now();
575
575
  this.connectionManager.socket.emit('ping');
576
-
576
+
577
577
  // Wait for pong
578
578
  const pongHandler = () => {
579
579
  const latency = Date.now() - start;
@@ -581,9 +581,9 @@ class ConnectionDebugPanel {
581
581
  this.connectionManager.socket.off('pong', pongHandler);
582
582
  this.addTimelineEvent(`Latency test: ${latency}ms`);
583
583
  };
584
-
584
+
585
585
  this.connectionManager.socket.on('pong', pongHandler);
586
-
586
+
587
587
  // Timeout after 5 seconds
588
588
  setTimeout(() => {
589
589
  this.connectionManager.socket.off('pong', pongHandler);
@@ -592,15 +592,15 @@ class ConnectionDebugPanel {
592
592
  }
593
593
  }, 5000);
594
594
  }
595
-
595
+
596
596
  async testThroughput() {
597
597
  const resultEl = document.getElementById('throughput-result');
598
598
  resultEl.textContent = 'Testing...';
599
-
599
+
600
600
  // Send 100 events rapidly
601
601
  const start = Date.now();
602
602
  let received = 0;
603
-
603
+
604
604
  const handler = () => {
605
605
  received++;
606
606
  if (received === 100) {
@@ -610,13 +610,13 @@ class ConnectionDebugPanel {
610
610
  this.addTimelineEvent(`Throughput test: ${throughput} events/sec`);
611
611
  }
612
612
  };
613
-
613
+
614
614
  this.connectionManager.socket.on('test_response', handler);
615
-
615
+
616
616
  for (let i = 0; i < 100; i++) {
617
617
  this.connectionManager.socket.emit('test_event', { index: i });
618
618
  }
619
-
619
+
620
620
  // Cleanup after 10 seconds
621
621
  setTimeout(() => {
622
622
  this.connectionManager.socket.off('test_response', handler);
@@ -625,26 +625,26 @@ class ConnectionDebugPanel {
625
625
  }
626
626
  }, 10000);
627
627
  }
628
-
628
+
629
629
  async testStability() {
630
630
  const resultEl = document.getElementById('stability-result');
631
631
  resultEl.textContent = 'Testing (30s)...';
632
-
632
+
633
633
  let disconnects = 0;
634
634
  let reconnects = 0;
635
635
  const startMetrics = { ...this.connectionManager.metrics };
636
-
636
+
637
637
  // Monitor for 30 seconds
638
638
  setTimeout(() => {
639
639
  const endMetrics = this.connectionManager.metrics;
640
640
  disconnects = endMetrics.totalConnections - startMetrics.totalConnections;
641
-
641
+
642
642
  if (disconnects === 0) {
643
643
  resultEl.textContent = 'Stable ✓';
644
644
  } else {
645
645
  resultEl.textContent = `${disconnects} drops`;
646
646
  }
647
-
647
+
648
648
  this.addTimelineEvent(`Stability test: ${disconnects} disconnections`);
649
649
  }, 30000);
650
650
  }