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
@@ -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
  )
@@ -11,7 +11,8 @@ import sys
11
11
  from pathlib import Path
12
12
  from typing import Optional
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
 
@@ -54,14 +55,14 @@ class InstallationCheck(BaseDiagnosticCheck):
54
55
  details["dependencies"] = deps_result.details.get("status")
55
56
 
56
57
  # Determine overall status
57
- if any(r.status == DiagnosticStatus.ERROR for r in sub_results):
58
- status = DiagnosticStatus.ERROR
58
+ if any(r.status == ValidationSeverity.ERROR for r in sub_results):
59
+ status = ValidationSeverity.ERROR
59
60
  message = "Installation has critical issues"
60
- elif any(r.status == DiagnosticStatus.WARNING for r in sub_results):
61
- status = DiagnosticStatus.WARNING
61
+ elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
62
+ status = ValidationSeverity.WARNING
62
63
  message = "Installation has minor issues"
63
64
  else:
64
- status = DiagnosticStatus.OK
65
+ status = OperationResult.SUCCESS
65
66
  message = "Installation is healthy"
66
67
 
67
68
  return DiagnosticResult(
@@ -75,7 +76,7 @@ class InstallationCheck(BaseDiagnosticCheck):
75
76
  except Exception as e:
76
77
  return DiagnosticResult(
77
78
  category=self.category,
78
- status=DiagnosticStatus.ERROR,
79
+ status=ValidationSeverity.ERROR,
79
80
  message=f"Installation check failed: {e!s}",
80
81
  details={"error": str(e)},
81
82
  )
@@ -91,7 +92,7 @@ class InstallationCheck(BaseDiagnosticCheck):
91
92
  if version_info < min_version:
92
93
  return DiagnosticResult(
93
94
  category="Python Version",
94
- status=DiagnosticStatus.ERROR,
95
+ status=ValidationSeverity.ERROR,
95
96
  message=f"Python {version_info.major}.{version_info.minor} is below minimum required {min_version[0]}.{min_version[1]}",
96
97
  details={"version": version},
97
98
  fix_description="Upgrade Python to 3.9 or higher",
@@ -99,13 +100,13 @@ class InstallationCheck(BaseDiagnosticCheck):
99
100
  if version_info < recommended_version:
100
101
  return DiagnosticResult(
101
102
  category="Python Version",
102
- status=DiagnosticStatus.WARNING,
103
+ status=ValidationSeverity.WARNING,
103
104
  message=f"Python {version_info.major}.{version_info.minor} works but {recommended_version[0]}.{recommended_version[1]}+ is recommended",
104
105
  details={"version": version},
105
106
  )
106
107
  return DiagnosticResult(
107
108
  category="Python Version",
108
- status=DiagnosticStatus.OK,
109
+ status=OperationResult.SUCCESS,
109
110
  message=f"Python {version_info.major}.{version_info.minor}.{version_info.micro}",
110
111
  details={"version": version},
111
112
  )
@@ -122,7 +123,7 @@ class InstallationCheck(BaseDiagnosticCheck):
122
123
 
123
124
  return DiagnosticResult(
124
125
  category="Claude MPM Version",
125
- status=DiagnosticStatus.OK,
126
+ status=OperationResult.SUCCESS,
126
127
  message=f"Version: {version}",
127
128
  details={
128
129
  "version": semantic_version,
@@ -133,7 +134,7 @@ class InstallationCheck(BaseDiagnosticCheck):
133
134
  except Exception as e:
134
135
  return DiagnosticResult(
135
136
  category="Claude MPM Version",
136
- status=DiagnosticStatus.WARNING,
137
+ status=ValidationSeverity.WARNING,
137
138
  message="Could not determine version",
138
139
  details={"error": str(e)},
139
140
  )
@@ -243,7 +244,7 @@ class InstallationCheck(BaseDiagnosticCheck):
243
244
  if not methods_found:
244
245
  return DiagnosticResult(
245
246
  category="Installation Method",
246
- status=DiagnosticStatus.WARNING,
247
+ status=ValidationSeverity.WARNING,
247
248
  message="Installation method unknown",
248
249
  details=details,
249
250
  )
@@ -259,7 +260,7 @@ class InstallationCheck(BaseDiagnosticCheck):
259
260
  container_msg += " with virtual environment"
260
261
  return DiagnosticResult(
261
262
  category="Installation Method",
262
- status=DiagnosticStatus.OK,
263
+ status=OperationResult.SUCCESS,
263
264
  message=container_msg,
264
265
  details=details,
265
266
  )
@@ -268,7 +269,7 @@ class InstallationCheck(BaseDiagnosticCheck):
268
269
  if "pipx" in methods_found:
269
270
  return DiagnosticResult(
270
271
  category="Installation Method",
271
- status=DiagnosticStatus.OK,
272
+ status=OperationResult.SUCCESS,
272
273
  message="Running from pipx environment (recommended)",
273
274
  details=details,
274
275
  )
@@ -278,7 +279,7 @@ class InstallationCheck(BaseDiagnosticCheck):
278
279
  venv_name = Path(sys.prefix).name
279
280
  return DiagnosticResult(
280
281
  category="Installation Method",
281
- status=DiagnosticStatus.OK,
282
+ status=OperationResult.SUCCESS,
282
283
  message=f"Development mode in virtual environment '{venv_name}'",
283
284
  details=details,
284
285
  )
@@ -288,7 +289,7 @@ class InstallationCheck(BaseDiagnosticCheck):
288
289
  venv_name = Path(sys.prefix).name
289
290
  return DiagnosticResult(
290
291
  category="Installation Method",
291
- status=DiagnosticStatus.OK,
292
+ status=OperationResult.SUCCESS,
292
293
  message=f"Virtual environment '{venv_name}'",
293
294
  details=details,
294
295
  )
@@ -297,7 +298,7 @@ class InstallationCheck(BaseDiagnosticCheck):
297
298
  if "development" in methods_found and "homebrew" in methods_found:
298
299
  return DiagnosticResult(
299
300
  category="Installation Method",
300
- status=DiagnosticStatus.OK,
301
+ status=OperationResult.SUCCESS,
301
302
  message="Development mode with Homebrew Python",
302
303
  details=details,
303
304
  )
@@ -305,7 +306,7 @@ class InstallationCheck(BaseDiagnosticCheck):
305
306
  if "development" in methods_found:
306
307
  return DiagnosticResult(
307
308
  category="Installation Method",
308
- status=DiagnosticStatus.OK,
309
+ status=OperationResult.SUCCESS,
309
310
  message="Development mode",
310
311
  details=details,
311
312
  )
@@ -315,9 +316,9 @@ class InstallationCheck(BaseDiagnosticCheck):
315
316
  msg = "Homebrew Python"
316
317
  if details.get("pipx_installed"):
317
318
  msg += " (pipx is installed but not active - consider using 'pipx run claude-mpm')"
318
- status = DiagnosticStatus.WARNING
319
+ status = ValidationSeverity.WARNING
319
320
  else:
320
- status = DiagnosticStatus.OK
321
+ status = OperationResult.SUCCESS
321
322
  return DiagnosticResult(
322
323
  category="Installation Method",
323
324
  status=status,
@@ -329,7 +330,7 @@ class InstallationCheck(BaseDiagnosticCheck):
329
330
  if "pip" in methods_found:
330
331
  return DiagnosticResult(
331
332
  category="Installation Method",
332
- status=DiagnosticStatus.WARNING,
333
+ status=ValidationSeverity.WARNING,
333
334
  message="System pip installation (consider using pipx or venv instead)",
334
335
  details=details,
335
336
  fix_description="Consider reinstalling with pipx for isolated environment",
@@ -339,7 +340,7 @@ class InstallationCheck(BaseDiagnosticCheck):
339
340
  if "system" in methods_found:
340
341
  return DiagnosticResult(
341
342
  category="Installation Method",
342
- status=DiagnosticStatus.WARNING,
343
+ status=ValidationSeverity.WARNING,
343
344
  message="System Python (consider using pipx or venv)",
344
345
  details=details,
345
346
  )
@@ -347,7 +348,7 @@ class InstallationCheck(BaseDiagnosticCheck):
347
348
  # Fallback for any other combination
348
349
  return DiagnosticResult(
349
350
  category="Installation Method",
350
- status=DiagnosticStatus.OK,
351
+ status=OperationResult.SUCCESS,
351
352
  message=f"Installed via {', '.join(methods_found)}",
352
353
  details=details,
353
354
  )
@@ -399,7 +400,7 @@ class InstallationCheck(BaseDiagnosticCheck):
399
400
 
400
401
  return DiagnosticResult(
401
402
  category="Dependencies",
402
- status=DiagnosticStatus.ERROR,
403
+ status=ValidationSeverity.ERROR,
403
404
  message=f"Missing critical dependencies: {', '.join(missing)}",
404
405
  details={
405
406
  "missing": missing,
@@ -414,11 +415,11 @@ class InstallationCheck(BaseDiagnosticCheck):
414
415
  if warnings:
415
416
  return DiagnosticResult(
416
417
  category="Dependencies",
417
- status=DiagnosticStatus.WARNING,
418
+ status=ValidationSeverity.WARNING,
418
419
  message=f"Missing optional dependencies: {', '.join(warnings)}",
419
420
  details={
420
421
  "optional_missing": warnings,
421
- "status": "partial",
422
+ "status": OperationResult.PARTIAL,
422
423
  "installed": installed,
423
424
  "python_executable": sys.executable,
424
425
  "in_venv": in_venv,
@@ -426,10 +427,10 @@ class InstallationCheck(BaseDiagnosticCheck):
426
427
  )
427
428
  return DiagnosticResult(
428
429
  category="Dependencies",
429
- status=DiagnosticStatus.OK,
430
+ status=OperationResult.SUCCESS,
430
431
  message="All dependencies installed",
431
432
  details={
432
- "status": "complete",
433
+ "status": OperationResult.COMPLETED,
433
434
  "installed": installed,
434
435
  "python_executable": sys.executable,
435
436
  "in_venv": in_venv,
@@ -11,7 +11,8 @@ from collections import defaultdict
11
11
  from pathlib import Path
12
12
  from typing import Dict
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
 
@@ -77,14 +78,14 @@ class InstructionsCheck(BaseDiagnosticCheck):
77
78
  sub_results.append(separation_result)
78
79
 
79
80
  # Determine overall status
80
- if any(r.status == DiagnosticStatus.ERROR for r in sub_results):
81
- status = DiagnosticStatus.ERROR
81
+ if any(r.status == ValidationSeverity.ERROR for r in sub_results):
82
+ status = ValidationSeverity.ERROR
82
83
  message = "Found critical issues with instruction files"
83
- elif any(r.status == DiagnosticStatus.WARNING for r in sub_results):
84
- status = DiagnosticStatus.WARNING
84
+ elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
85
+ status = ValidationSeverity.WARNING
85
86
  message = "Found minor issues with instruction files"
86
87
  else:
87
- status = DiagnosticStatus.OK
88
+ status = OperationResult.SUCCESS
88
89
  message = "Instruction files are properly configured"
89
90
 
90
91
  return DiagnosticResult(
@@ -98,7 +99,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
98
99
  except Exception as e:
99
100
  return DiagnosticResult(
100
101
  category=self.category,
101
- status=DiagnosticStatus.ERROR,
102
+ status=ValidationSeverity.ERROR,
102
103
  message=f"Instructions check failed: {e!s}",
103
104
  details={"error": str(e)},
104
105
  )
@@ -146,7 +147,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
146
147
  if not claude_files:
147
148
  return DiagnosticResult(
148
149
  category="CLAUDE.md Placement",
149
- status=DiagnosticStatus.OK,
150
+ status=OperationResult.SUCCESS,
150
151
  message="No CLAUDE.md files found",
151
152
  details={},
152
153
  )
@@ -170,7 +171,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
170
171
  if issues:
171
172
  return DiagnosticResult(
172
173
  category="CLAUDE.md Placement",
173
- status=DiagnosticStatus.WARNING,
174
+ status=ValidationSeverity.WARNING,
174
175
  message=f"Found {len(issues)} misplaced CLAUDE.md file(s)",
175
176
  details={"issues": issues},
176
177
  fix_description=(
@@ -181,7 +182,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
181
182
 
182
183
  return DiagnosticResult(
183
184
  category="CLAUDE.md Placement",
184
- status=DiagnosticStatus.OK,
185
+ status=OperationResult.SUCCESS,
185
186
  message="CLAUDE.md properly placed in project root",
186
187
  details={"count": len(claude_files)},
187
188
  )
@@ -191,7 +192,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
191
192
  if len(files) < 2:
192
193
  return DiagnosticResult(
193
194
  category="Duplicate Content",
194
- status=DiagnosticStatus.OK,
195
+ status=OperationResult.SUCCESS,
195
196
  message="No duplicate content detected",
196
197
  details={},
197
198
  )
@@ -226,7 +227,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
226
227
  if duplicates:
227
228
  return DiagnosticResult(
228
229
  category="Duplicate Content",
229
- status=DiagnosticStatus.WARNING,
230
+ status=ValidationSeverity.WARNING,
230
231
  message=f"Found {len(duplicates)} duplicate content block(s)",
231
232
  details={"duplicates": duplicates[:5]}, # Limit to first 5
232
233
  fix_description=(
@@ -238,7 +239,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
238
239
 
239
240
  return DiagnosticResult(
240
241
  category="Duplicate Content",
241
- status=DiagnosticStatus.OK,
242
+ status=OperationResult.SUCCESS,
242
243
  message="No significant duplicate content found",
243
244
  details={},
244
245
  )
@@ -280,7 +281,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
280
281
  if conflicts:
281
282
  return DiagnosticResult(
282
283
  category="Conflicting Directives",
283
- status=DiagnosticStatus.ERROR,
284
+ status=ValidationSeverity.ERROR,
284
285
  message=f"Found {len(conflicts)} potential conflict(s)",
285
286
  details={"conflicts": conflicts},
286
287
  fix_description=(
@@ -292,7 +293,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
292
293
 
293
294
  return DiagnosticResult(
294
295
  category="Conflicting Directives",
295
- status=DiagnosticStatus.OK,
296
+ status=OperationResult.SUCCESS,
296
297
  message="No conflicting directives detected",
297
298
  details={},
298
299
  )
@@ -330,7 +331,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
330
331
  if duplicates:
331
332
  return DiagnosticResult(
332
333
  category="Agent Definitions",
333
- status=DiagnosticStatus.WARNING,
334
+ status=ValidationSeverity.WARNING,
334
335
  message=f"Found {len(duplicates)} duplicate agent definition(s)",
335
336
  details={"duplicates": duplicates},
336
337
  fix_description=(
@@ -341,7 +342,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
341
342
 
342
343
  return DiagnosticResult(
343
344
  category="Agent Definitions",
344
- status=DiagnosticStatus.OK,
345
+ status=OperationResult.SUCCESS,
345
346
  message="Agent definitions are unique",
346
347
  details={"total_agents": len(agent_definitions)},
347
348
  )
@@ -396,7 +397,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
396
397
  if issues:
397
398
  return DiagnosticResult(
398
399
  category="Separation of Concerns",
399
- status=DiagnosticStatus.WARNING,
400
+ status=ValidationSeverity.WARNING,
400
401
  message=f"Found {len(issues)} separation of concerns issue(s)",
401
402
  details={"issues": issues},
402
403
  fix_description=(
@@ -409,7 +410,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
409
410
 
410
411
  return DiagnosticResult(
411
412
  category="Separation of Concerns",
412
- status=DiagnosticStatus.OK,
413
+ status=OperationResult.SUCCESS,
413
414
  message="Instruction files properly separated",
414
415
  details={},
415
416
  )