Add ExtensionLoader interface, use that on Config object (#12116)

This commit is contained in:
Jacob MacDonald
2025-10-28 09:04:30 -07:00
committed by GitHub
parent 25f27509c0
commit 1b302deeff
35 changed files with 619 additions and 505 deletions
+9 -2
View File
@@ -17,7 +17,10 @@ import type {
ServerGeminiToolCallRequestEvent,
Config,
} from '@google/gemini-cli-core';
import { GeminiEventType } from '@google/gemini-cli-core';
import {
GeminiEventType,
SimpleExtensionLoader,
} from '@google/gemini-cli-core';
import { v4 as uuidv4 } from 'uuid';
import { logger } from '../utils/logger.js';
@@ -96,7 +99,11 @@ export class CoderAgentExecutor implements AgentExecutor {
loadEnvironment(); // Will override any global env with workspace envs
const settings = loadSettings(workspaceRoot);
const extensions = loadExtensions(workspaceRoot);
return await loadConfig(settings, extensions, taskId);
return await loadConfig(
settings,
new SimpleExtensionLoader(extensions),
taskId,
);
}
/**
+5 -4
View File
@@ -21,6 +21,7 @@ import {
DEFAULT_GEMINI_EMBEDDING_MODEL,
DEFAULT_GEMINI_MODEL,
type GeminiCLIExtension,
type ExtensionLoader,
debugLogger,
} from '@google/gemini-cli-core';
@@ -30,10 +31,10 @@ import { type AgentSettings, CoderAgentEvent } from '../types.js';
export async function loadConfig(
settings: Settings,
extensions: GeminiCLIExtension[],
extensionLoader: ExtensionLoader,
taskId: string,
): Promise<Config> {
const mcpServers = mergeMcpServers(settings, extensions);
const mcpServers = mergeMcpServers(settings, extensionLoader.getExtensions());
const workspaceDir = process.cwd();
const adcFilePath = process.env['GOOGLE_APPLICATION_CREDENTIALS'];
@@ -71,7 +72,7 @@ export async function loadConfig(
},
ideMode: false,
folderTrust: settings.folderTrust === true,
extensions,
extensionLoader,
};
const fileService = new FileDiscoveryService(workspaceDir);
@@ -80,7 +81,7 @@ export async function loadConfig(
[workspaceDir],
false,
fileService,
extensions,
extensionLoader,
settings.folderTrust === true,
);
configParams.userMemory = memoryContent;
+6 -1
View File
@@ -20,6 +20,7 @@ import { loadConfig, loadEnvironment, setTargetDir } from '../config/config.js';
import { loadSettings } from '../config/settings.js';
import { loadExtensions } from '../config/extension.js';
import { commandRegistry } from '../commands/command-registry.js';
import { SimpleExtensionLoader } from '@google/gemini-cli-core';
const coderAgentCard: AgentCard = {
name: 'Gemini SDLC Agent',
@@ -70,7 +71,11 @@ export async function createApp() {
loadEnvironment();
const settings = loadSettings(workspaceRoot);
const extensions = loadExtensions(workspaceRoot);
const config = await loadConfig(settings, extensions, 'a2a-server');
const config = await loadConfig(
settings,
new SimpleExtensionLoader(extensions),
'a2a-server',
);
// loadEnvironment() is called within getConfig now
const bucketName = process.env['GCS_BUCKET_NAME'];