@google/gemini-cli 0.19.0-nightly.20251123.dadd606c0 → 0.19.0-nightly.20251125.f6d97d448

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 (122) hide show
  1. package/dist/google-gemini-cli-0.19.0-nightly.20251124.e177314a4.tgz +0 -0
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +0 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/package.json +2 -2
  6. package/dist/src/commands/extensions.test.d.ts +6 -0
  7. package/dist/src/commands/extensions.test.js +67 -0
  8. package/dist/src/commands/extensions.test.js.map +1 -0
  9. package/dist/src/commands/utils.test.d.ts +6 -0
  10. package/dist/src/commands/utils.test.js +35 -0
  11. package/dist/src/commands/utils.test.js.map +1 -0
  12. package/dist/src/core/auth.test.d.ts +6 -0
  13. package/dist/src/core/auth.test.js +43 -0
  14. package/dist/src/core/auth.test.js.map +1 -0
  15. package/dist/src/core/initializer.test.d.ts +6 -0
  16. package/dist/src/core/initializer.test.js +101 -0
  17. package/dist/src/core/initializer.test.js.map +1 -0
  18. package/dist/src/core/theme.test.d.ts +6 -0
  19. package/dist/src/core/theme.test.js +46 -0
  20. package/dist/src/core/theme.test.js.map +1 -0
  21. package/dist/src/gemini.d.ts +1 -0
  22. package/dist/src/gemini.js +7 -2
  23. package/dist/src/gemini.js.map +1 -1
  24. package/dist/src/gemini.test.js +621 -1
  25. package/dist/src/gemini.test.js.map +1 -1
  26. package/dist/src/gemini_cleanup.test.d.ts +6 -0
  27. package/dist/src/gemini_cleanup.test.js +201 -0
  28. package/dist/src/gemini_cleanup.test.js.map +1 -0
  29. package/dist/src/generated/git-commit.d.ts +2 -2
  30. package/dist/src/generated/git-commit.js +2 -2
  31. package/dist/src/nonInteractiveCli.test.js +336 -0
  32. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  33. package/dist/src/ui/App.test.js +28 -14
  34. package/dist/src/ui/App.test.js.map +1 -1
  35. package/dist/src/ui/IdeIntegrationNudge.test.d.ts +6 -0
  36. package/dist/src/ui/IdeIntegrationNudge.test.js +147 -0
  37. package/dist/src/ui/IdeIntegrationNudge.test.js.map +1 -0
  38. package/dist/src/ui/auth/ApiAuthDialog.test.js +12 -17
  39. package/dist/src/ui/auth/ApiAuthDialog.test.js.map +1 -1
  40. package/dist/src/ui/auth/AuthDialog.test.js +120 -74
  41. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  42. package/dist/src/ui/auth/AuthInProgress.test.d.ts +6 -0
  43. package/dist/src/ui/auth/AuthInProgress.test.js +71 -0
  44. package/dist/src/ui/auth/AuthInProgress.test.js.map +1 -0
  45. package/dist/src/ui/auth/useAuth.test.d.ts +6 -0
  46. package/dist/src/ui/auth/useAuth.test.js +178 -0
  47. package/dist/src/ui/auth/useAuth.test.js.map +1 -0
  48. package/dist/src/ui/commands/extensionsCommand.js +28 -6
  49. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  50. package/dist/src/ui/commands/extensionsCommand.test.js +32 -0
  51. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  52. package/dist/src/ui/commands/statsCommand.js +27 -16
  53. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  54. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +62 -11
  55. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -1
  56. package/dist/src/ui/components/AnsiOutput.test.js +18 -23
  57. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  58. package/dist/src/ui/hooks/useSlashCompletion.test.js +4 -4
  59. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  60. package/dist/src/ui/hooks/useToolScheduler.test.js +5 -1
  61. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  62. package/dist/src/ui/state/extensions.test.js +208 -51
  63. package/dist/src/ui/state/extensions.test.js.map +1 -1
  64. package/dist/src/ui/utils/kittyProtocolDetector.test.d.ts +6 -0
  65. package/dist/src/ui/utils/kittyProtocolDetector.test.js +113 -0
  66. package/dist/src/ui/utils/kittyProtocolDetector.test.js.map +1 -0
  67. package/dist/src/ui/utils/terminalSetup.js +39 -38
  68. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  69. package/dist/src/ui/utils/terminalSetup.test.d.ts +6 -0
  70. package/dist/src/ui/utils/terminalSetup.test.js +131 -0
  71. package/dist/src/ui/utils/terminalSetup.test.js.map +1 -0
  72. package/dist/src/ui/utils/ui-sizing.test.d.ts +6 -0
  73. package/dist/src/ui/utils/ui-sizing.test.js +56 -0
  74. package/dist/src/ui/utils/ui-sizing.test.js.map +1 -0
  75. package/dist/src/utils/checks.test.d.ts +6 -0
  76. package/dist/src/utils/checks.test.js +29 -0
  77. package/dist/src/utils/checks.test.js.map +1 -0
  78. package/dist/src/utils/cleanup.test.js +69 -16
  79. package/dist/src/utils/cleanup.test.js.map +1 -1
  80. package/dist/src/utils/dialogScopeUtils.test.d.ts +6 -0
  81. package/dist/src/utils/dialogScopeUtils.test.js +81 -0
  82. package/dist/src/utils/dialogScopeUtils.test.js.map +1 -0
  83. package/dist/src/utils/errors.test.js +62 -0
  84. package/dist/src/utils/errors.test.js.map +1 -1
  85. package/dist/src/utils/events.test.d.ts +6 -0
  86. package/dist/src/utils/events.test.js +24 -0
  87. package/dist/src/utils/events.test.js.map +1 -0
  88. package/dist/src/utils/handleAutoUpdate.test.js +103 -24
  89. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  90. package/dist/src/utils/math.test.d.ts +6 -0
  91. package/dist/src/utils/math.test.js +23 -0
  92. package/dist/src/utils/math.test.js.map +1 -0
  93. package/dist/src/utils/persistentState.test.d.ts +6 -0
  94. package/dist/src/utils/persistentState.test.js +68 -0
  95. package/dist/src/utils/persistentState.test.js.map +1 -0
  96. package/dist/src/utils/readStdin.js +1 -0
  97. package/dist/src/utils/readStdin.js.map +1 -1
  98. package/dist/src/utils/readStdin.test.js +25 -0
  99. package/dist/src/utils/readStdin.test.js.map +1 -1
  100. package/dist/src/utils/resolvePath.test.d.ts +6 -0
  101. package/dist/src/utils/resolvePath.test.js +31 -0
  102. package/dist/src/utils/resolvePath.test.js.map +1 -0
  103. package/dist/src/utils/sandbox.js +6 -137
  104. package/dist/src/utils/sandbox.js.map +1 -1
  105. package/dist/src/utils/sandbox.test.d.ts +6 -0
  106. package/dist/src/utils/sandbox.test.js +302 -0
  107. package/dist/src/utils/sandbox.test.js.map +1 -0
  108. package/dist/src/utils/sandboxUtils.d.ts +14 -0
  109. package/dist/src/utils/sandboxUtils.js +120 -0
  110. package/dist/src/utils/sandboxUtils.js.map +1 -0
  111. package/dist/src/utils/sandboxUtils.test.d.ts +6 -0
  112. package/dist/src/utils/sandboxUtils.test.js +119 -0
  113. package/dist/src/utils/sandboxUtils.test.js.map +1 -0
  114. package/dist/src/utils/updateEventEmitter.test.d.ts +6 -0
  115. package/dist/src/utils/updateEventEmitter.test.js +18 -0
  116. package/dist/src/utils/updateEventEmitter.test.js.map +1 -0
  117. package/dist/src/utils/version.test.d.ts +6 -0
  118. package/dist/src/utils/version.test.js +39 -0
  119. package/dist/src/utils/version.test.js.map +1 -0
  120. package/dist/tsconfig.tsbuildinfo +1 -1
  121. package/package.json +3 -3
  122. package/dist/google-gemini-cli-0.19.0-nightly.20251122.42c2e1b21.tgz +0 -0
