sunatest / frontend /src /hooks /react-query /agents /use-agent-workflows.ts
llama1's picture
Upload 781 files
5da4770 verified
import { createMutationHook, createQueryHook } from '@/hooks/use-query';
import { useQueryClient } from '@tanstack/react-query';
import { toast } from 'sonner';
import { workflowKeys } from './workflow-keys';
import {
CreateWorkflowRequest,
UpdateWorkflowRequest,
ExecuteWorkflowRequest,
getAgentWorkflows,
createAgentWorkflow,
updateAgentWorkflow,
deleteAgentWorkflow,
executeWorkflow,
getWorkflowExecutions
} from './workflow-utils';
export const useAgentWorkflows = (agentId: string) => {
return createQueryHook(
workflowKeys.agent(agentId),
() => getAgentWorkflows(agentId),
{
enabled: !!agentId,
staleTime: 30000,
}
)();
};
export const useCreateAgentWorkflow = () => {
const queryClient = useQueryClient();
return createMutationHook(
({ agentId, workflow }: { agentId: string; workflow: CreateWorkflowRequest }) =>
createAgentWorkflow(agentId, workflow),
{
onSuccess: (data, variables) => {
queryClient.invalidateQueries({ queryKey: workflowKeys.agent(variables.agentId) });
toast.success('Workflow created successfully');
},
}
)();
};
export const useUpdateAgentWorkflow = () => {
const queryClient = useQueryClient();
return createMutationHook(
({ agentId, workflowId, workflow }: { agentId: string; workflowId: string; workflow: UpdateWorkflowRequest }) =>
updateAgentWorkflow(agentId, workflowId, workflow),
{
onSuccess: (data, variables) => {
queryClient.invalidateQueries({ queryKey: workflowKeys.agent(variables.agentId) });
toast.success('Workflow updated successfully');
},
}
)();
};
export const useDeleteAgentWorkflow = () => {
const queryClient = useQueryClient();
return createMutationHook(
({ agentId, workflowId }: { agentId: string; workflowId: string }) =>
deleteAgentWorkflow(agentId, workflowId),
{
onSuccess: (_, variables) => {
queryClient.invalidateQueries({ queryKey: workflowKeys.agent(variables.agentId) });
toast.success('Workflow deleted successfully');
},
}
)();
};
export const useExecuteWorkflow = () => {
const queryClient = useQueryClient();
return createMutationHook(
({ agentId, workflowId, execution }: { agentId: string; workflowId: string; execution: ExecuteWorkflowRequest }) =>
executeWorkflow(agentId, workflowId, execution),
{
onSuccess: (_, variables) => {
queryClient.invalidateQueries({ queryKey: workflowKeys.executions(variables.agentId, variables.workflowId) });
toast.success('Workflow execution started');
},
}
)();
};
export const useWorkflowExecutions = (agentId: string, workflowId: string, limit: number = 20) => {
return createQueryHook(
workflowKeys.executions(agentId, workflowId),
() => getWorkflowExecutions(agentId, workflowId, limit),
{
enabled: !!agentId && !!workflowId,
staleTime: 10000, // 10 seconds
}
)();
};