claude-mpm 4.25.10__py3-none-any.whl → 5.1.8__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 (507) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +12 -0
  3. claude_mpm/agents/PM_INSTRUCTIONS.md +1055 -2230
  4. claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
  5. claude_mpm/agents/WORKFLOW.md +4 -4
  6. claude_mpm/agents/__init__.py +6 -0
  7. claude_mpm/agents/agent_loader.py +1 -4
  8. claude_mpm/agents/base_agent_loader.py +10 -35
  9. claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +576 -66
  10. claude_mpm/agents/templates/context-management-examples.md +544 -0
  11. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  12. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  13. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  14. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  15. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  16. claude_mpm/cli/__init__.py +28 -3
  17. claude_mpm/cli/commands/__init__.py +2 -0
  18. claude_mpm/cli/commands/agent_source.py +774 -0
  19. claude_mpm/cli/commands/agent_state_manager.py +188 -30
  20. claude_mpm/cli/commands/agents.py +959 -36
  21. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  22. claude_mpm/cli/commands/agents_discover.py +338 -0
  23. claude_mpm/cli/commands/auto_configure.py +537 -239
  24. claude_mpm/cli/commands/config.py +7 -4
  25. claude_mpm/cli/commands/configure.py +924 -45
  26. claude_mpm/cli/commands/configure_navigation.py +63 -46
  27. claude_mpm/cli/commands/doctor.py +10 -2
  28. claude_mpm/cli/commands/local_deploy.py +1 -4
  29. claude_mpm/cli/commands/postmortem.py +401 -0
  30. claude_mpm/cli/commands/run.py +1 -39
  31. claude_mpm/cli/commands/skill_source.py +694 -0
  32. claude_mpm/cli/commands/skills.py +322 -19
  33. claude_mpm/cli/executor.py +22 -3
  34. claude_mpm/cli/interactive/agent_wizard.py +1028 -43
  35. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  36. claude_mpm/cli/parsers/agents_parser.py +256 -4
  37. claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
  38. claude_mpm/cli/parsers/base_parser.py +25 -0
  39. claude_mpm/cli/parsers/config_parser.py +96 -43
  40. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  41. claude_mpm/cli/parsers/skills_parser.py +7 -0
  42. claude_mpm/cli/parsers/source_parser.py +138 -0
  43. claude_mpm/cli/startup.py +456 -103
  44. claude_mpm/cli/startup_display.py +4 -4
  45. claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
  46. claude_mpm/commands/mpm-agents-detect.md +9 -0
  47. claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
  48. claude_mpm/commands/mpm-agents-recommend.md +9 -0
  49. claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
  50. claude_mpm/commands/mpm-doctor.md +9 -0
  51. claude_mpm/commands/mpm-help.md +14 -2
  52. claude_mpm/commands/mpm-init.md +9 -0
  53. claude_mpm/commands/mpm-monitor.md +9 -0
  54. claude_mpm/commands/mpm-postmortem.md +123 -0
  55. claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
  56. claude_mpm/commands/mpm-status.md +9 -0
  57. claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
  58. claude_mpm/commands/mpm-ticket-view.md +552 -0
  59. claude_mpm/commands/mpm-version.md +9 -0
  60. claude_mpm/commands/mpm.md +10 -0
  61. claude_mpm/config/agent_presets.py +488 -0
  62. claude_mpm/config/agent_sources.py +325 -0
  63. claude_mpm/config/skill_presets.py +392 -0
  64. claude_mpm/config/skill_sources.py +590 -0
  65. claude_mpm/constants.py +1 -0
  66. claude_mpm/core/claude_runner.py +5 -34
  67. claude_mpm/core/config.py +16 -0
  68. claude_mpm/core/framework/__init__.py +3 -16
  69. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  70. claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
  71. claude_mpm/core/interactive_session.py +83 -7
  72. claude_mpm/core/oneshot_session.py +71 -8
  73. claude_mpm/core/protocols/__init__.py +23 -0
  74. claude_mpm/core/protocols/runner_protocol.py +103 -0
  75. claude_mpm/core/protocols/session_protocol.py +131 -0
  76. claude_mpm/core/shared/singleton_manager.py +11 -4
  77. claude_mpm/core/system_context.py +38 -0
  78. claude_mpm/core/unified_config.py +22 -0
  79. claude_mpm/experimental/cli_enhancements.py +1 -5
  80. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  81. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
  82. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
  83. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
  84. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
  85. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
  86. claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
  87. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
  88. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
  89. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
  90. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
  91. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
  92. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  93. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  94. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  95. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  96. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  97. claude_mpm/models/git_repository.py +198 -0
  98. claude_mpm/services/agents/agent_builder.py +45 -9
  99. claude_mpm/services/agents/agent_preset_service.py +238 -0
  100. claude_mpm/services/agents/agent_selection_service.py +484 -0
  101. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  102. claude_mpm/services/agents/cache_git_manager.py +621 -0
  103. claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
  104. claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
  105. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  106. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  107. claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
  108. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  109. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  110. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
  111. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  112. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
  113. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  114. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  115. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  116. claude_mpm/services/agents/git_source_manager.py +629 -0
  117. claude_mpm/services/agents/loading/framework_agent_loader.py +1 -4
  118. claude_mpm/services/agents/local_template_manager.py +47 -9
  119. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  120. claude_mpm/services/agents/sources/__init__.py +13 -0
  121. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  122. claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
  123. claude_mpm/services/agents/startup_sync.py +239 -0
  124. claude_mpm/services/agents/toolchain_detector.py +474 -0
  125. claude_mpm/services/analysis/__init__.py +25 -0
  126. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  127. claude_mpm/services/analysis/postmortem_service.py +765 -0
  128. claude_mpm/services/command_deployment_service.py +200 -6
  129. claude_mpm/services/core/base.py +7 -2
  130. claude_mpm/services/core/interfaces/__init__.py +1 -3
  131. claude_mpm/services/core/interfaces/health.py +1 -4
  132. claude_mpm/services/core/models/__init__.py +2 -11
  133. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  134. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  135. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  136. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  137. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  138. claude_mpm/services/diagnostics/doctor_reporter.py +34 -6
  139. claude_mpm/services/git/__init__.py +21 -0
  140. claude_mpm/services/git/git_operations_service.py +494 -0
  141. claude_mpm/services/github/__init__.py +21 -0
  142. claude_mpm/services/github/github_cli_service.py +397 -0
  143. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  144. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  145. claude_mpm/services/instructions/__init__.py +9 -0
  146. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  147. claude_mpm/services/local_ops/__init__.py +3 -13
  148. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  149. claude_mpm/services/local_ops/health_manager.py +1 -4
  150. claude_mpm/services/mcp_config_manager.py +75 -145
  151. claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
  152. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
  153. claude_mpm/services/mcp_service_verifier.py +6 -3
  154. claude_mpm/services/monitor/daemon.py +28 -8
  155. claude_mpm/services/monitor/daemon_manager.py +96 -19
  156. claude_mpm/services/pr/__init__.py +14 -0
  157. claude_mpm/services/pr/pr_template_service.py +329 -0
  158. claude_mpm/services/project/project_organizer.py +4 -0
  159. claude_mpm/services/runner_configuration_service.py +16 -3
  160. claude_mpm/services/session_management_service.py +16 -4
  161. claude_mpm/services/skills/__init__.py +18 -0
  162. claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
  163. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  164. claude_mpm/services/socketio/server/core.py +1 -4
  165. claude_mpm/services/socketio/server/main.py +1 -3
  166. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  167. claude_mpm/services/unified/unified_deployment.py +1 -5
  168. claude_mpm/services/visualization/__init__.py +1 -5
  169. claude_mpm/templates/questions/__init__.py +2 -7
  170. claude_mpm/templates/questions/pr_strategy.py +1 -4
  171. claude_mpm/templates/questions/project_init.py +1 -4
  172. claude_mpm/templates/questions/ticket_mgmt.py +1 -4
  173. claude_mpm/utils/agent_dependency_loader.py +77 -10
  174. claude_mpm/utils/agent_filters.py +288 -0
  175. claude_mpm/utils/gitignore.py +3 -0
  176. claude_mpm/utils/migration.py +372 -0
  177. claude_mpm/utils/progress.py +387 -0
  178. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +356 -112
  179. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +188 -439
  180. claude_mpm/agents/templates/agent-manager.json +0 -273
  181. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  182. claude_mpm/agents/templates/api_qa.json +0 -183
  183. claude_mpm/agents/templates/clerk-ops.json +0 -235
  184. claude_mpm/agents/templates/code_analyzer.json +0 -101
  185. claude_mpm/agents/templates/content-agent.json +0 -358
  186. claude_mpm/agents/templates/dart_engineer.json +0 -307
  187. claude_mpm/agents/templates/data_engineer.json +0 -225
  188. claude_mpm/agents/templates/documentation.json +0 -238
  189. claude_mpm/agents/templates/engineer.json +0 -210
  190. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  191. claude_mpm/agents/templates/golang_engineer.json +0 -270
  192. claude_mpm/agents/templates/imagemagick.json +0 -264
  193. claude_mpm/agents/templates/java_engineer.json +0 -346
  194. claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
  195. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  196. claude_mpm/agents/templates/memory_manager.json +0 -158
  197. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  198. claude_mpm/agents/templates/ops.json +0 -185
  199. claude_mpm/agents/templates/php-engineer.json +0 -287
  200. claude_mpm/agents/templates/product_owner.json +0 -338
  201. claude_mpm/agents/templates/project_organizer.json +0 -144
  202. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  203. claude_mpm/agents/templates/python_engineer.json +0 -387
  204. claude_mpm/agents/templates/qa.json +0 -243
  205. claude_mpm/agents/templates/react_engineer.json +0 -239
  206. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  207. claude_mpm/agents/templates/research.json +0 -258
  208. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  209. claude_mpm/agents/templates/rust_engineer.json +0 -275
  210. claude_mpm/agents/templates/security.json +0 -202
  211. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  212. claude_mpm/agents/templates/tauri_engineer.json +0 -274
  213. claude_mpm/agents/templates/ticketing.json +0 -181
  214. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  215. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  216. claude_mpm/agents/templates/version_control.json +0 -159
  217. claude_mpm/agents/templates/web_qa.json +0 -400
  218. claude_mpm/agents/templates/web_ui.json +0 -189
  219. claude_mpm/cli/README.md +0 -253
  220. claude_mpm/cli/commands/mcp_install_commands.py.backup +0 -284
  221. claude_mpm/cli/commands/mpm_init/README.md +0 -365
  222. claude_mpm/cli_module/refactoring_guide.md +0 -253
  223. claude_mpm/commands/mpm-tickets.md +0 -151
  224. claude_mpm/config/agent_capabilities.yaml +0 -658
  225. claude_mpm/config/async_logging_config.yaml +0 -145
  226. claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +0 -34
  227. claude_mpm/d2/.gitignore +0 -22
  228. claude_mpm/d2/ARCHITECTURE_COMPARISON.md +0 -273
  229. claude_mpm/d2/FLASK_INTEGRATION.md +0 -156
  230. claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +0 -452
  231. claude_mpm/d2/QUICKSTART.md +0 -186
  232. claude_mpm/d2/README.md +0 -232
  233. claude_mpm/d2/STORE_FIX_SUMMARY.md +0 -167
  234. claude_mpm/d2/SVELTE5_STORES_GUIDE.md +0 -180
  235. claude_mpm/d2/TESTING.md +0 -288
  236. claude_mpm/d2/index.html +0 -118
  237. claude_mpm/d2/package.json +0 -19
  238. claude_mpm/d2/src/App.svelte +0 -110
  239. claude_mpm/d2/src/components/Header.svelte +0 -153
  240. claude_mpm/d2/src/components/MainContent.svelte +0 -74
  241. claude_mpm/d2/src/components/Sidebar.svelte +0 -85
  242. claude_mpm/d2/src/components/tabs/EventsTab.svelte +0 -326
  243. claude_mpm/d2/src/lib/socketio.js +0 -144
  244. claude_mpm/d2/src/main.js +0 -7
  245. claude_mpm/d2/src/stores/events.js +0 -114
  246. claude_mpm/d2/src/stores/socket.js +0 -108
  247. claude_mpm/d2/src/stores/theme.js +0 -65
  248. claude_mpm/d2/svelte.config.js +0 -12
  249. claude_mpm/d2/vite.config.js +0 -15
  250. claude_mpm/dashboard/.claude-mpm/memories/README.md +0 -36
  251. claude_mpm/dashboard/BUILD_NUMBER +0 -1
  252. claude_mpm/dashboard/README.md +0 -121
  253. claude_mpm/dashboard/VERSION +0 -1
  254. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  255. claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +0 -273
  256. claude_mpm/dashboard/react/components/ErrorBoundary.tsx +0 -75
  257. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  258. claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +0 -141
  259. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  260. claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +0 -36
  261. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  262. claude_mpm/dashboard/react/components/shared/FilterBar.tsx +0 -89
  263. claude_mpm/dashboard/react/contexts/DashboardContext.tsx +0 -215
  264. claude_mpm/dashboard/react/entries/events.tsx +0 -165
  265. claude_mpm/dashboard/react/hooks/useEvents.ts +0 -191
  266. claude_mpm/dashboard/react/hooks/useSocket.ts +0 -225
  267. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  268. claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +0 -170
  269. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  270. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  271. claude_mpm/dashboard/static/built/components/activity-tree.js.map +0 -1
  272. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  273. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  274. claude_mpm/dashboard/static/built/components/agent-inference.js.map +0 -1
  275. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  276. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  277. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  278. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  279. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  280. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  281. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  282. claude_mpm/dashboard/static/built/components/code-tree.js.map +0 -1
  283. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  284. claude_mpm/dashboard/static/built/components/code-viewer.js.map +0 -1
  285. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  286. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  287. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  288. claude_mpm/dashboard/static/built/components/event-processor.js.map +0 -1
  289. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  290. claude_mpm/dashboard/static/built/components/event-viewer.js.map +0 -1
  291. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  292. claude_mpm/dashboard/static/built/components/export-manager.js.map +0 -1
  293. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  294. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  295. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  296. claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +0 -1
  297. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  298. claude_mpm/dashboard/static/built/components/file-viewer.js.map +0 -1
  299. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  300. claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +0 -1
  301. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  302. claude_mpm/dashboard/static/built/components/hud-manager.js.map +0 -1
  303. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  304. claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +0 -1
  305. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  306. claude_mpm/dashboard/static/built/components/module-viewer.js.map +0 -1
  307. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  308. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  309. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  310. claude_mpm/dashboard/static/built/components/session-manager.js.map +0 -1
  311. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  312. claude_mpm/dashboard/static/built/components/socket-manager.js.map +0 -1
  313. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  314. claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +0 -1
  315. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  316. claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +0 -1
  317. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  318. claude_mpm/dashboard/static/built/components/working-directory.js.map +0 -1
  319. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  320. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  321. claude_mpm/dashboard/static/built/dashboard.js.map +0 -1
  322. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  323. claude_mpm/dashboard/static/built/react/events.js +0 -30
  324. claude_mpm/dashboard/static/built/react/events.js.map +0 -1
  325. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  326. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  327. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  328. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  329. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  330. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  331. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  332. claude_mpm/dashboard/static/built/socket-client.js.map +0 -1
  333. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  334. claude_mpm/dashboard/static/events.html +0 -607
  335. claude_mpm/dashboard/static/index.html +0 -635
  336. claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +0 -170
  337. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  338. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  339. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  340. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  341. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  342. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  343. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  344. claude_mpm/dashboard/static/legacy/files.html +0 -747
  345. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  346. claude_mpm/dashboard/static/monitors.html +0 -431
  347. claude_mpm/dashboard/static/navigation-test-results.md +0 -118
  348. claude_mpm/dashboard/static/production/events.html +0 -659
  349. claude_mpm/dashboard/static/production/main.html +0 -698
  350. claude_mpm/dashboard/static/production/monitors.html +0 -483
  351. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  352. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  353. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  354. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  355. claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +0 -36
  356. claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +0 -39
  357. claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +0 -38
  358. claude_mpm/hooks/README.md +0 -143
  359. claude_mpm/hooks/templates/README.md +0 -180
  360. claude_mpm/hooks/templates/settings.json.example +0 -147
  361. claude_mpm/schemas/agent_schema.json +0 -596
  362. claude_mpm/schemas/frontmatter_schema.json +0 -165
  363. claude_mpm/services/event_bus/README.md +0 -244
  364. claude_mpm/services/events/README.md +0 -303
  365. claude_mpm/services/framework_claude_md_generator/README.md +0 -119
  366. claude_mpm/services/mcp_gateway/README.md +0 -185
  367. claude_mpm/services/socketio/handlers/connection.py.backup +0 -217
  368. claude_mpm/services/socketio/handlers/hook.py.backup +0 -154
  369. claude_mpm/services/static/.gitkeep +0 -2
  370. claude_mpm/services/version_control/VERSION +0 -1
  371. claude_mpm/skills/bundled/.gitkeep +0 -2
  372. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  373. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  374. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  375. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  376. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  377. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  378. claude_mpm/skills/bundled/collaboration/git-worktrees.md +0 -317
  379. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  380. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  381. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  382. claude_mpm/skills/bundled/collaboration/stacked-prs.md +0 -251
  383. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  384. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  385. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  386. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  387. claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +0 -63
  388. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  389. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  390. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  391. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  392. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  393. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  394. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  395. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  396. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  397. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  398. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  399. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  400. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  401. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  402. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  403. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  404. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  405. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  406. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  407. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +0 -611
  408. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +0 -596
  409. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +0 -260
  410. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +0 -315
  411. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +0 -436
  412. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +0 -433
  413. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +0 -452
  414. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +0 -404
  415. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +0 -420
  416. claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +0 -202
  417. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  418. claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +0 -54
  419. claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +0 -322
  420. claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  421. claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +0 -202
  422. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  423. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  424. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  425. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  426. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  427. claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +0 -202
  428. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  429. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  430. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  431. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  432. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  433. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  434. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  435. claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +0 -22
  436. claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +0 -2
  437. claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +0 -202
  438. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  439. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  440. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  441. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  442. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  443. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  444. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  445. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  446. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  447. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  448. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  449. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  450. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  451. claude_mpm/skills/bundled/react/flexlayout-react.md +0 -742
  452. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  453. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  454. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  455. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  456. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  457. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  458. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  459. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +0 -495
  460. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +0 -599
  461. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +0 -535
  462. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +0 -613
  463. claude_mpm/skills/bundled/tauri/tauri-event-system.md +0 -648
  464. claude_mpm/skills/bundled/tauri/tauri-file-system.md +0 -673
  465. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +0 -767
  466. claude_mpm/skills/bundled/tauri/tauri-performance.md +0 -669
  467. claude_mpm/skills/bundled/tauri/tauri-state-management.md +0 -573
  468. claude_mpm/skills/bundled/tauri/tauri-testing.md +0 -384
  469. claude_mpm/skills/bundled/tauri/tauri-window-management.md +0 -628
  470. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  471. claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +0 -158
  472. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  473. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  474. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  475. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  476. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  477. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  478. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  479. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +0 -458
  480. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +0 -411
  481. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +0 -317
  482. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +0 -270
  483. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +0 -436
  484. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  485. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  486. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  487. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  488. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  489. claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +0 -202
  490. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  491. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  492. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  493. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  494. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  495. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  496. claude_mpm/templates/questions/EXAMPLES.md +0 -501
  497. claude_mpm/tools/README_SOCKETIO_DEBUG.md +0 -224
  498. claude_mpm/tools/code_tree_analyzer/README.md +0 -64
  499. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  500. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  501. /claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +0 -0
  502. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  503. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  504. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
  505. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
  506. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
  507. {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
@@ -1,119 +0,0 @@
1
- # Framework CLAUDE.md Generator
2
-
3
- This directory contains the refactored framework CLAUDE.md generator service, originally a single 1,267-line file.
4
-
5
- ## Structure
6
-
7
- ### Core Modules
8
-
9
- - **`__init__.py`** (~250 lines) - Main facade class that coordinates all functionality
10
- - **`version_manager.py`** (~100 lines) - Handles version parsing, incrementing, and comparison
11
- - **`content_assembler.py`** (~120 lines) - Assembles sections and applies template variables
12
- - **`content_validator.py`** (~80 lines) - Validates generated content structure and completeness
13
- - **`deployment_manager.py`** (~80 lines) - Handles deployment to parent directories
14
- - **`section_manager.py`** (~60 lines) - Manages section registration, ordering, and updates
15
-
16
- ### Section Generators
17
-
18
- The `section_generators/` subdirectory contains individual generators for each section:
19
-
20
- - **`__init__.py`** - Base classes and registry
21
- - **`header.py`** - Header with version metadata
22
- - **`role_designation.py`** - AI Assistant role designation
23
- - **`agents.py`** (~570 lines) - Comprehensive agents documentation (largest section)
24
- - **`todo_task_tools.py`** - Todo and Task Tools integration
25
- - **`claude_pm_init.py`** - Claude-PM initialization procedures
26
- - **`orchestration_principles.py`** - Core orchestration principles
27
- - **`subprocess_validation.py`** - Subprocess validation protocol
28
- - **`delegation_constraints.py`** - Critical delegation constraints
29
- - **`environment_config.py`** - Environment configuration
30
- - **`troubleshooting.py`** - Troubleshooting guide
31
- - **`core_responsibilities.py`** - Core responsibilities list
32
- - **`footer.py`** - Footer with metadata
33
-
34
- ## Usage
35
-
36
- The API remains unchanged from the original implementation:
37
-
38
- ```python
39
- from claude_pm.services.framework_claude_md_generator import FrameworkClaudeMdGenerator
40
-
41
- # Create generator instance (default: INSTRUCTIONS.md)
42
- generator = FrameworkClaudeMdGenerator()
43
-
44
- # Or specify a custom target filename (e.g., for legacy compatibility)
45
- generator = FrameworkClaudeMdGenerator(target_filename="CLAUDE.md")
46
-
47
- # Generate content
48
- content = generator.generate(
49
- current_content=existing_content, # Optional: for version auto-increment
50
- template_variables={'PLATFORM': 'darwin', 'PYTHON_CMD': 'python3'}
51
- )
52
-
53
- # Deploy to parent directory
54
- success, message = generator.deploy_to_parent(Path('/parent/dir'))
55
-
56
- # Update a section
57
- generator.update_section('agents', 'Custom agents content')
58
-
59
- # Add custom section
60
- generator.add_custom_section('custom', 'Custom content', after='agents')
61
- ```
62
-
63
- ## Configuration Options
64
-
65
- ### Target Filename
66
-
67
- The generator supports configurable target filenames for deployment:
68
-
69
- - **Default**: `"INSTRUCTIONS.md"` - The standard filename for framework instructions
70
- - **Legacy**: `"CLAUDE.md"` - For backward compatibility with older projects
71
- - **Custom**: Any filename can be specified for special use cases
72
-
73
- This configuration affects:
74
- - Deployment target filename
75
- - Backup file naming
76
- - Deployment check logic
77
-
78
- Example:
79
- ```python
80
- # Use legacy filename for older projects
81
- generator = FrameworkClaudeMdGenerator(target_filename="CLAUDE.md")
82
-
83
- # Use custom filename for special environments
84
- generator = FrameworkClaudeMdGenerator(target_filename="PROJECT_INSTRUCTIONS.md")
85
- ```
86
-
87
- ## Design Benefits
88
-
89
- 1. **Modularity**: Each concern is separated into its own module
90
- 2. **Maintainability**: Smaller, focused modules are easier to understand and modify
91
- 3. **Testability**: Individual components can be tested in isolation
92
- 4. **Extensibility**: New section generators can be added easily
93
- 5. **Performance**: Section generators are loaded on demand
94
- 6. **Backward Compatibility**: Original API preserved through facade pattern
95
-
96
- ## Section Generator Pattern
97
-
98
- To add a new section generator:
99
-
100
- 1. Create a new file in `section_generators/`
101
- 2. Inherit from `BaseSectionGenerator`
102
- 3. Implement the `generate()` method
103
- 4. Register in `section_generators/__init__.py`
104
-
105
- Example:
106
- ```python
107
- from . import BaseSectionGenerator
108
-
109
- class CustomSectionGenerator(BaseSectionGenerator):
110
- def generate(self, data: Dict[str, Any]) -> str:
111
- return "## Custom Section\n\nContent here..."
112
- ```
113
-
114
- ## Refactoring Summary
115
-
116
- - **Original**: 1,267 lines in a single file
117
- - **Refactored**: ~250 lines in main module + well-organized submodules
118
- - **Total line reduction**: Main module reduced by 80%
119
- - **Improved organization**: 13 focused modules instead of 1 large file
@@ -1,185 +0,0 @@
1
- # MCP Gateway Service
2
-
3
- ## Overview
4
-
5
- The MCP Gateway is a standards-compliant implementation of the Model Context Protocol (MCP) for Claude MPM. It provides a simple, stdio-based server that enables seamless integration with Claude Code.
6
-
7
- **NOTE: MCP is ONLY for Claude Code - NOT for Claude Code.**
8
- Claude Code uses a different system for agent deployment via the `.claude/agents/` directory.
9
-
10
- ## Architecture
11
-
12
- The MCP Gateway uses the official Anthropic MCP Python SDK with:
13
-
14
- - **Standards compliance** with the official MCP specification
15
- - **Stdio-based communication** for Claude Code integration
16
- - **Simple JSON-RPC protocol** over stdin/stdout
17
- - **Tool registry system** for extensible functionality
18
- - **Comprehensive error handling** and logging
19
-
20
- ## Structure
21
-
22
- ```
23
- mcp_gateway/
24
- ├── core/ # Core interfaces and base classes
25
- │ ├── interfaces.py # MCP service interfaces
26
- │ ├── base.py # Base MCP service class
27
- │ └── exceptions.py # MCP-specific exceptions
28
- ├── config/ # Configuration management
29
- │ ├── configuration.py # Main configuration service
30
- │ ├── config_loader.py # Configuration discovery and loading
31
- │ └── config_schema.py # Configuration validation
32
- ├── server/ # MCP server implementation (ISS-0035)
33
- ├── tools/ # Tool registry and adapters (ISS-0036)
34
- └── registry/ # Service discovery and registration
35
- ```
36
-
37
- ## Features
38
-
39
- ### Implemented
40
- - ✅ **Official MCP Server** - Standards-compliant implementation using Anthropic's MCP SDK
41
- - ✅ **Tool Registry System** - Extensible tool management and discovery
42
- - ✅ **Stdio Communication** - Standard MCP protocol over stdin/stdout
43
- - ✅ **Configuration Management** - YAML-based configuration with validation
44
- - ✅ **Built-in Tools** - Echo, calculator, and system info tools
45
- - ✅ **CLI Integration** - Complete command-line interface for management
46
- - ✅ **Error Handling** - Comprehensive error handling and logging
47
-
48
- ### Key Features
49
- - **Protocol Handler** - Stdio-based MCP protocol handler, not a background service
50
- - **Claude Code Ready** - Direct integration with Claude Code MCP client
51
- - **Extensible** - Easy to add new tools and capabilities
52
- - **Standards Compliant** - Follows official MCP specification exactly
53
-
54
- ## Quick Start
55
-
56
- ### 1. Check Status
57
- ```bash
58
- claude-mpm mcp status
59
- ```
60
-
61
- ### 2. Test Tools
62
- ```bash
63
- # Test echo tool
64
- claude-mpm mcp test echo --args '{"message": "Hello MCP!"}'
65
-
66
- # Test calculator
67
- claude-mpm mcp test calculator --args '{"operation": "add", "a": 5, "b": 3}'
68
-
69
- # Test system info
70
- claude-mpm mcp test system_info
71
- ```
72
-
73
- ### 3. Start MCP Gateway Handler
74
- ```bash
75
- # Start gateway handler for Claude Code integration
76
- claude-mpm mcp start
77
- ```
78
-
79
- The gateway handler will listen for MCP protocol messages via stdin/stdout. This is typically invoked by Claude Code, not run directly by users.
80
-
81
- ### 4. Claude Code Integration
82
- Add to your Claude Code configuration (~/.claude.json):
83
- ```json
84
- {
85
- "mcpServers": {
86
- "claude-mpm": {
87
- "command": "python",
88
- "args": ["-m", "claude_mpm.cli", "mcp", "start"],
89
- "cwd": "/path/to/claude-mpm"
90
- }
91
- }
92
- }
93
- ```
94
-
95
- ## Configuration
96
-
97
- The MCP Gateway uses a hierarchical configuration system with the following priority:
98
-
99
- 1. Default configuration (built-in)
100
- 2. Configuration file (YAML)
101
- 3. Environment variables (highest priority)
102
-
103
- ### Configuration File Locations
104
-
105
- The system searches for configuration in these locations (in order):
106
- - `~/.claude/mcp/config.yaml` (user-specific)
107
- - `~/.claude/mcp_gateway.yaml`
108
- - `~/.config/claude-mpm/mcp_gateway.yaml`
109
- - `./mcp_gateway.yaml` (project-specific)
110
- - `./config/mcp_gateway.yaml`
111
- - `./.claude/mcp_gateway.yaml`
112
- - `/etc/claude-mpm/mcp_gateway.yaml` (system-wide)
113
-
114
- ### Environment Variables
115
-
116
- Override configuration using environment variables:
117
- ```bash
118
- export MCP_GATEWAY_SERVER_NAME=my-gateway
119
- export MCP_GATEWAY_TOOLS_TIMEOUT_DEFAULT=60
120
- export MCP_GATEWAY_LOGGING_LEVEL=DEBUG
121
- ```
122
-
123
- ## Usage
124
-
125
- ### Basic Setup
126
-
127
- ```python
128
- from claude_mpm.services.mcp_gateway import MCPConfiguration, MCPConfigLoader
129
-
130
- # Load configuration
131
- config_loader = MCPConfigLoader()
132
- config = MCPConfiguration()
133
- await config.initialize()
134
-
135
- # Access configuration
136
- server_name = config.get("mcp.server.name")
137
- tools_enabled = config.get("mcp.tools.enabled")
138
- ```
139
-
140
- ### Service Registration
141
-
142
- The MCP Gateway services are automatically registered with the claude-mpm service container:
143
-
144
- ```python
145
- from claude_mpm.services import MCPConfiguration, BaseMCPService
146
-
147
- # Services are available through lazy loading
148
- config = MCPConfiguration()
149
- ```
150
-
151
- ## Development
152
-
153
- ### Adding New MCP Services
154
-
155
- 1. Define the interface in `core/interfaces.py`
156
- 2. Create base implementation in appropriate module
157
- 3. Register in service container if needed
158
- 4. Add lazy import to `__init__.py`
159
- 5. Update documentation
160
-
161
- ### Testing
162
-
163
- Run tests with:
164
- ```bash
165
- pytest tests/services/mcp_gateway/
166
- ```
167
-
168
- ## Dependencies
169
-
170
- - Python 3.8+
171
- - mcp>=0.1.0 (Anthropic's MCP package)
172
- - PyYAML for configuration
173
- - asyncio for async operations
174
-
175
- ## Related Issues
176
-
177
- - ISS-0034: Infrastructure Setup (this implementation)
178
- - ISS-0035: MCP Server Core Implementation
179
- - ISS-0036: Tool Registry & Discovery System
180
- - ISS-0037: stdio Communication Handler
181
- - ISS-0038: Tool Adapter Framework
182
-
183
- ## Notes
184
-
185
- This is the foundation implementation for the MCP Gateway. The actual server functionality, tool registry, and communication handlers will be implemented in subsequent tickets as part of the EP-0007 epic.
@@ -1,217 +0,0 @@
1
- """Connection event handlers for Socket.IO.
2
-
3
- WHY: This module handles all connection-related events including connect,
4
- disconnect, status requests, and history management. Separating these
5
- from other handlers makes connection management more maintainable.
6
- """
7
-
8
- from datetime import datetime
9
- from typing import Any, Dict, List, Optional, Set
10
-
11
- from ....core.typing_utils import ClaudeStatus, EventData, SocketId
12
- from .base import BaseEventHandler
13
-
14
-
15
- class ConnectionEventHandler(BaseEventHandler):
16
- """Handles Socket.IO connection lifecycle events.
17
-
18
- WHY: Connection management is a critical aspect of the Socket.IO server
19
- that deserves its own focused handler. This includes client connections,
20
- disconnections, status updates, and event history management.
21
- """
22
-
23
- def register_events(self) -> None:
24
- """Register connection-related event handlers."""
25
-
26
- @self.sio.event
27
- async def connect(sid, environ, *args):
28
- """Handle client connection.
29
-
30
- WHY: When a client connects, we need to track them, send initial
31
- status information, and provide recent event history so they have
32
- context for what's happening in the session.
33
- """
34
- self.clients.add(sid)
35
- client_addr = environ.get("REMOTE_ADDR", "unknown")
36
- user_agent = environ.get("HTTP_USER_AGENT", "unknown")
37
- self.logger.info(f"🔗 NEW CLIENT CONNECTED: {sid} from {client_addr}")
38
- self.logger.info(f"📱 User Agent: {user_agent[:100]}...")
39
- self.logger.info(f"📈 Total clients now: {len(self.clients)}")
40
-
41
- # Send initial status immediately with enhanced data
42
- status_data = {
43
- "server": "claude-mpm-python-socketio",
44
- "timestamp": datetime.utcnow().isoformat() + "Z",
45
- "clients_connected": len(self.clients),
46
- "session_id": self.server.session_id,
47
- "claude_status": self.server.claude_status,
48
- "claude_pid": self.server.claude_pid,
49
- "server_version": "2.0.0",
50
- "client_id": sid,
51
- }
52
-
53
- try:
54
- await self.emit_to_client(sid, "status", status_data)
55
- await self.emit_to_client(
56
- sid,
57
- "welcome",
58
- {
59
- "message": "Connected to Claude MPM Socket.IO server",
60
- "client_id": sid,
61
- "server_time": datetime.utcnow().isoformat() + "Z",
62
- },
63
- )
64
-
65
- # Automatically send the last 50 events to new clients
66
- await self._send_event_history(sid, limit=50)
67
-
68
- self.logger.debug(
69
- f"✅ Sent welcome messages and event history to client {sid}"
70
- )
71
- except Exception as e:
72
- self.log_error(f"sending welcome to client {sid}", e)
73
-
74
- @self.sio.event
75
- async def disconnect(sid):
76
- """Handle client disconnection.
77
-
78
- WHY: We need to clean up client tracking when they disconnect
79
- to maintain accurate connection counts and avoid memory leaks.
80
- """
81
- if sid in self.clients:
82
- self.clients.remove(sid)
83
- self.logger.info(f"🔌 CLIENT DISCONNECTED: {sid}")
84
- self.logger.info(f"📉 Total clients now: {len(self.clients)}")
85
- else:
86
- self.logger.warning(
87
- f"⚠️ Attempted to disconnect unknown client: {sid}"
88
- )
89
-
90
- @self.sio.event
91
- async def get_status(sid):
92
- """Handle status request.
93
-
94
- WHY: Clients need to query current server status on demand
95
- to update their UI or verify connection health.
96
- """
97
- status_data = {
98
- "server": "claude-mpm-python-socketio",
99
- "timestamp": datetime.utcnow().isoformat() + "Z",
100
- "clients_connected": len(self.clients),
101
- "session_id": self.server.session_id,
102
- "claude_status": self.server.claude_status,
103
- "claude_pid": self.server.claude_pid,
104
- }
105
- await self.emit_to_client(sid, "status", status_data)
106
-
107
- @self.sio.event
108
- async def get_history(sid, data=None):
109
- """Handle history request.
110
-
111
- WHY: Clients may need to request specific event history
112
- to reconstruct state or filter by event types.
113
- """
114
- params = data or {}
115
- event_types = params.get("event_types", [])
116
- limit = min(params.get("limit", 100), len(self.event_history))
117
-
118
- await self._send_event_history(sid, event_types=event_types, limit=limit)
119
-
120
- @self.sio.event
121
- async def request_history(sid, data=None):
122
- """Handle legacy history request (for client compatibility).
123
-
124
- WHY: Maintains backward compatibility with clients using
125
- the older 'request.history' event name.
126
- """
127
- params = data or {}
128
- event_types = params.get("event_types", [])
129
- limit = min(params.get("limit", 50), len(self.event_history))
130
-
131
- await self._send_event_history(sid, event_types=event_types, limit=limit)
132
-
133
- @self.sio.event
134
- async def subscribe(sid, data=None):
135
- """Handle subscription request.
136
-
137
- WHY: Allows clients to subscribe to specific event channels
138
- for filtered event streaming.
139
- """
140
- channels = data.get("channels", ["*"]) if data else ["*"]
141
- await self.emit_to_client(sid, "subscribed", {"channels": channels})
142
-
143
- @self.sio.event
144
- async def claude_event(sid, data):
145
- """Handle events from client proxies.
146
-
147
- WHY: Client proxies send events that need to be stored
148
- in history and re-broadcast to other clients.
149
- """
150
- # Store in history
151
- self.event_history.append(data)
152
- self.logger.debug(
153
- f"📚 Event from client stored in history (total: {len(self.event_history)})"
154
- )
155
-
156
- # Re-broadcast to all other clients
157
- await self.broadcast_event("claude_event", data, skip_sid=sid)
158
-
159
- async def _send_event_history(
160
- self, sid: str, event_types: Optional[List[str]] = None, limit: int = 50
161
- ):
162
- """Send event history to a specific client.
163
-
164
- WHY: When clients connect to the dashboard, they need context from recent events
165
- to understand what's been happening. This sends the most recent events in
166
- chronological order (oldest first) so the dashboard displays them properly.
167
-
168
- Args:
169
- sid: Socket.IO session ID of the client
170
- event_types: Optional list of event types to filter by
171
- limit: Maximum number of events to send (default: 50)
172
- """
173
- try:
174
- if not self.event_history:
175
- self.logger.debug(f"No event history to send to client {sid}")
176
- return
177
-
178
- # Limit to reasonable number to avoid overwhelming client
179
- limit = min(limit, 100)
180
-
181
- # Get the most recent events, filtered by type if specified
182
- history = []
183
- for event in reversed(self.event_history):
184
- if not event_types or event.get("type") in event_types:
185
- history.append(event)
186
- if len(history) >= limit:
187
- break
188
-
189
- # Reverse to get chronological order (oldest first)
190
- history = list(reversed(history))
191
-
192
- if history:
193
- # Send as 'history' event that the client expects
194
- await self.emit_to_client(
195
- sid,
196
- "history",
197
- {
198
- "events": history,
199
- "count": len(history),
200
- "total_available": len(self.event_history),
201
- },
202
- )
203
-
204
- self.logger.info(
205
- f"📚 Sent {len(history)} historical events to client {sid}"
206
- )
207
- else:
208
- self.logger.debug(
209
- f"No matching events found for client {sid} with filters: {event_types}"
210
- )
211
-
212
- except Exception as e:
213
- self.log_error(
214
- f"sending event history to client {sid}",
215
- e,
216
- {"event_types": event_types, "limit": limit},
217
- )
@@ -1,154 +0,0 @@
1
- """Hook event handlers for Socket.IO.
2
-
3
- WHY: This module handles hook events from Claude to track session information,
4
- agent delegations, and other hook-based activity for the system heartbeat.
5
- """
6
-
7
- from datetime import datetime
8
- from typing import Any, Dict, Optional
9
-
10
- from .base import BaseEventHandler
11
-
12
-
13
- class HookEventHandler(BaseEventHandler):
14
- """Handles hook events from Claude for session tracking.
15
-
16
- WHY: Hook events provide rich information about Claude's activity including
17
- session starts/stops, agent delegations, and tool usage. This handler
18
- extracts session information to populate the system heartbeat data.
19
- """
20
-
21
- def register_events(self) -> None:
22
- """Register hook event handlers."""
23
-
24
- @self.sio.event
25
- async def claude_event(sid, data):
26
- """Handle claude_event which includes hook events.
27
-
28
- WHY: Hook events are sent as claude_event with type 'hook'
29
- and contain session and agent delegation information.
30
- """
31
- if not isinstance(data, dict):
32
- return
33
-
34
- # Check if this is a hook event
35
- event_type = data.get("type")
36
- if event_type != "hook":
37
- return
38
-
39
- # Extract hook event details
40
- hook_event = data.get("event")
41
- hook_data = data.get("data", {})
42
-
43
- # Track sessions based on hook events
44
- if hook_event == "subagent_start":
45
- await self._handle_subagent_start(hook_data)
46
- elif hook_event == "subagent_stop":
47
- await self._handle_subagent_stop(hook_data)
48
- elif hook_event == "user_prompt":
49
- await self._handle_user_prompt(hook_data)
50
- elif hook_event == "pre_tool":
51
- await self._handle_pre_tool(hook_data)
52
-
53
- async def _handle_subagent_start(self, data: Dict[str, Any]):
54
- """Handle subagent start events.
55
-
56
- WHY: When a subagent starts, we track it as an active session
57
- with the agent type and start time for the heartbeat.
58
- """
59
- session_id = data.get("session_id")
60
- agent_type = data.get("agent_type", "unknown")
61
-
62
- if not session_id:
63
- return
64
-
65
- # Update or create session tracking
66
- if hasattr(self.server, 'active_sessions'):
67
- self.server.active_sessions[session_id] = {
68
- "session_id": session_id,
69
- "start_time": datetime.now().isoformat(),
70
- "agent": agent_type,
71
- "status": "active",
72
- "prompt": data.get("prompt", "")[:100], # First 100 chars
73
- "last_activity": datetime.now().isoformat(),
74
- }
75
-
76
- self.logger.debug(
77
- f"Tracked subagent start: session={session_id[:8]}..., agent={agent_type}"
78
- )
79
-
80
- async def _handle_subagent_stop(self, data: Dict[str, Any]):
81
- """Handle subagent stop events.
82
-
83
- WHY: When a subagent stops, we update its status or remove it
84
- from active sessions depending on the stop reason.
85
- """
86
- session_id = data.get("session_id")
87
-
88
- if not session_id:
89
- return
90
-
91
- # Update session status
92
- if hasattr(self.server, 'active_sessions'):
93
- if session_id in self.server.active_sessions:
94
- # Mark as completed rather than removing immediately
95
- self.server.active_sessions[session_id]["status"] = "completed"
96
- self.server.active_sessions[session_id]["last_activity"] = datetime.now().isoformat()
97
-
98
- self.logger.debug(
99
- f"Marked session completed: session={session_id[:8]}..."
100
- )
101
-
102
- async def _handle_user_prompt(self, data: Dict[str, Any]):
103
- """Handle user prompt events.
104
-
105
- WHY: User prompts indicate the start of a new interaction,
106
- which we track as a PM session if no delegation occurs.
107
- """
108
- session_id = data.get("session_id")
109
-
110
- if not session_id:
111
- return
112
-
113
- # Create or update PM session
114
- if hasattr(self.server, 'active_sessions'):
115
- if session_id not in self.server.active_sessions:
116
- self.server.active_sessions[session_id] = {
117
- "session_id": session_id,
118
- "start_time": datetime.now().isoformat(),
119
- "agent": "pm", # Default to PM
120
- "status": "active",
121
- "prompt": data.get("prompt_text", "")[:100],
122
- "working_directory": data.get("working_directory", ""),
123
- "last_activity": datetime.now().isoformat(),
124
- }
125
- else:
126
- # Update last activity
127
- self.server.active_sessions[session_id]["last_activity"] = datetime.now().isoformat()
128
-
129
- async def _handle_pre_tool(self, data: Dict[str, Any]):
130
- """Handle pre-tool events.
131
-
132
- WHY: Pre-tool events with Task delegation indicate agent changes
133
- that we need to track for accurate session information.
134
- """
135
- if data.get("tool_name") != "Task":
136
- return
137
-
138
- session_id = data.get("session_id")
139
- delegation_details = data.get("delegation_details", {})
140
- agent_type = delegation_details.get("agent_type", "unknown")
141
-
142
- if not session_id:
143
- return
144
-
145
- # Update session with new agent
146
- if hasattr(self.server, 'active_sessions'):
147
- if session_id in self.server.active_sessions:
148
- self.server.active_sessions[session_id]["agent"] = agent_type
149
- self.server.active_sessions[session_id]["status"] = "delegated"
150
- self.server.active_sessions[session_id]["last_activity"] = datetime.now().isoformat()
151
-
152
- self.logger.debug(
153
- f"Updated session delegation: session={session_id[:8]}..., agent={agent_type}"
154
- )
@@ -1,2 +0,0 @@
1
- # Static files directory for SocketIO service
2
- # This directory is created to prevent FileNotFoundError when the SocketIO service starts
@@ -1 +0,0 @@
1
- 0.9.0
@@ -1,2 +0,0 @@
1
- # This directory will contain bundled Claude Code skills
2
- # Skills will be organized by category subdirectories