Fix crash when encountering an included directory which doesn't exist (#6497)

Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>
This commit is contained in:
gbbosak
2025-08-22 15:49:35 -05:00
committed by GitHub
parent cfcf14fd06
commit 9a0722625b
6 changed files with 65 additions and 24 deletions

18
packages/core/src/utils/workspaceContext.ts Normal file → Executable file
View File

@@ -7,6 +7,7 @@
import { isNodeError } from '../utils/errors.js';
import * as fs from 'fs';
import * as path from 'path';
import * as process from 'process';
export type Unsubscribe = () => void;
@@ -30,7 +31,6 @@ export class WorkspaceContext {
for (const additionalDirectory of additionalDirectories) {
this.addDirectory(additionalDirectory);
}
this.initialDirectories = new Set(this.directories);
}
@@ -64,12 +64,18 @@ export class WorkspaceContext {
* @param basePath Optional base path for resolving relative paths (defaults to cwd)
*/
addDirectory(directory: string, basePath: string = process.cwd()): void {
const resolved = this.resolveAndValidateDir(directory, basePath);
if (this.directories.has(resolved)) {
return;
try {
const resolved = this.resolveAndValidateDir(directory, basePath);
if (this.directories.has(resolved)) {
return;
}
this.directories.add(resolved);
this.notifyDirectoriesChanged();
} catch (err) {
console.warn(
`[WARN] Skipping unreadable directory: ${directory} (${err instanceof Error ? err.message : String(err)})`,
);
}
this.directories.add(resolved);
this.notifyDirectoriesChanged();
}
private resolveAndValidateDir(