claude-mpm 4.21.0__py3-none-any.whl → 5.0.2__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.
Files changed (497) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +12 -0
  3. claude_mpm/agents/OUTPUT_STYLE.md +3 -48
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +632 -334
  5. claude_mpm/agents/WORKFLOW.md +75 -2
  6. claude_mpm/agents/__init__.py +6 -0
  7. claude_mpm/agents/agent_loader.py +1 -4
  8. claude_mpm/agents/base_agent.json +6 -3
  9. claude_mpm/agents/frontmatter_validator.py +1 -1
  10. claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +370 -3
  11. claude_mpm/agents/templates/context-management-examples.md +544 -0
  12. claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
  13. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  14. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  15. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  16. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  17. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  18. claude_mpm/cli/__init__.py +38 -2
  19. claude_mpm/cli/commands/agent_source.py +774 -0
  20. claude_mpm/cli/commands/agent_state_manager.py +125 -20
  21. claude_mpm/cli/commands/agents.py +684 -13
  22. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  23. claude_mpm/cli/commands/agents_discover.py +338 -0
  24. claude_mpm/cli/commands/aggregate.py +1 -1
  25. claude_mpm/cli/commands/analyze.py +3 -3
  26. claude_mpm/cli/commands/auto_configure.py +2 -6
  27. claude_mpm/cli/commands/cleanup.py +1 -1
  28. claude_mpm/cli/commands/config.py +7 -4
  29. claude_mpm/cli/commands/configure.py +478 -44
  30. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  31. claude_mpm/cli/commands/configure_navigation.py +63 -46
  32. claude_mpm/cli/commands/debug.py +12 -12
  33. claude_mpm/cli/commands/doctor.py +10 -2
  34. claude_mpm/cli/commands/hook_errors.py +277 -0
  35. claude_mpm/cli/commands/local_deploy.py +1 -4
  36. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  37. claude_mpm/cli/commands/mpm_init/core.py +50 -2
  38. claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
  39. claude_mpm/cli/commands/mpm_init/prompts.py +6 -6
  40. claude_mpm/cli/commands/run.py +124 -128
  41. claude_mpm/cli/commands/skill_source.py +694 -0
  42. claude_mpm/cli/commands/skills.py +435 -1
  43. claude_mpm/cli/executor.py +78 -3
  44. claude_mpm/cli/interactive/agent_wizard.py +919 -41
  45. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  46. claude_mpm/cli/parsers/agents_parser.py +173 -4
  47. claude_mpm/cli/parsers/base_parser.py +49 -0
  48. claude_mpm/cli/parsers/config_parser.py +96 -43
  49. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  50. claude_mpm/cli/parsers/skills_parser.py +138 -0
  51. claude_mpm/cli/parsers/source_parser.py +138 -0
  52. claude_mpm/cli/startup.py +499 -84
  53. claude_mpm/cli/startup_display.py +480 -0
  54. claude_mpm/cli/utils.py +1 -1
  55. claude_mpm/cli_module/commands.py +1 -1
  56. claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
  57. claude_mpm/commands/mpm-agents-detect.md +9 -0
  58. claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
  59. claude_mpm/commands/mpm-agents-recommend.md +9 -0
  60. claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
  61. claude_mpm/commands/mpm-doctor.md +9 -0
  62. claude_mpm/commands/mpm-help.md +14 -2
  63. claude_mpm/commands/mpm-init.md +27 -2
  64. claude_mpm/commands/mpm-monitor.md +9 -0
  65. claude_mpm/commands/mpm-session-resume.md +381 -0
  66. claude_mpm/commands/mpm-status.md +9 -0
  67. claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
  68. claude_mpm/commands/mpm-ticket-view.md +552 -0
  69. claude_mpm/commands/mpm-version.md +9 -0
  70. claude_mpm/commands/mpm.md +11 -0
  71. claude_mpm/config/agent_presets.py +258 -0
  72. claude_mpm/config/agent_sources.py +325 -0
  73. claude_mpm/config/skill_sources.py +590 -0
  74. claude_mpm/constants.py +12 -0
  75. claude_mpm/core/api_validator.py +1 -1
  76. claude_mpm/core/claude_runner.py +17 -10
  77. claude_mpm/core/config.py +24 -0
  78. claude_mpm/core/constants.py +1 -1
  79. claude_mpm/core/framework/__init__.py +3 -16
  80. claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
  81. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  82. claude_mpm/core/hook_error_memory.py +381 -0
  83. claude_mpm/core/hook_manager.py +41 -2
  84. claude_mpm/core/interactive_session.py +112 -5
  85. claude_mpm/core/logger.py +3 -1
  86. claude_mpm/core/oneshot_session.py +94 -4
  87. claude_mpm/dashboard/static/css/activity.css +69 -69
  88. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  89. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  90. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  91. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  92. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  93. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  94. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  95. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  96. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  97. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  98. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  99. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  100. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  101. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  102. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  103. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  104. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  105. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  106. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  107. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  108. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  109. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  110. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  111. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  112. claude_mpm/dashboard/templates/code_simple.html +23 -23
  113. claude_mpm/dashboard/templates/index.html +18 -18
  114. claude_mpm/experimental/cli_enhancements.py +1 -5
  115. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  116. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  117. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  118. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  119. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  120. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  121. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  122. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  123. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  124. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  125. claude_mpm/models/git_repository.py +198 -0
  126. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  127. claude_mpm/scripts/start_activity_logging.py +3 -1
  128. claude_mpm/services/agents/agent_builder.py +45 -9
  129. claude_mpm/services/agents/agent_preset_service.py +238 -0
  130. claude_mpm/services/agents/agent_selection_service.py +484 -0
  131. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  132. claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
  133. claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
  134. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  135. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  136. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  137. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  138. claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
  139. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  140. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  141. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  142. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
  143. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  144. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  145. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
  146. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  147. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  148. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  149. claude_mpm/services/agents/git_source_manager.py +629 -0
  150. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  151. claude_mpm/services/agents/local_template_manager.py +50 -10
  152. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  153. claude_mpm/services/agents/sources/__init__.py +13 -0
  154. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  155. claude_mpm/services/agents/sources/git_source_sync_service.py +1055 -0
  156. claude_mpm/services/agents/startup_sync.py +239 -0
  157. claude_mpm/services/agents/toolchain_detector.py +474 -0
  158. claude_mpm/services/cli/session_pause_manager.py +1 -1
  159. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  160. claude_mpm/services/command_deployment_service.py +92 -1
  161. claude_mpm/services/core/base.py +26 -11
  162. claude_mpm/services/core/interfaces/__init__.py +1 -3
  163. claude_mpm/services/core/interfaces/health.py +1 -4
  164. claude_mpm/services/core/models/__init__.py +2 -11
  165. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  166. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  167. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  168. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  169. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  170. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  171. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  172. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  173. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  174. claude_mpm/services/event_bus/direct_relay.py +3 -3
  175. claude_mpm/services/event_bus/event_bus.py +36 -3
  176. claude_mpm/services/event_bus/relay.py +23 -7
  177. claude_mpm/services/events/consumers/logging.py +1 -2
  178. claude_mpm/services/git/__init__.py +21 -0
  179. claude_mpm/services/git/git_operations_service.py +494 -0
  180. claude_mpm/services/github/__init__.py +21 -0
  181. claude_mpm/services/github/github_cli_service.py +397 -0
  182. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  183. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  184. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  185. claude_mpm/services/instructions/__init__.py +9 -0
  186. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  187. claude_mpm/services/local_ops/__init__.py +3 -13
  188. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  189. claude_mpm/services/local_ops/health_manager.py +1 -4
  190. claude_mpm/services/local_ops/process_manager.py +1 -1
  191. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  192. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  193. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
  194. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  195. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  196. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  197. claude_mpm/services/memory/failure_tracker.py +19 -4
  198. claude_mpm/services/memory/optimizer.py +1 -1
  199. claude_mpm/services/model/model_router.py +8 -9
  200. claude_mpm/services/monitor/daemon.py +1 -1
  201. claude_mpm/services/monitor/server.py +2 -2
  202. claude_mpm/services/native_agent_converter.py +356 -0
  203. claude_mpm/services/port_manager.py +1 -1
  204. claude_mpm/services/pr/__init__.py +14 -0
  205. claude_mpm/services/pr/pr_template_service.py +329 -0
  206. claude_mpm/services/project/documentation_manager.py +2 -1
  207. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  208. claude_mpm/services/runner_configuration_service.py +1 -0
  209. claude_mpm/services/self_upgrade_service.py +165 -7
  210. claude_mpm/services/skills/__init__.py +18 -0
  211. claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
  212. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  213. claude_mpm/services/skills_config.py +547 -0
  214. claude_mpm/services/skills_deployer.py +955 -0
  215. claude_mpm/services/socketio/handlers/connection.py +1 -1
  216. claude_mpm/services/socketio/handlers/git.py +2 -2
  217. claude_mpm/services/socketio/server/core.py +1 -4
  218. claude_mpm/services/socketio/server/main.py +1 -3
  219. claude_mpm/services/system_instructions_service.py +1 -3
  220. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  221. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  222. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  223. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  224. claude_mpm/services/unified/unified_deployment.py +1 -5
  225. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  226. claude_mpm/services/visualization/__init__.py +1 -5
  227. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  228. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  229. claude_mpm/skills/bundled/performance-profiling.md +6 -0
  230. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
  231. claude_mpm/skills/skills_registry.py +0 -1
  232. claude_mpm/templates/questions/__init__.py +38 -0
  233. claude_mpm/templates/questions/base.py +193 -0
  234. claude_mpm/templates/questions/pr_strategy.py +311 -0
  235. claude_mpm/templates/questions/project_init.py +385 -0
  236. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  237. claude_mpm/tools/__main__.py +8 -8
  238. claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
  239. claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
  240. claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
  241. claude_mpm/tools/code_tree_analyzer/core.py +380 -0
  242. claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
  243. claude_mpm/tools/code_tree_analyzer/events.py +168 -0
  244. claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
  245. claude_mpm/tools/code_tree_analyzer/models.py +39 -0
  246. claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
  247. claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
  248. claude_mpm/utils/agent_dependency_loader.py +80 -13
  249. claude_mpm/utils/dependency_cache.py +3 -1
  250. claude_mpm/utils/gitignore.py +241 -0
  251. claude_mpm/utils/log_cleanup.py +3 -3
  252. claude_mpm/utils/progress.py +383 -0
  253. claude_mpm/utils/robust_installer.py +3 -5
  254. claude_mpm/utils/structured_questions.py +619 -0
  255. {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/METADATA +429 -59
  256. {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/RECORD +264 -427
  257. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  258. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  259. claude_mpm/agents/templates/agent-manager.json +0 -273
  260. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  261. claude_mpm/agents/templates/api_qa.json +0 -180
  262. claude_mpm/agents/templates/clerk-ops.json +0 -235
  263. claude_mpm/agents/templates/code_analyzer.json +0 -101
  264. claude_mpm/agents/templates/content-agent.json +0 -358
  265. claude_mpm/agents/templates/dart_engineer.json +0 -307
  266. claude_mpm/agents/templates/data_engineer.json +0 -225
  267. claude_mpm/agents/templates/documentation.json +0 -211
  268. claude_mpm/agents/templates/engineer.json +0 -210
  269. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  270. claude_mpm/agents/templates/golang_engineer.json +0 -270
  271. claude_mpm/agents/templates/imagemagick.json +0 -264
  272. claude_mpm/agents/templates/java_engineer.json +0 -346
  273. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  274. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  275. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  276. claude_mpm/agents/templates/memory_manager.json +0 -158
  277. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  278. claude_mpm/agents/templates/ops.json +0 -185
  279. claude_mpm/agents/templates/php-engineer.json +0 -287
  280. claude_mpm/agents/templates/product_owner.json +0 -338
  281. claude_mpm/agents/templates/project_organizer.json +0 -140
  282. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  283. claude_mpm/agents/templates/python_engineer.json +0 -387
  284. claude_mpm/agents/templates/qa.json +0 -242
  285. claude_mpm/agents/templates/react_engineer.json +0 -238
  286. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  287. claude_mpm/agents/templates/research.json +0 -188
  288. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  289. claude_mpm/agents/templates/rust_engineer.json +0 -275
  290. claude_mpm/agents/templates/security.json +0 -202
  291. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  292. claude_mpm/agents/templates/ticketing.json +0 -177
  293. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  294. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  295. claude_mpm/agents/templates/version_control.json +0 -157
  296. claude_mpm/agents/templates/web_qa.json +0 -399
  297. claude_mpm/agents/templates/web_ui.json +0 -189
  298. claude_mpm/commands/mpm-tickets.md +0 -102
  299. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  300. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  301. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  302. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  303. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  304. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  305. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  306. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  307. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  308. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  309. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  310. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  311. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  312. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  313. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  314. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  315. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  316. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  317. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  318. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  319. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  320. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  321. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  322. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  323. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  324. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  325. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  326. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  327. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  328. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  329. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  330. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  331. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  332. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  333. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  334. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  335. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  336. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  337. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  338. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  339. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  340. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  341. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  342. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  343. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  344. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  345. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  346. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  347. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  348. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  349. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  350. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  351. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  352. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  353. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  354. claude_mpm/dashboard/static/built/react/events.js +0 -30
  355. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  356. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  357. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  358. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  359. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  360. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  361. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  362. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  363. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  364. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  365. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  366. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  367. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  368. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  369. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  370. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  371. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  372. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  373. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  374. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  375. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  376. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  377. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  378. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  379. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  380. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  381. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  382. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  383. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  384. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  385. claude_mpm/dashboard/static/events.html +0 -607
  386. claude_mpm/dashboard/static/index.html +0 -635
  387. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  388. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  389. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  390. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  391. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  392. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  393. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  394. claude_mpm/dashboard/static/legacy/files.html +0 -747
  395. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  396. claude_mpm/dashboard/static/monitors.html +0 -431
  397. claude_mpm/dashboard/static/production/events.html +0 -659
  398. claude_mpm/dashboard/static/production/main.html +0 -698
  399. claude_mpm/dashboard/static/production/monitors.html +0 -483
  400. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  401. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  402. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  403. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  404. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  405. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  406. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  407. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  408. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  409. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  410. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  411. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  412. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  413. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  414. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  415. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  416. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  417. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  418. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  419. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  420. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  421. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  422. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  423. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  424. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  425. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  426. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  427. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  428. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  429. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  430. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  431. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  432. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  433. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  434. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  435. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  436. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  437. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  438. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  439. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  440. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  441. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  442. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  443. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  444. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  445. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  446. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  447. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  448. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  449. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  450. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  451. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  452. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  453. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  454. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  455. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  456. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  457. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  458. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  459. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  460. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  461. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  462. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  463. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  464. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  465. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  466. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  467. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  468. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  469. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  470. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  471. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  472. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  473. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  474. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  475. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  476. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  477. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  478. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  479. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  480. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  481. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  482. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  483. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  484. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  485. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  486. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  487. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  488. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  489. claude_mpm/tools/code_tree_analyzer.py +0 -1825
  490. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  491. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  492. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  493. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  494. {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/WHEEL +0 -0
  495. {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/entry_points.txt +0 -0
  496. {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/licenses/LICENSE +0 -0
  497. {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/top_level.txt +0 -0
@@ -177,7 +177,7 @@ class WorkingDirectoryManager {
177
177
  console.log('[WORKING-DIR-DEBUG] setWorkingDirectory called with:', this.repr(dir));
178
178
 
179
179
  this.currentWorkingDir = dir;
180
-
180
+
181
181
  // Store in session storage for persistence during the session
182
182
  if (dir && this.validateDirectoryPath(dir)) {
183
183
  sessionStorage.setItem('currentWorkingDirectory', dir);
@@ -316,13 +316,13 @@ class WorkingDirectoryManager {
316
316
  */
317
317
  getDefaultWorkingDir() {
318
318
  console.log('[WORKING-DIR-DEBUG] getDefaultWorkingDir called');
319
-
319
+
320
320
  // Try to get from the current working directory if set
321
321
  if (this.currentWorkingDir && this.validateDirectoryPath(this.currentWorkingDir)) {
322
322
  console.log('[WORKING-DIR-DEBUG] Using current working directory:', this.currentWorkingDir);
323
323
  return this.currentWorkingDir;
324
324
  }
325
-
325
+
326
326
  // Try to get from header display
327
327
  const headerWorkingDir = document.querySelector('.working-dir-text');
328
328
  if (headerWorkingDir?.textContent?.trim()) {
@@ -367,11 +367,11 @@ class WorkingDirectoryManager {
367
367
  const eventsWithDir = window.socketClient.events
368
368
  .filter(e => e.data && (e.data.working_directory || e.data.cwd || e.data.working_dir))
369
369
  .reverse();
370
-
370
+
371
371
  if (eventsWithDir.length > 0) {
372
372
  const recentEvent = eventsWithDir[0];
373
- const dir = recentEvent.data.working_directory ||
374
- recentEvent.data.cwd ||
373
+ const dir = recentEvent.data.working_directory ||
374
+ recentEvent.data.cwd ||
375
375
  recentEvent.data.working_dir;
376
376
  console.log('[WORKING-DIR-DEBUG] Using working directory from recent event:', dir);
377
377
  return dir;
@@ -393,7 +393,7 @@ class WorkingDirectoryManager {
393
393
  console.log('[WORKING-DIR-DEBUG] Using session storage working directory:', this.repr(sessionWorkingDir));
394
394
  return sessionWorkingDir;
395
395
  }
396
-
396
+
397
397
  // Try to get the current working directory from environment/process
398
398
  // This should be the directory where claude-mpm was started from
399
399
  const processWorkingDir = window.processWorkingDirectory || process?.cwd?.() || null;
@@ -401,7 +401,7 @@ class WorkingDirectoryManager {
401
401
  console.log('[WORKING-DIR-DEBUG] Using process working directory:', this.repr(processWorkingDir));
402
402
  return processWorkingDir;
403
403
  }
404
-
404
+
405
405
  // Final fallback - use current working directory if available, otherwise home directory
406
406
  // Never default to root "/" as it's not a useful default for code viewing
407
407
  const homeDir = window.homeDirectory || process?.env?.HOME || process?.env?.USERPROFILE || null;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Enhanced Connection Manager for Dashboard
3
- *
3
+ *
4
4
  * Provides robust connection management with:
5
5
  * - Persistent client ID across reconnections
6
6
  * - Event sequence tracking and replay
@@ -29,11 +29,11 @@ class EnhancedConnectionManager {
29
29
  this.lastPongTime = null;
30
30
  this.missedHeartbeats = 0;
31
31
  this.maxMissedHeartbeats = 3;
32
-
32
+
33
33
  // Event buffering for offline mode
34
34
  this.eventBuffer = [];
35
35
  this.maxEventBuffer = 100;
36
-
36
+
37
37
  // Connection metrics
38
38
  this.metrics = {
39
39
  connectTime: null,
@@ -44,16 +44,16 @@ class EnhancedConnectionManager {
44
44
  eventsAcked: 0,
45
45
  lastActivity: null
46
46
  };
47
-
47
+
48
48
  // Status update callbacks
49
49
  this.statusCallbacks = new Set();
50
50
  this.qualityCallbacks = new Set();
51
-
51
+
52
52
  // Initialize
53
53
  this.setupEventHandlers();
54
54
  this.startHealthMonitoring();
55
55
  }
56
-
56
+
57
57
  /**
58
58
  * Load or generate client ID for persistent identification
59
59
  */
@@ -65,7 +65,7 @@ class EnhancedConnectionManager {
65
65
  }
66
66
  return clientId;
67
67
  }
68
-
68
+
69
69
  /**
70
70
  * Load last received event sequence for replay
71
71
  */
@@ -73,7 +73,7 @@ class EnhancedConnectionManager {
73
73
  const sequence = localStorage.getItem('claude_mpm_last_sequence');
74
74
  return sequence ? parseInt(sequence, 10) : 0;
75
75
  }
76
-
76
+
77
77
  /**
78
78
  * Save last received event sequence
79
79
  */
@@ -81,16 +81,16 @@ class EnhancedConnectionManager {
81
81
  this.lastSequence = sequence;
82
82
  localStorage.setItem('claude_mpm_last_sequence', sequence.toString());
83
83
  }
84
-
84
+
85
85
  /**
86
86
  * Connect with enhanced options and authentication
87
87
  */
88
88
  connect(port = '8765') {
89
89
  const url = `http://localhost:${port}`;
90
-
90
+
91
91
  console.log(`[ConnectionManager] Connecting to ${url} with client ID: ${this.clientId}`);
92
92
  this.updateConnectionState('connecting');
93
-
93
+
94
94
  // Create socket with enhanced options
95
95
  this.socket = io(url, {
96
96
  auth: {
@@ -106,11 +106,11 @@ class EnhancedConnectionManager {
106
106
  pingInterval: 25000,
107
107
  pingTimeout: 20000
108
108
  });
109
-
109
+
110
110
  this.setupSocketHandlers();
111
111
  this.socketClient.socket = this.socket;
112
112
  }
113
-
113
+
114
114
  /**
115
115
  * Calculate exponential backoff delay for reconnection
116
116
  */
@@ -121,13 +121,13 @@ class EnhancedConnectionManager {
121
121
  );
122
122
  return delay + Math.random() * 1000; // Add jitter
123
123
  }
124
-
124
+
125
125
  /**
126
126
  * Setup socket event handlers
127
127
  */
128
128
  setupSocketHandlers() {
129
129
  if (!this.socket) return;
130
-
130
+
131
131
  // Connection established
132
132
  this.socket.on('connection_established', (data) => {
133
133
  console.log('[ConnectionManager] Connection established:', data);
@@ -138,60 +138,60 @@ class EnhancedConnectionManager {
138
138
  this.missedHeartbeats = 0;
139
139
  this.updateConnectionState('connected');
140
140
  this.startHeartbeat();
141
-
141
+
142
142
  // Flush buffered events if any
143
143
  this.flushEventBuffer();
144
144
  });
145
-
145
+
146
146
  // Event replay after reconnection
147
147
  this.socket.on('event_replay', (data) => {
148
148
  console.log(`[ConnectionManager] Replaying ${data.count} events from sequence ${data.from_sequence}`);
149
-
149
+
150
150
  if (data.events && data.events.length > 0) {
151
151
  data.events.forEach(event => {
152
152
  // Update sequence
153
153
  if (event.sequence) {
154
154
  this.saveLastSequence(event.sequence);
155
155
  }
156
-
156
+
157
157
  // Process replayed event
158
158
  this.socketClient.handleEvent('claude_event', event);
159
159
  });
160
-
160
+
161
161
  this.showNotification(`Replayed ${data.count} missed events`, 'info');
162
162
  }
163
163
  });
164
-
164
+
165
165
  // Normal event with sequence tracking
166
166
  this.socket.on('claude_event', (event) => {
167
167
  if (event.sequence) {
168
168
  this.saveLastSequence(event.sequence);
169
-
169
+
170
170
  // Send acknowledgment
171
171
  this.socket.emit('acknowledge_event', {
172
172
  sequence: event.sequence
173
173
  });
174
-
174
+
175
175
  this.metrics.eventsAcked++;
176
176
  }
177
-
177
+
178
178
  this.metrics.totalEvents++;
179
179
  this.metrics.lastActivity = Date.now();
180
180
  });
181
-
181
+
182
182
  // Heartbeat response
183
183
  this.socket.on('heartbeat_response', (data) => {
184
184
  this.missedHeartbeats = 0;
185
185
  this.updateConnectionQuality(1.0);
186
186
  });
187
-
187
+
188
188
  // Pong response
189
189
  this.socket.on('pong', (data) => {
190
190
  this.lastPongTime = Date.now();
191
191
  const latency = this.lastPongTime - this.lastPingTime;
192
192
  this.updateLatency(latency);
193
193
  });
194
-
194
+
195
195
  // Connection stats response
196
196
  this.socket.on('connection_stats', (data) => {
197
197
  console.log('[ConnectionManager] Connection stats:', data);
@@ -199,7 +199,7 @@ class EnhancedConnectionManager {
199
199
  this.updateConnectionQuality(data.connection.quality);
200
200
  }
201
201
  });
202
-
202
+
203
203
  // Standard Socket.IO events
204
204
  this.socket.on('connect', () => {
205
205
  console.log('[ConnectionManager] Socket connected');
@@ -209,13 +209,13 @@ class EnhancedConnectionManager {
209
209
  this.metrics.totalReconnections++;
210
210
  }
211
211
  });
212
-
212
+
213
213
  this.socket.on('disconnect', (reason) => {
214
214
  console.log('[ConnectionManager] Socket disconnected:', reason);
215
215
  this.metrics.disconnectTime = Date.now();
216
216
  this.updateConnectionState('disconnected');
217
217
  this.stopHeartbeat();
218
-
218
+
219
219
  // Handle different disconnect reasons
220
220
  if (reason === 'io server disconnect') {
221
221
  // Server initiated disconnect
@@ -225,11 +225,11 @@ class EnhancedConnectionManager {
225
225
  this.showNotification('Connection timeout - attempting to reconnect', 'warning');
226
226
  }
227
227
  });
228
-
228
+
229
229
  this.socket.on('connect_error', (error) => {
230
230
  console.error('[ConnectionManager] Connection error:', error.message);
231
231
  this.reconnectAttempts++;
232
-
232
+
233
233
  if (this.reconnectAttempts >= this.maxReconnectAttempts) {
234
234
  this.updateConnectionState('failed');
235
235
  this.showNotification('Failed to connect after multiple attempts', 'error');
@@ -241,34 +241,34 @@ class EnhancedConnectionManager {
241
241
  );
242
242
  }
243
243
  });
244
-
244
+
245
245
  this.socket.on('reconnect', (attemptNumber) => {
246
246
  console.log(`[ConnectionManager] Reconnected after ${attemptNumber} attempts`);
247
247
  this.showNotification('Reconnected successfully', 'success');
248
-
248
+
249
249
  // Request event replay
250
250
  this.socket.emit('request_replay', {
251
251
  last_sequence: this.lastSequence
252
252
  });
253
253
  });
254
-
254
+
255
255
  this.socket.on('reconnect_attempt', (attemptNumber) => {
256
256
  console.log(`[ConnectionManager] Reconnection attempt ${attemptNumber}`);
257
257
  this.updateConnectionState('reconnecting');
258
258
  });
259
259
  }
260
-
260
+
261
261
  /**
262
262
  * Start heartbeat monitoring
263
263
  */
264
264
  startHeartbeat() {
265
265
  this.stopHeartbeat();
266
-
266
+
267
267
  this.heartbeatTimer = setInterval(() => {
268
268
  if (this.socket && this.socket.connected) {
269
269
  this.socket.emit('heartbeat');
270
270
  this.missedHeartbeats++;
271
-
271
+
272
272
  if (this.missedHeartbeats >= this.maxMissedHeartbeats) {
273
273
  console.warn('[ConnectionManager] Too many missed heartbeats, connection may be stale');
274
274
  this.updateConnectionQuality(0.3);
@@ -276,7 +276,7 @@ class EnhancedConnectionManager {
276
276
  }
277
277
  }
278
278
  }, this.heartbeatInterval);
279
-
279
+
280
280
  // Also start ping monitoring for latency
281
281
  this.pingTimer = setInterval(() => {
282
282
  if (this.socket && this.socket.connected) {
@@ -285,7 +285,7 @@ class EnhancedConnectionManager {
285
285
  }
286
286
  }, 10000); // Every 10 seconds
287
287
  }
288
-
288
+
289
289
  /**
290
290
  * Stop heartbeat monitoring
291
291
  */
@@ -294,13 +294,13 @@ class EnhancedConnectionManager {
294
294
  clearInterval(this.heartbeatTimer);
295
295
  this.heartbeatTimer = null;
296
296
  }
297
-
297
+
298
298
  if (this.pingTimer) {
299
299
  clearInterval(this.pingTimer);
300
300
  this.pingTimer = null;
301
301
  }
302
302
  }
303
-
303
+
304
304
  /**
305
305
  * Start health monitoring
306
306
  */
@@ -311,7 +311,7 @@ class EnhancedConnectionManager {
311
311
  this.socket.emit('get_connection_stats');
312
312
  }
313
313
  }, 60000); // Every minute
314
-
314
+
315
315
  // Activity timeout detection
316
316
  setInterval(() => {
317
317
  if (this.connectionState === 'connected' && this.metrics.lastActivity) {
@@ -323,20 +323,20 @@ class EnhancedConnectionManager {
323
323
  }
324
324
  }, 30000); // Check every 30 seconds
325
325
  }
326
-
326
+
327
327
  /**
328
328
  * Update connection state and notify listeners
329
329
  */
330
330
  updateConnectionState(state) {
331
331
  const previousState = this.connectionState;
332
332
  this.connectionState = state;
333
-
333
+
334
334
  if (previousState !== state) {
335
335
  console.log(`[ConnectionManager] State change: ${previousState} -> ${state}`);
336
-
336
+
337
337
  // Update UI
338
338
  this.updateConnectionUI(state);
339
-
339
+
340
340
  // Notify callbacks
341
341
  this.statusCallbacks.forEach(callback => {
342
342
  try {
@@ -347,13 +347,13 @@ class EnhancedConnectionManager {
347
347
  });
348
348
  }
349
349
  }
350
-
350
+
351
351
  /**
352
352
  * Update connection quality score
353
353
  */
354
354
  updateConnectionQuality(quality) {
355
355
  this.connectionQuality = Math.max(0, Math.min(1, quality));
356
-
356
+
357
357
  // Notify callbacks
358
358
  this.qualityCallbacks.forEach(callback => {
359
359
  try {
@@ -362,11 +362,11 @@ class EnhancedConnectionManager {
362
362
  console.error('Error in quality callback:', error);
363
363
  }
364
364
  });
365
-
365
+
366
366
  // Update UI indicator
367
367
  this.updateQualityUI(this.connectionQuality);
368
368
  }
369
-
369
+
370
370
  /**
371
371
  * Update latency display
372
372
  */
@@ -374,7 +374,7 @@ class EnhancedConnectionManager {
374
374
  const latencyElement = document.getElementById('connection-latency');
375
375
  if (latencyElement) {
376
376
  latencyElement.textContent = `${latency}ms`;
377
-
377
+
378
378
  // Color code based on latency
379
379
  if (latency < 50) {
380
380
  latencyElement.className = 'latency-good';
@@ -385,14 +385,14 @@ class EnhancedConnectionManager {
385
385
  }
386
386
  }
387
387
  }
388
-
388
+
389
389
  /**
390
390
  * Update connection UI based on state
391
391
  */
392
392
  updateConnectionUI(state) {
393
393
  const statusElement = document.getElementById('connection-status');
394
394
  if (!statusElement) return;
395
-
395
+
396
396
  const stateConfig = {
397
397
  'connecting': { text: 'Connecting...', class: 'status-connecting', icon: '⟳' },
398
398
  'connected': { text: 'Connected', class: 'status-connected', icon: '●' },
@@ -401,23 +401,23 @@ class EnhancedConnectionManager {
401
401
  'stale': { text: 'Connection Stale', class: 'status-stale', icon: '⚠' },
402
402
  'failed': { text: 'Connection Failed', class: 'status-failed', icon: '✕' }
403
403
  };
404
-
404
+
405
405
  const config = stateConfig[state] || stateConfig['disconnected'];
406
406
  statusElement.innerHTML = `<span>${config.icon}</span> ${config.text}`;
407
407
  statusElement.className = `status-badge ${config.class}`;
408
408
  }
409
-
409
+
410
410
  /**
411
411
  * Update connection quality UI
412
412
  */
413
413
  updateQualityUI(quality) {
414
414
  const qualityElement = document.getElementById('connection-quality');
415
415
  if (!qualityElement) return;
416
-
416
+
417
417
  const percentage = Math.round(quality * 100);
418
418
  let qualityClass = 'quality-good';
419
419
  let qualityText = 'Excellent';
420
-
420
+
421
421
  if (quality < 0.3) {
422
422
  qualityClass = 'quality-poor';
423
423
  qualityText = 'Poor';
@@ -425,7 +425,7 @@ class EnhancedConnectionManager {
425
425
  qualityClass = 'quality-moderate';
426
426
  qualityText = 'Fair';
427
427
  }
428
-
428
+
429
429
  qualityElement.innerHTML = `
430
430
  <div class="quality-bar ${qualityClass}">
431
431
  <div class="quality-fill" style="width: ${percentage}%"></div>
@@ -433,7 +433,7 @@ class EnhancedConnectionManager {
433
433
  <span class="quality-text">${qualityText} (${percentage}%)</span>
434
434
  `;
435
435
  }
436
-
436
+
437
437
  /**
438
438
  * Buffer events when disconnected
439
439
  */
@@ -441,68 +441,68 @@ class EnhancedConnectionManager {
441
441
  if (this.eventBuffer.length >= this.maxEventBuffer) {
442
442
  this.eventBuffer.shift(); // Remove oldest
443
443
  }
444
-
444
+
445
445
  this.eventBuffer.push({
446
446
  ...event,
447
447
  buffered_at: Date.now()
448
448
  });
449
-
449
+
450
450
  // Save to localStorage for persistence
451
451
  localStorage.setItem('claude_mpm_event_buffer', JSON.stringify(this.eventBuffer));
452
452
  }
453
-
453
+
454
454
  /**
455
455
  * Flush buffered events after reconnection
456
456
  */
457
457
  flushEventBuffer() {
458
458
  if (this.eventBuffer.length === 0) return;
459
-
459
+
460
460
  console.log(`[ConnectionManager] Flushing ${this.eventBuffer.length} buffered events`);
461
-
461
+
462
462
  // Process buffered events
463
463
  this.eventBuffer.forEach(event => {
464
464
  this.socketClient.handleEvent('claude_event', event);
465
465
  });
466
-
466
+
467
467
  // Clear buffer
468
468
  this.eventBuffer = [];
469
469
  localStorage.removeItem('claude_mpm_event_buffer');
470
470
  }
471
-
471
+
472
472
  /**
473
473
  * Show notification to user
474
474
  */
475
475
  showNotification(message, type = 'info') {
476
476
  const notificationArea = document.getElementById('connection-notifications');
477
477
  if (!notificationArea) return;
478
-
478
+
479
479
  const notification = document.createElement('div');
480
480
  notification.className = `notification notification-${type}`;
481
481
  notification.textContent = message;
482
-
482
+
483
483
  notificationArea.appendChild(notification);
484
-
484
+
485
485
  // Auto-remove after 5 seconds
486
486
  setTimeout(() => {
487
487
  notification.style.opacity = '0';
488
488
  setTimeout(() => notification.remove(), 300);
489
489
  }, 5000);
490
490
  }
491
-
491
+
492
492
  /**
493
493
  * Register status change callback
494
494
  */
495
495
  onStatusChange(callback) {
496
496
  this.statusCallbacks.add(callback);
497
497
  }
498
-
498
+
499
499
  /**
500
500
  * Register quality change callback
501
501
  */
502
502
  onQualityChange(callback) {
503
503
  this.qualityCallbacks.add(callback);
504
504
  }
505
-
505
+
506
506
  /**
507
507
  * Get connection metrics
508
508
  */
@@ -516,18 +516,18 @@ class EnhancedConnectionManager {
516
516
  bufferedEvents: this.eventBuffer.length
517
517
  };
518
518
  }
519
-
519
+
520
520
  /**
521
521
  * Disconnect and cleanup
522
522
  */
523
523
  disconnect() {
524
524
  this.stopHeartbeat();
525
-
525
+
526
526
  if (this.socket) {
527
527
  this.socket.disconnect();
528
528
  this.socket = null;
529
529
  }
530
-
530
+
531
531
  this.updateConnectionState('disconnected');
532
532
  }
533
533
  }