From 7044662cfacbb2a3cbc9845013b87616d8c98df1 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 25 Jul 2025 15:48:19 -0400 Subject: [PATCH] handle uploaded text/plain --- packages/opencode/src/session/index.ts | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index b4ffda39..86e3e15b 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -388,6 +388,34 @@ export namespace Session { if (part.type === "file") { const url = new URL(part.url) switch (url.protocol) { + case "data:": + if (part.mime === "text/plain") { + return [ + { + id: Identifier.ascending("part"), + messageID: userMsg.id, + sessionID: input.sessionID, + type: "text", + synthetic: true, + text: `Called the Read tool with the following input: ${JSON.stringify({ filePath: part.filename })}`, + }, + { + id: Identifier.ascending("part"), + messageID: userMsg.id, + sessionID: input.sessionID, + type: "text", + synthetic: true, + text: Buffer.from(part.url, "base64url").toString(), + }, + { + ...part, + id: part.id ?? Identifier.ascending("part"), + messageID: userMsg.id, + sessionID: input.sessionID, + }, + ] + } + break case "file:": // have to normalize, symbol search returns absolute paths // Decode the pathname since URL constructor doesn't automatically decode it