Skip to content

Commit fea70cb

Browse files
committed
feat: Reintroduce geminiFreeTier configuration in provider settings and update related tests
1 parent 96b2d96 commit fea70cb

File tree

3 files changed

+57
-7
lines changed

3 files changed

+57
-7
lines changed

evals/packages/types/src/roo-code.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,7 @@ export const providerSettingsSchema = z.object({
357357
lmStudioSpeculativeDecodingEnabled: z.boolean().optional(),
358358
// Gemini
359359
geminiApiKey: z.string().optional(),
360-
// geminiFreeTier: z.boolean().optional(), // Moved to globalSettingsSchema
361-
geminiModelInfo: modelInfoSchema.optional(), // Keep this uncommented
360+
geminiFreeTier: z.boolean().optional(),
362361
googleGeminiBaseUrl: z.string().optional(),
363362
// OpenAI Native
364363
openAiNativeApiKey: z.string().optional(),
@@ -446,7 +445,7 @@ const providerSettingsRecord: ProviderSettingsRecord = {
446445
lmStudioSpeculativeDecodingEnabled: undefined,
447446
// Gemini
448447
geminiApiKey: undefined,
449-
// geminiFreeTier: undefined, // Moved to globalSettingsRecord
448+
geminiFreeTier: undefined,
450449
geminiModelInfo: undefined, // Keep this uncommented
451450
googleGeminiBaseUrl: undefined,
452451
// OpenAI Native

src/core/config/__tests__/ProviderSettingsManager.test.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,61 @@ describe("ProviderSettingsManager", () => {
300300
"Failed to save config: Error: Failed to write provider profiles to secrets: Error: Storage failed",
301301
)
302302
})
303+
304+
it("should save boolean values correctly, even when true", async () => {
305+
// Create a clean initial state
306+
const initialState = {
307+
currentApiConfigName: "default",
308+
apiConfigs: {
309+
default: { id: "default-id" },
310+
},
311+
modeApiConfigs: {
312+
code: "default",
313+
architect: "default",
314+
ask: "default",
315+
},
316+
migrations: {
317+
rateLimitSecondsMigrated: true,
318+
},
319+
}
320+
321+
// Mock the initial state
322+
mockSecrets.get.mockResolvedValueOnce(JSON.stringify(initialState))
323+
324+
// Create a config with geminiFreeTier set to true
325+
const configWithTrueBoolean: ProviderSettings = {
326+
apiProvider: "gemini",
327+
geminiFreeTier: true,
328+
}
329+
330+
// Save the config
331+
await providerSettingsManager.saveConfig("test", configWithTrueBoolean)
332+
333+
// Verify store was called
334+
expect(mockSecrets.store).toHaveBeenCalled()
335+
336+
// Get what was stored
337+
const storeCall = mockSecrets.store.mock.calls[0]
338+
expect(storeCall[0]).toBe("roo_cline_config_api_config")
339+
340+
const storedData = JSON.parse(storeCall[1])
341+
342+
// Verify the structure
343+
expect(storedData).toHaveProperty("apiConfigs.test")
344+
expect(storedData.apiConfigs.test).toHaveProperty("apiProvider", "gemini")
345+
expect(storedData.apiConfigs.test).toHaveProperty("geminiFreeTier", true)
346+
347+
// Now test loading the config
348+
mockSecrets.get.mockReset()
349+
mockSecrets.get.mockResolvedValueOnce(JSON.stringify(storedData))
350+
351+
// Load the config
352+
const loadedConfig = await providerSettingsManager.loadConfig("test")
353+
354+
// Verify the loaded config
355+
expect(loadedConfig).toHaveProperty("apiProvider", "gemini")
356+
expect(loadedConfig).toHaveProperty("geminiFreeTier", true)
357+
})
303358
})
304359

305360
describe("DeleteConfig", () => {

src/core/webview/webviewMessageHandler.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -645,10 +645,6 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We
645645
await updateGlobalState("diffEnabled", diffEnabled)
646646
await provider.postStateToWebview()
647647
break
648-
// case "geminiFreeTier": // Removed - Now part of apiConfiguration
649-
// await provider.setValue("geminiFreeTier", message.bool ?? false) // Use provider.setValue
650-
// await provider.postStateToWebview()
651-
// break
652648
case "showGreeting":
653649
const showGreeting = message.bool ?? true
654650
await updateGlobalState("showGreeting", showGreeting)

0 commit comments

Comments
 (0)