/** * Events Module - Public API * * Exports the EventBus port interface and EventEmitter adapter. * All modules should import from this index file. */ // Port interface (what consumers depend on) export type { EventBus, DomainEvent } from './types.js'; // Domain event types export type { ProcessSpawnedEvent, ProcessStoppedEvent, ProcessCrashedEvent, ServerStartedEvent, ServerStoppedEvent, LogEntryEvent, WorktreeCreatedEvent, WorktreeRemovedEvent, WorktreeMergedEvent, WorktreeConflictEvent, AgentSpawnedEvent, AgentStoppedEvent, AgentCrashedEvent, AgentResumedEvent, AgentAccountSwitchedEvent, AgentDeletedEvent, AgentWaitingEvent, AgentOutputEvent, TaskQueuedEvent, TaskDispatchedEvent, TaskCompletedEvent, TaskBlockedEvent, PhaseQueuedEvent, PhaseStartedEvent, PhaseCompletedEvent, PhaseBlockedEvent, PhasePendingReviewEvent, PhaseChangesRequestedEvent, PhaseMergedEvent, TaskMergedEvent, MergeQueuedEvent, MergeStartedEvent, MergeCompletedEvent, MergeConflictedEvent, PageCreatedEvent, PageUpdatedEvent, PageDeletedEvent, AccountCredentialsRefreshedEvent, AccountCredentialsExpiredEvent, AccountCredentialsValidatedEvent, InitiativePendingReviewEvent, InitiativeReviewApprovedEvent, InitiativeChangesRequestedEvent, DomainEventMap, DomainEventType, } from './types.js'; // Adapter implementation export { EventEmitterBus } from './bus.js'; // Factory function for creating event bus instances import { EventEmitterBus } from './bus.js'; import type { EventBus } from './types.js'; /** * Create a new EventBus instance. * * Returns the default in-process EventEmitter adapter. * This factory allows swapping implementations without changing call sites. */ export function createEventBus(): EventBus { return new EventEmitterBus(); }