Initial commit of Gemini Code CLI
This commit introduces the initial codebase for the Gemini Code CLI, a command-line interface designed to facilitate interaction with the Gemini API for software engineering tasks.
The code was migrated from a previous git repository as a single squashed commit.
Core Features & Components:
* **Gemini Integration:** Leverages the `@google/genai` SDK to interact with the Gemini models, supporting chat history, streaming responses, and function calling (tools).
* **Terminal UI:** Built with Ink (React for CLIs) providing an interactive chat interface within the terminal, including input prompts, message display, loading indicators, and tool interaction elements.
* **Tooling Framework:** Implements a robust tool system allowing Gemini to interact with the local environment. Includes tools for:
* File system listing (`ls`)
* File reading (`read-file`)
* Content searching (`grep`)
* File globbing (`glob`)
* File editing (`edit`)
* File writing (`write-file`)
* Executing bash commands (`terminal`)
* **State Management:** Handles the streaming state of Gemini responses and manages the conversation history.
* **Configuration:** Parses command-line arguments (`yargs`) and loads environment variables (`dotenv`) for setup.
* **Project Structure:** Organized into `core`, `ui`, `tools`, `config`, and `utils` directories using TypeScript. Includes basic build (`tsc`) and start scripts.
This initial version establishes the foundation for a powerful CLI tool enabling developers to use Gemini for coding assistance directly in their terminal environment.
---
Created by yours truly: __Gemini Code__
2025-04-15 21:41:08 -07:00
|
|
|
{
|
2025-06-25 05:41:11 -07:00
|
|
|
"name": "@google/gemini-cli",
|
2025-09-18 00:42:21 +00:00
|
|
|
"version": "0.7.0-nightly.20250918.2722473a",
|
2025-06-25 21:09:40 -07:00
|
|
|
"engines": {
|
2025-07-15 12:36:54 -07:00
|
|
|
"node": ">=20.0.0"
|
2025-06-25 21:09:40 -07:00
|
|
|
},
|
2025-04-17 17:57:39 -04:00
|
|
|
"type": "module",
|
Initial commit of Gemini Code CLI
This commit introduces the initial codebase for the Gemini Code CLI, a command-line interface designed to facilitate interaction with the Gemini API for software engineering tasks.
The code was migrated from a previous git repository as a single squashed commit.
Core Features & Components:
* **Gemini Integration:** Leverages the `@google/genai` SDK to interact with the Gemini models, supporting chat history, streaming responses, and function calling (tools).
* **Terminal UI:** Built with Ink (React for CLIs) providing an interactive chat interface within the terminal, including input prompts, message display, loading indicators, and tool interaction elements.
* **Tooling Framework:** Implements a robust tool system allowing Gemini to interact with the local environment. Includes tools for:
* File system listing (`ls`)
* File reading (`read-file`)
* Content searching (`grep`)
* File globbing (`glob`)
* File editing (`edit`)
* File writing (`write-file`)
* Executing bash commands (`terminal`)
* **State Management:** Handles the streaming state of Gemini responses and manages the conversation history.
* **Configuration:** Parses command-line arguments (`yargs`) and loads environment variables (`dotenv`) for setup.
* **Project Structure:** Organized into `core`, `ui`, `tools`, `config`, and `utils` directories using TypeScript. Includes basic build (`tsc`) and start scripts.
This initial version establishes the foundation for a powerful CLI tool enabling developers to use Gemini for coding assistance directly in their terminal environment.
---
Created by yours truly: __Gemini Code__
2025-04-15 21:41:08 -07:00
|
|
|
"workspaces": [
|
|
|
|
|
"packages/*"
|
|
|
|
|
],
|
2025-07-03 22:57:01 -05:00
|
|
|
"private": "true",
|
|
|
|
|
"repository": {
|
|
|
|
|
"type": "git",
|
|
|
|
|
"url": "git+https://github.com/google-gemini/gemini-cli.git"
|
|
|
|
|
},
|
2025-06-25 06:47:27 -07:00
|
|
|
"config": {
|
2025-09-18 00:42:21 +00:00
|
|
|
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.7.0-nightly.20250918.2722473a"
|
2025-06-25 06:47:27 -07:00
|
|
|
},
|
Initial commit of Gemini Code CLI
This commit introduces the initial codebase for the Gemini Code CLI, a command-line interface designed to facilitate interaction with the Gemini API for software engineering tasks.
The code was migrated from a previous git repository as a single squashed commit.
Core Features & Components:
* **Gemini Integration:** Leverages the `@google/genai` SDK to interact with the Gemini models, supporting chat history, streaming responses, and function calling (tools).
* **Terminal UI:** Built with Ink (React for CLIs) providing an interactive chat interface within the terminal, including input prompts, message display, loading indicators, and tool interaction elements.
* **Tooling Framework:** Implements a robust tool system allowing Gemini to interact with the local environment. Includes tools for:
* File system listing (`ls`)
* File reading (`read-file`)
* Content searching (`grep`)
* File globbing (`glob`)
* File editing (`edit`)
* File writing (`write-file`)
* Executing bash commands (`terminal`)
* **State Management:** Handles the streaming state of Gemini responses and manages the conversation history.
* **Configuration:** Parses command-line arguments (`yargs`) and loads environment variables (`dotenv`) for setup.
* **Project Structure:** Organized into `core`, `ui`, `tools`, `config`, and `utils` directories using TypeScript. Includes basic build (`tsc`) and start scripts.
This initial version establishes the foundation for a powerful CLI tool enabling developers to use Gemini for coding assistance directly in their terminal environment.
---
Created by yours truly: __Gemini Code__
2025-04-15 21:41:08 -07:00
|
|
|
"scripts": {
|
2025-09-17 15:37:13 -07:00
|
|
|
"start": "cross-env node scripts/start.js",
|
2025-08-26 20:49:25 +00:00
|
|
|
"start:a2a-server": "CODER_AGENT_PORT=41242 npm run start --workspace @google/gemini-cli-a2a-server",
|
2025-07-07 16:36:51 -07:00
|
|
|
"debug": "cross-env DEBUG=1 node --inspect-brk scripts/start.js",
|
2025-07-12 23:46:49 -07:00
|
|
|
"auth:npm": "npx google-artifactregistry-auth",
|
|
|
|
|
"auth:docker": "gcloud auth configure-docker us-west1-docker.pkg.dev",
|
|
|
|
|
"auth": "npm run auth:npm && npm run auth:docker",
|
2025-06-09 12:19:42 -07:00
|
|
|
"generate": "node scripts/generate-git-commit-info.js",
|
|
|
|
|
"build": "node scripts/build.js",
|
2025-08-12 14:53:11 -04:00
|
|
|
"build-and-start": "npm run build && npm run start",
|
2025-07-24 18:40:50 +00:00
|
|
|
"build:vscode": "node scripts/build_vscode_companion.js",
|
|
|
|
|
"build:all": "npm run build && npm run build:sandbox && npm run build:vscode",
|
2025-07-07 16:36:51 -07:00
|
|
|
"build:packages": "npm run build --workspaces",
|
|
|
|
|
"build:sandbox": "node scripts/build_sandbox.js --skip-npm-install-build",
|
|
|
|
|
"bundle": "npm run generate && node esbuild.config.js && node scripts/copy_bundle_assets.js",
|
2025-09-18 16:29:40 -07:00
|
|
|
"test": "npm run test --workspaces --if-present --parallel",
|
|
|
|
|
"test:ci": "npm run test:ci --workspaces --if-present --parallel && npm run test:scripts",
|
2025-07-07 16:36:51 -07:00
|
|
|
"test:scripts": "vitest run --config ./scripts/tests/vitest.config.ts",
|
2025-08-12 15:57:27 -07:00
|
|
|
"test:e2e": "cross-env VERBOSE=true KEEP_OUTPUT=true npm run test:integration:sandbox:none",
|
2025-06-16 08:27:29 -07:00
|
|
|
"test:integration:all": "npm run test:integration:sandbox:none && npm run test:integration:sandbox:docker && npm run test:integration:sandbox:podman",
|
2025-09-05 16:54:46 -07:00
|
|
|
"test:integration:sandbox:none": "cross-env GEMINI_SANDBOX=false vitest run --root ./integration-tests",
|
|
|
|
|
"test:integration:sandbox:docker": "cross-env GEMINI_SANDBOX=docker npm run build:sandbox && cross-env GEMINI_SANDBOX=docker vitest run --root ./integration-tests",
|
|
|
|
|
"test:integration:sandbox:podman": "cross-env GEMINI_SANDBOX=podman vitest run --root ./integration-tests",
|
2025-06-16 08:27:29 -07:00
|
|
|
"lint": "eslint . --ext .ts,.tsx && eslint integration-tests",
|
2025-07-07 16:36:51 -07:00
|
|
|
"lint:fix": "eslint . --fix && eslint integration-tests --fix",
|
2025-06-24 21:18:51 -07:00
|
|
|
"lint:ci": "eslint . --ext .ts,.tsx --max-warnings 0 && eslint integration-tests --max-warnings 0",
|
2025-09-12 10:22:10 -07:00
|
|
|
"lint:all": "node scripts/lint.js",
|
2025-08-11 15:09:12 -04:00
|
|
|
"format": "prettier --experimental-cli --write .",
|
2025-07-07 16:36:51 -07:00
|
|
|
"typecheck": "npm run typecheck --workspaces --if-present",
|
2025-06-24 21:18:51 -07:00
|
|
|
"preflight": "npm run clean && npm ci && npm run format && npm run lint:ci && npm run build && npm run typecheck && npm run test:ci",
|
2025-09-19 22:07:26 -04:00
|
|
|
"prepare": "husky && npm run bundle",
|
2025-07-03 22:57:01 -05:00
|
|
|
"prepare:package": "node scripts/prepare-package.js",
|
|
|
|
|
"release:version": "node scripts/version.js",
|
2025-07-07 16:36:51 -07:00
|
|
|
"telemetry": "node scripts/telemetry.js",
|
2025-08-30 00:43:56 +08:00
|
|
|
"check:lockfile": "node scripts/check-lockfile.js",
|
2025-09-19 22:07:26 -04:00
|
|
|
"clean": "node scripts/clean.js",
|
|
|
|
|
"pre-commit": "lint-staged"
|
2025-05-23 12:27:48 -07:00
|
|
|
},
|
|
|
|
|
"bin": {
|
|
|
|
|
"gemini": "bundle/gemini.js"
|
|
|
|
|
},
|
|
|
|
|
"files": [
|
|
|
|
|
"bundle/",
|
2025-05-23 15:22:13 -07:00
|
|
|
"README.md",
|
2025-09-19 11:22:01 -07:00
|
|
|
"LICENSE"
|
2025-05-23 12:27:48 -07:00
|
|
|
],
|
2025-04-17 17:57:39 -04:00
|
|
|
"devDependencies": {
|
2025-07-31 22:06:50 +05:30
|
|
|
"@types/marked": "^5.0.2",
|
2025-07-09 05:44:40 +00:00
|
|
|
"@types/mime-types": "^3.0.1",
|
2025-06-05 06:48:03 -07:00
|
|
|
"@types/minimatch": "^5.1.2",
|
2025-07-22 00:34:55 -04:00
|
|
|
"@types/mock-fs": "^4.13.4",
|
2025-07-06 05:58:51 +08:00
|
|
|
"@types/shell-quote": "^1.7.5",
|
2025-05-21 17:03:22 -07:00
|
|
|
"@vitest/coverage-v8": "^3.1.1",
|
2025-08-25 16:21:47 +02:00
|
|
|
"@vitest/eslint-plugin": "^1.3.4",
|
2025-06-09 12:19:42 -07:00
|
|
|
"cross-env": "^7.0.3",
|
2025-06-12 06:21:50 +00:00
|
|
|
"esbuild": "^0.25.0",
|
2025-04-17 17:57:39 -04:00
|
|
|
"eslint": "^9.24.0",
|
|
|
|
|
"eslint-config-prettier": "^10.1.2",
|
|
|
|
|
"eslint-plugin-import": "^2.31.0",
|
2025-04-20 17:16:25 -07:00
|
|
|
"eslint-plugin-license-header": "^0.8.0",
|
2025-04-17 17:57:39 -04:00
|
|
|
"eslint-plugin-react": "^7.37.5",
|
|
|
|
|
"eslint-plugin-react-hooks": "^5.2.0",
|
2025-06-16 08:27:29 -07:00
|
|
|
"glob": "^10.4.5",
|
2025-04-17 17:57:39 -04:00
|
|
|
"globals": "^16.0.0",
|
2025-09-18 10:47:11 -04:00
|
|
|
"google-artifactregistry-auth": "^3.4.0",
|
2025-09-19 22:07:26 -04:00
|
|
|
"husky": "^9.1.7",
|
2025-06-05 06:48:03 -07:00
|
|
|
"json": "^11.0.0",
|
2025-09-19 22:07:26 -04:00
|
|
|
"lint-staged": "^16.1.6",
|
2025-09-20 11:38:03 -07:00
|
|
|
"memfs": "^4.42.0",
|
2025-08-12 14:31:59 -04:00
|
|
|
"mnemonist": "^0.40.3",
|
2025-07-22 00:34:55 -04:00
|
|
|
"mock-fs": "^5.5.0",
|
2025-08-12 14:31:59 -04:00
|
|
|
"msw": "^2.10.4",
|
2025-09-18 16:29:40 -07:00
|
|
|
"npm-run-all": "^4.1.5",
|
2025-04-17 17:57:39 -04:00
|
|
|
"prettier": "^3.5.3",
|
2025-04-24 01:16:15 +00:00
|
|
|
"react-devtools-core": "^4.28.5",
|
2025-08-12 09:19:09 -07:00
|
|
|
"tsx": "^4.20.3",
|
2025-04-24 20:02:49 +00:00
|
|
|
"typescript-eslint": "^8.30.1",
|
2025-07-05 13:58:59 -07:00
|
|
|
"vitest": "^3.2.4",
|
2025-08-12 14:31:59 -04:00
|
|
|
"yargs": "^17.7.2"
|
|
|
|
|
},
|
|
|
|
|
"dependencies": {
|
2025-09-04 23:00:27 +02:00
|
|
|
"simple-git": "^3.28.0"
|
2025-08-19 16:03:51 -07:00
|
|
|
},
|
|
|
|
|
"optionalDependencies": {
|
|
|
|
|
"@lydell/node-pty": "1.1.0",
|
|
|
|
|
"@lydell/node-pty-darwin-arm64": "1.1.0",
|
|
|
|
|
"@lydell/node-pty-darwin-x64": "1.1.0",
|
|
|
|
|
"@lydell/node-pty-linux-x64": "1.1.0",
|
|
|
|
|
"@lydell/node-pty-win32-arm64": "1.1.0",
|
|
|
|
|
"@lydell/node-pty-win32-x64": "1.1.0",
|
|
|
|
|
"node-pty": "^1.0.0"
|
2025-09-19 14:17:34 -07:00
|
|
|
},
|
|
|
|
|
"overrides": {
|
|
|
|
|
"wrap-ansi": "9.0.2"
|
2025-09-19 22:07:26 -04:00
|
|
|
},
|
|
|
|
|
"lint-staged": {
|
|
|
|
|
"*.{js,jsx,ts,tsx}": [
|
|
|
|
|
"prettier --write",
|
|
|
|
|
"eslint --fix --max-warnings 0"
|
|
|
|
|
],
|
|
|
|
|
"*.{json,md}": [
|
|
|
|
|
"prettier --write"
|
|
|
|
|
]
|
2025-07-05 13:58:59 -07:00
|
|
|
}
|
Initial commit of Gemini Code CLI
This commit introduces the initial codebase for the Gemini Code CLI, a command-line interface designed to facilitate interaction with the Gemini API for software engineering tasks.
The code was migrated from a previous git repository as a single squashed commit.
Core Features & Components:
* **Gemini Integration:** Leverages the `@google/genai` SDK to interact with the Gemini models, supporting chat history, streaming responses, and function calling (tools).
* **Terminal UI:** Built with Ink (React for CLIs) providing an interactive chat interface within the terminal, including input prompts, message display, loading indicators, and tool interaction elements.
* **Tooling Framework:** Implements a robust tool system allowing Gemini to interact with the local environment. Includes tools for:
* File system listing (`ls`)
* File reading (`read-file`)
* Content searching (`grep`)
* File globbing (`glob`)
* File editing (`edit`)
* File writing (`write-file`)
* Executing bash commands (`terminal`)
* **State Management:** Handles the streaming state of Gemini responses and manages the conversation history.
* **Configuration:** Parses command-line arguments (`yargs`) and loads environment variables (`dotenv`) for setup.
* **Project Structure:** Organized into `core`, `ui`, `tools`, `config`, and `utils` directories using TypeScript. Includes basic build (`tsc`) and start scripts.
This initial version establishes the foundation for a powerful CLI tool enabling developers to use Gemini for coding assistance directly in their terminal environment.
---
Created by yours truly: __Gemini Code__
2025-04-15 21:41:08 -07:00
|
|
|
}
|