mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-28 23:11:19 -07:00
fix: cherry-pick commits for release (#12549)
This commit is contained in:
@@ -156,4 +156,17 @@ describe('CoreEventEmitter', () => {
|
||||
});
|
||||
expect(listener.mock.calls[2][0]).toMatchObject({ message: 'Buffered 2' });
|
||||
});
|
||||
|
||||
describe('ModelChanged Event', () => {
|
||||
it('should emit ModelChanged event with correct payload', () => {
|
||||
const listener = vi.fn();
|
||||
events.on(CoreEvent.ModelChanged, listener);
|
||||
|
||||
const newModel = 'gemini-2.5-pro';
|
||||
events.emitModelChanged(newModel);
|
||||
|
||||
expect(listener).toHaveBeenCalledTimes(1);
|
||||
expect(listener).toHaveBeenCalledWith({ model: newModel });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -43,9 +43,20 @@ export interface FallbackModeChangedPayload {
|
||||
isInFallbackMode: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Payload for the 'model-changed' event.
|
||||
*/
|
||||
export interface ModelChangedPayload {
|
||||
/**
|
||||
* The new model that was set.
|
||||
*/
|
||||
model: string;
|
||||
}
|
||||
|
||||
export enum CoreEvent {
|
||||
UserFeedback = 'user-feedback',
|
||||
FallbackModeChanged = 'fallback-mode-changed',
|
||||
ModelChanged = 'model-changed',
|
||||
}
|
||||
|
||||
export class CoreEventEmitter extends EventEmitter {
|
||||
@@ -86,6 +97,14 @@ export class CoreEventEmitter extends EventEmitter {
|
||||
this.emit(CoreEvent.FallbackModeChanged, payload);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies subscribers that the model has changed.
|
||||
*/
|
||||
emitModelChanged(model: string): void {
|
||||
const payload: ModelChangedPayload = { model };
|
||||
this.emit(CoreEvent.ModelChanged, payload);
|
||||
}
|
||||
|
||||
/**
|
||||
* Flushes buffered messages. Call this immediately after primary UI listener
|
||||
* subscribes.
|
||||
@@ -106,6 +125,10 @@ export class CoreEventEmitter extends EventEmitter {
|
||||
event: CoreEvent.FallbackModeChanged,
|
||||
listener: (payload: FallbackModeChangedPayload) => void,
|
||||
): this;
|
||||
override on(
|
||||
event: CoreEvent.ModelChanged,
|
||||
listener: (payload: ModelChangedPayload) => void,
|
||||
): this;
|
||||
override on(
|
||||
event: string | symbol,
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
@@ -122,6 +145,10 @@ export class CoreEventEmitter extends EventEmitter {
|
||||
event: CoreEvent.FallbackModeChanged,
|
||||
listener: (payload: FallbackModeChangedPayload) => void,
|
||||
): this;
|
||||
override off(
|
||||
event: CoreEvent.ModelChanged,
|
||||
listener: (payload: ModelChangedPayload) => void,
|
||||
): this;
|
||||
override off(
|
||||
event: string | symbol,
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
@@ -138,6 +165,10 @@ export class CoreEventEmitter extends EventEmitter {
|
||||
event: CoreEvent.FallbackModeChanged,
|
||||
payload: FallbackModeChangedPayload,
|
||||
): boolean;
|
||||
override emit(
|
||||
event: CoreEvent.ModelChanged,
|
||||
payload: ModelChangedPayload,
|
||||
): boolean;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
override emit(event: string | symbol, ...args: any[]): boolean {
|
||||
return super.emit(event, ...args);
|
||||
|
||||
Reference in New Issue
Block a user