fix: Usage of folder trust config flags in FileCommandLoader (#10837)

This commit is contained in:
shrutip90
2025-10-10 11:07:40 -07:00
committed by GitHub
parent 32db4ff66d
commit c6af4eaa00
4 changed files with 19 additions and 26 deletions
+1 -1
View File
@@ -116,8 +116,8 @@ describe('runNonInteractive', () => {
getContentGeneratorConfig: vi.fn().mockReturnValue({}), getContentGeneratorConfig: vi.fn().mockReturnValue({}),
getDebugMode: vi.fn().mockReturnValue(false), getDebugMode: vi.fn().mockReturnValue(false),
getOutputFormat: vi.fn().mockReturnValue('text'), getOutputFormat: vi.fn().mockReturnValue('text'),
getFolderTrustFeature: vi.fn().mockReturnValue(false),
getFolderTrust: vi.fn().mockReturnValue(false), getFolderTrust: vi.fn().mockReturnValue(false),
isTrustedFolder: vi.fn().mockReturnValue(false),
} as unknown as Config; } as unknown as Config;
mockSettings = { mockSettings = {
@@ -224,8 +224,8 @@ describe('FileCommandLoader', () => {
const mockConfig = { const mockConfig = {
getProjectRoot: vi.fn(() => '/path/to/project'), getProjectRoot: vi.fn(() => '/path/to/project'),
getExtensions: vi.fn(() => []), getExtensions: vi.fn(() => []),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false), getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config; } as unknown as Config;
const loader = new FileCommandLoader(mockConfig); const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal); const commands = await loader.loadCommands(signal);
@@ -269,8 +269,8 @@ describe('FileCommandLoader', () => {
const mockConfig = { const mockConfig = {
getProjectRoot: vi.fn(() => process.cwd()), getProjectRoot: vi.fn(() => process.cwd()),
getExtensions: vi.fn(() => []), getExtensions: vi.fn(() => []),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false), getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config; } as unknown as Config;
const loader = new FileCommandLoader(mockConfig); const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal); const commands = await loader.loadCommands(signal);
@@ -560,8 +560,8 @@ describe('FileCommandLoader', () => {
path: extensionDir, path: extensionDir,
}, },
]), ]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false), getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config; } as unknown as Config;
const loader = new FileCommandLoader(mockConfig); const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal); const commands = await loader.loadCommands(signal);
@@ -613,8 +613,8 @@ describe('FileCommandLoader', () => {
path: extensionDir, path: extensionDir,
}, },
]), ]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false), getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config; } as unknown as Config;
const loader = new FileCommandLoader(mockConfig); const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal); const commands = await loader.loadCommands(signal);
@@ -722,8 +722,8 @@ describe('FileCommandLoader', () => {
path: extensionDir2, path: extensionDir2,
}, },
]), ]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false), getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config; } as unknown as Config;
const loader = new FileCommandLoader(mockConfig); const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal); const commands = await loader.loadCommands(signal);
@@ -760,8 +760,8 @@ describe('FileCommandLoader', () => {
path: extensionDir, path: extensionDir,
}, },
]), ]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false), getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config; } as unknown as Config;
const loader = new FileCommandLoader(mockConfig); const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal); const commands = await loader.loadCommands(signal);
@@ -794,8 +794,8 @@ describe('FileCommandLoader', () => {
getExtensions: vi.fn(() => [ getExtensions: vi.fn(() => [
{ name: 'a', version: '1.0.0', isActive: true, path: extensionDir }, { name: 'a', version: '1.0.0', isActive: true, path: extensionDir },
]), ]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false), getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config; } as unknown as Config;
const loader = new FileCommandLoader(mockConfig); const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal); const commands = await loader.loadCommands(signal);
@@ -1189,8 +1189,8 @@ describe('FileCommandLoader', () => {
const mockConfig = { const mockConfig = {
getProjectRoot: vi.fn(() => '/path/to/project'), getProjectRoot: vi.fn(() => '/path/to/project'),
getExtensions: vi.fn(() => []), getExtensions: vi.fn(() => []),
getFolderTrustFeature: vi.fn(() => true),
getFolderTrust: vi.fn(() => true), getFolderTrust: vi.fn(() => true),
isTrustedFolder: vi.fn(() => true),
} as unknown as Config; } as unknown as Config;
const userCommandsDir = Storage.getUserCommandsDir(); const userCommandsDir = Storage.getUserCommandsDir();
mock({ mock({
@@ -1210,8 +1210,8 @@ describe('FileCommandLoader', () => {
const mockConfig = { const mockConfig = {
getProjectRoot: vi.fn(() => '/path/to/project'), getProjectRoot: vi.fn(() => '/path/to/project'),
getExtensions: vi.fn(() => []), getExtensions: vi.fn(() => []),
getFolderTrustFeature: vi.fn(() => true), getFolderTrust: vi.fn(() => true),
getFolderTrust: vi.fn(() => false), isTrustedFolder: vi.fn(() => false),
} as unknown as Config; } as unknown as Config;
const userCommandsDir = Storage.getUserCommandsDir(); const userCommandsDir = Storage.getUserCommandsDir();
mock({ mock({
@@ -64,11 +64,11 @@ const TomlCommandDefSchema = z.object({
export class FileCommandLoader implements ICommandLoader { export class FileCommandLoader implements ICommandLoader {
private readonly projectRoot: string; private readonly projectRoot: string;
private readonly folderTrustEnabled: boolean; private readonly folderTrustEnabled: boolean;
private readonly folderTrust: boolean; private readonly isTrustedFolder: boolean;
constructor(private readonly config: Config | null) { constructor(private readonly config: Config | null) {
this.folderTrustEnabled = !!config?.getFolderTrustFeature(); this.folderTrustEnabled = !!config?.getFolderTrust();
this.folderTrust = !!config?.getFolderTrust(); this.isTrustedFolder = !!config?.isTrustedFolder();
this.projectRoot = config?.getProjectRoot() || process.cwd(); this.projectRoot = config?.getProjectRoot() || process.cwd();
} }
@@ -101,7 +101,7 @@ export class FileCommandLoader implements ICommandLoader {
cwd: dirInfo.path, cwd: dirInfo.path,
}); });
if (this.folderTrustEnabled && !this.folderTrust) { if (this.folderTrustEnabled && !this.isTrustedFolder) {
return []; return [];
} }
+4 -11
View File
@@ -246,7 +246,6 @@ export interface ConfigParameters {
blockedMcpServers?: Array<{ name: string; extensionName: string }>; blockedMcpServers?: Array<{ name: string; extensionName: string }>;
noBrowser?: boolean; noBrowser?: boolean;
summarizeToolOutput?: Record<string, SummarizeToolOutputSettings>; summarizeToolOutput?: Record<string, SummarizeToolOutputSettings>;
folderTrustFeature?: boolean;
folderTrust?: boolean; folderTrust?: boolean;
ideMode?: boolean; ideMode?: boolean;
loadMemoryFromIncludeDirectories?: boolean; loadMemoryFromIncludeDirectories?: boolean;
@@ -321,7 +320,6 @@ export class Config {
private model: string; private model: string;
private readonly extensionContextFilePaths: string[]; private readonly extensionContextFilePaths: string[];
private readonly noBrowser: boolean; private readonly noBrowser: boolean;
private readonly folderTrustFeature: boolean;
private readonly folderTrust: boolean; private readonly folderTrust: boolean;
private ideMode: boolean; private ideMode: boolean;
@@ -430,7 +428,6 @@ export class Config {
this._blockedMcpServers = params.blockedMcpServers ?? []; this._blockedMcpServers = params.blockedMcpServers ?? [];
this.noBrowser = params.noBrowser ?? false; this.noBrowser = params.noBrowser ?? false;
this.summarizeToolOutput = params.summarizeToolOutput; this.summarizeToolOutput = params.summarizeToolOutput;
this.folderTrustFeature = params.folderTrustFeature ?? false;
this.folderTrust = params.folderTrust ?? false; this.folderTrust = params.folderTrust ?? false;
this.ideMode = params.ideMode ?? false; this.ideMode = params.ideMode ?? false;
this.loadMemoryFromIncludeDirectories = this.loadMemoryFromIncludeDirectories =
@@ -889,21 +886,17 @@ export class Config {
return this.ideMode; return this.ideMode;
} }
/*** /**
* TODO: Review if this is actually used at it seems it is only used but the FileCommandLoader * Returns 'true' if the folder trust feature is enabled.
*/ */
getFolderTrustFeature(): boolean { getFolderTrust(): boolean {
return this.folderTrustFeature; return this.folderTrust;
} }
/** /**
* Returns 'true' if the workspace is considered "trusted". * Returns 'true' if the workspace is considered "trusted".
* 'false' for untrusted. * 'false' for untrusted.
*/ */
getFolderTrust(): boolean {
return this.folderTrust;
}
isTrustedFolder(): boolean { isTrustedFolder(): boolean {
// isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined // isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
// when the file based trust value is unavailable, since it is mainly used // when the file based trust value is unavailable, since it is mainly used