refactor: rename gemini-code to gemini-cli (#822)

This commit is contained in:
cperry-goog 2025-06-07 14:27:22 -07:00 committed by GitHub
parent d6cf4d5b0b
commit 18d6a11c04
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
46 changed files with 87 additions and 87 deletions

View File

@ -24,7 +24,7 @@ steps:
- name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder'
entrypoint: 'npm'
args: ['publish', '--tag=head', '--dry-run', '--workspace=@gemini-code/cli']
args: ['publish', '--tag=head', '--dry-run', '--workspace=@gemini-cli/cli']
options:
defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET

2
.gitignore vendored
View File

@ -2,7 +2,7 @@
.env
.env~
# gemini-code settings
# gemini-cli settings
.gemini/
!gemini/config.yaml

2
.npmrc
View File

@ -1 +1 @@
@gemini-code:registry=https://us-west1-npm.pkg.dev/gemini-code-dev/gemini-code/
@gemini-cli:registry=https://us-west1-npm.pkg.dev/gemini-code-dev/gemini-code/

2
.vscode/launch.json vendored
View File

@ -12,7 +12,7 @@
"type": "node",
// fix source mapping when debugging in sandbox using global installation
// note this does not interfere when remoteRoot is also ${workspaceFolder}/packages
"remoteRoot": "/usr/local/share/npm-global/lib/node_modules/@gemini-code",
"remoteRoot": "/usr/local/share/npm-global/lib/node_modules/@gemini-cli",
"localRoot": "${workspaceFolder}/packages"
},
{

View File

@ -34,11 +34,11 @@ ENV PATH=$PATH:/usr/local/share/npm-global/bin
USER node
# install gemini-cli and clean up
COPY packages/cli/dist/gemini-code-cli-*.tgz /usr/local/share/npm-global/gemini-code-cli.tgz
COPY packages/core/dist/gemini-code-core-*.tgz /usr/local/share/npm-global/gemini-code-core.tgz
RUN npm install -g /usr/local/share/npm-global/gemini-code-cli.tgz /usr/local/share/npm-global/gemini-code-core.tgz \
COPY packages/cli/dist/gemini-cli-cli-*.tgz /usr/local/share/npm-global/gemini-cli-cli.tgz
COPY packages/core/dist/gemini-cli-core-*.tgz /usr/local/share/npm-global/gemini-cli-core.tgz
RUN npm install -g /usr/local/share/npm-global/gemini-cli-cli.tgz /usr/local/share/npm-global/gemini-cli-core.tgz \
&& npm cache clean --force \
&& rm -f /usr/local/share/npm-global/gemini-code-{cli,core}.tgz
&& rm -f /usr/local/share/npm-global/gemini-cli-{cli,core}.tgz
# default entrypoint when none specified
CMD ["gemini"]

10
package-lock.json generated
View File

@ -874,11 +874,11 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@gemini-code/cli": {
"node_modules/@gemini-cli/cli": {
"resolved": "packages/cli",
"link": true
},
"node_modules/@gemini-code/core": {
"node_modules/@gemini-cli/core": {
"resolved": "packages/core",
"link": true
},
@ -10320,10 +10320,10 @@
}
},
"packages/cli": {
"name": "@gemini-code/cli",
"name": "@gemini-cli/cli",
"version": "0.1.0",
"dependencies": {
"@gemini-code/core": "0.1.0",
"@gemini-cli/core": "0.1.0",
"diff": "^7.0.0",
"dotenv": "^16.4.7",
"highlight.js": "^11.11.1",
@ -10388,7 +10388,7 @@
}
},
"packages/core": {
"name": "@gemini-code/core",
"name": "@gemini-cli/core",
"version": "0.1.0",
"dependencies": {
"@google/genai": "^1.0.1",

View File

@ -1,5 +1,5 @@
{
"name": "@gemini-code/cli",
"name": "@gemini-cli/cli",
"version": "0.1.0",
"description": "Gemini CLI",
"type": "module",
@ -19,7 +19,7 @@
"typecheck": "tsc --noEmit",
"prerelease:version": "node ../../scripts/bind_package_version.js",
"prerelease:deps": "node ../../scripts/bind_package_dependencies.js",
"prepublishOnly": "npm publish --workspace=@gemini-code/core",
"prepublishOnly": "npm publish --workspace=@gemini-cli/core",
"prepack": "npm run build"
},
"files": [
@ -29,7 +29,7 @@
"sandboxImageUri": "gemini-cli-sandbox"
},
"dependencies": {
"@gemini-code/core": "0.1.0",
"@gemini-cli/core": "0.1.0",
"diff": "^7.0.0",
"dotenv": "^16.4.7",
"highlight.js": "^11.11.1",

View File

@ -8,11 +8,11 @@ import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
import * as fs from 'fs';
import * as path from 'path';
import { tmpdir } from 'os';
import { Config, ConfigParameters } from '@gemini-code/core';
import { Config, ConfigParameters } from '@gemini-cli/core';
// Mock file discovery service and tool registry
vi.mock('@gemini-code/core', async () => {
const actual = await vi.importActual('@gemini-code/core');
vi.mock('@gemini-cli/core', async () => {
const actual = await vi.importActual('@gemini-cli/core');
return {
...actual,
FileDiscoveryService: vi.fn().mockImplementation(() => ({

View File

@ -10,7 +10,7 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import * as os from 'os';
import { loadCliConfig } from './config.js';
import { Settings } from './settings.js';
import * as ServerConfig from '@gemini-code/core';
import * as ServerConfig from '@gemini-cli/core';
const MOCK_HOME_DIR = '/mock/home/user';
@ -28,9 +28,9 @@ vi.mock('read-package-up', () => ({
),
}));
vi.mock('@gemini-code/core', async () => {
vi.mock('@gemini-cli/core', async () => {
const actualServer =
await vi.importActual<typeof ServerConfig>('@gemini-code/core');
await vi.importActual<typeof ServerConfig>('@gemini-cli/core');
return {
...actualServer,
loadEnvironment: vi.fn(),

View File

@ -14,7 +14,7 @@ import {
setGeminiMdFilename as setServerGeminiMdFilename,
getCurrentGeminiMdFilename,
ApprovalMode,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import { Settings } from './settings.js';
import { getEffectiveModel } from '../utils/modelCheck.js';
import { getCliVersion } from '../utils/version.js';

View File

@ -7,7 +7,7 @@
import * as fs from 'fs';
import * as path from 'path';
import { homedir } from 'os';
import { MCPServerConfig, getErrorMessage } from '@gemini-code/core';
import { MCPServerConfig, getErrorMessage } from '@gemini-cli/core';
import stripJsonComments from 'strip-json-comments';
import { DefaultLight } from '../ui/themes/default-light.js';
import { DefaultDark } from '../ui/themes/default.js';

View File

@ -28,7 +28,7 @@ import {
ShellTool,
WebFetchTool,
WebSearchTool,
} from '@gemini-code/core';
} from '@gemini-cli/core';
export async function main() {
// warn about deprecated environment variables

View File

@ -7,14 +7,14 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { runNonInteractive } from './nonInteractiveCli.js';
import { Config, GeminiClient, ToolRegistry } from '@gemini-code/core';
import { Config, GeminiClient, ToolRegistry } from '@gemini-cli/core';
import { GenerateContentResponse, Part, FunctionCall } from '@google/genai';
// Mock dependencies
vi.mock('@gemini-code/core', async () => {
vi.mock('@gemini-cli/core', async () => {
const actualCore =
await vi.importActual<typeof import('@gemini-code/core')>(
'@gemini-code/core',
await vi.importActual<typeof import('@gemini-cli/core')>(
'@gemini-cli/core',
);
return {
...actualCore,
@ -108,7 +108,7 @@ describe('runNonInteractive', () => {
};
const { executeToolCall: mockCoreExecuteToolCall } = await import(
'@gemini-code/core'
'@gemini-cli/core'
);
vi.mocked(mockCoreExecuteToolCall).mockResolvedValue({
callId: 'fc1',
@ -160,7 +160,7 @@ describe('runNonInteractive', () => {
};
const { executeToolCall: mockCoreExecuteToolCall } = await import(
'@gemini-code/core'
'@gemini-cli/core'
);
vi.mocked(mockCoreExecuteToolCall).mockResolvedValue({
callId: 'fcError',

View File

@ -9,7 +9,7 @@ import {
ToolCallRequestInfo,
executeToolCall,
ToolRegistry,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import {
Content,
Part,

View File

@ -13,7 +13,7 @@ import {
ApprovalMode,
ToolRegistry,
AccessibilitySettings,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import { LoadedSettings, SettingsFile, Settings } from '../config/settings.js';
import process from 'node:process';
@ -65,9 +65,9 @@ interface MockServerConfig {
getAccessibility: Mock<() => AccessibilitySettings>;
}
// Mock @gemini-code/core and its Config class
vi.mock('@gemini-code/core', async (importOriginal) => {
const actualCore = await importOriginal<typeof import('@gemini-code/core')>();
// Mock @gemini-cli/core and its Config class
vi.mock('@gemini-cli/core', async (importOriginal) => {
const actualCore = await importOriginal<typeof import('@gemini-cli/core')>();
const ConfigClassMock = vi
.fn()
.mockImplementation((optionsPassedToConstructor) => {

View File

@ -45,7 +45,7 @@ import {
type Config,
getCurrentGeminiMdFilename,
ApprovalMode,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import { useLogger } from './hooks/useLogger.js';
import { StreamingContext } from './contexts/StreamingContext.js';
import { useGitBranchName } from './hooks/useGitBranchName.js';

View File

@ -7,7 +7,7 @@
import React from 'react';
import { Box, Text } from 'ink';
import { Colors } from '../colors.js';
import { ApprovalMode } from '@gemini-code/core';
import { ApprovalMode } from '@gemini-cli/core';
interface AutoAcceptIndicatorProps {
approvalMode: ApprovalMode;

View File

@ -7,7 +7,7 @@
import React from 'react';
import { Text } from 'ink';
import { Colors } from '../colors.js';
import { type MCPServerConfig } from '@gemini-code/core';
import { type MCPServerConfig } from '@gemini-cli/core';
interface ContextSummaryDisplayProps {
geminiMdFileCount: number;

View File

@ -7,7 +7,7 @@
import React from 'react';
import { Box, Text } from 'ink';
import { Colors } from '../colors.js';
import { shortenPath, tildeifyPath } from '@gemini-code/core';
import { shortenPath, tildeifyPath } from '@gemini-cli/core';
import { ConsoleSummaryDisplay } from './ConsoleSummaryDisplay.js';
import process from 'node:process';
import { MemoryUsageDisplay } from './MemoryUsageDisplay.js';

View File

@ -17,7 +17,7 @@ import process from 'node:process';
import { useCompletion } from '../hooks/useCompletion.js';
import { isAtCommand, isSlashCommand } from '../utils/commandUtils.js';
import { SlashCommand } from '../hooks/slashCommandProcessor.js';
import { Config } from '@gemini-code/core';
import { Config } from '@gemini-cli/core';
export interface InputPromptProps {
onSubmit: (value: string) => void;

View File

@ -7,7 +7,7 @@
import React from 'react';
import { Box, Text } from 'ink';
import { Colors } from '../colors.js';
import { type Config } from '@gemini-code/core';
import { type Config } from '@gemini-cli/core';
interface TipsProps {
config: Config;

View File

@ -13,7 +13,7 @@ import {
ToolConfirmationOutcome,
ToolExecuteConfirmationDetails,
ToolMcpConfirmationDetails,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import {
RadioButtonSelect,
RadioSelectItem,

View File

@ -7,7 +7,7 @@
import { describe, it, expect, vi, beforeEach, afterEach, Mock } from 'vitest';
import type { Mocked } from 'vitest';
import { handleAtCommand } from './atCommandProcessor.js';
import { Config, FileDiscoveryService } from '@gemini-code/core';
import { Config, FileDiscoveryService } from '@gemini-cli/core';
import { ToolCallStatus } from '../types.js';
import { UseHistoryManagerReturn } from './useHistoryManager.js';
import * as fsPromises from 'fs/promises';
@ -52,8 +52,8 @@ vi.mock('fs/promises', async () => {
};
});
vi.mock('@gemini-code/core', async () => {
const actual = await vi.importActual('@gemini-code/core');
vi.mock('@gemini-cli/core', async () => {
const actual = await vi.importActual('@gemini-cli/core');
return {
...actual,
FileDiscoveryService: vi.fn(),

View File

@ -12,7 +12,7 @@ import {
getErrorMessage,
isNodeError,
unescapePath,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import {
HistoryItem,
IndividualToolCallDisplay,

View File

@ -7,7 +7,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { act, renderHook } from '@testing-library/react';
import { useShellCommandProcessor } from './shellCommandProcessor.js';
import { type Config } from '@gemini-code/core';
import { type Config } from '@gemini-cli/core';
import { type PartListUnion } from '@google/genai';
import { existsSync, readFileSync, unlinkSync } from 'fs';
import type * as FsMod from 'fs';

View File

@ -8,7 +8,7 @@ import { spawn } from 'child_process';
import type { HistoryItemWithoutId } from '../types.js';
import type { exec as ExecType } from 'child_process';
import { useCallback } from 'react';
import { Config } from '@gemini-code/core';
import { Config } from '@gemini-cli/core';
import { type PartListUnion } from '@google/genai';
import { UseHistoryManagerReturn } from './useHistoryManager.js';
import crypto from 'crypto';

View File

@ -60,7 +60,7 @@ import {
type Config,
MCPServerStatus,
getMCPServerStatus,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import * as ShowMemoryCommandModule from './useShowMemoryCommand.js';
import { GIT_COMMIT_INFO } from '../../generated/git-commit.js';
@ -451,7 +451,7 @@ Add any other context about the problem here.
describe('/mcp command', () => {
beforeEach(() => {
// Mock the core module with getMCPServerStatus
vi.mock('@gemini-code/core', async (importOriginal) => {
vi.mock('@gemini-cli/core', async (importOriginal) => {
const actual = await importOriginal();
return {
...actual,

View File

@ -9,7 +9,7 @@ import { type PartListUnion } from '@google/genai';
import open from 'open';
import process from 'node:process';
import { UseHistoryManagerReturn } from './useHistoryManager.js';
import { Config, MCPServerStatus, getMCPServerStatus } from '@gemini-code/core';
import { Config, MCPServerStatus, getMCPServerStatus } from '@gemini-cli/core';
import { Message, MessageType, HistoryItemWithoutId } from '../types.js';
import { createShowMemoryAction } from './useShowMemoryCommand.js';
import { GIT_COMMIT_INFO } from '../../generated/git-commit.js';
@ -114,7 +114,7 @@ export const useSlashCommandProcessor = (
{
name: 'help',
altName: '?',
description: 'for help on gemini-code',
description: 'for help on gemini-cli',
action: (_mainCommand, _subCommand, _args) => {
onDebugMessage('Opening help.');
setShowHelp(true);

View File

@ -20,14 +20,14 @@ import {
Config,
Config as ActualConfigType,
ApprovalMode,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import { useInput, type Key as InkKey } from 'ink';
vi.mock('ink');
vi.mock('@gemini-code/core', async () => {
vi.mock('@gemini-cli/core', async () => {
const actualServerModule = (await vi.importActual(
'@gemini-code/core',
'@gemini-cli/core',
)) as Record<string, unknown>;
return {
...actualServerModule,

View File

@ -6,7 +6,7 @@
import { useState, useEffect } from 'react';
import { useInput } from 'ink';
import { ApprovalMode, type Config } from '@gemini-code/core';
import { ApprovalMode, type Config } from '@gemini-cli/core';
export interface UseAutoAcceptIndicatorArgs {
config: Config;

View File

@ -9,12 +9,12 @@ import type { Mocked } from 'vitest';
import { renderHook, act } from '@testing-library/react';
import { useCompletion } from './useCompletion.js';
import * as fs from 'fs/promises';
import { FileDiscoveryService } from '@gemini-code/core';
import { FileDiscoveryService } from '@gemini-cli/core';
// Mock dependencies
vi.mock('fs/promises');
vi.mock('@gemini-code/core', async () => {
const actual = await vi.importActual('@gemini-code/core');
vi.mock('@gemini-cli/core', async () => {
const actual = await vi.importActual('@gemini-cli/core');
return {
...actual,
FileDiscoveryService: vi.fn(),

View File

@ -13,7 +13,7 @@ import {
unescapePath,
getErrorMessage,
Config,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import {
MAX_SUGGESTIONS_TO_SHOW,
Suggestion,

View File

@ -15,7 +15,7 @@ import {
TrackedExecutingToolCall,
TrackedCancelledToolCall,
} from './useReactToolScheduler.js';
import { Config } from '@gemini-code/core';
import { Config } from '@gemini-cli/core';
import { Part, PartListUnion } from '@google/genai';
import { UseHistoryManagerReturn } from './useHistoryManager.js';
@ -33,7 +33,7 @@ const MockedGeminiClientClass = vi.hoisted(() =>
}),
);
vi.mock('@gemini-code/core', async (importOriginal) => {
vi.mock('@gemini-cli/core', async (importOriginal) => {
const actualCoreModule = (await importOriginal()) as any;
return {
...(actualCoreModule || {}),

View File

@ -18,7 +18,7 @@ import {
MessageSenderType,
ToolCallRequestInfo,
logUserPrompt,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import { type PartListUnion } from '@google/genai';
import {
StreamingState,

View File

@ -5,7 +5,7 @@
*/
import { useState, useEffect } from 'react';
import { Logger } from '@gemini-code/core';
import { Logger } from '@gemini-cli/core';
/**
* Hook to manage the logger instance.

View File

@ -21,7 +21,7 @@ import {
ToolCall,
Status as CoreStatus,
logToolCall,
} from '@gemini-code/core';
} from '@gemini-cli/core';
import { useCallback, useState, useMemo } from 'react';
import {
HistoryItemToolGroup,

View File

@ -5,7 +5,7 @@
*/
import { Message, MessageType } from '../types.js';
import { Config } from '@gemini-code/core';
import { Config } from '@gemini-cli/core';
export function createShowMemoryAction(
config: Config | null,

View File

@ -24,7 +24,7 @@ import {
ToolCall, // Import from core
Status as ToolCallStatusType,
ApprovalMode, // Import from core
} from '@gemini-code/core';
} from '@gemini-cli/core';
import {
HistoryItemWithoutId,
ToolCallStatus,
@ -32,8 +32,8 @@ import {
} from '../types.js';
// Mocks
vi.mock('@gemini-code/core', async () => {
const actual = await vi.importActual('@gemini-code/core');
vi.mock('@gemini-cli/core', async () => {
const actual = await vi.importActual('@gemini-cli/core');
return {
...actual,
ToolRegistry: vi.fn(),

View File

@ -7,7 +7,7 @@
import {
ToolCallConfirmationDetails,
ToolResultDisplay,
} from '@gemini-code/core';
} from '@gemini-cli/core';
// Only defining the state enum needed by the UI
export enum StreamingState {

View File

@ -7,9 +7,9 @@
import fs from 'fs/promises';
import os from 'os';
import { join as pathJoin } from 'node:path';
import { getErrorMessage } from '@gemini-code/core';
import { getErrorMessage } from '@gemini-cli/core';
const warningsFilePath = pathJoin(os.tmpdir(), 'gemini-code-cli-warnings.txt');
const warningsFilePath = pathJoin(os.tmpdir(), 'gemini-cli-warnings.txt');
export async function getStartupWarnings(): Promise<string[]> {
try {

View File

@ -2,5 +2,5 @@ Nested package template. Either fill this out with "backend" functionality or cr
To use this package from another dependent package in this monorepo:
1. Add `"@gemini-code/core"` to the dependent package's `package.json`
1. Import a dependency by calling `import { } from "@gemini-code/core"`
1. Add `"@gemini-cli/core"` to the dependent package's `package.json`
1. Import a dependency by calling `import { } from "@gemini-cli/core"`

View File

@ -1,5 +1,5 @@
{
"name": "@gemini-code/core",
"name": "@gemini-cli/core",
"version": "0.1.0",
"description": "Gemini CLI Server",
"type": "module",

View File

@ -6,7 +6,7 @@
import { randomUUID } from 'crypto';
export const SERVICE_NAME = 'gemini-code';
export const SERVICE_NAME = 'gemini-cli';
export const sessionId = randomUUID();
export const EVENT_USER_PROMPT = 'gemini_code.user_prompt';

View File

@ -60,15 +60,15 @@ fi
# prepare global installation files for prod builds
# pack cli
echo "packing @gemini-code/cli ..."
rm -f packages/cli/dist/gemini-code-cli-*.tgz
npm pack -w @gemini-code/cli --pack-destination ./packages/cli/dist &>/dev/null
echo "packing @gemini-cli/cli ..."
rm -f packages/cli/dist/gemini-cli-cli-*.tgz
npm pack -w @gemini-cli/cli --pack-destination ./packages/cli/dist &>/dev/null
# pack core
echo "packing @gemini-code/core ..."
rm -f packages/core/dist/gemini-code-core-*.tgz
npm pack -w @gemini-code/core --pack-destination ./packages/core/dist &>/dev/null
echo "packing @gemini-cli/core ..."
rm -f packages/core/dist/gemini-cli-core-*.tgz
npm pack -w @gemini-cli/core --pack-destination ./packages/core/dist &>/dev/null
# give node user (used during installation, see Dockerfile) access to these files
chmod 755 packages/*/dist/gemini-code-*.tgz
chmod 755 packages/*/dist/gemini-cli-*.tgz
# redirect build output to /dev/null unless VERBOSE is set
BUILD_STDOUT="/dev/null"

View File

@ -17,7 +17,7 @@ const filesToWatch = [
path.join(cliPackageDir, 'tsconfig.json'),
]; // Specific files within the CLI package
const buildDir = path.join(cliPackageDir, 'dist'); // Build output directory within the CLI package
const warningsFilePath = path.join(os.tmpdir(), 'gemini-code-cli-warnings.txt'); // Temp file for warnings
const warningsFilePath = path.join(os.tmpdir(), 'gemini-cli-warnings.txt'); // Temp file for warnings
// ---------------------
function getMtime(filePath) {

View File

@ -41,7 +41,7 @@ while getopts "i" opt; do
done
shift $((OPTIND - 1))
IMAGE=gemini-code-sandbox
IMAGE=gemini-cli-sandbox
CMD=$(scripts/sandbox_command.sh)
# list all containers running on sandbox image
@ -61,7 +61,7 @@ elif [[ "${1:-}" =~ ^[0-9]+$ ]]; then
else
# exit if no sandbox is running
if [ ${#sandboxes[@]} -eq 0 ]; then
echo "No sandboxes found. Are you running gemini-code with sandboxing enabled?"
echo "No sandboxes found. Are you running gemini-cli with sandboxing enabled?"
exit 1
fi
# exit if multiple sandboxes are running