import { describe, expect, it } from "vitest"; import { isBillingErrorMessage } from "./pi-embedded-helpers.js"; import { DEFAULT_AGENTS_FILENAME } from "./workspace.js"; const _makeFile = (overrides: Partial): WorkspaceBootstrapFile => ({ name: DEFAULT_AGENTS_FILENAME, path: "/tmp/AGENTS.md", content: "", missing: false, ...overrides, }); describe("isBillingErrorMessage", () => { it("matches credit / payment failures", () => { const samples = [ "Your credit balance is too low to access the Anthropic API.", "insufficient credits", "Payment Required", "HTTP 402 Payment Required", "plans & billing", "billing: please upgrade your plan", ]; for (const sample of samples) { expect(isBillingErrorMessage(sample)).toBe(true); } }); it("ignores unrelated errors", () => { expect(isBillingErrorMessage("rate limit exceeded")).toBe(false); expect(isBillingErrorMessage("invalid api key")).toBe(false); expect(isBillingErrorMessage("context length exceeded")).toBe(false); }); });