diff --git a/packages/extension/src/entrypoints/sidepanel/components/cards/index.tsx b/packages/extension/src/entrypoints/sidepanel/components/cards/index.tsx
index 191a7b3..4b2cee7 100644
--- a/packages/extension/src/entrypoints/sidepanel/components/cards/index.tsx
+++ b/packages/extension/src/entrypoints/sidepanel/components/cards/index.tsx
@@ -1,4 +1,9 @@
-import { type AgentErrorEvent, type AgentStepEvent, type ObservationEvent } from '@page-agent/core'
+import {
+ type AgentErrorEvent,
+ type AgentStepEvent,
+ type ObservationEvent,
+ type RetryEvent,
+} from '@page-agent/core'
import {
CheckCircle,
ChevronDown,
@@ -8,6 +13,7 @@ import {
Keyboard,
Mouse,
MoveVertical,
+ RefreshCw,
Sparkles,
XCircle,
Zap,
@@ -200,6 +206,19 @@ function ObservationCard({ event }: { event: ObservationEvent }) {
)
}
+function RetryCard({ event }: { event: RetryEvent }) {
+ return (
+
+
+
+
+ {event.message} ({event.attempt}/{event.maxAttempts})
+
+
+
+ )
+}
+
function ErrorCard({ event }: { event: AgentErrorEvent }) {
return (
@@ -238,6 +257,10 @@ export function EventCard({ event }: { event: HistoricalEvent }) {
return
}
+ if (event.type === 'retry') {
+ return
+ }
+
if (event.type === 'error') {
return
}
diff --git a/packages/extension/src/messaging/protocol.ts b/packages/extension/src/messaging/protocol.ts
index a6b1fd8..1900936 100644
--- a/packages/extension/src/messaging/protocol.ts
+++ b/packages/extension/src/messaging/protocol.ts
@@ -55,7 +55,7 @@ export type AgentActivity =
/** Historical event (simplified for serialization) */
export interface HistoricalEvent {
- type: 'step' | 'observation' | 'user_takeover' | 'error'
+ type: 'step' | 'observation' | 'user_takeover' | 'retry' | 'error'
// For 'step' type
stepIndex?: number
reflection?: {
@@ -70,8 +70,10 @@ export interface HistoricalEvent {
}
// For 'observation' type
content?: string
- // For 'error' type
- errorType?: 'retry' | 'error'
+ // For 'retry' type
+ attempt?: number
+ maxAttempts?: number
+ // For 'error' and 'retry' types
message?: string
// Raw LLM response for debugging (step and error types)
rawResponse?: unknown