@@ -7,7 +7,6 @@ import { exec, execSync, spawn } from 'node:child_process';
7
7
  import os from 'node:os';
8
8
  import path from 'node:path';
9
9
  import fs from 'node:fs';
10
- import { readFile } from 'node:fs/promises';
11
10
  import { fileURLToPath } from 'node:url';
12
11
  import { quote, parse } from 'shell-quote';
13
12
  import { USER_SETTINGS_DIR } from '../config/settings.js';
@@ -15,136 +14,8 @@ import { promisify } from 'node:util';
15
14
  import { coreEvents, debugLogger, FatalSandboxError, GEMINI_DIR, } from '@google/gemini-cli-core';
16
15
  import { ConsolePatcher } from '../ui/utils/ConsolePatcher.js';
17
16
  import { randomBytes } from 'node:crypto';
17
+ import { getContainerPath, shouldUseCurrentUserInSandbox, parseImageName, ports, entrypoint, LOCAL_DEV_SANDBOX_IMAGE_NAME, SANDBOX_NETWORK_NAME, SANDBOX_PROXY_NAME, BUILTIN_SEATBELT_PROFILES, } from './sandboxUtils.js';
18
18
  const execAsync = promisify(exec);
19
- function getContainerPath(hostPath) {
20
- if (os.platform() !== 'win32') {
21
- return hostPath;
22
- }
23
- const withForwardSlashes = hostPath.replace(/\\/g, '/');
24
- const match = withForwardSlashes.match(/^([A-Z]):\/(.*)/i);
25
- if (match) {
26
- return `/${match[1].toLowerCase()}/${match[2]}`;
27
- }
28
- return hostPath;
29
- }
30
- const LOCAL_DEV_SANDBOX_IMAGE_NAME = 'gemini-cli-sandbox';
31
- const SANDBOX_NETWORK_NAME = 'gemini-cli-sandbox';
32
- const SANDBOX_PROXY_NAME = 'gemini-cli-sandbox-proxy';
33
- const BUILTIN_SEATBELT_PROFILES = [
34
- 'permissive-open',
35
- 'permissive-closed',
36
- 'permissive-proxied',
37
- 'restrictive-open',
38
- 'restrictive-closed',
39
- 'restrictive-proxied',
40
- ];
41
- /**
42
- * Determines whether the sandbox container should be run with the current user's UID and GID.
43
- * This is often necessary on Linux systems (especially Debian/Ubuntu based) when using
44
- * rootful Docker without userns-remap configured, to avoid permission issues with
45
- * mounted volumes.
46
- *
47
- * The behavior is controlled by the `SANDBOX_SET_UID_GID` environment variable:
48
- * - If `SANDBOX_SET_UID_GID` is "1" or "true", this function returns `true`.
49
- * - If `SANDBOX_SET_UID_GID` is "0" or "false", this function returns `false`.
50
- * - If `SANDBOX_SET_UID_GID` is not set:
51
- * - On Debian/Ubuntu Linux, it defaults to `true`.
52
- * - On other OSes, or if OS detection fails, it defaults to `false`.
53
- *
54
- * For more context on running Docker containers as non-root, see:
55
- * https://medium.com/redbubble/running-a-docker-container-as-a-non-root-user-7d2e00f8ee15
56
- *
57
- * @returns {Promise<boolean>} A promise that resolves to true if the current user's UID/GID should be used, false otherwise.
58
- */
59
- async function shouldUseCurrentUserInSandbox() {
60
- const envVar = process.env['SANDBOX_SET_UID_GID']?.toLowerCase().trim();
61
- if (envVar === '1' || envVar === 'true') {
62
- return true;
63
- }
64
- if (envVar === '0' || envVar === 'false') {
65
- return false;
66
- }
67
- // If environment variable is not explicitly set, check for Debian/Ubuntu Linux
68
- if (os.platform() === 'linux') {
69
- try {
70
- const osReleaseContent = await readFile('/etc/os-release', 'utf8');
71
- if (osReleaseContent.includes('ID=debian') ||
72
- osReleaseContent.includes('ID=ubuntu') ||
73
- osReleaseContent.match(/^ID_LIKE=.*debian.*/m) || // Covers derivatives
74
- osReleaseContent.match(/^ID_LIKE=.*ubuntu.*/m) // Covers derivatives
75
- ) {
76
- debugLogger.log('Defaulting to use current user UID/GID for Debian/Ubuntu-based Linux.');
77
- return true;
78
- }
79
- }
80
- catch (_err) {
81
- // Silently ignore if /etc/os-release is not found or unreadable.
82
- // The default (false) will be applied in this case.
83
- debugLogger.warn('Warning: Could not read /etc/os-release to auto-detect Debian/Ubuntu for UID/GID default.');
84
- }
85
- }
86
- return false; // Default to false if no other condition is met
87
- }
88
- // docker does not allow container names to contain ':' or '/', so we
89
- // parse those out to shorten the name
90
- function parseImageName(image) {
91
- const [fullName, tag] = image.split(':');
92
- const name = fullName.split('/').at(-1) ?? 'unknown-image';
93
- return tag ? `${name}-${tag}` : name;
94
- }
95
- function ports() {
96
- return (process.env['SANDBOX_PORTS'] ?? '')
97
- .split(',')
98
- .filter((p) => p.trim())
99
- .map((p) => p.trim());
100
- }
101
- function entrypoint(workdir, cliArgs) {
102
- const isWindows = os.platform() === 'win32';
103
- const containerWorkdir = getContainerPath(workdir);
104
- const shellCmds = [];
105
- const pathSeparator = isWindows ? ';' : ':';
106
- let pathSuffix = '';
107
- if (process.env['PATH']) {
108
- const paths = process.env['PATH'].split(pathSeparator);
109
- for (const p of paths) {
110
- const containerPath = getContainerPath(p);
111
- if (containerPath.toLowerCase().startsWith(containerWorkdir.toLowerCase())) {
112
- pathSuffix += `:${containerPath}`;
113
- }
114
- }
115
- }
116
- if (pathSuffix) {
117
- shellCmds.push(`export PATH="$PATH${pathSuffix}";`);
118
- }
119
- let pythonPathSuffix = '';
120
- if (process.env['PYTHONPATH']) {
121
- const paths = process.env['PYTHONPATH'].split(pathSeparator);
122
- for (const p of paths) {
123
- const containerPath = getContainerPath(p);
124
- if (containerPath.toLowerCase().startsWith(containerWorkdir.toLowerCase())) {
125
- pythonPathSuffix += `:${containerPath}`;
126
- }
127
- }
128
- }
129
- if (pythonPathSuffix) {
130
- shellCmds.push(`export PYTHONPATH="$PYTHONPATH${pythonPathSuffix}";`);
131
- }
132
- const projectSandboxBashrc = path.join(GEMINI_DIR, 'sandbox.bashrc');
133
- if (fs.existsSync(projectSandboxBashrc)) {
134
- shellCmds.push(`source ${getContainerPath(projectSandboxBashrc)};`);
135
- }
136
- ports().forEach((p) => shellCmds.push(`socat TCP4-LISTEN:${p},bind=$(hostname -i),fork,reuseaddr TCP4:127.0.0.1:${p} 2> /dev/null &`));
137
- const quotedCliArgs = cliArgs.slice(2).map((arg) => quote([arg]));
138
- const cliCmd = process.env['NODE_ENV'] === 'development'
139
- ? process.env['DEBUG']
140
- ? 'npm run debug --'
141
- : 'npm rebuild && npm run start --'
142
- : process.env['DEBUG']
143
- ? `node --inspect-brk=0.0.0.0:${process.env['DEBUG_PORT'] || '9229'} $(which gemini)`
144
- : 'gemini';
145
- const args = [...shellCmds, cliCmd, ...quotedCliArgs];
146
- return ['bash', '-c', args.join(' ')];
147
- }
148
19
  export async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
