@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.
@@ -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 && workspaceTemplate) {
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, evalFilePath) {
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, evalFilePath) {
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, evalFilePath) {
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, evalFilePath) {
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, evalFilePath) {
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, evalFilePath) {
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, evalFilePath) {
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-HVEQNYTC.js.map
1896
+ //# sourceMappingURL=chunk-6VZY3B6M.js.map