| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import React, { useMemo } from 'react'
- import { useTranslation } from 'react-i18next'
- import ToolItem from '@/app/components/tools/provider/tool-item'
- import {
- useAllToolProviders,
- useBuiltinTools,
- } from '@/service/use-tools'
- import type { PluginDetail } from '@/app/components/plugins/types'
-
- type Props = {
- detail: PluginDetail
- }
-
- const ActionList = ({
- detail,
- }: Props) => {
- const { t } = useTranslation()
- const providerBriefInfo = detail.declaration.tool.identity
- const providerKey = `${detail.plugin_id}/${providerBriefInfo.name}`
- const { data: collectionList = [] } = useAllToolProviders()
- const provider = useMemo(() => {
- return collectionList.find(collection => collection.name === providerKey)
- }, [collectionList, providerKey])
- const { data } = useBuiltinTools(providerKey)
-
- if (!data || !provider)
- return null
-
- return (
- <div className='px-4 pb-4 pt-2'>
- <div className='mb-1 py-1'>
- <div className='system-sm-semibold-uppercase mb-1 flex h-6 items-center justify-between text-text-secondary'>
- {t('plugin.detailPanel.actionNum', { num: data.length, action: data.length > 1 ? 'actions' : 'action' })}
- </div>
- </div>
- <div className='flex flex-col gap-2'>
- {data.map(tool => (
- <ToolItem
- key={`${detail.plugin_id}${tool.name}`}
- disabled={false}
- collection={provider}
- tool={tool}
- isBuiltIn={true}
- isModel={false}
- />
- ))}
- </div>
- </div>
- )
- }
-
- export default ActionList
|