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.
- package/esm/cli/commands/eval/command.d.ts +10 -1
- package/esm/cli/commands/eval/command.d.ts.map +1 -1
- package/esm/cli/commands/eval/command.js +84 -7
- package/esm/deno.js +1 -1
- package/esm/src/eval/factory.d.ts +4 -2
- package/esm/src/eval/factory.d.ts.map +1 -1
- package/esm/src/eval/factory.js +12 -4
- package/esm/src/eval/index.d.ts +3 -3
- package/esm/src/eval/index.d.ts.map +1 -1
- package/esm/src/eval/index.js +2 -2
- package/esm/src/eval/runner.d.ts.map +1 -1
- package/esm/src/eval/runner.js +74 -9
- package/esm/src/eval/studio.d.ts +7 -5
- package/esm/src/eval/studio.d.ts.map +1 -1
- package/esm/src/eval/studio.js +9 -3
- package/esm/src/eval/types.d.ts +44 -3
- package/esm/src/eval/types.d.ts.map +1 -1
- package/esm/src/extensions/eval/eval-report-exporter.d.ts.map +1 -1
- package/esm/src/extensions/eval/eval-report-exporter.js +5 -0
- package/esm/src/server/context/cache-invalidation.d.ts.map +1 -1
- package/esm/src/server/context/cache-invalidation.js +7 -0
- package/esm/src/server/dev-server/middleware.d.ts +7 -5
- package/esm/src/server/dev-server/middleware.d.ts.map +1 -1
- package/esm/src/server/dev-server/middleware.js +22 -14
- package/esm/src/server/production-server.d.ts.map +1 -1
- package/esm/src/server/production-server.js +7 -5
- package/esm/src/server/project-env/index.d.ts +1 -1
- package/esm/src/server/project-env/index.d.ts.map +1 -1
- package/esm/src/server/project-env/index.js +1 -1
- package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/index.js +7 -1
- package/esm/src/server/runtime-handler/project-middleware.d.ts +28 -0
- package/esm/src/server/runtime-handler/project-middleware.d.ts.map +1 -0
- package/esm/src/server/runtime-handler/project-middleware.js +136 -0
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- 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
|
|
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 =
|
|
988
|
-
|
|
989
|
-
|
|
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
|
-
|
|
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,8 @@
|
|
|
1
|
-
import type { EvalAgentInput, EvalDefinition } from "./types.js";
|
|
2
|
-
/** Define
|
|
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,
|
|
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"}
|
package/esm/src/eval/factory.js
CHANGED
|
@@ -16,14 +16,13 @@ function normalizeRepetitions(repetitions) {
|
|
|
16
16
|
}
|
|
17
17
|
return value;
|
|
18
18
|
}
|
|
19
|
-
|
|
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
|
|
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) &&
|
package/esm/src/eval/index.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/esm/src/eval/index.js
CHANGED
|
@@ -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,
|
|
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"}
|
package/esm/src/eval/runner.js
CHANGED
|
@@ -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
|
-
|
|
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 =
|
|
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
|
-
...(
|
|
234
|
-
...(
|
|
235
|
-
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
|
|
343
|
+
runId,
|
|
279
344
|
startedAt,
|
|
280
345
|
endedAt,
|
|
281
346
|
dataset,
|
package/esm/src/eval/studio.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/esm/src/eval/studio.js
CHANGED
|
@@ -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:
|
|
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:
|
|
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 =
|
|
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,
|