claude-mpm 5.4.41__py3-none-any.whl → 5.6.23__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 (460) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +66 -241
  3. claude_mpm/agents/CLAUDE_MPM_RESEARCH_OUTPUT_STYLE.md +413 -0
  4. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +109 -1925
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +161 -298
  6. claude_mpm/agents/WORKFLOW.md +2 -0
  7. claude_mpm/agents/templates/circuit-breakers.md +26 -17
  8. claude_mpm/cli/__init__.py +5 -1
  9. claude_mpm/cli/commands/agents.py +2 -4
  10. claude_mpm/cli/commands/agents_reconcile.py +197 -0
  11. claude_mpm/cli/commands/autotodos.py +566 -0
  12. claude_mpm/cli/commands/commander.py +216 -0
  13. claude_mpm/cli/commands/configure.py +620 -21
  14. claude_mpm/cli/commands/configure_agent_display.py +3 -1
  15. claude_mpm/cli/commands/hook_errors.py +60 -60
  16. claude_mpm/cli/commands/monitor.py +2 -2
  17. claude_mpm/cli/commands/mpm_init/core.py +15 -8
  18. claude_mpm/cli/commands/profile.py +9 -10
  19. claude_mpm/cli/commands/run.py +35 -3
  20. claude_mpm/cli/commands/skill_source.py +51 -2
  21. claude_mpm/cli/commands/skills.py +182 -32
  22. claude_mpm/cli/executor.py +120 -16
  23. claude_mpm/cli/interactive/__init__.py +10 -0
  24. claude_mpm/cli/interactive/agent_wizard.py +30 -50
  25. claude_mpm/cli/interactive/questionary_styles.py +65 -0
  26. claude_mpm/cli/interactive/skill_selector.py +481 -0
  27. claude_mpm/cli/parsers/base_parser.py +76 -1
  28. claude_mpm/cli/parsers/commander_parser.py +116 -0
  29. claude_mpm/cli/parsers/profile_parser.py +0 -1
  30. claude_mpm/cli/parsers/run_parser.py +10 -0
  31. claude_mpm/cli/parsers/skill_source_parser.py +4 -0
  32. claude_mpm/cli/parsers/skills_parser.py +2 -3
  33. claude_mpm/cli/startup.py +527 -506
  34. claude_mpm/cli/startup_display.py +74 -6
  35. claude_mpm/cli/startup_logging.py +2 -2
  36. claude_mpm/cli/utils.py +7 -3
  37. claude_mpm/commander/__init__.py +78 -0
  38. claude_mpm/commander/adapters/__init__.py +60 -0
  39. claude_mpm/commander/adapters/auggie.py +260 -0
  40. claude_mpm/commander/adapters/base.py +288 -0
  41. claude_mpm/commander/adapters/claude_code.py +392 -0
  42. claude_mpm/commander/adapters/codex.py +237 -0
  43. claude_mpm/commander/adapters/communication.py +366 -0
  44. claude_mpm/commander/adapters/example_usage.py +310 -0
  45. claude_mpm/commander/adapters/mpm.py +389 -0
  46. claude_mpm/commander/adapters/registry.py +204 -0
  47. claude_mpm/commander/api/__init__.py +16 -0
  48. claude_mpm/commander/api/app.py +121 -0
  49. claude_mpm/commander/api/errors.py +133 -0
  50. claude_mpm/commander/api/routes/__init__.py +8 -0
  51. claude_mpm/commander/api/routes/events.py +184 -0
  52. claude_mpm/commander/api/routes/inbox.py +171 -0
  53. claude_mpm/commander/api/routes/messages.py +148 -0
  54. claude_mpm/commander/api/routes/projects.py +271 -0
  55. claude_mpm/commander/api/routes/sessions.py +226 -0
  56. claude_mpm/commander/api/routes/work.py +296 -0
  57. claude_mpm/commander/api/schemas.py +186 -0
  58. claude_mpm/commander/chat/__init__.py +7 -0
  59. claude_mpm/commander/chat/cli.py +146 -0
  60. claude_mpm/commander/chat/commands.py +96 -0
  61. claude_mpm/commander/chat/repl.py +310 -0
  62. claude_mpm/commander/config.py +51 -0
  63. claude_mpm/commander/config_loader.py +115 -0
  64. claude_mpm/commander/core/__init__.py +10 -0
  65. claude_mpm/commander/core/block_manager.py +325 -0
  66. claude_mpm/commander/core/response_manager.py +323 -0
  67. claude_mpm/commander/daemon.py +603 -0
  68. claude_mpm/commander/env_loader.py +59 -0
  69. claude_mpm/commander/events/__init__.py +26 -0
  70. claude_mpm/commander/events/manager.py +332 -0
  71. claude_mpm/commander/frameworks/__init__.py +12 -0
  72. claude_mpm/commander/frameworks/base.py +146 -0
  73. claude_mpm/commander/frameworks/claude_code.py +58 -0
  74. claude_mpm/commander/frameworks/mpm.py +62 -0
  75. claude_mpm/commander/inbox/__init__.py +16 -0
  76. claude_mpm/commander/inbox/dedup.py +128 -0
  77. claude_mpm/commander/inbox/inbox.py +224 -0
  78. claude_mpm/commander/inbox/models.py +70 -0
  79. claude_mpm/commander/instance_manager.py +450 -0
  80. claude_mpm/commander/llm/__init__.py +6 -0
  81. claude_mpm/commander/llm/openrouter_client.py +167 -0
  82. claude_mpm/commander/llm/summarizer.py +70 -0
  83. claude_mpm/commander/memory/__init__.py +45 -0
  84. claude_mpm/commander/memory/compression.py +347 -0
  85. claude_mpm/commander/memory/embeddings.py +230 -0
  86. claude_mpm/commander/memory/entities.py +310 -0
  87. claude_mpm/commander/memory/example_usage.py +290 -0
  88. claude_mpm/commander/memory/integration.py +325 -0
  89. claude_mpm/commander/memory/search.py +381 -0
  90. claude_mpm/commander/memory/store.py +657 -0
  91. claude_mpm/commander/models/__init__.py +18 -0
  92. claude_mpm/commander/models/events.py +121 -0
  93. claude_mpm/commander/models/project.py +162 -0
  94. claude_mpm/commander/models/work.py +214 -0
  95. claude_mpm/commander/parsing/__init__.py +20 -0
  96. claude_mpm/commander/parsing/extractor.py +132 -0
  97. claude_mpm/commander/parsing/output_parser.py +270 -0
  98. claude_mpm/commander/parsing/patterns.py +100 -0
  99. claude_mpm/commander/persistence/__init__.py +11 -0
  100. claude_mpm/commander/persistence/event_store.py +274 -0
  101. claude_mpm/commander/persistence/state_store.py +309 -0
  102. claude_mpm/commander/persistence/work_store.py +164 -0
  103. claude_mpm/commander/polling/__init__.py +13 -0
  104. claude_mpm/commander/polling/event_detector.py +104 -0
  105. claude_mpm/commander/polling/output_buffer.py +49 -0
  106. claude_mpm/commander/polling/output_poller.py +153 -0
  107. claude_mpm/commander/project_session.py +268 -0
  108. claude_mpm/commander/proxy/__init__.py +12 -0
  109. claude_mpm/commander/proxy/formatter.py +89 -0
  110. claude_mpm/commander/proxy/output_handler.py +191 -0
  111. claude_mpm/commander/proxy/relay.py +155 -0
  112. claude_mpm/commander/registry.py +410 -0
  113. claude_mpm/commander/runtime/__init__.py +10 -0
  114. claude_mpm/commander/runtime/executor.py +191 -0
  115. claude_mpm/commander/runtime/monitor.py +346 -0
  116. claude_mpm/commander/session/__init__.py +6 -0
  117. claude_mpm/commander/session/context.py +81 -0
  118. claude_mpm/commander/session/manager.py +59 -0
  119. claude_mpm/commander/tmux_orchestrator.py +361 -0
  120. claude_mpm/commander/web/__init__.py +1 -0
  121. claude_mpm/commander/work/__init__.py +30 -0
  122. claude_mpm/commander/work/executor.py +207 -0
  123. claude_mpm/commander/work/queue.py +405 -0
  124. claude_mpm/commander/workflow/__init__.py +27 -0
  125. claude_mpm/commander/workflow/event_handler.py +241 -0
  126. claude_mpm/commander/workflow/notifier.py +146 -0
  127. claude_mpm/commands/mpm-config.md +8 -0
  128. claude_mpm/commands/mpm-doctor.md +8 -0
  129. claude_mpm/commands/mpm-help.md +8 -0
  130. claude_mpm/commands/mpm-init.md +8 -0
  131. claude_mpm/commands/mpm-monitor.md +8 -0
  132. claude_mpm/commands/mpm-organize.md +8 -0
  133. claude_mpm/commands/mpm-postmortem.md +8 -0
  134. claude_mpm/commands/mpm-session-resume.md +9 -1
  135. claude_mpm/commands/mpm-status.md +8 -0
  136. claude_mpm/commands/mpm-ticket-view.md +8 -0
  137. claude_mpm/commands/mpm-version.md +8 -0
  138. claude_mpm/commands/mpm.md +8 -0
  139. claude_mpm/config/agent_presets.py +8 -7
  140. claude_mpm/config/skill_sources.py +16 -0
  141. claude_mpm/constants.py +1 -0
  142. claude_mpm/core/claude_runner.py +154 -2
  143. claude_mpm/core/config.py +35 -22
  144. claude_mpm/core/config_constants.py +74 -9
  145. claude_mpm/core/constants.py +56 -12
  146. claude_mpm/core/hook_manager.py +51 -3
  147. claude_mpm/core/interactive_session.py +12 -11
  148. claude_mpm/core/logger.py +26 -9
  149. claude_mpm/core/logging_utils.py +35 -11
  150. claude_mpm/core/network_config.py +148 -0
  151. claude_mpm/core/oneshot_session.py +7 -6
  152. claude_mpm/core/optimized_startup.py +3 -1
  153. claude_mpm/core/output_style_manager.py +63 -18
  154. claude_mpm/core/shared/config_loader.py +3 -1
  155. claude_mpm/core/socketio_pool.py +13 -5
  156. claude_mpm/core/unified_config.py +54 -8
  157. claude_mpm/core/unified_paths.py +95 -90
  158. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.C33zOoyM.css +1 -0
  159. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.CW1J-YuA.css +1 -0
  160. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/1WZnGYqX.js +24 -0
  161. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/67pF3qNn.js +1 -0
  162. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/6RxdMKe4.js +1 -0
  163. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/8cZrfX0h.js +60 -0
  164. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/9a6T2nm-.js +7 -0
  165. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B443AUzu.js +1 -0
  166. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B8AwtY2H.js +1 -0
  167. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BF15LAsF.js +1 -0
  168. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BQaXIfA_.js +331 -0
  169. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BRcwIQNr.js +4 -0
  170. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{uj46x2Wr.js → BSNlmTZj.js} +1 -1
  171. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BV6nKitt.js +43 -0
  172. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BViJ8lZt.js +128 -0
  173. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BcQ-Q0FE.js +1 -0
  174. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Bpyvgze_.js +30 -0
  175. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BzTRqg-z.js +1 -0
  176. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C0Fr8dve.js +1 -0
  177. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C3rbW_a-.js +1 -0
  178. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C8WYN38h.js +1 -0
  179. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C9I8FlXH.js +61 -0
  180. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIQcWgO2.js +36 -0
  181. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIctN7YN.js +7 -0
  182. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CKrS_JZW.js +145 -0
  183. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CR6P9C4A.js +89 -0
  184. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRRR9MD_.js +2 -0
  185. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRcR2DqT.js +334 -0
  186. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CSXtMOf0.js +1 -0
  187. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CT-sbxSk.js +1 -0
  188. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWm6DJsp.js +1 -0
  189. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CmKTTxBW.js +1 -0
  190. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CpqQ1Kzn.js +1 -0
  191. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cu_Erd72.js +261 -0
  192. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D2nGpDRe.js +1 -0
  193. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9iCMida.js +267 -0
  194. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9ykgMoY.js +10 -0
  195. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DL2Ldur1.js +1 -0
  196. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DPfltzjH.js +165 -0
  197. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{N4qtv3Hx.js → DR8nis88.js} +2 -2
  198. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DUliQN2b.js +1 -0
  199. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DVp1hx9R.js +1 -0
  200. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DXlhR01x.js +122 -0
  201. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D_lyTybS.js +1 -0
  202. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DngoTTgh.js +1 -0
  203. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DqkmHtDC.js +220 -0
  204. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DsDh8EYs.js +1 -0
  205. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DypDmXgd.js +139 -0
  206. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Gi6I4Gst.js +1 -0
  207. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/IPYC-LnN.js +162 -0
  208. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JTLiF7dt.js +24 -0
  209. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JpevfAFt.js +68 -0
  210. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DjhvlsAc.js → NqQ1dWOy.js} +1 -1
  211. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/R8CEIRAd.js +2 -0
  212. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Zxy7qc-l.js +64 -0
  213. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/q9Hm6zAU.js +1 -0
  214. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/qtd3IeO4.js +15 -0
  215. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/ulBFON_C.js +65 -0
  216. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/wQVh1CoA.js +10 -0
  217. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.Dr7t0z2J.js +2 -0
  218. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.BGhZHUS3.js +1 -0
  219. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/{0.CAGBuiOw.js → 0.RgBboRvH.js} +1 -1
  220. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DG-KkbDf.js +1 -0
  221. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.D_jnf-x6.js +1 -0
  222. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -1
  223. claude_mpm/dashboard/static/svelte-build/index.html +11 -11
  224. claude_mpm/dashboard-svelte/node_modules/katex/src/fonts/generate_fonts.py +58 -0
  225. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_tfms.py +114 -0
  226. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_ttfs.py +122 -0
  227. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/format_json.py +28 -0
  228. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/parse_tfm.py +211 -0
  229. claude_mpm/experimental/cli_enhancements.py +2 -1
  230. claude_mpm/hooks/claude_hooks/INTEGRATION_EXAMPLE.md +243 -0
  231. claude_mpm/hooks/claude_hooks/README_AUTO_PAUSE.md +403 -0
  232. claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc +0 -0
  233. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  234. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  235. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  236. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  237. claude_mpm/hooks/claude_hooks/auto_pause_handler.py +485 -0
  238. claude_mpm/hooks/claude_hooks/event_handlers.py +305 -87
  239. claude_mpm/hooks/claude_hooks/hook_handler.py +106 -89
  240. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +6 -11
  241. claude_mpm/hooks/claude_hooks/installer.py +116 -8
  242. claude_mpm/hooks/claude_hooks/memory_integration.py +51 -31
  243. claude_mpm/hooks/claude_hooks/response_tracking.py +42 -59
  244. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  245. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  246. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  247. claude_mpm/hooks/claude_hooks/services/connection_manager.py +39 -24
  248. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +36 -103
  249. claude_mpm/hooks/claude_hooks/services/state_manager.py +23 -36
  250. claude_mpm/hooks/claude_hooks/services/subagent_processor.py +73 -75
  251. claude_mpm/hooks/kuzu_memory_hook.py +5 -5
  252. claude_mpm/hooks/session_resume_hook.py +89 -1
  253. claude_mpm/hooks/templates/pre_tool_use_template.py +10 -2
  254. claude_mpm/init.py +215 -2
  255. claude_mpm/scripts/claude-hook-handler.sh +43 -16
  256. claude_mpm/services/agents/agent_recommendation_service.py +8 -8
  257. claude_mpm/services/agents/agent_selection_service.py +2 -2
  258. claude_mpm/services/agents/cache_git_manager.py +1 -1
  259. claude_mpm/services/agents/deployment/agent_discovery_service.py +3 -1
  260. claude_mpm/services/agents/deployment/agent_format_converter.py +25 -13
  261. claude_mpm/services/agents/deployment/agent_template_builder.py +37 -17
  262. claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
  263. claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
  264. claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
  265. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +36 -8
  266. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +50 -26
  267. claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
  268. claude_mpm/services/agents/git_source_manager.py +21 -2
  269. claude_mpm/services/agents/loading/framework_agent_loader.py +75 -2
  270. claude_mpm/services/agents/single_tier_deployment_service.py +4 -4
  271. claude_mpm/services/agents/sources/git_source_sync_service.py +116 -5
  272. claude_mpm/services/agents/startup_sync.py +5 -2
  273. claude_mpm/services/cli/__init__.py +3 -0
  274. claude_mpm/services/cli/incremental_pause_manager.py +561 -0
  275. claude_mpm/services/cli/session_resume_helper.py +10 -2
  276. claude_mpm/services/delegation_detector.py +175 -0
  277. claude_mpm/services/diagnostics/checks/agent_sources_check.py +30 -0
  278. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -0
  279. claude_mpm/services/diagnostics/checks/installation_check.py +22 -0
  280. claude_mpm/services/diagnostics/checks/mcp_services_check.py +23 -0
  281. claude_mpm/services/diagnostics/doctor_reporter.py +31 -1
  282. claude_mpm/services/diagnostics/models.py +14 -1
  283. claude_mpm/services/event_log.py +325 -0
  284. claude_mpm/services/infrastructure/__init__.py +4 -0
  285. claude_mpm/services/infrastructure/context_usage_tracker.py +291 -0
  286. claude_mpm/services/infrastructure/resume_log_generator.py +24 -5
  287. claude_mpm/services/monitor/daemon_manager.py +15 -4
  288. claude_mpm/services/monitor/management/lifecycle.py +8 -3
  289. claude_mpm/services/monitor/server.py +106 -16
  290. claude_mpm/services/pm_skills_deployer.py +302 -94
  291. claude_mpm/services/profile_manager.py +10 -4
  292. claude_mpm/services/skills/git_skill_source_manager.py +192 -29
  293. claude_mpm/services/skills/selective_skill_deployer.py +211 -46
  294. claude_mpm/services/skills/skill_discovery_service.py +74 -4
  295. claude_mpm/services/skills_deployer.py +192 -70
  296. claude_mpm/services/socketio/handlers/hook.py +14 -7
  297. claude_mpm/services/socketio/server/main.py +12 -4
  298. claude_mpm/skills/__init__.py +2 -1
  299. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
  300. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
  301. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  302. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  303. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  304. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  305. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  306. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
  307. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
  308. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  309. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  310. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
  311. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  312. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  313. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
  314. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  315. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  316. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  317. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  318. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  319. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  320. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  321. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  322. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  323. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  324. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  325. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  326. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  327. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  328. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
  329. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
  330. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  331. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  332. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
  333. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  334. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  335. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  336. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  337. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  338. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  339. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  340. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  341. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  342. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
  343. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
  344. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  345. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  346. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  347. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  348. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
  349. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  350. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  351. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  352. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  353. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  354. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  355. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
  356. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  357. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  358. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  359. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  360. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  361. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  362. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  363. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  364. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  365. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  366. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  367. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  368. claude_mpm/skills/bundled/pm/mpm/SKILL.md +38 -0
  369. claude_mpm/skills/bundled/pm/mpm-agent-update-workflow/SKILL.md +75 -0
  370. claude_mpm/skills/bundled/pm/mpm-bug-reporting/SKILL.md +248 -0
  371. claude_mpm/skills/bundled/pm/mpm-circuit-breaker-enforcement/SKILL.md +476 -0
  372. claude_mpm/skills/bundled/pm/mpm-config/SKILL.md +29 -0
  373. claude_mpm/skills/bundled/pm/mpm-delegation-patterns/SKILL.md +167 -0
  374. claude_mpm/skills/bundled/pm/mpm-doctor/SKILL.md +53 -0
  375. claude_mpm/skills/bundled/pm/mpm-git-file-tracking/SKILL.md +113 -0
  376. claude_mpm/skills/bundled/pm/mpm-help/SKILL.md +35 -0
  377. claude_mpm/skills/bundled/pm/mpm-init/SKILL.md +125 -0
  378. claude_mpm/skills/bundled/pm/mpm-monitor/SKILL.md +32 -0
  379. claude_mpm/skills/bundled/pm/mpm-organize/SKILL.md +121 -0
  380. claude_mpm/skills/bundled/pm/mpm-postmortem/SKILL.md +22 -0
  381. claude_mpm/skills/bundled/pm/mpm-pr-workflow/SKILL.md +124 -0
  382. claude_mpm/skills/bundled/pm/mpm-session-management/SKILL.md +312 -0
  383. claude_mpm/skills/bundled/pm/mpm-session-pause/SKILL.md +170 -0
  384. claude_mpm/skills/bundled/pm/mpm-session-resume/SKILL.md +31 -0
  385. claude_mpm/skills/bundled/pm/mpm-status/SKILL.md +37 -0
  386. claude_mpm/skills/bundled/pm/mpm-teaching-mode/SKILL.md +657 -0
  387. claude_mpm/skills/bundled/pm/mpm-ticket-view/SKILL.md +110 -0
  388. claude_mpm/skills/bundled/pm/mpm-ticketing-integration/SKILL.md +154 -0
  389. claude_mpm/skills/bundled/pm/mpm-tool-usage-guide/SKILL.md +386 -0
  390. claude_mpm/skills/bundled/pm/mpm-verification-protocols/SKILL.md +198 -0
  391. claude_mpm/skills/bundled/pm/mpm-version/SKILL.md +21 -0
  392. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  393. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  394. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  395. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  396. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  397. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  398. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  399. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  400. claude_mpm/skills/bundled/security-scanning.md +112 -0
  401. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  402. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  403. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  404. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  405. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  406. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  407. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  408. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  409. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  410. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  411. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  412. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
  413. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  414. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  415. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  416. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  417. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  418. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  419. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  420. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  421. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  422. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  423. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  424. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  425. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
  426. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  427. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  428. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  429. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  430. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
  431. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  432. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  433. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  434. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  435. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  436. claude_mpm/skills/registry.py +295 -90
  437. claude_mpm/skills/skill_manager.py +29 -23
  438. claude_mpm/templates/.pre-commit-config.yaml +112 -0
  439. claude_mpm/utils/agent_dependency_loader.py +103 -4
  440. claude_mpm/utils/robust_installer.py +45 -24
  441. claude_mpm-5.6.23.dist-info/METADATA +393 -0
  442. {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.23.dist-info}/RECORD +447 -149
  443. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +0 -1
  444. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +0 -1
  445. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +0 -1
  446. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +0 -1
  447. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +0 -1
  448. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +0 -2
  449. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +0 -2
  450. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +0 -1
  451. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +0 -1
  452. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +0 -10
  453. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  454. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  455. claude_mpm-5.4.41.dist-info/METADATA +0 -998
  456. {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.23.dist-info}/WHEEL +0 -0
  457. {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.23.dist-info}/entry_points.txt +0 -0
  458. {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.23.dist-info}/licenses/LICENSE +0 -0
  459. {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.23.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  460. {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.23.dist-info}/top_level.txt +0 -0
@@ -65,6 +65,7 @@ class AgentDependencyLoader:
65
65
  self.deployment_state_file = (
66
66
  Path.cwd() / ".claude" / "agents" / ".mpm_deployment_state"
67
67
  )
68
+ self.is_uv_tool = self._check_uv_tool_installation()
68
69
 
69
70
  def discover_deployed_agents(self) -> Dict[str, Path]:
70
71
  """
@@ -191,9 +192,42 @@ class AgentDependencyLoader:
191
192
  logger.debug(f"Loaded dependencies for {len(agent_dependencies)} agents")
192
193
  return agent_dependencies
193
194
 
195
+ def _check_uv_tool_installation(self) -> bool:
196
+ """
197
+ Check if running in UV tool environment (no pip available).
198
+
199
+ WHY: UV tool environments don't have pip installed. The executable
200
+ path typically contains ".local/share/uv/tools/" and the UV_TOOL_DIR
201
+ environment variable is set. In such environments, we need to use
202
+ 'uv pip' instead of 'python -m pip'.
203
+
204
+ Returns:
205
+ True if UV tool environment, False otherwise
206
+ """
207
+ import os
208
+
209
+ # Check UV_TOOL_DIR environment variable
210
+ uv_tool_dir = os.environ.get("UV_TOOL_DIR", "")
211
+ if uv_tool_dir and "claude-mpm" in uv_tool_dir:
212
+ logger.debug(f"UV tool environment detected via UV_TOOL_DIR: {uv_tool_dir}")
213
+ return True
214
+
215
+ # Check executable path for UV tool patterns
216
+ executable = sys.executable
217
+ if ".local/share/uv/tools/" in executable or "/uv/tools/" in executable:
218
+ logger.debug(
219
+ f"UV tool environment detected via executable path: {executable}"
220
+ )
221
+ return True
222
+
223
+ return False
224
+
194
225
  def check_python_dependency(self, package_spec: str) -> Tuple[bool, Optional[str]]:
195
226
  """
196
- Check if a Python package dependency is satisfied.
227
+ Check if a Python package dependency is satisfied in the TARGET environment.
228
+
229
+ WHY: UV tool environments use a separate Python installation. We must check
230
+ packages in the same environment where they would be installed/used.
197
231
 
198
232
  Args:
199
233
  package_spec: Package specification (e.g., "pandas>=2.0.0")
@@ -221,7 +255,70 @@ class AgentDependencyLoader:
221
255
  )
