Download packages/cli/src/config/extension.ts from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 2.02 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/cli/src/config/extension.ts
- Command line
-
hf download hf://SaylorTwift/gemini-cli/packages/cli/src/config/extension.ts
-
curl -L -o extension.ts https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/cli/src/config/extension.ts
2.02 kB
| /** | |
| * @license | |
| * Copyright 2025 Google LLC | |
| * SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| import type { | |
| MCPServerConfig, | |
| ExtensionInstallMetadata, | |
| CustomTheme, | |
| } from '@google/gemini-cli-core'; | |
| import * as fs from 'node:fs'; | |
| import * as path from 'node:path'; | |
| import { INSTALL_METADATA_FILENAME } from './extensions/variables.js'; | |
| import type { ExtensionSetting } from './extensions/extensionSettings.js'; | |
| /** | |
| * Extension definition as written to disk in gemini-extension.json files. | |
| * This should *not* be referenced outside of the logic for reading files. | |
| * If information is required for manipulating extensions (load, unload, update) | |
| * outside of the loading process that data needs to be stored on the | |
| * GeminiCLIExtension class defined in Core. | |
| */ | |
| export interface ExtensionConfig { | |
| name: string; | |
| version: string; | |
| mcpServers?: Record<string, MCPServerConfig>; | |
| contextFileName?: string | string[]; | |
| excludeTools?: string[]; | |
| settings?: ExtensionSetting[]; | |
| /** | |
| * Custom themes contributed by this extension. | |
| * These themes will be registered when the extension is activated. | |
| */ | |
| themes?: CustomTheme[]; | |
| /** | |
| * Planning features configuration contributed by this extension. | |
| */ | |
| plan?: { | |
| /** | |
| * The directory where planning artifacts are stored. | |
| */ | |
| directory?: string; | |
| }; | |
| /** | |
| * Used to migrate an extension to a new repository source. | |
| */ | |
| migratedTo?: string; | |
| } | |
| export interface ExtensionUpdateInfo { | |
| name: string; | |
| originalVersion: string; | |
| updatedVersion: string; | |
| } | |
| export function loadInstallMetadata( | |
| extensionDir: string, | |
| ): ExtensionInstallMetadata | undefined { | |
| const metadataFilePath = path.join(extensionDir, INSTALL_METADATA_FILENAME); | |
| try { | |
| const configContent = fs.readFileSync(metadataFilePath, 'utf-8'); | |
| // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion | |
| const metadata = JSON.parse(configContent) as ExtensionInstallMetadata; | |
| return metadata; | |
| } catch { | |
| return undefined; | |
| } | |
| } | |