mirror of
https://github.com/google-gemini/gemini-cli
synced 2026-05-23 17:18:51 +00:00
Reload skills when extensions change (#18225)
This commit is contained in:
parent
0f918f0cc8
commit
2cf3a14439
3 changed files with 13 additions and 0 deletions
|
|
@ -133,6 +133,7 @@ describe('ExtensionManager theme loading', () => {
|
|||
}),
|
||||
isTrustedFolder: () => true,
|
||||
getImportFormat: () => 'tree',
|
||||
reloadSkills: vi.fn(),
|
||||
} as unknown as Config;
|
||||
|
||||
await extensionManager.start(mockConfig);
|
||||
|
|
@ -208,6 +209,7 @@ describe('ExtensionManager theme loading', () => {
|
|||
getAgentRegistry: () => ({
|
||||
reload: vi.fn().mockResolvedValue(undefined),
|
||||
}),
|
||||
reloadSkills: vi.fn(),
|
||||
} as unknown as Config;
|
||||
|
||||
await extensionManager.start(mockConfig);
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ describe('SimpleExtensionLoader', () => {
|
|||
>;
|
||||
let mockHookSystemInit: MockInstance;
|
||||
let mockAgentRegistryReload: MockInstance;
|
||||
let mockSkillsReload: MockInstance;
|
||||
|
||||
const activeExtension: GeminiCLIExtension = {
|
||||
name: 'test-extension',
|
||||
|
|
@ -65,6 +66,7 @@ describe('SimpleExtensionLoader', () => {
|
|||
mockGeminiClientSetTools = vi.fn();
|
||||
mockHookSystemInit = vi.fn();
|
||||
mockAgentRegistryReload = vi.fn();
|
||||
mockSkillsReload = vi.fn();
|
||||
mockConfig = {
|
||||
getMcpClientManager: () => mockMcpClientManager,
|
||||
getEnableExtensionReloading: () => extensionReloadingEnabled,
|
||||
|
|
@ -78,6 +80,7 @@ describe('SimpleExtensionLoader', () => {
|
|||
getAgentRegistry: () => ({
|
||||
reload: mockAgentRegistryReload,
|
||||
}),
|
||||
reloadSkills: mockSkillsReload,
|
||||
} as unknown as Config;
|
||||
});
|
||||
|
||||
|
|
@ -138,17 +141,20 @@ describe('SimpleExtensionLoader', () => {
|
|||
expect(mockHookSystemInit).toHaveBeenCalledOnce();
|
||||
expect(mockGeminiClientSetTools).toHaveBeenCalledOnce();
|
||||
expect(mockAgentRegistryReload).toHaveBeenCalledOnce();
|
||||
expect(mockSkillsReload).toHaveBeenCalledOnce();
|
||||
} else {
|
||||
expect(mockMcpClientManager.startExtension).not.toHaveBeenCalled();
|
||||
expect(mockRefreshServerHierarchicalMemory).not.toHaveBeenCalled();
|
||||
expect(mockHookSystemInit).not.toHaveBeenCalled();
|
||||
expect(mockGeminiClientSetTools).not.toHaveBeenCalledOnce();
|
||||
expect(mockAgentRegistryReload).not.toHaveBeenCalled();
|
||||
expect(mockSkillsReload).not.toHaveBeenCalled();
|
||||
}
|
||||
mockRefreshServerHierarchicalMemory.mockClear();
|
||||
mockHookSystemInit.mockClear();
|
||||
mockGeminiClientSetTools.mockClear();
|
||||
mockAgentRegistryReload.mockClear();
|
||||
mockSkillsReload.mockClear();
|
||||
|
||||
await loader.unloadExtension(activeExtension);
|
||||
if (reloadingEnabled) {
|
||||
|
|
@ -159,12 +165,14 @@ describe('SimpleExtensionLoader', () => {
|
|||
expect(mockHookSystemInit).toHaveBeenCalledOnce();
|
||||
expect(mockGeminiClientSetTools).toHaveBeenCalledOnce();
|
||||
expect(mockAgentRegistryReload).toHaveBeenCalledOnce();
|
||||
expect(mockSkillsReload).toHaveBeenCalledOnce();
|
||||
} else {
|
||||
expect(mockMcpClientManager.stopExtension).not.toHaveBeenCalled();
|
||||
expect(mockRefreshServerHierarchicalMemory).not.toHaveBeenCalled();
|
||||
expect(mockHookSystemInit).not.toHaveBeenCalled();
|
||||
expect(mockGeminiClientSetTools).not.toHaveBeenCalledOnce();
|
||||
expect(mockAgentRegistryReload).not.toHaveBeenCalled();
|
||||
expect(mockSkillsReload).not.toHaveBeenCalled();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -186,6 +194,7 @@ describe('SimpleExtensionLoader', () => {
|
|||
expect(mockRefreshServerHierarchicalMemory).toHaveBeenCalledOnce();
|
||||
expect(mockHookSystemInit).toHaveBeenCalledOnce();
|
||||
expect(mockAgentRegistryReload).toHaveBeenCalledOnce();
|
||||
expect(mockSkillsReload).toHaveBeenCalledOnce();
|
||||
},
|
||||
);
|
||||
},
|
||||
|
|
@ -201,6 +210,7 @@ describe('SimpleExtensionLoader', () => {
|
|||
await loader.restartExtension(activeExtension);
|
||||
expect(loader.stopExtension).toHaveBeenCalledWith(activeExtension);
|
||||
expect(loader.startExtension).toHaveBeenCalledWith(activeExtension);
|
||||
expect(mockSkillsReload).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ export abstract class ExtensionLoader {
|
|||
await refreshServerHierarchicalMemory(this.config);
|
||||
await this.config.getHookSystem()?.initialize();
|
||||
await this.config.getAgentRegistry().reload();
|
||||
await this.config.reloadSkills();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue