veryfront 0.1.1057 → 0.1.1060

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 (37) hide show
  1. package/esm/cli/commands/eval/command.d.ts +10 -1
  2. package/esm/cli/commands/eval/command.d.ts.map +1 -1
  3. package/esm/cli/commands/eval/command.js +84 -7
  4. package/esm/deno.js +1 -1
  5. package/esm/src/eval/factory.d.ts +4 -2
  6. package/esm/src/eval/factory.d.ts.map +1 -1
  7. package/esm/src/eval/factory.js +12 -4
  8. package/esm/src/eval/index.d.ts +3 -3
  9. package/esm/src/eval/index.d.ts.map +1 -1
  10. package/esm/src/eval/index.js +2 -2
  11. package/esm/src/eval/runner.d.ts.map +1 -1
  12. package/esm/src/eval/runner.js +74 -9
  13. package/esm/src/eval/studio.d.ts +7 -5
  14. package/esm/src/eval/studio.d.ts.map +1 -1
  15. package/esm/src/eval/studio.js +9 -3
  16. package/esm/src/eval/types.d.ts +44 -3
  17. package/esm/src/eval/types.d.ts.map +1 -1
  18. package/esm/src/extensions/eval/eval-report-exporter.d.ts.map +1 -1
  19. package/esm/src/extensions/eval/eval-report-exporter.js +5 -0
  20. package/esm/src/server/context/cache-invalidation.d.ts.map +1 -1
  21. package/esm/src/server/context/cache-invalidation.js +7 -0
  22. package/esm/src/server/dev-server/middleware.d.ts +7 -5
  23. package/esm/src/server/dev-server/middleware.d.ts.map +1 -1
  24. package/esm/src/server/dev-server/middleware.js +22 -14
  25. package/esm/src/server/production-server.d.ts.map +1 -1
  26. package/esm/src/server/production-server.js +7 -5
  27. package/esm/src/server/project-env/index.d.ts +1 -1
  28. package/esm/src/server/project-env/index.d.ts.map +1 -1
  29. package/esm/src/server/project-env/index.js +1 -1
  30. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  31. package/esm/src/server/runtime-handler/index.js +7 -1
  32. package/esm/src/server/runtime-handler/project-middleware.d.ts +28 -0
  33. package/esm/src/server/runtime-handler/project-middleware.d.ts.map +1 -0
  34. package/esm/src/server/runtime-handler/project-middleware.js +136 -0
  35. package/esm/src/utils/version-constant.d.ts +1 -1
  36. package/esm/src/utils/version-constant.js +1 -1
  37. package/package.json +5 -5
@@ -1,6 +1,7 @@
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, EvalModelComparisonOptions, EvalReport, EvalReportComparison, EvalReportExportConfig, EvalToolCall } from "../../../src/eval/index.js";
3
+ import { type Tool, type ToolExecutionContext } from "../../../src/tool/index.js";
4
+ import type { DiscoveredEval, EvalModelComparison, EvalModelComparisonOptions, EvalReport, EvalReportComparison, EvalReportExportConfig, EvalToolAdapterContext, EvalToolCall } from "../../../src/eval/index.js";
4
5
  import type { EvalArgs } from "./handler.js";
5
6
  export interface EvalOptions extends EvalArgs {
6
7
  }
@@ -74,12 +75,20 @@ export declare function createEvalMarkdownReport(report: EvalReport, baseline?:
74
75
  export declare function createJunitXml(report: EvalReport): string;
75
76
  export declare function writeEvalArtifacts(report: EvalReport, paths: EvalArtifactPaths, baseline?: EvalReportComparison): Promise<void>;
76
77
  export declare function createEvalExitCode(report: EvalReport, baseline?: EvalReportComparison): 0 | 1;
78
+ export declare function resolveToolTargetId(target: string): string;
77
79
  type EvalRuntimeAuthConfig = Pick<VeryfrontConfig, "projectSlug" | "fs"> & {
78
80
  projectSlug?: string;
79
81
  };
80
82
  export declare function hydrateEvalRuntimeAuth(projectDir: string, config: EvalRuntimeAuthConfig | null | undefined): Promise<import("../../shared/runtime-auth.js").RuntimeAuthContext>;
81
83
  export declare function normalizeUsage(response: AgentResponse): {};
82
84
  export declare function normalizeToolCalls(response: AgentResponse): EvalToolCall[];
85
+ export declare function createToolAdapter(tool: Tool, baseContext?: ToolExecutionContext): (context: EvalToolAdapterContext) => Promise<{
86
+ error?: string | undefined;
87
+ output: any;
88
+ toolCallId: string;
89
+ durationMs: number;
90
+ completed: boolean;
91
+ }>;
83
92
  type EvalModelComparisonConfig = {
84
93
  baselineModel: string;
85
94
  candidateModels: string[];
@@ -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":"AAOA,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAgC,KAAK,IAAI,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAChH,OAAO,KAAK,EACV,cAAc,EAGd,mBAAmB,EAEnB,0BAA0B,EAE1B,UAAU,EACV,oBAAoB,EAEpB,sBAAsB,EACtB,sBAAsB,EACtB,YAAY,EAEb,MAAM,4BAA4B,CAAC;AA2BpC,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;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,sBAAsB,GAAG,iBAAiB,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AASF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAChC,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;AAEF,KAAK,+BAA+B,GAAG;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAOF,KAAK,6BAA6B,GAAG;IACnC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CAAC;AAEF,KAAK,yBAAyB,GAAG,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;AAoDnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAO5E;AAMD,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,sBAAsB,CASxB;AAiDD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD;AAQD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAKhG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAWxE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,mBAAmB,CAgBrB;AA8GD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,+BAA+B,GAC5C,UAAU,CAiBZ;AAWD,wBAAsB,2BAA2B,CAC/C,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,+BAA+B,GAAG,SAAS,CAAC,CAgDtD;AAED,wBAAsB,8BAA8B,CAClD,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,CAerB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE,sBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAGrB;AA8FD,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC,CA0CpC;AAED,wBAAsB,uCAAuC,CAC3D,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,iCAAiC,GAAG,SAAS,CAAC,CAKxD;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,UAAU,EAAE,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,yBAA8B,GACrC,mBAAmB,CAErB;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAG7D;AAkED,uEAAuE;AACvE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,EAClB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,MAAM,CAkFR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA0CzD;AAQD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,iBAAiB,EACxB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAQf;AAMD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,CAAC,GAAG,CAAC,CAEP;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,KAAK,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,IAAI,CAAC,GAAG;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAQF,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,sEAMjD;AAaD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,MA0DrD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,EAAE,CAY1E;AAqCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,GAAE,oBAAyB,IACpE,SAAS,sBAAsB;;;;;;GAiB9C;AAyED,KAAK,yBAAyB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,KAAK,iCAAiC,GAAG;IACvC,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,EAAE,yBAAyB,CAAC;CACnC,CAAC;AA2MF,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkLrE"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import * as dntShim from "../../../_dnt.shims.js";
5
5
  import { dirname, isAbsolute, join, relative, resolve } from "../../../deps/jsr.io/@std/path/1.1.4/mod.js";
6
+ import { isErroredToolExecutionResult } from "../../../src/tool/index.js";
6
7
  import { createProjectDiscoveryConfig, discoverAll } from "../../../src/discovery/index.js";
7
8
  import { compareEvalModelReports, compareEvalReports, createEvalModelComparisonMarkdown, createEvalRunId, discoverEvals, EVAL_REPORT_SCHEMA_VERSION, exportEvalReport, resolveEvalRunProvenance, runEval, } from "../../../src/eval/index.js";
8
9
  import { getCurrentVeryfrontCloudContext, getVeryfrontCloudBootstrap, runWithVeryfrontCloudContextAsync, } from "../../../src/provider/index.js";
@@ -624,6 +625,9 @@ export function createEvalExitCode(report, baseline) {
624
625
  function resolveAgentTargetId(target) {
625
626
  return target.startsWith("agent:") ? target.slice("agent:".length) : target;
626
627
  }
628
+ export function resolveToolTargetId(target) {
629
+ return target.startsWith("tool:") ? target.slice("tool:".length) : target;
630
+ }
627
631
  function resolveEvalRuntimeProjectSlug(config) {
628
632
  return config?.projectSlug ?? config?.fs?.veryfront?.projectSlug;
629
633
  }
@@ -633,6 +637,14 @@ export async function hydrateEvalRuntimeAuth(projectDir, config) {
633
637
  projectSlug: resolveEvalRuntimeProjectSlug(config),
634
638
  });
635
639
  }
640
+ function createEvalToolExecutionContext(config) {
641
+ const projectSlug = resolveEvalRuntimeProjectSlug(config);
642
+ const authToken = dntShim.Deno.env.get("VERYFRONT_API_TOKEN");
643
+ return {
644
+ ...(projectSlug ? { projectSlug } : {}),
645
+ ...(authToken ? { authToken } : {}),
646
+ };
647
+ }
636
648
  export function normalizeUsage(response) {
637
649
  return response.usage
638
650
  ? {
@@ -705,6 +717,19 @@ export function normalizeToolCalls(response) {
705
717
  : {}),
706
718
  }));
707
719
  }
720
+ function getToolExecutionErrorMessage(output) {
721
+ if (!isErroredToolExecutionResult(output))
722
+ return undefined;
723
+ if (isRecord(output) && typeof output.error === "string")
724
+ return output.error;
725
+ if (isRecord(output) && isRecord(output.output) && typeof output.output.error === "string") {
726
+ return output.output.error;
727
+ }
728
+ return "Tool execution returned an error result.";
729
+ }
730
+ function createEvalToolCallId(toolId, context) {
731
+ return `eval-${toolId}-${context.example.id}-${context.repetition}-${dntShim.crypto.randomUUID()}`;
732
+ }
708
733
  function createAgentAdapter(agent, options) {
709
734
  return async ({ example }) => {
710
735
  const started = Date.now();
@@ -726,6 +751,25 @@ function createAgentAdapter(agent, options) {
726
751
  };
727
752
  };
728
753
  }
754
+ export function createToolAdapter(tool, baseContext = {}) {
755
+ return async (context) => {
756
+ const started = Date.now();
757
+ const toolCallId = createEvalToolCallId(tool.id, context);
758
+ const output = await tool.execute(context.input, {
759
+ ...baseContext,
760
+ runId: context.runId,
761
+ toolCallId,
762
+ });
763
+ const error = getToolExecutionErrorMessage(output);
764
+ return {
765
+ output,
766
+ toolCallId,
767
+ durationMs: Date.now() - started,
768
+ completed: !error,
769
+ ...(error ? { error } : {}),
770
+ };
771
+ };
772
+ }
729
773
  function listEvals(evals, projectDir) {
730
774
  return evals.map((item) => ({
731
775
  id: item.id,
@@ -910,6 +954,19 @@ async function outputAgentNotFound(agentId) {
910
954
  }
911
955
  exitProcess(1);
912
956
  }
957
+ async function outputToolNotFound(toolId) {
958
+ if (isJsonMode()) {
959
+ await outputJson(createErrorEnvelope("eval", {
960
+ code: "NOT_FOUND",
961
+ slug: "eval-tool-not-found",
962
+ message: `Tool "${toolId}" not found`,
963
+ }));
964
+ }
965
+ else {
966
+ cliLogger.error(`Tool "${toolId}" not found for eval target.`);
967
+ }
968
+ exitProcess(1);
969
+ }
913
970
  async function outputEvalUsageError(message) {
914
971
  if (isJsonMode()) {
915
972
  await outputJson(createErrorEnvelope("eval", {
@@ -977,6 +1034,16 @@ export async function evalCommand(options) {
977
1034
  await outputEvalUsageError(error instanceof Error ? error.message : String(error));
978
1035
  return;
979
1036
  }
1037
+ if (evalItem.definition.targetKind !== "agent") {
1038
+ if (modelComparisonConfig) {
1039
+ await outputEvalUsageError("Model comparison flags are only supported for agent evals.");
1040
+ return;
1041
+ }
1042
+ if (options.model || options.maxOutputTokens) {
1043
+ await outputEvalUsageError("--model and --max-output-tokens are only supported for agent evals.");
1044
+ return;
1045
+ }
1046
+ }
980
1047
  const discoveryConfig = createProjectDiscoveryConfig({
981
1048
  projectDir,
982
1049
  config,
@@ -984,16 +1051,26 @@ export async function evalCommand(options) {
984
1051
  verbose: options.debug,
985
1052
  });
986
1053
  const projectDiscovery = await discoverAll(discoveryConfig);
987
- const agentId = resolveAgentTargetId(evalItem.definition.target);
988
- const agent = projectDiscovery.agents.get(agentId);
989
- if (!agent) {
1054
+ const agentId = evalItem.definition.targetKind === "agent"
1055
+ ? resolveAgentTargetId(evalItem.definition.target)
1056
+ : undefined;
1057
+ const toolId = evalItem.definition.targetKind === "tool"
1058
+ ? resolveToolTargetId(evalItem.definition.target)
1059
+ : undefined;
1060
+ const agent = agentId ? projectDiscovery.agents.get(agentId) : undefined;
1061
+ const tool = toolId ? projectDiscovery.tools.get(toolId) : undefined;
1062
+ if (agentId && !agent) {
990
1063
  await outputAgentNotFound(agentId);
991
1064
  return;
992
1065
  }
1066
+ if (toolId && !tool) {
1067
+ await outputToolNotFound(toolId);
1068
+ return;
1069
+ }
993
1070
  if (modelComparisonConfig) {
994
1071
  await runEvalModelComparison({
995
1072
  evalItem,
996
- agent,
1073
+ agent: agent,
997
1074
  options,
998
1075
  projectDir,
999
1076
  config: modelComparisonConfig.config,
@@ -1014,9 +1091,9 @@ export async function evalCommand(options) {
1014
1091
  const finalizedReport = await runEvalWithGatewayBillingGroup(billingGroupId, () => runEval(evalItem.definition, {
1015
1092
  baseDir: options.datasetBase ?? projectDir,
1016
1093
  runId,
1017
- adapters: {
1018
- agent: createAgentAdapter(agent, options),
1019
- },
1094
+ adapters: evalItem.definition.targetKind === "tool"
1095
+ ? { tool: createToolAdapter(tool, createEvalToolExecutionContext(config)) }
1096
+ : { agent: createAgentAdapter(agent, options) },
1020
1097
  metadata: {
1021
1098
  provenance,
1022
1099
  ...(options.model ? { model: options.model } : {}),
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.1057",
3
+ "version": "0.1.1060",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -1,6 +1,8 @@
1
- import type { EvalAgentInput, EvalDefinition } from "./types.js";
2
- /** Define a V1 eval that targets a Veryfront agent. */
1
+ import type { EvalAgentInput, EvalDefinition, EvalToolInput } from "./types.js";
2
+ /** Define an eval that targets a Veryfront agent. */
3
3
  export declare function evalAgent(input: EvalAgentInput): EvalDefinition;
4
+ /** Define an eval that targets a Veryfront tool. */
5
+ export declare function evalTool(input: EvalToolInput): EvalDefinition;
4
6
  /** Check whether a value is a normalized eval definition. */
5
7
  export declare function isEvalDefinition(value: unknown): value is EvalDefinition;
6
8
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/src/eval/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAe,cAAc,EAAoB,MAAM,YAAY,CAAC;AAwBhG,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAmB/D;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CASxE"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/src/eval/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAEd,cAAc,EAGd,aAAa,EACd,MAAM,YAAY,CAAC;AAiDpB,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAE/D;AAED,oDAAoD;AACpD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAE7D;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CASxE"}
@@ -16,14 +16,13 @@ function normalizeRepetitions(repetitions) {
16
16
  }
17
17
  return value;
18
18
  }
19
- /** Define a V1 eval that targets a Veryfront agent. */
20
- export function evalAgent(input) {
19
+ function createEvalDefinition(targetKind, input) {
21
20
  if (typeof input.target !== "string" || input.target.trim() === "") {
22
21
  throw createEvalValidationError("Eval target must be a non-empty string");
23
22
  }
24
23
  return {
25
24
  kind: "eval",
26
- targetKind: "agent",
25
+ targetKind,
27
26
  id: input.id ?? "",
28
27
  name: input.name ?? input.id ?? input.target,
29
28
  ...(input.description ? { description: input.description } : {}),
@@ -33,16 +32,25 @@ export function evalAgent(input) {
33
32
  repetitions: normalizeRepetitions(input.repetitions),
34
33
  tags: input.tags ?? [],
35
34
  metadata: input.metadata ?? {},
35
+ ...("input" in input && input.input ? { input: input.input } : {}),
36
36
  ...(input.check ? { check: input.check } : {}),
37
37
  };
38
38
  }
39
+ /** Define an eval that targets a Veryfront agent. */
40
+ export function evalAgent(input) {
41
+ return createEvalDefinition("agent", input);
42
+ }
43
+ /** Define an eval that targets a Veryfront tool. */
44
+ export function evalTool(input) {
45
+ return createEvalDefinition("tool", input);
46
+ }
39
47
  /** Check whether a value is a normalized eval definition. */
40
48
  export function isEvalDefinition(value) {
41
49
  if (!value || typeof value !== "object")
42
50
  return false;
43
51
  const candidate = value;
44
52
  return candidate.kind === "eval" &&
45
- candidate.targetKind === "agent" &&
53
+ (candidate.targetKind === "agent" || candidate.targetKind === "tool") &&
46
54
  typeof candidate.target === "string" &&
47
55
  isEvalDataset(candidate.dataset) &&
48
56
  Array.isArray(candidate.metrics) &&
@@ -44,7 +44,7 @@
44
44
  */
45
45
  import "../../_dnt.polyfills.js";
46
46
  export { datasets } from "./datasets.js";
47
- export { evalAgent, isEvalDefinition } from "./factory.js";
47
+ export { evalAgent, evalTool, isEvalDefinition } from "./factory.js";
48
48
  export { judges } from "./judges.js";
49
49
  export { metrics } from "./metrics.js";
50
50
  export { createEvalDatasetMetadata, createEvalReport, EVAL_REPORT_SCHEMA_VERSION, summarizeEvalRecords, } from "./report.js";
@@ -54,9 +54,9 @@ export { createEvalRunProvenance, resolveEvalRunProvenance } from "./provenance.
54
54
  export { createEvalRunId } from "./run-id.js";
55
55
  export { exportEvalReport, runEval } from "./runner.js";
56
56
  export { deriveEvalId, discoverEvals, findEvalById } from "./discovery.js";
57
- export { createEvalSourceDocument, getEvalEditableFieldSchema, getEvalRunSchema, getEvalSourceDocumentSchema, getEvalSourcePatchSchema, getEvalSourceReferenceSchema, getEvalStudioCapabilitySchema, } from "./studio.js";
57
+ export { createEvalSourceDocument, getEvalEditableFieldSchema, getEvalRunSchema, getEvalSourceDocumentSchema, getEvalSourcePatchSchema, getEvalSourceReferenceSchema, getEvalStudioCapabilitySchema, getEvalTargetKindSchema, } from "./studio.js";
58
58
  export type { DiscoveredEval, EvalDiscoveryOptions, EvalDiscoveryResult } from "./discovery.js";
59
59
  export type { EvalLlmGroundednessJudgeOptions } from "./judges.js";
60
- export type { EvalAgentAdapter, EvalAgentAdapterContext, EvalAgentAdapterResult, EvalAgentInput, EvalAnswerGroundednessMetricOptions, EvalBudgetDeltaSummary, EvalCheckContext, EvalCitation, EvalDataset, EvalDatasetLoadContext, EvalDefinition, EvalDurationSummary, EvalExample, EvalExampleInput, EvalExpect, EvalExpectation, EvalFailedExampleSummary, EvalFlakeSummary, EvalGateFailureSummary, EvalKnowledgeCitationMetricOptions, EvalKnowledgeExpectedSource, EvalKnowledgeMrrMetricOptions, EvalKnowledgeRetrievalMetricOptions, EvalMetric, EvalMetricContext, EvalMetricDeltaSummary, EvalMetricFamily, EvalMetricResult, EvalMetricSummary, EvalMetricThreshold, EvalModelCandidateComparison, EvalModelComparison, EvalModelComparisonConstraint, EvalModelComparisonDecision, EvalModelComparisonMetricName, EvalModelComparisonObjective, EvalModelComparisonOptions, EvalModelReportSummary, EvalRecord, EvalReport, EvalReportComparison, EvalReportComparisonPolicy, EvalReportDatasetMetadata, EvalReportExportConfig, EvalReportMetadata, EvalReportSummary, EvalRetrievedContext, EvalRunProvenance, EvalSeverity, EvalSource, EvalTargetKind, EvalToolCall, EvalToolCallCountOptions, EvalToolCallMatchOptions, EvalToolCallStatus, EvalToolInputMatchMode, EvalTrace, EvalUsage, EvalUsageSummary, RunEvalOptions, } from "./types.js";
60
+ export type { EvalAgentAdapter, EvalAgentAdapterContext, EvalAgentAdapterResult, EvalAgentInput, EvalAnswerGroundednessMetricOptions, EvalBudgetDeltaSummary, EvalCheckContext, EvalCitation, EvalDataset, EvalDatasetLoadContext, EvalDefinition, EvalDurationSummary, EvalExample, EvalExampleInput, EvalExpect, EvalExpectation, EvalFailedExampleSummary, EvalFlakeSummary, EvalGateFailureSummary, EvalKnowledgeCitationMetricOptions, EvalKnowledgeExpectedSource, EvalKnowledgeMrrMetricOptions, EvalKnowledgeRetrievalMetricOptions, EvalMetric, EvalMetricContext, EvalMetricDeltaSummary, EvalMetricFamily, EvalMetricResult, EvalMetricSummary, EvalMetricThreshold, EvalModelCandidateComparison, EvalModelComparison, EvalModelComparisonConstraint, EvalModelComparisonDecision, EvalModelComparisonMetricName, EvalModelComparisonObjective, EvalModelComparisonOptions, EvalModelReportSummary, EvalRecord, EvalReport, EvalReportComparison, EvalReportComparisonPolicy, EvalReportDatasetMetadata, EvalReportExportConfig, EvalReportMetadata, EvalReportSummary, EvalRetrievedContext, EvalRunProvenance, EvalSeverity, EvalSource, EvalTargetKind, EvalToolAdapter, EvalToolAdapterContext, EvalToolAdapterResult, EvalToolCall, EvalToolCallCountOptions, EvalToolCallMatchOptions, EvalToolCallStatus, EvalToolInput, EvalToolInputMatchMode, EvalTrace, EvalUsage, EvalUsageSummary, RunEvalOptions, } from "./types.js";
61
61
  export type { CreateEvalSourceDocumentOptions, EvalEditableField, EvalRun, EvalSourceDocument, EvalSourcePatch, EvalSourceReference, EvalStudioCapability, } from "./studio.js";
62
62
  //# 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,EACL,yBAAyB,EACzB,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,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,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,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,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,kCAAkC,EAClC,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,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,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,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,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,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,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,EAC7B,uBAAuB,GACxB,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,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,kCAAkC,EAClC,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,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,EACZ,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,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"}
@@ -44,7 +44,7 @@
44
44
  */
45
45
  import "../../_dnt.polyfills.js";
46
46
  export { datasets } from "./datasets.js";
47
- export { evalAgent, isEvalDefinition } from "./factory.js";
47
+ export { evalAgent, evalTool, isEvalDefinition } from "./factory.js";
48
48
  export { judges } from "./judges.js";
49
49
  export { metrics } from "./metrics.js";
50
50
  export { createEvalDatasetMetadata, createEvalReport, EVAL_REPORT_SCHEMA_VERSION, summarizeEvalRecords, } from "./report.js";
@@ -54,4 +54,4 @@ export { createEvalRunProvenance, resolveEvalRunProvenance } from "./provenance.
54
54
  export { createEvalRunId } from "./run-id.js";
55
55
  export { exportEvalReport, runEval } from "./runner.js";
56
56
  export { deriveEvalId, discoverEvals, findEvalById } from "./discovery.js";
57
- export { createEvalSourceDocument, getEvalEditableFieldSchema, getEvalRunSchema, getEvalSourceDocumentSchema, getEvalSourcePatchSchema, getEvalSourceReferenceSchema, getEvalStudioCapabilitySchema, } from "./studio.js";
57
+ export { createEvalSourceDocument, getEvalEditableFieldSchema, getEvalRunSchema, getEvalSourceDocumentSchema, getEvalSourcePatchSchema, getEvalSourceReferenceSchema, getEvalStudioCapabilitySchema, getEvalTargetKindSchema, } from "./studio.js";
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/src/eval/runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1E,OAAO,EAKL,KAAK,sBAAsB,EAE5B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAEV,cAAc,EAGd,sBAAsB,EAGtB,cAAc,EACf,MAAM,YAAY,CAAC;AA8MpB,kFAAkF;AAClF,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAC3C,MAAM,CAAC,EAAE,sBAAsB,GAC9B,OAAO,CAAC,sBAAsB,EAAE,GAAG,SAAS,CAAC,CAyB/C;AAmED,6DAA6D;AAC7D,wBAAsB,OAAO,CAC3B,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,cAAc,4CA2BxB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/src/eval/runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1E,OAAO,EAKL,KAAK,sBAAsB,EAE5B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAEV,cAAc,EAGd,sBAAsB,EAKtB,cAAc,EACf,MAAM,YAAY,CAAC;AAgRpB,kFAAkF;AAClF,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAC3C,MAAM,CAAC,EAAE,sBAAsB,GAC9B,OAAO,CAAC,sBAAsB,EAAE,GAAG,SAAS,CAAC,CAyB/C;AA4FD,6DAA6D;AAC7D,wBAAsB,OAAO,CAC3B,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,cAAc,4CA4BxB"}
@@ -6,6 +6,7 @@ import { metrics as runtimeMetrics } from "../metrics/index.js";
6
6
  import { createEvalReportExporterRegistry, EvalReportExporterRegistryName, } from "../extensions/eval/index.js";
7
7
  import { trace } from "../observability/tracing/api-shim.js";
8
8
  import { tryResolve } from "../extensions/contracts.js";
9
+ const UNMAPPED_TOOL_INPUT = Symbol("unmapped-tool-input");
9
10
  function normalizeTrace(trace) {
10
11
  return {
11
12
  events: trace?.events ?? [],
@@ -27,6 +28,46 @@ function normalizeOutput(result) {
27
28
  return { text: result.text };
28
29
  return result;
29
30
  }
31
+ function normalizeToolTargetName(target) {
32
+ return target.startsWith("tool:") ? target.slice("tool:".length) : target;
33
+ }
34
+ function createDirectToolTraceCall(definition, input, result) {
35
+ return {
36
+ ...(result.toolCallId ? { id: result.toolCallId } : {}),
37
+ name: normalizeToolTargetName(definition.target),
38
+ status: result.error || result.completed === false ? "error" : "ok",
39
+ input,
40
+ output: result.output,
41
+ ...(result.error ? { error: result.error } : {}),
42
+ ...(result.durationMs !== undefined ? { metadata: { durationMs: result.durationMs } } : {}),
43
+ };
44
+ }
45
+ function normalizeToolTrace(definition, input, result) {
46
+ const trace = normalizeTrace(result.trace);
47
+ if (trace.toolCalls.length > 0)
48
+ return trace;
49
+ return {
50
+ ...trace,
51
+ toolCalls: [createDirectToolTraceCall(definition, input, result)],
52
+ };
53
+ }
54
+ async function runAgentTarget(definition, options, example, repetition) {
55
+ const adapter = options.adapters.agent;
56
+ if (!adapter) {
57
+ throw new Error(`No agent adapter configured for eval target "${definition.target}".`);
58
+ }
59
+ return normalizeAdapterResult(await adapter({ definition, example, repetition }));
60
+ }
61
+ async function runToolTarget(definition, options, example, repetition, runId, markInvoked) {
62
+ const adapter = options.adapters.tool;
63
+ if (!adapter) {
64
+ throw new Error(`No tool adapter configured for eval target "${definition.target}".`);
65
+ }
66
+ const input = definition.input ? await definition.input(example) : example.input;
67
+ markInvoked?.();
68
+ const result = await adapter({ definition, example, repetition, runId, input });
69
+ return { input, result };
70
+ }
30
71
  function isBlockingFailure(record) {
31
72
  return [...(record.metrics ?? []), ...(record.checks ?? [])].some((result) => !result.skipped && result.pass === false &&
32
73
  (result.severity === "gate" || result.severity === "budget"));
@@ -207,32 +248,55 @@ export async function exportEvalReport(report, config) {
207
248
  }
208
249
  return results;
209
250
  }
210
- async function runRecord(definition, options, example, repetition) {
251
+ async function runRecord(definition, options, example, repetition, runId) {
211
252
  const started = Date.now();
212
253
  let result;
254
+ let toolInput = UNMAPPED_TOOL_INPUT;
255
+ let toolInvoked = false;
213
256
  try {
214
- result = normalizeAdapterResult(await options.adapters.agent({ definition, example, repetition }));
257
+ if (definition.targetKind === "tool") {
258
+ const toolRun = await runToolTarget(definition, options, example, repetition, runId, () => {
259
+ toolInvoked = true;
260
+ });
261
+ result = toolRun.result;
262
+ toolInput = toolRun.input;
263
+ }
264
+ else {
265
+ result = await runAgentTarget(definition, options, example, repetition);
266
+ }
215
267
  }
216
268
  catch (error) {
217
269
  result = {
218
- text: "",
270
+ ...(definition.targetKind === "tool" ? { output: undefined } : { text: "" }),
219
271
  completed: false,
220
272
  error: error instanceof Error ? error.message : String(error),
221
273
  };
222
274
  }
223
- const output = normalizeOutput(result);
275
+ const output = definition.targetKind === "tool"
276
+ ? result.output
277
+ : normalizeOutput(result);
278
+ const agentResult = definition.targetKind === "agent"
279
+ ? result
280
+ : undefined;
224
281
  const record = {
225
282
  id: `${example.id}:${repetition}`,
226
283
  evalId: definition.id,
227
284
  exampleId: example.id,
228
285
  repetition,
229
286
  input: example.input,
287
+ ...(definition.targetKind === "tool" && toolInvoked
288
+ ? { executionInput: toolInput === UNMAPPED_TOOL_INPUT ? example.input : toolInput }
289
+ : {}),
230
290
  output,
231
291
  ...(Object.hasOwn(example, "reference") ? { reference: example.reference } : {}),
232
292
  metadata: example.metadata ?? {},
233
- ...(result.retrievedContext ? { retrievedContext: result.retrievedContext } : {}),
234
- ...(result.citations ? { citations: result.citations } : {}),
235
- trace: normalizeTrace(result.trace),
293
+ ...(agentResult?.retrievedContext ? { retrievedContext: agentResult.retrievedContext } : {}),
294
+ ...(agentResult?.citations ? { citations: agentResult.citations } : {}),
295
+ trace: definition.targetKind === "tool"
296
+ ? (toolInvoked
297
+ ? normalizeToolTrace(definition, toolInput === UNMAPPED_TOOL_INPUT ? example.input : toolInput, result)
298
+ : normalizeTrace(result.trace))
299
+ : normalizeTrace(result.trace),
236
300
  usage: normalizeUsage(result.usage),
237
301
  durationMs: result.durationMs ?? Date.now() - started,
238
302
  completed: result.completed ?? !result.error,
@@ -262,20 +326,21 @@ async function runRecord(definition, options, example, repetition) {
262
326
  /** Execute an eval locally with injected target adapters. */
263
327
  export async function runEval(definition, options) {
264
328
  const startedAt = options.now?.() ?? new Date();
329
+ const runId = options.runId ?? createEvalRunId(startedAt);
265
330
  const baseDir = options.baseDir ?? dntShim.Deno.cwd();
266
331
  const examples = await definition.dataset.load({ baseDir });
267
332
  const dataset = await createEvalDatasetMetadata(definition.dataset, examples);
268
333
  const records = [];
269
334
  for (const example of examples) {
270
335
  for (let repetition = 1; repetition <= definition.repetitions; repetition += 1) {
271
- records.push(await runRecord(definition, options, example, repetition));
336
+ records.push(await runRecord(definition, options, example, repetition, runId));
272
337
  }
273
338
  }
274
339
  const endedAt = options.now?.() ?? new Date();
275
340
  const report = createEvalReport({
276
341
  definition,
277
342
  records,
278
- runId: options.runId ?? createEvalRunId(startedAt),
343
+ runId,
279
344
  startedAt,
280
345
  endedAt,
281
346
  dataset,
@@ -2,8 +2,10 @@ import type { InferSchema } from "../extensions/schema/index.js";
2
2
  import type { DiscoveredEval } from "./discovery.js";
3
3
  /** Schema for Eval Studio capabilities. */
4
4
  export declare const getEvalStudioCapabilitySchema: () => import("../internal-agents/schema.js").Schema<"project.evals.read" | "project.evals.write" | "project.evals.run">;
5
+ /** Schema for an Eval target primitive kind. */
6
+ export declare const getEvalTargetKindSchema: () => import("../internal-agents/schema.js").Schema<"agent" | "tool">;
5
7
  /** Schema for an editable Eval source field name. */
6
- export declare const getEvalEditableFieldSchema: () => import("../internal-agents/schema.js").Schema<"target" | "description" | "metrics" | "name" | "metadata" | "tags" | "check" | "dataset" | "repetitions">;
8
+ export declare const getEvalEditableFieldSchema: () => import("../internal-agents/schema.js").Schema<"target" | "description" | "metrics" | "name" | "input" | "metadata" | "tags" | "check" | "dataset" | "repetitions">;
7
9
  /** Schema for an Eval source reference. */
8
10
  export declare const getEvalSourceReferenceSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
9
11
  filePath: import("../internal-agents/schema.js").Schema<string>;
@@ -119,7 +121,7 @@ export declare const getEvalSourceDocumentSchema: () => import("../internal-agen
119
121
  id: import("../internal-agents/schema.js").Schema<string>;
120
122
  name: import("../internal-agents/schema.js").Schema<string>;
121
123
  description: import("../internal-agents/schema.js").Schema<string | undefined>;
122
- targetKind: import("../internal-agents/schema.js").Schema<"agent">;
124
+ targetKind: import("../internal-agents/schema.js").Schema<"agent" | "tool">;
123
125
  target: import("../internal-agents/schema.js").Schema<string>;
124
126
  source: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
125
127
  filePath: import("../internal-agents/schema.js").Schema<string>;
@@ -153,8 +155,8 @@ export declare const getEvalSourceDocumentSchema: () => import("../internal-agen
153
155
  repetitions: import("../internal-agents/schema.js").Schema<number>;
154
156
  tags: import("../internal-agents/schema.js").Schema<string[]>;
155
157
  metadata: import("../internal-agents/schema.js").Schema<Record<string, unknown>>;
156
- editableFields: import("../internal-agents/schema.js").Schema<("target" | "description" | "metrics" | "name" | "metadata" | "tags" | "check" | "dataset" | "repetitions")[]>;
157
- dynamicFields: import("../internal-agents/schema.js").Schema<("target" | "description" | "metrics" | "name" | "metadata" | "tags" | "check" | "dataset" | "repetitions")[]>;
158
+ editableFields: import("../internal-agents/schema.js").Schema<("target" | "description" | "metrics" | "name" | "input" | "metadata" | "tags" | "check" | "dataset" | "repetitions")[]>;
159
+ dynamicFields: import("../internal-agents/schema.js").Schema<("target" | "description" | "metrics" | "name" | "input" | "metadata" | "tags" | "check" | "dataset" | "repetitions")[]>;
158
160
  capabilities: import("../internal-agents/schema.js").Schema<("project.evals.read" | "project.evals.write" | "project.evals.run")[]>;
159
161
  }>>;
160
162
  /** Schema for a source patch submitted from an Eval editor. */
@@ -205,7 +207,7 @@ export declare const getEvalRunSchema: () => import("../internal-agents/schema.j
205
207
  runId: import("../internal-agents/schema.js").Schema<string>;
206
208
  evalId: import("../internal-agents/schema.js").Schema<string>;
207
209
  status: import("../internal-agents/schema.js").Schema<"waiting" | "failed" | "completed" | "pending" | "running" | "cancelled">;
208
- targetKind: import("../internal-agents/schema.js").Schema<"agent">;
210
+ targetKind: import("../internal-agents/schema.js").Schema<"agent" | "tool">;
209
211
  target: import("../internal-agents/schema.js").Schema<string>;
210
212
  source: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
211
213
  filePath: import("../internal-agents/schema.js").Schema<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../../../src/src/eval/studio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,2CAA2C;AAC3C,eAAO,MAAM,6BAA6B,yHAEzC,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,0BAA0B,gKActC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,4BAA4B;;;;GAMxC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B;;;;;GAOtC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B;;;;;;;;;;;GAQtC,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB;;;;;;;;;;;GAarC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,6BAA6B;;;;;;;;GAUzC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,+BAA+B;;;;;;;GAS3C,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;GAwBxC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,kCAAkC;;;;;;;;;GAW9C,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,oCAAoC;;;;;;;GAShD,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,4BAA4B;;;;;GAOxC,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkBvC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgBpC,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6B5B,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC;AACjG,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAC3F,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC;AAC/F,4CAA4C;AAC5C,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC;AAC7F,mDAAmD;AACnD,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;AACvF,oCAAoC;AACpC,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;AAEvE,4EAA4E;AAC5E,MAAM,WAAW,+BAA+B;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAwDD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,cAAc,EAC1B,OAAO,GAAE,+BAAoC,GAC5C,kBAAkB,CAyBpB"}
1
+ {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../../../src/src/eval/studio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,2CAA2C;AAC3C,eAAO,MAAM,6BAA6B,yHAEzC,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,uEAA0D,CAAC;AAE/F,qDAAqD;AACrD,eAAO,MAAM,0BAA0B,0KAetC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,4BAA4B;;;;GAMxC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B;;;;;GAOtC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B;;;;;;;;;;;GAQtC,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB;;;;;;;;;;;GAarC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,6BAA6B;;;;;;;;GAUzC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,+BAA+B;;;;;;;GAS3C,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;GAwBxC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,kCAAkC;;;;;;;;;GAW9C,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,oCAAoC;;;;;;;GAShD,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,4BAA4B;;;;;GAOxC,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkBvC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgBpC,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6B5B,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC;AACjG,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAC3F,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC;AAC/F,4CAA4C;AAC5C,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC;AAC7F,mDAAmD;AACnD,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;AACvF,oCAAoC;AACpC,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;AAEvE,4EAA4E;AAC5E,MAAM,WAAW,+BAA+B;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAwDD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,cAAc,EAC1B,OAAO,GAAE,+BAAoC,GAC5C,kBAAkB,CA4BpB"}
@@ -1,6 +1,8 @@
1
1
  import { defineSchema } from "../schemas/index.js";
2
2
  /** Schema for Eval Studio capabilities. */
3
3
  export const getEvalStudioCapabilitySchema = defineSchema((v) => v.enum(["project.evals.read", "project.evals.write", "project.evals.run"]));
4
+ /** Schema for an Eval target primitive kind. */
5
+ export const getEvalTargetKindSchema = defineSchema((v) => v.enum(["agent", "tool"]));
4
6
  /** Schema for an editable Eval source field name. */
5
7
  export const getEvalEditableFieldSchema = defineSchema((v) => v.enum([
6
8
  "name",
@@ -11,6 +13,7 @@ export const getEvalEditableFieldSchema = defineSchema((v) => v.enum([
11
13
  "tags",
12
14
  "metadata",
13
15
  "metrics",
16
+ "input",
14
17
  "check",
15
18
  ]));
16
19
  /** Schema for an Eval source reference. */
@@ -123,7 +126,7 @@ export const getEvalSourceDocumentSchema = defineSchema((v) => v.object({
123
126
  id: v.string(),
124
127
  name: v.string(),
125
128
  description: v.string().optional(),
126
- targetKind: v.literal("agent"),
129
+ targetKind: getEvalTargetKindSchema(),
127
130
  target: v.string(),
128
131
  source: getEvalSourceReferenceSchema(),
129
132
  dataset: getEvalSourceDatasetSchema(),
@@ -157,7 +160,7 @@ export const getEvalRunSchema = defineSchema((v) => v.object({
157
160
  runId: v.string(),
158
161
  evalId: v.string(),
159
162
  status: v.enum(["pending", "running", "waiting", "completed", "failed", "cancelled"]),
160
- targetKind: v.literal("agent"),
163
+ targetKind: getEvalTargetKindSchema(),
161
164
  target: v.string(),
162
165
  source: getEvalSourceReferenceSchema().optional(),
163
166
  summary: v.object({
@@ -230,7 +233,10 @@ function createSourceMetric(metric) {
230
233
  /** Create the normalized Eval document Studio can list, inspect, and edit. */
231
234
  export function createEvalSourceDocument(discovered, options = {}) {
232
235
  const { definition } = discovered;
233
- const dynamicFields = definition.check ? ["check"] : [];
236
+ const dynamicFields = [
237
+ ...(definition.input ? ["input"] : []),
238
+ ...(definition.check ? ["check"] : []),
239
+ ];
234
240
  return getEvalSourceDocumentSchema().parse({
235
241
  kind: "eval-source-document",
236
242
  id: discovered.id,