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
@@ -9,7 +9,9 @@ import json
9
9
  import subprocess
10
10
  from pathlib import Path
11
11
 
12
- from ..models import DiagnosticResult, DiagnosticStatus
12
+ from claude_mpm.core.enums import OperationResult, ServiceState, ValidationSeverity
13
+
14
+ from ..models import DiagnosticResult
13
15
  from .base_check import BaseDiagnosticCheck
14
16
 
15
17
 
@@ -34,13 +36,13 @@ class MCPCheck(BaseDiagnosticCheck):
34
36
  # Check if MCP is installed
35
37
  install_result = self._check_installation()
36
38
  sub_results.append(install_result)
37
- details["installed"] = install_result.status == DiagnosticStatus.OK
39
+ details["installed"] = install_result.status == OperationResult.SUCCESS
38
40
 
39
- if install_result.status == DiagnosticStatus.OK:
41
+ if install_result.status == OperationResult.SUCCESS:
40
42
  # Check MCP configuration
41
43
  config_result = self._check_configuration()
42
44
  sub_results.append(config_result)
43
- details["configured"] = config_result.status == DiagnosticStatus.OK
45
+ details["configured"] = config_result.status == OperationResult.SUCCESS
44
46
 
45
47
  # Check MCP server status
46
48
  status_result = self._check_server_status()
@@ -52,17 +54,17 @@ class MCPCheck(BaseDiagnosticCheck):
52
54
  sub_results.append(startup_result)
53
55
 
54
56
  # Determine overall status
55
- if any(r.status == DiagnosticStatus.ERROR for r in sub_results):
56
- status = DiagnosticStatus.ERROR
57
+ if any(r.status == ValidationSeverity.ERROR for r in sub_results):
58
+ status = ValidationSeverity.ERROR
57
59
  message = "MCP server has critical issues"
58
60
  elif not details.get("installed", False):
59
- status = DiagnosticStatus.WARNING
61
+ status = ValidationSeverity.WARNING
60
62
  message = "MCP server not installed"
61
- elif any(r.status == DiagnosticStatus.WARNING for r in sub_results):
62
- status = DiagnosticStatus.WARNING
63
+ elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
64
+ status = ValidationSeverity.WARNING
63
65
  message = "MCP server needs configuration"
64
66
  else:
65
- status = DiagnosticStatus.OK
67
+ status = OperationResult.SUCCESS
66
68
  message = "MCP server properly configured"
67
69
 
