/** * Trigger Manager * * Central management for all workflow triggers (cron, webhook, event). * Coordinates trigger registration, firing, and lifecycle. */ import type { WorkflowTrigger, TriggerContext, TriggerManager as ITriggerManager, CronTriggerConfig, WebhookTriggerConfig, EventTriggerConfig, Workflow, WorkflowState } from '@cogitator-ai/types'; import { type WebhookRequest } from './webhook-trigger.js'; /** * Trigger store interface */ export interface TriggerStore { save(trigger: WorkflowTrigger): Promise; get(id: string): Promise; update(id: string, updates: Partial): Promise; delete(id: string): Promise; list(workflowName?: string): Promise; listEnabled(): Promise; listByType(type: 'cron' | 'webhook' | 'event'): Promise; } /** * In-memory trigger store */ export declare class InMemoryTriggerStore implements TriggerStore { private triggers; save(trigger: WorkflowTrigger): Promise; get(id: string): Promise; update(id: string, updates: Partial): Promise; delete(id: string): Promise; list(workflowName?: string): Promise; listEnabled(): Promise; listByType(type: 'cron' | 'webhook' | 'event'): Promise; clear(): void; } /** * Event emitter for triggers */ export interface TriggerEventEmitter { emit(eventType: string, payload: unknown): void; on(eventType: string, callback: (payload: unknown) => void): () => void; } /** * Simple event emitter implementation */ export declare class SimpleTriggerEventEmitter implements TriggerEventEmitter { private listeners; emit(eventType: string, payload: unknown): void; on(eventType: string, callback: (payload: unknown) => void): () => void; clear(): void; } /** * Trigger manager configuration */ export interface TriggerManagerConfig { store?: TriggerStore; eventEmitter?: TriggerEventEmitter; onTriggerFire?: (trigger: WorkflowTrigger, context: TriggerContext) => Promise; } /** * Default trigger manager implementation */ export declare class DefaultTriggerManager implements ITriggerManager { private store; private eventEmitter; private cronExecutor; private webhookExecutor; private triggerCallbacks; private eventListeners; private config; private _started; constructor(config?: TriggerManagerConfig); /** * Start the trigger manager */ start(): void; /** * Stop the trigger manager */ stop(): void; /** * Check if the manager is running */ get isRunning(): boolean; /** * Register a trigger */ register(trigger: Omit): Promise; /** * Unregister a trigger */ unregister(id: string): Promise; /** * Enable a trigger */ enable(id: string): Promise; /** * Disable a trigger */ disable(id: string): Promise; /** * Get a trigger */ get(id: string): Promise; /** * List triggers */ list(workflowName?: string): Promise; /** * List enabled triggers */ listEnabled(): Promise; /** * Manually fire a trigger */ fire(id: string, partialContext?: Partial): Promise; /** * Subscribe to trigger events */ onTrigger(callback: (trigger: WorkflowTrigger, context: TriggerContext) => void): () => void; /** * Handle incoming webhook request */ handleWebhook(request: WebhookRequest): Promise; /** * Emit an event (for event triggers) */ emitEvent(eventType: string, payload: unknown): void; /** * Register a workflow with triggers */ registerWorkflow(workflow: Workflow, triggers: { type: 'cron' | 'webhook' | 'event'; config: CronTriggerConfig | WebhookTriggerConfig | EventTriggerConfig; }[]): Promise; /** * Get trigger stats */ getStats(): Promise<{ total: number; enabled: number; byType: Record; totalFired: number; totalErrors: number; }>; /** * Dispose the manager */ dispose(): void; private registerEventTrigger; } /** * Create a trigger manager */ export declare function createTriggerManager(config?: TriggerManagerConfig): DefaultTriggerManager; /** * Helper to create a cron trigger config */ export declare function cronTrigger(expression: string, options?: Partial>): CronTriggerConfig; /** * Helper to create a webhook trigger config */ export declare function webhookTrigger(path: string, method?: WebhookTriggerConfig['method'], options?: Partial>): WebhookTriggerConfig; /** * Helper to create an event trigger config */ export declare function eventTrigger(eventType: string, options?: Partial>): EventTriggerConfig; //# sourceMappingURL=trigger-manager.d.ts.map