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
@@ -0,0 +1,180 @@
1
+ # Svelte 5 Store Architecture Guide
2
+
3
+ ## Quick Decision Tree
4
+
5
+ ```
6
+ Do you need reactive state?
7
+
8
+ ├─ YES → Is it used inside a component <script> block?
9
+ │ │
10
+ │ ├─ YES → Use Svelte 5 Runes ✅
11
+ │ │ let count = $state(0)
12
+ │ │ let doubled = $derived(count * 2)
13
+ │ │
14
+ │ └─ NO → Is it at module level / shared between components?
15
+ │ │
16
+ │ └─ YES → Use Traditional Stores ✅
17
+ │ const count = writable(0)
18
+ │ const doubled = derived(count, $count => $count * 2)
19
+
20
+ └─ NO → Use regular JavaScript variables
21
+ ```
22
+
23
+ ## Pattern 1: Component-Local State (Use Runes)
24
+
25
+ ```svelte
26
+ <!-- Component.svelte -->
27
+ <script>
28
+ // ✅ CORRECT - Runes in component context
29
+ let count = $state(0);
30
+ let doubled = $derived(count * 2);
31
+
32
+ $effect(() => {
33
+ console.log(`Count is now ${count}`);
34
+ });
35
+ </script>
36
+
37
+ <button onclick={() => count++}>
38
+ {count} / {doubled}
39
+ </button>
40
+ ```
41
+
42
+ ## Pattern 2: Module-Level Stores (Use Traditional Stores)
43
+
44
+ ```javascript
45
+ // stores/counter.js
46
+ import { writable, derived } from 'svelte/store';
47
+
48
+ // ✅ CORRECT - Traditional stores for module-level state
49
+ function createCounterStore() {
50
+ const count = writable(0);
51
+ const doubled = derived(count, $count => $count * 2);
52
+
53
+ return {
54
+ count: { subscribe: count.subscribe },
55
+ doubled: { subscribe: doubled.subscribe },
56
+ increment: () => count.update(n => n + 1),
57
+ reset: () => count.set(0)
58
+ };
59
+ }
60
+
61
+ export const counterStore = createCounterStore();
62
+ ```
63
+
64
+ ```svelte
65
+ <!-- Component.svelte -->
66
+ <script>
67
+ import { counterStore } from './stores/counter.js';
68
+
69
+ // Use $ auto-subscription
70
+ </script>
71
+
72
+ <button onclick={() => counterStore.increment()}>
73
+ {$counterStore.count} / {$counterStore.doubled}
74
+ </button>
75
+ ```
76
+
77
+ ## Pattern 3: Props (Use $props)
78
+
79
+ ```svelte
80
+ <!-- Child.svelte -->
81
+ <script>
82
+ // ✅ CORRECT - $props for component props
83
+ let { value, onUpdate } = $props();
84
+ </script>
85
+
86
+ <input bind:value oninput={() => onUpdate(value)} />
87
+ ```
88
+
89
+ ## Common Mistakes
90
+
91
+ ### ❌ WRONG: Runes at Module Level
92
+
93
+ ```javascript
94
+ // stores/counter.svelte.js
95
+ // ❌ This will cause effect_orphan error!
96
+ function createCounterStore() {
97
+ let count = $state(0); // ❌ Rune outside component
98
+ // ...
99
+ }
100
+
101
+ export const counterStore = createCounterStore(); // ❌ Called at module load
102
+ ```
103
+
104
+ ### ❌ WRONG: Traditional Stores in Components
105
+
106
+ ```svelte
107
+ <script>
108
+ import { writable } from 'svelte/store';
109
+
110
+ // ❌ Unnecessary complexity for component-local state
111
+ const count = writable(0);
112
+ </script>
113
+
114
+ <button onclick={() => count.update(n => n + 1)}>
115
+ {$count}
116
+ </button>
117
+ ```
118
+
119
+ ### ✅ CORRECT: Runes in Components
120
+
121
+ ```svelte
122
+ <script>
123
+ // ✅ Simple and idiomatic
124
+ let count = $state(0);
125
+ </script>
126
+
127
+ <button onclick={() => count++}>
128
+ {count}
129
+ </button>
130
+ ```
131
+
132
+ ## Migration Checklist
133
+
134
+ When converting Svelte 4 → Svelte 5:
135
+
136
+ ### Component-Local State
137
+ - [ ] `export let prop` → `let { prop } = $props()`
138
+ - [ ] `$: derived = compute(x)` → `let derived = $derived(compute(x))`
139
+ - [ ] `$: { effect() }` → `$effect(() => { effect() })`
140
+
141
+ ### Module-Level Stores
142
+ - [ ] Keep using `writable`, `derived`, `readable`
143
+ - [ ] Update components to use `$` auto-subscription
144
+ - [ ] Add `.subscribe` exposure in store API
145
+
146
+ ### File Naming
147
+ - [ ] Component stores using runes: `Component.svelte` (not `.svelte.js`)
148
+ - [ ] Module stores: `store.js` (not `.svelte.js`)
149
+
150
+ ## Debugging Tips
151
+
152
+ ### Error: `effect_orphan`
153
+ **Cause**: Runes used outside component context
154
+ **Fix**: Use traditional stores for module-level state
155
+
156
+ ### Error: Cannot access `$store` before initialization
157
+ **Cause**: Missing `$` prefix on store subscription
158
+ **Fix**: Use `$storeName.property` in templates
159
+
160
+ ### Store not updating UI
161
+ **Cause**: Forgetting to use `.set()` or `.update()`
162
+ **Fix**: Always mutate stores with `.set()` / `.update()`, never directly
163
+
164
+ ## Performance Comparison
165
+
166
+ | Pattern | Bundle Impact | Reactivity | Use Case |
167
+ |---------|---------------|------------|----------|
168
+ | Runes | Minimal | Fine-grained | Component-local |
169
+ | Traditional Stores | Small | Observable | Shared state |
170
+ | Context API | None | Manual | Dependency injection |
171
+
172
+ ## Further Reading
173
+
174
+ - Svelte 5 Runes: https://svelte.dev/docs/svelte/$state
175
+ - Svelte Stores: https://svelte.dev/docs/svelte-store
176
+ - Migration Guide: https://svelte-5-preview.vercel.app/docs/v5-migration-guide
177
+
178
+ ---
179
+
180
+ **Remember**: Runes are for components, stores are for modules.
@@ -0,0 +1,288 @@
1
+ # Testing Checklist for Dashboard2
2
+
3
+ ## Build Verification
4
+
5
+ - [x] `npm install` completes without errors
6
+ - [x] `npm run build` completes successfully
7
+ - [x] No Svelte compiler warnings
8
+ - [x] No accessibility warnings
9
+ - [x] `dist/index.html` exists
10
+ - [x] `dist/assets/*.js` exists
11
+ - [x] `dist/assets/*.css` exists
12
+
13
+ ## Development Server Testing
14
+
15
+ Run `npm run dev` and verify:
16
+
17
+ - [ ] Dev server starts on port 5173
18
+ - [ ] Dashboard loads at `http://localhost:5173`
19
+ - [ ] No console errors on page load
20
+ - [ ] Hot Module Replacement (HMR) works on file changes
21
+
22
+ ## UI Components
23
+
24
+ ### Header
25
+ - [ ] Title displays: "Claude MPM Dashboard"
26
+ - [ ] Version displays: "v2.0"
27
+ - [ ] Connection status indicator is visible
28
+ - [ ] Status text shows "Disconnected" initially
29
+ - [ ] Port number displays correctly
30
+ - [ ] Indicator color is red when disconnected
31
+
32
+ ### Sidebar
33
+ - [ ] All 5 tabs are visible: Events, Agents, Files, Tools, Activity
34
+ - [ ] Each tab has an icon
35
+ - [ ] Events tab is active by default
36
+ - [ ] Clicking tabs switches active state
37
+ - [ ] Active tab has blue highlight
38
+ - [ ] Hover effects work correctly
39
+
40
+ ### Main Content
41
+ - [ ] Events tab content loads
42
+ - [ ] Other tabs show placeholder content
43
+ - [ ] Placeholder icons display correctly
44
+ - [ ] Content area fills remaining space
45
+
46
+ ## Socket.IO Connection
47
+
48
+ ### Local Connection (port 8765)
49
+ - [ ] Connection status changes to "Connecting..." on startup
50
+ - [ ] Status changes to "Connected" when server is available
51
+ - [ ] Indicator turns green on connection
52
+ - [ ] Port number matches server (8765)
53
+ - [ ] Status shows "Disconnected" when server unavailable
54
+ - [ ] Status shows "Reconnecting..." when connection lost
55
+ - [ ] Indicator turns yellow during reconnection
56
+ - [ ] Auto-reconnect works after temporary disconnection
57
+
58
+ ### Console Logging
59
+ Check browser console for:
60
+ - [ ] Socket.IO connection events logged
61
+ - [ ] No connection errors (if server running)
62
+ - [ ] Event reception logged
63
+ - [ ] No JavaScript errors
64
+
65
+ ## Events Tab Functionality
66
+
67
+ ### Empty State
68
+ - [ ] Empty state displays when no events
69
+ - [ ] "Waiting for events..." message shown
70
+ - [ ] Hint text displays
71
+ - [ ] Icon (📡) is visible
72
+
73
+ ### Event Display
74
+ - [ ] Events appear when received
75
+ - [ ] Events display in reverse chronological order (newest first)
76
+ - [ ] Event time is formatted correctly (HH:MM:SS.mmm)
77
+ - [ ] Event source badge displays with correct color:
78
+ - Hook: Blue (#3b82f6)
79
+ - System: Green (#10b981)
80
+ - API: Orange (#f59e0b)
81
+ - [ ] Event summary shows type and subtype
82
+ - [ ] Event item is clickable
83
+
84
+ ### Event Expansion
85
+ - [ ] Clicking event expands JSON details
86
+ - [ ] Expand icon changes from ▶ to ▼
87
+ - [ ] JSON is formatted with syntax highlighting
88
+ - [ ] JSON is scrollable horizontally if needed
89
+ - [ ] Clicking again collapses the event
90
+ - [ ] Only one event expanded at a time (optional behavior)
91
+
92
+ ### Event Statistics
93
+ - [ ] "Total" counter increments with each event
94
+ - [ ] "Displayed" counter shows current count
95
+ - [ ] Numbers update in real-time
96
+ - [ ] Clear button appears when events exist
97
+ - [ ] Clear button removes all events
98
+ - [ ] Counters reset after clearing
99
+
100
+ ### Auto-scroll
101
+ - [ ] New events auto-scroll to top
102
+ - [ ] User can scroll manually
103
+ - [ ] Auto-scroll doesn't interfere with manual scrolling
104
+
105
+ ## Event Reception Testing
106
+
107
+ ### Test with Mock Events
108
+
109
+ You can test event reception by running this in the browser console:
110
+
111
+ ```javascript
112
+ // Simulate a claude_event
113
+ window.dispatchEvent(new CustomEvent('test-socket-event', {
114
+ detail: {
115
+ source: 'hook',
116
+ type: 'tool',
117
+ subtype: 'pre_tool',
118
+ timestamp: new Date().toISOString(),
119
+ data: {
120
+ tool_name: 'test_tool',
121
+ params: { test: true }
122
+ }
123
+ }
124
+ }));
125
+ ```
126
+
127
+ Or emit directly via Socket.IO if connected:
128
+ ```javascript
129
+ // Get socket from console
130
+ const socket = io('http://localhost:8765');
131
+ socket.emit('claude_event', {
132
+ source: 'hook',
133
+ type: 'test',
134
+ subtype: 'console_test',
135
+ timestamp: new Date().toISOString(),
136
+ data: { message: 'Test from console' }
137
+ });
138
+ ```
139
+
140
+ ### Real Event Testing
141
+ - [ ] Trigger a Claude Code hook event
142
+ - [ ] Event appears in dashboard immediately
143
+ - [ ] Event data is complete and accurate
144
+ - [ ] Timestamp is correct
145
+ - [ ] Event can be expanded to view full JSON
146
+ - [ ] Multiple events display correctly
147
+ - [ ] High-frequency events don't cause UI lag
148
+
149
+ ### Heartbeat Events
150
+ - [ ] Server heartbeat events appear (every 3 minutes)
151
+ - [ ] Heartbeat has "system" source
152
+ - [ ] Heartbeat data includes uptime
153
+ - [ ] Heartbeat data includes connected clients
154
+
155
+ ## Performance Testing
156
+
157
+ ### Large Event Loads
158
+ - [ ] Dashboard handles 100 events smoothly
159
+ - [ ] Dashboard handles 1000 events (max buffer)
160
+ - [ ] Events beyond 1000 are trimmed correctly
161
+ - [ ] No memory leaks with continuous events
162
+ - [ ] Scrolling remains smooth with full buffer
163
+
164
+ ### Network
165
+ - [ ] Dashboard works on slow connections
166
+ - [ ] Reconnection works after network interruption
167
+ - [ ] Events buffer during disconnection (if implemented)
168
+ - [ ] No duplicate events after reconnection
169
+
170
+ ## Cross-Browser Testing
171
+
172
+ - [ ] Chrome/Chromium (latest)
173
+ - [ ] Firefox (latest)
174
+ - [ ] Safari (latest)
175
+ - [ ] Edge (latest)
176
+
177
+ Check for:
178
+ - [ ] Layout renders correctly
179
+ - [ ] WebSocket/Socket.IO works
180
+ - [ ] No console errors
181
+ - [ ] Animations work smoothly
182
+
183
+ ## Accessibility Testing
184
+
185
+ - [ ] Keyboard navigation works
186
+ - [ ] Tab key moves through interactive elements
187
+ - [ ] Enter/Space activates buttons
188
+ - [ ] Screen reader can read content
189
+ - [ ] Color contrast meets WCAG standards
190
+ - [ ] Focus indicators are visible
191
+
192
+ ## Responsive Design
193
+
194
+ Test at different viewport sizes:
195
+ - [ ] 1920x1080 (Full HD)
196
+ - [ ] 1366x768 (Laptop)
197
+ - [ ] 1024x768 (Tablet landscape)
198
+
199
+ Verify:
200
+ - [ ] Layout doesn't break
201
+ - [ ] All content is accessible
202
+ - [ ] No horizontal scrolling
203
+ - [ ] Sidebar width is appropriate
204
+
205
+ ## Production Build Testing
206
+
207
+ After running `npm run build`:
208
+
209
+ 1. **Static File Serving**:
210
+ - [ ] Serve dist/ with a simple HTTP server
211
+ - [ ] Dashboard loads correctly
212
+ - [ ] Assets load from correct paths
213
+ - [ ] No 404 errors for assets
214
+
215
+ 2. **Integration Testing**:
216
+ - [ ] Flask serves dashboard correctly
217
+ - [ ] Base path `/dashboard2/` works
218
+ - [ ] Assets load with correct paths
219
+ - [ ] Socket.IO connects to correct port
220
+
221
+ 3. **Size Optimization**:
222
+ - [ ] Total bundle size < 100KB (gzipped)
223
+ - [ ] Initial load time < 2 seconds
224
+ - [ ] No unnecessary dependencies bundled
225
+
226
+ ## Error Handling
227
+
228
+ Test error scenarios:
229
+ - [ ] Server not available: Shows "Disconnected" status
230
+ - [ ] Server crashes: Shows reconnection status
231
+ - [ ] Invalid event data: Handles gracefully (no crashes)
232
+ - [ ] Malformed JSON: Displays error or skips event
233
+ - [ ] Network timeout: Retries connection
234
+
235
+ ## Console Checks
236
+
237
+ Verify no errors for:
238
+ - [ ] Component initialization
239
+ - [ ] Socket.IO connection
240
+ - [ ] Event handling
241
+ - [ ] State updates
242
+ - [ ] DOM updates
243
+
244
+ ## Final Production Checklist
245
+
246
+ Before deploying:
247
+ - [ ] Run `npm run build` with no warnings
248
+ - [ ] Test built files locally
249
+ - [ ] Verify all features work in production build
250
+ - [ ] Check browser console for errors
251
+ - [ ] Test Socket.IO connection
252
+ - [ ] Verify events display correctly
253
+ - [ ] Test on target deployment environment
254
+ - [ ] Document any known issues
255
+ - [ ] Update version number if needed
256
+
257
+ ## Known Issues
258
+
259
+ Document any issues found during testing:
260
+
261
+ 1. **Issue**: [Description]
262
+ - **Severity**: Low/Medium/High
263
+ - **Workaround**: [If available]
264
+ - **Fix plan**: [If scheduled]
265
+
266
+ ## Performance Benchmarks
267
+
268
+ Record baseline performance:
269
+ - Initial load time: ___ms
270
+ - Time to Socket.IO connection: ___ms
271
+ - Average event processing time: ___ms
272
+ - Memory usage with 1000 events: ___MB
273
+ - FPS during scrolling: ___
274
+
275
+ ## Test Results Summary
276
+
277
+ Date: ___________
278
+ Tester: ___________
279
+ Environment: ___________
280
+
281
+ - Total tests: ___
282
+ - Passed: ___
283
+ - Failed: ___
284
+ - Skipped: ___
285
+
286
+ **Overall Status**: ⬜ Pass | ⬜ Fail | ⬜ Partial
287
+
288
+ **Notes**:
@@ -0,0 +1,118 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Claude MPM Dashboard</title>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ /* CSS Custom Properties for Theming */
15
+ :root {
16
+ /* Light mode (default) */
17
+ --bg-primary: #ffffff;
18
+ --bg-secondary: #f5f5f5;
19
+ --bg-tertiary: #e8e8e8;
20
+ --bg-elevated: #ffffff;
21
+ --text-primary: #1a1a1a;
22
+ --text-secondary: #666666;
23
+ --text-tertiary: #888888;
24
+ --border-color: #e0e0e0;
25
+ --border-color-light: #f0f0f0;
26
+ --accent-color: #3b82f6;
27
+ --accent-hover: #2563eb;
28
+ --success-color: #10b981;
29
+ --error-color: #ef4444;
30
+ --warning-color: #f59e0b;
31
+ --header-bg-start: #f8f9fa;
32
+ --header-bg-end: #e9ecef;
33
+ --sidebar-bg: #fafafa;
34
+ --card-bg: #ffffff;
35
+ --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
36
+ --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);
37
+ --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.1);
38
+ --overlay-bg: rgba(0, 0, 0, 0.05);
39
+ --overlay-border: rgba(0, 0, 0, 0.1);
40
+ --input-bg: #ffffff;
41
+ --input-border: #d1d5db;
42
+ --tab-hover-bg: rgba(0, 0, 0, 0.05);
43
+ --scrollbar-track: #f1f1f1;
44
+ --scrollbar-thumb: #c1c1c1;
45
+ --scrollbar-thumb-hover: #a8a8a8;
46
+ }
47
+
48
+ [data-theme="dark"] {
49
+ /* Dark mode */
50
+ --bg-primary: #0f0f0f;
51
+ --bg-secondary: #1a1a1a;
52
+ --bg-tertiary: #2d2d2d;
53
+ --bg-elevated: #1a1a1a;
54
+ --text-primary: #ffffff;
55
+ --text-secondary: #a0a0a0;
56
+ --text-tertiary: #888888;
57
+ --border-color: #333333;
58
+ --border-color-light: #404040;
59
+ --accent-color: #60a5fa;
60
+ --accent-hover: #3b82f6;
61
+ --success-color: #34d399;
62
+ --error-color: #f87171;
63
+ --warning-color: #fbbf24;
64
+ --header-bg-start: #1a1a1a;
65
+ --header-bg-end: #2d2d2d;
66
+ --sidebar-bg: #141414;
67
+ --card-bg: #1a1a1a;
68
+ --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
69
+ --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
70
+ --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.5);
71
+ --overlay-bg: rgba(255, 255, 255, 0.05);
72
+ --overlay-border: rgba(255, 255, 255, 0.1);
73
+ --input-bg: #2d2d2d;
74
+ --input-border: #404040;
75
+ --tab-hover-bg: rgba(255, 255, 255, 0.05);
76
+ --scrollbar-track: #1a1a1a;
77
+ --scrollbar-thumb: #404040;
78
+ --scrollbar-thumb-hover: #505050;
79
+ }
80
+
81
+ body {
82
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
83
+ background: var(--bg-primary);
84
+ color: var(--text-primary);
85
+ overflow: hidden;
86
+ transition: background-color 0.3s ease, color 0.3s ease;
87
+ }
88
+
89
+ /* Smooth transitions for theme changes */
90
+ * {
91
+ transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
92
+ }
93
+
94
+ /* Custom scrollbar theming */
95
+ ::-webkit-scrollbar {
96
+ width: 8px;
97
+ height: 8px;
98
+ }
99
+
100
+ ::-webkit-scrollbar-track {
101
+ background: var(--scrollbar-track);
102
+ }
103
+
104
+ ::-webkit-scrollbar-thumb {
105
+ background: var(--scrollbar-thumb);
106
+ border-radius: 4px;
107
+ }
108
+
109
+ ::-webkit-scrollbar-thumb:hover {
110
+ background: var(--scrollbar-thumb-hover);
111
+ }
112
+ </style>
113
+ </head>
114
+ <body>
115
+ <div id="app"></div>
116
+ <script type="module" src="/src/main.js"></script>
117
+ </body>
118
+ </html>
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "claude-mpm-d2",
3
+ "version": "1.0.0",
4
+ "description": "Svelte 5-based dashboard for Claude MPM",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "preview": "vite preview"
10
+ },
11
+ "devDependencies": {
12
+ "@sveltejs/vite-plugin-svelte": "^4.0.0",
13
+ "svelte": "^5.0.0",
14
+ "vite": "^5.0.0"
15
+ },
16
+ "dependencies": {
17
+ "socket.io-client": "^4.7.5"
18
+ }
19
+ }
@@ -0,0 +1,110 @@
1
+ <script>
2
+ import { onMount, onDestroy } from 'svelte';
3
+ import Header from './components/Header.svelte';
4
+ import Sidebar from './components/Sidebar.svelte';
5
+ import MainContent from './components/MainContent.svelte';
6
+ import { socketStore } from './stores/socket.js';
7
+ import { eventsStore } from './stores/events.js';
8
+ import { themeStore } from './stores/theme.js';
9
+
10
+ // Destructure individual stores from socketStore
11
+ const { statusText, statusColor, port } = socketStore;
12
+
13
+ let activeTab = $state('events');
14
+
15
+ // Socket.IO client instance (set during onMount)
16
+ let client = null;
17
+
18
+ // Event handler functions (defined outside lifecycle for proper cleanup)
19
+ function handleClaudeEvent(data) {
20
+ console.log('Received claude_event:', data);
21
+ eventsStore.addEvent(data);
22
+ }
23
+
24
+ function handleHeartbeat(data) {
25
+ console.log('Received heartbeat:', data);
26
+ eventsStore.addEvent({
27
+ source: 'system',
28
+ type: 'heartbeat',
29
+ timestamp: data.timestamp,
30
+ data: data
31
+ });
32
+ }
33
+
34
+ function handleAnyEvent(eventName, ...args) {
35
+ if (eventName !== 'claude_event' && eventName !== 'heartbeat' && eventName !== 'connection_status') {
36
+ console.log('Received event:', eventName, args);
37
+ }
38
+ }
39
+
40
+ onMount(() => {
41
+ // Initialize theme on mount
42
+ themeStore.initialize();
43
+
44
+ // Connect to Socket.IO server
45
+ socketStore.connect();
46
+
47
+ // Get the client and listen for events
48
+ client = socketStore.getClient();
49
+ if (client) {
50
+ // Listen for Claude Code events
51
+ client.on('claude_event', handleClaudeEvent);
52
+
53
+ // Listen for heartbeat events
54
+ client.on('heartbeat', handleHeartbeat);
55
+
56
+ // Listen for any other events (for debugging)
57
+ client.socket.onAny(handleAnyEvent);
58
+ }
59
+ });
60
+
61
+ onDestroy(() => {
62
+ // Cleanup event listeners before disconnect
63
+ if (client) {
64
+ client.off('claude_event', handleClaudeEvent);
65
+ client.off('heartbeat', handleHeartbeat);
66
+ if (client.socket) {
67
+ client.socket.offAny(handleAnyEvent);
68
+ }
69
+ }
70
+
71
+ // Disconnect Socket.IO
72
+ socketStore.disconnect();
73
+ });
74
+ </script>
75
+
76
+ <div class="app">
77
+ <Header
78
+ statusText={$statusText}
79
+ statusColor={$statusColor}
80
+ port={$port}
81
+ />
82
+
83
+ <div class="app-body">
84
+ <Sidebar bind:activeTab={activeTab} />
85
+ <MainContent activeTab={activeTab} />
86
+ </div>
87
+ </div>
88
+
89
+ <style>
90
+ :global(body) {
91
+ margin: 0;
92
+ padding: 0;
93
+ overflow: hidden;
94
+ }
95
+
96
+ .app {
97
+ width: 100vw;
98
+ height: 100vh;
99
+ display: flex;
100
+ flex-direction: column;
101
+ background: var(--bg-primary);
102
+ color: var(--text-primary);
103
+ }
104
+
105
+ .app-body {
106
+ flex: 1;
107
+ display: flex;
108
+ overflow: hidden;
109
+ }
110
+ </style>