claude-mpm 4.7.4__py3-none-any.whl → 4.18.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
  3. claude_mpm/agents/BASE_ENGINEER.md +286 -0
  4. claude_mpm/agents/BASE_PM.md +106 -1
  5. claude_mpm/agents/OUTPUT_STYLE.md +329 -11
  6. claude_mpm/agents/PM_INSTRUCTIONS.md +397 -459
  7. claude_mpm/agents/agent_loader.py +17 -5
  8. claude_mpm/agents/frontmatter_validator.py +284 -253
  9. claude_mpm/agents/templates/README.md +465 -0
  10. claude_mpm/agents/templates/agent-manager.json +4 -1
  11. claude_mpm/agents/templates/agentic-coder-optimizer.json +13 -3
  12. claude_mpm/agents/templates/api_qa.json +11 -2
  13. claude_mpm/agents/templates/circuit_breakers.md +638 -0
  14. claude_mpm/agents/templates/clerk-ops.json +12 -2
  15. claude_mpm/agents/templates/code_analyzer.json +8 -2
  16. claude_mpm/agents/templates/content-agent.json +358 -0
  17. claude_mpm/agents/templates/dart_engineer.json +15 -2
  18. claude_mpm/agents/templates/data_engineer.json +15 -2
  19. claude_mpm/agents/templates/documentation.json +10 -2
  20. claude_mpm/agents/templates/engineer.json +21 -1
  21. claude_mpm/agents/templates/gcp_ops_agent.json +12 -2
  22. claude_mpm/agents/templates/git_file_tracking.md +584 -0
  23. claude_mpm/agents/templates/golang_engineer.json +270 -0
  24. claude_mpm/agents/templates/imagemagick.json +4 -1
  25. claude_mpm/agents/templates/java_engineer.json +346 -0
  26. claude_mpm/agents/templates/local_ops_agent.json +1227 -6
  27. claude_mpm/agents/templates/memory_manager.json +4 -1
  28. claude_mpm/agents/templates/nextjs_engineer.json +141 -133
  29. claude_mpm/agents/templates/ops.json +12 -2
  30. claude_mpm/agents/templates/php-engineer.json +270 -174
  31. claude_mpm/agents/templates/pm_examples.md +474 -0
  32. claude_mpm/agents/templates/pm_red_flags.md +240 -0
  33. claude_mpm/agents/templates/product_owner.json +338 -0
  34. claude_mpm/agents/templates/project_organizer.json +14 -4
  35. claude_mpm/agents/templates/prompt-engineer.json +13 -2
  36. claude_mpm/agents/templates/python_engineer.json +174 -81
  37. claude_mpm/agents/templates/qa.json +11 -2
  38. claude_mpm/agents/templates/react_engineer.json +16 -3
  39. claude_mpm/agents/templates/refactoring_engineer.json +12 -2
  40. claude_mpm/agents/templates/research.json +34 -21
  41. claude_mpm/agents/templates/response_format.md +583 -0
  42. claude_mpm/agents/templates/ruby-engineer.json +129 -192
  43. claude_mpm/agents/templates/rust_engineer.json +270 -0
  44. claude_mpm/agents/templates/security.json +10 -2
  45. claude_mpm/agents/templates/svelte-engineer.json +225 -0
  46. claude_mpm/agents/templates/ticketing.json +10 -2
  47. claude_mpm/agents/templates/typescript_engineer.json +116 -125
  48. claude_mpm/agents/templates/validation_templates.md +312 -0
  49. claude_mpm/agents/templates/vercel_ops_agent.json +12 -2
  50. claude_mpm/agents/templates/version_control.json +12 -2
  51. claude_mpm/agents/templates/web_qa.json +11 -2
  52. claude_mpm/agents/templates/web_ui.json +15 -2
  53. claude_mpm/cli/__init__.py +34 -614
  54. claude_mpm/cli/commands/agent_manager.py +25 -12
  55. claude_mpm/cli/commands/agent_state_manager.py +186 -0
  56. claude_mpm/cli/commands/agents.py +235 -148
  57. claude_mpm/cli/commands/agents_detect.py +380 -0
  58. claude_mpm/cli/commands/agents_recommend.py +309 -0
  59. claude_mpm/cli/commands/aggregate.py +7 -3
  60. claude_mpm/cli/commands/analyze.py +9 -4
  61. claude_mpm/cli/commands/analyze_code.py +7 -2
  62. claude_mpm/cli/commands/auto_configure.py +570 -0
  63. claude_mpm/cli/commands/config.py +47 -13
  64. claude_mpm/cli/commands/configure.py +419 -1571
  65. claude_mpm/cli/commands/configure_agent_display.py +261 -0
  66. claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
  67. claude_mpm/cli/commands/configure_hook_manager.py +225 -0
  68. claude_mpm/cli/commands/configure_models.py +18 -0
  69. claude_mpm/cli/commands/configure_navigation.py +167 -0
  70. claude_mpm/cli/commands/configure_paths.py +104 -0
  71. claude_mpm/cli/commands/configure_persistence.py +254 -0
  72. claude_mpm/cli/commands/configure_startup_manager.py +646 -0
  73. claude_mpm/cli/commands/configure_template_editor.py +497 -0
  74. claude_mpm/cli/commands/configure_validators.py +73 -0
  75. claude_mpm/cli/commands/local_deploy.py +537 -0
  76. claude_mpm/cli/commands/memory.py +54 -20
  77. claude_mpm/cli/commands/mpm_init.py +585 -196
  78. claude_mpm/cli/commands/mpm_init_handler.py +37 -3
  79. claude_mpm/cli/commands/search.py +170 -4
  80. claude_mpm/cli/commands/upgrade.py +152 -0
  81. claude_mpm/cli/executor.py +202 -0
  82. claude_mpm/cli/helpers.py +105 -0
  83. claude_mpm/cli/interactive/__init__.py +3 -0
  84. claude_mpm/cli/interactive/skills_wizard.py +491 -0
  85. claude_mpm/cli/parsers/__init__.py +7 -1
  86. claude_mpm/cli/parsers/agents_parser.py +9 -0
  87. claude_mpm/cli/parsers/auto_configure_parser.py +245 -0
  88. claude_mpm/cli/parsers/base_parser.py +110 -3
  89. claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
  90. claude_mpm/cli/parsers/mpm_init_parser.py +65 -5
  91. claude_mpm/cli/shared/output_formatters.py +28 -19
  92. claude_mpm/cli/startup.py +481 -0
  93. claude_mpm/cli/utils.py +52 -1
  94. claude_mpm/commands/mpm-agents-detect.md +168 -0
  95. claude_mpm/commands/mpm-agents-recommend.md +214 -0
  96. claude_mpm/commands/mpm-agents.md +75 -1
  97. claude_mpm/commands/mpm-auto-configure.md +217 -0
  98. claude_mpm/commands/mpm-help.md +163 -0
  99. claude_mpm/commands/mpm-init.md +148 -3
  100. claude_mpm/commands/mpm-version.md +113 -0
  101. claude_mpm/commands/mpm.md +1 -0
  102. claude_mpm/config/agent_config.py +2 -2
  103. claude_mpm/config/model_config.py +428 -0
  104. claude_mpm/constants.py +1 -0
  105. claude_mpm/core/base_service.py +13 -12
  106. claude_mpm/core/enums.py +452 -0
  107. claude_mpm/core/factories.py +1 -1
  108. claude_mpm/core/instruction_reinforcement_hook.py +2 -1
  109. claude_mpm/core/interactive_session.py +9 -3
  110. claude_mpm/core/log_manager.py +2 -0
  111. claude_mpm/core/logging_config.py +6 -2
  112. claude_mpm/core/oneshot_session.py +8 -4
  113. claude_mpm/core/optimized_agent_loader.py +3 -3
  114. claude_mpm/core/output_style_manager.py +12 -192
  115. claude_mpm/core/service_registry.py +5 -1
  116. claude_mpm/core/types.py +2 -9
  117. claude_mpm/core/typing_utils.py +7 -6
  118. claude_mpm/dashboard/static/js/dashboard.js +0 -14
  119. claude_mpm/dashboard/templates/index.html +3 -41
  120. claude_mpm/hooks/__init__.py +20 -0
  121. claude_mpm/hooks/claude_hooks/event_handlers.py +4 -2
  122. claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
  123. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +23 -2
  124. claude_mpm/hooks/failure_learning/__init__.py +60 -0
  125. claude_mpm/hooks/failure_learning/failure_detection_hook.py +235 -0
  126. claude_mpm/hooks/failure_learning/fix_detection_hook.py +217 -0
  127. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +286 -0
  128. claude_mpm/hooks/instruction_reinforcement.py +7 -2
  129. claude_mpm/hooks/kuzu_enrichment_hook.py +263 -0
  130. claude_mpm/hooks/kuzu_memory_hook.py +37 -12
  131. claude_mpm/hooks/kuzu_response_hook.py +183 -0
  132. claude_mpm/models/resume_log.py +340 -0
  133. claude_mpm/services/agents/__init__.py +18 -5
  134. claude_mpm/services/agents/auto_config_manager.py +796 -0
  135. claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
  136. claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
  137. claude_mpm/services/agents/deployment/agent_validator.py +17 -1
  138. claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
  139. claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
  140. claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
  141. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +7 -6
  142. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
  143. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
  144. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +5 -3
  145. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
  146. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +9 -6
  147. claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
  148. claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
  149. claude_mpm/services/agents/local_template_manager.py +1 -1
  150. claude_mpm/services/agents/memory/agent_memory_manager.py +5 -2
  151. claude_mpm/services/agents/observers.py +547 -0
  152. claude_mpm/services/agents/recommender.py +568 -0
  153. claude_mpm/services/agents/registry/modification_tracker.py +5 -2
  154. claude_mpm/services/command_handler_service.py +11 -5
  155. claude_mpm/services/core/__init__.py +33 -1
  156. claude_mpm/services/core/interfaces/__init__.py +90 -3
  157. claude_mpm/services/core/interfaces/agent.py +184 -0
  158. claude_mpm/services/core/interfaces/health.py +172 -0
  159. claude_mpm/services/core/interfaces/model.py +281 -0
  160. claude_mpm/services/core/interfaces/process.py +372 -0
  161. claude_mpm/services/core/interfaces/project.py +121 -0
  162. claude_mpm/services/core/interfaces/restart.py +307 -0
  163. claude_mpm/services/core/interfaces/stability.py +260 -0
  164. claude_mpm/services/core/memory_manager.py +11 -24
  165. claude_mpm/services/core/models/__init__.py +79 -0
  166. claude_mpm/services/core/models/agent_config.py +381 -0
  167. claude_mpm/services/core/models/health.py +162 -0
  168. claude_mpm/services/core/models/process.py +235 -0
  169. claude_mpm/services/core/models/restart.py +302 -0
  170. claude_mpm/services/core/models/stability.py +264 -0
  171. claude_mpm/services/core/models/toolchain.py +306 -0
  172. claude_mpm/services/core/path_resolver.py +23 -7
  173. claude_mpm/services/diagnostics/__init__.py +2 -2
  174. claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
  175. claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
  176. claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
  177. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
  178. claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
  179. claude_mpm/services/diagnostics/checks/installation_check.py +30 -29
  180. claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
  181. claude_mpm/services/diagnostics/checks/mcp_check.py +50 -36
  182. claude_mpm/services/diagnostics/checks/mcp_services_check.py +38 -33
  183. claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
  184. claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
  185. claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
  186. claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
  187. claude_mpm/services/diagnostics/models.py +19 -24
  188. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -1
  189. claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
  190. claude_mpm/services/infrastructure/monitoring/base.py +5 -13
  191. claude_mpm/services/infrastructure/monitoring/network.py +7 -6
  192. claude_mpm/services/infrastructure/monitoring/process.py +13 -12
  193. claude_mpm/services/infrastructure/monitoring/resources.py +7 -6
  194. claude_mpm/services/infrastructure/monitoring/service.py +16 -15
  195. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  196. claude_mpm/services/local_ops/__init__.py +163 -0
  197. claude_mpm/services/local_ops/crash_detector.py +257 -0
  198. claude_mpm/services/local_ops/health_checks/__init__.py +28 -0
  199. claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
  200. claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
  201. claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
  202. claude_mpm/services/local_ops/health_manager.py +430 -0
  203. claude_mpm/services/local_ops/log_monitor.py +396 -0
  204. claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
  205. claude_mpm/services/local_ops/process_manager.py +595 -0
  206. claude_mpm/services/local_ops/resource_monitor.py +331 -0
  207. claude_mpm/services/local_ops/restart_manager.py +401 -0
  208. claude_mpm/services/local_ops/restart_policy.py +387 -0
  209. claude_mpm/services/local_ops/state_manager.py +372 -0
  210. claude_mpm/services/local_ops/unified_manager.py +600 -0
  211. claude_mpm/services/mcp_config_manager.py +9 -4
  212. claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
  213. claude_mpm/services/mcp_gateway/core/base.py +18 -31
  214. claude_mpm/services/mcp_gateway/main.py +30 -0
  215. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +206 -32
  216. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +30 -28
  217. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +25 -5
  218. claude_mpm/services/mcp_service_verifier.py +1 -1
  219. claude_mpm/services/memory/failure_tracker.py +563 -0
  220. claude_mpm/services/memory_hook_service.py +165 -4
  221. claude_mpm/services/model/__init__.py +147 -0
  222. claude_mpm/services/model/base_provider.py +365 -0
  223. claude_mpm/services/model/claude_provider.py +412 -0
  224. claude_mpm/services/model/model_router.py +453 -0
  225. claude_mpm/services/model/ollama_provider.py +415 -0
  226. claude_mpm/services/monitor/daemon_manager.py +3 -2
  227. claude_mpm/services/monitor/handlers/dashboard.py +2 -1
  228. claude_mpm/services/monitor/handlers/hooks.py +2 -1
  229. claude_mpm/services/monitor/management/lifecycle.py +3 -2
  230. claude_mpm/services/monitor/server.py +2 -1
  231. claude_mpm/services/project/__init__.py +23 -0
  232. claude_mpm/services/project/detection_strategies.py +719 -0
  233. claude_mpm/services/project/toolchain_analyzer.py +581 -0
  234. claude_mpm/services/self_upgrade_service.py +342 -0
  235. claude_mpm/services/session_management_service.py +3 -2
  236. claude_mpm/services/session_manager.py +205 -1
  237. claude_mpm/services/shared/async_service_base.py +16 -27
  238. claude_mpm/services/shared/lifecycle_service_base.py +1 -14
  239. claude_mpm/services/socketio/handlers/__init__.py +5 -2
  240. claude_mpm/services/socketio/handlers/hook.py +13 -2
  241. claude_mpm/services/socketio/handlers/registry.py +4 -2
  242. claude_mpm/services/socketio/server/main.py +10 -8
  243. claude_mpm/services/subprocess_launcher_service.py +14 -5
  244. claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +8 -7
  245. claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +6 -5
  246. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +8 -7
  247. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +7 -6
  248. claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +5 -4
  249. claude_mpm/services/unified/config_strategies/validation_strategy.py +13 -9
  250. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +10 -3
  251. claude_mpm/services/unified/deployment_strategies/local.py +6 -5
  252. claude_mpm/services/unified/deployment_strategies/utils.py +6 -5
  253. claude_mpm/services/unified/deployment_strategies/vercel.py +7 -6
  254. claude_mpm/services/unified/interfaces.py +3 -1
  255. claude_mpm/services/unified/unified_analyzer.py +14 -10
  256. claude_mpm/services/unified/unified_config.py +2 -1
  257. claude_mpm/services/unified/unified_deployment.py +9 -4
  258. claude_mpm/services/version_service.py +104 -1
  259. claude_mpm/skills/__init__.py +21 -0
  260. claude_mpm/skills/bundled/__init__.py +6 -0
  261. claude_mpm/skills/bundled/api-documentation.md +393 -0
  262. claude_mpm/skills/bundled/async-testing.md +571 -0
  263. claude_mpm/skills/bundled/code-review.md +143 -0
  264. claude_mpm/skills/bundled/database-migration.md +199 -0
  265. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  266. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  267. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  268. claude_mpm/skills/bundled/git-workflow.md +414 -0
  269. claude_mpm/skills/bundled/imagemagick.md +204 -0
  270. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  271. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  272. claude_mpm/skills/bundled/pdf.md +141 -0
  273. claude_mpm/skills/bundled/performance-profiling.md +567 -0
  274. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  275. claude_mpm/skills/bundled/security-scanning.md +327 -0
  276. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  277. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  278. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  279. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  280. claude_mpm/skills/bundled/xlsx.md +157 -0
  281. claude_mpm/skills/registry.py +286 -0
  282. claude_mpm/skills/skill_manager.py +310 -0
  283. claude_mpm/storage/state_storage.py +15 -15
  284. claude_mpm/tools/code_tree_analyzer.py +177 -141
  285. claude_mpm/tools/code_tree_events.py +4 -2
  286. claude_mpm/utils/agent_dependency_loader.py +40 -20
  287. claude_mpm/utils/display_helper.py +260 -0
  288. claude_mpm/utils/git_analyzer.py +407 -0
  289. claude_mpm/utils/robust_installer.py +73 -19
  290. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/METADATA +129 -12
  291. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/RECORD +295 -193
  292. claude_mpm/dashboard/static/css/code-tree.css +0 -1639
  293. claude_mpm/dashboard/static/index-hub-backup.html +0 -713
  294. claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
  295. claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
  296. claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
  297. claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
  298. claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
  299. claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
  300. claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
  301. claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1041
  302. claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
  303. claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
  304. claude_mpm/services/project/analyzer_refactored.py +0 -450
  305. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/WHEEL +0 -0
  306. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/entry_points.txt +0 -0
  307. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/licenses/LICENSE +0 -0
  308. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,8 @@ WHY: Verify that agents are properly deployed, up-to-date, and functioning corre
