claude-mpm 4.21.3__py3-none-any.whl → 5.1.9__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 (517) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +12 -0
  3. claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +3 -48
  4. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +1239 -674
  6. claude_mpm/agents/WORKFLOW.md +75 -2
  7. claude_mpm/agents/__init__.py +6 -0
  8. claude_mpm/agents/agent_loader.py +1 -4
  9. claude_mpm/agents/base_agent.json +6 -3
  10. claude_mpm/agents/base_agent_loader.py +10 -35
  11. claude_mpm/agents/frontmatter_validator.py +69 -1
  12. claude_mpm/agents/templates/circuit-breakers.md +1254 -0
  13. claude_mpm/agents/templates/context-management-examples.md +544 -0
  14. claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
  15. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  16. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  17. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  18. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  19. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  20. claude_mpm/cli/__init__.py +37 -2
  21. claude_mpm/cli/commands/__init__.py +2 -0
  22. claude_mpm/cli/commands/agent_source.py +774 -0
  23. claude_mpm/cli/commands/agent_state_manager.py +188 -30
  24. claude_mpm/cli/commands/agents.py +1128 -36
  25. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  26. claude_mpm/cli/commands/agents_discover.py +338 -0
  27. claude_mpm/cli/commands/aggregate.py +1 -1
  28. claude_mpm/cli/commands/analyze.py +3 -3
  29. claude_mpm/cli/commands/auto_configure.py +537 -239
  30. claude_mpm/cli/commands/cleanup.py +1 -1
  31. claude_mpm/cli/commands/config.py +7 -4
  32. claude_mpm/cli/commands/configure.py +935 -45
  33. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  34. claude_mpm/cli/commands/configure_navigation.py +63 -46
  35. claude_mpm/cli/commands/debug.py +12 -12
  36. claude_mpm/cli/commands/doctor.py +10 -2
  37. claude_mpm/cli/commands/hook_errors.py +277 -0
  38. claude_mpm/cli/commands/local_deploy.py +1 -4
  39. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  40. claude_mpm/cli/commands/mpm_init/core.py +50 -2
  41. claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
  42. claude_mpm/cli/commands/mpm_init/prompts.py +6 -6
  43. claude_mpm/cli/commands/postmortem.py +401 -0
  44. claude_mpm/cli/commands/run.py +125 -167
  45. claude_mpm/cli/commands/skill_source.py +694 -0
  46. claude_mpm/cli/commands/skills.py +757 -20
  47. claude_mpm/cli/executor.py +78 -3
  48. claude_mpm/cli/interactive/agent_wizard.py +1032 -47
  49. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  50. claude_mpm/cli/parsers/agents_parser.py +310 -4
  51. claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
  52. claude_mpm/cli/parsers/base_parser.py +53 -0
  53. claude_mpm/cli/parsers/config_parser.py +96 -43
  54. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  55. claude_mpm/cli/parsers/skills_parser.py +145 -0
  56. claude_mpm/cli/parsers/source_parser.py +138 -0
  57. claude_mpm/cli/startup.py +564 -108
  58. claude_mpm/cli/startup_display.py +480 -0
  59. claude_mpm/cli/utils.py +1 -1
  60. claude_mpm/cli_module/commands.py +1 -1
  61. claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
  62. claude_mpm/commands/mpm-agents-detect.md +9 -0
  63. claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
  64. claude_mpm/commands/mpm-agents-recommend.md +9 -0
  65. claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
  66. claude_mpm/commands/mpm-doctor.md +9 -0
  67. claude_mpm/commands/mpm-help.md +14 -2
  68. claude_mpm/commands/mpm-init.md +27 -2
  69. claude_mpm/commands/mpm-monitor.md +9 -0
  70. claude_mpm/commands/mpm-postmortem.md +123 -0
  71. claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
  72. claude_mpm/commands/mpm-status.md +9 -0
  73. claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
  74. claude_mpm/commands/mpm-ticket-view.md +552 -0
  75. claude_mpm/commands/mpm-version.md +9 -0
  76. claude_mpm/commands/mpm.md +10 -0
  77. claude_mpm/config/agent_presets.py +488 -0
  78. claude_mpm/config/agent_sources.py +325 -0
  79. claude_mpm/config/skill_presets.py +392 -0
  80. claude_mpm/config/skill_sources.py +590 -0
  81. claude_mpm/constants.py +13 -0
  82. claude_mpm/core/api_validator.py +1 -1
  83. claude_mpm/core/claude_runner.py +19 -35
  84. claude_mpm/core/config.py +24 -0
  85. claude_mpm/core/constants.py +1 -1
  86. claude_mpm/core/framework/__init__.py +3 -16
  87. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  88. claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
  89. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  90. claude_mpm/core/hook_error_memory.py +381 -0
  91. claude_mpm/core/hook_manager.py +41 -2
  92. claude_mpm/core/interactive_session.py +131 -10
  93. claude_mpm/core/logger.py +3 -1
  94. claude_mpm/core/oneshot_session.py +110 -8
  95. claude_mpm/core/output_style_manager.py +173 -43
  96. claude_mpm/core/protocols/__init__.py +23 -0
  97. claude_mpm/core/protocols/runner_protocol.py +103 -0
  98. claude_mpm/core/protocols/session_protocol.py +131 -0
  99. claude_mpm/core/shared/singleton_manager.py +11 -4
  100. claude_mpm/core/system_context.py +38 -0
  101. claude_mpm/core/unified_agent_registry.py +129 -1
  102. claude_mpm/core/unified_config.py +22 -0
  103. claude_mpm/dashboard/static/css/activity.css +69 -69
  104. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  105. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  106. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  107. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  108. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  109. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  110. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  111. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  112. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  113. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  114. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  115. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  116. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  117. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  118. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  119. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  120. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  121. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  122. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  123. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  124. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  125. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  126. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  127. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  128. claude_mpm/dashboard/templates/code_simple.html +23 -23
  129. claude_mpm/dashboard/templates/index.html +18 -18
  130. claude_mpm/experimental/cli_enhancements.py +1 -5
  131. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  132. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  133. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  134. claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
  135. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  136. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  137. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  138. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  139. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  140. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  141. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  142. claude_mpm/models/agent_definition.py +7 -0
  143. claude_mpm/models/git_repository.py +198 -0
  144. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  145. claude_mpm/scripts/start_activity_logging.py +3 -1
  146. claude_mpm/services/agents/agent_builder.py +45 -9
  147. claude_mpm/services/agents/agent_preset_service.py +238 -0
  148. claude_mpm/services/agents/agent_selection_service.py +484 -0
  149. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  150. claude_mpm/services/agents/cache_git_manager.py +621 -0
  151. claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
  152. claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
  153. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  154. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  155. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  156. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  157. claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
  158. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  159. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  160. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  161. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +225 -18
  162. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  163. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  164. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +557 -0
  165. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  166. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  167. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  168. claude_mpm/services/agents/git_source_manager.py +629 -0
  169. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  170. claude_mpm/services/agents/local_template_manager.py +50 -10
  171. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  172. claude_mpm/services/agents/sources/__init__.py +13 -0
  173. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  174. claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
  175. claude_mpm/services/agents/startup_sync.py +239 -0
  176. claude_mpm/services/agents/toolchain_detector.py +474 -0
  177. claude_mpm/services/analysis/__init__.py +25 -0
  178. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  179. claude_mpm/services/analysis/postmortem_service.py +765 -0
  180. claude_mpm/services/cli/session_pause_manager.py +1 -1
  181. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  182. claude_mpm/services/command_deployment_service.py +200 -6
  183. claude_mpm/services/core/base.py +7 -2
  184. claude_mpm/services/core/interfaces/__init__.py +1 -3
  185. claude_mpm/services/core/interfaces/health.py +1 -4
  186. claude_mpm/services/core/models/__init__.py +2 -11
  187. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  188. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  189. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  190. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  191. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  192. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  193. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  194. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  195. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  196. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  197. claude_mpm/services/event_bus/direct_relay.py +3 -3
  198. claude_mpm/services/event_bus/event_bus.py +36 -3
  199. claude_mpm/services/events/consumers/logging.py +1 -2
  200. claude_mpm/services/git/__init__.py +21 -0
  201. claude_mpm/services/git/git_operations_service.py +494 -0
  202. claude_mpm/services/github/__init__.py +21 -0
  203. claude_mpm/services/github/github_cli_service.py +397 -0
  204. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  205. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  206. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  207. claude_mpm/services/instructions/__init__.py +9 -0
  208. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  209. claude_mpm/services/local_ops/__init__.py +3 -13
  210. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  211. claude_mpm/services/local_ops/health_manager.py +1 -4
  212. claude_mpm/services/local_ops/process_manager.py +1 -1
  213. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  214. claude_mpm/services/mcp_config_manager.py +75 -145
  215. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  216. claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
  217. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
  218. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  219. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  220. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  221. claude_mpm/services/mcp_service_verifier.py +6 -3
  222. claude_mpm/services/memory/optimizer.py +1 -1
  223. claude_mpm/services/model/model_router.py +8 -9
  224. claude_mpm/services/monitor/daemon.py +29 -9
  225. claude_mpm/services/monitor/daemon_manager.py +96 -19
  226. claude_mpm/services/monitor/server.py +2 -2
  227. claude_mpm/services/native_agent_converter.py +356 -0
  228. claude_mpm/services/port_manager.py +1 -1
  229. claude_mpm/services/pr/__init__.py +14 -0
  230. claude_mpm/services/pr/pr_template_service.py +329 -0
  231. claude_mpm/services/project/documentation_manager.py +2 -1
  232. claude_mpm/services/project/project_organizer.py +4 -0
  233. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  234. claude_mpm/services/runner_configuration_service.py +17 -3
  235. claude_mpm/services/self_upgrade_service.py +165 -7
  236. claude_mpm/services/session_management_service.py +16 -4
  237. claude_mpm/services/skills/__init__.py +18 -0
  238. claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
  239. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  240. claude_mpm/services/skills_config.py +547 -0
  241. claude_mpm/services/skills_deployer.py +955 -0
  242. claude_mpm/services/socketio/handlers/connection.py +1 -1
  243. claude_mpm/services/socketio/handlers/git.py +2 -2
  244. claude_mpm/services/socketio/server/core.py +1 -4
  245. claude_mpm/services/socketio/server/main.py +1 -3
  246. claude_mpm/services/system_instructions_service.py +1 -3
  247. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  248. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  249. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  250. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  251. claude_mpm/services/unified/unified_deployment.py +1 -5
  252. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  253. claude_mpm/services/visualization/__init__.py +1 -5
  254. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  255. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  256. claude_mpm/skills/bundled/performance-profiling.md +6 -0
  257. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
  258. claude_mpm/skills/skills_registry.py +0 -1
  259. claude_mpm/templates/questions/__init__.py +38 -0
  260. claude_mpm/templates/questions/base.py +193 -0
  261. claude_mpm/templates/questions/pr_strategy.py +311 -0
  262. claude_mpm/templates/questions/project_init.py +385 -0
  263. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  264. claude_mpm/tools/__main__.py +8 -8
  265. claude_mpm/tools/code_tree_analyzer/analysis.py +1 -1
  266. claude_mpm/utils/agent_dependency_loader.py +80 -13
  267. claude_mpm/utils/agent_filters.py +288 -0
  268. claude_mpm/utils/dependency_cache.py +3 -1
  269. claude_mpm/utils/gitignore.py +244 -0
  270. claude_mpm/utils/log_cleanup.py +3 -3
  271. claude_mpm/utils/migration.py +372 -0
  272. claude_mpm/utils/progress.py +387 -0
  273. claude_mpm/utils/robust_installer.py +3 -5
  274. claude_mpm/utils/structured_questions.py +619 -0
  275. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/METADATA +496 -65
  276. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/RECORD +284 -443
  277. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  278. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  279. claude_mpm/agents/templates/agent-manager.json +0 -273
  280. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  281. claude_mpm/agents/templates/api_qa.json +0 -180
  282. claude_mpm/agents/templates/circuit_breakers.md +0 -638
  283. claude_mpm/agents/templates/clerk-ops.json +0 -235
  284. claude_mpm/agents/templates/code_analyzer.json +0 -101
  285. claude_mpm/agents/templates/content-agent.json +0 -358
  286. claude_mpm/agents/templates/dart_engineer.json +0 -307
  287. claude_mpm/agents/templates/data_engineer.json +0 -225
  288. claude_mpm/agents/templates/documentation.json +0 -211
  289. claude_mpm/agents/templates/engineer.json +0 -210
  290. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  291. claude_mpm/agents/templates/golang_engineer.json +0 -270
  292. claude_mpm/agents/templates/imagemagick.json +0 -264
  293. claude_mpm/agents/templates/java_engineer.json +0 -346
  294. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  295. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  296. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  297. claude_mpm/agents/templates/memory_manager.json +0 -158
  298. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  299. claude_mpm/agents/templates/ops.json +0 -185
  300. claude_mpm/agents/templates/php-engineer.json +0 -287
  301. claude_mpm/agents/templates/product_owner.json +0 -338
  302. claude_mpm/agents/templates/project_organizer.json +0 -140
  303. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  304. claude_mpm/agents/templates/python_engineer.json +0 -387
  305. claude_mpm/agents/templates/qa.json +0 -242
  306. claude_mpm/agents/templates/react_engineer.json +0 -238
  307. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  308. claude_mpm/agents/templates/research.json +0 -188
  309. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  310. claude_mpm/agents/templates/rust_engineer.json +0 -275
  311. claude_mpm/agents/templates/security.json +0 -202
  312. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  313. claude_mpm/agents/templates/ticketing.json +0 -177
  314. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  315. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  316. claude_mpm/agents/templates/version_control.json +0 -157
  317. claude_mpm/agents/templates/web_qa.json +0 -399
  318. claude_mpm/agents/templates/web_ui.json +0 -189
  319. claude_mpm/commands/mpm-tickets.md +0 -102
  320. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  321. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  322. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  323. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  324. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  325. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  326. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  327. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  328. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  329. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  330. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  331. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  332. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  333. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  334. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  335. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  336. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  337. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  338. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  339. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  340. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  341. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  342. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  343. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  344. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  345. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  346. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  347. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  348. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  349. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  350. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  351. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  352. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  353. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  354. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  355. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  356. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  357. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  358. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  359. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  360. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  361. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  362. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  363. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  364. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  365. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  366. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  367. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  368. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  369. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  370. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  371. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  372. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  373. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  374. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  375. claude_mpm/dashboard/static/built/react/events.js +0 -30
  376. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  377. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  378. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  379. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  380. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  381. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  382. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  383. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  384. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  385. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  386. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  387. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  388. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  389. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  390. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  391. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  392. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  393. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  394. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  395. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  396. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  397. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  398. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  399. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  400. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  401. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  402. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  403. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  404. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  405. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  406. claude_mpm/dashboard/static/events.html +0 -607
  407. claude_mpm/dashboard/static/index.html +0 -635
  408. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  409. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  410. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  411. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  412. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  413. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  414. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  415. claude_mpm/dashboard/static/legacy/files.html +0 -747
  416. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  417. claude_mpm/dashboard/static/monitors.html +0 -431
  418. claude_mpm/dashboard/static/production/events.html +0 -659
  419. claude_mpm/dashboard/static/production/main.html +0 -698
  420. claude_mpm/dashboard/static/production/monitors.html +0 -483
  421. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  422. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  423. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  424. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  425. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  426. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  427. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  428. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  429. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  430. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  431. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  432. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  433. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  434. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  435. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  436. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  437. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  438. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  439. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  440. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  441. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  442. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  443. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  444. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  445. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  446. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  447. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  448. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  449. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  450. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  451. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  452. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  453. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  454. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  455. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  456. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  457. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  458. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  459. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  460. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  461. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  462. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  463. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  464. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  465. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  466. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  467. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  468. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  469. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  470. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  471. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  472. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  473. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  474. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  475. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  476. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  477. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  478. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  479. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  480. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  481. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  482. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  483. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  484. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  485. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  486. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  487. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  488. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  489. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  490. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  491. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  492. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  493. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  494. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  495. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  496. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  497. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  498. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  499. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  500. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  501. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  502. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  503. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  504. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  505. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  506. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  507. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  508. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  509. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  510. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  511. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  512. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  513. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  514. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/WHEEL +0 -0
  515. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/entry_points.txt +0 -0
  516. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/licenses/LICENSE +0 -0
  517. {claude_mpm-4.21.3.dist-info → claude_mpm-5.1.9.dist-info}/top_level.txt +0 -0