68
70
  return DiagnosticResult(
@@ -76,7 +78,7 @@ class MCPCheck(BaseDiagnosticCheck):
76
78
  except Exception as e:
77
79
  return DiagnosticResult(
78
80
  category=self.category,
79
- status=DiagnosticStatus.ERROR,
81
+ status=ValidationSeverity.ERROR,
80
82
  message=f"MCP check failed: {e!s}",
81
83
  details={"error": str(e)},
82
84
  )
@@ -94,7 +96,7 @@ class MCPCheck(BaseDiagnosticCheck):
94
96
  if mcp_path.exists():
95
97
  return DiagnosticResult(
96
98
  category="MCP Installation",
97
- status=DiagnosticStatus.OK,
99
+ status=OperationResult.SUCCESS,
98
100
  message="MCP server installed",
99
101
  details={"path": str(mcp_path), "installed": True},
100
102
  )
@@ -112,7 +114,7 @@ class MCPCheck(BaseDiagnosticCheck):
112
114
  path = result.stdout.strip()
113
115
  return DiagnosticResult(
114
116
  category="MCP Installation",
115
- status=DiagnosticStatus.OK,
117
+ status=OperationResult.SUCCESS,
116
118
  message="MCP server installed",
117
119
  details={"path": path, "installed": True},
118
120
  )
@@ -121,7 +123,7 @@ class MCPCheck(BaseDiagnosticCheck):
121
123
 
122
124
  return DiagnosticResult(
123
125
  category="MCP Installation",
124
- status=DiagnosticStatus.WARNING,
126
+ status=ValidationSeverity.WARNING,
125
127
  message="MCP server not installed",
126
128
  details={"installed": False},
127
129
  fix_command="claude-mpm mcp install",
@@ -146,7 +148,7 @@ class MCPCheck(BaseDiagnosticCheck):
146
148
  if not config_path:
147
149
  return DiagnosticResult(
148
150
  category="MCP Configuration",
149
- status=DiagnosticStatus.WARNING,
151
+ status=ValidationSeverity.WARNING,
150
152
  message="Claude Code config not found",
151
153
  details={"configured": False},
152
154
  fix_command="claude-mpm mcp config",
@@ -163,7 +165,7 @@ class MCPCheck(BaseDiagnosticCheck):
163
165
  if not gateway:
164
166
  return DiagnosticResult(
165
167
  category="MCP Configuration",
166
- status=DiagnosticStatus.WARNING,
168
+ status=ValidationSeverity.WARNING,
167
169
  message="MCP gateway not configured",
168
170
  details={"configured": False, "config_path": str(config_path)},
169
171
  fix_command="claude-mpm mcp config",
@@ -175,7 +177,7 @@ class MCPCheck(BaseDiagnosticCheck):
175
177
  if not command:
176
178
  return DiagnosticResult(
177
179
  category="MCP Configuration",
178
- status=DiagnosticStatus.ERROR,
180
+ status=ValidationSeverity.ERROR,
179
181
  message="MCP gateway misconfigured (no command)",
180
182
  details={
181
183
  "configured": True,
@@ -188,7 +190,7 @@ class MCPCheck(BaseDiagnosticCheck):
188
190
 
189
191
  return DiagnosticResult(
190
192
  category="MCP Configuration",
191
- status=DiagnosticStatus.OK,
193
+ status=OperationResult.SUCCESS,
192
194
  message="MCP gateway configured",
193
195
  details={
194
196
  "configured": True,
@@ -200,7 +202,7 @@ class MCPCheck(BaseDiagnosticCheck):
200
202
  except json.JSONDecodeError as e:
201
203
  return DiagnosticResult(
202
204
  category="MCP Configuration",
203
- status=DiagnosticStatus.ERROR,
205
+ status=ValidationSeverity.ERROR,
204
206
  message="Invalid JSON in config file",
205
207
  details={"error": str(e), "config_path": str(config_path)},
206
208
  fix_description="Fix JSON syntax in Claude Code config",
@@ -208,7 +210,7 @@ class MCPCheck(BaseDiagnosticCheck):
208
210
  except Exception as e:
209
211
  return DiagnosticResult(
210
212
  category="MCP Configuration",
211
- status=DiagnosticStatus.WARNING,
213
+ status=ValidationSeverity.WARNING,
212
214
  message=f"Could not check configuration: {e!s}",
213
215
  details={"error": str(e)},
214
216
  )
@@ -226,41 +228,53 @@ class MCPCheck(BaseDiagnosticCheck):
226
228
  )
227
229
 
228
230
  if result.returncode == 0:
229
- if "running" in result.stdout.lower():
231
+ if ServiceState.RUNNING.value in result.stdout.lower():
230
232
  return DiagnosticResult(
231
233
  category="MCP Server Status",
232
- status=DiagnosticStatus.OK,
234
+ status=OperationResult.SUCCESS,
233
235
  message="MCP server is running",
234
- details={"running": True},
236
+ details={"running": True, "state": ServiceState.RUNNING},
235
237
  )
236
238
  return DiagnosticResult(
237
239
  category="MCP Server Status",
238
- status=DiagnosticStatus.WARNING,
240
+ status=ValidationSeverity.WARNING,
239
241
  message="MCP server not running",
240
- details={"running": False},
242
+ details={"running": False, "state": ServiceState.STOPPED},
241
243
  fix_command="claude-mpm mcp start",
242
244
  fix_description="Start the MCP server",
243
245
  )
244
246
  return DiagnosticResult(
245
247
  category="MCP Server Status",
246
- status=DiagnosticStatus.WARNING,
248
+ status=ValidationSeverity.WARNING,
247
249
  message="Could not determine server status",
248
- details={"running": "unknown", "error": result.stderr},
250
+ details={
251
+ "running": "unknown",
252
+ "state": ServiceState.UNKNOWN,
253
+ "error": result.stderr,
254
+ },
249
255
  )
250
256
 
251
257
  except subprocess.TimeoutExpired:
252
258
  return DiagnosticResult(
253
259
  category="MCP Server Status",
254
- status=DiagnosticStatus.WARNING,
260
+ status=ValidationSeverity.WARNING,
255
261
  message="Server status check timed out",
256
- details={"running": "unknown", "error": "timeout"},
262
+ details={
263
+ "running": "unknown",
264
+ "state": ServiceState.UNKNOWN,
265
+ "error": "timeout",
266
+ },
257
267
  )
258
268
  except Exception as e:
259
269
  return DiagnosticResult(
260
270
  category="MCP Server Status",
261
- status=DiagnosticStatus.WARNING,
271
+ status=ValidationSeverity.WARNING,
262
272
  message=f"Could not check server status: {e!s}",
263
- details={"running": "unknown", "error": str(e)},
273
+ details={
274
+ "running": "unknown",
275
+ "state": ServiceState.UNKNOWN,
276
+ "error": str(e),
277
+ },
264
278
  )
265
279
 
266
280
  def _check_startup_verification(self) -> DiagnosticResult:
@@ -276,7 +290,7 @@ class MCPCheck(BaseDiagnosticCheck):
276
290
  if not issues:
277
291
  return DiagnosticResult(
278
292
  category="MCP Startup Verification",
279
- status=DiagnosticStatus.OK,
293
+ status=OperationResult.SUCCESS,
280
294
  message="Startup verification passed",
281
295
  details={"issues": []},
282
296
  )
@@ -290,20 +304,20 @@ class MCPCheck(BaseDiagnosticCheck):
290
304
  if errors:
291
305
  return DiagnosticResult(
292
306
  category="MCP Startup Verification",
293
- status=DiagnosticStatus.ERROR,
307
+ status=ValidationSeverity.ERROR,
294
308
  message=f"{len(errors)} critical issue(s) found",
295
309
  details={"errors": errors, "warnings": warnings},
296
310
  )
297
311
  if warnings:
298
312
  return DiagnosticResult(
299
313
  category="MCP Startup Verification",
300
- status=DiagnosticStatus.WARNING,
314
+ status=ValidationSeverity.WARNING,
301
315
  message=f"{len(warnings)} warning(s) found",
302
316
  details={"warnings": warnings},
303
317
  )
304
318
  return DiagnosticResult(
305
319
  category="MCP Startup Verification",
306
- status=DiagnosticStatus.OK,
320
+ status=OperationResult.SUCCESS,
307
321
  message="Startup verification passed",
308
322
  details={"issues": []},
309
323
  )
@@ -311,7 +325,7 @@ class MCPCheck(BaseDiagnosticCheck):
311
325
  except Exception as e:
312
326
  return DiagnosticResult(
313
327
  category="MCP Startup Verification",
314
- status=DiagnosticStatus.WARNING,
328
+ status=ValidationSeverity.WARNING,
315
329
  message=f"Could not verify startup: {e!s}",
316
330
  details={"error": str(e)},
317
331
  )
@@ -14,7 +14,8 @@ from typing import Dict, List, Optional, Tuple
14
14
 
15
15
  from claude_mpm.core.logger import get_logger
16
16
 
17
- from ..models import DiagnosticResult, DiagnosticStatus
17
+ from ....core.enums import OperationResult, ValidationSeverity
18
+ from ..models import DiagnosticResult
18
19
  from .base_check import BaseDiagnosticCheck
19
20
 
20
21
 
@@ -116,7 +117,9 @@ class MCPServicesCheck(BaseDiagnosticCheck):
116
117
  fix_result = DiagnosticResult(
117
118
  category="MCP Service Fixes",
118
119
  status=(
119
- DiagnosticStatus.OK if fix_success else DiagnosticStatus.WARNING
120
+ OperationResult.SUCCESS
121
+ if fix_success
122
+ else ValidationSeverity.WARNING
120
123
  ),
121
124
  message=fix_message,
122
125
  details={"auto_fix_applied": True},
@@ -134,9 +137,9 @@ class MCPServicesCheck(BaseDiagnosticCheck):
134
137
  config_result = DiagnosticResult(
135
138
  category="MCP Configuration Update",
136
139
  status=(
137
- DiagnosticStatus.OK
140
+ OperationResult.SUCCESS
138
141
  if config_success
139
- else DiagnosticStatus.WARNING
142
+ else ValidationSeverity.WARNING
140
143
  ),
141
144
  message=config_message,
142
145
  details={"auto_config_applied": True},
@@ -191,32 +194,34 @@ class MCPServicesCheck(BaseDiagnosticCheck):
191
194
  details["connected_count"] = connected_count
192
195
  details["total_services"] = total_services
193
196
  details["total_tools_discovered"] = total_tools
194
- details["gateway_configured"] = gateway_result.status == DiagnosticStatus.OK
197
+ details["gateway_configured"] = (
198
+ gateway_result.status == OperationResult.SUCCESS
199
+ )
195
200
 
196
201
  # Determine overall status
197
- errors = [r for r in sub_results if r.status == DiagnosticStatus.ERROR]
198
- [r for r in sub_results if r.status == DiagnosticStatus.WARNING]
202
+ errors = [r for r in sub_results if r.status == ValidationSeverity.ERROR]
203
+ [r for r in sub_results if r.status == ValidationSeverity.WARNING]
199
204
 
200
205
  if errors:
201
- status = DiagnosticStatus.ERROR
206
+ status = ValidationSeverity.ERROR
202
207
  message = f"Critical issues with {len(errors)} MCP service(s)"
203
208
  elif installed_count == 0:
204
- status = DiagnosticStatus.WARNING
209
+ status = ValidationSeverity.WARNING
205
210
  message = "No MCP services installed"
206
211
  elif connected_count == total_services:
207
- status = DiagnosticStatus.OK
212
+ status = OperationResult.SUCCESS
208
213
  message = f"All {total_services} MCP services connected ({total_tools} tools available)"
209
214
  elif connected_count > 0:
210
- status = DiagnosticStatus.WARNING
215
+ status = ValidationSeverity.WARNING
211
216
  message = f"{connected_count}/{total_services} MCP services connected, {installed_count} installed"
212
217
  elif accessible_count < installed_count:
213
- status = DiagnosticStatus.WARNING
218
+ status = ValidationSeverity.WARNING
214
219
  message = f"{installed_count}/{total_services} services installed, {accessible_count} accessible"
215
220
  elif installed_count < total_services:
216
- status = DiagnosticStatus.WARNING
221
+ status = ValidationSeverity.WARNING
217
222
  message = f"{installed_count}/{total_services} MCP services installed"
218
223
  else:
219
- status = DiagnosticStatus.WARNING
224
+ status = ValidationSeverity.WARNING
220
225
  message = f"All {total_services} MCP services installed but connections not tested"
221
226
 
222
227
  return DiagnosticResult(
@@ -230,7 +235,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
230
235
  except Exception as e:
231
236
  return DiagnosticResult(
232
237
  category=self.category,
233
- status=DiagnosticStatus.ERROR,
238
+ status=ValidationSeverity.ERROR,
234
239
  message=f"MCP services check failed: {e!s}",
235
240
  details={"error": str(e)},
236
241
  )
@@ -495,7 +500,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
495
500
  base_cmd = config["mcp_command"]
496
501
  if len(base_cmd) > 0 and base_cmd[0] == config["package"]:
497
502
  # Simple case where first command is the package name
498
- mcp_command = ["pipx", "run", config["package"]] + base_cmd[1:]
503
+ mcp_command = ["pipx", "run", config["package"], *base_cmd[1:]]
499
504
  else:
500
505
  # Complex case - just try running the package with mcp arg
501
506
  mcp_command = ["pipx", "run", config["package"], "mcp"]
@@ -509,7 +514,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
509
514
  base_cmd = config["mcp_command"]
510
515
  if service_name == "kuzu-memory":
511
516
  # Special case for kuzu-memory with args
512
- mcp_command = ["pipx", "run", base_cmd[0]] + base_cmd[1:]
517
+ mcp_command = ["pipx", "run", base_cmd[0], *base_cmd[1:]]
513
518
  else:
514
519
  mcp_command = ["pipx", "run", *base_cmd]
515
520
  else:
@@ -543,7 +548,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
543
548
  if not (pipx_installed or accessible):
544
549
  return DiagnosticResult(
545
550
  category=f"MCP Service: {service_name}",
546
- status=DiagnosticStatus.WARNING,
551
+ status=ValidationSeverity.WARNING,
547
552
  message=f"Not installed: {config['description']}",
548
553
  details=details,
549
554
  fix_command=f"pipx install {config['package']}",
@@ -565,16 +570,16 @@ class MCPServicesCheck(BaseDiagnosticCheck):
565
570
  return DiagnosticResult(
566
571
  category=f"MCP Service: {service_name}",
567
572
  status=(
568
- DiagnosticStatus.OK
573
+ OperationResult.SUCCESS
569
574
  if connection_info.get("connected")
570
- else DiagnosticStatus.WARNING
575
+ else ValidationSeverity.WARNING
571
576
  ),
572
577
  message=message,
573
578
  details=details,
574
579
  )
575
580
  return DiagnosticResult(
576
581
  category=f"MCP Service: {service_name}",
577
- status=DiagnosticStatus.WARNING,
582
+ status=ValidationSeverity.WARNING,
578
583
  message="Installed via pipx but not in PATH",
579
584
  details=details,
580
585
  fix_command="pipx ensurepath",
@@ -588,14 +593,14 @@ class MCPServicesCheck(BaseDiagnosticCheck):
588
593
  response_time = connection_info.get("response_time_ms")
589
594
  tools_count = connection_info.get("tools_discovered", 0)
590
595
  message = f"Installed, accessible, connection OK ({tools_count} tools, {response_time}ms)"
591
- status = DiagnosticStatus.OK
596
+ status = OperationResult.SUCCESS
592
597
  else:
593
598
  error = connection_info.get("error", "Unknown error")
594
599
  message = f"Installed but connection failed: {error}"
595
- status = DiagnosticStatus.WARNING
600
+ status = ValidationSeverity.WARNING
596
601
  else:
597
602
  message = "Installed and accessible"
598
- status = DiagnosticStatus.OK
603
+ status = OperationResult.SUCCESS
599
604
 
600
605
  return DiagnosticResult(
601
606
  category=f"MCP Service: {service_name}",
@@ -826,7 +831,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
826
831
  if fixed:
827
832
  return DiagnosticResult(
828
833
  category="kuzu-memory Configuration Fix",
829
- status=DiagnosticStatus.OK,
834
+ status=OperationResult.SUCCESS,
830
835
  message="Fixed kuzu-memory configuration to use correct args",
831
836
  details={
832
837
  "old_args": args,
@@ -837,7 +842,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
837
842
  )
838
843
  return DiagnosticResult(
839
844
  category="kuzu-memory Configuration",
840
- status=DiagnosticStatus.WARNING,
845
+ status=ValidationSeverity.WARNING,
841
846
  message="kuzu-memory has incorrect configuration",
842
847
  details={
843
848
  "current_args": args,
@@ -931,7 +936,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
931
936
  if not config_file.exists():
932
937
  return DiagnosticResult(
933
938
  category="MCP Gateway Configuration",
934
- status=DiagnosticStatus.WARNING,
939
+ status=ValidationSeverity.WARNING,
935
940
  message="Claude configuration file not found",
936
941
  details={"config_path": str(config_file), "exists": False},
937
942
  fix_command="claude-mpm configure --mcp",
@@ -951,7 +956,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
951
956
  if current_project not in projects:
952
957
  return DiagnosticResult(
953
958
  category="MCP Gateway Configuration",
954
- status=DiagnosticStatus.WARNING,
959
+ status=ValidationSeverity.WARNING,
955
960
  message="Current project not configured in Claude",
956
961
  details={
957
962
  "config_path": str(config_file),
@@ -982,7 +987,7 @@ class MCPServicesCheck(BaseDiagnosticCheck):
982
987
  if not configured_services:
983
988
  return DiagnosticResult(
984
989
  category="MCP Gateway Configuration",
985
- status=DiagnosticStatus.WARNING,
990
+ status=ValidationSeverity.WARNING,
986
991
  message="No MCP services configured in gateway",
987
992
  details=details,
988
993
  fix_command="claude-mpm configure --mcp --add-services",
@@ -992,14 +997,14 @@ class MCPServicesCheck(BaseDiagnosticCheck):
992
997
  if missing_services:
993
998
  return DiagnosticResult(
994
999
  category="MCP Gateway Configuration",
995
- status=DiagnosticStatus.WARNING,
1000
+ status=ValidationSeverity.WARNING,
996
1001
  message=f"{len(configured_services)} services configured, {len(missing_services)} missing",
997
1002
  details=details,
998
1003
  )
999
1004
 
1000
1005
  return DiagnosticResult(
1001
1006
  category="MCP Gateway Configuration",
1002
- status=DiagnosticStatus.OK,
1007
+ status=OperationResult.SUCCESS,
1003
1008
  message=f"All {len(configured_services)} services configured",
1004
1009
  details=details,
1005
1010
  )
@@ -1007,14 +1012,14 @@ class MCPServicesCheck(BaseDiagnosticCheck):
1007
1012
  except json.JSONDecodeError as e:
1008
1013
  return DiagnosticResult(
1009
1014
  category="MCP Gateway Configuration",
1010
- status=DiagnosticStatus.ERROR,
1015
+ status=ValidationSeverity.ERROR,
1011
1016
  message="Invalid JSON in MCP configuration",
1012
1017
  details={"error": str(e)},
1013
1018
  )
1014
1019
  except Exception as e:
1015
1020
  return DiagnosticResult(
1016
1021
  category="MCP Gateway Configuration",
1017
- status=DiagnosticStatus.WARNING,
1022
+ status=ValidationSeverity.WARNING,
1018
1023
  message=f"Could not check configuration: {e!s}",
1019
1024
  details={"error": str(e)},
1020
1025
  )
@@ -7,7 +7,8 @@ properly configured and accessible for real-time updates.
7
7
 
8
8
  import socket
9
9
 
10
- from ..models import DiagnosticResult, DiagnosticStatus
10
+ from ....core.enums import OperationResult, ValidationSeverity
11
+ from ..models import DiagnosticResult
11
12
  from .base_check import BaseDiagnosticCheck
12
13
 
13
14
 
@@ -33,7 +34,7 @@ class MonitorCheck(BaseDiagnosticCheck):
33
34
  socketio_result = self._check_socketio()
34
35
  sub_results.append(socketio_result)
35
36
  details["socketio_available"] = (
36
- socketio_result.status == DiagnosticStatus.OK
37
+ socketio_result.status == OperationResult.SUCCESS
37
38
  )
38
39
 
39
40
  # Check port availability
@@ -49,17 +50,17 @@ class MonitorCheck(BaseDiagnosticCheck):
49
50
  # Check hook service
50
51
  hook_result = self._check_hook_service()
51
52
  sub_results.append(hook_result)
52
- details["hooks_enabled"] = hook_result.status == DiagnosticStatus.OK
53
+ details["hooks_enabled"] = hook_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 = "Monitoring 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 = "Monitoring has minor issues"
61
62
  else:
62
- status = DiagnosticStatus.OK
63
+ status = OperationResult.SUCCESS
63
64
  message = "Monitoring properly configured"
64
65
 
65
66
  return DiagnosticResult(
@@ -73,7 +74,7 @@ class MonitorCheck(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"Monitor check failed: {e!s}",
78
79
  details={"error": str(e)},
79
80
  )
@@ -85,7 +86,7 @@ class MonitorCheck(BaseDiagnosticCheck):
85
86
 
86
87
  return DiagnosticResult(
87
88
  category="SocketIO",
88
- status=DiagnosticStatus.OK,
89
+ status=OperationResult.SUCCESS,
89
90
  message="SocketIO library available",
90
91
  details={
91
92
  "available": True,
@@ -95,7 +96,7 @@ class MonitorCheck(BaseDiagnosticCheck):
95
96
  except ImportError:
96
97
  return DiagnosticResult(
97
98
  category="SocketIO",
98
- status=DiagnosticStatus.WARNING,
99
+ status=ValidationSeverity.WARNING,
99
100
  message="SocketIO not installed",
100
101
  details={"available": False},
101
102
  fix_command="pip install python-socketio[asyncio]",
@@ -122,7 +123,7 @@ class MonitorCheck(BaseDiagnosticCheck):
122
123
  if not available_ports:
123
124
  return DiagnosticResult(
124
125
  category="Port Availability",
125
- status=DiagnosticStatus.ERROR,
126
+ status=ValidationSeverity.ERROR,
126
127
  message="No monitoring ports available (8765-8785)",
127
128
  details={
128
129
  "available": [],
@@ -137,7 +138,7 @@ class MonitorCheck(BaseDiagnosticCheck):
137
138
  if default_port not in available_ports:
138
139
  return DiagnosticResult(
139
140
  category="Port Availability",
140
- status=DiagnosticStatus.WARNING,
141
+ status=ValidationSeverity.WARNING,
141
142
  message=f"Default port {default_port} in use, but alternatives available",
142
143
  details={
143
144
  "available": available_ports,
@@ -148,7 +149,7 @@ class MonitorCheck(BaseDiagnosticCheck):
148
149
 
149
150
  return DiagnosticResult(
150
151
  category="Port Availability",
151
- status=DiagnosticStatus.OK,
152
+ status=OperationResult.SUCCESS,
152
153
  message=f"{len(available_ports)} monitoring port(s) available",
153
154
  details={
154
155
  "available": available_ports,
@@ -160,7 +161,7 @@ class MonitorCheck(BaseDiagnosticCheck):
160
161
  except Exception as e:
161
162
  return DiagnosticResult(
162
163
  category="Port Availability",
163
- status=DiagnosticStatus.WARNING,
164
+ status=ValidationSeverity.WARNING,
164
165
  message=f"Could not check ports: {e!s}",
165
166
  details={"error": str(e)},
166
167
  )
@@ -209,7 +210,7 @@ class MonitorCheck(BaseDiagnosticCheck):
209
210
  if not response_logging_enabled:
210
211
  return DiagnosticResult(
211
212
  category="Response Logging",
212
- status=DiagnosticStatus.OK,
213
+ status=OperationResult.SUCCESS,
213
214
  message="Response logging disabled (default)",
214
215
  details={"enabled": False},
215
216
  )
@@ -219,7 +220,7 @@ class MonitorCheck(BaseDiagnosticCheck):
219
220
  if not log_dir.exists():
220
221
  return DiagnosticResult(
221
222
  category="Response Logging",
222
- status=DiagnosticStatus.WARNING,
223
+ status=ValidationSeverity.WARNING,
223
224
  message="Response logging enabled but directory missing",
224
225
  details={"enabled": True, "path": str(log_dir), "exists": False},
225
226
  fix_command=f"mkdir -p {log_dir}",
@@ -231,7 +232,7 @@ class MonitorCheck(BaseDiagnosticCheck):
231
232
  if not os.access(log_dir, os.W_OK):
232
233
  return DiagnosticResult(
233
234
  category="Response Logging",
234
- status=DiagnosticStatus.WARNING,
235
+ status=ValidationSeverity.WARNING,
235
236
  message="Response logging directory not writable",
236
237
  details={"enabled": True, "path": str(log_dir), "writable": False},
237
238
  fix_command=f"chmod 755 {log_dir}",
@@ -240,7 +241,7 @@ class MonitorCheck(BaseDiagnosticCheck):
240
241
 
241
242
  return DiagnosticResult(
242
243
  category="Response Logging",
243
- status=DiagnosticStatus.OK,
244
+ status=OperationResult.SUCCESS,
244
245
  message="Response logging enabled and configured",
245
246
  details={
246
247
  "enabled": True,
@@ -260,7 +261,7 @@ class MonitorCheck(BaseDiagnosticCheck):
260
261
 
261
262
  return DiagnosticResult(
262
263
  category="Hook Service",
263
- status=DiagnosticStatus.OK,
264
+ status=OperationResult.SUCCESS,
264
265
  message="Hook service available",
265
266
  details={"available": True},
266
267
  )
@@ -268,14 +269,14 @@ class MonitorCheck(BaseDiagnosticCheck):
268
269
  except ImportError:
269
270
  return DiagnosticResult(
270
271
  category="Hook Service",
271
- status=DiagnosticStatus.WARNING,
272
+ status=ValidationSeverity.WARNING,
272
273
  message="Hook service not available",
273
274
  details={"available": False},
274
275
  )
275
276
  except Exception as e:
276
277
  return DiagnosticResult(
277
278
  category="Hook Service",
278
- status=DiagnosticStatus.WARNING,
279
+ status=ValidationSeverity.WARNING,
279
280
  message=f"Hook service error: {e!s}",
280
281
  details={"available": False, "error": str(e)},
281
282
  )