import type { Collection, Credential, CustomCollectionBackend, CustomParamSchema, Tool, ToolCredential, WorkflowToolProviderRequest, WorkflowToolProviderResponse, } from '@/app/components/tools/types' import { buildProviderQuery } from './_tools_util' import { get, post } from './base' export const fetchCollectionList = () => { return get('/workspaces/current/tool-providers') } export const fetchBuiltInToolList = (collectionName: string) => { return get(`/workspaces/current/tool-provider/builtin/${collectionName}/tools`) } export const fetchCustomToolList = (collectionName: string) => { const query = buildProviderQuery(collectionName) return get(`/workspaces/current/tool-provider/api/tools?${query}`) } export const fetchModelToolList = (collectionName: string) => { const query = buildProviderQuery(collectionName) return get(`/workspaces/current/tool-provider/model/tools?${query}`) } export const fetchWorkflowToolList = (appID: string) => { return get(`/workspaces/current/tool-provider/workflow/tools?workflow_tool_id=${appID}`) } export const fetchBuiltInToolCredentialSchema = (collectionName: string) => { return get( `/workspaces/current/tool-provider/builtin/${collectionName}/credentials_schema`, ) } export const fetchBuiltInToolCredential = (collectionName: string) => { return get>( `/workspaces/current/tool-provider/builtin/${collectionName}/credentials`, ) } export const updateBuiltInToolCredential = ( collectionName: string, credential: Record, ) => { return post(`/workspaces/current/tool-provider/builtin/${collectionName}/update`, { body: { credentials: credential, }, }) } export const removeBuiltInToolCredential = (collectionName: string) => { return post(`/workspaces/current/tool-provider/builtin/${collectionName}/delete`, { body: {}, }) } export const parseParamsSchema = (schema: string) => { return post<{ parameters_schema: CustomParamSchema[]; schema_type: string }>( '/workspaces/current/tool-provider/api/schema', { body: { schema, }, }, ) } export const fetchCustomCollection = (collectionName: string) => { const query = buildProviderQuery(collectionName) return get(`/workspaces/current/tool-provider/api/get?${query}`) } export const createCustomCollection = (collection: CustomCollectionBackend) => { return post('/workspaces/current/tool-provider/api/add', { body: { ...collection, }, }) } export const updateCustomCollection = (collection: CustomCollectionBackend) => { return post('/workspaces/current/tool-provider/api/update', { body: { ...collection, }, }) } export const removeCustomCollection = (collectionName: string) => { return post('/workspaces/current/tool-provider/api/delete', { body: { provider: collectionName, }, }) } export const importSchemaFromURL = (url: string) => { return get<{ schema: string }>('/workspaces/current/tool-provider/api/remote', { params: { url, }, }) } export const testAPIAvailable = (payload: { provider_name: string tool_name: string credentials: Credential schema_type: string schema: string parameters: Record }) => { return post('/workspaces/current/tool-provider/api/test/pre', { body: { ...payload, }, }) } export const createWorkflowToolProvider = ( payload: WorkflowToolProviderRequest & { workflow_app_id: string }, ) => { return post('/workspaces/current/tool-provider/workflow/create', { body: { ...payload }, }) } export const saveWorkflowToolProvider = ( payload: WorkflowToolProviderRequest & Partial<{ workflow_app_id: string workflow_tool_id: string }>, ) => { return post('/workspaces/current/tool-provider/workflow/update', { body: { ...payload }, }) } export const fetchWorkflowToolDetail = (toolID: string) => { return get( `/workspaces/current/tool-provider/workflow/get?workflow_tool_id=${toolID}`, ) } export const deleteWorkflowTool = (toolID: string) => { return post('/workspaces/current/tool-provider/workflow/delete', { body: { workflow_tool_id: toolID, }, }) }