veryfront 0.1.949 → 0.1.951

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.
Files changed (34) hide show
  1. package/esm/cli/commands/eval/command-help.d.ts.map +1 -1
  2. package/esm/cli/commands/eval/command-help.js +9 -0
  3. package/esm/cli/commands/eval/command.d.ts +8 -1
  4. package/esm/cli/commands/eval/command.d.ts.map +1 -1
  5. package/esm/cli/commands/eval/command.js +160 -2
  6. package/esm/cli/commands/eval/handler.d.ts +4 -0
  7. package/esm/cli/commands/eval/handler.d.ts.map +1 -1
  8. package/esm/cli/commands/eval/handler.js +4 -0
  9. package/esm/cli/shared/args.js +1 -1
  10. package/esm/deno.js +1 -1
  11. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  12. package/esm/src/agent/runtime/index.js +5 -8
  13. package/esm/src/agent/runtime/model-capabilities.d.ts +2 -0
  14. package/esm/src/agent/runtime/model-capabilities.d.ts.map +1 -1
  15. package/esm/src/agent/runtime/model-capabilities.js +53 -0
  16. package/esm/src/eval/index.d.ts +3 -1
  17. package/esm/src/eval/index.d.ts.map +1 -1
  18. package/esm/src/eval/index.js +2 -0
  19. package/esm/src/eval/model-comparison.d.ts +6 -0
  20. package/esm/src/eval/model-comparison.d.ts.map +1 -0
  21. package/esm/src/eval/model-comparison.js +211 -0
  22. package/esm/src/eval/provenance.d.ts +28 -0
  23. package/esm/src/eval/provenance.d.ts.map +1 -0
  24. package/esm/src/eval/provenance.js +199 -0
  25. package/esm/src/eval/report.d.ts +2 -1
  26. package/esm/src/eval/report.d.ts.map +1 -1
  27. package/esm/src/eval/report.js +1 -0
  28. package/esm/src/eval/runner.d.ts.map +1 -1
  29. package/esm/src/eval/runner.js +1 -0
  30. package/esm/src/eval/types.d.ts +84 -0
  31. package/esm/src/eval/types.d.ts.map +1 -1
  32. package/esm/src/utils/version-constant.d.ts +1 -1
  33. package/esm/src/utils/version-constant.js +1 -1
  34. 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,WA4DtB,CAAC"}
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,WAsEtB,CAAC"}
@@ -40,6 +40,14 @@ export const evalHelp = {
40
40
  flag: "--model <provider/model>",
41
41
  description: "Override the target agent model",
42
42
  },
43
+ {
44
+ flag: "--baseline-model <provider/model>",
45
+ description: "Baseline model for model comparison runs",
46
+ },
47
+ {
48
+ flag: "--candidate-model <provider/model>",
49
+ description: "Candidate model to compare against --baseline-model; repeat for multiple candidates",
50
+ },
43
51
  {
44
52
  flag: "--max-output-tokens <count>",
45
53
  description: "Limit target agent output tokens",
@@ -55,6 +63,7 @@ export const evalHelp = {
55
63
  "veryfront eval eval:deep-research --report-dir .veryfront/evals/deep-research",
56
64
  "veryfront eval eval:deep-research --report .veryfront/evals/deep-research/report.json --junit .veryfront/evals/deep-research/junit.xml",
57
65
  "veryfront eval deep-research --baseline .veryfront/evals/baseline.json --json",
66
+ "veryfront eval deep-research --baseline-model anthropic/claude-sonnet-4-6 --candidate-model moonshotai/kimi-k2.6",
58
67
  "veryfront eval deep-research --export braintrust,langfuse --json",
59
68
  "veryfront eval deep-research --json",
60
69
  ],
@@ -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, EvalReport, EvalReportComparison, EvalToolCall } from "../../../src/eval/index.js";
3
+ import type { DiscoveredEval, EvalModelComparison, 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
  }
@@ -19,6 +19,9 @@ type EvalArtifactPaths = {
19
19
  summary: string;
20
20
  results: string;
21
21
  };
22
+ type EvalModelArtifactPaths = EvalArtifactPaths & {
23
+ junit: string;
24
+ };
22
25
  type EvalSummaryArtifact = {
23
26
  kind: "eval-summary";
24
27
  runId: string;
@@ -28,16 +31,20 @@ type EvalSummaryArtifact = {
28
31
  startedAt: string;
29
32
  endedAt: string;
30
33
  summary: EvalReport["summary"];
34
+ metadata?: EvalReport["metadata"];
31
35
  exports?: EvalReport["exports"];
32
36
  baseline?: EvalReportComparison;
33
37
  };
34
38
  export declare function createDefaultEvalReportDir(runId: string): string;
35
39
  export declare function createEvalArtifactPaths(reportDir: string): EvalArtifactPaths;
40
+ export declare function createEvalModelArtifactPaths(reportDir: string, model: string): EvalModelArtifactPaths;
36
41
  export declare function normalizeEvalCliId(id: string): string;
37
42
  export declare function findEvalForCliId(evals: DiscoveredEval[], id: string): DiscoveredEval | undefined;
38
43
  export declare function normalizeEvalInputForAgent(input: unknown): string;
39
44
  export declare function summarizeReportForCli(report: EvalReport): CliEvalSummary;
40
45
  export declare function createSummaryArtifact(report: EvalReport, baseline?: EvalReportComparison): EvalSummaryArtifact;
46
+ export declare function createEvalModelComparisonArtifact(reports: EvalReport[], baselineModel: string): EvalModelComparison;
47
+ export declare function createEvalModelComparisonExitCode(reports: EvalReport[]): 0 | 1;
41
48
  export declare function createResultsJsonl(report: EvalReport): string;
42
49
  export declare function createJunitXml(report: EvalReport): string;
43
50
  export declare function writeEvalArtifacts(report: EvalReport, paths: EvalArtifactPaths, baseline?: EvalReportComparison): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/eval/command.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,9 @@
4
4
  import * as dntShim from "../../../_dnt.shims.js";
5
5
  import { dirname, join, relative } from "../../../deps/jsr.io/@std/path/1.1.4/mod.js";
6
6
  import { createProjectDiscoveryConfig, discoverAll } from "../../../src/discovery/index.js";
7
- import { compareEvalReports, discoverEvals, runEval } from "../../../src/eval/index.js";
7
+ import { compareEvalModelReports, compareEvalReports, createEvalModelComparisonMarkdown, discoverEvals, resolveEvalRunProvenance, runEval, } from "../../../src/eval/index.js";
8
8
  import { applyRuntimeAuthContext } from "../../shared/runtime-auth.js";
9
- import { cliLogger, exitProcess } from "../../utils/index.js";
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
12
  function xmlEscape(value) {
@@ -35,6 +35,26 @@ export function createEvalArtifactPaths(reportDir) {
35
35
  results: join(reportDir, "results.jsonl"),
36
36
  };
37
37
  }
38
+ function sanitizeModelIdForPath(model) {
39
+ return model.trim().replace(/[^A-Za-z0-9._-]+/g, "__").replace(/^_+|_+$/g, "") || "model";
40
+ }
41
+ export function createEvalModelArtifactPaths(reportDir, model) {
42
+ const directory = join(reportDir, "models", sanitizeModelIdForPath(model));
43
+ return {
44
+ directory,
45
+ summary: join(directory, "summary.json"),
46
+ results: join(directory, "results.jsonl"),
47
+ junit: join(directory, "junit.xml"),
48
+ };
49
+ }
50
+ function createEvalModelComparisonArtifactPaths(reportDir, models) {
51
+ return {
52
+ directory: reportDir,
53
+ comparisonJson: join(reportDir, "comparison.json"),
54
+ comparisonMarkdown: join(reportDir, "comparison.md"),
55
+ models: Object.fromEntries(models.map((model) => [model, createEvalModelArtifactPaths(reportDir, model)])),
56
+ };
57
+ }
38
58
  function displaySourcePath(filePath, projectDir) {
39
59
  const normalized = stripFileProtocol(filePath);
40
60
  if (normalized.startsWith(projectDir)) {
@@ -110,10 +130,17 @@ export function createSummaryArtifact(report, baseline) {
110
130
  startedAt: report.startedAt,
111
131
  endedAt: report.endedAt,
112
132
  summary: report.summary,
133
+ ...(report.metadata ? { metadata: report.metadata } : {}),
113
134
  ...(report.exports ? { exports: report.exports } : {}),
114
135
  ...(baseline ? { baseline } : {}),
115
136
  };
116
137
  }
138
+ export function createEvalModelComparisonArtifact(reports, baselineModel) {
139
+ return compareEvalModelReports(reports, { baselineModel });
140
+ }
141
+ export function createEvalModelComparisonExitCode(reports) {
142
+ return reports.some((report) => report.summary.failed > 0) ? 1 : 0;
143
+ }
117
144
  export function createResultsJsonl(report) {
118
145
  if (report.records.length === 0)
119
146
  return "";
@@ -266,6 +293,98 @@ function createEvalCliExportConfig(evalItem, options, projectDir, artifactPaths)
266
293
  },
267
294
  };
268
295
  }
