mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-12 05:28:51 +01:00
* chore(store/families): linting * refactor: Update `createChatSearchParams` to use `tQueryParamsSchema` for allowed parameters and add `modelLabel` to schema * refactor: Enhance `useQueryParams` to streamline parameter processing and improve submission handling * chore: linting * fix: Add `disableParams` option to conversation handling and related schemas to prevent search params from updating due to use of default preset * fix: Update `createChatSearchParams` to correctly ignore `agent_id` when it matches `EPHEMERAL_AGENT_ID` * chore: revert modelLabel addition to query params, as no longer necessary due to `disableParams` * fix: Refine logic for `disableParams` to ensure correct handling of active preset comparison * fix: Add `disableParams` option to `NewConversationParams` and update related hooks for preset handling * fix: Refactor validation logic in `validateSettingDefinitions` to improve handling of `includeInput` and update conversation schema * fix: Bump version of `librechat-data-provider` to 0.7.83
75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
import {
|
|
Constants,
|
|
isAgentsEndpoint,
|
|
tQueryParamsSchema,
|
|
isAssistantsEndpoint,
|
|
} from 'librechat-data-provider';
|
|
import type { TConversation, TPreset } from 'librechat-data-provider';
|
|
|
|
const allowedParams = Object.keys(tQueryParamsSchema.shape);
|
|
export default function createChatSearchParams(
|
|
input: TConversation | TPreset | Record<string, string> | null,
|
|
): URLSearchParams {
|
|
if (input == null) {
|
|
return new URLSearchParams();
|
|
}
|
|
|
|
const params = new URLSearchParams();
|
|
|
|
if (input && typeof input === 'object' && !('endpoint' in input) && !('model' in input)) {
|
|
Object.entries(input as Record<string, string>).forEach(([key, value]) => {
|
|
if (value != null && allowedParams.includes(key)) {
|
|
params.set(key, value);
|
|
}
|
|
});
|
|
return params;
|
|
}
|
|
|
|
const conversation = input as TConversation | TPreset;
|
|
const endpoint = conversation.endpoint;
|
|
if (conversation.spec) {
|
|
return new URLSearchParams({ spec: conversation.spec });
|
|
}
|
|
if (
|
|
isAgentsEndpoint(endpoint) &&
|
|
conversation.agent_id &&
|
|
conversation.agent_id !== Constants.EPHEMERAL_AGENT_ID
|
|
) {
|
|
return new URLSearchParams({ agent_id: String(conversation.agent_id) });
|
|
} else if (isAssistantsEndpoint(endpoint) && conversation.assistant_id) {
|
|
return new URLSearchParams({ assistant_id: String(conversation.assistant_id) });
|
|
} else if (isAgentsEndpoint(endpoint) && !conversation.agent_id) {
|
|
return params;
|
|
} else if (isAssistantsEndpoint(endpoint) && !conversation.assistant_id) {
|
|
return params;
|
|
}
|
|
|
|
if (endpoint) {
|
|
params.set('endpoint', endpoint);
|
|
}
|
|
if (conversation.model) {
|
|
params.set('model', conversation.model);
|
|
}
|
|
|
|
const paramMap: Record<string, any> = {};
|
|
allowedParams.forEach((key) => {
|
|
if (key === 'agent_id' && conversation.agent_id === Constants.EPHEMERAL_AGENT_ID) {
|
|
return;
|
|
}
|
|
if (key !== 'endpoint' && key !== 'model') {
|
|
paramMap[key] = (conversation as any)[key];
|
|
}
|
|
});
|
|
|
|
return Object.entries(paramMap).reduce((params, [key, value]) => {
|
|
if (value != null) {
|
|
if (Array.isArray(value)) {
|
|
params.set(key, key === 'stop' ? value.join(',') : JSON.stringify(value));
|
|
} else {
|
|
params.set(key, String(value));
|
|
}
|
|
}
|
|
|
|
return params;
|
|
}, params);
|
|
}
|