From 9b0110a503f8a42e1c177ee4b1e8eb678b731bfe Mon Sep 17 00:00:00 2001 From: openhands Date: Thu, 20 Feb 2025 20:00:53 +0000 Subject: [PATCH 1/7] feat: move memory condenser control from feature flag to settings - Remove MEMORY_CONDENSER feature flag - Add memory condenser switch to Additional Settings section - Update form submission to handle memory condenser setting --- frontend/src/routes/account-settings.tsx | 11 +++++++++++ frontend/src/utils/feature-flags.ts | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/frontend/src/routes/account-settings.tsx b/frontend/src/routes/account-settings.tsx index 05116104e304..8d9d62b5b237 100644 --- a/frontend/src/routes/account-settings.tsx +++ b/frontend/src/routes/account-settings.tsx @@ -102,6 +102,8 @@ function AccountSettings() { const userConsentsToAnalytics = formData.get("enable-analytics-switch")?.toString() === "on"; + const enableMemoryCondenser = + formData.get("enable-memory-condenser-switch")?.toString() === "on"; saveSettings( { @@ -109,6 +111,7 @@ function AccountSettings() { formData.get("github-token-input")?.toString() || undefined, LANGUAGE: languageValue, user_consents_to_analytics: userConsentsToAnalytics, + ENABLE_DEFAULT_CONDENSER: enableMemoryCondenser, LLM_MODEL: customLlmModel || fullLlmModel, LLM_BASE_URL: formData.get("base-url-input")?.toString() || "", LLM_API_KEY: @@ -384,6 +387,14 @@ function AccountSettings() { > Enable analytics + + + Enable memory condenser + diff --git a/frontend/src/utils/feature-flags.ts b/frontend/src/utils/feature-flags.ts index be69f62a0fd5..66cf22c34e2e 100644 --- a/frontend/src/utils/feature-flags.ts +++ b/frontend/src/utils/feature-flags.ts @@ -12,5 +12,4 @@ function loadFeatureFlag( } } -export const MEMORY_CONDENSER = loadFeatureFlag("MEMORY_CONDENSER"); export const BILLING_SETTINGS = () => loadFeatureFlag("BILLING_SETTINGS"); From e4e4506639e33dcf7cbf8ca4644b04432f453563 Mon Sep 17 00:00:00 2001 From: Calvin Smith Date: Thu, 20 Feb 2025 13:22:12 -0700 Subject: [PATCH 2/7] adding switch to acct settings page --- .../shared/modals/settings/settings-form.tsx | 4 ---- frontend/src/hooks/mutation/use-save-settings.ts | 4 +--- frontend/src/routes/account-settings.tsx | 15 ++++++++------- frontend/src/utils/settings-utils.ts | 2 ++ 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/frontend/src/components/shared/modals/settings/settings-form.tsx b/frontend/src/components/shared/modals/settings/settings-form.tsx index dcd0f2f99e96..d998c1e95ee4 100644 --- a/frontend/src/components/shared/modals/settings/settings-form.tsx +++ b/frontend/src/components/shared/modals/settings/settings-form.tsx @@ -10,7 +10,6 @@ import { useEndSession } from "#/hooks/use-end-session"; import { ModalBackdrop } from "../modal-backdrop"; import { ModelSelector } from "./model-selector"; import { useCurrentSettings } from "#/context/settings-context"; -import { MEMORY_CONDENSER } from "#/utils/feature-flags"; import { Settings } from "#/types/settings"; import { BrandButton } from "#/components/features/settings/brand-button"; import { KeyStatusIcon } from "#/components/features/settings/key-status-icon"; @@ -44,9 +43,6 @@ export function SettingsForm({ settings, models, onClose }: SettingsFormProps) { const handleFormSubmission = async (formData: FormData) => { const newSettings = extractSettings(formData); - // Inject the condenser config from the current feature flag value - newSettings.ENABLE_DEFAULT_CONDENSER = MEMORY_CONDENSER; - await saveUserSettings(newSettings); onClose(); resetOngoingSession(); diff --git a/frontend/src/hooks/mutation/use-save-settings.ts b/frontend/src/hooks/mutation/use-save-settings.ts index 0a12f6f1eb4e..75f9fd0b4dd4 100644 --- a/frontend/src/hooks/mutation/use-save-settings.ts +++ b/frontend/src/hooks/mutation/use-save-settings.ts @@ -2,7 +2,6 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { DEFAULT_SETTINGS } from "#/services/settings"; import OpenHands from "#/api/open-hands"; import { PostSettings, PostApiSettings } from "#/types/settings"; -import { MEMORY_CONDENSER } from "#/utils/feature-flags"; const saveSettingsMutationFn = async (settings: Partial) => { const resetLlmApiKey = settings.LLM_API_KEY === ""; @@ -20,8 +19,7 @@ const saveSettingsMutationFn = async (settings: Partial) => { remote_runtime_resource_factor: settings.REMOTE_RUNTIME_RESOURCE_FACTOR, github_token: settings.github_token, unset_github_token: settings.unset_github_token, - enable_default_condenser: - MEMORY_CONDENSER || settings.ENABLE_DEFAULT_CONDENSER, + enable_default_condenser: settings.ENABLE_DEFAULT_CONDENSER, user_consents_to_analytics: settings.user_consents_to_analytics, }; diff --git a/frontend/src/routes/account-settings.tsx b/frontend/src/routes/account-settings.tsx index 8d9d62b5b237..b6c273972802 100644 --- a/frontend/src/routes/account-settings.tsx +++ b/frontend/src/routes/account-settings.tsx @@ -293,6 +293,14 @@ function AccountSettings() { Enable confirmation mode )} + {llmConfigMode === "advanced" && + Enable memory condensation + } {llmConfigMode === "advanced" && confirmationModeIsEnabled && (
- - Enable memory condenser -
diff --git a/frontend/src/utils/settings-utils.ts b/frontend/src/utils/settings-utils.ts index b8533b3a4991..747d8300ce5f 100644 --- a/frontend/src/utils/settings-utils.ts +++ b/frontend/src/utils/settings-utils.ts @@ -25,6 +25,7 @@ const extractAdvancedFormData = (formData: FormData) => { let LLM_BASE_URL: string | undefined; let CONFIRMATION_MODE = false; let SECURITY_ANALYZER: string | undefined; + let ENABLE_DEFAULT_CONDENSER = false; if (isUsingAdvancedOptions) { CUSTOM_LLM_MODEL = formData.get("custom-model")?.toString(); @@ -34,6 +35,7 @@ const extractAdvancedFormData = (formData: FormData) => { // only set securityAnalyzer if confirmationMode is enabled SECURITY_ANALYZER = formData.get("security-analyzer")?.toString(); } + ENABLE_DEFAULT_CONDENSER = keys.includes("enable-default-condenser"); } return { From 7fab4df24773711ae26c6c65eaa175ef1a03c18a Mon Sep 17 00:00:00 2001 From: Calvin Smith Date: Thu, 20 Feb 2025 13:49:50 -0700 Subject: [PATCH 3/7] addressing linting issues --- frontend/src/routes/account-settings.tsx | 20 ++++++++++++-------- frontend/src/utils/settings-utils.ts | 3 +++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/frontend/src/routes/account-settings.tsx b/frontend/src/routes/account-settings.tsx index b6c273972802..f7d9534ecad2 100644 --- a/frontend/src/routes/account-settings.tsx +++ b/frontend/src/routes/account-settings.tsx @@ -293,14 +293,18 @@ function AccountSettings() { Enable confirmation mode )} - {llmConfigMode === "advanced" && - Enable memory condensation - } + + {llmConfigMode === "advanced" && ( + + Enable memory condensation + + )} + {llmConfigMode === "advanced" && confirmationModeIsEnabled && (
{ LLM_BASE_URL, CONFIRMATION_MODE, SECURITY_ANALYZER, + ENABLE_DEFAULT_CONDENSER }; }; @@ -55,6 +56,7 @@ export const extractSettings = (formData: FormData): Partial => { LLM_BASE_URL, CONFIRMATION_MODE, SECURITY_ANALYZER, + ENABLE_DEFAULT_CONDENSER } = extractAdvancedFormData(formData); return { @@ -65,5 +67,6 @@ export const extractSettings = (formData: FormData): Partial => { LLM_BASE_URL, CONFIRMATION_MODE, SECURITY_ANALYZER, + ENABLE_DEFAULT_CONDENSER }; }; From 04b979ee8857b453b8ae47c50fa99b8fd70bc68e Mon Sep 17 00:00:00 2001 From: Calvin Smith Date: Thu, 20 Feb 2025 13:52:13 -0700 Subject: [PATCH 4/7] more linting issues addressed --- frontend/src/routes/account-settings.tsx | 1 - frontend/src/utils/settings-utils.ts | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/frontend/src/routes/account-settings.tsx b/frontend/src/routes/account-settings.tsx index f7d9534ecad2..3aa24a3d0872 100644 --- a/frontend/src/routes/account-settings.tsx +++ b/frontend/src/routes/account-settings.tsx @@ -399,7 +399,6 @@ function AccountSettings() { > Enable analytics -
diff --git a/frontend/src/utils/settings-utils.ts b/frontend/src/utils/settings-utils.ts index 4636c64a6902..2b1ca72da100 100644 --- a/frontend/src/utils/settings-utils.ts +++ b/frontend/src/utils/settings-utils.ts @@ -43,7 +43,7 @@ const extractAdvancedFormData = (formData: FormData) => { LLM_BASE_URL, CONFIRMATION_MODE, SECURITY_ANALYZER, - ENABLE_DEFAULT_CONDENSER + ENABLE_DEFAULT_CONDENSER, }; }; @@ -56,7 +56,7 @@ export const extractSettings = (formData: FormData): Partial => { LLM_BASE_URL, CONFIRMATION_MODE, SECURITY_ANALYZER, - ENABLE_DEFAULT_CONDENSER + ENABLE_DEFAULT_CONDENSER, } = extractAdvancedFormData(formData); return { @@ -67,6 +67,6 @@ export const extractSettings = (formData: FormData): Partial => { LLM_BASE_URL, CONFIRMATION_MODE, SECURITY_ANALYZER, - ENABLE_DEFAULT_CONDENSER + ENABLE_DEFAULT_CONDENSER, }; }; From 20e76bf6f5c82fcb00456cdcfa8a45faf93b736a Mon Sep 17 00:00:00 2001 From: Calvin Smith Date: Fri, 21 Feb 2025 07:22:06 -0700 Subject: [PATCH 5/7] Update settings-utils.ts --- frontend/src/utils/settings-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/utils/settings-utils.ts b/frontend/src/utils/settings-utils.ts index 2b1ca72da100..f92959abaecf 100644 --- a/frontend/src/utils/settings-utils.ts +++ b/frontend/src/utils/settings-utils.ts @@ -25,7 +25,7 @@ const extractAdvancedFormData = (formData: FormData) => { let LLM_BASE_URL: string | undefined; let CONFIRMATION_MODE = false; let SECURITY_ANALYZER: string | undefined; - let ENABLE_DEFAULT_CONDENSER = false; + let ENABLE_DEFAULT_CONDENSER = true; if (isUsingAdvancedOptions) { CUSTOM_LLM_MODEL = formData.get("custom-model")?.toString(); From a8d68cb4f370da5c3b4ec65b00cd64ec63e8a1be Mon Sep 17 00:00:00 2001 From: Calvin Smith Date: Fri, 21 Feb 2025 09:02:39 -0700 Subject: [PATCH 6/7] Update account-settings.tsx --- frontend/src/routes/account-settings.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/routes/account-settings.tsx b/frontend/src/routes/account-settings.tsx index 3aa24a3d0872..9a5a5e534884 100644 --- a/frontend/src/routes/account-settings.tsx +++ b/frontend/src/routes/account-settings.tsx @@ -299,7 +299,6 @@ function AccountSettings() { testId="enable-memory-condenser-switch" name="enable-memory-condenser-switch" defaultIsToggled={!!settings.ENABLE_DEFAULT_CONDENSER} - isBeta > Enable memory condensation From 7e52e5cd0a88aaf52af9a8b9841c35cb60064968 Mon Sep 17 00:00:00 2001 From: Calvin Smith Date: Fri, 21 Feb 2025 09:19:49 -0700 Subject: [PATCH 7/7] setting condenser to default to on --- frontend/src/services/settings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/services/settings.ts b/frontend/src/services/settings.ts index 8b59bff04393..d315784dd58b 100644 --- a/frontend/src/services/settings.ts +++ b/frontend/src/services/settings.ts @@ -12,7 +12,7 @@ export const DEFAULT_SETTINGS: Settings = { SECURITY_ANALYZER: "", REMOTE_RUNTIME_RESOURCE_FACTOR: 1, GITHUB_TOKEN_IS_SET: false, - ENABLE_DEFAULT_CONDENSER: false, + ENABLE_DEFAULT_CONDENSER: true, USER_CONSENTS_TO_ANALYTICS: false, };