@agentv/core 4.15.9-next.1 → 4.16.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.
- package/dist/{chunk-HVEQNYTC.js → chunk-6VZY3B6M.js} +55 -165
- package/dist/chunk-6VZY3B6M.js.map +1 -0
- package/dist/evaluation/validation/index.cjs +18 -17
- package/dist/evaluation/validation/index.cjs.map +1 -1
- package/dist/evaluation/validation/index.js +13 -12
- package/dist/evaluation/validation/index.js.map +1 -1
- package/dist/index.cjs +329 -257
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +71 -25
- package/dist/index.d.ts +71 -25
- package/dist/index.js +249 -59
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-HVEQNYTC.js.map +0 -1
|
@@ -215,6 +215,8 @@ async function resolveFileReference(rawValue, searchRoots) {
|
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
// src/evaluation/providers/targets.ts
|
|
218
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
219
|
+
import { homedir } from "node:os";
|
|
218
220
|
import path2 from "node:path";
|
|
219
221
|
import { z } from "zod";
|
|
220
222
|
var CliHealthcheckHttpInputSchema = z.object({
|
|
@@ -240,8 +242,6 @@ var CliTargetInputSchema = z.object({
|
|
|
240
242
|
attachments_format: z.string().optional(),
|
|
241
243
|
// Working directory - optional
|
|
242
244
|
cwd: z.string().optional(),
|
|
243
|
-
// Workspace template directory - optional (mutually exclusive with cwd)
|
|
244
|
-
workspace_template: z.string().optional(),
|
|
245
245
|
// Timeout in seconds - optional
|
|
246
246
|
timeout_seconds: z.number().positive().optional(),
|
|
247
247
|
// Healthcheck configuration - optional
|
|
@@ -276,7 +276,6 @@ var CliTargetConfigSchema = z.object({
|
|
|
276
276
|
command: z.string().min(1),
|
|
277
277
|
filesFormat: z.string().optional(),
|
|
278
278
|
cwd: z.string().optional(),
|
|
279
|
-
workspaceTemplate: z.string().optional(),
|
|
280
279
|
timeoutMs: z.number().positive().optional(),
|
|
281
280
|
healthcheck: CliHealthcheckSchema.optional(),
|
|
282
281
|
verbose: z.boolean().optional(),
|
|
@@ -319,19 +318,6 @@ function normalizeCliTargetInput(input, env, evalFilePath) {
|
|
|
319
318
|
const command = resolveString(input.command, env, `${targetName} CLI command`, true);
|
|
320
319
|
const filesFormatSource = input.files_format ?? input.attachments_format;
|
|
321
320
|
const filesFormat = resolveOptionalLiteralString(filesFormatSource);
|
|
322
|
-
const workspaceTemplateSource = input.workspace_template;
|
|
323
|
-
let workspaceTemplate = resolveOptionalString(
|
|
324
|
-
workspaceTemplateSource,
|
|
325
|
-
env,
|
|
326
|
-
`${targetName} workspace template`,
|
|
327
|
-
{
|
|
328
|
-
allowLiteral: true,
|
|
329
|
-
optionalEnv: true
|
|
330
|
-
}
|
|
331
|
-
);
|
|
332
|
-
if (workspaceTemplate && evalFilePath && !path2.isAbsolute(workspaceTemplate)) {
|
|
333
|
-
workspaceTemplate = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), workspaceTemplate);
|
|
334
|
-
}
|
|
335
321
|
let cwd = resolveOptionalString(input.cwd, env, `${targetName} working directory`, {
|
|
336
322
|
allowLiteral: true,
|
|
337
323
|
optionalEnv: true
|
|
@@ -339,12 +325,7 @@ function normalizeCliTargetInput(input, env, evalFilePath) {
|
|
|
339
325
|
if (cwd && evalFilePath && !path2.isAbsolute(cwd)) {
|
|
340
326
|
cwd = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), cwd);
|
|
341
327
|
}
|
|
342
|
-
if (cwd &&
|
|
343
|
-
throw new Error(
|
|
344
|
-
`${targetName}: 'cwd' and 'workspace_template' are mutually exclusive. Use 'cwd' to run in an existing directory, or 'workspace_template' to copy a template to a temp location.`
|
|
345
|
-
);
|
|
346
|
-
}
|
|
347
|
-
if (!cwd && !workspaceTemplate && evalFilePath) {
|
|
328
|
+
if (!cwd && evalFilePath) {
|
|
348
329
|
cwd = path2.dirname(path2.resolve(evalFilePath));
|
|
349
330
|
}
|
|
350
331
|
const timeoutSeconds = input.timeout_seconds;
|
|
@@ -356,7 +337,6 @@ function normalizeCliTargetInput(input, env, evalFilePath) {
|
|
|
356
337
|
command,
|
|
357
338
|
filesFormat,
|
|
358
339
|
cwd,
|
|
359
|
-
workspaceTemplate,
|
|
360
340
|
timeoutMs,
|
|
361
341
|
healthcheck,
|
|
362
342
|
verbose,
|
|
@@ -425,11 +405,6 @@ function collectDeprecatedCamelCaseWarnings(value, location, aliases) {
|
|
|
425
405
|
return warnings;
|
|
426
406
|
}
|
|
427
407
|
function assertNoDeprecatedCamelCaseTargetFields(definition) {
|
|
428
|
-
if (Object.prototype.hasOwnProperty.call(definition, "workspaceTemplate")) {
|
|
429
|
-
throw new Error(
|
|
430
|
-
`${definition.name}: target-level workspace_template has been removed. Use eval-level workspace.template.`
|
|
431
|
-
);
|
|
432
|
-
}
|
|
433
408
|
const warning = findDeprecatedCamelCaseTargetWarnings(
|
|
434
409
|
definition,
|
|
435
410
|
`target "${definition.name}"`
|
|
@@ -479,7 +454,6 @@ var BASE_TARGET_SCHEMA = z.object({
|
|
|
479
454
|
judge_target: z.string().optional(),
|
|
480
455
|
// backward compat
|
|
481
456
|
workers: z.number().int().min(1).optional(),
|
|
482
|
-
workspace_template: z.string().optional(),
|
|
483
457
|
subagent_mode_allowed: z.boolean().optional(),
|
|
484
458
|
fallback_targets: z.array(z.string().min(1)).optional()
|
|
485
459
|
}).passthrough();
|
|
@@ -576,11 +550,6 @@ function resolveDelegatedTargetDefinition(name, definitions, env = process.env)
|
|
|
576
550
|
function resolveTargetDefinition(definition, env = process.env, evalFilePath, options) {
|
|
577
551
|
assertNoDeprecatedCamelCaseTargetFields(definition);
|
|
578
552
|
const parsed = BASE_TARGET_SCHEMA.parse(definition);
|
|
579
|
-
if (parsed.workspace_template !== void 0) {
|
|
580
|
-
throw new Error(
|
|
581
|
-
`${parsed.name}: target-level workspace_template has been removed. Use eval-level workspace.template.`
|
|
582
|
-
);
|
|
583
|
-
}
|
|
584
553
|
if (!parsed.provider) {
|
|
585
554
|
throw new Error(
|
|
586
555
|
`${parsed.name}: 'provider' is required (targets with use_target must be resolved before calling resolveTargetDefinition)`
|
|
@@ -677,6 +646,20 @@ function resolveTargetDefinition(definition, env = process.env, evalFilePath, op
|
|
|
677
646
|
...base,
|
|
678
647
|
config: resolvePiCliConfig(parsed, env, evalFilePath)
|
|
679
648
|
};
|
|
649
|
+
case "cc-mirror": {
|
|
650
|
+
const variantName = resolveOptionalString(parsed.variant, env, `${parsed.name} cc-mirror variant`, {
|
|
651
|
+
allowLiteral: true,
|
|
652
|
+
optionalEnv: true
|
|
653
|
+
}) ?? parsed.name;
|
|
654
|
+
if (!parsed.executable) {
|
|
655
|
+
parsed.executable = resolveCcMirrorBinaryPath(variantName);
|
|
656
|
+
}
|
|
657
|
+
return {
|
|
658
|
+
kind: "claude-cli",
|
|
659
|
+
...base,
|
|
660
|
+
config: resolveClaudeConfig(parsed, env, evalFilePath)
|
|
661
|
+
};
|
|
662
|
+
}
|
|
680
663
|
case "claude":
|
|
681
664
|
case "claude-code":
|
|
682
665
|
case "claude-cli":
|
|
@@ -865,12 +848,11 @@ function resolveGeminiConfig(target, env) {
|
|
|
865
848
|
retry
|
|
866
849
|
};
|
|
867
850
|
}
|
|
868
|
-
function resolveCodexConfig(target, env,
|
|
851
|
+
function resolveCodexConfig(target, env, _evalFilePath) {
|
|
869
852
|
const modelSource = target.model;
|
|
870
853
|
const executableSource = target.executable ?? target.command ?? target.binary;
|
|
871
854
|
const argsSource = target.args ?? target.arguments;
|
|
872
855
|
const cwdSource = target.cwd;
|
|
873
|
-
const workspaceTemplateSource = target.workspace_template;
|
|
874
856
|
const timeoutSource = target.timeout_seconds;
|
|
875
857
|
const logDirSource = target.log_dir ?? target.log_directory;
|
|
876
858
|
const logFormatSource = target.log_format ?? target.log_output_format ?? env.AGENTV_CODEX_LOG_FORMAT;
|
|
@@ -893,23 +875,6 @@ function resolveCodexConfig(target, env, evalFilePath) {
|
|
|
893
875
|
allowLiteral: true,
|
|
894
876
|
optionalEnv: true
|
|
895
877
|
});
|
|
896
|
-
let workspaceTemplate = resolveOptionalString(
|
|
897
|
-
workspaceTemplateSource,
|
|
898
|
-
env,
|
|
899
|
-
`${target.name} codex workspace template`,
|
|
900
|
-
{
|
|
901
|
-
allowLiteral: true,
|
|
902
|
-
optionalEnv: true
|
|
903
|
-
}
|
|
904
|
-
);
|
|
905
|
-
if (workspaceTemplate && evalFilePath && !path2.isAbsolute(workspaceTemplate)) {
|
|
906
|
-
workspaceTemplate = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), workspaceTemplate);
|
|
907
|
-
}
|
|
908
|
-
if (cwd && workspaceTemplate) {
|
|
909
|
-
throw new Error(
|
|
910
|
-
`${target.name}: 'cwd' and 'workspace_template' are mutually exclusive. Use 'cwd' to run in an existing directory, or 'workspace_template' to copy a template to a temp location.`
|
|
911
|
-
);
|
|
912
|
-
}
|
|
913
878
|
const timeoutMs = resolveTimeoutMs(timeoutSource, `${target.name} codex timeout`);
|
|
914
879
|
const logDir = resolveOptionalString(logDirSource, env, `${target.name} codex log directory`, {
|
|
915
880
|
allowLiteral: true,
|
|
@@ -922,7 +887,6 @@ function resolveCodexConfig(target, env, evalFilePath) {
|
|
|
922
887
|
executable,
|
|
923
888
|
args,
|
|
924
889
|
cwd,
|
|
925
|
-
workspaceTemplate,
|
|
926
890
|
timeoutMs,
|
|
927
891
|
logDir,
|
|
928
892
|
logFormat,
|
|
@@ -975,13 +939,12 @@ function resolveStreamLog(target, envFallback) {
|
|
|
975
939
|
deprecationWarning: `${target.name}: 'log_format' is deprecated and will be removed in v4.16. Use 'stream_log: ${streamLogEquivalent}' instead (log_format: '${normalized}' \u2192 stream_log: '${streamLogEquivalent}').`
|
|
976
940
|
};
|
|
977
941
|
}
|
|
978
|
-
function resolveCopilotSdkConfig(target, env,
|
|
942
|
+
function resolveCopilotSdkConfig(target, env, _evalFilePath) {
|
|
979
943
|
const cliUrlSource = target.cli_url;
|
|
980
944
|
const cliPathSource = target.cli_path;
|
|
981
945
|
const githubTokenSource = target.github_token;
|
|
982
946
|
const modelSource = target.model;
|
|
983
947
|
const cwdSource = target.cwd;
|
|
984
|
-
const workspaceTemplateSource = target.workspace_template;
|
|
985
948
|
const timeoutSource = target.timeout_seconds;
|
|
986
949
|
const logDirSource = target.log_dir ?? target.log_directory;
|
|
987
950
|
const logFormatSource = target.log_format;
|
|
@@ -1016,23 +979,6 @@ function resolveCopilotSdkConfig(target, env, evalFilePath) {
|
|
|
1016
979
|
allowLiteral: true,
|
|
1017
980
|
optionalEnv: true
|
|
1018
981
|
});
|
|
1019
|
-
let workspaceTemplate = resolveOptionalString(
|
|
1020
|
-
workspaceTemplateSource,
|
|
1021
|
-
env,
|
|
1022
|
-
`${target.name} copilot-sdk workspace template`,
|
|
1023
|
-
{
|
|
1024
|
-
allowLiteral: true,
|
|
1025
|
-
optionalEnv: true
|
|
1026
|
-
}
|
|
1027
|
-
);
|
|
1028
|
-
if (workspaceTemplate && evalFilePath && !path2.isAbsolute(workspaceTemplate)) {
|
|
1029
|
-
workspaceTemplate = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), workspaceTemplate);
|
|
1030
|
-
}
|
|
1031
|
-
if (cwd && workspaceTemplate) {
|
|
1032
|
-
throw new Error(
|
|
1033
|
-
`${target.name}: 'cwd' and 'workspace_template' are mutually exclusive. Use 'cwd' to run in an existing directory, or 'workspace_template' to copy a template to a temp location.`
|
|
1034
|
-
);
|
|
1035
|
-
}
|
|
1036
982
|
const timeoutMs = resolveTimeoutMs(timeoutSource, `${target.name} copilot-sdk timeout`);
|
|
1037
983
|
const logDir = resolveOptionalString(
|
|
1038
984
|
logDirSource,
|
|
@@ -1097,7 +1043,6 @@ function resolveCopilotSdkConfig(target, env, evalFilePath) {
|
|
|
1097
1043
|
githubToken,
|
|
1098
1044
|
model,
|
|
1099
1045
|
cwd,
|
|
1100
|
-
workspaceTemplate,
|
|
1101
1046
|
timeoutMs,
|
|
1102
1047
|
logDir,
|
|
1103
1048
|
logFormat,
|
|
@@ -1111,12 +1056,11 @@ function resolveCopilotSdkConfig(target, env, evalFilePath) {
|
|
|
1111
1056
|
byokWireApi
|
|
1112
1057
|
};
|
|
1113
1058
|
}
|
|
1114
|
-
function resolveCopilotCliConfig(target, env,
|
|
1059
|
+
function resolveCopilotCliConfig(target, env, _evalFilePath) {
|
|
1115
1060
|
const executableSource = target.executable ?? target.command ?? target.binary;
|
|
1116
1061
|
const modelSource = target.model;
|
|
1117
1062
|
const argsSource = target.args ?? target.arguments;
|
|
1118
1063
|
const cwdSource = target.cwd;
|
|
1119
|
-
const workspaceTemplateSource = target.workspace_template;
|
|
1120
1064
|
const timeoutSource = target.timeout_seconds;
|
|
1121
1065
|
const logDirSource = target.log_dir ?? target.log_directory;
|
|
1122
1066
|
const logFormatSource = target.log_format;
|
|
@@ -1139,23 +1083,6 @@ function resolveCopilotCliConfig(target, env, evalFilePath) {
|
|
|
1139
1083
|
allowLiteral: true,
|
|
1140
1084
|
optionalEnv: true
|
|
1141
1085
|
});
|
|
1142
|
-
let workspaceTemplate = resolveOptionalString(
|
|
1143
|
-
workspaceTemplateSource,
|
|
1144
|
-
env,
|
|
1145
|
-
`${target.name} copilot-cli workspace template`,
|
|
1146
|
-
{
|
|
1147
|
-
allowLiteral: true,
|
|
1148
|
-
optionalEnv: true
|
|
1149
|
-
}
|
|
1150
|
-
);
|
|
1151
|
-
if (workspaceTemplate && evalFilePath && !path2.isAbsolute(workspaceTemplate)) {
|
|
1152
|
-
workspaceTemplate = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), workspaceTemplate);
|
|
1153
|
-
}
|
|
1154
|
-
if (cwd && workspaceTemplate) {
|
|
1155
|
-
throw new Error(
|
|
1156
|
-
`${target.name}: 'cwd' and 'workspace_template' are mutually exclusive. Use 'cwd' to run in an existing directory, or 'workspace_template' to copy a template to a temp location.`
|
|
1157
|
-
);
|
|
1158
|
-
}
|
|
1159
1086
|
const timeoutMs = resolveTimeoutMs(timeoutSource, `${target.name} copilot-cli timeout`);
|
|
1160
1087
|
const logDir = resolveOptionalString(
|
|
1161
1088
|
logDirSource,
|
|
@@ -1173,7 +1100,6 @@ function resolveCopilotCliConfig(target, env, evalFilePath) {
|
|
|
1173
1100
|
model,
|
|
1174
1101
|
args,
|
|
1175
1102
|
cwd,
|
|
1176
|
-
workspaceTemplate,
|
|
1177
1103
|
timeoutMs,
|
|
1178
1104
|
logDir,
|
|
1179
1105
|
logFormat,
|
|
@@ -1188,14 +1114,13 @@ function normalizeCopilotLogFormat(value) {
|
|
|
1188
1114
|
if (normalized === "json" || normalized === "summary") return normalized;
|
|
1189
1115
|
throw new Error("copilot log format must be 'summary' or 'json'");
|
|
1190
1116
|
}
|
|
1191
|
-
function resolvePiCodingAgentConfig(target, env,
|
|
1117
|
+
function resolvePiCodingAgentConfig(target, env, _evalFilePath) {
|
|
1192
1118
|
const subproviderSource = target.subprovider;
|
|
1193
1119
|
const modelSource = target.model ?? target.pi_model;
|
|
1194
1120
|
const apiKeySource = target.api_key;
|
|
1195
1121
|
const toolsSource = target.tools ?? target.pi_tools;
|
|
1196
1122
|
const thinkingSource = target.thinking ?? target.pi_thinking;
|
|
1197
1123
|
const cwdSource = target.cwd;
|
|
1198
|
-
const workspaceTemplateSource = target.workspace_template;
|
|
1199
1124
|
const timeoutSource = target.timeout_seconds;
|
|
1200
1125
|
const logDirSource = target.log_dir ?? target.log_directory;
|
|
1201
1126
|
const logFormatSource = target.log_format;
|
|
@@ -1239,23 +1164,6 @@ function resolvePiCodingAgentConfig(target, env, evalFilePath) {
|
|
|
1239
1164
|
allowLiteral: true,
|
|
1240
1165
|
optionalEnv: true
|
|
1241
1166
|
});
|
|
1242
|
-
let workspaceTemplate = resolveOptionalString(
|
|
1243
|
-
workspaceTemplateSource,
|
|
1244
|
-
env,
|
|
1245
|
-
`${target.name} pi workspace template`,
|
|
1246
|
-
{
|
|
1247
|
-
allowLiteral: true,
|
|
1248
|
-
optionalEnv: true
|
|
1249
|
-
}
|
|
1250
|
-
);
|
|
1251
|
-
if (workspaceTemplate && evalFilePath && !path2.isAbsolute(workspaceTemplate)) {
|
|
1252
|
-
workspaceTemplate = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), workspaceTemplate);
|
|
1253
|
-
}
|
|
1254
|
-
if (cwd && workspaceTemplate) {
|
|
1255
|
-
throw new Error(
|
|
1256
|
-
`${target.name}: 'cwd' and 'workspace_template' are mutually exclusive. Use 'cwd' to run in an existing directory, or 'workspace_template' to copy a template to a temp location.`
|
|
1257
|
-
);
|
|
1258
|
-
}
|
|
1259
1167
|
const timeoutMs = resolveTimeoutMs(timeoutSource, `${target.name} pi timeout`);
|
|
1260
1168
|
const logDir = resolveOptionalString(logDirSource, env, `${target.name} pi log directory`, {
|
|
1261
1169
|
allowLiteral: true,
|
|
@@ -1271,7 +1179,6 @@ function resolvePiCodingAgentConfig(target, env, evalFilePath) {
|
|
|
1271
1179
|
tools,
|
|
1272
1180
|
thinking,
|
|
1273
1181
|
cwd,
|
|
1274
|
-
workspaceTemplate,
|
|
1275
1182
|
timeoutMs,
|
|
1276
1183
|
logDir,
|
|
1277
1184
|
logFormat,
|
|
@@ -1279,7 +1186,7 @@ function resolvePiCodingAgentConfig(target, env, evalFilePath) {
|
|
|
1279
1186
|
systemPrompt
|
|
1280
1187
|
};
|
|
1281
1188
|
}
|
|
1282
|
-
function resolvePiCliConfig(target, env,
|
|
1189
|
+
function resolvePiCliConfig(target, env, _evalFilePath) {
|
|
1283
1190
|
const executableSource = target.executable ?? target.command ?? target.binary;
|
|
1284
1191
|
const subproviderSource = target.subprovider;
|
|
1285
1192
|
const modelSource = target.model ?? target.pi_model;
|
|
@@ -1287,7 +1194,6 @@ function resolvePiCliConfig(target, env, evalFilePath) {
|
|
|
1287
1194
|
const toolsSource = target.tools ?? target.pi_tools;
|
|
1288
1195
|
const thinkingSource = target.thinking ?? target.pi_thinking;
|
|
1289
1196
|
const cwdSource = target.cwd;
|
|
1290
|
-
const workspaceTemplateSource = target.workspace_template;
|
|
1291
1197
|
const timeoutSource = target.timeout_seconds;
|
|
1292
1198
|
const logDirSource = target.log_dir ?? target.log_directory;
|
|
1293
1199
|
const logFormatSource = target.log_format;
|
|
@@ -1334,18 +1240,6 @@ function resolvePiCliConfig(target, env, evalFilePath) {
|
|
|
1334
1240
|
allowLiteral: true,
|
|
1335
1241
|
optionalEnv: true
|
|
1336
1242
|
});
|
|
1337
|
-
let workspaceTemplate = resolveOptionalString(
|
|
1338
|
-
workspaceTemplateSource,
|
|
1339
|
-
env,
|
|
1340
|
-
`${target.name} pi-cli workspace template`,
|
|
1341
|
-
{ allowLiteral: true, optionalEnv: true }
|
|
1342
|
-
);
|
|
1343
|
-
if (workspaceTemplate && evalFilePath && !path2.isAbsolute(workspaceTemplate)) {
|
|
1344
|
-
workspaceTemplate = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), workspaceTemplate);
|
|
1345
|
-
}
|
|
1346
|
-
if (cwd && workspaceTemplate) {
|
|
1347
|
-
throw new Error(`${target.name}: 'cwd' and 'workspace_template' are mutually exclusive.`);
|
|
1348
|
-
}
|
|
1349
1243
|
const timeoutMs = resolveTimeoutMs(timeoutSource, `${target.name} pi-cli timeout`);
|
|
1350
1244
|
const logDir = resolveOptionalString(logDirSource, env, `${target.name} pi-cli log directory`, {
|
|
1351
1245
|
allowLiteral: true,
|
|
@@ -1363,7 +1257,6 @@ function resolvePiCliConfig(target, env, evalFilePath) {
|
|
|
1363
1257
|
thinking,
|
|
1364
1258
|
args,
|
|
1365
1259
|
cwd,
|
|
1366
|
-
workspaceTemplate,
|
|
1367
1260
|
timeoutMs,
|
|
1368
1261
|
logDir,
|
|
1369
1262
|
logFormat,
|
|
@@ -1371,10 +1264,10 @@ function resolvePiCliConfig(target, env, evalFilePath) {
|
|
|
1371
1264
|
systemPrompt
|
|
1372
1265
|
};
|
|
1373
1266
|
}
|
|
1374
|
-
function resolveClaudeConfig(target, env,
|
|
1267
|
+
function resolveClaudeConfig(target, env, _evalFilePath) {
|
|
1268
|
+
const executableSource = target.executable ?? target.command ?? target.binary;
|
|
1375
1269
|
const modelSource = target.model;
|
|
1376
1270
|
const cwdSource = target.cwd;
|
|
1377
|
-
const workspaceTemplateSource = target.workspace_template;
|
|
1378
1271
|
const timeoutSource = target.timeout_seconds;
|
|
1379
1272
|
const logDirSource = target.log_dir ?? target.log_directory;
|
|
1380
1273
|
const logFormatSource = target.log_format ?? target.log_output_format ?? env.AGENTV_CLAUDE_LOG_FORMAT;
|
|
@@ -1384,6 +1277,10 @@ function resolveClaudeConfig(target, env, evalFilePath) {
|
|
|
1384
1277
|
process.stderr.write(`[agentv] \u26A0 ${streamLogResult.deprecationWarning}
|
|
1385
1278
|
`);
|
|
1386
1279
|
}
|
|
1280
|
+
const executable = resolveOptionalString(executableSource, env, `${target.name} claude-cli executable`, {
|
|
1281
|
+
allowLiteral: true,
|
|
1282
|
+
optionalEnv: true
|
|
1283
|
+
}) ?? "claude";
|
|
1387
1284
|
const model = resolveOptionalString(modelSource, env, `${target.name} claude model`, {
|
|
1388
1285
|
allowLiteral: true,
|
|
1389
1286
|
optionalEnv: true
|
|
@@ -1392,23 +1289,6 @@ function resolveClaudeConfig(target, env, evalFilePath) {
|
|
|
1392
1289
|
allowLiteral: true,
|
|
1393
1290
|
optionalEnv: true
|
|
1394
1291
|
});
|
|
1395
|
-
let workspaceTemplate = resolveOptionalString(
|
|
1396
|
-
workspaceTemplateSource,
|
|
1397
|
-
env,
|
|
1398
|
-
`${target.name} claude workspace template`,
|
|
1399
|
-
{
|
|
1400
|
-
allowLiteral: true,
|
|
1401
|
-
optionalEnv: true
|
|
1402
|
-
}
|
|
1403
|
-
);
|
|
1404
|
-
if (workspaceTemplate && evalFilePath && !path2.isAbsolute(workspaceTemplate)) {
|
|
1405
|
-
workspaceTemplate = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), workspaceTemplate);
|
|
1406
|
-
}
|
|
1407
|
-
if (cwd && workspaceTemplate) {
|
|
1408
|
-
throw new Error(
|
|
1409
|
-
`${target.name}: 'cwd' and 'workspace_template' are mutually exclusive. Use 'cwd' to run in an existing directory, or 'workspace_template' to copy a template to a temp location.`
|
|
1410
|
-
);
|
|
1411
|
-
}
|
|
1412
1292
|
const timeoutMs = resolveTimeoutMs(timeoutSource, `${target.name} claude timeout`);
|
|
1413
1293
|
const logDir = resolveOptionalString(logDirSource, env, `${target.name} claude log directory`, {
|
|
1414
1294
|
allowLiteral: true,
|
|
@@ -1419,10 +1299,10 @@ function resolveClaudeConfig(target, env, evalFilePath) {
|
|
|
1419
1299
|
const maxTurns = typeof target.max_turns === "number" ? target.max_turns : void 0;
|
|
1420
1300
|
const maxBudgetUsd = typeof target.max_budget_usd === "number" ? target.max_budget_usd : void 0;
|
|
1421
1301
|
return {
|
|
1302
|
+
executable,
|
|
1422
1303
|
model,
|
|
1423
1304
|
systemPrompt,
|
|
1424
1305
|
cwd,
|
|
1425
|
-
workspaceTemplate,
|
|
1426
1306
|
timeoutMs,
|
|
1427
1307
|
maxTurns,
|
|
1428
1308
|
maxBudgetUsd,
|
|
@@ -1431,6 +1311,28 @@ function resolveClaudeConfig(target, env, evalFilePath) {
|
|
|
1431
1311
|
streamLog: streamLogResult.streamLog
|
|
1432
1312
|
};
|
|
1433
1313
|
}
|
|
1314
|
+
function resolveCcMirrorBinaryPath(variant) {
|
|
1315
|
+
const variantJsonPath = path2.join(homedir(), ".cc-mirror", variant, "variant.json");
|
|
1316
|
+
if (!existsSync(variantJsonPath)) {
|
|
1317
|
+
throw new Error(
|
|
1318
|
+
`cc-mirror variant "${variant}": ${variantJsonPath} not found. Install the variant or set "executable" explicitly.`
|
|
1319
|
+
);
|
|
1320
|
+
}
|
|
1321
|
+
let parsed;
|
|
1322
|
+
try {
|
|
1323
|
+
parsed = JSON.parse(readFileSync(variantJsonPath, "utf8"));
|
|
1324
|
+
} catch (e) {
|
|
1325
|
+
throw new Error(
|
|
1326
|
+
`cc-mirror variant "${variant}": failed to parse ${variantJsonPath}: ${e.message}`
|
|
1327
|
+
);
|
|
1328
|
+
}
|
|
1329
|
+
if (typeof parsed.binaryPath !== "string" || parsed.binaryPath.trim().length === 0) {
|
|
1330
|
+
throw new Error(
|
|
1331
|
+
`cc-mirror variant "${variant}": ${variantJsonPath} missing "binaryPath" field`
|
|
1332
|
+
);
|
|
1333
|
+
}
|
|
1334
|
+
return parsed.binaryPath;
|
|
1335
|
+
}
|
|
1434
1336
|
function normalizeClaudeLogFormat(value) {
|
|
1435
1337
|
if (value === void 0 || value === null) {
|
|
1436
1338
|
return void 0;
|
|
@@ -1448,20 +1350,7 @@ function resolveMockConfig(target) {
|
|
|
1448
1350
|
const response = typeof target.response === "string" ? target.response : void 0;
|
|
1449
1351
|
return { response };
|
|
1450
1352
|
}
|
|
1451
|
-
function resolveVSCodeConfig(target, env, insiders,
|
|
1452
|
-
const workspaceTemplateEnvVar = resolveOptionalLiteralString(target.workspace_template);
|
|
1453
|
-
let workspaceTemplate = workspaceTemplateEnvVar ? resolveOptionalString(
|
|
1454
|
-
workspaceTemplateEnvVar,
|
|
1455
|
-
env,
|
|
1456
|
-
`${target.name} workspace template path`,
|
|
1457
|
-
{
|
|
1458
|
-
allowLiteral: true,
|
|
1459
|
-
optionalEnv: true
|
|
1460
|
-
}
|
|
1461
|
-
) : void 0;
|
|
1462
|
-
if (workspaceTemplate && evalFilePath && !path2.isAbsolute(workspaceTemplate)) {
|
|
1463
|
-
workspaceTemplate = path2.resolve(path2.dirname(path2.resolve(evalFilePath)), workspaceTemplate);
|
|
1464
|
-
}
|
|
1353
|
+
function resolveVSCodeConfig(target, env, insiders, _evalFilePath) {
|
|
1465
1354
|
const executableSource = target.executable;
|
|
1466
1355
|
const waitSource = target.wait;
|
|
1467
1356
|
const dryRunSource = target.dry_run;
|
|
@@ -1481,7 +1370,6 @@ function resolveVSCodeConfig(target, env, insiders, evalFilePath) {
|
|
|
1481
1370
|
allowLiteral: true,
|
|
1482
1371
|
optionalEnv: true
|
|
1483
1372
|
}),
|
|
1484
|
-
workspaceTemplate,
|
|
1485
1373
|
timeoutMs
|
|
1486
1374
|
};
|
|
1487
1375
|
}
|
|
@@ -1807,6 +1695,8 @@ var PROVIDER_ALIASES = [
|
|
|
1807
1695
|
// alias for "pi-coding-agent"
|
|
1808
1696
|
"claude-code",
|
|
1809
1697
|
// alias for "claude" (legacy)
|
|
1698
|
+
"cc-mirror",
|
|
1699
|
+
// alias for "claude-cli" (auto-discovers binary from ~/.cc-mirror/<variant>/)
|
|
1810
1700
|
"bedrock",
|
|
1811
1701
|
// legacy/future support
|
|
1812
1702
|
"vertex"
|
|
@@ -2003,4 +1893,4 @@ export {
|
|
|
2003
1893
|
extractLastAssistantContent,
|
|
2004
1894
|
isAgentProvider
|
|
2005
1895
|
};
|
|
2006
|
-
//# sourceMappingURL=chunk-
|
|
1896
|
+
//# sourceMappingURL=chunk-6VZY3B6M.js.map
|