claude-mpm 4.15.0__py3-none-any.whl → 4.15.1__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 (23) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/OUTPUT_STYLE.md +48 -3
  3. claude_mpm/services/diagnostics/__init__.py +2 -2
  4. claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
  5. claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
  6. claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
  7. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
  8. claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
  9. claude_mpm/services/diagnostics/checks/installation_check.py +28 -28
  10. claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
  11. claude_mpm/services/diagnostics/checks/mcp_check.py +31 -31
  12. claude_mpm/services/diagnostics/checks/mcp_services_check.py +36 -31
  13. claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
  14. claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
  15. claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
  16. claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
  17. claude_mpm/services/diagnostics/models.py +19 -24
  18. {claude_mpm-4.15.0.dist-info → claude_mpm-4.15.1.dist-info}/METADATA +1 -1
  19. {claude_mpm-4.15.0.dist-info → claude_mpm-4.15.1.dist-info}/RECORD +23 -23
  20. {claude_mpm-4.15.0.dist-info → claude_mpm-4.15.1.dist-info}/WHEEL +0 -0
  21. {claude_mpm-4.15.0.dist-info → claude_mpm-4.15.1.dist-info}/entry_points.txt +0 -0
  22. {claude_mpm-4.15.0.dist-info → claude_mpm-4.15.1.dist-info}/licenses/LICENSE +0 -0
  23. {claude_mpm-4.15.0.dist-info → claude_mpm-4.15.1.dist-info}/top_level.txt +0 -0
@@ -9,9 +9,9 @@ import json
9
9
  import subprocess
10
10
  from pathlib import Path
11
11
 
12
- from claude_mpm.core.enums import ServiceState
12
+ from claude_mpm.core.enums import OperationResult, ServiceState, ValidationSeverity
13
13
 
14
- from ..models import DiagnosticResult, DiagnosticStatus
14
+ from ..models import DiagnosticResult
15
15
  from .base_check import BaseDiagnosticCheck
16
16
 
17
17
 
@@ -36,13 +36,13 @@ class MCPCheck(BaseDiagnosticCheck):
36
36
  # Check if MCP is installed
37
37
  install_result = self._check_installation()
38
38
  sub_results.append(install_result)
39
- details["installed"] = install_result.status == DiagnosticStatus.OK
39
+ details["installed"] = install_result.status == OperationResult.SUCCESS
40
40
 
41
- if install_result.status == DiagnosticStatus.OK:
41
+ if install_result.status == OperationResult.SUCCESS:
42
42
  # Check MCP configuration
43
43
  config_result = self._check_configuration()
44
44
  sub_results.append(config_result)
45
- details["configured"] = config_result.status == DiagnosticStatus.OK
45
+ details["configured"] = config_result.status == OperationResult.SUCCESS
46
46
 
47
47
  # Check MCP server status
48
48
  status_result = self._check_server_status()
@@ -54,17 +54,17 @@ class MCPCheck(BaseDiagnosticCheck):
54
54
  sub_results.append(startup_result)
55
55
 
56
56
  # Determine overall status
57
- if any(r.status == DiagnosticStatus.ERROR for r in sub_results):
58
- status = DiagnosticStatus.ERROR
57
+ if any(r.status == ValidationSeverity.ERROR for r in sub_results):
58
+ status = ValidationSeverity.ERROR
59
59
  message = "MCP server has critical issues"
60
60
  elif not details.get("installed", False):
61
- status = DiagnosticStatus.WARNING
61
+ status = ValidationSeverity.WARNING
62
62
  message = "MCP server not installed"
63
- elif any(r.status == DiagnosticStatus.WARNING for r in sub_results):
64
- status = DiagnosticStatus.WARNING
63
+ elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
64
+ status = ValidationSeverity.WARNING
65
65
  message = "MCP server needs configuration"
66
66
  else:
67
- status = DiagnosticStatus.OK
67
+ status = OperationResult.SUCCESS
68
68
  message = "MCP server properly configured"
69
69
 
