Add setting to disable YOLO mode (#11609)

Co-authored-by: Shreya Keshive <shreyakeshive@google.com>
This commit is contained in:
Adib234
2025-10-22 11:57:10 -07:00
committed by GitHub
parent 5bb9cd1a13
commit 6d75005afc
10 changed files with 203 additions and 1 deletions

View File

@@ -995,6 +995,40 @@ describe('setApprovalMode with folder trust', () => {
});
});
describe('isYoloModeDisabled', () => {
const baseParams: ConfigParameters = {
sessionId: 'test',
targetDir: '.',
debugMode: false,
model: 'test-model',
cwd: '.',
};
it('should return false when yolo mode is not disabled and folder is trusted', () => {
const config = new Config(baseParams);
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
expect(config.isYoloModeDisabled()).toBe(false);
});
it('should return true when yolo mode is disabled by parameter', () => {
const config = new Config({ ...baseParams, disableYoloMode: true });
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
expect(config.isYoloModeDisabled()).toBe(true);
});
it('should return true when folder is untrusted', () => {
const config = new Config(baseParams);
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
expect(config.isYoloModeDisabled()).toBe(true);
});
it('should return true when yolo is disabled and folder is untrusted', () => {
const config = new Config({ ...baseParams, disableYoloMode: true });
vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
expect(config.isYoloModeDisabled()).toBe(true);
});
});
describe('BaseLlmClient Lifecycle', () => {
const MODEL = 'gemini-pro';
const SANDBOX: SandboxConfig = {

View File

@@ -284,6 +284,7 @@ export interface ConfigParameters {
retryFetchErrors?: boolean;
enableShellOutputEfficiency?: boolean;
ptyInfo?: string;
disableYoloMode?: boolean;
}
export class Config {
@@ -380,6 +381,7 @@ export class Config {
private readonly continueOnFailedApiCall: boolean;
private readonly retryFetchErrors: boolean;
private readonly enableShellOutputEfficiency: boolean;
private readonly disableYoloMode: boolean;
constructor(params: ConfigParameters) {
this.sessionId = params.sessionId;
@@ -496,6 +498,7 @@ export class Config {
format: params.output?.format ?? OutputFormat.TEXT,
};
this.retryFetchErrors = params.retryFetchErrors ?? false;
this.disableYoloMode = params.disableYoloMode ?? false;
if (params.contextFileName) {
setGeminiMdFilename(params.contextFileName);
@@ -761,6 +764,10 @@ export class Config {
this.approvalMode = mode;
}
isYoloModeDisabled(): boolean {
return this.disableYoloMode || !this.isTrustedFolder();
}
getShowMemoryUsage(): boolean {
return this.showMemoryUsage;
}