2025-08-13 11:06:31 -07:00
|
|
|
/**
|
|
|
|
|
* @license
|
|
|
|
|
* Copyright 2025 Google LLC
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
*/
|
|
|
|
|
|
2025-09-03 11:44:26 -07:00
|
|
|
import {
|
2026-02-11 16:20:54 -08:00
|
|
|
type HeadlessModeOptions,
|
2026-04-23 09:09:14 -07:00
|
|
|
checkPathTrust,
|
|
|
|
|
isHeadlessMode,
|
|
|
|
|
loadTrustedFolders as loadCoreTrustedFolders,
|
|
|
|
|
type LoadedTrustedFolders,
|
2025-09-03 11:44:26 -07:00
|
|
|
} from '@google/gemini-cli-core';
|
2025-08-26 00:04:53 +02:00
|
|
|
import type { Settings } from './settings.js';
|
2026-02-03 14:53:31 -08:00
|
|
|
|
2026-04-23 09:09:14 -07:00
|
|
|
export {
|
|
|
|
|
TrustLevel,
|
|
|
|
|
isTrustLevel,
|
|
|
|
|
resetTrustedFoldersForTesting,
|
|
|
|
|
saveTrustedFolders,
|
|
|
|
|
} from '@google/gemini-cli-core';
|
2026-02-09 09:16:56 -08:00
|
|
|
|
2026-04-23 09:09:14 -07:00
|
|
|
export type {
|
|
|
|
|
TrustRule,
|
|
|
|
|
TrustedFoldersError,
|
|
|
|
|
TrustedFoldersFile,
|
|
|
|
|
TrustResult,
|
|
|
|
|
LoadedTrustedFolders,
|
|
|
|
|
} from '@google/gemini-cli-core';
|
2025-08-13 11:06:31 -07:00
|
|
|
|
2025-08-28 15:16:07 -04:00
|
|
|
/** Is folder trust feature enabled per the current applied settings */
|
|
|
|
|
export function isFolderTrustEnabled(settings: Settings): boolean {
|
2026-02-03 17:08:10 -08:00
|
|
|
const folderTrustSetting = settings.security?.folderTrust?.enabled ?? true;
|
2025-09-02 12:01:22 -04:00
|
|
|
return folderTrustSetting;
|
2025-08-28 15:16:07 -04:00
|
|
|
}
|
2025-08-14 11:15:48 -07:00
|
|
|
|
2026-04-23 09:09:14 -07:00
|
|
|
export function loadTrustedFolders(): LoadedTrustedFolders {
|
|
|
|
|
return loadCoreTrustedFolders();
|
2025-08-13 11:06:31 -07:00
|
|
|
}
|
2025-09-03 11:44:26 -07:00
|
|
|
|
2026-04-23 09:09:14 -07:00
|
|
|
/**
|
|
|
|
|
* Returns true or false if the workspace is considered "trusted".
|
|
|
|
|
*/
|
2025-09-22 11:45:02 -07:00
|
|
|
export function isWorkspaceTrusted(
|
|
|
|
|
settings: Settings,
|
2026-02-03 00:54:10 -05:00
|
|
|
workspaceDir: string = process.cwd(),
|
2026-02-11 16:20:54 -08:00
|
|
|
headlessOptions?: HeadlessModeOptions,
|
2026-04-23 09:09:14 -07:00
|
|
|
): {
|
|
|
|
|
isTrusted: boolean | undefined;
|
|
|
|
|
source: 'ide' | 'file' | 'env' | undefined;
|
|
|
|
|
} {
|
|
|
|
|
return checkPathTrust({
|
|
|
|
|
path: workspaceDir,
|
|
|
|
|
isFolderTrustEnabled: isFolderTrustEnabled(settings),
|
|
|
|
|
isHeadless: isHeadlessMode(headlessOptions),
|
|
|
|
|
});
|
2025-09-03 11:44:26 -07:00
|
|
|
}
|