🐛 Fix text response construction from base64 data (#11422)

Fixes SVG exports of shapes, as the export util method always produces
a byte array, even for text data.
This commit is contained in:
Dr. Dominik Jain 2026-09-24 12:52:02 +02:00 committed by GitHub
parent d6abd2fecd
commit cb64570f13
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -10,12 +10,19 @@ export class TextContent implements TextItem {
constructor(public text: string) {}
/**
* @param data - Text data as string or as object (from JSON representation where indices are mapped to character codes)
* @param data - Text data as string or as object (wrapped base64 data or JSON representation of array where
* indices are mapped to character codes)
*/
public static textData(data: string | object): string {
if (typeof data === "object") {
// convert object containing character codes (as obtained from JSON conversion of string) back to string
return String.fromCharCode(...(Object.values(data) as number[]));
// check for wrapped base64 data
if ("__type" in data && data["__type"] === "base64" && "data" in data && typeof data["data"] === "string") {
return Buffer.from(data["data"], "base64").toString("utf-8");
}
// legacy fallback: assume object containing character codes (as obtained from direct JSON conversion)
else {
return String.fromCharCode(...(Object.values(data) as number[]));
}
} else {
return data;
}
@ -84,8 +91,8 @@ export class TextResponse extends ToolResponse {
}
/**
* Creates a TextResponse from text data given as string or as object (from JSON representation where indices are mapped to
* character codes).
* Creates a TextResponse from text data given as string or as object (wrapped base64 data or JSON representation
* of array where indices are mapped to character codes).
*
* @param data - Text data as string or as object (from JSON representation where indices are mapped to character codes)
*/