veryfront 0.1.954 → 0.1.956
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.
- package/esm/cli/commands/eval/command-help.d.ts.map +1 -1
- package/esm/cli/commands/eval/command-help.js +5 -0
- package/esm/cli/commands/eval/command.d.ts +15 -2
- package/esm/cli/commands/eval/command.d.ts.map +1 -1
- package/esm/cli/commands/eval/command.js +158 -14
- package/esm/cli/commands/eval/handler.d.ts +2 -0
- package/esm/cli/commands/eval/handler.d.ts.map +1 -1
- package/esm/cli/commands/eval/handler.js +2 -0
- package/esm/deno.js +1 -1
- package/esm/src/eval/index.d.ts +1 -1
- package/esm/src/eval/index.d.ts.map +1 -1
- package/esm/src/eval/model-comparison.d.ts.map +1 -1
- package/esm/src/eval/model-comparison.js +167 -2
- package/esm/src/eval/types.d.ts +17 -0
- package/esm/src/eval/types.d.ts.map +1 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WA2EtB,CAAC"}
|
|
@@ -48,6 +48,10 @@ export const evalHelp = {
|
|
|
48
48
|
flag: "--candidate-model <provider/model>",
|
|
49
49
|
description: "Candidate model to compare against --baseline-model; repeat for multiple candidates",
|
|
50
50
|
},
|
|
51
|
+
{
|
|
52
|
+
flag: "--comparison-policy <path>",
|
|
53
|
+
description: "Read model comparison constraints and weighted objectives from JSON",
|
|
54
|
+
},
|
|
51
55
|
{
|
|
52
56
|
flag: "--max-output-tokens <count>",
|
|
53
57
|
description: "Limit target agent output tokens",
|
|
@@ -64,6 +68,7 @@ export const evalHelp = {
|
|
|
64
68
|
"veryfront eval eval:deep-research --report .veryfront/evals/deep-research/report.json --junit .veryfront/evals/deep-research/junit.xml",
|
|
65
69
|
"veryfront eval deep-research --baseline .veryfront/evals/baseline.json --json",
|
|
66
70
|
"veryfront eval deep-research --baseline-model anthropic/claude-sonnet-4-6 --candidate-model moonshotai/kimi-k2.6",
|
|
71
|
+
"veryfront eval deep-research --baseline-model anthropic/claude-sonnet-4-6 --candidate-model moonshotai/kimi-k2.6 --comparison-policy evals/model-comparison.policy.json",
|
|
67
72
|
"veryfront eval deep-research --export braintrust,langfuse --json",
|
|
68
73
|
"veryfront eval deep-research --json",
|
|
69
74
|
],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentResponse } from "../../../src/agent/index.js";
|
|
2
2
|
import type { VeryfrontConfig } from "../../../src/config/index.js";
|
|
3
|
-
import type { DiscoveredEval, EvalModelComparison, EvalReport, EvalReportComparison, EvalToolCall } from "../../../src/eval/index.js";
|
|
3
|
+
import type { DiscoveredEval, EvalModelComparison, EvalModelComparisonOptions, EvalReport, EvalReportComparison, EvalToolCall } from "../../../src/eval/index.js";
|
|
4
4
|
import type { EvalArgs } from "./handler.js";
|
|
5
5
|
export interface EvalOptions extends EvalArgs {
|
|
6
6
|
}
|
|
@@ -35,6 +35,7 @@ type EvalSummaryArtifact = {
|
|
|
35
35
|
exports?: EvalReport["exports"];
|
|
36
36
|
baseline?: EvalReportComparison;
|
|
37
37
|
};
|
|
38
|
+
type EvalModelComparisonPolicy = Omit<EvalModelComparisonOptions, "baselineModel">;
|
|
38
39
|
export declare function createDefaultEvalReportDir(runId: string): string;
|
|
39
40
|
export declare function createEvalArtifactPaths(reportDir: string): EvalArtifactPaths;
|
|
40
41
|
export declare function createEvalModelArtifactPaths(reportDir: string, model: string): EvalModelArtifactPaths;
|
|
@@ -43,7 +44,9 @@ export declare function findEvalForCliId(evals: DiscoveredEval[], id: string): D
|
|
|
43
44
|
export declare function normalizeEvalInputForAgent(input: unknown): string;
|
|
44
45
|
export declare function summarizeReportForCli(report: EvalReport): CliEvalSummary;
|
|
45
46
|
export declare function createSummaryArtifact(report: EvalReport, baseline?: EvalReportComparison): EvalSummaryArtifact;
|
|
46
|
-
export declare function
|
|
47
|
+
export declare function loadEvalModelComparisonPolicy(projectDir: string, policyPath?: string): Promise<EvalModelComparisonPolicy>;
|
|
48
|
+
export declare function createResolvedEvalModelComparisonConfig(projectDir: string, options: EvalOptions): Promise<ResolvedEvalModelComparisonConfig | undefined>;
|
|
49
|
+
export declare function createEvalModelComparisonArtifact(reports: EvalReport[], baselineModel: string, policy?: EvalModelComparisonPolicy): EvalModelComparison;
|
|
47
50
|
export declare function createEvalModelComparisonExitCode(reports: EvalReport[]): 0 | 1;
|
|
48
51
|
export declare function createResultsJsonl(report: EvalReport): string;
|
|
49
52
|
export declare function createJunitXml(report: EvalReport): string;
|
|
@@ -54,6 +57,16 @@ type EvalRuntimeAuthConfig = Pick<VeryfrontConfig, "projectSlug" | "fs"> & {
|
|
|
54
57
|
};
|
|
55
58
|
export declare function hydrateEvalRuntimeAuth(projectDir: string, config: EvalRuntimeAuthConfig | null | undefined): Promise<import("../../shared/runtime-auth.js").RuntimeAuthContext>;
|
|
56
59
|
export declare function normalizeToolCalls(response: AgentResponse): EvalToolCall[];
|
|
60
|
+
type EvalModelComparisonConfig = {
|
|
61
|
+
baselineModel: string;
|
|
62
|
+
candidateModels: string[];
|
|
63
|
+
comparisonPolicy?: string;
|
|
64
|
+
models: string[];
|
|
65
|
+
};
|
|
66
|
+
type ResolvedEvalModelComparisonConfig = {
|
|
67
|
+
config: EvalModelComparisonConfig;
|
|
68
|
+
policy: EvalModelComparisonPolicy;
|
|
69
|
+
};
|
|
57
70
|
export declare function evalCommand(options: EvalOptions): Promise<void>;
|
|
58
71
|
export {};
|
|
59
72
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EAGd,mBAAmB,EAEnB,UAAU,EACV,oBAAoB,EAEpB,YAAY,EACb,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,QAAQ;CAAG;AAEhD,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,sBAAsB,GAAG,iBAAiB,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AASF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC,CAAC;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,24 @@
|
|
|
2
2
|
* Eval command - Discover and run eval definitions from the evals/ directory.
|
|
3
3
|
*/
|
|
4
4
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
5
|
-
import { dirname, join, relative } from "../../../deps/jsr.io/@std/path/1.1.4/mod.js";
|
|
5
|
+
import { dirname, isAbsolute, join, relative, resolve } from "../../../deps/jsr.io/@std/path/1.1.4/mod.js";
|
|
6
6
|
import { createProjectDiscoveryConfig, discoverAll } from "../../../src/discovery/index.js";
|
|
7
7
|
import { compareEvalModelReports, compareEvalReports, createEvalModelComparisonMarkdown, discoverEvals, resolveEvalRunProvenance, runEval, } from "../../../src/eval/index.js";
|
|
8
8
|
import { applyRuntimeAuthContext } from "../../shared/runtime-auth.js";
|
|
9
9
|
import { cliLogger, exitProcess, VERSION } from "../../utils/index.js";
|
|
10
10
|
import { createErrorEnvelope, createSuccessEnvelope, isJsonMode, outputJson, } from "../../shared/json-output.js";
|
|
11
11
|
import { withProjectSourceContext } from "../../shared/project-source-context.js";
|
|
12
|
+
const MODEL_COMPARISON_METRICS = [
|
|
13
|
+
"passRate",
|
|
14
|
+
"failed",
|
|
15
|
+
"gateFailures",
|
|
16
|
+
"groundednessScore",
|
|
17
|
+
"totalTokens",
|
|
18
|
+
"costUsd",
|
|
19
|
+
"p95Ms",
|
|
20
|
+
];
|
|
21
|
+
const MODEL_COMPARISON_METRIC_SET = new Set(MODEL_COMPARISON_METRICS);
|
|
22
|
+
const MODEL_COMPARISON_OBJECTIVE_DIRECTIONS = new Set(["minimize", "maximize"]);
|
|
12
23
|
function xmlEscape(value) {
|
|
13
24
|
return value
|
|
14
25
|
.replaceAll("&", "&")
|
|
@@ -135,8 +146,135 @@ export function createSummaryArtifact(report, baseline) {
|
|
|
135
146
|
...(baseline ? { baseline } : {}),
|
|
136
147
|
};
|
|
137
148
|
}
|
|
138
|
-
|
|
139
|
-
return
|
|
149
|
+
function isRecord(value) {
|
|
150
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
151
|
+
}
|
|
152
|
+
function readNumberField(record, field, path) {
|
|
153
|
+
const value = record[field];
|
|
154
|
+
if (value === undefined)
|
|
155
|
+
return undefined;
|
|
156
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
157
|
+
throw new Error(`Invalid --comparison-policy: ${path}.${field} must be a finite number.`);
|
|
158
|
+
}
|
|
159
|
+
return value;
|
|
160
|
+
}
|
|
161
|
+
function assertKnownComparisonMetric(metric, path) {
|
|
162
|
+
if (MODEL_COMPARISON_METRIC_SET.has(metric))
|
|
163
|
+
return metric;
|
|
164
|
+
throw new Error(`Invalid --comparison-policy: ${path} uses unknown metric "${metric}".`);
|
|
165
|
+
}
|
|
166
|
+
function parseComparisonConstraints(value) {
|
|
167
|
+
if (value === undefined)
|
|
168
|
+
return undefined;
|
|
169
|
+
if (!isRecord(value)) {
|
|
170
|
+
throw new Error("Invalid --comparison-policy: constraints must be an object.");
|
|
171
|
+
}
|
|
172
|
+
const constraints = {};
|
|
173
|
+
for (const [metricName, rawConstraint] of Object.entries(value)) {
|
|
174
|
+
const metric = assertKnownComparisonMetric(metricName, `constraints.${metricName}`);
|
|
175
|
+
if (!isRecord(rawConstraint)) {
|
|
176
|
+
throw new Error(`Invalid --comparison-policy: constraints.${metricName} must be an object.`);
|
|
177
|
+
}
|
|
178
|
+
const maxRegressionPct = readNumberField(rawConstraint, "maxRegressionPct", `constraints.${metricName}`);
|
|
179
|
+
if (maxRegressionPct !== undefined && maxRegressionPct < 0) {
|
|
180
|
+
throw new Error(`Invalid --comparison-policy: constraints.${metricName}.maxRegressionPct must be at least 0.`);
|
|
181
|
+
}
|
|
182
|
+
constraints[metric] = {
|
|
183
|
+
...(rawConstraint.min !== undefined
|
|
184
|
+
? { min: readNumberField(rawConstraint, "min", `constraints.${metricName}`) }
|
|
185
|
+
: {}),
|
|
186
|
+
...(rawConstraint.max !== undefined
|
|
187
|
+
? { max: readNumberField(rawConstraint, "max", `constraints.${metricName}`) }
|
|
188
|
+
: {}),
|
|
189
|
+
...(maxRegressionPct !== undefined ? { maxRegressionPct } : {}),
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
return constraints;
|
|
193
|
+
}
|
|
194
|
+
function parseComparisonObjectives(value) {
|
|
195
|
+
if (value === undefined)
|
|
196
|
+
return undefined;
|
|
197
|
+
if (!isRecord(value)) {
|
|
198
|
+
throw new Error("Invalid --comparison-policy: objectives must be an object.");
|
|
199
|
+
}
|
|
200
|
+
const objectives = {};
|
|
201
|
+
for (const [metricName, rawObjective] of Object.entries(value)) {
|
|
202
|
+
const metric = assertKnownComparisonMetric(metricName, `objectives.${metricName}`);
|
|
203
|
+
if (!isRecord(rawObjective)) {
|
|
204
|
+
throw new Error(`Invalid --comparison-policy: objectives.${metricName} must be an object.`);
|
|
205
|
+
}
|
|
206
|
+
const weight = readNumberField(rawObjective, "weight", `objectives.${metricName}`);
|
|
207
|
+
if (weight === undefined) {
|
|
208
|
+
throw new Error(`Invalid --comparison-policy: objectives.${metricName}.weight is required.`);
|
|
209
|
+
}
|
|
210
|
+
if (weight <= 0) {
|
|
211
|
+
throw new Error(`Invalid --comparison-policy: objectives.${metricName}.weight must be greater than 0.`);
|
|
212
|
+
}
|
|
213
|
+
const direction = rawObjective.direction;
|
|
214
|
+
if (typeof direction !== "string" || !MODEL_COMPARISON_OBJECTIVE_DIRECTIONS.has(direction)) {
|
|
215
|
+
throw new Error(`Invalid --comparison-policy: objectives.${metricName}.direction must be "minimize" or "maximize".`);
|
|
216
|
+
}
|
|
217
|
+
objectives[metric] = {
|
|
218
|
+
weight,
|
|
219
|
+
direction: direction,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
return objectives;
|
|
223
|
+
}
|
|
224
|
+
export async function loadEvalModelComparisonPolicy(projectDir, policyPath) {
|
|
225
|
+
if (!policyPath)
|
|
226
|
+
return {};
|
|
227
|
+
const resolvedPath = isAbsolute(policyPath) ? policyPath : resolve(projectDir, policyPath);
|
|
228
|
+
let rawPolicy;
|
|
229
|
+
try {
|
|
230
|
+
rawPolicy = await dntShim.Deno.readTextFile(resolvedPath);
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
if (error instanceof dntShim.Deno.errors.NotFound) {
|
|
234
|
+
throw new Error("Invalid --comparison-policy: file not found.");
|
|
235
|
+
}
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
238
|
+
let policy;
|
|
239
|
+
try {
|
|
240
|
+
policy = JSON.parse(rawPolicy);
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
throw new Error("Invalid --comparison-policy: file must contain valid JSON.");
|
|
244
|
+
}
|
|
245
|
+
if (!isRecord(policy)) {
|
|
246
|
+
throw new Error("Invalid --comparison-policy: root value must be an object.");
|
|
247
|
+
}
|
|
248
|
+
return {
|
|
249
|
+
...("minGroundedness" in policy
|
|
250
|
+
? { minGroundedness: readNumberField(policy, "minGroundedness", "root") }
|
|
251
|
+
: {}),
|
|
252
|
+
...("minCostImprovementPct" in policy
|
|
253
|
+
? { minCostImprovementPct: readNumberField(policy, "minCostImprovementPct", "root") }
|
|
254
|
+
: {}),
|
|
255
|
+
...("minTokenImprovementPct" in policy
|
|
256
|
+
? { minTokenImprovementPct: readNumberField(policy, "minTokenImprovementPct", "root") }
|
|
257
|
+
: {}),
|
|
258
|
+
...("minLatencyImprovementPct" in policy
|
|
259
|
+
? { minLatencyImprovementPct: readNumberField(policy, "minLatencyImprovementPct", "root") }
|
|
260
|
+
: {}),
|
|
261
|
+
...(policy.constraints !== undefined
|
|
262
|
+
? { constraints: parseComparisonConstraints(policy.constraints) }
|
|
263
|
+
: {}),
|
|
264
|
+
...(policy.objectives !== undefined
|
|
265
|
+
? { objectives: parseComparisonObjectives(policy.objectives) }
|
|
266
|
+
: {}),
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
export async function createResolvedEvalModelComparisonConfig(projectDir, options) {
|
|
270
|
+
const config = resolveEvalModelComparisonConfig(options);
|
|
271
|
+
if (!config)
|
|
272
|
+
return undefined;
|
|
273
|
+
const policy = await loadEvalModelComparisonPolicy(projectDir, config.comparisonPolicy);
|
|
274
|
+
return { config, policy };
|
|
275
|
+
}
|
|
276
|
+
export function createEvalModelComparisonArtifact(reports, baselineModel, policy = {}) {
|
|
277
|
+
return compareEvalModelReports(reports, { ...policy, baselineModel });
|
|
140
278
|
}
|
|
141
279
|
export function createEvalModelComparisonExitCode(reports) {
|
|
142
280
|
return reports.some((report) => report.summary.failed > 0) ? 1 : 0;
|
|
@@ -299,8 +437,12 @@ function uniqueValues(values) {
|
|
|
299
437
|
function resolveEvalModelComparisonConfig(options) {
|
|
300
438
|
const candidateModels = uniqueValues(options.candidateModels);
|
|
301
439
|
const baselineModel = options.baselineModel?.trim();
|
|
302
|
-
if (!baselineModel && candidateModels.length === 0)
|
|
440
|
+
if (!baselineModel && candidateModels.length === 0) {
|
|
441
|
+
if (options.comparisonPolicy) {
|
|
442
|
+
throw new Error("--comparison-policy requires --baseline-model and --candidate-model.");
|
|
443
|
+
}
|
|
303
444
|
return undefined;
|
|
445
|
+
}
|
|
304
446
|
if (!baselineModel) {
|
|
305
447
|
throw new Error("--baseline-model is required when using --candidate-model.");
|
|
306
448
|
}
|
|
@@ -316,6 +458,7 @@ function resolveEvalModelComparisonConfig(options) {
|
|
|
316
458
|
return {
|
|
317
459
|
baselineModel,
|
|
318
460
|
candidateModels: candidateModels.filter((model) => model !== baselineModel),
|
|
461
|
+
...(options.comparisonPolicy ? { comparisonPolicy: options.comparisonPolicy } : {}),
|
|
319
462
|
models: uniqueValues([baselineModel, ...candidateModels]),
|
|
320
463
|
};
|
|
321
464
|
}
|
|
@@ -355,7 +498,7 @@ async function runEvalModelComparison(input) {
|
|
|
355
498
|
await writeEvalArtifacts(report, modelPaths);
|
|
356
499
|
await writeTextFileEnsuringDir(modelPaths.junit, createJunitXml(report));
|
|
357
500
|
}
|
|
358
|
-
const comparison = createEvalModelComparisonArtifact(reports, input.config.baselineModel);
|
|
501
|
+
const comparison = createEvalModelComparisonArtifact(reports, input.config.baselineModel, input.policy);
|
|
359
502
|
await writeEvalModelComparisonArtifacts(comparison, paths);
|
|
360
503
|
if (input.options.report) {
|
|
361
504
|
await writeTextFileEnsuringDir(input.options.report, JSON.stringify(comparison, null, 2));
|
|
@@ -479,6 +622,14 @@ export async function evalCommand(options) {
|
|
|
479
622
|
await outputEvalNotFound(evalId, evalDiscovery.evals);
|
|
480
623
|
return;
|
|
481
624
|
}
|
|
625
|
+
let modelComparisonConfig;
|
|
626
|
+
try {
|
|
627
|
+
modelComparisonConfig = await createResolvedEvalModelComparisonConfig(projectDir, options);
|
|
628
|
+
}
|
|
629
|
+
catch (error) {
|
|
630
|
+
await outputEvalUsageError(error instanceof Error ? error.message : String(error));
|
|
631
|
+
return;
|
|
632
|
+
}
|
|
482
633
|
const discoveryConfig = createProjectDiscoveryConfig({
|
|
483
634
|
projectDir,
|
|
484
635
|
config,
|
|
@@ -492,21 +643,14 @@ export async function evalCommand(options) {
|
|
|
492
643
|
await outputAgentNotFound(agentId);
|
|
493
644
|
return;
|
|
494
645
|
}
|
|
495
|
-
let modelComparisonConfig;
|
|
496
|
-
try {
|
|
497
|
-
modelComparisonConfig = resolveEvalModelComparisonConfig(options);
|
|
498
|
-
}
|
|
499
|
-
catch (error) {
|
|
500
|
-
await outputEvalUsageError(error instanceof Error ? error.message : String(error));
|
|
501
|
-
return;
|
|
502
|
-
}
|
|
503
646
|
if (modelComparisonConfig) {
|
|
504
647
|
await runEvalModelComparison({
|
|
505
648
|
evalItem,
|
|
506
649
|
agent,
|
|
507
650
|
options,
|
|
508
651
|
projectDir,
|
|
509
|
-
config: modelComparisonConfig,
|
|
652
|
+
config: modelComparisonConfig.config,
|
|
653
|
+
policy: modelComparisonConfig.policy,
|
|
510
654
|
});
|
|
511
655
|
return;
|
|
512
656
|
}
|
|
@@ -14,6 +14,7 @@ declare const getEvalArgsSchema: () => import("../../../src/internal-agents/sche
|
|
|
14
14
|
model: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
|
|
15
15
|
baselineModel: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
|
|
16
16
|
candidateModels: import("../../../src/internal-agents/schema.js").Schema<string[]>;
|
|
17
|
+
comparisonPolicy: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
|
|
17
18
|
maxOutputTokens: import("../../../src/internal-agents/schema.js").Schema<number | undefined>;
|
|
18
19
|
}>>;
|
|
19
20
|
export type EvalArgs = InferSchema<ReturnType<typeof getEvalArgsSchema>>;
|
|
@@ -31,6 +32,7 @@ export declare const parseEvalArgs: (args: ParsedArgs) => import("../../shared/a
|
|
|
31
32
|
model: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
|
|
32
33
|
baselineModel: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
|
|
33
34
|
candidateModels: import("../../../src/internal-agents/schema.js").Schema<string[]>;
|
|
35
|
+
comparisonPolicy: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
|
|
34
36
|
maxOutputTokens: import("../../../src/internal-agents/schema.js").Schema<number | undefined>;
|
|
35
37
|
}>>;
|
|
36
38
|
export declare function handleEvalCommand(args: ParsedArgs): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,QAAA,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;GAkBtB,CAAC;AAIF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;GAgBxB,CAAC;AAEH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE"}
|
|
@@ -14,6 +14,7 @@ const getEvalArgsSchema = defineSchema((v) => v.object({
|
|
|
14
14
|
model: v.string().optional(),
|
|
15
15
|
baselineModel: v.string().optional(),
|
|
16
16
|
candidateModels: v.array(v.string()).default([]),
|
|
17
|
+
comparisonPolicy: v.string().optional(),
|
|
17
18
|
maxOutputTokens: v.number().int().positive().optional(),
|
|
18
19
|
}));
|
|
19
20
|
const EvalArgsSchema = lazySchema(getEvalArgsSchema);
|
|
@@ -31,6 +32,7 @@ export const parseEvalArgs = createArgParser(EvalArgsSchema, {
|
|
|
31
32
|
model: { keys: ["model"], type: "string" },
|
|
32
33
|
baselineModel: { keys: ["baseline-model"], type: "string" },
|
|
33
34
|
candidateModels: { keys: ["candidate-model", "candidate-models"], type: "array" },
|
|
35
|
+
comparisonPolicy: { keys: ["comparison-policy"], type: "string" },
|
|
34
36
|
maxOutputTokens: { keys: ["max-output-tokens"], type: "number" },
|
|
35
37
|
});
|
|
36
38
|
export async function handleEvalCommand(args) {
|
package/esm/deno.js
CHANGED
package/esm/src/eval/index.d.ts
CHANGED
|
@@ -56,6 +56,6 @@ export { deriveEvalId, discoverEvals, findEvalById } from "./discovery.js";
|
|
|
56
56
|
export { createEvalSourceDocument, getEvalEditableFieldSchema, getEvalRunSchema, getEvalSourceDocumentSchema, getEvalSourcePatchSchema, getEvalSourceReferenceSchema, getEvalStudioCapabilitySchema, } from "./studio.js";
|
|
57
57
|
export type { DiscoveredEval, EvalDiscoveryOptions, EvalDiscoveryResult } from "./discovery.js";
|
|
58
58
|
export type { EvalLlmGroundednessJudgeOptions } from "./judges.js";
|
|
59
|
-
export type { EvalAgentAdapter, EvalAgentAdapterContext, EvalAgentAdapterResult, EvalAgentInput, EvalAnswerGroundednessMetricOptions, EvalCheckContext, EvalDataset, EvalDatasetLoadContext, EvalDefinition, EvalDurationSummary, EvalExample, EvalExampleInput, EvalExpect, EvalExpectation, EvalFailedExampleSummary, EvalFlakeSummary, EvalGateFailureSummary, EvalKnowledgeExpectedSource, EvalKnowledgeMrrMetricOptions, EvalKnowledgeRetrievalMetricOptions, EvalMetric, EvalMetricContext, EvalMetricDeltaSummary, EvalMetricFamily, EvalMetricResult, EvalMetricSummary, EvalMetricThreshold, EvalModelCandidateComparison, EvalModelComparison, EvalModelComparisonDecision, EvalModelComparisonOptions, EvalModelReportSummary, EvalRecord, EvalReport, EvalReportComparison, EvalReportExportConfig, EvalReportMetadata, EvalReportSummary, EvalRunProvenance, EvalSeverity, EvalSource, EvalTargetKind, EvalToolCall, EvalToolCallCountOptions, EvalToolCallMatchOptions, EvalToolCallStatus, EvalToolInputMatchMode, EvalTrace, EvalUsage, EvalUsageSummary, RunEvalOptions, } from "./types.js";
|
|
59
|
+
export type { EvalAgentAdapter, EvalAgentAdapterContext, EvalAgentAdapterResult, EvalAgentInput, EvalAnswerGroundednessMetricOptions, EvalCheckContext, EvalDataset, EvalDatasetLoadContext, EvalDefinition, EvalDurationSummary, EvalExample, EvalExampleInput, EvalExpect, EvalExpectation, EvalFailedExampleSummary, EvalFlakeSummary, EvalGateFailureSummary, EvalKnowledgeExpectedSource, EvalKnowledgeMrrMetricOptions, EvalKnowledgeRetrievalMetricOptions, EvalMetric, EvalMetricContext, EvalMetricDeltaSummary, EvalMetricFamily, EvalMetricResult, EvalMetricSummary, EvalMetricThreshold, EvalModelCandidateComparison, EvalModelComparison, EvalModelComparisonConstraint, EvalModelComparisonDecision, EvalModelComparisonMetricName, EvalModelComparisonObjective, EvalModelComparisonOptions, EvalModelReportSummary, EvalRecord, EvalReport, EvalReportComparison, EvalReportExportConfig, EvalReportMetadata, EvalReportSummary, EvalRunProvenance, EvalSeverity, EvalSource, EvalTargetKind, EvalToolCall, EvalToolCallCountOptions, EvalToolCallMatchOptions, EvalToolCallStatus, EvalToolInputMatchMode, EvalTrace, EvalUsage, EvalUsageSummary, RunEvalOptions, } from "./types.js";
|
|
60
60
|
export type { CreateEvalSourceDocumentOptions, EvalEditableField, EvalRun, EvalSourceDocument, EvalSourcePatch, EvalSourceReference, EvalStudioCapability, } from "./studio.js";
|
|
61
61
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/eval/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChG,YAAY,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAEnE,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,mCAAmC,EACnC,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,6BAA6B,EAC7B,mCAAmC,EACnC,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,+BAA+B,EAC/B,iBAAiB,EACjB,OAAO,EACP,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/eval/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChG,YAAY,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAEnE,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,mCAAmC,EACnC,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,6BAA6B,EAC7B,mCAAmC,EACnC,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,EAC1B,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,+BAA+B,EAC/B,iBAAiB,EACjB,OAAO,EACP,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-comparison.d.ts","sourceRoot":"","sources":["../../../src/src/eval/model-comparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,mBAAmB,
|
|
1
|
+
{"version":3,"file":"model-comparison.d.ts","sourceRoot":"","sources":["../../../src/src/eval/model-comparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,mBAAmB,EAEnB,0BAA0B,EAE1B,UAAU,EACX,MAAM,YAAY,CAAC;AAwapB,oFAAoF;AACpF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE,0BAA0B,GAClC,mBAAmB,CAqBrB;AAcD,gFAAgF;AAChF,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAoDzF"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { compareEvalReports } from "./baseline.js";
|
|
2
2
|
const DEFAULT_MIN_GROUNDEDNESS = 0.8;
|
|
3
3
|
const DEFAULT_MIN_EFFICIENCY_IMPROVEMENT = 0.1;
|
|
4
|
+
const LOWER_IS_BETTER = new Set([
|
|
5
|
+
"failed",
|
|
6
|
+
"gateFailures",
|
|
7
|
+
"totalTokens",
|
|
8
|
+
"costUsd",
|
|
9
|
+
"p95Ms",
|
|
10
|
+
]);
|
|
4
11
|
function reportModel(report) {
|
|
5
12
|
return report.metadata?.model ?? report.runId;
|
|
6
13
|
}
|
|
@@ -34,6 +41,116 @@ function meetsImprovement(value, threshold) {
|
|
|
34
41
|
function formatPct(value) {
|
|
35
42
|
return `${Math.round(value * 100)}%`;
|
|
36
43
|
}
|
|
44
|
+
function formatScore(value) {
|
|
45
|
+
return Math.round(value * 100_000) / 100_000;
|
|
46
|
+
}
|
|
47
|
+
function metricValue(summary, metric) {
|
|
48
|
+
switch (metric) {
|
|
49
|
+
case "passRate":
|
|
50
|
+
return summary.passRate;
|
|
51
|
+
case "failed":
|
|
52
|
+
return summary.failed;
|
|
53
|
+
case "gateFailures":
|
|
54
|
+
return summary.gateFailures;
|
|
55
|
+
case "groundednessScore":
|
|
56
|
+
return summary.groundednessScore;
|
|
57
|
+
case "totalTokens":
|
|
58
|
+
return summary.totalTokens;
|
|
59
|
+
case "costUsd":
|
|
60
|
+
return summary.costUsd;
|
|
61
|
+
case "p95Ms":
|
|
62
|
+
return summary.p95Ms;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function regressionPct(input) {
|
|
66
|
+
const worsenedBy = input.lowerIsBetter
|
|
67
|
+
? input.candidate - input.baseline
|
|
68
|
+
: input.baseline - input.candidate;
|
|
69
|
+
if (worsenedBy <= 0)
|
|
70
|
+
return 0;
|
|
71
|
+
if (input.baseline === 0)
|
|
72
|
+
return Number.POSITIVE_INFINITY;
|
|
73
|
+
return worsenedBy / Math.abs(input.baseline);
|
|
74
|
+
}
|
|
75
|
+
function objectiveDelta(input) {
|
|
76
|
+
const delta = input.direction === "minimize"
|
|
77
|
+
? input.baseline - input.candidate
|
|
78
|
+
: input.candidate - input.baseline;
|
|
79
|
+
if (input.baseline === 0) {
|
|
80
|
+
if (delta === 0)
|
|
81
|
+
return 0;
|
|
82
|
+
return delta / Math.max(Math.abs(input.candidate), 1);
|
|
83
|
+
}
|
|
84
|
+
return delta / Math.abs(input.baseline);
|
|
85
|
+
}
|
|
86
|
+
function evaluateConstraints(input) {
|
|
87
|
+
const failures = [];
|
|
88
|
+
for (const [metric, constraint] of Object.entries(input.options.constraints ?? {})) {
|
|
89
|
+
if (!constraint)
|
|
90
|
+
continue;
|
|
91
|
+
const candidateValue = metricValue(input.candidateSummary, metric);
|
|
92
|
+
if (candidateValue === undefined) {
|
|
93
|
+
failures.push(`${metric} was not measured`);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (constraint.min !== undefined && candidateValue < constraint.min) {
|
|
97
|
+
failures.push(`${metric} ${candidateValue} is below the required ${constraint.min}`);
|
|
98
|
+
}
|
|
99
|
+
if (constraint.max !== undefined && candidateValue > constraint.max) {
|
|
100
|
+
failures.push(`${metric} ${candidateValue} is above the allowed ${constraint.max}`);
|
|
101
|
+
}
|
|
102
|
+
if (constraint.maxRegressionPct !== undefined) {
|
|
103
|
+
const baselineValue = metricValue(input.baselineSummary, metric);
|
|
104
|
+
if (baselineValue === undefined) {
|
|
105
|
+
failures.push(`${metric} baseline was not measured`);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const regression = regressionPct({
|
|
109
|
+
baseline: baselineValue,
|
|
110
|
+
candidate: candidateValue,
|
|
111
|
+
lowerIsBetter: LOWER_IS_BETTER.has(metric),
|
|
112
|
+
});
|
|
113
|
+
if (regression > constraint.maxRegressionPct) {
|
|
114
|
+
failures.push(`${metric} regressed by ${formatPct(regression)}, above the allowed ${formatPct(constraint.maxRegressionPct)}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return failures;
|
|
119
|
+
}
|
|
120
|
+
function evaluateObjectiveScore(input) {
|
|
121
|
+
const objectives = Object.entries(input.options.objectives ?? {});
|
|
122
|
+
if (objectives.length === 0)
|
|
123
|
+
return { missing: [] };
|
|
124
|
+
const missing = [];
|
|
125
|
+
let weightedScore = 0;
|
|
126
|
+
let totalWeight = 0;
|
|
127
|
+
for (const [metric, objective] of objectives) {
|
|
128
|
+
if (!objective || objective.weight <= 0)
|
|
129
|
+
continue;
|
|
130
|
+
const baselineValue = metricValue(input.baselineSummary, metric);
|
|
131
|
+
const candidateValue = metricValue(input.candidateSummary, metric);
|
|
132
|
+
if (baselineValue === undefined || candidateValue === undefined) {
|
|
133
|
+
missing.push(metric);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
weightedScore += objective.weight *
|
|
137
|
+
objectiveDelta({
|
|
138
|
+
baseline: baselineValue,
|
|
139
|
+
candidate: candidateValue,
|
|
140
|
+
direction: objective.direction,
|
|
141
|
+
});
|
|
142
|
+
totalWeight += objective.weight;
|
|
143
|
+
}
|
|
144
|
+
if (missing.length > 0 || totalWeight === 0) {
|
|
145
|
+
return { missing };
|
|
146
|
+
}
|
|
147
|
+
return { score: formatScore(weightedScore / totalWeight), missing: [] };
|
|
148
|
+
}
|
|
149
|
+
function hasBlockingRegression(comparison) {
|
|
150
|
+
return comparison.passRateDelta < 0 || comparison.failedDelta > 0 ||
|
|
151
|
+
comparison.newFailedExamples.length > 0 ||
|
|
152
|
+
comparison.metricDeltas.some((metric) => metric.severity !== "soft" && metric.regressed);
|
|
153
|
+
}
|
|
37
154
|
function modelSummary(report, baselineModel) {
|
|
38
155
|
const model = reportModel(report);
|
|
39
156
|
const groundedness = groundednessScore(report);
|
|
@@ -64,7 +181,7 @@ function createCandidateDecision(input) {
|
|
|
64
181
|
const candidateSummary = modelSummary(input.candidate, baselineModel);
|
|
65
182
|
const baselineComparison = compareEvalReports(input.candidate, input.baseline);
|
|
66
183
|
const reasons = [];
|
|
67
|
-
if (input.candidate.summary.failed > 0 || baselineComparison
|
|
184
|
+
if (input.candidate.summary.failed > 0 || hasBlockingRegression(baselineComparison) ||
|
|
68
185
|
baselineComparison.newFailedExamples.length > 0) {
|
|
69
186
|
reasons.push("candidate has quality regressions");
|
|
70
187
|
if (baselineComparison.newFailedExamples.length > 0) {
|
|
@@ -84,6 +201,34 @@ function createCandidateDecision(input) {
|
|
|
84
201
|
else {
|
|
85
202
|
reasons.push(`groundedness is at or above ${input.options.minGroundedness}`);
|
|
86
203
|
}
|
|
204
|
+
const constraintFailures = evaluateConstraints({
|
|
205
|
+
baselineSummary,
|
|
206
|
+
candidateSummary,
|
|
207
|
+
options: input.options,
|
|
208
|
+
});
|
|
209
|
+
if (constraintFailures.length > 0) {
|
|
210
|
+
reasons.push("candidate failed configured constraints");
|
|
211
|
+
return { constraintFailures, decision: "keep-baseline", reasons };
|
|
212
|
+
}
|
|
213
|
+
if (Object.keys(input.options.objectives ?? {}).length > 0) {
|
|
214
|
+
const objective = evaluateObjectiveScore({
|
|
215
|
+
baselineSummary,
|
|
216
|
+
candidateSummary,
|
|
217
|
+
options: input.options,
|
|
218
|
+
});
|
|
219
|
+
if (objective.missing.length > 0 || objective.score === undefined) {
|
|
220
|
+
reasons.push(`objectives could not be measured: ${objective.missing.join(", ") || "none"}`);
|
|
221
|
+
return { decision: "needs-review", reasons };
|
|
222
|
+
}
|
|
223
|
+
reasons.push(`weighted objective score: ${objective.score}`);
|
|
224
|
+
if (objective.score > 0) {
|
|
225
|
+
return { decision: "promote-candidate", objectiveScore: objective.score, reasons };
|
|
226
|
+
}
|
|
227
|
+
if (objective.score < 0) {
|
|
228
|
+
return { decision: "keep-baseline", objectiveScore: objective.score, reasons };
|
|
229
|
+
}
|
|
230
|
+
return { decision: "needs-review", objectiveScore: objective.score, reasons };
|
|
231
|
+
}
|
|
87
232
|
const costImprovement = improvementPct(baselineSummary.costUsd, candidateSummary.costUsd);
|
|
88
233
|
const tokenImprovement = improvementPct(baselineSummary.totalTokens, candidateSummary.totalTokens);
|
|
89
234
|
const latencyImprovement = improvementPct(baselineSummary.p95Ms, candidateSummary.p95Ms);
|
|
@@ -122,12 +267,18 @@ function compareCandidate(candidate, baseline, options) {
|
|
|
122
267
|
...(costImprovement !== undefined ? { costImprovementPct: costImprovement } : {}),
|
|
123
268
|
...(tokenImprovement !== undefined ? { tokenImprovementPct: tokenImprovement } : {}),
|
|
124
269
|
...(latencyImprovement !== undefined ? { latencyImprovementPct: latencyImprovement } : {}),
|
|
270
|
+
...(decision.constraintFailures && decision.constraintFailures.length > 0
|
|
271
|
+
? { constraintFailures: decision.constraintFailures }
|
|
272
|
+
: {}),
|
|
273
|
+
...(decision.objectiveScore !== undefined ? { objectiveScore: decision.objectiveScore } : {}),
|
|
125
274
|
decision: decision.decision,
|
|
126
275
|
reasons: decision.reasons,
|
|
127
276
|
};
|
|
128
277
|
}
|
|
129
278
|
function pickRecommendation(candidates) {
|
|
130
|
-
const promotable = candidates
|
|
279
|
+
const promotable = candidates
|
|
280
|
+
.filter((candidate) => candidate.decision === "promote-candidate")
|
|
281
|
+
.sort((a, b) => (b.objectiveScore ?? 0) - (a.objectiveScore ?? 0))[0];
|
|
131
282
|
if (promotable) {
|
|
132
283
|
return {
|
|
133
284
|
decision: "promote-candidate",
|
|
@@ -158,6 +309,8 @@ function normalizeOptions(options) {
|
|
|
158
309
|
minTokenImprovementPct: options.minTokenImprovementPct ?? DEFAULT_MIN_EFFICIENCY_IMPROVEMENT,
|
|
159
310
|
minLatencyImprovementPct: options.minLatencyImprovementPct ??
|
|
160
311
|
DEFAULT_MIN_EFFICIENCY_IMPROVEMENT,
|
|
312
|
+
...(options.constraints ? { constraints: options.constraints } : {}),
|
|
313
|
+
...(options.objectives ? { objectives: options.objectives } : {}),
|
|
161
314
|
};
|
|
162
315
|
}
|
|
163
316
|
/** Compare eval reports from multiple models using conservative promotion rules. */
|
|
@@ -185,6 +338,9 @@ function numberCell(value) {
|
|
|
185
338
|
function decimalCell(value) {
|
|
186
339
|
return value === undefined ? "-" : value.toFixed(2);
|
|
187
340
|
}
|
|
341
|
+
function markdownCell(value) {
|
|
342
|
+
return value.replaceAll("|", "\\|").replaceAll("\n", " ");
|
|
343
|
+
}
|
|
188
344
|
/** Render a human-reviewable markdown summary for a model comparison report. */
|
|
189
345
|
export function createEvalModelComparisonMarkdown(comparison) {
|
|
190
346
|
const lines = [
|
|
@@ -202,6 +358,15 @@ export function createEvalModelComparisonMarkdown(comparison) {
|
|
|
202
358
|
for (const model of comparison.models) {
|
|
203
359
|
lines.push(`| ${model.model} | ${model.role} | ${model.passed} | ${model.failed} | ${Math.round(model.passRate * 100)}% | ${decimalCell(model.groundednessScore)} | ${numberCell(model.totalTokens)} | ${decimalCell(model.costUsd)} | ${numberCell(model.p95Ms)} |`);
|
|
204
360
|
}
|
|
361
|
+
if (comparison.candidates.length > 0) {
|
|
362
|
+
lines.push("", "## Candidates", "", "| Model | Decision | Objective score | Constraint failures |", "| --- | --- | ---: | --- |");
|
|
363
|
+
for (const candidate of comparison.candidates) {
|
|
364
|
+
const constraintFailures = candidate.constraintFailures?.length
|
|
365
|
+
? candidate.constraintFailures.map(markdownCell).join("; ")
|
|
366
|
+
: "-";
|
|
367
|
+
lines.push(`| ${markdownCell(candidate.model)} | ${candidate.decision} | ${decimalCell(candidate.objectiveScore)} | ${constraintFailures} |`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
205
370
|
lines.push("", "## Decision", "");
|
|
206
371
|
for (const reason of comparison.recommendation.reasons) {
|
|
207
372
|
lines.push(`- ${reason}`);
|
package/esm/src/eval/types.d.ts
CHANGED
|
@@ -398,6 +398,8 @@ export interface EvalModelCandidateComparison {
|
|
|
398
398
|
costImprovementPct?: number;
|
|
399
399
|
tokenImprovementPct?: number;
|
|
400
400
|
latencyImprovementPct?: number;
|
|
401
|
+
constraintFailures?: string[];
|
|
402
|
+
objectiveScore?: number;
|
|
401
403
|
decision: EvalModelComparisonDecision;
|
|
402
404
|
reasons: string[];
|
|
403
405
|
}
|
|
@@ -416,6 +418,19 @@ export interface EvalModelComparison {
|
|
|
416
418
|
reasons: string[];
|
|
417
419
|
};
|
|
418
420
|
}
|
|
421
|
+
/** Metric names available to model comparison constraints and objectives. */
|
|
422
|
+
export type EvalModelComparisonMetricName = "passRate" | "failed" | "gateFailures" | "groundednessScore" | "totalTokens" | "costUsd" | "p95Ms";
|
|
423
|
+
/** Hard model comparison eligibility constraint. */
|
|
424
|
+
export interface EvalModelComparisonConstraint {
|
|
425
|
+
min?: number;
|
|
426
|
+
max?: number;
|
|
427
|
+
maxRegressionPct?: number;
|
|
428
|
+
}
|
|
429
|
+
/** Weighted model comparison objective used to rank eligible candidates. */
|
|
430
|
+
export interface EvalModelComparisonObjective {
|
|
431
|
+
weight: number;
|
|
432
|
+
direction: "minimize" | "maximize";
|
|
433
|
+
}
|
|
419
434
|
/** Promotion thresholds for model comparison. */
|
|
420
435
|
export interface EvalModelComparisonOptions {
|
|
421
436
|
baselineModel: string;
|
|
@@ -423,6 +438,8 @@ export interface EvalModelComparisonOptions {
|
|
|
423
438
|
minCostImprovementPct?: number;
|
|
424
439
|
minTokenImprovementPct?: number;
|
|
425
440
|
minLatencyImprovementPct?: number;
|
|
441
|
+
constraints?: Partial<Record<EvalModelComparisonMetricName, EvalModelComparisonConstraint>>;
|
|
442
|
+
objectives?: Partial<Record<EvalModelComparisonMetricName, EvalModelComparisonObjective>>;
|
|
426
443
|
}
|
|
427
444
|
/** Aggregate pass/fail summary for one eval report. */
|
|
428
445
|
export interface EvalReportSummary {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/eval/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/eval/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AAErC,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;AAE5F,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjD,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,yCAAyC;AACzC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,IAAI,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC/D;AAED,yDAAyD;AACzD,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wEAAwE;AACxE,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvE,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAED,wDAAwD;AACxD,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,0EAA0E;AAC1E,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qDAAqD;AACrD,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,2BAA2B,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,2BAA2B,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wDAAwD;AACxD,MAAM,WAAW,mCAAmC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,KAAK,gBAAgB,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF;AAED,0DAA0D;AAC1D,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAC9F,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,UAAU,CAAC;IAClD,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,UAAU,CAAC;IAClD,MAAM,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,UAAU,CAAC;CACrD;AAED,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,CAAC;IACxD,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,CAAC;IACxD,MAAM,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,CAAC;CAC3D;AAED,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACzB,SAAS,IAAI,eAAe,CAAC;IAC7B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;IAC9C,aAAa,IAAI,eAAe,CAAC;IACjC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,eAAe,CAAC;IAC9E,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;IAC7C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,eAAe,CAAC;CACjF;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,GAAG,gBAAgB,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,uBAAuB,KAC7B,gBAAgB,CAAC,MAAM,GAAG,sBAAsB,CAAC,CAAC;AAEvD,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE;QACR,KAAK,EAAE,gBAAgB,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC;AAED,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,kEAAkE;AAClE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,MAAM,EAAE;QACN,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;QAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE;QACJ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qFAAqF;AACrF,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,2BAA2B,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,oDAAoD;AACpD,MAAM,MAAM,2BAA2B,GACnC,mBAAmB,GACnB,eAAe,GACf,cAAc,CAAC;AAEnB,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,UAAU,EAAE,4BAA4B,EAAE,CAAC;IAC3C,cAAc,EAAE;QACd,QAAQ,EAAE,2BAA2B,CAAC;QACtC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,6EAA6E;AAC7E,MAAM,MAAM,6BAA6B,GACrC,UAAU,GACV,QAAQ,GACR,cAAc,GACd,mBAAmB,GACnB,aAAa,GACb,SAAS,GACT,OAAO,CAAC;AAEZ,oDAAoD;AACpD,MAAM,WAAW,6BAA6B;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;CACpC;AAED,iDAAiD;AACjD,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,6BAA6B,EAAE,6BAA6B,CAAC,CAAC,CAAC;IAC5F,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,6BAA6B,EAAE,4BAA4B,CAAC,CAAC,CAAC;CAC3F;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,mCAAmC;IACnC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,uEAAuE;IACvE,YAAY,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACxC,oEAAoE;IACpE,cAAc,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC5C,6CAA6C;IAC7C,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B"}
|