From 649c7a603241a93badda4c92136ddf1968067a3f Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Tue, 17 Dec 2024 23:04:51 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix:=20Model=20Key=20Retrieval?= =?UTF-8?q?=20to=20Account=20for=20Bedrock=20Regions=20(#5029)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🔧 fix: model key retrieval logic to account for Bedrock region * fix: edit preset dialog styling and potential max depth error with agents endpoint --- .../components/Chat/Input/PopoverButtons.tsx | 19 ++++----- .../Chat/Menus/Presets/EditPresetDialog.tsx | 40 ++++++++++++++----- package-lock.json | 2 +- packages/data-provider/package.json | 2 +- packages/data-provider/src/schemas.ts | 6 ++- 5 files changed, 46 insertions(+), 23 deletions(-) diff --git a/client/src/components/Chat/Input/PopoverButtons.tsx b/client/src/components/Chat/Input/PopoverButtons.tsx index 1417318531..3b52799445 100644 --- a/client/src/components/Chat/Input/PopoverButtons.tsx +++ b/client/src/components/Chat/Input/PopoverButtons.tsx @@ -41,11 +41,11 @@ export default function PopoverButtons({ const { model: _model, endpoint: _endpoint, endpointType } = conversation ?? {}; const overrideEndpoint = overrideEndpointType ?? _overrideEndpoint; - const endpoint = overrideEndpoint ?? endpointType ?? _endpoint; + const endpoint = overrideEndpoint ?? endpointType ?? _endpoint ?? ''; const model = overrideModel ?? _model; - const isGenerativeModel = model?.toLowerCase()?.includes('gemini'); - const isChatModel = !isGenerativeModel && model?.toLowerCase()?.includes('chat'); + const isGenerativeModel = model?.toLowerCase()?.includes('gemini') ?? false; + const isChatModel = (!isGenerativeModel && model?.toLowerCase()?.includes('chat')) ?? false; const isTextModel = !isGenerativeModel && !isChatModel && /code|text/.test(model ?? ''); const { showExamples } = optionSettings; @@ -53,14 +53,14 @@ export default function PopoverButtons({ const triggerExamples = () => { setSettingsView(SettingsViews.default); - setOptionSettings((prev) => ({ ...prev, showExamples: !prev.showExamples })); + setOptionSettings((prev) => ({ ...prev, showExamples: !(prev.showExamples ?? false) })); }; const endpointSpecificbuttons: { [key: string]: TPopoverButton[] } = { [EModelEndpoint.google]: [ { - label: localize(showExamples ? 'com_hide_examples' : 'com_show_examples'), - buttonClass: isGenerativeModel || isTextModel ? 'disabled' : '', + label: localize(showExamples === true ? 'com_hide_examples' : 'com_show_examples'), + buttonClass: isGenerativeModel === true || isTextModel ? 'disabled' : '', handler: triggerExamples, icon: , }, @@ -109,7 +109,7 @@ export default function PopoverButtons({ ], }; - const endpointButtons = endpointSpecificbuttons[endpoint] ?? []; + const endpointButtons = (endpointSpecificbuttons[endpoint] as TPopoverButton[] | null) ?? []; const disabled = true; @@ -123,7 +123,7 @@ export default function PopoverButtons({ className={cn( button.buttonClass, 'border border-gray-300/50 focus:ring-1 focus:ring-green-500/90 dark:border-gray-500/50 dark:focus:ring-green-500', - 'ml-1 h-full bg-transparent px-2 py-1 text-xs font-medium font-normal text-black hover:bg-gray-100 hover:text-black dark:bg-transparent dark:text-white dark:hover:bg-gray-600 dark:hover:text-white', + 'ml-1 h-full bg-transparent px-2 py-1 text-xs font-normal text-black hover:bg-gray-100 hover:text-black dark:bg-transparent dark:text-white dark:hover:bg-gray-600 dark:hover:text-white', buttonClass ?? '', )} onClick={button.handler} @@ -133,6 +133,7 @@ export default function PopoverButtons({ ))} + {/* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition */} {disabled ? null : (
{additionalButtons[settingsView].map((button, index) => ( @@ -142,7 +143,7 @@ export default function PopoverButtons({ className={cn( button.buttonClass, 'flex justify-center border border-gray-300/50 focus:ring-1 focus:ring-green-500/90 dark:border-gray-500/50 dark:focus:ring-green-500', - 'h-full w-full bg-transparent px-2 py-1 text-xs font-medium font-normal text-black hover:bg-gray-100 hover:text-black dark:bg-transparent dark:text-white dark:hover:bg-gray-600 dark:hover:text-white', + 'h-full w-full bg-transparent px-2 py-1 text-xs font-normal text-black hover:bg-gray-100 hover:text-black dark:bg-transparent dark:text-white dark:hover:bg-gray-600 dark:hover:text-white', buttonClass ?? '', )} onClick={button.handler} diff --git a/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx b/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx index 05a7da6b56..95d0e6f906 100644 --- a/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx +++ b/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx @@ -1,7 +1,7 @@ import { useRecoilState } from 'recoil'; -import { useCallback, useEffect } from 'react'; +import { useCallback, useEffect, useMemo } from 'react'; import { useQueryClient } from '@tanstack/react-query'; -import { QueryKeys } from 'librechat-data-provider'; +import { QueryKeys, isAgentsEndpoint } from 'librechat-data-provider'; import { useGetEndpointsQuery } from 'librechat-data-provider/react-query'; import type { TModelsConfig, TEndpointsConfig } from 'librechat-data-provider'; import { @@ -37,15 +37,26 @@ const EditPresetDialog = ({ }); const [presetModalVisible, setPresetModalVisible] = useRecoilState(store.presetModalVisible); - const { data: availableEndpoints = [] } = useGetEndpointsQuery({ + const { data: _endpoints = [] } = useGetEndpointsQuery({ select: mapEndpoints, }); + const availableEndpoints = useMemo(() => { + return _endpoints.filter((endpoint) => !isAgentsEndpoint(endpoint)); + }, [_endpoints]); + useEffect(() => { if (!preset) { return; } - if (!preset.endpoint) { + + if (isAgentsEndpoint(preset.endpoint)) { + return; + } + + const presetEndpoint = preset.endpoint ?? ''; + + if (!presetEndpoint) { return; } @@ -54,7 +65,7 @@ const EditPresetDialog = ({ return; } - const models = modelsConfig[preset.endpoint]; + const models = modelsConfig[presetEndpoint] as string[] | undefined; if (!models) { return; } @@ -75,7 +86,11 @@ const EditPresetDialog = ({ return; } - if (preset.agentOptions?.model && !models.includes(preset.agentOptions.model)) { + if ( + preset.agentOptions?.model != null && + preset.agentOptions.model && + !models.includes(preset.agentOptions.model) + ) { console.log('setting agent model', models[0]); setAgentOption('model')(models[0]); } @@ -102,9 +117,12 @@ const EditPresetDialog = ({ [queryClient, setOptions], ); - const { endpoint, endpointType, model } = preset || {}; + const { endpoint: _endpoint, endpointType, model } = preset || {}; + const endpoint = _endpoint ?? ''; if (!endpoint) { return null; + } else if (isAgentsEndpoint(endpoint)) { + return null; } return ( @@ -121,7 +139,7 @@ const EditPresetDialog = ({ title={`${localize('com_ui_edit') + ' ' + localize('com_endpoint_preset')} - ${ preset?.title }`} - className="h-full max-w-full overflow-y-auto pb-4 sm:w-[680px] sm:pb-0 md:h-[720px] md:w-[750px] md:overflow-y-hidden md:overflow-y-hidden lg:w-[950px] xl:h-[720px]" + className="h-full max-w-full overflow-y-auto pb-4 sm:w-[680px] sm:pb-0 md:h-[720px] md:w-[750px] md:overflow-y-hidden lg:w-[950px] xl:h-[720px]" main={
@@ -165,7 +183,7 @@ const EditPresetDialog = ({ {'ã…¤'}
-
+
diff --git a/package-lock.json b/package-lock.json index 117c397c67..7735e8879b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36498,7 +36498,7 @@ }, "packages/data-provider": { "name": "librechat-data-provider", - "version": "0.7.64", + "version": "0.7.65", "license": "ISC", "dependencies": { "axios": "^1.7.7", diff --git a/packages/data-provider/package.json b/packages/data-provider/package.json index 66c3fd80d5..3a73d30027 100644 --- a/packages/data-provider/package.json +++ b/packages/data-provider/package.json @@ -1,6 +1,6 @@ { "name": "librechat-data-provider", - "version": "0.7.64", + "version": "0.7.65", "description": "data services for librechat apps", "main": "dist/index.js", "module": "dist/index.es.js", diff --git a/packages/data-provider/src/schemas.ts b/packages/data-provider/src/schemas.ts index 0af144f953..830a4b1395 100644 --- a/packages/data-provider/src/schemas.ts +++ b/packages/data-provider/src/schemas.ts @@ -49,7 +49,11 @@ export enum BedrockProviders { export const getModelKey = (endpoint: EModelEndpoint | string, model: string) => { if (endpoint === EModelEndpoint.bedrock) { - return model.split('.')[0] as BedrockProviders; + const parts = model.split('.'); + const provider = [parts[0], parts[1]].find((part) => + Object.values(BedrockProviders).includes(part as BedrockProviders), + ); + return (provider ?? parts[0]) as BedrockProviders; } return model; };