feat(06-01): add coordination domain events for merge lifecycle

- MergeQueuedEvent: completed task queued for merge
- MergeStartedEvent: merge attempt begins
- MergeCompletedEvent: merge succeeds
- MergeConflictedEvent: merge has conflicts (triggers bounce-back)
This commit is contained in:
Lukas May
2026-01-30 21:03:02 +01:00
parent 22572f410f
commit 94130a6661
2 changed files with 54 additions and 1 deletions

View File

@@ -29,6 +29,10 @@ export type {
TaskDispatchedEvent,
TaskCompletedEvent,
TaskBlockedEvent,
MergeQueuedEvent,
MergeStartedEvent,
MergeCompletedEvent,
MergeConflictedEvent,
DomainEventMap,
DomainEventType,
} from './types.js';

View File

@@ -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