agentv 4.34.1-next.1 → 4.35.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.
@@ -16,7 +16,7 @@ import {
16
16
  toSnakeCaseDeep,
17
17
  writeArtifactsFromResults,
18
18
  writeInitialBenchmarkArtifact
19
- } from "./chunk-GPRZ7XSC.js";
19
+ } from "./chunk-KJGYL3M3.js";
20
20
  import {
21
21
  RunBudgetTracker,
22
22
  deriveCategory,
@@ -31,7 +31,7 @@ import {
31
31
  normalizeResultsConfig,
32
32
  resolveResultsRepoRunsDir,
33
33
  syncResultsRepoForProject
34
- } from "./chunk-KP4SPQ2M.js";
34
+ } from "./chunk-KNF3AGCI.js";
35
35
  import {
36
36
  CLI_PLACEHOLDERS,
37
37
  COMMON_TARGET_SETTINGS,
@@ -183,7 +183,7 @@ async function findRepoRoot(start) {
183
183
  // package.json
184
184
  var package_default = {
185
185
  name: "agentv",
186
- version: "4.34.1-next.1",
186
+ version: "4.35.0",
187
187
  description: "CLI entry point for AgentV",
188
188
  type: "module",
189
189
  repository: {
@@ -1389,10 +1389,10 @@ async function loadNormalizedResultsConfig(cwd, projectId) {
1389
1389
  const config = await loadConfig(path7.join(cwd, "_"), repoRoot);
1390
1390
  const project = projectId !== void 0 ? getProject(projectId) : getProjectForPath(repoRoot) ?? getProjectForPath(cwd);
1391
1391
  const projectResults = project?.results ? {
1392
- mode: project.results.mode,
1393
- repo: project.results.repo,
1392
+ mode: "github",
1393
+ repo: project.results.repoUrl,
1394
1394
  path: project.results.path,
1395
- auto_push: project.results.autoPush,
1395
+ auto_push: project.results.sync?.autoPush,
1396
1396
  branch_prefix: project.results.branchPrefix
1397
1397
  } : void 0;
1398
1398
  const resultsConfig = projectResults ?? resolveResultsConfigForProject(config, project?.id);
@@ -3915,7 +3915,29 @@ function validateProjects(errors, filePath, projects) {
3915
3915
  validateRequiredString(errors, filePath, projectRecord.id, `${location}.id`);
3916
3916
  validateRequiredString(errors, filePath, projectRecord.name, `${location}.name`);
3917
3917
  validateRequiredString(errors, filePath, projectRecord.path, `${location}.path`);
3918
- validateResultsConfig(errors, filePath, projectRecord.results, `${location}.results`);
3918
+ if (projectRecord.source !== void 0) {
3919
+ errors.push({
3920
+ severity: "error",
3921
+ filePath,
3922
+ location: `${location}.source`,
3923
+ message: `Field '${location}.source' was removed. Move 'source.url' to '${location}.repo_url' and move 'source.ref' to '${location}.ref'. Use a Git remote URL such as https://github.com/example/repo.git or git@github.com:example/repo.git.`
3924
+ });
3925
+ }
3926
+ if (projectRecord.repository !== void 0) {
3927
+ errors.push({
3928
+ severity: "error",
3929
+ filePath,
3930
+ location: `${location}.repository`,
3931
+ message: `Field '${location}.repository' was removed. Use '${location}.repo_url' with a Git remote URL instead.`
3932
+ });
3933
+ }
3934
+ if (projectRecord.repo_url !== void 0) {
3935
+ validateGitRemoteUrl(errors, filePath, projectRecord.repo_url, `${location}.repo_url`);
3936
+ }
3937
+ if (projectRecord.ref !== void 0) {
3938
+ validateRequiredString(errors, filePath, projectRecord.ref, `${location}.ref`);
3939
+ }
3940
+ validateProjectResultsConfig(errors, filePath, projectRecord.results, `${location}.results`);
3919
3941
  });
3920
3942
  }
3921
3943
  function validateRequiredString(errors, filePath, value, location) {
@@ -3928,6 +3950,104 @@ function validateRequiredString(errors, filePath, value, location) {
3928
3950
  });
3929
3951
  }
3930
3952
  }
3953
+ function validateGitRemoteUrl(errors, filePath, value, location) {
3954
+ if (typeof value !== "string" || value.trim().length === 0) {
3955
+ errors.push({
3956
+ severity: "error",
3957
+ filePath,
3958
+ location,
3959
+ message: `Field '${location}' must be a non-empty Git remote URL (e.g., https://github.com/EntityProcess/agentv.git or git@github.com:EntityProcess/agentv.git)`
3960
+ });
3961
+ return;
3962
+ }
3963
+ const repoUrl = value.trim();
3964
+ if (!/^(https?:\/\/|ssh:\/\/|git@|file:\/\/).+/.test(repoUrl)) {
3965
+ errors.push({
3966
+ severity: "error",
3967
+ filePath,
3968
+ location,
3969
+ message: `Field '${location}' must be a Git remote URL, not an owner/name shorthand. Use https://github.com/owner/repo.git or git@github.com:owner/repo.git.`
3970
+ });
3971
+ }
3972
+ }
3973
+ function validateProjectResultsConfig(errors, filePath, rawResults, location) {
3974
+ if (rawResults === void 0) {
3975
+ return;
3976
+ }
3977
+ if (typeof rawResults !== "object" || rawResults === null || Array.isArray(rawResults)) {
3978
+ errors.push({
3979
+ severity: "error",
3980
+ filePath,
3981
+ location,
3982
+ message: `Field '${location}' must be an object`
3983
+ });
3984
+ return;
3985
+ }
3986
+ const resultsRecord = rawResults;
3987
+ const removedFields = {
3988
+ mode: `Remove '${location}.mode'; project results use '${location}.repo_url' as the Git remote URL.`,
3989
+ repo: `Field '${location}.repo' was removed. Use '${location}.repo_url' with a Git remote URL instead.`,
3990
+ repository: `Field '${location}.repository' was removed. Use '${location}.repo_url' with a Git remote URL instead.`,
3991
+ local_path: `Field '${location}.local_path' was removed. Use '${location}.path' for the local clone path instead.`,
3992
+ auto_push: `Field '${location}.auto_push' was removed. Use '${location}.sync.auto_push' instead.`
3993
+ };
3994
+ for (const [field, message] of Object.entries(removedFields)) {
3995
+ if (resultsRecord[field] !== void 0) {
3996
+ errors.push({
3997
+ severity: "error",
3998
+ filePath,
3999
+ location: `${location}.${field}`,
4000
+ message
4001
+ });
4002
+ }
4003
+ }
4004
+ validateGitRemoteUrl(errors, filePath, resultsRecord.repo_url, `${location}.repo_url`);
4005
+ if (resultsRecord.path !== void 0) {
4006
+ if (typeof resultsRecord.path !== "string" || resultsRecord.path.trim().length === 0) {
4007
+ errors.push({
4008
+ severity: "error",
4009
+ filePath,
4010
+ location: `${location}.path`,
4011
+ message: `Field '${location}.path' must be a non-empty string`
4012
+ });
4013
+ } else if (!isFilesystemPath(resultsRecord.path.trim())) {
4014
+ errors.push({
4015
+ severity: "error",
4016
+ filePath,
4017
+ location: `${location}.path`,
4018
+ message: `'${location}.path' must be an absolute or home-relative filesystem path (e.g., ~/data/agentv-results).`
4019
+ });
4020
+ }
4021
+ }
4022
+ if (resultsRecord.sync !== void 0) {
4023
+ if (typeof resultsRecord.sync !== "object" || resultsRecord.sync === null || Array.isArray(resultsRecord.sync)) {
4024
+ errors.push({
4025
+ severity: "error",
4026
+ filePath,
4027
+ location: `${location}.sync`,
4028
+ message: `Field '${location}.sync' must be an object`
4029
+ });
4030
+ } else {
4031
+ const syncRecord = resultsRecord.sync;
4032
+ if (syncRecord.auto_push !== void 0 && typeof syncRecord.auto_push !== "boolean") {
4033
+ errors.push({
4034
+ severity: "error",
4035
+ filePath,
4036
+ location: `${location}.sync.auto_push`,
4037
+ message: `Field '${location}.sync.auto_push' must be a boolean`
4038
+ });
4039
+ }
4040
+ }
4041
+ }
4042
+ if (resultsRecord.branch_prefix !== void 0 && (typeof resultsRecord.branch_prefix !== "string" || resultsRecord.branch_prefix.trim().length === 0)) {
4043
+ errors.push({
4044
+ severity: "error",
4045
+ filePath,
4046
+ location: `${location}.branch_prefix`,
4047
+ message: `Field '${location}.branch_prefix' must be a non-empty string`
4048
+ });
4049
+ }
4050
+ }
3931
4051
  function validateResultsConfig(errors, filePath, rawResults, location) {
3932
4052
  if (rawResults === void 0) {
3933
4053
  return;
@@ -5258,7 +5378,7 @@ async function runEvalCommand(input) {
5258
5378
  const useFileExport = !!options.otelFile;
5259
5379
  if (options.exportOtel || useFileExport) {
5260
5380
  try {
5261
- const { OtelTraceExporter, OTEL_BACKEND_PRESETS } = await import("./dist-Z5VWSDOO.js");
5381
+ const { OtelTraceExporter, OTEL_BACKEND_PRESETS } = await import("./dist-M4B77IW4.js");
5262
5382
  let endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
5263
5383
  let headers = {};
5264
5384
  if (options.otelBackend) {
@@ -5451,7 +5571,7 @@ async function runEvalCommand(input) {
5451
5571
  const activeTestFiles = resolvedTestFiles.filter((f) => fileMetadata.has(f));
5452
5572
  let transcriptProviderFactory;
5453
5573
  if (options.transcript) {
5454
- const { TranscriptProvider } = await import("./dist-Z5VWSDOO.js");
5574
+ const { TranscriptProvider } = await import("./dist-M4B77IW4.js");
5455
5575
  const transcriptProvider = await TranscriptProvider.fromFile(options.transcript);
5456
5576
  const totalTests = [...fileMetadata.values()].reduce(
5457
5577
  (sum, meta) => sum + meta.testCases.length,
@@ -5635,7 +5755,7 @@ async function runEvalCommand(input) {
5635
5755
  );
5636
5756
  const taskBundleTargets = buildTaskBundleTargetSelections(activeTestFiles, fileMetadata);
5637
5757
  if (isResumeAppend) {
5638
- const { writePerTestArtifacts } = await import("./artifact-writer-UWZX5JKX.js");
5758
+ const { writePerTestArtifacts } = await import("./artifact-writer-G57MG52C.js");
5639
5759
  await writePerTestArtifacts(allResults, runDir, {
5640
5760
  experiment: normalizeExperimentName(options.experiment),
5641
5761
  cwd,
@@ -5863,4 +5983,4 @@ export {
5863
5983
  getCategories,
5864
5984
  filterByCategory
5865
5985
  };
5866
- //# sourceMappingURL=chunk-HRN7BFMP.js.map
5986
+ //# sourceMappingURL=chunk-Q6LNXSP2.js.map