From 54b8e84249e04f0c80b70eda8109799be3b7bfbe Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Mon, 7 Apr 2025 16:30:29 -0700 Subject: [PATCH 1/3] Directly use provider rateLimitSeconds and remove uneeded default --- src/core/Cline.ts | 4 ++-- src/core/config/ProviderSettingsManager.ts | 7 +------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/core/Cline.ts b/src/core/Cline.ts index 7f5ef949da3..df0d5f7160a 100644 --- a/src/core/Cline.ts +++ b/src/core/Cline.ts @@ -1080,7 +1080,7 @@ export class Cline extends EventEmitter { async *attemptApiRequest(previousApiReqIndex: number, retryAttempt: number = 0): ApiStream { let mcpHub: McpHub | undefined - const { mcpEnabled, alwaysApproveResubmit, requestDelaySeconds, rateLimitSeconds } = + const { apiConfiguration, mcpEnabled, alwaysApproveResubmit, requestDelaySeconds } = (await this.providerRef.deref()?.getState()) ?? {} let rateLimitDelay = 0 @@ -1089,7 +1089,7 @@ export class Cline extends EventEmitter { if (this.lastApiRequestTime) { const now = Date.now() const timeSinceLastRequest = now - this.lastApiRequestTime - const rateLimit = rateLimitSeconds || 0 + const rateLimit = apiConfiguration?.rateLimitSeconds || 0 rateLimitDelay = Math.ceil(Math.max(0, rateLimit * 1000 - timeSinceLastRequest) / 1000) } diff --git a/src/core/config/ProviderSettingsManager.ts b/src/core/config/ProviderSettingsManager.ts index 8b9c5e23508..35ee6709a0a 100644 --- a/src/core/config/ProviderSettingsManager.ts +++ b/src/core/config/ProviderSettingsManager.ts @@ -32,12 +32,7 @@ export class ProviderSettingsManager { private readonly defaultProviderProfiles: ProviderProfiles = { currentApiConfigName: "default", - apiConfigs: { - default: { - id: this.defaultConfigId, - rateLimitSeconds: 0, - }, - }, + apiConfigs: { default: { id: this.defaultConfigId } }, modeApiConfigs: this.defaultModeApiConfigs, migrations: { rateLimitSecondsMigrated: true, // Mark as migrated on fresh installs From 2151b5f56c5ad09bc7d8cccf516322e9c096dde2 Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Mon, 7 Apr 2025 16:33:56 -0700 Subject: [PATCH 2/3] remove a bunch of unused rateLimitSeconds references --- evals/packages/types/src/roo-code-defaults.ts | 1 - evals/packages/types/src/roo-code.ts | 2 +- src/core/webview/ClineProvider.ts | 3 --- src/core/webview/__tests__/ClineProvider.test.ts | 1 - src/core/webview/webviewMessageHandler.ts | 4 ---- src/shared/ExtensionMessage.ts | 2 -- src/shared/WebviewMessage.ts | 1 - webview-ui/src/components/settings/ExperimentalSettings.tsx | 2 +- webview-ui/src/context/ExtensionStateContext.tsx | 4 ---- .../src/context/__tests__/ExtensionStateContext.test.tsx | 1 - 10 files changed, 2 insertions(+), 19 deletions(-) diff --git a/evals/packages/types/src/roo-code-defaults.ts b/evals/packages/types/src/roo-code-defaults.ts index 940b9bfd87c..8def51f0853 100644 --- a/evals/packages/types/src/roo-code-defaults.ts +++ b/evals/packages/types/src/roo-code-defaults.ts @@ -59,7 +59,6 @@ export const rooCodeDefaults: RooCodeSettings = { terminalOutputLineLimit: 500, terminalShellIntegrationTimeout: 15000, - rateLimitSeconds: 0, diffEnabled: true, fuzzyMatchThreshold: 1.0, experiments: { diff --git a/evals/packages/types/src/roo-code.ts b/evals/packages/types/src/roo-code.ts index 423df28377d..1114ee7726a 100644 --- a/evals/packages/types/src/roo-code.ts +++ b/evals/packages/types/src/roo-code.ts @@ -518,7 +518,7 @@ export const globalSettingsSchema = z.object({ terminalOutputLineLimit: z.number().optional(), terminalShellIntegrationTimeout: z.number().optional(), - rateLimitSeconds: z.number().optional(), + rateLimitSeconds: z.number().optional(), // this can go away in a future major release diffEnabled: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), experiments: experimentsSchema.optional(), diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 0d3f21478a9..7e4409323d8 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1202,7 +1202,6 @@ export class ClineProvider extends EventEmitter implements enableMcpServerCreation, alwaysApproveResubmit, requestDelaySeconds, - rateLimitSeconds, currentApiConfigName, listApiConfigMeta, pinnedApiConfigs, @@ -1270,7 +1269,6 @@ export class ClineProvider extends EventEmitter implements enableMcpServerCreation: enableMcpServerCreation ?? true, alwaysApproveResubmit: alwaysApproveResubmit ?? false, requestDelaySeconds: requestDelaySeconds ?? 10, - rateLimitSeconds: rateLimitSeconds ?? 0, currentApiConfigName: currentApiConfigName ?? "default", listApiConfigMeta: listApiConfigMeta ?? [], pinnedApiConfigs: pinnedApiConfigs ?? {}, @@ -1358,7 +1356,6 @@ export class ClineProvider extends EventEmitter implements enableMcpServerCreation: stateValues.enableMcpServerCreation ?? true, alwaysApproveResubmit: stateValues.alwaysApproveResubmit ?? false, requestDelaySeconds: Math.max(5, stateValues.requestDelaySeconds ?? 10), - rateLimitSeconds: stateValues.rateLimitSeconds ?? 0, currentApiConfigName: stateValues.currentApiConfigName ?? "default", listApiConfigMeta: stateValues.listApiConfigMeta ?? [], pinnedApiConfigs: stateValues.pinnedApiConfigs ?? {}, diff --git a/src/core/webview/__tests__/ClineProvider.test.ts b/src/core/webview/__tests__/ClineProvider.test.ts index 9f89a01e9f2..a034a58861d 100644 --- a/src/core/webview/__tests__/ClineProvider.test.ts +++ b/src/core/webview/__tests__/ClineProvider.test.ts @@ -414,7 +414,6 @@ describe("ClineProvider", () => { mcpEnabled: true, enableMcpServerCreation: false, requestDelaySeconds: 5, - rateLimitSeconds: 0, mode: defaultModeSlug, customModes: [], experiments: experimentDefault, diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 8e1d6637b63..c8c61a4e55a 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -717,10 +717,6 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We await updateGlobalState("requestDelaySeconds", message.value ?? 5) await provider.postStateToWebview() break - case "rateLimitSeconds": - await updateGlobalState("rateLimitSeconds", message.value ?? 0) - await provider.postStateToWebview() - break case "writeDelayMs": await updateGlobalState("writeDelayMs", message.value) await provider.postStateToWebview() diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 1a0d5035805..38277a7c2de 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -153,7 +153,6 @@ export type ExtensionState = Pick< // | "maxReadFileLine" // Optional in GlobalSettings, required here. | "terminalOutputLineLimit" | "terminalShellIntegrationTimeout" - // | "rateLimitSeconds" // Optional in GlobalSettings, required here. | "diffEnabled" | "fuzzyMatchThreshold" // | "experiments" // Optional in GlobalSettings, required here. @@ -187,7 +186,6 @@ export type ExtensionState = Pick< showRooIgnoredFiles: boolean // Whether to show .rooignore'd files in listings maxReadFileLine: number // Maximum number of lines to read from a file before truncating - rateLimitSeconds: number // Minimum time between successive requests (0 = disabled). experiments: Record // Map of experiment IDs to their enabled state mcpEnabled: boolean diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index 2cb16589884..972845959e3 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -87,7 +87,6 @@ export interface WebviewMessage { | "searchCommits" | "alwaysApproveResubmit" | "requestDelaySeconds" - | "rateLimitSeconds" | "setApiConfigPassword" | "requestVsCodeLmModels" | "mode" diff --git a/webview-ui/src/components/settings/ExperimentalSettings.tsx b/webview-ui/src/components/settings/ExperimentalSettings.tsx index bff96d092bd..a2d6fbd274f 100644 --- a/webview-ui/src/components/settings/ExperimentalSettings.tsx +++ b/webview-ui/src/components/settings/ExperimentalSettings.tsx @@ -13,7 +13,7 @@ import { ExperimentalFeature } from "./ExperimentalFeature" type ExperimentalSettingsProps = HTMLAttributes & { setCachedStateField: SetCachedStateField< - "rateLimitSeconds" | "terminalOutputLineLimit" | "maxOpenTabsContext" | "diffEnabled" | "fuzzyMatchThreshold" + "terminalOutputLineLimit" | "maxOpenTabsContext" | "diffEnabled" | "fuzzyMatchThreshold" > experiments: Record setExperimentEnabled: SetExperimentEnabled diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index 33be4e1509b..477c9f9f7c5 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -58,8 +58,6 @@ export interface ExtensionStateContextType extends ExtensionState { setAlwaysApproveResubmit: (value: boolean) => void requestDelaySeconds: number setRequestDelaySeconds: (value: number) => void - rateLimitSeconds: number - setRateLimitSeconds: (value: number) => void setCurrentApiConfigName: (value: string) => void setListApiConfigMeta: (value: ApiConfigMeta[]) => void mode: Mode @@ -142,7 +140,6 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode enableMcpServerCreation: true, alwaysApproveResubmit: false, requestDelaySeconds: 5, - rateLimitSeconds: 0, // Minimum time between successive requests (0 = disabled) currentApiConfigName: "default", listApiConfigMeta: [], mode: defaultModeSlug, @@ -296,7 +293,6 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode setState((prevState) => ({ ...prevState, enableMcpServerCreation: value })), setAlwaysApproveResubmit: (value) => setState((prevState) => ({ ...prevState, alwaysApproveResubmit: value })), setRequestDelaySeconds: (value) => setState((prevState) => ({ ...prevState, requestDelaySeconds: value })), - setRateLimitSeconds: (value) => setState((prevState) => ({ ...prevState, rateLimitSeconds: value })), setCurrentApiConfigName: (value) => setState((prevState) => ({ ...prevState, currentApiConfigName: value })), setListApiConfigMeta, setMode: (value: Mode) => setState((prevState) => ({ ...prevState, mode: value })), diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.test.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.test.tsx index c4f1d163add..9113f7a8dbc 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.test.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.test.tsx @@ -193,7 +193,6 @@ describe("mergeExtensionState", () => { checkpointStorage: "task", writeDelayMs: 1000, requestDelaySeconds: 5, - rateLimitSeconds: 0, mode: "default", experiments: {} as Record, customModes: [], From 43bbf8451868d2d8641ec0d34a4902182968e7fd Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Tue, 8 Apr 2025 08:14:14 -0700 Subject: [PATCH 3/3] rateLimitSettings field def in GlobalSettingsRecord isn't needed for migration --- evals/packages/types/src/roo-code.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/evals/packages/types/src/roo-code.ts b/evals/packages/types/src/roo-code.ts index 1114ee7726a..22bff70d16e 100644 --- a/evals/packages/types/src/roo-code.ts +++ b/evals/packages/types/src/roo-code.ts @@ -518,7 +518,6 @@ export const globalSettingsSchema = z.object({ terminalOutputLineLimit: z.number().optional(), terminalShellIntegrationTimeout: z.number().optional(), - rateLimitSeconds: z.number().optional(), // this can go away in a future major release diffEnabled: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), experiments: experimentsSchema.optional(), @@ -588,7 +587,6 @@ const globalSettingsRecord: GlobalSettingsRecord = { terminalOutputLineLimit: undefined, terminalShellIntegrationTimeout: undefined, - rateLimitSeconds: undefined, diffEnabled: undefined, fuzzyMatchThreshold: undefined, experiments: undefined,