diff options
| author | Andrey Taranov <[email protected]> | 2026-01-12 03:39:42 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-11 21:39:42 -0600 |
| commit | 8b9a85b7e7278813cd6be733d7cd67ef3ea24972 (patch) | |
| tree | c280f3b9f1e712e34513e9be981462baa4de9498 | |
| parent | 7cbec9a1a78d8c42b83ca0fd0d0efdbc69f813b7 (diff) | |
| download | opencode-8b9a85b7e7278813cd6be733d7cd67ef3ea24972.tar.gz opencode-8b9a85b7e7278813cd6be733d7cd67ef3ea24972.zip | |
fix(mcp): support `resource` content type in MCP tool output (#7879)
| -rw-r--r-- | packages/opencode/src/session/prompt.ts | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index f89161227..34596e629 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -777,8 +777,23 @@ export namespace SessionPrompt { mime: contentItem.mimeType, url: `data:${contentItem.mimeType};base64,${contentItem.data}`, }) + } else if (contentItem.type === "resource") { + const { resource } = contentItem + if (resource.text) { + textParts.push(resource.text) + } + if (resource.blob) { + attachments.push({ + id: Identifier.ascending("part"), + sessionID: input.session.id, + messageID: input.processor.message.id, + type: "file", + mime: resource.mimeType ?? "application/octet-stream", + url: `data:${resource.mimeType ?? "application/octet-stream"};base64,${resource.blob}`, + filename: resource.uri, + }) + } } - // Add support for other types if needed } return { |
