/** * Coherence Scheduler & Economic Governor * * Detects drift in agent behavior and enforces resource budgets. * * CoherenceScheduler: * - Computes a coherence score from violation rate, rework, and intent drift * - Maps scores to privilege levels (full, restricted, read-only, suspended) * - Tracks score history and provides human-readable recommendations * * EconomicGovernor: * - Tracks token usage, tool calls, storage, and time * - Checks budgets and emits alerts when thresholds are crossed * - Estimates remaining capacity and costs * * @module @claude-flow/guidance/coherence */ import type { RunEvent, OptimizationMetrics } from './types.js'; /** * Coherence score computed from recent run metrics and events */ export interface CoherenceScore { /** Overall coherence (0-1, 1 = perfectly coherent) */ overall: number; /** Violation component (0-1, lower violations = higher score) */ violationComponent: number; /** Rework component (0-1, lower rework = higher score) */ reworkComponent: number; /** Drift component (0-1, consistent intents = higher score) */ driftComponent: number; /** Timestamp when this score was computed */ timestamp: number; /** Number of events evaluated in the window */ windowSize: number; } /** * Thresholds for privilege level determination */ export interface CoherenceThresholds { /** Below this overall score the agent is restricted to read-only */ readOnlyThreshold: number; /** Below this overall score warnings are emitted */ warningThreshold: number; /** Above this overall score the agent has full privileges */ healthyThreshold: number; /** Above this overall score privilege escalation is allowed */ privilegeEscalationThreshold: number; } /** * Privilege level derived from a coherence score */ export type PrivilegeLevel = 'full' | 'restricted' | 'read-only' | 'suspended'; /** * Budget usage breakdown across all tracked dimensions */ export interface BudgetUsage { tokens: { used: number; limit: number; percentage: number; }; toolCalls: { used: number; limit: number; percentage: number; }; storage: { usedBytes: number; limitBytes: number; percentage: number; }; time: { usedMs: number; limitMs: number; percentage: number; }; cost: { totalUsd: number; limitUsd: number; percentage: number; }; } export interface CoherenceSchedulerConfig { thresholds?: Partial; windowSize?: number; checkIntervalMs?: number; } /** * Computes coherence scores from run metrics and events, determines privilege * levels, and provides recommendations when drift is detected. */ export declare class CoherenceScheduler { private readonly thresholds; private readonly windowSize; private readonly checkIntervalMs; private readonly scoreHistory; private static readonly MAX_HISTORY; constructor(config?: CoherenceSchedulerConfig); /** * Compute a coherence score from optimization metrics and recent events. * * Components: * - violationComponent: 1 - (violationRate / 10) clamped to [0, 1] * - reworkComponent: 1 - (reworkLines / 100) clamped to [0, 1] * - driftComponent: intent consistency (fewer unique intents relative to window = higher) * - overall: weighted average (0.4 * violation + 0.3 * rework + 0.3 * drift) */ computeCoherence(metrics: OptimizationMetrics, recentEvents: RunEvent[]): CoherenceScore; /** * Determine the privilege level from a coherence score. * * - overall >= healthyThreshold (0.7): 'full' * - overall >= warningThreshold (0.5): 'restricted' * - overall >= readOnlyThreshold (0.3): 'read-only' * - below readOnlyThreshold: 'suspended' */ getPrivilegeLevel(score: CoherenceScore): PrivilegeLevel; /** * Return the last 100 coherence scores (most recent last). */ getScoreHistory(): CoherenceScore[]; /** * Whether the score indicates healthy coherence. */ isHealthy(score: CoherenceScore): boolean; /** * Whether the score indicates drift (below warning threshold). */ isDrifting(score: CoherenceScore): boolean; /** * Whether the score warrants restricting agent actions. */ shouldRestrict(score: CoherenceScore): boolean; /** * Produce a human-readable recommendation based on the coherence score. */ getRecommendation(score: CoherenceScore): string; /** * Get the configured check interval in milliseconds. */ get interval(): number; /** * Get the configured thresholds. */ getThresholds(): CoherenceThresholds; } export interface EconomicGovernorConfig { tokenLimit?: number; toolCallLimit?: number; storageLimit?: number; timeLimit?: number; costPerToken?: number; costPerToolCall?: number; costLimit?: number; } interface ToolCallRecord { toolName: string; durationMs: number; timestamp: number; } /** * Tracks resource consumption (tokens, tool calls, storage, time, cost) * and enforces budget limits with alerts. */ export declare class EconomicGovernor { private readonly config; private tokensUsed; private toolCallsUsed; private storageUsed; private readonly toolCallLog; private readonly startTime; private periodStart; private static readonly ALERT_THRESHOLDS; constructor(config?: EconomicGovernorConfig); /** * Record token consumption. */ recordTokenUsage(count: number): void; /** * Record a tool call with its name and duration. */ recordToolCall(toolName: string, durationMs: number): void; /** * Record storage usage in bytes. */ recordStorageUsage(bytes: number): void; /** * Check whether current usage is within budget limits. * Returns a summary with alerts for any limits that are near or exceeded. */ checkBudget(): { withinBudget: boolean; usage: BudgetUsage; alerts: string[]; }; /** * Get a full usage summary across all tracked dimensions. */ getUsageSummary(): BudgetUsage; /** * Reset all counters for a new billing/tracking period. */ resetPeriod(): void; /** * Estimate remaining capacity before hitting limits. */ estimateRemainingCapacity(): { tokensRemaining: number; callsRemaining: number; timeRemainingMs: number; }; /** * Compute a cost estimate with a breakdown by category. */ getCostEstimate(): { totalCost: number; breakdown: Record; }; /** * Get the raw tool call log. */ getToolCallLog(): ReadonlyArray; } /** * Create a CoherenceScheduler with optional configuration. */ export declare function createCoherenceScheduler(config?: CoherenceSchedulerConfig): CoherenceScheduler; /** * Create an EconomicGovernor with optional configuration. */ export declare function createEconomicGovernor(config?: EconomicGovernorConfig): EconomicGovernor; export {}; //# sourceMappingURL=coherence.d.ts.map