Skip to content

Commit 9e84239

Browse files
committed
chore: remove trackJudgeResult from graph tracker and fix judgeConfigKey spread (#1296)
1 parent e7057cd commit 9e84239

4 files changed

Lines changed: 4 additions & 95 deletions

File tree

packages/sdk/server-ai/__tests__/LDGraphTrackerImpl.test.ts

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -241,71 +241,6 @@ it('drops second trackPath call and warns', () => {
241241
expect(mockWarn).toHaveBeenCalled();
242242
});
243243

244-
// ---------------------------------------------------------------------------
245-
// trackJudgeResult – NOT at-most-once
246-
// ---------------------------------------------------------------------------
247-
248-
it('trackJudgeResult emits an event for a sampled, successful result', () => {
249-
const tracker = makeTracker('r');
250-
tracker.trackJudgeResult({
251-
judgeConfigKey: 'judge-1',
252-
metricKey: 'relevance-score',
253-
score: 0.9,
254-
reasoning: 'good',
255-
success: true,
256-
sampled: true,
257-
});
258-
expect(mockTrack).toHaveBeenCalledTimes(1);
259-
expect(mockTrack).toHaveBeenCalledWith(
260-
'relevance-score',
261-
testContext,
262-
{ ...tracker.getTrackData(), judgeConfigKey: 'judge-1' },
263-
0.9,
264-
);
265-
});
266-
267-
it('trackJudgeResult emits event without judgeConfigKey', () => {
268-
const tracker = makeTracker('r');
269-
tracker.trackJudgeResult({
270-
metricKey: 'relevance-score',
271-
score: 0.7,
272-
success: true,
273-
sampled: true,
274-
});
275-
expect(mockTrack).toHaveBeenCalledWith(
276-
'relevance-score',
277-
testContext,
278-
tracker.getTrackData(),
279-
0.7,
280-
);
281-
});
282-
283-
it('trackJudgeResult can fire multiple times', () => {
284-
const tracker = makeTracker('r');
285-
tracker.trackJudgeResult({ metricKey: 'relevance', score: 0.5, success: true, sampled: true });
286-
tracker.trackJudgeResult({ metricKey: 'relevance', score: 0.7, success: true, sampled: true });
287-
expect(mockTrack).toHaveBeenCalledTimes(2);
288-
expect(mockWarn).not.toHaveBeenCalled();
289-
});
290-
291-
it('trackJudgeResult does not emit when not sampled', () => {
292-
const tracker = makeTracker('r');
293-
tracker.trackJudgeResult({ judgeConfigKey: 'j', success: false, sampled: false });
294-
expect(mockTrack).not.toHaveBeenCalled();
295-
});
296-
297-
it('trackJudgeResult does not emit when success is false', () => {
298-
const tracker = makeTracker('r');
299-
tracker.trackJudgeResult({
300-
judgeConfigKey: 'j',
301-
metricKey: 'relevance',
302-
score: 0.9,
303-
success: false,
304-
sampled: true,
305-
});
306-
expect(mockTrack).not.toHaveBeenCalled();
307-
});
308-
309244
// ---------------------------------------------------------------------------
310245
// Edge-level methods – multi-fire, NOT at-most-once
311246
// ---------------------------------------------------------------------------

packages/sdk/server-ai/src/LDAIConfigTrackerImpl.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,10 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
124124
return;
125125
}
126126
if (result.metricKey !== undefined && result.score !== undefined) {
127-
this._ldClient.track(
128-
result.metricKey,
129-
this._context,
130-
{ ...this.getTrackData(), judgeConfigKey: result.judgeConfigKey },
131-
result.score,
132-
);
127+
const trackData = result.judgeConfigKey
128+
? { ...this.getTrackData(), judgeConfigKey: result.judgeConfigKey }
129+
: this.getTrackData();
130+
this._ldClient.track(result.metricKey, this._context, trackData, result.score);
133131
}
134132
}
135133

packages/sdk/server-ai/src/LDGraphTrackerImpl.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import type { LDContext } from '@launchdarkly/js-server-sdk-common';
22

33
import type { LDGraphTracker } from './api/graph/LDGraphTracker';
44
import type { LDGraphMetricSummary, LDGraphTrackData } from './api/graph/types';
5-
import type { LDJudgeResult } from './api/judge/types';
65
import type { LDTokenUsage } from './api/metrics';
76
import type { LDClientMin } from './LDClientMin';
87

@@ -143,19 +142,6 @@ export class LDGraphTrackerImpl implements LDGraphTracker {
143142
this._ldClient.track('$ld:ai:graph:path', this._context, { ...this.getTrackData(), path }, 1);
144143
}
145144

146-
trackJudgeResult(result: LDJudgeResult): void {
147-
if (!result.sampled || !result.success) {
148-
return;
149-
}
150-
if (result.metricKey !== undefined && result.score !== undefined) {
151-
const trackData = result.judgeConfigKey
152-
? { ...this.getTrackData(), judgeConfigKey: result.judgeConfigKey }
153-
: this.getTrackData();
154-
155-
this._ldClient.track(result.metricKey, this._context, trackData, result.score);
156-
}
157-
}
158-
159145
trackRedirect(sourceKey: string, redirectedTarget: string): void {
160146
this._ldClient.track(
161147
'$ld:ai:graph:redirect',

packages/sdk/server-ai/src/api/graph/LDGraphTracker.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { LDJudgeResult } from '../judge/types';
21
import type { LDTokenUsage } from '../metrics';
32
import type { LDGraphMetricSummary, LDGraphTrackData } from './types';
43

@@ -90,15 +89,6 @@ export interface LDGraphTracker {
9089
*/
9190
trackPath(path: string[]): void;
9291

93-
/**
94-
* Tracks a judge evaluation result for the final graph output.
95-
* Emits one LDClient.track call when the result was sampled and successful.
96-
* Not subject to at-most-once constraints.
97-
*
98-
* @param result Judge result containing score, reasoning, and metadata.
99-
*/
100-
trackJudgeResult(result: LDJudgeResult): void;
101-
10292
// -------------------------------------------------------------------------
10393
// Edge-level tracking methods (multi-fire, not at-most-once)
10494
// -------------------------------------------------------------------------

0 commit comments

Comments
 (0)