diff --git a/packages/core/src/tools/read-many-files.ts b/packages/core/src/tools/read-many-files.ts index f97bb77733..bb570e568e 100644 --- a/packages/core/src/tools/read-many-files.ts +++ b/packages/core/src/tools/read-many-files.ts @@ -199,8 +199,8 @@ ${finalExclusionPatternsForDescription const fullPath = path.join(dir, normalizedP); let exists = false; try { - await fsPromises.access(fullPath); - exists = true; + const st = await fsPromises.stat(fullPath); + exists = st.isFile(); } catch { exists = false; } diff --git a/packages/core/src/utils/fileUtils.ts b/packages/core/src/utils/fileUtils.ts index 52191171aa..ad64484783 100644 --- a/packages/core/src/utils/fileUtils.ts +++ b/packages/core/src/utils/fileUtils.ts @@ -15,6 +15,7 @@ import { ToolErrorType } from '../tools/tool-error.js'; import { BINARY_EXTENSIONS } from './ignorePatterns.js'; import { createRequire as createModuleRequire } from 'node:module'; import { debugLogger } from './debugLogger.js'; + import { DEFAULT_MAX_LINES_TEXT_FILE, MAX_LINE_LENGTH_TEXT_FILE, @@ -350,7 +351,9 @@ export async function isEmpty(filePath: string): Promise { */ export async function isBinaryFile(filePath: string): Promise { try { - return await isBinaryFileCheck(filePath); + const stats = await fsPromises.stat(filePath); + if (!stats.isFile()) return false; + return await isBinaryFileCheck(filePath, stats.size); } catch (error) { debugLogger.warn( `Failed to check if file is binary: ${filePath}`,