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,144 @@
1
+ /**
2
+ * Socket.IO Client Wrapper
3
+ *
4
+ * Manages connection to the Claude MPM Socket.IO server with:
5
+ * - Auto-reconnect with exponential backoff
6
+ * - Connection state management
7
+ * - Event buffering during disconnection
8
+ */
9
+
10
+ import { io } from 'socket.io-client';
11
+
12
+ export class SocketIOClient {
13
+ constructor(url = 'http://localhost:8765', options = {}) {
14
+ this.url = url;
15
+ this.socket = null;
16
+ this.connected = false;
17
+ this.listeners = new Map();
18
+
19
+ const defaultOptions = {
20
+ transports: ['websocket', 'polling'],
21
+ reconnection: true,
22
+ reconnectionDelay: 1000,
23
+ reconnectionDelayMax: 5000,
24
+ reconnectionAttempts: Infinity,
25
+ timeout: 20000,
26
+ pingInterval: 25000,
27
+ pingTimeout: 20000,
28
+ };
29
+
30
+ this.options = { ...defaultOptions, ...options };
31
+ }
32
+
33
+ connect() {
34
+ if (this.socket) {
35
+ return this.socket;
36
+ }
37
+
38
+ this.socket = io(this.url, this.options);
39
+
40
+ // Connection events
41
+ this.socket.on('connect', () => {
42
+ this.connected = true;
43
+ this.emit('connection_status', { connected: true, reconnecting: false });
44
+ });
45
+
46
+ this.socket.on('disconnect', () => {
47
+ this.connected = false;
48
+ this.emit('connection_status', { connected: false, reconnecting: false });
49
+ });
50
+
51
+ this.socket.on('reconnect_attempt', () => {
52
+ this.emit('connection_status', { connected: false, reconnecting: true });
53
+ });
54
+
55
+ this.socket.on('reconnect', () => {
56
+ this.connected = true;
57
+ this.emit('connection_status', { connected: true, reconnecting: false });
58
+ });
59
+
60
+ this.socket.on('connect_error', (error) => {
61
+ console.error('Socket.IO connection error:', error);
62
+ this.emit('connection_error', error);
63
+ });
64
+
65
+ return this.socket;
66
+ }
67
+
68
+ disconnect() {
69
+ if (this.socket) {
70
+ this.socket.disconnect();
71
+ this.socket = null;
72
+ this.connected = false;
73
+ }
74
+ }
75
+
76
+ on(event, callback) {
77
+ if (!this.socket) {
78
+ this.connect();
79
+ }
80
+
81
+ // Store listener for cleanup
82
+ if (!this.listeners.has(event)) {
83
+ this.listeners.set(event, []);
84
+ }
85
+ this.listeners.get(event).push(callback);
86
+
87
+ this.socket.on(event, callback);
88
+ }
89
+
90
+ off(event, callback) {
91
+ if (this.socket) {
92
+ this.socket.off(event, callback);
93
+ }
94
+
95
+ // Remove from listeners
96
+ if (this.listeners.has(event)) {
97
+ const callbacks = this.listeners.get(event);
98
+ const index = callbacks.indexOf(callback);
99
+ if (index > -1) {
100
+ callbacks.splice(index, 1);
101
+ }
102
+ }
103
+ }
104
+
105
+ emit(event, data) {
106
+ if (this.socket) {
107
+ this.socket.emit(event, data);
108
+ }
109
+ }
110
+
111
+ isConnected() {
112
+ return this.connected;
113
+ }
114
+
115
+ cleanup() {
116
+ // Remove all listeners
117
+ for (const [event, callbacks] of this.listeners.entries()) {
118
+ for (const callback of callbacks) {
119
+ this.socket?.off(event, callback);
120
+ }
121
+ }
122
+ this.listeners.clear();
123
+
124
+ // Disconnect
125
+ this.disconnect();
126
+ }
127
+ }
128
+
129
+ // Singleton instance
130
+ let socketInstance = null;
131
+
132
+ export function getSocketClient(url, options) {
133
+ if (!socketInstance) {
134
+ socketInstance = new SocketIOClient(url, options);
135
+ }
136
+ return socketInstance;
137
+ }
138
+
139
+ export function destroySocketClient() {
140
+ if (socketInstance) {
141
+ socketInstance.cleanup();
142
+ socketInstance = null;
143
+ }
144
+ }
@@ -0,0 +1,7 @@
1
+ import App from './App.svelte';
2
+
3
+ const app = new App({
4
+ target: document.getElementById('app')
5
+ });
6
+
7
+ export default app;
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Events Store (Traditional Svelte Stores)
3
+ *
4
+ * Manages incoming Claude Code hook events with:
5
+ * - Event buffering (last 1000 events)
6
+ * - Automatic filtering capability
7
+ * - Event statistics
8
+ *
9
+ * IMPORTANT: This file uses traditional stores instead of Svelte 5 runes
10
+ * because the store is created at module-load time, outside component context.
11
+ * Runes ($state, $derived) can only be used inside components.
12
+ */
13
+
14
+ import { writable, derived } from 'svelte/store';
15
+
16
+ const MAX_EVENTS = 1000;
17
+
18
+ function createEventsStore() {
19
+ // Use writable stores instead of $state
20
+ const events = writable([]);
21
+ const totalReceived = writable(0);
22
+
23
+ // Use derived stores instead of $derived
24
+ const count = derived(events, ($events) => $events.length);
25
+ const isEmpty = derived(events, ($events) => $events.length === 0);
26
+
27
+ // Event type counts
28
+ const eventTypeCounts = derived(events, ($events) => {
29
+ const counts = {};
30
+ for (const event of $events) {
31
+ const type = event.type || 'unknown';
32
+ counts[type] = (counts[type] || 0) + 1;
33
+ }
34
+ return counts;
35
+ });
36
+
37
+ function addEvent(event) {
38
+ events.update(($events) => {
39
+ // Add timestamp if not present
40
+ if (!event.timestamp) {
41
+ event.timestamp = new Date().toISOString();
42
+ }
43
+
44
+ // Add internal ID for React key stability
45
+ let currentTotal;
46
+ totalReceived.subscribe((val) => { currentTotal = val; })();
47
+ event._id = `${event.timestamp}-${currentTotal}`;
48
+
49
+ // Add to beginning of array (newest first)
50
+ const newEvents = [event, ...$events];
51
+
52
+ // Trim to max size
53
+ return newEvents.length > MAX_EVENTS
54
+ ? newEvents.slice(0, MAX_EVENTS)
55
+ : newEvents;
56
+ });
57
+
58
+ // Increment total
59
+ totalReceived.update((n) => n + 1);
60
+ }
61
+
62
+ function addEvents(newEvents) {
63
+ for (const event of newEvents) {
64
+ addEvent(event);
65
+ }
66
+ }
67
+
68
+ function clear() {
69
+ events.set([]);
70
+ totalReceived.set(0);
71
+ }
72
+
73
+ function filterByType(type) {
74
+ let result;
75
+ events.subscribe(($events) => {
76
+ result = $events.filter((e) => e.type === type);
77
+ })();
78
+ return result;
79
+ }
80
+
81
+ function filterBySource(source) {
82
+ let result;
83
+ events.subscribe(($events) => {
84
+ result = $events.filter((e) => e.source === source);
85
+ })();
86
+ return result;
87
+ }
88
+
89
+ function filterBySubtype(subtype) {
90
+ let result;
91
+ events.subscribe(($events) => {
92
+ result = $events.filter((e) => e.subtype === subtype);
93
+ })();
94
+ return result;
95
+ }
96
+
97
+ return {
98
+ // Export stores with subscribe method for Svelte auto-subscription
99
+ events: { subscribe: events.subscribe },
100
+ count: { subscribe: count.subscribe },
101
+ isEmpty: { subscribe: isEmpty.subscribe },
102
+ totalReceived: { subscribe: totalReceived.subscribe },
103
+ eventTypeCounts: { subscribe: eventTypeCounts.subscribe },
104
+ // Export methods
105
+ addEvent,
106
+ addEvents,
107
+ clear,
108
+ filterByType,
109
+ filterBySource,
110
+ filterBySubtype
111
+ };
112
+ }
113
+
114
+ export const eventsStore = createEventsStore();
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Socket.IO Store (Traditional Svelte Stores)
3
+ *
4
+ * Manages Socket.IO connection state using traditional Svelte stores.
5
+ * Uses writable and derived stores for module-level reactivity.
6
+ *
7
+ * IMPORTANT: This file uses traditional stores instead of Svelte 5 runes
8
+ * because the store is created at module-load time, outside component context.
9
+ * Runes ($state, $derived) can only be used inside components.
10
+ */
11
+
12
+ import { writable, derived } from 'svelte/store';
13
+ import { getSocketClient } from '../lib/socketio.js';
14
+
15
+ // Default configuration (fallbacks if not running in browser)
16
+ const DEFAULT_PORT = 8765;
17
+ const DEFAULT_HOST = 'localhost';
18
+
19
+ // Auto-detect from current page URL (browser environment)
20
+ function getAutoDetectedPort() {
21
+ if (typeof window !== 'undefined' && window.location.port) {
22
+ return parseInt(window.location.port, 10);
23
+ }
24
+ return DEFAULT_PORT;
25
+ }
26
+
27
+ function getAutoDetectedHost() {
28
+ if (typeof window !== 'undefined' && window.location.hostname) {
29
+ return window.location.hostname;
30
+ }
31
+ return DEFAULT_HOST;
32
+ }
33
+
34
+ function createSocketStore() {
35
+ // Use writable stores instead of $state
36
+ const connected = writable(false);
37
+ const reconnecting = writable(false);
38
+ const port = writable(getAutoDetectedPort());
39
+ const host = writable(getAutoDetectedHost());
40
+
41
+ let client = null;
42
+
43
+ // Use derived stores instead of $derived
44
+ const statusText = derived(
45
+ [connected, reconnecting],
46
+ ([$connected, $reconnecting]) =>
47
+ $connected ? 'Connected' : $reconnecting ? 'Reconnecting...' : 'Disconnected'
48
+ );
49
+
50
+ const statusColor = derived(
51
+ [connected, reconnecting],
52
+ ([$connected, $reconnecting]) =>
53
+ $connected ? '#22c55e' : $reconnecting ? '#eab308' : '#ef4444'
54
+ );
55
+
56
+ const url = derived(
57
+ [host, port],
58
+ ([$host, $port]) => `http://${$host}:${$port}`
59
+ );
60
+
61
+ function connect(customHost = null, customPort = null) {
62
+ // Use auto-detected values if no custom values provided
63
+ const finalHost = customHost || getAutoDetectedHost();
64
+ const finalPort = customPort || getAutoDetectedPort();
65
+
66
+ host.set(finalHost);
67
+ port.set(finalPort);
68
+
69
+ client = getSocketClient(`http://${finalHost}:${finalPort}`);
70
+
71
+ // Listen for connection status changes
72
+ client.on('connection_status', (status) => {
73
+ connected.set(status.connected);
74
+ reconnecting.set(status.reconnecting);
75
+ });
76
+
77
+ client.connect();
78
+ }
79
+
80
+ function disconnect() {
81
+ if (client) {
82
+ client.disconnect();
83
+ connected.set(false);
84
+ reconnecting.set(false);
85
+ }
86
+ }
87
+
88
+ function getClient() {
89
+ return client;
90
+ }
91
+
92
+ return {
93
+ // Export stores with subscribe method for Svelte auto-subscription
94
+ connected: { subscribe: connected.subscribe },
95
+ reconnecting: { subscribe: reconnecting.subscribe },
96
+ port: { subscribe: port.subscribe },
97
+ host: { subscribe: host.subscribe },
98
+ statusText: { subscribe: statusText.subscribe },
99
+ statusColor: { subscribe: statusColor.subscribe },
100
+ url: { subscribe: url.subscribe },
101
+ // Export methods
102
+ connect,
103
+ disconnect,
104
+ getClient
105
+ };
106
+ }
107
+
108
+ export const socketStore = createSocketStore();
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Theme Store (Traditional Svelte Stores)
3
+ *
4
+ * Manages light/dark theme state with localStorage persistence.
5
+ * Uses traditional Svelte stores for module-level reactivity.
6
+ *
7
+ * IMPORTANT: This file uses traditional stores instead of Svelte 5 runes
8
+ * because the store is created at module-load time, outside component context.
9
+ * Runes ($state, $derived) can only be used inside components.
10
+ */
11
+
12
+ import { writable } from 'svelte/store';
13
+
14
+ // Get stored theme or default to light
15
+ function getStoredTheme() {
16
+ if (typeof window === 'undefined') {
17
+ return 'light';
18
+ }
19
+ return localStorage.getItem('theme') || 'light';
20
+ }
21
+
22
+ function createThemeStore() {
23
+ const { subscribe, set, update } = writable(getStoredTheme());
24
+
25
+ return {
26
+ subscribe,
27
+ toggle: () => {
28
+ update(current => {
29
+ const newTheme = current === 'light' ? 'dark' : 'light';
30
+
31
+ // Persist to localStorage
32
+ if (typeof window !== 'undefined') {
33
+ localStorage.setItem('theme', newTheme);
34
+ document.documentElement.setAttribute('data-theme', newTheme);
35
+ }
36
+
37
+ return newTheme;
38
+ });
39
+ },
40
+ set: (value) => {
41
+ // Validate theme value
42
+ if (value !== 'light' && value !== 'dark') {
43
+ console.error(`Invalid theme value: ${value}. Using 'light' instead.`);
44
+ value = 'light';
45
+ }
46
+
47
+ // Persist to localStorage
48
+ if (typeof window !== 'undefined') {
49
+ localStorage.setItem('theme', value);
50
+ document.documentElement.setAttribute('data-theme', value);
51
+ }
52
+
53
+ set(value);
54
+ },
55
+ initialize: () => {
56
+ // Set initial theme on document
57
+ if (typeof window !== 'undefined') {
58
+ const theme = getStoredTheme();
59
+ document.documentElement.setAttribute('data-theme', theme);
60
+ }
61
+ }
62
+ };
63
+ }
64
+
65
+ export const themeStore = createThemeStore();
@@ -0,0 +1,12 @@
1
+ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'
2
+
3
+ export default {
4
+ // Consult https://svelte.dev/docs#compile-time-svelte-preprocess
5
+ // for more information about preprocessors
6
+ preprocess: vitePreprocess(),
7
+
8
+ compilerOptions: {
9
+ // Enable run-time checks for development
10
+ dev: process.env.NODE_ENV !== 'production'
11
+ }
12
+ }
@@ -0,0 +1,15 @@
1
+ import { defineConfig } from 'vite'
2
+ import { svelte } from '@sveltejs/vite-plugin-svelte'
3
+
4
+ export default defineConfig({
5
+ plugins: [svelte()],
6
+ build: {
7
+ outDir: 'dist',
8
+ emptyOutDir: true
9
+ },
10
+ server: {
11
+ port: 5173,
12
+ strictPort: false
13
+ },
14
+ base: '/d2/'
15
+ })
@@ -0,0 +1,36 @@
1
+ # Agent Memory System
2
+
3
+ ## Purpose
4
+ Each agent maintains project-specific knowledge in these files. Agents read their memory file before tasks and update it when they learn something new.
5
+
6
+ ## Manual Editing
7
+ Feel free to edit these files to:
8
+ - Add project-specific guidelines
9
+ - Remove outdated information
10
+ - Reorganize for better clarity
11
+ - Add domain-specific knowledge
12
+
13
+ ## Memory Limits
14
+ - Max file size: 8KB (~2000 tokens)
15
+ - Max sections: 10
16
+ - Max items per section: 15
17
+ - Files auto-truncate when limits exceeded
18
+
19
+ ## File Format
20
+ Standard markdown with structured sections. Agents expect:
21
+ - Project Architecture
22
+ - Implementation Guidelines
23
+ - Common Mistakes to Avoid
24
+ - Current Technical Context
25
+
26
+ ## How It Works
27
+ 1. Agents read their memory file before starting tasks
28
+ 2. Agents add learnings during or after task completion
29
+ 3. Files automatically enforce size limits
30
+ 4. Developers can manually edit for accuracy
31
+
32
+ ## Memory File Lifecycle
33
+ - Created automatically when agent first runs
34
+ - Updated through hook system after delegations
35
+ - Manually editable by developers
36
+ - Version controlled with project
@@ -0,0 +1 @@
1
+ 2
@@ -0,0 +1,121 @@
1
+ # Claude MPM Web Dashboard
2
+
3
+ This directory contains the modular web dashboard for Claude MPM monitoring and management.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ src/claude_mpm/dashboard/
9
+ ├── static/
10
+ │ ├── css/
11
+ │ │ └── dashboard.css # Main stylesheet
12
+ │ └── js/
13
+ │ ├── socket-client.js # Socket.IO connection management
14
+ │ ├── dashboard.js # Main dashboard application
15
+ │ └── components/
16
+ │ ├── event-viewer.js # Event display and filtering
17
+ │ ├── module-viewer.js # Event detail viewer
18
+ │ └── session-manager.js # Session management
19
+ ├── templates/
20
+ │ └── index.html # Main dashboard HTML
21
+ ├── index.html # Root index with redirect
22
+ ├── test_dashboard.html # Test version for verification
23
+ └── README.md # This file
24
+ ```
25
+
26
+ ## Components
27
+
28
+ ### SocketClient (`socket-client.js`)
29
+ - Manages WebSocket connections to the Claude MPM server
30
+ - Handles event reception and processing
31
+ - Provides callbacks for connection state changes
32
+ - Maintains event history and session tracking
33
+
34
+ ### EventViewer (`components/event-viewer.js`)
35
+ - Displays events in a filterable list
36
+ - Supports search, type filtering, and session filtering
37
+ - Handles event selection and keyboard navigation
38
+ - Updates metrics display (total events, events per minute, etc.)
39
+
40
+ ### ModuleViewer (`components/module-viewer.js`)
41
+ - Shows detailed information about selected events
42
+ - Provides structured views for different event types
43
+ - Displays raw JSON data for debugging
44
+ - Organizes events by class/category
45
+
46
+ ### SessionManager (`components/session-manager.js`)
47
+ - Manages session selection and filtering
48
+ - Updates session dropdown with available sessions
49
+ - Tracks current active session
50
+ - Updates footer information
51
+
52
+ ### Dashboard (`dashboard.js`)
53
+ - Main application coordinator
54
+ - Handles tab switching between Events, Agents, Tools, and Files
55
+ - Manages component interactions
56
+ - Provides global functions for backward compatibility
57
+
58
+ ## Features
59
+
60
+ ### File-Centric Files Tab
61
+ The Files tab now shows a file-centric view where:
62
+ - Each file appears only once in the list
63
+ - Files show read/write icons based on operations performed
64
+ - Most recently accessed files appear at the bottom
65
+ - Clicking a file shows all operations performed on it with timestamps and agent information
66
+
67
+ ### Tab Organization
68
+ - **Events**: All events with filtering and search
69
+ - **Agents**: Agent-specific events and operations
70
+ - **Tools**: Tool usage and parameters
71
+ - **Files**: File operations organized by file path
72
+
73
+ ### Enhanced Event Details
74
+ - Structured views for different event types
75
+ - Todo checklists with status indicators
76
+ - Agent and tool information
77
+ - Session tracking and filtering
78
+
79
+ ## Usage
80
+
81
+ ### Development
82
+ For development and testing, use `test_dashboard.html` which includes module verification.
83
+
84
+ ### Production
85
+ Use `templates/dashboard.html` as the main template, ensuring all static files are served correctly.
86
+
87
+ ### Integration
88
+ The dashboard can be integrated into a Flask/FastAPI application by serving the static files and using the template.
89
+
90
+ ## Migration from Original
91
+
92
+ The original monolithic `claude_mpm_socketio_dashboard.html` has been replaced with a modular structure:
93
+
94
+ 1. **CSS**: Extracted to `static/css/dashboard.css`
95
+ 2. **JavaScript**: Split into logical modules in `static/js/`
96
+ 3. **HTML**: Clean template in `templates/dashboard.html`
97
+
98
+ All original functionality has been preserved while improving:
99
+ - Code organization and maintainability
100
+ - Module reusability
101
+ - Easier debugging and development
102
+ - Better separation of concerns
103
+
104
+ ## Backward Compatibility
105
+
106
+ Global functions are maintained for compatibility:
107
+ - `connectSocket()`
108
+ - `disconnectSocket()`
109
+ - `clearEvents()`
110
+ - `exportEvents()`
111
+ - `clearSelection()`
112
+ - `switchTab(tabName)`
113
+
114
+ ## Browser Support
115
+
116
+ Requires modern browsers with support for:
117
+ - ES6 Classes
118
+ - Fetch API
119
+ - Custom Events
120
+ - CSS Grid/Flexbox
121
+ - Socket.IO 4.x
@@ -0,0 +1 @@
1
+ 4.1.0