222
256
  return True, "optional-skipped"
223
257
 
224
- # Try to import and check version
258
+ # For UV tool environments, check via UV's Python
259
+ if self.is_uv_tool:
260
+ try:
261
+ verify_cmd = [
262
+ "uv",
263
+ "run",
264
+ "--no-project",
265
+ "python",
266
+ "-c",
267
+ f"import importlib.metadata; print(importlib.metadata.version('{package_name}'))",
268
+ ]
269
+ result = subprocess.run(
270
+ verify_cmd, capture_output=True, timeout=30, check=False
271
+ )
272
+ if result.returncode == 0:
273
+ version = result.stdout.decode().strip()
274
+ self.checked_packages.add(package_name)
275
+ if req.specifier.contains(version):
276
+ logger.debug(
277
+ f"Package {package_name} {version} satisfied in UV environment"
278
+ )
279
+ return True, version
280
+ logger.debug(
281
+ f"{package_name} {version} does not satisfy {req.specifier}"
282
+ )
283
+ return False, version
284
+ # Check alternatives for optional packages
285
+ if package_name in self.OPTIONAL_DB_PACKAGES:
286
+ for alternative in self.OPTIONAL_DB_PACKAGES[package_name]:
287
+ alt_cmd = [
288
+ "uv",
289
+ "run",
290
+ "--no-project",
291
+ "python",
292
+ "-c",
293
+ f"import importlib.metadata; print(importlib.metadata.version('{alternative}'))",
294
+ ]
295
+ alt_result = subprocess.run(
296
+ alt_cmd, capture_output=True, timeout=30, check=False
297
+ )
298
+ if alt_result.returncode == 0:
299
+ alt_version = alt_result.stdout.decode().strip()
300
+ logger.info(
301
+ f"Using {alternative} as alternative to {package_name}"
302
+ )
303
+ self.checked_packages.add(package_name)
304
+ return True, f"{alternative}:{alt_version}"
305
+ # If no alternatives work, mark as optional failure
306
+ self.optional_failed[package_name] = "No alternatives available"
307
+ logger.warning(
308
+ f"Optional package {package_name} not found, marking as optional"
309
+ )
310
+ return True, "optional-not-found"
311
+ return False, None
312
+ except subprocess.TimeoutExpired:
313
+ logger.warning(f"Timeout checking {package_name} in UV environment")
314
+ return False, None
315
+ except Exception as e:
316
+ logger.debug(
317
+ f"Error checking {package_name} in UV environment: {e}"
318
+ )
319
+ return False, None
320
+
321
+ # For normal Python, try to import and check version
225
322
  try:
