@agentv/core 4.22.0 → 4.24.0-next.1

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.
@@ -45,14 +45,22 @@ module.exports = __toCommonJS(validation_exports);
45
45
  // src/evaluation/validation/file-type.ts
46
46
  var import_promises = require("fs/promises");
47
47
  var import_node_path = __toESM(require("path"), 1);
48
+
49
+ // src/evaluation/yaml-loader.ts
48
50
  var import_yaml = require("yaml");
51
+ var PARSE_OPTIONS = { merge: true };
52
+ function parseYamlValue(content) {
53
+ return (0, import_yaml.parse)(content, PARSE_OPTIONS);
54
+ }
55
+
56
+ // src/evaluation/validation/file-type.ts
49
57
  var SCHEMA_EVAL_V2 = "agentv-eval-v2";
50
58
  var SCHEMA_TARGETS_V2 = "agentv-targets-v2.2";
51
59
  var SCHEMA_CONFIG_V2 = "agentv-config-v2";
52
60
  async function detectFileType(filePath) {
53
61
  try {
54
62
  const content = await (0, import_promises.readFile)(filePath, "utf8");
55
- const parsed = (0, import_yaml.parse)(content);
63
+ const parsed = parseYamlValue(content);
56
64
  if (Array.isArray(parsed)) {
57
65
  return "cases";
58
66
  }
@@ -114,7 +122,6 @@ function getExpectedSchema(fileType) {
114
122
  // src/evaluation/validation/eval-validator.ts
115
123
  var import_promises3 = require("fs/promises");
116
124
  var import_node_path3 = __toESM(require("path"), 1);
117
- var import_yaml3 = require("yaml");
118
125
 
119
126
  // src/evaluation/interpolation.ts
120
127
  var ENV_VAR_PATTERN = /\$\{\{\s*([A-Za-z_][A-Za-z0-9_]*)\s*\}\}/g;
@@ -139,7 +146,6 @@ function interpolateEnv(value, env) {
139
146
  var import_promises2 = require("fs/promises");
140
147
  var import_node_path2 = __toESM(require("path"), 1);
141
148
  var import_fast_glob = __toESM(require("fast-glob"), 1);
142
- var import_yaml2 = require("yaml");
143
149
 
144
150
  // src/evaluation/types.ts
145
151
  var TEST_MESSAGE_ROLE_VALUES = ["system", "user", "assistant", "tool"];
@@ -197,7 +203,7 @@ function isGraderKind(value) {
197
203
  var ANSI_YELLOW = "\x1B[33m";
198
204
  var ANSI_RESET = "\x1B[0m";
199
205
  function parseYamlCases(content, filePath) {
200
- const raw = (0, import_yaml2.parse)(content);
206
+ const raw = parseYamlValue(content);
201
207
  const parsed = interpolateEnv(raw, process.env);
202
208
  if (!Array.isArray(parsed)) {
203
209
  throw new Error(
@@ -292,7 +298,7 @@ async function loadCasesFromDirectory(dirPath) {
292
298
  throw new Error(`Cannot read case file: ${caseFilePath}
293
299
  ${message}`);
294
300
  }
295
- const raw = (0, import_yaml2.parse)(content);
301
+ const raw = parseYamlValue(content);
296
302
  const parsed = interpolateEnv(raw, process.env);
297
303
  if (!isJsonObject(parsed)) {
298
304
  throw new Error(
@@ -352,7 +358,9 @@ var KNOWN_TOP_LEVEL_FIELDS = /* @__PURE__ */ new Set([
352
358
  "assertions",
353
359
  "evaluators",
354
360
  "preprocessors",
355
- "workspace"
361
+ "workspace",
362
+ "metadata",
363
+ "governance"
356
364
  ]);
357
365
  var DEPRECATED_TOP_LEVEL_FIELDS = /* @__PURE__ */ new Map([
358
366
  ["eval_cases", "'eval_cases' is deprecated. Use 'tests' instead."],
@@ -427,7 +435,7 @@ async function validateEvalFile(filePath) {
427
435
  let parsed;
428
436
  try {
429
437
  const content = await (0, import_promises3.readFile)(absolutePath, "utf8");
430
- parsed = interpolateEnv((0, import_yaml3.parse)(content), process.env);
438
+ parsed = interpolateEnv(parseYamlValue(content), process.env);
431
439
  } catch (error) {
432
440
  errors.push({
433
441
  severity: "error",
@@ -703,7 +711,7 @@ async function validateWorkspaceConfig(workspace, evalFilePath, errors, location
703
711
  const workspacePath = import_node_path3.default.resolve(import_node_path3.default.dirname(evalFilePath), workspace);
704
712
  try {
705
713
  const workspaceContent = await (0, import_promises3.readFile)(workspacePath, "utf8");
706
- const parsedWorkspace = interpolateEnv((0, import_yaml3.parse)(workspaceContent), process.env);
714
+ const parsedWorkspace = interpolateEnv(parseYamlValue(workspaceContent), process.env);
707
715
  if (!isObject(parsedWorkspace)) {
708
716
  errors.push({
709
717
  severity: "error",
@@ -1100,7 +1108,6 @@ function validateConversationMode(evalCase, location, filePath, errors) {
1100
1108
  // src/evaluation/validation/cases-validator.ts
1101
1109
  var import_promises4 = require("fs/promises");
1102
1110
  var import_node_path4 = __toESM(require("path"), 1);
1103
- var import_yaml4 = require("yaml");
1104
1111
  function isObject2(value) {
1105
1112
  return typeof value === "object" && value !== null && !Array.isArray(value);
1106
1113
  }
@@ -1110,7 +1117,7 @@ async function validateCasesFile(filePath) {
1110
1117
  let parsed;
1111
1118
  try {
1112
1119
  const content = await (0, import_promises4.readFile)(absolutePath, "utf8");
1113
- parsed = (0, import_yaml4.parse)(content);
1120
+ parsed = parseYamlValue(content);
1114
1121
  } catch (error) {
1115
1122
  errors.push({
1116
1123
  severity: "error",
@@ -1176,7 +1183,6 @@ async function validateCasesFile(filePath) {
1176
1183
  // src/evaluation/validation/targets-validator.ts
1177
1184
  var import_promises5 = require("fs/promises");
1178
1185
  var import_node_path6 = __toESM(require("path"), 1);
1179
- var import_yaml5 = require("yaml");
1180
1186
 
1181
1187
  // src/evaluation/providers/targets.ts
1182
1188
  var import_node_fs = require("fs");
@@ -1619,7 +1625,7 @@ async function validateTargetsFile(filePath) {
1619
1625
  let parsed;
1620
1626
  try {
1621
1627
  const content = await (0, import_promises5.readFile)(absolutePath, "utf8");
1622
- parsed = (0, import_yaml5.parse)(content);
1628
+ parsed = parseYamlValue(content);
1623
1629
  } catch (error) {
1624
1630
  errors.push({
1625
1631
  severity: "error",
@@ -1833,12 +1839,11 @@ async function validateTargetsFile(filePath) {
1833
1839
 
1834
1840
  // src/evaluation/validation/config-validator.ts
1835
1841
  var import_promises6 = require("fs/promises");
1836
- var import_yaml6 = require("yaml");
1837
1842
  async function validateConfigFile(filePath) {
1838
1843
  const errors = [];
1839
1844
  try {
1840
1845
  const content = await (0, import_promises6.readFile)(filePath, "utf8");
1841
- const parsed = (0, import_yaml6.parse)(content);
1846
+ const parsed = parseYamlValue(content);
1842
1847
  if (typeof parsed !== "object" || parsed === null) {
1843
1848
  errors.push({
1844
1849
  severity: "error",
@@ -1976,7 +1981,6 @@ async function validateConfigFile(filePath) {
1976
1981
  // src/evaluation/validation/file-reference-validator.ts
1977
1982
  var import_promises8 = require("fs/promises");
1978
1983
  var import_node_path8 = __toESM(require("path"), 1);
1979
- var import_yaml7 = require("yaml");
1980
1984
 
1981
1985
  // src/evaluation/file-utils.ts
1982
1986
  var import_node_fs2 = require("fs");
@@ -2078,7 +2082,7 @@ async function validateFileReferences(evalFilePath) {
2078
2082
  let parsed;
2079
2083
  try {
2080
2084
  const content = await (0, import_promises8.readFile)(absolutePath, "utf8");
2081
- parsed = (0, import_yaml7.parse)(content);
2085
+ parsed = parseYamlValue(content);
2082
2086
  } catch {
2083
2087
  return errors;
2084
2088
  }
@@ -2190,7 +2194,6 @@ async function validateMessagesFileRefs(messages, location, searchRoots, filePat
2190
2194
  // src/evaluation/validation/workspace-path-validator.ts
2191
2195
  var import_promises9 = require("fs/promises");
2192
2196
  var import_node_path9 = __toESM(require("path"), 1);
2193
- var import_yaml8 = require("yaml");
2194
2197
  function isObject5(value) {
2195
2198
  return typeof value === "object" && value !== null && !Array.isArray(value);
2196
2199
  }
@@ -2201,7 +2204,7 @@ async function validateWorkspacePaths(evalFilePath) {
2201
2204
  let parsed;
2202
2205
  try {
2203
2206
  const content = await (0, import_promises9.readFile)(absolutePath, "utf8");
2204
- parsed = (0, import_yaml8.parse)(content);
2207
+ parsed = parseYamlValue(content);
2205
2208
  } catch {
2206
2209
  return errors;
2207
2210
  }
@@ -2212,7 +2215,7 @@ async function validateWorkspacePaths(evalFilePath) {
2212
2215
  const workspaceFilePath = import_node_path9.default.resolve(evalDir, workspaceRaw);
2213
2216
  try {
2214
2217
  const wsContent = await (0, import_promises9.readFile)(workspaceFilePath, "utf8");
2215
- const wsParsed = (0, import_yaml8.parse)(wsContent);
2218
+ const wsParsed = parseYamlValue(wsContent);
2216
2219
  if (isObject5(wsParsed)) {
2217
2220
  const wsDir = import_node_path9.default.dirname(workspaceFilePath);
2218
2221
  await validateWorkspaceObject(wsParsed, wsDir, absolutePath, "workspace", errors);