diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 2745ff4f45d7..cc558f5a6032 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -714,6 +714,18 @@ export const toModelMessagesEffect = Effect.fnUntraced(function* ( text: `[Attached ${part.mime}: ${part.filename ?? "file"}]`, }) } else { + if (isMedia(part.mime)) { + const filename = part.filename ?? "" + const lower = filename.toLowerCase() + let trigger = "image" + if (lower.includes("screenshot")) trigger = "screenshot" + else if (lower.includes("clipboard")) trigger = "clipboard" + else if (lower.includes("photo")) trigger = "photo" + userMessage.parts.push({ + type: "text", + text: `[${trigger}]`, + }) + } userMessage.parts.push({ type: "file", url: part.url, diff --git a/packages/opencode/test/session/message-v2.test.ts b/packages/opencode/test/session/message-v2.test.ts index 82bed0e9cc6f..8efd60b8498a 100644 --- a/packages/opencode/test/session/message-v2.test.ts +++ b/packages/opencode/test/session/message-v2.test.ts @@ -303,6 +303,7 @@ describe("session.message-v2.toModelMessage", () => { role: "user", content: [ { type: "text", text: "hello" }, + { type: "text", text: "[image]" }, { type: "file", mediaType: "image/png",