fix(tools): land #31015 from @haosenwang1018

Co-authored-by: haosenwang1018 <1293965075@qq.com>
This commit is contained in:
Peter Steinberger
2026-03-02 01:00:49 +00:00
parent ac3e1e769b
commit da80e22d89
3 changed files with 21 additions and 4 deletions

View File

@@ -843,7 +843,17 @@ function createHostEditOperations(root: string, options?: { workspaceOnly?: bool
});
},
access: async (absolutePath: string) => {
const relative = toRelativePathInRoot(root, absolutePath);
let relative: string;
try {
relative = toRelativePathInRoot(root, absolutePath);
} catch {
// Path escapes workspace root. Don't throw here the upstream
// library replaces any `access` error with a misleading "File not
// found" message. By returning silently the subsequent `readFile`
// call will throw the same "Path escapes workspace root" error
// through a code-path that propagates the original message.
return;
}
try {
const opened = await openFileWithinRoot({
rootDir: root,
@@ -855,7 +865,9 @@ function createHostEditOperations(root: string, options?: { workspaceOnly?: bool
throw createFsAccessError("ENOENT", absolutePath);
}
if (error instanceof SafeOpenError && error.code === "outside-workspace") {
throw createFsAccessError("EACCES", absolutePath);
// Don't throw here see the comment above about the upstream
// library swallowing access errors as "File not found".
return;
}
throw error;
}