fix(app): support text attachments (#17335)

This commit is contained in:
Adam 2026-03-13 06:58:24 -05:00 committed by GitHub
commit 843f188aaa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 419 additions and 133 deletions

View file

@ -47,6 +47,7 @@ import { LLM } from "./llm"
import { iife } from "@/util/iife"
import { Shell } from "@/shell/shell"
import { Truncate } from "@/tool/truncation"
import { decodeDataUrl } from "@/util/data-url"
// @ts-ignore
globalThis.AI_SDK_LOG_WARNINGS = false
@ -1079,7 +1080,7 @@ export namespace SessionPrompt {
sessionID: input.sessionID,
type: "text",
synthetic: true,
text: Buffer.from(part.url, "base64url").toString(),
text: decodeDataUrl(part.url),
},
{
...part,

View file

@ -0,0 +1,9 @@
export function decodeDataUrl(url: string) {
const idx = url.indexOf(",")
if (idx === -1) return ""
const head = url.slice(0, idx)
const body = url.slice(idx + 1)
if (head.includes(";base64")) return Buffer.from(body, "base64").toString("utf8")
return decodeURIComponent(body)
}

View file

@ -0,0 +1,14 @@
import { describe, expect, test } from "bun:test"
import { decodeDataUrl } from "../../src/util/data-url"
describe("decodeDataUrl", () => {
test("decodes base64 data URLs", () => {
const body = '{\n "ok": true\n}\n'
const url = `data:text/plain;base64,${Buffer.from(body).toString("base64")}`
expect(decodeDataUrl(url)).toBe(body)
})
test("decodes plain data URLs", () => {
expect(decodeDataUrl("data:text/plain,hello%20world")).toBe("hello world")
})
})