import { z } from "zod"; const ERROR_CODES = [ "UNAUTHENTICATED", "AUTH_CONFIG_MISSING", "PAYMENT_REQUIRED", "INSUFFICIENT_CREDITS", "FORBIDDEN", "NOT_FOUND", "AUDIT_CAPACITY_REACHED", "VALIDATION_ERROR", "CRAWL_TARGET_BLOCKED", "BACKLINKS_NOT_ENABLED", "BACKLINKS_BILLING_ISSUE", "AI_SEARCH_NOT_ENABLED", "AI_SEARCH_BILLING_ISSUE", "RATE_LIMITED", "UPSTREAM_UNAVAILABLE", "CONFLICT", "INTERNAL_ERROR", ] as const; export const errorCodeSchema = z.enum(ERROR_CODES); export type ErrorCode = z.infer; const NON_REPORTABLE_ERROR_CODES = new Set([ "UNAUTHENTICATED", "NOT_FOUND", "PAYMENT_REQUIRED", "INSUFFICIENT_CREDITS", "VALIDATION_ERROR", ]); export function isErrorCode(value: string): value is ErrorCode { return errorCodeSchema.safeParse(value).success; } export function shouldCaptureAppErrorCode( code: ErrorCode | null | undefined, ): boolean { return code == null || !NON_REPORTABLE_ERROR_CODES.has(code); }