UNPKG

crewai-ts

Version:

TypeScript port of crewAI for agent-based workflows

110 lines 2.91 kB
/** * RPM Controller implementation * Optimized for efficient rate limiting with minimal overhead */ /** * Options for configuring RPM Controller behavior */ export interface RPMControllerOptions { /** * Maximum requests per minute * @default 60 */ maxRPM?: number; /** * Whether to use token bucket algorithm (more precise but higher overhead) * @default true */ useTokenBucket?: boolean; /** * Size of the token bucket (only relevant if useTokenBucket is true) * @default Same as maxRPM */ bucketSize?: number; /** * Whether to track request durations for analytics * @default false */ trackRequestDurations?: boolean; /** * Whether to dynamically adjust rates based on service responses * @default false */ adaptiveRateLimit?: boolean; /** * Optional logger instance for RPM Controller events */ logger?: { info: (msg: string) => void; warn: (msg: string) => void; }; } /** * RPMController class for efficient API rate limiting * Optimized for: * - Precise rate management with token bucket algorithm * - Non-blocking waiting with Promise-based design * - Efficient time tracking with minimal overhead */ export declare class RPMController { private maxRPM; private useTokenBucket; private bucketSize; private trackRequestDurations; private adaptiveRateLimit; private logger?; private requestTimestamps; private requestDurations; private tokens; private lastRefillTime; private requestQueue; private isProcessingQueue; private consecutiveThrottles; constructor(options?: RPMControllerOptions); /** * Check if a request is within the rate limit * If not, wait until it is */ checkOrWait(priority?: number): Promise<void>; /** * Track a completed request */ trackRequestCompleted(durationMs?: number): void; /** * Track a throttled request */ trackThrottled(): void; /** * Get current RPM based on recent activity */ getCurrentRPM(): number; /** * Get average request duration (if tracking is enabled) */ getAverageRequestDuration(): number | null; /** * Check or wait using token bucket algorithm */ private checkOrWaitTokenBucket; /** * Check or wait using fixed window algorithm */ private checkOrWaitFixedWindow; /** * Refill tokens in the token bucket based on elapsed time */ private refillTokens; /** * Clean up request timestamps older than 1 minute */ private cleanupOldRequests; /** * Process the request queue */ private processQueue; /** * Calculate wait time before processing the next request */ private calculateWaitTime; } //# sourceMappingURL=rpmController.d.ts.map