diff --git a/src/errors.test.ts b/src/errors.test.ts index 6c3e501..bd91d83 100644 --- a/src/errors.test.ts +++ b/src/errors.test.ts @@ -94,6 +94,25 @@ describe("toAIFriendlyError", () => { expect(result.message).toContain("Retry"); }); + it("handles 403 Forbidden errors with subscription guidance", () => { + const result = toAIFriendlyError( + new Error("Request failed with status 403"), + ); + + expect(result.code).toBe("AUTH_ERROR"); + expect(result.message).toContain("Pro subscription required"); + expect(result.message).toContain("pro.talent.app/pricing"); + expect(result.message).toContain("billing status"); + }); + + it("handles Pro organization required errors with subscription guidance", () => { + const result = toAIFriendlyError(new Error("Pro organization required")); + + expect(result.code).toBe("AUTH_ERROR"); + expect(result.message).toContain("Pro subscription required"); + expect(result.message).toContain("pro.talent.app/pricing"); + }); + it("returns UNKNOWN_ERROR for unrecognized errors", () => { const result = toAIFriendlyError( new Error("Something unexpected happened"), diff --git a/src/errors.ts b/src/errors.ts index a5566c3..aa398eb 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -56,7 +56,8 @@ export function toAIFriendlyError(error: unknown): { }; if (msg.includes("403") || msg.includes("Pro organization required")) return { - message: "Pro organization required. Your account may not have access.", + message: + "Pro subscription required. Subscribe at https://pro.talent.app/pricing or check your organization's billing status.", code: "AUTH_ERROR", }; if (msg.includes("rate_limit"))