226
323
  import importlib.metadata
227
324
 
@@ -671,8 +768,10 @@ class AgentDependencyLoader:
671
768
  )
672
769
 
673
770
  if is_uv_tool:
674
- cmd = ["uv", "pip", "install"]
675
- logger.debug("Using 'uv pip install' for UV tool environment")
771
+ cmd = ["uv", "pip", "install", "--python", sys.executable]
772
+ logger.debug(
773
+ f"Using 'uv pip install --python {sys.executable}' for UV tool environment"
774
+ )
676
775
  else:
677
776
  cmd = [sys.executable, "-m", "pip", "install"]
678
777
 
@@ -332,10 +332,12 @@ class RobustPackageInstaller:
332
332
  Returns:
333
333
  Command as list of arguments
334
334
  """
335
- # UV tool environments don't have pip; use uv pip instead
335
+ # UV tool environments don't have pip; use uv pip install --python instead
336
336
  if self.is_uv_tool:
337
- base_cmd = ["uv", "pip", "install"]
338
- logger.debug("Using 'uv pip install' for UV tool environment")
337
+ base_cmd = ["uv", "pip", "install", "--python", sys.executable]
338
+ logger.debug(
339
+ f"Using 'uv pip install --python {sys.executable}' for UV tool environment"
340
+ )
339
341
  else:
340
342
  base_cmd = [sys.executable, "-m", "pip", "install"]
341
343
 
@@ -478,42 +480,56 @@ class RobustPackageInstaller:
478
480
 
479
481
  def _verify_installation(self, package_spec: str) -> bool:
480
482
  """
