mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-18 01:10:14 +01:00
77 lines
2.3 KiB
TypeScript
77 lines
2.3 KiB
TypeScript
|
|
import { QueryKeys, dataService, EModelEndpoint, defaultOrderQuery } from 'librechat-data-provider';
|
||
|
|
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
||
|
|
import type { QueryObserverResult, UseQueryOptions } from '@tanstack/react-query';
|
||
|
|
import type t from 'librechat-data-provider';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* AGENTS
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook for getting all available tools for A
|
||
|
|
*/
|
||
|
|
export const useAvailableAgentToolsQuery = (): QueryObserverResult<t.TPlugin[]> => {
|
||
|
|
const queryClient = useQueryClient();
|
||
|
|
const endpointsConfig = queryClient.getQueryData<t.TEndpointsConfig>([QueryKeys.endpoints]);
|
||
|
|
|
||
|
|
const enabled = !!endpointsConfig?.[EModelEndpoint.agents];
|
||
|
|
return useQuery<t.TPlugin[]>([QueryKeys.tools], () => dataService.getAvailableAgentTools(), {
|
||
|
|
refetchOnWindowFocus: false,
|
||
|
|
refetchOnReconnect: false,
|
||
|
|
refetchOnMount: false,
|
||
|
|
enabled,
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook for listing all Agents, with optional parameters provided for pagination and sorting
|
||
|
|
*/
|
||
|
|
export const useListAgentsQuery = <TData = t.AgentListResponse>(
|
||
|
|
params: t.AgentListParams = defaultOrderQuery,
|
||
|
|
config?: UseQueryOptions<t.AgentListResponse, unknown, TData>,
|
||
|
|
): QueryObserverResult<TData> => {
|
||
|
|
const queryClient = useQueryClient();
|
||
|
|
const endpointsConfig = queryClient.getQueryData<t.TEndpointsConfig>([QueryKeys.endpoints]);
|
||
|
|
|
||
|
|
const enabled = !!endpointsConfig?.[EModelEndpoint.agents];
|
||
|
|
return useQuery<t.AgentListResponse, unknown, TData>(
|
||
|
|
[QueryKeys.agents, params],
|
||
|
|
() => dataService.listAgents(params),
|
||
|
|
{
|
||
|
|
// Example selector to sort them by created_at
|
||
|
|
// select: (res) => {
|
||
|
|
// return res.data.sort((a, b) => a.created_at - b.created_at);
|
||
|
|
// },
|
||
|
|
refetchOnWindowFocus: false,
|
||
|
|
refetchOnReconnect: false,
|
||
|
|
refetchOnMount: false,
|
||
|
|
retry: false,
|
||
|
|
...config,
|
||
|
|
enabled: config?.enabled !== undefined ? config.enabled && enabled : enabled,
|
||
|
|
},
|
||
|
|
);
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook for retrieving details about a single agent
|
||
|
|
*/
|
||
|
|
export const useGetAgentByIdQuery = (
|
||
|
|
agent_id: string,
|
||
|
|
config?: UseQueryOptions<t.Agent>,
|
||
|
|
): QueryObserverResult<t.Agent> => {
|
||
|
|
return useQuery<t.Agent>(
|
||
|
|
[QueryKeys.agent, agent_id],
|
||
|
|
() =>
|
||
|
|
dataService.getAgentById({
|
||
|
|
agent_id,
|
||
|
|
}),
|
||
|
|
{
|
||
|
|
refetchOnWindowFocus: false,
|
||
|
|
refetchOnReconnect: false,
|
||
|
|
refetchOnMount: false,
|
||
|
|
retry: false,
|
||
|
|
...config,
|
||
|
|
},
|
||
|
|
);
|
||
|
|
};
|