/** * Dead Letter Queue (DLQ) for failed workflow nodes * * Features: * - Multiple storage backends (memory, file) * - Failed node tracking with full context * - Retry capability * - Expiration/cleanup * - Query and filtering */ import type { DeadLetterEntry, WorkflowState } from '@cogitator-ai/types'; /** * Extended dead letter entry (alias for DeadLetterEntry, for backwards compat) */ export type ExtendedDeadLetterEntry = DeadLetterEntry; /** * DLQ query filters */ export interface DLQFilters { workflowId?: string; workflowName?: string; nodeId?: string; minAttempts?: number; maxAttempts?: number; createdAfter?: number; createdBefore?: number; tags?: string[]; limit?: number; offset?: number; } /** * Abstract DLQ implementation */ export declare abstract class BaseDLQ { abstract add(entry: DeadLetterEntry): Promise; abstract get(id: string): Promise; abstract list(filters?: DLQFilters): Promise; abstract retry(id: string): Promise; abstract remove(id: string): Promise; abstract count(filters?: DLQFilters): Promise; abstract clear(): Promise; } /** * In-memory Dead Letter Queue */ export declare class InMemoryDLQ extends BaseDLQ { private entries; private defaultTTL; private maxSize; private cleanupInterval?; constructor(options?: { defaultTTL?: number; cleanupIntervalMs?: number; maxSize?: number; }); add(entry: DeadLetterEntry): Promise; get(id: string): Promise; list(filters?: DLQFilters): Promise; retry(id: string): Promise; remove(id: string): Promise; count(filters?: DLQFilters): Promise; clear(): Promise; /** * Cleanup expired entries */ private cleanup; /** * Stop cleanup interval */ destroy(): void; } /** * File-based Dead Letter Queue */ export declare class FileDLQ extends BaseDLQ { private directory; private defaultTTL; private initialized; constructor(directory: string, options?: { defaultTTL?: number; }); private ensureInitialized; private getFilePath; add(entry: DeadLetterEntry): Promise; get(id: string): Promise; list(filters?: DLQFilters): Promise; retry(id: string): Promise; remove(id: string): Promise; count(filters?: DLQFilters): Promise; clear(): Promise; } /** * Create DLQ entry from error */ export declare function createDLQEntry(nodeId: string, workflowId: string, workflowName: string, state: WorkflowState, error: Error, options?: { input?: unknown; attempts?: number; maxAttempts?: number; tags?: string[]; metadata?: Record; }): DeadLetterEntry; /** * Create an in-memory DLQ */ export declare function createInMemoryDLQ(options?: { defaultTTL?: number; cleanupIntervalMs?: number; maxSize?: number; }): InMemoryDLQ; /** * Create a file-based DLQ */ export declare function createFileDLQ(directory: string, options?: { defaultTTL?: number; }): FileDLQ; //# sourceMappingURL=dead-letter.d.ts.map