diff --git a/src/events/index.ts b/src/events/index.ts index 3f283b6..ce81964 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -29,6 +29,10 @@ export type { TaskDispatchedEvent, TaskCompletedEvent, TaskBlockedEvent, + MergeQueuedEvent, + MergeStartedEvent, + MergeCompletedEvent, + MergeConflictedEvent, DomainEventMap, DomainEventType, } from './types.js'; diff --git a/src/events/types.ts b/src/events/types.ts index e8a1bd9..8bf9d20 100644 --- a/src/events/types.ts +++ b/src/events/types.ts @@ -228,6 +228,51 @@ export interface TaskBlockedEvent extends DomainEvent { }; } +/** + * Merge Coordination Events + */ + +export interface MergeQueuedEvent extends DomainEvent { + type: 'merge:queued'; + payload: { + taskId: string; + agentId: string; + worktreeId: string; + priority: 'low' | 'medium' | 'high'; + }; +} + +export interface MergeStartedEvent extends DomainEvent { + type: 'merge:started'; + payload: { + taskId: string; + agentId: string; + worktreeId: string; + targetBranch: string; + }; +} + +export interface MergeCompletedEvent extends DomainEvent { + type: 'merge:completed'; + payload: { + taskId: string; + agentId: string; + worktreeId: string; + targetBranch: string; + }; +} + +export interface MergeConflictedEvent extends DomainEvent { + type: 'merge:conflicted'; + payload: { + taskId: string; + agentId: string; + worktreeId: string; + targetBranch: string; + conflictingFiles: string[]; + }; +} + /** * Union of all domain events - enables type-safe event handling */ @@ -250,7 +295,11 @@ export type DomainEventMap = | TaskQueuedEvent | TaskDispatchedEvent | TaskCompletedEvent - | TaskBlockedEvent; + | TaskBlockedEvent + | MergeQueuedEvent + | MergeStartedEvent + | MergeCompletedEvent + | MergeConflictedEvent; /** * Event type literal union for type checking