From f25ea759a7f7c4b28fd3cbea4291400cb0fa11eb Mon Sep 17 00:00:00 2001 From: caizhiqiangzeyuan Date: Mon, 9 Jun 2025 22:37:49 +0800 Subject: [PATCH] fix:Cannot read properties of undefined (reading 'toLowerCase') Error --- src/memory/index.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/memory/index.ts b/src/memory/index.ts index b7993a3a08..85b804736a 100644 --- a/src/memory/index.ts +++ b/src/memory/index.ts @@ -137,12 +137,23 @@ class KnowledgeGraphManager { async searchNodes(query: string): Promise { const graph = await this.loadGraph(); + // Map to safe lower case + function toSafeLowerCase(str: unknown): string { + if (typeof str !== 'string') return ''; + return str.trim().toLowerCase(); + } + // Filter entities - const filteredEntities = graph.entities.filter(e => - e.name.toLowerCase().includes(query.toLowerCase()) || - e.entityType.toLowerCase().includes(query.toLowerCase()) || - e.observations.some(o => o.toLowerCase().includes(query.toLowerCase())) - ); + const filteredEntities = graph.entities.filter(e => { + const lowerQuery = toSafeLowerCase(query); + + return ( + toSafeLowerCase(e.name).includes(lowerQuery) || + toSafeLowerCase(e.entityType).includes(lowerQuery) || + (Array.isArray(e.observations) && + e.observations.some(o => toSafeLowerCase(o).includes(lowerQuery))) + ); + }); // Create a Set of filtered entity names for quick lookup const filteredEntityNames = new Set(filteredEntities.map(e => e.name));