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:
@@ -29,6 +29,10 @@ export type {
|
|||||||
TaskDispatchedEvent,
|
TaskDispatchedEvent,
|
||||||
TaskCompletedEvent,
|
TaskCompletedEvent,
|
||||||
TaskBlockedEvent,
|
TaskBlockedEvent,
|
||||||
|
MergeQueuedEvent,
|
||||||
|
MergeStartedEvent,
|
||||||
|
MergeCompletedEvent,
|
||||||
|
MergeConflictedEvent,
|
||||||
DomainEventMap,
|
DomainEventMap,
|
||||||
DomainEventType,
|
DomainEventType,
|
||||||
} from './types.js';
|
} from './types.js';
|
||||||
|
|||||||
@@ -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
|
* Union of all domain events - enables type-safe event handling
|
||||||
*/
|
*/
|
||||||
@@ -250,7 +295,11 @@ export type DomainEventMap =
|
|||||||
| TaskQueuedEvent
|
| TaskQueuedEvent
|
||||||
| TaskDispatchedEvent
|
| TaskDispatchedEvent
|
||||||
| TaskCompletedEvent
|
| TaskCompletedEvent
|
||||||
| TaskBlockedEvent;
|
| TaskBlockedEvent
|
||||||
|
| MergeQueuedEvent
|
||||||
|
| MergeStartedEvent
|
||||||
|
| MergeCompletedEvent
|
||||||
|
| MergeConflictedEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event type literal union for type checking
|
* Event type literal union for type checking
|
||||||
|
|||||||
Reference in New Issue
Block a user