claude-mpm 5.0.9__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 (614) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +4 -0
  3. claude_mpm/agents/BASE_AGENT.md +164 -0
  4. claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +115 -0
  5. claude_mpm/agents/CLAUDE_MPM_RESEARCH_OUTPUT_STYLE.md +413 -0
  6. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +186 -0
  7. claude_mpm/agents/MEMORY.md +1 -1
  8. claude_mpm/agents/PM_INSTRUCTIONS.md +479 -616
  9. claude_mpm/agents/WORKFLOW.md +6 -253
  10. claude_mpm/agents/agent_loader.py +13 -44
  11. claude_mpm/agents/base_agent.json +1 -1
  12. claude_mpm/agents/frontmatter_validator.py +70 -2
  13. claude_mpm/agents/templates/circuit-breakers.md +457 -62
  14. claude_mpm/cli/__init__.py +5 -2
  15. claude_mpm/cli/__main__.py +4 -0
  16. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  17. claude_mpm/cli/commands/agent_state_manager.py +18 -27
  18. claude_mpm/cli/commands/agents.py +177 -41
  19. claude_mpm/cli/commands/agents_reconcile.py +197 -0
  20. claude_mpm/cli/commands/auto_configure.py +723 -236
  21. claude_mpm/cli/commands/autotodos.py +566 -0
  22. claude_mpm/cli/commands/commander.py +216 -0
  23. claude_mpm/cli/commands/config.py +88 -2
  24. claude_mpm/cli/commands/configure.py +1874 -170
  25. claude_mpm/cli/commands/configure_agent_display.py +27 -6
  26. claude_mpm/cli/commands/hook_errors.py +60 -60
  27. claude_mpm/cli/commands/monitor.py +2 -2
  28. claude_mpm/cli/commands/mpm_init/core.py +232 -46
  29. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  30. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  31. claude_mpm/cli/commands/postmortem.py +1 -1
  32. claude_mpm/cli/commands/profile.py +276 -0
  33. claude_mpm/cli/commands/run.py +35 -3
  34. claude_mpm/cli/commands/skill_source.py +51 -2
  35. claude_mpm/cli/commands/skills.py +379 -204
  36. claude_mpm/cli/commands/summarize.py +413 -0
  37. claude_mpm/cli/executor.py +141 -19
  38. claude_mpm/cli/interactive/__init__.py +10 -0
  39. claude_mpm/cli/interactive/agent_wizard.py +115 -60
  40. claude_mpm/cli/interactive/questionary_styles.py +65 -0
  41. claude_mpm/cli/interactive/skill_selector.py +481 -0
  42. claude_mpm/cli/parsers/agents_parser.py +54 -9
  43. claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
  44. claude_mpm/cli/parsers/base_parser.py +88 -1
  45. claude_mpm/cli/parsers/commander_parser.py +116 -0
  46. claude_mpm/cli/parsers/config_parser.py +153 -83
  47. claude_mpm/cli/parsers/profile_parser.py +147 -0
  48. claude_mpm/cli/parsers/run_parser.py +10 -0
  49. claude_mpm/cli/parsers/skill_source_parser.py +4 -0
  50. claude_mpm/cli/parsers/skills_parser.py +1 -1
  51. claude_mpm/cli/startup.py +1017 -266
  52. claude_mpm/cli/startup_display.py +74 -6
  53. claude_mpm/cli/startup_logging.py +2 -2
  54. claude_mpm/cli/utils.py +7 -3
  55. claude_mpm/commander/__init__.py +78 -0
  56. claude_mpm/commander/adapters/__init__.py +60 -0
  57. claude_mpm/commander/adapters/auggie.py +260 -0
  58. claude_mpm/commander/adapters/base.py +288 -0
  59. claude_mpm/commander/adapters/claude_code.py +392 -0
  60. claude_mpm/commander/adapters/codex.py +237 -0
  61. claude_mpm/commander/adapters/communication.py +366 -0
  62. claude_mpm/commander/adapters/example_usage.py +310 -0
  63. claude_mpm/commander/adapters/mpm.py +389 -0
  64. claude_mpm/commander/adapters/registry.py +204 -0
  65. claude_mpm/commander/api/__init__.py +16 -0
  66. claude_mpm/commander/api/app.py +121 -0
  67. claude_mpm/commander/api/errors.py +133 -0
  68. claude_mpm/commander/api/routes/__init__.py +8 -0
  69. claude_mpm/commander/api/routes/events.py +184 -0
  70. claude_mpm/commander/api/routes/inbox.py +171 -0
  71. claude_mpm/commander/api/routes/messages.py +148 -0
  72. claude_mpm/commander/api/routes/projects.py +271 -0
  73. claude_mpm/commander/api/routes/sessions.py +226 -0
  74. claude_mpm/commander/api/routes/work.py +296 -0
  75. claude_mpm/commander/api/schemas.py +186 -0
  76. claude_mpm/commander/chat/__init__.py +7 -0
  77. claude_mpm/commander/chat/cli.py +146 -0
  78. claude_mpm/commander/chat/commands.py +96 -0
  79. claude_mpm/commander/chat/repl.py +310 -0
  80. claude_mpm/commander/config.py +51 -0
  81. claude_mpm/commander/config_loader.py +115 -0
  82. claude_mpm/commander/core/__init__.py +10 -0
  83. claude_mpm/commander/core/block_manager.py +325 -0
  84. claude_mpm/commander/core/response_manager.py +323 -0
  85. claude_mpm/commander/daemon.py +603 -0
  86. claude_mpm/commander/env_loader.py +59 -0
  87. claude_mpm/commander/events/__init__.py +26 -0
  88. claude_mpm/commander/events/manager.py +332 -0
  89. claude_mpm/commander/frameworks/__init__.py +12 -0
  90. claude_mpm/commander/frameworks/base.py +146 -0
  91. claude_mpm/commander/frameworks/claude_code.py +58 -0
  92. claude_mpm/commander/frameworks/mpm.py +62 -0
  93. claude_mpm/commander/inbox/__init__.py +16 -0
  94. claude_mpm/commander/inbox/dedup.py +128 -0
  95. claude_mpm/commander/inbox/inbox.py +224 -0
  96. claude_mpm/commander/inbox/models.py +70 -0
  97. claude_mpm/commander/instance_manager.py +450 -0
  98. claude_mpm/commander/llm/__init__.py +6 -0
  99. claude_mpm/commander/llm/openrouter_client.py +167 -0
  100. claude_mpm/commander/llm/summarizer.py +70 -0
  101. claude_mpm/commander/memory/__init__.py +45 -0
  102. claude_mpm/commander/memory/compression.py +347 -0
  103. claude_mpm/commander/memory/embeddings.py +230 -0
  104. claude_mpm/commander/memory/entities.py +310 -0
  105. claude_mpm/commander/memory/example_usage.py +290 -0
  106. claude_mpm/commander/memory/integration.py +325 -0
  107. claude_mpm/commander/memory/search.py +381 -0
  108. claude_mpm/commander/memory/store.py +657 -0
  109. claude_mpm/commander/models/__init__.py +18 -0
  110. claude_mpm/commander/models/events.py +121 -0
  111. claude_mpm/commander/models/project.py +162 -0
  112. claude_mpm/commander/models/work.py +214 -0
  113. claude_mpm/commander/parsing/__init__.py +20 -0
  114. claude_mpm/commander/parsing/extractor.py +132 -0
  115. claude_mpm/commander/parsing/output_parser.py +270 -0
  116. claude_mpm/commander/parsing/patterns.py +100 -0
  117. claude_mpm/commander/persistence/__init__.py +11 -0
  118. claude_mpm/commander/persistence/event_store.py +274 -0
  119. claude_mpm/commander/persistence/state_store.py +309 -0
  120. claude_mpm/commander/persistence/work_store.py +164 -0
  121. claude_mpm/commander/polling/__init__.py +13 -0
  122. claude_mpm/commander/polling/event_detector.py +104 -0
  123. claude_mpm/commander/polling/output_buffer.py +49 -0
  124. claude_mpm/commander/polling/output_poller.py +153 -0
  125. claude_mpm/commander/project_session.py +268 -0
  126. claude_mpm/commander/proxy/__init__.py +12 -0
  127. claude_mpm/commander/proxy/formatter.py +89 -0
  128. claude_mpm/commander/proxy/output_handler.py +191 -0
  129. claude_mpm/commander/proxy/relay.py +155 -0
  130. claude_mpm/commander/registry.py +410 -0
  131. claude_mpm/commander/runtime/__init__.py +10 -0
  132. claude_mpm/commander/runtime/executor.py +191 -0
  133. claude_mpm/commander/runtime/monitor.py +346 -0
  134. claude_mpm/commander/session/__init__.py +6 -0
  135. claude_mpm/commander/session/context.py +81 -0
  136. claude_mpm/commander/session/manager.py +59 -0
  137. claude_mpm/commander/tmux_orchestrator.py +361 -0
  138. claude_mpm/commander/web/__init__.py +1 -0
  139. claude_mpm/commander/work/__init__.py +30 -0
  140. claude_mpm/commander/work/executor.py +207 -0
  141. claude_mpm/commander/work/queue.py +405 -0
  142. claude_mpm/commander/workflow/__init__.py +27 -0
  143. claude_mpm/commander/workflow/event_handler.py +241 -0
  144. claude_mpm/commander/workflow/notifier.py +146 -0
  145. claude_mpm/commands/mpm-config.md +36 -0
  146. claude_mpm/commands/mpm-doctor.md +16 -21
  147. claude_mpm/commands/mpm-help.md +12 -286
  148. claude_mpm/commands/mpm-init.md +88 -506
  149. claude_mpm/commands/mpm-monitor.md +22 -401
  150. claude_mpm/commands/mpm-organize.md +128 -0
  151. claude_mpm/commands/mpm-postmortem.md +13 -107
  152. claude_mpm/commands/mpm-session-resume.md +20 -363
  153. claude_mpm/commands/mpm-status.md +13 -69
  154. claude_mpm/commands/mpm-ticket-view.md +60 -495
  155. claude_mpm/commands/mpm-version.md +13 -107
  156. claude_mpm/commands/mpm.md +8 -0
  157. claude_mpm/config/agent_presets.py +8 -7
  158. claude_mpm/config/agent_sources.py +27 -0
  159. claude_mpm/config/skill_sources.py +16 -0
  160. claude_mpm/constants.py +1 -0
  161. claude_mpm/core/claude_runner.py +154 -2
  162. claude_mpm/core/config.py +37 -26
  163. claude_mpm/core/config_constants.py +74 -9
  164. claude_mpm/core/constants.py +56 -12
  165. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  166. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  167. claude_mpm/core/framework/loaders/instruction_loader.py +52 -11
  168. claude_mpm/core/framework_loader.py +4 -2
  169. claude_mpm/core/hook_manager.py +51 -3
  170. claude_mpm/core/interactive_session.py +12 -11
  171. claude_mpm/core/logger.py +39 -9
  172. claude_mpm/core/logging_utils.py +35 -11
  173. claude_mpm/core/network_config.py +148 -0
  174. claude_mpm/core/oneshot_session.py +7 -6
  175. claude_mpm/core/optimized_startup.py +61 -0
  176. claude_mpm/core/output_style_manager.py +219 -44
  177. claude_mpm/core/shared/config_loader.py +3 -1
  178. claude_mpm/core/socketio_pool.py +16 -8
  179. claude_mpm/core/unified_agent_registry.py +134 -16
  180. claude_mpm/core/unified_config.py +76 -8
  181. claude_mpm/core/unified_paths.py +95 -90
  182. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  183. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.C33zOoyM.css +1 -0
  184. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.CW1J-YuA.css +1 -0
  185. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/1WZnGYqX.js +24 -0
  186. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/67pF3qNn.js +1 -0
  187. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/6RxdMKe4.js +1 -0
  188. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/8cZrfX0h.js +60 -0
  189. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/9a6T2nm-.js +7 -0
  190. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B443AUzu.js +1 -0
  191. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B8AwtY2H.js +1 -0
  192. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BF15LAsF.js +1 -0
  193. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BQaXIfA_.js +331 -0
  194. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BRcwIQNr.js +4 -0
  195. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BSNlmTZj.js +1 -0
  196. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BV6nKitt.js +43 -0
  197. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BViJ8lZt.js +128 -0
  198. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BcQ-Q0FE.js +1 -0
  199. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Bpyvgze_.js +30 -0
  200. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BzTRqg-z.js +1 -0
  201. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C0Fr8dve.js +1 -0
  202. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C3rbW_a-.js +1 -0
  203. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C8WYN38h.js +1 -0
  204. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C9I8FlXH.js +61 -0
  205. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIQcWgO2.js +36 -0
  206. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIctN7YN.js +7 -0
  207. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CKrS_JZW.js +145 -0
  208. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CR6P9C4A.js +89 -0
  209. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRRR9MD_.js +2 -0
  210. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRcR2DqT.js +334 -0
  211. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CSXtMOf0.js +1 -0
  212. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CT-sbxSk.js +1 -0
  213. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWm6DJsp.js +1 -0
  214. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CmKTTxBW.js +1 -0
  215. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CpqQ1Kzn.js +1 -0
  216. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cu_Erd72.js +261 -0
  217. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D2nGpDRe.js +1 -0
  218. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9iCMida.js +267 -0
  219. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9ykgMoY.js +10 -0
  220. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DL2Ldur1.js +1 -0
  221. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DPfltzjH.js +165 -0
  222. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DR8nis88.js +2 -0
  223. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DUliQN2b.js +1 -0
  224. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DVp1hx9R.js +1 -0
  225. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DXlhR01x.js +122 -0
  226. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D_lyTybS.js +1 -0
  227. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DngoTTgh.js +1 -0
  228. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DqkmHtDC.js +220 -0
  229. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DsDh8EYs.js +1 -0
  230. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DypDmXgd.js +139 -0
  231. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Gi6I4Gst.js +1 -0
  232. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/IPYC-LnN.js +162 -0
  233. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JTLiF7dt.js +24 -0
  234. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JpevfAFt.js +68 -0
  235. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/NqQ1dWOy.js +1 -0
  236. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/R8CEIRAd.js +2 -0
  237. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Zxy7qc-l.js +64 -0
  238. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/q9Hm6zAU.js +1 -0
  239. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/qtd3IeO4.js +15 -0
  240. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/ulBFON_C.js +65 -0
  241. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/wQVh1CoA.js +10 -0
  242. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.Dr7t0z2J.js +2 -0
  243. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.BGhZHUS3.js +1 -0
  244. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.RgBboRvH.js +1 -0
  245. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DG-KkbDf.js +1 -0
  246. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.D_jnf-x6.js +1 -0
  247. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  248. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  249. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  250. claude_mpm/dashboard-svelte/node_modules/katex/src/fonts/generate_fonts.py +58 -0
  251. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_tfms.py +114 -0
  252. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_ttfs.py +122 -0
  253. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/format_json.py +28 -0
  254. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/parse_tfm.py +211 -0
  255. claude_mpm/experimental/cli_enhancements.py +2 -1
  256. claude_mpm/hooks/claude_hooks/INTEGRATION_EXAMPLE.md +243 -0
  257. claude_mpm/hooks/claude_hooks/README_AUTO_PAUSE.md +403 -0
  258. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  259. claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc +0 -0
  260. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  261. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  262. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  263. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  264. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  265. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  266. claude_mpm/hooks/claude_hooks/auto_pause_handler.py +485 -0
  267. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  268. claude_mpm/hooks/claude_hooks/event_handlers.py +479 -128
  269. claude_mpm/hooks/claude_hooks/hook_handler.py +254 -83
  270. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +6 -11
  271. claude_mpm/hooks/claude_hooks/installer.py +149 -18
  272. claude_mpm/hooks/claude_hooks/memory_integration.py +67 -19
  273. claude_mpm/hooks/claude_hooks/response_tracking.py +44 -62
  274. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  275. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  276. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  277. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  278. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  279. claude_mpm/hooks/claude_hooks/services/connection_manager.py +69 -30
  280. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +36 -103
  281. claude_mpm/hooks/claude_hooks/services/state_manager.py +23 -36
  282. claude_mpm/hooks/claude_hooks/services/subagent_processor.py +73 -75
  283. claude_mpm/hooks/kuzu_memory_hook.py +5 -5
  284. claude_mpm/hooks/memory_integration_hook.py +46 -1
  285. claude_mpm/hooks/session_resume_hook.py +89 -1
  286. claude_mpm/hooks/templates/pre_tool_use_template.py +10 -2
  287. claude_mpm/init.py +276 -19
  288. claude_mpm/models/agent_definition.py +7 -0
  289. claude_mpm/models/git_repository.py +3 -3
  290. claude_mpm/scripts/claude-hook-handler.sh +87 -20
  291. claude_mpm/scripts/launch_monitor.py +93 -13
  292. claude_mpm/scripts/start_activity_logging.py +0 -0
  293. claude_mpm/services/agents/agent_builder.py +3 -3
  294. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  295. claude_mpm/services/agents/agent_review_service.py +280 -0
  296. claude_mpm/services/agents/agent_selection_service.py +2 -2
  297. claude_mpm/services/agents/cache_git_manager.py +7 -7
  298. claude_mpm/services/agents/deployment/agent_deployment.py +29 -7
  299. claude_mpm/services/agents/deployment/agent_discovery_service.py +6 -5
  300. claude_mpm/services/agents/deployment/agent_format_converter.py +25 -13
  301. claude_mpm/services/agents/deployment/agent_template_builder.py +42 -20
  302. claude_mpm/services/agents/deployment/agents_directory_resolver.py +2 -2
  303. claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
  304. claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
  305. claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
  306. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +348 -29
  307. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +570 -68
  308. claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
  309. claude_mpm/services/agents/git_source_manager.py +57 -4
  310. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  311. claude_mpm/services/agents/loading/framework_agent_loader.py +75 -2
  312. claude_mpm/services/agents/recommender.py +5 -3
  313. claude_mpm/services/agents/single_tier_deployment_service.py +6 -6
  314. claude_mpm/services/agents/sources/git_source_sync_service.py +129 -11
  315. claude_mpm/services/agents/startup_sync.py +27 -4
  316. claude_mpm/services/agents/toolchain_detector.py +10 -6
  317. claude_mpm/services/analysis/__init__.py +11 -1
  318. claude_mpm/services/analysis/clone_detector.py +1030 -0
  319. claude_mpm/services/cli/__init__.py +3 -0
  320. claude_mpm/services/cli/incremental_pause_manager.py +561 -0
  321. claude_mpm/services/cli/session_resume_helper.py +10 -2
  322. claude_mpm/services/command_deployment_service.py +81 -10
  323. claude_mpm/services/delegation_detector.py +175 -0
  324. claude_mpm/services/diagnostics/checks/agent_check.py +2 -2
  325. claude_mpm/services/diagnostics/checks/agent_sources_check.py +31 -1
  326. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -0
  327. claude_mpm/services/diagnostics/checks/installation_check.py +22 -0
  328. claude_mpm/services/diagnostics/checks/mcp_services_check.py +23 -0
  329. claude_mpm/services/diagnostics/doctor_reporter.py +31 -1
  330. claude_mpm/services/diagnostics/models.py +14 -1
  331. claude_mpm/services/event_bus/config.py +3 -1
  332. claude_mpm/services/event_log.py +325 -0
  333. claude_mpm/services/git/git_operations_service.py +101 -16
  334. claude_mpm/services/infrastructure/__init__.py +4 -0
  335. claude_mpm/services/infrastructure/context_usage_tracker.py +291 -0
  336. claude_mpm/services/infrastructure/resume_log_generator.py +24 -5
  337. claude_mpm/services/monitor/daemon.py +9 -2
  338. claude_mpm/services/monitor/daemon_manager.py +54 -7
  339. claude_mpm/services/monitor/management/lifecycle.py +15 -3
  340. claude_mpm/services/monitor/server.py +796 -30
  341. claude_mpm/services/pm_skills_deployer.py +884 -0
  342. claude_mpm/services/profile_manager.py +337 -0
  343. claude_mpm/services/project/project_organizer.py +4 -0
  344. claude_mpm/services/self_upgrade_service.py +120 -12
  345. claude_mpm/services/skills/__init__.py +3 -0
  346. claude_mpm/services/skills/git_skill_source_manager.py +303 -12
  347. claude_mpm/services/skills/selective_skill_deployer.py +869 -0
  348. claude_mpm/services/skills/skill_discovery_service.py +74 -4
  349. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  350. claude_mpm/services/skills_deployer.py +294 -55
  351. claude_mpm/services/socketio/dashboard_server.py +1 -0
  352. claude_mpm/services/socketio/event_normalizer.py +51 -6
  353. claude_mpm/services/socketio/handlers/hook.py +14 -7
  354. claude_mpm/services/socketio/server/core.py +386 -108
  355. claude_mpm/services/socketio/server/main.py +12 -4
  356. claude_mpm/services/version_control/git_operations.py +103 -0
  357. claude_mpm/skills/__init__.py +2 -1
  358. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
  359. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
  360. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  361. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  362. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  363. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  364. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  365. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
  366. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
  367. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  368. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  369. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
  370. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  371. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  372. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
  373. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  374. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  375. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  376. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  377. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  378. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  379. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  380. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  381. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  382. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  383. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  384. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  385. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  386. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  387. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
  388. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
  389. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  390. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  391. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
  392. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  393. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  394. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  395. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  396. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  397. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  398. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  399. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  400. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  401. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
  402. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
  403. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  404. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  405. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  406. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  407. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
  408. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  409. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  410. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  411. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  412. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  413. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  414. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
  415. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  416. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  417. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  418. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  419. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  420. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  421. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  422. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  423. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  424. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  425. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  426. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  427. claude_mpm/skills/bundled/pm/mpm/SKILL.md +38 -0
  428. claude_mpm/skills/bundled/pm/mpm-agent-update-workflow/SKILL.md +75 -0
  429. claude_mpm/skills/bundled/pm/mpm-bug-reporting/SKILL.md +248 -0
  430. claude_mpm/skills/bundled/pm/mpm-circuit-breaker-enforcement/SKILL.md +476 -0
  431. claude_mpm/skills/bundled/pm/mpm-config/SKILL.md +29 -0
  432. claude_mpm/skills/bundled/pm/mpm-delegation-patterns/SKILL.md +167 -0
  433. claude_mpm/skills/bundled/pm/mpm-doctor/SKILL.md +53 -0
  434. claude_mpm/skills/bundled/pm/mpm-git-file-tracking/SKILL.md +113 -0
  435. claude_mpm/skills/bundled/pm/mpm-help/SKILL.md +35 -0
  436. claude_mpm/skills/bundled/pm/mpm-init/SKILL.md +125 -0
  437. claude_mpm/skills/bundled/pm/mpm-monitor/SKILL.md +32 -0
  438. claude_mpm/skills/bundled/pm/mpm-organize/SKILL.md +121 -0
  439. claude_mpm/skills/bundled/pm/mpm-postmortem/SKILL.md +22 -0
  440. claude_mpm/skills/bundled/pm/mpm-pr-workflow/SKILL.md +124 -0
  441. claude_mpm/skills/bundled/pm/mpm-session-management/SKILL.md +312 -0
  442. claude_mpm/skills/bundled/pm/mpm-session-pause/SKILL.md +170 -0
  443. claude_mpm/skills/bundled/pm/mpm-session-resume/SKILL.md +31 -0
  444. claude_mpm/skills/bundled/pm/mpm-status/SKILL.md +37 -0
  445. claude_mpm/skills/bundled/pm/mpm-teaching-mode/SKILL.md +657 -0
  446. claude_mpm/skills/bundled/pm/mpm-ticket-view/SKILL.md +110 -0
  447. claude_mpm/skills/bundled/pm/mpm-ticketing-integration/SKILL.md +154 -0
  448. claude_mpm/skills/bundled/pm/mpm-tool-usage-guide/SKILL.md +386 -0
  449. claude_mpm/skills/bundled/pm/mpm-verification-protocols/SKILL.md +198 -0
  450. claude_mpm/skills/bundled/pm/mpm-version/SKILL.md +21 -0
  451. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  452. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  453. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  454. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  455. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  456. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  457. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  458. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  459. claude_mpm/skills/bundled/security-scanning.md +112 -0
  460. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  461. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  462. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  463. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  464. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  465. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  466. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  467. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  468. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  469. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  470. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  471. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
  472. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  473. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  474. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  475. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  476. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  477. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  478. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  479. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  480. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  481. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  482. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  483. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  484. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
  485. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  486. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  487. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  488. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  489. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
  490. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  491. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  492. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  493. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  494. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  495. claude_mpm/skills/registry.py +295 -90
  496. claude_mpm/skills/skill_manager.py +98 -3
  497. claude_mpm/templates/.pre-commit-config.yaml +112 -0
  498. claude_mpm/utils/agent_dependency_loader.py +115 -4
  499. claude_mpm/utils/agent_filters.py +17 -44
  500. claude_mpm/utils/gitignore.py +3 -0
  501. claude_mpm/utils/migration.py +4 -4
  502. claude_mpm/utils/robust_installer.py +86 -21
  503. claude_mpm-5.6.23.dist-info/METADATA +393 -0
  504. {claude_mpm-5.0.9.dist-info → claude_mpm-5.6.23.dist-info}/RECORD +508 -261
  505. claude_mpm-5.6.23.dist-info/entry_points.txt +5 -0
  506. claude_mpm-5.6.23.dist-info/licenses/LICENSE +94 -0
  507. claude_mpm-5.6.23.dist-info/licenses/LICENSE-FAQ.md +153 -0
  508. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  509. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  510. claude_mpm/agents/BASE_OPS.md +0 -219
  511. claude_mpm/agents/BASE_PM.md +0 -480
  512. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  513. claude_mpm/agents/BASE_QA.md +0 -167
  514. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  515. claude_mpm/agents/OUTPUT_STYLE.md +0 -290
  516. claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +0 -1322
  517. claude_mpm/agents/base_agent_loader.py +0 -601
  518. claude_mpm/cli/commands/agents_detect.py +0 -380
  519. claude_mpm/cli/commands/agents_recommend.py +0 -309
  520. claude_mpm/cli/ticket_cli.py +0 -35
  521. claude_mpm/commands/mpm-agents-auto-configure.md +0 -278
  522. claude_mpm/commands/mpm-agents-detect.md +0 -177
  523. claude_mpm/commands/mpm-agents-list.md +0 -131
  524. claude_mpm/commands/mpm-agents-recommend.md +0 -223
  525. claude_mpm/commands/mpm-config-view.md +0 -150
  526. claude_mpm/commands/mpm-ticket-organize.md +0 -304
  527. claude_mpm/dashboard/analysis_runner.py +0 -455
  528. claude_mpm/dashboard/index.html +0 -13
  529. claude_mpm/dashboard/open_dashboard.py +0 -66
  530. claude_mpm/dashboard/static/css/activity.css +0 -1958
  531. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  532. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  533. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  534. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  535. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  536. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  537. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  538. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  539. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  540. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  541. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  542. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  543. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  544. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  545. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  546. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  547. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  548. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  549. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  550. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  551. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  552. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  553. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  554. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  555. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  556. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  557. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  558. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  559. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  560. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  561. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  562. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  563. claude_mpm/dashboard/templates/code_simple.html +0 -153
  564. claude_mpm/dashboard/templates/index.html +0 -606
  565. claude_mpm/dashboard/test_dashboard.html +0 -372
  566. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  567. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
  568. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
  569. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
  570. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
  571. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
  572. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
  573. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
  574. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
  575. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
  576. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
  577. claude_mpm/scripts/mcp_server.py +0 -75
  578. claude_mpm/scripts/mcp_wrapper.py +0 -39
  579. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  580. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  581. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  582. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  583. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  584. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  585. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  586. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  587. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  588. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  589. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
  590. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  591. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  592. claude_mpm/services/mcp_gateway/main.py +0 -589
  593. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  594. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  595. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  596. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  597. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  598. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  599. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  600. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  601. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  602. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  603. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  604. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  605. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  606. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  607. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  608. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  609. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  610. claude_mpm-5.0.9.dist-info/METADATA +0 -1028
  611. claude_mpm-5.0.9.dist-info/entry_points.txt +0 -10
  612. claude_mpm-5.0.9.dist-info/licenses/LICENSE +0 -21
  613. {claude_mpm-5.0.9.dist-info → claude_mpm-5.6.23.dist-info}/WHEEL +0 -0
  614. {claude_mpm-5.0.9.dist-info → claude_mpm-5.6.23.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,413 @@
1
+ """
2
+ Document Summarization Command.
3
+
4
+ Shell-based alternative to MCP document_summarizer tool.
5
+ Provides algorithmic summarization without ML dependencies.
6
+
7
+ Design Decision: Uses simple text processing techniques:
8
+ - Brief: First paragraph extraction
9
+ - Detailed: Key sentence extraction based on position and length
10
+ - Bullet Points: Convert to markdown bullet list
11
+ - Executive: Opening + conclusion extraction
12
+
13
+ Why: Lightweight, fast, no dependencies, works offline.
14
+ """
15
+
16
+ import json
17
+ import re
18
+ from enum import Enum
19
+ from pathlib import Path
20
+ from typing import Optional
21
+
22
+
23
+ class SummaryStyle(str, Enum):
24
+ """Summary output styles."""
25
+
26
+ BRIEF = "brief"
27
+ DETAILED = "detailed"
28
+ BULLET_POINTS = "bullet_points"
29
+ EXECUTIVE = "executive"
30
+
31
+
32
+ class OutputFormat(str, Enum):
33
+ """Output format types."""
34
+
35
+ TEXT = "text"
36
+ JSON = "json"
37
+ MARKDOWN = "markdown"
38
+
39
+
40
+ class DocumentSummarizer:
41
+ """
42
+ Algorithmic document summarizer.
43
+
44
+ Design Decision: Use simple heuristics instead of ML:
45
+ - Position-based extraction (opening, closing paragraphs)
46
+ - Length-based filtering (key sentences)
47
+ - Structure detection (headings, lists)
48
+
49
+ Trade-offs:
50
+ - Performance: O(n) single pass vs. complex NLP models
51
+ - Accuracy: ~70% vs. ~90% for ML models
52
+ - Simplicity: Zero dependencies vs. heavy ML packages
53
+ """
54
+
55
+ def __init__(self, max_words: int = 150):
56
+ """Initialize summarizer with word limit."""
57
+ self.max_words = max_words
58
+
59
+ def summarize(
60
+ self, content: str, style: SummaryStyle, lines_limit: Optional[int] = None
61
+ ) -> str:
62
+ """
63
+ Summarize document content.
64
+
65
+ Args:
66
+ content: Document text to summarize
67
+ style: Summary style (brief, detailed, bullet_points, executive)
68
+ lines_limit: Optional line limit (reads first N lines only)
69
+
70
+ Returns:
71
+ Summary text
72
+
73
+ Complexity: O(n) where n is content length
74
+ """
75
+ # Apply line limit if specified
76
+ if lines_limit:
77
+ content = self._limit_lines(content, lines_limit)
78
+
79
+ # Route to style-specific summarizer
80
+ summarizers = {
81
+ SummaryStyle.BRIEF: self._summarize_brief,
82
+ SummaryStyle.DETAILED: self._summarize_detailed,
83
+ SummaryStyle.BULLET_POINTS: self._summarize_bullet_points,
84
+ SummaryStyle.EXECUTIVE: self._summarize_executive,
85
+ }
86
+
87
+ summary = summarizers[style](content)
88
+ return self._truncate_to_word_limit(summary)
89
+
90
+ def _limit_lines(self, content: str, limit: int) -> str:
91
+ """Limit content to first N lines."""
92
+ lines = content.split("\n")
93
+ return "\n".join(lines[:limit])
94
+
95
+ def _truncate_to_word_limit(self, text: str) -> str:
96
+ """Truncate text to max_words limit."""
97
+ words = text.split()
98
+ if len(words) <= self.max_words:
99
+ return text
100
+
101
+ # Truncate and add ellipsis
102
+ truncated = " ".join(words[: self.max_words])
103
+ return f"{truncated}..."
104
+
105
+ def _summarize_brief(self, content: str) -> str:
106
+ """
107
+ Brief summary: Extract first paragraph.
108
+
109
+ Heuristic: First non-empty paragraph usually introduces document.
110
+ """
111
+ paragraphs = self._extract_paragraphs(content)
112
+ if not paragraphs:
113
+ return content.strip()
114
+
115
+ return paragraphs[0]
116
+
117
+ def _summarize_detailed(self, content: str) -> str:
118
+ """
119
+ Detailed summary: Extract key sentences.
120
+
121
+ Heuristics:
122
+ - First paragraph (introduction)
123
+ - Sentences with important markers (however, therefore, important)
124
+ - Last paragraph (conclusion)
125
+ """
126
+ paragraphs = self._extract_paragraphs(content)
127
+ if not paragraphs:
128
+ return content.strip()
129
+
130
+ key_sentences = []
131
+
132
+ # Add first paragraph
133
+ if paragraphs:
134
+ key_sentences.append(paragraphs[0])
135
+
136
+ # Add sentences with key markers from middle paragraphs
137
+ if len(paragraphs) > 2:
138
+ key_markers = [
139
+ "however",
140
+ "therefore",
141
+ "important",
142
+ "note",
143
+ "critical",
144
+ "key",
145
+ "must",
146
+ "should",
147
+ "recommended",
148
+ ]
149
+
150
+ for para in paragraphs[1:-1]:
151
+ sentences = self._split_sentences(para)
152
+ for sentence in sentences:
153
+ if any(marker in sentence.lower() for marker in key_markers):
154
+ key_sentences.append(sentence)
155
+ break # One sentence per paragraph max
156
+
157
+ # Add last paragraph
158
+ if len(paragraphs) > 1:
159
+ key_sentences.append(paragraphs[-1])
160
+
161
+ return " ".join(key_sentences)
162
+
163
+ def _summarize_bullet_points(self, content: str) -> str:
164
+ """
165
+ Bullet point summary: Convert paragraphs to markdown list.
166
+
167
+ Heuristic: Each paragraph becomes a bullet point.
168
+ """
169
+ paragraphs = self._extract_paragraphs(content)
170
+ if not paragraphs:
171
+ return content.strip()
172
+
173
+ # Take key paragraphs (first, middle with markers, last)
174
+ key_paragraphs = []
175
+
176
+ # Always include first
177
+ if paragraphs:
178
+ key_paragraphs.append(paragraphs[0])
179
+
180
+ # Include middle paragraphs with key content
181
+ if len(paragraphs) > 2:
182
+ key_markers = ["however", "therefore", "important", "note", "critical"]
183
+ for para in paragraphs[1:-1]:
184
+ if any(marker in para.lower() for marker in key_markers):
185
+ # Take first sentence only for bullet point
186
+ first_sentence = self._split_sentences(para)[0]
187
+ key_paragraphs.append(first_sentence)
188
+
189
+ # Include last if different from first
190
+ if len(paragraphs) > 1:
191
+ key_paragraphs.append(paragraphs[-1])
192
+
193
+ # Format as markdown bullets
194
+ bullets = [f"- {para}" for para in key_paragraphs]
195
+ return "\n".join(bullets)
196
+
197
+ def _summarize_executive(self, content: str) -> str:
198
+ """
199
+ Executive summary: Opening + conclusion.
200
+
201
+ Heuristic: First and last paragraphs capture overview and conclusion.
202
+ """
203
+ paragraphs = self._extract_paragraphs(content)
204
+ if not paragraphs:
205
+ return content.strip()
206
+
207
+ if len(paragraphs) == 1:
208
+ return paragraphs[0]
209
+
210
+ # Opening paragraph + conclusion paragraph
211
+ return f"{paragraphs[0]}\n\n{paragraphs[-1]}"
212
+
213
+ def _extract_paragraphs(self, content: str) -> list[str]:
214
+ """
215
+ Extract paragraphs from content.
216
+
217
+ Filters out:
218
+ - Empty lines
219
+ - Short lines (< 40 chars, likely headers/formatting artifacts)
220
+ - Code blocks (lines with multiple indentation)
221
+ - Lines that look like code (contain def, class, =, {, etc.)
222
+ """
223
+ # Split on double newlines for paragraph boundaries
224
+ raw_paragraphs = re.split(r"\n\s*\n", content)
225
+
226
+ paragraphs = []
227
+ for para in raw_paragraphs:
228
+ # Clean and normalize whitespace
229
+ para = " ".join(para.split())
230
+
231
+ # Skip empty or very short paragraphs (likely headers)
232
+ if len(para) < 40:
233
+ continue
234
+
235
+ # Skip code blocks (heuristic: contains code-like patterns)
236
+ code_indicators = ["def ", "class ", " = ", "{", "}", "return ", "import "]
237
+ if any(indicator in para for indicator in code_indicators):
238
+ continue
239
+
240
+ paragraphs.append(para)
241
+
242
+ return paragraphs
243
+
244
+ def _split_sentences(self, text: str) -> list[str]:
245
+ """
246
+ Split text into sentences.
247
+
248
+ Simple heuristic: Split on '. ' but handle common abbreviations.
249
+ """
250
+ # Handle common abbreviations to avoid false splits
251
+ text = text.replace("Dr.", "Dr<DOT>")
252
+ text = text.replace("Mr.", "Mr<DOT>")
253
+ text = text.replace("Mrs.", "Mrs<DOT>")
254
+ text = text.replace("e.g.", "e<DOT>g<DOT>")
255
+ text = text.replace("i.e.", "i<DOT>e<DOT>")
256
+
257
+ # Split on sentence boundaries
258
+ sentences = re.split(r"(?<=[.!?])\s+", text)
259
+
260
+ # Restore abbreviations
261
+ sentences = [s.replace("<DOT>", ".") for s in sentences]
262
+
263
+ return [s.strip() for s in sentences if s.strip()]
264
+
265
+
266
+ def format_output(summary: str, output_format: OutputFormat, file_path: Path) -> str:
267
+ """
268
+ Format summary output.
269
+
270
+ Args:
271
+ summary: Summary text
272
+ output_format: Output format (text, json, markdown)
273
+ file_path: Original file path for metadata
274
+
275
+ Returns:
276
+ Formatted output string
277
+ """
278
+ if output_format == OutputFormat.TEXT:
279
+ return summary
280
+
281
+ if output_format == OutputFormat.JSON:
282
+ result = {
283
+ "file": str(file_path),
284
+ "summary": summary,
285
+ "word_count": len(summary.split()),
286
+ }
287
+ return json.dumps(result, indent=2)
288
+
289
+ if output_format == OutputFormat.MARKDOWN:
290
+ return f"# Summary: {file_path.name}\n\n{summary}\n"
291
+
292
+ return summary
293
+
294
+
295
+ def summarize_command(args) -> int:
296
+ """
297
+ Execute summarize command.
298
+
299
+ Args:
300
+ args: Parsed command line arguments with:
301
+ - file_path: Path to file to summarize
302
+ - style: Summary style
303
+ - max_words: Maximum words in summary
304
+ - output: Output format
305
+ - lines: Optional line limit
306
+
307
+ Returns:
308
+ Exit code (0 for success, 1 for error)
309
+ """
310
+ file_path = Path(args.file_path)
311
+
312
+ # Validate file exists
313
+ if not file_path.exists():
314
+ print(f"Error: File not found: {file_path}")
315
+ return 1
316
+
317
+ if not file_path.is_file():
318
+ print(f"Error: Not a file: {file_path}")
319
+ return 1
320
+
321
+ try:
322
+ # Read file content
323
+ content = file_path.read_text(encoding="utf-8")
324
+
325
+ # Create summarizer
326
+ summarizer = DocumentSummarizer(max_words=args.max_words)
327
+
328
+ # Generate summary
329
+ summary = summarizer.summarize(
330
+ content, style=SummaryStyle(args.style), lines_limit=args.lines
331
+ )
332
+
333
+ # Format output
334
+ output = format_output(summary, OutputFormat(args.output), file_path)
335
+
336
+ # Print result
337
+ print(output)
338
+
339
+ return 0
340
+
341
+ except UnicodeDecodeError:
342
+ print(f"Error: Cannot read file (not valid UTF-8): {file_path}")
343
+ return 1
344
+ except Exception as e:
345
+ print(f"Error: {e}")
346
+ return 1
347
+
348
+
349
+ def add_summarize_parser(subparsers) -> None:
350
+ """
351
+ Add summarize subcommand parser.
352
+
353
+ Args:
354
+ subparsers: Subparsers object from argparse
355
+ """
356
+ parser = subparsers.add_parser(
357
+ "summarize",
358
+ help="Summarize document content (shell-based alternative to MCP document_summarizer)",
359
+ description="""
360
+ Algorithmic document summarization without ML dependencies.
361
+
362
+ Styles:
363
+ brief - First paragraph only (quick overview)
364
+ detailed - Key sentences from opening, middle, closing
365
+ bullet_points - Markdown bullet list of key points
366
+ executive - Opening + conclusion (for quick decisions)
367
+
368
+ Examples:
369
+ claude-mpm summarize README.md
370
+ claude-mpm summarize docs/guide.md --style detailed --max-words 200
371
+ claude-mpm summarize src/main.py --style bullet_points --output markdown
372
+ claude-mpm summarize large.txt --lines 100 --style brief
373
+ """,
374
+ formatter_class=lambda prog: __import__("argparse").RawDescriptionHelpFormatter(
375
+ prog, max_help_position=40
376
+ ),
377
+ )
378
+
379
+ # Required arguments
380
+ parser.add_argument("file_path", type=str, help="Path to file to summarize")
381
+
382
+ # Optional arguments
383
+ parser.add_argument(
384
+ "--style",
385
+ type=str,
386
+ choices=["brief", "detailed", "bullet_points", "executive"],
387
+ default="brief",
388
+ help="Summary style (default: brief)",
389
+ )
390
+
391
+ parser.add_argument(
392
+ "--max-words",
393
+ type=int,
394
+ default=150,
395
+ help="Maximum words in summary (default: 150)",
396
+ )
397
+
398
+ parser.add_argument(
399
+ "--output",
400
+ type=str,
401
+ choices=["text", "json", "markdown"],
402
+ default="text",
403
+ help="Output format (default: text)",
404
+ )
405
+
406
+ parser.add_argument(
407
+ "--lines",
408
+ type=int,
409
+ default=None,
410
+ help="Limit to first N lines of file (default: no limit)",
411
+ )
412
+
413
+ parser.set_defaults(command="summarize")
@@ -24,6 +24,7 @@ from .commands import (
24
24
  show_info,
25
25
  )
26
26
  from .commands.analyze_code import manage_analyze_code
27
+ from .commands.config import manage_config
27
28
  from .commands.dashboard import manage_dashboard
28
29
  from .commands.skills import manage_skills
29
30
  from .commands.upgrade import upgrade
@@ -65,6 +66,7 @@ def ensure_run_attributes(args):
65
66
  args.monitor = getattr(args, "monitor", False)
66
67
  args.force = getattr(args, "force", False)
67
68
  args.reload_agents = getattr(args, "reload_agents", False)
69
+ args.force_sync = getattr(args, "force_sync", False)
68
70
  # Include dependency checking attributes
69
71
  args.check_dependencies = getattr(args, "check_dependencies", True)
70
72
  args.force_check_dependencies = getattr(args, "force_check_dependencies", False)
@@ -125,6 +127,14 @@ def execute_command(command: str, args) -> int:
125
127
  result = handle_verify(args)
126
128
  return result if result is not None else 0
127
129
 
130
+ # Handle commander command with lazy import
131
+ if command == "commander":
132
+ # Lazy import to avoid loading unless needed
133
+ from .commands.commander import handle_commander_command
134
+
135
+ result = handle_commander_command(args)
136
+ return result if result is not None else 0
137
+
128
138
  # Handle skill-source command with lazy import
129
139
  if command == "skill-source":
130
140
  # Lazy import to avoid loading unless needed
@@ -141,6 +151,24 @@ def execute_command(command: str, args) -> int:
141
151
  result = agent_source_command(args)
142
152
  return result if result is not None else 0
143
153
 
154
+ # Handle summarize command with lazy import
155
+ if command == "summarize":
156
+ # Lazy import to avoid loading unless needed
157
+ from .commands.summarize import summarize_command
158
+
159
+ result = summarize_command(args)
160
+ return result if result is not None else 0
161
+
162
+ # Handle profile command with lazy import
163
+ if command == "profile":
164
+ # Lazy import to avoid loading unless needed
165
+ from .commands.profile import ProfileCommand
166
+
167
+ cmd = ProfileCommand()
168
+ result = cmd.run(args)
169
+ # Convert CommandResult to exit code
170
+ return result.exit_code if result else 0
171
+
144
172
  # Handle auto-configure command with lazy import
145
173
  if command == "auto-configure":
146
174
  # Lazy import to avoid loading unless needed
@@ -186,35 +214,127 @@ def execute_command(command: str, args) -> int:
186
214
  "status": show_status,
187
215
  }
