Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(feat): Enable memory condensation from settings page #6868

Merged
merged 9 commits into from
Feb 21, 2025
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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();
Expand Down
4 changes: 1 addition & 3 deletions frontend/src/hooks/mutation/use-save-settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<PostSettings>) => {
const resetLlmApiKey = settings.LLM_API_KEY === "";
Expand All @@ -20,8 +19,7 @@ const saveSettingsMutationFn = async (settings: Partial<PostSettings>) => {
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,
};

Expand Down
14 changes: 14 additions & 0 deletions frontend/src/routes/account-settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -102,13 +102,16 @@ function AccountSettings() {

const userConsentsToAnalytics =
formData.get("enable-analytics-switch")?.toString() === "on";
const enableMemoryCondenser =
formData.get("enable-memory-condenser-switch")?.toString() === "on";

saveSettings(
{
github_token:
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:
Expand Down Expand Up @@ -290,6 +293,17 @@ function AccountSettings() {
Enable confirmation mode
</SettingsSwitch>
)}

{llmConfigMode === "advanced" && (
<SettingsSwitch
testId="enable-memory-condenser-switch"
name="enable-memory-condenser-switch"
defaultIsToggled={!!settings.ENABLE_DEFAULT_CONDENSER}
>
Enable memory condensation
</SettingsSwitch>
)}

{llmConfigMode === "advanced" && confirmationModeIsEnabled && (
<div>
<SettingsDropdownInput
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/services/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};

Expand Down
1 change: 0 additions & 1 deletion frontend/src/utils/feature-flags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,4 @@ function loadFeatureFlag(
}
}

export const MEMORY_CONDENSER = loadFeatureFlag("MEMORY_CONDENSER");
export const BILLING_SETTINGS = () => loadFeatureFlag("BILLING_SETTINGS");
5 changes: 5 additions & 0 deletions frontend/src/utils/settings-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = true;

if (isUsingAdvancedOptions) {
CUSTOM_LLM_MODEL = formData.get("custom-model")?.toString();
Expand All @@ -34,13 +35,15 @@ 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 {
CUSTOM_LLM_MODEL,
LLM_BASE_URL,
CONFIRMATION_MODE,
SECURITY_ANALYZER,
ENABLE_DEFAULT_CONDENSER,
};
};

Expand All @@ -53,6 +56,7 @@ export const extractSettings = (formData: FormData): Partial<Settings> => {
LLM_BASE_URL,
CONFIRMATION_MODE,
SECURITY_ANALYZER,
ENABLE_DEFAULT_CONDENSER,
} = extractAdvancedFormData(formData);

return {
Expand All @@ -63,5 +67,6 @@ export const extractSettings = (formData: FormData): Partial<Settings> => {
LLM_BASE_URL,
CONFIRMATION_MODE,
SECURITY_ANALYZER,
ENABLE_DEFAULT_CONDENSER,
};
};
Loading