From 92237ccbcc54f8877cb8bbfbe205c19abf53d819 Mon Sep 17 00:00:00 2001 From: miguel Date: Fri, 21 Aug 2026 10:58:45 -0700 Subject: [PATCH] feat(evals): OTEL agent spans for claude_code/codex harnesses --- packages/evals/framework/benchHarness.ts | 63 +++++++++++++++--------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/packages/evals/framework/benchHarness.ts b/packages/evals/framework/benchHarness.ts index 7541f6dc52..7f21c473b5 100644 --- a/packages/evals/framework/benchHarness.ts +++ b/packages/evals/framework/benchHarness.ts @@ -11,6 +11,7 @@ import { import { runCodexAgent } from "./codexRunner.js"; import { prepareCodexToolAdapter, type PreparedCodexToolAdapter } from "./codexToolAdapter.js"; import { buildExternalHarnessTaskPlan } from "./externalHarnessPlan.js"; +import { withHarnessAgentSpan } from "./otel.js"; import type { DiscoveredTask, TaskResult } from "./types.js"; import type { BenchMatrixRow, BenchTaskKind, Harness } from "./benchTypes.js"; @@ -160,18 +161,27 @@ export const claudeCodeHarness: BenchHarness = { plan, logger, }); - return await runClaudeCodeAgent({ - plan, - model: input.modelName, - logger, - toolAdapter, - signal, - verifier: { - v3: carrierV3, - taskSpec: buildExternalHarnessTaskSpec(plan, input), - dataset: plan.dataset, + return await withHarnessAgentSpan( + { + harness: "claude_code", + model: input.modelName, + task: input.name, + instruction: plan.instruction, }, - }); + () => + runClaudeCodeAgent({ + plan, + model: input.modelName, + logger, + toolAdapter, + signal, + verifier: { + v3: carrierV3, + taskSpec: buildExternalHarnessTaskSpec(plan, input), + dataset: plan.dataset, + }, + }), + ); } finally { await toolAdapter?.cleanup(); // Deregister the never-init()-ed carrier (instance registry, event @@ -209,18 +219,27 @@ export const codexHarness: BenchHarness = { plan, logger, }); - return await runCodexAgent({ - plan, - model: input.modelName, - logger, - toolAdapter, - signal, - verifier: { - v3: carrierV3, - taskSpec: buildExternalHarnessTaskSpec(plan, input), - dataset: plan.dataset, + return await withHarnessAgentSpan( + { + harness: "codex", + model: input.modelName, + task: input.name, + instruction: plan.instruction, }, - }); + () => + runCodexAgent({ + plan, + model: input.modelName, + logger, + toolAdapter, + signal, + verifier: { + v3: carrierV3, + taskSpec: buildExternalHarnessTaskSpec(plan, input), + dataset: plan.dataset, + }, + }), + ); } finally { await toolAdapter?.cleanup(); // Deregister the never-init()-ed carrier (instance registry, event