481
- Verify that a package was successfully installed.
483
+ Verify that a package was successfully installed in the TARGET environment.
484
+
485
+ WHY: UV installs packages to its own Python environment, not the current process.
486
+ We must verify in the same environment where packages were installed.
482
487
 
483
488
  Args:
484
489
  package_spec: Package specification
485
490
 
486
491
  Returns:
487
- True if package is installed and importable
492
+ True if package is installed and importable in the target environment
488
493
  """
489
494
  package_name = self._extract_package_name(package_spec)
490
495
 
491
- # Convert package name to import name (e.g., tree-sitter-ruby -> tree_sitter_ruby)
492
- import_name = package_name.replace("-", "_")
493
-
494
496
  try:
495
- # Check if package is installed
497
+ if self.is_uv_tool:
498
+ # For UV tool, verify via UV's Python environment
499
+ verify_cmd = [
500
+ "uv",
501
+ "run",
502
+ "--no-project",
503
+ "python",
504
+ "-c",
505
+ f"import importlib.metadata; print(importlib.metadata.version('{package_name}'))",
506
+ ]
507
+ result = subprocess.run(
508
+ verify_cmd, capture_output=True, timeout=30, check=False
509
+ )
510
+ if result.returncode == 0:
511
+ logger.debug(
512
+ f"Package {package_name} verified in UV environment: {result.stdout.decode().strip()}"
513
+ )
514
+ return True
515
+ logger.debug(
516
+ f"Package {package_name} not found in UV environment: {result.stderr.decode().strip()}"
517
+ )
518
+ return False
519
+ # For normal Python, use importlib.metadata in current process
496
520
  import importlib.metadata
497
521
 
498
522
  try:
499
523
  version = importlib.metadata.version(package_name)
500
524
  logger.debug(f"Package {package_name} version {version} is installed")
501
-
502
- # For tree-sitter packages, don't try to import (they have C extensions)
503
- if package_name.startswith("tree-sitter-"):
504
- return True
505
-
506
- # Try to import the package
507
- try:
508
- __import__(import_name)
509
- return True
510
- except ImportError:
511
- # Some packages have different import names, that's OK
512
- return True
525
+ return True
513
526
 
514
527
  except importlib.metadata.PackageNotFoundError:
515
528
  return False
516
529
 
530
+ except subprocess.TimeoutExpired:
531
+ logger.warning(f"Verification timeout for {package_name}")
532
+ return False
517
533
  except ImportError:
518
534
  # Fallback for older Python versions
519
535
  try:
@@ -523,6 +539,9 @@ class RobustPackageInstaller:
523
539
  return True
524
540
  except pkg_resources.DistributionNotFound:
525
541
  return False
542
+ except Exception as e:
543
+ logger.debug(f"Verification error for {package_name}: {e}")
544
+ return False
526
545
 
527
546
  def _is_retryable_error(self, error: Optional[str]) -> bool:
528
547
  """
