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,
|
WorktreeRemovedEvent,
|
||||||
WorktreeMergedEvent,
|
WorktreeMergedEvent,
|
||||||
WorktreeConflictEvent,
|
WorktreeConflictEvent,
|
||||||
|
AgentSpawnedEvent,
|
||||||
|
AgentStoppedEvent,
|
||||||
|
AgentCrashedEvent,
|
||||||
|
AgentResumedEvent,
|
||||||
|
AgentWaitingEvent,
|
||||||
DomainEventMap,
|
DomainEventMap,
|
||||||
DomainEventType,
|
DomainEventType,
|
||||||
} from './types.js';
|
} 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
|
* Union of all domain events - enables type-safe event handling
|
||||||
*/
|
*/
|
||||||
@@ -145,7 +200,12 @@ export type DomainEventMap =
|
|||||||
| WorktreeCreatedEvent
|
| WorktreeCreatedEvent
|
||||||
| WorktreeRemovedEvent
|
| WorktreeRemovedEvent
|
||||||
| WorktreeMergedEvent
|
| WorktreeMergedEvent
|
||||||
| WorktreeConflictEvent;
|
| WorktreeConflictEvent
|
||||||
|
| AgentSpawnedEvent
|
||||||
|
| AgentStoppedEvent
|
||||||
|
| AgentCrashedEvent
|
||||||
|
| AgentResumedEvent
|
||||||
|
| AgentWaitingEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event type literal union for type checking
|
* Event type literal union for type checking
|
||||||
|
|||||||
Reference in New Issue
Block a user