@newrelic/preflight 1.50.1 → 1.50.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -31,6 +31,7 @@ export interface ToolSelectionScorerOptions {
|
|
|
31
31
|
readonly unusedOutputPenalty?: number;
|
|
32
32
|
readonly unusedOutputSizeThreshold?: number;
|
|
33
33
|
readonly worstOffenderCount?: number;
|
|
34
|
+
readonly referenceSessionSize?: number;
|
|
34
35
|
}
|
|
35
36
|
export declare class ToolSelectionScorer {
|
|
36
37
|
private readonly redundantReadPenalty;
|
|
@@ -38,7 +39,25 @@ export declare class ToolSelectionScorer {
|
|
|
38
39
|
private readonly unusedOutputPenalty;
|
|
39
40
|
private readonly unusedOutputSizeThreshold;
|
|
40
41
|
private readonly worstOffenderCount;
|
|
42
|
+
private readonly referenceSessionSize;
|
|
41
43
|
constructor(options?: ToolSelectionScorerOptions);
|
|
44
|
+
/**
|
|
45
|
+
* Normalizes a raw summed penalty by session size, one-sided: sessions AT
|
|
46
|
+
* OR BELOW `referenceSessionSize` calls apply the raw penalty as-is
|
|
47
|
+
* (identical to the pre-normalization absolute penalty), while sessions
|
|
48
|
+
* ABOVE it get the penalty diluted in proportion to size — a 1000-call
|
|
49
|
+
* session with 10 redundant reads is punished far less than a 15-call
|
|
50
|
+
* session with the same 10 redundant reads. This is deliberately one-sided
|
|
51
|
+
* (`Math.min(1, referenceSessionSize / totalCalls)`, never > 1): the
|
|
52
|
+
* problem being fixed is large/busy sessions scoring worse than small ones
|
|
53
|
+
* for an identical defect count, not small sessions scoring better — a
|
|
54
|
+
* two-sided scale would fix the former by introducing the same unfairness
|
|
55
|
+
* in the other direction (amplifying penalties for small sessions instead
|
|
56
|
+
* of leaving them untouched). The result is still capped at 0.7 (floor of
|
|
57
|
+
* 0.3) so even a session dense with violations relative to its own size
|
|
58
|
+
* isn't scored as a total failure.
|
|
59
|
+
*/
|
|
60
|
+
private normalizePenalty;
|
|
42
61
|
scoreSession(toolCalls: readonly ToolCallRecord[]): ToolSelectionMetrics;
|
|
43
62
|
/**
|
|
44
63
|
* Recombines per-session summaries (each already scored independently —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-selection-scorer.d.ts","sourceRoot":"","sources":["../../src/metrics/tool-selection-scorer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,eAAe,CAAC;IACzE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAUD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,oBAAoB,CAS1F;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-selection-scorer.d.ts","sourceRoot":"","sources":["../../src/metrics/tool-selection-scorer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,eAAe,CAAC;IACzE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAUD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,oBAAoB,CAS1F;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC;AA4DD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;gBAElC,OAAO,CAAC,EAAE,0BAA0B;IAWhD;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,gBAAgB;IAMxB,YAAY,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,GAAG,oBAAoB;IA+CxE;;;;;;;OAOG;IACH,gBAAgB,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,GAAG,oBAAoB;IA8ClF,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,kBAAkB;CAqB3B"}
|
|
@@ -17,6 +17,12 @@ const DEFAULT_REPEATED_FAILURE_PENALTY = 0.08;
|
|
|
17
17
|
const DEFAULT_UNUSED_OUTPUT_PENALTY = 0.04;
|
|
18
18
|
const DEFAULT_UNUSED_OUTPUT_SIZE_THRESHOLD = 20000;
|
|
19
19
|
const DEFAULT_WORST_OFFENDER_COUNT = 10;
|
|
20
|
+
// Session size (in tool calls) at or below which normalization is a no-op;
|
|
21
|
+
// above it, penalties are diluted in proportion to size — see
|
|
22
|
+
// normalizePenalty(). Chosen to match the illustrative example this
|
|
23
|
+
// normalization is designed to fix (a 15-call session with 10 redundant
|
|
24
|
+
// reads applies the raw, pre-normalization penalty unchanged).
|
|
25
|
+
const DEFAULT_REFERENCE_SESSION_SIZE = 15;
|
|
20
26
|
// Tools whose output is terminal — they perform an action and their output is
|
|
21
27
|
// a confirmation or result, not raw data to be consumed by later tool calls.
|
|
22
28
|
// Penalizing these for "unused output" is nonsensical.
|
|
@@ -61,6 +67,7 @@ export class ToolSelectionScorer {
|
|
|
61
67
|
unusedOutputPenalty;
|
|
62
68
|
unusedOutputSizeThreshold;
|
|
63
69
|
worstOffenderCount;
|
|
70
|
+
referenceSessionSize;
|
|
64
71
|
constructor(options) {
|
|
65
72
|
this.redundantReadPenalty = options?.redundantReadPenalty ?? DEFAULT_REDUNDANT_READ_PENALTY;
|
|
66
73
|
this.repeatedFailurePenalty =
|
|
@@ -69,6 +76,29 @@ export class ToolSelectionScorer {
|
|
|
69
76
|
this.unusedOutputSizeThreshold =
|
|
70
77
|
options?.unusedOutputSizeThreshold ?? DEFAULT_UNUSED_OUTPUT_SIZE_THRESHOLD;
|
|
71
78
|
this.worstOffenderCount = options?.worstOffenderCount ?? DEFAULT_WORST_OFFENDER_COUNT;
|
|
79
|
+
this.referenceSessionSize = options?.referenceSessionSize ?? DEFAULT_REFERENCE_SESSION_SIZE;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Normalizes a raw summed penalty by session size, one-sided: sessions AT
|
|
83
|
+
* OR BELOW `referenceSessionSize` calls apply the raw penalty as-is
|
|
84
|
+
* (identical to the pre-normalization absolute penalty), while sessions
|
|
85
|
+
* ABOVE it get the penalty diluted in proportion to size — a 1000-call
|
|
86
|
+
* session with 10 redundant reads is punished far less than a 15-call
|
|
87
|
+
* session with the same 10 redundant reads. This is deliberately one-sided
|
|
88
|
+
* (`Math.min(1, referenceSessionSize / totalCalls)`, never > 1): the
|
|
89
|
+
* problem being fixed is large/busy sessions scoring worse than small ones
|
|
90
|
+
* for an identical defect count, not small sessions scoring better — a
|
|
91
|
+
* two-sided scale would fix the former by introducing the same unfairness
|
|
92
|
+
* in the other direction (amplifying penalties for small sessions instead
|
|
93
|
+
* of leaving them untouched). The result is still capped at 0.7 (floor of
|
|
94
|
+
* 0.3) so even a session dense with violations relative to its own size
|
|
95
|
+
* isn't scored as a total failure.
|
|
96
|
+
*/
|
|
97
|
+
normalizePenalty(rawPenalty, totalCalls) {
|
|
98
|
+
if (totalCalls <= 0)
|
|
99
|
+
return 0;
|
|
100
|
+
const scale = Math.min(1, this.referenceSessionSize / totalCalls);
|
|
101
|
+
return Math.min(rawPenalty * scale, 0.7);
|
|
72
102
|
}
|
|
73
103
|
scoreSession(toolCalls) {
|
|
74
104
|
if (toolCalls.length === 0) {
|
|
@@ -95,11 +125,7 @@ export class ToolSelectionScorer {
|
|
|
95
125
|
}
|
|
96
126
|
penalties.push(...this.findUnusedOutputs(toolCalls));
|
|
97
127
|
const rawPenalty = penalties.reduce((sum, p) => sum + p.penaltyScore, 0);
|
|
98
|
-
|
|
99
|
-
// 1000-call session with 10 redundant reads isn't unfairly punished the
|
|
100
|
-
// same as a 15-call session with 10 redundant reads. Effective penalty is
|
|
101
|
-
// at most 70% (floor of 0.3 ensures even bad sessions aren't demoralizingly low).
|
|
102
|
-
const totalPenalty = Math.min(rawPenalty, 0.7);
|
|
128
|
+
const totalPenalty = this.normalizePenalty(rawPenalty, toolCalls.length);
|
|
103
129
|
const score = Math.max(0, Math.round((1 - totalPenalty) * 1000) / 1000);
|
|
104
130
|
const worstOffenders = [...penalties]
|
|
105
131
|
.sort((a, b) => b.penaltyScore - a.penaltyScore)
|
|
@@ -151,7 +177,7 @@ export class ToolSelectionScorer {
|
|
|
151
177
|
const rawPenalty = redundantReadCount * this.redundantReadPenalty +
|
|
152
178
|
repeatedFailureCount * this.repeatedFailurePenalty +
|
|
153
179
|
unusedOutputCount * this.unusedOutputPenalty;
|
|
154
|
-
const totalPenalty =
|
|
180
|
+
const totalPenalty = this.normalizePenalty(rawPenalty, totalCalls);
|
|
155
181
|
const score = Math.max(0, Math.round((1 - totalPenalty) * 1000) / 1000);
|
|
156
182
|
return {
|
|
157
183
|
score,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-selection-scorer.js","sourceRoot":"","sources":["../../src/metrics/tool-selection-scorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA2CxD,MAAM,UAAU,sBAAsB,CAAC,OAA6B;IAClE,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-selection-scorer.js","sourceRoot":"","sources":["../../src/metrics/tool-selection-scorer.ts"],"names":[],"mappings":"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"}
|