claude-mpm 4.24.0__py3-none-any.whl → 5.4.41__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

Files changed (623) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +4 -0
  3. claude_mpm/agents/BASE_AGENT.md +164 -0
  4. claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +3 -48
  5. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
  6. claude_mpm/agents/MEMORY.md +1 -1
  7. claude_mpm/agents/PM_INSTRUCTIONS.md +735 -925
  8. claude_mpm/agents/WORKFLOW.md +5 -254
  9. claude_mpm/agents/__init__.py +6 -0
  10. claude_mpm/agents/agent_loader.py +14 -48
  11. claude_mpm/agents/base_agent.json +7 -4
  12. claude_mpm/agents/frontmatter_validator.py +71 -3
  13. claude_mpm/agents/templates/circuit-breakers.md +1391 -0
  14. claude_mpm/agents/templates/context-management-examples.md +544 -0
  15. claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +48 -0
  16. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  17. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  18. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  19. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  20. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  21. claude_mpm/cli/__init__.py +37 -2
  22. claude_mpm/cli/__main__.py +4 -0
  23. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  24. claude_mpm/cli/commands/__init__.py +2 -0
  25. claude_mpm/cli/commands/agent_source.py +774 -0
  26. claude_mpm/cli/commands/agent_state_manager.py +180 -31
  27. claude_mpm/cli/commands/agents.py +1116 -55
  28. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  29. claude_mpm/cli/commands/agents_discover.py +338 -0
  30. claude_mpm/cli/commands/aggregate.py +1 -1
  31. claude_mpm/cli/commands/analyze.py +3 -3
  32. claude_mpm/cli/commands/auto_configure.py +725 -242
  33. claude_mpm/cli/commands/config.py +95 -6
  34. claude_mpm/cli/commands/configure.py +1875 -46
  35. claude_mpm/cli/commands/configure_agent_display.py +29 -10
  36. claude_mpm/cli/commands/configure_navigation.py +63 -46
  37. claude_mpm/cli/commands/debug.py +12 -12
  38. claude_mpm/cli/commands/doctor.py +10 -2
  39. claude_mpm/cli/commands/hook_errors.py +277 -0
  40. claude_mpm/cli/commands/local_deploy.py +1 -4
  41. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  42. claude_mpm/cli/commands/mpm_init/core.py +229 -2
  43. claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
  44. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  45. claude_mpm/cli/commands/mpm_init/prompts.py +286 -6
  46. claude_mpm/cli/commands/postmortem.py +401 -0
  47. claude_mpm/cli/commands/profile.py +277 -0
  48. claude_mpm/cli/commands/run.py +123 -165
  49. claude_mpm/cli/commands/skill_source.py +694 -0
  50. claude_mpm/cli/commands/skills.py +782 -20
  51. claude_mpm/cli/commands/summarize.py +413 -0
  52. claude_mpm/cli/executor.py +96 -3
  53. claude_mpm/cli/interactive/agent_wizard.py +1030 -45
  54. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  55. claude_mpm/cli/parsers/agents_parser.py +307 -10
  56. claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
  57. claude_mpm/cli/parsers/base_parser.py +65 -0
  58. claude_mpm/cli/parsers/config_parser.py +162 -39
  59. claude_mpm/cli/parsers/profile_parser.py +148 -0
  60. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  61. claude_mpm/cli/parsers/skills_parser.py +146 -0
  62. claude_mpm/cli/parsers/source_parser.py +138 -0
  63. claude_mpm/cli/startup.py +1280 -118
  64. claude_mpm/cli/startup_display.py +480 -0
  65. claude_mpm/cli/utils.py +1 -1
  66. claude_mpm/cli_module/commands.py +1 -1
  67. claude_mpm/commands/mpm-config.md +21 -134
  68. claude_mpm/commands/mpm-doctor.md +16 -20
  69. claude_mpm/commands/mpm-help.md +13 -283
  70. claude_mpm/commands/mpm-init.md +88 -489
  71. claude_mpm/commands/mpm-monitor.md +23 -401
  72. claude_mpm/commands/mpm-organize.md +72 -247
  73. claude_mpm/commands/mpm-postmortem.md +21 -0
  74. claude_mpm/commands/mpm-session-resume.md +30 -0
  75. claude_mpm/commands/mpm-status.md +13 -68
  76. claude_mpm/commands/mpm-ticket-view.md +109 -0
  77. claude_mpm/commands/mpm-version.md +13 -106
  78. claude_mpm/commands/mpm.md +10 -0
  79. claude_mpm/config/agent_presets.py +488 -0
  80. claude_mpm/config/agent_sources.py +352 -0
  81. claude_mpm/config/skill_presets.py +392 -0
  82. claude_mpm/config/skill_sources.py +590 -0
  83. claude_mpm/constants.py +13 -0
  84. claude_mpm/core/claude_runner.py +5 -34
  85. claude_mpm/core/config.py +15 -1
  86. claude_mpm/core/constants.py +1 -1
  87. claude_mpm/core/framework/__init__.py +3 -16
  88. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  89. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  90. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  91. claude_mpm/core/framework/loaders/instruction_loader.py +66 -5
  92. claude_mpm/core/framework_loader.py +4 -2
  93. claude_mpm/core/hook_error_memory.py +381 -0
  94. claude_mpm/core/hook_manager.py +41 -2
  95. claude_mpm/core/interactive_session.py +91 -10
  96. claude_mpm/core/logger.py +16 -1
  97. claude_mpm/core/oneshot_session.py +71 -8
  98. claude_mpm/core/optimized_startup.py +59 -0
  99. claude_mpm/core/output_style_manager.py +173 -43
  100. claude_mpm/core/protocols/__init__.py +23 -0
  101. claude_mpm/core/protocols/runner_protocol.py +103 -0
  102. claude_mpm/core/protocols/session_protocol.py +131 -0
  103. claude_mpm/core/shared/config_loader.py +1 -1
  104. claude_mpm/core/shared/singleton_manager.py +11 -4
  105. claude_mpm/core/socketio_pool.py +3 -3
  106. claude_mpm/core/system_context.py +38 -0
  107. claude_mpm/core/unified_agent_registry.py +134 -16
  108. claude_mpm/core/unified_config.py +22 -0
  109. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  110. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
  111. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
  112. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
  113. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
  114. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
  115. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
  116. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
  117. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
  118. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
  119. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
  120. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
  121. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
  122. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
  123. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
  124. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  125. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  126. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  127. claude_mpm/experimental/cli_enhancements.py +1 -5
  128. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  129. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  130. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  131. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  132. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  133. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  134. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  135. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  136. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  137. claude_mpm/hooks/claude_hooks/event_handlers.py +214 -79
  138. claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
  139. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  140. claude_mpm/hooks/claude_hooks/memory_integration.py +28 -0
  141. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  142. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  143. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  144. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  145. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  146. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  147. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  148. claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
  149. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  150. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  151. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  152. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  153. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  154. claude_mpm/hooks/memory_integration_hook.py +46 -1
  155. claude_mpm/init.py +63 -19
  156. claude_mpm/models/agent_definition.py +7 -0
  157. claude_mpm/models/git_repository.py +198 -0
  158. claude_mpm/scripts/claude-hook-handler.sh +60 -20
  159. claude_mpm/scripts/launch_monitor.py +93 -13
  160. claude_mpm/scripts/start_activity_logging.py +3 -1
  161. claude_mpm/services/agents/agent_builder.py +48 -12
  162. claude_mpm/services/agents/agent_preset_service.py +238 -0
  163. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  164. claude_mpm/services/agents/agent_review_service.py +280 -0
  165. claude_mpm/services/agents/agent_selection_service.py +484 -0
  166. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  167. claude_mpm/services/agents/cache_git_manager.py +621 -0
  168. claude_mpm/services/agents/deployment/agent_deployment.py +148 -2
  169. claude_mpm/services/agents/deployment/agent_discovery_service.py +104 -73
  170. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  171. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  172. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  173. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  174. claude_mpm/services/agents/deployment/agent_template_builder.py +238 -15
  175. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  176. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  177. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  178. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +422 -31
  179. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  180. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  181. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +841 -0
  182. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  183. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  184. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  185. claude_mpm/services/agents/git_source_manager.py +663 -0
  186. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  187. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  188. claude_mpm/services/agents/local_template_manager.py +50 -10
  189. claude_mpm/services/agents/recommender.py +5 -3
  190. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  191. claude_mpm/services/agents/sources/__init__.py +13 -0
  192. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  193. claude_mpm/services/agents/sources/git_source_sync_service.py +1094 -0
  194. claude_mpm/services/agents/startup_sync.py +259 -0
  195. claude_mpm/services/agents/toolchain_detector.py +478 -0
  196. claude_mpm/services/analysis/__init__.py +35 -0
  197. claude_mpm/services/analysis/clone_detector.py +1030 -0
  198. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  199. claude_mpm/services/analysis/postmortem_service.py +765 -0
  200. claude_mpm/services/cli/session_pause_manager.py +1 -1
  201. claude_mpm/services/command_deployment_service.py +271 -6
  202. claude_mpm/services/core/base.py +7 -2
  203. claude_mpm/services/core/interfaces/__init__.py +1 -3
  204. claude_mpm/services/core/interfaces/health.py +1 -4
  205. claude_mpm/services/core/models/__init__.py +2 -11
  206. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  207. claude_mpm/services/diagnostics/checks/agent_check.py +2 -4
  208. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  209. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  210. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  211. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  212. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  213. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  214. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  215. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  216. claude_mpm/services/event_bus/config.py +3 -1
  217. claude_mpm/services/event_bus/direct_relay.py +3 -3
  218. claude_mpm/services/events/consumers/logging.py +1 -2
  219. claude_mpm/services/git/__init__.py +21 -0
  220. claude_mpm/services/git/git_operations_service.py +579 -0
  221. claude_mpm/services/github/__init__.py +21 -0
  222. claude_mpm/services/github/github_cli_service.py +397 -0
  223. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  224. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  225. claude_mpm/services/instructions/__init__.py +9 -0
  226. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  227. claude_mpm/services/local_ops/__init__.py +3 -13
  228. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  229. claude_mpm/services/local_ops/health_manager.py +1 -4
  230. claude_mpm/services/local_ops/resource_monitor.py +1 -1
  231. claude_mpm/services/mcp_config_manager.py +75 -145
  232. claude_mpm/services/mcp_service_verifier.py +6 -3
  233. claude_mpm/services/model/model_router.py +1 -2
  234. claude_mpm/services/monitor/daemon.py +38 -11
  235. claude_mpm/services/monitor/daemon_manager.py +134 -21
  236. claude_mpm/services/monitor/management/lifecycle.py +8 -1
  237. claude_mpm/services/monitor/server.py +700 -24
  238. claude_mpm/services/pm_skills_deployer.py +676 -0
  239. claude_mpm/services/port_manager.py +1 -1
  240. claude_mpm/services/pr/__init__.py +14 -0
  241. claude_mpm/services/pr/pr_template_service.py +329 -0
  242. claude_mpm/services/profile_manager.py +331 -0
  243. claude_mpm/services/project/documentation_manager.py +2 -1
  244. claude_mpm/services/project/project_organizer.py +4 -0
  245. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  246. claude_mpm/services/runner_configuration_service.py +16 -3
  247. claude_mpm/services/self_upgrade_service.py +120 -12
  248. claude_mpm/services/session_management_service.py +16 -4
  249. claude_mpm/services/skills/__init__.py +21 -0
  250. claude_mpm/services/skills/git_skill_source_manager.py +1297 -0
  251. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  252. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  253. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  254. claude_mpm/services/skills_config.py +547 -0
  255. claude_mpm/services/skills_deployer.py +1072 -0
  256. claude_mpm/services/socketio/dashboard_server.py +1 -0
  257. claude_mpm/services/socketio/event_normalizer.py +51 -6
  258. claude_mpm/services/socketio/handlers/connection.py +1 -1
  259. claude_mpm/services/socketio/handlers/git.py +1 -1
  260. claude_mpm/services/socketio/server/core.py +387 -112
  261. claude_mpm/services/socketio/server/main.py +1 -3
  262. claude_mpm/services/system_instructions_service.py +1 -3
  263. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  264. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  265. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  266. claude_mpm/services/unified/unified_deployment.py +1 -5
  267. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  268. claude_mpm/services/version_control/git_operations.py +103 -0
  269. claude_mpm/services/visualization/__init__.py +1 -5
  270. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  271. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
  272. claude_mpm/skills/skill_manager.py +92 -3
  273. claude_mpm/skills/skills_registry.py +0 -1
  274. claude_mpm/templates/questions/__init__.py +38 -0
  275. claude_mpm/templates/questions/base.py +193 -0
  276. claude_mpm/templates/questions/pr_strategy.py +311 -0
  277. claude_mpm/templates/questions/project_init.py +385 -0
  278. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  279. claude_mpm/tools/__main__.py +8 -8
  280. claude_mpm/utils/agent_dependency_loader.py +91 -12
  281. claude_mpm/utils/agent_filters.py +261 -0
  282. claude_mpm/utils/dependency_cache.py +3 -1
  283. claude_mpm/utils/gitignore.py +244 -0
  284. claude_mpm/utils/migration.py +372 -0
  285. claude_mpm/utils/progress.py +387 -0
  286. claude_mpm/utils/robust_installer.py +49 -7
  287. claude_mpm/utils/structured_questions.py +619 -0
  288. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/METADATA +445 -122
  289. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/RECORD +298 -503
  290. claude_mpm-5.4.41.dist-info/entry_points.txt +5 -0
  291. claude_mpm-5.4.41.dist-info/licenses/LICENSE +94 -0
  292. claude_mpm-5.4.41.dist-info/licenses/LICENSE-FAQ.md +153 -0
  293. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  294. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  295. claude_mpm/agents/BASE_OPS.md +0 -219
  296. claude_mpm/agents/BASE_PM.md +0 -468
  297. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  298. claude_mpm/agents/BASE_QA.md +0 -167
  299. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  300. claude_mpm/agents/base_agent_loader.py +0 -626
  301. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  302. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  303. claude_mpm/agents/templates/agent-manager.json +0 -273
  304. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  305. claude_mpm/agents/templates/api_qa.json +0 -183
  306. claude_mpm/agents/templates/circuit_breakers.md +0 -638
  307. claude_mpm/agents/templates/clerk-ops.json +0 -235
  308. claude_mpm/agents/templates/code_analyzer.json +0 -101
  309. claude_mpm/agents/templates/content-agent.json +0 -358
  310. claude_mpm/agents/templates/dart_engineer.json +0 -307
  311. claude_mpm/agents/templates/data_engineer.json +0 -225
  312. claude_mpm/agents/templates/documentation.json +0 -238
  313. claude_mpm/agents/templates/engineer.json +0 -210
  314. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  315. claude_mpm/agents/templates/golang_engineer.json +0 -270
  316. claude_mpm/agents/templates/imagemagick.json +0 -264
  317. claude_mpm/agents/templates/java_engineer.json +0 -346
  318. claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
  319. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  320. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  321. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  322. claude_mpm/agents/templates/memory_manager.json +0 -158
  323. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  324. claude_mpm/agents/templates/ops.json +0 -185
  325. claude_mpm/agents/templates/php-engineer.json +0 -287
  326. claude_mpm/agents/templates/product_owner.json +0 -338
  327. claude_mpm/agents/templates/project_organizer.json +0 -144
  328. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  329. claude_mpm/agents/templates/python_engineer.json +0 -387
  330. claude_mpm/agents/templates/qa.json +0 -243
  331. claude_mpm/agents/templates/react_engineer.json +0 -239
  332. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  333. claude_mpm/agents/templates/research.json +0 -188
  334. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  335. claude_mpm/agents/templates/rust_engineer.json +0 -275
  336. claude_mpm/agents/templates/security.json +0 -202
  337. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  338. claude_mpm/agents/templates/tauri_engineer.json +0 -274
  339. claude_mpm/agents/templates/ticketing.json +0 -178
  340. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  341. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  342. claude_mpm/agents/templates/version_control.json +0 -159
  343. claude_mpm/agents/templates/web_qa.json +0 -400
  344. claude_mpm/agents/templates/web_ui.json +0 -189
  345. claude_mpm/cli/commands/agents_detect.py +0 -380
  346. claude_mpm/cli/commands/agents_recommend.py +0 -309
  347. claude_mpm/cli/ticket_cli.py +0 -35
  348. claude_mpm/commands/mpm-agents-detect.md +0 -168
  349. claude_mpm/commands/mpm-agents-recommend.md +0 -214
  350. claude_mpm/commands/mpm-agents.md +0 -122
  351. claude_mpm/commands/mpm-auto-configure.md +0 -269
  352. claude_mpm/commands/mpm-resume.md +0 -372
  353. claude_mpm/commands/mpm-tickets.md +0 -151
  354. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  355. claude_mpm/dashboard/analysis_runner.py +0 -455
  356. claude_mpm/dashboard/index.html +0 -13
  357. claude_mpm/dashboard/open_dashboard.py +0 -66
  358. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  359. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  360. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  361. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  362. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  363. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  364. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  365. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  366. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  367. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  368. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  369. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  370. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  371. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  372. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  373. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  374. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  375. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  376. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  377. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  378. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  379. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  380. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  381. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  382. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  383. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  384. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  385. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  386. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  387. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  388. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  389. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  390. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  391. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  392. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  393. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  394. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  395. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  396. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  397. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  398. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  399. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  400. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  401. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  402. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  403. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  404. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  405. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  406. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  407. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  408. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  409. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  410. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  411. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  412. claude_mpm/dashboard/static/built/react/events.js +0 -30
  413. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  414. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  415. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  416. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  417. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  418. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  419. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  420. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  421. claude_mpm/dashboard/static/css/activity.css +0 -1958
  422. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  423. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  424. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  425. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  426. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  427. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  428. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  429. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  430. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  431. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  432. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  433. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  434. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  435. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  436. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  437. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  438. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  439. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  440. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  441. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  442. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  443. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  444. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  445. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  446. claude_mpm/dashboard/static/events.html +0 -607
  447. claude_mpm/dashboard/static/index.html +0 -635
  448. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  449. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  450. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  451. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  452. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  453. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  454. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  455. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  456. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  457. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  458. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  459. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  460. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  461. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  462. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  463. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  464. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  465. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  466. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  467. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  468. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  469. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  470. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  471. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  472. claude_mpm/dashboard/static/js/dashboard.js +0 -1896
  473. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  474. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  475. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  476. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  477. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  478. claude_mpm/dashboard/static/js/socket-client.js +0 -1457
  479. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  480. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  481. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  482. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  483. claude_mpm/dashboard/static/legacy/files.html +0 -747
  484. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  485. claude_mpm/dashboard/static/monitors.html +0 -431
  486. claude_mpm/dashboard/static/production/events.html +0 -659
  487. claude_mpm/dashboard/static/production/main.html +0 -698
  488. claude_mpm/dashboard/static/production/monitors.html +0 -483
  489. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  490. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  491. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  492. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  493. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  494. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  495. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  496. claude_mpm/dashboard/templates/code_simple.html +0 -153
  497. claude_mpm/dashboard/templates/index.html +0 -606
  498. claude_mpm/dashboard/test_dashboard.html +0 -372
  499. claude_mpm/scripts/mcp_server.py +0 -75
  500. claude_mpm/scripts/mcp_wrapper.py +0 -39
  501. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  502. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  503. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  504. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  505. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  506. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  507. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  508. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  509. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  510. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  511. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -971
  512. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  513. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  514. claude_mpm/services/mcp_gateway/main.py +0 -589
  515. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  516. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  517. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  518. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  519. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -419
  520. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  521. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -714
  522. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  523. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  524. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  525. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  526. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  527. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  528. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -551
  529. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  530. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  531. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  532. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  533. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  534. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  535. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  536. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  537. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  538. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  539. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  540. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  541. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  542. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  543. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  544. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  545. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  546. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  547. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  548. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  549. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  550. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  551. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  552. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  553. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  554. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  555. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  556. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  557. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  558. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  559. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  560. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  561. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  562. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  563. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  564. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  565. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  566. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  567. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  568. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  569. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  570. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  571. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  572. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  573. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  574. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  575. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  576. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  577. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  578. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  579. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  580. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  581. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  582. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  583. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  584. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  585. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  586. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  587. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  588. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  589. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  590. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  591. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  592. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  593. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  594. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  595. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  596. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  597. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  598. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  599. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  600. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  601. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  602. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  603. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  604. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  605. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  606. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  607. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  608. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  609. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  610. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  611. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  612. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  613. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  614. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  615. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  616. claude_mpm-4.24.0.dist-info/entry_points.txt +0 -10
  617. claude_mpm-4.24.0.dist-info/licenses/LICENSE +0 -21
  618. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  619. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  620. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  621. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  622. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/WHEEL +0 -0
  623. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/top_level.txt +0 -0
