feat(core/ui): enhance retry mechanism and UX (#16489)

This commit is contained in:
Sehoon Shon
2026-01-13 23:03:19 -05:00
committed by GitHub
parent 428e602882
commit 4afd3741df
9 changed files with 200 additions and 26 deletions
+20
View File
@@ -97,6 +97,17 @@ export interface HookEndPayload extends HookPayload {
success: boolean;
}
/**
* Payload for the 'retry-attempt' event.
*/
export interface RetryAttemptPayload {
attempt: number;
maxAttempts: number;
delayMs: number;
error?: string;
model: string;
}
export enum CoreEvent {
UserFeedback = 'user-feedback',
ModelChanged = 'model-changed',
@@ -108,6 +119,7 @@ export enum CoreEvent {
HookStart = 'hook-start',
HookEnd = 'hook-end',
AgentsRefreshed = 'agents-refreshed',
RetryAttempt = 'retry-attempt',
}
export interface CoreEvents {
@@ -121,6 +133,7 @@ export interface CoreEvents {
[CoreEvent.HookStart]: [HookStartPayload];
[CoreEvent.HookEnd]: [HookEndPayload];
[CoreEvent.AgentsRefreshed]: never[];
[CoreEvent.RetryAttempt]: [RetryAttemptPayload];
}
type EventBacklogItem = {
@@ -229,6 +242,13 @@ export class CoreEventEmitter extends EventEmitter<CoreEvents> {
this.emit(CoreEvent.AgentsRefreshed);
}
/**
* Notifies subscribers that a retry attempt is happening.
*/
emitRetryAttempt(payload: RetryAttemptPayload): void {
this.emit(CoreEvent.RetryAttempt, payload);
}
/**
* Flushes buffered messages. Call this immediately after primary UI listener
* subscribes.