🤖 feat: Add Agent Duplication Functionality with Permission (#5022)

* 🤖 feat: Add Agent Duplication Functionality with Permission

* 🐛 fix: Enhance Agent Duplication Logic and Filter Sensitive Data

* refactor(agents/v1): reorganized variables and error logging

* refactor: remove duplication permission

* chore: update librechat-data-provider version to 0.7.64

* fix: optimize agent duplication

---------

Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
This commit is contained in:
Danny Avila 2024-12-17 19:47:39 -05:00 committed by GitHub
parent 16eed5f32d
commit 18ad89be2c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 270 additions and 38 deletions

View file

@ -121,6 +121,43 @@ export const useDeleteAgentMutation = (
);
};
/**
* Hook for duplicating an agent
*/
export const useDuplicateAgentMutation = (
options?: t.DuplicateAgentMutationOptions,
): UseMutationResult<{ agent: t.Agent; actions: t.Action[] }, Error, t.DuplicateAgentBody> => {
const queryClient = useQueryClient();
return useMutation<{ agent: t.Agent; actions: t.Action[] }, Error, t.DuplicateAgentBody>(
(params: t.DuplicateAgentBody) => dataService.duplicateAgent(params),
{
onMutate: options?.onMutate,
onError: options?.onError,
onSuccess: ({ agent, actions }, variables, context) => {
const listRes = queryClient.getQueryData<t.AgentListResponse>([
QueryKeys.agents,
defaultOrderQuery,
]);
if (listRes) {
const currentAgents = [agent, ...listRes.data];
queryClient.setQueryData<t.AgentListResponse>([QueryKeys.agents, defaultOrderQuery], {
...listRes,
data: currentAgents,
});
}
const existingActions = queryClient.getQueryData<t.Action[]>([QueryKeys.actions]) || [];
queryClient.setQueryData<t.Action[]>([QueryKeys.actions], existingActions.concat(actions));
return options?.onSuccess?.({ agent, actions }, variables, context);
},
},
);
};
/**
* Hook for uploading an agent avatar
*/