@@ -4,6 +4,9 @@ import { LDFeedbackKind } from '../src/api/metrics';
44import { LDAIConfigTrackerImpl } from '../src/LDAIConfigTrackerImpl' ;
55import { LDClientMin } from '../src/LDClientMin' ;
66
7+ // eslint-disable-next-line @typescript-eslint/no-var-requires
8+ const { version : aiSdkVersion } = require ( '../package.json' ) ;
9+
710const mockTrack = jest . fn ( ) ;
811const mockVariation = jest . fn ( ) ;
912const mockLdClient : LDClientMin = {
@@ -18,6 +21,15 @@ const version = 1;
1821const modelName = 'test-model' ;
1922const providerName = 'test-provider' ;
2023
24+ const getExpectedTrackData = ( ) => ( {
25+ configKey,
26+ variationKey,
27+ version,
28+ modelName,
29+ providerName,
30+ aiSdkVersion,
31+ } ) ;
32+
2133beforeEach ( ( ) => {
2234 jest . clearAllMocks ( ) ;
2335} ) ;
@@ -37,7 +49,7 @@ it('tracks duration', () => {
3749 expect ( mockTrack ) . toHaveBeenCalledWith (
3850 '$ld:ai:duration:total' ,
3951 testContext ,
40- { configKey , variationKey , version , modelName , providerName } ,
52+ getExpectedTrackData ( ) ,
4153 1000 ,
4254 ) ;
4355} ) ;
@@ -60,7 +72,7 @@ it('tracks duration of async function', async () => {
6072 expect ( mockTrack ) . toHaveBeenCalledWith (
6173 '$ld:ai:duration:total' ,
6274 testContext ,
63- { configKey , variationKey , version , modelName , providerName } ,
75+ getExpectedTrackData ( ) ,
6476 1000 ,
6577 ) ;
6678} ) ;
@@ -80,7 +92,7 @@ it('tracks time to first token', () => {
8092 expect ( mockTrack ) . toHaveBeenCalledWith (
8193 '$ld:ai:tokens:ttf' ,
8294 testContext ,
83- { configKey , variationKey , version , modelName , providerName } ,
95+ getExpectedTrackData ( ) ,
8496 1000 ,
8597 ) ;
8698} ) ;
@@ -100,7 +112,7 @@ it('tracks positive feedback', () => {
100112 expect ( mockTrack ) . toHaveBeenCalledWith (
101113 '$ld:ai:feedback:user:positive' ,
102114 testContext ,
103- { configKey , variationKey , version , modelName , providerName } ,
115+ getExpectedTrackData ( ) ,
104116 1 ,
105117 ) ;
106118} ) ;
@@ -120,7 +132,7 @@ it('tracks negative feedback', () => {
120132 expect ( mockTrack ) . toHaveBeenCalledWith (
121133 '$ld:ai:feedback:user:negative' ,
122134 testContext ,
123- { configKey , variationKey , version , modelName , providerName } ,
135+ getExpectedTrackData ( ) ,
124136 1 ,
125137 ) ;
126138} ) ;
@@ -140,7 +152,7 @@ it('tracks success', () => {
140152 expect ( mockTrack ) . toHaveBeenCalledWith (
141153 '$ld:ai:generation:success' ,
142154 testContext ,
143- { configKey , variationKey , version , modelName , providerName } ,
155+ getExpectedTrackData ( ) ,
144156 1 ,
145157 ) ;
146158} ) ;
@@ -172,14 +184,14 @@ it('tracks OpenAI usage', async () => {
172184 expect ( mockTrack ) . toHaveBeenCalledWith (
173185 '$ld:ai:duration:total' ,
174186 testContext ,
175- { configKey , variationKey , version , modelName , providerName } ,
187+ getExpectedTrackData ( ) ,
176188 1000 ,
177189 ) ;
178190
179191 expect ( mockTrack ) . toHaveBeenCalledWith (
180192 '$ld:ai:generation:success' ,
181193 testContext ,
182- { configKey , variationKey , version , modelName , providerName } ,
194+ getExpectedTrackData ( ) ,
183195 1 ,
184196 ) ;
185197
@@ -193,21 +205,21 @@ it('tracks OpenAI usage', async () => {
193205 expect ( mockTrack ) . toHaveBeenCalledWith (
194206 '$ld:ai:tokens:total' ,
195207 testContext ,
196- { configKey , variationKey , version , modelName , providerName } ,
208+ getExpectedTrackData ( ) ,
197209 TOTAL_TOKENS ,
198210 ) ;
199211
200212 expect ( mockTrack ) . toHaveBeenCalledWith (
201213 '$ld:ai:tokens:input' ,
202214 testContext ,
203- { configKey , variationKey , version , modelName , providerName } ,
215+ getExpectedTrackData ( ) ,
204216 PROMPT_TOKENS ,
205217 ) ;
206218
207219 expect ( mockTrack ) . toHaveBeenCalledWith (
208220 '$ld:ai:tokens:output' ,
209221 testContext ,
210- { configKey , variationKey , version , modelName , providerName } ,
222+ getExpectedTrackData ( ) ,
211223 COMPLETION_TOKENS ,
212224 ) ;
213225} ) ;
@@ -234,14 +246,14 @@ it('tracks error when OpenAI metrics function throws', async () => {
234246 expect ( mockTrack ) . toHaveBeenCalledWith (
235247 '$ld:ai:duration:total' ,
236248 testContext ,
237- { configKey , variationKey , version , modelName , providerName } ,
249+ getExpectedTrackData ( ) ,
238250 1000 ,
239251 ) ;
240252
241253 expect ( mockTrack ) . toHaveBeenCalledWith (
242254 '$ld:ai:generation:error' ,
243255 testContext ,
244- { configKey , variationKey , version , modelName , providerName } ,
256+ getExpectedTrackData ( ) ,
245257 1 ,
246258 ) ;
247259
@@ -283,7 +295,7 @@ it('tracks Bedrock conversation with successful response', () => {
283295 expect ( mockTrack ) . toHaveBeenCalledWith (
284296 '$ld:ai:generation:success' ,
285297 testContext ,
286- { configKey , variationKey , version , modelName , providerName } ,
298+ getExpectedTrackData ( ) ,
287299 1 ,
288300 ) ;
289301
@@ -297,28 +309,28 @@ it('tracks Bedrock conversation with successful response', () => {
297309 expect ( mockTrack ) . toHaveBeenCalledWith (
298310 '$ld:ai:duration:total' ,
299311 testContext ,
300- { configKey , variationKey , version , modelName , providerName } ,
312+ getExpectedTrackData ( ) ,
301313 500 ,
302314 ) ;
303315
304316 expect ( mockTrack ) . toHaveBeenCalledWith (
305317 '$ld:ai:tokens:total' ,
306318 testContext ,
307- { configKey , variationKey , version , modelName , providerName } ,
319+ getExpectedTrackData ( ) ,
308320 TOTAL_TOKENS ,
309321 ) ;
310322
311323 expect ( mockTrack ) . toHaveBeenCalledWith (
312324 '$ld:ai:tokens:input' ,
313325 testContext ,
314- { configKey , variationKey , version , modelName , providerName } ,
326+ getExpectedTrackData ( ) ,
315327 PROMPT_TOKENS ,
316328 ) ;
317329
318330 expect ( mockTrack ) . toHaveBeenCalledWith (
319331 '$ld:ai:tokens:output' ,
320332 testContext ,
321- { configKey , variationKey , version , modelName , providerName } ,
333+ getExpectedTrackData ( ) ,
322334 COMPLETION_TOKENS ,
323335 ) ;
324336} ) ;
@@ -345,7 +357,7 @@ it('tracks Bedrock conversation with error response', () => {
345357 expect ( mockTrack ) . toHaveBeenCalledWith (
346358 '$ld:ai:generation:error' ,
347359 testContext ,
348- { configKey , variationKey , version , modelName , providerName } ,
360+ getExpectedTrackData ( ) ,
349361 1 ,
350362 ) ;
351363
@@ -385,14 +397,14 @@ describe('Vercel AI SDK generateText', () => {
385397 expect ( mockTrack ) . toHaveBeenCalledWith (
386398 '$ld:ai:duration:total' ,
387399 testContext ,
388- { configKey , variationKey , version , modelName , providerName } ,
400+ getExpectedTrackData ( ) ,
389401 1000 ,
390402 ) ;
391403
392404 expect ( mockTrack ) . toHaveBeenCalledWith (
393405 '$ld:ai:generation:success' ,
394406 testContext ,
395- { configKey , variationKey , version , modelName , providerName } ,
407+ getExpectedTrackData ( ) ,
396408 1 ,
397409 ) ;
398410
@@ -406,21 +418,21 @@ describe('Vercel AI SDK generateText', () => {
406418 expect ( mockTrack ) . toHaveBeenCalledWith (
407419 '$ld:ai:tokens:total' ,
408420 testContext ,
409- { configKey , variationKey , version , modelName , providerName } ,
421+ getExpectedTrackData ( ) ,
410422 TOTAL_TOKENS ,
411423 ) ;
412424
413425 expect ( mockTrack ) . toHaveBeenCalledWith (
414426 '$ld:ai:tokens:input' ,
415427 testContext ,
416- { configKey , variationKey , version , modelName , providerName } ,
428+ getExpectedTrackData ( ) ,
417429 PROMPT_TOKENS ,
418430 ) ;
419431
420432 expect ( mockTrack ) . toHaveBeenCalledWith (
421433 '$ld:ai:tokens:output' ,
422434 testContext ,
423- { configKey , variationKey , version , modelName , providerName } ,
435+ getExpectedTrackData ( ) ,
424436 COMPLETION_TOKENS ,
425437 ) ;
426438 } ) ;
@@ -447,14 +459,14 @@ describe('Vercel AI SDK generateText', () => {
447459 expect ( mockTrack ) . toHaveBeenCalledWith (
448460 '$ld:ai:duration:total' ,
449461 testContext ,
450- { configKey , variationKey , version , modelName , providerName } ,
462+ getExpectedTrackData ( ) ,
451463 1000 ,
452464 ) ;
453465
454466 expect ( mockTrack ) . toHaveBeenCalledWith (
455467 '$ld:ai:generation:error' ,
456468 testContext ,
457- { configKey , variationKey , version , modelName , providerName } ,
469+ getExpectedTrackData ( ) ,
458470 1 ,
459471 ) ;
460472
@@ -491,21 +503,21 @@ it('tracks tokens', () => {
491503 expect ( mockTrack ) . toHaveBeenCalledWith (
492504 '$ld:ai:tokens:total' ,
493505 testContext ,
494- { configKey , variationKey , version , modelName , providerName } ,
506+ getExpectedTrackData ( ) ,
495507 TOTAL_TOKENS ,
496508 ) ;
497509
498510 expect ( mockTrack ) . toHaveBeenCalledWith (
499511 '$ld:ai:tokens:input' ,
500512 testContext ,
501- { configKey , variationKey , version , modelName , providerName } ,
513+ getExpectedTrackData ( ) ,
502514 PROMPT_TOKENS ,
503515 ) ;
504516
505517 expect ( mockTrack ) . toHaveBeenCalledWith (
506518 '$ld:ai:tokens:output' ,
507519 testContext ,
508- { configKey , variationKey , version , modelName , providerName } ,
520+ getExpectedTrackData ( ) ,
509521 COMPLETION_TOKENS ,
510522 ) ;
511523} ) ;
@@ -537,7 +549,7 @@ it('only tracks non-zero token counts', () => {
537549 expect ( mockTrack ) . toHaveBeenCalledWith (
538550 '$ld:ai:tokens:input' ,
539551 testContext ,
540- { configKey , variationKey , version , modelName , providerName } ,
552+ getExpectedTrackData ( ) ,
541553 50 ,
542554 ) ;
543555
@@ -623,7 +635,7 @@ it('tracks duration when async function throws', async () => {
623635 expect ( mockTrack ) . toHaveBeenCalledWith (
624636 '$ld:ai:duration:total' ,
625637 testContext ,
626- { configKey , variationKey , version , modelName , providerName } ,
638+ getExpectedTrackData ( ) ,
627639 1000 ,
628640 ) ;
629641} ) ;
@@ -643,7 +655,7 @@ it('tracks error', () => {
643655 expect ( mockTrack ) . toHaveBeenCalledWith (
644656 '$ld:ai:generation:error' ,
645657 testContext ,
646- { configKey , variationKey , version , modelName , providerName } ,
658+ getExpectedTrackData ( ) ,
647659 1 ,
648660 ) ;
649661} ) ;
@@ -679,27 +691,27 @@ describe('trackMetricsOf', () => {
679691 expect ( mockTrack ) . toHaveBeenCalledWith (
680692 '$ld:ai:generation:success' ,
681693 testContext ,
682- { configKey , variationKey , version , modelName , providerName } ,
694+ getExpectedTrackData ( ) ,
683695 1 ,
684696 ) ;
685697
686698 // Should track token usage
687699 expect ( mockTrack ) . toHaveBeenCalledWith (
688700 '$ld:ai:tokens:total' ,
689701 testContext ,
690- { configKey , variationKey , version , modelName , providerName } ,
702+ getExpectedTrackData ( ) ,
691703 100 ,
692704 ) ;
693705 expect ( mockTrack ) . toHaveBeenCalledWith (
694706 '$ld:ai:tokens:input' ,
695707 testContext ,
696- { configKey , variationKey , version , modelName , providerName } ,
708+ getExpectedTrackData ( ) ,
697709 50 ,
698710 ) ;
699711 expect ( mockTrack ) . toHaveBeenCalledWith (
700712 '$ld:ai:tokens:output' ,
701713 testContext ,
702- { configKey , variationKey , version , modelName , providerName } ,
714+ getExpectedTrackData ( ) ,
703715 50 ,
704716 ) ;
705717 } ) ;
@@ -729,7 +741,7 @@ describe('trackMetricsOf', () => {
729741 expect ( mockTrack ) . toHaveBeenCalledWith (
730742 '$ld:ai:generation:error' ,
731743 testContext ,
732- { configKey , variationKey , version , modelName , providerName } ,
744+ getExpectedTrackData ( ) ,
733745 1 ,
734746 ) ;
735747 } ) ;
@@ -755,7 +767,7 @@ describe('trackMetricsOf', () => {
755767 expect ( mockTrack ) . toHaveBeenCalledWith (
756768 '$ld:ai:generation:error' ,
757769 testContext ,
758- { configKey , variationKey , version , modelName , providerName } ,
770+ getExpectedTrackData ( ) ,
759771 1 ,
760772 ) ;
761773
@@ -789,7 +801,7 @@ describe('trackMetricsOf', () => {
789801 expect ( mockTrack ) . toHaveBeenCalledWith (
790802 '$ld:ai:generation:success' ,
791803 testContext ,
792- { configKey , variationKey , version , modelName , providerName } ,
804+ getExpectedTrackData ( ) ,
793805 1 ,
794806 ) ;
795807
0 commit comments