@@ -24,50 +24,50 @@
24
24
  border-radius: 4px;
25
25
  margin-bottom: 20px;
26
26
  }
27
-
27
+
28
28
  /* Tree visualization styles */
29
29
  .tree-node {
30
30
  cursor: pointer;
31
31
  }
32
-
32
+
33
33
  .tree-node circle {
34
34
  fill: #fff;
35
35
  stroke: steelblue;
36
36
  stroke-width: 2px;
37
37
  transition: all 0.3s ease;
38
38
  }
39
-
39
+
40
40
  .tree-node:hover circle {
41
41
  fill: #e6f3ff;
42
42
  stroke-width: 3px;
43
43
  }
44
-
44
+
45
45
  .tree-node text {
46
46
  font: 12px sans-serif;
47
47
  pointer-events: none;
48
48
  }
49
-
49
+
50
50
  .tree-link {
51
51
  fill: none;
52
52
  stroke: #ccc;
53
53
  stroke-width: 2px;
54
54
  }
55
-
55
+
56
56
  .view-toggle button {
57
57
  transition: all 0.3s ease;
58
58
  }
59
-
59
+
60
60
  .view-toggle button:hover {
61
61
  transform: translateY(-1px);
62
62
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
63
63
  }
64
-
64
+
65
65
  .file-selector input:focus {
66
66
  outline: none;
67
67
  border-color: #007cba;
68
68
  box-shadow: 0 0 0 2px rgba(0, 124, 186, 0.2);
69
69
  }
