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
+8 -17
View File
@@ -98,7 +98,7 @@ import {
useExtensionUpdates,
} from './hooks/useExtensionUpdates.js';
import { ShellFocusContext } from './contexts/ShellFocusContext.js';
import { ExtensionManager } from '../config/extension-manager.js';
import { type ExtensionManager } from '../config/extension-manager.js';
import { requestConsentInteractive } from '../config/extensions/consent.js';
const CTRL_EXIT_PROMPT_DURATION_MS = 1000;
@@ -168,21 +168,12 @@ export const AppContainer = (props: AppContainerProps) => {
null,
);
const extensions = config.getExtensions();
const [extensionManager] = useState<ExtensionManager>(
new ExtensionManager({
enabledExtensionOverrides: config.getEnabledExtensions(),
workspaceDir: config.getWorkingDir(),
requestConsent: (description) =>
requestConsentInteractive(
description,
addConfirmUpdateExtensionRequest,
),
// TODO: Support requesting settings in the interactive CLI
requestSetting: null,
loadedSettings: settings,
}),
const extensionManager = config.getExtensionLoader() as ExtensionManager;
// We are in the interactive CLI, update how we request consent and settings.
extensionManager.setRequestConsent((description) =>
requestConsentInteractive(description, addConfirmUpdateExtensionRequest),
);
extensionManager.setRequestSetting();
const { addConfirmUpdateExtensionRequest, confirmUpdateExtensionRequests } =
useConfirmUpdateRequests();
@@ -190,7 +181,7 @@ export const AppContainer = (props: AppContainerProps) => {
extensionsUpdateState,
extensionsUpdateStateInternal,
dispatchExtensionStateUpdate,
} = useExtensionUpdates(extensions, extensionManager, historyManager.addItem);
} = useExtensionUpdates(extensionManager, historyManager.addItem);
const [isPermissionsDialogOpen, setPermissionsDialogOpen] = useState(false);
const openPermissionsDialog = useCallback(
@@ -548,7 +539,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
config.getDebugMode(),
config.getFileService(),
settings.merged,
config.getExtensions(),
config.getExtensionLoader(),
config.isTrustedFolder(),
settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
config.getFileFilteringOptions(),