mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-13 05:12:55 -07:00
fix: Usage of folder trust config flags in FileCommandLoader (#10837)
This commit is contained in:
@@ -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 [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user