149
20
  const patcher = new ConsolePatcher({
150
21
  debugMode: cliConfig?.getDebugMode() || !!process.env['DEBUG'],
@@ -180,7 +51,7 @@ export async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs =
180
51
  '-D',
181
52
  `HOME_DIR=${fs.realpathSync(os.homedir())}`,
182
53
  '-D',
183
- `CACHE_DIR=${fs.realpathSync(execSync(`getconf DARWIN_USER_CACHE_DIR`).toString().trim())}`,
54
+ `CACHE_DIR=${fs.realpathSync((await execAsync('getconf DARWIN_USER_CACHE_DIR')).stdout.trim())}`,
184
55
  ];
185
56
  // Add included directories from the workspace context
186
57
  // Always add 5 INCLUDE_DIR parameters to ensure .sb files can reference them
@@ -277,7 +148,7 @@ export async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs =
277
148
  }
278
149
  debugLogger.log(`hopping into sandbox (command: ${config.command}) ...`);
279
150
  // determine full path for gemini-cli to distinguish linked vs installed setting
280
- const gcPath = fs.realpathSync(process.argv[1]);
151
+ const gcPath = process.argv[1] ? fs.realpathSync(process.argv[1]) : '';
281
152
  const projectSandboxDockerfile = path.join(GEMINI_DIR, 'sandbox.Dockerfile');
