claude-mpm 4.13.2__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 (250) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_ENGINEER.md +286 -0
  3. claude_mpm/agents/BASE_PM.md +48 -17
  4. claude_mpm/agents/OUTPUT_STYLE.md +329 -11
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +227 -8
  6. claude_mpm/agents/agent_loader.py +17 -5
  7. claude_mpm/agents/frontmatter_validator.py +284 -253
  8. claude_mpm/agents/templates/agentic-coder-optimizer.json +9 -2
  9. claude_mpm/agents/templates/api_qa.json +7 -1
  10. claude_mpm/agents/templates/clerk-ops.json +8 -1
  11. claude_mpm/agents/templates/code_analyzer.json +4 -1
  12. claude_mpm/agents/templates/dart_engineer.json +11 -1
  13. claude_mpm/agents/templates/data_engineer.json +11 -1
  14. claude_mpm/agents/templates/documentation.json +6 -1
  15. claude_mpm/agents/templates/engineer.json +18 -1
  16. claude_mpm/agents/templates/gcp_ops_agent.json +8 -1
  17. claude_mpm/agents/templates/golang_engineer.json +11 -1
  18. claude_mpm/agents/templates/java_engineer.json +12 -2
  19. claude_mpm/agents/templates/local_ops_agent.json +1217 -6
  20. claude_mpm/agents/templates/nextjs_engineer.json +11 -1
  21. claude_mpm/agents/templates/ops.json +8 -1
  22. claude_mpm/agents/templates/php-engineer.json +11 -1
  23. claude_mpm/agents/templates/project_organizer.json +10 -3
  24. claude_mpm/agents/templates/prompt-engineer.json +5 -1
  25. claude_mpm/agents/templates/python_engineer.json +11 -1
  26. claude_mpm/agents/templates/qa.json +7 -1
  27. claude_mpm/agents/templates/react_engineer.json +11 -1
  28. claude_mpm/agents/templates/refactoring_engineer.json +8 -1
  29. claude_mpm/agents/templates/research.json +4 -1
  30. claude_mpm/agents/templates/ruby-engineer.json +11 -1
  31. claude_mpm/agents/templates/rust_engineer.json +11 -1
  32. claude_mpm/agents/templates/security.json +6 -1
  33. claude_mpm/agents/templates/svelte-engineer.json +225 -0
  34. claude_mpm/agents/templates/ticketing.json +6 -1
  35. claude_mpm/agents/templates/typescript_engineer.json +11 -1
  36. claude_mpm/agents/templates/vercel_ops_agent.json +8 -1
  37. claude_mpm/agents/templates/version_control.json +8 -1
  38. claude_mpm/agents/templates/web_qa.json +7 -1
  39. claude_mpm/agents/templates/web_ui.json +11 -1
  40. claude_mpm/cli/__init__.py +34 -706
  41. claude_mpm/cli/commands/agent_manager.py +25 -12
  42. claude_mpm/cli/commands/agent_state_manager.py +186 -0
  43. claude_mpm/cli/commands/agents.py +204 -148
  44. claude_mpm/cli/commands/aggregate.py +7 -3
  45. claude_mpm/cli/commands/analyze.py +9 -4
  46. claude_mpm/cli/commands/analyze_code.py +7 -2
  47. claude_mpm/cli/commands/auto_configure.py +7 -9
  48. claude_mpm/cli/commands/config.py +47 -13
  49. claude_mpm/cli/commands/configure.py +294 -1788
  50. claude_mpm/cli/commands/configure_agent_display.py +261 -0
  51. claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
  52. claude_mpm/cli/commands/configure_hook_manager.py +225 -0
  53. claude_mpm/cli/commands/configure_models.py +18 -0
  54. claude_mpm/cli/commands/configure_navigation.py +167 -0
  55. claude_mpm/cli/commands/configure_paths.py +104 -0
  56. claude_mpm/cli/commands/configure_persistence.py +254 -0
  57. claude_mpm/cli/commands/configure_startup_manager.py +646 -0
  58. claude_mpm/cli/commands/configure_template_editor.py +497 -0
  59. claude_mpm/cli/commands/configure_validators.py +73 -0
  60. claude_mpm/cli/commands/local_deploy.py +537 -0
  61. claude_mpm/cli/commands/memory.py +54 -20
  62. claude_mpm/cli/commands/mpm_init.py +39 -25
  63. claude_mpm/cli/commands/mpm_init_handler.py +8 -3
  64. claude_mpm/cli/executor.py +202 -0
  65. claude_mpm/cli/helpers.py +105 -0
  66. claude_mpm/cli/interactive/__init__.py +3 -0
  67. claude_mpm/cli/interactive/skills_wizard.py +491 -0
  68. claude_mpm/cli/parsers/__init__.py +7 -1
  69. claude_mpm/cli/parsers/base_parser.py +98 -3
  70. claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
  71. claude_mpm/cli/shared/output_formatters.py +28 -19
  72. claude_mpm/cli/startup.py +481 -0
  73. claude_mpm/cli/utils.py +52 -1
  74. claude_mpm/commands/mpm-help.md +3 -0
  75. claude_mpm/commands/mpm-version.md +113 -0
  76. claude_mpm/commands/mpm.md +1 -0
  77. claude_mpm/config/agent_config.py +2 -2
  78. claude_mpm/config/model_config.py +428 -0
  79. claude_mpm/core/base_service.py +13 -12
  80. claude_mpm/core/enums.py +452 -0
  81. claude_mpm/core/factories.py +1 -1
  82. claude_mpm/core/instruction_reinforcement_hook.py +2 -1
  83. claude_mpm/core/interactive_session.py +9 -3
  84. claude_mpm/core/logging_config.py +6 -2
  85. claude_mpm/core/oneshot_session.py +8 -4
  86. claude_mpm/core/optimized_agent_loader.py +3 -3
  87. claude_mpm/core/output_style_manager.py +12 -192
  88. claude_mpm/core/service_registry.py +5 -1
  89. claude_mpm/core/types.py +2 -9
  90. claude_mpm/core/typing_utils.py +7 -6
  91. claude_mpm/dashboard/static/js/dashboard.js +0 -14
  92. claude_mpm/dashboard/templates/index.html +3 -41
  93. claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
  94. claude_mpm/hooks/instruction_reinforcement.py +7 -2
  95. claude_mpm/models/resume_log.py +340 -0
  96. claude_mpm/services/agents/auto_config_manager.py +10 -11
  97. claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
  98. claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
  99. claude_mpm/services/agents/deployment/agent_validator.py +17 -1
  100. claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
  101. claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
  102. claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
  103. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +7 -6
  104. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
  105. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
  106. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +5 -3
  107. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
  108. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +9 -6
  109. claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
  110. claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
  111. claude_mpm/services/agents/local_template_manager.py +1 -1
  112. claude_mpm/services/agents/memory/agent_memory_manager.py +5 -2
  113. claude_mpm/services/agents/registry/modification_tracker.py +5 -2
  114. claude_mpm/services/command_handler_service.py +11 -5
  115. claude_mpm/services/core/interfaces/__init__.py +74 -2
  116. claude_mpm/services/core/interfaces/health.py +172 -0
  117. claude_mpm/services/core/interfaces/model.py +281 -0
  118. claude_mpm/services/core/interfaces/process.py +372 -0
  119. claude_mpm/services/core/interfaces/restart.py +307 -0
  120. claude_mpm/services/core/interfaces/stability.py +260 -0
  121. claude_mpm/services/core/models/__init__.py +33 -0
  122. claude_mpm/services/core/models/agent_config.py +12 -28
  123. claude_mpm/services/core/models/health.py +162 -0
  124. claude_mpm/services/core/models/process.py +235 -0
  125. claude_mpm/services/core/models/restart.py +302 -0
  126. claude_mpm/services/core/models/stability.py +264 -0
  127. claude_mpm/services/core/path_resolver.py +23 -7
  128. claude_mpm/services/diagnostics/__init__.py +2 -2
  129. claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
  130. claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
  131. claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
  132. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
  133. claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
  134. claude_mpm/services/diagnostics/checks/installation_check.py +30 -29
  135. claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
  136. claude_mpm/services/diagnostics/checks/mcp_check.py +50 -36
  137. claude_mpm/services/diagnostics/checks/mcp_services_check.py +36 -31
  138. claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
  139. claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
  140. claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
  141. claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
  142. claude_mpm/services/diagnostics/models.py +19 -24
  143. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -1
  144. claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
  145. claude_mpm/services/infrastructure/monitoring/base.py +5 -13
  146. claude_mpm/services/infrastructure/monitoring/network.py +7 -6
  147. claude_mpm/services/infrastructure/monitoring/process.py +13 -12
  148. claude_mpm/services/infrastructure/monitoring/resources.py +7 -6
  149. claude_mpm/services/infrastructure/monitoring/service.py +16 -15
  150. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  151. claude_mpm/services/local_ops/__init__.py +163 -0
  152. claude_mpm/services/local_ops/crash_detector.py +257 -0
  153. claude_mpm/services/local_ops/health_checks/__init__.py +28 -0
  154. claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
  155. claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
  156. claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
  157. claude_mpm/services/local_ops/health_manager.py +430 -0
  158. claude_mpm/services/local_ops/log_monitor.py +396 -0
  159. claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
  160. claude_mpm/services/local_ops/process_manager.py +595 -0
  161. claude_mpm/services/local_ops/resource_monitor.py +331 -0
  162. claude_mpm/services/local_ops/restart_manager.py +401 -0
  163. claude_mpm/services/local_ops/restart_policy.py +387 -0
  164. claude_mpm/services/local_ops/state_manager.py +372 -0
  165. claude_mpm/services/local_ops/unified_manager.py +600 -0
  166. claude_mpm/services/mcp_config_manager.py +9 -4
  167. claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
  168. claude_mpm/services/mcp_gateway/core/base.py +18 -31
  169. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +71 -24
  170. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +30 -28
  171. claude_mpm/services/memory_hook_service.py +4 -1
  172. claude_mpm/services/model/__init__.py +147 -0
  173. claude_mpm/services/model/base_provider.py +365 -0
  174. claude_mpm/services/model/claude_provider.py +412 -0
  175. claude_mpm/services/model/model_router.py +453 -0
  176. claude_mpm/services/model/ollama_provider.py +415 -0
  177. claude_mpm/services/monitor/daemon_manager.py +3 -2
  178. claude_mpm/services/monitor/handlers/dashboard.py +2 -1
  179. claude_mpm/services/monitor/handlers/hooks.py +2 -1
  180. claude_mpm/services/monitor/management/lifecycle.py +3 -2
  181. claude_mpm/services/monitor/server.py +2 -1
  182. claude_mpm/services/session_management_service.py +3 -2
  183. claude_mpm/services/session_manager.py +205 -1
  184. claude_mpm/services/shared/async_service_base.py +16 -27
  185. claude_mpm/services/shared/lifecycle_service_base.py +1 -14
  186. claude_mpm/services/socketio/handlers/__init__.py +5 -2
  187. claude_mpm/services/socketio/handlers/hook.py +13 -2
  188. claude_mpm/services/socketio/handlers/registry.py +4 -2
  189. claude_mpm/services/socketio/server/main.py +10 -8
  190. claude_mpm/services/subprocess_launcher_service.py +14 -5
  191. claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +8 -7
  192. claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +6 -5
  193. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +8 -7
  194. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +7 -6
  195. claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +5 -4
  196. claude_mpm/services/unified/config_strategies/validation_strategy.py +13 -9
  197. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +10 -3
  198. claude_mpm/services/unified/deployment_strategies/local.py +6 -5
  199. claude_mpm/services/unified/deployment_strategies/utils.py +6 -5
  200. claude_mpm/services/unified/deployment_strategies/vercel.py +7 -6
  201. claude_mpm/services/unified/interfaces.py +3 -1
  202. claude_mpm/services/unified/unified_analyzer.py +14 -10
  203. claude_mpm/services/unified/unified_config.py +2 -1
  204. claude_mpm/services/unified/unified_deployment.py +9 -4
  205. claude_mpm/services/version_service.py +104 -1
  206. claude_mpm/skills/__init__.py +21 -0
  207. claude_mpm/skills/bundled/__init__.py +6 -0
  208. claude_mpm/skills/bundled/api-documentation.md +393 -0
  209. claude_mpm/skills/bundled/async-testing.md +571 -0
  210. claude_mpm/skills/bundled/code-review.md +143 -0
  211. claude_mpm/skills/bundled/database-migration.md +199 -0
  212. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  213. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  214. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  215. claude_mpm/skills/bundled/git-workflow.md +414 -0
  216. claude_mpm/skills/bundled/imagemagick.md +204 -0
  217. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  218. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  219. claude_mpm/skills/bundled/pdf.md +141 -0
  220. claude_mpm/skills/bundled/performance-profiling.md +567 -0
  221. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  222. claude_mpm/skills/bundled/security-scanning.md +327 -0
  223. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  224. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  225. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  226. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  227. claude_mpm/skills/bundled/xlsx.md +157 -0
  228. claude_mpm/skills/registry.py +286 -0
  229. claude_mpm/skills/skill_manager.py +310 -0
  230. claude_mpm/tools/code_tree_analyzer.py +177 -141
  231. claude_mpm/tools/code_tree_events.py +4 -2
  232. claude_mpm/utils/agent_dependency_loader.py +2 -2
  233. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/METADATA +117 -8
  234. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/RECORD +238 -174
  235. claude_mpm/dashboard/static/css/code-tree.css +0 -1639
  236. claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
  237. claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
  238. claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
  239. claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
  240. claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
  241. claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
  242. claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
  243. claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1041
  244. claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
  245. claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
  246. claude_mpm/services/project/analyzer_refactored.py +0 -450
  247. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/WHEEL +0 -0
  248. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/entry_points.txt +0 -0
  249. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/licenses/LICENSE +0 -0
  250. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/top_level.txt +0 -0
