feat(04-02): add agent lifecycle events to events module
- AgentSpawnedEvent for new agent creation - AgentStoppedEvent with reason (user_requested, task_complete, error, waiting_for_input) - AgentCrashedEvent for unexpected failures - AgentResumedEvent for session resumption - AgentWaitingEvent when agent pauses on AskUserQuestion - Updated DomainEventMap union with all agent events
This commit is contained in:
@@ -20,6 +20,11 @@ export type {
|
||||
WorktreeRemovedEvent,
|
||||
WorktreeMergedEvent,
|
||||
WorktreeConflictEvent,
|
||||
AgentSpawnedEvent,
|
||||
AgentStoppedEvent,
|
||||
AgentCrashedEvent,
|
||||
AgentResumedEvent,
|
||||
AgentWaitingEvent,
|
||||
DomainEventMap,
|
||||
DomainEventType,
|
||||
} from './types.js';
|
||||
|
||||
@@ -132,6 +132,61 @@ export interface WorktreeConflictEvent extends DomainEvent {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Agent Events
|
||||
*/
|
||||
|
||||
export interface AgentSpawnedEvent extends DomainEvent {
|
||||
type: 'agent:spawned';
|
||||
payload: {
|
||||
agentId: string;
|
||||
name: string;
|
||||
taskId: string;
|
||||
worktreeId: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface AgentStoppedEvent extends DomainEvent {
|
||||
type: 'agent:stopped';
|
||||
payload: {
|
||||
agentId: string;
|
||||
name: string;
|
||||
taskId: string;
|
||||
reason: 'user_requested' | 'task_complete' | 'error' | 'waiting_for_input';
|
||||
};
|
||||
}
|
||||
|
||||
export interface AgentCrashedEvent extends DomainEvent {
|
||||
type: 'agent:crashed';
|
||||
payload: {
|
||||
agentId: string;
|
||||
name: string;
|
||||
taskId: string;
|
||||
error: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface AgentResumedEvent extends DomainEvent {
|
||||
type: 'agent:resumed';
|
||||
payload: {
|
||||
agentId: string;
|
||||
name: string;
|
||||
taskId: string;
|
||||
sessionId: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface AgentWaitingEvent extends DomainEvent {
|
||||
type: 'agent:waiting';
|
||||
payload: {
|
||||
agentId: string;
|
||||
name: string;
|
||||
taskId: string;
|
||||
sessionId: string;
|
||||
question: string; // The question being asked
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Union of all domain events - enables type-safe event handling
|
||||
*/
|
||||
@@ -145,7 +200,12 @@ export type DomainEventMap =
|
||||
| WorktreeCreatedEvent
|
||||
| WorktreeRemovedEvent
|
||||
| WorktreeMergedEvent
|
||||
| WorktreeConflictEvent;
|
||||
| WorktreeConflictEvent
|
||||
| AgentSpawnedEvent
|
||||
| AgentStoppedEvent
|
||||
| AgentCrashedEvent
|
||||
| AgentResumedEvent
|
||||
| AgentWaitingEvent;
|
||||
|
||||
/**
|
||||
* Event type literal union for type checking
|
||||
|
||||
Reference in New Issue
Block a user