@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.
Files changed (34) hide show
  1. package/dist/google-gemini-cli-0.28.0-preview.6.tgz +0 -0
  2. package/dist/package.json +3 -2
  3. package/dist/src/config/extension-manager.js +1 -1
  4. package/dist/src/config/extension-manager.js.map +1 -1
  5. package/dist/src/config/extensions/extensionUpdates.test.js +98 -132
  6. package/dist/src/config/extensions/extensionUpdates.test.js.map +1 -1
  7. package/dist/src/config/trustedFolders.d.ts +1 -1
  8. package/dist/src/config/trustedFolders.js +80 -15
  9. package/dist/src/config/trustedFolders.js.map +1 -1
  10. package/dist/src/config/trustedFolders.test.js +211 -558
  11. package/dist/src/config/trustedFolders.test.js.map +1 -1
  12. package/dist/src/generated/git-commit.d.ts +2 -2
  13. package/dist/src/generated/git-commit.js +2 -2
  14. package/dist/src/ui/components/ConsentPrompt.test.js +4 -4
  15. package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -1
  16. package/dist/src/ui/components/LogoutConfirmationDialog.test.js +8 -4
  17. package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +1 -1
  18. package/dist/src/ui/components/MultiFolderTrustDialog.js +1 -1
  19. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
  20. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +9 -8
  21. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
  22. package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -1
  23. package/dist/src/ui/hooks/useFolderTrust.js +2 -2
  24. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  25. package/dist/src/ui/hooks/useFolderTrust.test.js +8 -8
  26. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  27. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +2 -2
  28. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +5 -5
  29. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
  30. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +31 -31
  31. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +4 -3
  34. 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 { FatalConfigError, getErrorMessage, isWithinRoot, ideContextStore, GEMINI_DIR, homedir, } from '@google/gemini-cli-core';
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(path, trustLevel) {
99
- const originalTrustLevel = this.user.config[path];
100
- this.user.config[path] = trustLevel;
101
- try {
102
- saveTrustedFolders(this.user);
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
- catch (e) {
105
- // Revert the in-memory change if the save failed.
106
- if (originalTrustLevel === undefined) {
107
- delete this.user.config[path];
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
- else {
110
- this.user.config[path] = originalTrustLevel;
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
- throw e;
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 = JSON.parse(stripJsonComments(content));
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
- fs.writeFileSync(trustedFoldersFile.path, JSON.stringify(trustedFoldersFile.config, null, 2), { encoding: 'utf-8', mode: 0o600 });
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":"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"}
1
+ {"version":3,"file":"trustedFolders.js","sourceRoot":"","sources":["../../../src/config/trustedFolders.ts"],"names":[],"mappings":"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"}