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

View File

@@ -116,8 +116,8 @@ describe('runNonInteractive', () => {
getContentGeneratorConfig: vi.fn().mockReturnValue({}),
getDebugMode: vi.fn().mockReturnValue(false),
getOutputFormat: vi.fn().mockReturnValue('text'),
getFolderTrustFeature: vi.fn().mockReturnValue(false),
getFolderTrust: vi.fn().mockReturnValue(false),
isTrustedFolder: vi.fn().mockReturnValue(false),
} as unknown as Config;
mockSettings = {

View File

@@ -224,8 +224,8 @@ describe('FileCommandLoader', () => {
const mockConfig = {
getProjectRoot: vi.fn(() => '/path/to/project'),
getExtensions: vi.fn(() => []),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config;
const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal);
@@ -269,8 +269,8 @@ describe('FileCommandLoader', () => {
const mockConfig = {
getProjectRoot: vi.fn(() => process.cwd()),
getExtensions: vi.fn(() => []),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config;
const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal);
@@ -560,8 +560,8 @@ describe('FileCommandLoader', () => {
path: extensionDir,
},
]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config;
const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal);
@@ -613,8 +613,8 @@ describe('FileCommandLoader', () => {
path: extensionDir,
},
]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config;
const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal);
@@ -722,8 +722,8 @@ describe('FileCommandLoader', () => {
path: extensionDir2,
},
]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config;
const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal);
@@ -760,8 +760,8 @@ describe('FileCommandLoader', () => {
path: extensionDir,
},
]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config;
const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal);
@@ -794,8 +794,8 @@ describe('FileCommandLoader', () => {
getExtensions: vi.fn(() => [
{ name: 'a', version: '1.0.0', isActive: true, path: extensionDir },
]),
getFolderTrustFeature: vi.fn(() => false),
getFolderTrust: vi.fn(() => false),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config;
const loader = new FileCommandLoader(mockConfig);
const commands = await loader.loadCommands(signal);
@@ -1189,8 +1189,8 @@ describe('FileCommandLoader', () => {
const mockConfig = {
getProjectRoot: vi.fn(() => '/path/to/project'),
getExtensions: vi.fn(() => []),
getFolderTrustFeature: vi.fn(() => true),
getFolderTrust: vi.fn(() => true),
isTrustedFolder: vi.fn(() => true),
} as unknown as Config;
const userCommandsDir = Storage.getUserCommandsDir();
mock({
@@ -1210,8 +1210,8 @@ describe('FileCommandLoader', () => {
const mockConfig = {
getProjectRoot: vi.fn(() => '/path/to/project'),
getExtensions: vi.fn(() => []),
getFolderTrustFeature: vi.fn(() => true),
getFolderTrust: vi.fn(() => false),
getFolderTrust: vi.fn(() => true),
isTrustedFolder: vi.fn(() => false),
} as unknown as Config;
const userCommandsDir = Storage.getUserCommandsDir();
mock({

View File

@@ -64,11 +64,11 @@ const TomlCommandDefSchema = z.object({
export class FileCommandLoader implements ICommandLoader {
private readonly projectRoot: string;
private readonly folderTrustEnabled: boolean;
private readonly folderTrust: boolean;
private readonly isTrustedFolder: boolean;
constructor(private readonly config: Config | null) {
this.folderTrustEnabled = !!config?.getFolderTrustFeature();
this.folderTrust = !!config?.getFolderTrust();
this.folderTrustEnabled = !!config?.getFolderTrust();
this.isTrustedFolder = !!config?.isTrustedFolder();
this.projectRoot = config?.getProjectRoot() || process.cwd();
}
@@ -101,7 +101,7 @@ export class FileCommandLoader implements ICommandLoader {
cwd: dirInfo.path,
});
if (this.folderTrustEnabled && !this.folderTrust) {
if (this.folderTrustEnabled && !this.isTrustedFolder) {
return [];
}

View File

@@ -246,7 +246,6 @@ export interface ConfigParameters {
blockedMcpServers?: Array<{ name: string; extensionName: string }>;
noBrowser?: boolean;
summarizeToolOutput?: Record<string, SummarizeToolOutputSettings>;
folderTrustFeature?: boolean;
folderTrust?: boolean;
ideMode?: boolean;
loadMemoryFromIncludeDirectories?: boolean;
@@ -321,7 +320,6 @@ export class Config {
private model: string;
private readonly extensionContextFilePaths: string[];
private readonly noBrowser: boolean;
private readonly folderTrustFeature: boolean;
private readonly folderTrust: boolean;
private ideMode: boolean;
@@ -430,7 +428,6 @@ export class Config {
this._blockedMcpServers = params.blockedMcpServers ?? [];
this.noBrowser = params.noBrowser ?? false;
this.summarizeToolOutput = params.summarizeToolOutput;
this.folderTrustFeature = params.folderTrustFeature ?? false;
this.folderTrust = params.folderTrust ?? false;
this.ideMode = params.ideMode ?? false;
this.loadMemoryFromIncludeDirectories =
@@ -889,21 +886,17 @@ export class Config {
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 {
return this.folderTrustFeature;
getFolderTrust(): boolean {
return this.folderTrust;
}
/**
* Returns 'true' if the workspace is considered "trusted".
* 'false' for untrusted.
*/
getFolderTrust(): boolean {
return this.folderTrust;
}
isTrustedFolder(): boolean {
// isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
// when the file based trust value is unavailable, since it is mainly used