@@ -28,7 +28,7 @@ type CommonProperties = {
2828export class Telemetry {
2929 private readonly commonProperties : CommonProperties ;
3030
31- constructor ( private readonly session : Session ) {
31+ constructor ( private readonly session : Session , private readonly eventCache : EventCache = EventCache . getInstance ( ) ) {
3232 this . commonProperties = {
3333 ...MACHINE_METADATA ,
3434 mcp_client_version : this . session . agentRunner ?. version ,
@@ -90,7 +90,7 @@ export class Telemetry {
9090 * Falls back to caching if both attempts fail
9191 */
9292 private async emit ( events : BaseEvent [ ] ) : Promise < void > {
93- const cachedEvents = this . readCache ( ) ;
93+ const cachedEvents = this . eventCache . getEvents ( ) ;
9494 const allEvents = [ ...cachedEvents , ...events ] ;
9595
9696 logger . debug (
@@ -101,13 +101,13 @@ export class Telemetry {
101101
102102 const result = await this . sendEvents ( this . session . apiClient , allEvents ) ;
103103 if ( result . success ) {
104- this . clearCache ( ) ;
104+ this . eventCache . clearEvents ( ) ;
105105 logger . debug ( mongoLogId ( 1_000_000 ) , "telemetry" , `Sent ${ allEvents . length } events successfully` ) ;
106106 return ;
107107 }
108108
109109 logger . warning ( mongoLogId ( 1_000_000 ) , "telemetry" , `Error sending event to client: ${ result . error } ` ) ;
110- this . cacheEvents ( allEvents ) ;
110+ this . eventCache . setEvents ( allEvents ) ;
111111 }
112112
113113 /**
@@ -124,57 +124,4 @@ export class Telemetry {
124124 } ;
125125 }
126126 }
127-
128- /**
129- * Reads cached events from memory
130- * Returns empty array if no cache exists
131- */
132- private readCache ( ) : BaseEvent [ ] {
133- try {
134- return EventCache . getInstance ( ) . getEvents ( ) ;
135- } catch ( error ) {
136- logger . warning (
137- mongoLogId ( 1_000_000 ) ,
138- "telemetry" ,
139- `Error reading telemetry cache from memory: ${ error instanceof Error ? error . message : String ( error ) } `
140- ) ;
141- return [ ] ;
142- }
143- }
144-
145- /**
146- * Caches events in memory for later sending
147- */
148- private cacheEvents ( events : BaseEvent [ ] ) : void {
149- try {
150- EventCache . getInstance ( ) . setEvents ( events ) ;
151- logger . debug (
152- mongoLogId ( 1_000_000 ) ,
153- "telemetry" ,
154- `Cached ${ events . length } events in memory for later sending`
155- ) ;
156- } catch ( error ) {
157- logger . warning (
158- mongoLogId ( 1_000_000 ) ,
159- "telemetry" ,
160- `Failed to cache telemetry events in memory: ${ error instanceof Error ? error . message : String ( error ) } `
161- ) ;
162- }
163- }
164-
165- /**
166- * Clears the event cache after successful sending
167- */
168- private clearCache ( ) : void {
169- try {
170- EventCache . getInstance ( ) . clearEvents ( ) ;
171- logger . debug ( mongoLogId ( 1_000_000 ) , "telemetry" , "In-memory telemetry cache cleared" ) ;
172- } catch ( error ) {
173- logger . warning (
174- mongoLogId ( 1_000_000 ) ,
175- "telemetry" ,
176- `Error clearing in-memory telemetry cache: ${ error instanceof Error ? error . message : String ( error ) } `
177- ) ;
178- }
179- }
180- }
127+ }
0 commit comments