From ce6e387547920822a63cf8c726da001c0e813e9b Mon Sep 17 00:00:00 2001 From: 0xJeff Date: Tue, 14 Apr 2026 17:23:51 +0800 Subject: [PATCH] fix: guard against undefined text in recommendations causing toLowerCase crash (#37) If a recommendation object is missing the text field (e.g. Claude only emitted a zh field or passed a malformed entry), r.text.toLowerCase() throws "Cannot read properties of undefined (reading 'toLowerCase')". Filter recommendations to only include entries with a valid string text field before the dedup/merge loop. Co-Authored-By: Claude Sonnet 4.6 --- skills/agentguard/scripts/checkup-report.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/skills/agentguard/scripts/checkup-report.js b/skills/agentguard/scripts/checkup-report.js index 989236a..da21b4a 100644 --- a/skills/agentguard/scripts/checkup-report.js +++ b/skills/agentguard/scripts/checkup-report.js @@ -746,7 +746,8 @@ function generateReport(data) { autoRecs.push({ severity: 'LOW', text: 'Enable auto-scan on session start: export AGENTGUARD_AUTO_SCAN=1', zh: '启用会话启动时自动扫描:export AGENTGUARD_AUTO_SCAN=1' }); // Merge: user recs first, then auto recs (dedup by text similarity) - const allRecs = [...recommendations]; + // Guard against malformed entries where text may be undefined (#37) + const allRecs = recommendations.filter(r => r && typeof r.text === 'string'); for (const ar of autoRecs) { if (!allRecs.some(r => r.text.toLowerCase().includes(ar.text.slice(0, 30).toLowerCase()))) { allRecs.push(ar);