🗣 fix: Add Various State Change Announcements (#11495)
Some checks are pending
Docker Dev Branch Images Build / build (Dockerfile, lc-dev, node) (push) Waiting to run
Docker Dev Branch Images Build / build (Dockerfile.multi, lc-dev-api, api-build) (push) Waiting to run

* fix: Agent Builder Reset button announcements

* fix: special variables announcements

* fix: model select announcements

* fix: prompt deletion announcement

* refactor: encapsulate model display name logic

* chore: address comments

* chore: re-order i18n strings
This commit is contained in:
Dustin Healy 2026-02-05 16:42:15 +01:00 committed by GitHub
parent fcb363403a
commit 46624798b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 39 additions and 2 deletions

View file

@ -1,5 +1,5 @@
import debounce from 'lodash/debounce';
import React, { createContext, useContext, useState, useMemo } from 'react';
import React, { createContext, useContext, useState, useMemo, useCallback } from 'react';
import { EModelEndpoint, isAgentsEndpoint, isAssistantsEndpoint } from 'librechat-data-provider';
import type * as t from 'librechat-data-provider';
import type { Endpoint, SelectedValues } from '~/common';
@ -8,8 +8,9 @@ import {
useSelectorEffects,
useKeyDialog,
useEndpoints,
useLocalize,
} from '~/hooks';
import { useAgentsMapContext, useAssistantsMapContext } from '~/Providers';
import { useAgentsMapContext, useAssistantsMapContext, useLiveAnnouncer } from '~/Providers';
import { useGetEndpointsQuery, useListAgentsQuery } from '~/data-provider';
import { useModelSelectorChatContext } from './ModelSelectorChatContext';
import useSelectMention from '~/hooks/Input/useSelectMention';
@ -59,6 +60,8 @@ export function ModelSelectorProvider({ children, startupConfig }: ModelSelector
const { data: endpointsConfig } = useGetEndpointsQuery();
const { endpoint, model, spec, agent_id, assistant_id, conversation, newConversation } =
useModelSelectorChatContext();
const localize = useLocalize();
const { announcePolite } = useLiveAnnouncer();
const modelSpecs = useMemo(() => {
const specs = startupConfig?.modelSpecs?.list ?? [];
if (!agentsMap) {
@ -93,6 +96,21 @@ export function ModelSelectorProvider({ children, startupConfig }: ModelSelector
endpointsConfig,
});
const getModelDisplayName = useCallback(
(endpoint: Endpoint, model: string): string => {
if (isAgentsEndpoint(endpoint.value)) {
return endpoint.agentNames?.[model] ?? agentsMap?.[model]?.name ?? model;
}
if (isAssistantsEndpoint(endpoint.value)) {
return endpoint.assistantNames?.[model] ?? model;
}
return model;
},
[agentsMap],
);
const { onSelectEndpoint, onSelectSpec } = useSelectMention({
// presets,
modelSpecs,
@ -207,6 +225,10 @@ export function ModelSelectorProvider({ children, startupConfig }: ModelSelector
model,
modelSpec: '',
});
const modelDisplayName = getModelDisplayName(endpoint, model);
const announcement = localize('com_ui_model_selected', { 0: modelDisplayName });
announcePolite({ message: announcement, isStatus: true });
};
const value = {