mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-24 03:54:43 -07:00
feat: automatic /model persistence across Gemini CLI sessions (#13199)
Co-authored-by: Jack Wotherspoon <jackwoth@google.com>
This commit is contained in:
@@ -1629,6 +1629,18 @@ describe('Config getHooks', () => {
|
||||
expect(config.getModel()).toBe(originalModel);
|
||||
expect(config.getActiveModel()).toBe(originalModel);
|
||||
});
|
||||
|
||||
it('should call onModelChange when a new model is set', () => {
|
||||
const onModelChange = vi.fn();
|
||||
const config = new Config({
|
||||
...baseParams,
|
||||
onModelChange,
|
||||
});
|
||||
|
||||
config.setModel(DEFAULT_GEMINI_MODEL);
|
||||
|
||||
expect(onModelChange).toHaveBeenCalledWith(DEFAULT_GEMINI_MODEL);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -337,6 +337,7 @@ export interface ConfigParameters {
|
||||
previewFeatures?: boolean;
|
||||
enableAgents?: boolean;
|
||||
experimentalJitContext?: boolean;
|
||||
onModelChange?: (model: string) => void;
|
||||
}
|
||||
|
||||
export class Config {
|
||||
@@ -457,6 +458,7 @@ export class Config {
|
||||
private experiments: Experiments | undefined;
|
||||
private experimentsPromise: Promise<void> | undefined;
|
||||
private hookSystem?: HookSystem;
|
||||
private readonly onModelChange: ((model: string) => void) | undefined;
|
||||
|
||||
private readonly enableAgents: boolean;
|
||||
|
||||
@@ -623,6 +625,7 @@ export class Config {
|
||||
this.disableYoloMode = params.disableYoloMode ?? false;
|
||||
this.hooks = params.hooks;
|
||||
this.experiments = params.experiments;
|
||||
this.onModelChange = params.onModelChange;
|
||||
|
||||
if (params.contextFileName) {
|
||||
setGeminiMdFilename(params.contextFileName);
|
||||
@@ -879,6 +882,9 @@ export class Config {
|
||||
// When the user explicitly sets a model, that becomes the active model.
|
||||
this._activeModel = newModel;
|
||||
coreEvents.emitModelChanged(newModel);
|
||||
if (this.onModelChange) {
|
||||
this.onModelChange(newModel);
|
||||
}
|
||||
}
|
||||
this.modelAvailabilityService.reset();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user