/** * ResourceLimiter Entity * * Manages and enforces resource limits for agent operations. * Prevents runaway operations by tracking API calls, tokens, time, etc. * * @see TSK-FR-001〜006 - ResourceLimiter * @see REQ-FR-060〜063 - ResourceLimiter * @trace DES-MUSUBIX-FR-001 DES-ORCH-002 */ import { type ResourceUsage, type ResourceLimitCheckResult, type ResourceLimiterConfig } from '../value-objects/ResourceLimits.js'; /** * Resource Limiter Interface */ export interface IResourceLimiter { /** Check if current usage is within limits */ checkLimits(): ResourceLimitCheckResult; /** Record an API call */ recordApiCall(): void; /** Record tokens consumed */ recordTokens(count: number): void; /** Record a file operation */ recordFileOperation(): void; /** Record execution time */ recordExecutionTime(ms: number): void; /** Start tracking a concurrent operation */ startConcurrentOperation(): void; /** End tracking a concurrent operation */ endConcurrentOperation(): void; /** Get current usage snapshot */ getUsage(): ResourceUsage; /** Get formatted usage report */ getUsageReport(): string; /** Reset all usage counters */ reset(): void; } /** * Resource Limiter Implementation * * Tracks resource usage and enforces limits to prevent runaway operations. * * @example * ```typescript * const limiter = createResourceLimiter(); * * limiter.recordApiCall(); * limiter.recordTokens(1500); * * const result = limiter.checkLimits(); * if (!result.withinLimits) { * console.error('Resource limits exceeded:', result.exceededLimits); * } * ``` */ export declare class ResourceLimiter implements IResourceLimiter { private readonly limits; private readonly warningThreshold; private readonly throwOnExceeded; private apiCalls; private tokensUsed; private executionTimeMs; private concurrentOperations; private fileOperations; private lastUpdated; constructor(config?: ResourceLimiterConfig); /** * Check if current usage is within limits */ checkLimits(): ResourceLimitCheckResult; /** * Record an API call */ recordApiCall(): void; /** * Record tokens consumed */ recordTokens(count: number): void; /** * Record a file operation */ recordFileOperation(): void; /** * Record execution time */ recordExecutionTime(ms: number): void; /** * Start tracking a concurrent operation */ startConcurrentOperation(): void; /** * End tracking a concurrent operation */ endConcurrentOperation(): void; /** * Get current usage snapshot */ getUsage(): ResourceUsage; /** * Get formatted usage report */ getUsageReport(): string; /** * Reset all usage counters */ reset(): void; private checkResource; private percentage; private updateTimestamp; } /** * Create a ResourceLimiter instance * * @param config - Optional configuration * @returns IResourceLimiter instance */ export declare function createResourceLimiter(config?: ResourceLimiterConfig): IResourceLimiter; //# sourceMappingURL=ResourceLimiter.d.ts.map