@agentv/core 4.6.1 → 4.7.0

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.
@@ -299,7 +299,7 @@ var KNOWN_TEST_FIELDS = /* @__PURE__ */ new Set([
299
299
  "workspace",
300
300
  "metadata",
301
301
  "conversation_id",
302
- "dataset",
302
+ "suite",
303
303
  "note"
304
304
  ]);
305
305
  var NAME_PATTERN = /^[a-z0-9-]+$/;
@@ -867,15 +867,13 @@ var import_node_path4 = __toESM(require("path"), 1);
867
867
  var import_zod = require("zod");
868
868
  var CliHealthcheckHttpInputSchema = import_zod.z.object({
869
869
  url: import_zod.z.string().min(1, "healthcheck URL is required"),
870
- timeout_seconds: import_zod.z.number().positive().optional(),
871
- timeoutSeconds: import_zod.z.number().positive().optional()
872
- });
870
+ timeout_seconds: import_zod.z.number().positive().optional()
871
+ }).passthrough();
873
872
  var CliHealthcheckCommandInputSchema = import_zod.z.object({
874
873
  command: import_zod.z.string().min(1, "healthcheck command is required"),
875
874
  cwd: import_zod.z.string().optional(),
876
- timeout_seconds: import_zod.z.number().positive().optional(),
877
- timeoutSeconds: import_zod.z.number().positive().optional()
878
- });
875
+ timeout_seconds: import_zod.z.number().positive().optional()
876
+ }).passthrough();
879
877
  var CliHealthcheckInputSchema = import_zod.z.union([
880
878
  CliHealthcheckHttpInputSchema,
881
879
  CliHealthcheckCommandInputSchema
@@ -887,36 +885,28 @@ var CliTargetInputSchema = import_zod.z.object({
887
885
  command: import_zod.z.string(),
888
886
  // Files format - optional
889
887
  files_format: import_zod.z.string().optional(),
890
- filesFormat: import_zod.z.string().optional(),
891
888
  attachments_format: import_zod.z.string().optional(),
892
- attachmentsFormat: import_zod.z.string().optional(),
893
889
  // Working directory - optional
894
890
  cwd: import_zod.z.string().optional(),
895
891
  // Workspace template directory - optional (mutually exclusive with cwd)
896
892
  workspace_template: import_zod.z.string().optional(),
897
- workspaceTemplate: import_zod.z.string().optional(),
898
893
  // Timeout in seconds - optional
899
894
  timeout_seconds: import_zod.z.number().positive().optional(),
900
- timeoutSeconds: import_zod.z.number().positive().optional(),
901
895
  // Healthcheck configuration - optional
902
896
  healthcheck: CliHealthcheckInputSchema.optional(),
903
897
  // Verbose mode - optional
904
898
  verbose: import_zod.z.boolean().optional(),
905
899
  cli_verbose: import_zod.z.boolean().optional(),
906
- cliVerbose: import_zod.z.boolean().optional(),
907
900
  // Keep temp files - optional
908
901
  keep_temp_files: import_zod.z.boolean().optional(),
909
- keepTempFiles: import_zod.z.boolean().optional(),
910
902
  keep_output_files: import_zod.z.boolean().optional(),
911
- keepOutputFiles: import_zod.z.boolean().optional(),
912
903
  // Common target fields
913
904
  grader_target: import_zod.z.string().optional(),
914
905
  judge_target: import_zod.z.string().optional(),
915
906
  // backward compat
916
907
  workers: import_zod.z.number().int().min(1).optional(),
917
- provider_batching: import_zod.z.boolean().optional(),
918
- providerBatching: import_zod.z.boolean().optional()
919
- });
908
+ provider_batching: import_zod.z.boolean().optional()
909
+ }).passthrough();
920
910
  var CliHealthcheckHttpSchema = import_zod.z.object({
921
911
  url: import_zod.z.string().min(1),
922
912
  timeoutMs: import_zod.z.number().positive().optional()
@@ -948,14 +938,83 @@ var CLI_PLACEHOLDERS = /* @__PURE__ */ new Set([
948
938
  "FILES",
949
939
  "OUTPUT_FILE"
950
940
  ]);
941
+ var DEPRECATED_TARGET_CAMEL_CASE_FIELDS = /* @__PURE__ */ new Map([
942
+ ["providerBatching", "provider_batching"],
943
+ ["subagentModeAllowed", "subagent_mode_allowed"],
944
+ ["fallbackTargets", "fallback_targets"],
945
+ ["resourceName", "endpoint"],
946
+ ["baseUrl", "base_url"],
947
+ ["apiKey", "api_key"],
948
+ ["deploymentName", "model"],
949
+ ["thinkingBudget", "thinking_budget"],
950
+ ["maxTokens", "max_output_tokens"],
951
+ ["apiFormat", "api_format"],
952
+ ["timeoutSeconds", "timeout_seconds"],
953
+ ["logDir", "log_dir"],
954
+ ["logDirectory", "log_directory"],
955
+ ["logFormat", "log_format"],
956
+ ["logOutputFormat", "log_output_format"],
957
+ ["systemPrompt", "system_prompt"],
958
+ ["maxTurns", "max_turns"],
959
+ ["maxBudgetUsd", "max_budget_usd"],
960
+ ["dryRun", "dry_run"],
961
+ ["subagentRoot", "subagent_root"],
962
+ ["filesFormat", "files_format"],
963
+ ["attachmentsFormat", "attachments_format"],
964
+ ["cliUrl", "cli_url"],
965
+ ["cliPath", "cli_path"],
966
+ ["githubToken", "github_token"],
967
+ ["sessionDir", "session_dir"],
968
+ ["sessionId", "session_id"],
969
+ ["sessionStateDir", "session_state_dir"],
970
+ ["maxRetries", "max_retries"],
971
+ ["retryInitialDelayMs", "retry_initial_delay_ms"],
972
+ ["retryMaxDelayMs", "retry_max_delay_ms"],
973
+ ["retryBackoffFactor", "retry_backoff_factor"],
974
+ ["retryStatusCodes", "retry_status_codes"]
975
+ ]);
976
+ var DEPRECATED_HEALTHCHECK_CAMEL_CASE_FIELDS = /* @__PURE__ */ new Map([
977
+ ["timeoutSeconds", "timeout_seconds"]
978
+ ]);
979
+ function collectDeprecatedCamelCaseWarnings(value, location, aliases) {
980
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
981
+ return [];
982
+ }
983
+ const warnings = [];
984
+ for (const [camelCaseField, snakeCaseField] of aliases) {
985
+ if (Object.prototype.hasOwnProperty.call(value, camelCaseField)) {
986
+ warnings.push({
987
+ location: `${location}.${camelCaseField}`,
988
+ message: `camelCase field '${camelCaseField}' is no longer supported in targets.yaml. Use '${snakeCaseField}' instead.`
989
+ });
990
+ }
991
+ }
992
+ return warnings;
993
+ }
994
+ function findDeprecatedCamelCaseTargetWarnings(target, location) {
995
+ const warnings = collectDeprecatedCamelCaseWarnings(
996
+ target,
997
+ location,
998
+ DEPRECATED_TARGET_CAMEL_CASE_FIELDS
999
+ );
1000
+ if (typeof target !== "object" || target === null || Array.isArray(target)) {
1001
+ return warnings;
1002
+ }
1003
+ const healthcheck = target.healthcheck;
1004
+ warnings.push(
1005
+ ...collectDeprecatedCamelCaseWarnings(
1006
+ healthcheck,
1007
+ `${location}.healthcheck`,
1008
+ DEPRECATED_HEALTHCHECK_CAMEL_CASE_FIELDS
1009
+ )
1010
+ );
1011
+ return warnings;
1012
+ }
951
1013
  var COMMON_TARGET_SETTINGS = [
952
1014
  "use_target",
953
1015
  "provider_batching",
954
- "providerBatching",
955
1016
  "subagent_mode_allowed",
956
- "subagentModeAllowed",
957
- "fallback_targets",
958
- "fallbackTargets"
1017
+ "fallback_targets"
959
1018
  ];
960
1019
  var BASE_TARGET_SCHEMA = import_zod.z.object({
961
1020
  name: import_zod.z.string().min(1, "target name is required"),
@@ -966,10 +1025,8 @@ var BASE_TARGET_SCHEMA = import_zod.z.object({
966
1025
  // backward compat
967
1026
  workers: import_zod.z.number().int().min(1).optional(),
968
1027
  workspace_template: import_zod.z.string().optional(),
969
- workspaceTemplate: import_zod.z.string().optional(),
970
1028
  subagent_mode_allowed: import_zod.z.boolean().optional(),
971
- fallback_targets: import_zod.z.array(import_zod.z.string().min(1)).optional(),
972
- fallbackTargets: import_zod.z.array(import_zod.z.string().min(1)).optional()
1029
+ fallback_targets: import_zod.z.array(import_zod.z.string().min(1)).optional()
973
1030
  }).passthrough();
974
1031
 
975
1032
  // src/evaluation/providers/types.ts
@@ -992,7 +1049,8 @@ var KNOWN_PROVIDERS = [
992
1049
  "mock",
993
1050
  "vscode",
994
1051
  "vscode-insiders",
995
- "agentv"
1052
+ "agentv",
1053
+ "transcript"
996
1054
  ];
997
1055
  var PROVIDER_ALIASES = [
998
1056
  "azure-openai",
@@ -1024,87 +1082,68 @@ function isObject2(value) {
1024
1082
  var COMMON_SETTINGS = new Set(COMMON_TARGET_SETTINGS);
1025
1083
  var RETRY_SETTINGS = /* @__PURE__ */ new Set([
1026
1084
  "max_retries",
1027
- "maxRetries",
1028
1085
  "retry_initial_delay_ms",
1029
- "retryInitialDelayMs",
1030
1086
  "retry_max_delay_ms",
1031
- "retryMaxDelayMs",
1032
1087
  "retry_backoff_factor",
1033
- "retryBackoffFactor",
1034
- "retry_status_codes",
1035
- "retryStatusCodes"
1088
+ "retry_status_codes"
1036
1089
  ]);
1037
1090
  var AZURE_SETTINGS = /* @__PURE__ */ new Set([
1038
1091
  ...COMMON_SETTINGS,
1039
1092
  ...RETRY_SETTINGS,
1040
1093
  "endpoint",
1041
1094
  "resource",
1042
- "resourceName",
1043
1095
  "api_key",
1044
- "apiKey",
1045
1096
  "deployment",
1046
- "deploymentName",
1047
1097
  "model",
1048
1098
  "version",
1049
1099
  "api_version",
1100
+ "api_format",
1050
1101
  "temperature",
1051
- "max_output_tokens",
1052
- "maxTokens"
1102
+ "max_output_tokens"
1053
1103
  ]);
1054
1104
  var OPENAI_SETTINGS = /* @__PURE__ */ new Set([
1055
1105
  ...COMMON_SETTINGS,
1056
1106
  ...RETRY_SETTINGS,
1057
1107
  "endpoint",
1058
1108
  "base_url",
1059
- "baseUrl",
1060
1109
  "api_key",
1061
- "apiKey",
1062
1110
  "model",
1063
1111
  "deployment",
1064
1112
  "variant",
1065
1113
  "api_format",
1066
- "apiFormat",
1067
1114
  "temperature",
1068
- "max_output_tokens",
1069
- "maxTokens"
1115
+ "max_output_tokens"
1070
1116
  ]);
1071
1117
  var OPENROUTER_SETTINGS = /* @__PURE__ */ new Set([
1072
1118
  ...COMMON_SETTINGS,
1073
1119
  ...RETRY_SETTINGS,
1074
1120
  "api_key",
1075
- "apiKey",
1076
1121
  "model",
1077
1122
  "deployment",
1078
1123
  "variant",
1079
1124
  "temperature",
1080
- "max_output_tokens",
1081
- "maxTokens"
1125
+ "max_output_tokens"
1082
1126
  ]);
1083
1127
  var ANTHROPIC_SETTINGS = /* @__PURE__ */ new Set([
1084
1128
  ...COMMON_SETTINGS,
1085
1129
  ...RETRY_SETTINGS,
1086
1130
  "api_key",
1087
- "apiKey",
1088
1131
  "model",
1089
1132
  "deployment",
1090
1133
  "variant",
1091
1134
  "temperature",
1092
1135
  "max_output_tokens",
1093
- "maxTokens",
1094
- "thinking_budget",
1095
- "thinkingBudget"
1136
+ "thinking_budget"
1096
1137
  ]);
1097
1138
  var GEMINI_SETTINGS = /* @__PURE__ */ new Set([
1098
1139
  ...COMMON_SETTINGS,
1099
1140
  ...RETRY_SETTINGS,
1100
1141
  "api_key",
1101
- "apiKey",
1102
1142
  "model",
1103
1143
  "deployment",
1104
1144
  "variant",
1105
1145
  "temperature",
1106
- "max_output_tokens",
1107
- "maxTokens"
1146
+ "max_output_tokens"
1108
1147
  ]);
1109
1148
  var CODEX_SETTINGS = /* @__PURE__ */ new Set([
1110
1149
  ...COMMON_SETTINGS,
@@ -1116,40 +1155,25 @@ var CODEX_SETTINGS = /* @__PURE__ */ new Set([
1116
1155
  "arguments",
1117
1156
  "cwd",
1118
1157
  "timeout_seconds",
1119
- "timeoutSeconds",
1120
1158
  "log_dir",
1121
- "logDir",
1122
1159
  "log_directory",
1123
- "logDirectory",
1124
1160
  "log_format",
1125
- "logFormat",
1126
1161
  "log_output_format",
1127
- "logOutputFormat",
1128
1162
  "system_prompt",
1129
- "systemPrompt",
1130
- "workspace_template",
1131
- "workspaceTemplate"
1163
+ "workspace_template"
1132
1164
  ]);
1133
1165
  var COPILOT_SDK_SETTINGS = /* @__PURE__ */ new Set([
1134
1166
  ...COMMON_SETTINGS,
1135
1167
  "cli_url",
1136
- "cliUrl",
1137
1168
  "cli_path",
1138
- "cliPath",
1139
1169
  "github_token",
1140
- "githubToken",
1141
1170
  "model",
1142
1171
  "cwd",
1143
1172
  "timeout_seconds",
1144
- "timeoutSeconds",
1145
1173
  "log_dir",
1146
- "logDir",
1147
1174
  "log_format",
1148
- "logFormat",
1149
1175
  "system_prompt",
1150
- "systemPrompt",
1151
- "workspace_template",
1152
- "workspaceTemplate"
1176
+ "workspace_template"
1153
1177
  ]);
1154
1178
  var COPILOT_CLI_SETTINGS = /* @__PURE__ */ new Set([
1155
1179
  ...COMMON_SETTINGS,
@@ -1161,35 +1185,23 @@ var COPILOT_CLI_SETTINGS = /* @__PURE__ */ new Set([
1161
1185
  "model",
1162
1186
  "cwd",
1163
1187
  "timeout_seconds",
1164
- "timeoutSeconds",
1165
1188
  "log_dir",
1166
- "logDir",
1167
1189
  "log_format",
1168
- "logFormat",
1169
1190
  "system_prompt",
1170
- "systemPrompt",
1171
- "workspace_template",
1172
- "workspaceTemplate"
1191
+ "workspace_template"
1173
1192
  ]);
1174
1193
  var VSCODE_SETTINGS = /* @__PURE__ */ new Set([
1175
1194
  ...COMMON_SETTINGS,
1176
1195
  "executable",
1177
1196
  "workspace_template",
1178
- "workspaceTemplate",
1179
1197
  "wait",
1180
1198
  "dry_run",
1181
- "dryRun",
1182
1199
  "subagent_root",
1183
- "subagentRoot",
1184
- "timeout_seconds",
1185
- "timeoutSeconds"
1200
+ "timeout_seconds"
1186
1201
  ]);
1187
1202
  var MOCK_SETTINGS = /* @__PURE__ */ new Set([
1188
1203
  ...COMMON_SETTINGS,
1189
1204
  "response",
1190
- "delayMs",
1191
- "delayMinMs",
1192
- "delayMaxMs",
1193
1205
  "trace"
1194
1206
  // For testing tool-trajectory evaluator
1195
1207
  ]);
@@ -1198,23 +1210,14 @@ var CLAUDE_SETTINGS = /* @__PURE__ */ new Set([
1198
1210
  "model",
1199
1211
  "cwd",
1200
1212
  "timeout_seconds",
1201
- "timeoutSeconds",
1202
1213
  "log_dir",
1203
- "logDir",
1204
1214
  "log_directory",
1205
- "logDirectory",
1206
1215
  "log_format",
1207
- "logFormat",
1208
1216
  "log_output_format",
1209
- "logOutputFormat",
1210
1217
  "system_prompt",
1211
- "systemPrompt",
1212
1218
  "workspace_template",
1213
- "workspaceTemplate",
1214
1219
  "max_turns",
1215
- "maxTurns",
1216
- "max_budget_usd",
1217
- "maxBudgetUsd"
1220
+ "max_budget_usd"
1218
1221
  ]);
1219
1222
  function getKnownSettings(provider) {
1220
1223
  const normalizedProvider = provider.toLowerCase();
@@ -1339,15 +1342,15 @@ async function validateTargetsFile(filePath) {
1339
1342
  });
1340
1343
  return;
1341
1344
  }
1342
- const timeoutSeconds = healthcheck.timeout_seconds ?? healthcheck.timeoutSeconds;
1345
+ const timeoutSeconds = healthcheck.timeout_seconds;
1343
1346
  if (timeoutSeconds !== void 0) {
1344
1347
  const numericTimeout = Number(timeoutSeconds);
1345
1348
  if (!Number.isFinite(numericTimeout) || numericTimeout <= 0) {
1346
1349
  errors2.push({
1347
1350
  severity: "error",
1348
1351
  filePath: absolutePath2,
1349
- location: `${location}.timeoutSeconds`,
1350
- message: "healthcheck.timeoutSeconds must be a positive number when provided"
1352
+ location: `${location}.timeout_seconds`,
1353
+ message: "healthcheck.timeout_seconds must be a positive number when provided"
1351
1354
  });
1352
1355
  }
1353
1356
  }
@@ -1446,6 +1449,18 @@ async function validateTargetsFile(filePath) {
1446
1449
  });
1447
1450
  continue;
1448
1451
  }
1452
+ for (const warning of findDeprecatedCamelCaseTargetWarnings(target, location)) {
1453
+ const fieldMatch = warning.message.match(/field '([^']+)'/);
1454
+ const replacementMatch = warning.message.match(/Use '([^']+)' instead/);
1455
+ const field = fieldMatch?.[1] ?? "unknown";
1456
+ const replacement = replacementMatch?.[1] ?? "snake_case";
1457
+ errors.push({
1458
+ severity: "error",
1459
+ filePath: absolutePath,
1460
+ location: warning.location,
1461
+ message: `camelCase field '${field}' is no longer supported in targets.yaml. Use '${replacement}' instead.`
1462
+ });
1463
+ }
1449
1464
  const name = target.name;
1450
1465
  if (typeof name !== "string" || name.trim().length === 0) {
1451
1466
  errors.push({