/** * Per-agent runtime budget enforcement. * * Tracks turns, tool failures, requests, and tokens per session for each agent * and enforces configurable limits with warning thresholds and stop policies. */ import type { AgentBudget, Logger } from '../types'; export type BudgetViolation = 'max_turns' | 'max_tool_failures' | 'max_requests' | 'max_tokens'; export type StopPolicy = 'warn' | 'stop' | 'warn_then_stop'; export interface BudgetState { turns: number; toolFailures: number; requests: number; tokensUsed: number; } export interface BudgetCheckResult { allowed: boolean; violations: BudgetViolation[]; warnings: BudgetViolation[]; detail: string; } export declare class AgentBudgetEnforcer { private budgets; private states; private logger; private stopPolicy; constructor(logger: Logger, stopPolicy?: StopPolicy); /** * Register an agent's budget configuration. */ configure(agentName: string, budget: AgentBudget): void; /** * Get the current state for an agent in a session. */ getState(key: string): BudgetState; /** * Get the state for a specific agent + session pair. */ getStateFor(agentName: string, sessionId: string): BudgetState; /** * Get the configured budget for an agent (or null if unconfigured). */ getBudget(agentName: string): AgentBudget | null; /** * Record a turn for the agent. */ recordTurn(agentName: string, sessionId: string): BudgetCheckResult; /** * Record a tool failure. */ recordToolFailure(agentName: string, sessionId: string): BudgetCheckResult; /** * Record a request. */ recordRequest(agentName: string, sessionId: string): BudgetCheckResult; /** * Record token usage. */ recordTokens(agentName: string, sessionId: string, tokens: number): BudgetCheckResult; /** * Reset budget state for a session (e.g. on session reset / new turn). */ resetSession(agentName: string, sessionId: string): void; /** * Reset per-turn counters (tool failures, requests) while keeping session-level ones. */ resetTurn(agentName: string, sessionId: string): void; /** * Check budget without recording anything. */ checkBudget(agentName: string, sessionId: string): BudgetCheckResult; private ensureState; private check; private resolveAllowed; } //# sourceMappingURL=agent-budget.d.ts.map