70
70
  return DiagnosticResult(
@@ -78,7 +78,7 @@ class MCPCheck(BaseDiagnosticCheck):
78
78
  except Exception as e:
79
79
  return DiagnosticResult(
80
80
  category=self.category,
81
- status=DiagnosticStatus.ERROR,
81
+ status=ValidationSeverity.ERROR,
82
82
  message=f"MCP check failed: {e!s}",
83
83
  details={"error": str(e)},
84
84
  )
@@ -96,7 +96,7 @@ class MCPCheck(BaseDiagnosticCheck):
96
96
  if mcp_path.exists():
97
97
  return DiagnosticResult(
98
98
  category="MCP Installation",
99
- status=DiagnosticStatus.OK,
99
+ status=OperationResult.SUCCESS,
100
100
  message="MCP server installed",
101
101
  details={"path": str(mcp_path), "installed": True},
102
102
  )
@@ -114,7 +114,7 @@ class MCPCheck(BaseDiagnosticCheck):
114
114
  path = result.stdout.strip()
115
115
  return DiagnosticResult(
116
116
  category="MCP Installation",
117
- status=DiagnosticStatus.OK,
117
+ status=OperationResult.SUCCESS,
118
118
  message="MCP server installed",
119
119
  details={"path": path, "installed": True},
120
120
  )
@@ -123,7 +123,7 @@ class MCPCheck(BaseDiagnosticCheck):
123
123
 
124
124
  return DiagnosticResult(
125
125
  category="MCP Installation",
126
- status=DiagnosticStatus.WARNING,
126
+ status=ValidationSeverity.WARNING,
127
127
  message="MCP server not installed",
128
128
  details={"installed": False},
129
129
  fix_command="claude-mpm mcp install",
@@ -148,7 +148,7 @@ class MCPCheck(BaseDiagnosticCheck):
148
148
  if not config_path:
149
149
  return DiagnosticResult(
150
150
  category="MCP Configuration",
151
- status=DiagnosticStatus.WARNING,
151
+ status=ValidationSeverity.WARNING,
152
152
  message="Claude Code config not found",
153
153
  details={"configured": False},
154
154
  fix_command="claude-mpm mcp config",
@@ -165,7 +165,7 @@ class MCPCheck(BaseDiagnosticCheck):
165
165
  if not gateway:
166
166
  return DiagnosticResult(
167
167
  category="MCP Configuration",
168
- status=DiagnosticStatus.WARNING,
168
+ status=ValidationSeverity.WARNING,
169
169
  message="MCP gateway not configured",
170
170
  details={"configured": False, "config_path": str(config_path)},
171
171
  fix_command="claude-mpm mcp config",
@@ -177,7 +177,7 @@ class MCPCheck(BaseDiagnosticCheck):
177
177
  if not command:
178
178
  return DiagnosticResult(
179
179
  category="MCP Configuration",
180
- status=DiagnosticStatus.ERROR,
180
+ status=ValidationSeverity.ERROR,
181
181
  message="MCP gateway misconfigured (no command)",
182
182
  details={
183
183
  "configured": True,
@@ -190,7 +190,7 @@ class MCPCheck(BaseDiagnosticCheck):
190
190
 
191
191
  return DiagnosticResult(
192
192
  category="MCP Configuration",
193
- status=DiagnosticStatus.OK,
193
+ status=OperationResult.SUCCESS,
194
194
  message="MCP gateway configured",
195
195
  details={
196
196
  "configured": True,
@@ -202,7 +202,7 @@ class MCPCheck(BaseDiagnosticCheck):
202
202
  except json.JSONDecodeError as e:
203
203
  return DiagnosticResult(
204
204
  category="MCP Configuration",
205
- status=DiagnosticStatus.ERROR,
205
+ status=ValidationSeverity.ERROR,
206
206
  message="Invalid JSON in config file",
207
207
  details={"error": str(e), "config_path": str(config_path)},
208
208
  fix_description="Fix JSON syntax in Claude Code config",
@@ -210,7 +210,7 @@ class MCPCheck(BaseDiagnosticCheck):
210
210
  except Exception as e:
211
211
  return DiagnosticResult(
212
212
  category="MCP Configuration",
213
- status=DiagnosticStatus.WARNING,
213
+ status=ValidationSeverity.WARNING,
214
214
  message=f"Could not check configuration: {e!s}",
215
215
  details={"error": str(e)},
216
216
  )
@@ -231,13 +231,13 @@ class MCPCheck(BaseDiagnosticCheck):
231
231
  if ServiceState.RUNNING.value in result.stdout.lower():
232
232
  return DiagnosticResult(
233
233
  category="MCP Server Status",
234
- status=DiagnosticStatus.OK,
234
+ status=OperationResult.SUCCESS,
235
235
  message="MCP server is running",
236
236
  details={"running": True, "state": ServiceState.RUNNING},
237
237
  )
238
238
  return DiagnosticResult(
239
239
  category="MCP Server Status",
240
- status=DiagnosticStatus.WARNING,
240
+ status=ValidationSeverity.WARNING,
241
241
  message="MCP server not running",
242
242
  details={"running": False, "state": ServiceState.STOPPED},
243
243
  fix_command="claude-mpm mcp start",
@@ -245,7 +245,7 @@ class MCPCheck(BaseDiagnosticCheck):
245
245
  )
246
246
  return DiagnosticResult(
247
247
  category="MCP Server Status",
248
- status=DiagnosticStatus.WARNING,
248
+ status=ValidationSeverity.WARNING,
249
249
  message="Could not determine server status",
250
250
  details={
251
251
  "running": "unknown",
@@ -257,7 +257,7 @@ class MCPCheck(BaseDiagnosticCheck):
257
257
  except subprocess.TimeoutExpired:
258
258
  return DiagnosticResult(
259
259
  category="MCP Server Status",
260
- status=DiagnosticStatus.WARNING,
260
+ status=ValidationSeverity.WARNING,
261
261
  message="Server status check timed out",
262
262
  details={
263
263
  "running": "unknown",
@@ -268,7 +268,7 @@ class MCPCheck(BaseDiagnosticCheck):
268
268
  except Exception as e:
269
269
  return DiagnosticResult(
270
270
  category="MCP Server Status",
271
- status=DiagnosticStatus.WARNING,
271
+ status=ValidationSeverity.WARNING,
272
272
  message=f"Could not check server status: {e!s}",
273
273
  details={
274
274
  "running": "unknown",
@@ -290,7 +290,7 @@ class MCPCheck(BaseDiagnosticCheck):
290
290
  if not issues:
291
291
  return DiagnosticResult(
292
292
  category="MCP Startup Verification",
293
- status=DiagnosticStatus.OK,
293
+ status=OperationResult.SUCCESS,
294
294
  message="Startup verification passed",
295
295
  details={"issues": []},
296
296
  )
@@ -304,20 +304,20 @@ class MCPCheck(BaseDiagnosticCheck):
304
304
  if errors:
305
305
  return DiagnosticResult(
306
306
  category="MCP Startup Verification",
307
- status=DiagnosticStatus.ERROR,
307
+ status=ValidationSeverity.ERROR,
308
308
  message=f"{len(errors)} critical issue(s) found",
309
309
  details={"errors": errors, "warnings": warnings},
310
310
  )
311
311
  if warnings:
312
312
  return DiagnosticResult(
313
313
  category="MCP Startup Verification",
314
- status=DiagnosticStatus.WARNING,
314
+ status=ValidationSeverity.WARNING,
315
315
  message=f"{len(warnings)} warning(s) found",
316
316
  details={"warnings": warnings},
317
317
  )
318
318
  return DiagnosticResult(
319
319
  category="MCP Startup Verification",
320
- status=DiagnosticStatus.OK,
320
+ status=OperationResult.SUCCESS,
321
321
  message="Startup verification passed",
322
322
  details={"issues": []},
323
323
  )
@@ -325,7 +325,7 @@ class MCPCheck(BaseDiagnosticCheck):
325
325
  except Exception as e:
326
326
  return DiagnosticResult(
327
327
  category="MCP Startup Verification",
328
- status=DiagnosticStatus.WARNING,
328
+ status=ValidationSeverity.WARNING,
329
329
  message=f"Could not verify startup: {e!s}",
330
330
  details={"error": str(e)},
331
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
  )
@@ -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
  )
@@ -17,7 +17,8 @@ from datetime import datetime
17
17
  from pathlib import Path
18
18
  from typing import Any, ClassVar, Dict, Optional
19
19
 
20
- from ..models import DiagnosticResult, DiagnosticStatus
20
+ from ....core.enums import OperationResult, ValidationSeverity
21
+ from ..models import DiagnosticResult
21
22
  from .base_check import BaseDiagnosticCheck
22
23
 
23
24
 
@@ -94,7 +95,7 @@ class StartupLogCheck(BaseDiagnosticCheck):
94
95
  if not log_file:
95
96
  return DiagnosticResult(
96
97
  category=self.category,
97
- status=DiagnosticStatus.WARNING,
98
+ status=ValidationSeverity.WARNING,
98
99
  message="No startup logs found",
99
100
  details={
100
101
  "recommendation": "Startup logging will be created on next run"
@@ -135,7 +136,7 @@ class StartupLogCheck(BaseDiagnosticCheck):
135
136
  sub_results.append(
136
137
  DiagnosticResult(
137
138
  category="Error",
138
- status=DiagnosticStatus.ERROR,
139
+ status=ValidationSeverity.ERROR,
139
140
  message=error_type,
140
141
  details={"fix": fix},
141
142
  )
@@ -153,7 +154,7 @@ class StartupLogCheck(BaseDiagnosticCheck):
153
154
  except Exception as e:
154
155
  return DiagnosticResult(
155
156
  category=self.category,
156
- status=DiagnosticStatus.ERROR,
157
+ status=ValidationSeverity.ERROR,
157
158
  message=f"Startup log check failed: {e!s}",
158
159
  details={"error": str(e)},
159
160
  )
@@ -280,13 +281,13 @@ class StartupLogCheck(BaseDiagnosticCheck):
280
281
 
281
282
  analysis["recommendations"] = recommendations
282
283
 
283
- def _determine_status(self, analysis: Dict[str, Any]) -> DiagnosticStatus:
284
+ def _determine_status(self, analysis: Dict[str, Any]):
284
285
  """Determine overall status based on analysis."""
285
286
  if analysis["error_count"] > 0:
286
- return DiagnosticStatus.ERROR
287
+ return ValidationSeverity.ERROR
287
288
  if analysis["warning_count"] > 3 or analysis["warning_count"] > 0:
288
- return DiagnosticStatus.WARNING
289
- return DiagnosticStatus.OK
289
+ return ValidationSeverity.WARNING
290
+ return OperationResult.SUCCESS
290
291
 
291
292
  def _create_message(self, analysis: Dict[str, Any]) -> str:
292
293
  """Create summary message based on analysis."""