agentv 4.41.1 → 4.41.4

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 (29) hide show
  1. package/README.md +3 -1
  2. package/dist/{artifact-writer-AMV64TWV.js → artifact-writer-GKRPI5WH.js} +4 -4
  3. package/dist/{chunk-LXXMQSAR.js → chunk-P7YRPQFD.js} +659 -286
  4. package/dist/chunk-P7YRPQFD.js.map +1 -0
  5. package/dist/{chunk-ENHX2CCS.js → chunk-QCF3LUI7.js} +269 -157
  6. package/dist/chunk-QCF3LUI7.js.map +1 -0
  7. package/dist/{chunk-A4J456KS.js → chunk-VBEWRK44.js} +429 -12
  8. package/dist/chunk-VBEWRK44.js.map +1 -0
  9. package/dist/{chunk-Z45FKRMJ.js → chunk-XDE2ZRII.js} +2 -2
  10. package/dist/{chunk-JQ6XRG7X.js → chunk-YO5PBZOH.js} +22 -20
  11. package/dist/{chunk-JQ6XRG7X.js.map → chunk-YO5PBZOH.js.map} +1 -1
  12. package/dist/cli.js +5 -5
  13. package/dist/{dist-X5P5IR65.js → dist-FDVFAGRG.js} +9 -47
  14. package/dist/index.js +5 -5
  15. package/dist/{interactive-OPSG4MPD.js → interactive-ITOKDIDQ.js} +5 -5
  16. package/dist/skills/agentv-bench/references/environment-adaptation.md +1 -1
  17. package/dist/skills/agentv-bench/references/eval-yaml-spec.md +2 -2
  18. package/dist/skills/agentv-eval-writer/SKILL.md +4 -4
  19. package/dist/skills/agentv-eval-writer/references/custom-evaluators.md +2 -2
  20. package/dist/{ts-eval-loader-ZVL6CGTE-TZYZX3QS.js → ts-eval-loader-UPFWPMQO-SKZNUXPB.js} +2 -2
  21. package/package.json +1 -1
  22. package/dist/chunk-A4J456KS.js.map +0 -1
  23. package/dist/chunk-ENHX2CCS.js.map +0 -1
  24. package/dist/chunk-LXXMQSAR.js.map +0 -1
  25. /package/dist/{artifact-writer-AMV64TWV.js.map → artifact-writer-GKRPI5WH.js.map} +0 -0
  26. /package/dist/{chunk-Z45FKRMJ.js.map → chunk-XDE2ZRII.js.map} +0 -0
  27. /package/dist/{dist-X5P5IR65.js.map → dist-FDVFAGRG.js.map} +0 -0
  28. /package/dist/{interactive-OPSG4MPD.js.map → interactive-ITOKDIDQ.js.map} +0 -0
  29. /package/dist/{ts-eval-loader-ZVL6CGTE-TZYZX3QS.js.map → ts-eval-loader-UPFWPMQO-SKZNUXPB.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -2,15 +2,15 @@
2
2
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
3
3
  import {
4
4
  runCli
5
- } from "./chunk-LXXMQSAR.js";
6
- import "./chunk-JQ6XRG7X.js";
7
- import "./chunk-A4J456KS.js";
8
- import "./chunk-Z45FKRMJ.js";
5
+ } from "./chunk-P7YRPQFD.js";
6
+ import "./chunk-YO5PBZOH.js";
7
+ import "./chunk-VBEWRK44.js";
8
+ import "./chunk-XDE2ZRII.js";
9
9
  import "./chunk-76FOHROU.js";
10
10
  import "./chunk-BPGJ4HBU.js";
11
11
  import {
12
12
  killAllTrackedChildren
13
- } from "./chunk-ENHX2CCS.js";
13
+ } from "./chunk-QCF3LUI7.js";
14
14
  import "./chunk-NPVGBFF6.js";
15
15
  import "./chunk-M7BUKBAF.js";
16
16
  import "./chunk-5H446C7X.js";
@@ -47,7 +47,7 @@ import {
47
47
  transpileEvalYaml,
48
48
  transpileEvalYamlFile,
49
49
  trimBaselineResult
50
- } from "./chunk-Z45FKRMJ.js";
50
+ } from "./chunk-XDE2ZRII.js";
51
51
  import {
52
52
  OtlpJsonFileExporter
53
53
  } from "./chunk-76FOHROU.js";
