diff --git a/packages/extension/package.json b/packages/extension/package.json
index f0c2ee7..0d0e031 100644
--- a/packages/extension/package.json
+++ b/packages/extension/package.json
@@ -6,7 +6,7 @@
"scripts": {
"dev": "wxt",
"dev:firefox": "wxt -b firefox",
- "build": "wxt build",
+ "build:ext": "wxt build",
"build:firefox": "wxt build -b firefox",
"zip": "wxt zip",
"zip:firefox": "wxt zip -b firefox",
diff --git a/packages/extension/src/entrypoints/sidepanel/App.tsx b/packages/extension/src/entrypoints/sidepanel/App.tsx
index f5120f9..ed50053 100644
--- a/packages/extension/src/entrypoints/sidepanel/App.tsx
+++ b/packages/extension/src/entrypoints/sidepanel/App.tsx
@@ -1,6 +1,8 @@
import {
ArrowRight,
CheckCircle,
+ ChevronDown,
+ ChevronRight,
Loader2,
MessageSquare,
Send,
@@ -103,7 +105,15 @@ function ConfigPanel({ onClose }: { onClose: () => void }) {
}
// Result card for done action
-function ResultCard({ success, text }: { success: boolean; text: string }) {
+function ResultCard({
+ success,
+ text,
+ children,
+}: {
+ success: boolean
+ text: string
+ children?: React.ReactNode
+}) {
return (
{text}
+ {children}
)
}
@@ -166,16 +177,46 @@ function ReflectionSection({
)
}
+// Raw response section (collapsible, for debugging)
+function RawResponseSection({ rawResponse }: { rawResponse: unknown }) {
+ const [expanded, setExpanded] = useState(false)
+
+ return (
+
+
+ {expanded && (
+
+ {JSON.stringify(rawResponse, null, 4)}
+
+ )}
+
+ )
+}
+
// History event card component
function EventCard({ event }: { event: HistoricalEvent }) {
// Done action - show as result card
if (event.type === 'step' && event.action?.name === 'done') {
const input = event.action.input as { text?: string; success?: boolean }
return (
-
+
+
+ {!event.rawResponse || }
+
+
)
}
@@ -202,6 +243,9 @@ function EventCard({ event }: { event: HistoricalEvent }) {
)}
+
+ {/* Raw Response */}
+ {!event.rawResponse || }
)
}
@@ -217,9 +261,12 @@ function EventCard({ event }: { event: HistoricalEvent }) {
if (event.type === 'error') {
return (
-
-
-
{event.message}
+
+
+
+ {event.message}
+
+ {!event.rawResponse ||
}
)
}
diff --git a/packages/extension/src/messaging/protocol.ts b/packages/extension/src/messaging/protocol.ts
index 3ae8d39..8206676 100644
--- a/packages/extension/src/messaging/protocol.ts
+++ b/packages/extension/src/messaging/protocol.ts
@@ -72,6 +72,8 @@ export interface HistoricalEvent {
// For 'error' type
errorType?: 'retry' | 'error'
message?: string
+ // Raw LLM response for debugging (step and error types)
+ rawResponse?: unknown
}
/** Agent state snapshot */
diff --git a/packages/extension/tsconfig.json b/packages/extension/tsconfig.json
index a60920d..98a679a 100644
--- a/packages/extension/tsconfig.json
+++ b/packages/extension/tsconfig.json
@@ -5,6 +5,7 @@
"useDefineForClassFields": true,
"noEmit": false,
"allowImportingTsExtensions": false,
+ "strictNullChecks": true,
"jsx": "react-jsx",
"baseUrl": ".",
"paths": {