282
153
  const isCustomProjectSandbox = fs.existsSync(projectSandboxDockerfile);
283
154
  const image = config.image;
@@ -432,9 +303,7 @@ export async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs =
432
303
  }
433
304
  else {
434
305
  let index = 0;
435
- const containerNameCheck = execSync(`${config.command} ps -a --format "{{.Names}}"`)
436
- .toString()
437
- .trim();
306
+ const containerNameCheck = (await execAsync(`${config.command} ps -a --format "{{.Names}}"`)).stdout.trim();
438
307
  while (containerNameCheck.includes(`${imageName}-${index}`)) {
439
308
  index++;
440
309
  }
@@ -547,8 +416,8 @@ export async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs =
547
416
  // For the user-creation logic to work, the container must start as root.
548
417
  // The entrypoint script then handles dropping privileges to the correct user.
549
418
  args.push('--user', 'root');
550
- const uid = execSync('id -u').toString().trim();
551
- const gid = execSync('id -g').toString().trim();
419
+ const uid = (await execAsync('id -u')).stdout.trim();
420
+ const gid = (await execAsync('id -g')).stdout.trim();
552
421
  // Instead of passing --user to the main sandbox container, we let it
553
422
  // start as root, then create a user with the host's UID/GID, and
554
423
  // finally switch to that user to run the gemini process. This is
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/utils/sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/utils/sandbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,302 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
7
+ import { spawn, exec, execSync } from 'node:child_process';
8
+ import os from 'node:os';
9
+ import fs from 'node:fs';
10
+ import { start_sandbox } from './sandbox.js';
11
+ import { FatalSandboxError } from '@google/gemini-cli-core';
12
+ import { EventEmitter } from 'node:events';
13
+ vi.mock('../config/settings.js', () => ({
14
+ USER_SETTINGS_DIR: '/home/user/.gemini',
15
+ }));
16
+ vi.mock('node:child_process');
17
+ vi.mock('node:os');
18
+ vi.mock('node:fs');
19
+ vi.mock('node:util', async (importOriginal) => {
20
+ const actual = await importOriginal();
21
+ return {
22
+ ...actual,
23
+ promisify: (fn) => {
24
+ if (fn === exec) {
25
+ return async (cmd) => {
26
+ if (cmd === 'id -u' || cmd === 'id -g') {
27
+ return { stdout: '1000', stderr: '' };
28
+ }
29
+ if (cmd.includes('curl')) {
30
+ return { stdout: '', stderr: '' };
31
+ }
32
+ if (cmd.includes('getconf DARWIN_USER_CACHE_DIR')) {
33
+ return { stdout: '/tmp/cache', stderr: '' };
34
+ }
35
+ if (cmd.includes('ps -a --format')) {
36
+ return { stdout: 'existing-container', stderr: '' };
37
+ }
38
+ return { stdout: '', stderr: '' };
39
+ };
40
+ }
41
+ return actual.promisify(fn);
42
+ },
43
+ };
44
+ });
45
+ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
46
+ const actual = await importOriginal();
47
+ return {
48
+ ...actual,
49
+ debugLogger: {
50
+ log: vi.fn(),
51
+ debug: vi.fn(),
52
+ warn: vi.fn(),
53
+ },
54
+ coreEvents: {
55
+ emitFeedback: vi.fn(),
56
+ },
57
+ FatalSandboxError: class extends Error {
58
+ constructor(message) {
59
+ super(message);
60
+ this.name = 'FatalSandboxError';
61
+ }
62
+ },
63
+ GEMINI_DIR: '.gemini',
64
+ USER_SETTINGS_DIR: '/home/user/.gemini',
65
+ };
66
+ });
67
+ describe('sandbox', () => {
68
+ const originalEnv = process.env;
69
+ const originalArgv = process.argv;
70
+ let mockProcessIn;
71
+ beforeEach(() => {
72
+ vi.clearAllMocks();
73
+ process.env = { ...originalEnv };
74
+ process.argv = [...originalArgv];
75
+ mockProcessIn = {
76
+ pause: vi.fn(),
77
+ resume: vi.fn(),
78
+ isTTY: true,
79
+ };
80
+ Object.defineProperty(process, 'stdin', {
81
+ value: mockProcessIn,
82
+ writable: true,
83
+ });
84
+ vi.mocked(os.platform).mockReturnValue('linux');
85
+ vi.mocked(os.homedir).mockReturnValue('/home/user');
86
+ vi.mocked(os.tmpdir).mockReturnValue('/tmp');
87
+ vi.mocked(fs.existsSync).mockReturnValue(true);
88
+ vi.mocked(fs.realpathSync).mockImplementation((p) => p);
89
+ vi.mocked(execSync).mockReturnValue(Buffer.from(''));
90
+ });
91
+ afterEach(() => {
92
+ process.env = originalEnv;
93
+ process.argv = originalArgv;
94
+ });
95
+ describe('start_sandbox', () => {
96
+ it('should handle macOS seatbelt (sandbox-exec)', async () => {
97
+ vi.mocked(os.platform).mockReturnValue('darwin');
98
+ const config = {
99
+ command: 'sandbox-exec',
100
+ image: 'some-image',
101
+ };
102
+ const mockSpawnProcess = new EventEmitter();
103
+ mockSpawnProcess.stdout = new EventEmitter();
104
+ mockSpawnProcess.stderr = new EventEmitter();
105
+ vi.mocked(spawn).mockReturnValue(mockSpawnProcess);
106
+ const promise = start_sandbox(config, [], undefined, ['arg1']);
107
+ setTimeout(() => {
108
+ mockSpawnProcess.emit('close', 0);
109
+ }, 10);
110
+ await expect(promise).resolves.toBe(0);
111
+ expect(spawn).toHaveBeenCalledWith('sandbox-exec', expect.arrayContaining([
112
+ '-f',
113
+ expect.stringContaining('sandbox-macos-permissive-open.sb'),
114
+ ]), expect.objectContaining({ stdio: 'inherit' }));
115
+ });
116
+ it('should throw FatalSandboxError if seatbelt profile is missing', async () => {
117
+ vi.mocked(os.platform).mockReturnValue('darwin');
118
+ vi.mocked(fs.existsSync).mockReturnValue(false);
119
+ const config = {
120
+ command: 'sandbox-exec',
121
+ image: 'some-image',
122
+ };
123
+ await expect(start_sandbox(config)).rejects.toThrow(FatalSandboxError);
124
+ });
125
+ it('should handle Docker execution', async () => {
126
+ const config = {
127
+ command: 'docker',
128
+ image: 'gemini-cli-sandbox',
129
+ };
130
+ const mockImageCheckProcess = new EventEmitter();
131
+ mockImageCheckProcess.stdout = new EventEmitter();
132
+ vi.mocked(spawn).mockImplementationOnce((_cmd, args) => {
133
+ if (args && args[0] === 'images') {
134
+ setTimeout(() => {
135
+ mockImageCheckProcess.stdout.emit('data', Buffer.from('image-id'));
136
+ mockImageCheckProcess.emit('close', 0);
137
+ }, 1);
138
+ return mockImageCheckProcess;
139
+ }
140
+ return new EventEmitter(); // fallback
141
+ });
142
+ const mockSpawnProcess = new EventEmitter();
143
+ mockSpawnProcess.on = vi.fn().mockImplementation((event, cb) => {
144
+ if (event === 'close') {
145
+ setTimeout(() => cb(0), 10);
146
+ }
147
+ return mockSpawnProcess;
148
+ });
149
+ vi.mocked(spawn).mockImplementationOnce((cmd, args) => {
150
+ if (cmd === 'docker' && args && args[0] === 'run') {
151
+ return mockSpawnProcess;
152
+ }
153
+ return new EventEmitter();
154
+ });
155
+ const promise = start_sandbox(config, [], undefined, ['arg1']);
156
+ await expect(promise).resolves.toBe(0);
157
+ expect(spawn).toHaveBeenCalledWith('docker', expect.arrayContaining(['run', '-i', '--rm', '--init']), expect.objectContaining({ stdio: 'inherit' }));
158
+ });
159
+ it('should pull image if missing', async () => {
160
+ const config = {
161
+ command: 'docker',
162
+ image: 'missing-image',
163
+ };
164
+ const mockImageCheckProcess1 = new EventEmitter();
165
+ mockImageCheckProcess1.stdout = new EventEmitter();
166
+ vi.mocked(spawn).mockImplementationOnce(() => {
167
+ setTimeout(() => {
168
+ mockImageCheckProcess1.emit('close', 0);
169
+ }, 1);
170
+ return mockImageCheckProcess1;
171
+ });
172
+ const mockPullProcess = new EventEmitter();
173
+ mockPullProcess.stdout = new EventEmitter();
174
+ mockPullProcess.stderr = new EventEmitter();
175
+ vi.mocked(spawn).mockImplementationOnce(() => {
176
+ setTimeout(() => {
177
+ mockPullProcess.emit('close', 0);
178
+ }, 1);
179
+ return mockPullProcess;
180
+ });
181
+ // 3. Image check succeeds
182
+ const mockImageCheckProcess2 = new EventEmitter();
183
+ mockImageCheckProcess2.stdout = new EventEmitter();
184
+ vi.mocked(spawn).mockImplementationOnce(() => {
185
+ setTimeout(() => {
186
+ mockImageCheckProcess2.stdout.emit('data', Buffer.from('image-id'));
187
+ mockImageCheckProcess2.emit('close', 0);
188
+ }, 1);
189
+ return mockImageCheckProcess2;
190
+ });
191
+ // 4. Docker run
192
+ const mockSpawnProcess = new EventEmitter();
193
+ mockSpawnProcess.on = vi.fn().mockImplementation((event, cb) => {
194
+ if (event === 'close') {
195
+ setTimeout(() => cb(0), 10);
196
+ }
197
+ return mockSpawnProcess;
198
+ });
199
+ vi.mocked(spawn).mockImplementationOnce(() => mockSpawnProcess);
200
+ const promise = start_sandbox(config, [], undefined, ['arg1']);
201
+ await expect(promise).resolves.toBe(0);
202
+ expect(spawn).toHaveBeenCalledWith('docker', expect.arrayContaining(['pull', 'missing-image']), expect.any(Object));
203
+ });
204
+ it('should throw if image pull fails', async () => {
205
+ const config = {
206
+ command: 'docker',
207
+ image: 'missing-image',
208
+ };
209
+ const mockImageCheckProcess1 = new EventEmitter();
210
+ mockImageCheckProcess1.stdout = new EventEmitter();
211
+ vi.mocked(spawn).mockImplementationOnce(() => {
212
+ setTimeout(() => {
213
+ mockImageCheckProcess1.emit('close', 0);
214
+ }, 1);
215
+ return mockImageCheckProcess1;
216
+ });
217
+ const mockPullProcess = new EventEmitter();
218
+ mockPullProcess.stdout = new EventEmitter();
219
+ mockPullProcess.stderr = new EventEmitter();
220
+ vi.mocked(spawn).mockImplementationOnce(() => {
221
+ setTimeout(() => {
222
+ mockPullProcess.emit('close', 1);
223
+ }, 1);
224
+ return mockPullProcess;
225
+ });
226
+ await expect(start_sandbox(config)).rejects.toThrow(FatalSandboxError);
227
+ });
228
+ it('should mount volumes correctly', async () => {
229
+ const config = {
230
+ command: 'docker',
231
+ image: 'gemini-cli-sandbox',
232
+ };
233
+ process.env['SANDBOX_MOUNTS'] = '/host/path:/container/path:ro';
234
+ vi.mocked(fs.existsSync).mockReturnValue(true); // For mount path check
235
+ const mockImageCheckProcess = new EventEmitter();
236
+ mockImageCheckProcess.stdout = new EventEmitter();
237
+ vi.mocked(spawn).mockImplementationOnce(() => {
238
+ setTimeout(() => {
239
+ mockImageCheckProcess.stdout.emit('data', Buffer.from('image-id'));
240
+ mockImageCheckProcess.emit('close', 0);
241
+ }, 1);
242
+ return mockImageCheckProcess;
243
+ });
244
+ const mockSpawnProcess = new EventEmitter();
245
+ mockSpawnProcess.on = vi.fn().mockImplementation((event, cb) => {
246
+ if (event === 'close') {
247
+ setTimeout(() => cb(0), 10);
248
+ }
249
+ return mockSpawnProcess;
250
+ });
251
+ vi.mocked(spawn).mockImplementationOnce(() => mockSpawnProcess);
252
+ await start_sandbox(config);
253
+ expect(spawn).toHaveBeenCalledWith('docker', expect.arrayContaining([
254
+ '--volume',
255
+ '/host/path:/container/path:ro',
256
+ '--volume',
257
+ expect.stringContaining('/home/user/.gemini'),
258
+ ]), expect.any(Object));
259
+ });
260
+ it('should handle user creation on Linux if needed', async () => {
261
+ const config = {
262
+ command: 'docker',
263
+ image: 'gemini-cli-sandbox',
264
+ };
265
+ process.env['SANDBOX_SET_UID_GID'] = 'true';
266
+ vi.mocked(os.platform).mockReturnValue('linux');
267
+ vi.mocked(execSync).mockImplementation((cmd) => {
268
+ if (cmd === 'id -u')
269
+ return Buffer.from('1000');
270
+ if (cmd === 'id -g')
271
+ return Buffer.from('1000');
272
+ return Buffer.from('');
273
+ });
274
+ const mockImageCheckProcess = new EventEmitter();
275
+ mockImageCheckProcess.stdout = new EventEmitter();
276
+ vi.mocked(spawn).mockImplementationOnce(() => {
277
+ setTimeout(() => {
278
+ mockImageCheckProcess.stdout.emit('data', Buffer.from('image-id'));
279
+ mockImageCheckProcess.emit('close', 0);
280
+ }, 1);
281
+ return mockImageCheckProcess;
282
+ });
283
+ const mockSpawnProcess = new EventEmitter();
284
+ mockSpawnProcess.on = vi.fn().mockImplementation((event, cb) => {
285
+ if (event === 'close') {
286
+ setTimeout(() => cb(0), 10);
287
+ }
288
+ return mockSpawnProcess;
289
+ });
290
+ vi.mocked(spawn).mockImplementationOnce(() => mockSpawnProcess);
291
+ await start_sandbox(config);
292
+ expect(spawn).toHaveBeenCalledWith('docker', expect.arrayContaining(['--user', 'root', '--env', 'HOME=/home/user']), expect.any(Object));
293
+ // Check that the entrypoint command includes useradd/groupadd
294
+ const args = vi.mocked(spawn).mock.calls[1][1];
295
+ const entrypointCmd = args[args.length - 1];
296
+ expect(entrypointCmd).toContain('groupadd');
297
+ expect(entrypointCmd).toContain('useradd');
298
+ expect(entrypointCmd).toContain('su -p gemini');
299
+ });
300
+ });
301
+ });
302
+ //# sourceMappingURL=sandbox.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.test.js","sourceRoot":"","sources":["../../../src/utils/sandbox.test.ts"],"names":[],"mappings":"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"}