From 0d5e776424b5c12a9588ffbc2f921b33d39e4e8b Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 3 Sep 2024 19:12:13 +0100 Subject: [PATCH] preserve apikeys on save --- .../portal/settings/ai/ConfigModal.svelte | 3 ++- .../builder/portal/settings/ai/index.svelte | 10 ++++----- packages/types/src/documents/global/config.ts | 22 ++++++++++--------- .../src/api/controllers/global/configs.ts | 11 ++++++---- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/packages/builder/src/pages/builder/portal/settings/ai/ConfigModal.svelte b/packages/builder/src/pages/builder/portal/settings/ai/ConfigModal.svelte index 703f1e8129..747a070c6b 100644 --- a/packages/builder/src/pages/builder/portal/settings/ai/ConfigModal.svelte +++ b/packages/builder/src/pages/builder/portal/settings/ai/ConfigModal.svelte @@ -22,6 +22,7 @@ const {provider, defaultModel, name, apiKey} = config validation = provider && defaultModel && name && apiKey } + $: canEditBaseUrl = config.provider && ConfigMap[config.provider].baseUrl === "" function prefillConfig(evt) { const provider = evt.detail @@ -70,7 +71,7 @@
- +
diff --git a/packages/builder/src/pages/builder/portal/settings/ai/index.svelte b/packages/builder/src/pages/builder/portal/settings/ai/index.svelte index d0ced7041a..57435168ac 100644 --- a/packages/builder/src/pages/builder/portal/settings/ai/index.svelte +++ b/packages/builder/src/pages/builder/portal/settings/ai/index.svelte @@ -60,10 +60,9 @@ } try { - const savedConfig = await API.saveConfig(fullAIConfig) - fullAIConfig._rev = savedConfig._rev - fullAIConfig._id = savedConfig._id + await API.saveConfig(fullAIConfig) notifications.success(`Successfully saved and activated AI Configuration`) + await fetchAIConfig() } catch (error) { notifications.error( `Failed to save AI Configuration, reason: ${error?.message || "Unknown"}` @@ -76,10 +75,9 @@ delete fullAIConfig.config[key] try { - const savedConfig = await API.saveConfig(fullAIConfig) - fullAIConfig._rev = savedConfig._rev - fullAIConfig._id = savedConfig._id + await API.saveConfig(fullAIConfig) notifications.success(`Deleted config`) + await fetchAIConfig() } catch (error) { notifications.error( `Failed to delete config, reason: ${error?.message || "Unknown"}` diff --git a/packages/types/src/documents/global/config.ts b/packages/types/src/documents/global/config.ts index 249893520c..35caedef63 100644 --- a/packages/types/src/documents/global/config.ts +++ b/packages/types/src/documents/global/config.ts @@ -112,18 +112,20 @@ export interface SCIMInnerConfig { export interface SCIMConfig extends Config {} export interface AIInnerConfig { - // TODO: should be enum - provider: string - isDefault: boolean - name: string - active: boolean - baseUrl: string - apiKey: string - // TODO: should be enum - defaultModel: string + [key: string]: { + // TODO: should be enum + provider: string + isDefault: boolean + name: string + active: boolean + baseUrl: string + apiKey: string + // TODO: should be enum + defaultModel: string + } } -export interface AIConfig extends Config {} +export interface AIConfig extends Config {} export const isSettingsConfig = (config: Config): config is SettingsConfig => config.type === ConfigType.SETTINGS diff --git a/packages/worker/src/api/controllers/global/configs.ts b/packages/worker/src/api/controllers/global/configs.ts index 0b8e525eb8..1b66289f47 100644 --- a/packages/worker/src/api/controllers/global/configs.ts +++ b/packages/worker/src/api/controllers/global/configs.ts @@ -200,11 +200,14 @@ async function verifyOIDCConfig(config: OIDCConfigs) { } async function verifyAIConfig(config: AIConfig, existingConfig?: AIConfig) { + if (!existingConfig) return + // ensure that the redacted API keys are not overwritten in the DB - // for (let aiConfig of existingConfig) { - // - // } - return true + for (let uuid in existingConfig.config) { + if (config[uuid]?.apiKey === PASSWORD_REPLACEMENT) { + config[uuid].apiKey = existingConfig.config[uuid].apiKey + } + } } export async function save(ctx: UserCtx) {