mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-20 18:14:29 -07:00
Initial support for reloading extensions in the CLI - mcp servers only (#12239)
This commit is contained in:
@@ -183,7 +183,11 @@ export const AppContainer = (props: AppContainerProps) => {
|
||||
extensionsUpdateState,
|
||||
extensionsUpdateStateInternal,
|
||||
dispatchExtensionStateUpdate,
|
||||
} = useExtensionUpdates(extensionManager, historyManager.addItem);
|
||||
} = useExtensionUpdates(
|
||||
extensionManager,
|
||||
historyManager.addItem,
|
||||
config.getEnableExtensionReloading(),
|
||||
);
|
||||
|
||||
const [isPermissionsDialogOpen, setPermissionsDialogOpen] = useState(false);
|
||||
const openPermissionsDialog = useCallback(
|
||||
|
||||
@@ -97,6 +97,10 @@ describe('<ExtensionsList />', () => {
|
||||
state: ExtensionUpdateState.UPDATED_NEEDS_RESTART,
|
||||
expectedText: '(updated, needs restart)',
|
||||
},
|
||||
{
|
||||
state: ExtensionUpdateState.UPDATED,
|
||||
expectedText: '(updated)',
|
||||
},
|
||||
{
|
||||
state: ExtensionUpdateState.ERROR,
|
||||
expectedText: '(error)',
|
||||
|
||||
@@ -48,6 +48,7 @@ export const ExtensionsList: React.FC<ExtensionsList> = ({ extensions }) => {
|
||||
break;
|
||||
case ExtensionUpdateState.UP_TO_DATE:
|
||||
case ExtensionUpdateState.NOT_UPDATABLE:
|
||||
case ExtensionUpdateState.UPDATED:
|
||||
stateColor = 'green';
|
||||
break;
|
||||
case undefined:
|
||||
|
||||
@@ -84,6 +84,7 @@ describe('handleAtCommand', () => {
|
||||
getReadManyFilesExcludes: () => [],
|
||||
}),
|
||||
getUsageStatisticsEnabled: () => false,
|
||||
getEnableExtensionReloading: () => false,
|
||||
} as unknown as Config;
|
||||
|
||||
const registry = new ToolRegistry(mockConfig);
|
||||
|
||||
@@ -96,7 +96,7 @@ describe('useExtensionUpdates', () => {
|
||||
);
|
||||
|
||||
function TestComponent() {
|
||||
useExtensionUpdates(extensionManager, addItem);
|
||||
useExtensionUpdates(extensionManager, addItem, false);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ describe('useExtensionUpdates', () => {
|
||||
});
|
||||
|
||||
function TestComponent() {
|
||||
useExtensionUpdates(extensionManager, addItem);
|
||||
useExtensionUpdates(extensionManager, addItem, false);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -224,7 +224,7 @@ describe('useExtensionUpdates', () => {
|
||||
});
|
||||
|
||||
function TestComponent() {
|
||||
useExtensionUpdates(extensionManager, addItem);
|
||||
useExtensionUpdates(extensionManager, addItem, false);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -307,7 +307,7 @@ describe('useExtensionUpdates', () => {
|
||||
);
|
||||
|
||||
function TestComponent() {
|
||||
useExtensionUpdates(extensionManager, addItem);
|
||||
useExtensionUpdates(extensionManager, addItem, false);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -80,6 +80,7 @@ export const useConfirmUpdateRequests = () => {
|
||||
export const useExtensionUpdates = (
|
||||
extensionManager: ExtensionManager,
|
||||
addItem: UseHistoryManagerReturn['addItem'],
|
||||
enableExtensionReloading: boolean,
|
||||
) => {
|
||||
const [extensionsUpdateState, dispatchExtensionStateUpdate] = useReducer(
|
||||
extensionUpdatesReducer,
|
||||
@@ -163,6 +164,7 @@ export const useExtensionUpdates = (
|
||||
extensionManager,
|
||||
currentState.status,
|
||||
dispatchExtensionStateUpdate,
|
||||
enableExtensionReloading,
|
||||
);
|
||||
updatePromises.push(updatePromise);
|
||||
updatePromise
|
||||
@@ -209,7 +211,13 @@ export const useExtensionUpdates = (
|
||||
});
|
||||
});
|
||||
}
|
||||
}, [extensions, extensionManager, extensionsUpdateState, addItem]);
|
||||
}, [
|
||||
extensions,
|
||||
extensionManager,
|
||||
extensionsUpdateState,
|
||||
addItem,
|
||||
enableExtensionReloading,
|
||||
]);
|
||||
|
||||
const extensionsUpdateStateComputed = useMemo(() => {
|
||||
const result = new Map<string, ExtensionUpdateState>();
|
||||
|
||||
@@ -10,6 +10,7 @@ import { checkExhaustive } from '../../utils/checks.js';
|
||||
export enum ExtensionUpdateState {
|
||||
CHECKING_FOR_UPDATES = 'checking for updates',
|
||||
UPDATED_NEEDS_RESTART = 'updated, needs restart',
|
||||
UPDATED = 'updated',
|
||||
UPDATING = 'updating',
|
||||
UPDATE_AVAILABLE = 'update available',
|
||||
UP_TO_DATE = 'up to date',
|
||||
|
||||
Reference in New Issue
Block a user