@@ -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
  )
@@ -11,7 +11,8 @@ from typing import Any, Dict
11
11
 
12
12
  import yaml
13
13
 
14
- from ..models import DiagnosticResult, DiagnosticStatus
14
+ from ....core.enums import OperationResult, ValidationSeverity
15
+ from ..models import DiagnosticResult
15
16
  from .base_check import BaseDiagnosticCheck
16
17
 
17
18
 
@@ -52,14 +53,14 @@ class ConfigurationCheck(BaseDiagnosticCheck):
52
53
  sub_results.append(perm_result)
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 = "Configuration 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 = "Configuration has minor issues"
61
62
  else:
62
- status = DiagnosticStatus.OK
63
+ status = OperationResult.SUCCESS
63
64
  message = "Configuration is valid"
64
65
 
65
66
  return DiagnosticResult(
@@ -73,7 +74,7 @@ class ConfigurationCheck(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"Configuration check failed: {e!s}",
78
79
  details={"error": str(e)},
79
80
  )
@@ -85,7 +86,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
85
86
  if not config_path.exists():
86
87
  return DiagnosticResult(
87
88
  category="User Config",
88
- status=DiagnosticStatus.OK,
89
+ status=OperationResult.SUCCESS,
89
90
  message="No user configuration (using defaults)",
90
91
  details={"path": str(config_path), "exists": False},
91
92
  )
@@ -98,14 +99,14 @@ class ConfigurationCheck(BaseDiagnosticCheck):
98
99
  if issues:
99
100
  return DiagnosticResult(
100
101
  category="User Config",
101
- status=DiagnosticStatus.WARNING,
102
+ status=ValidationSeverity.WARNING,
102
103
  message=f"User config has issues: {', '.join(issues)}",
103
104
  details={"path": str(config_path), "issues": issues},
104
105
  )
105
106
 
106
107
  return DiagnosticResult(
107
108
  category="User Config",
108
- status=DiagnosticStatus.OK,
109
+ status=OperationResult.SUCCESS,
109
110
  message="User configuration valid",
110
111
  details={
111
112
  "path": str(config_path),
@@ -117,7 +118,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
117
118
  except yaml.YAMLError as e:
118
119
  return DiagnosticResult(
119
120
  category="User Config",
120
- status=DiagnosticStatus.ERROR,
121
+ status=ValidationSeverity.ERROR,
121
122
  message="User config has invalid YAML",
122
123
  details={"path": str(config_path), "error": str(e)},
123
124
  fix_description="Fix YAML syntax errors in the configuration file",
@@ -125,7 +126,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
125
126
  except Exception as e:
126
127
  return DiagnosticResult(
127
128
  category="User Config",
128
- status=DiagnosticStatus.WARNING,
129
+ status=ValidationSeverity.WARNING,
129
130
  message=f"Could not read user config: {e!s}",
130
131
  details={"path": str(config_path), "error": str(e)},
131
132
  )
@@ -137,7 +138,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
137
138
  if not config_path.exists():
138
139
  return DiagnosticResult(
139
140
  category="Project Config",
140
- status=DiagnosticStatus.OK,
141
+ status=OperationResult.SUCCESS,
141
142
  message="No project configuration (using defaults)",
142
143
  details={"path": str(config_path), "exists": False},
143
144
  )
@@ -150,7 +151,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
150
151
  if issues:
151
152
  return DiagnosticResult(
152
153
  category="Project Config",
153
- status=DiagnosticStatus.WARNING,
154
+ status=ValidationSeverity.WARNING,
154
155
  message=f"Project config has issues: {', '.join(issues)}",
155
156
  details={"path": str(config_path), "issues": issues},
156
157
  )
@@ -160,7 +161,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
160
161
  if deprecated:
161
162
  return DiagnosticResult(
162
163
  category="Project Config",
163
- status=DiagnosticStatus.WARNING,
164
+ status=ValidationSeverity.WARNING,
164
165
  message=f"Using deprecated config keys: {', '.join(deprecated)}",
165
166
  details={"path": str(config_path), "deprecated_keys": deprecated},
166
167
  fix_description="Remove deprecated configuration keys",
@@ -168,7 +169,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
168
169
 
169
170
  return DiagnosticResult(
170
171
  category="Project Config",
171
- status=DiagnosticStatus.OK,
172
+ status=OperationResult.SUCCESS,
172
173
  message="Project configuration valid",
173
174
  details={
174
175
  "path": str(config_path),
@@ -180,7 +181,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
180
181
  except yaml.YAMLError as e:
181
182
  return DiagnosticResult(
182
183
  category="Project Config",
183
- status=DiagnosticStatus.ERROR,
184
+ status=ValidationSeverity.ERROR,
184
185
  message="Project config has invalid YAML",
185
186
  details={"path": str(config_path), "error": str(e)},
186
187
  fix_description="Fix YAML syntax errors in the configuration file",
@@ -188,7 +189,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
188
189
  except Exception as e:
189
190
  return DiagnosticResult(
190
191
  category="Project Config",
191
- status=DiagnosticStatus.WARNING,
192
+ status=ValidationSeverity.WARNING,
192
193
  message=f"Could not read project config: {e!s}",
193
194
  details={"path": str(config_path), "error": str(e)},
194
195
  )
@@ -207,14 +208,14 @@ class ConfigurationCheck(BaseDiagnosticCheck):
207
208
  if not set_vars:
208
209
  return DiagnosticResult(
209
210
  category="Environment Variables",
210
- status=DiagnosticStatus.OK,
211
+ status=OperationResult.SUCCESS,
211
212
  message="No claude-mpm environment variables set",
212
213
  details={"variables": {}},
213
214
  )
214
215
 
215
216
  return DiagnosticResult(
216
217
  category="Environment Variables",
217
- status=DiagnosticStatus.OK,
218
+ status=OperationResult.SUCCESS,
218
219
  message=f"{len(set_vars)} environment variable(s) configured",
219
220
  details={"variables": set_vars},
220
221
  )
@@ -245,7 +246,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
245
246
  if not paths_checked:
246
247
  return DiagnosticResult(
247
248
  category="Config Permissions",
248
- status=DiagnosticStatus.OK,
249
+ status=OperationResult.SUCCESS,
249
250
  message="No configuration files to check",
250
251
  details={"paths_checked": []},
251
252
  )
@@ -253,7 +254,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
253
254
  if issues:
254
255
  return DiagnosticResult(
255
256
  category="Config Permissions",
256
- status=DiagnosticStatus.WARNING,
257
+ status=ValidationSeverity.WARNING,
257
258
  message=f"Permission issues: {', '.join(issues)}",
258
259
  details={"issues": issues, "paths_checked": paths_checked},
259
260
  fix_command="chmod 644 ~/.claude/claude-mpm.yaml",
@@ -262,7 +263,7 @@ class ConfigurationCheck(BaseDiagnosticCheck):
262
263
 
263
264
  return DiagnosticResult(
264
265
  category="Config Permissions",
265
- status=DiagnosticStatus.OK,
266
+ status=OperationResult.SUCCESS,
266
267
  message="Configuration file permissions are correct",
267
268
  details={"paths_checked": paths_checked},
268
269
  )
@@ -9,7 +9,8 @@ import os
9
9
  import shutil
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
 
@@ -46,14 +47,14 @@ class FilesystemCheck(BaseDiagnosticCheck):
46
47
  details["structure"] = structure_result.details
47
48
 
48
49
  # Determine overall status
49
- if any(r.status == DiagnosticStatus.ERROR for r in sub_results):
50
- status = DiagnosticStatus.ERROR
50
+ if any(r.status == ValidationSeverity.ERROR for r in sub_results):
51
+ status = ValidationSeverity.ERROR
51
52
  message = "File system has critical issues"
52
- elif any(r.status == DiagnosticStatus.WARNING for r in sub_results):
53
- status = DiagnosticStatus.WARNING
53
+ elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
54
+ status = ValidationSeverity.WARNING
54
55
  message = "File system has minor issues"
55
56
  else:
56
- status = DiagnosticStatus.OK
57
+ status = OperationResult.SUCCESS
57
58
  message = "File system healthy"
58
59
 
59
60
  return DiagnosticResult(
@@ -67,7 +68,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
67
68
  except Exception as e:
68
69
  return DiagnosticResult(
69
70
  category=self.category,
70
- status=DiagnosticStatus.ERROR,
71
+ status=ValidationSeverity.ERROR,
71
72
  message=f"Filesystem check failed: {e!s}",
72
73
  details={"error": str(e)},
73
74
  )
@@ -106,7 +107,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
106
107
  if issues:
107
108
  return DiagnosticResult(
108
109
  category="Permissions",
109
- status=DiagnosticStatus.ERROR,
110
+ status=ValidationSeverity.ERROR,
110
111
  message=f"{len(issues)} permission issue(s)",
111
112
  details={"issues": issues, "checked": checked},
112
113
  fix_command="chmod -R 755 .claude",
@@ -116,14 +117,14 @@ class FilesystemCheck(BaseDiagnosticCheck):
116
117
  if not checked:
117
118
  return DiagnosticResult(
118
119
  category="Permissions",
119
- status=DiagnosticStatus.WARNING,
120
+ status=ValidationSeverity.WARNING,
120
121
  message="No project .claude directories found",
121
122
  details={"checked": [], "missing": [str(d) for d in critical_dirs]},
122
123
  )
123
124
 
124
125
  return DiagnosticResult(
125
126
  category="Permissions",
126
- status=DiagnosticStatus.OK,
127
+ status=OperationResult.SUCCESS,
127
128
  message="All permissions valid",
128
129
  details={"checked": checked},
129
130
  )
@@ -150,7 +151,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
150
151
  if free_gb < 0.1: # Less than 100MB
151
152
  return DiagnosticResult(
152
153
  category="Disk Space",
153
- status=DiagnosticStatus.ERROR,
154
+ status=ValidationSeverity.ERROR,
154
155
  message=f"Critical: Only {free_gb:.2f}GB free",
155
156
  details=details,
156
157
  fix_description="Free up disk space immediately",
@@ -158,7 +159,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
158
159
  if free_gb < 1: # Less than 1GB
159
160
  return DiagnosticResult(
160
161
  category="Disk Space",
161
- status=DiagnosticStatus.WARNING,
162
+ status=ValidationSeverity.WARNING,
162
163
  message=f"Low disk space: {free_gb:.2f}GB free",
163
164
  details=details,
164
165
  fix_description="Consider freeing up disk space",
@@ -166,7 +167,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
166
167
 
167
168
  return DiagnosticResult(
168
169
  category="Disk Space",
169
- status=DiagnosticStatus.OK,
170
+ status=OperationResult.SUCCESS,
170
171
  message=f"{free_gb:.1f}GB available",
171
172
  details=details,
172
173
  )
@@ -174,7 +175,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
174
175
  except Exception as e:
175
176
  return DiagnosticResult(
176
177
  category="Disk Space",
177
- status=DiagnosticStatus.WARNING,
178
+ status=ValidationSeverity.WARNING,
178
179
  message=f"Could not check disk space: {e!s}",
179
180
  details={"error": str(e)},
180
181
  )
@@ -196,7 +197,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
196
197
  if not base_dir.exists():
197
198
  return DiagnosticResult(
198
199
  category="Directory Structure",
199
- status=DiagnosticStatus.WARNING,
200
+ status=ValidationSeverity.WARNING,
200
201
  message="Project .claude directory missing",
201
202
  details={"base_dir": str(base_dir), "exists": False},
202
203
  fix_command="mkdir -p .claude/{agents,responses,memory,logs}",
@@ -213,7 +214,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
213
214
  if missing:
214
215
  return DiagnosticResult(
215
216
  category="Directory Structure",
216
- status=DiagnosticStatus.WARNING,
217
+ status=ValidationSeverity.WARNING,
217
218
  message=f"Missing {len(missing)} subdirectory(s)",
218
219
  details={
219
220
  "base_dir": str(base_dir),
@@ -226,7 +227,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
226
227
 
227
228
  return DiagnosticResult(
228
229
  category="Directory Structure",
229
- status=DiagnosticStatus.OK,
230
+ status=OperationResult.SUCCESS,
230
231
  message="Directory structure complete",
231
232
  details={"base_dir": str(base_dir), "directories": present},
232
233
  )