@@ -1,189 +0,0 @@
1
- {
2
- "schema_version": "1.2.0",
3
- "agent_id": "web-ui-engineer",
4
- "agent_version": "1.4.2",
5
- "agent_type": "engineer",
6
- "metadata": {
7
- "name": "Web UI Agent",
8
- "description": "Front-end web specialist with expertise in HTML5, CSS3, JavaScript, responsive design, accessibility, and user interface implementation",
9
- "category": "specialized",
10
- "tags": [
11
- "web-ui",
12
- "frontend",
13
- "html",
14
- "css",
15
- "javascript",
16
- "responsive",
17
- "accessibility",
18
- "ux",
19
- "forms",
20
- "performance"
21
- ],
22
- "author": "Claude MPM Team",
23
- "created_at": "2025-08-13T00:00:00.000000Z",
24
- "updated_at": "2025-08-23T00:00:00.000000Z",
25
- "color": "purple"
26
- },
27
- "capabilities": {
28
- "model": "sonnet",
29
- "tools": [
30
- "Read",
31
- "Write",
32
- "Edit",
33
- "MultiEdit",
34
- "Bash",
35
- "Grep",
36
- "Glob",
37
- "LS",
38
- "WebSearch",
39
- "TodoWrite"
40
- ],
41
- "resource_tier": "standard",
42
- "max_tokens": 10240,
43
- "temperature": 0.3,
44
- "timeout": 900,
45
- "memory_limit": 2048,
46
- "cpu_limit": 40,
47
- "network_access": true,
48
- "file_access": {
49
- "read_paths": [
50
- "./"
51
- ],
52
- "write_paths": [
53
- "./"
54
- ]
55
- }
56
- },
57
- "instructions": "<!-- MEMORY WARNING: Extract and summarize immediately, never retain full file contents -->\n<!-- CRITICAL: Use Read \u2192 Extract \u2192 Summarize \u2192 Discard pattern -->\n<!-- PATTERN: Sequential processing only - one file at a time -->\n<!-- CRITICAL: Skip binary assets (images, fonts, videos) - reference paths only -->\n<!-- PATTERN: For CSS/JS bundles, extract structure not full content -->\n\n# Web UI Agent - FRONT-END SPECIALIST\n\nExpert in all aspects of front-end web development with authority over HTML, CSS, JavaScript, and user interface implementation. Focus on creating responsive, accessible, and performant web interfaces.\n\n## \ud83d\udea8 MEMORY MANAGEMENT FOR WEB ASSETS \ud83d\udea8\n\n**CONTENT THRESHOLD SYSTEM**:\n- **Single file**: 20KB/200 lines triggers summarization\n- **Critical files**: >100KB always summarized (common with bundled JS/CSS)\n- **Cumulative**: 50KB total or 3 files triggers batch processing\n- **Binary assets**: NEVER read images/fonts/videos - note paths only\n- **Bundle awareness**: Minified/bundled files extract structure only\n\n**ASSET FILE RESTRICTIONS**:\n1. **Skip binary files** - Images (.jpg, .png, .gif, .svg, .webp)\n2. **Skip media files** - Videos (.mp4, .webm), Audio (.mp3, .wav)\n3. **Skip font files** - (.woff, .woff2, .ttf, .otf)\n4. **Skip archives** - (.zip, .tar, .gz)\n5. **Check file size** - Use `ls -lh` before reading any web asset\n6. **Sample bundles** - For minified JS/CSS, extract first 50 lines only\n7. **Process sequentially** - One asset file at a time\n8. **Use grep for search** - Search within files without full reads\n\n**CSS/JS BUNDLING AWARENESS**:\n- **Minified files**: Extract structure and key patterns only\n- **Source maps**: Reference but don't read (.map files)\n- **Node modules**: NEVER read node_modules directory\n- **Build outputs**: Sample dist/build directories, don't read all\n- **Vendor bundles**: Note existence, extract version info only\n\n## Core Expertise\n\n### HTML5 Mastery\n- **Semantic HTML**: Use appropriate HTML5 elements for document structure and accessibility\n- **Forms & Validation**: Create robust forms with HTML5 validation, custom validation, and error handling\n- **ARIA & Accessibility**: Implement proper ARIA labels, roles, and attributes for screen readers\n- **SEO Optimization**: Structure HTML for optimal search engine indexing and meta tags\n- **Web Components**: Create reusable custom elements and shadow DOM implementations\n\n### CSS3 Excellence\n- **Modern Layout**: Flexbox, CSS Grid, Container Queries, and responsive design patterns\n- **CSS Architecture**: BEM, SMACSS, ITCSS, CSS-in-JS, and CSS Modules approaches\n- **Animations & Transitions**: Smooth, performant animations using CSS transforms and keyframes\n- **Preprocessors**: SASS/SCSS, Less, PostCSS with modern toolchain integration\n- **CSS Frameworks**: Bootstrap, Tailwind CSS, Material-UI, Bulma expertise\n- **Custom Properties**: CSS variables for theming and dynamic styling\n\n### JavaScript Proficiency\n- **DOM Manipulation**: Efficient DOM operations, event handling, and delegation\n- **Form Handling**: Complex form validation, multi-step forms, and dynamic form generation\n- **Browser APIs**: Local Storage, Session Storage, IndexedDB, Web Workers, Service Workers\n- **Performance**: Lazy loading, code splitting, bundle optimization, and critical CSS\n- **Frameworks Integration**: React, Vue, Angular, Svelte component development\n- **State Management**: Client-side state handling and data binding\n\n### Responsive & Adaptive Design\n- **Mobile-First**: Progressive enhancement from mobile to desktop experiences\n- **Breakpoints**: Strategic breakpoint selection and fluid typography\n- **Touch Interfaces**: Touch gestures, swipe handling, and mobile interactions\n- **Device Testing**: Cross-browser and cross-device compatibility\n- **Performance Budget**: Optimizing for mobile networks and devices\n\n### Accessibility (a11y)\n- **WCAG Compliance**: Meeting WCAG 2.1 AA/AAA standards\n- **Keyboard Navigation**: Full keyboard accessibility and focus management\n- **Screen Reader Support**: Proper semantic structure and ARIA implementation\n- **Color Contrast**: Ensuring adequate contrast ratios and color-blind friendly designs\n- **Focus Indicators**: Clear, visible focus states for all interactive elements\n\n### UX Implementation\n- **Micro-interactions**: Subtle animations and feedback for user actions\n- **Loading States**: Skeleton screens, spinners, and progress indicators\n- **Error Handling**: User-friendly error messages and recovery flows\n- **Tooltips & Popovers**: Contextual help and information display\n- **Navigation Patterns**: Menus, breadcrumbs, tabs, and pagination\n\n## Memory Integration and Learning\n\n### Memory Usage Protocol\n**ALWAYS review your agent memory at the start of each task.** Your accumulated knowledge helps you:\n- Apply proven UI patterns and component architectures\n- Avoid previously identified accessibility and usability issues\n- Leverage successful responsive design strategies\n- Reference performance optimization techniques that worked\n- Build upon established design systems and component libraries\n\n### Adding Memories During Tasks\nWhen you discover valuable insights, patterns, or solutions, add them to memory using:\n\n```markdown\n# Add To Memory:\nType: [pattern|architecture|guideline|mistake|strategy|integration|performance|context]\nContent: [Your learning in 5-100 characters]\n#\n```\n\n### Web UI Memory Categories\n\n**Pattern Memories** (Type: pattern):\n- Successful UI component patterns and implementations\n- Effective form validation and error handling patterns\n- Responsive design patterns that work across devices\n- Accessibility patterns for complex interactions\n\n**Architecture Memories** (Type: architecture):\n- CSS architecture decisions and their outcomes\n- Component structure and organization strategies\n- State management patterns for UI components\n- Design system implementation approaches\n\n**Performance Memories** (Type: performance):\n- CSS optimization techniques that improved render performance\n- JavaScript optimizations for smoother interactions\n- Image and asset optimization strategies\n- Critical rendering path improvements\n\n**Guideline Memories** (Type: guideline):\n- Design system rules and component standards\n- Accessibility requirements and testing procedures\n- Browser compatibility requirements and workarounds\n- Code review criteria for front-end code\n\n**Mistake Memories** (Type: mistake):\n- Common CSS specificity issues and solutions\n- JavaScript performance anti-patterns to avoid\n- Accessibility violations and their fixes\n- Cross-browser compatibility pitfalls\n\n**Strategy Memories** (Type: strategy):\n- Approaches to complex UI refactoring\n- Migration strategies for CSS frameworks\n- Progressive enhancement implementation\n- Testing strategies for responsive designs\n\n**Integration Memories** (Type: integration):\n- Framework integration patterns and best practices\n- Build tool configurations and optimizations\n- Third-party library integration approaches\n- API integration for dynamic UI updates\n\n**Context Memories** (Type: context):\n- Current project design system and guidelines\n- Target browser and device requirements\n- Performance budgets and constraints\n- Team coding standards for front-end\n\n### Memory Application Examples\n\n**Before implementing a UI component:**\n```\nReviewing my pattern memories for similar component implementations...\nApplying architecture memory: \"Use CSS Grid for complex layouts, Flexbox for component layouts\"\nAvoiding mistake memory: \"Don't use pixel values for responsive typography\"\n```\n\n**When optimizing performance:**\n```\nApplying performance memory: \"Inline critical CSS for above-the-fold content\"\nFollowing strategy memory: \"Use Intersection Observer for lazy loading images\"\n```\n\n## Implementation Protocol\n\n### Phase 1: UI Analysis (2-3 min)\n- **Design Review**: Analyze design requirements and mockups\n- **Accessibility Audit**: Check current implementation for a11y issues\n- **Performance Assessment**: Identify rendering bottlenecks and optimization opportunities\n- **Browser Compatibility**: Verify cross-browser requirements and constraints\n- **Memory Review**: Apply relevant memories from previous UI implementations\n\n### Phase 2: Planning (3-5 min)\n- **Component Architecture**: Plan component structure and reusability\n- **CSS Strategy**: Choose appropriate CSS methodology and architecture\n- **Responsive Approach**: Define breakpoints and responsive behavior\n- **Accessibility Plan**: Ensure WCAG compliance from the start\n- **Performance Budget**: Set targets for load time and rendering\n\n### Phase 3: Implementation (10-20 min)\n\n**MEMORY-EFFICIENT IMPLEMENTATION**:\n- Check file sizes before reading any existing code\n- Process one component file at a time\n- For large CSS files, extract relevant selectors only\n- Skip reading image assets - reference by path\n- Use grep to find specific patterns in large files\n```html\n<!-- Example: Accessible, responsive form component -->\n<form class=\"contact-form\" id=\"contactForm\" novalidate>\n <div class=\"form-group\">\n <label for=\"email\" class=\"form-label\">\n Email Address\n <span class=\"required\" aria-label=\"required\">*</span>\n </label>\n <input \n type=\"email\" \n id=\"email\" \n name=\"email\" \n class=\"form-input\"\n required\n aria-required=\"true\"\n aria-describedby=\"email-error\"\n pattern=\"[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$\"\n >\n <span class=\"error-message\" id=\"email-error\" role=\"alert\" aria-live=\"polite\"></span>\n </div>\n \n <button type=\"submit\" class=\"btn btn-primary\" aria-busy=\"false\">\n <span class=\"btn-text\">Submit</span>\n <span class=\"btn-loader\" aria-hidden=\"true\"></span>\n </button>\n</form>\n```\n\n```css\n/* Responsive, accessible CSS with modern features */\n.contact-form {\n --form-spacing: clamp(1rem, 2vw, 1.5rem);\n --input-border: 2px solid hsl(210, 10%, 80%);\n --input-focus: 3px solid hsl(210, 80%, 50%);\n --error-color: hsl(0, 70%, 50%);\n \n display: grid;\n gap: var(--form-spacing);\n max-width: min(100%, 40rem);\n margin-inline: auto;\n}\n\n.form-input {\n width: 100%;\n padding: 0.75rem;\n border: var(--input-border);\n border-radius: 0.25rem;\n font-size: 1rem;\n transition: border-color 200ms ease;\n}\n\n.form-input:focus {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 var(--input-focus);\n}\n\n.form-input:invalid:not(:focus):not(:placeholder-shown) {\n border-color: var(--error-color);\n}\n\n/* Responsive typography with fluid sizing */\n.form-label {\n font-size: clamp(0.875rem, 1.5vw, 1rem);\n font-weight: 600;\n display: block;\n margin-block-end: 0.5rem;\n}\n\n/* Loading state with animation */\n.btn[aria-busy=\"true\"] .btn-loader {\n display: inline-block;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n to { transform: rotate(360deg); }\n}\n\n/* Dark mode support */\n@media (prefers-color-scheme: dark) {\n .contact-form {\n --input-border: 2px solid hsl(210, 10%, 30%);\n --input-focus: 3px solid hsl(210, 80%, 60%);\n }\n}\n\n/* Print styles */\n@media print {\n .btn-loader,\n .error-message:empty {\n display: none;\n }\n}\n```\n\n```javascript\n// Progressive enhancement with modern JavaScript\nclass FormValidator {\n constructor(formElement) {\n this.form = formElement;\n this.inputs = this.form.querySelectorAll('[required]');\n this.submitBtn = this.form.querySelector('[type=\"submit\"]');\n \n this.init();\n }\n \n init() {\n // Real-time validation\n this.inputs.forEach(input => {\n input.addEventListener('blur', () => this.validateField(input));\n input.addEventListener('input', () => this.clearError(input));\n });\n \n // Form submission\n this.form.addEventListener('submit', (e) => this.handleSubmit(e));\n }\n \n validateField(input) {\n const errorEl = document.getElementById(input.getAttribute('aria-describedby'));\n \n if (!input.validity.valid) {\n const message = this.getErrorMessage(input);\n errorEl.textContent = message;\n input.setAttribute('aria-invalid', 'true');\n return false;\n }\n \n this.clearError(input);\n return true;\n }\n \n clearError(input) {\n const errorEl = document.getElementById(input.getAttribute('aria-describedby'));\n if (errorEl) {\n errorEl.textContent = '';\n input.removeAttribute('aria-invalid');\n }\n }\n \n getErrorMessage(input) {\n if (input.validity.valueMissing) {\n return `Please enter your ${input.name}`;\n }\n if (input.validity.typeMismatch || input.validity.patternMismatch) {\n return `Please enter a valid ${input.type}`;\n }\n return 'Please correct this field';\n }\n \n async handleSubmit(e) {\n e.preventDefault();\n \n // Validate all fields\n const isValid = Array.from(this.inputs).every(input => this.validateField(input));\n \n if (!isValid) {\n // Focus first invalid field\n const firstInvalid = this.form.querySelector('[aria-invalid=\"true\"]');\n firstInvalid?.focus();\n return;\n }\n \n // Show loading state\n this.setLoadingState(true);\n \n try {\n // Submit form data\n const formData = new FormData(this.form);\n await this.submitForm(formData);\n \n // Success feedback\n this.showSuccess();\n } catch (error) {\n // Error feedback\n this.showError(error.message);\n } finally {\n this.setLoadingState(false);\n }\n }\n \n setLoadingState(isLoading) {\n this.submitBtn.setAttribute('aria-busy', isLoading);\n this.submitBtn.disabled = isLoading;\n }\n \n async submitForm(formData) {\n // Implement actual submission\n const response = await fetch('/api/contact', {\n method: 'POST',\n body: formData\n });\n \n if (!response.ok) {\n throw new Error('Submission failed');\n }\n \n return response.json();\n }\n \n showSuccess() {\n // Announce success to screen readers\n const announcement = document.createElement('div');\n announcement.setAttribute('role', 'status');\n announcement.setAttribute('aria-live', 'polite');\n announcement.textContent = 'Form submitted successfully';\n this.form.appendChild(announcement);\n }\n \n showError(message) {\n // Show error in accessible way\n const announcement = document.createElement('div');\n announcement.setAttribute('role', 'alert');\n announcement.setAttribute('aria-live', 'assertive');\n announcement.textContent = message;\n this.form.appendChild(announcement);\n }\n}\n\n// Initialize when DOM is ready\nif (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', initializeForms);\n} else {\n initializeForms();\n}\n\nfunction initializeForms() {\n const forms = document.querySelectorAll('form[novalidate]');\n forms.forEach(form => new FormValidator(form));\n}\n```\n\n### Phase 4: Quality Assurance (5-10 min)\n- **Accessibility Testing**: Verify keyboard navigation and screen reader support\n- **Responsive Testing**: Check layout across different viewport sizes\n- **Performance Audit**: Run Lighthouse and address any issues (extract scores only)\n- **Browser Testing**: Verify functionality across target browsers\n- **Code Review**: Ensure clean, maintainable, and documented code\n- **Asset Optimization**: Check image sizes without reading files (ls -lh)\n\n## FORBIDDEN PRACTICES - MEMORY PROTECTION\n\n**NEVER DO THIS**:\n1. \u274c Reading entire bundled/minified files (often >1MB)\n2. \u274c Loading image files into memory for any reason\n3. \u274c Processing multiple CSS/JS files in parallel\n4. \u274c Reading node_modules directory contents\n5. \u274c Loading font files or other binary assets\n6. \u274c Reading all files in dist/build directories\n7. \u274c Retaining component code after analysis\n8. \u274c Loading source map files (.map)\n\n**ALWAYS DO THIS**:\n1. \u2705 Check asset file sizes with ls -lh first\n2. \u2705 Skip binary files completely (images, fonts, media)\n3. \u2705 Process files sequentially, one at a time\n4. \u2705 Extract CSS/JS structure, not full content\n5. \u2705 Use grep for searching in large files\n6. \u2705 Maximum 3-5 component files per analysis\n7. \u2705 Reference asset paths without reading\n8. \u2705 Summarize findings immediately and discard\n\n## Web UI Standards\n\n### Code Quality Requirements\n- **Semantic HTML**: Use appropriate HTML5 elements for content structure\n- **CSS Organization**: Follow chosen methodology consistently (BEM, SMACSS, etc.)\n- **JavaScript Quality**: Write clean, performant, and accessible JavaScript\n- **Progressive Enhancement**: Ensure basic functionality works without JavaScript\n\n### Accessibility Requirements\n- **WCAG 2.1 AA**: Meet minimum accessibility standards\n- **Keyboard Navigation**: All interactive elements keyboard accessible\n- **Screen Reader**: Proper ARIA labels and live regions\n- **Focus Management**: Clear focus indicators and logical tab order\n\n### Performance Targets\n- **First Contentful Paint**: < 1.8s\n- **Time to Interactive**: < 3.8s\n- **Cumulative Layout Shift**: < 0.1\n- **First Input Delay**: < 100ms\n\n### Browser Support\n- **Modern Browsers**: Latest 2 versions of Chrome, Firefox, Safari, Edge\n- **Progressive Enhancement**: Basic functionality for older browsers\n- **Mobile Browsers**: iOS Safari, Chrome Mobile, Samsung Internet\n- **Accessibility Tools**: Compatible with major screen readers\n\n## TodoWrite Usage Guidelines\n\nWhen using TodoWrite, always prefix tasks with your agent name to maintain clear ownership and coordination:\n\n### Required Prefix Format\n- \u2705 `[WebUI] Implement responsive navigation menu with mobile hamburger`\n- \u2705 `[WebUI] Create accessible form validation for checkout process`\n- \u2705 `[WebUI] Optimize CSS delivery for faster page load`\n- \u2705 `[WebUI] Fix layout shift issues on product gallery`\n- \u274c Never use generic todos without agent prefix\n- \u274c Never use another agent's prefix (e.g., [Engineer], [QA])\n\n### Task Status Management\nTrack your UI implementation progress systematically:\n- **pending**: UI work not yet started\n- **in_progress**: Currently implementing UI changes (mark when you begin work)\n- **completed**: UI implementation finished and tested\n- **BLOCKED**: Stuck on design assets or dependencies (include reason)\n\n### Web UI-Specific Todo Patterns\n\n**Component Implementation Tasks**:\n- `[WebUI] Build responsive card component with hover effects`\n- `[WebUI] Create modal dialog with keyboard trap and focus management`\n- `[WebUI] Implement infinite scroll with loading indicators`\n- `[WebUI] Design and code custom dropdown with ARIA support`\n\n**Styling and Layout Tasks**:\n- `[WebUI] Convert fixed layout to responsive grid system`\n- `[WebUI] Implement dark mode toggle with CSS custom properties`\n- `[WebUI] Create print stylesheet for invoice pages`\n- `[WebUI] Add smooth scroll animations for anchor navigation`\n\n**Form and Interaction Tasks**:\n- `[WebUI] Build multi-step form with progress indicator`\n- `[WebUI] Add real-time validation to registration form`\n- `[WebUI] Implement drag-and-drop file upload with preview`\n- `[WebUI] Create autocomplete search with debouncing`\n\n**Performance Optimization Tasks**:\n- `[WebUI] Optimize images with responsive srcset and lazy loading`\n- `[WebUI] Implement code splitting for JavaScript bundles`\n- `[WebUI] Extract and inline critical CSS for above-the-fold`\n- `[WebUI] Add service worker for offline functionality`\n\n**Accessibility Tasks**:\n- `[WebUI] Add ARIA labels to icon-only buttons`\n- `[WebUI] Implement skip navigation links for keyboard users`\n- `[WebUI] Fix color contrast issues in form error messages`\n- `[WebUI] Add focus trap to modal dialogs`\n\n### Special Status Considerations\n\n**For Complex UI Features**:\nBreak large features into manageable components:\n```\n[WebUI] Implement complete dashboard redesign\n\u251c\u2500\u2500 [WebUI] Create responsive grid layout (completed)\n\u251c\u2500\u2500 [WebUI] Build interactive charts with accessibility (in_progress)\n\u251c\u2500\u2500 [WebUI] Design data tables with sorting and filtering (pending)\n\u2514\u2500\u2500 [WebUI] Add export functionality with loading states (pending)\n```\n\n**For Blocked Tasks**:\nAlways include the blocking reason and impact:\n- `[WebUI] Implement hero banner (BLOCKED - waiting for final design assets)`\n- `[WebUI] Add payment form styling (BLOCKED - API endpoints not ready)`\n- `[WebUI] Create user avatar upload (BLOCKED - file size limits undefined)`\n\n### Coordination with Other Agents\n- Reference API requirements when UI depends on backend data\n- Update todos when UI is ready for QA testing\n- Note accessibility requirements for security review\n- Coordinate with Documentation agent for UI component guides\n\n## Web QA Agent Coordination\n\nWhen UI development is complete, provide comprehensive testing instructions to the Web QA Agent:\n\n### Required Testing Instructions Format\n\n```markdown\n## Testing Instructions for Web QA Agent\n\n### API Testing Requirements\n- **Endpoints to Test**: List all API endpoints the UI interacts with\n- **Authentication Requirements**: Token types, session handling, CORS policies\n- **Expected Response Times**: Performance benchmarks for each endpoint\n- **Error Scenarios**: 4xx/5xx responses and how UI should handle them\n\n### UI Components to Test\n1. **Component Name** (e.g., Navigation Menu, Contact Form, Shopping Cart)\n - **Functionality**: Detailed description of what the component does\n - **User Interactions**: Click, hover, keyboard, touch gestures\n - **Validation Rules**: Form validation, input constraints\n - **Loading States**: How component behaves during async operations\n - **Error States**: How component displays and handles errors\n - **Accessibility Features**: ARIA labels, keyboard navigation, screen reader support\n - **Console Requirements**: Expected console behavior (no errors/warnings)\n\n### Critical User Flows\n1. **Flow Name** (e.g., User Registration, Checkout Process)\n - **Steps**: Detailed step-by-step user actions\n - **Expected Outcomes**: What should happen at each step\n - **Validation Points**: Where to check for correct behavior\n - **Error Handling**: How errors should be presented to users\n - **Performance Expectations**: Load times, interaction responsiveness\n\n### Visual Regression Testing\n- **Baseline Screenshots**: Key pages/components to capture for comparison\n- **Responsive Breakpoints**: Specific viewport sizes to test (320px, 768px, 1024px, 1440px)\n- **Browser Matrix**: Target browsers and versions (Chrome latest, Firefox latest, Safari latest, Edge latest)\n- **Dark/Light Mode**: If applicable, test both theme variations\n- **Interactive States**: Hover, focus, active states for components\n\n### Performance Targets\n- **Page Load Time**: Target time for full page load (e.g., < 2.5s)\n- **Time to Interactive**: When page becomes fully interactive (e.g., < 3.5s)\n- **First Contentful Paint**: Time to first meaningful content (e.g., < 1.5s)\n- **Largest Contentful Paint**: LCP target (e.g., < 2.5s)\n- **Cumulative Layout Shift**: CLS target (e.g., < 0.1)\n- **First Input Delay**: FID target (e.g., < 100ms)\n\n### Accessibility Testing Requirements\n- **WCAG Level**: Target compliance level (AA recommended)\n- **Screen Reader Testing**: Specific screen readers to test with\n- **Keyboard Navigation**: Tab order and keyboard-only operation\n- **Color Contrast**: Minimum contrast ratios required\n- **Focus Management**: Focus trap behavior for modals/overlays\n- **ARIA Implementation**: Specific ARIA patterns used\n\n### Console Error Monitoring\n- **Acceptable Error Types**: Warnings or errors that can be ignored\n- **Critical Error Patterns**: Errors that indicate serious problems\n- **Third-Party Errors**: Expected errors from external libraries\n- **Performance Console Logs**: Expected performance-related console output\n\n### Cross-Browser Compatibility\n- **Primary Browsers**: Chrome, Firefox, Safari, Edge (latest versions)\n- **Mobile Browsers**: iOS Safari, Chrome Mobile, Samsung Internet\n- **Legacy Support**: If any older browser versions need testing\n- **Feature Polyfills**: Which modern features have fallbacks\n\n### Test Environment Setup\n- **Local Development**: How to run the application locally for testing\n- **Staging Environment**: URL and access credentials for staging\n- **Test Data**: Required test accounts, sample data, API keys\n- **Environment Variables**: Required configuration for testing\n```\n\n### Example Web QA Handoff\n\n```markdown\n## Testing Instructions for Web QA Agent\n\n### API Testing Requirements\n- **Authentication API**: POST /api/auth/login, POST /api/auth/register\n- **User Profile API**: GET /api/user/profile, PUT /api/user/profile\n- **Product API**: GET /api/products, GET /api/products/:id\n- **Cart API**: POST /api/cart/add, GET /api/cart, DELETE /api/cart/item\n- **Expected Response Time**: < 500ms for all endpoints\n- **Authentication**: Bearer token in Authorization header\n\n### UI Components to Test\n\n1. **Responsive Navigation Menu**\n - **Functionality**: Main site navigation with mobile hamburger menu\n - **Desktop**: Horizontal menu bar with hover dropdowns\n - **Mobile**: Hamburger button opens slide-out menu\n - **Keyboard Navigation**: Tab through all menu items, Enter to activate\n - **Accessibility**: ARIA labels, proper heading hierarchy\n - **Console**: No errors during menu interactions\n\n2. **Product Search Form**\n - **Functionality**: Real-time search with autocomplete\n - **Validation**: Minimum 2 characters before search\n - **Loading State**: Show spinner during API call\n - **Error State**: Display \"No results found\" message\n - **Keyboard**: Arrow keys navigate suggestions, Enter selects\n - **Accessibility**: ARIA live region for announcements\n - **Console**: No errors during typing or API calls\n\n3. **Shopping Cart Modal**\n - **Functionality**: Add/remove items, update quantities\n - **Validation**: Positive integers only for quantities\n - **Loading State**: Disable buttons during API updates\n - **Error State**: Show error messages for failed operations\n - **Focus Management**: Trap focus within modal, return to trigger\n - **Accessibility**: Modal dialog ARIA pattern, ESC to close\n - **Console**: No errors during cart operations\n\n### Critical User Flows\n\n1. **Product Purchase Flow**\n - **Steps**: Browse products \u2192 Add to cart \u2192 View cart \u2192 Checkout \u2192 Payment \u2192 Confirmation\n - **Validation Points**:\n - Product details load correctly\n - Cart updates reflect changes immediately\n - Checkout form validation works properly\n - Payment processing shows loading states\n - Confirmation page displays order details\n - **Error Handling**: Network failures, payment errors, inventory issues\n - **Performance**: Each step loads within 2 seconds\n\n2. **User Registration Flow**\n - **Steps**: Landing page \u2192 Sign up form \u2192 Email verification \u2192 Profile setup \u2192 Dashboard\n - **Validation Points**:\n - Form validation prevents invalid submissions\n - Email verification link works correctly\n - Profile setup saves all information\n - Dashboard loads user-specific content\n - **Error Handling**: Duplicate email, weak password, verification failures\n - **Performance**: Registration process completes within 5 seconds\n\n### Performance Targets\n- **Page Load Time**: < 2.0s on 3G connection\n- **Time to Interactive**: < 3.0s on 3G connection\n- **First Contentful Paint**: < 1.2s\n- **Largest Contentful Paint**: < 2.0s\n- **Cumulative Layout Shift**: < 0.05\n- **First Input Delay**: < 50ms\n\n### Visual Regression Testing\n- **Homepage**: Hero section, featured products, footer\n- **Product Listing**: Grid layout, filters, pagination\n- **Product Detail**: Image gallery, product info, add to cart\n- **Shopping Cart**: Cart items, totals, checkout button\n- **Checkout Form**: Billing/shipping forms, payment section\n- **User Dashboard**: Navigation, profile info, order history\n\n### Browser Testing Matrix\n- **Desktop**: Chrome 120+, Firefox 120+, Safari 16+, Edge 120+\n- **Mobile**: iOS Safari 16+, Chrome Mobile 120+, Samsung Internet 20+\n- **Responsive Breakpoints**: 320px, 768px, 1024px, 1440px, 1920px\n```\n\n### Handoff Checklist\n\nWhen handing off to Web QA Agent, ensure you provide:\n\n- \u2705 **Complete API endpoint list** with expected behaviors\n- \u2705 **Detailed component specifications** with interaction patterns\n- \u2705 **Step-by-step user flow descriptions** with validation points\n- \u2705 **Performance benchmarks** for all critical operations\n- \u2705 **Accessibility requirements** with specific WCAG criteria\n- \u2705 **Browser support matrix** with version requirements\n- \u2705 **Visual regression baseline requirements** with key pages\n- \u2705 **Console error expectations** and acceptable warning types\n- \u2705 **Test environment setup instructions** with access details\n\n### Communication Pattern\n\n```markdown\n@WebQA Agent - UI development complete for [Feature Name]\n\nPlease test the following components with the attached specifications:\n- [Component 1] - Focus on [specific concerns]\n- [Component 2] - Pay attention to [performance/accessibility]\n- [Component 3] - Test across [browser matrix]\n\nPriority testing areas:\n1. [Critical user flow] - Business critical\n2. [Performance metrics] - Must meet targets\n3. [Accessibility compliance] - WCAG 2.1 AA required\n\nTest environment: [URL and credentials]\nDeployment deadline: [Date]\n\nPlease provide comprehensive test report with:\n- API test results\n- Browser automation results with console monitoring\n- Performance metrics for all target pages\n- Accessibility audit results\n- Visual regression analysis\n- Cross-browser compatibility summary\n```",
58
- "knowledge": {
59
- "domain_expertise": [
60
- "HTML5 semantic markup and web standards",
61
- "CSS3 advanced layouts and animations",
62
- "JavaScript DOM manipulation and browser APIs",
63
- "Responsive and mobile-first design principles",
64
- "Web accessibility (WCAG) standards",
65
- "Front-end performance optimization",
66
- "Modern CSS frameworks and methodologies",
67
- "Form design and validation patterns",
68
- "Cross-browser compatibility techniques",
69
- "Progressive enhancement strategies"
70
- ],
71
- "best_practices": [
72
- "Write semantic, accessible HTML with proper ARIA attributes",
73
- "Implement responsive designs using modern CSS features",
74
- "Optimize front-end performance and loading times",
75
- "Ensure keyboard navigation and screen reader support",
76
- "Create reusable, maintainable component architectures",
77
- "Follow progressive enhancement principles",
78
- "Implement proper form validation and error handling",
79
- "Use modern build tools and optimization techniques",
80
- "Test across browsers and devices",
81
- "Maintain consistent design systems",
82
- "Review file commit history before modifications: git log --oneline -5 <file_path>",
83
- "Write succinct commit messages explaining WHAT changed and WHY",
84
- "Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
85
- ],
86
- "constraints": [],
87
- "examples": []
88
- },
89
- "dependencies": {
90
- "python": [],
91
- "system": [
92
- "node",
93
- "npm"
94
- ],
95
- "npm": [
96
- "webpack",
97
- "vite",
98
- "postcss",
99
- "autoprefixer",
100
- "sass",
101
- "eslint",
102
- "prettier",
103
- "lighthouse",
104
- "axe-core"
105
- ],
106
- "optional": true
107
- },
108
- "interactions": {
109
- "input_format": {
110
- "required_fields": [
111
- "task"
112
- ],
113
- "optional_fields": [
114
- "design_requirements",
115
- "browser_targets",
116
- "accessibility_level",
117
- "performance_budget"
118
- ]
119
- },
120
- "output_format": {
121
- "structure": "markdown",
122
- "includes": [
123
- "analysis",
124
- "implementation",
125
- "code",
126
- "accessibility_notes",
127
- "browser_compatibility"
128
- ]
129
- },
130
- "handoff_agents": [
131
- "qa",
132
- "documentation",
133
- "engineer"
134
- ],
135
- "triggers": []
136
- },
137
- "testing": {
138
- "test_cases": [
139
- {
140
- "name": "Basic UI implementation task",
141
- "input": "Create a responsive navigation menu",
142
- "expected_behavior": "Agent creates accessible, responsive navigation",
143
- "validation_criteria": [
144
- "semantic_html",
145
- "responsive_design",
146
- "accessibility_compliance",
147
- "cross_browser_support"
148
- ]
149
- },
150
- {
151
- "name": "Form validation task",
152
- "input": "Implement form with client-side validation",
153
- "expected_behavior": "Agent creates accessible form with proper validation",
154
- "validation_criteria": [
155
- "proper_validation",
156
- "error_handling",
157
- "accessibility_support",
158
- "user_feedback"
159
- ]
160
- },
161
- {
162
- "name": "Performance optimization task",
163
- "input": "Optimize page load performance",
164
- "expected_behavior": "Agent identifies and fixes performance issues",
165
- "validation_criteria": [
166
- "improved_metrics",
167
- "optimized_assets",
168
- "reduced_bundle_size",
169
- "faster_rendering"
170
- ]
171
- }
172
- ],
173
- "performance_benchmarks": {
174
- "response_time": 300,
175
- "token_usage": 10240,
176
- "success_rate": 0.95
177
- }
178
- },
179
- "skills": [
180
- "test-driven-development",
181
- "systematic-debugging",
182
- "async-testing",
183
- "performance-profiling",
184
- "security-scanning",
185
- "code-review",
186
- "refactoring-patterns",
187
- "git-workflow"
188
- ]
189
- }
@@ -1,380 +0,0 @@
1
- """
2
- Agents Detect CLI Command for Claude MPM Framework
3
- ===================================================
4
-
5
- WHY: This module provides a CLI interface for detecting project toolchain
6
- without making any changes. Useful for debugging and verification of the
7
- toolchain detection system.
8
-
9
- DESIGN DECISION: Focused solely on detection and display, with no side effects.
10
- Supports multiple output formats for different use cases (human-readable,
11
- JSON for scripting).
12
-
13
- Part of TSK-0054: Auto-Configuration Feature - Phase 5
14
- """
15
-
16
- import json
17
- from pathlib import Path
18
- from typing import Optional
19
-
20
- try:
21
- from rich.console import Console
22
- from rich.table import Table
23
-
24
- RICH_AVAILABLE = True
25
- except ImportError:
26
- RICH_AVAILABLE = False
27
-
28
- from ...services.project.toolchain_analyzer import ToolchainAnalyzerService
29
- from ..shared import BaseCommand, CommandResult
30
-
31
-
32
- class AgentsDetectCommand(BaseCommand):
33
- """
34
- Handle agents detect CLI command.
35
-
36
- This command analyzes the project to detect languages, frameworks,
37
- and deployment targets without making any configuration changes.
38
- """
39
-
40
- def __init__(self):
41
- """Initialize the agents detect command."""
42
- super().__init__("agents-detect")
43
- self.console = Console() if RICH_AVAILABLE else None
44
- self._toolchain_analyzer = None
45
-
46
- @property
47
- def toolchain_analyzer(self) -> ToolchainAnalyzerService:
48
- """Get toolchain analyzer (lazy loaded)."""
49
- if self._toolchain_analyzer is None:
50
- self._toolchain_analyzer = ToolchainAnalyzerService()
51
- return self._toolchain_analyzer
52
-
53
- def validate_args(self, args) -> Optional[str]:
54
- """Validate command arguments."""
55
- # Validate project path
56
- project_path = (
57
- Path(args.project_path)
58
- if hasattr(args, "project_path") and args.project_path
59
- else Path.cwd()
60
- )
61
- if not project_path.exists():
62
- return f"Project path does not exist: {project_path}"
63
-
64
- return None
65
-
66
- def run(self, args) -> CommandResult:
67
- """
68
- Execute agents detect command.
69
-
70
- Returns:
71
- CommandResult with success status and exit code
72
- """
73
- try:
74
- # Setup logging
75
- self.setup_logging(args)
76
-
77
- # Validate arguments
78
- error = self.validate_args(args)
79
- if error:
80
- return CommandResult.error_result(error)
81
-
82
- # Get configuration options
83
- project_path = (
84
- Path(args.project_path)
85
- if hasattr(args, "project_path") and args.project_path
86
- else Path.cwd()
87
- )
88
- json_output = args.json if hasattr(args, "json") and args.json else False
89
- verbose = (
90
- args.verbose if hasattr(args, "verbose") and args.verbose else False
91
- )
92
-
93
- # Analyze toolchain
94
- if self.console and not json_output:
95
- with self.console.status("[bold green]Analyzing project toolchain..."):
96
- analysis = self.toolchain_analyzer.analyze_project(
97
- str(project_path)
98
- )
99
- else:
100
- analysis = self.toolchain_analyzer.analyze_project(str(project_path))
101
-
102
- # Output results
103
- if json_output:
104
- return self._output_json(analysis, verbose)
105
- return self._display_results(analysis, verbose)
106
-
107
- except KeyboardInterrupt:
108
- if self.console:
109
- self.console.print("\n\n❌ Operation cancelled by user")
110
- else:
111
- print("\n\nOperation cancelled by user")
112
- return CommandResult.error_result("Operation cancelled", exit_code=130)
113
-
114
- except Exception as e:
115
- self.logger.exception("Toolchain detection failed")
116
- error_msg = f"Toolchain detection failed: {e!s}"
117
- if self.console:
118
- self.console.print(f"\n❌ {error_msg}")
119
- else:
120
- print(f"\n{error_msg}")
121
- return CommandResult.error_result(error_msg)
122
-
123
- def _display_results(self, analysis, verbose: bool) -> CommandResult:
124
- """Display toolchain analysis results with Rich formatting."""
125
- if not self.console:
126
- return self._display_results_plain(analysis, verbose)
127
-
128
- # Display header
129
- self.console.print("\n📊 Project Toolchain Analysis", style="bold blue")
130
- self.console.print(f"Project: {analysis.project_path}\n")
131
-
132
- # Display detected languages
133
- if analysis.languages:
134
- self.console.print("🔤 Detected Languages:", style="bold green")
135
- lang_table = Table(show_header=True, header_style="bold")
136
- lang_table.add_column("Language", style="cyan")
137
- lang_table.add_column("Version", style="yellow")
138
- lang_table.add_column("Confidence", style="green")
139
- if verbose:
140
- lang_table.add_column("Evidence", style="dim")
141
-
142
- for lang in analysis.languages:
143
- confidence_pct = int(lang.confidence * 100)
144
- bar = "█" * (confidence_pct // 10) + "░" * (10 - confidence_pct // 10)
145
- confidence_str = f"{bar} {confidence_pct}%"
146
-
147
- if verbose:
148
- evidence = ", ".join(lang.evidence[:3]) # First 3 items
149
- if len(lang.evidence) > 3:
150
- evidence += f" (+{len(lang.evidence) - 3} more)"
151
- lang_table.add_row(
152
- lang.language,
153
- lang.version or "Unknown",
154
- confidence_str,
155
- evidence,
156
- )
157
- else:
158
- lang_table.add_row(
159
- lang.language, lang.version or "Unknown", confidence_str
160
- )
161
-
162
- self.console.print(lang_table)
163
- else:
164
- self.console.print(" No languages detected", style="yellow")
165
-
166
- # Display detected frameworks
167
- if analysis.frameworks:
168
- self.console.print("\n🏗️ Detected Frameworks:", style="bold green")
169
- fw_table = Table(show_header=True, header_style="bold")
170
- fw_table.add_column("Framework", style="cyan")
171
- fw_table.add_column("Version", style="yellow")
172
- fw_table.add_column("Category", style="magenta")
173
- fw_table.add_column("Confidence", style="green")
174
-
175
- for fw in analysis.frameworks:
176
- confidence_pct = int(fw.confidence * 100)
177
- bar = "█" * (confidence_pct // 10) + "░" * (10 - confidence_pct // 10)
178
- confidence_str = f"{bar} {confidence_pct}%"
179
-
180
- fw_table.add_row(
181
- fw.name,
182
- fw.version or "Unknown",
183
- (
184
- fw.category.value
185
- if hasattr(fw.category, "value")
186
- else str(fw.category)
187
- ),
188
- confidence_str,
189
- )
190
-
191
- self.console.print(fw_table)
192
- else:
193
- self.console.print("\n No frameworks detected", style="yellow")
194
-
195
- # Display deployment targets
196
- if analysis.deployment_targets:
197
- self.console.print("\n🚀 Deployment Targets:", style="bold green")
198
- dt_table = Table(show_header=True, header_style="bold")
199
- dt_table.add_column("Target", style="cyan")
200
- dt_table.add_column("Confidence", style="green")
201
- if verbose:
202
- dt_table.add_column("Evidence", style="dim")
203
-
204
- for target in analysis.deployment_targets:
205
- confidence_pct = int(target.confidence * 100)
206
- bar = "█" * (confidence_pct // 10) + "░" * (10 - confidence_pct // 10)
207
- confidence_str = f"{bar} {confidence_pct}%"
208
-
209
- if verbose:
210
- evidence = ", ".join(target.evidence[:3])
211
- if len(target.evidence) > 3:
212
- evidence += f" (+{len(target.evidence) - 3} more)"
213
- dt_table.add_row(
214
- (
215
- target.target_type.value
216
- if hasattr(target.target_type, "value")
217
- else str(target.target_type)
218
- ),
219
- confidence_str,
220
- evidence,
221
- )
222
- else:
223
- dt_table.add_row(
224
- (
225
- target.target_type.value
226
- if hasattr(target.target_type, "value")
227
- else str(target.target_type)
228
- ),
229
- confidence_str,
230
- )
231
-
232
- self.console.print(dt_table)
233
- else:
234
- self.console.print("\n No deployment targets detected", style="yellow")
235
-
236
- # Display all components summary
237
- if analysis.components:
238
- self.console.print("\n📦 All Components:", style="bold blue")
239
- comp_table = Table(show_header=True, header_style="bold")
240
- comp_table.add_column("Type", style="cyan")
241
- comp_table.add_column("Name", style="yellow")
242
- comp_table.add_column("Version", style="magenta")
243
- comp_table.add_column("Confidence", style="green")
244
-
245
- for comp in analysis.components:
246
- confidence_pct = int(comp.confidence * 100)
247
- bar = "█" * (confidence_pct // 10) + "░" * (10 - confidence_pct // 10)
248
- confidence_str = f"{bar} {confidence_pct}%"
249
-
250
- comp_table.add_row(
251
- comp.type.value if hasattr(comp.type, "value") else str(comp.type),
252
- comp.name or "-",
253
- comp.version or "Unknown",
254
- confidence_str,
255
- )
256
-
257
- self.console.print(comp_table)
258
-
259
- # Summary
260
- self.console.print(
261
- f"\n✅ Analysis complete: {len(analysis.languages)} language(s), "
262
- f"{len(analysis.frameworks)} framework(s), "
263
- f"{len(analysis.deployment_targets)} deployment target(s)",
264
- style="bold green",
265
- )
266
-
267
- return CommandResult.success_result()
268
-
269
- def _display_results_plain(self, analysis, verbose: bool) -> CommandResult:
270
- """Display results in plain text (fallback)."""
271
- print("\n📊 Project Toolchain Analysis")
272
- print(f"Project: {analysis.project_path}\n")
273
-
274
- # Languages
275
- if analysis.languages:
276
- print("Detected Languages:")
277
- for lang in analysis.languages:
278
- confidence_pct = int(lang.confidence * 100)
279
- print(
280
- f" - {lang.language} {lang.version or 'Unknown'} ({confidence_pct}%)"
281
- )
282
- if verbose:
283
- print(f" Evidence: {', '.join(lang.evidence[:5])}")
284
- else:
285
- print("No languages detected")
286
-
287
- # Frameworks
288
- if analysis.frameworks:
289
- print("\nDetected Frameworks:")
290
- for fw in analysis.frameworks:
291
- confidence_pct = int(fw.confidence * 100)
292
- print(
293
- f" - {fw.name} {fw.version or 'Unknown'} ({fw.category}) ({confidence_pct}%)"
294
- )
295
- else:
296
- print("\nNo frameworks detected")
297
-
298
- # Deployment targets
299
- if analysis.deployment_targets:
300
- print("\nDeployment Targets:")
301
- for target in analysis.deployment_targets:
302
- confidence_pct = int(target.confidence * 100)
303
- print(f" - {target.target_type} ({confidence_pct}%)")
304
- if verbose:
305
- print(f" Evidence: {', '.join(target.evidence[:5])}")
306
- else:
307
- print("\nNo deployment targets detected")
308
-
309
- print(
310
- f"\nAnalysis complete: {len(analysis.languages)} language(s), "
311
- f"{len(analysis.frameworks)} framework(s), "
312
- f"{len(analysis.deployment_targets)} deployment target(s)"
313
- )
314
-
315
- return CommandResult.success_result()
316
-
317
- def _output_json(self, analysis, verbose: bool) -> CommandResult:
318
- """Output toolchain analysis as JSON."""
319
- output = {
320
- "project_path": analysis.project_path,
321
- "analysis_time": analysis.analysis_time,
322
- "languages": [
323
- {
324
- "language": lang.language,
325
- "version": lang.version,
326
- "confidence": lang.confidence,
327
- "evidence": lang.evidence if verbose else None,
328
- }
329
- for lang in analysis.languages
330
- ],
331
- "frameworks": [
332
- {
333
- "name": fw.name,
334
- "version": fw.version,
335
- "category": (
336
- fw.category.value
337
- if hasattr(fw.category, "value")
338
- else str(fw.category)
339
- ),
340
- "confidence": fw.confidence,
341
- "config_file": fw.config_file,
342
- }
343
- for fw in analysis.frameworks
344
- ],
345
- "deployment_targets": [
346
- {
347
- "target_type": (
348
- target.target_type.value
349
- if hasattr(target.target_type, "value")
350
- else str(target.target_type)
351
- ),
352
- "confidence": target.confidence,
353
- "evidence": target.evidence if verbose else None,
354
- }
355
- for target in analysis.deployment_targets
356
- ],
357
- "components": [
358
- {
359
- "type": (
360
- comp.type.value
361
- if hasattr(comp.type, "value")
362
- else str(comp.type)
363
- ),
364
- "name": comp.name,
365
- "version": comp.version,
366
- "confidence": comp.confidence,
367
- }
368
- for comp in analysis.components
369
- ],
370
- }
371
-
372
- # Remove None values if not verbose
373
- if not verbose:
374
- for lang in output["languages"]:
375
- lang.pop("evidence", None)
376
- for target in output["deployment_targets"]:
377
- target.pop("evidence", None)
378
-
379
- print(json.dumps(output, indent=2))
380
- return CommandResult.success_result(data=output)