claude-mpm 4.20.3__py3-none-any.whl → 5.1.8__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 (520) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +35 -6
  3. claude_mpm/agents/OUTPUT_STYLE.md +3 -48
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +1241 -667
  5. claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
  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 +1 -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 +959 -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 +924 -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/__init__.py +73 -0
  41. claude_mpm/cli/commands/mpm_init/core.py +573 -0
  42. claude_mpm/cli/commands/mpm_init/display.py +341 -0
  43. claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
  44. claude_mpm/cli/commands/mpm_init/modes.py +397 -0
  45. claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
  46. claude_mpm/cli/commands/mpm_init_cli.py +396 -0
  47. claude_mpm/cli/commands/mpm_init_handler.py +67 -1
  48. claude_mpm/cli/commands/postmortem.py +401 -0
  49. claude_mpm/cli/commands/run.py +125 -167
  50. claude_mpm/cli/commands/skill_source.py +694 -0
  51. claude_mpm/cli/commands/skills.py +835 -44
  52. claude_mpm/cli/executor.py +78 -3
  53. claude_mpm/cli/interactive/agent_wizard.py +1032 -47
  54. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  55. claude_mpm/cli/parsers/agents_parser.py +256 -4
  56. claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
  57. claude_mpm/cli/parsers/base_parser.py +53 -0
  58. claude_mpm/cli/parsers/config_parser.py +96 -43
  59. claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
  60. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  61. claude_mpm/cli/parsers/skills_parser.py +145 -0
  62. claude_mpm/cli/parsers/source_parser.py +138 -0
  63. claude_mpm/cli/startup.py +564 -108
  64. claude_mpm/cli/startup_display.py +480 -0
  65. claude_mpm/cli/utils.py +1 -1
  66. claude_mpm/cli_module/commands.py +1 -1
  67. claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
  68. claude_mpm/commands/mpm-agents-detect.md +9 -0
  69. claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
  70. claude_mpm/commands/mpm-agents-recommend.md +9 -0
  71. claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
  72. claude_mpm/commands/mpm-doctor.md +9 -0
  73. claude_mpm/commands/mpm-help.md +17 -2
  74. claude_mpm/commands/mpm-init.md +28 -3
  75. claude_mpm/commands/mpm-monitor.md +9 -0
  76. claude_mpm/commands/mpm-postmortem.md +123 -0
  77. claude_mpm/commands/mpm-session-resume.md +381 -0
  78. claude_mpm/commands/mpm-status.md +9 -0
  79. claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
  80. claude_mpm/commands/mpm-ticket-view.md +552 -0
  81. claude_mpm/commands/mpm-version.md +9 -0
  82. claude_mpm/commands/mpm.md +11 -0
  83. claude_mpm/config/agent_presets.py +488 -0
  84. claude_mpm/config/agent_sources.py +325 -0
  85. claude_mpm/config/skill_presets.py +392 -0
  86. claude_mpm/config/skill_sources.py +590 -0
  87. claude_mpm/constants.py +13 -0
  88. claude_mpm/core/api_validator.py +1 -1
  89. claude_mpm/core/claude_runner.py +19 -35
  90. claude_mpm/core/config.py +24 -0
  91. claude_mpm/core/constants.py +1 -1
  92. claude_mpm/core/framework/__init__.py +3 -16
  93. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  94. claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
  95. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  96. claude_mpm/core/hook_error_memory.py +381 -0
  97. claude_mpm/core/hook_manager.py +41 -2
  98. claude_mpm/core/interactive_session.py +131 -10
  99. claude_mpm/core/interfaces.py +56 -1
  100. claude_mpm/core/logger.py +3 -1
  101. claude_mpm/core/oneshot_session.py +110 -8
  102. claude_mpm/core/protocols/__init__.py +23 -0
  103. claude_mpm/core/protocols/runner_protocol.py +103 -0
  104. claude_mpm/core/protocols/session_protocol.py +131 -0
  105. claude_mpm/core/shared/singleton_manager.py +11 -4
  106. claude_mpm/core/system_context.py +38 -0
  107. claude_mpm/core/unified_config.py +22 -0
  108. claude_mpm/dashboard/static/css/activity.css +69 -69
  109. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  110. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  111. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  112. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  113. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  114. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  115. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  116. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  117. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  118. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  119. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  120. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  121. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  122. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  123. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  124. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  125. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  126. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  127. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  128. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  129. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  130. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  131. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  132. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  133. claude_mpm/dashboard/templates/code_simple.html +23 -23
  134. claude_mpm/dashboard/templates/index.html +18 -18
  135. claude_mpm/experimental/cli_enhancements.py +1 -5
  136. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  137. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
  138. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
  139. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
  140. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
  141. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
  142. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  143. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  144. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  145. claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
  146. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
  147. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
  148. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
  149. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
  150. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
  151. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  152. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  153. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  154. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  155. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  156. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  157. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  158. claude_mpm/models/git_repository.py +198 -0
  159. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  160. claude_mpm/scripts/start_activity_logging.py +3 -1
  161. claude_mpm/services/agents/agent_builder.py +45 -9
  162. claude_mpm/services/agents/agent_preset_service.py +238 -0
  163. claude_mpm/services/agents/agent_selection_service.py +484 -0
  164. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  165. claude_mpm/services/agents/cache_git_manager.py +621 -0
  166. claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
  167. claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
  168. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  169. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  170. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  171. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  172. claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
  173. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  174. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  175. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  176. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
  177. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  178. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  179. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
  180. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  181. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  182. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  183. claude_mpm/services/agents/git_source_manager.py +629 -0
  184. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  185. claude_mpm/services/agents/local_template_manager.py +50 -10
  186. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  187. claude_mpm/services/agents/sources/__init__.py +13 -0
  188. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  189. claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
  190. claude_mpm/services/agents/startup_sync.py +239 -0
  191. claude_mpm/services/agents/toolchain_detector.py +474 -0
  192. claude_mpm/services/analysis/__init__.py +25 -0
  193. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  194. claude_mpm/services/analysis/postmortem_service.py +765 -0
  195. claude_mpm/services/cli/session_pause_manager.py +504 -0
  196. claude_mpm/services/cli/session_resume_helper.py +36 -16
  197. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  198. claude_mpm/services/command_deployment_service.py +200 -6
  199. claude_mpm/services/core/base.py +31 -11
  200. claude_mpm/services/core/interfaces/__init__.py +1 -3
  201. claude_mpm/services/core/interfaces/health.py +1 -4
  202. claude_mpm/services/core/interfaces.py +56 -1
  203. claude_mpm/services/core/models/__init__.py +2 -11
  204. claude_mpm/services/core/models/agent_config.py +3 -0
  205. claude_mpm/services/core/models/process.py +4 -0
  206. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  207. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  208. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  209. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  210. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  211. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  212. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  213. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  214. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  215. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  216. claude_mpm/services/diagnostics/models.py +21 -0
  217. claude_mpm/services/event_bus/direct_relay.py +3 -3
  218. claude_mpm/services/event_bus/event_bus.py +36 -3
  219. claude_mpm/services/event_bus/relay.py +23 -7
  220. claude_mpm/services/events/consumers/logging.py +1 -2
  221. claude_mpm/services/git/__init__.py +21 -0
  222. claude_mpm/services/git/git_operations_service.py +494 -0
  223. claude_mpm/services/github/__init__.py +21 -0
  224. claude_mpm/services/github/github_cli_service.py +397 -0
  225. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  226. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  227. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  228. claude_mpm/services/instructions/__init__.py +9 -0
  229. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  230. claude_mpm/services/local_ops/__init__.py +5 -13
  231. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  232. claude_mpm/services/local_ops/health_manager.py +1 -4
  233. claude_mpm/services/local_ops/process_manager.py +1 -1
  234. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  235. claude_mpm/services/mcp_config_manager.py +75 -145
  236. claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
  237. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  238. claude_mpm/services/mcp_gateway/core/process_pool.py +41 -26
  239. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
  240. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  241. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  242. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
  243. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  244. claude_mpm/services/mcp_service_verifier.py +6 -3
  245. claude_mpm/services/memory/failure_tracker.py +19 -4
  246. claude_mpm/services/memory/optimizer.py +1 -1
  247. claude_mpm/services/model/model_router.py +8 -9
  248. claude_mpm/services/monitor/daemon.py +29 -9
  249. claude_mpm/services/monitor/daemon_manager.py +96 -19
  250. claude_mpm/services/monitor/server.py +2 -2
  251. claude_mpm/services/native_agent_converter.py +356 -0
  252. claude_mpm/services/port_manager.py +1 -1
  253. claude_mpm/services/pr/__init__.py +14 -0
  254. claude_mpm/services/pr/pr_template_service.py +329 -0
  255. claude_mpm/services/project/documentation_manager.py +2 -1
  256. claude_mpm/services/project/project_organizer.py +4 -0
  257. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  258. claude_mpm/services/runner_configuration_service.py +17 -3
  259. claude_mpm/services/self_upgrade_service.py +165 -7
  260. claude_mpm/services/session_management_service.py +16 -4
  261. claude_mpm/services/skills/__init__.py +18 -0
  262. claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
  263. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  264. claude_mpm/services/skills_config.py +547 -0
  265. claude_mpm/services/skills_deployer.py +955 -0
  266. claude_mpm/services/socketio/handlers/connection.py +1 -1
  267. claude_mpm/services/socketio/handlers/git.py +2 -2
  268. claude_mpm/services/socketio/server/core.py +1 -4
  269. claude_mpm/services/socketio/server/main.py +1 -3
  270. claude_mpm/services/system_instructions_service.py +1 -3
  271. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  272. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  273. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  274. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  275. claude_mpm/services/unified/unified_deployment.py +1 -5
  276. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  277. claude_mpm/services/visualization/__init__.py +1 -5
  278. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  279. claude_mpm/skills/__init__.py +3 -3
  280. claude_mpm/skills/agent_skills_injector.py +42 -49
  281. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  282. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
  283. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
  284. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +13 -12
  285. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
  286. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
  287. claude_mpm/skills/bundled/performance-profiling.md +6 -0
  288. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
  289. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
  290. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
  291. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +37 -15
  292. claude_mpm/skills/skills_registry.py +44 -48
  293. claude_mpm/skills/skills_service.py +117 -108
  294. claude_mpm/templates/questions/__init__.py +38 -0
  295. claude_mpm/templates/questions/base.py +193 -0
  296. claude_mpm/templates/questions/pr_strategy.py +311 -0
  297. claude_mpm/templates/questions/project_init.py +385 -0
  298. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  299. claude_mpm/tools/__main__.py +8 -8
  300. claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
  301. claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
  302. claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
  303. claude_mpm/tools/code_tree_analyzer/core.py +380 -0
  304. claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
  305. claude_mpm/tools/code_tree_analyzer/events.py +168 -0
  306. claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
  307. claude_mpm/tools/code_tree_analyzer/models.py +39 -0
  308. claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
  309. claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
  310. claude_mpm/utils/agent_dependency_loader.py +80 -13
  311. claude_mpm/utils/agent_filters.py +288 -0
  312. claude_mpm/utils/dependency_cache.py +3 -1
  313. claude_mpm/utils/gitignore.py +244 -0
  314. claude_mpm/utils/log_cleanup.py +3 -3
  315. claude_mpm/utils/migration.py +372 -0
  316. claude_mpm/utils/progress.py +387 -0
  317. claude_mpm/utils/robust_installer.py +3 -5
  318. claude_mpm/utils/structured_questions.py +619 -0
  319. {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +496 -65
  320. {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +328 -416
  321. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  322. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  323. claude_mpm/agents/templates/agent-manager.json +0 -273
  324. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  325. claude_mpm/agents/templates/api_qa.json +0 -180
  326. claude_mpm/agents/templates/circuit_breakers.md +0 -638
  327. claude_mpm/agents/templates/clerk-ops.json +0 -235
  328. claude_mpm/agents/templates/code_analyzer.json +0 -101
  329. claude_mpm/agents/templates/content-agent.json +0 -358
  330. claude_mpm/agents/templates/dart_engineer.json +0 -307
  331. claude_mpm/agents/templates/data_engineer.json +0 -225
  332. claude_mpm/agents/templates/documentation.json +0 -211
  333. claude_mpm/agents/templates/engineer.json +0 -210
  334. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  335. claude_mpm/agents/templates/golang_engineer.json +0 -270
  336. claude_mpm/agents/templates/imagemagick.json +0 -264
  337. claude_mpm/agents/templates/java_engineer.json +0 -346
  338. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  339. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  340. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  341. claude_mpm/agents/templates/memory_manager.json +0 -158
  342. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  343. claude_mpm/agents/templates/ops.json +0 -185
  344. claude_mpm/agents/templates/php-engineer.json +0 -281
  345. claude_mpm/agents/templates/product_owner.json +0 -338
  346. claude_mpm/agents/templates/project_organizer.json +0 -140
  347. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  348. claude_mpm/agents/templates/python_engineer.json +0 -387
  349. claude_mpm/agents/templates/qa.json +0 -242
  350. claude_mpm/agents/templates/react_engineer.json +0 -238
  351. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  352. claude_mpm/agents/templates/research.json +0 -188
  353. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  354. claude_mpm/agents/templates/rust_engineer.json +0 -275
  355. claude_mpm/agents/templates/security.json +0 -202
  356. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  357. claude_mpm/agents/templates/ticketing.json +0 -177
  358. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  359. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  360. claude_mpm/agents/templates/version_control.json +0 -157
  361. claude_mpm/agents/templates/web_qa.json +0 -399
  362. claude_mpm/agents/templates/web_ui.json +0 -189
  363. claude_mpm/cli/commands/mpm_init.py +0 -2093
  364. claude_mpm/commands/mpm-tickets.md +0 -102
  365. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  366. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  367. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  368. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  369. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  370. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  371. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  372. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  373. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  374. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  375. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  376. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  377. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  378. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  379. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  380. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  381. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  382. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  383. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  384. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  385. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  386. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  387. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  388. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  389. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  390. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  391. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  392. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  393. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  394. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  395. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  396. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  397. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  398. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  399. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  400. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  401. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  402. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  403. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  404. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  405. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  406. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  407. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  408. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  409. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  410. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  411. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  412. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  413. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  414. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  415. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  416. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  417. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  418. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  419. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  420. claude_mpm/dashboard/static/built/react/events.js +0 -30
  421. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  422. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  423. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  424. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  425. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  426. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  427. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  428. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  429. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  430. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  431. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  432. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  433. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  434. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  435. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  436. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  437. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  438. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  439. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  440. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  441. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  442. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  443. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  444. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  445. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  446. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  447. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  448. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  449. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  450. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  451. claude_mpm/dashboard/static/events.html +0 -607
  452. claude_mpm/dashboard/static/index.html +0 -635
  453. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  454. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  455. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  456. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  457. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  458. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  459. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  460. claude_mpm/dashboard/static/legacy/files.html +0 -747
  461. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  462. claude_mpm/dashboard/static/monitors.html +0 -431
  463. claude_mpm/dashboard/static/production/events.html +0 -659
  464. claude_mpm/dashboard/static/production/main.html +0 -698
  465. claude_mpm/dashboard/static/production/monitors.html +0 -483
  466. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  467. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  468. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  469. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  470. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  471. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -75
  472. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -184
  473. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -107
  474. claude_mpm/skills/bundled/collaboration/requesting-code-review/code-reviewer.md +0 -146
  475. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -118
  476. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -177
  477. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  478. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  479. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  480. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  481. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  482. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  483. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  484. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  485. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  486. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  487. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -175
  488. claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
  489. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -314
  490. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -227
  491. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -74
  492. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -32
  493. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  494. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  495. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  496. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  497. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -328
  498. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  499. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  500. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  501. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  502. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -209
  503. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -123
  504. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  505. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  506. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  507. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  508. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  509. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  510. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -304
  511. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -96
  512. claude_mpm/tools/code_tree_analyzer.py +0 -1825
  513. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  514. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  515. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  516. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  517. {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
  518. {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
  519. {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
  520. {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
@@ -37,7 +37,7 @@ class SimpleCodeView {
37
37
  this.container = null;
38
38
  this.apiBase = window.location.origin;
39
39
  console.log('[SimpleCodeView] API base:', this.apiBase);
40
-
40
+
41
41
  // Tree view properties
42
42
  this.currentView = 'directory';
43
43
  this.socket = null;
@@ -52,16 +52,16 @@ class SimpleCodeView {
52
52
 
53
53
  init(container) {
54
54
  console.log('[SimpleCodeView.init] Starting with container:', container);
55
-
55
+
56
56
  if (!container) {
57
57
  console.error('[SimpleCodeView.init] No container provided!');
58
58
  document.body.innerHTML += '<div style="color:red;font-size:20px;">ERROR: No container for SimpleCodeView</div>';
59
59
  return;
60
60
  }
61
-
61
+
62
62
  this.container = container;
63
63
  this.render();
64
-
64
+
65
65
  // Load initial directory after a short delay to ensure DOM is ready
66
66
  setTimeout(() => {
67
67
  console.log('[SimpleCodeView.init] Loading initial directory after delay');
@@ -71,45 +71,45 @@ class SimpleCodeView {
71
71
 
72
72
  render() {
73
73
  console.log('[SimpleCodeView.render] Rendering UI');
74
-
74
+
75
75
  const html = `
76
76
  <div class="simple-code-view" style="padding: 20px;">
77
77
  <h2>Simple Code Browser</h2>
78
-
78
+
79
79
  <div class="view-toggle" style="margin: 10px 0; padding: 10px; background: #f0f0f0; border-radius: 4px;">
80
- <button id="dir-view-btn" onclick="window.simpleCodeView.setView('directory')" class="active"
80
+ <button id="dir-view-btn" onclick="window.simpleCodeView.setView('directory')" class="active"
81
81
  style="margin-right: 10px; padding: 8px 16px; border: 1px solid #ccc; background: #007cba; color: white; border-radius: 4px; cursor: pointer;">
82
82
  📁 Directory View
83
83
  </button>
84
- <button id="tree-view-btn" onclick="window.simpleCodeView.setView('tree')"
84
+ <button id="tree-view-btn" onclick="window.simpleCodeView.setView('tree')"
85
85
  style="padding: 8px 16px; border: 1px solid #ccc; background: #f9f9f9; color: #333; border-radius: 4px; cursor: pointer;">
86
86
  🌳 Tree View
87
87
  </button>
88
88
  </div>
89
-
89
+
90
90
  <div id="status-bar" style="padding: 10px; background: #e0e0e0; border-radius: 4px; margin-bottom: 10px;">
91
91
  Status: Initializing...
92
92
  </div>
93
-
93
+
94
94
  <div class="path-bar" style="margin: 10px 0; padding: 10px; background: #f0f0f0; border-radius: 4px;">
95
- <strong>Current Path:</strong>
95
+ <strong>Current Path:</strong>
96
96
  <input type="text" id="path-input" value="${this.currentPath}" style="width: 50%; margin: 0 10px;">
97
97
  <button id="load-btn" onclick="loadDir(document.getElementById('path-input').value)">Load</button>
98
98
  <button id="up-btn" onclick="goUp()">Go Up</button>
99
99
  </div>
100
-
100
+
101
101
  <div id="error-display" style="display:none; padding: 10px; background: #fee; color: red; border: 1px solid #fcc; border-radius: 4px; margin: 10px 0;">
102
102
  </div>
103
-
103
+
104
104
  <div id="directory-contents" style="border: 1px solid #ccc; padding: 10px; min-height: 400px; background: white;">
105
105
  <div style="color: #666;">Waiting to load directory...</div>
106
106
  </div>
107
-
107
+
108
108
  <div id="tree-view-container" style="display: none;">
109
109
  <div class="file-selector" style="margin: 10px 0; padding: 10px; background: #f9f9f9; border-radius: 4px;">
110
- <input type="text" id="file-path-input" placeholder="Enter file path to analyze (e.g., ./src/claude_mpm/core/framework_loader.py)"
110
+ <input type="text" id="file-path-input" placeholder="Enter file path to analyze (e.g., ./src/claude_mpm/core/framework_loader.py)"
111
111
  style="width: 70%; padding: 8px; margin-right: 10px; border: 1px solid #ccc; border-radius: 4px;">
112
- <button onclick="window.simpleCodeView.analyzeFile()"
112
+ <button onclick="window.simpleCodeView.analyzeFile()"
113
113
  style="padding: 8px 16px; border: 1px solid #ccc; background: #28a745; color: white; border-radius: 4px; cursor: pointer;">
114
114
  Analyze File
115
115
  </button>
@@ -118,7 +118,7 @@ class SimpleCodeView {
118
118
  <div style="padding: 20px; text-align: center; color: #666;">Enter a file path above and click "Analyze File" to view AST tree</div>
119
119
  </div>
120
120
  </div>
121
-
121
+
122
122
  <div id="debug-info" style="margin-top: 10px; padding: 10px; background: #f9f9f9; font-family: monospace; font-size: 12px;">
123
123
  <strong>Debug Info:</strong><br>
124
124
  API Base: ${this.apiBase}<br>
@@ -127,10 +127,10 @@ class SimpleCodeView {
127
127
  </div>
128
128
  </div>
129
129
  `;
130
-
130
+
131
131
  this.container.innerHTML = html;
132
132
  console.log('[SimpleCodeView.render] UI rendered');
133
-
133
+
134
134
  this.updateStatus('UI Rendered - Ready to load directory', 'blue');
135
135
  }
136
136
 
@@ -162,23 +162,23 @@ class SimpleCodeView {
162
162
 
163
163
  async loadDirectory(path) {
164
164
  console.log('[SimpleCodeView.loadDirectory] Loading path:', path);
165
-
165
+
166
166
  this.currentPath = path;
167
167
  this.hideError();
168
168
  this.updateStatus(`Loading ${path}...`, 'blue');
169
-
169
+
170
170
  // Update path input
171
171
  const pathInput = document.getElementById('path-input');
172
172
  if (pathInput) {
173
173
  pathInput.value = path;
174
174
  }
175
-
175
+
176
176
  // Update debug info
177
177
  const debugDiv = document.getElementById('debug-info');
178
178
  const contentsDiv = document.getElementById('directory-contents');
179
-
179
+
180
180
  const apiUrl = `${this.apiBase}/api/directory/list?path=${encodeURIComponent(path)}`;
181
-
181
+
182
182
  if (debugDiv) {
183
183
  debugDiv.innerHTML = `
184
184
  <strong>Debug Info:</strong><br>
@@ -187,20 +187,20 @@ class SimpleCodeView {
187
187
  Status: Fetching...
188
188
  `;
189
189
  }
190
-
190
+
191
191
  try {
192
192
  console.log('[SimpleCodeView.loadDirectory] Fetching:', apiUrl);
193
-
193
+
194
194
  const response = await fetch(apiUrl);
195
195
  console.log('[SimpleCodeView.loadDirectory] Response status:', response.status);
196
-
196
+
197
197
  if (!response.ok) {
198
198
  throw new Error(`HTTP ${response.status}: ${response.statusText}`);
199
199
  }
200
-
200
+
201
201
  const data = await response.json();
202
202
  console.log('[SimpleCodeView.loadDirectory] Data received:', data);
203
-
203
+
204
204
  // Update debug info with response and filtering status
205
205
  if (debugDiv) {
206
206
  let debugContent = `
@@ -211,7 +211,7 @@ class SimpleCodeView {
211
211
  Is Directory: ${data.is_directory}<br>
212
212
  Item Count: ${data.contents ? data.contents.length : 0}<br>
213
213
  `;
214
-
214
+
215
215
  // Add filtering information
216
216
  if (data.filtered) {
217
217
  debugContent += `<strong>Filtering:</strong> ${data.filter_info || 'Filtered view'}<br>`;
@@ -219,17 +219,17 @@ class SimpleCodeView {
219
219
  debugContent += `<strong>Items:</strong> ${data.summary.directories} directories, ${data.summary.code_files} code files<br>`;
220
220
  }
221
221
  }
222
-
222
+
223
223
  debugContent += `
224
224
  <details>
225
225
  <summary>Raw Response (click to expand)</summary>
226
226
  <pre style="overflow-x: auto;">${JSON.stringify(data, null, 2)}</pre>
227
227
  </details>
228
228
  `;
229
-
229
+
230
230
  debugDiv.innerHTML = debugContent;
231
231
  }
232
-
232
+
233
233
  // Display contents
234
234
  if (!data.exists) {
235
235
  contentsDiv.innerHTML = '<p style="color: red;">❌ Path does not exist</p>';
@@ -250,18 +250,18 @@ class SimpleCodeView {
250
250
  headerText += ` (${data.summary.directories} directories, ${data.summary.code_files} code files)`;
251
251
  }
252
252
  headerText += ':';
253
-
253
+
254
254
  let html = `<div style="margin-bottom: 10px; color: #666;">${headerText}</div>`;
255
-
255
+
256
256
  // Add filtering notice if applicable
257
257
  if (data.filtered) {
258
258
  html += `<div style="margin-bottom: 10px; padding: 8px; background: #e8f4fd; border-left: 3px solid #2196f3; color: #1565c0; font-size: 13px;">
259
259
  🔍 Filtered view: ${data.filter_info || 'Showing only code-related files and directories'}
260
260
  </div>`;
261
261
  }
262
-
262
+
263
263
  html += '<ul style="list-style: none; padding: 0; margin: 0;">';
264
-
264
+
265
265
  // Sort: directories first, then files
266
266
  const sorted = data.contents.sort((a, b) => {
267
267
  if (a.is_directory !== b.is_directory) {
@@ -269,7 +269,7 @@ class SimpleCodeView {
269
269
  }
270
270
  return a.name.localeCompare(b.name);
271
271
  });
272
-
272
+
273
273
  for (const item of sorted) {
274
274
  if (item.is_directory) {
275
275
  // Make directories clickable
@@ -282,7 +282,7 @@ class SimpleCodeView {
282
282
  // Check if it's a code file and make it clickable
283
283
  const isCodeFile = this.isCodeFile(item.name);
284
284
  const fileIcon = this.getFileIcon(item.name);
285
-
285
+
286
286
  if (isCodeFile) {
287
287
  // Code files - clickable to show AST
288
288
  html += `<li style="padding: 5px 0;">
@@ -298,18 +298,18 @@ class SimpleCodeView {
298
298
  }
299
299
  }
300
300
  }
301
-
301
+
302
302
  html += '</ul>';
303
303
  contentsDiv.innerHTML = html;
304
304
  this.updateStatus(`Loaded ${data.contents.length} items`, 'green');
305
305
  }
306
-
306
+
307
307
  } catch (error) {
308
308
  console.error('[SimpleCodeView.loadDirectory] Error:', error);
309
-
309
+
310
310
  const errorMsg = `Failed to load directory: ${error.message}`;
311
311
  this.showError(errorMsg);
312
-
312
+
313
313
  if (contentsDiv) {
314
314
  contentsDiv.innerHTML = `
315
315
  <div style="color: red;">
@@ -319,7 +319,7 @@ class SimpleCodeView {
319
319
  </div>
320
320
  `;
321
321
  }
322
-
322
+
323
323
  if (debugDiv) {
324
324
  debugDiv.innerHTML += `<br><span style="color:red;">ERROR: ${error.stack || error.message}</span>`;
325
325
  }
@@ -333,7 +333,7 @@ class SimpleCodeView {
333
333
  this.updateStatus('Already at root directory', 'orange');
334
334
  return;
335
335
  }
336
-
336
+
337
337
  const lastSlash = this.currentPath.lastIndexOf('/');
338
338
  const parent = lastSlash > 0 ? this.currentPath.substring(0, lastSlash) : '/';
339
339
  console.log('[SimpleCodeView.goUp] Going up to:', parent);
@@ -344,35 +344,35 @@ class SimpleCodeView {
344
344
  setView(view) {
345
345
  console.log('[SimpleCodeView.setView] Switching to view:', view);
346
346
  this.currentView = view;
347
-
347
+
348
348
  const dirContents = document.getElementById('directory-contents');
349
349
  const treeContainer = document.getElementById('tree-view-container');
350
350
  const dirBtn = document.getElementById('dir-view-btn');
351
351
  const treeBtn = document.getElementById('tree-view-btn');
352
-
352
+
353
353
  if (view === 'tree') {
354
354
  dirContents.style.display = 'none';
355
355
  treeContainer.style.display = 'block';
356
-
356
+
357
357
  // Update button styles
358
358
  dirBtn.style.background = '#f9f9f9';
359
359
  dirBtn.style.color = '#333';
360
360
  dirBtn.classList.remove('active');
361
-
361
+
362
362
  treeBtn.style.background = '#007cba';
363
363
  treeBtn.style.color = 'white';
364
364
  treeBtn.classList.add('active');
365
-
365
+
366
366
  this.initializeTreeView();
367
367
  } else {
368
368
  dirContents.style.display = 'block';
369
369
  treeContainer.style.display = 'none';
370
-
370
+
371
371
  // Update button styles
372
372
  treeBtn.style.background = '#f9f9f9';
373
373
  treeBtn.style.color = '#333';
374
374
  treeBtn.classList.remove('active');
375
-
375
+
376
376
  dirBtn.style.background = '#007cba';
377
377
  dirBtn.style.color = 'white';
378
378
  dirBtn.classList.add('active');
@@ -381,52 +381,52 @@ class SimpleCodeView {
381
381
 
382
382
  initializeTreeView() {
383
383
  console.log('[SimpleCodeView.initializeTreeView] Initializing tree view');
384
-
384
+
385
385
  if (!window.d3) {
386
386
  this.updateStatus('D3.js not loaded - cannot initialize tree view', 'red');
387
387
  return;
388
388
  }
389
-
389
+
390
390
  this.initializeSocket();
391
391
  }
392
392
 
393
393
  initializeSocket() {
394
394
  console.log('[SimpleCodeView.initializeSocket] Initializing Socket.IO connection');
395
-
395
+
396
396
  if (!window.io) {
397
397
  this.updateStatus('Socket.IO not loaded - using fallback mode', 'orange');
398
398
  return;
399
399
  }
400
-
400
+
401
401
  try {
402
402
  this.socket = io('/');
403
-
403
+
404
404
  this.socket.on('connect', () => {
405
405
  console.log('[SimpleCodeView] Socket connected');
406
406
  this.updateStatus('Connected to analysis server', 'green');
407
407
  });
408
-
408
+
409
409
  this.socket.on('disconnect', () => {
410
410
  console.log('[SimpleCodeView] Socket disconnected');
411
411
  this.updateStatus('Disconnected from analysis server', 'orange');
412
412
  });
413
-
413
+
414
414
  this.socket.on('analysis_progress', (data) => {
415
415
  console.log('[SimpleCodeView] Analysis progress:', data);
416
416
  this.updateStatus(`Analysis: ${data.message}`, 'blue');
417
417
  });
418
-
418
+
419
419
  this.socket.on('analysis_complete', (data) => {
420
420
  console.log('[SimpleCodeView] Analysis complete:', data);
421
421
  this.updateStatus('Analysis complete - rendering tree', 'green');
422
422
  this.renderTree(data);
423
423
  });
424
-
424
+
425
425
  this.socket.on('analysis_error', (error) => {
426
426
  console.error('[SimpleCodeView] Analysis error:', error);
427
427
  this.showError(`Analysis failed: ${error.message || error}`);
428
428
  });
429
-
429
+
430
430
  } catch (error) {
431
431
  console.error('[SimpleCodeView] Failed to initialize socket:', error);
432
432
  this.updateStatus('Socket connection failed - using fallback mode', 'orange');
@@ -435,24 +435,24 @@ class SimpleCodeView {
435
435
 
436
436
  async analyzeFile() {
437
437
  console.log('[SimpleCodeView.analyzeFile] Starting file analysis');
438
-
438
+
439
439
  const fileInput = document.getElementById('file-path-input');
440
440
  const filePath = fileInput.value.trim();
441
-
441
+
442
442
  if (!filePath) {
443
443
  this.showError('Please enter a file path');
444
444
  return;
445
445
  }
446
-
446
+
447
447
  this.hideError();
448
448
  this.updateStatus(`Analyzing file: ${filePath}`, 'blue');
449
-
449
+
450
450
  // Clear previous tree
451
451
  const treeViz = document.getElementById('tree-visualization');
452
452
  if (treeViz) {
453
453
  treeViz.innerHTML = '<div style="padding: 20px; text-align: center; color: #666;">Analyzing file...</div>';
454
454
  }
455
-
455
+
456
456
  try {
457
457
  if (this.socket && this.socket.connected) {
458
458
  // Use Socket.IO for real-time analysis
@@ -472,7 +472,7 @@ class SimpleCodeView {
472
472
 
473
473
  async analyzeFileHTTP(filePath) {
474
474
  console.log('[SimpleCodeView.analyzeFileHTTP] Using HTTP fallback for:', filePath);
475
-
475
+
476
476
  try {
477
477
  // Create a simple mock analysis for demonstration
478
478
  // In a real implementation, this would call a proper analysis endpoint
@@ -480,7 +480,7 @@ class SimpleCodeView {
480
480
  const mockData = this.createMockTreeData(filePath);
481
481
  this.renderTree(mockData);
482
482
  }, 1000);
483
-
483
+
484
484
  } catch (error) {
485
485
  throw new Error(`HTTP analysis failed: ${error.message}`);
486
486
  }
@@ -490,13 +490,13 @@ class SimpleCodeView {
490
490
  // Create mock AST data for demonstration
491
491
  const fileName = filePath.split('/').pop() || 'file';
492
492
  const ext = fileName.split('.').pop()?.toLowerCase();
493
-
493
+
494
494
  let mockData = {
495
495
  name: fileName,
496
496
  type: 'module',
497
497
  children: []
498
498
  };
499
-
499
+
500
500
  if (ext === 'py') {
501
501
  mockData.children = [
502
502
  {
@@ -549,62 +549,62 @@ class SimpleCodeView {
549
549
  { name: 'Content Section 3', type: 'section' }
550
550
  ];
551
551
  }
552
-
552
+
553
553
  return mockData;
554
554
  }
555
555
 
556
556
  renderTree(data) {
557
557
  console.log('[SimpleCodeView.renderTree] Rendering tree with data:', data);
558
-
558
+
559
559
  if (!data || !window.d3) {
560
560
  this.showError('Cannot render tree: missing data or D3.js');
561
561
  return;
562
562
  }
563
-
563
+
564
564
  this.treeData = data;
565
-
565
+
566
566
  // Clear previous visualization
567
567
  const container = document.getElementById('tree-visualization');
568
568
  if (!container) {
569
569
  this.showError('Tree visualization container not found');
570
570
  return;
571
571
  }
572
-
572
+
573
573
  container.innerHTML = '';
574
-
574
+
575
575
  // Create SVG
576
576
  const margin = this.margin;
577
577
  const width = this.width - margin.left - margin.right;
578
578
  const height = this.height - margin.top - margin.bottom;
579
-
579
+
580
580
  this.svg = d3.select('#tree-visualization')
581
581
  .append('svg')
582
582
  .attr('width', this.width)
583
583
  .attr('height', this.height);
584
-
584
+
585
585
  // Add zoom behavior
586
586
  const zoom = d3.zoom()
587
587
  .scaleExtent([0.1, 4])
588
588
  .on('zoom', (event) => {
589
589
  this.treeGroup.attr('transform', event.transform);
590
590
  });
591
-
591
+
592
592
  this.svg.call(zoom);
593
-
593
+
594
594
  // Create main group
595
595
  this.treeGroup = this.svg.append('g')
596
596
  .attr('transform', `translate(${margin.left},${margin.top})`);
597
-
597
+
598
598
  // Create tree layout
599
599
  this.treeLayout = d3.tree()
600
600
  .size([height, width]);
601
-
601
+
602
602
  // Convert data to hierarchy
603
603
  const hierarchy = d3.hierarchy(data);
604
-
604
+
605
605
  // Generate tree layout
606
606
  const treeData = this.treeLayout(hierarchy);
607
-
607
+
608
608
  // Add links
609
609
  const links = this.treeGroup.selectAll('.link')
610
610
  .data(treeData.links())
@@ -618,7 +618,7 @@ class SimpleCodeView {
618
618
  .style('fill', 'none')
619
619
  .style('stroke', '#ccc')
620
620
  .style('stroke-width', '2px');
621
-
621
+
622
622
  // Add nodes
623
623
  const nodes = this.treeGroup.selectAll('.node')
624
624
  .data(treeData.descendants())
@@ -626,14 +626,14 @@ class SimpleCodeView {
626
626
  .append('g')
627
627
  .attr('class', 'tree-node')
628
628
  .attr('transform', d => `translate(${d.y},${d.x})`);
629
-
629
+
630
630
  // Add circles for nodes
631
631
  nodes.append('circle')
632
632
  .attr('r', 6)
633
633
  .style('fill', d => this.getNodeColor(d.data.type))
634
634
  .style('stroke', '#333')
635
635
  .style('stroke-width', '2px');
636
-
636
+
637
637
  // Add labels
638
638
  nodes.append('text')
639
639
  .attr('dy', '.35em')
@@ -642,14 +642,14 @@ class SimpleCodeView {
642
642
  .style('font-size', '12px')
643
643
  .style('font-family', 'Arial, sans-serif')
644
644
  .text(d => d.data.name);
645
-
645
+
646
646
  // Add tooltips
647
647
  nodes.append('title')
648
648
  .text(d => `${d.data.type}: ${d.data.name}`);
649
-
649
+
650
650
  // Add legend
651
651
  this.addLegend(container);
652
-
652
+
653
653
  this.updateStatus('Tree visualization rendered successfully', 'green');
654
654
  }
655
655
 
@@ -685,7 +685,7 @@ class SimpleCodeView {
685
685
  const ext = filename.toLowerCase().substring(filename.lastIndexOf('.'));
686
686
  const iconMap = {
687
687
  '.py': '🐍',
688
- '.js': '📜',
688
+ '.js': '📜',
689
689
  '.jsx': '⚛️',
690
690
  '.ts': '📘',
691
691
  '.tsx': '⚛️',
@@ -730,16 +730,16 @@ class SimpleCodeView {
730
730
  // New method to analyze file from directory click
731
731
  analyzeFileFromPath(filePath) {
732
732
  console.log('[SimpleCodeView.analyzeFileFromPath] Analyzing file:', filePath);
733
-
733
+
734
734
  // Switch to tree view
735
735
  this.setView('tree');
736
-
736
+
737
737
  // Set the file path in the input
738
738
  const fileInput = document.getElementById('file-path-input');
739
739
  if (fileInput) {
740
740
  fileInput.value = filePath;
741
741
  }
742
-
742
+
743
743
  // Trigger analysis
744
744
  this.analyzeFile();
745
745
  }
@@ -750,10 +750,10 @@ class SimpleCodeView {
750
750
  if (existingLegend) {
751
751
  existingLegend.remove();
752
752
  }
753
-
753
+
754
754
  const legend = document.createElement('div');
755
755
  legend.className = 'tree-legend';
756
-
756
+
757
757
  const legendTypes = [
758
758
  { type: 'module', label: 'Module/File' },
759
759
  { type: 'class', label: 'Class' },
@@ -764,7 +764,7 @@ class SimpleCodeView {
764
764
  { type: 'section', label: 'Section' },
765
765
  { type: 'hook', label: 'Hook/Other' }
766
766
  ];
767
-
767
+
768
768
  legend.innerHTML = `
769
769
  <strong>Legend</strong><br>
770
770
  ${legendTypes.map(item => `
@@ -779,10 +779,10 @@ class SimpleCodeView {
779
779
  Pan: Click and drag
780
780
  </div>
781
781
  `;
782
-
782
+
783
783
  container.appendChild(legend);
784
784
  }
785
-
785
+
786
786
  /**
787
787
  * Get initial path from various sources
788
788
  * @returns {string} Initial path to use
@@ -793,34 +793,34 @@ class SimpleCodeView {
793
793
  const dir = window.dashboard.workingDirectoryManager.getCurrentWorkingDir();
794
794
  if (dir) return dir;
795
795
  }
796
-
796
+
797
797
  // Try to get from working directory element
798
798
  const workingDirPath = document.getElementById('working-dir-path');
799
799
  if (workingDirPath && workingDirPath.textContent && workingDirPath.textContent !== 'Loading...') {
800
800
  return workingDirPath.textContent.trim();
801
801
  }
802
-
802
+
803
803
  // Try to get from footer
804
804
  const footerDir = document.getElementById('footer-working-dir');
805
805
  if (footerDir && footerDir.textContent && footerDir.textContent !== 'Unknown') {
806
806
  return footerDir.textContent.trim();
807
807
  }
808
-
808
+
809
809
  // Try to get from recent events
810
810
  if (window.socketClient && window.socketClient.events) {
811
811
  const eventsWithDir = window.socketClient.events
812
812
  .filter(e => e.data && (e.data.working_directory || e.data.cwd || e.data.working_dir))
813
813
  .reverse();
814
-
814
+
815
815
  if (eventsWithDir.length > 0) {
816
816
  const recentEvent = eventsWithDir[0];
817
- const dir = recentEvent.data.working_directory ||
818
- recentEvent.data.cwd ||
817
+ const dir = recentEvent.data.working_directory ||
818
+ recentEvent.data.cwd ||
819
819
  recentEvent.data.working_dir;
820
820
  if (dir) return dir;
821
821
  }
822
822
  }
823
-
823
+
824
824
  // Default fallback
825
825
  return '/';
826
826
  }