Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 8 additions & 9 deletions src/__tests__/history-resume-delegation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -238,9 +238,9 @@ describe("History resume delegation - parent metadata transitions", () => {
role: "assistant",
content: [
{
type: "tool_use",
name: "new_task",
id: "toolu_abc123",
type: "tool-call",
toolName: "new_task",
toolCallId: "toolu_abc123",
input: { mode: "code", message: "Do something" },
},
],
Expand All @@ -265,9 +265,8 @@ describe("History resume delegation - parent metadata transitions", () => {
role: "user",
content: expect.arrayContaining([
expect.objectContaining({
type: "tool_result",
tool_use_id: "toolu_abc123",
content: expect.stringContaining("Subtask c-tool completed"),
type: "tool-result",
toolCallId: "toolu_abc123",
}),
]),
}),
Expand All @@ -281,11 +280,11 @@ describe("History resume delegation - parent metadata transitions", () => {
const apiCall = vi.mocked(saveApiMessages).mock.calls[0][0]
expect(apiCall.messages).toHaveLength(3)

// Verify the injected message is a user message with tool_result type
// Verify the injected message is a user message with tool-result type
const injectedMsg = apiCall.messages[2]
expect(injectedMsg.role).toBe("user")
expect((injectedMsg.content[0] as any).type).toBe("tool_result")
expect((injectedMsg.content[0] as any).tool_use_id).toBe("toolu_abc123")
expect((injectedMsg.content[0] as any).type).toBe("tool-result")
expect((injectedMsg.content[0] as any).toolCallId).toBe("toolu_abc123")
})

it("reopenParentFromDelegation injects plain text when no new_task tool_use exists in API history", async () => {
Expand Down
6 changes: 3 additions & 3 deletions src/api/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai"

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

import type { NeutralMessageParam, NeutralContentBlock } from "../core/task-persistence"
import { ApiStream } from "./transform/stream"

import {
Expand Down Expand Up @@ -91,7 +91,7 @@ export interface ApiHandlerCreateMessageMetadata {
export interface ApiHandler {
createMessage(
systemPrompt: string,
messages: Anthropic.Messages.MessageParam[],
messages: NeutralMessageParam[],
metadata?: ApiHandlerCreateMessageMetadata,
): ApiStream

Expand All @@ -105,7 +105,7 @@ export interface ApiHandler {
* @param content The content to count tokens for
* @returns A promise resolving to the token count
*/
countTokens(content: Array<Anthropic.Messages.ContentBlockParam>): Promise<number>
countTokens(content: NeutralContentBlock[]): Promise<number>

/**
* Indicates whether this provider uses the Vercel AI SDK for streaming.
Expand Down
Loading