mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-29 14:34:55 -07:00
Create ExtensionManager class which manages all high level extension tasks (#11667)
This commit is contained in:
@@ -26,7 +26,6 @@ import { getStartupWarnings } from './utils/startupWarnings.js';
|
||||
import { getUserStartupWarnings } from './utils/userStartupWarnings.js';
|
||||
import { ConsolePatcher } from './ui/utils/ConsolePatcher.js';
|
||||
import { runNonInteractive } from './nonInteractiveCli.js';
|
||||
import { loadExtensions } from './config/extension.js';
|
||||
import {
|
||||
cleanupCheckpoints,
|
||||
registerCleanup,
|
||||
@@ -67,8 +66,9 @@ import {
|
||||
relaunchOnExitCode,
|
||||
} from './utils/relaunch.js';
|
||||
import { loadSandboxConfig } from './config/sandboxConfig.js';
|
||||
import { ExtensionManager } from './config/extension-manager.js';
|
||||
import { requestConsentNonInteractive } from './config/extensions/consent.js';
|
||||
import { createPolicyUpdater } from './config/policy.js';
|
||||
import { ExtensionEnablementManager } from './config/extensions/extensionEnablement.js';
|
||||
|
||||
export function validateDnsResolutionOrder(
|
||||
order: string | undefined,
|
||||
@@ -225,7 +225,17 @@ export async function startInteractiveUI(
|
||||
export async function main() {
|
||||
setupUnhandledRejectionHandler();
|
||||
const settings = loadSettings();
|
||||
migrateDeprecatedSettings(settings);
|
||||
migrateDeprecatedSettings(
|
||||
settings,
|
||||
// Temporary extension manager only used during this non-interactive UI phase.
|
||||
new ExtensionManager({
|
||||
workspaceDir: process.cwd(),
|
||||
loadedSettings: settings,
|
||||
enabledExtensionOverrides: [],
|
||||
requestConsent: requestConsentNonInteractive,
|
||||
requestSetting: null,
|
||||
}),
|
||||
);
|
||||
await cleanupCheckpoints();
|
||||
|
||||
const argv = await parseArguments(settings.merged);
|
||||
@@ -360,10 +370,17 @@ export async function main() {
|
||||
// to run Gemini CLI. It is now safe to perform expensive initialization that
|
||||
// may have side effects.
|
||||
{
|
||||
const extensionEnablementManager = new ExtensionEnablementManager(
|
||||
argv.extensions,
|
||||
);
|
||||
const extensions = loadExtensions(extensionEnablementManager);
|
||||
// Eventually, `extensions` should move off of `config` entirely and into
|
||||
// the UI state instead.
|
||||
const extensionManager = new ExtensionManager({
|
||||
loadedSettings: settings,
|
||||
workspaceDir: process.cwd(),
|
||||
// At this stage, we still don't have an interactive UI.
|
||||
requestConsent: requestConsentNonInteractive,
|
||||
requestSetting: null,
|
||||
enabledExtensionOverrides: argv.extensions,
|
||||
});
|
||||
const extensions = extensionManager.loadExtensions();
|
||||
const config = await loadCliConfig(
|
||||
settings.merged,
|
||||
extensions,
|
||||
|
||||
Reference in New Issue
Block a user