mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-08 17:59:09 +00:00
fix(app): support text attachments (#17335)
This commit is contained in:
@@ -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,
|
||||
|
||||
9
packages/opencode/src/util/data-url.ts
Normal file
9
packages/opencode/src/util/data-url.ts
Normal 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)
|
||||
}
|
||||
14
packages/opencode/test/util/data-url.test.ts
Normal file
14
packages/opencode/test/util/data-url.test.ts
Normal 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")
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user