2
0
Эх сурвалжийг харах

Bug fix for trailing slash error when using LiteLLM provider (#4275)

* Added changeset for my code changes

* Use URL constructor for joining baseUrl and path in litellm.ts

* Restoring Roo dotfiles

* Moved Roo dotfiles to root directory

* Revert this

* Add tests for litellm URL constructor fix

---------

Co-authored-by: Kevin White <[email protected]>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: Daniel Riccio <[email protected]>
kcwhite 6 сар өмнө
parent
commit
12b8d59562

+ 5 - 0
.changeset/metal-suns-lay.md

@@ -0,0 +1,5 @@
+---
+"roo-code": patch
+---
+
+Bug fix for trailing slash error when using LiteLLM provider

+ 20 - 0
src/api/providers/fetchers/__tests__/litellm.test.ts

@@ -12,6 +12,26 @@ describe("getLiteLLMModels", () => {
 		jest.clearAllMocks()
 	})
 
+	it("handles base URLs with trailing slashes correctly", async () => {
+		const mockResponse = {
+			data: {
+				data: [],
+			},
+		}
+
+		mockedAxios.get.mockResolvedValue(mockResponse)
+
+		await getLiteLLMModels("test-api-key", "http://localhost:4000/")
+
+		expect(mockedAxios.get).toHaveBeenCalledWith("http://localhost:4000/v1/model/info", {
+			headers: {
+				Authorization: "Bearer test-api-key",
+				"Content-Type": "application/json",
+			},
+			timeout: 5000,
+		})
+	})
+
 	it("successfully fetches and formats LiteLLM models", async () => {
 		const mockResponse = {
 			data: {

+ 3 - 1
src/api/providers/fetchers/litellm.ts

@@ -21,8 +21,10 @@ export async function getLiteLLMModels(apiKey: string, baseUrl: string): Promise
 		if (apiKey) {
 			headers["Authorization"] = `Bearer ${apiKey}`
 		}
+		// Use URL constructor to properly join base URL and path
+		const url = new URL("/v1/model/info", baseUrl).href
 		// Added timeout to prevent indefinite hanging
-		const response = await axios.get(`${baseUrl}/v1/model/info`, { headers, timeout: 5000 })
+		const response = await axios.get(url, { headers, timeout: 5000 })
 		const models: ModelRecord = {}
 
 		const computerModels = Array.from(LITELLM_COMPUTER_USE_MODELS)