@google/gemini-cli 0.1.9-nightly.250709.c8cf954e → 0.1.9-rc.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/README.md +3 -17
- package/dist/google-gemini-cli-0.1.9-rc.0.tgz +0 -0
- package/dist/index.js +0 -0
- package/dist/package.json +10 -9
- package/dist/src/config/auth.js +5 -6
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +1 -0
- package/dist/src/config/config.js +44 -64
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +0 -2
- package/dist/src/config/extension.js +6 -34
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/sandboxConfig.d.ts +1 -1
- package/dist/src/config/sandboxConfig.js +1 -1
- package/dist/src/config/sandboxConfig.js.map +1 -1
- package/dist/src/config/settings.d.ts +0 -2
- package/dist/src/config/settings.js +1 -63
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.js +20 -26
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/{ui/commands/types.js → gemini.test.d.ts} +0 -1
- package/dist/src/gemini.test.js +122 -0
- package/dist/src/gemini.test.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/ui/App.js +7 -11
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/App.test.d.ts +6 -0
- package/dist/src/ui/App.test.js +299 -0
- package/dist/src/ui/App.test.js.map +1 -0
- package/dist/src/ui/components/AuthDialog.js +8 -36
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.test.d.ts +6 -0
- package/dist/src/ui/components/AuthDialog.test.js +69 -0
- package/dist/src/ui/components/AuthDialog.test.js.map +1 -0
- package/dist/src/ui/components/Help.d.ts +1 -1
- package/dist/src/ui/components/Help.js +2 -3
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js +81 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
- package/dist/src/ui/components/InputPrompt.d.ts +1 -2
- package/dist/src/ui/components/InputPrompt.js +157 -106
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.d.ts +6 -0
- package/dist/src/ui/components/InputPrompt.test.js +154 -0
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -0
- package/dist/src/ui/components/LoadingIndicator.js +1 -2
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
- package/dist/src/ui/components/LoadingIndicator.test.js +141 -0
- package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
- package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/ModelStatsDisplay.test.js +217 -0
- package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -0
- package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/SessionSummaryDisplay.test.js +60 -0
- package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -0
- package/dist/src/ui/components/StatsDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/StatsDisplay.test.js +275 -0
- package/dist/src/ui/components/StatsDisplay.test.js.map +1 -0
- package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/ToolStatsDisplay.test.js +160 -0
- package/dist/src/ui/components/ToolStatsDisplay.test.js.map +1 -0
- package/dist/src/ui/components/messages/CompressionMessage.js +1 -1
- package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
- package/dist/src/ui/components/messages/DiffRenderer.test.js +239 -0
- package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +37 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolMessage.test.js +116 -0
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
- package/dist/src/ui/components/shared/MaxSizedBox.js +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
- package/dist/src/ui/components/shared/MaxSizedBox.test.js +134 -0
- package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
- package/dist/src/ui/components/shared/text-buffer.d.ts +16 -72
- package/dist/src/ui/components/shared/text-buffer.js +676 -564
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +1 -1
- package/dist/src/ui/contexts/SessionContext.test.d.ts +6 -0
- package/dist/src/ui/contexts/SessionContext.test.js +96 -0
- package/dist/src/ui/contexts/SessionContext.test.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.js +7 -5
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +10 -6
- package/dist/src/ui/hooks/slashCommandProcessor.js +124 -235
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useCompletion.d.ts +2 -2
- package/dist/src/ui/hooks/useCompletion.js +56 -106
- package/dist/src/ui/hooks/useCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -2
- package/dist/src/ui/hooks/useGeminiStream.js +18 -12
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.d.ts +6 -0
- package/dist/src/ui/hooks/useGeminiStream.test.js +775 -0
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -0
- package/dist/src/ui/themes/ansi.js +1 -1
- package/dist/src/ui/themes/ansi.js.map +1 -1
- package/dist/src/ui/types.d.ts +0 -10
- package/dist/src/ui/utils/MarkdownDisplay.js +80 -1
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +6 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js +176 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
- package/dist/src/ui/utils/TableRenderer.js +32 -50
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/utils/sandbox-macos-permissive-proxied.sb +1 -1
- package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -9
- package/dist/google-gemini-cli-0.1.9.tgz +0 -0
- package/dist/src/services/CommandService.d.ts +0 -13
- package/dist/src/services/CommandService.js +0 -30
- package/dist/src/services/CommandService.js.map +0 -1
- package/dist/src/ui/commands/clearCommand.d.ts +0 -7
- package/dist/src/ui/commands/clearCommand.js +0 -15
- package/dist/src/ui/commands/clearCommand.js.map +0 -1
- package/dist/src/ui/commands/helpCommand.d.ts +0 -7
- package/dist/src/ui/commands/helpCommand.js +0 -18
- package/dist/src/ui/commands/helpCommand.js.map +0 -1
- package/dist/src/ui/commands/memoryCommand.d.ts +0 -7
- package/dist/src/ui/commands/memoryCommand.js +0 -81
- package/dist/src/ui/commands/memoryCommand.js.map +0 -1
- package/dist/src/ui/commands/types.d.ts +0 -63
- package/dist/src/ui/commands/types.js.map +0 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +0 -16
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +0 -104
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +0 -1
- package/dist/src/utils/userStartupWarnings.d.ts +0 -6
- package/dist/src/utils/userStartupWarnings.js +0 -33
- package/dist/src/utils/userStartupWarnings.js.map +0 -1
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ With the Gemini CLI you can:
|
|
|
19
19
|
|
|
20
20
|
## Quickstart
|
|
21
21
|
|
|
22
|
-
1. **Prerequisites:** Ensure you have [Node.js version
|
|
22
|
+
1. **Prerequisites:** Ensure you have [Node.js version 18](https://nodejs.org/en/download) or higher installed.
|
|
23
23
|
2. **Run the CLI:** Execute the following command in your terminal:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
@@ -40,7 +40,7 @@ You are now ready to use the Gemini CLI!
|
|
|
40
40
|
|
|
41
41
|
### Use a Gemini API key:
|
|
42
42
|
|
|
43
|
-
The Gemini API provides a free tier with [100
|
|
43
|
+
The Gemini API provides a free tier with [100 requets per day](https://ai.google.dev/gemini-api/docs/rate-limits#free-tier) using Gemini 2.5 Pro, control over which model you use, and access to higher rate limits (with a paid plan):
|
|
44
44
|
|
|
45
45
|
1. Generate a key from [Google AI Studio](https://aistudio.google.com/apikey).
|
|
46
46
|
2. Set it as an environment variable in your terminal. Replace `YOUR_API_KEY` with your generated key.
|
|
@@ -51,20 +51,6 @@ The Gemini API provides a free tier with [100 requests per day](https://ai.googl
|
|
|
51
51
|
|
|
52
52
|
3. (Optionally) Upgrade your Gemini API project to a paid plan on the API key page (will automatically unlock [Tier 1 rate limits](https://ai.google.dev/gemini-api/docs/rate-limits#tier-1))
|
|
53
53
|
|
|
54
|
-
### Use a Vertex AI API key:
|
|
55
|
-
|
|
56
|
-
The Vertex AI provides [free tier](https://cloud.google.com/vertex-ai/generative-ai/docs/start/express-mode/overview) using express mode for Gemini 2.5 Pro, control over which model you use, and access to higher rate limits with a billing account:
|
|
57
|
-
|
|
58
|
-
1. Generate a key from [Google Cloud](https://cloud.google.com/vertex-ai/generative-ai/docs/start/api-keys).
|
|
59
|
-
2. Set it as an environment variable in your terminal. Replace `YOUR_API_KEY` with your generated key and set GOOGLE_GENAI_USE_VERTEXAI to true
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
export GOOGLE_API_KEY="YOUR_API_KEY"
|
|
63
|
-
export GOOGLE_GENAI_USE_VERTEXAI=true
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
3. (Optionally) Add a billing account on your project to get access to [higher usage limits](https://cloud.google.com/vertex-ai/generative-ai/docs/quotas)
|
|
67
|
-
|
|
68
54
|
For other authentication methods, including Google Workspace accounts, see the [authentication](./docs/cli/authentication.md) guide.
|
|
69
55
|
|
|
70
56
|
## Examples
|
|
@@ -144,7 +130,7 @@ Use MCP servers to integrate your local system tools with your enterprise collab
|
|
|
144
130
|
```
|
|
145
131
|
|
|
146
132
|
```text
|
|
147
|
-
>
|
|
133
|
+
> Organise my PDF invoices by month of expenditure.
|
|
148
134
|
```
|
|
149
135
|
|
|
150
136
|
### Uninstall
|
|
Binary file
|
package/dist/index.js
CHANGED
|
File without changes
|
package/dist/package.json
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@google/gemini-cli",
|
|
3
|
-
"version": "0.1.9-
|
|
3
|
+
"version": "0.1.9-rc.0",
|
|
4
4
|
"description": "Gemini CLI",
|
|
5
|
-
"repository":
|
|
6
|
-
"type": "git",
|
|
7
|
-
"url": "git+https://github.com/google-gemini/gemini-cli.git"
|
|
8
|
-
},
|
|
5
|
+
"repository": "google-gemini/gemini-cli",
|
|
9
6
|
"type": "module",
|
|
10
7
|
"main": "dist/index.js",
|
|
11
8
|
"bin": {
|
|
@@ -19,16 +16,20 @@
|
|
|
19
16
|
"format": "prettier --write .",
|
|
20
17
|
"test": "vitest run",
|
|
21
18
|
"test:ci": "vitest run --coverage",
|
|
22
|
-
"typecheck": "tsc --noEmit"
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"prerelease:version": "node ../../scripts/bind_package_version.js",
|
|
21
|
+
"prerelease:deps": "node ../../scripts/bind_package_dependencies.js",
|
|
22
|
+
"prepack": "npm run build",
|
|
23
|
+
"prepublishOnly": "node ../../scripts/prepublish.js"
|
|
23
24
|
},
|
|
24
25
|
"files": [
|
|
25
26
|
"dist"
|
|
26
27
|
],
|
|
27
28
|
"config": {
|
|
28
|
-
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.9-
|
|
29
|
+
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.9-rc.0"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@google/gemini-cli-core": "
|
|
32
|
+
"@google/gemini-cli-core": "0.1.9-rc.0",
|
|
32
33
|
"@types/update-notifier": "^6.0.8",
|
|
33
34
|
"command-exists": "^1.2.9",
|
|
34
35
|
"diff": "^7.0.0",
|
|
@@ -75,6 +76,6 @@
|
|
|
75
76
|
"vitest": "^3.1.1"
|
|
76
77
|
},
|
|
77
78
|
"engines": {
|
|
78
|
-
"node": ">=
|
|
79
|
+
"node": ">=18"
|
|
79
80
|
}
|
|
80
81
|
}
|
package/dist/src/config/auth.js
CHANGED
|
@@ -4,16 +4,15 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { AuthType } from '@google/gemini-cli-core';
|
|
7
|
-
import { loadEnvironment } from './
|
|
7
|
+
import { loadEnvironment } from './config.js';
|
|
8
8
|
export const validateAuthMethod = (authMethod) => {
|
|
9
9
|
loadEnvironment();
|
|
10
|
-
if (authMethod === AuthType.LOGIN_WITH_GOOGLE
|
|
11
|
-
authMethod === AuthType.CLOUD_SHELL) {
|
|
10
|
+
if (authMethod === AuthType.LOGIN_WITH_GOOGLE) {
|
|
12
11
|
return null;
|
|
13
12
|
}
|
|
14
13
|
if (authMethod === AuthType.USE_GEMINI) {
|
|
15
14
|
if (!process.env.GEMINI_API_KEY) {
|
|
16
|
-
return 'GEMINI_API_KEY environment variable not found. Add that to your
|
|
15
|
+
return 'GEMINI_API_KEY environment variable not found. Add that to your .env and try again, no reload needed!';
|
|
17
16
|
}
|
|
18
17
|
return null;
|
|
19
18
|
}
|
|
@@ -21,10 +20,10 @@ export const validateAuthMethod = (authMethod) => {
|
|
|
21
20
|
const hasVertexProjectLocationConfig = !!process.env.GOOGLE_CLOUD_PROJECT && !!process.env.GOOGLE_CLOUD_LOCATION;
|
|
22
21
|
const hasGoogleApiKey = !!process.env.GOOGLE_API_KEY;
|
|
23
22
|
if (!hasVertexProjectLocationConfig && !hasGoogleApiKey) {
|
|
24
|
-
return ('
|
|
23
|
+
return ('Must specify GOOGLE_GENAI_USE_VERTEXAI=true and either:\n' +
|
|
25
24
|
'• GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION environment variables.\n' +
|
|
26
25
|
'• GOOGLE_API_KEY environment variable (if using express mode).\n' +
|
|
27
|
-
'Update your
|
|
26
|
+
'Update your .env and try again, no reload needed!');
|
|
28
27
|
}
|
|
29
28
|
return null;
|
|
30
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/config/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/config/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAkB,EAAiB,EAAE;IACtE,eAAe,EAAE,CAAC;IAClB,IAAI,UAAU,KAAK,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO,uGAAuG,CAAC;QACjH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,8BAA8B,GAClC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAC5E,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACrD,IAAI,CAAC,8BAA8B,IAAI,CAAC,eAAe,EAAE,CAAC;YACxD,OAAO,CACL,2DAA2D;gBAC3D,2EAA2E;gBAC3E,kEAAkE;gBAClE,mDAAmD,CACpD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,+BAA+B,CAAC;AACzC,CAAC,CAAC"}
|
|
@@ -11,3 +11,4 @@ export declare function loadHierarchicalGeminiMemory(currentWorkingDirectory: st
|
|
|
11
11
|
fileCount: number;
|
|
12
12
|
}>;
|
|
13
13
|
export declare function loadCliConfig(settings: Settings, extensions: Extension[], sessionId: string): Promise<Config>;
|
|
14
|
+
export declare function loadEnvironment(): void;
|
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
import yargs from 'yargs/yargs';
|
|
7
7
|
import { hideBin } from 'yargs/helpers';
|
|
8
8
|
import process from 'node:process';
|
|
9
|
-
import { Config, loadServerHierarchicalMemory, setGeminiMdFilename as setServerGeminiMdFilename, getCurrentGeminiMdFilename, ApprovalMode, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, FileDiscoveryService, } from '@google/gemini-cli-core';
|
|
10
|
-
import { filterActiveExtensions } from './extension.js';
|
|
9
|
+
import { Config, loadServerHierarchicalMemory, setGeminiMdFilename as setServerGeminiMdFilename, getCurrentGeminiMdFilename, ApprovalMode, GEMINI_CONFIG_DIR as GEMINI_DIR, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, FileDiscoveryService, } from '@google/gemini-cli-core';
|
|
11
10
|
import { getCliVersion } from '../utils/version.js';
|
|
11
|
+
import * as dotenv from 'dotenv';
|
|
12
|
+
import * as fs from 'node:fs';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
import * as os from 'node:os';
|
|
12
15
|
import { loadSandboxConfig } from './sandboxConfig.js';
|
|
13
16
|
// Simple console logger for now - replace with actual logger if available
|
|
14
17
|
const logger = {
|
|
@@ -21,8 +24,6 @@ const logger = {
|
|
|
21
24
|
};
|
|
22
25
|
async function parseArguments() {
|
|
23
26
|
const argv = await yargs(hideBin(process.argv))
|
|
24
|
-
.scriptName('gemini')
|
|
25
|
-
.usage('$0 [options]', 'Gemini CLI - Launch an interactive CLI, use -p/--prompt for non-interactive mode')
|
|
26
27
|
.option('model', {
|
|
27
28
|
alias: 'm',
|
|
28
29
|
type: 'string',
|
|
@@ -48,30 +49,18 @@ async function parseArguments() {
|
|
|
48
49
|
type: 'boolean',
|
|
49
50
|
description: 'Run in debug mode?',
|
|
50
51
|
default: false,
|
|
51
|
-
})
|
|
52
|
-
.option('all-files', {
|
|
53
|
-
alias: ['a'],
|
|
54
|
-
type: 'boolean',
|
|
55
|
-
description: 'Include ALL files in context?',
|
|
56
|
-
default: false,
|
|
57
52
|
})
|
|
58
53
|
.option('all_files', {
|
|
54
|
+
alias: 'a',
|
|
59
55
|
type: 'boolean',
|
|
60
56
|
description: 'Include ALL files in context?',
|
|
61
57
|
default: false,
|
|
62
|
-
})
|
|
63
|
-
.deprecateOption('all_files', 'Use --all-files instead. We will be removing --all_files in the coming weeks.')
|
|
64
|
-
.option('show-memory-usage', {
|
|
65
|
-
type: 'boolean',
|
|
66
|
-
description: 'Show memory usage in status bar',
|
|
67
|
-
default: false,
|
|
68
58
|
})
|
|
69
59
|
.option('show_memory_usage', {
|
|
70
60
|
type: 'boolean',
|
|
71
61
|
description: 'Show memory usage in status bar',
|
|
72
62
|
default: false,
|
|
73
63
|
})
|
|
74
|
-
.deprecateOption('show_memory_usage', 'Use --show-memory-usage instead. We will be removing --show_memory_usage in the coming weeks.')
|
|
75
64
|
.option('yolo', {
|
|
76
65
|
alias: 'y',
|
|
77
66
|
type: 'boolean',
|
|
@@ -100,21 +89,6 @@ async function parseArguments() {
|
|
|
100
89
|
type: 'boolean',
|
|
101
90
|
description: 'Enables checkpointing of file edits',
|
|
102
91
|
default: false,
|
|
103
|
-
})
|
|
104
|
-
.option('allowed-mcp-server-names', {
|
|
105
|
-
type: 'string',
|
|
106
|
-
description: 'Allowed MCP server names',
|
|
107
|
-
})
|
|
108
|
-
.option('extensions', {
|
|
109
|
-
alias: 'e',
|
|
110
|
-
type: 'array',
|
|
111
|
-
string: true,
|
|
112
|
-
description: 'A list of extensions to use. If not provided, all extensions are used.',
|
|
113
|
-
})
|
|
114
|
-
.option('list-extensions', {
|
|
115
|
-
alias: 'l',
|
|
116
|
-
type: 'boolean',
|
|
117
|
-
description: 'List all available extensions and exit.',
|
|
118
92
|
})
|
|
119
93
|
.version(await getCliVersion()) // This will enable the --version flag based on package.json
|
|
120
94
|
.alias('v', 'version')
|
|
@@ -135,10 +109,9 @@ export async function loadHierarchicalGeminiMemory(currentWorkingDirectory, debu
|
|
|
135
109
|
return loadServerHierarchicalMemory(currentWorkingDirectory, debugMode, fileService, extensionContextFilePaths);
|
|
136
110
|
}
|
|
137
111
|
export async function loadCliConfig(settings, extensions, sessionId) {
|
|
112
|
+
loadEnvironment();
|
|
138
113
|
const argv = await parseArguments();
|
|
139
|
-
const debugMode = argv.debug ||
|
|
140
|
-
[process.env.DEBUG, process.env.DEBUG_MODE].some((v) => v === 'true' || v === '1');
|
|
141
|
-
const activeExtensions = filterActiveExtensions(extensions, argv.extensions || []);
|
|
114
|
+
const debugMode = argv.debug || false;
|
|
142
115
|
// Set the context filename in the server's memoryTool module BEFORE loading memory
|
|
143
116
|
// TODO(b/343434939): This is a bit of a hack. The contextFileName should ideally be passed
|
|
144
117
|
// directly to the Config constructor in core, and have core handle setGeminiMdFilename.
|
|
@@ -150,21 +123,11 @@ export async function loadCliConfig(settings, extensions, sessionId) {
|
|
|
150
123
|
// Reset to default if not provided in settings.
|
|
151
124
|
setServerGeminiMdFilename(getCurrentGeminiMdFilename());
|
|
152
125
|
}
|
|
153
|
-
const extensionContextFilePaths =
|
|
126
|
+
const extensionContextFilePaths = extensions.flatMap((e) => e.contextFiles);
|
|
154
127
|
const fileService = new FileDiscoveryService(process.cwd());
|
|
155
128
|
// Call the (now wrapper) loadHierarchicalGeminiMemory which calls the server's version
|
|
156
129
|
const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(process.cwd(), debugMode, fileService, extensionContextFilePaths);
|
|
157
|
-
|
|
158
|
-
const excludeTools = mergeExcludeTools(settings, activeExtensions);
|
|
159
|
-
if (argv.allowedMcpServerNames) {
|
|
160
|
-
const allowedNames = new Set(argv.allowedMcpServerNames.split(',').filter(Boolean));
|
|
161
|
-
if (allowedNames.size > 0) {
|
|
162
|
-
mcpServers = Object.fromEntries(Object.entries(mcpServers).filter(([key]) => allowedNames.has(key)));
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
mcpServers = {};
|
|
166
|
-
}
|
|
167
|
-
}
|
|
130
|
+
const mcpServers = mergeMcpServers(settings, extensions);
|
|
168
131
|
const sandboxConfig = await loadSandboxConfig(settings, argv);
|
|
169
132
|
return new Config({
|
|
170
133
|
sessionId,
|
|
@@ -173,9 +136,9 @@ export async function loadCliConfig(settings, extensions, sessionId) {
|
|
|
173
136
|
targetDir: process.cwd(),
|
|
174
137
|
debugMode,
|
|
175
138
|
question: argv.prompt || '',
|
|
176
|
-
fullContext: argv.
|
|
139
|
+
fullContext: argv.all_files || false,
|
|
177
140
|
coreTools: settings.coreTools || undefined,
|
|
178
|
-
excludeTools,
|
|
141
|
+
excludeTools: settings.excludeTools || undefined,
|
|
179
142
|
toolDiscoveryCommand: settings.toolDiscoveryCommand,
|
|
180
143
|
toolCallCommand: settings.toolCallCommand,
|
|
181
144
|
mcpServerCommand: settings.mcpServerCommand,
|
|
@@ -183,10 +146,7 @@ export async function loadCliConfig(settings, extensions, sessionId) {
|
|
|
183
146
|
userMemory: memoryContent,
|
|
184
147
|
geminiMdFileCount: fileCount,
|
|
185
148
|
approvalMode: argv.yolo || false ? ApprovalMode.YOLO : ApprovalMode.DEFAULT,
|
|
186
|
-
showMemoryUsage: argv.showMemoryUsage ||
|
|
187
|
-
argv.show_memory_usage ||
|
|
188
|
-
settings.showMemoryUsage ||
|
|
189
|
-
false,
|
|
149
|
+
showMemoryUsage: argv.show_memory_usage || settings.showMemoryUsage || false,
|
|
190
150
|
accessibility: settings.accessibility,
|
|
191
151
|
telemetry: {
|
|
192
152
|
enabled: argv.telemetry ?? settings.telemetry?.enabled,
|
|
@@ -213,11 +173,6 @@ export async function loadCliConfig(settings, extensions, sessionId) {
|
|
|
213
173
|
bugCommand: settings.bugCommand,
|
|
214
174
|
model: argv.model,
|
|
215
175
|
extensionContextFilePaths,
|
|
216
|
-
listExtensions: argv.listExtensions || false,
|
|
217
|
-
activeExtensions: activeExtensions.map((e) => ({
|
|
218
|
-
name: e.config.name,
|
|
219
|
-
version: e.config.version,
|
|
220
|
-
})),
|
|
221
176
|
});
|
|
222
177
|
}
|
|
223
178
|
function mergeMcpServers(settings, extensions) {
|
|
@@ -233,13 +188,38 @@ function mergeMcpServers(settings, extensions) {
|
|
|
233
188
|
}
|
|
234
189
|
return mcpServers;
|
|
235
190
|
}
|
|
236
|
-
function
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
191
|
+
function findEnvFile(startDir) {
|
|
192
|
+
let currentDir = path.resolve(startDir);
|
|
193
|
+
while (true) {
|
|
194
|
+
// prefer gemini-specific .env under GEMINI_DIR
|
|
195
|
+
const geminiEnvPath = path.join(currentDir, GEMINI_DIR, '.env');
|
|
196
|
+
if (fs.existsSync(geminiEnvPath)) {
|
|
197
|
+
return geminiEnvPath;
|
|
198
|
+
}
|
|
199
|
+
const envPath = path.join(currentDir, '.env');
|
|
200
|
+
if (fs.existsSync(envPath)) {
|
|
201
|
+
return envPath;
|
|
241
202
|
}
|
|
203
|
+
const parentDir = path.dirname(currentDir);
|
|
204
|
+
if (parentDir === currentDir || !parentDir) {
|
|
205
|
+
// check .env under home as fallback, again preferring gemini-specific .env
|
|
206
|
+
const homeGeminiEnvPath = path.join(os.homedir(), GEMINI_DIR, '.env');
|
|
207
|
+
if (fs.existsSync(homeGeminiEnvPath)) {
|
|
208
|
+
return homeGeminiEnvPath;
|
|
209
|
+
}
|
|
210
|
+
const homeEnvPath = path.join(os.homedir(), '.env');
|
|
211
|
+
if (fs.existsSync(homeEnvPath)) {
|
|
212
|
+
return homeEnvPath;
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
currentDir = parentDir;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
export function loadEnvironment() {
|
|
220
|
+
const envFilePath = findEnvFile(process.cwd());
|
|
221
|
+
if (envFilePath) {
|
|
222
|
+
dotenv.config({ path: envFilePath, quiet: true });
|
|
242
223
|
}
|
|
243
|
-
return [...allExcludeTools];
|
|
244
224
|
}
|
|
245
225
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EACL,MAAM,EACN,4BAA4B,EAC5B,mBAAmB,IAAI,yBAAyB,EAChD,0BAA0B,EAC1B,YAAY,EACZ,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,5 @@ export interface ExtensionConfig {
|
|
|
15
15
|
version: string;
|
|
16
16
|
mcpServers?: Record<string, MCPServerConfig>;
|
|
17
17
|
contextFileName?: string | string[];
|
|
18
|
-
excludeTools?: string[];
|
|
19
18
|
}
|
|
20
19
|
export declare function loadExtensions(workspaceDir: string): Extension[];
|
|
21
|
-
export declare function filterActiveExtensions(extensions: Extension[], enabledExtensionNames: string[]): Extension[];
|
|
@@ -13,14 +13,16 @@ export function loadExtensions(workspaceDir) {
|
|
|
13
13
|
...loadExtensionsFromDir(workspaceDir),
|
|
14
14
|
...loadExtensionsFromDir(os.homedir()),
|
|
15
15
|
];
|
|
16
|
-
const uniqueExtensions =
|
|
16
|
+
const uniqueExtensions = [];
|
|
17
|
+
const seenNames = new Set();
|
|
17
18
|
for (const extension of allExtensions) {
|
|
18
|
-
if (!
|
|
19
|
+
if (!seenNames.has(extension.config.name)) {
|
|
19
20
|
console.log(`Loading extension: ${extension.config.name} (version: ${extension.config.version})`);
|
|
20
|
-
uniqueExtensions.
|
|
21
|
+
uniqueExtensions.push(extension);
|
|
22
|
+
seenNames.add(extension.config.name);
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
|
-
return
|
|
25
|
+
return uniqueExtensions;
|
|
24
26
|
}
|
|
25
27
|
function loadExtensionsFromDir(dir) {
|
|
26
28
|
const extensionsDir = path.join(dir, EXTENSIONS_DIRECTORY_NAME);
|
|
@@ -76,34 +78,4 @@ function getContextFileNames(config) {
|
|
|
76
78
|
}
|
|
77
79
|
return config.contextFileName;
|
|
78
80
|
}
|
|
79
|
-
export function filterActiveExtensions(extensions, enabledExtensionNames) {
|
|
80
|
-
if (enabledExtensionNames.length === 0) {
|
|
81
|
-
return extensions;
|
|
82
|
-
}
|
|
83
|
-
const lowerCaseEnabledExtensions = new Set(enabledExtensionNames.map((e) => e.trim().toLowerCase()));
|
|
84
|
-
if (lowerCaseEnabledExtensions.size === 1 &&
|
|
85
|
-
lowerCaseEnabledExtensions.has('none')) {
|
|
86
|
-
if (extensions.length > 0) {
|
|
87
|
-
console.log('All extensions are disabled.');
|
|
88
|
-
}
|
|
89
|
-
return [];
|
|
90
|
-
}
|
|
91
|
-
const activeExtensions = [];
|
|
92
|
-
const notFoundNames = new Set(lowerCaseEnabledExtensions);
|
|
93
|
-
for (const extension of extensions) {
|
|
94
|
-
const lowerCaseName = extension.config.name.toLowerCase();
|
|
95
|
-
if (lowerCaseEnabledExtensions.has(lowerCaseName)) {
|
|
96
|
-
console.log(`Activated extension: ${extension.config.name} (version: ${extension.config.version})`);
|
|
97
|
-
activeExtensions.push(extension);
|
|
98
|
-
notFoundNames.delete(lowerCaseName);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
console.log(`Disabled extension: ${extension.config.name}`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
for (const requestedName of notFoundNames) {
|
|
105
|
-
console.log(`Extension not found: ${requestedName}`);
|
|
106
|
-
}
|
|
107
|
-
return activeExtensions;
|
|
108
|
-
}
|
|
109
81
|
//# sourceMappingURL=extension.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/config/extension.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/config/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { SandboxConfig } from '@google/gemini-cli-core';
|
|
|
7
7
|
import { Settings } from './settings.js';
|
|
8
8
|
interface SandboxCliArgs {
|
|
9
9
|
sandbox?: boolean | string;
|
|
10
|
-
|
|
10
|
+
'sandbox-image'?: string;
|
|
11
11
|
}
|
|
12
12
|
export declare function loadSandboxConfig(settings: Settings, argv: SandboxCliArgs): Promise<SandboxConfig | undefined>;
|
|
13
13
|
export {};
|
|
@@ -67,7 +67,7 @@ export async function loadSandboxConfig(settings, argv) {
|
|
|
67
67
|
const sandboxOption = argv.sandbox ?? settings.sandbox;
|
|
68
68
|
const command = getSandboxCommand(sandboxOption);
|
|
69
69
|
const packageJson = await getPackageJson();
|
|
70
|
-
const image = argv
|
|
70
|
+
const image = argv['sandbox-image'] ??
|
|
71
71
|
process.env.GEMINI_SANDBOX_IMAGE ??
|
|
72
72
|
packageJson?.config?.sandboxImageUri;
|
|
73
73
|
return command && image ? { command, image } : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxConfig.js","sourceRoot":"","sources":["../../../src/config/sandboxConfig.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sandboxConfig.js","sourceRoot":"","sources":["../../../src/config/sandboxConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,8 +62,6 @@ export declare class LoadedSettings {
|
|
|
62
62
|
forScope(scope: SettingScope): SettingsFile;
|
|
63
63
|
setValue(scope: SettingScope, key: keyof Settings, value: string | Record<string, MCPServerConfig> | undefined): void;
|
|
64
64
|
}
|
|
65
|
-
export declare function setUpCloudShellEnvironment(envFilePath: string | null): void;
|
|
66
|
-
export declare function loadEnvironment(): void;
|
|
67
65
|
/**
|
|
68
66
|
* Loads settings from user and workspace directories.
|
|
69
67
|
* Project settings override user settings.
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
import * as fs from 'fs';
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import { homedir } from 'os';
|
|
9
|
-
import
|
|
10
|
-
import { GEMINI_CONFIG_DIR as GEMINI_DIR, getErrorMessage, } from '@google/gemini-cli-core';
|
|
9
|
+
import { getErrorMessage, } from '@google/gemini-cli-core';
|
|
11
10
|
import stripJsonComments from 'strip-json-comments';
|
|
12
11
|
import { DefaultLight } from '../ui/themes/default-light.js';
|
|
13
12
|
import { DefaultDark } from '../ui/themes/default.js';
|
|
@@ -91,72 +90,11 @@ function resolveEnvVarsInObject(obj) {
|
|
|
91
90
|
}
|
|
92
91
|
return obj;
|
|
93
92
|
}
|
|
94
|
-
function findEnvFile(startDir) {
|
|
95
|
-
let currentDir = path.resolve(startDir);
|
|
96
|
-
while (true) {
|
|
97
|
-
// prefer gemini-specific .env under GEMINI_DIR
|
|
98
|
-
const geminiEnvPath = path.join(currentDir, GEMINI_DIR, '.env');
|
|
99
|
-
if (fs.existsSync(geminiEnvPath)) {
|
|
100
|
-
return geminiEnvPath;
|
|
101
|
-
}
|
|
102
|
-
const envPath = path.join(currentDir, '.env');
|
|
103
|
-
if (fs.existsSync(envPath)) {
|
|
104
|
-
return envPath;
|
|
105
|
-
}
|
|
106
|
-
const parentDir = path.dirname(currentDir);
|
|
107
|
-
if (parentDir === currentDir || !parentDir) {
|
|
108
|
-
// check .env under home as fallback, again preferring gemini-specific .env
|
|
109
|
-
const homeGeminiEnvPath = path.join(homedir(), GEMINI_DIR, '.env');
|
|
110
|
-
if (fs.existsSync(homeGeminiEnvPath)) {
|
|
111
|
-
return homeGeminiEnvPath;
|
|
112
|
-
}
|
|
113
|
-
const homeEnvPath = path.join(homedir(), '.env');
|
|
114
|
-
if (fs.existsSync(homeEnvPath)) {
|
|
115
|
-
return homeEnvPath;
|
|
116
|
-
}
|
|
117
|
-
return null;
|
|
118
|
-
}
|
|
119
|
-
currentDir = parentDir;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
export function setUpCloudShellEnvironment(envFilePath) {
|
|
123
|
-
// Special handling for GOOGLE_CLOUD_PROJECT in Cloud Shell:
|
|
124
|
-
// Because GOOGLE_CLOUD_PROJECT in Cloud Shell tracks the project
|
|
125
|
-
// set by the user using "gcloud config set project" we do not want to
|
|
126
|
-
// use its value. So, unless the user overrides GOOGLE_CLOUD_PROJECT in
|
|
127
|
-
// one of the .env files, we set the Cloud Shell-specific default here.
|
|
128
|
-
if (envFilePath && fs.existsSync(envFilePath)) {
|
|
129
|
-
const envFileContent = fs.readFileSync(envFilePath);
|
|
130
|
-
const parsedEnv = dotenv.parse(envFileContent);
|
|
131
|
-
if (parsedEnv.GOOGLE_CLOUD_PROJECT) {
|
|
132
|
-
// .env file takes precedence in Cloud Shell
|
|
133
|
-
process.env.GOOGLE_CLOUD_PROJECT = parsedEnv.GOOGLE_CLOUD_PROJECT;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
// If not in .env, set to default and override global
|
|
137
|
-
process.env.GOOGLE_CLOUD_PROJECT = 'cloudshell-gca';
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
// If no .env file, set to default and override global
|
|
142
|
-
process.env.GOOGLE_CLOUD_PROJECT = 'cloudshell-gca';
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
export function loadEnvironment() {
|
|
146
|
-
const envFilePath = findEnvFile(process.cwd());
|
|
147
|
-
if (process.env.CLOUD_SHELL === 'true') {
|
|
148
|
-
setUpCloudShellEnvironment(envFilePath);
|
|
149
|
-
}
|
|
150
|
-
if (envFilePath) {
|
|
151
|
-
dotenv.config({ path: envFilePath, quiet: true });
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
93
|
/**
|
|
155
94
|
* Loads settings from user and workspace directories.
|
|
156
95
|
* Project settings override user settings.
|
|
157
96
|
*/
|
|
158
97
|
export function loadSettings(workspaceDir) {
|
|
159
|
-
loadEnvironment();
|
|
160
98
|
let userSettings = {};
|
|
161
99
|
let workspaceSettings = {};
|
|
162
100
|
const settingsErrors = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/config/settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/config/settings.ts"],"names":[],"mappings":"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"}
|