6
6
 
7
7
  from pathlib import Path
8
8
 
9
- from ..models import DiagnosticResult, DiagnosticStatus
9
+ from ....core.enums import OperationResult, ValidationSeverity
10
+ from ..models import DiagnosticResult
10
11
  from .base_check import BaseDiagnosticCheck
11
12
 
12
13
 
@@ -64,29 +65,29 @@ class AgentCheck(BaseDiagnosticCheck):
64
65
  available_count = details["available_count"]
65
66
 
66
67
  if deployed_count == 0:
67
- status = DiagnosticStatus.ERROR
68
+ status = ValidationSeverity.ERROR
68
69
  message = f"No agents deployed (0/{available_count} available)"
69
70
  fix_command = "claude-mpm agents deploy"
70
71
  fix_description = "Deploy all available agents"
71
72
  elif deployed_count < available_count:
72
- status = DiagnosticStatus.WARNING
73
+ status = ValidationSeverity.WARNING
73
74
  message = f"{deployed_count}/{available_count} agents deployed"
74
75
  fix_command = "claude-mpm agents deploy"
75
76
  fix_description = (
76
77
  f"Deploy remaining {available_count - deployed_count} agents"
77
78
  )
78
- elif any(r.status == DiagnosticStatus.ERROR for r in sub_results):
79
- status = DiagnosticStatus.ERROR
79
+ elif any(r.status == ValidationSeverity.ERROR for r in sub_results):
80
+ status = ValidationSeverity.ERROR
80
81
  message = "Agents have critical issues"
