From ce763e6ec93fc654891b379c429b3e5680bbce01 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Wed, 17 Jun 2026 09:45:11 +0800 Subject: [PATCH] refactor(agents): hide provider error metadata extractor --- src/agents/provider-http-errors.test.ts | 21 +++++++-------------- src/agents/provider-http-errors.ts | 2 +- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/agents/provider-http-errors.test.ts b/src/agents/provider-http-errors.test.ts index e741eb0679f3..4f8de3485964 100644 --- a/src/agents/provider-http-errors.test.ts +++ b/src/agents/provider-http-errors.test.ts @@ -3,8 +3,8 @@ import { describe, expect, it } from "vitest"; import { assertOkOrThrowProviderError, assertOkOrThrowHttpError, + createProviderHttpError, extractProviderErrorDetail, - extractProviderErrorInfo, extractProviderRequestId, ProviderHttpError, readProviderBinaryResponse, @@ -124,19 +124,8 @@ describe("provider error utils", () => { }, ); - const info = await extractProviderErrorInfo(response.clone()); - expect(info).toMatchObject({ - code: "insufficient_quota", - type: "rate_limit_error", - requestId: "req_456", - }); - expect(info.detail).toContain("Quota exceeded"); - expect(info.body).toContain("Quota exceeded"); - expect(info.body).not.toContain("sk-secret1234567890abcd"); - - await expect( - assertOkOrThrowProviderError(response, "Provider API error"), - ).rejects.toMatchObject({ + const error = await createProviderHttpError(response, "Provider API error"); + expect(error).toMatchObject({ name: "ProviderHttpError", status: 429, statusCode: 429, @@ -145,6 +134,10 @@ describe("provider error utils", () => { errorType: "rate_limit_error", requestId: "req_456", } satisfies Partial); + const providerError = error as ProviderHttpError; + expect(providerError.message).toContain("Quota exceeded"); + expect(providerError.errorBody).toContain("Quota exceeded"); + expect(providerError.errorBody).not.toContain("sk-secret1234567890abcd"); }); it("keeps legacy HTTP status formatting while sharing provider parsing", async () => { diff --git a/src/agents/provider-http-errors.ts b/src/agents/provider-http-errors.ts index 7f6489a1a0ef..f33c0d80deef 100644 --- a/src/agents/provider-http-errors.ts +++ b/src/agents/provider-http-errors.ts @@ -154,7 +154,7 @@ type ProviderHttpErrorInfo = { }; /** Extracts normalized provider error metadata while keeping the raw body bounded and redacted. */ -export async function extractProviderErrorInfo(response: Response): Promise { +async function extractProviderErrorInfo(response: Response): Promise { const rawBody = trimToUndefined(await readResponseTextLimited(response).catch(() => "")); const requestId = extractProviderRequestId(response); if (!rawBody) {