claude-mpm 4.24.0__py3-none-any.whl → 5.4.41__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 (623) 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/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +3 -48
  5. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
  6. claude_mpm/agents/MEMORY.md +1 -1
  7. claude_mpm/agents/PM_INSTRUCTIONS.md +735 -925
  8. claude_mpm/agents/WORKFLOW.md +5 -254
  9. claude_mpm/agents/__init__.py +6 -0
  10. claude_mpm/agents/agent_loader.py +14 -48
  11. claude_mpm/agents/base_agent.json +7 -4
  12. claude_mpm/agents/frontmatter_validator.py +71 -3
  13. claude_mpm/agents/templates/circuit-breakers.md +1391 -0
  14. claude_mpm/agents/templates/context-management-examples.md +544 -0
  15. claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +48 -0
  16. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  17. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  18. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  19. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  20. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  21. claude_mpm/cli/__init__.py +37 -2
  22. claude_mpm/cli/__main__.py +4 -0
  23. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  24. claude_mpm/cli/commands/__init__.py +2 -0
  25. claude_mpm/cli/commands/agent_source.py +774 -0
  26. claude_mpm/cli/commands/agent_state_manager.py +180 -31
  27. claude_mpm/cli/commands/agents.py +1116 -55
  28. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  29. claude_mpm/cli/commands/agents_discover.py +338 -0
  30. claude_mpm/cli/commands/aggregate.py +1 -1
  31. claude_mpm/cli/commands/analyze.py +3 -3
  32. claude_mpm/cli/commands/auto_configure.py +725 -242
  33. claude_mpm/cli/commands/config.py +95 -6
  34. claude_mpm/cli/commands/configure.py +1875 -46
  35. claude_mpm/cli/commands/configure_agent_display.py +29 -10
  36. claude_mpm/cli/commands/configure_navigation.py +63 -46
  37. claude_mpm/cli/commands/debug.py +12 -12
  38. claude_mpm/cli/commands/doctor.py +10 -2
  39. claude_mpm/cli/commands/hook_errors.py +277 -0
  40. claude_mpm/cli/commands/local_deploy.py +1 -4
  41. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  42. claude_mpm/cli/commands/mpm_init/core.py +229 -2
  43. claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
  44. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  45. claude_mpm/cli/commands/mpm_init/prompts.py +286 -6
  46. claude_mpm/cli/commands/postmortem.py +401 -0
  47. claude_mpm/cli/commands/profile.py +277 -0
  48. claude_mpm/cli/commands/run.py +123 -165
  49. claude_mpm/cli/commands/skill_source.py +694 -0
  50. claude_mpm/cli/commands/skills.py +782 -20
  51. claude_mpm/cli/commands/summarize.py +413 -0
  52. claude_mpm/cli/executor.py +96 -3
  53. claude_mpm/cli/interactive/agent_wizard.py +1030 -45
  54. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  55. claude_mpm/cli/parsers/agents_parser.py +307 -10
  56. claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
  57. claude_mpm/cli/parsers/base_parser.py +65 -0
  58. claude_mpm/cli/parsers/config_parser.py +162 -39
  59. claude_mpm/cli/parsers/profile_parser.py +148 -0
  60. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  61. claude_mpm/cli/parsers/skills_parser.py +146 -0
  62. claude_mpm/cli/parsers/source_parser.py +138 -0
  63. claude_mpm/cli/startup.py +1280 -118
  64. claude_mpm/cli/startup_display.py +480 -0
  65. claude_mpm/cli/utils.py +1 -1
  66. claude_mpm/cli_module/commands.py +1 -1
  67. claude_mpm/commands/mpm-config.md +21 -134
  68. claude_mpm/commands/mpm-doctor.md +16 -20
  69. claude_mpm/commands/mpm-help.md +13 -283
  70. claude_mpm/commands/mpm-init.md +88 -489
  71. claude_mpm/commands/mpm-monitor.md +23 -401
  72. claude_mpm/commands/mpm-organize.md +72 -247
  73. claude_mpm/commands/mpm-postmortem.md +21 -0
  74. claude_mpm/commands/mpm-session-resume.md +30 -0
  75. claude_mpm/commands/mpm-status.md +13 -68
  76. claude_mpm/commands/mpm-ticket-view.md +109 -0
  77. claude_mpm/commands/mpm-version.md +13 -106
  78. claude_mpm/commands/mpm.md +10 -0
  79. claude_mpm/config/agent_presets.py +488 -0
  80. claude_mpm/config/agent_sources.py +352 -0
  81. claude_mpm/config/skill_presets.py +392 -0
  82. claude_mpm/config/skill_sources.py +590 -0
  83. claude_mpm/constants.py +13 -0
  84. claude_mpm/core/claude_runner.py +5 -34
  85. claude_mpm/core/config.py +15 -1
  86. claude_mpm/core/constants.py +1 -1
  87. claude_mpm/core/framework/__init__.py +3 -16
  88. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  89. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  90. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  91. claude_mpm/core/framework/loaders/instruction_loader.py +66 -5
  92. claude_mpm/core/framework_loader.py +4 -2
  93. claude_mpm/core/hook_error_memory.py +381 -0
  94. claude_mpm/core/hook_manager.py +41 -2
  95. claude_mpm/core/interactive_session.py +91 -10
  96. claude_mpm/core/logger.py +16 -1
  97. claude_mpm/core/oneshot_session.py +71 -8
  98. claude_mpm/core/optimized_startup.py +59 -0
  99. claude_mpm/core/output_style_manager.py +173 -43
  100. claude_mpm/core/protocols/__init__.py +23 -0
  101. claude_mpm/core/protocols/runner_protocol.py +103 -0
  102. claude_mpm/core/protocols/session_protocol.py +131 -0
  103. claude_mpm/core/shared/config_loader.py +1 -1
  104. claude_mpm/core/shared/singleton_manager.py +11 -4
  105. claude_mpm/core/socketio_pool.py +3 -3
  106. claude_mpm/core/system_context.py +38 -0
  107. claude_mpm/core/unified_agent_registry.py +134 -16
  108. claude_mpm/core/unified_config.py +22 -0
  109. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  110. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
  111. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
  112. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
  113. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
  114. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
  115. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
  116. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
  117. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
  118. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
  119. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
  120. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
  121. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
  122. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
  123. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
  124. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  125. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  126. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  127. claude_mpm/experimental/cli_enhancements.py +1 -5
  128. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  129. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  130. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  131. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  132. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  133. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  134. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  135. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  136. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  137. claude_mpm/hooks/claude_hooks/event_handlers.py +214 -79
  138. claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
  139. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  140. claude_mpm/hooks/claude_hooks/memory_integration.py +28 -0
  141. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  142. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  143. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  144. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  145. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  146. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  147. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  148. claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
  149. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  150. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  151. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  152. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  153. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  154. claude_mpm/hooks/memory_integration_hook.py +46 -1
  155. claude_mpm/init.py +63 -19
  156. claude_mpm/models/agent_definition.py +7 -0
  157. claude_mpm/models/git_repository.py +198 -0
  158. claude_mpm/scripts/claude-hook-handler.sh +60 -20
  159. claude_mpm/scripts/launch_monitor.py +93 -13
  160. claude_mpm/scripts/start_activity_logging.py +3 -1
  161. claude_mpm/services/agents/agent_builder.py +48 -12
  162. claude_mpm/services/agents/agent_preset_service.py +238 -0
  163. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  164. claude_mpm/services/agents/agent_review_service.py +280 -0
  165. claude_mpm/services/agents/agent_selection_service.py +484 -0
  166. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  167. claude_mpm/services/agents/cache_git_manager.py +621 -0
  168. claude_mpm/services/agents/deployment/agent_deployment.py +148 -2
  169. claude_mpm/services/agents/deployment/agent_discovery_service.py +104 -73
  170. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  171. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  172. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  173. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  174. claude_mpm/services/agents/deployment/agent_template_builder.py +238 -15
  175. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  176. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  177. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  178. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +422 -31
  179. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  180. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  181. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +841 -0
  182. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  183. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  184. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  185. claude_mpm/services/agents/git_source_manager.py +663 -0
  186. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  187. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  188. claude_mpm/services/agents/local_template_manager.py +50 -10
  189. claude_mpm/services/agents/recommender.py +5 -3
  190. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  191. claude_mpm/services/agents/sources/__init__.py +13 -0
  192. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  193. claude_mpm/services/agents/sources/git_source_sync_service.py +1094 -0
  194. claude_mpm/services/agents/startup_sync.py +259 -0
  195. claude_mpm/services/agents/toolchain_detector.py +478 -0
  196. claude_mpm/services/analysis/__init__.py +35 -0
  197. claude_mpm/services/analysis/clone_detector.py +1030 -0
  198. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  199. claude_mpm/services/analysis/postmortem_service.py +765 -0
  200. claude_mpm/services/cli/session_pause_manager.py +1 -1
  201. claude_mpm/services/command_deployment_service.py +271 -6
  202. claude_mpm/services/core/base.py +7 -2
  203. claude_mpm/services/core/interfaces/__init__.py +1 -3
  204. claude_mpm/services/core/interfaces/health.py +1 -4
  205. claude_mpm/services/core/models/__init__.py +2 -11
  206. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  207. claude_mpm/services/diagnostics/checks/agent_check.py +2 -4
  208. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  209. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  210. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  211. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  212. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  213. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  214. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  215. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  216. claude_mpm/services/event_bus/config.py +3 -1
  217. claude_mpm/services/event_bus/direct_relay.py +3 -3
  218. claude_mpm/services/events/consumers/logging.py +1 -2
  219. claude_mpm/services/git/__init__.py +21 -0
  220. claude_mpm/services/git/git_operations_service.py +579 -0
  221. claude_mpm/services/github/__init__.py +21 -0
  222. claude_mpm/services/github/github_cli_service.py +397 -0
  223. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  224. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  225. claude_mpm/services/instructions/__init__.py +9 -0
  226. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  227. claude_mpm/services/local_ops/__init__.py +3 -13
  228. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  229. claude_mpm/services/local_ops/health_manager.py +1 -4
  230. claude_mpm/services/local_ops/resource_monitor.py +1 -1
  231. claude_mpm/services/mcp_config_manager.py +75 -145
  232. claude_mpm/services/mcp_service_verifier.py +6 -3
  233. claude_mpm/services/model/model_router.py +1 -2
  234. claude_mpm/services/monitor/daemon.py +38 -11
  235. claude_mpm/services/monitor/daemon_manager.py +134 -21
  236. claude_mpm/services/monitor/management/lifecycle.py +8 -1
  237. claude_mpm/services/monitor/server.py +700 -24
  238. claude_mpm/services/pm_skills_deployer.py +676 -0
  239. claude_mpm/services/port_manager.py +1 -1
  240. claude_mpm/services/pr/__init__.py +14 -0
  241. claude_mpm/services/pr/pr_template_service.py +329 -0
  242. claude_mpm/services/profile_manager.py +331 -0
  243. claude_mpm/services/project/documentation_manager.py +2 -1
  244. claude_mpm/services/project/project_organizer.py +4 -0
  245. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  246. claude_mpm/services/runner_configuration_service.py +16 -3
  247. claude_mpm/services/self_upgrade_service.py +120 -12
  248. claude_mpm/services/session_management_service.py +16 -4
  249. claude_mpm/services/skills/__init__.py +21 -0
  250. claude_mpm/services/skills/git_skill_source_manager.py +1297 -0
  251. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  252. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  253. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  254. claude_mpm/services/skills_config.py +547 -0
  255. claude_mpm/services/skills_deployer.py +1072 -0
  256. claude_mpm/services/socketio/dashboard_server.py +1 -0
  257. claude_mpm/services/socketio/event_normalizer.py +51 -6
  258. claude_mpm/services/socketio/handlers/connection.py +1 -1
  259. claude_mpm/services/socketio/handlers/git.py +1 -1
  260. claude_mpm/services/socketio/server/core.py +387 -112
  261. claude_mpm/services/socketio/server/main.py +1 -3
  262. claude_mpm/services/system_instructions_service.py +1 -3
  263. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  264. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  265. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  266. claude_mpm/services/unified/unified_deployment.py +1 -5
  267. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  268. claude_mpm/services/version_control/git_operations.py +103 -0
  269. claude_mpm/services/visualization/__init__.py +1 -5
  270. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  271. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
  272. claude_mpm/skills/skill_manager.py +92 -3
  273. claude_mpm/skills/skills_registry.py +0 -1
  274. claude_mpm/templates/questions/__init__.py +38 -0
  275. claude_mpm/templates/questions/base.py +193 -0
  276. claude_mpm/templates/questions/pr_strategy.py +311 -0
  277. claude_mpm/templates/questions/project_init.py +385 -0
  278. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  279. claude_mpm/tools/__main__.py +8 -8
  280. claude_mpm/utils/agent_dependency_loader.py +91 -12
  281. claude_mpm/utils/agent_filters.py +261 -0
  282. claude_mpm/utils/dependency_cache.py +3 -1
  283. claude_mpm/utils/gitignore.py +244 -0
  284. claude_mpm/utils/migration.py +372 -0
  285. claude_mpm/utils/progress.py +387 -0
  286. claude_mpm/utils/robust_installer.py +49 -7
  287. claude_mpm/utils/structured_questions.py +619 -0
  288. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/METADATA +445 -122
  289. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/RECORD +298 -503
  290. claude_mpm-5.4.41.dist-info/entry_points.txt +5 -0
  291. claude_mpm-5.4.41.dist-info/licenses/LICENSE +94 -0
  292. claude_mpm-5.4.41.dist-info/licenses/LICENSE-FAQ.md +153 -0
  293. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  294. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  295. claude_mpm/agents/BASE_OPS.md +0 -219
  296. claude_mpm/agents/BASE_PM.md +0 -468
  297. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  298. claude_mpm/agents/BASE_QA.md +0 -167
  299. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  300. claude_mpm/agents/base_agent_loader.py +0 -626
  301. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  302. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  303. claude_mpm/agents/templates/agent-manager.json +0 -273
  304. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  305. claude_mpm/agents/templates/api_qa.json +0 -183
  306. claude_mpm/agents/templates/circuit_breakers.md +0 -638
  307. claude_mpm/agents/templates/clerk-ops.json +0 -235
  308. claude_mpm/agents/templates/code_analyzer.json +0 -101
  309. claude_mpm/agents/templates/content-agent.json +0 -358
  310. claude_mpm/agents/templates/dart_engineer.json +0 -307
  311. claude_mpm/agents/templates/data_engineer.json +0 -225
  312. claude_mpm/agents/templates/documentation.json +0 -238
  313. claude_mpm/agents/templates/engineer.json +0 -210
  314. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  315. claude_mpm/agents/templates/golang_engineer.json +0 -270
  316. claude_mpm/agents/templates/imagemagick.json +0 -264
  317. claude_mpm/agents/templates/java_engineer.json +0 -346
  318. claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
  319. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  320. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  321. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  322. claude_mpm/agents/templates/memory_manager.json +0 -158
  323. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  324. claude_mpm/agents/templates/ops.json +0 -185
  325. claude_mpm/agents/templates/php-engineer.json +0 -287
  326. claude_mpm/agents/templates/product_owner.json +0 -338
  327. claude_mpm/agents/templates/project_organizer.json +0 -144
  328. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  329. claude_mpm/agents/templates/python_engineer.json +0 -387
  330. claude_mpm/agents/templates/qa.json +0 -243
  331. claude_mpm/agents/templates/react_engineer.json +0 -239
  332. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  333. claude_mpm/agents/templates/research.json +0 -188
  334. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  335. claude_mpm/agents/templates/rust_engineer.json +0 -275
  336. claude_mpm/agents/templates/security.json +0 -202
  337. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  338. claude_mpm/agents/templates/tauri_engineer.json +0 -274
  339. claude_mpm/agents/templates/ticketing.json +0 -178
  340. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  341. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  342. claude_mpm/agents/templates/version_control.json +0 -159
  343. claude_mpm/agents/templates/web_qa.json +0 -400
  344. claude_mpm/agents/templates/web_ui.json +0 -189
  345. claude_mpm/cli/commands/agents_detect.py +0 -380
  346. claude_mpm/cli/commands/agents_recommend.py +0 -309
  347. claude_mpm/cli/ticket_cli.py +0 -35
  348. claude_mpm/commands/mpm-agents-detect.md +0 -168
  349. claude_mpm/commands/mpm-agents-recommend.md +0 -214
  350. claude_mpm/commands/mpm-agents.md +0 -122
  351. claude_mpm/commands/mpm-auto-configure.md +0 -269
  352. claude_mpm/commands/mpm-resume.md +0 -372
  353. claude_mpm/commands/mpm-tickets.md +0 -151
  354. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  355. claude_mpm/dashboard/analysis_runner.py +0 -455
  356. claude_mpm/dashboard/index.html +0 -13
  357. claude_mpm/dashboard/open_dashboard.py +0 -66
  358. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  359. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  360. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  361. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  362. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  363. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  364. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  365. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  366. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  367. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  368. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  369. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  370. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  371. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  372. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  373. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  374. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  375. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  376. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  377. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  378. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  379. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  380. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  381. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  382. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  383. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  384. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  385. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  386. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  387. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  388. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  389. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  390. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  391. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  392. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  393. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  394. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  395. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  396. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  397. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  398. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  399. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  400. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  401. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  402. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  403. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  404. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  405. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  406. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  407. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  408. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  409. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  410. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  411. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  412. claude_mpm/dashboard/static/built/react/events.js +0 -30
  413. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  414. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  415. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  416. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  417. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  418. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  419. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  420. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  421. claude_mpm/dashboard/static/css/activity.css +0 -1958
  422. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  423. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  424. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  425. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  426. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  427. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  428. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  429. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  430. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  431. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  432. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  433. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  434. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  435. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  436. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  437. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  438. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  439. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  440. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  441. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  442. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  443. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  444. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  445. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  446. claude_mpm/dashboard/static/events.html +0 -607
  447. claude_mpm/dashboard/static/index.html +0 -635
  448. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  449. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  450. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  451. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  452. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  453. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  454. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  455. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  456. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  457. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  458. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  459. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  460. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  461. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  462. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  463. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  464. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  465. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  466. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  467. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  468. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  469. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  470. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  471. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  472. claude_mpm/dashboard/static/js/dashboard.js +0 -1896
  473. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  474. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  475. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  476. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  477. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  478. claude_mpm/dashboard/static/js/socket-client.js +0 -1457
  479. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  480. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  481. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  482. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  483. claude_mpm/dashboard/static/legacy/files.html +0 -747
  484. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  485. claude_mpm/dashboard/static/monitors.html +0 -431
  486. claude_mpm/dashboard/static/production/events.html +0 -659
  487. claude_mpm/dashboard/static/production/main.html +0 -698
  488. claude_mpm/dashboard/static/production/monitors.html +0 -483
  489. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  490. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  491. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  492. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  493. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  494. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  495. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  496. claude_mpm/dashboard/templates/code_simple.html +0 -153
  497. claude_mpm/dashboard/templates/index.html +0 -606
  498. claude_mpm/dashboard/test_dashboard.html +0 -372
  499. claude_mpm/scripts/mcp_server.py +0 -75
  500. claude_mpm/scripts/mcp_wrapper.py +0 -39
  501. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  502. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  503. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  504. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  505. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  506. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  507. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  508. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  509. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  510. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  511. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -971
  512. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  513. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  514. claude_mpm/services/mcp_gateway/main.py +0 -589
  515. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  516. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  517. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  518. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  519. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -419
  520. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  521. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -714
  522. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  523. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  524. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  525. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  526. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  527. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  528. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -551
  529. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  530. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  531. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  532. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  533. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  534. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  535. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  536. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  537. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  538. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  539. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  540. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  541. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  542. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  543. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  544. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  545. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  546. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  547. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  548. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  549. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  550. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  551. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  552. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  553. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  554. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  555. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  556. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  557. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  558. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  559. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  560. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  561. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  562. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  563. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  564. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  565. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  566. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  567. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  568. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  569. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  570. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  571. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  572. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  573. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  574. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  575. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  576. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  577. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  578. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  579. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  580. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  581. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  582. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  583. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  584. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  585. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  586. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  587. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  588. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  589. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  590. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  591. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  592. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  593. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  594. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  595. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  596. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  597. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  598. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  599. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  600. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  601. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  602. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  603. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  604. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  605. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  606. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  607. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  608. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  609. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  610. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  611. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  612. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  613. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  614. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  615. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  616. claude_mpm-4.24.0.dist-info/entry_points.txt +0 -10
  617. claude_mpm-4.24.0.dist-info/licenses/LICENSE +0 -21
  618. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  619. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  620. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  621. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  622. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/WHEEL +0 -0
  623. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/top_level.txt +0 -0
