/** * ADR-330 — Adaptive Pheromone Swarm Consensus. * * This is a scheduling eligibility layer, not an agent terminator. It learns a * bounded EMA signal per agent, compares agents against role-local baselines, * and may suspend them from future dispatch. Coordinators and other protected * roles remain eligible, quorum is never crossed, pruning per round is capped, * and exploration periodically reactivates a suspended agent. */ export declare const APSC_SCHEMA = "ruflo.apsc-state/v1"; export interface ApscConfig { alpha: number; beta: number; gamma: number; emaDecay: number; pruningFactor: number; reactivationThreshold: number; minActiveAgents: number; minSamples: number; maxSuspendFraction: number; explorationRate: number; dryRun: boolean; protectedRoles: string[]; } export interface ApscAgentState { agentId: string; role: string; status: 'active' | 'suspended'; samples: number; rawScore: number; normalizedScore: number; emaScore: number; lastUpdatedAt: string; lastDecision?: 'keep' | 'would-suspend' | 'suspend' | 'reactivate' | 'explore'; } export interface ApscState { schemaVersion: typeof APSC_SCHEMA; config: ApscConfig; round: number; threshold: number; roleBaselines: Record; agents: Record; } export interface ApscSignal { agentId: string; role: string; taskSuccess: number; normalizedLatency: number; consensusAlignment: number; } export interface ApscDecision { agentId: string; score: number; normalizedScore: number; emaScore: number; threshold: number; action: 'keep' | 'would-suspend' | 'suspend' | 'reactivate' | 'explore'; applied: boolean; reason: string; activeAgents: number; suspendedAgents: number; } export declare const DEFAULT_APSC_CONFIG: ApscConfig; export declare function normalizeApscConfig(input?: Partial): ApscConfig; export declare function createApscState(config?: Partial): ApscState; export declare function recordApscSignal(current: ApscState, signal: ApscSignal, now?: number): { state: ApscState; decision: ApscDecision; }; export declare function isApscAgentEligible(state: ApscState | undefined, agentId: string): boolean; //# sourceMappingURL=pheromone-adaptive.d.ts.map