@@ -17,7 +17,7 @@ export abstract class ChatClientEventEmitter {
1717 */
1818 protected abstract emitEvent (
1919 eventName : string ,
20- data ?: Record < string , any > ,
20+ data ?: Record < string , unknown > ,
2121 ) : void
2222
2323 /**
@@ -33,14 +33,14 @@ export abstract class ChatClientEventEmitter {
3333 * Emit loading state changed event
3434 */
3535 loadingChanged ( isLoading : boolean ) : void {
36- this . emitEvent ( 'client:loading- changed' , { isLoading } )
36+ this . emitEvent ( 'client:loading: changed' , { isLoading } )
3737 }
3838
3939 /**
4040 * Emit error state changed event
4141 */
4242 errorChanged ( error : string | null ) : void {
43- this . emitEvent ( 'client:error- changed' , {
43+ this . emitEvent ( 'client:error: changed' , {
4444 error,
4545 } )
4646 }
@@ -49,12 +49,8 @@ export abstract class ChatClientEventEmitter {
4949 * Emit text update events (combines processor and client events)
5050 */
5151 textUpdated ( streamId : string , messageId : string , content : string ) : void {
52- this . emitEvent ( 'processor: text-updated ' , {
52+ this . emitEvent ( 'text:chunk:content ' , {
5353 streamId,
54- content,
55- } )
56-
57- this . emitEvent ( 'client:assistant-message-updated' , {
5854 messageId,
5955 content,
6056 } )
@@ -71,15 +67,8 @@ export abstract class ChatClientEventEmitter {
7167 state : string ,
7268 args : string ,
7369 ) : void {
74- this . emitEvent ( 'processor:tool- call-state-changed ' , {
70+ this . emitEvent ( 'tools: call:updated ' , {
7571 streamId,
76- toolCallId,
77- toolName,
78- state,
79- arguments : args ,
80- } )
81-
82- this . emitEvent ( 'client:tool-call-updated' , {
8372 messageId,
8473 toolCallId,
8574 toolName,
@@ -91,22 +80,6 @@ export abstract class ChatClientEventEmitter {
9180 /**
9281 * Emit tool result state change event
9382 */
94- toolResultStateChanged (
95- streamId : string ,
96- toolCallId : string ,
97- content : string ,
98- state : string ,
99- error ?: string ,
100- ) : void {
101- this . emitEvent ( 'processor:tool-result-state-changed' , {
102- streamId,
103- toolCallId,
104- content,
105- state,
106- error,
107- } )
108- }
109-
11083 /**
11184 * Emit thinking update event
11285 */
@@ -116,7 +89,7 @@ export abstract class ChatClientEventEmitter {
11689 content : string ,
11790 delta ?: string ,
11891 ) : void {
119- this . emitEvent ( 'stream :chunk:thinking' , {
92+ this . emitEvent ( 'text :chunk:thinking' , {
12093 streamId,
12194 messageId,
12295 content,
@@ -128,13 +101,15 @@ export abstract class ChatClientEventEmitter {
128101 * Emit approval requested event
129102 */
130103 approvalRequested (
104+ streamId : string ,
131105 messageId : string ,
132106 toolCallId : string ,
133107 toolName : string ,
134- input : any ,
108+ input : unknown ,
135109 approvalId : string ,
136110 ) : void {
137- this . emitEvent ( 'client:approval-requested' , {
111+ this . emitEvent ( 'tools:approval:requested' , {
112+ streamId,
138113 messageId,
139114 toolCallId,
140115 toolName,
@@ -146,26 +121,34 @@ export abstract class ChatClientEventEmitter {
146121 /**
147122 * Emit message appended event
148123 */
149- messageAppended ( uiMessage : UIMessage ) : void {
150- const contentPreview = uiMessage . parts
151- . filter ( ( p ) => p . type === 'text' )
152- . map ( ( p ) => ( p as any ) . content )
124+ messageAppended ( uiMessage : UIMessage , streamId ?: string ) : void {
125+ const content = uiMessage . parts
126+ . filter ( ( part ) => part . type === 'text' )
127+ . map ( ( part ) => part . content )
153128 . join ( ' ' )
154- . substring ( 0 , 100 )
155129
156- this . emitEvent ( 'client:message-appended' , {
130+ this . emitEvent ( 'text:message:created' , {
131+ streamId,
157132 messageId : uiMessage . id ,
158133 role : uiMessage . role ,
159- contentPreview,
134+ content,
135+ parts : uiMessage . parts ,
160136 } )
161137 }
162138
163139 /**
164140 * Emit message sent event
165141 */
166142 messageSent ( messageId : string , content : string ) : void {
167- this . emitEvent ( 'client:message-sent' , {
143+ this . emitEvent ( 'text:message:created' , {
144+ messageId,
145+ role : 'user' ,
146+ content,
147+ } )
148+
149+ this . emitEvent ( 'text:message:user' , {
168150 messageId,
151+ role : 'user' ,
169152 content,
170153 } )
171154 }
@@ -190,7 +173,7 @@ export abstract class ChatClientEventEmitter {
190173 * Emit messages cleared event
191174 */
192175 messagesCleared ( ) : void {
193- this . emitEvent ( 'client:messages- cleared' )
176+ this . emitEvent ( 'client:messages: cleared' )
194177 }
195178
196179 /**
@@ -199,10 +182,10 @@ export abstract class ChatClientEventEmitter {
199182 toolResultAdded (
200183 toolCallId : string ,
201184 toolName : string ,
202- output : any ,
185+ output : unknown ,
203186 state : string ,
204187 ) : void {
205- this . emitEvent ( 'tool :result- added' , {
188+ this . emitEvent ( 'tools :result: added' , {
206189 toolCallId,
207190 toolName,
208191 output,
@@ -218,7 +201,7 @@ export abstract class ChatClientEventEmitter {
218201 toolCallId : string ,
219202 approved : boolean ,
220203 ) : void {
221- this . emitEvent ( 'tool :approval- responded' , {
204+ this . emitEvent ( 'tools :approval: responded' , {
222205 approvalId,
223206 toolCallId,
224207 approved,
@@ -235,14 +218,19 @@ export class DefaultChatClientEventEmitter extends ChatClientEventEmitter {
235218 */
236219 protected emitEvent ( eventName : string , data ?: Record < string , any > ) : void {
237220 // For client:* and tool:* events, automatically add clientId and timestamp
238- if ( eventName . startsWith ( 'client:' ) || eventName . startsWith ( 'tool:' ) ) {
221+ if (
222+ eventName . startsWith ( 'client:' ) ||
223+ eventName . startsWith ( 'tools:' ) ||
224+ eventName . startsWith ( 'text:' )
225+ ) {
239226 aiEventClient . emit ( eventName as any , {
240227 ...data ,
241228 clientId : this . clientId ,
229+ source : 'client' ,
242230 timestamp : Date . now ( ) ,
243231 } )
244232 } else {
245- // For other events (e.g., processor:*) , just add timestamp
233+ // For other events, just add timestamp
246234 aiEventClient . emit ( eventName as any , {
247235 ...data ,
248236 timestamp : Date . now ( ) ,
0 commit comments