agentv 5.3.1-next.1 → 5.3.2-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.
Files changed (66) hide show
  1. package/README.md +52 -44
  2. package/dist/{artifact-writer-7NBCOAYC.js → artifact-writer-KJEOROKQ.js} +5 -5
  3. package/dist/{chunk-ELCJ23K4.js → chunk-6262OKXM.js} +2856 -2404
  4. package/dist/chunk-6262OKXM.js.map +1 -0
  5. package/dist/chunk-AQ5BIAXF.js +604 -0
  6. package/dist/chunk-AQ5BIAXF.js.map +1 -0
  7. package/dist/chunk-BV5VQLI2.js +2 -0
  8. package/dist/{chunk-LXBI3SPX.js → chunk-JGSRUJZQ.js} +46 -20
  9. package/dist/chunk-JGSRUJZQ.js.map +1 -0
  10. package/dist/chunk-MMDLXYBX.js +721 -0
  11. package/dist/chunk-MMDLXYBX.js.map +1 -0
  12. package/dist/{chunk-LKGARI3W.js → chunk-QSK3PC44.js} +812 -570
  13. package/dist/chunk-QSK3PC44.js.map +1 -0
  14. package/dist/chunk-TEEXVJWM.js +2 -0
  15. package/dist/{chunk-RKE7SSET.js → chunk-WIAJ7JAV.js} +186 -64
  16. package/dist/chunk-WIAJ7JAV.js.map +1 -0
  17. package/dist/cli.d.ts +1 -0
  18. package/dist/cli.js +17517 -10
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config.d.ts +2 -0
  21. package/dist/config.js +14 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/contracts-DsZmZLl8.d.ts +742 -0
  24. package/dist/contracts.d.ts +2 -0
  25. package/dist/contracts.js +28 -0
  26. package/dist/contracts.js.map +1 -0
  27. package/dist/dashboard/assets/{index-CbEMiJSb.js → index-BfqOlLOF.js} +1 -1
  28. package/dist/dashboard/assets/index-Bh8lpGce.css +1 -0
  29. package/dist/dashboard/assets/index-oPR3ywQb.js +121 -0
  30. package/dist/dashboard/index.html +2 -2
  31. package/dist/{dist-NMXMI5SK.js → dist-A3SGR7TW.js} +16 -16
  32. package/dist/dist-A3SGR7TW.js.map +1 -0
  33. package/dist/index.d.ts +4 -0
  34. package/dist/index.js +137 -18
  35. package/dist/{interactive-BN527UV3.js → interactive-DL7N2C7K.js} +24 -24
  36. package/dist/interactive-DL7N2C7K.js.map +1 -0
  37. package/dist/provider.d.ts +2 -0
  38. package/dist/provider.js +24 -0
  39. package/dist/provider.js.map +1 -0
  40. package/dist/sdk.d.ts +802 -0
  41. package/dist/sdk.js +145 -0
  42. package/dist/sdk.js.map +1 -0
  43. package/dist/skills/agentv-eval-migrations/references/breaking-changes.md +17 -18
  44. package/dist/skills/agentv-eval-writer/SKILL.md +27 -15
  45. package/dist/skills/agentv-eval-writer/references/custom-evaluators.md +5 -5
  46. package/dist/skills/agentv-eval-writer/references/eval.schema.json +5402 -4639
  47. package/dist/skills/agentv-eval-writer/references/python-helpers.md +2 -2
  48. package/dist/skills/agentv-eval-writer/references/rubric-evaluator.md +19 -2
  49. package/dist/templates/.agentv/providers.yaml +42 -0
  50. package/dist/templates/.env.example +2 -2
  51. package/dist/{ts-eval-loader-2RFVZHCT-7CZ3DCDD.js → ts-eval-loader-3G5GEAEC-6F52JLPP.js} +3 -3
  52. package/dist/ts-eval-loader-3G5GEAEC-6F52JLPP.js.map +1 -0
  53. package/package.json +29 -4
  54. package/dist/chunk-ASIGJIOJ.js +0 -17993
  55. package/dist/chunk-ASIGJIOJ.js.map +0 -1
  56. package/dist/chunk-ELCJ23K4.js.map +0 -1
  57. package/dist/chunk-LKGARI3W.js.map +0 -1
  58. package/dist/chunk-LXBI3SPX.js.map +0 -1
  59. package/dist/chunk-RKE7SSET.js.map +0 -1
  60. package/dist/dashboard/assets/index-DTA6-l7q.js +0 -121
  61. package/dist/dashboard/assets/index-D_bokML8.css +0 -1
  62. package/dist/interactive-BN527UV3.js.map +0 -1
  63. package/dist/templates/.agentv/targets.yaml +0 -97
  64. /package/dist/{artifact-writer-7NBCOAYC.js.map → artifact-writer-KJEOROKQ.js.map} +0 -0
  65. /package/dist/{dist-NMXMI5SK.js.map → chunk-BV5VQLI2.js.map} +0 -0
  66. /package/dist/{ts-eval-loader-2RFVZHCT-7CZ3DCDD.js.map → chunk-TEEXVJWM.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/eval/artifact-writer.ts","../src/commands/eval/task-bundle.ts"],"sourcesContent":["import path from 'node:path';\n\nimport {\n type AdditionalResultArtifactsWriter,\n type AggregateGradingArtifact,\n type EnvironmentSummaryWire,\n type EvalTest,\n type EvaluationResult,\n type ExperimentArtifactMetadata,\n type ExportDuplicatePolicy,\n type GradingArtifact,\n type IndexArtifactEntry,\n RESULT_INDEX_FILENAME,\n RUN_CONFIG_FILENAME,\n RUN_SUMMARY_FILENAME,\n type ResultIndexArtifact,\n type RunConfigArtifact,\n type RunRuntimeSourceMetadata,\n type RunSummaryArtifact,\n type TimingArtifact,\n aggregateRunDir,\n buildAggregateGradingArtifact,\n buildIndexArtifactEntry as buildCoreIndexArtifactEntry,\n buildResultIndexArtifact as buildCoreResultIndexArtifact,\n buildEvalTestTargetKey,\n buildEvaluationResultTargetKey,\n buildGradingArtifact,\n buildRunSummaryArtifact,\n buildTestTargetKey,\n buildTimingArtifact,\n deduplicateByTestIdTarget,\n parseJsonlResults,\n readRunConfigArtifact,\n writeArtifacts,\n writeArtifactsFromResults as writeCoreArtifactsFromResults,\n writePerTestArtifacts as writeCorePerTestArtifacts,\n writeInitialRunSummaryArtifact,\n} from '@agentv/core';\nimport type { ProviderDefinition } from '@agentv/core';\n\nimport {\n type MaterializedTaskBundlePaths,\n type TaskBundleProviderSelection,\n materializeTaskBundle,\n} from './task-bundle.js';\n\nexport {\n aggregateRunDir,\n buildAggregateGradingArtifact,\n buildEvalTestTargetKey,\n buildEvaluationResultTargetKey,\n buildRunSummaryArtifact,\n buildGradingArtifact,\n buildTestTargetKey,\n buildTimingArtifact,\n deduplicateByTestIdTarget,\n parseJsonlResults,\n RESULT_INDEX_FILENAME,\n RUN_CONFIG_FILENAME,\n RUN_SUMMARY_FILENAME,\n readRunConfigArtifact,\n writeArtifacts,\n writeInitialRunSummaryArtifact,\n};\nexport type {\n AggregateGradingArtifact,\n GradingArtifact,\n EnvironmentSummaryWire,\n IndexArtifactEntry,\n ResultIndexArtifact,\n RunConfigArtifact,\n RunSummaryArtifact,\n TimingArtifact,\n};\n\nfunction toRelativeArtifactPath(outputDir: string, filePath: string): string {\n return path.relative(outputDir, filePath).split(path.sep).join('/');\n}\n\nfunction buildTaskBundleIndexFields(\n outputDir: string,\n taskBundle: MaterializedTaskBundlePaths | undefined,\n): Pick<\n IndexArtifactEntry,\n 'test_dir' | 'eval_path' | 'providers_path' | 'files_path' | 'graders_path'\n> {\n if (!taskBundle) {\n return {};\n }\n return {\n test_dir: toRelativeArtifactPath(outputDir, taskBundle.testDir),\n eval_path: toRelativeArtifactPath(outputDir, taskBundle.evalPath),\n providers_path: toRelativeArtifactPath(outputDir, taskBundle.providersPath),\n ...(taskBundle.filesPath\n ? { files_path: toRelativeArtifactPath(outputDir, taskBundle.filesPath) }\n : {}),\n ...(taskBundle.gradersPath\n ? { graders_path: toRelativeArtifactPath(outputDir, taskBundle.gradersPath) }\n : {}),\n };\n}\n\nexport function buildIndexArtifactEntry(\n result: EvaluationResult,\n options: {\n outputDir: string;\n resultDir?: string;\n gradingPath?: string;\n summaryPath?: string;\n outputPath?: string;\n answerPath?: string;\n transcriptPath?: string;\n transcriptRawPath?: string;\n metricsPath?: string;\n fileChangesPath?: string;\n rawProviderLogPath?: string;\n responsePath?: string;\n taskBundle?: MaterializedTaskBundlePaths;\n },\n): IndexArtifactEntry {\n return buildCoreIndexArtifactEntry(result, {\n ...options,\n extraIndexFields: buildTaskBundleIndexFields(options.outputDir, options.taskBundle),\n });\n}\n\nexport function buildResultIndexArtifact(\n result: EvaluationResult,\n taskBundle?: MaterializedTaskBundlePaths,\n): ResultIndexArtifact {\n const artifactSubdir = (buildCoreResultIndexArtifact(result).result_dir ?? '').trim();\n const extraIndexFields = taskBundle\n ? {\n test_dir: path.posix.join(artifactSubdir, 'test'),\n eval_path: path.posix.join(artifactSubdir, 'test', 'EVAL.yaml'),\n providers_path: path.posix.join(artifactSubdir, 'test', 'providers.yaml'),\n ...(taskBundle.filesPath\n ? { files_path: path.posix.join(artifactSubdir, 'test', 'files') }\n : {}),\n ...(taskBundle.gradersPath\n ? { graders_path: path.posix.join(artifactSubdir, 'test', 'graders') }\n : {}),\n }\n : undefined;\n return buildCoreResultIndexArtifact(result, extraIndexFields);\n}\n\nfunction providerSelectionKey(\n evalFileAbsolutePath: string | undefined,\n providerLabel: string,\n): string {\n return `${evalFileAbsolutePath ? path.resolve(evalFileAbsolutePath) : ''}::${providerLabel}`;\n}\n\nfunction buildProviderSelectionMap(\n selections: readonly TaskBundleProviderSelection[] | undefined,\n): Map<string, TaskBundleProviderSelection> {\n const providers = new Map<string, TaskBundleProviderSelection>();\n for (const selection of selections ?? []) {\n providers.set(\n providerSelectionKey(selection.evalFileAbsolutePath, selection.providerLabel),\n selection,\n );\n if (selection.resolvedProviderName) {\n providers.set(\n providerSelectionKey(selection.evalFileAbsolutePath, selection.resolvedProviderName),\n selection,\n );\n }\n if (!selection.evalFileAbsolutePath) {\n providers.set(providerSelectionKey(undefined, selection.providerLabel), selection);\n if (selection.resolvedProviderName) {\n providers.set(providerSelectionKey(undefined, selection.resolvedProviderName), selection);\n }\n }\n }\n return providers;\n}\n\nfunction findProviderSelection(\n result: EvaluationResult,\n test: EvalTest | undefined,\n providers: ReadonlyMap<string, TaskBundleProviderSelection>,\n): TaskBundleProviderSelection | undefined {\n const providerLabel = result.target ?? 'unknown';\n const evalFileAbsolutePath = test?.source?.evalFileAbsolutePath;\n return (\n providers.get(providerSelectionKey(evalFileAbsolutePath, providerLabel)) ??\n providers.get(providerSelectionKey(undefined, providerLabel))\n );\n}\n\nfunction createTaskBundleArtifactsWriter(options?: {\n cwd?: string;\n repoRoot?: string;\n taskBundleTargets?: readonly TaskBundleProviderSelection[];\n}): AdditionalResultArtifactsWriter | undefined {\n const providerSelections = buildProviderSelectionMap(options?.taskBundleTargets);\n if (providerSelections.size === 0) {\n return undefined;\n }\n\n return async ({ outputDir, result, sourceTest, testDir }) => {\n const providerSelection = findProviderSelection(result, sourceTest, providerSelections);\n if (!sourceTest || !providerSelection) {\n return undefined;\n }\n\n const taskBundle = await materializeTaskBundle({\n test: sourceTest,\n providerLabel: providerSelection.providerLabel,\n providerDefinitions: providerSelection.definitions as readonly ProviderDefinition[],\n outputDir: testDir,\n cwd: options?.cwd,\n repoRoot: options?.repoRoot,\n });\n\n return buildTaskBundleIndexFields(outputDir, taskBundle);\n };\n}\n\nexport async function writePerTestArtifacts(\n results: readonly EvaluationResult[],\n outputDir: string,\n options?: {\n experiment?: string;\n runId?: string;\n duplicatePolicy?: ExportDuplicatePolicy;\n resultGroup?: string;\n cwd?: string;\n repoRoot?: string;\n sourceTests?: readonly EvalTest[];\n taskBundleTargets?: readonly TaskBundleProviderSelection[];\n additionalArtifacts?: AdditionalResultArtifactsWriter;\n runtimeSource?: RunRuntimeSourceMetadata;\n tags?: Record<string, string>;\n },\n): Promise<void> {\n await writeCorePerTestArtifacts(results, outputDir, {\n experiment: options?.experiment,\n resultGroup: options?.resultGroup,\n runId: options?.runId,\n duplicatePolicy: options?.duplicatePolicy,\n sourceTests: options?.sourceTests,\n additionalArtifacts: options?.additionalArtifacts ?? createTaskBundleArtifactsWriter(options),\n runtimeSource: options?.runtimeSource,\n tags: options?.tags,\n });\n}\n\nexport async function writeArtifactsFromResults(\n results: readonly EvaluationResult[],\n outputDir: string,\n options?: {\n evalFile?: string;\n experiment?: string;\n experimentMetadata?: ExperimentArtifactMetadata;\n plannedTestCount?: number;\n runId?: string;\n duplicatePolicy?: ExportDuplicatePolicy;\n resultGroup?: string;\n cwd?: string;\n repoRoot?: string;\n sourceTests?: readonly EvalTest[];\n taskBundleTargets?: readonly TaskBundleProviderSelection[];\n additionalArtifacts?: AdditionalResultArtifactsWriter;\n runtimeSource?: RunRuntimeSourceMetadata;\n tags?: Record<string, string>;\n },\n): Promise<{\n testArtifactDir: string;\n summaryPath: string;\n indexPath: string;\n}> {\n return writeCoreArtifactsFromResults(results, outputDir, {\n evalFile: options?.evalFile,\n experiment: options?.experiment,\n experimentMetadata: options?.experimentMetadata,\n plannedTestCount: options?.plannedTestCount,\n runId: options?.runId,\n duplicatePolicy: options?.duplicatePolicy,\n resultGroup: options?.resultGroup,\n sourceTests: options?.sourceTests,\n additionalArtifacts: options?.additionalArtifacts ?? createTaskBundleArtifactsWriter(options),\n runtimeSource: options?.runtimeSource,\n tags: options?.tags,\n });\n}\n","import { createHash } from 'node:crypto';\nimport { mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises';\nimport path from 'node:path';\n\nimport {\n type EnvironmentRecipe,\n type EvalSourceReference,\n type EvalTest,\n type JsonObject,\n type ProviderDefinition,\n type TestMessage,\n type WorkspaceConfig,\n parseYamlValue,\n toSnakeCaseDeep,\n} from '@agentv/core';\nimport { stringify as stringifyYaml } from 'yaml';\n\nconst TEST_BUNDLE_DIRNAME = 'test';\nconst TASK_EVAL_FILENAME = 'EVAL.yaml';\nconst TASK_PROVIDERS_FILENAME = 'providers.yaml';\nconst TASK_FILES_DIRNAME = 'files';\nconst TASK_GRADERS_DIRNAME = 'graders';\nconst INPUT_PROMPT = '{{ input }}';\nconst BUNDLE_EVALS_DIRNAME = 'evals';\nconst BUNDLE_MANIFEST_FILENAME = 'agentv_bundle.json';\nconst BUNDLE_PROVIDERS_FILENAME = 'providers.yaml';\nconst BUNDLE_CONFIG_DIRNAME = '.agentv';\nconst BUNDLE_CONFIG_FILENAME = 'config.yaml';\nconst BUNDLE_WORKSPACES_DIRNAME = 'workspaces';\nconst BUNDLE_SCRIPTS_DIRNAME = 'scripts';\nconst REDACTED_SOURCE_VALUE = '[redacted]';\nconst SECRET_KEY_PATTERN =\n /(?:api[_-]?key|authorization|bearer|credential|password|private[_-]?key|secret|token)/i;\nconst SOURCE_SECRET_LINE_PATTERN =\n /^(\\s*[\\w.-]*(?:api[_-]?key|authorization|bearer|credential|password|private[_-]?key|secret|token)[\\w.-]*\\s*:\\s*).+$/gim;\nconst SOURCE_SECRET_ASSIGNMENT_PATTERN =\n /^((?:--?)?[\\w.-]*(?:api[_-]?key|authorization|bearer|credential|password|private[_-]?key|secret|token)[\\w.-]*[=:]).+$/i;\nconst SOURCE_SECRET_FLAG_PATTERN =\n /^--?[\\w.-]*(?:api[_-]?key|authorization|bearer|credential|password|private[_-]?key|secret|token)[\\w.-]*$/i;\nconst SECRET_PATH_SEGMENT_PATTERN =\n /(^|[/\\\\._-])(?:\\.env(?:\\..*)?|id_rsa|id_dsa|id_ecdsa|id_ed25519|oauth|credentials?|secrets?|tokens?|private[_-]?key)(?:$|[/\\\\._-])/i;\nconst SKIPPED_DIR_NAMES = new Set([\n '.git',\n 'node_modules',\n '.agentv',\n '.ntm',\n '.beads',\n '.DS_Store',\n]);\nconst AUTHORING_TOP_LEVEL_TARGET_FIELDS = new Set([\n 'label',\n 'provider',\n 'provider_spec',\n 'environment',\n 'prompts',\n 'transform',\n 'delay',\n 'env',\n 'model',\n 'runtime',\n 'hooks',\n 'use_target',\n 'fallback_targets',\n 'grader_target',\n 'max_budget_usd',\n 'workers',\n 'subagent_mode_allowed',\n 'max_retries',\n 'retry_initial_delay_ms',\n 'retry_max_delay_ms',\n 'retry_backoff_factor',\n 'retry_status_codes',\n]);\n\nexport interface TaskBundleProviderSelection {\n readonly evalFileAbsolutePath?: string;\n readonly providerLabel: string;\n readonly resolvedProviderName?: string;\n readonly definitions: readonly ProviderDefinition[];\n}\n\nexport interface MaterializeTaskBundleOptions {\n readonly test: EvalTest;\n readonly providerLabel: string;\n readonly providerDefinitions: readonly ProviderDefinition[];\n readonly outputDir: string;\n readonly cwd?: string;\n readonly repoRoot?: string;\n}\n\nexport interface MaterializedTaskBundlePaths {\n readonly testDir: string;\n readonly evalPath: string;\n readonly providersPath: string;\n readonly filesPath?: string;\n readonly gradersPath?: string;\n}\n\nexport interface MaterializeEvalBundleOptions {\n readonly evalFilePath: string;\n readonly tests: readonly EvalTest[];\n readonly providerSelections: readonly TaskBundleProviderSelection[];\n readonly outputDir: string;\n readonly cwd?: string;\n readonly repoRoot?: string;\n readonly runtime?: Record<string, unknown>;\n readonly now?: () => Date;\n}\n\nexport interface MaterializedEvalBundlePaths {\n readonly bundleDir: string;\n readonly evalsDir: string;\n readonly evalPath: string;\n readonly providersPath: string;\n readonly manifestPath: string;\n readonly filesPath?: string;\n readonly gradersPath?: string;\n readonly workspacesPath?: string;\n readonly scriptsPath?: string;\n}\n\ntype BundleReferenceKind =\n | EvalSourceReference['kind']\n | 'expected_output_file'\n | 'environment_workdir'\n | 'environment_setup_command'\n | 'workspace_template'\n | 'workspace_hook_command';\n\ninterface BundleSourceReference extends Omit<EvalSourceReference, 'kind'> {\n readonly kind: BundleReferenceKind;\n readonly location?: string;\n}\n\ninterface CopiedReference {\n readonly reference: BundleSourceReference;\n readonly localPath: string;\n readonly destinationPath: string;\n}\n\ninterface BundleReferenceFailure {\n readonly reference: BundleSourceReference;\n readonly reason: string;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction toPortableRelativePath(root: string | undefined, candidate: string): string | undefined {\n if (!root) {\n return undefined;\n }\n const relative = path.relative(root, candidate);\n if (relative && !relative.startsWith('..') && !path.isAbsolute(relative)) {\n return relative.split(path.sep).join('/');\n }\n return undefined;\n}\n\nfunction safeRelativePath(value: string): string | undefined {\n const normalized = value.replace(/\\\\/g, '/').replace(/^\\/+/, '');\n const segments = normalized.split('/').filter((segment) => segment && segment !== '.');\n if (segments.length === 0 || segments.some((segment) => segment === '..')) {\n return undefined;\n }\n return segments.join('/');\n}\n\nfunction hashedExternalPath(resolvedPath: string): string {\n const hash = createHash('sha256').update(path.resolve(resolvedPath)).digest('hex').slice(0, 10);\n const basename = path.basename(resolvedPath) || 'asset';\n return `external/${hash}-${basename}`;\n}\n\nfunction relativeReferencePath(\n reference: BundleSourceReference,\n options: Pick<MaterializeTaskBundleOptions, 'cwd' | 'repoRoot'>,\n): string | undefined {\n if (reference.resolvedPath) {\n const resolved = path.resolve(reference.resolvedPath);\n const portable =\n toPortableRelativePath(options.repoRoot, resolved) ??\n toPortableRelativePath(options.cwd, resolved);\n return safeRelativePath(portable ?? hashedExternalPath(resolved));\n }\n return safeRelativePath(reference.displayPath);\n}\n\nfunction referenceBucket(\n reference: BundleSourceReference,\n): 'files' | 'graders' | 'workspaces' | 'scripts' {\n if (reference.kind === 'input_file' || reference.kind === 'expected_output_file') {\n return TASK_FILES_DIRNAME;\n }\n if (reference.kind === 'workspace_template') {\n return BUNDLE_WORKSPACES_DIRNAME;\n }\n if (reference.kind === 'environment_workdir') {\n return BUNDLE_WORKSPACES_DIRNAME;\n }\n if (\n reference.kind === 'workspace_hook_command' ||\n reference.kind === 'environment_setup_command'\n ) {\n return BUNDLE_SCRIPTS_DIRNAME;\n }\n return TASK_GRADERS_DIRNAME;\n}\n\nfunction isLikelyBinary(buffer: Buffer): boolean {\n return buffer.subarray(0, Math.min(buffer.length, 8000)).includes(0);\n}\n\nfunction redactSecretLikeLines(content: string): string {\n return content.replace(SOURCE_SECRET_LINE_PATTERN, `$1${REDACTED_SOURCE_VALUE}`);\n}\n\nfunction isSecretLikePath(filePath: string): boolean {\n return SECRET_PATH_SEGMENT_PATTERN.test(filePath.replace(/\\\\/g, '/'));\n}\n\nfunction preservesPlaceholder(value: string): boolean {\n return value.includes('${{');\n}\n\nfunction sanitizeSecretString(value: string, keyHint?: string): string {\n if (preservesPlaceholder(value)) {\n return value;\n }\n if (keyHint && SECRET_KEY_PATTERN.test(keyHint)) {\n return REDACTED_SOURCE_VALUE;\n }\n if (SOURCE_SECRET_ASSIGNMENT_PATTERN.test(value)) {\n return value.replace(SOURCE_SECRET_ASSIGNMENT_PATTERN, `$1${REDACTED_SOURCE_VALUE}`);\n }\n return value;\n}\n\nfunction sanitizeBundleValue(value: unknown, keyHint?: string): unknown {\n if (typeof value === 'string') {\n return sanitizeSecretString(value, keyHint);\n }\n if (Array.isArray(value)) {\n let redactNext = false;\n return value.map((item) => {\n if (typeof item !== 'string') {\n return sanitizeBundleValue(item);\n }\n if (redactNext) {\n redactNext = false;\n return preservesPlaceholder(item) ? item : REDACTED_SOURCE_VALUE;\n }\n if (SOURCE_SECRET_FLAG_PATTERN.test(item)) {\n redactNext = true;\n return item;\n }\n return sanitizeSecretString(item);\n });\n }\n if (isRecord(value)) {\n const sanitized: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(value)) {\n sanitized[key] = sanitizeBundleValue(child, key);\n }\n return sanitized;\n }\n return value;\n}\n\nasync function copyFileRedactingText(\n sourcePath: string,\n destinationPath: string,\n): Promise<boolean> {\n await mkdir(path.dirname(destinationPath), { recursive: true });\n if (isSecretLikePath(sourcePath)) {\n await writeFile(destinationPath, `${REDACTED_SOURCE_VALUE}\\n`, 'utf8');\n return true;\n }\n\n const content = await readFile(sourcePath);\n if (isLikelyBinary(content)) {\n await writeFile(destinationPath, content);\n return true;\n }\n\n const redacted = redactSecretLikeLines(content.toString('utf8').replace(/\\r\\n/g, '\\n'));\n await writeFile(destinationPath, redacted, 'utf8');\n return true;\n}\n\nasync function copyDirectory(sourcePath: string, destinationPath: string): Promise<boolean> {\n if (isSecretLikePath(sourcePath)) {\n return false;\n }\n\n await mkdir(destinationPath, { recursive: true });\n let copiedAny = false;\n const entries = await readdir(sourcePath, { withFileTypes: true });\n for (const entry of entries) {\n if (SKIPPED_DIR_NAMES.has(entry.name) || isSecretLikePath(entry.name)) {\n continue;\n }\n const sourceChild = path.join(sourcePath, entry.name);\n const destinationChild = path.join(destinationPath, entry.name);\n if (entry.isDirectory()) {\n copiedAny = (await copyDirectory(sourceChild, destinationChild)) || copiedAny;\n } else if (entry.isFile()) {\n copiedAny = (await copyFileRedactingText(sourceChild, destinationChild)) || copiedAny;\n }\n }\n return copiedAny;\n}\n\nfunction shouldCopyDirectory(reference: BundleSourceReference): boolean {\n if (reference.kind !== 'script_grader_cwd' && reference.kind !== 'code_grader_cwd') {\n return true;\n }\n return !path.isAbsolute(reference.displayPath);\n}\n\nasync function copyReferenceWithFailure(\n reference: BundleSourceReference,\n taskDir: string,\n options: Pick<MaterializeTaskBundleOptions, 'cwd' | 'repoRoot'>,\n): Promise<{ copied?: CopiedReference; failure?: BundleReferenceFailure }> {\n if (!reference.resolvedPath) {\n return {\n failure: {\n reference,\n reason: `${reference.location ?? reference.kind} has no resolved path: ${reference.displayPath}`,\n },\n };\n }\n\n const relPath = relativeReferencePath(reference, options);\n if (!relPath) {\n return {\n failure: {\n reference,\n reason: `${reference.location ?? reference.kind} could not be assigned a portable path: ${reference.displayPath}`,\n },\n };\n }\n\n const bucket = referenceBucket(reference);\n const localPath = `${bucket}/${relPath}`;\n const destinationPath = path.join(taskDir, localPath);\n const sourcePath = path.resolve(reference.resolvedPath);\n const sourceStat = await stat(sourcePath).catch(() => undefined);\n if (!sourceStat) {\n return {\n failure: {\n reference,\n reason: `${reference.location ?? reference.kind} not found: ${reference.displayPath} (resolved to ${sourcePath})`,\n },\n };\n }\n\n if (sourceStat.isDirectory()) {\n if (!shouldCopyDirectory(reference)) {\n return {\n failure: {\n reference,\n reason: `${reference.location ?? reference.kind} uses an absolute directory that is not safe to copy automatically: ${reference.displayPath}`,\n },\n };\n }\n if (!(await copyDirectory(sourcePath, destinationPath))) {\n return {\n failure: {\n reference,\n reason: `${reference.location ?? reference.kind} directory contained no bundleable files: ${reference.displayPath}`,\n },\n };\n }\n } else if (sourceStat.isFile()) {\n if (!(await copyFileRedactingText(sourcePath, destinationPath))) {\n return {\n failure: {\n reference,\n reason: `${reference.location ?? reference.kind} could not be copied: ${reference.displayPath}`,\n },\n };\n }\n } else {\n return {\n failure: {\n reference,\n reason: `${reference.location ?? reference.kind} is not a regular file or directory: ${reference.displayPath}`,\n },\n };\n }\n\n return { copied: { reference, localPath: localPath.split(path.sep).join('/'), destinationPath } };\n}\n\nasync function copyReference(\n reference: BundleSourceReference,\n taskDir: string,\n options: Pick<MaterializeTaskBundleOptions, 'cwd' | 'repoRoot'>,\n): Promise<CopiedReference | undefined> {\n return (await copyReferenceWithFailure(reference, taskDir, options)).copied;\n}\n\nasync function copyReferences(\n references: readonly BundleSourceReference[],\n taskDir: string,\n options: Pick<MaterializeTaskBundleOptions, 'cwd' | 'repoRoot'>,\n): Promise<readonly CopiedReference[]> {\n const copied: CopiedReference[] = [];\n const seenDestinations = new Set<string>();\n for (const reference of references) {\n const result = await copyReference(reference, taskDir, options);\n if (!result || seenDestinations.has(result.destinationPath)) {\n continue;\n }\n seenDestinations.add(result.destinationPath);\n copied.push(result);\n }\n return copied;\n}\n\nasync function copyReferencesStrict(\n references: readonly BundleSourceReference[],\n taskDir: string,\n options: Pick<MaterializeEvalBundleOptions, 'cwd' | 'repoRoot'>,\n): Promise<{\n readonly copied: readonly CopiedReference[];\n readonly failures: readonly BundleReferenceFailure[];\n}> {\n const copied: CopiedReference[] = [];\n const failures: BundleReferenceFailure[] = [];\n const seenDestinations = new Set<string>();\n const seenFailures = new Set<string>();\n\n for (const reference of references) {\n const result = await copyReferenceWithFailure(reference, taskDir, options);\n if (result.copied) {\n if (seenDestinations.has(result.copied.destinationPath)) {\n continue;\n }\n seenDestinations.add(result.copied.destinationPath);\n copied.push(result.copied);\n continue;\n }\n\n if (result.failure) {\n const key = `${result.failure.reference.kind}:${result.failure.reference.displayPath}:${result.failure.reason}`;\n if (!seenFailures.has(key)) {\n seenFailures.add(key);\n failures.push(result.failure);\n }\n }\n }\n\n return { copied, failures };\n}\n\nfunction addRewrite(rewrites: Map<string, string>, from: string | undefined, to: string): void {\n if (!from || from.trim().length === 0) {\n return;\n }\n rewrites.set(from, to);\n}\n\nfunction buildPathRewrites(copiedReferences: readonly CopiedReference[]): Map<string, string> {\n const rewrites = new Map<string, string>();\n for (const { reference, localPath } of copiedReferences) {\n addRewrite(rewrites, reference.displayPath, localPath);\n addRewrite(rewrites, reference.resolvedPath, localPath);\n addRewrite(rewrites, `file://${reference.displayPath}`, `file://${localPath}`);\n if (reference.resolvedPath) {\n addRewrite(rewrites, `file://${reference.resolvedPath}`, `file://${localPath}`);\n }\n for (const arg of reference.command ?? []) {\n if (arg === reference.displayPath || arg === reference.resolvedPath) {\n addRewrite(rewrites, arg, localPath);\n }\n }\n }\n return rewrites;\n}\n\nfunction rewritePathsDeep(value: unknown, rewrites: ReadonlyMap<string, string>): unknown {\n if (typeof value === 'string') {\n return rewrites.get(value) ?? value;\n }\n if (Array.isArray(value)) {\n return value.map((item) => rewritePathsDeep(item, rewrites));\n }\n if (isRecord(value)) {\n const rewritten: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(value)) {\n rewritten[key] = rewritePathsDeep(child, rewrites);\n }\n return rewritten;\n }\n return value;\n}\n\nfunction parseSourceTestCase(test: EvalTest): Record<string, unknown> {\n const parsed = test.source ? parseYamlValue(test.source.testSnapshotYaml) : undefined;\n const testCase = isRecord(parsed) ? { ...parsed } : { id: test.id, input: test.question };\n if (typeof testCase.id !== 'string' || testCase.id.length === 0) {\n testCase.id = test.id;\n }\n return testCase;\n}\n\nfunction withoutLegacyAssertionKeys(testCase: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(testCase).filter(([key]) => key !== 'assert' && key !== 'assertions'),\n );\n}\n\nfunction moveInputToVars(testCase: Record<string, unknown>): Record<string, unknown> {\n if (!Object.hasOwn(testCase, 'input')) {\n return testCase;\n }\n const { input, input_files: _inputFiles, ...caseWithoutInput } = testCase;\n return {\n ...caseWithoutInput,\n vars: {\n ...(isRecord(testCase.vars) ? testCase.vars : {}),\n input,\n },\n };\n}\n\nfunction serializeGraderDefinition(\n definition: Record<string, unknown>,\n rewrites: ReadonlyMap<string, string>,\n): unknown {\n const serialized = rewritePathsDeep(toSnakeCaseDeep(definition), rewrites);\n if (!isRecord(serialized)) {\n return serialized;\n }\n const { name, metric, ...rest } = serialized;\n return typeof name === 'string' && metric === undefined ? { metric: name, ...rest } : serialized;\n}\n\nfunction buildEvalCase(\n test: EvalTest,\n rewrites: ReadonlyMap<string, string>,\n): Record<string, unknown> {\n const testCase = rewritePathsDeep(parseSourceTestCase(test), rewrites) as Record<string, unknown>;\n const graderDefinitions = test.source?.graderDefinitions ?? [];\n if (graderDefinitions.length > 0) {\n return moveInputToVars({\n ...withoutLegacyAssertionKeys(testCase),\n assert: graderDefinitions.map((grader) =>\n serializeGraderDefinition(grader.definition, rewrites),\n ),\n });\n }\n return moveInputToVars(testCase);\n}\n\nfunction targetReferenceNames(target: ProviderDefinition): readonly string[] {\n const references: string[] = [];\n for (const key of ['use_target', 'grader_target'] as const) {\n const value = target[key];\n if (typeof value === 'string' && value.trim().length > 0 && !value.includes('${{')) {\n references.push(value.trim());\n }\n }\n\n const fallbackTargets = target.fallback_targets;\n if (Array.isArray(fallbackTargets)) {\n for (const value of fallbackTargets) {\n if (typeof value === 'string' && value.trim().length > 0 && !value.includes('${{')) {\n references.push(value.trim());\n }\n }\n }\n\n return references;\n}\n\nfunction selectTargetDefinitions(\n providerLabel: string,\n definitions: readonly ProviderDefinition[],\n): readonly ProviderDefinition[] {\n const byName = new Map(definitions.map((definition) => [definition.name, definition]));\n const selected: ProviderDefinition[] = [];\n const seen = new Set<string>();\n\n function visit(name: string): void {\n if (seen.has(name)) {\n return;\n }\n const definition = byName.get(name);\n if (!definition) {\n return;\n }\n seen.add(name);\n selected.push(definition);\n for (const referenceName of targetReferenceNames(definition)) {\n visit(referenceName);\n }\n }\n\n visit(providerLabel);\n return selected;\n}\n\nasync function writeYamlFile(filePath: string, value: unknown): Promise<void> {\n const yaml = stringifyYaml(toSnakeCaseDeep(sanitizeBundleValue(value)), {\n lineWidth: 0,\n }).trimEnd();\n await writeFile(filePath, `${yaml}\\n`, 'utf8');\n}\n\nfunction hasCopiedBucket(\n copied: readonly CopiedReference[],\n bucket: 'files' | 'graders' | 'workspaces' | 'scripts',\n): boolean {\n return copied.some((entry) => entry.localPath.startsWith(`${bucket}/`));\n}\n\nfunction bundledEvalFileName(evalFilePath: string): string {\n const basename = path.basename(evalFilePath);\n const withoutKnownExtension = basename\n .replace(/\\.eval\\.[cm]?ts$/i, '')\n .replace(/\\.eval\\.ya?ml$/i, '')\n .replace(/\\.[cm]?ts$/i, '')\n .replace(/\\.ya?ml$/i, '')\n .replace(/\\.jsonl?$/i, '');\n const safeName = withoutKnownExtension\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n return `${safeName || 'bundle'}.eval.yaml`;\n}\n\nfunction uniqueTargetDefinitions(\n selections: readonly TaskBundleProviderSelection[],\n tests: readonly EvalTest[] = [],\n): readonly ProviderDefinition[] {\n const selected: ProviderDefinition[] = [];\n const seen = new Set<string>();\n\n function addDefinitions(\n names: readonly string[],\n definitions: readonly ProviderDefinition[],\n ): void {\n for (const name of names) {\n for (const definition of selectTargetDefinitions(name, definitions)) {\n if (seen.has(definition.name)) {\n continue;\n }\n seen.add(definition.name);\n selected.push(definition);\n }\n }\n }\n\n const graderTargetNames = collectGraderTargetNames(tests);\n for (const selection of selections) {\n addDefinitions([selection.providerLabel, ...graderTargetNames], selection.definitions);\n }\n\n return selected;\n}\n\nfunction collectGraderTargetNames(tests: readonly EvalTest[]): readonly string[] {\n const names: string[] = [];\n const seen = new Set<string>();\n\n function collect(value: unknown, key?: string): void {\n if (key === 'target' && typeof value === 'string') {\n const target = value.trim();\n if (target.length > 0 && !target.includes('${{') && !seen.has(target)) {\n seen.add(target);\n names.push(target);\n }\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n collect(item);\n }\n return;\n }\n\n if (isRecord(value)) {\n for (const [childKey, childValue] of Object.entries(value)) {\n collect(childValue, childKey);\n }\n }\n }\n\n for (const test of tests) {\n for (const grader of test.source?.graderDefinitions ?? []) {\n collect(grader.definition);\n }\n }\n\n return names;\n}\n\nfunction selectTaskBundleTargetDefinitions(\n providerLabel: string,\n definitions: readonly ProviderDefinition[],\n tests: readonly EvalTest[],\n): readonly ProviderDefinition[] {\n const selected: ProviderDefinition[] = [];\n const seen = new Set<string>();\n\n for (const name of [providerLabel, ...collectGraderTargetNames(tests)]) {\n for (const definition of selectTargetDefinitions(name, definitions)) {\n if (seen.has(definition.name)) {\n continue;\n }\n seen.add(definition.name);\n selected.push(definition);\n }\n }\n\n return selected;\n}\n\nfunction serializeTargetDefinition(\n definition: ProviderDefinition,\n rewrites: ReadonlyMap<string, string>,\n): Record<string, unknown> {\n const providerSpec =\n typeof definition.provider_spec === 'string' && definition.provider_spec.trim().length > 0\n ? definition.provider_spec.trim()\n : typeof definition.provider === 'string' && definition.provider.trim().length > 0\n ? definition.provider.trim()\n : typeof definition.id === 'string' && definition.id.trim().length > 0\n ? definition.id.trim()\n : definition.name;\n const provider: Record<string, unknown> = { id: providerSpec };\n if (definition.name !== providerSpec) {\n provider.label = definition.name;\n }\n const config: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(definition)) {\n if (\n value === undefined ||\n key === 'name' ||\n key === 'id' ||\n key === 'provider' ||\n key === 'provider_spec' ||\n key === 'label' ||\n key === 'config'\n ) {\n continue;\n }\n if (key === 'environment' && definition.environment) {\n provider.environment = serializeEnvironment(\n definition.environment as EnvironmentRecipe,\n rewrites,\n );\n } else if (AUTHORING_TOP_LEVEL_TARGET_FIELDS.has(key)) {\n provider[key] = value;\n } else {\n config[key] = value;\n }\n }\n\n if (isRecord(definition.config)) {\n for (const [key, value] of Object.entries(definition.config)) {\n if (value !== undefined) {\n config[key] = value;\n }\n }\n }\n if (Object.keys(config).length > 0) {\n provider.config = config;\n }\n\n return provider;\n}\n\nfunction serializeTargetDefinitions(\n definitions: readonly ProviderDefinition[],\n rewrites: ReadonlyMap<string, string> = new Map(),\n): readonly Record<string, unknown>[] {\n return definitions.map((definition) => serializeTargetDefinition(definition, rewrites));\n}\n\nfunction uniqueTargetNames(selections: readonly TaskBundleProviderSelection[]): readonly string[] {\n const names: string[] = [];\n const seen = new Set<string>();\n for (const selection of selections) {\n if (seen.has(selection.providerLabel)) {\n continue;\n }\n seen.add(selection.providerLabel);\n names.push(selection.providerLabel);\n }\n return names;\n}\n\nfunction rewritePathString(value: string, rewrites: ReadonlyMap<string, string>): string {\n const direct = rewrites.get(value);\n if (direct) {\n return direct.startsWith('file://') ? direct.slice('file://'.length) : direct;\n }\n const fileUrl = rewrites.get(`file://${value}`);\n if (fileUrl) {\n return fileUrl.startsWith('file://') ? fileUrl.slice('file://'.length) : fileUrl;\n }\n return value;\n}\n\nfunction serializeContentValue(value: unknown, rewrites: ReadonlyMap<string, string>): unknown {\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => serializeContentItem(item, rewrites));\n }\n\n if (isRecord(value)) {\n return rewritePathsDeep(value, rewrites);\n }\n\n return value;\n}\n\nfunction serializeContentItem(value: unknown, rewrites: ReadonlyMap<string, string>): unknown {\n if (typeof value === 'string') {\n return value;\n }\n if (!isRecord(value)) {\n return value;\n }\n\n const type = value.type;\n if (type === 'text') {\n const text = typeof value.value === 'string' ? value.value : value.text;\n return { type: 'text', value: typeof text === 'string' ? text : '' };\n }\n\n if (type === 'file') {\n const source =\n typeof value.value === 'string'\n ? value.value\n : typeof value.path === 'string'\n ? value.path\n : typeof value.resolvedPath === 'string'\n ? value.resolvedPath\n : undefined;\n return source\n ? { type: 'file', value: rewritePathString(source, rewrites) }\n : { type: 'file', value: '' };\n }\n\n if (type === 'image') {\n const source =\n typeof value.value === 'string'\n ? value.value\n : typeof value.path === 'string'\n ? value.path\n : typeof value.resolvedPath === 'string'\n ? value.resolvedPath\n : undefined;\n if (source) {\n return { type: 'image', value: rewritePathString(source, rewrites) };\n }\n }\n\n return rewritePathsDeep(value, rewrites);\n}\n\nfunction serializeMessage(\n message: TestMessage,\n rewrites: ReadonlyMap<string, string>,\n): Record<string, unknown> {\n return {\n role: message.role,\n content: serializeContentValue(message.content, rewrites),\n };\n}\n\nfunction serializeExpectedMessage(\n message: JsonObject,\n rewrites: ReadonlyMap<string, string>,\n): Record<string, unknown> {\n const serialized: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(message)) {\n serialized[key] = key === 'content' ? serializeContentValue(value, rewrites) : value;\n }\n return rewritePathsDeep(serialized, rewrites) as Record<string, unknown>;\n}\n\nfunction serializeWorkspace(\n workspace: WorkspaceConfig,\n rewrites: ReadonlyMap<string, string>,\n): Record<string, unknown> {\n const { workspaceFileDir: _workspaceFileDir, ...portableWorkspace } = workspace;\n return rewritePathsDeep(portableWorkspace, rewrites) as Record<string, unknown>;\n}\n\nfunction serializeEnvironment(\n environment: EnvironmentRecipe,\n rewrites: ReadonlyMap<string, string>,\n): Record<string, unknown> {\n const {\n authoredReference: _authoredReference,\n recipeFilePath: _recipeFilePath,\n recipeFileSha256: _recipeFileSha256,\n recipeSha256: _recipeSha256,\n sourceDir: _sourceDir,\n ...portableEnvironment\n } = environment;\n return rewritePathsDeep(portableEnvironment, rewrites) as Record<string, unknown>;\n}\n\nfunction buildPortableEvalCase(\n test: EvalTest,\n rewrites: ReadonlyMap<string, string>,\n): Record<string, unknown> {\n const testCase = buildEvalCase(test, rewrites);\n testCase.id = test.id;\n testCase.vars = {\n ...(isRecord(testCase.vars) ? testCase.vars : {}),\n input: test.input.map((message) => serializeMessage(message, rewrites)),\n };\n\n if (test.criteria.trim().length > 0) {\n testCase.criteria = test.criteria;\n }\n if (test.expected_output.length > 0) {\n testCase.expected_output = test.expected_output.map((message) =>\n serializeExpectedMessage(message, rewrites),\n );\n }\n if (test.workspace) {\n testCase.workspace = serializeWorkspace(test.workspace, rewrites);\n }\n if (test.environment) {\n testCase.environment = serializeEnvironment(test.environment, rewrites);\n }\n if (test.metadata && Object.keys(test.metadata).length > 0) {\n testCase.metadata = rewritePathsDeep(test.metadata, rewrites);\n }\n if (test.run && Object.keys(test.run).length > 0) {\n testCase.run = rewritePathsDeep(test.run, rewrites);\n }\n if (test.conversation_id) {\n testCase.conversation_id = test.conversation_id;\n }\n if (test.threshold !== undefined) {\n const existingExecution = isRecord(testCase.execution) ? testCase.execution : {};\n testCase.execution = { ...existingExecution, threshold: test.threshold };\n }\n if (test.mode) {\n testCase.mode = test.mode;\n }\n if (test.turns && test.turns.length > 0) {\n testCase.turns = rewritePathsDeep(test.turns, rewrites);\n }\n if (test.aggregation) {\n testCase.aggregation = test.aggregation;\n }\n if (test.on_turn_failure) {\n testCase.on_turn_failure = test.on_turn_failure;\n }\n if (test.window_size !== undefined) {\n testCase.window_size = test.window_size;\n }\n if (test.depends_on && test.depends_on.length > 0) {\n testCase.depends_on = test.depends_on;\n }\n if (test.on_dependency_failure) {\n testCase.on_dependency_failure = test.on_dependency_failure;\n }\n\n return testCase;\n}\n\nfunction isLikelyCommandPath(value: string): boolean {\n if (value.trim().length === 0 || value.startsWith('-') || value.includes('${{')) {\n return false;\n }\n return (\n value.startsWith('.') ||\n value.includes('/') ||\n value.includes('\\\\') ||\n path.extname(value).length > 0\n );\n}\n\nasync function maybeWorkspaceHookCommandReference(options: {\n readonly arg: string;\n readonly baseDir: string;\n readonly testId: string;\n readonly hookName: string;\n}): Promise<BundleSourceReference | undefined> {\n if (!isLikelyCommandPath(options.arg)) {\n return undefined;\n }\n const resolvedPath = path.isAbsolute(options.arg)\n ? path.resolve(options.arg)\n : path.resolve(options.baseDir, options.arg);\n const sourceStat = await stat(resolvedPath).catch(() => undefined);\n if (!sourceStat?.isFile()) {\n return undefined;\n }\n return {\n kind: 'workspace_hook_command',\n displayPath: options.arg,\n resolvedPath,\n location: `workspace.hooks.${options.hookName}.command for test \"${options.testId}\"`,\n };\n}\n\nfunction environmentBaseDir(environment: EnvironmentRecipe, evalFileDir: string): string {\n return environment.recipeFilePath ? path.dirname(environment.recipeFilePath) : evalFileDir;\n}\n\nasync function collectEnvironmentReferences(\n tests: readonly EvalTest[],\n evalFileDir: string,\n): Promise<readonly BundleSourceReference[]> {\n const references: BundleSourceReference[] = [];\n\n for (const test of tests) {\n const environment = test.environment;\n if (!environment) {\n continue;\n }\n\n if (environment.type === 'host') {\n references.push({\n kind: 'environment_workdir',\n displayPath: environment.workdir,\n resolvedPath: environment.workdir,\n location: `environment.workdir for test \"${test.id}\"`,\n });\n }\n\n const command = environment.setup?.command;\n if (!command) {\n continue;\n }\n\n const baseDir = environmentBaseDir(environment, evalFileDir);\n const commandArgs = Array.isArray(command) ? command : [command];\n for (const arg of commandArgs) {\n const reference = await maybeWorkspaceHookCommandReference({\n arg,\n baseDir,\n testId: test.id,\n hookName: 'setup',\n });\n if (reference) {\n references.push({\n ...reference,\n kind: 'environment_setup_command',\n location: `environment.setup.command for test \"${test.id}\"`,\n });\n }\n }\n }\n\n return references;\n}\n\nasync function collectProviderEnvironmentReferences(\n definitions: readonly ProviderDefinition[],\n evalFileDir: string,\n): Promise<readonly BundleSourceReference[]> {\n const references: BundleSourceReference[] = [];\n\n for (const definition of definitions) {\n const environment = definition.environment as EnvironmentRecipe | undefined;\n if (!environment) {\n continue;\n }\n const label = `provider \"${definition.name}\"`;\n if (environment.type === 'host') {\n references.push({\n kind: 'environment_workdir',\n displayPath: environment.workdir,\n resolvedPath: environment.workdir,\n location: `${label}.environment.workdir`,\n });\n }\n\n const command = environment.setup?.command;\n if (!command) {\n continue;\n }\n const baseDir = environmentBaseDir(environment, evalFileDir);\n for (const arg of command) {\n const reference = await maybeWorkspaceHookCommandReference({\n arg,\n baseDir,\n testId: definition.name,\n hookName: 'setup',\n });\n if (reference) {\n references.push({\n ...reference,\n kind: 'environment_setup_command',\n location: `${label}.environment.setup.command`,\n });\n }\n }\n }\n\n return references;\n}\n\nasync function collectWorkspaceReferences(\n tests: readonly EvalTest[],\n evalFileDir: string,\n): Promise<{\n readonly references: readonly BundleSourceReference[];\n readonly errors: readonly string[];\n}> {\n const references: BundleSourceReference[] = [];\n const errors: string[] = [];\n\n for (const test of tests) {\n const workspace = test.workspace;\n if (!workspace) {\n continue;\n }\n\n if (workspace.template) {\n references.push({\n kind: 'workspace_template',\n displayPath: workspace.template,\n resolvedPath: workspace.template,\n location: `workspace.template for test \"${test.id}\"`,\n });\n }\n\n const hooks = workspace.hooks;\n if (!hooks) {\n continue;\n }\n\n for (const hookName of ['before_all', 'before_each', 'after_each', 'after_all'] as const) {\n const hook = hooks[hookName];\n const command = hook?.command;\n if (!command || command.length === 0) {\n continue;\n }\n if (hook?.cwd) {\n errors.push(\n `workspace.hooks.${hookName}.cwd for test \"${test.id}\" cannot be bundled safely yet: ${hook.cwd}`,\n );\n continue;\n }\n\n const baseDir = workspace.workspaceFileDir ?? evalFileDir;\n for (const arg of command) {\n const reference = await maybeWorkspaceHookCommandReference({\n arg,\n baseDir,\n testId: test.id,\n hookName,\n });\n if (reference) {\n references.push(reference);\n }\n }\n }\n }\n\n return { references, errors };\n}\n\nfunction collectExpectedOutputReferences(\n tests: readonly EvalTest[],\n): readonly BundleSourceReference[] {\n const references: BundleSourceReference[] = [];\n for (const test of tests) {\n for (const message of test.expected_output) {\n const content = message.content;\n if (!Array.isArray(content)) {\n continue;\n }\n for (const segment of content) {\n if (!isRecord(segment) || segment.type !== 'file') {\n continue;\n }\n const resolvedPath =\n typeof segment.resolvedPath === 'string' ? path.resolve(segment.resolvedPath) : undefined;\n const displayPath =\n typeof segment.path === 'string'\n ? segment.path\n : typeof segment.value === 'string'\n ? segment.value\n : resolvedPath;\n if (!displayPath) {\n continue;\n }\n references.push({\n kind: 'expected_output_file',\n displayPath,\n ...(resolvedPath ? { resolvedPath } : {}),\n location: `expected_output file for test \"${test.id}\"`,\n });\n }\n }\n }\n return references;\n}\n\nfunction bundleManifest(options: {\n readonly outputDir: string;\n readonly evalFilePath: string;\n readonly evalPath: string;\n readonly providersPath: string;\n readonly copiedReferences: readonly CopiedReference[];\n readonly tests: readonly EvalTest[];\n readonly targetNames: readonly string[];\n readonly createdAt: string;\n}): Record<string, unknown> {\n const relative = (filePath: string) =>\n path.relative(options.outputDir, filePath).split(path.sep).join('/');\n return {\n schema_version: 1,\n created_at: options.createdAt,\n source_eval: options.evalFilePath,\n eval_path: relative(options.evalPath),\n providers_path: relative(options.providersPath),\n test_count: options.tests.length,\n targets: options.targetNames,\n ...(hasCopiedBucket(options.copiedReferences, 'files') ? { files_path: 'evals/files' } : {}),\n ...(hasCopiedBucket(options.copiedReferences, 'graders')\n ? { graders_path: 'evals/graders' }\n : {}),\n ...(hasCopiedBucket(options.copiedReferences, 'workspaces')\n ? { workspaces_path: 'evals/workspaces' }\n : {}),\n ...(hasCopiedBucket(options.copiedReferences, 'scripts')\n ? { scripts_path: 'evals/scripts' }\n : {}),\n };\n}\n\n/**\n * Materialize the native AgentV task source for one completed result row.\n *\n * The bundle is intentionally just an eval file, a selected providers file, and\n * copied referenced assets. It does not create `.agentv/` under the result\n * artifact directory, so future reruns can choose their output root explicitly.\n */\nexport async function materializeTaskBundle(\n options: MaterializeTaskBundleOptions,\n): Promise<MaterializedTaskBundlePaths | undefined> {\n if (!options.test.source) {\n return undefined;\n }\n\n const providerDefinitions = selectTaskBundleTargetDefinitions(\n options.providerLabel,\n options.providerDefinitions,\n [options.test],\n );\n if (providerDefinitions.length === 0) {\n return undefined;\n }\n\n const testDir = path.join(options.outputDir, TEST_BUNDLE_DIRNAME);\n await mkdir(testDir, { recursive: true });\n\n const providerEnvironmentReferences = await collectProviderEnvironmentReferences(\n providerDefinitions,\n path.dirname(options.test.source.evalFileAbsolutePath ?? options.test.source.evalFilePath),\n );\n const copiedReferences = await copyReferences(\n [...options.test.source.references, ...providerEnvironmentReferences],\n testDir,\n options,\n );\n const rewrites = buildPathRewrites(copiedReferences);\n const evalCase = buildEvalCase(options.test, rewrites);\n const evalPath = path.join(testDir, TASK_EVAL_FILENAME);\n const providersPath = path.join(testDir, TASK_PROVIDERS_FILENAME);\n\n await writeYamlFile(evalPath, {\n providers: [options.providerLabel],\n prompts: [INPUT_PROMPT],\n tests: [evalCase],\n });\n await writeYamlFile(providersPath, {\n providers: serializeTargetDefinitions(providerDefinitions, rewrites),\n });\n\n return {\n testDir,\n evalPath,\n providersPath,\n ...(hasCopiedBucket(copiedReferences, 'files')\n ? { filesPath: path.join(testDir, TASK_FILES_DIRNAME) }\n : {}),\n ...(hasCopiedBucket(copiedReferences, 'graders')\n ? { gradersPath: path.join(testDir, TASK_GRADERS_DIRNAME) }\n : {}),\n };\n}\n\n/**\n * Materialize a whole eval suite as a portable directory.\n *\n * This reuses the same source snapshots, dependency copying, path rewriting,\n * target slicing, and secret redaction used by per-result test bundles. The\n * output eval is intentionally explicit: inherited suite defaults are written\n * onto each bundled test case so the bundle can run without the source tree.\n */\nexport async function materializeEvalBundle(\n options: MaterializeEvalBundleOptions,\n): Promise<MaterializedEvalBundlePaths> {\n if (options.tests.length === 0) {\n throw new Error('Cannot bundle eval with no runnable tests.');\n }\n if (options.providerSelections.length === 0) {\n throw new Error('Cannot bundle eval without a selected target.');\n }\n\n const missingSource = options.tests.find((test) => !test.source);\n if (missingSource) {\n throw new Error(\n `Cannot bundle test \"${missingSource.id}\" because it has no source metadata. YAML evals are supported; programmatic evals with inline functions are not portable yet.`,\n );\n }\n\n const outputDir = path.resolve(options.outputDir);\n const evalsDir = path.join(outputDir, BUNDLE_EVALS_DIRNAME);\n await mkdir(evalsDir, { recursive: true });\n\n const evalFileDir = path.dirname(path.resolve(options.evalFilePath));\n const providerDefinitions = uniqueTargetDefinitions(options.providerSelections, options.tests);\n const workspaceReferences = await collectWorkspaceReferences(options.tests, evalFileDir);\n const environmentReferences = await collectEnvironmentReferences(options.tests, evalFileDir);\n const providerEnvironmentReferences = await collectProviderEnvironmentReferences(\n providerDefinitions,\n evalFileDir,\n );\n const references: BundleSourceReference[] = [\n ...options.tests.flatMap((test) => test.source?.references ?? []),\n ...collectExpectedOutputReferences(options.tests),\n ...environmentReferences,\n ...providerEnvironmentReferences,\n ...workspaceReferences.references,\n ];\n\n const { copied, failures } = await copyReferencesStrict(references, evalsDir, options);\n const errors = [...workspaceReferences.errors, ...failures.map((failure) => failure.reason)];\n if (errors.length > 0) {\n throw new Error(`Cannot bundle eval:\\n${errors.map((error) => `- ${error}`).join('\\n')}`);\n }\n\n const rewrites = buildPathRewrites(copied);\n const targetNames = uniqueTargetNames(options.providerSelections);\n const evalPath = path.join(evalsDir, bundledEvalFileName(options.evalFilePath));\n const providersPath = path.join(outputDir, BUNDLE_PROVIDERS_FILENAME);\n const configPath = path.join(outputDir, BUNDLE_CONFIG_DIRNAME, BUNDLE_CONFIG_FILENAME);\n const manifestPath = path.join(outputDir, BUNDLE_MANIFEST_FILENAME);\n const runtime =\n options.runtime ?? (targetNames.length > 0 ? { providers: targetNames } : undefined);\n\n await writeYamlFile(evalPath, {\n ...(runtime ?? {}),\n prompts: [INPUT_PROMPT],\n tests: options.tests.map((test) => buildPortableEvalCase(test, rewrites)),\n });\n await writeYamlFile(providersPath, serializeTargetDefinitions(providerDefinitions, rewrites));\n await mkdir(path.dirname(configPath), { recursive: true });\n await writeYamlFile(configPath, { providers: `file://../${BUNDLE_PROVIDERS_FILENAME}` });\n\n const manifest = bundleManifest({\n outputDir,\n evalFilePath: path.resolve(options.evalFilePath),\n evalPath,\n providersPath,\n copiedReferences: copied,\n tests: options.tests,\n targetNames,\n createdAt: (options.now ?? (() => new Date()))().toISOString(),\n });\n await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`, 'utf8');\n\n return {\n bundleDir: outputDir,\n evalsDir,\n evalPath,\n providersPath,\n manifestPath,\n ...(hasCopiedBucket(copied, 'files')\n ? { filesPath: path.join(evalsDir, TASK_FILES_DIRNAME) }\n : {}),\n ...(hasCopiedBucket(copied, 'graders')\n ? { gradersPath: path.join(evalsDir, TASK_GRADERS_DIRNAME) }\n : {}),\n ...(hasCopiedBucket(copied, 'workspaces')\n ? { workspacesPath: path.join(evalsDir, BUNDLE_WORKSPACES_DIRNAME) }\n : {}),\n ...(hasCopiedBucket(copied, 'scripts')\n ? { scriptsPath: path.join(evalsDir, BUNDLE_SCRIPTS_DIRNAME) }\n : {}),\n };\n}\n"],"mappings":"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","names":["path","path","buildIndexArtifactEntry","buildResultIndexArtifact","writePerTestArtifacts","writeArtifactsFromResults"]}
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node