diff --git a/codex-launcher_2.4.0_all.deb b/codex-launcher_2.4.0_all.deb index 208f14a..e9e008e 100644 Binary files a/codex-launcher_2.4.0_all.deb and b/codex-launcher_2.4.0_all.deb differ diff --git a/src/codex-launcher-gui b/src/codex-launcher-gui index d8bb6c7..94da304 100755 --- a/src/codex-launcher-gui +++ b/src/codex-launcher-gui @@ -410,22 +410,26 @@ def write_config_for_native(endpoint, selected_model): mc_path.write_text(json.dumps(model_catalog, indent=2)) lines = [ - f'model = "{selected_model}"\n', - f'model_provider = "{endpoint["name"]}"\n', + f'model = "{_toml_safe(selected_model)}"\n', + f'model_provider = "{_toml_safe(endpoint["name"])}"\n', f'model_catalog_json = "{mc_path}"\n', f'\n[model_providers."{endpoint["name"]}"]\n', - f'name = "{endpoint["name"]}"\n', - f'base_url = "{endpoint["base_url"]}"\n', - f'experimental_bearer_token = "{endpoint["api_key"]}"\n', + f'name = "{_toml_safe(endpoint["name"])}"\n', + f'base_url = "{_toml_safe(endpoint["base_url"])}"\n', + f'experimental_bearer_token = "{_toml_safe(endpoint["api_key"])}"\n', f'\n[profiles."{endpoint["name"]}"]\n', - f'model_provider = "{endpoint["name"]}"\n', - f'model = "{selected_model}"\n', + f'model_provider = "{_toml_safe(endpoint["name"])}"\n', + f'model = "{_toml_safe(selected_model)}"\n', f'model_catalog_json = "{mc_path}"\n', f'service_tier = "default"\n', f'approvals_reviewer = "user"\n', ] CONFIG.write_text("".join(lines)) +def _toml_safe(val): + val = str(val).replace('"', '\\"') + return val.split('\n', 1)[0].strip() + def write_config_for_translated(endpoint, selected_model): """Write config pointing at local proxy.""" backup_config() @@ -435,16 +439,16 @@ def write_config_for_translated(endpoint, selected_model): mc_path.write_text(json.dumps(model_catalog, indent=2)) lines = [ - f'model = "{selected_model}"\n', - f'model_provider = "{endpoint["name"]}"\n', + f'model = "{_toml_safe(selected_model)}"\n', + f'model_provider = "{_toml_safe(endpoint["name"])}"\n', f'model_catalog_json = "{mc_path}"\n', f'\n[model_providers."{endpoint["name"]}"]\n', - f'name = "{endpoint["name"]}"\n', + f'name = "{_toml_safe(endpoint["name"])}"\n', f'base_url = "http://127.0.0.1:8080"\n', - f'experimental_bearer_token = "{endpoint["api_key"]}"\n', + f'experimental_bearer_token = "{_toml_safe(endpoint["api_key"])}"\n', f'\n[profiles."{endpoint["name"]}"]\n', - f'model_provider = "{endpoint["name"]}"\n', - f'model = "{selected_model}"\n', + f'model_provider = "{_toml_safe(endpoint["name"])}"\n', + f'model = "{_toml_safe(selected_model)}"\n', f'model_catalog_json = "{mc_path}"\n', f'service_tier = "fast"\n', f'approvals_reviewer = "user"\n',