From 5d73b83a2162913236e2f577dc19259c09bc6745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E7=B6=A0BG?= Date: Fri, 31 Jul 2026 22:51:09 +0800 Subject: [PATCH] fix(eve): report evals without agent output to Braintrust MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 墨綠BG --- .changeset/braintrust-empty-output.md | 5 ++++ .../evals/runner/reporters/braintrust.test.ts | 28 +++++++++++++++++++ .../src/evals/runner/reporters/braintrust.ts | 2 +- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 .changeset/braintrust-empty-output.md diff --git a/.changeset/braintrust-empty-output.md b/.changeset/braintrust-empty-output.md new file mode 100644 index 000000000..9006e1f2b --- /dev/null +++ b/.changeset/braintrust-empty-output.md @@ -0,0 +1,5 @@ +--- +"eve": patch +--- + +Prevent Braintrust reporting from stopping an eval run when a case produces no agent output. diff --git a/packages/eve/src/evals/runner/reporters/braintrust.test.ts b/packages/eve/src/evals/runner/reporters/braintrust.test.ts index a70421659..0dcf6ba9a 100644 --- a/packages/eve/src/evals/runner/reporters/braintrust.test.ts +++ b/packages/eve/src/evals/runner/reporters/braintrust.test.ts @@ -199,4 +199,32 @@ describe("Braintrust", () => { }), ); }); + + it("logs evals that produce no agent output", async () => { + const reporter = Braintrust(makeConfig()); + await reporter.onRunStart([makeEval()], makeTarget()); + + braintrustMocks.log.mockImplementationOnce((event: { output?: unknown }) => { + if (event.output === null || event.output === undefined) { + throw new Error("output must be specified"); + } + }); + + const result = makeEvalResult(); + const resultWithoutOutput: EveEvalResult = { + ...result, + result: { + ...result.result, + output: null, + finalMessage: null, + }, + }; + + expect(() => reporter.onEvalComplete(resultWithoutOutput)).not.toThrow(); + expect(braintrustMocks.log).toHaveBeenCalledWith( + expect.objectContaining({ + output: "", + }), + ); + }); }); diff --git a/packages/eve/src/evals/runner/reporters/braintrust.ts b/packages/eve/src/evals/runner/reporters/braintrust.ts index 2b611cde6..9b46ab6bd 100644 --- a/packages/eve/src/evals/runner/reporters/braintrust.ts +++ b/packages/eve/src/evals/runner/reporters/braintrust.ts @@ -175,7 +175,7 @@ class BraintrustReporter implements EvalReporter { this.#experiment.log({ id: result.id, input: evaluation?.description ?? "", - output: result.result.output, + output: result.result.output ?? "", error: result.error ?? undefined, scores, metadata,