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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
- claude_mpm/agents/BASE_ENGINEER.md +286 -0
- claude_mpm/agents/BASE_PM.md +106 -1
- claude_mpm/agents/OUTPUT_STYLE.md +329 -11
- claude_mpm/agents/PM_INSTRUCTIONS.md +397 -459
- claude_mpm/agents/agent_loader.py +17 -5
- claude_mpm/agents/frontmatter_validator.py +284 -253
- claude_mpm/agents/templates/README.md +465 -0
- claude_mpm/agents/templates/agent-manager.json +4 -1
- claude_mpm/agents/templates/agentic-coder-optimizer.json +13 -3
- claude_mpm/agents/templates/api_qa.json +11 -2
- claude_mpm/agents/templates/circuit_breakers.md +638 -0
- claude_mpm/agents/templates/clerk-ops.json +12 -2
- claude_mpm/agents/templates/code_analyzer.json +8 -2
- claude_mpm/agents/templates/content-agent.json +358 -0
- claude_mpm/agents/templates/dart_engineer.json +15 -2
- claude_mpm/agents/templates/data_engineer.json +15 -2
- claude_mpm/agents/templates/documentation.json +10 -2
- claude_mpm/agents/templates/engineer.json +21 -1
- claude_mpm/agents/templates/gcp_ops_agent.json +12 -2
- claude_mpm/agents/templates/git_file_tracking.md +584 -0
- claude_mpm/agents/templates/golang_engineer.json +270 -0
- claude_mpm/agents/templates/imagemagick.json +4 -1
- claude_mpm/agents/templates/java_engineer.json +346 -0
- claude_mpm/agents/templates/local_ops_agent.json +1227 -6
- claude_mpm/agents/templates/memory_manager.json +4 -1
- claude_mpm/agents/templates/nextjs_engineer.json +141 -133
- claude_mpm/agents/templates/ops.json +12 -2
- claude_mpm/agents/templates/php-engineer.json +270 -174
- claude_mpm/agents/templates/pm_examples.md +474 -0
- claude_mpm/agents/templates/pm_red_flags.md +240 -0
- claude_mpm/agents/templates/product_owner.json +338 -0
- claude_mpm/agents/templates/project_organizer.json +14 -4
- claude_mpm/agents/templates/prompt-engineer.json +13 -2
- claude_mpm/agents/templates/python_engineer.json +174 -81
- claude_mpm/agents/templates/qa.json +11 -2
- claude_mpm/agents/templates/react_engineer.json +16 -3
- claude_mpm/agents/templates/refactoring_engineer.json +12 -2
- claude_mpm/agents/templates/research.json +34 -21
- claude_mpm/agents/templates/response_format.md +583 -0
- claude_mpm/agents/templates/ruby-engineer.json +129 -192
- claude_mpm/agents/templates/rust_engineer.json +270 -0
- claude_mpm/agents/templates/security.json +10 -2
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/agents/templates/ticketing.json +10 -2
- claude_mpm/agents/templates/typescript_engineer.json +116 -125
- claude_mpm/agents/templates/validation_templates.md +312 -0
- claude_mpm/agents/templates/vercel_ops_agent.json +12 -2
- claude_mpm/agents/templates/version_control.json +12 -2
- claude_mpm/agents/templates/web_qa.json +11 -2
- claude_mpm/agents/templates/web_ui.json +15 -2
- claude_mpm/cli/__init__.py +34 -614
- claude_mpm/cli/commands/agent_manager.py +25 -12
- claude_mpm/cli/commands/agent_state_manager.py +186 -0
- claude_mpm/cli/commands/agents.py +235 -148
- claude_mpm/cli/commands/agents_detect.py +380 -0
- claude_mpm/cli/commands/agents_recommend.py +309 -0
- claude_mpm/cli/commands/aggregate.py +7 -3
- claude_mpm/cli/commands/analyze.py +9 -4
- claude_mpm/cli/commands/analyze_code.py +7 -2
- claude_mpm/cli/commands/auto_configure.py +570 -0
- claude_mpm/cli/commands/config.py +47 -13
- claude_mpm/cli/commands/configure.py +419 -1571
- claude_mpm/cli/commands/configure_agent_display.py +261 -0
- claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
- claude_mpm/cli/commands/configure_hook_manager.py +225 -0
- claude_mpm/cli/commands/configure_models.py +18 -0
- claude_mpm/cli/commands/configure_navigation.py +167 -0
- claude_mpm/cli/commands/configure_paths.py +104 -0
- claude_mpm/cli/commands/configure_persistence.py +254 -0
- claude_mpm/cli/commands/configure_startup_manager.py +646 -0
- claude_mpm/cli/commands/configure_template_editor.py +497 -0
- claude_mpm/cli/commands/configure_validators.py +73 -0
- claude_mpm/cli/commands/local_deploy.py +537 -0
- claude_mpm/cli/commands/memory.py +54 -20
- claude_mpm/cli/commands/mpm_init.py +585 -196
- claude_mpm/cli/commands/mpm_init_handler.py +37 -3
- claude_mpm/cli/commands/search.py +170 -4
- claude_mpm/cli/commands/upgrade.py +152 -0
- claude_mpm/cli/executor.py +202 -0
- claude_mpm/cli/helpers.py +105 -0
- claude_mpm/cli/interactive/__init__.py +3 -0
- claude_mpm/cli/interactive/skills_wizard.py +491 -0
- claude_mpm/cli/parsers/__init__.py +7 -1
- claude_mpm/cli/parsers/agents_parser.py +9 -0
- claude_mpm/cli/parsers/auto_configure_parser.py +245 -0
- claude_mpm/cli/parsers/base_parser.py +110 -3
- claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +65 -5
- claude_mpm/cli/shared/output_formatters.py +28 -19
- claude_mpm/cli/startup.py +481 -0
- claude_mpm/cli/utils.py +52 -1
- claude_mpm/commands/mpm-agents-detect.md +168 -0
- claude_mpm/commands/mpm-agents-recommend.md +214 -0
- claude_mpm/commands/mpm-agents.md +75 -1
- claude_mpm/commands/mpm-auto-configure.md +217 -0
- claude_mpm/commands/mpm-help.md +163 -0
- claude_mpm/commands/mpm-init.md +148 -3
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +1 -0
- claude_mpm/config/agent_config.py +2 -2
- claude_mpm/config/model_config.py +428 -0
- claude_mpm/constants.py +1 -0
- claude_mpm/core/base_service.py +13 -12
- claude_mpm/core/enums.py +452 -0
- claude_mpm/core/factories.py +1 -1
- claude_mpm/core/instruction_reinforcement_hook.py +2 -1
- claude_mpm/core/interactive_session.py +9 -3
- claude_mpm/core/log_manager.py +2 -0
- claude_mpm/core/logging_config.py +6 -2
- claude_mpm/core/oneshot_session.py +8 -4
- claude_mpm/core/optimized_agent_loader.py +3 -3
- claude_mpm/core/output_style_manager.py +12 -192
- claude_mpm/core/service_registry.py +5 -1
- claude_mpm/core/types.py +2 -9
- claude_mpm/core/typing_utils.py +7 -6
- claude_mpm/dashboard/static/js/dashboard.js +0 -14
- claude_mpm/dashboard/templates/index.html +3 -41
- claude_mpm/hooks/__init__.py +20 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +4 -2
- claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +23 -2
- claude_mpm/hooks/failure_learning/__init__.py +60 -0
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +235 -0
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +217 -0
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +286 -0
- claude_mpm/hooks/instruction_reinforcement.py +7 -2
- claude_mpm/hooks/kuzu_enrichment_hook.py +263 -0
- claude_mpm/hooks/kuzu_memory_hook.py +37 -12
- claude_mpm/hooks/kuzu_response_hook.py +183 -0
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/services/agents/__init__.py +18 -5
- claude_mpm/services/agents/auto_config_manager.py +796 -0
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
- claude_mpm/services/agents/deployment/agent_validator.py +17 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
- claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
- claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +7 -6
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +5 -3
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +9 -6
- claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
- claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
- claude_mpm/services/agents/local_template_manager.py +1 -1
- claude_mpm/services/agents/memory/agent_memory_manager.py +5 -2
- claude_mpm/services/agents/observers.py +547 -0
- claude_mpm/services/agents/recommender.py +568 -0
- claude_mpm/services/agents/registry/modification_tracker.py +5 -2
- claude_mpm/services/command_handler_service.py +11 -5
- claude_mpm/services/core/__init__.py +33 -1
- claude_mpm/services/core/interfaces/__init__.py +90 -3
- claude_mpm/services/core/interfaces/agent.py +184 -0
- claude_mpm/services/core/interfaces/health.py +172 -0
- claude_mpm/services/core/interfaces/model.py +281 -0
- claude_mpm/services/core/interfaces/process.py +372 -0
- claude_mpm/services/core/interfaces/project.py +121 -0
- claude_mpm/services/core/interfaces/restart.py +307 -0
- claude_mpm/services/core/interfaces/stability.py +260 -0
- claude_mpm/services/core/memory_manager.py +11 -24
- claude_mpm/services/core/models/__init__.py +79 -0
- claude_mpm/services/core/models/agent_config.py +381 -0
- claude_mpm/services/core/models/health.py +162 -0
- claude_mpm/services/core/models/process.py +235 -0
- claude_mpm/services/core/models/restart.py +302 -0
- claude_mpm/services/core/models/stability.py +264 -0
- claude_mpm/services/core/models/toolchain.py +306 -0
- claude_mpm/services/core/path_resolver.py +23 -7
- claude_mpm/services/diagnostics/__init__.py +2 -2
- claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
- claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
- claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
- claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
- claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
- claude_mpm/services/diagnostics/checks/installation_check.py +30 -29
- claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
- claude_mpm/services/diagnostics/checks/mcp_check.py +50 -36
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +38 -33
- claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
- claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
- claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
- claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
- claude_mpm/services/diagnostics/models.py +19 -24
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -1
- claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
- claude_mpm/services/infrastructure/monitoring/base.py +5 -13
- claude_mpm/services/infrastructure/monitoring/network.py +7 -6
- claude_mpm/services/infrastructure/monitoring/process.py +13 -12
- claude_mpm/services/infrastructure/monitoring/resources.py +7 -6
- claude_mpm/services/infrastructure/monitoring/service.py +16 -15
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/local_ops/__init__.py +163 -0
- claude_mpm/services/local_ops/crash_detector.py +257 -0
- claude_mpm/services/local_ops/health_checks/__init__.py +28 -0
- claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
- claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
- claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
- claude_mpm/services/local_ops/health_manager.py +430 -0
- claude_mpm/services/local_ops/log_monitor.py +396 -0
- claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
- claude_mpm/services/local_ops/process_manager.py +595 -0
- claude_mpm/services/local_ops/resource_monitor.py +331 -0
- claude_mpm/services/local_ops/restart_manager.py +401 -0
- claude_mpm/services/local_ops/restart_policy.py +387 -0
- claude_mpm/services/local_ops/state_manager.py +372 -0
- claude_mpm/services/local_ops/unified_manager.py +600 -0
- claude_mpm/services/mcp_config_manager.py +9 -4
- claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
- claude_mpm/services/mcp_gateway/core/base.py +18 -31
- claude_mpm/services/mcp_gateway/main.py +30 -0
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +206 -32
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +30 -28
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +25 -5
- claude_mpm/services/mcp_service_verifier.py +1 -1
- claude_mpm/services/memory/failure_tracker.py +563 -0
- claude_mpm/services/memory_hook_service.py +165 -4
- claude_mpm/services/model/__init__.py +147 -0
- claude_mpm/services/model/base_provider.py +365 -0
- claude_mpm/services/model/claude_provider.py +412 -0
- claude_mpm/services/model/model_router.py +453 -0
- claude_mpm/services/model/ollama_provider.py +415 -0
- claude_mpm/services/monitor/daemon_manager.py +3 -2
- claude_mpm/services/monitor/handlers/dashboard.py +2 -1
- claude_mpm/services/monitor/handlers/hooks.py +2 -1
- claude_mpm/services/monitor/management/lifecycle.py +3 -2
- claude_mpm/services/monitor/server.py +2 -1
- claude_mpm/services/project/__init__.py +23 -0
- claude_mpm/services/project/detection_strategies.py +719 -0
- claude_mpm/services/project/toolchain_analyzer.py +581 -0
- claude_mpm/services/self_upgrade_service.py +342 -0
- claude_mpm/services/session_management_service.py +3 -2
- claude_mpm/services/session_manager.py +205 -1
- claude_mpm/services/shared/async_service_base.py +16 -27
- claude_mpm/services/shared/lifecycle_service_base.py +1 -14
- claude_mpm/services/socketio/handlers/__init__.py +5 -2
- claude_mpm/services/socketio/handlers/hook.py +13 -2
- claude_mpm/services/socketio/handlers/registry.py +4 -2
- claude_mpm/services/socketio/server/main.py +10 -8
- claude_mpm/services/subprocess_launcher_service.py +14 -5
- claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +8 -7
- claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +6 -5
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +8 -7
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +7 -6
- claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +5 -4
- claude_mpm/services/unified/config_strategies/validation_strategy.py +13 -9
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +10 -3
- claude_mpm/services/unified/deployment_strategies/local.py +6 -5
- claude_mpm/services/unified/deployment_strategies/utils.py +6 -5
- claude_mpm/services/unified/deployment_strategies/vercel.py +7 -6
- claude_mpm/services/unified/interfaces.py +3 -1
- claude_mpm/services/unified/unified_analyzer.py +14 -10
- claude_mpm/services/unified/unified_config.py +2 -1
- claude_mpm/services/unified/unified_deployment.py +9 -4
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/skills/__init__.py +21 -0
- claude_mpm/skills/bundled/__init__.py +6 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +567 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +286 -0
- claude_mpm/skills/skill_manager.py +310 -0
- claude_mpm/storage/state_storage.py +15 -15
- claude_mpm/tools/code_tree_analyzer.py +177 -141
- claude_mpm/tools/code_tree_events.py +4 -2
- claude_mpm/utils/agent_dependency_loader.py +40 -20
- claude_mpm/utils/display_helper.py +260 -0
- claude_mpm/utils/git_analyzer.py +407 -0
- claude_mpm/utils/robust_installer.py +73 -19
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/METADATA +129 -12
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/RECORD +295 -193
- claude_mpm/dashboard/static/css/code-tree.css +0 -1639
- claude_mpm/dashboard/static/index-hub-backup.html +0 -713
- claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
- claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1041
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
- claude_mpm/services/project/analyzer_refactored.py +0 -450
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/WHEEL +0 -0
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/top_level.txt +0 -0
|
@@ -6,7 +6,8 @@ WHY: Verify that agents are properly deployed, up-to-date, and functioning corre
|
|
|
6
6
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from ....core.enums import OperationResult, ValidationSeverity
|
|
10
|
+
from ..models import DiagnosticResult
|
|
10
11
|
from .base_check import BaseDiagnosticCheck
|
|
11
12
|
|
|
12
13
|
|
|
@@ -64,29 +65,29 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
64
65
|
available_count = details["available_count"]
|
|
65
66
|
|
|
66
67
|
if deployed_count == 0:
|
|
67
|
-
status =
|
|
68
|
+
status = ValidationSeverity.ERROR
|
|
68
69
|
message = f"No agents deployed (0/{available_count} available)"
|
|
69
70
|
fix_command = "claude-mpm agents deploy"
|
|
70
71
|
fix_description = "Deploy all available agents"
|
|
71
72
|
elif deployed_count < available_count:
|
|
72
|
-
status =
|
|
73
|
+
status = ValidationSeverity.WARNING
|
|
73
74
|
message = f"{deployed_count}/{available_count} agents deployed"
|
|
74
75
|
fix_command = "claude-mpm agents deploy"
|
|
75
76
|
fix_description = (
|
|
76
77
|
f"Deploy remaining {available_count - deployed_count} agents"
|
|
77
78
|
)
|
|
78
|
-
elif any(r.status ==
|
|
79
|
-
status =
|
|
79
|
+
elif any(r.status == ValidationSeverity.ERROR for r in sub_results):
|
|
80
|
+
status = ValidationSeverity.ERROR
|
|
80
81
|
message = "Agents have critical issues"
|
|
81
82
|
fix_command = None
|
|
82
83
|
fix_description = None
|
|
83
|
-
elif any(r.status ==
|
|
84
|
-
status =
|
|
84
|
+
elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
|
|
85
|
+
status = ValidationSeverity.WARNING
|
|
85
86
|
message = "Agents have minor issues"
|
|
86
87
|
fix_command = None
|
|
87
88
|
fix_description = None
|
|
88
89
|
else:
|
|
89
|
-
status =
|
|
90
|
+
status = OperationResult.SUCCESS
|
|
90
91
|
message = f"All {deployed_count} agents properly deployed"
|
|
91
92
|
fix_command = None
|
|
92
93
|
fix_description = None
|
|
@@ -104,7 +105,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
104
105
|
except Exception as e:
|
|
105
106
|
return DiagnosticResult(
|
|
106
107
|
category=self.category,
|
|
107
|
-
status=
|
|
108
|
+
status=ValidationSeverity.ERROR,
|
|
108
109
|
message=f"Agent check failed: {e!s}",
|
|
109
110
|
details={"error": str(e)},
|
|
110
111
|
)
|
|
@@ -127,7 +128,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
127
128
|
# Neither exists, default to user directory for error message
|
|
128
129
|
return DiagnosticResult(
|
|
129
130
|
category="Deployed Agents",
|
|
130
|
-
status=
|
|
131
|
+
status=ValidationSeverity.ERROR,
|
|
131
132
|
message="No agents directory found (checked project and user)",
|
|
132
133
|
details={
|
|
133
134
|
"project_path": str(project_agents_dir),
|
|
@@ -144,7 +145,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
144
145
|
if not agent_files:
|
|
145
146
|
return DiagnosticResult(
|
|
146
147
|
category="Deployed Agents",
|
|
147
|
-
status=
|
|
148
|
+
status=ValidationSeverity.ERROR,
|
|
148
149
|
message=f"No agents deployed in {location} directory",
|
|
149
150
|
details={"path": str(agents_dir), "location": location, "count": 0},
|
|
150
151
|
fix_command="claude-mpm agents deploy",
|
|
@@ -159,7 +160,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
159
160
|
if missing_core:
|
|
160
161
|
return DiagnosticResult(
|
|
161
162
|
category="Deployed Agents",
|
|
162
|
-
status=
|
|
163
|
+
status=ValidationSeverity.WARNING,
|
|
163
164
|
message=f"Missing core agents in {location}: {', '.join(missing_core)}",
|
|
164
165
|
details={
|
|
165
166
|
"path": str(agents_dir),
|
|
@@ -174,7 +175,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
174
175
|
|
|
175
176
|
return DiagnosticResult(
|
|
176
177
|
category="Deployed Agents",
|
|
177
|
-
status=
|
|
178
|
+
status=OperationResult.SUCCESS,
|
|
178
179
|
message=f"{len(agent_files)} agents deployed ({location} level)",
|
|
179
180
|
details={
|
|
180
181
|
"path": str(agents_dir),
|
|
@@ -205,7 +206,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
205
206
|
else:
|
|
206
207
|
return DiagnosticResult(
|
|
207
208
|
category="Agent Versions",
|
|
208
|
-
status=
|
|
209
|
+
status=OperationResult.SKIPPED,
|
|
209
210
|
message="No agents to check",
|
|
210
211
|
details={},
|
|
211
212
|
)
|
|
@@ -224,7 +225,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
224
225
|
if outdated:
|
|
225
226
|
return DiagnosticResult(
|
|
226
227
|
category="Agent Versions",
|
|
227
|
-
status=
|
|
228
|
+
status=ValidationSeverity.WARNING,
|
|
228
229
|
message=f"{len(outdated)} agent(s) outdated",
|
|
229
230
|
details={"outdated": outdated, "checked": checked},
|
|
230
231
|
fix_command="claude-mpm agents update",
|
|
@@ -234,14 +235,14 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
234
235
|
if checked == 0:
|
|
235
236
|
return DiagnosticResult(
|
|
236
237
|
category="Agent Versions",
|
|
237
|
-
status=
|
|
238
|
+
status=ValidationSeverity.WARNING,
|
|
238
239
|
message="No agents to check",
|
|
239
240
|
details={"checked": 0},
|
|
240
241
|
)
|
|
241
242
|
|
|
242
243
|
return DiagnosticResult(
|
|
243
244
|
category="Agent Versions",
|
|
244
|
-
status=
|
|
245
|
+
status=OperationResult.SUCCESS,
|
|
245
246
|
message=f"All {checked} agents up-to-date",
|
|
246
247
|
details={"checked": checked},
|
|
247
248
|
)
|
|
@@ -249,7 +250,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
249
250
|
except Exception as e:
|
|
250
251
|
return DiagnosticResult(
|
|
251
252
|
category="Agent Versions",
|
|
252
|
-
status=
|
|
253
|
+
status=ValidationSeverity.WARNING,
|
|
253
254
|
message=f"Could not check versions: {e!s}",
|
|
254
255
|
details={"error": str(e)},
|
|
255
256
|
)
|
|
@@ -273,7 +274,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
273
274
|
else:
|
|
274
275
|
return DiagnosticResult(
|
|
275
276
|
category="Agent Validation",
|
|
276
|
-
status=
|
|
277
|
+
status=OperationResult.SKIPPED,
|
|
277
278
|
message="No agents to validate",
|
|
278
279
|
details={},
|
|
279
280
|
)
|
|
@@ -301,14 +302,14 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
301
302
|
if invalid:
|
|
302
303
|
return DiagnosticResult(
|
|
303
304
|
category="Agent Validation",
|
|
304
|
-
status=
|
|
305
|
+
status=ValidationSeverity.WARNING,
|
|
305
306
|
message=f"{len(invalid)} validation issue(s)",
|
|
306
307
|
details={"issues": invalid, "validated": validated},
|
|
307
308
|
)
|
|
308
309
|
|
|
309
310
|
return DiagnosticResult(
|
|
310
311
|
category="Agent Validation",
|
|
311
|
-
status=
|
|
312
|
+
status=OperationResult.SUCCESS,
|
|
312
313
|
message=f"All {validated} agents valid",
|
|
313
314
|
details={"validated": validated},
|
|
314
315
|
)
|
|
@@ -316,7 +317,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
316
317
|
except Exception as e:
|
|
317
318
|
return DiagnosticResult(
|
|
318
319
|
category="Agent Validation",
|
|
319
|
-
status=
|
|
320
|
+
status=ValidationSeverity.WARNING,
|
|
320
321
|
message=f"Validation failed: {e!s}",
|
|
321
322
|
details={"error": str(e)},
|
|
322
323
|
)
|
|
@@ -358,14 +359,14 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
358
359
|
if issues:
|
|
359
360
|
return DiagnosticResult(
|
|
360
361
|
category="Common Issues",
|
|
361
|
-
status=
|
|
362
|
+
status=ValidationSeverity.WARNING,
|
|
362
363
|
message=f"{len(issues)} issue(s) found",
|
|
363
364
|
details={"issues": issues},
|
|
364
365
|
)
|
|
365
366
|
|
|
366
367
|
return DiagnosticResult(
|
|
367
368
|
category="Common Issues",
|
|
368
|
-
status=
|
|
369
|
+
status=OperationResult.SUCCESS,
|
|
369
370
|
message="No common issues detected",
|
|
370
371
|
details={},
|
|
371
372
|
)
|
|
@@ -9,7 +9,8 @@ import json
|
|
|
9
9
|
import subprocess
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
|
|
12
|
-
from
|
|
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 ==
|
|
37
|
+
details["installed"] = install_result.status == OperationResult.SUCCESS
|
|
37
38
|
|
|
38
|
-
if install_result.status ==
|
|
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 ==
|
|
53
|
+
details["mcp_configured"] = mcp_result.status == OperationResult.SUCCESS
|
|
53
54
|
|
|
54
55
|
# Determine overall status
|
|
55
|
-
if any(r.status ==
|
|
56
|
-
status =
|
|
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 ==
|
|
59
|
-
status =
|
|
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 =
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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 =
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
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 ==
|
|
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 =
|
|
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 =
|
|
69
|
+
status = ValidationSeverity.WARNING
|
|
69
70
|
message = f"{len(warnings_found)} known issue(s) detected"
|
|
70
71
|
else:
|
|
71
|
-
status =
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
360
|
+
status=ValidationSeverity.WARNING,
|
|
360
361
|
message=f"Could not check cache: {e!s}",
|
|
361
362
|
details={"error": str(e)},
|
|
362
363
|
)
|