188
216
 
189
- # Get handler and invoke
217
+ # Get handler and call it with argument list (same pattern as autotodos)
190
218
  handler = handlers.get(subcommand)
191
219
  if handler:
192
- # Build Click context programmatically
193
- import click
220
+ try:
221
+ # Build argument list for Click command based on subcommand
222
+ click_args = []
223
+
224
+ # list command: --format, --hook-type
225
+ if subcommand == "list":
226
+ if hasattr(args, "format") and args.format:
227
+ click_args.extend(["--format", args.format])
228
+ if hasattr(args, "hook_type") and args.hook_type:
229
+ click_args.extend(["--hook-type", args.hook_type])
230
+ # clear command: --hook-type, -y
231
+ elif subcommand == "clear":
232
+ if hasattr(args, "hook_type") and args.hook_type:
233
+ click_args.extend(["--hook-type", args.hook_type])
234
+ if hasattr(args, "yes") and args.yes:
235
+ click_args.append("-y")
236
+ # diagnose command: hook_type (positional argument)
237
+ elif subcommand == "diagnose":
238
+ if hasattr(args, "hook_type") and args.hook_type:
239
+ click_args.append(args.hook_type)
240
+ # status and summary commands: no options
241
+
242
+ # Call Click command with argument list and standalone_mode=False
243
+ handler(click_args, standalone_mode=False)
244
+ return 0
245
+ except SystemExit as e:
246
+ return e.code if e.code is not None else 0
247
+ except Exception as e:
248
+ print(f"Error: {e}")
249
+ return 1
250
+ else:
251
+ print(f"Unknown hook-errors subcommand: {subcommand}")
252
+ return 1
194
253
 