@@ -687,10 +706,12 @@ class RobustPackageInstaller:
687
706
  Tuple of (success, error_message)
688
707
  """
689
708
  try:
690
- # UV tool environments don't have pip; use uv pip instead
709
+ # UV tool environments don't have pip; use uv pip install --python instead
691
710
  if self.is_uv_tool:
692
- cmd = ["uv", "pip", "install"]
693
- logger.debug("Using 'uv pip install' for batch installation")
711
+ cmd = ["uv", "pip", "install", "--python", sys.executable]
712
+ logger.debug(
713
+ f"Using 'uv pip install --python {sys.executable}' for batch installation"
714
+ )
694
715
  else:
695
716
  cmd = [sys.executable, "-m", "pip", "install"]
696
717
 
@@ -0,0 +1,393 @@
1
+ Metadata-Version: 2.4
2
+ Name: claude-mpm
3
+ Version: 5.6.23
4
+ Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
+ Author-email: Bob Matsuoka <bob@matsuoka.com>
6
+ Maintainer: Claude MPM Team
7
+ License: Elastic-2.0
8
+ Project-URL: Homepage, https://github.com/bobmatnyc/claude-mpm
9
+ Project-URL: Repository, https://github.com/bobmatnyc/claude-mpm.git
10
+ Project-URL: Issues, https://github.com/bobmatnyc/claude-mpm/issues
11
+ Project-URL: Documentation, https://github.com/bobmatnyc/claude-mpm/blob/main/README.md
12
+ Keywords: claude,orchestration,multi-agent,ticket-management
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: Other/Proprietary License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ License-File: LICENSE-FAQ.md
24
+ Requires-Dist: ai-trackdown-pytools>=1.4.0
25
+ Requires-Dist: pyyaml>=6.0
26
+ Requires-Dist: python-dotenv>=1.0.0
27
+ Requires-Dist: click>=8.0.0
28
+ Requires-Dist: pexpect>=4.8.0
29
+ Requires-Dist: psutil>=5.9.0
30
+ Requires-Dist: requests>=2.25.0
31
+ Requires-Dist: flask>=3.0.0
32
+ Requires-Dist: flask-cors>=4.0.0
33
+ Requires-Dist: watchdog>=3.0.0
34
+ Requires-Dist: python-socketio>=5.14.0
35
+ Requires-Dist: aiohttp>=3.9.0
36
+ Requires-Dist: aiohttp-cors<0.8.0,>=0.7.0
37
+ Requires-Dist: python-engineio>=4.8.0
38
+ Requires-Dist: aiofiles>=23.0.0
39
+ Requires-Dist: websockets>=12.0
40
+ Requires-Dist: python-frontmatter>=1.0.0
41
+ Requires-Dist: mistune>=3.0.0
42
+ Requires-Dist: tree-sitter>=0.21.0
43
+ Requires-Dist: ijson>=3.2.0
44
+ Requires-Dist: toml>=0.10.2
45
+ Requires-Dist: packaging>=21.0
46
+ Requires-Dist: pydantic>=2.0.0
47
+ Requires-Dist: pydantic-settings>=2.0.0
48
+ Requires-Dist: rich>=13.0.0
49
+ Requires-Dist: questionary>=2.0.0
50
+ Requires-Dist: pyee>=13.0.0
51
+ Requires-Dist: pathspec>=0.11.0
52
+ Requires-Dist: fastapi>=0.100.0
53
+ Requires-Dist: uvicorn>=0.20.0
54
+ Provides-Extra: mcp
55
+ Requires-Dist: mcp>=0.1.0; extra == "mcp"
56
+ Requires-Dist: mcp-vector-search>=0.1.0; extra == "mcp"
57
+ Requires-Dist: mcp-browser>=0.1.0; extra == "mcp"
58
+ Requires-Dist: mcp-ticketer>=0.1.0; extra == "mcp"
59
+ Provides-Extra: dev
60
+ Requires-Dist: pytest>=7.0; extra == "dev"
61
+ Requires-Dist: pytest-asyncio; extra == "dev"
62
+ Requires-Dist: pytest-cov; extra == "dev"
63
+ Requires-Dist: ruff>=0.8.0; extra == "dev"
64
+ Requires-Dist: pylint>=3.0.0; extra == "dev"
65
+ Requires-Dist: pre-commit; extra == "dev"
66
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
67
+ Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
68
+ Requires-Dist: types-requests>=2.25.0; extra == "dev"
69
+ Provides-Extra: eval
70
+ Requires-Dist: deepeval>=1.0.0; extra == "eval"
71
+ Requires-Dist: pytest>=7.4.0; extra == "eval"
72
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "eval"
73
+ Requires-Dist: pytest-timeout>=2.1.0; extra == "eval"
74
+ Provides-Extra: docs
75
+ Requires-Dist: sphinx>=7.2.0; extra == "docs"
76
+ Requires-Dist: sphinx-rtd-theme>=1.3.0; extra == "docs"
77
+ Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
78
+ Provides-Extra: monitor
79
+ Requires-Dist: python-socketio>=5.14.0; extra == "monitor"
80
+ Requires-Dist: aiohttp>=3.9.0; extra == "monitor"
81
+ Requires-Dist: aiohttp-cors<0.8.0,>=0.7.0; extra == "monitor"
82
+ Requires-Dist: python-engineio>=4.8.0; extra == "monitor"
83
+ Requires-Dist: aiofiles>=23.0.0; extra == "monitor"
84
+ Requires-Dist: websockets>=12.0; extra == "monitor"
85
+ Provides-Extra: data-processing
86
+ Requires-Dist: pandas>=2.1.0; extra == "data-processing"
87
+ Requires-Dist: openpyxl>=3.1.0; extra == "data-processing"
88
+ Requires-Dist: xlsxwriter>=3.1.0; extra == "data-processing"
89
+ Requires-Dist: numpy>=1.24.0; extra == "data-processing"
90
+ Requires-Dist: pyarrow>=14.0.0; extra == "data-processing"
91
+ Requires-Dist: dask>=2023.12.0; extra == "data-processing"
92
+ Requires-Dist: polars>=0.19.0; extra == "data-processing"
93
+ Requires-Dist: xlrd>=2.0.0; extra == "data-processing"
94
+ Requires-Dist: xlwt>=1.3.0; extra == "data-processing"
95
+ Requires-Dist: csvkit>=1.3.0; extra == "data-processing"
96
+ Requires-Dist: tabulate>=0.9.0; extra == "data-processing"
97
+ Requires-Dist: python-dateutil>=2.8.0; extra == "data-processing"
98
+ Requires-Dist: lxml>=4.9.0; extra == "data-processing"
99
+ Requires-Dist: sqlalchemy>=2.0.0; extra == "data-processing"
100
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == "data-processing"
101
+ Requires-Dist: pymongo>=4.5.0; extra == "data-processing"
102
+ Requires-Dist: redis>=5.0.0; extra == "data-processing"
103
+ Requires-Dist: beautifulsoup4>=4.12.0; extra == "data-processing"
104
+ Requires-Dist: jsonschema>=4.19.0; extra == "data-processing"
105
+ Provides-Extra: memory
106
+ Requires-Dist: kuzu-memory>=1.1.5; extra == "memory"
107
+ Dynamic: license-file
108
+
109
+ # Claude MPM - Multi-Agent Project Manager
110
+
111
+ A powerful orchestration framework for **Claude Code (CLI)** that enables multi-agent workflows, session management, and real-time monitoring through a streamlined Rich-based interface.
112
+
113
+ > **⚠️ Important**: Claude MPM **requires Claude Code CLI** (v2.1.3+), not Claude Desktop (app). All MCP integrations work with Claude Code's CLI interface only.
114
+ >
115
+ > **Don't have Claude Code?** Install from: https://docs.anthropic.com/en/docs/claude-code
116
+ >
117
+ > **Quick Start**: See [Getting Started Guide](docs/getting-started/README.md) to get running in 5 minutes!
118
+
119
+ ---
120
+
121
+ ## Who Should Use Claude MPM?
122
+
123
+ - 👥 **[Non-Technical Users (Founders/PMs)](docs/usecases/non-technical-users.md)** - Research and understand codebases using Research Mode - no coding experience required
124
+ - 💻 **[Developers](docs/usecases/developers.md)** - Multi-agent development workflows with semantic code search and advanced features
125
+ - 🏢 **[Teams](docs/usecases/teams.md)** - Collaboration patterns, session management, and coordinated workflows
126
+
127
+ ---
128
+
129
+ ## What is Claude MPM?
130
+
131
+ Claude MPM transforms Claude Code into a **multi-agent orchestration platform** with:
132
+
133
+ - **47+ Specialized Agents** - From Git repositories (Python, Rust, QA, Security, Ops, etc.)
134
+ - **Intelligent Task Routing** - PM agent delegates work to specialist agents
135
+ - **Session Management** - Resume previous sessions with full context preservation
136
+ - **Semantic Code Search** - AI-powered discovery of existing code and patterns
137
+ - **Real-Time Monitoring** - Live dashboard showing agent activity and performance
138
+ - **Git Repository Integration** - Always up-to-date agents and skills from curated repositories
139
+
140
+ ---
141
+
142
+ ## Quick Installation
143
+
144
+ ### Prerequisites
145
+
146
+ 1. **Python 3.11+** (required - older versions will install outdated claude-mpm)
147
+ 2. **Claude Code CLI v2.1.3+** (required!)
148
+
149
+ > ⚠️ **Python Version Note**: Claude MPM requires Python 3.11 or higher. If you have Python 3.9 or 3.10, you'll get an old version (4.x) that lacks current features. Check with `python3 --version` before installing.
150
+
151
+ ```bash
152
+ # Verify Claude Code is installed
153
+ claude --version
154
+
155
+ # If not installed, get it from:
156
+ # https://docs.anthropic.com/en/docs/claude-code
157
+ ```
158
+
159
+ ### Install Claude MPM
160
+
161
+ **Homebrew (macOS):**
162
+ ```bash
163
+ brew install claude-mpm --with-monitor
164
+ ```
165
+
166
+ **pipx/uv (recommended):**
167
+ ```bash
168
+ # With pipx
169
+ pipx install "claude-mpm[monitor]"
170
+
171
+ # Or with uv
172
+ uv tool install "claude-mpm[monitor]"
173
+ ```
174
+
175
+ **pip:**
176
+ ```bash
177
+ pip install "claude-mpm[monitor]"
178
+ ```
179
+
180
+ ### Verify Installation
181
+
182
+ ```bash
183
+ # Check versions
184
+ claude-mpm --version
185
+ claude --version
186
+
187
+ # Run diagnostics
188
+ claude-mpm doctor
189
+
190
+ # Verify agents deployed
191
+ ls ~/.claude/agents/ # Should show 47+ agents
192
+ ```
193
+
194
+ **What You Should See:**
195
+ - ✅ 47+ agents deployed to `~/.claude/agents/`
196
+ - ✅ 17 bundled skills (in Python package)
197
+ - ✅ Agent sources configured
198
+ - ✅ Progress bars showing sync and deployment
199
+
200
+ **💡 Recommended Partners**: Install [kuzu-memory](https://github.com/bobmatnyc/kuzu-memory) (persistent context) and [mcp-vector-search](https://github.com/bobmatnyc/mcp-vector-search) (semantic search) for enhanced capabilities.
201
+
202
+ **💡 Tool Version Management**: Use [ASDF version manager](docs/guides/asdf-tool-versions.md) to avoid Python/uv version conflicts across projects.
203
+
204
+ ---
205
+
206
+ ## Key Features
207
+
208
+ ### 🎯 Multi-Agent Orchestration
209
+ - **47+ Specialized Agents** from Git repositories covering all development needs
210
+ - **Smart Task Routing** via PM agent intelligently delegating to specialists
211
+ - **Session Management** with `--resume` flag for seamless continuity
212
+ - **Resume Log System** with automatic 10k-token summaries at 70%/85%/95% thresholds
213
+
214
+ [→ Learn more: Multi-Agent Development](docs/usecases/developers.md#multi-agent-development)
215
+
216
+ ### 📦 Git Repository Integration
217
+ - **Curated Content** with 47+ agents automatically deployed from repositories
218
+ - **Always Up-to-Date** with ETag-based caching (95%+ bandwidth reduction)
219
+ - **Hierarchical BASE-AGENT.md** for template inheritance and DRY principles
220
+ - **Custom Repositories** via `claude-mpm agent-source add`
221
+
222
+ [→ Learn more: Agent Sources](docs/user/agent-sources.md)
223
+
224
+ ### 🎯 Skills System
225
+ - **17 Bundled Skills** covering Git, TDD, Docker, API docs, testing, and more
226
+ - **Three-Tier Organization**: Bundled/user/project with priority resolution
227
+ - **Auto-Linking** to relevant agents based on roles
228
+ - **Custom Skills** via `.claude/skills/` or skill repositories
229
+
230
+ [→ Learn more: Skills Guide](docs/user/skills-guide.md)
231
+
232
+ ### 🔍 Semantic Code Search
233
+ - **AI-Powered Discovery** with mcp-vector-search integration
234
+ - **Find by Intent** not just keywords ("authentication logic" finds relevant code)
235
+ - **Pattern Recognition** for discovering similar implementations
236
+ - **Live Updates** tracking code changes automatically
237
+
238
+ [→ Learn more: Developer Use Cases](docs/usecases/developers.md#semantic-code-search)
239
+
240
+ ### 🧪 MPM Commander (ALPHA)
241
+ - **Multi-Project Orchestration** with autonomous AI coordination across codebases
242
+ - **Tmux Integration** for isolated project environments and session management
243
+ - **Event-Driven Architecture** with inbox system for cross-project communication
244
+ - **LLM-Powered Decisions** via OpenRouter for autonomous work queue processing
245
+ - **Real-Time Monitoring** with state tracking (IDLE, WORKING, BLOCKED, PAUSED, ERROR)
246
+ - ⚠️ **Experimental** - API and CLI interface subject to change
247
+
248
+ [→ Commander Documentation](docs/commander/usage-guide.md)
249
+
250
+ ### 🔌 Advanced Integration
251
+ - **MCP Integration** with full Model Context Protocol support
252
+ - **Real-Time Monitoring** via `--monitor` flag and web dashboard
253
+ - **Multi-Project Support** with per-session working directories
254
+ - **Git Integration** with diff viewing and change tracking
255
+
256
+ [→ Learn more: MCP Gateway](docs/developer/13-mcp-gateway/README.md)
257
+
258
+ ### ⚡ Performance & Security
259
+ - **Simplified Architecture** with ~3,700 lines removed for better performance
260
+ - **Enhanced Security** with comprehensive input validation
261
+ - **Intelligent Caching** with ~200ms faster startup via hash-based invalidation
262
+ - **Memory Management** with cleanup commands for large conversation histories
263
+
264
+ [→ Learn more: Architecture](docs/developer/ARCHITECTURE.md)
265
+
266
+ ---
267
+
268
+ ## Quick Usage
269
+
270
+ ```bash
271
+ # Start interactive mode
272
+ claude-mpm
273
+
274
+ # Start with monitoring dashboard
275
+ claude-mpm run --monitor
276
+
277
+ # Resume previous session
278
+ claude-mpm run --resume
279
+
280
+ # Semantic code search
281
+ claude-mpm search "authentication logic"
282
+ # or inside Claude Code:
283
+ /mpm-search "authentication logic"
284
+
285
+ # Health diagnostics
286
+ claude-mpm doctor
287
+
288
+ # Verify MCP services
289
+ claude-mpm verify
290
+
291
+ # Manage memory
292
+ claude-mpm cleanup-memory
293
+ ```
294
+
295
+ **💡 Update Checking**: Claude MPM automatically checks for updates and verifies Claude Code compatibility on startup. Configure in `~/.claude-mpm/configuration.yaml` or see [docs/update-checking.md](docs/update-checking.md).
296
+
297
+ [→ Complete usage examples: User Guide](docs/user/user-guide.md)
298
+
299
+ ---
300
+
301
+ ## What's New in v5.0
302
+
303
+ ### Git Repository Integration for Agents & Skills
304
+
305
+ - **📦 Massive Library**: 47+ agents and hundreds of skills deployed automatically
306
+ - **🏢 Official Content**: Anthropic's official skills repository included by default
307
+ - **🔧 Fully Extensible**: Add your own repositories with immediate testing
308
+ - **🌳 Smart Organization**: Hierarchical BASE-AGENT.md inheritance
309
+ - **📊 Clear Visibility**: Two-phase progress bars (sync + deployment)
310
+ - **✅ Fail-Fast Testing**: Test repositories before they cause startup issues
311
+
312
+ **Quick Start with Custom Repositories:**
313
+ ```bash
314
+ # Add custom agent repository
315
+ claude-mpm agent-source add https://github.com/yourorg/your-agents
316
+
317
+ # Add custom skill repository
318
+ claude-mpm skill-source add https://github.com/yourorg/your-skills
319
+
320
+ # Test repository without saving
321
+ claude-mpm agent-source add https://github.com/yourorg/your-agents --test
322
+ ```
323
+
324
+ [→ Full details: What's New](CHANGELOG.md)
325
+
326
+ ---
327
+
328
+ ## Documentation
329
+
330
+ **📚 [Complete Documentation Hub](docs/README.md)** - Start here for all documentation!
331
+
332
+ ### Quick Links by User Type
333
+
334
+ #### 👥 For Users
335
+ - **[🚀 5-Minute Quick Start](docs/user/quickstart.md)** - Get running immediately
336
+ - **[📦 Installation Guide](docs/user/installation.md)** - All installation methods
337
+ - **[📖 User Guide](docs/user/user-guide.md)** - Complete user documentation
338
+ - **[❓ FAQ](docs/guides/FAQ.md)** - Common questions answered
339
+
340
+ #### 💻 For Developers
341
+ - **[🏗️ Architecture Overview](docs/developer/ARCHITECTURE.md)** - Service-oriented system design
342
+ - **[💻 Developer Guide](docs/developer/README.md)** - Complete development documentation
343
+ - **[🧪 Contributing](docs/developer/03-development/README.md)** - How to contribute
344
+ - **[📊 API Reference](docs/API.md)** - Complete API documentation
345
+
346
+ #### 🤖 For Agent Creators
347
+ - **[🤖 Agent System](docs/AGENTS.md)** - Complete agent development guide
348
+ - **[📝 Creation Guide](docs/developer/07-agent-system/creation-guide.md)** - Step-by-step tutorials
349
+ - **[📋 Schema Reference](docs/developer/10-schemas/agent_schema_documentation.md)** - Agent format specifications
350
+
351
+ #### 🚀 For Operations
352
+ - **[🚀 Deployment](docs/DEPLOYMENT.md)** - Release management & versioning
353
+ - **[📊 Monitoring](docs/MONITOR.md)** - Real-time dashboard & metrics
354
+ - **[🐛 Troubleshooting](docs/TROUBLESHOOTING.md)** - Enhanced `doctor` command with auto-fix
355
+
356
+ ---
357
+
358
+ ## Contributing
359
+
360
+ Contributions are welcome! Please see:
361
+ - **[Contributing Guide](docs/developer/03-development/README.md)** - How to contribute
362
+ - **[Code Formatting](docs/developer/CODE_FORMATTING.md)** - Code quality standards
363
+ - **[Project Structure](docs/reference/STRUCTURE.md)** - Codebase organization
364
+
365
+ **Development Workflow:**
366
+ ```bash
367
+ # Complete development setup
368
+ make dev-complete
369
+
370
+ # Or step by step:
371
+ make setup-dev # Install in development mode
372
+ make setup-pre-commit # Set up automated code formatting
373
+ ```
374
+
375
+ ---
376
+
377
+ ## 📜 License
378
+
379
+ [![License](https://img.shields.io/badge/License-Elastic_2.0-blue.svg)](LICENSE)
380
+
381
+ Licensed under the [Elastic License 2.0](LICENSE) - free for internal use and commercial products.
382
+
383
+ **Main restriction:** Cannot offer as a hosted SaaS service without a commercial license.
384
+
385
+ 📖 [Licensing FAQ](LICENSE-FAQ.md) | 💼 Commercial licensing: bob@matsuoka.com
386
+
387
+ ---
388
+
389
+ ## Credits
390
+
391
+ - Based on [claude-multiagent-pm](https://github.com/kfsone/claude-multiagent-pm)
392
+ - Enhanced for [Claude Code (CLI)](https://docs.anthropic.com/en/docs/claude-code) integration
393
+ - Built with ❤️ by the Claude MPM community