/** * Rate Limiting & Automatic Retry * * This module provides: * - Token bucket rate limiter for API calls * - Automatic retry with exponential backoff * - Provider wrapper combining both features * * @example * ```typescript * import { * createRateLimiter, * withRetry, * wrapWithRateLimit, * RetryPresets, * ProviderRateLimits, * } from '@compilr-dev/agents'; * * // Use rate limiter directly * const limiter = createRateLimiter({ * requestsPerMinute: 60, * tokensPerMinute: 100000, * }); * * // Wrap existing provider * const provider = createClaudeProvider(); * const rateLimited = wrapWithRateLimit(provider, { * rateLimit: ProviderRateLimits.claude.tier1, * retry: RetryPresets.respectful(), * }); * * // Use with retry only * const result = await withRetry( * () => someApiCall(), * { maxRetries: 3, baseDelayMs: 1000 } * ); * ``` * * @module rate-limit */ export type { RateLimiterConfig, RateLimiterStats, RetryConfig, RateLimitRetryConfig, AcquireResult, RateLimiter, } from './types.js'; export { RateLimitExceededError, isRateLimitExceededError } from './types.js'; export { TokenBucketRateLimiter, createRateLimiter, createNoopRateLimiter } from './limiter.js'; export { withRetry, createRetryWithRateLimit, RetryPresets, RetryStats } from './retry.js'; export { RateLimitedProvider, wrapWithRateLimit, ProviderRateLimits } from './provider-wrapper.js';