195
- ctx = click.Context(command=handler)
254
+ # Handle autotodos command with lazy import
255
+ if command == "autotodos":
256
+ # Lazy import to avoid loading unless needed
257
+ from .commands.autotodos import (
258
+ clear_autotodos,
259
+ inject_autotodos,
260
+ list_autotodos,
261
+ list_pm_violations,
262
+ scan_delegation_patterns,
263
+ show_autotodos_status,
264
+ )
265
+
266
+ # Get subcommand
267
+ subcommand = getattr(args, "autotodos_command", "status")
268
+ if not subcommand:
269
+ subcommand = "status"
196
270
 
197
- # Prepare keyword arguments from args
198
- kwargs = {}
199
- if hasattr(args, "format"):
200
- kwargs["format"] = args.format
201
- if hasattr(args, "hook_type"):
202
- kwargs["hook_type"] = args.hook_type
203
- if hasattr(args, "yes"):
204
- kwargs["yes"] = args.yes
271
+ # Map subcommands to functions
272
+ handlers = {
273
+ "list": list_autotodos,
274
+ "inject": inject_autotodos,
275
+ "clear": clear_autotodos,
276
+ "status": show_autotodos_status,
277
+ "scan": scan_delegation_patterns,
278
+ "violations": list_pm_violations,
279
+ }
205
280
 