@@ -1,714 +0,0 @@
1
- """
2
- Simplified MCP Stdio Server
3
- ============================
4
-
5
- A proper stdio-based MCP server that communicates via JSON-RPC over stdin/stdout.
6
- This server is spawned on-demand by Claude Code/Code and exits when the connection closes.
7
-
8
- WHY: MCP servers should be simple stdio-based processes that Claude can spawn and control.
9
- They should NOT run as persistent background services with lock files.
10
-
11
- DESIGN DECISION: We follow the MCP specification exactly - read from stdin, write to stdout,
12
- use JSON-RPC protocol, and exit cleanly when stdin closes.
13
- """
14
-
15
- import asyncio
16
- import logging
17
- import os
18
- import sys
19
- import time
20
- from datetime import timezone
21
- from pathlib import Path
22
- from typing import Any, Dict
23
-
24
- # Import MCP SDK components
25
- from mcp.server import NotificationOptions, Server
26
- from mcp.server.models import InitializationOptions
27
- from mcp.server.stdio import stdio_server
28
- from mcp.types import TextContent, Tool
29
-
30
- # Import pydantic for model patching
31
- from claude_mpm.core.logger import get_logger
32
-
33
- # Ticket tools removed - using mcp-ticketer instead
34
- TICKET_TOOLS_AVAILABLE = False
35
-
36
-
37
- def apply_backward_compatibility_patches():
38
- """
39
- Apply backward compatibility patches for MCP protocol differences.
40
-
41
- This function patches the MCP Server to handle missing clientInfo
42
- in initialize requests from older Claude Code versions.
43
- """
44
- try:
45
- from mcp.server import Server
46
-
47
- logger = get_logger("MCPPatcher")
48
- logger.info(
49
- "Applying MCP Server message handling patch for backward compatibility"
50
- )
51
-
52
- # Store the original _handle_message method
53
- original_handle_message = Server._handle_message
54
-
55
- async def patched_handle_message(
56
- self, message, session, lifespan_context, raise_exceptions=False
57
- ):
58
- """Patched message handler that adds clientInfo if missing from initialize requests."""
59
- try:
60
- # Check if this is a request responder with initialize method
61
- if hasattr(message, "request") and hasattr(message.request, "method"):
62
- request = message.request
63
- if (
64
- request.method == "initialize"
65
- and hasattr(request, "params")
66
- and request.params is not None
67
- ):
68
-
69
- # Convert params to dict to check for clientInfo
70
- params_dict = request.params
71
- if hasattr(params_dict, "model_dump"):
72
- params_dict = params_dict.model_dump()
73
- elif hasattr(params_dict, "dict"):
74
- params_dict = params_dict.dict()
75
-
76
- if (
77
- isinstance(params_dict, dict)
78
- and "clientInfo" not in params_dict
79
- ):
80
- logger.info(
81
- "Adding default clientInfo for backward compatibility"
82
- )
83
-
84
- # Add default clientInfo
85
- params_dict["clientInfo"] = {
86
- "name": "claude-desktop",
87
- "version": "unknown",
88
- }
89
-
90
- # Try to update the params object
91
- if hasattr(request.params, "__dict__"):
92
- request.params.clientInfo = params_dict["clientInfo"]
93
-
94
- # Call the original handler
95
- return await original_handle_message(
96
- self, message, session, lifespan_context, raise_exceptions
97
- )
98
-
99
- except Exception as e:
100
- logger.warning(f"Error in patched message handler: {e}")
101
- # Fall back to original handler
102
- return await original_handle_message(
103
- self, message, session, lifespan_context, raise_exceptions
104
- )
105
-
106
- # Apply the patch
107
- Server._handle_message = patched_handle_message
108
- logger.info("Applied MCP Server message handling patch")
109
- return True
110
-
111
- except ImportError as e:
112
- get_logger("MCPPatcher").warning(
113
- f"Could not import MCP Server for patching: {e}"
114
- )
115
- return False
116
- except Exception as e:
117
- get_logger("MCPPatcher").error(
118
- f"Failed to apply backward compatibility patch: {e}"
119
- )
120
- return False
121
-
122
-
123
- class SimpleMCPServer:
124
- """
125
- A simple stdio-based MCP server implementation.
126
-
127
- WHY: This server follows the MCP specification for stdio communication,
128
- making it compatible with Claude Code/Code's MCP client.
129
-
130
- DESIGN DECISIONS:
131
- - No persistent state or lock files
132
- - Spawned on-demand by Claude
133
- - Communicates via stdin/stdout
134
- - Exits when connection closes
135
- - Includes backward compatibility for protocol differences
136
- """
137
-
138
- def __init__(self, name: str = "claude-mpm-gateway", version: str = "1.0.0"):
139
- """
140
- Initialize the MCP server.
141
-
142
- Args:
143
- name: Server name for identification
144
- version: Server version
145
- """
146
- self.name = name
147
- self.version = version
148
- self.logger = get_logger("MCPStdioServer")
149
- self.startup_time = time.time()
150
-
151
- # Log startup timing
152
- self.logger.info(f"Initializing MCP server {name} v{version}")
153
- start_time = time.time()
154
-
155
- # Apply backward compatibility patches before creating server
156
- apply_backward_compatibility_patches()
157
-
158
- # Create MCP server instance
159
- self.server = Server(name)
160
-
161
- # Register default tools
162
- self._register_tools()
163
-
164
- # Log initialization time
165
- init_time = time.time() - start_time
166
- self.logger.info(f"MCP server initialized in {init_time:.2f} seconds")
167
-
168
- async def _summarize_content(
169
- self, content: str, style: str, max_length: int
170
- ) -> str:
171
- """
172
- Summarize text content based on style and length constraints.
173
-
174
- Args:
175
- content: The text to summarize
176
- style: Summary style (brief, detailed, bullet_points, executive)
177
- max_length: Maximum length in words
178
-
179
- Returns:
180
- Summarized text
181
- """
182
- if not content or not content.strip():
183
- return "No content provided to summarize."
184
-
185
- # Split content into sentences for processing
186
- import re
187
-
188
- sentences = re.split(r"(?<=[.!?])\s+", content.strip())
189
-
190
- if not sentences:
191
- return content[: max_length * 5] # Rough estimate: 5 chars per word
192
-
193
- if style == "brief":
194
- # Brief: First and last portions with key sentences
195
- return self._create_brief_summary(sentences, max_length)
196
-
197
- if style == "detailed":
198
- # Detailed: More comprehensive with section preservation
199
- return self._create_detailed_summary(sentences, content, max_length)
200
-
201
- if style == "bullet_points":
202
- # Extract key points as bullet list
203
- return self._create_bullet_summary(sentences, content, max_length)
204
-
205
- if style == "executive":
206
- # Executive: Summary + key findings + recommendations
207
- return self._create_executive_summary(sentences, content, max_length)
208
-
209
- # Default to brief
210
- return self._create_brief_summary(sentences, max_length)
211
-
212
- def _create_brief_summary(self, sentences: list[str], max_length: int) -> str:
213
- """Create a brief summary by selecting most important sentences."""
214
- if not sentences:
215
- return ""
216
-
217
- # If very short summary requested, just return truncated first sentence
218
- if max_length < 10:
219
- words = sentences[0].split()[:max_length]
220
- if len(words) < len(sentences[0].split()):
221
- return " ".join(words) + "..."
222
- return " ".join(words)
223
-
224
- if len(sentences) <= 3:
225
- text = " ".join(sentences)
226
- words = text.split()
227
- if len(words) <= max_length:
228
- return text
229
- # Truncate to word limit
230
- return " ".join(words[:max_length]) + "..."
231
-
232
- # Calculate importance scores for sentences
233
- scored_sentences = []
234
- for i, sentence in enumerate(sentences):
235
- score = 0
236
-
237
- # Position scoring
238
- if i == 0: # First sentence
239
- score += 3
240
- elif i == len(sentences) - 1: # Last sentence
241
- score += 2
242
- elif i < 3: # Early sentences
243
- score += 1
244
-
245
- # Content scoring
246
- important_words = [
247
- "important",
248
- "key",
249
- "main",
250
- "critical",
251
- "essential",
252
- "summary",
253
- "conclusion",
254
- "result",
255
- "therefore",
256
- "however",
257
- ]
258
- for word in important_words:
259
- if word in sentence.lower():
260
- score += 1
261
-
262
- # Length scoring (prefer medium-length sentences)
263
- word_count = len(sentence.split())
264
- if 10 <= word_count <= 25:
265
- score += 1
266
-
267
- scored_sentences.append((score, i, sentence))
268
-
269
- # Sort by score and select top sentences
270
- scored_sentences.sort(reverse=True, key=lambda x: x[0])
271
-
272
- # Select sentences up to word limit
273
- selected = []
274
- word_count = 0
275
- for score, orig_idx, sentence in scored_sentences:
276
- sentence_words = len(sentence.split())
277
- if word_count + sentence_words <= max_length:
278
- selected.append((orig_idx, sentence))
279
- word_count += sentence_words
280
-
281
- # Sort by original order
282
- selected.sort(key=lambda x: x[0])
283
-
284
- if not selected:
285
- # If no sentences fit, truncate the first sentence
286
- words = sentences[0].split()[:max_length]
287
- if len(words) < len(sentences[0].split()):
288
- return " ".join(words) + "..."
289
- return " ".join(words)
290
-
291
- return " ".join(s[1] for s in selected)
292
-
293
- def _create_detailed_summary(
294
- self, sentences: list[str], content: str, max_length: int
295
- ) -> str:
296
- """Create a detailed summary preserving document structure."""
297
- import re
298
-
299
- # Split into paragraphs
300
- paragraphs = content.split("\n\n")
301
-
302
- if len(paragraphs) <= 2:
303
- return self._create_brief_summary(sentences, max_length)
304
-
305
- # Summarize each paragraph
306
- summary_parts = []
307
- max_length // len(paragraphs)
308
-
309
- for para in paragraphs:
310
- if not para.strip():
311
- continue
312
-
313
- para_sentences = re.split(r"(?<=[.!?])\s+", para.strip())
314
- if para_sentences:
315
- # Take first sentence of each paragraph
316
- summary_parts.append(para_sentences[0])
317
-
318
- result = " ".join(summary_parts)
319
-
320
- # Trim to word limit
321
- words = result.split()[:max_length]
322
- return " ".join(words) + ("..." if len(result.split()) > max_length else "")
323
-
324
- def _create_bullet_summary(
325
- self, sentences: list[str], content: str, max_length: int
326
- ) -> str:
327
- """Extract key points as a bullet list."""
328
- import re
329
-
330
- # Look for existing bullet points or lists
331
- bullet_patterns = [
332
- re.compile(r"^\s*[-•*]\s+(.+)$", re.MULTILINE),
333
- re.compile(r"^\s*\d+[.)]\s+(.+)$", re.MULTILINE),
334
- re.compile(r"^([A-Z][^.!?]+):(.+)$", re.MULTILINE),
335
- ]
336
-
337
- points = []
338
- for pattern in bullet_patterns:
339
- matches = pattern.findall(content)
340
- for match in matches:
341
- if isinstance(match, tuple):
342
- point = " ".join(match).strip()
343
- else:
344
- point = match.strip()
345
- if point and len(point.split()) <= 20: # Keep concise points
346
- points.append(point)
347
-
348
- # If no bullet points found, extract key sentences
349
- if not points:
350
- # Use brief summary sentences as bullet points
351
- brief = self._create_brief_summary(sentences, max_length)
352
- points = brief.split(". ")
353
-
354
- # Format as bullet list
355
- result_lines = []
356
- word_count = 0
357
- for point in points:
358
- point_words = len(point.split())
359
- if word_count + point_words <= max_length:
360
- result_lines.append(f"• {point.strip('.')}")
361
- word_count += point_words
362
-
363
- if not result_lines:
364
- return "• " + " ".join(sentences[0].split()[:max_length]) + "..."
365
-
366
- return "\n".join(result_lines)
367
-
368
- def _create_executive_summary(
369
- self, sentences: list[str], content: str, max_length: int
370
- ) -> str:
371
- """Create an executive summary with overview, findings, and recommendations."""
372
- # Allocate words across sections
373
- overview_words = max_length // 3
374
- findings_words = max_length // 3
375
- recommendations_words = max_length - overview_words - findings_words
376
-
377
- sections = []
378
-
379
- # Overview section
380
- overview = self._create_brief_summary(
381
- sentences[: len(sentences) // 2], overview_words
382
- )
383
- if overview:
384
- sections.append(f"OVERVIEW:\n{overview}")
385
-
386
- # Key Findings
387
-
388
- findings = []
389
-
390
- # Look for sentences with conclusion/result indicators
391
- conclusion_patterns = [
392
- "found",
393
- "discovered",
394
- "shows",
395
- "indicates",
396
- "reveals",
397
- "demonstrates",
398
- "proves",
399
- "confirms",
400
- "suggests",
401
- ]
402
-
403
- for sentence in sentences:
404
- if any(word in sentence.lower() for word in conclusion_patterns):
405
- findings.append(sentence)
406
- if len(" ".join(findings).split()) >= findings_words:
407
- break
408
-
409
- if findings:
410
- sections.append("\nKEY FINDINGS:\n• " + "\n• ".join(findings[:3]))
411
-
412
- # Recommendations (look for action-oriented sentences)
413
- action_patterns = [
414
- "should",
415
- "must",
416
- "need to",
417
- "recommend",
418
- "suggest",
419
- "important to",
420
- "critical to",
421
- "require",
422
- ]
423
-
424
- recommendations = []
425
- for sentence in sentences:
426
- if any(word in sentence.lower() for word in action_patterns):
427
- recommendations.append(sentence)
428
- if len(" ".join(recommendations).split()) >= recommendations_words:
429
- break
430
-
431
- if recommendations:
432
- sections.append("\nRECOMMENDATIONS:\n• " + "\n• ".join(recommendations[:3]))
433
-
434
- # If no sections were created, fall back to brief summary
435
- if not sections:
436
- return self._create_brief_summary(sentences, max_length)
437
-
438
- result = "\n".join(sections)
439
-
440
- # Ensure we don't exceed word limit
441
- words = result.split()[:max_length]
442
- return " ".join(words) + ("..." if len(result.split()) > max_length else "")
443
-
444
- def _register_tools(self):
445
- """
446
- Register MCP tools with the server.
447
-
448
- WHY: Tools are the primary way MCP servers extend Claude's capabilities.
449
- We register them using decorators on handler functions.
450
- """
451
- # Initialize unified ticket tool if available
452
- # NOTE: Defer initialization to avoid event loop issues
453
- self.unified_ticket_tool = None
454
- self._ticket_tool_initialized = False
455
-
456
- @self.server.list_tools()
457
- async def handle_list_tools() -> list[Tool]:
458
- """List available tools."""
459
- # Initialize ticket tool lazily if needed
460
- if not self._ticket_tool_initialized and TICKET_TOOLS_AVAILABLE:
461
- await self._initialize_ticket_tool()
462
-
463
- tools = [
464
- Tool(
465
- name="status",
466
- description="Get system and service status information",
467
- inputSchema={
468
- "type": "object",
469
- "properties": {
470
- "info_type": {
471
- "type": "string",
472
- "enum": ["platform", "python_version", "cwd", "all"],
473
- "description": "Type of status information to retrieve (default: all)",
474
- "default": "all",
475
- }
476
- },
477
- },
478
- ),
479
- Tool(
480
- name="document_summarizer",
481
- description="Summarize documents or text content",
482
- inputSchema={
483
- "type": "object",
484
- "properties": {
485
- "content": {
486
- "type": "string",
487
- "description": "The text/document to summarize",
488
- },
489
- "style": {
490
- "type": "string",
491
- "enum": [
492
- "brief",
493
- "detailed",
494
- "bullet_points",
495
- "executive",
496
- ],
497
- "description": "Summary style",
498
- "default": "brief",
499
- },
500
- "max_length": {
501
- "type": "integer",
502
- "description": "Maximum length of summary in words",
503
- "default": 150,
504
- },
505
- },
506
- "required": ["content"],
507
- },
508
- ),
509
- ]
510
-
511
- # Add unified ticket tool if available
512
- if self.unified_ticket_tool:
513
- tool_def = self.unified_ticket_tool.get_definition()
514
- tools.append(
515
- Tool(
516
- name=tool_def.name,
517
- description=tool_def.description,
518
- inputSchema=tool_def.input_schema,
519
- )
520
- )
521
-
522
- self.logger.info(f"Listing {len(tools)} available tools")
523
- return tools
524
-
525
- @self.server.call_tool()
526
- async def handle_call_tool(
527
- name: str, arguments: Dict[str, Any]
528
- ) -> list[TextContent]:
529
- """Handle tool invocation."""
530
- self.logger.info(f"Invoking tool: {name} with arguments: {arguments}")
531
-
532
- try:
533
- if name == "status":
534
- info_type = arguments.get("info_type", "all")
535
-
536
- if info_type == "platform":
537
- import platform
538
-
539
- result = f"Platform: {platform.system()} {platform.release()}"
540
- elif info_type == "python_version":
541
- import sys
542
-
543
- result = f"Python: {sys.version}"
544
- elif info_type == "cwd":
545
-
546
- result = f"Working Directory: {Path.cwd()}"
547
- elif info_type == "all":
548
- import datetime
549
- import platform
550
- import sys
551
-
552
- result = (
553
- f"=== System Status ===\n"
554
- f"Platform: {platform.system()} {platform.release()}\n"
555
- f"Python: {sys.version.split()[0]}\n"
556
- f"Working Directory: {Path.cwd()}\n"
557
- f"Server: {self.name} v{self.version}\n"
558
- f"Timestamp: {datetime.datetime.now(timezone.utc).isoformat()}\n"
559
- f"Tools Available: status, document_summarizer{', ticket' if self.unified_ticket_tool else ''}"
560
- )
561
- else:
562
- result = f"Unknown info type: {info_type}"
563
-
564
- elif name == "document_summarizer":
565
- content = arguments.get("content", "")
566
- style = arguments.get("style", "brief")
567
- max_length = arguments.get("max_length", 150)
568
-
569
- result = await self._summarize_content(content, style, max_length)
570
-
571
- elif name == "ticket":
572
- # Initialize ticket tool lazily if needed
573
- if not self._ticket_tool_initialized and TICKET_TOOLS_AVAILABLE:
574
- await self._initialize_ticket_tool()
575
-
576
- if self.unified_ticket_tool:
577
- # Handle unified ticket tool invocations
578
- from claude_mpm.services.mcp_gateway.core.interfaces import (
579
- MCPToolInvocation,
580
- )
581
-
582
- invocation = MCPToolInvocation(
583
- tool_name=name,
584
- parameters=arguments,
585
- request_id=f"req_{name}_{id(arguments)}",
586
- )
587
-
588
- tool_result = await self.unified_ticket_tool.invoke(invocation)
589
-
590
- if tool_result.success:
591
- result = (
592
- tool_result.data
593
- if isinstance(tool_result.data, str)
594
- else str(tool_result.data)
595
- )
596
- else:
597
- result = f"Error: {tool_result.error}"
598
- else:
599
- result = "Ticket tool not available"
600
-
601
- else:
602
- result = f"Unknown tool: {name}"
603
-
604
- self.logger.info(f"Tool {name} completed successfully")
605
- return [TextContent(type="text", text=result)]
606
-
607
- except Exception as e:
608
- error_msg = f"Error executing tool {name}: {e!s}"
609
- self.logger.error(error_msg)
610
- return [TextContent(type="text", text=error_msg)]
611
-
612
- async def _initialize_ticket_tool(self):
613
- """
614
- Initialize the unified ticket tool asynchronously.
615
-
616
- This is called lazily when the tool is first needed,
617
- ensuring an event loop is available.
618
- """
619
- if self._ticket_tool_initialized or not TICKET_TOOLS_AVAILABLE:
620
- return
621
-
622
- try:
623
- self.logger.info("Initializing unified ticket tool...")
624
- # Ticket tools removed - using mcp-ticketer instead
625
- self.unified_ticket_tool = None
626
- # If the tool has an async init method, call it
627
- if hasattr(self.unified_ticket_tool, "initialize"):
628
- await self.unified_ticket_tool.initialize()
629
- self._ticket_tool_initialized = True
630
- self.logger.info("Unified ticket tool initialized successfully")
631
- except Exception as e:
632
- self.logger.warning(f"Failed to initialize unified ticket tool: {e}")
633
- self.unified_ticket_tool = None
634
- self._ticket_tool_initialized = True # Mark as attempted
635
-
636
- async def run(self):
637
- """
638
- Run the MCP server using stdio communication with backward compatibility.
639
-
640
- WHY: This is the main entry point that sets up stdio communication
641
- and runs the server until the connection is closed. The backward
642
- compatibility patches are applied during server initialization.
643
- """
644
- try:
645
- self.logger.info(f"Starting {self.name} v{self.version}")
646
-
647
- # Run the server with stdio transport
648
- async with stdio_server() as (read_stream, write_stream):
649
- self.logger.info("Stdio connection established")
650
-
651
- # Create initialization options
652
- init_options = InitializationOptions(
653
- server_name=self.name,
654
- server_version=self.version,
655
- capabilities=self.server.get_capabilities(
656
- notification_options=NotificationOptions(),
657
- experimental_capabilities={},
658
- ),
659
- )
660
-
661
- # Run the server (with patches already applied)
662
- await self.server.run(read_stream, write_stream, init_options)
663
-
664
- self.logger.info("Server shutting down normally")
665
-
666
- except Exception as e:
667
- self.logger.error(f"Server error: {e}")
668
- raise
669
-
670
-
671
- async def main():
672
- """
673
- Main entry point for the MCP stdio server.
674
-
675
- WHY: This function creates and runs the server instance.
676
- It's called when the script is executed directly.
677
- """
678
- # Configure logging to stderr so it doesn't interfere with stdio protocol
679
- logging.basicConfig(
680
- level=logging.INFO,
681
- format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
682
- stream=sys.stderr,
683
- force=True, # Force reconfiguration even if already configured
684
- )
685
-
686
- # Ensure all loggers output to stderr
687
- for logger_name in logging.Logger.manager.loggerDict:
688
- logger = logging.getLogger(logger_name)
689
- for handler in logger.handlers[:]:
690
- # Remove any handlers that might write to stdout
691
- if hasattr(handler, "stream") and handler.stream == sys.stdout:
692
- logger.removeHandler(handler)
693
-
694
- # Create and run server
695
- server = SimpleMCPServer()
696
- await server.run()
697
-
698
-
699
- def main_sync():
700
- """Synchronous entry point for use as a console script."""
701
- import os
702
-
703
- # Disable telemetry by default
704
- os.environ.setdefault("DISABLE_TELEMETRY", "1")
705
- asyncio.run(main())
706
-
707
-
708
- if __name__ == "__main__":
709
- import os
710
-
711
- # Disable telemetry by default
712
- os.environ.setdefault("DISABLE_TELEMETRY", "1")
713
- # Run the async main function
714
- main_sync()