This commit is contained in:
Timothy Jaeryang Baek 2025-09-25 15:20:13 -05:00
parent 6920fed97e
commit 2fa222d00a
2 changed files with 32 additions and 13 deletions

View file

@ -2545,21 +2545,33 @@ async def process_chat_response(
else: else:
tool_result = tool_result.body.decode("utf-8") tool_result = tool_result.body.decode("utf-8")
elif tool.get("type") == "external" and isinstance( elif (
tool_result, tuple tool.get("type") == "external"
and isinstance(tool_result, tuple)
) or (
tool.get("direct", True)
and isinstance(tool_result, list)
and len(tool_result) == 2
): ):
tool_result, tool_response_headers = tool_result tool_result, tool_response_headers = tool_result
if tool_response_headers: if tool_response_headers:
content_disposition = tool_response_headers.get( content_disposition = tool_response_headers.get(
"Content-Disposition", "" "Content-Disposition",
tool_response_headers.get(
"content-disposition", ""
),
) )
if "inline" in content_disposition: if "inline" in content_disposition:
content_type = tool_response_headers.get( content_type = tool_response_headers.get(
"Content-Type", "" "Content-Type",
tool_response_headers.get("content-type", ""),
)
location = tool_response_headers.get(
"Location",
tool_response_headers.get("location", ""),
) )
location = tool_response_headers.get("Location", "")
if "text/html" in content_type: if "text/html" in content_type:
# Display as iframe embed # Display as iframe embed

View file

@ -493,18 +493,25 @@ export const executeToolServer = async (
throw new Error(`HTTP error! Status: ${res.status}. Message: ${resText}`); throw new Error(`HTTP error! Status: ${res.status}. Message: ${resText}`);
} }
let responseData; // make a clone of res and extract headers
try { const responseHeaders = {};
responseData = await res.json(); res.headers.forEach((value, key) => {
} catch (err) { responseHeaders[key] = value;
responseData = await res.text(); });
}
return responseData; const text = await res.text();
let responseData;
try {
responseData = JSON.parse(text);
} catch {
responseData = text;
}
return [responseData, responseHeaders];
} catch (err: any) { } catch (err: any) {
error = err.message; error = err.message;
console.error('API Request Error:', error); console.error('API Request Error:', error);
return { error }; return [{ error }, null];
} }
}; };