Skip to content

Commit dcb33c4

Browse files
authored
Revert "feat: wire RooMessage storage into Task.ts and all providers" (#11394)
1 parent a7ba3b5 commit dcb33c4

96 files changed

Lines changed: 2206 additions & 2089 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/api/index.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ import OpenAI from "openai"
33

44
import { isRetiredProvider, type ProviderSettings, type ModelInfo } from "@roo-code/types"
55

6-
import type { RooMessage } from "../core/task-persistence/rooMessage"
7-
86
import { ApiStream } from "./transform/stream"
97

108
import {
@@ -91,7 +89,11 @@ export interface ApiHandlerCreateMessageMetadata {
9189
}
9290

9391
export interface ApiHandler {
94-
createMessage(systemPrompt: string, messages: RooMessage[], metadata?: ApiHandlerCreateMessageMetadata): ApiStream
92+
createMessage(
93+
systemPrompt: string,
94+
messages: Anthropic.Messages.MessageParam[],
95+
metadata?: ApiHandlerCreateMessageMetadata,
96+
): ApiStream
9597

9698
getModel(): { id: string; info: ModelInfo }
9799

src/api/providers/__tests__/anthropic-vertex.spec.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
// npx vitest run src/api/providers/__tests__/anthropic-vertex.spec.ts
32

43
import { AnthropicVertexHandler } from "../anthropic-vertex"
@@ -185,7 +184,7 @@ describe("AnthropicVertexHandler", () => {
185184
})
186185

187186
describe("createMessage", () => {
188-
const mockMessages: RooMessage[] = [
187+
const mockMessages: Anthropic.Messages.MessageParam[] = [
189188
{
190189
role: "user",
191190
content: "Hello",
@@ -245,20 +244,15 @@ describe("AnthropicVertexHandler", () => {
245244
)
246245
})
247246

248-
it("should pass messages directly to streamText as ModelMessage[]", async () => {
247+
it("should call convertToAiSdkMessages with the messages", async () => {
249248
mockStreamText.mockReturnValue(createMockStreamResult([]))
250249

251250
const stream = handler.createMessage(systemPrompt, mockMessages)
252251
for await (const _chunk of stream) {
253252
// consume
254253
}
255254

256-
// Messages are now already in ModelMessage format, passed directly to streamText
257-
expect(mockStreamText).toHaveBeenCalledWith(
258-
expect.objectContaining({
259-
messages: mockMessages,
260-
}),
261-
)
255+
expect(convertToAiSdkMessages).toHaveBeenCalledWith(mockMessages)
262256
})
263257

264258
it("should pass tools through AI SDK conversion pipeline", async () => {

src/api/providers/__tests__/azure.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
// Use vi.hoisted to define mock functions that can be referenced in hoisted vi.mock() calls
32
const { mockStreamText, mockGenerateText, mockCreateAzure } = vi.hoisted(() => ({
43
mockStreamText: vi.fn(),
@@ -133,7 +132,7 @@ describe("AzureHandler", () => {
133132

134133
describe("createMessage", () => {
135134
const systemPrompt = "You are a helpful assistant."
136-
const messages: RooMessage[] = [
135+
const messages: Anthropic.Messages.MessageParam[] = [
137136
{
138137
role: "user",
139138
content: [
@@ -377,7 +376,7 @@ describe("AzureHandler", () => {
377376

378377
describe("tools", () => {
379378
const systemPrompt = "You are a helpful assistant."
380-
const messages: RooMessage[] = [
379+
const messages: Anthropic.Messages.MessageParam[] = [
381380
{
382381
role: "user",
383382
content: [{ type: "text" as const, text: "Use a tool" }],

src/api/providers/__tests__/base-provider.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
import { Anthropic } from "@anthropic-ai/sdk"
32

43
import type { ModelInfo } from "@roo-code/types"
@@ -8,7 +7,7 @@ import type { ApiStream } from "../../transform/stream"
87

98
// Create a concrete implementation for testing
109
class TestProvider extends BaseProvider {
11-
createMessage(_systemPrompt: string, _messages: RooMessage[]): ApiStream {
10+
createMessage(_systemPrompt: string, _messages: Anthropic.Messages.MessageParam[]): ApiStream {
1211
throw new Error("Not implemented")
1312
}
1413

src/api/providers/__tests__/baseten.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
// npx vitest run src/api/providers/__tests__/baseten.spec.ts
32

43
// Use vi.hoisted to define mock functions that can be referenced in hoisted vi.mock() calls
@@ -102,7 +101,7 @@ describe("BasetenHandler", () => {
102101

103102
describe("createMessage", () => {
104103
const systemPrompt = "You are a helpful assistant."
105-
const messages: RooMessage[] = [
104+
const messages: Anthropic.Messages.MessageParam[] = [
106105
{
107106
role: "user",
108107
content: [
@@ -282,7 +281,7 @@ describe("BasetenHandler", () => {
282281

283282
describe("tool handling", () => {
284283
const systemPrompt = "You are a helpful assistant."
285-
const messages: RooMessage[] = [
284+
const messages: Anthropic.Messages.MessageParam[] = [
286285
{
287286
role: "user",
288287
content: [{ type: "text" as const, text: "Hello!" }],
@@ -390,7 +389,7 @@ describe("BasetenHandler", () => {
390389

391390
describe("error handling", () => {
392391
const systemPrompt = "You are a helpful assistant."
393-
const messages: RooMessage[] = [
392+
const messages: Anthropic.Messages.MessageParam[] = [
394393
{
395394
role: "user",
396395
content: [{ type: "text" as const, text: "Hello!" }],

src/api/providers/__tests__/bedrock.spec.ts

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
// Mock TelemetryService before other imports
32
const mockCaptureException = vi.fn()
43

@@ -491,14 +490,17 @@ describe("AwsBedrockHandler", () => {
491490
it("should properly pass image content through to streamText via AI SDK messages", async () => {
492491
setupMockStreamText()
493492

494-
const messages: any[] = [
493+
const messages: Anthropic.Messages.MessageParam[] = [
495494
{
496495
role: "user",
497496
content: [
498497
{
499498
type: "image",
500-
image: `data:image/jpeg;base64,${mockImageData}`,
501-
mimeType: "image/jpeg",
499+
source: {
500+
type: "base64",
501+
data: mockImageData,
502+
media_type: "image/jpeg",
503+
},
502504
},
503505
{
504506
type: "text",
@@ -528,7 +530,7 @@ describe("AwsBedrockHandler", () => {
528530
expect(userMsg).toBeDefined()
529531
expect(Array.isArray(userMsg.content)).toBe(true)
530532

531-
// Messages are already in AI SDK ImagePart format
533+
// The AI SDK convertToAiSdkMessages converts images to { type: "image", image: "data:...", mimeType: "..." }
532534
const imagePart = userMsg.content.find((p: { type: string }) => p.type === "image")
533535
expect(imagePart).toBeDefined()
534536
expect(imagePart.image).toContain("data:image/jpeg;base64,")
@@ -542,23 +544,29 @@ describe("AwsBedrockHandler", () => {
542544
it("should handle multiple images in a single message", async () => {
543545
setupMockStreamText()
544546

545-
const messages: any[] = [
547+
const messages: Anthropic.Messages.MessageParam[] = [
546548
{
547549
role: "user",
548550
content: [
549551
{
550552
type: "image",
551-
image: `data:image/jpeg;base64,${mockImageData}`,
552-
mimeType: "image/jpeg",
553+
source: {
554+
type: "base64",
555+
data: mockImageData,
556+
media_type: "image/jpeg",
557+
},
553558
},
554559
{
555560
type: "text",
556561
text: "First image",
557562
},
558563
{
559564
type: "image",
560-
image: `data:image/png;base64,${mockImageData}`,
561-
mimeType: "image/png",
565+
source: {
566+
type: "base64",
567+
data: mockImageData,
568+
media_type: "image/png",
569+
},
562570
},
563571
{
564572
type: "text",
@@ -753,7 +761,7 @@ describe("AwsBedrockHandler", () => {
753761
awsBedrock1MContext: true,
754762
})
755763

756-
const messages: RooMessage[] = [
764+
const messages: Anthropic.Messages.MessageParam[] = [
757765
{
758766
role: "user",
759767
content: "Test message",
@@ -786,7 +794,7 @@ describe("AwsBedrockHandler", () => {
786794
awsBedrock1MContext: false,
787795
})
788796

789-
const messages: RooMessage[] = [
797+
const messages: Anthropic.Messages.MessageParam[] = [
790798
{
791799
role: "user",
792800
content: "Test message",
@@ -820,7 +828,7 @@ describe("AwsBedrockHandler", () => {
820828
awsBedrock1MContext: true,
821829
})
822830

823-
const messages: RooMessage[] = [
831+
const messages: Anthropic.Messages.MessageParam[] = [
824832
{
825833
role: "user",
826834
content: "Test message",
@@ -873,7 +881,7 @@ describe("AwsBedrockHandler", () => {
873881
awsBedrock1MContext: true,
874882
})
875883

876-
const messages: RooMessage[] = [
884+
const messages: Anthropic.Messages.MessageParam[] = [
877885
{
878886
role: "user",
879887
content: "Test message",
@@ -1005,7 +1013,7 @@ describe("AwsBedrockHandler", () => {
10051013
awsBedrockServiceTier: "PRIORITY",
10061014
})
10071015

1008-
const messages: RooMessage[] = [
1016+
const messages: Anthropic.Messages.MessageParam[] = [
10091017
{
10101018
role: "user",
10111019
content: "Test message",
@@ -1042,7 +1050,7 @@ describe("AwsBedrockHandler", () => {
10421050
awsBedrockServiceTier: "FLEX",
10431051
})
10441052

1045-
const messages: RooMessage[] = [
1053+
const messages: Anthropic.Messages.MessageParam[] = [
10461054
{
10471055
role: "user",
10481056
content: "Test message",
@@ -1079,7 +1087,7 @@ describe("AwsBedrockHandler", () => {
10791087
awsBedrockServiceTier: "PRIORITY", // Try to apply PRIORITY tier
10801088
})
10811089

1082-
const messages: RooMessage[] = [
1090+
const messages: Anthropic.Messages.MessageParam[] = [
10831091
{
10841092
role: "user",
10851093
content: "Test message",
@@ -1114,7 +1122,7 @@ describe("AwsBedrockHandler", () => {
11141122
// No awsBedrockServiceTier specified
11151123
})
11161124

1117-
const messages: RooMessage[] = [
1125+
const messages: Anthropic.Messages.MessageParam[] = [
11181126
{
11191127
role: "user",
11201128
content: "Test message",
@@ -1184,7 +1192,7 @@ describe("AwsBedrockHandler", () => {
11841192
awsRegion: "us-east-1",
11851193
})
11861194

1187-
const messages: RooMessage[] = [
1195+
const messages: Anthropic.Messages.MessageParam[] = [
11881196
{
11891197
role: "user",
11901198
content: "Hello",
@@ -1259,7 +1267,7 @@ describe("AwsBedrockHandler", () => {
12591267
awsRegion: "us-east-1",
12601268
})
12611269

1262-
const messages: RooMessage[] = [
1270+
const messages: Anthropic.Messages.MessageParam[] = [
12631271
{
12641272
role: "user",
12651273
content: "Hello",

src/api/providers/__tests__/deepseek.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
// Use vi.hoisted to define mock functions that can be referenced in hoisted vi.mock() calls
32
const { mockStreamText, mockGenerateText } = vi.hoisted(() => ({
43
mockStreamText: vi.fn(),
@@ -174,7 +173,7 @@ describe("DeepSeekHandler", () => {
174173

175174
describe("createMessage", () => {
176175
const systemPrompt = "You are a helpful assistant."
177-
const messages: RooMessage[] = [
176+
const messages: Anthropic.Messages.MessageParam[] = [
178177
{
179178
role: "user",
180179
content: [
@@ -401,7 +400,7 @@ describe("DeepSeekHandler", () => {
401400

402401
describe("reasoning content with deepseek-reasoner", () => {
403402
const systemPrompt = "You are a helpful assistant."
404-
const messages: RooMessage[] = [
403+
const messages: Anthropic.Messages.MessageParam[] = [
405404
{
406405
role: "user",
407406
content: [
@@ -571,7 +570,7 @@ describe("DeepSeekHandler", () => {
571570

572571
describe("tool handling", () => {
573572
const systemPrompt = "You are a helpful assistant."
574-
const messages: RooMessage[] = [
573+
const messages: Anthropic.Messages.MessageParam[] = [
575574
{
576575
role: "user",
577576
content: [{ type: "text" as const, text: "Hello!" }],

src/api/providers/__tests__/fireworks.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
// npx vitest run src/api/providers/__tests__/fireworks.spec.ts
32

43
// Use vi.hoisted to define mock functions that can be referenced in hoisted vi.mock() calls
@@ -364,7 +363,7 @@ describe("FireworksHandler", () => {
364363

365364
describe("createMessage", () => {
366365
const systemPrompt = "You are a helpful assistant."
367-
const messages: RooMessage[] = [
366+
const messages: Anthropic.Messages.MessageParam[] = [
368367
{
369368
role: "user",
370369
content: [
@@ -731,7 +730,7 @@ describe("FireworksHandler", () => {
731730

732731
describe("tool handling", () => {
733732
const systemPrompt = "You are a helpful assistant."
734-
const messages: RooMessage[] = [
733+
const messages: Anthropic.Messages.MessageParam[] = [
735734
{
736735
role: "user",
737736
content: [{ type: "text" as const, text: "Hello!" }],

src/api/providers/__tests__/gemini.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
// npx vitest run src/api/providers/__tests__/gemini.spec.ts
32

43
import { NoOutputGeneratedError } from "ai"
@@ -103,7 +102,7 @@ describe("GeminiHandler", () => {
103102
})
104103

105104
describe("createMessage", () => {
106-
const mockMessages: RooMessage[] = [
105+
const mockMessages: Anthropic.Messages.MessageParam[] = [
107106
{
108107
role: "user",
109108
content: "Hello",
@@ -378,7 +377,7 @@ describe("GeminiHandler", () => {
378377
})
379378

380379
describe("error telemetry", () => {
381-
const mockMessages: RooMessage[] = [
380+
const mockMessages: Anthropic.Messages.MessageParam[] = [
382381
{
383382
role: "user",
384383
content: "Hello",

src/api/providers/__tests__/lite-llm.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { RooMessage } from "../../../core/task-persistence/rooMessage"
21
const { mockStreamText, mockGenerateText } = vi.hoisted(() => ({
32
mockStreamText: vi.fn(),
43
mockGenerateText: vi.fn(),
@@ -258,7 +257,7 @@ describe("LiteLLMHandler", () => {
258257
})
259258

260259
const systemPrompt = "You are a helpful assistant"
261-
const messages: RooMessage[] = [{ role: "user", content: "Hello" }]
260+
const messages: Anthropic.Messages.MessageParam[] = [{ role: "user", content: "Hello" }]
262261

263262
const generator = handler.createMessage(systemPrompt, messages)
264263
for await (const _chunk of generator) {

0 commit comments

Comments
 (0)