281
+ # Get handler and call it with standalone_mode=False
282
+ handler = handlers.get(subcommand)
283
+ if handler:
206
284
  try:
207
- # Invoke handler with arguments
208
- with ctx:
209
- handler.invoke(ctx, **kwargs)
285
+ # Build argument list for Click command
286
+ click_args = []
287
+
288
+ if subcommand == "list":
289
+ fmt = getattr(args, "format", "table")
290
+ click_args = ["--format", fmt]
291
+ elif subcommand == "inject":
292
+ output = getattr(args, "output", None)
293
+ if output:
294
+ click_args = ["--output", output]
295
+ elif subcommand == "clear":
296
+ error_key = getattr(args, "error_key", None)
297
+ event_type = getattr(args, "event_type", "all")
298
+ if error_key:
299
+ click_args.append("--error-key")
300
+ click_args.append(error_key)
301
+ if event_type != "all":
302
+ click_args.append("--event-type")
303
+ click_args.append(event_type)
304
+ if getattr(args, "yes", False):
305
+ click_args.append("-y")
306
+ elif subcommand == "scan":
307
+ text = getattr(args, "text", None)
308
+ file = getattr(args, "file", None)
309
+ fmt = getattr(args, "format", "table")
310
+ save = getattr(args, "save", False)
311
+
312
+ if text:
313
+ click_args.append(text)
314
+ if file:
315
+ click_args.extend(["--file", file])
316
+ if fmt != "table":
317
+ click_args.extend(["--format", fmt])
318
+ if save:
319
+ click_args.append("--save")
320
+ elif subcommand == "violations":
321
+ fmt = getattr(args, "format", "table")
322
+ if fmt != "table":
323
+ click_args.extend(["--format", fmt])
324
+
325
+ # Call Click command with argument list and standalone_mode=False
326
+ handler(click_args, standalone_mode=False)
210
327
  return 0
