@google/gemini-cli 0.28.0-preview.5 → 0.28.0-preview.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/google-gemini-cli-0.28.0-preview.6.tgz +0 -0
- package/dist/package.json +3 -2
- package/dist/src/config/extension-manager.js +1 -1
- package/dist/src/config/extension-manager.js.map +1 -1
- package/dist/src/config/extensions/extensionUpdates.test.js +98 -132
- package/dist/src/config/extensions/extensionUpdates.test.js.map +1 -1
- package/dist/src/config/trustedFolders.d.ts +1 -1
- package/dist/src/config/trustedFolders.js +80 -15
- package/dist/src/config/trustedFolders.js.map +1 -1
- package/dist/src/config/trustedFolders.test.js +211 -558
- package/dist/src/config/trustedFolders.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/ui/components/ConsentPrompt.test.js +4 -4
- package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -1
- package/dist/src/ui/components/LogoutConfirmationDialog.test.js +8 -4
- package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.js +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js +9 -8
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -1
- package/dist/src/ui/hooks/useFolderTrust.js +2 -2
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.test.js +8 -8
- package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +2 -2
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js +5 -5
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +31 -31
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/dist/google-gemini-cli-0.28.0-preview.4.tgz +0 -0
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as fs from 'node:fs';
|
|
7
7
|
import * as path from 'node:path';
|
|
8
|
-
import
|
|
8
|
+
import * as crypto from 'node:crypto';
|
|
9
|
+
import { lock } from 'proper-lockfile';
|
|
10
|
+
import { FatalConfigError, getErrorMessage, isWithinRoot, ideContextStore, GEMINI_DIR, homedir, coreEvents, } from '@google/gemini-cli-core';
|
|
9
11
|
import stripJsonComments from 'strip-json-comments';
|
|
12
|
+
const { promises: fsPromises } = fs;
|
|
10
13
|
export const TRUSTED_FOLDERS_FILENAME = 'trustedFolders.json';
|
|
11
14
|
export function getUserSettingsDir() {
|
|
12
15
|
return path.join(homedir(), GEMINI_DIR);
|
|
@@ -28,6 +31,12 @@ export function isTrustLevel(value) {
|
|
|
28
31
|
Object.values(TrustLevel).includes(value));
|
|
29
32
|
}
|
|
30
33
|
const realPathCache = new Map();
|
|
34
|
+
/**
|
|
35
|
+
* Parses the trusted folders JSON content, stripping comments.
|
|
36
|
+
*/
|
|
37
|
+
function parseTrustedFoldersJson(content) {
|
|
38
|
+
return JSON.parse(stripJsonComments(content));
|
|
39
|
+
}
|
|
31
40
|
/**
|
|
32
41
|
* FOR TESTING PURPOSES ONLY.
|
|
33
42
|
* Clears the real path cache.
|
|
@@ -95,21 +104,57 @@ export class LoadedTrustedFolders {
|
|
|
95
104
|
return true;
|
|
96
105
|
return undefined;
|
|
97
106
|
}
|
|
98
|
-
setValue(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
107
|
+
async setValue(folderPath, trustLevel) {
|
|
108
|
+
if (this.errors.length > 0) {
|
|
109
|
+
const errorMessages = this.errors.map((error) => `Error in ${error.path}: ${error.message}`);
|
|
110
|
+
throw new FatalConfigError(`Cannot update trusted folders because the configuration file is invalid:\n${errorMessages.join('\n')}\nPlease fix the file manually before trying to update it.`);
|
|
111
|
+
}
|
|
112
|
+
const dirPath = path.dirname(this.user.path);
|
|
113
|
+
if (!fs.existsSync(dirPath)) {
|
|
114
|
+
await fsPromises.mkdir(dirPath, { recursive: true });
|
|
115
|
+
}
|
|
116
|
+
// lockfile requires the file to exist
|
|
117
|
+
if (!fs.existsSync(this.user.path)) {
|
|
118
|
+
await fsPromises.writeFile(this.user.path, JSON.stringify({}, null, 2), {
|
|
119
|
+
mode: 0o600,
|
|
120
|
+
});
|
|
103
121
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
122
|
+
const release = await lock(this.user.path, {
|
|
123
|
+
retries: {
|
|
124
|
+
retries: 10,
|
|
125
|
+
minTimeout: 100,
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
try {
|
|
129
|
+
// Re-read the file to handle concurrent updates
|
|
130
|
+
const content = await fsPromises.readFile(this.user.path, 'utf-8');
|
|
131
|
+
let config;
|
|
132
|
+
try {
|
|
133
|
+
config = parseTrustedFoldersJson(content);
|
|
108
134
|
}
|
|
109
|
-
|
|
110
|
-
this.user.
|
|
135
|
+
catch (error) {
|
|
136
|
+
coreEvents.emitFeedback('error', `Failed to parse trusted folders file at ${this.user.path}. The file may be corrupted.`, error);
|
|
137
|
+
config = {};
|
|
138
|
+
}
|
|
139
|
+
const originalTrustLevel = config[folderPath];
|
|
140
|
+
config[folderPath] = trustLevel;
|
|
141
|
+
this.user.config[folderPath] = trustLevel;
|
|
142
|
+
try {
|
|
143
|
+
saveTrustedFolders({ ...this.user, config });
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
// Revert the in-memory change if the save failed.
|
|
147
|
+
if (originalTrustLevel === undefined) {
|
|
148
|
+
delete this.user.config[folderPath];
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.user.config[folderPath] = originalTrustLevel;
|
|
152
|
+
}
|
|
153
|
+
throw e;
|
|
111
154
|
}
|
|
112
|
-
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
await release();
|
|
113
158
|
}
|
|
114
159
|
}
|
|
115
160
|
}
|
|
@@ -132,7 +177,7 @@ export function loadTrustedFolders() {
|
|
|
132
177
|
try {
|
|
133
178
|
if (fs.existsSync(userPath)) {
|
|
134
179
|
const content = fs.readFileSync(userPath, 'utf-8');
|
|
135
|
-
const parsed =
|
|
180
|
+
const parsed = parseTrustedFoldersJson(content);
|
|
136
181
|
if (typeof parsed !== 'object' ||
|
|
137
182
|
parsed === null ||
|
|
138
183
|
Array.isArray(parsed)) {
|
|
@@ -172,7 +217,27 @@ export function saveTrustedFolders(trustedFoldersFile) {
|
|
|
172
217
|
if (!fs.existsSync(dirPath)) {
|
|
173
218
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
174
219
|
}
|
|
175
|
-
|
|
220
|
+
const content = JSON.stringify(trustedFoldersFile.config, null, 2);
|
|
221
|
+
const tempPath = `${trustedFoldersFile.path}.tmp.${crypto.randomUUID()}`;
|
|
222
|
+
try {
|
|
223
|
+
fs.writeFileSync(tempPath, content, {
|
|
224
|
+
encoding: 'utf-8',
|
|
225
|
+
mode: 0o600,
|
|
226
|
+
});
|
|
227
|
+
fs.renameSync(tempPath, trustedFoldersFile.path);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
// Clean up temp file if it was created but rename failed
|
|
231
|
+
if (fs.existsSync(tempPath)) {
|
|
232
|
+
try {
|
|
233
|
+
fs.unlinkSync(tempPath);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
// Ignore cleanup errors
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
throw error;
|
|
240
|
+
}
|
|
176
241
|
}
|
|
177
242
|
/** Is folder trust feature enabled per the current applied settings */
|
|
178
243
|
export function isFolderTrustEnabled(settings) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trustedFolders.js","sourceRoot":"","sources":["../../../src/config/trustedFolders.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,UAAU,EACV,OAAO,
|
|
1
|
+
{"version":3,"file":"trustedFolders.js","sourceRoot":"","sources":["../../../src/config/trustedFolders.ts"],"names":[],"mappings":"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"}
|