From 47631c1968a5ad04229743259d9a631385f15d71 Mon Sep 17 00:00:00 2001 From: macm1 Date: Mon, 23 Feb 2026 05:55:59 +0300 Subject: [PATCH] fix: store env vars in cfg[env][vars] not cfg[gateway][env] --- openclaw_assistant/oc_config_helper.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/openclaw_assistant/oc_config_helper.py b/openclaw_assistant/oc_config_helper.py index 08bdd5b..51f2e1e 100644 --- a/openclaw_assistant/oc_config_helper.py +++ b/openclaw_assistant/oc_config_helper.py @@ -64,7 +64,7 @@ def set_gateway_setting(key, value): def apply_gateway_settings(mode: str, bind_mode: str, port: int, enable_openai_api: bool, allow_insecure_auth: bool, env_vars: str = "{}"): """ - Apply gateway settings to OpenClaw config. + Apply gateway settings and environment variables to OpenClaw config. Args: mode: "local" or "remote" @@ -73,6 +73,7 @@ def apply_gateway_settings(mode: str, bind_mode: str, port: int, enable_openai_a enable_openai_api: Enable OpenAI-compatible Chat Completions endpoint allow_insecure_auth: Allow insecure HTTP authentication env_vars: JSON string with environment variables as key-value pairs (e.g., '{"VAR1":"value1","VAR2":"value2"}') + These are stored in cfg["env"]["vars"] and exported to the gateway process """ # Validate gateway mode if mode not in ["local", "remote"]: @@ -113,12 +114,24 @@ def apply_gateway_settings(mode: str, bind_mode: str, port: int, enable_openai_a control_ui = gateway["controlUi"] chat_completions = gateway["http"]["endpoints"]["chatCompletions"] + # Ensure env structure exists at root level + if "env" not in cfg: + cfg["env"] = { + "shellEnv": { + "enabled": True + }, + "vars": {} + } + + if "vars" not in cfg["env"]: + cfg["env"]["vars"] = {} + current_mode = gateway.get("mode", "") current_bind = gateway.get("bind", "") current_port = gateway.get("port", 18789) current_openai_api = chat_completions.get("enabled", False) current_insecure = control_ui.get("allowInsecureAuth", False) - current_env_vars = gateway.get("env", {}) + current_env_vars = cfg["env"]["vars"] changes = [] @@ -187,12 +200,12 @@ def apply_gateway_settings(mode: str, bind_mode: str, port: int, enable_openai_a return False if new_env_vars != current_env_vars: - gateway["env"] = new_env_vars + cfg["env"]["vars"] = new_env_vars if new_env_vars: var_names = ', '.join(sorted(new_env_vars.keys())) - changes.append(f"env: {var_names}") + changes.append(f"env.vars: {var_names}") else: - changes.append("env: cleared") + changes.append("env.vars: cleared") if changes: if write_config(cfg):