fix: add defensive JSON parsing in check_instructions

This commit is contained in:
2026-05-16 17:53:42 +00:00
parent 86734da210
commit 5f43659b5a

View File

@@ -303,12 +303,17 @@ async def check_instructions(agents: list[dict]) -> bool:
print("-" * 115) print("-" * 115)
for agent in agents: for agent in agents:
name = (agent.get("name") or agent.get("id") or "?")[:29]
try:
adapter_cfg = agent.get("adapter_config") or {} adapter_cfg = agent.get("adapter_config") or {}
if isinstance(adapter_cfg, str): if isinstance(adapter_cfg, str):
adapter_cfg = json.loads(adapter_cfg) adapter_cfg = json.loads(adapter_cfg)
except (json.JSONDecodeError, TypeError):
print(f"{name:<30} {'(malformed adapter_config in DB)':<55} {'⚠ ERROR':<12}")
continue
file_path = adapter_cfg.get("instructionsFilePath", "") file_path = adapter_cfg.get("instructionsFilePath", "")
name = (agent.get("name") or agent.get("id") or "?")[:29]
if not file_path: if not file_path:
print(f"{name:<30} {'(none)':<55} {'⚠ NOT SET':<12}") print(f"{name:<30} {'(none)':<55} {'⚠ NOT SET':<12}")
@@ -324,9 +329,12 @@ async def check_instructions(agents: list[dict]) -> bool:
mtime = datetime.fromtimestamp(stat.st_mtime).strftime("%Y-%m-%d %H:%M") mtime = datetime.fromtimestamp(stat.st_mtime).strftime("%Y-%m-%d %H:%M")
# Check for drift vs DB metadata # Check for drift vs DB metadata
try:
metadata = agent.get("metadata") or {} metadata = agent.get("metadata") or {}
if isinstance(metadata, str): if isinstance(metadata, str):
metadata = json.loads(metadata) metadata = json.loads(metadata)
except (json.JSONDecodeError, TypeError):
metadata = {}
db_mtime = metadata.get("claude_md_mtime", "") db_mtime = metadata.get("claude_md_mtime", "")
actual_mtime = str(int(stat.st_mtime)) actual_mtime = str(int(stat.st_mtime))
drift = " ⚠ DRIFT" if db_mtime and db_mtime != actual_mtime else "" drift = " ⚠ DRIFT" if db_mtime and db_mtime != actual_mtime else ""