UNPKG

@ai2070/l0

Version:

L0: The Missing Reliability Substrate for AI

91 lines 2.53 kB
export interface ErrorTypeDelays { connectionDropped?: number; fetchError?: number; econnreset?: number; econnrefused?: number; sseAborted?: number; noBytes?: number; partialChunks?: number; runtimeKilled?: number; backgroundThrottle?: number; dnsError?: number; timeout?: number; unknown?: number; } export interface RetryConfig { attempts: number; maxRetries?: number; baseDelay: number; maxDelay?: number; backoff: BackoffStrategy; retryOn: RetryReason[]; errorTypeDelays?: ErrorTypeDelays; maxErrorHistory?: number; } export type RetryReason = "zero_output" | "guardrail_violation" | "drift" | "unknown" | "incomplete" | "network_error" | "timeout" | "rate_limit" | "server_error"; export type BackoffStrategy = "exponential" | "linear" | "fixed" | "full-jitter" | "fixed-jitter"; export declare const RETRY_DEFAULTS: { readonly attempts: 3; readonly maxRetries: 6; readonly baseDelay: 1000; readonly maxDelay: 10000; readonly networkMaxDelay: 30000; readonly backoff: "fixed-jitter"; readonly retryOn: RetryReason[]; }; export declare const ERROR_TYPE_DELAY_DEFAULTS: Required<ErrorTypeDelays>; export declare enum ErrorCategory { NETWORK = "network", TRANSIENT = "transient", MODEL = "model", CONTENT = "content", PROVIDER = "provider", FATAL = "fatal", INTERNAL = "internal" } export interface RetryState { attempt: number; networkRetryCount: number; transientRetries: number; lastError?: CategorizedError; errorHistory: CategorizedError[]; totalDelay: number; limitReached: boolean; } export interface CategorizedError { error: Error; category: ErrorCategory; reason: RetryReason; countsTowardLimit: boolean; retryable: boolean; timestamp: number; statusCode?: number; } export interface BackoffResult { delay: number; cappedAtMax: boolean; rawDelay: number; } export interface RetryDecision { shouldRetry: boolean; delay: number; reason: string; category: ErrorCategory; countsTowardLimit: boolean; } export interface ErrorClassification { isNetwork: boolean; isRateLimit: boolean; isServerError: boolean; isTimeout: boolean; isAuthError: boolean; isClientError: boolean; statusCode?: number; } export interface RetryContext { state: RetryState; config: RetryConfig; error: CategorizedError; backoff: BackoffResult; } //# sourceMappingURL=retry.d.ts.map