diff --git a/app/api/proxy/route.ts b/app/api/proxy/route.ts index 388d695cf9..0284395d68 100644 --- a/app/api/proxy/route.ts +++ b/app/api/proxy/route.ts @@ -61,7 +61,7 @@ export async function POST(request: Request) { } catch (error: any) { return NextResponse.json({ success: false, - error: error.message || 'Unknown error', + error: error instanceof Error ? error.message : String(error), }) } } diff --git a/app/w/[id]/components/workflow-block/components/sub-block/components/webhook-config.tsx b/app/w/[id]/components/workflow-block/components/sub-block/components/webhook-config.tsx index 8f12ac1e7e..6523e23b8f 100644 --- a/app/w/[id]/components/workflow-block/components/sub-block/components/webhook-config.tsx +++ b/app/w/[id]/components/workflow-block/components/sub-block/components/webhook-config.tsx @@ -183,7 +183,11 @@ export function WebhookConfig({ blockId, subBlockId, isConnecting }: WebhookConf if (!response.ok) { const errorData = await response.json() - throw new Error(errorData.error || 'Failed to save webhook') + throw new Error( + typeof errorData.error === 'object' + ? errorData.error.message || JSON.stringify(errorData.error) + : errorData.error || 'Failed to save webhook' + ) } const data = await response.json() diff --git a/tools/index.ts b/tools/index.ts index ee3bb3f17c..9291e72d6a 100644 --- a/tools/index.ts +++ b/tools/index.ts @@ -402,11 +402,17 @@ async function handleInternalRequest( let errorData try { errorData = await response.json() - } catch (e) { - errorData = { error: response.statusText } + } catch { + throw new Error(response.statusText || `Request failed with status ${response.status}`) } - throw new Error(errorData.error || `Request failed with status ${response.status}`) + // Extract error message from nested error objects (common in API responses) + const errorMessage = + typeof errorData.error === 'object' + ? errorData.error.message || JSON.stringify(errorData.error) + : errorData.error || `Request failed with status ${response.status}` + + throw new Error(errorMessage) } // Use the tool's response transformer if available diff --git a/tools/sheets/read.ts b/tools/sheets/read.ts index d1e334b6dd..85f4e79272 100644 --- a/tools/sheets/read.ts +++ b/tools/sheets/read.ts @@ -49,7 +49,11 @@ export const readTool: ToolConfig { if (!response.ok) { - const errorText = await response.text() + const errorJson = await response.json().catch(() => ({ error: response.statusText })) + const errorText = + errorJson.error && typeof errorJson.error === 'object' + ? errorJson.error.message || JSON.stringify(errorJson.error) + : errorJson.error || response.statusText throw new Error(`Failed to read Google Sheets data: ${errorText}`) } @@ -91,12 +95,30 @@ export const readTool: ToolConfig