[feat]: Add /extensions restart command (#12739)

This commit is contained in:
Jacob MacDonald
2025-11-07 15:17:23 -08:00
committed by GitHub
parent fdb6088603
commit bafbcbbe8b
9 changed files with 457 additions and 10 deletions

View File

@@ -169,4 +169,27 @@ describe('SimpleExtensionLoader', () => {
},
);
});
describe('restartExtension', () => {
it('should stop and then start the extension', async () => {
const loader = new TestingSimpleExtensionLoader([activeExtension]);
vi.spyOn(loader, 'stopExtension');
vi.spyOn(loader, 'startExtension');
await loader.start(mockConfig);
await loader.restartExtension(activeExtension);
expect(loader.stopExtension).toHaveBeenCalledWith(activeExtension);
expect(loader.startExtension).toHaveBeenCalledWith(activeExtension);
});
});
});
// Adding these overrides allows us to access the protected members.
class TestingSimpleExtensionLoader extends SimpleExtensionLoader {
override async startExtension(extension: GeminiCLIExtension): Promise<void> {
await super.startExtension(extension);
}
override async stopExtension(extension: GeminiCLIExtension): Promise<void> {
await super.stopExtension(extension);
}
}

View File

@@ -200,6 +200,11 @@ export abstract class ExtensionLoader {
}
return;
}
async restartExtension(extension: GeminiCLIExtension): Promise<void> {
await this.stopExtension(extension);
await this.startExtension(extension);
}
}
export interface ExtensionEvents {