/** * Built-in Plugin: Smart Retry * * Smart retry with exponential backoff for flaky tests. * Wraps the existing retry logic with plugin hooks. */ import type { AgentProbePlugin } from '../plugins'; import type { TestResult } from '../types'; import { type BackoffStrategy, type RetryableError } from '../retry'; export interface SmartRetryConfig { /** Max retries per test (default: 3) */ maxRetries?: number; /** Initial delay in ms (default: 1000) */ initialDelay?: number; /** Backoff strategy (default: exponential) */ backoff?: BackoffStrategy; /** Only retry on these error types */ retryOn?: RetryableError[]; /** Never retry on these error types */ skipOn?: RetryableError[]; /** Maximum total retry time per test in ms */ maxRetryTime?: number; /** Jitter factor (0-1) to add randomness to delays */ jitter?: number; } export interface RetryRecord { testName: string; attempts: number; errorType: RetryableError; delays: number[]; finalPassed: boolean; } export declare class SmartRetryTracker { private records; readonly config: SmartRetryConfig; constructor(config?: SmartRetryConfig); computeDelay(attempt: number): number; shouldRetry(result: TestResult, attempt: number): boolean; recordRetry(testName: string, attempts: number, errorType: RetryableError, delays: number[], passed: boolean): void; getRecords(): RetryRecord[]; getFlakyTests(): RetryRecord[]; reset(): void; formatReport(): string; } /** * Create the smart-retry plugin instance. */ export declare function createRetryPlugin(config?: SmartRetryConfig): AgentProbePlugin & { retryTracker: SmartRetryTracker; }; export default createRetryPlugin; //# sourceMappingURL=retry.d.ts.map