summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshrutip90 <[email protected]>2025-08-06 15:27:21 -0700
committerGitHub <[email protected]>2025-08-06 22:27:21 +0000
commit626844b539af6bf6d21a04d43173074c98b71474 (patch)
treed402215e0ff6a3a3a464f6567997008e1f211f52
parent5cd63a6abc0531ec5e6781b2fa065cd22a64eede (diff)
experiment: Add feature exp flag for folder trust (#5709)
-rw-r--r--packages/cli/src/config/config.test.ts33
-rw-r--r--packages/cli/src/config/config.ts3
-rw-r--r--packages/cli/src/config/settings.ts1
-rw-r--r--packages/core/src/config/config.ts7
4 files changed, 44 insertions, 0 deletions
diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts
index 64ecdbb8..6a7e3b57 100644
--- a/packages/cli/src/config/config.test.ts
+++ b/packages/cli/src/config/config.test.ts
@@ -1009,6 +1009,39 @@ describe('loadCliConfig ideModeFeature', () => {
});
});
+describe('loadCliConfig folderTrustFeature', () => {
+ const originalArgv = process.argv;
+ const originalEnv = { ...process.env };
+
+ beforeEach(() => {
+ vi.resetAllMocks();
+ vi.mocked(os.homedir).mockReturnValue('/mock/home/user');
+ process.env.GEMINI_API_KEY = 'test-api-key';
+ });
+
+ afterEach(() => {
+ process.argv = originalArgv;
+ process.env = originalEnv;
+ vi.restoreAllMocks();
+ });
+
+ it('should be false by default', async () => {
+ process.argv = ['node', 'script.js'];
+ const settings: Settings = {};
+ const argv = await parseArguments();
+ const config = await loadCliConfig(settings, [], 'test-session', argv);
+ expect(config.getFolderTrustFeature()).toBe(false);
+ });
+
+ it('should be true when settings.folderTrustFeature is true', async () => {
+ process.argv = ['node', 'script.js'];
+ const argv = await parseArguments();
+ const settings: Settings = { folderTrustFeature: true };
+ const config = await loadCliConfig(settings, [], 'test-session', argv);
+ expect(config.getFolderTrustFeature()).toBe(true);
+ });
+});
+
vi.mock('fs', async () => {
const actualFs = await vi.importActual<typeof fs>('fs');
const MOCK_CWD1 = process.cwd();
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts
index 7175c033..2c942c08 100644
--- a/packages/cli/src/config/config.ts
+++ b/packages/cli/src/config/config.ts
@@ -313,6 +313,8 @@ export async function loadCliConfig(
const ideModeFeature =
argv.ideModeFeature ?? settings.ideModeFeature ?? false;
+ const folderTrustFeature = settings.folderTrustFeature ?? false;
+
const allExtensions = annotateActiveExtensions(
extensions,
argv.extensions || [],
@@ -480,6 +482,7 @@ export async function loadCliConfig(
summarizeToolOutput: settings.summarizeToolOutput,
ideMode,
ideModeFeature,
+ folderTrustFeature,
});
}
diff --git a/packages/cli/src/config/settings.ts b/packages/cli/src/config/settings.ts
index 93641ae0..64500845 100644
--- a/packages/cli/src/config/settings.ts
+++ b/packages/cli/src/config/settings.ts
@@ -112,6 +112,7 @@ export interface Settings {
// Flag to be removed post-launch.
ideModeFeature?: boolean;
+ folderTrustFeature?: boolean;
/// IDE mode setting configured via slash command toggle.
ideMode?: boolean;
diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts
index fa51a6af..005573da 100644
--- a/packages/core/src/config/config.ts
+++ b/packages/core/src/config/config.ts
@@ -188,6 +188,7 @@ export interface ConfigParameters {
noBrowser?: boolean;
summarizeToolOutput?: Record<string, SummarizeToolOutputSettings>;
ideModeFeature?: boolean;
+ folderTrustFeature?: boolean;
ideMode?: boolean;
loadMemoryFromIncludeDirectories?: boolean;
}
@@ -233,6 +234,7 @@ export class Config {
private readonly extensionContextFilePaths: string[];
private readonly noBrowser: boolean;
private readonly ideModeFeature: boolean;
+ private readonly folderTrustFeature: boolean;
private ideMode: boolean;
private ideClient: IdeClient;
private inFallbackMode = false;
@@ -305,6 +307,7 @@ export class Config {
this.noBrowser = params.noBrowser ?? false;
this.summarizeToolOutput = params.summarizeToolOutput;
this.ideModeFeature = params.ideModeFeature ?? false;
+ this.folderTrustFeature = params.folderTrustFeature ?? false;
this.ideMode = params.ideMode ?? false;
this.ideClient = IdeClient.getInstance();
if (this.ideMode && this.ideModeFeature) {
@@ -638,6 +641,10 @@ export class Config {
return this.ideModeFeature;
}
+ getFolderTrustFeature(): boolean {
+ return this.folderTrustFeature;
+ }
+
getIdeMode(): boolean {
return this.ideMode;
}