11import { LDContext } from '@launchdarkly/js-server-sdk-common' ;
22
33import { LDAIConfigTracker } from './api/config' ;
4+ import { LDAIMetricSummary } from './api/config/LDAIConfigTracker' ;
45import { createBedrockTokenUsage , LDFeedbackKind , LDTokenUsage } from './api/metrics' ;
56import { createOpenAiUsage } from './api/metrics/OpenAiUsage' ;
67import { LDClientMin } from './LDClientMin' ;
78
89export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
10+ private _trackedMetrics : LDAIMetricSummary = { } ;
11+
912 constructor (
1013 private _ldClient : LDClientMin ,
1114 private _configKey : string ,
@@ -21,6 +24,7 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
2124 }
2225
2326 trackDuration ( duration : number ) : void {
27+ this . _trackedMetrics . durationMs = duration ;
2428 this . _ldClient . track ( '$ld:ai:duration:total' , this . _context , this . _getTrackData ( ) , duration ) ;
2529 }
2630
@@ -34,6 +38,7 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
3438 }
3539
3640 trackFeedback ( feedback : { kind : LDFeedbackKind } ) : void {
41+ this . _trackedMetrics . feedback = feedback ;
3742 if ( feedback . kind === LDFeedbackKind . Positive ) {
3843 this . _ldClient . track ( '$ld:ai:feedback:user:positive' , this . _context , this . _getTrackData ( ) , 1 ) ;
3944 } else if ( feedback . kind === LDFeedbackKind . Negative ) {
@@ -42,6 +47,7 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
4247 }
4348
4449 trackSuccess ( ) : void {
50+ this . _trackedMetrics . success = true ;
4551 this . _ldClient . track ( '$ld:ai:generation' , this . _context , this . _getTrackData ( ) , 1 ) ;
4652 }
4753
@@ -88,6 +94,7 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
8894 }
8995
9096 trackTokens ( tokens : LDTokenUsage ) : void {
97+ this . _trackedMetrics . tokens = tokens ;
9198 const trackData = this . _getTrackData ( ) ;
9299 if ( tokens . total > 0 ) {
93100 this . _ldClient . track ( '$ld:ai:tokens:total' , this . _context , trackData , tokens . total ) ;
@@ -99,4 +106,11 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
99106 this . _ldClient . track ( '$ld:ai:tokens:output' , this . _context , trackData , tokens . output ) ;
100107 }
101108 }
109+
110+ /**
111+ * Get a summary of the tracked metrics.
112+ */
113+ getSummary ( ) : LDAIMetricSummary {
114+ return { ...this . _trackedMetrics } ;
115+ }
102116}
0 commit comments