70
-
70
+
71
71
  .tree-legend {
72
72
  position: absolute;
73
73
  top: 10px;
@@ -79,13 +79,13 @@
79
79
  font-size: 12px;
80
80
  z-index: 1000;
81
81
  }
82
-
82
+
83
83
  .tree-legend-item {
84
84
  margin: 2px 0;
85
85
  display: flex;
86
86
  align-items: center;
87
87
  }
88
-
88
+
89
89
  .tree-legend-color {
90
90
  width: 12px;
91
91
  height: 12px;
@@ -103,15 +103,15 @@
103
103
  <div>⏳ Page loaded...</div>
104
104
  </div>
105
105
  </div>
106
-
106
+
107
107
  <div id="code-container">
108
108
  <!-- SimpleCodeView will render here -->
109
109
  </div>
110
110
  </div>
111
-
111
+
112
112
  <script>
113
113
  console.log('[HTML] Page script starting');
114
-
114
+
115
115
  function addStatus(message) {
116
116
  const statusDiv = document.getElementById('status-messages');
117
117
  if (statusDiv) {
@@ -119,27 +119,27 @@
119
119
  }
120
120
  console.log('[HTML Status]', message);
121
121
  }
122
-
122
+
123
123
  addStatus('⏳ Loading code-simple.js...');
124
124
  </script>
125
-
125
+
126
126
  <!-- D3.js for tree visualization -->
127
- <script src="https://d3js.org/d3.v7.min.js"
127
+ <script src="https://d3js.org/d3.v7.min.js"
128
128
  onload="addStatus('✅ D3.js loaded successfully')"
129
129
  onerror="addStatus('❌ Failed to load D3.js')"></script>
130
-
130
+
131
131
  <!-- Socket.IO for real-time communication -->
132
- <script src="https://cdn.socket.io/4.7.2/socket.io.min.js"
132
+ <script src="https://cdn.socket.io/4.7.2/socket.io.min.js"
133
133
  onload="addStatus('✅ Socket.IO loaded successfully')"
134
134
  onerror="addStatus('❌ Failed to load Socket.IO')"></script>
135
-
136
- <script src="/static/js/components/code-simple.js"
135
+
136
+ <script src="/static/js/components/code-simple.js"
137
137
  onload="addStatus('✅ code-simple.js loaded successfully')"
138
138
  onerror="addStatus('❌ Failed to load code-simple.js')"></script>
139
-
139
+
140
140
  <script>
141
141
  addStatus('⏳ Waiting for initialization...');
142
-
142
+
143
143
  // Check initialization after a delay
144
144
  setTimeout(() => {
145
145
  if (window.simpleCodeView) {
@@ -15,10 +15,10 @@
15
15
 
16
16
  <!-- External Dependencies -->
17
17
  <script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>
18
-
18
+
19
19
  <!-- D3.js for Activity Tree Visualization -->
20
20
  <script src="https://d3js.org/d3.v7.min.js"></script>
21
-
21
+
22
22
  <!-- Font Awesome for icons -->
23
23
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
24
24
 
@@ -141,7 +141,7 @@
141
141
  <body>
142
142
  <!-- Connection Notifications Area -->
143
143
  <div id="connection-notifications" class="connection-notifications"></div>
144
-
144
+
145
145
  <div class="container">
146
146
  <!-- Header Section -->
147
147
  <div class="header">
@@ -435,19 +435,19 @@
435
435
  // Set up working directory environment variables
436
436
  // These will be used by the working-directory component
437
437
  // The server will inject these values through a separate API call
438
-
438
+
439
439
  // Get the current working directory from the server
440
440
  fetch('/api/working-directory')
441
441
  .then(response => response.json())
442
442
  .then(data => {
443
443
  window.processWorkingDirectory = data.working_directory || '/Users/masa/Projects/claude-mpm';
444
444
  window.homeDirectory = data.home_directory || '/Users/masa';
445
-
445
+
446
446
  // Store in session storage for persistence
447
447
  if (window.processWorkingDirectory && window.processWorkingDirectory !== '/') {
448
448
  sessionStorage.setItem('currentWorkingDirectory', window.processWorkingDirectory);
449
449
  }
450
-
450
+
451
451
  // Dispatch event to notify components that working directory is ready
452
452
  window.dispatchEvent(new CustomEvent('workingDirectoryInitialized', {
453
453
  detail: {
@@ -462,10 +462,10 @@
462
462
  window.processWorkingDirectory = '/Users/masa/Projects/claude-mpm';
463
463
  window.homeDirectory = '/Users/masa';
464
464
  });
465
-
465
+
466
466
  // Add timestamp-based cache busting and ensure proper loading order
467
467
  const timestamp = Date.now();
468
-
468
+
469
469
  // Load modules sequentially to ensure dashboard.js loads first
470
470
  const loadModule = (src) => {
471
471
  return new Promise((resolve, reject) => {
@@ -477,7 +477,7 @@
477
477
  document.body.appendChild(script);
478
478
  });
479
479
  };
480
-
480
+
481
481
  // Load shared services first, then components
482
482
  // Load services sequentially to ensure dependencies are available
483
483
  loadModule('/static/js/shared/tooltip-service.js')
@@ -540,21 +540,21 @@
540
540
  console.error('[CRITICAL] Error loading dashboard modules:', error);
541
541
  console.error('Stack trace:', error.stack);
542
542
  });
543
-
543
+
544
544
  // Give modules time to execute and initialize dashboard
545
545
  setTimeout(() => {
546
546
  console.log('Checking dashboard initialization...');
547
-
547
+
548
548
  if (window.dashboard) {
549
549
  console.log('Dashboard found, checking auto-connect status...');
550
-
550
+
551
551
  // Force auto-connect if not already connected
552
552
  if (window.dashboard.socketManager) {
553
553
  const socketManager = window.dashboard.socketManager;
554
-
554
+
555
555
  if (!socketManager.isConnected() && !socketManager.isConnecting()) {
556
556
  console.log('Dashboard loaded but not connected, forcing auto-connect...');
557
-
557
+
558
558
  // Try to trigger auto-connect manually
559
559
  const params = new URLSearchParams(window.location.search);
560
560
  socketManager.initializeFromURL(params);
@@ -566,23 +566,23 @@
566
566
  }
567
567
  } else {
568
568
  console.warn('Dashboard still not initialized after module loading');
569
-
569
+
570
570
  // Try to manually trigger initialization
571
571
  if (document.readyState === 'complete' || document.readyState === 'interactive') {
572
572
  console.log('Document ready, attempting to trigger dashboard initialization...');
573
573
  document.dispatchEvent(new Event('DOMContentLoaded'));
574
574
  }
575
575
  }
576
-
576
+
577
577
  // Debug: Test connection settings button
578
578
  const connectionToggleBtn = document.getElementById('connection-toggle-btn');
579
579
  if (connectionToggleBtn) {
580
580
  console.log('Connection toggle button found, testing functionality...');
581
-
581
+
582
582
  // Add a debug click handler to ensure the button works
583
583
  connectionToggleBtn.addEventListener('click', () => {
584
584
  console.log('Connection toggle button clicked (debug handler)');
585
-
585
+
586
586
  if (window.dashboard && window.dashboard.socketManager) {
587
587
  console.log('Calling socketManager.toggleConnectionControls()');
588
588
  window.dashboard.socketManager.toggleConnectionControls();
@@ -31,11 +31,7 @@ import click
31
31
 
32
32
  from claude_mpm.core.logging_utils import get_logger
33
33
  from claude_mpm.hooks.validation_hooks import ValidationHooks
34
- from claude_mpm.utils.error_handler import (
35
- ErrorContext,
36
- MPMError,
37
- handle_errors,
38
- )
34
+ from claude_mpm.utils.error_handler import ErrorContext, MPMError, handle_errors
39
35
  from claude_mpm.validation import AgentValidator, ValidationResult
40
36
 
41
37
  logger = get_logger(__name__)
@@ -393,7 +393,9 @@ class EventHandlers:
393
393
  "status": (
394
394
  "success"
395
395
  if exit_code == 0
396
- else "blocked" if exit_code == 2 else "error"
396
+ else "blocked"
397
+ if exit_code == 2
398
+ else "error"
397
399
  ),
398
400
  "duration_ms": duration,
399
401
  "result_summary": result_data,
@@ -311,11 +311,12 @@ class ClaudeHookHandler:
311
311
  )
312
312
 
313
313
  # Route event to appropriate handler
314
- self._route_event(event)
314
+ # Handlers can optionally return modified input for PreToolUse events
315
+ modified_input = self._route_event(event)
315
316
 
316
317
  # Always continue execution (only if not already sent)
317
318
  if not _continue_sent:
318
- self._continue_execution()
319
+ self._continue_execution(modified_input)
319
320
  _continue_sent = True
320
321
 
321
322
  except Exception:
@@ -376,7 +377,7 @@ class ClaudeHookHandler:
376
377
  print(f"Error reading hook event: {e}", file=sys.stderr)
377
378
  return None
378
379
 
379
- def _route_event(self, event: dict) -> None:
380
+ def _route_event(self, event: dict) -> Optional[dict]:
380
381
  """
381
382
  Route event to appropriate handler based on type.
382
383
 
@@ -385,6 +386,9 @@ class ClaudeHookHandler:
385
386
 
386
387
  Args:
387
388
  event: Hook event dictionary
389
+
390
+ Returns:
391
+ Modified input for PreToolUse events (v2.0.30+), None otherwise
388
392
  """
389
393
  # Try multiple field names for compatibility
390
394
  hook_type = (
@@ -416,23 +420,36 @@ class ClaudeHookHandler:
416
420
  handler = event_handlers.get(hook_type)
417
421
  if handler:
418
422
  try:
419
- handler(event)
423
+ # Handlers can optionally return modified input
424
+ result = handler(event)
425
+ # Only PreToolUse handlers should return modified input
426
+ if hook_type == "PreToolUse" and result is not None:
427
+ return result
420
428
  except Exception as e:
421
429
  if DEBUG:
422
430
  print(f"Error handling {hook_type}: {e}", file=sys.stderr)
423
431
 
432
+ return None
433
+
424
434
  def handle_subagent_stop(self, event: dict):
425
435
  """Delegate subagent stop processing to the specialized processor."""
426
436
  self.subagent_processor.process_subagent_stop(event)
427
437
 
428
- def _continue_execution(self) -> None:
438
+ def _continue_execution(self, modified_input: Optional[dict] = None) -> None:
429
439
  """
430
- Send continue action to Claude.
440
+ Send continue action to Claude with optional input modification.
431
441
 
432
442
  WHY: Centralized response ensures consistent format
433
443
  and makes it easier to add response modifications.
444
+
445
+ Args:
446
+ modified_input: Modified tool parameters for PreToolUse hooks (v2.0.30+)
434
447
  """
435
- print(json.dumps({"action": "continue"}))
448
+ if modified_input is not None:
449
+ # Claude Code v2.0.30+ supports modifying PreToolUse tool inputs
450
+ print(json.dumps({"action": "continue", "tool_input": modified_input}))
451
+ else:
452
+ print(json.dumps({"action": "continue"}))
436
453
 
437
454
  # Delegation methods for compatibility with event_handlers
438
455
  def _track_delegation(self, session_id: str, agent_type: str, request_data=None):
@@ -192,6 +192,8 @@ main "$@"
192
192
 
193
193
  # Minimum Claude Code version required for hook monitoring
194
194
  MIN_CLAUDE_VERSION = "1.0.92"
195
+ # Minimum version for PreToolUse input modification support
196
+ MIN_PRETOOL_MODIFY_VERSION = "2.0.30"
195
197
 
196
198
  def __init__(self):
197
199
  """Initialize the hook installer."""
@@ -292,6 +294,42 @@ main "$@"
292
294
 
293
295
  return (True, f"Claude Code {version} is compatible with hook monitoring.")
294
296
 
297
+ def supports_pretool_modify(self) -> bool:
298
+ """
299
+ Check if the installed Claude Code version supports PreToolUse input modification.
300
+
301
+ PreToolUse input modification was added in Claude Code v2.0.30.
302
+
303
+ Returns:
304
+ True if version supports input modification, False otherwise
305
+ """
306
+ version = self.get_claude_version()
307
+
308
+ if version is None:
309
+ return False
310
+
311
+ def parse_version(v: str) -> List[int]:
312
+ """Parse semantic version string to list of integers."""
313
+ try:
314
+ return [int(x) for x in v.split(".")]
315
+ except (ValueError, AttributeError):
316
+ return [0]
317
+
318
+ current = parse_version(version)
319
+ required = parse_version(self.MIN_PRETOOL_MODIFY_VERSION)
320
+
321
+ # Compare versions
322
+ for i in range(max(len(current), len(required))):
323
+ curr_part = current[i] if i < len(current) else 0
324
+ req_part = required[i] if i < len(required) else 0
325
+
326
+ if curr_part < req_part:
327
+ return False
328
+ if curr_part > req_part:
329
+ return True
330
+
331
+ return True
332
+
295
333
  def get_hook_script_path(self) -> Path:
296
334
  """Get the path to the hook handler script based on installation method.
297
335
 
@@ -677,6 +715,7 @@ main "$@"
677
715
  # Check version compatibility
678
716
  claude_version = self.get_claude_version()
679
717
  is_compatible, version_message = self.is_version_compatible()
718
+ pretool_modify_supported = self.supports_pretool_modify()
680
719
 
681
720
  is_valid, issues = self.verify_hooks()
682
721
 
@@ -701,6 +740,12 @@ main "$@"
701
740
  "version_compatible": is_compatible,
702
741
  "version_message": version_message,
703
742
  "deployment_type": "deployment-root", # New field to indicate new architecture
743
+ "pretool_modify_supported": pretool_modify_supported, # v2.0.30+ feature
744
+ "pretool_modify_message": (
745
+ f"PreToolUse input modification supported (v{claude_version})"
746
+ if pretool_modify_supported
747
+ else f"PreToolUse input modification requires Claude Code {self.MIN_PRETOOL_MODIFY_VERSION}+ (current: {claude_version or 'unknown'})"
748
+ ),
704
749
  }
705
750
 
706
751
  # Check Claude settings for hook configuration
@@ -5,8 +5,19 @@ This module provides utilities for integrating with the memory system,
5
5
  including pre and post delegation hooks.
6
6
  """
7
7
 
8
- import os
8
+ import logging
9
9
  import sys
10
+
11
+ # Reconfigure logging to INFO level BEFORE kuzu-memory imports
12
+ # This overrides kuzu-memory's WARNING-level basicConfig (fixes 1M-445)
13
+ logging.basicConfig(
14
+ level=logging.INFO,
15
+ format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
16
+ force=True, # Python 3.8+ - reconfigures root logger
17
+ stream=sys.stderr,
18
+ )
19
+
20
+ import os
10
21
  from datetime import datetime, timezone
11
22
  from typing import Optional
12
23
 
@@ -35,14 +35,8 @@ Usage:
35
35
  hook_service.register_hook(get_learning_extraction_hook())
36
36
  """
37
37
 
38
- from .failure_detection_hook import (
39
- FailureDetectionHook,
40
- get_failure_detection_hook,
41
- )
42
- from .fix_detection_hook import (
43
- FixDetectionHook,
44
- get_fix_detection_hook,
45
- )
38
+ from .failure_detection_hook import FailureDetectionHook, get_failure_detection_hook
39
+ from .fix_detection_hook import FixDetectionHook, get_fix_detection_hook
46
40
  from .learning_extraction_hook import (
47
41
  LearningExtractionHook,
48
42
  get_learning_extraction_hook,
@@ -21,12 +21,7 @@ Integration points:
21
21
  import logging
22
22
  from typing import Any, Dict
23
23
 
24
- from claude_mpm.hooks.base_hook import (
25
- BaseHook,
26
- HookContext,
27
- HookResult,
28
- HookType,
29
- )
24
+ from claude_mpm.hooks.base_hook import BaseHook, HookContext, HookResult, HookType
30
25
  from claude_mpm.services.memory.failure_tracker import get_failure_tracker
31
26
 
32
27
  logger = logging.getLogger(__name__)
@@ -23,12 +23,7 @@ Integration points:
23
23
  import logging
24
24
  from typing import Any, Dict
25
25
 
26
- from claude_mpm.hooks.base_hook import (
27
- BaseHook,
28
- HookContext,
29
- HookResult,
30
- HookType,
31
- )
26
+ from claude_mpm.hooks.base_hook import BaseHook, HookContext, HookResult, HookType
32
27
  from claude_mpm.services.memory.failure_tracker import get_failure_tracker
33
28
 
34
29
  logger = logging.getLogger(__name__)
@@ -23,12 +23,7 @@ Integration points:
23
23
  import logging
24
24
  from typing import Any
25
25
 
26
- from claude_mpm.hooks.base_hook import (
27
- BaseHook,
28
- HookContext,
29
- HookResult,
30
- HookType,
31
- )
26
+ from claude_mpm.hooks.base_hook import BaseHook, HookContext, HookResult, HookType
32
27
  from claude_mpm.services.memory.failure_tracker import get_failure_tracker
33
28
 
34
29
  logger = logging.getLogger(__name__)
@@ -20,11 +20,7 @@ DESIGN DECISIONS:
20
20
  import logging
21
21
  from typing import Any, Optional
22
22
 
23
- from claude_mpm.hooks.base_hook import (
24
- HookContext,
25
- HookResult,
26
- PostDelegationHook,
27
- )
23
+ from claude_mpm.hooks.base_hook import HookContext, HookResult, PostDelegationHook
28
24
  from claude_mpm.hooks.kuzu_memory_hook import get_kuzu_memory_hook
29
25
 
30
26
  logger = logging.getLogger(__name__)
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Simple PreToolUse Hook Example for Claude Code v2.0.30+
4
+
5
+ This is a minimal example showing the basic structure of a PreToolUse hook
6
+ that can modify tool inputs.
7
+
8
+ To use this hook:
9
+ 1. Copy this file to ~/.claude-mpm/hooks/
10
+ 2. Make it executable: chmod +x ~/.claude-mpm/hooks/pre_tool_use_simple.py
11
+ 3. Add to ~/.claude/settings.json:
12
+
13
+ {
14
+ "hooks": {
15
+ "PreToolUse": [
16
+ {
17
+ "matcher": "*",
18
+ "hooks": [
19
+ {
20
+ "type": "command",
21
+ "command": "/Users/YOUR_USERNAME/.claude-mpm/hooks/pre_tool_use_simple.py",
22
+ "modifyInput": true
23
+ }
24
+ ]
25
+ }
26
+ ]
27
+ }
28
+ }
29
+ """
30
+
31
+ import json
32
+ import sys
33
+
34
+
35
+ def main():
36
+ """Process PreToolUse event and optionally modify input."""
37
+ try:
38
+ # Read event from stdin
39
+ event_data = sys.stdin.read()
40
+ if not event_data.strip():
41
+ print(json.dumps({"action": "continue"}))
42
+ return
43
+
44
+ event = json.loads(event_data)
45
+ tool_name = event.get("tool_name", "")
46
+ tool_input = event.get("tool_input", {})
47
+
48
+ # Example: Add line numbers to all Grep operations
49
+ if tool_name == "Grep" and "-n" not in tool_input:
50
+ modified_input = tool_input.copy()
51
+ modified_input["-n"] = True
52
+ print(json.dumps({"action": "continue", "tool_input": modified_input}))
53
+ return
54
+
55
+ # Example: Block operations on .env files
56
+ if tool_name in ["Write", "Edit", "Read"]:
57
+ file_path = tool_input.get("file_path", "")
58
+ if ".env" in file_path:
59
+ print(
60
+ json.dumps(
61
+ {
62
+ "action": "block",
63
+ "message": "Access to .env file blocked for security",
64
+ }
65
+ )
66
+ )
67
+ return
68
+
69
+ # Default: continue without modification
70
+ print(json.dumps({"action": "continue"}))
71
+
72
+ except Exception:
73
+ # Always continue on error to avoid blocking Claude
74
+ print(json.dumps({"action": "continue"}))
75
+
76
+
77
+ if __name__ == "__main__":
78
+ main()