81
82
  fix_command = None
82
83
  fix_description = None
83
- elif any(r.status == DiagnosticStatus.WARNING for r in sub_results):
84
- status = DiagnosticStatus.WARNING
84
+ elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
85
+ status = ValidationSeverity.WARNING
85
86
  message = "Agents have minor issues"
86
87
  fix_command = None
87
88
  fix_description = None
88
89
  else:
89
- status = DiagnosticStatus.OK
90
+ status = OperationResult.SUCCESS
90
91
  message = f"All {deployed_count} agents properly deployed"
91
92
  fix_command = None
92
93
  fix_description = None
@@ -104,7 +105,7 @@ class AgentCheck(BaseDiagnosticCheck):
104
105
  except Exception as e:
105
106
  return DiagnosticResult(
106
107
  category=self.category,
107
- status=DiagnosticStatus.ERROR,
108
+ status=ValidationSeverity.ERROR,
108
109
  message=f"Agent check failed: {e!s}",
109
110
  details={"error": str(e)},
110
111
  )
@@ -127,7 +128,7 @@ class AgentCheck(BaseDiagnosticCheck):
127
128
  # Neither exists, default to user directory for error message
128
129
  return DiagnosticResult(
129
130
  category="Deployed Agents",
130
- status=DiagnosticStatus.ERROR,
131
+ status=ValidationSeverity.ERROR,
131
132
  message="No agents directory found (checked project and user)",
132
133
  details={
133
134
  "project_path": str(project_agents_dir),
@@ -144,7 +145,7 @@ class AgentCheck(BaseDiagnosticCheck):
144
145
  if not agent_files:
145
146
  return DiagnosticResult(
146
147
  category="Deployed Agents",
147
- status=DiagnosticStatus.ERROR,
148
+ status=ValidationSeverity.ERROR,
148
149
  message=f"No agents deployed in {location} directory",
149
150
  details={"path": str(agents_dir), "location": location, "count": 0},
150
151
  fix_command="claude-mpm agents deploy",
@@ -159,7 +160,7 @@ class AgentCheck(BaseDiagnosticCheck):
159
160
  if missing_core:
160
161
  return DiagnosticResult(
161
162
  category="Deployed Agents",
162
- status=DiagnosticStatus.WARNING,
163
+ status=ValidationSeverity.WARNING,
163
164
  message=f"Missing core agents in {location}: {', '.join(missing_core)}",
164
165
  details={
165
166
  "path": str(agents_dir),
@@ -174,7 +175,7 @@ class AgentCheck(BaseDiagnosticCheck):
174
175
 
175
176
  return DiagnosticResult(
176
177
  category="Deployed Agents",
177
- status=DiagnosticStatus.OK,
178
+ status=OperationResult.SUCCESS,
178
179
  message=f"{len(agent_files)} agents deployed ({location} level)",
179
180
  details={
180
181
  "path": str(agents_dir),
@@ -205,7 +206,7 @@ class AgentCheck(BaseDiagnosticCheck):
205
206
  else:
206
207
  return DiagnosticResult(
207
208
  category="Agent Versions",
208
- status=DiagnosticStatus.SKIPPED,
209
+ status=OperationResult.SKIPPED,
209
210
  message="No agents to check",
210
211
  details={},
211
212
  )
@@ -224,7 +225,7 @@ class AgentCheck(BaseDiagnosticCheck):
224
225
  if outdated:
225
226
  return DiagnosticResult(
226
227
  category="Agent Versions",
227
- status=DiagnosticStatus.WARNING,
228
+ status=ValidationSeverity.WARNING,
228
229
  message=f"{len(outdated)} agent(s) outdated",
229
230
  details={"outdated": outdated, "checked": checked},
230
231
  fix_command="claude-mpm agents update",
@@ -234,14 +235,14 @@ class AgentCheck(BaseDiagnosticCheck):
234
235
  if checked == 0:
235
236
  return DiagnosticResult(
236
237
  category="Agent Versions",
237
- status=DiagnosticStatus.WARNING,
238
+ status=ValidationSeverity.WARNING,
238
239
  message="No agents to check",
239
240
  details={"checked": 0},
240
241
  )
241
242
 
242
243
  return DiagnosticResult(
243
244
  category="Agent Versions",
244
- status=DiagnosticStatus.OK,
245
+ status=OperationResult.SUCCESS,
245
246
  message=f"All {checked} agents up-to-date",
246
247
  details={"checked": checked},
247
248
  )
@@ -249,7 +250,7 @@ class AgentCheck(BaseDiagnosticCheck):
249
250
  except Exception as e:
250
251
  return DiagnosticResult(
251
252
  category="Agent Versions",
252
- status=DiagnosticStatus.WARNING,
253
+ status=ValidationSeverity.WARNING,
253
254
  message=f"Could not check versions: {e!s}",
254
255
  details={"error": str(e)},
255
256
  )
@@ -273,7 +274,7 @@ class AgentCheck(BaseDiagnosticCheck):
273
274
  else:
274
275
  return DiagnosticResult(
275
276
  category="Agent Validation",
276
- status=DiagnosticStatus.SKIPPED,
277
+ status=OperationResult.SKIPPED,
277
278
  message="No agents to validate",
278
279
  details={},
279
280
  )
@@ -301,14 +302,14 @@ class AgentCheck(BaseDiagnosticCheck):
301
302
  if invalid:
302
303
  return DiagnosticResult(
303
304
  category="Agent Validation",
304
- status=DiagnosticStatus.WARNING,
305
+ status=ValidationSeverity.WARNING,
305
306
  message=f"{len(invalid)} validation issue(s)",
306
307
  details={"issues": invalid, "validated": validated},
307
308
  )
308
309
 
309
310
  return DiagnosticResult(
310
311
  category="Agent Validation",
311
- status=DiagnosticStatus.OK,
312
+ status=OperationResult.SUCCESS,
312
313
  message=f"All {validated} agents valid",
313
314
  details={"validated": validated},
314
315
  )
@@ -316,7 +317,7 @@ class AgentCheck(BaseDiagnosticCheck):
316
317
  except Exception as e:
317
318
  return DiagnosticResult(
318
319
  category="Agent Validation",
319
- status=DiagnosticStatus.WARNING,
320
+ status=ValidationSeverity.WARNING,
320
321
  message=f"Validation failed: {e!s}",
321
322
  details={"error": str(e)},
322
323
  )
@@ -358,14 +359,14 @@ class AgentCheck(BaseDiagnosticCheck):
358
359
  if issues:
359
360
  return DiagnosticResult(
360
361
  category="Common Issues",
361
- status=DiagnosticStatus.WARNING,
362
+ status=ValidationSeverity.WARNING,
362
363
  message=f"{len(issues)} issue(s) found",
363
364
  details={"issues": issues},
364
365
  )
365
366
 
366
367
  return DiagnosticResult(
367
368
  category="Common Issues",
368
- status=DiagnosticStatus.OK,
369
+ status=OperationResult.SUCCESS,
369
370
  message="No common issues detected",
370
371
  details={},
371
372
  )
@@ -9,7 +9,8 @@ import json
9
9
  import subprocess
10
10
  from pathlib import Path
11
11
 
12
- from ..models import DiagnosticResult, DiagnosticStatus
12
+ from ....core.enums import OperationResult, ValidationSeverity
13
+ from ..models import DiagnosticResult
13
14
  from .base_check import BaseDiagnosticCheck
14
15
 
15
16
 
@@ -33,9 +34,9 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
33
34
  # Check if Claude Code CLI is installed
34
35
  install_result = self._check_installation()
35
36
  sub_results.append(install_result)
36
- details["installed"] = install_result.status == DiagnosticStatus.OK
37
+ details["installed"] = install_result.status == OperationResult.SUCCESS
37
38
 
38
- if install_result.status == DiagnosticStatus.OK:
39
+ if install_result.status == OperationResult.SUCCESS:
39
40
  # Check version compatibility
40
41
  version_result = self._check_version()
41
42
  sub_results.append(version_result)
@@ -49,17 +50,17 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
49
50
  # Check MCP integration
50
51
  mcp_result = self._check_mcp_integration()
51
52
  sub_results.append(mcp_result)
52
- details["mcp_configured"] = mcp_result.status == DiagnosticStatus.OK
53
+ details["mcp_configured"] = mcp_result.status == OperationResult.SUCCESS
53
54
 
54
55
  # Determine overall status
55
- if any(r.status == DiagnosticStatus.ERROR for r in sub_results):
56
- status = DiagnosticStatus.ERROR
56
+ if any(r.status == ValidationSeverity.ERROR for r in sub_results):
57
+ status = ValidationSeverity.ERROR
57
58
  message = "Claude Code CLI has critical issues"
58
- elif any(r.status == DiagnosticStatus.WARNING for r in sub_results):
59
- status = DiagnosticStatus.WARNING
59
+ elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
60
+ status = ValidationSeverity.WARNING
60
61
  message = "Claude Code CLI needs configuration"
61
62
  else:
62
- status = DiagnosticStatus.OK
63
+ status = OperationResult.SUCCESS
63
64
  message = "Claude Code CLI properly configured"
64
65
 
65
66
  return DiagnosticResult(
@@ -73,7 +74,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
73
74
  except Exception as e:
74
75
  return DiagnosticResult(
75
76
  category=self.category,
76
- status=DiagnosticStatus.ERROR,
77
+ status=ValidationSeverity.ERROR,
77
78
  message=f"Claude Code CLI check failed: {e!s}",
78
79
  details={"error": str(e)},
79
80
  )
@@ -92,7 +93,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
92
93
  if result.returncode == 0:
93
94
  return DiagnosticResult(
94
95
  category="Claude Code CLI Installation",
95
- status=DiagnosticStatus.OK,
96
+ status=OperationResult.SUCCESS,
96
97
  message="Claude Code CLI is installed and accessible",
97
98
  details={
98
99
  "installed": True,
@@ -115,14 +116,14 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
115
116
  if path.exists() and path.is_file():
116
117
  return DiagnosticResult(
117
118
  category="Claude Code CLI Installation",
118
- status=DiagnosticStatus.OK,
119
+ status=OperationResult.SUCCESS,
119
120
  message=f"Claude Code CLI found at {path}",
120
121
  details={"installed": True, "path": str(path)},
121
122
  )
122
123
 
123
124
  return DiagnosticResult(
124
125
  category="Claude Code CLI Installation",
125
- status=DiagnosticStatus.ERROR,
126
+ status=ValidationSeverity.ERROR,
126
127
  message="Claude Code CLI not found",
127
128
  details={"installed": False},
128
129
  fix_description="Install Claude Code CLI from https://claude.ai/code",
@@ -150,7 +151,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
150
151
  break
151
152
 
152
153
  # Check minimum version requirement (1.0.60+)
153
- status = DiagnosticStatus.OK
154
+ status = OperationResult.SUCCESS
154
155
  message = f"Version: {version}"
155
156
 
156
157
  return DiagnosticResult(
@@ -166,7 +167,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
166
167
  except subprocess.SubprocessError as e:
167
168
  return DiagnosticResult(
168
169
  category="Claude Code CLI Version",
169
- status=DiagnosticStatus.WARNING,
170
+ status=ValidationSeverity.WARNING,
170
171
  message=f"Could not determine version: {e}",
171
172
  details={"version": "unknown", "error": str(e)},
172
173
  )
@@ -178,7 +179,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
178
179
  if not style_path.exists():
179
180
  return DiagnosticResult(
180
181
  category="Output Style",
181
- status=DiagnosticStatus.WARNING,
182
+ status=ValidationSeverity.WARNING,
182
183
  message="Output style not deployed",
183
184
  details={"deployed": False, "path": str(style_path)},
184
185
  fix_command="claude-mpm deploy-style",
@@ -192,13 +193,13 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
192
193
  if "Claude MPM Output Style" in content:
193
194
  return DiagnosticResult(
194
195
  category="Output Style",
195
- status=DiagnosticStatus.OK,
196
+ status=OperationResult.SUCCESS,
196
197
  message="Output style deployed",
197
198
  details={"deployed": True, "path": str(style_path)},
198
199
  )
199
200
  return DiagnosticResult(
200
201
  category="Output Style",
201
- status=DiagnosticStatus.WARNING,
202
+ status=ValidationSeverity.WARNING,
202
203
  message="Output style outdated",
203
204
  details={
204
205
  "deployed": True,
@@ -211,7 +212,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
211
212
  except Exception as e:
212
213
  return DiagnosticResult(
213
214
  category="Output Style",
214
- status=DiagnosticStatus.WARNING,
215
+ status=ValidationSeverity.WARNING,
215
216
  message=f"Could not check output style: {e!s}",
216
217
  details={"error": str(e)},
217
218
  )
@@ -224,7 +225,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
224
225
  if not config_path.exists():
225
226
  return DiagnosticResult(
226
227
  category="MCP Integration",
227
- status=DiagnosticStatus.WARNING,
228
+ status=ValidationSeverity.WARNING,
228
229
  message="Claude Code CLI config not found",
229
230
  details={"configured": False, "config_path": str(config_path)},
230
231
  fix_command="claude-mpm mcp install",
@@ -239,7 +240,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
239
240
  if "claude-mpm-gateway" in mcp_servers or "claude-mpm" in mcp_servers:
240
241
  return DiagnosticResult(
241
242
  category="MCP Integration",
242
- status=DiagnosticStatus.OK,
243
+ status=OperationResult.SUCCESS,
243
244
  message="MCP server configured",
244
245
  details={
245
246
  "configured": True,
@@ -249,7 +250,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
249
250
  )
250
251
  return DiagnosticResult(
251
252
  category="MCP Integration",
252
- status=DiagnosticStatus.WARNING,
253
+ status=ValidationSeverity.WARNING,
253
254
  message="MCP server not configured",
254
255
  details={
255
256
  "configured": False,
@@ -263,7 +264,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
263
264
  except Exception as e:
264
265
  return DiagnosticResult(
265
266
  category="MCP Integration",
266
- status=DiagnosticStatus.WARNING,
267
+ status=ValidationSeverity.WARNING,
267
268
  message=f"Could not check MCP configuration: {e!s}",
268
269
  details={"error": str(e)},
269
270
  )
@@ -8,7 +8,8 @@ providing specific fixes for each issue.
8
8
  import json
9
9
  from pathlib import Path
10
10
 
11
- from ..models import DiagnosticResult, DiagnosticStatus
11
+ from ....core.enums import OperationResult, ValidationSeverity
12
+ from ..models import DiagnosticResult
12
13
  from .base_check import BaseDiagnosticCheck
13
14
 
14
15
 
@@ -33,7 +34,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
33
34
  # Check for large .claude.json file
34
35
  claude_json_result = self._check_claude_json_size()
35
36
  if claude_json_result.has_issues:
36
- if claude_json_result.status == DiagnosticStatus.ERROR:
37
+ if claude_json_result.status == ValidationSeverity.ERROR:
37
38
  issues_found.append(claude_json_result)
38
39
  else:
39
40
  warnings_found.append(claude_json_result)
@@ -62,13 +63,13 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
62
63
  total_issues = len(issues_found) + len(warnings_found)
63
64
 
64
65
  if issues_found:
65
- status = DiagnosticStatus.ERROR
66
+ status = ValidationSeverity.ERROR
66
67
  message = f"{len(issues_found)} critical issue(s), {len(warnings_found)} warning(s)"
67
68
  elif warnings_found:
68
- status = DiagnosticStatus.WARNING
69
+ status = ValidationSeverity.WARNING
69
70
  message = f"{len(warnings_found)} known issue(s) detected"
70
71
  else:
71
- status = DiagnosticStatus.OK
72
+ status = OperationResult.SUCCESS
72
73
  message = "No known issues detected"
73
74
 
74
75
  details = {
@@ -90,7 +91,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
90
91
  except Exception as e:
91
92
  return DiagnosticResult(
92
93
  category=self.category,
93
- status=DiagnosticStatus.ERROR,
94
+ status=ValidationSeverity.ERROR,
94
95
  message=f"Common issues check failed: {e!s}",
95
96
  details={"error": str(e)},
96
97
  )
@@ -102,7 +103,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
102
103
  if not claude_json_path.exists():
103
104
  return DiagnosticResult(
104
105
  category="Large .claude.json",
105
- status=DiagnosticStatus.OK,
106
+ status=OperationResult.SUCCESS,
106
107
  message="No .claude.json file",
107
108
  details={"exists": False},
108
109
  )
@@ -131,7 +132,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
131
132
  if size_mb > 10: # Critical: >10MB
132
133
  return DiagnosticResult(
133
134
  category="Large .claude.json",
134
- status=DiagnosticStatus.ERROR,
135
+ status=ValidationSeverity.ERROR,
135
136
  message=f"Critical: .claude.json is {size_mb:.1f}MB (causes memory issues)",
136
137
  details=details,
137
138
  fix_command="claude-mpm cleanup-memory",
@@ -140,7 +141,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
140
141
  if size_mb > 1: # Warning: >1MB
141
142
  return DiagnosticResult(
142
143
  category="Large .claude.json",
143
- status=DiagnosticStatus.WARNING,
144
+ status=ValidationSeverity.WARNING,
144
145
  message=f".claude.json is {size_mb:.1f}MB (may cause memory issues)",
145
146
  details=details,
146
147
  fix_command="claude-mpm cleanup-memory",
@@ -149,7 +150,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
149
150
 
150
151
  return DiagnosticResult(
151
152
  category="Large .claude.json",
152
- status=DiagnosticStatus.OK,
153
+ status=OperationResult.SUCCESS,
153
154
  message=f".claude.json size acceptable ({size_mb:.2f}MB)",
154
155
  details=details,
155
156
  )
@@ -157,7 +158,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
157
158
  except Exception as e:
158
159
  return DiagnosticResult(
159
160
  category="Large .claude.json",
160
- status=DiagnosticStatus.WARNING,
161
+ status=ValidationSeverity.WARNING,
161
162
  message=f"Could not check .claude.json: {e!s}",
162
163
  details={"error": str(e)},
163
164
  )
@@ -170,7 +171,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
170
171
  if not memory_dir.exists():
171
172
  return DiagnosticResult(
172
173
  category="Memory Usage",
173
- status=DiagnosticStatus.OK,
174
+ status=OperationResult.SUCCESS,
174
175
  message="No project memory directory",
175
176
  details={"exists": False, "path": str(memory_dir)},
176
177
  )
@@ -200,7 +201,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
200
201
  if size_mb > 100: # >100MB of memory files
201
202
  return DiagnosticResult(
202
203
  category="Memory Usage",
203
- status=DiagnosticStatus.WARNING,
204
+ status=ValidationSeverity.WARNING,
204
205
  message=f"High memory usage: {size_mb:.1f}MB in {len(memory_files)} files",
205
206
  details=details,
206
207
  fix_command="claude-mpm memory clean --days 30",
@@ -209,7 +210,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
209
210
  if old_files:
210
211
  return DiagnosticResult(
211
212
  category="Memory Usage",
212
- status=DiagnosticStatus.WARNING,
213
+ status=ValidationSeverity.WARNING,
213
214
  message=f"{len(old_files)} memory file(s) older than 30 days",
214
215
  details=details,
215
216
  fix_command="claude-mpm memory clean --days 30",
@@ -218,7 +219,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
218
219
 
219
220
  return DiagnosticResult(
220
221
  category="Memory Usage",
221
- status=DiagnosticStatus.OK,
222
+ status=OperationResult.SUCCESS,
222
223
  message=f"Memory usage normal ({size_mb:.1f}MB)",
223
224
  details=details,
224
225
  )
@@ -226,7 +227,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
226
227
  except Exception as e:
227
228
  return DiagnosticResult(
228
229
  category="Memory Usage",
229
- status=DiagnosticStatus.WARNING,
230
+ status=ValidationSeverity.WARNING,
230
231
  message=f"Could not check memory: {e!s}",
231
232
  details={"error": str(e)},
232
233
  )
@@ -257,7 +258,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
257
258
  if stale_locks:
258
259
  return DiagnosticResult(
259
260
  category="Lock Files",
260
- status=DiagnosticStatus.WARNING,
261
+ status=ValidationSeverity.WARNING,
261
262
  message=f"{len(stale_locks)} stale lock file(s) found",
262
263
  details={"stale_locks": stale_locks},
263
264
  fix_command=f"rm {' '.join(stale_locks)}",
@@ -266,7 +267,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
266
267
 
267
268
  return DiagnosticResult(
268
269
  category="Lock Files",
269
- status=DiagnosticStatus.OK,
270
+ status=OperationResult.SUCCESS,
270
271
  message="No stale lock files",
271
272
  details={"stale_locks": []},
272
273
  )
@@ -302,7 +303,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
302
303
  if conflicts:
303
304
  return DiagnosticResult(
304
305
  category="Config Conflicts",
305
- status=DiagnosticStatus.WARNING,
306
+ status=ValidationSeverity.WARNING,
306
307
  message=f"{len(conflicts)} configuration conflict(s)",
307
308
  details={"conflicts": conflicts},
308
309
  fix_description="Resolve conflicting configurations",
@@ -310,7 +311,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
310
311
 
311
312
  return DiagnosticResult(
312
313
  category="Config Conflicts",
313
- status=DiagnosticStatus.OK,
314
+ status=OperationResult.SUCCESS,
314
315
  message="No configuration conflicts",
315
316
  details={"conflicts": []},
316
317
  )
@@ -322,7 +323,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
322
323
  if not cache_dir.exists():
323
324
  return DiagnosticResult(
324
325
  category="Cache",
325
- status=DiagnosticStatus.OK,
326
+ status=OperationResult.SUCCESS,
326
327
  message="No cache directory",
327
328
  details={"exists": False},
328
329
  )
@@ -336,7 +337,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
336
337
  if size_mb > 500: # >500MB cache
337
338
  return DiagnosticResult(
338
339
  category="Cache",
339
- status=DiagnosticStatus.WARNING,
340
+ status=ValidationSeverity.WARNING,
340
341
  message=f"Large cache: {size_mb:.1f}MB",
341
342
  details={
342
343
  "size_mb": round(size_mb, 2),
@@ -348,7 +349,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
348
349
 
349
350
  return DiagnosticResult(
350
351
  category="Cache",
351
- status=DiagnosticStatus.OK,
352
+ status=OperationResult.SUCCESS,
352
353
  message=f"Cache size normal ({size_mb:.1f}MB)",
353
354
  details={"size_mb": round(size_mb, 2), "file_count": len(cache_files)},
354
355
  )
@@ -356,7 +357,7 @@ class CommonIssuesCheck(BaseDiagnosticCheck):
356
357
  except Exception as e:
357
358
  return DiagnosticResult(
358
359
  category="Cache",
359
- status=DiagnosticStatus.WARNING,
360
+ status=ValidationSeverity.WARNING,
360
361
  message=f"Could not check cache: {e!s}",
361
362
  details={"error": str(e)},
362
363
  )