@@ -70,23 +70,6 @@ import {
70
70
  GraderRegistry,
71
71
  LatencyGrader,
72
72
  LlmGrader,
73
- NORMALIZED_REDACTION_LEVELS,
74
- NORMALIZED_TOOL_STATUSES,
75
- NORMALIZED_TRACE_EVENT_TYPES,
76
- NORMALIZED_TRACE_SOURCE_KINDS,
77
- NORMALIZED_TRAJECTORY_SCHEMA_VERSION,
78
- NormalizedRawEvidenceWireSchema,
79
- NormalizedRedactionStateWireSchema,
80
- NormalizedTraceBranchWireSchema,
81
- NormalizedTraceErrorWireSchema,
82
- NormalizedTraceEventWireSchema,
83
- NormalizedTraceMessageWireSchema,
84
- NormalizedTraceModelWireSchema,
85
- NormalizedTraceSessionWireSchema,
86
- NormalizedTraceSourceRefWireSchema,
87
- NormalizedTraceSourceWireSchema,
88
- NormalizedTraceToolWireSchema,
89
- NormalizedTrajectoryWireSchema,
90
73
  PASS_THRESHOLD,
91
74
  ProviderRegistry,
92
75
  REPLAY_FIXTURE_SCHEMA_VERSION,
@@ -100,7 +83,6 @@ import {
100
83
  TEST_MESSAGE_ROLES,
101
84
  TRACE_EVENT_TYPES,
102
85
  TRACE_REDACTION_LEVELS,
103
- TRACE_SCHEMA_VERSION,
104
86
  TRACE_SOURCE_KINDS,
105
87
  TRACE_TOOL_STATUSES,
106
88
  TemplateNotDirectoryError,
@@ -161,7 +143,7 @@ import {
161
143
  cleanupEvalWorkspaces,
162
144
  cleanupWorkspace,
163
145
  computeTraceSummary,
164
- computeTraceSummaryFromTrajectory,
146
+ computeTraceSummaryFromTraceArtifact,
165
147
  computeWorkspaceFingerprint,
166
148
  consumeClaudeLogEntries,
167
149
  consumeCodexLogEntries,
@@ -205,7 +187,6 @@ import {
205
187
  formatReplayLookupKey,
206
188
  formatToolCalls,
207
189
  freeformEvaluationSchema,
208
- fromNormalizedTrajectoryWire,
209
190
  fromTraceArtifactWire,
210
191
  fromTraceEnvelopeWire,
211
192
  getAgentvConfigDir,
@@ -214,7 +195,7 @@ import {
214
195
  getProject,
215
196
  getProjectForPath,
216
197
  getProjectsRegistryPath,
217
- getSelectedTrajectoryEvents,
198
+ getSelectedTraceArtifactEvents,
218
199
  getSubagentsRoot,
219
200
  getTextContent,
220
201
  getTraceEnvelopeSummary,
@@ -302,7 +283,6 @@ import {
302
283
  subscribeToPiLogEntries,
303
284
  substituteVariables,
304
285
  toCamelCaseDeep,
305
- toNormalizedTrajectoryWire,
306
286
  toSnakeCaseDeep,
307
287
  toTraceArtifactWire,
308
288
  toTraceEnvelopeWire,
@@ -316,6 +296,7 @@ import {
316
296
  traceEnvelopeToTraceArtifact,
317
297
  traceEnvelopeToTraceSummary,
318
298
  traceEnvelopeToTranscriptMessages,
299
+ traceFromTraceArtifact,
319
300
  traceFromTranscriptJsonLines,
320
301
  traceToTranscriptJsonLines,
321
302
  trackChild,
@@ -324,7 +305,7 @@ import {
324
305
  writeArtifactsFromResults,
325
306
  writeInitialBenchmarkArtifact,
326
307
  writePerTestArtifacts
327
- } from "./chunk-ENHX2CCS.js";
308
+ } from "./chunk-QCF3LUI7.js";
328
309
  import "./chunk-NPVGBFF6.js";
329
310
  import "./chunk-M7BUKBAF.js";
330
311
  import "./chunk-5H446C7X.js";
@@ -346,23 +327,6 @@ export {
346
327
  GraderRegistry,
347
328
  LatencyGrader,
348
329
  LlmGrader,
349
- NORMALIZED_REDACTION_LEVELS,
350
- NORMALIZED_TOOL_STATUSES,
351
- NORMALIZED_TRACE_EVENT_TYPES,
352
- NORMALIZED_TRACE_SOURCE_KINDS,
353
- NORMALIZED_TRAJECTORY_SCHEMA_VERSION,
354
- NormalizedRawEvidenceWireSchema,
355
- NormalizedRedactionStateWireSchema,
356
- NormalizedTraceBranchWireSchema,
357
- NormalizedTraceErrorWireSchema,
358
- NormalizedTraceEventWireSchema,
359
- NormalizedTraceMessageWireSchema,
360
- NormalizedTraceModelWireSchema,
361
- NormalizedTraceSessionWireSchema,
362
- NormalizedTraceSourceRefWireSchema,
363
- NormalizedTraceSourceWireSchema,
364
- NormalizedTraceToolWireSchema,
365
- NormalizedTrajectoryWireSchema,
366
330
  OtelStreamingObserver,
367
331
  OtelTraceExporter,
368
332
  OtlpJsonFileExporter,
@@ -380,7 +344,6 @@ export {
380
344
  TEST_MESSAGE_ROLES,
381
345
  TRACE_EVENT_TYPES,
382
346
  TRACE_REDACTION_LEVELS,
383
- TRACE_SCHEMA_VERSION,
384
347
  TRACE_SOURCE_KINDS,
385
348
  TRACE_TOOL_STATUSES,
386
349
  TemplateNotDirectoryError,
@@ -445,7 +408,7 @@ export {
445
408
  cleanupWorkspace,
446
409
  commitAndPushResultsBranch,
447
410
  computeTraceSummary,
448
- computeTraceSummaryFromTrajectory,
411
+ computeTraceSummaryFromTraceArtifact,
449
412
  computeWorkspaceFingerprint,
450
413
  consumeClaudeLogEntries,
451
414
  consumeCodexLogEntries,
@@ -499,7 +462,6 @@ export {
499
462
  formatReplayLookupKey,
500
463
  formatToolCalls,
501
464
  freeformEvaluationSchema,
502
- fromNormalizedTrajectoryWire,
503
465
  fromTraceArtifactWire,
504
466
  fromTraceEnvelopeWire,
505
467
  generateRubrics,
@@ -513,7 +475,7 @@ export {
513
475
  getResultsRepoLocalPaths,
514
476
  getResultsRepoStatus,
515
477
  getResultsRepoSyncStatus,
516
- getSelectedTrajectoryEvents,
478
+ getSelectedTraceArtifactEvents,
517
479
  getSubagentsRoot,
518
480
  getTextContent,
519
481
  getTraceEnvelopeSummary,
@@ -622,7 +584,6 @@ export {
622
584
  syncResultsRepo,
623
585
  syncResultsRepoForProject,
624
586
  toCamelCaseDeep,
625
- toNormalizedTrajectoryWire,
626
587
  toSnakeCaseDeep,
627
588
  toTraceArtifactWire,
628
589
  toTraceEnvelopeWire,
@@ -636,6 +597,7 @@ export {
636
597
  traceEnvelopeToTraceArtifact,
637
598
  traceEnvelopeToTraceSummary,
638
599
  traceEnvelopeToTranscriptMessages,
600
+ traceFromTraceArtifact,
639
601
  traceFromTranscriptJsonLines,
640
602
  traceToTranscriptJsonLines,
641
603
  trackChild,
@@ -648,4 +610,4 @@ export {
648
610
  writeInitialBenchmarkArtifact,
649
611
  writePerTestArtifacts
650
612
  };
651
- //# sourceMappingURL=dist-X5P5IR65.js.map
613
+ //# sourceMappingURL=dist-FDVFAGRG.js.map
package/dist/index.js CHANGED
@@ -4,13 +4,13 @@ import {
4
4
  preprocessArgv,
5
5
  runCli,
6
6
  usesDeprecatedStudioAlias
7
- } from "./chunk-LXXMQSAR.js";
8
- import "./chunk-JQ6XRG7X.js";
9
- import "./chunk-A4J456KS.js";
10
- import "./chunk-Z45FKRMJ.js";
7
+ } from "./chunk-P7YRPQFD.js";
8
+ import "./chunk-YO5PBZOH.js";
9
+ import "./chunk-VBEWRK44.js";
10
+ import "./chunk-XDE2ZRII.js";
11
11
  import "./chunk-76FOHROU.js";
12
12
  import "./chunk-BPGJ4HBU.js";
13
- import "./chunk-ENHX2CCS.js";
13
+ import "./chunk-QCF3LUI7.js";
14
14
  import "./chunk-NPVGBFF6.js";
15
15
  import "./chunk-M7BUKBAF.js";
16
16
  import "./chunk-5H446C7X.js";
@@ -7,16 +7,16 @@ import {
7
7
  findRepoRoot,
8
8
  getCategories,
9
9
  runEvalCommand
10
- } from "./chunk-JQ6XRG7X.js";
11
- import "./chunk-A4J456KS.js";
12
- import "./chunk-Z45FKRMJ.js";
10
+ } from "./chunk-YO5PBZOH.js";
11
+ import "./chunk-VBEWRK44.js";
12
+ import "./chunk-XDE2ZRII.js";
13
13
  import "./chunk-76FOHROU.js";
14
14
  import "./chunk-BPGJ4HBU.js";
15
15
  import {
16
16
  getAgentvConfigDir,
17
17
  listTargetNames,
18
18
  readTargetDefinitions
19
- } from "./chunk-ENHX2CCS.js";
19
+ } from "./chunk-QCF3LUI7.js";
20
20
  import "./chunk-NPVGBFF6.js";
21
21
  import "./chunk-M7BUKBAF.js";
22
22
  import "./chunk-5H446C7X.js";
@@ -360,4 +360,4 @@ ${ANSI_DIM}Retrying execution errors...${ANSI_RESET}
360
360
  export {
361
361
  launchInteractiveWizard
362
362
  };
363
- //# sourceMappingURL=interactive-OPSG4MPD.js.map
363
+ //# sourceMappingURL=interactive-ITOKDIDQ.js.map
@@ -47,7 +47,7 @@ tests:
47
47
 
48
48
  ```typescript
49
49
  // judges/codex-skill-trigger.ts
50
- import { defineCodeGrader } from '@agentv/eval';
50
+ import { defineCodeGrader } from '@agentv/sdk';
51
51
 
52
52
  export default defineCodeGrader(({ output }) => {
53
53
  const skillName = 'csv-analyzer';
@@ -172,9 +172,9 @@ Same as contains variants but explicitly case-insensitive.
172
172
  #### `code-grader`
173
173
 
174
174
  - **Fields:** `path` (string, required — path to script), `command` (string[], optional — custom command)
175
- - **Script SDK:** Use `defineCodeGrader` from `@agentv/eval`:
175
+ - **Script SDK:** Use `defineCodeGrader` from `@agentv/sdk`:
176
176
  ```typescript
177
- import { defineCodeGrader } from '@agentv/eval';
177
+ import { defineCodeGrader } from '@agentv/sdk';
178
178
  export default defineCodeGrader(({ output, trace }) => ({
179
179
  score: (output ?? '').includes('expected') ? 1 : 0,
180
180
  assertions: [{ text: 'Contains expected', passed: (output ?? '').includes('expected') }],
@@ -377,7 +377,7 @@ See docs at https://agentv.dev/graders/code-graders/
377
377
  ```
378
378
  Variables: `{{criteria}}`, `{{input}}`, `{{expected_output}}`, `{{output}}`, `{{metadata}}`, `{{metadata_json}}`, `{{rubrics}}`, `{{rubrics_json}}`, `{{file_changes}}`, `{{tool_calls}}`
379
379
  - Markdown templates: use `{{variable}}` syntax
380
- - TypeScript templates: use `definePromptTemplate(fn)` from `@agentv/eval`, receives context object with all variables + `config`
380
+ - TypeScript templates: use `definePromptTemplate(fn)` from `@agentv/sdk`, receives context object with all variables + `config`
381
381
  - Use `target:` to run different `llm-grader` graders against different named LLM targets in the same eval (useful for grader panels / ensembles)
382
382
 
383
383
  ### composite
@@ -569,12 +569,12 @@ agentv validate <file.yaml>
569
569
 
570
570
  ## Code Judge SDK
571
571
 
572
- Use `@agentv/eval` to build custom graders in TypeScript/JavaScript:
572
+ Use `@agentv/sdk` to build custom graders in TypeScript/JavaScript:
573
573
 
574
574
  ### defineAssertion (recommended for custom checks)
575
575
  ```typescript
576
576
  #!/usr/bin/env bun
577
- import { defineAssertion } from '@agentv/eval';
577
+ import { defineAssertion } from '@agentv/sdk';
578
578
 
579
579
  export default defineAssertion(({ output, trace }) => {
580
580
  const finalOutput = output ?? '';
@@ -590,7 +590,7 @@ Assertions support both `pass: boolean` and `score: number` (0-1). If only `pass
590
590
  ### defineCodeGrader (full control)
591
591
  ```typescript
592
592
  #!/usr/bin/env bun
593
- import { defineCodeGrader } from '@agentv/eval';
593
+ import { defineCodeGrader } from '@agentv/sdk';
594
594
 
595
595
  export default defineCodeGrader(({ output, trace }) => {
596
596
  const finalOutput = output ?? '';
@@ -52,7 +52,7 @@
52
52
  ## SDK Functions
53
53
 
54
54
  ```typescript
55
- import { defineCodeGrader, createTargetClient, definePromptTemplate } from '@agentv/eval';
55
+ import { defineCodeGrader, createTargetClient, definePromptTemplate } from '@agentv/sdk';
56
56
  ```
57
57
 
58
58
  - `defineCodeGrader(fn)` - Wraps evaluation function with stdin/stdout handling
@@ -92,7 +92,7 @@ if __name__ == "__main__":
92
92
 
93
93
  ```typescript
94
94
  #!/usr/bin/env bun
95
- import { defineCodeGrader } from '@agentv/eval';
95
+ import { defineCodeGrader } from '@agentv/sdk';
96
96
 
97
97
  export default defineCodeGrader(({ output, criteria }) => {
98
98
  const candidate = output ?? '';
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
2
2
  import {
3
3
  loadTsEvalFile,
4
4
  loadTsEvalSuite
5
- } from "./chunk-ENHX2CCS.js";
5
+ } from "./chunk-QCF3LUI7.js";
6
6
  import "./chunk-NPVGBFF6.js";
7
7
  import "./chunk-M7BUKBAF.js";
8
8
  import "./chunk-5H446C7X.js";
@@ -10,4 +10,4 @@ export {
10
10
  loadTsEvalFile,
11
11
  loadTsEvalSuite
12
12
  };
13
- //# sourceMappingURL=ts-eval-loader-ZVL6CGTE-TZYZX3QS.js.map
13
+ //# sourceMappingURL=ts-eval-loader-UPFWPMQO-SKZNUXPB.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentv",
3
- "version": "4.41.1",
3
+ "version": "4.41.4",
4
4
  "description": "CLI entry point for AgentV",
5
5
  "type": "module",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/eval/artifact-writer.ts","../src/commands/eval/task-bundle.ts","../src/utils/case-conversion.ts"],"sourcesContent":["import path from 'node:path';\n\nimport {\n type AdditionalResultArtifactsWriter,\n type AggregateGradingArtifact,\n type BenchmarkArtifact,\n type EvalTest,\n type EvaluationResult,\n type GradingArtifact,\n type IndexArtifactEntry,\n RESULT_INDEX_FILENAME,\n type ResultIndexArtifact,\n type TimingArtifact,\n aggregateRunDir,\n buildAggregateGradingArtifact,\n buildBenchmarkArtifact,\n buildIndexArtifactEntry as buildCoreIndexArtifactEntry,\n buildResultIndexArtifact as buildCoreResultIndexArtifact,\n buildGradingArtifact,\n buildTestTargetKey,\n buildTimingArtifact,\n deduplicateByTestIdTarget,\n parseJsonlResults,\n writeArtifacts,\n writeArtifactsFromResults as writeCoreArtifactsFromResults,\n writePerTestArtifacts as writeCorePerTestArtifacts,\n writeInitialBenchmarkArtifact,\n} from '@agentv/core';\nimport type { TargetDefinition } from '@agentv/core';\n\nimport {\n type MaterializedTaskBundlePaths,\n type TaskBundleTargetSelection,\n materializeTaskBundle,\n} from './task-bundle.js';\n\nexport {\n aggregateRunDir,\n buildAggregateGradingArtifact,\n buildBenchmarkArtifact,\n buildGradingArtifact,\n buildTestTargetKey,\n buildTimingArtifact,\n deduplicateByTestIdTarget,\n parseJsonlResults,\n RESULT_INDEX_FILENAME,\n writeArtifacts,\n writeInitialBenchmarkArtifact,\n};\nexport type {\n AggregateGradingArtifact,\n BenchmarkArtifact,\n GradingArtifact,\n IndexArtifactEntry,\n ResultIndexArtifact,\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 'task_dir' | 'eval_path' | 'targets_path' | 'files_path' | 'graders_path'\n> {\n if (!taskBundle) {\n return {};\n }\n return {\n task_dir: toRelativeArtifactPath(outputDir, taskBundle.taskDir),\n eval_path: toRelativeArtifactPath(outputDir, taskBundle.evalPath),\n targets_path: toRelativeArtifactPath(outputDir, taskBundle.targetsPath),\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 artifactDir?: string;\n gradingPath: string;\n timingPath: string;\n outputPath?: string;\n answerPath?: string;\n transcriptPath?: string;\n inputPath?: 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).artifact_dir ?? '').trim();\n const extraIndexFields = taskBundle\n ? {\n task_dir: path.posix.join(artifactSubdir, 'task'),\n eval_path: path.posix.join(artifactSubdir, 'task', 'EVAL.yaml'),\n targets_path: path.posix.join(artifactSubdir, 'task', 'targets.yaml'),\n ...(taskBundle.filesPath\n ? { files_path: path.posix.join(artifactSubdir, 'task', 'files') }\n : {}),\n ...(taskBundle.gradersPath\n ? { graders_path: path.posix.join(artifactSubdir, 'task', 'graders') }\n : {}),\n }\n : undefined;\n return buildCoreResultIndexArtifact(result, extraIndexFields);\n}\n\nfunction targetSelectionKey(evalFileAbsolutePath: string | undefined, targetName: string): string {\n return `${evalFileAbsolutePath ? path.resolve(evalFileAbsolutePath) : ''}::${targetName}`;\n}\n\nfunction buildTargetSelectionMap(\n selections: readonly TaskBundleTargetSelection[] | undefined,\n): Map<string, TaskBundleTargetSelection> {\n const targets = new Map<string, TaskBundleTargetSelection>();\n for (const selection of selections ?? []) {\n targets.set(\n targetSelectionKey(selection.evalFileAbsolutePath, selection.targetName),\n selection,\n );\n if (selection.resolvedTargetName) {\n targets.set(\n targetSelectionKey(selection.evalFileAbsolutePath, selection.resolvedTargetName),\n selection,\n );\n }\n if (!selection.evalFileAbsolutePath) {\n targets.set(targetSelectionKey(undefined, selection.targetName), selection);\n if (selection.resolvedTargetName) {\n targets.set(targetSelectionKey(undefined, selection.resolvedTargetName), selection);\n }\n }\n }\n return targets;\n}\n\nfunction findTargetSelection(\n result: EvaluationResult,\n test: EvalTest | undefined,\n targets: ReadonlyMap<string, TaskBundleTargetSelection>,\n): TaskBundleTargetSelection | undefined {\n const targetName = result.target ?? 'unknown';\n const evalFileAbsolutePath = test?.source?.evalFileAbsolutePath;\n return (\n targets.get(targetSelectionKey(evalFileAbsolutePath, targetName)) ??\n targets.get(targetSelectionKey(undefined, targetName))\n );\n}\n\nfunction createTaskBundleArtifactsWriter(options?: {\n cwd?: string;\n repoRoot?: string;\n taskBundleTargets?: readonly TaskBundleTargetSelection[];\n}): AdditionalResultArtifactsWriter | undefined {\n const targetSelections = buildTargetSelectionMap(options?.taskBundleTargets);\n if (targetSelections.size === 0) {\n return undefined;\n }\n\n return async ({ outputDir, result, sourceTest, testDir }) => {\n const targetSelection = findTargetSelection(result, sourceTest, targetSelections);\n if (!sourceTest || !targetSelection) {\n return undefined;\n }\n\n const taskBundle = await materializeTaskBundle({\n test: sourceTest,\n targetName: targetSelection.targetName,\n targetDefinitions: targetSelection.definitions as readonly TargetDefinition[],\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 cwd?: string;\n repoRoot?: string;\n sourceTests?: readonly EvalTest[];\n taskBundleTargets?: readonly TaskBundleTargetSelection[];\n },\n): Promise<void> {\n await writeCorePerTestArtifacts(results, outputDir, {\n experiment: options?.experiment,\n sourceTests: options?.sourceTests,\n additionalArtifacts: createTaskBundleArtifactsWriter(options),\n });\n}\n\nexport async function writeArtifactsFromResults(\n results: readonly EvaluationResult[],\n outputDir: string,\n options?: {\n evalFile?: string;\n experiment?: string;\n plannedTestCount?: number;\n cwd?: string;\n repoRoot?: string;\n sourceTests?: readonly EvalTest[];\n taskBundleTargets?: readonly TaskBundleTargetSelection[];\n },\n): Promise<{\n testArtifactDir: string;\n timingPath: string;\n benchmarkPath: string;\n indexPath: string;\n}> {\n return writeCoreArtifactsFromResults(results, outputDir, {\n evalFile: options?.evalFile,\n experiment: options?.experiment,\n plannedTestCount: options?.plannedTestCount,\n sourceTests: options?.sourceTests,\n additionalArtifacts: createTaskBundleArtifactsWriter(options),\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 EvalSourceReference,\n type EvalTest,\n type TargetDefinition,\n parseYamlValue,\n} from '@agentv/core';\nimport { stringify as stringifyYaml } from 'yaml';\n\nimport { toSnakeCaseDeep } from '../../utils/case-conversion.js';\n\nconst TASK_DIRNAME = 'task';\nconst TASK_EVAL_FILENAME = 'EVAL.yaml';\nconst TASK_TARGETS_FILENAME = 'targets.yaml';\nconst TASK_FILES_DIRNAME = 'files';\nconst TASK_GRADERS_DIRNAME = 'graders';\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]);\n\nexport interface TaskBundleTargetSelection {\n readonly evalFileAbsolutePath?: string;\n readonly targetName: string;\n readonly resolvedTargetName?: string;\n readonly definitions: readonly TargetDefinition[];\n}\n\nexport interface MaterializeTaskBundleOptions {\n readonly test: EvalTest;\n readonly targetName: string;\n readonly targetDefinitions: readonly TargetDefinition[];\n readonly outputDir: string;\n readonly cwd?: string;\n readonly repoRoot?: string;\n}\n\nexport interface MaterializedTaskBundlePaths {\n readonly taskDir: string;\n readonly evalPath: string;\n readonly targetsPath: string;\n readonly filesPath?: string;\n readonly gradersPath?: string;\n}\n\ninterface CopiedReference {\n readonly reference: EvalSourceReference;\n readonly localPath: string;\n readonly destinationPath: 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: EvalSourceReference,\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(reference: EvalSourceReference): 'files' | 'graders' {\n return reference.kind === 'input_file' ? TASK_FILES_DIRNAME : 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: EvalSourceReference): boolean {\n if (reference.kind !== 'code_grader_cwd') {\n return true;\n }\n return !path.isAbsolute(reference.displayPath);\n}\n\nasync function copyReference(\n reference: EvalSourceReference,\n taskDir: string,\n options: Pick<MaterializeTaskBundleOptions, 'cwd' | 'repoRoot'>,\n): Promise<CopiedReference | undefined> {\n if (!reference.resolvedPath) {\n return undefined;\n }\n\n const relPath = relativeReferencePath(reference, options);\n if (!relPath) {\n return undefined;\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 undefined;\n }\n\n if (sourceStat.isDirectory()) {\n if (!shouldCopyDirectory(reference)) {\n return undefined;\n }\n if (!(await copyDirectory(sourcePath, destinationPath))) {\n return undefined;\n }\n } else if (sourceStat.isFile()) {\n if (!(await copyFileRedactingText(sourcePath, destinationPath))) {\n return undefined;\n }\n } else {\n return undefined;\n }\n\n return { reference, localPath: localPath.split(path.sep).join('/'), destinationPath };\n}\n\nasync function copyReferences(\n references: readonly EvalSourceReference[],\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\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 !== 'evaluators'),\n );\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 {\n ...withoutLegacyAssertionKeys(testCase),\n assertions: graderDefinitions.map((grader) =>\n rewritePathsDeep(toSnakeCaseDeep(grader.definition), rewrites),\n ),\n };\n }\n return testCase;\n}\n\nfunction targetReferenceNames(target: TargetDefinition): readonly string[] {\n const references: string[] = [];\n for (const key of ['use_target', 'grader_target', 'judge_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 targetName: string,\n definitions: readonly TargetDefinition[],\n): readonly TargetDefinition[] {\n const byName = new Map(definitions.map((definition) => [definition.name, definition]));\n const selected: TargetDefinition[] = [];\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(targetName);\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(copied: readonly CopiedReference[], bucket: 'files' | 'graders'): boolean {\n return copied.some((entry) => entry.localPath.startsWith(`${bucket}/`));\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 targets 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 targetDefinitions = selectTargetDefinitions(options.targetName, options.targetDefinitions);\n if (targetDefinitions.length === 0) {\n return undefined;\n }\n\n const taskDir = path.join(options.outputDir, TASK_DIRNAME);\n await mkdir(taskDir, { recursive: true });\n\n const copiedReferences = await copyReferences(options.test.source.references, taskDir, options);\n const rewrites = buildPathRewrites(copiedReferences);\n const evalCase = buildEvalCase(options.test, rewrites);\n const evalPath = path.join(taskDir, TASK_EVAL_FILENAME);\n const targetsPath = path.join(taskDir, TASK_TARGETS_FILENAME);\n\n await writeYamlFile(evalPath, {\n execution: { target: options.targetName },\n tests: [evalCase],\n });\n await writeYamlFile(targetsPath, { targets: targetDefinitions });\n\n return {\n taskDir,\n evalPath,\n targetsPath,\n ...(hasCopiedBucket(copiedReferences, 'files')\n ? { filesPath: path.join(taskDir, TASK_FILES_DIRNAME) }\n : {}),\n ...(hasCopiedBucket(copiedReferences, 'graders')\n ? { gradersPath: path.join(taskDir, TASK_GRADERS_DIRNAME) }\n : {}),\n };\n}\n","/**\n * Converts a camelCase string to snake_case.\n * Examples:\n * testId -> test_id\n * outputText -> output_text\n * conversationId -> conversation_id\n *\n * Note: Keys that start with an uppercase letter are treated as proper nouns\n * and returned unchanged (e.g., \"Read\", \"Edit\" for tool names).\n */\nfunction toSnakeCase(str: string): string {\n // Don't convert keys that start with uppercase (proper nouns/tool names)\n if (/^[A-Z]/.test(str)) {\n return str;\n }\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n}\n\n/**\n * Recursively converts all keys in an object from camelCase to snake_case.\n * This is used to convert TypeScript internal representations to snake_case\n * for Python ecosystem compatibility in JSONL output files.\n *\n * Conversion rules:\n * - Object keys: camelCase -> snake_case\n * - Array elements: recursively converted\n * - Primitives: returned unchanged\n * - null/undefined: returned unchanged\n *\n * @param obj - The object to convert (can be any JSON-serializable value)\n * @returns A new object with all keys converted to snake_case\n */\nexport function toSnakeCaseDeep(obj: unknown): unknown {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => toSnakeCaseDeep(item));\n }\n\n if (typeof obj === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const snakeKey = toSnakeCase(key);\n result[snakeKey] = toSnakeCaseDeep(value);\n }\n return result;\n }\n\n return obj;\n}\n"],"mappings":"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","names":["path","path","buildIndexArtifactEntry","buildResultIndexArtifact","writePerTestArtifacts","writeArtifactsFromResults"]}