211
328
  except SystemExit as e:
212
329
  return e.code if e.code is not None else 0
213
330
  except Exception as e:
214
331
  print(f"Error: {e}")
332
+ import traceback
333
+
334
+ traceback.print_exc()
215
335
  return 1
216
336
  else:
217
- print(f"Unknown hook-errors subcommand: {subcommand}")
337
+ print(f"Unknown autotodos subcommand: {subcommand}")
218
338
  return 1
219
339
 
220
340
  # Map stable commands to their implementations
@@ -228,9 +348,8 @@ def execute_command(command: str, args) -> int:
228
348
  CLICommands.MEMORY.value: manage_memory,
229
349
  CLICommands.MONITOR.value: manage_monitor,
230
350
  CLICommands.DASHBOARD.value: manage_dashboard,
231
- # Configuration management commands (synonymous)
232
- # Both 'config' and 'configure' launch the interactive configuration TUI
233
- CLICommands.CONFIG.value: manage_configure, # Alias to configure
351
+ # Configuration management commands
352
+ CLICommands.CONFIG.value: manage_config, # Unified config with subcommands
234
353
  CLICommands.CONFIGURE.value: manage_configure, # Interactive configuration TUI
235
354
  CLICommands.AGGREGATE.value: aggregate_command,
236
355
  CLICommands.ANALYZE_CODE.value: manage_analyze_code,
