@google/gemini-cli 0.60.0-nightly.20260908.g85aca163f → 0.60.0
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/bundle/{chunk-G4V32KTT.js → chunk-2CNCBL5E.js} +1 -1
- package/bundle/{chunk-3QU7MFQ7.js → chunk-2VRC3EDT.js} +8 -9
- package/bundle/{chunk-3CDPEGVA.js → chunk-32DXU4EF.js} +1 -1
- package/bundle/{chunk-TVCSMCKT.js → chunk-4IIDTAFR.js} +1 -1
- package/bundle/{chunk-FX53IMQ4.js → chunk-7QC7KWAE.js} +1 -1
- package/bundle/{chunk-L5DTYBPR.js → chunk-CMLALLX3.js} +7 -7
- package/bundle/{chunk-OSSPFBB5.js → chunk-D3BC6B5F.js} +1 -1
- package/bundle/{chunk-ACSEKHMC.js → chunk-E62PES2E.js} +2 -2
- package/bundle/{chunk-YMZA4EO3.js → chunk-GFHSA4BE.js} +1 -1
- package/bundle/{chunk-A6IXIFRW.js → chunk-GNCCSIBA.js} +7 -7
- package/bundle/{chunk-FYCX7S2H.js → chunk-JJLODN2F.js} +1 -1
- package/bundle/{chunk-VIXOL23X.js → chunk-KAXMFUK5.js} +1 -1
- package/bundle/{chunk-AXAX7FSE.js → chunk-M6NSK26M.js} +123 -104
- package/bundle/{chunk-FIESYQDV.js → chunk-MOYC3UGL.js} +127 -106
- package/bundle/{chunk-BOGYC66X.js → chunk-OCLZG6C5.js} +1 -1
- package/bundle/{chunk-OI5WY42W.js → chunk-P3SNRA43.js} +2 -2
- package/bundle/{chunk-XTLORUWQ.js → chunk-PJREBWY3.js} +2 -2
- package/bundle/{chunk-N7PUYZ2C.js → chunk-QRYVAS35.js} +3 -3
- package/bundle/{chunk-4YTSRQAI.js → chunk-RZALYEQN.js} +1 -1
- package/bundle/{chunk-J5XD2NH2.js → chunk-S7PDUHJI.js} +3 -3
- package/bundle/{chunk-JE7V5AAP.js → chunk-UEQMLKXK.js} +3 -3
- package/bundle/{chunk-GD2JGMGI.js → chunk-VCAJDPDX.js} +14699 -7842
- package/bundle/{chunk-CYA6LLPT.js → chunk-WRNJPSJG.js} +5 -8
- package/bundle/{chunk-AL25HEEO.js → chunk-XRNOQZLR.js} +54 -67
- package/bundle/{cleanup-4FION7X5.js → cleanup-HEQUL3UY.js} +2 -2
- package/bundle/{cleanup-GWIY2YES.js → cleanup-THNE7RD2.js} +2 -2
- package/bundle/{cleanup-SXOQFKSA.js → cleanup-XYVEFB7E.js} +2 -2
- package/bundle/{core-T6ZA3RPN.js → core-A6JH6DY6.js} +5 -1
- package/bundle/{dist-CUTV6FXO.js → core-PCNYIQML.js} +5 -1
- package/bundle/{devtoolsService-FPEN37GX.js → devtoolsService-J7SM2WQQ.js} +2 -2
- package/bundle/{devtoolsService-J5IMHON6.js → devtoolsService-TEWMGXKI.js} +2 -2
- package/bundle/{devtoolsService-HJR727UG.js → devtoolsService-YPPCMYGQ.js} +3 -4
- package/bundle/{dist-IYMU3MAT.js → dist-PD4ABRTS.js} +5 -1
- package/bundle/{gemini-RLSAAMB2.js → gemini-7INSUCPB.js} +318 -272
- package/bundle/{gemini-FPHQ6YA6.js → gemini-LUNNHKPJ.js} +134 -72
- package/bundle/{gemini-DM7UHG5I.js → gemini-ZTU7EMI3.js} +134 -72
- package/bundle/gemini.js +7 -7
- package/bundle/{interactiveCli-BNCDBJK2.js → interactiveCli-COQJBPC2.js} +8 -8
- package/bundle/{interactiveCli-NC7ZBX74.js → interactiveCli-NQE3X2WY.js} +8 -8
- package/bundle/{interactiveCli-SWGF5F7W.js → interactiveCli-X63QLGIH.js} +296 -315
- package/bundle/{liteRtServerManager-6VWY6OO6.js → liteRtServerManager-5YXPHG3Q.js} +4 -4
- package/bundle/{liteRtServerManager-HE2FE4FH.js → liteRtServerManager-7W4APCRB.js} +4 -4
- package/bundle/{liteRtServerManager-JSW26OPJ.js → liteRtServerManager-PEAZFGHW.js} +4 -4
- package/bundle/{oauth2-provider-IGJGMQ4U.js → oauth2-provider-H2X6UMUS.js} +1 -1
- package/bundle/{oauth2-provider-I665TJQN.js → oauth2-provider-M3PIKLLI.js} +1 -1
- package/bundle/{oauth2-provider-T2HJJ7SP.js → oauth2-provider-WINJTB44.js} +72 -38
- package/bundle/{start-AA23VJDL.js → start-AH7HKN5D.js} +6 -6
- package/bundle/{start-EQIIZYZY.js → start-J5DOY6JW.js} +6 -6
- package/bundle/{start-QHU4R4ZE.js → start-QYNDA2U4.js} +6 -6
- package/package.json +1 -1
- package/bundle/chunk-5AXHFT2M.js +0 -512
- package/bundle/chunk-JIOJKKRV.js +0 -1571
- package/bundle/chunk-JIXDRDKL.js +0 -17353
- package/bundle/chunk-M24MUPYL.js +0 -398992
- package/bundle/chunk-MI66NSWG.js +0 -154
- package/bundle/chunk-R55JHECT.js +0 -102670
- package/bundle/chunk-RRTGK7KM.js +0 -118
- package/bundle/chunk-WET7Q2Z2.js +0 -398
- package/bundle/cleanup-XSTC4XRT.js +0 -32
- package/bundle/devtoolsService-R3332TAT.js +0 -4359
- package/bundle/dist-VMLS7TDS.js +0 -2212
- package/bundle/gemini-ZT27CSNJ.js +0 -17370
- package/bundle/interactiveCli-WG2TABNS.js +0 -34983
- package/bundle/liteRtServerManager-Y7KT37QX.js +0 -65
- package/bundle/oauth2-provider-WUYROQ6O.js +0 -235
- package/bundle/start-WLQTESZU.js +0 -18
|
@@ -2,7 +2,7 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
|
|
|
2
2
|
import {
|
|
3
3
|
startCommand,
|
|
4
4
|
startServer
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UEQMLKXK.js";
|
|
6
6
|
import {
|
|
7
7
|
BuiltinCommandLoader,
|
|
8
8
|
CommandService,
|
|
@@ -46,11 +46,11 @@ import {
|
|
|
46
46
|
updateExtension,
|
|
47
47
|
validateAuthMethod,
|
|
48
48
|
validateContextFilePath
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-CMLALLX3.js";
|
|
50
50
|
import {
|
|
51
51
|
exitCli,
|
|
52
52
|
require_source
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-7QC7KWAE.js";
|
|
54
54
|
import {
|
|
55
55
|
appEvents
|
|
56
56
|
} from "./chunk-5PS3AYFU.js";
|
|
@@ -88,11 +88,11 @@ import {
|
|
|
88
88
|
resolveGemmaConfig,
|
|
89
89
|
saveModelChange,
|
|
90
90
|
stripAnsi
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-WRNJPSJG.js";
|
|
92
92
|
import {
|
|
93
93
|
RELAUNCH_EXIT_CODE
|
|
94
|
-
} from "./chunk-
|
|
95
|
-
import "./chunk-
|
|
94
|
+
} from "./chunk-P3SNRA43.js";
|
|
95
|
+
import "./chunk-2CNCBL5E.js";
|
|
96
96
|
import {
|
|
97
97
|
cleanupCheckpoints,
|
|
98
98
|
registerCleanup,
|
|
@@ -101,7 +101,7 @@ import {
|
|
|
101
101
|
runExitCleanup,
|
|
102
102
|
runSyncCleanup,
|
|
103
103
|
setupSignalHandlers
|
|
104
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-32DXU4EF.js";
|
|
105
105
|
import {
|
|
106
106
|
ASK_USER_TOOL_NAME,
|
|
107
107
|
AuthType,
|
|
@@ -239,7 +239,7 @@ import {
|
|
|
239
239
|
updatePolicy,
|
|
240
240
|
writeToStderr,
|
|
241
241
|
writeToStdout
|
|
242
|
-
} from "./chunk-
|
|
242
|
+
} from "./chunk-VCAJDPDX.js";
|
|
243
243
|
import "./chunk-664ZODQF.js";
|
|
244
244
|
import "./chunk-IUUIT4SU.js";
|
|
245
245
|
import "./chunk-TUDYL3X4.js";
|
|
@@ -1524,11 +1524,11 @@ var parser = new YargsParser({
|
|
|
1524
1524
|
resolve: resolve2,
|
|
1525
1525
|
// TODO: figure out a way to combine ESM and CJS coverage, such that
|
|
1526
1526
|
// we can exercise all the lines below:
|
|
1527
|
-
require: (
|
|
1527
|
+
require: (path17) => {
|
|
1528
1528
|
if (typeof __require !== "undefined") {
|
|
1529
|
-
return __require(
|
|
1530
|
-
} else if (
|
|
1531
|
-
return JSON.parse(readFileSync(
|
|
1529
|
+
return __require(path17);
|
|
1530
|
+
} else if (path17.match(/\.json$/)) {
|
|
1531
|
+
return JSON.parse(readFileSync(path17, "utf8"));
|
|
1532
1532
|
} else {
|
|
1533
1533
|
throw Error("only .json config files are supported in ESM");
|
|
1534
1534
|
}
|
|
@@ -6313,27 +6313,27 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
|
6313
6313
|
var __filename = fileURLToPath2(import.meta.url);
|
|
6314
6314
|
var __dirname2 = dirname3(__filename);
|
|
6315
6315
|
var EXAMPLES_PATH = join(__dirname2, "examples");
|
|
6316
|
-
async function pathExists(
|
|
6316
|
+
async function pathExists(path17) {
|
|
6317
6317
|
try {
|
|
6318
|
-
await access(
|
|
6318
|
+
await access(path17);
|
|
6319
6319
|
return true;
|
|
6320
6320
|
} catch {
|
|
6321
6321
|
return false;
|
|
6322
6322
|
}
|
|
6323
6323
|
}
|
|
6324
|
-
async function createDirectory(
|
|
6325
|
-
if (await pathExists(
|
|
6326
|
-
throw new Error(`Path already exists: ${
|
|
6324
|
+
async function createDirectory(path17) {
|
|
6325
|
+
if (await pathExists(path17)) {
|
|
6326
|
+
throw new Error(`Path already exists: ${path17}`);
|
|
6327
6327
|
}
|
|
6328
|
-
await mkdir(
|
|
6328
|
+
await mkdir(path17, { recursive: true });
|
|
6329
6329
|
}
|
|
6330
|
-
async function copyDirectory(template,
|
|
6331
|
-
await createDirectory(
|
|
6330
|
+
async function copyDirectory(template, path17) {
|
|
6331
|
+
await createDirectory(path17);
|
|
6332
6332
|
const examplePath = join(EXAMPLES_PATH, template);
|
|
6333
6333
|
const entries = await readdir(examplePath, { withFileTypes: true });
|
|
6334
6334
|
for (const entry of entries) {
|
|
6335
6335
|
const srcPath = join(examplePath, entry.name);
|
|
6336
|
-
const destPath = join(
|
|
6336
|
+
const destPath = join(path17, entry.name);
|
|
6337
6337
|
await cp(srcPath, destPath, { recursive: true });
|
|
6338
6338
|
}
|
|
6339
6339
|
}
|
|
@@ -6614,7 +6614,7 @@ async function handleEnable3(args) {
|
|
|
6614
6614
|
const result = enableSkill(settings, name);
|
|
6615
6615
|
const feedback = renderSkillActionFeedback(
|
|
6616
6616
|
result,
|
|
6617
|
-
(label,
|
|
6617
|
+
(label, path17) => `${import_chalk5.default.bold(label)} (${import_chalk5.default.dim(path17)})`
|
|
6618
6618
|
);
|
|
6619
6619
|
debugLogger.log(feedback);
|
|
6620
6620
|
}
|
|
@@ -6644,7 +6644,7 @@ async function handleDisable3(args) {
|
|
|
6644
6644
|
const result = disableSkill(settings, name, scope);
|
|
6645
6645
|
const feedback = renderSkillActionFeedback(
|
|
6646
6646
|
result,
|
|
6647
|
-
(label,
|
|
6647
|
+
(label, path17) => `${import_chalk6.default.bold(label)} (${import_chalk6.default.dim(path17)})`
|
|
6648
6648
|
);
|
|
6649
6649
|
debugLogger.log(feedback);
|
|
6650
6650
|
}
|
|
@@ -7839,7 +7839,7 @@ async function loadSandboxConfig(settings, argv) {
|
|
|
7839
7839
|
}
|
|
7840
7840
|
const command2 = getSandboxCommand(sandboxValue);
|
|
7841
7841
|
const packageJson = await getPackageJson(__dirname3);
|
|
7842
|
-
const image = process.env["GEMINI_SANDBOX_IMAGE"] ?? "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.60.0
|
|
7842
|
+
const image = process.env["GEMINI_SANDBOX_IMAGE"] ?? "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.60.0" ?? customImage ?? packageJson?.config?.sandboxImageUri;
|
|
7843
7843
|
const isNative = command2 === "windows-native" || command2 === "sandbox-exec" || command2 === "lxc";
|
|
7844
7844
|
return command2 && (image || isNative) ? { enabled: true, allowedPaths, networkAccess, command: command2, image } : void 0;
|
|
7845
7845
|
}
|
|
@@ -8774,7 +8774,7 @@ import { createHash as createHash2 } from "node:crypto";
|
|
|
8774
8774
|
import v8 from "node:v8";
|
|
8775
8775
|
import os6 from "node:os";
|
|
8776
8776
|
import dns from "node:dns";
|
|
8777
|
-
import * as
|
|
8777
|
+
import * as path16 from "node:path";
|
|
8778
8778
|
import * as fsPromises from "node:fs/promises";
|
|
8779
8779
|
|
|
8780
8780
|
// packages/cli/src/utils/sandbox.ts
|
|
@@ -8786,7 +8786,7 @@ import {
|
|
|
8786
8786
|
spawn as spawn2,
|
|
8787
8787
|
spawnSync
|
|
8788
8788
|
} from "node:child_process";
|
|
8789
|
-
import
|
|
8789
|
+
import path9 from "node:path";
|
|
8790
8790
|
import fs7 from "node:fs";
|
|
8791
8791
|
import os3 from "node:os";
|
|
8792
8792
|
import { fileURLToPath as fileURLToPath4 } from "node:url";
|
|
@@ -8797,6 +8797,7 @@ import { randomBytes } from "node:crypto";
|
|
|
8797
8797
|
var import_shell_quote = __toESM(require_shell_quote(), 1);
|
|
8798
8798
|
import os2 from "node:os";
|
|
8799
8799
|
import fs6 from "node:fs";
|
|
8800
|
+
import path8 from "node:path";
|
|
8800
8801
|
import { readFile } from "node:fs/promises";
|
|
8801
8802
|
var LOCAL_DEV_SANDBOX_IMAGE_NAME = "gemini-cli-sandbox";
|
|
8802
8803
|
var SANDBOX_NETWORK_NAME = "gemini-cli-sandbox";
|
|
@@ -8811,6 +8812,58 @@ var BUILTIN_SEATBELT_PROFILES = [
|
|
|
8811
8812
|
"strict-open",
|
|
8812
8813
|
"strict-proxied"
|
|
8813
8814
|
];
|
|
8815
|
+
var SENSITIVE_SETTINGS_FILENAMES = /* @__PURE__ */ new Set([
|
|
8816
|
+
"oauth_creds.json",
|
|
8817
|
+
"google_accounts.json",
|
|
8818
|
+
"gemini-credentials.json",
|
|
8819
|
+
"mcp-oauth-tokens.json",
|
|
8820
|
+
"a2a-oauth-tokens.json"
|
|
8821
|
+
]);
|
|
8822
|
+
function isCredentialOrSensitivePath(targetPath, rootDir) {
|
|
8823
|
+
if (rootDir && path8.resolve(targetPath) === path8.resolve(rootDir)) {
|
|
8824
|
+
return false;
|
|
8825
|
+
}
|
|
8826
|
+
const base = path8.basename(targetPath).toLowerCase();
|
|
8827
|
+
if (SENSITIVE_SETTINGS_FILENAMES.has(base)) {
|
|
8828
|
+
return true;
|
|
8829
|
+
}
|
|
8830
|
+
const isRootChild = rootDir ? path8.dirname(path8.resolve(targetPath)) === path8.resolve(rootDir) : true;
|
|
8831
|
+
if (isRootChild && (base === "history" || base === "tmp" || base === "bin")) {
|
|
8832
|
+
return true;
|
|
8833
|
+
}
|
|
8834
|
+
const hasSensitiveSuffix = (s) => {
|
|
8835
|
+
if (base === s) return true;
|
|
8836
|
+
if (base.endsWith(s)) {
|
|
8837
|
+
const charBefore = base.charAt(base.length - s.length - 1);
|
|
8838
|
+
return charBefore === "-" || charBefore === "_" || charBefore === ".";
|
|
8839
|
+
}
|
|
8840
|
+
return false;
|
|
8841
|
+
};
|
|
8842
|
+
if (base.endsWith(".credentials") || hasSensitiveSuffix("credentials") || hasSensitiveSuffix("credentials.json") || hasSensitiveSuffix("tokens.json") || hasSensitiveSuffix("token.json") || hasSensitiveSuffix("token") || hasSensitiveSuffix("creds.json") || hasSensitiveSuffix("cred.json") || base.endsWith(".env") || base.endsWith(".key") || base.endsWith(".pem") || base.endsWith(".p12") || hasSensitiveSuffix("key.json")) {
|
|
8843
|
+
return true;
|
|
8844
|
+
}
|
|
8845
|
+
return false;
|
|
8846
|
+
}
|
|
8847
|
+
function prepareIsolatedSettingsDir(userSettingsDirOnHost) {
|
|
8848
|
+
const baseTmpDir = os2.tmpdir() || "/tmp";
|
|
8849
|
+
const isolatedDir = fs6.mkdtempSync(
|
|
8850
|
+
path8.join(baseTmpDir, "gemini-sandbox-settings-")
|
|
8851
|
+
);
|
|
8852
|
+
fs6.chmodSync(isolatedDir, 448);
|
|
8853
|
+
if (fs6.existsSync(userSettingsDirOnHost)) {
|
|
8854
|
+
try {
|
|
8855
|
+
fs6.cpSync(userSettingsDirOnHost, isolatedDir, {
|
|
8856
|
+
recursive: true,
|
|
8857
|
+
filter: (source) => !isCredentialOrSensitivePath(source, userSettingsDirOnHost)
|
|
8858
|
+
});
|
|
8859
|
+
} catch (err) {
|
|
8860
|
+
debugLogger.warn(
|
|
8861
|
+
`Failed to copy user settings to sandbox directory: ${err instanceof Error ? err.message : String(err)}`
|
|
8862
|
+
);
|
|
8863
|
+
}
|
|
8864
|
+
}
|
|
8865
|
+
return isolatedDir;
|
|
8866
|
+
}
|
|
8814
8867
|
function getContainerPath(hostPath) {
|
|
8815
8868
|
if (os2.platform() !== "win32") {
|
|
8816
8869
|
return hostPath;
|
|
@@ -9713,7 +9766,18 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
9713
9766
|
let stopProxy = void 0;
|
|
9714
9767
|
let tempProfileFile = null;
|
|
9715
9768
|
let sandboxTmpDir = null;
|
|
9769
|
+
let isolatedSettingsDir = null;
|
|
9716
9770
|
const cleanup = () => {
|
|
9771
|
+
if (isolatedSettingsDir) {
|
|
9772
|
+
const dirToDelete = isolatedSettingsDir;
|
|
9773
|
+
isolatedSettingsDir = null;
|
|
9774
|
+
try {
|
|
9775
|
+
if (fs7.existsSync(dirToDelete)) {
|
|
9776
|
+
fs7.rmSync(dirToDelete, { recursive: true, force: true });
|
|
9777
|
+
}
|
|
9778
|
+
} catch {
|
|
9779
|
+
}
|
|
9780
|
+
}
|
|
9717
9781
|
if (sandboxTmpDir) {
|
|
9718
9782
|
const dirToDelete = sandboxTmpDir;
|
|
9719
9783
|
sandboxTmpDir = null;
|
|
@@ -9766,10 +9830,10 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
9766
9830
|
new URL(`sandbox-macos-${profile}.sb`, import.meta.url)
|
|
9767
9831
|
);
|
|
9768
9832
|
if (!BUILTIN_SEATBELT_PROFILES.includes(profile)) {
|
|
9769
|
-
const safeProfile =
|
|
9833
|
+
const safeProfile = path9.basename(profile);
|
|
9770
9834
|
const fileName = `sandbox-macos-${safeProfile}.sb`;
|
|
9771
|
-
const userProfileFile =
|
|
9772
|
-
const projectProfileFile =
|
|
9835
|
+
const userProfileFile = path9.join(homedir(), GEMINI_DIR, fileName);
|
|
9836
|
+
const projectProfileFile = path9.join(GEMINI_DIR, fileName);
|
|
9773
9837
|
profileFile = fs7.existsSync(userProfileFile) ? userProfileFile : projectProfileFile;
|
|
9774
9838
|
} else {
|
|
9775
9839
|
if (!fs7.existsSync(profileFile)) {
|
|
@@ -9778,7 +9842,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
9778
9842
|
try {
|
|
9779
9843
|
const tempDir = fs7.realpathSync(os3.tmpdir());
|
|
9780
9844
|
const rand = randomBytes(8).toString("hex");
|
|
9781
|
-
tempProfileFile =
|
|
9845
|
+
tempProfileFile = path9.join(
|
|
9782
9846
|
tempDir,
|
|
9783
9847
|
`gemini-sandbox-macos-${profile}-${rand}.sb`
|
|
9784
9848
|
);
|
|
@@ -9808,7 +9872,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
9808
9872
|
].join(" ");
|
|
9809
9873
|
const hostTmpDir = fs7.realpathSync(os3.tmpdir());
|
|
9810
9874
|
const resolvedTmpDir = fs7.mkdtempSync(
|
|
9811
|
-
|
|
9875
|
+
path9.join(hostTmpDir, "gemini-sandbox-")
|
|
9812
9876
|
);
|
|
9813
9877
|
sandboxTmpDir = resolvedTmpDir;
|
|
9814
9878
|
const args2 = [
|
|
@@ -9836,7 +9900,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
9836
9900
|
}
|
|
9837
9901
|
if (config.allowedPaths) {
|
|
9838
9902
|
for (const hostPath of config.allowedPaths) {
|
|
9839
|
-
if (hostPath &&
|
|
9903
|
+
if (hostPath && path9.isAbsolute(hostPath) && fs7.existsSync(hostPath)) {
|
|
9840
9904
|
const realDir = fs7.realpathSync(hostPath);
|
|
9841
9905
|
if (!includedDirs.includes(realDir) && realDir !== targetDir) {
|
|
9842
9906
|
includedDirs.push(realDir);
|
|
@@ -9942,7 +10006,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
9942
10006
|
if (!command2) throw new FatalSandboxError("Sandbox command is required");
|
|
9943
10007
|
debugLogger.log(`hopping into sandbox (command: ${command2}) ...`);
|
|
9944
10008
|
const gcPath = process.argv[1] ? fs7.realpathSync(process.argv[1]) : "";
|
|
9945
|
-
const projectSandboxDockerfile =
|
|
10009
|
+
const projectSandboxDockerfile = path9.join(
|
|
9946
10010
|
GEMINI_DIR,
|
|
9947
10011
|
"sandbox.Dockerfile"
|
|
9948
10012
|
);
|
|
@@ -9951,7 +10015,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
9951
10015
|
if (!image) throw new FatalSandboxError("Sandbox image is required");
|
|
9952
10016
|
if (!/^[a-zA-Z0-9_.:/-]+$/.test(image))
|
|
9953
10017
|
throw new FatalSandboxError("Invalid sandbox image name");
|
|
9954
|
-
const workdir =
|
|
10018
|
+
const workdir = path9.resolve(process.cwd());
|
|
9955
10019
|
const containerWorkdir = getContainerPath(workdir);
|
|
9956
10020
|
if (process.env["BUILD_SANDBOX"]) {
|
|
9957
10021
|
if (!gcPath.includes("gemini-cli/packages/")) {
|
|
@@ -9962,13 +10026,13 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
9962
10026
|
debugLogger.log("building sandbox ...");
|
|
9963
10027
|
const gcRoot = gcPath.split("/packages/")[0];
|
|
9964
10028
|
let buildArgs = "";
|
|
9965
|
-
const projectSandboxDockerfile2 =
|
|
10029
|
+
const projectSandboxDockerfile2 = path9.join(
|
|
9966
10030
|
GEMINI_DIR,
|
|
9967
10031
|
"sandbox.Dockerfile"
|
|
9968
10032
|
);
|
|
9969
10033
|
if (isCustomProjectSandbox) {
|
|
9970
10034
|
debugLogger.log(`using ${projectSandboxDockerfile2} for sandbox`);
|
|
9971
|
-
buildArgs += `-f ${
|
|
10035
|
+
buildArgs += `-f ${path9.resolve(projectSandboxDockerfile2)} -i ${image}`;
|
|
9972
10036
|
}
|
|
9973
10037
|
execSync(
|
|
9974
10038
|
`cd ${gcRoot} && node scripts/build_sandbox.js -s ${buildArgs}`,
|
|
@@ -10012,18 +10076,16 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
10012
10076
|
if (!fs7.existsSync(userHomeDirOnHost)) {
|
|
10013
10077
|
fs7.mkdirSync(userHomeDirOnHost, { recursive: true });
|
|
10014
10078
|
}
|
|
10015
|
-
const userSettingsDirOnHost =
|
|
10079
|
+
const userSettingsDirOnHost = path9.join(userHomeDirOnHost, GEMINI_DIR);
|
|
10016
10080
|
if (!fs7.existsSync(userSettingsDirOnHost)) {
|
|
10017
10081
|
fs7.mkdirSync(userSettingsDirOnHost, { recursive: true });
|
|
10018
10082
|
}
|
|
10019
|
-
|
|
10020
|
-
|
|
10021
|
-
`${userSettingsDirOnHost}:${userSettingsDirInSandbox}`
|
|
10022
|
-
);
|
|
10083
|
+
isolatedSettingsDir = prepareIsolatedSettingsDir(userSettingsDirOnHost);
|
|
10084
|
+
args.push("--volume", `${isolatedSettingsDir}:${userSettingsDirInSandbox}`);
|
|
10023
10085
|
if (userSettingsDirInSandbox !== getContainerPath(userSettingsDirOnHost)) {
|
|
10024
10086
|
args.push(
|
|
10025
10087
|
"--volume",
|
|
10026
|
-
`${
|
|
10088
|
+
`${isolatedSettingsDir}:${getContainerPath(userSettingsDirOnHost)}`
|
|
10027
10089
|
);
|
|
10028
10090
|
}
|
|
10029
10091
|
args.push("--volume", `${os3.tmpdir()}:${getContainerPath(os3.tmpdir())}`);
|
|
@@ -10033,7 +10095,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
10033
10095
|
`${userHomeDirOnHost}:${getContainerPath(userHomeDirOnHost)}`
|
|
10034
10096
|
);
|
|
10035
10097
|
}
|
|
10036
|
-
const gcloudConfigDir =
|
|
10098
|
+
const gcloudConfigDir = path9.join(homedir(), ".config", "gcloud");
|
|
10037
10099
|
if (fs7.existsSync(gcloudConfigDir)) {
|
|
10038
10100
|
args.push(
|
|
10039
10101
|
"--volume",
|
|
@@ -10057,7 +10119,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
10057
10119
|
to = to || from;
|
|
10058
10120
|
opts = opts || "ro";
|
|
10059
10121
|
mount = `${from}:${to}:${opts}`;
|
|
10060
|
-
if (!
|
|
10122
|
+
if (!path9.isAbsolute(from)) {
|
|
10061
10123
|
throw new FatalSandboxError(
|
|
10062
10124
|
`Path '${from}' listed in SANDBOX_MOUNTS must be absolute`
|
|
10063
10125
|
);
|
|
@@ -10074,7 +10136,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
10074
10136
|
}
|
|
10075
10137
|
if (config.allowedPaths) {
|
|
10076
10138
|
for (const hostPath of config.allowedPaths) {
|
|
10077
|
-
if (hostPath &&
|
|
10139
|
+
if (hostPath && path9.isAbsolute(hostPath) && fs7.existsSync(hostPath)) {
|
|
10078
10140
|
const containerPath = getContainerPath(hostPath);
|
|
10079
10141
|
debugLogger.log(
|
|
10080
10142
|
`Config allowedPath: ${hostPath} -> ${containerPath} (ro)`
|
|
@@ -10194,7 +10256,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
10194
10256
|
}
|
|
10195
10257
|
}
|
|
10196
10258
|
if (process.env["VIRTUAL_ENV"]?.toLowerCase().startsWith(workdir.toLowerCase())) {
|
|
10197
|
-
const sandboxVenvPath =
|
|
10259
|
+
const sandboxVenvPath = path9.resolve(GEMINI_DIR, "sandbox.venv");
|
|
10198
10260
|
if (!fs7.existsSync(sandboxVenvPath)) {
|
|
10199
10261
|
fs7.mkdirSync(sandboxVenvPath, { recursive: true });
|
|
10200
10262
|
}
|
|
@@ -10231,7 +10293,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
10231
10293
|
}
|
|
10232
10294
|
args.push("--env", `SANDBOX=${containerName}`);
|
|
10233
10295
|
if (command2 === "podman") {
|
|
10234
|
-
const emptyAuthFilePath =
|
|
10296
|
+
const emptyAuthFilePath = path9.join(os3.tmpdir(), "empty_auth.json");
|
|
10235
10297
|
fs7.writeFileSync(emptyAuthFilePath, "{}", "utf-8");
|
|
10236
10298
|
args.push("--authfile", emptyAuthFilePath);
|
|
10237
10299
|
}
|
|
@@ -10360,7 +10422,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
10360
10422
|
}
|
|
10361
10423
|
async function start_lxc_sandbox(config, nodeArgs = [], cliArgs = []) {
|
|
10362
10424
|
const containerName = config.image || "gemini-sandbox";
|
|
10363
|
-
const workdir =
|
|
10425
|
+
const workdir = path9.resolve(process.cwd());
|
|
10364
10426
|
debugLogger.log(
|
|
10365
10427
|
`starting lxc sandbox (container: ${containerName}, workdir: ${workdir}) ...`
|
|
10366
10428
|
);
|
|
@@ -10441,7 +10503,7 @@ async function start_lxc_sandbox(config, nodeArgs = [], cliArgs = []) {
|
|
|
10441
10503
|
}
|
|
10442
10504
|
if (config.allowedPaths) {
|
|
10443
10505
|
for (const hostPath of config.allowedPaths) {
|
|
10444
|
-
if (hostPath &&
|
|
10506
|
+
if (hostPath && path9.isAbsolute(hostPath) && fs7.existsSync(hostPath)) {
|
|
10445
10507
|
const allowedDeviceName = `gemini-allowed-${randomBytes(4).toString(
|
|
10446
10508
|
"hex"
|
|
10447
10509
|
)}`;
|
|
@@ -10687,7 +10749,7 @@ async function getStartupWarnings() {
|
|
|
10687
10749
|
// packages/cli/src/utils/userStartupWarnings.ts
|
|
10688
10750
|
import fs9 from "node:fs/promises";
|
|
10689
10751
|
import { homedir as osHomedir } from "node:os";
|
|
10690
|
-
import
|
|
10752
|
+
import path10 from "node:path";
|
|
10691
10753
|
import process4 from "node:process";
|
|
10692
10754
|
var homeDirectoryCheck = {
|
|
10693
10755
|
id: "home-directory",
|
|
@@ -10701,7 +10763,7 @@ var homeDirectoryCheck = {
|
|
|
10701
10763
|
fs9.realpath(workspaceRoot),
|
|
10702
10764
|
fs9.realpath(osHomedir())
|
|
10703
10765
|
]);
|
|
10704
|
-
if (
|
|
10766
|
+
if (path10.resolve(workspaceRealPath) === path10.resolve(homeRealPath)) {
|
|
10705
10767
|
if (isFolderTrustEnabled(settings) && isWorkspaceTrusted(settings).isTrusted) {
|
|
10706
10768
|
return null;
|
|
10707
10769
|
}
|
|
@@ -10720,7 +10782,7 @@ var rootDirectoryCheck = {
|
|
|
10720
10782
|
try {
|
|
10721
10783
|
const workspaceRealPath = await fs9.realpath(workspaceRoot);
|
|
10722
10784
|
const errorMessage = "Warning: You are running Gemini CLI in the root directory. Your entire folder structure will be used for context. It is strongly recommended to run in a project-specific directory.";
|
|
10723
|
-
if (
|
|
10785
|
+
if (path10.dirname(workspaceRealPath) === workspaceRealPath) {
|
|
10724
10786
|
return errorMessage;
|
|
10725
10787
|
}
|
|
10726
10788
|
return null;
|
|
@@ -11118,7 +11180,7 @@ async function runNonInteractive({
|
|
|
11118
11180
|
}
|
|
11119
11181
|
});
|
|
11120
11182
|
if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
|
|
11121
|
-
const { setupInitialActivityLogger } = await import("./devtoolsService-
|
|
11183
|
+
const { setupInitialActivityLogger } = await import("./devtoolsService-TEWMGXKI.js");
|
|
11122
11184
|
setupInitialActivityLogger(config);
|
|
11123
11185
|
}
|
|
11124
11186
|
const { stdout: workingStdout } = createWorkingStdio();
|
|
@@ -11628,7 +11690,7 @@ async function runNonInteractive2(params) {
|
|
|
11628
11690
|
}
|
|
11629
11691
|
});
|
|
11630
11692
|
if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
|
|
11631
|
-
const { setupInitialActivityLogger } = await import("./devtoolsService-
|
|
11693
|
+
const { setupInitialActivityLogger } = await import("./devtoolsService-TEWMGXKI.js");
|
|
11632
11694
|
setupInitialActivityLogger(config);
|
|
11633
11695
|
}
|
|
11634
11696
|
const { stdout: workingStdout } = createWorkingStdio();
|
|
@@ -13619,7 +13681,7 @@ import { randomUUID as randomUUID2 } from "node:crypto";
|
|
|
13619
13681
|
|
|
13620
13682
|
// packages/cli/src/acp/acpSession.ts
|
|
13621
13683
|
import * as fs12 from "node:fs/promises";
|
|
13622
|
-
import * as
|
|
13684
|
+
import * as path13 from "node:path";
|
|
13623
13685
|
import { randomUUID } from "node:crypto";
|
|
13624
13686
|
|
|
13625
13687
|
// packages/cli/src/acp/commands/commandRegistry.ts
|
|
@@ -14061,7 +14123,7 @@ var UpdateExtensionCommand = class {
|
|
|
14061
14123
|
|
|
14062
14124
|
// packages/cli/src/acp/commands/init.ts
|
|
14063
14125
|
import * as fs10 from "node:fs";
|
|
14064
|
-
import * as
|
|
14126
|
+
import * as path11 from "node:path";
|
|
14065
14127
|
var InitCommand = class {
|
|
14066
14128
|
name = "init";
|
|
14067
14129
|
description = "Analyzes the project and creates a tailored GEMINI.md file";
|
|
@@ -14071,7 +14133,7 @@ var InitCommand = class {
|
|
|
14071
14133
|
if (!targetDir) {
|
|
14072
14134
|
throw new Error("Command requires a workspace.");
|
|
14073
14135
|
}
|
|
14074
|
-
const geminiMdPath =
|
|
14136
|
+
const geminiMdPath = path11.join(targetDir, "GEMINI.md");
|
|
14075
14137
|
const result = performInit(fs10.existsSync(geminiMdPath));
|
|
14076
14138
|
switch (result.type) {
|
|
14077
14139
|
case "message":
|
|
@@ -14104,7 +14166,7 @@ ${result.content}`
|
|
|
14104
14166
|
|
|
14105
14167
|
// packages/cli/src/acp/commands/restore.ts
|
|
14106
14168
|
import * as fs11 from "node:fs/promises";
|
|
14107
|
-
import * as
|
|
14169
|
+
import * as path12 from "node:path";
|
|
14108
14170
|
var RestoreCommand = class {
|
|
14109
14171
|
name = "restore";
|
|
14110
14172
|
description = "Restore to a previous checkpoint, or list available checkpoints to restore. This will reset the conversation and file history to the state it was in when the checkpoint was created";
|
|
@@ -14126,7 +14188,7 @@ var RestoreCommand = class {
|
|
|
14126
14188
|
}
|
|
14127
14189
|
const selectedFile = argsStr.endsWith(".json") ? argsStr : `${argsStr}.json`;
|
|
14128
14190
|
const checkpointDir = config.storage.getProjectTempCheckpointsDir();
|
|
14129
|
-
const filePath =
|
|
14191
|
+
const filePath = path12.join(checkpointDir, selectedFile);
|
|
14130
14192
|
let data;
|
|
14131
14193
|
try {
|
|
14132
14194
|
data = await fs11.readFile(filePath, "utf-8");
|
|
@@ -14200,7 +14262,7 @@ var ListCheckpointsCommand = class {
|
|
|
14200
14262
|
}
|
|
14201
14263
|
const checkpointFiles = /* @__PURE__ */ new Map();
|
|
14202
14264
|
for (const file of jsonFiles) {
|
|
14203
|
-
const filePath =
|
|
14265
|
+
const filePath = path12.join(checkpointDir, file);
|
|
14204
14266
|
const data = await fs11.readFile(filePath, "utf-8");
|
|
14205
14267
|
checkpointFiles.set(file, data);
|
|
14206
14268
|
}
|
|
@@ -15462,7 +15524,7 @@ ${event.value.description}`;
|
|
|
15462
15524
|
} else if (result.status === "invalid") {
|
|
15463
15525
|
continue;
|
|
15464
15526
|
} else {
|
|
15465
|
-
absolutePath =
|
|
15527
|
+
absolutePath = path13.resolve(
|
|
15466
15528
|
this.context.config.getTargetDir(),
|
|
15467
15529
|
pathName
|
|
15468
15530
|
);
|
|
@@ -15536,7 +15598,7 @@ ${event.value.description}`;
|
|
|
15536
15598
|
}
|
|
15537
15599
|
try {
|
|
15538
15600
|
if (!validationError) {
|
|
15539
|
-
if ((
|
|
15601
|
+
if ((path13.isAbsolute(pathName) || !isWithinRoot(
|
|
15540
15602
|
absolutePath,
|
|
15541
15603
|
this.context.config.getTargetDir()
|
|
15542
15604
|
)) && !readDirectly) {
|
|
@@ -15640,7 +15702,7 @@ ${contentToPush}`;
|
|
|
15640
15702
|
const lines = globResult.llmContent.split("\n");
|
|
15641
15703
|
if (lines.length > 1 && lines[1]) {
|
|
15642
15704
|
const firstMatchAbsolute = lines[1].trim();
|
|
15643
|
-
currentPathSpec =
|
|
15705
|
+
currentPathSpec = path13.relative(
|
|
15644
15706
|
this.context.config.getTargetDir(),
|
|
15645
15707
|
firstMatchAbsolute
|
|
15646
15708
|
);
|
|
@@ -15858,7 +15920,7 @@ Content from @${contextPart.uri}:
|
|
|
15858
15920
|
|
|
15859
15921
|
// packages/cli/src/acp/acpFileSystemService.ts
|
|
15860
15922
|
import os5 from "node:os";
|
|
15861
|
-
import
|
|
15923
|
+
import path14 from "node:path";
|
|
15862
15924
|
var AcpFileSystemService = class {
|
|
15863
15925
|
constructor(connection, sessionId, capabilities, fallback, root) {
|
|
15864
15926
|
this.connection = connection;
|
|
@@ -15867,7 +15929,7 @@ var AcpFileSystemService = class {
|
|
|
15867
15929
|
this.fallback = fallback;
|
|
15868
15930
|
this.root = root;
|
|
15869
15931
|
}
|
|
15870
|
-
geminiDir =
|
|
15932
|
+
geminiDir = path14.join(os5.homedir(), ".gemini");
|
|
15871
15933
|
shouldUseFallback(filePath) {
|
|
15872
15934
|
return !isWithinRoot(filePath, this.root) || isWithinRoot(filePath, this.geminiDir);
|
|
15873
15935
|
}
|
|
@@ -16503,7 +16565,7 @@ async function setupTerminalAndTheme(config, settings) {
|
|
|
16503
16565
|
|
|
16504
16566
|
// packages/cli/src/utils/logCleanup.ts
|
|
16505
16567
|
import { promises as fs13 } from "node:fs";
|
|
16506
|
-
import * as
|
|
16568
|
+
import * as path15 from "node:path";
|
|
16507
16569
|
var RETENTION_PERIOD_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
16508
16570
|
async function cleanupBackgroundLogs(debugMode = false) {
|
|
16509
16571
|
try {
|
|
@@ -16518,7 +16580,7 @@ async function cleanupBackgroundLogs(debugMode = false) {
|
|
|
16518
16580
|
let deletedCount = 0;
|
|
16519
16581
|
for (const entry of entries) {
|
|
16520
16582
|
if (entry.isFile() && entry.name.endsWith(".log")) {
|
|
16521
|
-
const filePath =
|
|
16583
|
+
const filePath = path15.join(logDir, entry.name);
|
|
16522
16584
|
try {
|
|
16523
16585
|
const stats = await fs13.stat(filePath);
|
|
16524
16586
|
if (now - stats.mtime.getTime() > RETENTION_PERIOD_MS) {
|
|
@@ -16769,8 +16831,8 @@ async function resolveSessionId(resumeArg, sessionIdArg, sessionFileArg) {
|
|
|
16769
16831
|
sessionData.projectHash = getProjectHash(storage.getProjectRoot());
|
|
16770
16832
|
sessionData.startTime = isoNow;
|
|
16771
16833
|
sessionData.lastUpdated = isoNow;
|
|
16772
|
-
const chatsDir =
|
|
16773
|
-
const newSessionPath =
|
|
16834
|
+
const chatsDir = path16.join(storage.getProjectTempDir(), "chats");
|
|
16835
|
+
const newSessionPath = path16.join(
|
|
16774
16836
|
chatsDir,
|
|
16775
16837
|
`session-${now}-${newSessionId.slice(0, 8)}.jsonl`
|
|
16776
16838
|
);
|
|
@@ -16838,7 +16900,7 @@ async function resolveSessionId(resumeArg, sessionIdArg, sessionFileArg) {
|
|
|
16838
16900
|
}
|
|
16839
16901
|
}
|
|
16840
16902
|
async function startInteractiveUI(config, settings, startupWarnings, workspaceRoot = process.cwd(), resumedSessionData, initializationResult) {
|
|
16841
|
-
const { startInteractiveUI: doStartUI } = await import("./interactiveCli-
|
|
16903
|
+
const { startInteractiveUI: doStartUI } = await import("./interactiveCli-NQE3X2WY.js");
|
|
16842
16904
|
await doStartUI(
|
|
16843
16905
|
config,
|
|
16844
16906
|
settings,
|
|
@@ -17047,7 +17109,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
17047
17109
|
await config.storage.initialize();
|
|
17048
17110
|
adminControlsListner.setConfig(config);
|
|
17049
17111
|
if (config.isInteractive() && settings.merged.general.devtools) {
|
|
17050
|
-
const { setupInitialActivityLogger } = await import("./devtoolsService-
|
|
17112
|
+
const { setupInitialActivityLogger } = await import("./devtoolsService-TEWMGXKI.js");
|
|
17051
17113
|
setupInitialActivityLogger(config);
|
|
17052
17114
|
}
|
|
17053
17115
|
registerTelemetryConfig(config);
|
|
@@ -17106,7 +17168,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
17106
17168
|
const initAppHandle = startupProfiler.start("initialize_app");
|
|
17107
17169
|
const initializationResult = await initializeApp(config, settings);
|
|
17108
17170
|
initAppHandle?.end();
|
|
17109
|
-
import("./liteRtServerManager-
|
|
17171
|
+
import("./liteRtServerManager-5YXPHG3Q.js").then(({ LiteRtServerManager }) => {
|
|
17110
17172
|
const mergedGemma = settings.merged.experimental?.gemmaModelRouter;
|
|
17111
17173
|
if (!mergedGemma) return;
|
|
17112
17174
|
const userGemma = settings.forScope("User" /* User */).settings.experimental?.gemmaModelRouter;
|
package/bundle/gemini.js
CHANGED
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
RELAUNCH_EXIT_CODE,
|
|
5
5
|
getScriptArgs,
|
|
6
6
|
getSpawnConfig
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-PJREBWY3.js";
|
|
8
|
+
import "./chunk-4IIDTAFR.js";
|
|
9
|
+
import "./chunk-GFHSA4BE.js";
|
|
10
|
+
import "./chunk-M6NSK26M.js";
|
|
11
11
|
import "./chunk-664ZODQF.js";
|
|
12
12
|
import "./chunk-IUUIT4SU.js";
|
|
13
13
|
import "./chunk-TUDYL3X4.js";
|
|
@@ -115,9 +115,9 @@ ${error instanceof Error ? error.stack ?? error.message : String(error)}
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
} else {
|
|
118
|
-
const { main } = await import("./gemini-
|
|
119
|
-
const { FatalError, writeToStderr } = await import("./dist-
|
|
120
|
-
const { runExitCleanup } = await import("./cleanup-
|
|
118
|
+
const { main } = await import("./gemini-LUNNHKPJ.js");
|
|
119
|
+
const { FatalError, writeToStderr } = await import("./dist-PD4ABRTS.js");
|
|
120
|
+
const { runExitCleanup } = await import("./cleanup-XYVEFB7E.js");
|
|
121
121
|
main().catch(async (error) => {
|
|
122
122
|
const cleanupTimeout = setTimeout(() => {
|
|
123
123
|
writeToStderr("Cleanup timed out, forcing exit...\n");
|
|
@@ -157,10 +157,10 @@ import {
|
|
|
157
157
|
widestLineFromStyledChars,
|
|
158
158
|
wordBreakStyledChars,
|
|
159
159
|
wrapStyledChars
|
|
160
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-GNCCSIBA.js";
|
|
161
161
|
import {
|
|
162
162
|
require_source
|
|
163
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-RZALYEQN.js";
|
|
164
164
|
import {
|
|
165
165
|
appEvents
|
|
166
166
|
} from "./chunk-5PS3AYFU.js";
|
|
@@ -214,24 +214,24 @@ import {
|
|
|
214
214
|
stripAnsi,
|
|
215
215
|
stripUnsafeCharacters,
|
|
216
216
|
toCodePoints
|
|
217
|
-
} from "./chunk-
|
|
217
|
+
} from "./chunk-OCLZG6C5.js";
|
|
218
218
|
import {
|
|
219
219
|
handleAutoUpdate,
|
|
220
220
|
isDevelopment,
|
|
221
221
|
relaunchApp,
|
|
222
222
|
setUpdateHandler
|
|
223
|
-
} from "./chunk-
|
|
223
|
+
} from "./chunk-PJREBWY3.js";
|
|
224
224
|
import {
|
|
225
225
|
isTodoList,
|
|
226
226
|
mapCoreStatusToDisplayStatus,
|
|
227
227
|
require_react
|
|
228
|
-
} from "./chunk-
|
|
228
|
+
} from "./chunk-4IIDTAFR.js";
|
|
229
229
|
import {
|
|
230
230
|
registerCleanup,
|
|
231
231
|
removeCleanup,
|
|
232
232
|
runExitCleanup,
|
|
233
233
|
setupTtyCheck
|
|
234
|
-
} from "./chunk-
|
|
234
|
+
} from "./chunk-GFHSA4BE.js";
|
|
235
235
|
import {
|
|
236
236
|
ACTIVATE_SKILL_TOOL_NAME,
|
|
237
237
|
AGENT_TOOL_NAME,
|
|
@@ -437,7 +437,7 @@ import {
|
|
|
437
437
|
validatePlanContent,
|
|
438
438
|
validatePlanPath,
|
|
439
439
|
writeToStdout
|
|
440
|
-
} from "./chunk-
|
|
440
|
+
} from "./chunk-M6NSK26M.js";
|
|
441
441
|
import "./chunk-664ZODQF.js";
|
|
442
442
|
import "./chunk-IUUIT4SU.js";
|
|
443
443
|
import "./chunk-TUDYL3X4.js";
|
|
@@ -33964,7 +33964,7 @@ ${queuedText}` : queuedText;
|
|
|
33964
33964
|
if (keyMatchers["app.showErrorDetails" /* SHOW_ERROR_DETAILS */](key)) {
|
|
33965
33965
|
if (settings.merged.general.devtools) {
|
|
33966
33966
|
void (async () => {
|
|
33967
|
-
const { toggleDevToolsPanel } = await import("./devtoolsService-
|
|
33967
|
+
const { toggleDevToolsPanel } = await import("./devtoolsService-J7SM2WQQ.js");
|
|
33968
33968
|
await toggleDevToolsPanel(
|
|
33969
33969
|
config,
|
|
33970
33970
|
showErrorDetails,
|