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:
Lukas May
2026-01-30 19:59:37 +01:00
parent eec5f1398e
commit ddc6f3b4e7
2 changed files with 66 additions and 1 deletions

View File

@@ -20,6 +20,11 @@ export type {
WorktreeRemovedEvent,
WorktreeMergedEvent,
WorktreeConflictEvent,
AgentSpawnedEvent,
AgentStoppedEvent,
AgentCrashedEvent,
AgentResumedEvent,
AgentWaitingEvent,
DomainEventMap,
DomainEventType,
} from './types.js';

View File

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