Skip to content

Commit 63fe12c

Browse files
roomoteedelauna
authored andcommitted
improve: update outbound request identity to Zoo Code
1 parent b6a23cf commit 63fe12c

19 files changed

Lines changed: 80 additions & 46 deletions

packages/cloud/src/__tests__/CloudShareService.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ vi.mock("vscode", () => ({
3434
},
3535
}))
3636

37-
vi.mock("../Config", () => ({
37+
vi.mock("../config", () => ({
3838
getRooCodeApiUrl: () => "https://app.roocode.com",
3939
}))
4040

4141
vi.mock("../utils", () => ({
42-
getUserAgent: () => "Roo-Code 1.0.0",
42+
getUserAgent: () => "Zoo-Code 1.0.0",
4343
}))
4444

4545
describe("CloudShareService", () => {
@@ -93,7 +93,7 @@ describe("CloudShareService", () => {
9393
headers: {
9494
"Content-Type": "application/json",
9595
Authorization: "Bearer session-token",
96-
"User-Agent": "Roo-Code 1.0.0",
96+
"User-Agent": "Zoo-Code 1.0.0",
9797
},
9898
body: JSON.stringify({
9999
taskId: "task-123",
@@ -127,7 +127,7 @@ describe("CloudShareService", () => {
127127
headers: {
128128
"Content-Type": "application/json",
129129
Authorization: "Bearer session-token",
130-
"User-Agent": "Roo-Code 1.0.0",
130+
"User-Agent": "Zoo-Code 1.0.0",
131131
},
132132
body: JSON.stringify({ taskId: "task-123", visibility: "public" }),
133133
signal: expect.any(AbortSignal),
@@ -154,7 +154,7 @@ describe("CloudShareService", () => {
154154
headers: {
155155
"Content-Type": "application/json",
156156
Authorization: "Bearer session-token",
157-
"User-Agent": "Roo-Code 1.0.0",
157+
"User-Agent": "Zoo-Code 1.0.0",
158158
},
159159
body: JSON.stringify({
160160
taskId: "task-123",

packages/cloud/src/__tests__/WebAuthService.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ describe("WebAuthService", () => {
104104
vi.mocked(getRooCodeApiUrl).mockReturnValue("https://api.test.com")
105105

106106
// Setup utils mock
107-
vi.mocked(getUserAgent).mockReturnValue("Roo-Code 1.0.0")
107+
vi.mocked(getUserAgent).mockReturnValue("Zoo-Code 1.0.0")
108108

109109
// Setup crypto mock
110110
vi.mocked(crypto.randomBytes).mockReturnValue(Buffer.from("test-random-bytes") as never)

packages/cloud/src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { ExtensionContext } from "vscode"
22

33
export function getUserAgent(context?: ExtensionContext): string {
4-
return `Roo-Code ${context?.extension?.packageJSON?.version || "unknown"}`
4+
return `Zoo-Code ${context?.extension?.packageJSON?.version || "unknown"}`
55
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@ describe("AwsBedrockHandler", () => {
7373
expect(modelInfo.info.contextWindow).toBeDefined()
7474
})
7575

76+
it("should identify itself as Zoo Code in the AWS client app id", () => {
77+
expect(mockBedrockRuntimeClient).toHaveBeenCalledWith(
78+
expect.objectContaining({
79+
userAgentAppId: expect.stringMatching(/^ZooCode#/),
80+
}),
81+
)
82+
})
83+
7684
it("should use custom ARN when provided", () => {
7785
// This test is incompatible with the refactored implementation
7886
// The implementation now extracts the model ID from the ARN instead of using the ARN directly

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,24 @@ describe("DEFAULT_HEADERS", () => {
1111
})
1212

1313
it("should have correct HTTP-Referer value", () => {
14-
expect(DEFAULT_HEADERS["HTTP-Referer"]).toBe("https://github.com/RooVetGit/Roo-Cline")
14+
expect(DEFAULT_HEADERS["HTTP-Referer"]).toBe("https://github.com/Zoo-Code-Org/Zoo-Code")
1515
})
1616

1717
it("should have correct X-Title value", () => {
18-
expect(DEFAULT_HEADERS["X-Title"]).toBe("Roo Code")
18+
expect(DEFAULT_HEADERS["X-Title"]).toBe("Zoo Code")
1919
})
2020

2121
it("should have correct User-Agent format", () => {
2222
const userAgent = DEFAULT_HEADERS["User-Agent"]
23-
expect(userAgent).toBe(`RooCode/${Package.version}`)
23+
expect(userAgent).toBe(`ZooCode/${Package.version}`)
2424

2525
// Verify it follows the tool_name/version pattern
2626
expect(userAgent).toMatch(/^[a-zA-Z-]+\/\d+\.\d+\.\d+$/)
2727
})
2828

2929
it("should have User-Agent with correct tool name", () => {
3030
const userAgent = DEFAULT_HEADERS["User-Agent"]
31-
expect(userAgent.startsWith("RooCode/")).toBe(true)
31+
expect(userAgent.startsWith("ZooCode/")).toBe(true)
3232
})
3333

3434
it("should have User-Agent with semantic version format", () => {

src/api/providers/__tests__/openai-native.spec.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { ApiProviderError } from "@roo-code/types"
1717

1818
import { OpenAiNativeHandler } from "../openai-native"
1919
import { ApiHandlerOptions } from "../../../shared/api"
20+
import { Package } from "../../../shared/package"
2021

2122
// Mock OpenAI client - now everything uses Responses API
2223
const mockResponsesCreate = vitest.fn()
@@ -99,6 +100,23 @@ describe("OpenAiNativeHandler", () => {
99100
expect.objectContaining({ baseURL: "https://custom-openai.example.com/v1" }),
100101
)
101102
})
103+
104+
it("should identify itself as Zoo Code in request headers", () => {
105+
;(OpenAI as unknown as ReturnType<typeof vitest.fn>).mockClear()
106+
new OpenAiNativeHandler({
107+
apiModelId: "gpt-4.1",
108+
openAiNativeApiKey: "test-key",
109+
})
110+
111+
expect(OpenAI).toHaveBeenCalledWith(
112+
expect.objectContaining({
113+
defaultHeaders: expect.objectContaining({
114+
originator: "zoo-code",
115+
"User-Agent": expect.stringContaining(`zoo-code/${Package.version}`),
116+
}),
117+
}),
118+
)
119+
})
102120
})
103121

104122
describe("createMessage", () => {

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@ describe("OpenAiHandler", () => {
111111
baseURL: expect.any(String),
112112
apiKey: expect.any(String),
113113
defaultHeaders: {
114-
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
115-
"X-Title": "Roo Code",
116-
"User-Agent": `RooCode/${Package.version}`,
114+
"HTTP-Referer": "https://github.com/Zoo-Code-Org/Zoo-Code",
115+
"X-Title": "Zoo Code",
116+
"User-Agent": `ZooCode/${Package.version}`,
117117
},
118118
timeout: expect.any(Number),
119119
})

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ describe("OpenRouterHandler", () => {
100100
baseURL: "https://openrouter.ai/api/v1",
101101
apiKey: mockOptions.openRouterApiKey,
102102
defaultHeaders: {
103-
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
104-
"X-Title": "Roo Code",
105-
"User-Agent": `RooCode/${Package.version}`,
103+
"HTTP-Referer": "https://github.com/Zoo-Code-Org/Zoo-Code",
104+
"X-Title": "Zoo Code",
105+
"User-Agent": `ZooCode/${Package.version}`,
106106
},
107107
})
108108
})

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ describe("RequestyHandler", () => {
5858
baseURL: "https://router.requesty.ai/v1",
5959
apiKey: mockOptions.requestyApiKey,
6060
defaultHeaders: {
61-
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
62-
"X-Title": "Roo Code",
63-
"User-Agent": `RooCode/${Package.version}`,
61+
"HTTP-Referer": "https://github.com/Zoo-Code-Org/Zoo-Code",
62+
"X-Title": "Zoo Code",
63+
"User-Agent": `ZooCode/${Package.version}`,
6464
},
6565
})
6666
})
@@ -73,9 +73,9 @@ describe("RequestyHandler", () => {
7373
baseURL: "https://custom.requesty.ai/v1",
7474
apiKey: mockOptions.requestyApiKey,
7575
defaultHeaders: {
76-
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
77-
"X-Title": "Roo Code",
78-
"User-Agent": `RooCode/${Package.version}`,
76+
"HTTP-Referer": "https://github.com/Zoo-Code-Org/Zoo-Code",
77+
"X-Title": "Zoo Code",
78+
"User-Agent": `ZooCode/${Package.version}`,
7979
},
8080
})
8181
})

src/api/providers/__tests__/vercel-ai-gateway.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ describe("VercelAiGatewayHandler", () => {
9696
baseURL: "https://ai-gateway.vercel.sh/v1",
9797
apiKey: mockOptions.vercelAiGatewayApiKey,
9898
defaultHeaders: expect.objectContaining({
99-
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
100-
"X-Title": "Roo Code",
101-
"User-Agent": expect.stringContaining("RooCode/"),
99+
"HTTP-Referer": "https://github.com/Zoo-Code-Org/Zoo-Code",
100+
"X-Title": "Zoo Code",
101+
"User-Agent": expect.stringContaining("ZooCode/"),
102102
}),
103103
})
104104
})

0 commit comments

Comments
 (0)