296
+ function uniqueValues(values) {
297
+ return Array.from(new Set(values.map((value) => value.trim()).filter(Boolean)));
298
+ }
299
+ function resolveEvalModelComparisonConfig(options) {
300
+ const candidateModels = uniqueValues(options.candidateModels);
301
+ const baselineModel = options.baselineModel?.trim();
302
+ if (!baselineModel && candidateModels.length === 0)
303
+ return undefined;
304
+ if (!baselineModel) {
305
+ throw new Error("--baseline-model is required when using --candidate-model.");
306
+ }
307
+ if (candidateModels.length === 0) {
308
+ throw new Error("--candidate-model is required when using --baseline-model.");
309
+ }
310
+ if (options.model) {
311
+ throw new Error("--model is for single eval runs. Use --baseline-model with --candidate-model for comparisons.");
312
+ }
313
+ if (options.baseline || options.writeBaseline) {
314
+ throw new Error("--baseline and --write-baseline are for saved single-run reports, not model comparisons.");
315
+ }
316
+ return {
317
+ baselineModel,
318
+ candidateModels: candidateModels.filter((model) => model !== baselineModel),
319
+ models: uniqueValues([baselineModel, ...candidateModels]),
320
+ };
321
+ }
322
+ function createAgentAdapterForModel(agent, options, model) {
323
+ return createAgentAdapter(agent, { ...options, model });
324
+ }
325
+ async function writeEvalModelComparisonArtifacts(comparison, paths) {
326
+ await dntShim.Deno.mkdir(paths.directory, { recursive: true });
327
+ await dntShim.Deno.writeTextFile(paths.comparisonJson, JSON.stringify(comparison, null, 2));
328
+ await dntShim.Deno.writeTextFile(paths.comparisonMarkdown, createEvalModelComparisonMarkdown(comparison));
329
+ }
330
+ async function runEvalModelComparison(input) {
331
+ const runId = createCliRunId();
332
+ const reportDir = input.options.reportDir ?? createDefaultEvalReportDir(runId);
333
+ const paths = createEvalModelComparisonArtifactPaths(reportDir, input.config.models);
334
+ const provenance = await resolveEvalRunProvenance({
335
+ projectDir: input.projectDir,
336
+ frameworkVersion: VERSION,
337
+ });
338
+ const reports = [];
339
+ for (const model of input.config.models) {
340
+ const modelPaths = paths.models[model];
341
+ const modelOptions = { ...input.options, model, report: undefined };
342
+ const report = await runEval(input.evalItem.definition, {
343
+ baseDir: input.options.datasetBase ?? input.projectDir,
344
+ runId: `${runId}_${sanitizeModelIdForPath(model)}`,
345
+ adapters: {
346
+ agent: createAgentAdapterForModel(input.agent, input.options, model),
347
+ },
348
+ metadata: {
349
+ model,
350
+ provenance,
351
+ },
352
+ export: createEvalCliExportConfig(input.evalItem, modelOptions, input.projectDir, modelPaths),
353
+ });
354
+ reports.push(report);
355
+ await writeEvalArtifacts(report, modelPaths);
356
+ await writeTextFileEnsuringDir(modelPaths.junit, createJunitXml(report));
357
+ }
358
+ const comparison = createEvalModelComparisonArtifact(reports, input.config.baselineModel);
359
+ await writeEvalModelComparisonArtifacts(comparison, paths);
360
+ if (input.options.report) {
361
+ await writeTextFileEnsuringDir(input.options.report, JSON.stringify(comparison, null, 2));
362
+ }
363
+ if (isJsonMode()) {
364
+ await outputJson(createSuccessEnvelope("eval", {
365
+ reports,
366
+ comparison,
367
+ artifacts: paths,
368
+ }));
369
+ }
370
+ else {
371
+ for (const report of reports) {
372
+ const model = report.metadata?.model ?? report.runId;
373
+ cliLogger.info(`Model: ${model}`);
374
+ printReport(report);
375
+ }
376
+ cliLogger.info(`Recommendation: ${comparison.recommendation.decision}${comparison.recommendation.model ? ` (${comparison.recommendation.model})` : ""}`);
377
+ for (const reason of comparison.recommendation.reasons) {
378
+ cliLogger.info(` - ${reason}`);
379
+ }
380
+ cliLogger.info(`Report directory: ${paths.directory}`);
381
+ cliLogger.info(`Comparison: ${paths.comparisonJson}`);
382
+ cliLogger.info(`Comparison markdown: ${paths.comparisonMarkdown}`);
383
+ if (input.options.report)
384
+ cliLogger.info(`Report: ${input.options.report}`);
385
+ }
386
+ exitProcess(createEvalModelComparisonExitCode(reports));
387
+ }
269
388
  async function outputEvalNotFound(id, evals) {
270
389
  if (isJsonMode()) {
271
390
  await outputJson(createErrorEnvelope("eval", {
@@ -301,6 +420,19 @@ async function outputAgentNotFound(agentId) {
301
420
  }
302
421
  exitProcess(1);
303
422
  }
423
+ async function outputEvalUsageError(message) {
424
+ if (isJsonMode()) {
425
+ await outputJson(createErrorEnvelope("eval", {
426
+ code: "USAGE_ERROR",
427
+ slug: "eval-usage-error",
428
+ message,
429
+ }));
430
+ }
431
+ else {
432
+ cliLogger.error(message);
433
+ }
434
+ exitProcess(2);
435
+ }
304
436
  export async function evalCommand(options) {
305
437
  const projectDir = dntShim.Deno.cwd();
306
438
  await withProjectSourceContext(projectDir, async ({ adapter, config }) => {
@@ -360,14 +492,40 @@ export async function evalCommand(options) {
360
492
  await outputAgentNotFound(agentId);
361
493
  return;
362
494
  }
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
+ if (modelComparisonConfig) {
504
+ await runEvalModelComparison({
505
+ evalItem,
506
+ agent,
507
+ options,
508
+ projectDir,
509
+ config: modelComparisonConfig,
510
+ });
511
+ return;
512
+ }
363
513
  const runId = createCliRunId();
364
514
  const artifactPaths = createEvalArtifactPaths(options.reportDir ?? createDefaultEvalReportDir(runId));
515
+ const provenance = await resolveEvalRunProvenance({
516
+ projectDir,
517
+ frameworkVersion: VERSION,
518
+ });
365
519
  const report = await runEval(evalItem.definition, {
366
520
  baseDir: options.datasetBase ?? projectDir,
367
521
  runId,
368
522
  adapters: {
369
523
  agent: createAgentAdapter(agent, options),
370
524
  },
525
+ metadata: {
526
+ provenance,
527
+ ...(options.model ? { model: options.model } : {}),
528
+ },
371
529
  export: createEvalCliExportConfig(evalItem, options, projectDir, artifactPaths),
372
530
  });
373
531
  const baseline = options.baseline
@@ -12,6 +12,8 @@ declare const getEvalArgsSchema: () => import("../../../src/internal-agents/sche
12
12
  exporters: import("../../../src/internal-agents/schema.js").Schema<string[]>;
13
13
  debug: import("../../../src/internal-agents/schema.js").Schema<boolean>;
14
14
  model: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
15
+ baselineModel: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
16
+ candidateModels: import("../../../src/internal-agents/schema.js").Schema<string[]>;
15
17
  maxOutputTokens: import("../../../src/internal-agents/schema.js").Schema<number | undefined>;
16
18
  }>>;
17
19
  export type EvalArgs = InferSchema<ReturnType<typeof getEvalArgsSchema>>;
@@ -27,6 +29,8 @@ export declare const parseEvalArgs: (args: ParsedArgs) => import("../../shared/a
27
29
  exporters: import("../../../src/internal-agents/schema.js").Schema<string[]>;
28
30
  debug: import("../../../src/internal-agents/schema.js").Schema<boolean>;
29
31
  model: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
32
+ baselineModel: import("../../../src/internal-agents/schema.js").Schema<string | undefined>;
33
+ candidateModels: import("../../../src/internal-agents/schema.js").Schema<string[]>;
30
34
  maxOutputTokens: import("../../../src/internal-agents/schema.js").Schema<number | undefined>;
31
35
  }>>;
32
36
  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;;;;;;;;;;;;;GAetB,CAAC;AAIF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,eAAO,MAAM,aAAa;;;;;;;;;;;;;GAaxB,CAAC;AAEH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE"}
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;;;;;;;;;;;;;;;GAiBtB,CAAC;AAIF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;GAexB,CAAC;AAEH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE"}
@@ -12,6 +12,8 @@ const getEvalArgsSchema = defineSchema((v) => v.object({
12
12
  exporters: v.array(v.string()).default([]),
13
13
  debug: v.boolean().default(false),
14
14
  model: v.string().optional(),
15
+ baselineModel: v.string().optional(),
16
+ candidateModels: v.array(v.string()).default([]),
15
17
  maxOutputTokens: v.number().int().positive().optional(),
16
18
  }));
17
19
  const EvalArgsSchema = lazySchema(getEvalArgsSchema);
@@ -27,6 +29,8 @@ export const parseEvalArgs = createArgParser(EvalArgsSchema, {
27
29
  exporters: { keys: ["export"], type: "array" },
28
30
  debug: { keys: ["debug"], type: "boolean" },
29
31
  model: { keys: ["model"], type: "string" },
32
+ baselineModel: { keys: ["baseline-model"], type: "string" },
33
+ candidateModels: { keys: ["candidate-model", "candidate-models"], type: "array" },
30
34
  maxOutputTokens: { keys: ["max-output-tokens"], type: "number" },
31
35
  });
32
36
  export async function handleEvalCommand(args) {
@@ -119,7 +119,7 @@ export const CommonArgs = {
119
119
  // ── Raw CLI argument parsing ────────────────────────────────────────────
120
120
  // Low-level parser that converts process argv into a ParsedArgs object.
121
121
  // Used once in cli/main.ts before routing to individual command handlers.
122
- const ARRAY_FLAGS = new Set(["with"]);
122
+ const ARRAY_FLAGS = new Set(["with", "candidate-model"]);
123
123
  function maybeNumber(val) {
124
124
  if (typeof val === "string" && /^\d+$/.test(val))
125
125
  return parseInt(val, 10);
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.949",
3
+ "version": "0.1.951",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/index.ts"],"names":[],"mappings":"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"}
@@ -47,7 +47,7 @@ import { executeConfiguredTool, getAvailableTools, isDynamicTool } from "./tool-
47
47
  import { accumulateUsage, getMaxSteps, normalizeInput } from "./input-utils.js";
48
48
  import { resolveRuntimeModel } from "./model-resolution.js";
49
49
  import { stringifyToolError, throwIfAborted } from "./error-utils.js";
50
- import { supportsTemperatureParameter } from "./model-capabilities.js";
50
+ import { resolveTemperatureParameter } from "./model-capabilities.js";
51
51
  import { applySkillDelegationOverridesToToolInput, extractSkillDelegationOverrides, } from "./skill-delegation-overrides.js";
52
52
  import { resolveAgentModelTransport } from "./model-transport.js";
53
53
  const logger = serverLogger.component("agent");
@@ -360,7 +360,7 @@ export class AgentRuntime {
360
360
  currentRuntimeContext = preparedStep.runtimeContext;
361
361
  const toolContext = preparedStep.toolContext;
362
362
  const tools = preparedStep.tools;
363
- const temperature = this.resolveTemperature(temperatureModelString ?? effectiveModel);
363
+ const temperature = this.resolveTemperature(temperatureModelString ?? effectiveModel, providerOptions);
364
364
  const response = await withSpan("agent.generate_text", async (span) => {
365
365
  setSpanAttributes(span, {
366
366
  "model.id": effectiveModel,
@@ -620,7 +620,7 @@ export class AgentRuntime {
620
620
  providerTools: stepProviderTools,
621
621
  });
622
622
  const runtimeToolNames = Object.keys(runtimeTools ?? {});
623
- const temperature = this.resolveTemperature(temperatureModelString ?? effectiveModel);
623
+ const temperature = this.resolveTemperature(temperatureModelString ?? effectiveModel, providerOptions);
624
624
  const result = streamText({
625
625
  model: languageModel,
626
626
  system: currentSystemPrompt,
@@ -955,11 +955,8 @@ export class AgentRuntime {
955
955
  const edgeMaxSteps = this.config.edge?.enabled ? this.config.edge.maxSteps : undefined;
956
956
  return getMaxSteps(this.config.maxSteps, edgeMaxSteps, platformLimit);
957
957
  }
958
- resolveTemperature(modelString) {
959
- if (!supportsTemperatureParameter(modelString)) {
960
- return undefined;
961
- }
962
- return this.config.temperature ?? DEFAULT_TEMPERATURE;
958
+ resolveTemperature(modelString, providerOptions) {
959
+ return resolveTemperatureParameter(modelString, this.config.temperature, DEFAULT_TEMPERATURE, providerOptions);
963
960
  }
964
961
  resolveMaxOutputTokens(modelString, maxOutputTokensOverride) {
965
962
  if (typeof maxOutputTokensOverride === "number" &&
@@ -1,3 +1,5 @@
1
1
  export declare function normalizeModelCapabilityId(modelString?: string): string | undefined;
2
2
  export declare function supportsTemperatureParameter(modelString?: string): boolean;
3
+ export declare function getFixedTemperatureParameter(modelString?: string, providerOptions?: Record<string, unknown>): number | undefined;
4
+ export declare function resolveTemperatureParameter(modelString: string | undefined, requestedTemperature: number | undefined, defaultTemperature: number, providerOptions?: Record<string, unknown>): number | undefined;
3
5
  //# sourceMappingURL=model-capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-capabilities.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/model-capabilities.ts"],"names":[],"mappings":"AAOA,wBAAgB,0BAA0B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnF;AAED,wBAAgB,4BAA4B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAI1E"}
1
+ {"version":3,"file":"model-capabilities.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/model-capabilities.ts"],"names":[],"mappings":"AA6CA,wBAAgB,0BAA0B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnF;AAED,wBAAgB,4BAA4B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAI1E;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC,MAAM,GAAG,SAAS,CASpB;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,oBAAoB,EAAE,MAAM,GAAG,SAAS,EACxC,kBAAkB,EAAE,MAAM,EAC1B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC,MAAM,GAAG,SAAS,CAWpB"}
@@ -3,6 +3,38 @@ const MODELS_WITHOUT_TEMPERATURE_PARAMETER = new Set([
3
3
  "anthropic/claude-opus-4-7",
4
4
  "anthropic/claude-opus-4-8",
5
5
  ]);
6
+ const KIMI_K2_6_MODEL_ID = "moonshotai/kimi-k2.6";
7
+ const KIMI_K2_6_THINKING_TEMPERATURE = 1;
8
+ const KIMI_K2_6_NON_THINKING_TEMPERATURE = 0.6;
9
+ function isRecord(value) {
10
+ return typeof value === "object" && value !== null && !Array.isArray(value);
11
+ }
12
+ function getRecord(record, key) {
13
+ const value = record[key];
14
+ return isRecord(value) ? value : undefined;
15
+ }
16
+ function isThinkingDisabled(options) {
17
+ const thinking = options ? getRecord(options, "thinking") : undefined;
18
+ return thinking?.type === "disabled";
19
+ }
20
+ function hasDisabledThinking(providerOptions) {
21
+ if (!providerOptions)
22
+ return false;
23
+ if (isThinkingDisabled(providerOptions))
24
+ return true;
25
+ for (const providerKey of ["moonshotai", "openai"]) {
26
+ const provider = getRecord(providerOptions, providerKey);
27
+ if (!provider)
28
+ continue;
29
+ if (isThinkingDisabled(provider))
30
+ return true;
31
+ for (const bodyKey of ["extraBody", "extra_body"]) {
32
+ if (isThinkingDisabled(getRecord(provider, bodyKey)))
33
+ return true;
34
+ }
35
+ }
36
+ return false;
37
+ }
6
38
  export function normalizeModelCapabilityId(modelString) {
7
39
  if (!modelString)
8
40
  return undefined;
@@ -16,3 +48,24 @@ export function supportsTemperatureParameter(modelString) {
16
48
  return true;
17
49
  return !MODELS_WITHOUT_TEMPERATURE_PARAMETER.has(normalizedModel);
18
50
  }
51
+ export function getFixedTemperatureParameter(modelString, providerOptions) {
52
+ const normalizedModel = normalizeModelCapabilityId(modelString);
53
+ if (!normalizedModel)
54
+ return undefined;
55
+ if (normalizedModel === KIMI_K2_6_MODEL_ID) {
56
+ return hasDisabledThinking(providerOptions)
57
+ ? KIMI_K2_6_NON_THINKING_TEMPERATURE
58
+ : KIMI_K2_6_THINKING_TEMPERATURE;
59
+ }
60
+ return undefined;
61
+ }
62
+ export function resolveTemperatureParameter(modelString, requestedTemperature, defaultTemperature, providerOptions) {
63
+ if (!supportsTemperatureParameter(modelString)) {
64
+ return undefined;
65
+ }
66
+ const fixedTemperature = getFixedTemperatureParameter(modelString, providerOptions);
67
+ if (fixedTemperature !== undefined) {
68
+ return fixedTemperature;
69
+ }
70
+ return requestedTemperature ?? defaultTemperature;
71
+ }
@@ -49,11 +49,13 @@ export { judges } from "./judges.js";
49
49
  export { metrics } from "./metrics.js";
50
50
  export { createEvalReport, summarizeEvalRecords } from "./report.js";
51
51
  export { compareEvalReports } from "./baseline.js";
52
+ export { compareEvalModelReports, createEvalModelComparisonMarkdown } from "./model-comparison.js";
53
+ export { createEvalRunProvenance, resolveEvalRunProvenance } from "./provenance.js";
52
54
  export { runEval } from "./runner.js";
53
55
  export { deriveEvalId, discoverEvals, findEvalById } from "./discovery.js";
54
56
  export { createEvalSourceDocument, getEvalEditableFieldSchema, getEvalRunSchema, getEvalSourceDocumentSchema, getEvalSourcePatchSchema, getEvalSourceReferenceSchema, getEvalStudioCapabilitySchema, } from "./studio.js";
55
57
  export type { DiscoveredEval, EvalDiscoveryOptions, EvalDiscoveryResult } from "./discovery.js";
56
58
  export type { EvalLlmGroundednessJudgeOptions } from "./judges.js";
57
- 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, EvalRecord, EvalReport, EvalReportComparison, EvalReportExportConfig, EvalReportSummary, 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, 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";
58
60
  export type { CreateEvalSourceDocumentOptions, EvalEditableField, EvalRun, EvalSourceDocument, EvalSourcePatch, EvalSourceReference, EvalStudioCapability, } from "./studio.js";
59
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,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,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,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,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"}
@@ -49,6 +49,8 @@ export { judges } from "./judges.js";
49
49
  export { metrics } from "./metrics.js";
50
50
  export { createEvalReport, summarizeEvalRecords } from "./report.js";
51
51
  export { compareEvalReports } from "./baseline.js";
52
+ export { compareEvalModelReports, createEvalModelComparisonMarkdown } from "./model-comparison.js";
53
+ export { createEvalRunProvenance, resolveEvalRunProvenance } from "./provenance.js";
52
54
  export { runEval } from "./runner.js";
53
55
  export { deriveEvalId, discoverEvals, findEvalById } from "./discovery.js";
54
56
  export { createEvalSourceDocument, getEvalEditableFieldSchema, getEvalRunSchema, getEvalSourceDocumentSchema, getEvalSourcePatchSchema, getEvalSourceReferenceSchema, getEvalStudioCapabilitySchema, } from "./studio.js";
@@ -0,0 +1,6 @@
1
+ import type { EvalModelComparison, EvalModelComparisonOptions, EvalReport } from "./types.js";
2
+ /** Compare eval reports from multiple models using conservative promotion rules. */
3
+ export declare function compareEvalModelReports(reports: EvalReport[], options: EvalModelComparisonOptions): EvalModelComparison;
4
+ /** Render a human-reviewable markdown summary for a model comparison report. */
5
+ export declare function createEvalModelComparisonMarkdown(comparison: EvalModelComparison): string;
6
+ //# sourceMappingURL=model-comparison.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-comparison.d.ts","sourceRoot":"","sources":["../../../src/src/eval/model-comparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,mBAAmB,EACnB,0BAA0B,EAE1B,UAAU,EACX,MAAM,YAAY,CAAC;AAuNpB,oFAAoF;AACpF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE,0BAA0B,GAClC,mBAAmB,CAqBrB;AAUD,gFAAgF;AAChF,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAgCzF"}
@@ -0,0 +1,211 @@
1
+ import { compareEvalReports } from "./baseline.js";
2
+ const DEFAULT_MIN_GROUNDEDNESS = 0.8;
3
+ const DEFAULT_MIN_EFFICIENCY_IMPROVEMENT = 0.1;
4
+ function reportModel(report) {
5
+ return report.metadata?.model ?? report.runId;
6
+ }
7
+ function failedExampleIds(report) {
8
+ return (report.summary.failedExamples ?? []).map((example) => example.exampleId).sort();
9
+ }
10
+ function allMetricResults(report) {
11
+ return report.records.flatMap((record) => [...(record.metrics ?? []), ...(record.checks ?? [])]);
12
+ }
13
+ function average(values) {
14
+ if (values.length === 0)
15
+ return undefined;
16
+ return values.reduce((sum, value) => sum + value, 0) / values.length;
17
+ }
18
+ function metricPassRate(report, metricName) {
19
+ return report.summary.metrics.find((metric) => metric.name === metricName)?.passRate;
20
+ }
21
+ function groundednessScore(report) {
22
+ return average(allMetricResults(report)
23
+ .filter((result) => result.name === "answer.groundedness" && result.score !== undefined)
24
+ .map((result) => result.score)) ?? metricPassRate(report, "answer.groundedness");
25
+ }
26
+ function improvementPct(baseline, candidate) {
27
+ if (baseline === undefined || candidate === undefined || baseline <= 0)
28
+ return undefined;
29
+ return (baseline - candidate) / baseline;
30
+ }
31
+ function meetsImprovement(value, threshold) {
32
+ return value !== undefined && value >= threshold;
33
+ }
34
+ function formatPct(value) {
35
+ return `${Math.round(value * 100)}%`;
36
+ }
37
+ function modelSummary(report, baselineModel) {
38
+ const model = reportModel(report);
39
+ const groundedness = groundednessScore(report);
40
+ return {
41
+ model,
42
+ role: model === baselineModel ? "baseline" : "candidate",
43
+ runId: report.runId,
44
+ passed: report.summary.passed,
45
+ failed: report.summary.failed,
46
+ passRate: report.summary.passRate,
47
+ failedExamples: failedExampleIds(report),
48
+ gateFailures: report.summary.gateFailures?.length ?? 0,
49
+ ...(report.summary.usage?.totalTokens !== undefined
50
+ ? { totalTokens: report.summary.usage.totalTokens }
51
+ : {}),
52
+ ...(report.summary.usage?.costUsd !== undefined
53
+ ? { costUsd: report.summary.usage.costUsd }
54
+ : {}),
55
+ ...(report.summary.duration?.p95Ms !== undefined
56
+ ? { p95Ms: report.summary.duration.p95Ms }
57
+ : {}),
58
+ ...(groundedness !== undefined ? { groundednessScore: groundedness } : {}),
59
+ };
60
+ }
61
+ function createCandidateDecision(input) {
62
+ const baselineModel = input.options.baselineModel;
63
+ const baselineSummary = modelSummary(input.baseline, baselineModel);
64
+ const candidateSummary = modelSummary(input.candidate, baselineModel);
65
+ const baselineComparison = compareEvalReports(input.candidate, input.baseline);
66
+ const reasons = [];
67
+ if (input.candidate.summary.failed > 0 || baselineComparison.regressed ||
68
+ baselineComparison.newFailedExamples.length > 0) {
69
+ reasons.push("candidate has quality regressions");
70
+ if (baselineComparison.newFailedExamples.length > 0) {
71
+ reasons.push(`new failed examples: ${baselineComparison.newFailedExamples.join(", ")}`);
72
+ }
73
+ return { decision: "keep-baseline", reasons };
74
+ }
75
+ reasons.push("candidate has no quality regressions");
76
+ if (candidateSummary.groundednessScore !== undefined &&
77
+ candidateSummary.groundednessScore < input.options.minGroundedness) {
78
+ reasons.push(`groundedness is below ${input.options.minGroundedness}`);
79
+ return { decision: "keep-baseline", reasons };
80
+ }
81
+ if (candidateSummary.groundednessScore === undefined) {
82
+ reasons.push("groundedness was not measured");
83
+ }
84
+ else {
85
+ reasons.push(`groundedness is at or above ${input.options.minGroundedness}`);
86
+ }
87
+ const costImprovement = improvementPct(baselineSummary.costUsd, candidateSummary.costUsd);
88
+ const tokenImprovement = improvementPct(baselineSummary.totalTokens, candidateSummary.totalTokens);
89
+ const latencyImprovement = improvementPct(baselineSummary.p95Ms, candidateSummary.p95Ms);
90
+ if (meetsImprovement(costImprovement, input.options.minCostImprovementPct)) {
91
+ reasons.push(`cost improved by ${formatPct(costImprovement)}`);
92
+ return { decision: "promote-candidate", reasons };
93
+ }
94
+ if (meetsImprovement(tokenImprovement, input.options.minTokenImprovementPct)) {
95
+ reasons.push(`tokens improved by ${formatPct(tokenImprovement)}`);
96
+ return { decision: "promote-candidate", reasons };
97
+ }
98
+ if (meetsImprovement(latencyImprovement, input.options.minLatencyImprovementPct)) {
99
+ reasons.push(`p95 latency improved by ${formatPct(latencyImprovement)}`);
100
+ return { decision: "promote-candidate", reasons };
101
+ }
102
+ reasons.push("no cost, token, or latency improvement could be measured");
103
+ return { decision: "needs-review", reasons };
104
+ }
105
+ function compareCandidate(candidate, baseline, options) {
106
+ const baselineComparison = compareEvalReports(candidate, baseline);
107
+ const candidateSummary = modelSummary(candidate, options.baselineModel);
108
+ const baselineSummary = modelSummary(baseline, options.baselineModel);
109
+ const decision = createCandidateDecision({ candidate, baseline, options });
110
+ const costImprovement = improvementPct(baselineSummary.costUsd, candidateSummary.costUsd);
111
+ const tokenImprovement = improvementPct(baselineSummary.totalTokens, candidateSummary.totalTokens);
112
+ const latencyImprovement = improvementPct(baselineSummary.p95Ms, candidateSummary.p95Ms);
113
+ return {
114
+ model: reportModel(candidate),
115
+ baselineModel: options.baselineModel,
116
+ passRateDelta: baselineComparison.passRateDelta,
117
+ failedDelta: baselineComparison.failedDelta,
118
+ newFailedExamples: baselineComparison.newFailedExamples,
119
+ ...(candidateSummary.groundednessScore !== undefined
120
+ ? { groundednessScore: candidateSummary.groundednessScore }
121
+ : {}),
122
+ ...(costImprovement !== undefined ? { costImprovementPct: costImprovement } : {}),
123
+ ...(tokenImprovement !== undefined ? { tokenImprovementPct: tokenImprovement } : {}),
124
+ ...(latencyImprovement !== undefined ? { latencyImprovementPct: latencyImprovement } : {}),
125
+ decision: decision.decision,
126
+ reasons: decision.reasons,
127
+ };
128
+ }
129
+ function pickRecommendation(candidates) {
130
+ const promotable = candidates.find((candidate) => candidate.decision === "promote-candidate");
131
+ if (promotable) {
132
+ return {
133
+ decision: "promote-candidate",
134
+ model: promotable.model,
135
+ reasons: promotable.reasons,
136
+ };
137
+ }
138
+ const needsReview = candidates.find((candidate) => candidate.decision === "needs-review");
139
+ if (needsReview) {
140
+ return {
141
+ decision: "needs-review",
142
+ model: needsReview.model,
143
+ reasons: needsReview.reasons,
144
+ };
145
+ }
146
+ const firstCandidate = candidates[0];
147
+ return {
148
+ decision: "keep-baseline",
149
+ ...(firstCandidate ? { model: firstCandidate.model } : {}),
150
+ reasons: firstCandidate?.reasons ?? ["no candidate models were compared"],
151
+ };
152
+ }
153
+ function normalizeOptions(options) {
154
+ return {
155
+ baselineModel: options.baselineModel,
156
+ minGroundedness: options.minGroundedness ?? DEFAULT_MIN_GROUNDEDNESS,
157
+ minCostImprovementPct: options.minCostImprovementPct ?? DEFAULT_MIN_EFFICIENCY_IMPROVEMENT,
158
+ minTokenImprovementPct: options.minTokenImprovementPct ?? DEFAULT_MIN_EFFICIENCY_IMPROVEMENT,
159
+ minLatencyImprovementPct: options.minLatencyImprovementPct ??
160
+ DEFAULT_MIN_EFFICIENCY_IMPROVEMENT,
161
+ };
162
+ }
163
+ /** Compare eval reports from multiple models using conservative promotion rules. */
164
+ export function compareEvalModelReports(reports, options) {
165
+ const normalized = normalizeOptions(options);
166
+ const baseline = reports.find((report) => reportModel(report) === normalized.baselineModel);
167
+ if (!baseline) {
168
+ throw new Error(`Baseline model "${normalized.baselineModel}" was not present in eval reports.`);
169
+ }
170
+ const candidates = reports
171
+ .filter((report) => reportModel(report) !== normalized.baselineModel)
172
+ .map((report) => compareCandidate(report, baseline, normalized));
173
+ return {
174
+ kind: "eval-model-comparison",
175
+ baselineModel: normalized.baselineModel,
176
+ candidateModels: candidates.map((candidate) => candidate.model),
177
+ models: reports.map((report) => modelSummary(report, normalized.baselineModel)),
178
+ candidates,
179
+ recommendation: pickRecommendation(candidates),
180
+ };
181
+ }
182
+ function numberCell(value) {
183
+ return value === undefined ? "-" : String(Math.round(value));
184
+ }
185
+ function decimalCell(value) {
186
+ return value === undefined ? "-" : value.toFixed(2);
187
+ }
188
+ /** Render a human-reviewable markdown summary for a model comparison report. */
189
+ export function createEvalModelComparisonMarkdown(comparison) {
190
+ const lines = [
191
+ "# Eval Model Comparison",
192
+ "",
193
+ `Baseline: ${comparison.baselineModel}`,
194
+ `Candidates: ${comparison.candidateModels.join(", ") || "-"}`,
195
+ `Recommendation: ${comparison.recommendation.decision}${comparison.recommendation.model ? ` (${comparison.recommendation.model})` : ""}`,
196
+ "",
197
+ "## Models",
198
+ "",
199
+ "| Model | Role | Passed | Failed | Pass rate | Groundedness | Tokens | Cost USD | p95 ms |",
200
+ "| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |",
201
+ ];
202
+ for (const model of comparison.models) {
203
+ 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
+ }
205
+ lines.push("", "## Decision", "");
206
+ for (const reason of comparison.recommendation.reasons) {
207
+ lines.push(`- ${reason}`);
208
+ }
209
+ lines.push("");
210
+ return `${lines.join("\n")}`;
211
+ }
@@ -0,0 +1,28 @@
1
+ import type { EvalRunProvenance } from "./types.js";
2
+ type Env = Record<string, string | undefined>;
3
+ export type EvalGitProvenance = NonNullable<EvalRunProvenance["git"]>;
4
+ export type EvalCommandResult = {
5
+ code: number;
6
+ stdout: string;
7
+ stderr?: string;
8
+ };
9
+ export type EvalCommandRunner = (command: string, args: string[], options: {
10
+ cwd: string;
11
+ }) => Promise<EvalCommandResult>;
12
+ export type EvalFileReader = (path: string) => Promise<Uint8Array>;
13
+ export interface CreateEvalRunProvenanceOptions {
14
+ env?: Env;
15
+ git?: EvalGitProvenance;
16
+ frameworkVersion?: string;
17
+ }
18
+ export interface ResolveEvalRunProvenanceOptions extends CreateEvalRunProvenanceOptions {
19
+ projectDir?: string;
20
+ commandRunner?: EvalCommandRunner;
21
+ fileReader?: EvalFileReader;
22
+ }
23
+ /** Build stable provenance metadata from explicit git/cloud inputs. */
24
+ export declare function createEvalRunProvenance(options?: CreateEvalRunProvenanceOptions): EvalRunProvenance;
25
+ /** Resolve local or Cloud provenance for an eval run without failing the eval if git metadata is unavailable. */
26
+ export declare function resolveEvalRunProvenance(options?: ResolveEvalRunProvenanceOptions): Promise<EvalRunProvenance>;
27
+ export {};
28
+ //# sourceMappingURL=provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../../src/src/eval/provenance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAEtE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,KACrB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEhC,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAEnE,MAAM,WAAW,8BAA8B;IAC7C,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,+BAAgC,SAAQ,8BAA8B;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAiGD,uEAAuE;AACvE,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,8BAAmC,GAC3C,iBAAiB,CAmBnB;AA0GD,iHAAiH;AACjH,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,iBAAiB,CAAC,CAU5B"}
@@ -0,0 +1,199 @@
1
+ import * as dntShim from "../../_dnt.shims.js";
2
+ import { join } from "../../deps/jsr.io/@std/path/1.1.4/mod.js";
3
+ import { VERSION } from "../utils/version-constant.js";
4
+ function firstValue(env, keys) {
5
+ for (const key of keys) {
6
+ const value = env[key];
7
+ if (typeof value === "string" && value.trim().length > 0)
8
+ return value.trim();
9
+ }
10
+ return undefined;
11
+ }
12
+ function collectEnv() {
13
+ return {
14
+ AG_UI_EVAL_BRANCH_ID: dntShim.Deno.env.get("AG_UI_EVAL_BRANCH_ID"),
15
+ AG_UI_EVAL_PROJECT_ID: dntShim.Deno.env.get("AG_UI_EVAL_PROJECT_ID"),
16
+ AG_UI_EVAL_PROJECT_SLUG: dntShim.Deno.env.get("AG_UI_EVAL_PROJECT_SLUG"),
17
+ AG_UI_EVAL_RELEASE_ID: dntShim.Deno.env.get("AG_UI_EVAL_RELEASE_ID"),
18
+ CI: dntShim.Deno.env.get("CI"),
19
+ GITHUB_ACTIONS: dntShim.Deno.env.get("GITHUB_ACTIONS"),
20
+ GITHUB_REF_NAME: dntShim.Deno.env.get("GITHUB_REF_NAME"),
21
+ GITHUB_SHA: dntShim.Deno.env.get("GITHUB_SHA"),
22
+ TENANT_BRANCH_ID: dntShim.Deno.env.get("TENANT_BRANCH_ID"),
23
+ TENANT_DEPLOYMENT_ID: dntShim.Deno.env.get("TENANT_DEPLOYMENT_ID"),
24
+ TENANT_ENVIRONMENT: dntShim.Deno.env.get("TENANT_ENVIRONMENT"),
25
+ TENANT_PROJECT_ID: dntShim.Deno.env.get("TENANT_PROJECT_ID"),
26
+ TENANT_PROJECT_SLUG: dntShim.Deno.env.get("TENANT_PROJECT_SLUG"),
27
+ TENANT_RELEASE_ID: dntShim.Deno.env.get("TENANT_RELEASE_ID"),
28
+ VERCEL_ENV: dntShim.Deno.env.get("VERCEL_ENV"),
29
+ VERYFRONT_BRANCH_REF: dntShim.Deno.env.get("VERYFRONT_BRANCH_REF"),
30
+ VERYFRONT_DEPLOYMENT_ID: dntShim.Deno.env.get("VERYFRONT_DEPLOYMENT_ID"),
31
+ VERYFRONT_ENVIRONMENT: dntShim.Deno.env.get("VERYFRONT_ENVIRONMENT"),
32
+ VERYFRONT_PROJECT_ID: dntShim.Deno.env.get("VERYFRONT_PROJECT_ID"),
33
+ VERYFRONT_PROJECT_SLUG: dntShim.Deno.env.get("VERYFRONT_PROJECT_SLUG"),
34
+ VERYFRONT_RELEASE_ID: dntShim.Deno.env.get("VERYFRONT_RELEASE_ID"),
35
+ };
36
+ }
37
+ function createCloudProvenance(env) {
38
+ const entries = Object.entries({
39
+ projectId: firstValue(env, [
40
+ "TENANT_PROJECT_ID",
41
+ "VERYFRONT_PROJECT_ID",
42
+ "AG_UI_EVAL_PROJECT_ID",
43
+ ]),
44
+ projectSlug: firstValue(env, [
45
+ "TENANT_PROJECT_SLUG",
46
+ "VERYFRONT_PROJECT_SLUG",
47
+ "AG_UI_EVAL_PROJECT_SLUG",
48
+ ]),
49
+ releaseId: firstValue(env, [
50
+ "TENANT_RELEASE_ID",
51
+ "VERYFRONT_RELEASE_ID",
52
+ "AG_UI_EVAL_RELEASE_ID",
53
+ ]),
54
+ deploymentId: firstValue(env, ["TENANT_DEPLOYMENT_ID", "VERYFRONT_DEPLOYMENT_ID"]),
55
+ branchId: firstValue(env, ["TENANT_BRANCH_ID", "AG_UI_EVAL_BRANCH_ID"]),
56
+ branchRef: firstValue(env, ["VERYFRONT_BRANCH_REF", "GITHUB_REF_NAME"]),
57
+ environment: firstValue(env, ["VERYFRONT_ENVIRONMENT", "TENANT_ENVIRONMENT", "VERCEL_ENV"]),
58
+ }).filter((entry) => entry[1] !== undefined);
59
+ return entries.length > 0
60
+ ? Object.fromEntries(entries)
61
+ : undefined;
62
+ }
63
+ function createSource(cloud, git) {
64
+ if (cloud?.releaseId)
65
+ return { kind: "release", id: cloud.releaseId };
66
+ if (cloud?.deploymentId)
67
+ return { kind: "deployment", id: cloud.deploymentId };
68
+ if (cloud?.branchId)
69
+ return { kind: "preview", id: cloud.branchId };
70
+ if (cloud?.branchRef)
71
+ return { kind: "preview", id: cloud.branchRef };
72
+ if (git?.sha)
73
+ return { kind: "git", id: git.sha };
74
+ if (cloud?.projectId || cloud?.projectSlug) {
75
+ return { kind: "workspace", id: cloud.projectSlug ?? cloud.projectId };
76
+ }
77
+ return { kind: "unknown" };
78
+ }
79
+ function createEnvironment(env, cloud, git) {
80
+ if (cloud?.releaseId || cloud?.deploymentId || cloud?.branchId || cloud?.projectId ||
81
+ cloud?.projectSlug) {
82
+ return "cloud";
83
+ }
84
+ if (env.GITHUB_ACTIONS === "true" || env.CI === "true")
85
+ return "ci";
86
+ if (git?.sha || git?.branch)
87
+ return "local";
88
+ return "unknown";
89
+ }
90
+ /** Build stable provenance metadata from explicit git/cloud inputs. */
91
+ export function createEvalRunProvenance(options = {}) {
92
+ const env = options.env ?? collectEnv();
93
+ const ciGit = firstValue(env, ["GITHUB_SHA"]);
94
+ const git = options.git ?? (ciGit
95
+ ? {
96
+ sha: ciGit,
97
+ branch: firstValue(env, ["GITHUB_REF_NAME"]),
98
+ }
99
+ : undefined);
100
+ const cloud = createCloudProvenance(env);
101
+ return {
102
+ kind: "eval-run-provenance",
103
+ environment: createEnvironment(env, cloud, git),
104
+ source: createSource(cloud, git),
105
+ frameworkVersion: options.frameworkVersion ?? VERSION,
106
+ ...(git ? { git } : {}),
107
+ ...(cloud ? { cloud } : {}),
108
+ };
109
+ }
110
+ async function defaultCommandRunner(command, args, options) {
111
+ const result = await new dntShim.Deno.Command(command, {
112
+ args,
113
+ cwd: options.cwd,
114
+ stdout: "piped",
115
+ stderr: "piped",
116
+ }).output();
117
+ const decoder = new TextDecoder();
118
+ return {
119
+ code: result.code,
120
+ stdout: decoder.decode(result.stdout),
121
+ stderr: decoder.decode(result.stderr),
122
+ };
123
+ }
124
+ async function runGit(runner, projectDir, args, options = {}) {
125
+ try {
126
+ const result = await runner("git", args, { cwd: projectDir });
127
+ if (result.code !== 0)
128
+ return undefined;
129
+ return options.trim === false ? result.stdout : result.stdout.trim();
130
+ }
131
+ catch {
132
+ return undefined;
133
+ }
134
+ }
135
+ async function sha256Hex(value) {
136
+ return sha256Bytes(new TextEncoder().encode(value));
137
+ }
138
+ async function sha256Bytes(value) {
139
+ const bytes = new Uint8Array(value.byteLength);
140
+ bytes.set(value);
141
+ const hash = await dntShim.crypto.subtle.digest("SHA-256", bytes.buffer);
142
+ return Array.from(new Uint8Array(hash))
143
+ .map((byte) => byte.toString(16).padStart(2, "0"))
144
+ .join("");
145
+ }
146
+ function parseNullSeparated(value) {
147
+ if (!value)
148
+ return [];
149
+ return value.split("\0").filter(Boolean).sort();
150
+ }
151
+ async function hashUntrackedFiles(projectDir, paths, readFile) {
152
+ const entries = [];
153
+ for (const relativePath of paths) {
154
+ try {
155
+ const content = await readFile(join(projectDir, relativePath));
156
+ entries.push(`${relativePath}\0${await sha256Bytes(content)}`);
157
+ }
158
+ catch {
159
+ entries.push(`${relativePath}\0unreadable`);
160
+ }
161
+ }
162
+ return entries.join("\0");
163
+ }
164
+ async function resolveGitProvenance(projectDir, runner, readFile) {
165
+ const sha = await runGit(runner, projectDir, ["rev-parse", "HEAD"]);
166
+ const branch = await runGit(runner, projectDir, ["rev-parse", "--abbrev-ref", "HEAD"]);
167
+ const status = await runGit(runner, projectDir, ["status", "--porcelain=v1"]);
168
+ const diff = await runGit(runner, projectDir, ["diff", "--binary", "HEAD", "--"]);
169
+ const untracked = await runGit(runner, projectDir, [
170
+ "ls-files",
171
+ "--others",
172
+ "--exclude-standard",
173
+ "-z",
174
+ ], { trim: false });
175
+ const dirty = status !== undefined ? status.length > 0 : undefined;
176
+ if (!sha && !branch && dirty === undefined)
177
+ return undefined;
178
+ const untrackedHashInput = await hashUntrackedFiles(projectDir, parseNullSeparated(untracked), readFile);
179
+ return {
180
+ ...(sha ? { sha } : {}),
181
+ ...(branch ? { branch } : {}),
182
+ ...(dirty !== undefined ? { dirty } : {}),
183
+ ...(dirty
184
+ ? { dirtyHash: await sha256Hex(`${status ?? ""}\n${diff ?? ""}\n${untrackedHashInput}`) }
185
+ : {}),
186
+ };
187
+ }
188
+ /** Resolve local or Cloud provenance for an eval run without failing the eval if git metadata is unavailable. */
189
+ export async function resolveEvalRunProvenance(options = {}) {
190
+ const projectDir = options.projectDir ?? dntShim.Deno.cwd();
191
+ const runner = options.commandRunner ?? defaultCommandRunner;
192
+ const readFile = options.fileReader ?? dntShim.Deno.readFile;
193
+ const git = options.git ?? await resolveGitProvenance(projectDir, runner, readFile);
194
+ return createEvalRunProvenance({
195
+ env: options.env,
196
+ git,
197
+ frameworkVersion: options.frameworkVersion,
198
+ });
199
+ }
@@ -1,4 +1,4 @@
1
- import type { EvalDefinition, EvalRecord, EvalReport, EvalReportSummary } from "./types.js";
1
+ import type { EvalDefinition, EvalRecord, EvalReport, EvalReportMetadata, EvalReportSummary } from "./types.js";
2
2
  /** Summarize eval records into pass/fail and metric aggregates. */
3
3
  export declare function summarizeEvalRecords(records: EvalRecord[]): EvalReportSummary;
4
4
  /** Create a JSON-serializable eval report from executed records. */
@@ -8,5 +8,6 @@ export declare function createEvalReport(input: {
8
8
  runId: string;
9
9
  startedAt: Date;
10
10
  endedAt: Date;
11
+ metadata?: EvalReportMetadata;
11
12
  }): EvalReport;
12
13
  //# sourceMappingURL=report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/src/eval/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAOd,UAAU,EACV,UAAU,EACV,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAsLpB,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAoB7E;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf,GAAG,UAAU,CAYb"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/src/eval/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAOd,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAsLpB,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAoB7E;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,GAAG,UAAU,CAab"}
@@ -187,5 +187,6 @@ export function createEvalReport(input) {
187
187
  endedAt: input.endedAt.toISOString(),
188
188
  summary: summarizeEvalRecords(input.records),
189
189
  records: input.records,
190
+ ...(input.metadata ? { metadata: input.metadata } : {}),
190
191
  };
191
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/src/eval/runner.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAEV,cAAc,EAMd,cAAc,EACf,MAAM,YAAY,CAAC;AAmQpB,6DAA6D;AAC7D,wBAAsB,OAAO,CAC3B,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,cAAc,4CAwBxB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/src/eval/runner.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAEV,cAAc,EAMd,cAAc,EACf,MAAM,YAAY,CAAC;AAmQpB,6DAA6D;AAC7D,wBAAsB,OAAO,CAC3B,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,cAAc,4CAyBxB"}
@@ -238,6 +238,7 @@ export async function runEval(definition, options) {
238
238
  runId: options.runId ?? createRunId(startedAt),
239
239
  startedAt,
240
240
  endedAt,
241
+ metadata: options.metadata,
241
242
  });
242
243
  emitEvalRuntimeMetrics(report);
243
244
  const exports = await exportEvalReport(report, options.export);
@@ -255,6 +255,7 @@ export interface RunEvalOptions {
255
255
  runId?: string;
256
256
  now?: () => Date;
257
257
  export?: EvalReportExportConfig;
258
+ metadata?: EvalReportMetadata;
258
259
  }
259
260
  /** Export configuration for a completed eval report. */
260
261
  export interface EvalReportExportConfig {
@@ -341,6 +342,88 @@ export interface EvalReportComparison {
341
342
  fixedExamples: string[];
342
343
  regressed: boolean;
343
344
  }
345
+ /** Runtime and source identity attached to an eval report. */
346
+ export interface EvalRunProvenance {
347
+ kind: "eval-run-provenance";
348
+ environment: "local" | "cloud" | "ci" | "unknown";
349
+ source: {
350
+ kind: "git" | "release" | "deployment" | "preview" | "workspace" | "unknown";
351
+ id?: string;
352
+ };
353
+ frameworkVersion?: string;
354
+ git?: {
355
+ sha?: string;
356
+ branch?: string;
357
+ dirty?: boolean;
358
+ dirtyHash?: string;
359
+ };
360
+ cloud?: {
361
+ projectId?: string;
362
+ projectSlug?: string;
363
+ releaseId?: string;
364
+ deploymentId?: string;
365
+ branchId?: string;
366
+ branchRef?: string;
367
+ environment?: string;
368
+ };
369
+ }
370
+ /** Additional report metadata that should not affect pass/fail semantics. */
371
+ export interface EvalReportMetadata {
372
+ model?: string;
373
+ provenance?: EvalRunProvenance;
374
+ }
375
+ /** Per-model row in an eval model comparison report. */
376
+ export interface EvalModelReportSummary {
377
+ model: string;
378
+ role: "baseline" | "candidate";
379
+ runId: string;
380
+ passed: number;
381
+ failed: number;
382
+ passRate: number;
383
+ failedExamples: string[];
384
+ gateFailures: number;
385
+ totalTokens?: number;
386
+ costUsd?: number;
387
+ p95Ms?: number;
388
+ groundednessScore?: number;
389
+ }
390
+ /** Candidate-vs-baseline comparison used to decide whether a model is promotable. */
391
+ export interface EvalModelCandidateComparison {
392
+ model: string;
393
+ baselineModel: string;
394
+ passRateDelta: number;
395
+ failedDelta: number;
396
+ newFailedExamples: string[];
397
+ groundednessScore?: number;
398
+ costImprovementPct?: number;
399
+ tokenImprovementPct?: number;
400
+ latencyImprovementPct?: number;
401
+ decision: EvalModelComparisonDecision;
402
+ reasons: string[];
403
+ }
404
+ /** Conservative model comparison recommendation. */
405
+ export type EvalModelComparisonDecision = "promote-candidate" | "keep-baseline" | "needs-review";
406
+ /** Aggregate report for comparing one baseline model against candidate models. */
407
+ export interface EvalModelComparison {
408
+ kind: "eval-model-comparison";
409
+ baselineModel: string;
410
+ candidateModels: string[];
411
+ models: EvalModelReportSummary[];
412
+ candidates: EvalModelCandidateComparison[];
413
+ recommendation: {
414
+ decision: EvalModelComparisonDecision;
415
+ model?: string;
416
+ reasons: string[];
417
+ };
418
+ }
419
+ /** Promotion thresholds for model comparison. */
420
+ export interface EvalModelComparisonOptions {
421
+ baselineModel: string;
422
+ minGroundedness?: number;
423
+ minCostImprovementPct?: number;
424
+ minTokenImprovementPct?: number;
425
+ minLatencyImprovementPct?: number;
426
+ }
344
427
  /** Aggregate pass/fail summary for one eval report. */
345
428
  export interface EvalReportSummary {
346
429
  records: number;
@@ -373,5 +456,6 @@ export interface EvalReport {
373
456
  summary: EvalReportSummary;
374
457
  records: EvalRecord[];
375
458
  exports?: EvalReportExportResult[];
459
+ metadata?: EvalReportMetadata;
376
460
  }
377
461
  //# sourceMappingURL=types.d.ts.map
@@ -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":"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"}
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.949";
2
+ export declare const VERSION = "0.1.951";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.949";
4
+ export const VERSION = "0.1.951";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.949",
3
+ "version": "0.1.951",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",