From 1ca871e4339af05b3f38be8b5ce85f866677e5da Mon Sep 17 00:00:00 2001 From: Jeremy Schoemaker Date: Mon, 24 Aug 2026 06:07:48 -0500 Subject: [PATCH] fix(elements): render empty-string tool output in ToolOutput The ToolOutput guard !(output || errorText) treats every falsy output as absent, so a tool that legitimately returns an empty string (reading an empty file, a search with no matches) renders nothing at all. Hide only when output is nullish and there is no error text; empty string, 0, and false now render as results. --- packages/elements/__tests__/tool.test.tsx | 36 +++++++++++++++++++++++ packages/elements/src/tool.tsx | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/packages/elements/__tests__/tool.test.tsx b/packages/elements/__tests__/tool.test.tsx index a7225762..97279525 100644 --- a/packages/elements/__tests__/tool.test.tsx +++ b/packages/elements/__tests__/tool.test.tsx @@ -250,4 +250,40 @@ describe("toolOutput", () => { ); expect(screen.getByText("Result")).toBeInTheDocument(); }); + + it("renders empty-string output", () => { + render( + + + + ); + expect(screen.getByText("Result")).toBeInTheDocument(); + }); + + it("renders zero output", () => { + render( + + + + ); + expect(screen.getByText("Result")).toBeInTheDocument(); + }); + + it("renders false output", () => { + render( + + + + ); + expect(screen.getByText("Result")).toBeInTheDocument(); + }); + + it("renders nothing when output is null", () => { + const { container } = render( + + + + ); + expect(container.textContent).toBe(""); + }); }); diff --git a/packages/elements/src/tool.tsx b/packages/elements/src/tool.tsx index 9a22010e..77928c85 100644 --- a/packages/elements/src/tool.tsx +++ b/packages/elements/src/tool.tsx @@ -138,7 +138,7 @@ export const ToolOutput = ({ errorText, ...props }: ToolOutputProps) => { - if (!(output || errorText)) { + if ((output === undefined || output === null) && !errorText) { return null; }