| (async () => { | (async () => { | ||||
| setIsLoading(true) | setIsLoading(true) | ||||
| try { | try { | ||||
| const list = await fetchBuiltInToolList(collection.name) as Tool[] | |||||
| const list = await fetchBuiltInToolList(collection.name) | |||||
| setTools(list) | setTools(list) | ||||
| const currTool = list.find(tool => tool.name === toolName) | const currTool = list.find(tool => tool.name === toolName) | ||||
| if (currTool) { | if (currTool) { |
| useEffect(() => { | useEffect(() => { | ||||
| (async () => { | (async () => { | ||||
| const collectionList = await fetchCollectionList() as Collection[] | |||||
| const collectionList = await fetchCollectionList() | |||||
| setCollectionList(collectionList) | setCollectionList(collectionList) | ||||
| fetchAppDetail({ url: '/apps', id: appId }).then(async (res: any) => { | fetchAppDetail({ url: '/apps', id: appId }).then(async (res: any) => { | ||||
| setMode(res.mode) | setMode(res.mode) |
| (async () => { | (async () => { | ||||
| const customCollection = getCustomCollection() | const customCollection = getCustomCollection() | ||||
| try { | try { | ||||
| const { parameters_schema, schema_type } = await parseParamsSchema(debouncedSchema) as any | |||||
| const { parameters_schema, schema_type } = await parseParamsSchema(debouncedSchema) | |||||
| const newCollection = produce(customCollection, (draft) => { | const newCollection = produce(customCollection, (draft) => { | ||||
| draft.schema_type = schema_type | draft.schema_type = schema_type | ||||
| }) | }) |
| const [isDetailLoading, setIsDetailLoading] = useState(false) | const [isDetailLoading, setIsDetailLoading] = useState(false) | ||||
| const fetchCollectionList = async () => { | const fetchCollectionList = async () => { | ||||
| const list = await doFetchCollectionList() as Collection[] | |||||
| const list = await doFetchCollectionList() | |||||
| setCollectionList(list) | setCollectionList(list) | ||||
| if (list.length > 0 && currCollectionIndex === null) { | if (list.length > 0 && currCollectionIndex === null) { | ||||
| let index = 0 | let index = 0 | ||||
| setIsDetailLoading(true) | setIsDetailLoading(true) | ||||
| try { | try { | ||||
| if (currCollection.type === CollectionType.builtIn) { | if (currCollection.type === CollectionType.builtIn) { | ||||
| const list = await fetchBuiltInToolList(currCollection.name) as Tool[] | |||||
| const list = await fetchBuiltInToolList(currCollection.name) | |||||
| setCurrentTools(list) | setCurrentTools(list) | ||||
| } | } | ||||
| else { | else { | ||||
| const list = await fetchCustomToolList(currCollection.name) as Tool[] | |||||
| const list = await fetchCustomToolList(currCollection.name) | |||||
| setCurrentTools(list) | setCurrentTools(list) | ||||
| } | } | ||||
| } | } |
| const { team_credentials: credentialValue, name: collectionName } = collection | const { team_credentials: credentialValue, name: collectionName } = collection | ||||
| useEffect(() => { | useEffect(() => { | ||||
| fetchBuiltInToolCredentialSchema(collectionName).then((res) => { | fetchBuiltInToolCredentialSchema(collectionName).then((res) => { | ||||
| setCredentialSchema(toolCredentialToFormSchemas(res as any)) | |||||
| setCredentialSchema(toolCredentialToFormSchemas(res)) | |||||
| }) | }) | ||||
| }, []) | }, []) | ||||
| const [tempCredential, setTempCredential] = React.useState<any>(credentialValue) | const [tempCredential, setTempCredential] = React.useState<any>(credentialValue) |
| return | return | ||||
| (async () => { | (async () => { | ||||
| if (collection.type === CollectionType.custom) { | if (collection.type === CollectionType.custom) { | ||||
| const res = await fetchCustomCollection(collection.name) as any | |||||
| const res = await fetchCustomCollection(collection.name) | |||||
| setCustomCollection({ | setCustomCollection({ | ||||
| ...res, | ...res, | ||||
| provider: collection.name, | provider: collection.name, | ||||
| } as CustomCollectionBackend) | |||||
| }) | |||||
| } | } | ||||
| })() | })() | ||||
| }, [collection]) | }, [collection]) |
| import type { CurrentPlanInfoBackend, SubscriptionUrlsBackend } from '@/app/components/billing/type' | import type { CurrentPlanInfoBackend, SubscriptionUrlsBackend } from '@/app/components/billing/type' | ||||
| export const fetchCurrentPlanInfo = () => { | export const fetchCurrentPlanInfo = () => { | ||||
| return get<Promise<CurrentPlanInfoBackend>>('/features') | |||||
| return get<CurrentPlanInfoBackend>('/features') | |||||
| } | } | ||||
| export const fetchSubscriptionUrls = (plan: string, interval: string) => { | export const fetchSubscriptionUrls = (plan: string, interval: string) => { | ||||
| return get<Promise<SubscriptionUrlsBackend>>(`/billing/subscription?plan=${plan}&interval=${interval}`) | |||||
| return get<SubscriptionUrlsBackend>(`/billing/subscription?plan=${plan}&interval=${interval}`) | |||||
| } | } | ||||
| export const fetchBillingUrl = () => { | export const fetchBillingUrl = () => { | ||||
| return get<Promise<{ url: string }>>('/billing/invoices') | |||||
| return get<{ url: string }>('/billing/invoices') | |||||
| } | } |
| import { get, post } from './base' | import { get, post } from './base' | ||||
| import type { CustomCollectionBackend } from '@/app/components/tools/types' | |||||
| import type { Collection, CustomCollectionBackend, CustomParamSchema, Tool, ToolCredential } from '@/app/components/tools/types' | |||||
| export const fetchCollectionList = () => { | export const fetchCollectionList = () => { | ||||
| return get('/workspaces/current/tool-providers') | |||||
| return get<Collection[]>('/workspaces/current/tool-providers') | |||||
| } | } | ||||
| export const fetchBuiltInToolList = (collectionName: string) => { | export const fetchBuiltInToolList = (collectionName: string) => { | ||||
| return get(`/workspaces/current/tool-provider/builtin/${collectionName}/tools`) | |||||
| return get<Tool[]>(`/workspaces/current/tool-provider/builtin/${collectionName}/tools`) | |||||
| } | } | ||||
| export const fetchCustomToolList = (collectionName: string) => { | export const fetchCustomToolList = (collectionName: string) => { | ||||
| return get(`/workspaces/current/tool-provider/api/tools?provider=${collectionName}`) | |||||
| return get<Tool[]>(`/workspaces/current/tool-provider/api/tools?provider=${collectionName}`) | |||||
| } | } | ||||
| export const fetchBuiltInToolCredentialSchema = (collectionName: string) => { | export const fetchBuiltInToolCredentialSchema = (collectionName: string) => { | ||||
| return get(`/workspaces/current/tool-provider/builtin/${collectionName}/credentials_schema`) | |||||
| return get<ToolCredential[]>(`/workspaces/current/tool-provider/builtin/${collectionName}/credentials_schema`) | |||||
| } | } | ||||
| export const updateBuiltInToolCredential = (collectionName: string, credential: Record<string, any>) => { | export const updateBuiltInToolCredential = (collectionName: string, credential: Record<string, any>) => { | ||||
| } | } | ||||
| export const parseParamsSchema = (schema: string) => { | export const parseParamsSchema = (schema: string) => { | ||||
| return post('/workspaces/current/tool-provider/api/schema', { | |||||
| return post<{ parameters_schema: CustomParamSchema[]; schema_type: string }>('/workspaces/current/tool-provider/api/schema', { | |||||
| body: { | body: { | ||||
| schema, | schema, | ||||
| }, | }, | ||||
| } | } | ||||
| export const fetchCustomCollection = (collectionName: string) => { | export const fetchCustomCollection = (collectionName: string) => { | ||||
| return get(`/workspaces/current/tool-provider/api/get?provider=${collectionName}`) | |||||
| return get<CustomCollectionBackend>(`/workspaces/current/tool-provider/api/get?provider=${collectionName}`) | |||||
| } | } | ||||
| export const createCustomCollection = (collection: CustomCollectionBackend) => { | export const createCustomCollection = (collection: CustomCollectionBackend) => { |