Initial support for reloading extensions in the CLI - mcp servers only (#12239)

This commit is contained in:
Jacob MacDonald
2025-10-30 11:05:49 -07:00
committed by GitHub
parent d4cad0cdcc
commit cc081337b7
20 changed files with 437 additions and 107 deletions
@@ -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>();