Check folder trust before allowing add directory (#12652)

This commit is contained in:
shrutip90
2025-11-14 19:06:30 -08:00
committed by GitHub
parent d03496b710
commit 9786c4dcff
18 changed files with 1206 additions and 66 deletions

View File

@@ -430,7 +430,6 @@ describe('Server Config (config.ts)', () => {
});
it('should initialize WorkspaceContext with includeDirectories', () => {
const resolved = path.resolve(baseParams.targetDir);
const includeDirectories = ['dir1', 'dir2'];
const paramsWithIncludeDirs: ConfigParameters = {
...baseParams,
@@ -439,11 +438,13 @@ describe('Server Config (config.ts)', () => {
const config = new Config(paramsWithIncludeDirs);
const workspaceContext = config.getWorkspaceContext();
const directories = workspaceContext.getDirectories();
// Should include the target directory plus the included directories
expect(directories).toHaveLength(3);
expect(directories).toContain(resolved);
expect(directories).toContain(path.join(resolved, 'dir1'));
expect(directories).toContain(path.join(resolved, 'dir2'));
// Should include only the target directory initially
expect(directories).toHaveLength(1);
expect(directories).toContain(path.resolve(baseParams.targetDir));
// The other directories should be in the pending list
expect(config.getPendingIncludeDirectories()).toEqual(includeDirectories);
});
it('Config constructor should set telemetry to true when provided as true', () => {

View File

@@ -411,6 +411,7 @@ export class Config {
readonly fakeResponses?: string;
readonly recordResponses?: string;
private readonly disableYoloMode: boolean;
private pendingIncludeDirectories: string[];
private readonly enableHooks: boolean;
private readonly hooks:
| { [K in HookEventName]?: HookDefinition[] }
@@ -425,10 +426,9 @@ export class Config {
this.fileSystemService = new StandardFileSystemService();
this.sandbox = params.sandbox;
this.targetDir = path.resolve(params.targetDir);
this.workspaceContext = new WorkspaceContext(
this.targetDir,
params.includeDirectories ?? [],
);
this.folderTrust = params.folderTrust ?? false;
this.workspaceContext = new WorkspaceContext(this.targetDir, []);
this.pendingIncludeDirectories = params.includeDirectories ?? [];
this.debugMode = params.debugMode;
this.question = params.question;
@@ -927,6 +927,14 @@ export class Config {
return this.disableYoloMode || !this.isTrustedFolder();
}
getPendingIncludeDirectories(): string[] {
return this.pendingIncludeDirectories;
}
clearPendingIncludeDirectories(): void {
this.pendingIncludeDirectories = [];
}
getShowMemoryUsage(): boolean {
return this.showMemoryUsage;
}