@@ -241,6 +360,7 @@ def execute_command(command: str, args) -> int:
241
360
  CLICommands.SKILLS.value: manage_skills,
242
361
  "debug": manage_debug, # Add debug command
243
362
  "mpm-init": None, # Will be handled separately with lazy import
363
+ "commander": None, # Will be handled separately with lazy import
244
364
  }
245
365
 
246
366
  # Execute command if found
@@ -268,6 +388,8 @@ def execute_command(command: str, args) -> int:
268
388
  "local-deploy",
269
389
  "skill-source",
270
390
  "agent-source",
391
+ "hook-errors",
392
+ "autotodos",
271
393
  ]
272
394
 
273
395
  suggestion = suggest_similar_commands(command, all_commands)
@@ -10,12 +10,22 @@ from .agent_wizard import (
10
10
  run_interactive_agent_manager,
11
11
  run_interactive_agent_wizard,
12
12
  )
13
+ from .questionary_styles import (
14
+ BANNER_WIDTH,
15
+ MPM_STYLE,
16
+ print_banner,
17
+ print_section_header,
18
+ )
13
19
  from .skills_wizard import SkillsWizard, discover_and_link_runtime_skills
14
20
 
15
21
  __all__ = [
22
+ "BANNER_WIDTH",
23
+ "MPM_STYLE",
16
24
  "AgentWizard",
17
25
  "SkillsWizard",
18
26
  "discover_and_link_runtime_skills",
27
+ "print_banner",
28
+ "print_section_header",
19
29
  "run_interactive_agent_manager",
20
30
  "run_interactive_agent_wizard",
21
31
  ]