/** * EmitBridge — forwards footprintjs emits whose name starts with a given * prefix to the EventDispatcher, enriched with EventMeta. * * Pattern: Adapter (GoF) + Pipes & Filters (Hohpe & Woolf, 2003). * Role: Single reusable translation layer for every "pass-through" * prefix recorder (StreamRecorder, AgentRecorder, and any * future domain whose events are emitted via typedEmit()). * Emits: Any event whose name matches `prefix` — type derived from the * emit name and validated by the consumer's EventMap subscription. */ import type { CombinedRecorder, EmitEvent } from 'footprintjs'; import type { EventDispatcher } from '../../events/dispatcher.js'; import { type RunContext } from '../../bridge/eventMeta.js'; export interface EmitBridgeOptions { readonly dispatcher: EventDispatcher; /** Recorder id — must be unique among attached recorders. */ readonly id: string; /** * Event-name prefix(es) this bridge forwards (e.g. * 'agentfootprint.stream.'). An array forwards any event matching ANY * of them — used when one source domain spans two event families * (`agentfootprint.fallback.` + `agentfootprint.error.`), or to match * exact full event names rather than a whole domain. */ readonly prefix: string | readonly string[]; readonly getRunContext: () => RunContext; } export declare class EmitBridge implements CombinedRecorder { readonly id: string; private readonly dispatcher; private readonly prefixes; private readonly getRunContext; constructor(options: EmitBridgeOptions); onEmit(event: EmitEvent): void; }