@@ -43,9 +43,20 @@ export interface FallbackModeChangedPayload {
4343 isInFallbackMode : boolean ;
4444}
4545
46+ /**
47+ * Payload for the 'model-changed' event.
48+ */
49+ export interface ModelChangedPayload {
50+ /**
51+ * The new model that was set.
52+ */
53+ model : string ;
54+ }
55+
4656export enum CoreEvent {
4757 UserFeedback = 'user-feedback' ,
4858 FallbackModeChanged = 'fallback-mode-changed' ,
59+ ModelChanged = 'model-changed' ,
4960}
5061
5162export class CoreEventEmitter extends EventEmitter {
@@ -86,6 +97,14 @@ export class CoreEventEmitter extends EventEmitter {
8697 this . emit ( CoreEvent . FallbackModeChanged , payload ) ;
8798 }
8899
100+ /**
101+ * Notifies subscribers that the model has changed.
102+ */
103+ emitModelChanged ( model : string ) : void {
104+ const payload : ModelChangedPayload = { model } ;
105+ this . emit ( CoreEvent . ModelChanged , payload ) ;
106+ }
107+
89108 /**
90109 * Flushes buffered messages. Call this immediately after primary UI listener
91110 * subscribes.
@@ -106,6 +125,10 @@ export class CoreEventEmitter extends EventEmitter {
106125 event : CoreEvent . FallbackModeChanged ,
107126 listener : ( payload : FallbackModeChangedPayload ) => void ,
108127 ) : this;
128+ override on (
129+ event : CoreEvent . ModelChanged ,
130+ listener : ( payload : ModelChangedPayload ) => void ,
131+ ) : this;
109132 override on (
110133 event : string | symbol ,
111134 // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -122,6 +145,10 @@ export class CoreEventEmitter extends EventEmitter {
122145 event : CoreEvent . FallbackModeChanged ,
123146 listener : ( payload : FallbackModeChangedPayload ) => void ,
124147 ) : this;
148+ override off (
149+ event : CoreEvent . ModelChanged ,
150+ listener : ( payload : ModelChangedPayload ) => void ,
151+ ) : this;
125152 override off (
126153 event : string | symbol ,
127154 // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -138,6 +165,10 @@ export class CoreEventEmitter extends EventEmitter {
138165 event : CoreEvent . FallbackModeChanged ,
139166 payload : FallbackModeChangedPayload ,
140167 ) : boolean ;
168+ override emit (
169+ event : CoreEvent . ModelChanged ,
170+ payload : ModelChangedPayload ,
171+ ) : boolean ;
141172 // eslint-disable-next-line @typescript-eslint/no-explicit-any
142173 override emit ( event : string | symbol , ...args : any [ ] ) : boolean {
143174 return super . emit ( event , ...args ) ;
0 commit comments