| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | import { get, post } from './base'import type {  Collection,  Tool,} from '@/app/components/tools/types'import type { ToolWithProvider } from '@/app/components/workflow/types'import { useInvalid } from './use-base'import {  useMutation,  useQuery,  useQueryClient,} from '@tanstack/react-query'const NAME_SPACE = 'tools'const useAllToolProvidersKey = [NAME_SPACE, 'allToolProviders']export const useAllToolProviders = () => {  return useQuery<Collection[]>({    queryKey: useAllToolProvidersKey,    queryFn: () => get<Collection[]>('/workspaces/current/tool-providers'),  })}export const useInvalidateAllToolProviders = () => {  return useInvalid(useAllToolProvidersKey)}const useAllBuiltInToolsKey = [NAME_SPACE, 'builtIn']export const useAllBuiltInTools = () => {  return useQuery<ToolWithProvider[]>({    queryKey: useAllBuiltInToolsKey,    queryFn: () => get<ToolWithProvider[]>('/workspaces/current/tools/builtin'),  })}export const useInvalidateAllBuiltInTools = () => {  return useInvalid(useAllBuiltInToolsKey)}const useAllCustomToolsKey = [NAME_SPACE, 'customTools']export const useAllCustomTools = () => {  return useQuery<ToolWithProvider[]>({    queryKey: useAllCustomToolsKey,    queryFn: () => get<ToolWithProvider[]>('/workspaces/current/tools/api'),  })}export const useInvalidateAllCustomTools = () => {  return useInvalid(useAllCustomToolsKey)}const useAllWorkflowToolsKey = [NAME_SPACE, 'workflowTools']export const useAllWorkflowTools = () => {  return useQuery<ToolWithProvider[]>({    queryKey: useAllWorkflowToolsKey,    queryFn: () => get<ToolWithProvider[]>('/workspaces/current/tools/workflow'),  })}export const useInvalidateAllWorkflowTools = () => {  return useInvalid(useAllWorkflowToolsKey)}export const useBuiltinProviderInfo = (providerName: string) => {  return useQuery({    queryKey: [NAME_SPACE, 'builtin-provider-info', providerName],    queryFn: () => get<Collection>(`/workspaces/current/tool-provider/builtin/${providerName}/info`),  })}export const useInvalidateBuiltinProviderInfo = () => {  const queryClient = useQueryClient()  return (providerName: string) => {    queryClient.invalidateQueries(      {        queryKey: [NAME_SPACE, 'builtin-provider-info', providerName],      })  }}export const useBuiltinTools = (providerName: string) => {  return useQuery({    queryKey: [NAME_SPACE, 'builtin-provider-tools', providerName],    queryFn: () => get<Tool[]>(`/workspaces/current/tool-provider/builtin/${providerName}/tools`),  })}export const useUpdateProviderCredentials = ({  onSuccess,}: {  onSuccess?: () => void}) => {  return useMutation({    mutationKey: [NAME_SPACE, 'update-provider-credentials'],    mutationFn: (payload: { providerName: string, credentials: Record<string, any> }) => {      const { providerName, credentials } = payload      return post(`/workspaces/current/tool-provider/builtin/${providerName}/update`, {        body: {          credentials,        },      })    },    onSuccess,  })}export const useRemoveProviderCredentials = ({  onSuccess,}: {  onSuccess?: () => void}) => {  return useMutation({    mutationKey: [NAME_SPACE, 'remove-provider-credentials'],    mutationFn: (providerName: string) => {      return post(`/workspaces/current/tool-provider/builtin/${providerName}/delete`, {        body: {},      })    },    onSuccess,  })}
 |