Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Commit f1a88a0

Browse files
committed
fix: address review feedback for AI SDK utilities
- Fix version regression: restore version to 3.45.0 (was incorrectly 3.43.0) - Handle URL source type in convertToAiSdkMessages for images - Add test for URL image source handling
1 parent 5b9413a commit f1a88a0

3 files changed

Lines changed: 47 additions & 6 deletions

File tree

src/api/transform/__tests__/ai-sdk.spec.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,38 @@ describe("AI SDK conversion utilities", () => {
7373
})
7474
})
7575

76+
it("converts user messages with URL image content", () => {
77+
const messages: Anthropic.Messages.MessageParam[] = [
78+
{
79+
role: "user",
80+
content: [
81+
{ type: "text", text: "What is in this image?" },
82+
{
83+
type: "image",
84+
source: {
85+
type: "url",
86+
url: "https://example.com/image.png",
87+
},
88+
} as any,
89+
],
90+
},
91+
]
92+
93+
const result = convertToAiSdkMessages(messages)
94+
95+
expect(result).toHaveLength(1)
96+
expect(result[0]).toEqual({
97+
role: "user",
98+
content: [
99+
{ type: "text", text: "What is in this image?" },
100+
{
101+
type: "image",
102+
image: "https://example.com/image.png",
103+
},
104+
],
105+
})
106+
})
107+
76108
it("converts tool results into separate tool role messages with resolved tool names", () => {
77109
const messages: Anthropic.Messages.MessageParam[] = [
78110
{

src/api/transform/ai-sdk.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,20 @@ export function convertToAiSdkMessages(messages: Anthropic.Messages.MessageParam
5252
if (part.type === "text") {
5353
parts.push({ type: "text", text: part.text })
5454
} else if (part.type === "image") {
55-
parts.push({
56-
type: "image",
57-
image: `data:${part.source.media_type};base64,${part.source.data}`,
58-
mimeType: part.source.media_type,
59-
})
55+
// Handle both base64 and URL source types
56+
const source = part.source as { type: string; media_type?: string; data?: string; url?: string }
57+
if (source.type === "base64" && source.media_type && source.data) {
58+
parts.push({
59+
type: "image",
60+
image: `data:${source.media_type};base64,${source.data}`,
61+
mimeType: source.media_type,
62+
})
63+
} else if (source.type === "url" && source.url) {
64+
parts.push({
65+
type: "image",
66+
image: source.url,
67+
})
68+
}
6069
} else if (part.type === "tool_result") {
6170
// Convert tool results to string content
6271
let content: string

src/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "%extension.displayName%",
44
"description": "%extension.description%",
55
"publisher": "RooVeterinaryInc",
6-
"version": "3.43.0",
6+
"version": "3.45.0",
77
"icon": "assets/icons/icon.png",
88
"galleryBanner": {
99
"color": "#617A91",

0 commit comments

Comments
 (0)