mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	plugins page
This commit is contained in:
		
							parent
							
								
									1c2c4b62f8
								
							
						
					
					
						commit
						121e54f3e3
					
				| @ -24,4 +24,5 @@ export const categoryKeys = [ | |||||||
|   'agent-strategy', |   'agent-strategy', | ||||||
|   'extension', |   'extension', | ||||||
|   'bundle', |   'bundle', | ||||||
|  |   'datasource', | ||||||
| ] | ] | ||||||
|  | |||||||
| @ -0,0 +1,109 @@ | |||||||
|  | import React, { useMemo } from 'react' | ||||||
|  | import { useTranslation } from 'react-i18next' | ||||||
|  | import { useAppContext } from '@/context/app-context' | ||||||
|  | // import Button from '@/app/components/base/button'
 | ||||||
|  | // import Toast from '@/app/components/base/toast'
 | ||||||
|  | // import Indicator from '@/app/components/header/indicator'
 | ||||||
|  | // import ToolItem from '@/app/components/tools/provider/tool-item'
 | ||||||
|  | // import ConfigCredential from '@/app/components/tools/setting/build-in/config-credentials'
 | ||||||
|  | import type { PluginDetail } from '@/app/components/plugins/types' | ||||||
|  | import { useDataSourceList } from '@/service/use-pipeline' | ||||||
|  | import { transformDataSourceToTool } from '@/app/components/workflow/block-selector/utils' | ||||||
|  | 
 | ||||||
|  | type Props = { | ||||||
|  |   detail: PluginDetail | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const ActionList = ({ | ||||||
|  |   detail, | ||||||
|  | }: Props) => { | ||||||
|  |   const { t } = useTranslation() | ||||||
|  |   const { isCurrentWorkspaceManager } = useAppContext() | ||||||
|  |   // const providerBriefInfo = detail.declaration.datasource?.identity
 | ||||||
|  |   // const providerKey = `${detail.plugin_id}/${providerBriefInfo?.name}`
 | ||||||
|  |   const { data: dataSourceList } = useDataSourceList(true) | ||||||
|  |   const provider = useMemo(() => { | ||||||
|  |     const result = dataSourceList?.find(collection => collection.plugin_id === detail.plugin_id) | ||||||
|  | 
 | ||||||
|  |     if (result) | ||||||
|  |       return transformDataSourceToTool(result) | ||||||
|  |   }, [detail.plugin_id, dataSourceList]) | ||||||
|  |   const data: any = [] | ||||||
|  |   // const { data } = useBuiltinTools(providerKey)
 | ||||||
|  | 
 | ||||||
|  |   // const [showSettingAuth, setShowSettingAuth] = useState(false)
 | ||||||
|  | 
 | ||||||
|  |   // const handleCredentialSettingUpdate = () => {
 | ||||||
|  |   //   Toast.notify({
 | ||||||
|  |   //     type: 'success',
 | ||||||
|  |   //     message: t('common.api.actionSuccess'),
 | ||||||
|  |   //   })
 | ||||||
|  |   //   setShowSettingAuth(false)
 | ||||||
|  |   // }
 | ||||||
|  | 
 | ||||||
|  |   // const { mutate: updatePermission, isPending } = useUpdateProviderCredentials({
 | ||||||
|  |   //   onSuccess: handleCredentialSettingUpdate,
 | ||||||
|  |   // })
 | ||||||
|  | 
 | ||||||
|  |   // const { mutate: removePermission } = useRemoveProviderCredentials({
 | ||||||
|  |   //   onSuccess: handleCredentialSettingUpdate,
 | ||||||
|  |   // })
 | ||||||
|  | 
 | ||||||
|  |   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' })} | ||||||
|  |           {/* {provider.is_team_authorization && provider.allow_delete && ( | ||||||
|  |             <Button | ||||||
|  |               variant='secondary' | ||||||
|  |               size='small' | ||||||
|  |               onClick={() => setShowSettingAuth(true)} | ||||||
|  |               disabled={!isCurrentWorkspaceManager} | ||||||
|  |             > | ||||||
|  |               <Indicator className='mr-2' color={'green'} /> | ||||||
|  |               {t('tools.auth.authorized')} | ||||||
|  |             </Button> | ||||||
|  |           )} */} | ||||||
|  |         </div> | ||||||
|  |         {/* {!provider.is_team_authorization && provider.allow_delete && ( | ||||||
|  |           <Button | ||||||
|  |             variant='primary' | ||||||
|  |             className='w-full' | ||||||
|  |             onClick={() => setShowSettingAuth(true)} | ||||||
|  |             disabled={!isCurrentWorkspaceManager} | ||||||
|  |           >{t('workflow.nodes.tool.authorize')}</Button> | ||||||
|  |         )} */} | ||||||
|  |       </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> | ||||||
|  |       {showSettingAuth && ( | ||||||
|  |         <ConfigCredential | ||||||
|  |           collection={provider} | ||||||
|  |           onCancel={() => setShowSettingAuth(false)} | ||||||
|  |           onSaved={async value => updatePermission({ | ||||||
|  |             providerName: provider.name, | ||||||
|  |             credentials: value, | ||||||
|  |           })} | ||||||
|  |           onRemove={async () => removePermission(provider.name)} | ||||||
|  |           isSaving={isPending} | ||||||
|  |         /> | ||||||
|  |       )} */} | ||||||
|  |     </div> | ||||||
|  |   ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export default ActionList | ||||||
| @ -4,6 +4,7 @@ import type { FC } from 'react' | |||||||
| import DetailHeader from './detail-header' | import DetailHeader from './detail-header' | ||||||
| import EndpointList from './endpoint-list' | import EndpointList from './endpoint-list' | ||||||
| import ActionList from './action-list' | import ActionList from './action-list' | ||||||
|  | import DatasourceActionList from './datasource-action-list' | ||||||
| import ModelList from './model-list' | import ModelList from './model-list' | ||||||
| import AgentStrategyList from './agent-strategy-list' | import AgentStrategyList from './agent-strategy-list' | ||||||
| import Drawer from '@/app/components/base/drawer' | import Drawer from '@/app/components/base/drawer' | ||||||
| @ -52,6 +53,7 @@ const PluginDetailPanel: FC<Props> = ({ | |||||||
|             {!!detail.declaration.agent_strategy && <AgentStrategyList detail={detail} />} |             {!!detail.declaration.agent_strategy && <AgentStrategyList detail={detail} />} | ||||||
|             {!!detail.declaration.endpoint && <EndpointList detail={detail} />} |             {!!detail.declaration.endpoint && <EndpointList detail={detail} />} | ||||||
|             {!!detail.declaration.model && <ModelList detail={detail} />} |             {!!detail.declaration.model && <ModelList detail={detail} />} | ||||||
|  |             {!!detail.declaration.datasource && <DatasourceActionList detail={detail} />} | ||||||
|           </div> |           </div> | ||||||
|         </> |         </> | ||||||
|       )} |       )} | ||||||
|  | |||||||
| @ -74,7 +74,8 @@ export type PluginDeclaration = { | |||||||
|   plugins: any // useless in frontend
 |   plugins: any // useless in frontend
 | ||||||
|   verified: boolean |   verified: boolean | ||||||
|   endpoint: PluginEndpointDeclaration |   endpoint: PluginEndpointDeclaration | ||||||
|   tool: PluginToolDeclaration |   tool?: PluginToolDeclaration | ||||||
|  |   datasource?: PluginToolDeclaration | ||||||
|   model: any |   model: any | ||||||
|   tags: string[] |   tags: string[] | ||||||
|   agent_strategy: any |   agent_strategy: any | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ const translation = { | |||||||
|     agents: 'Agent Strategies', |     agents: 'Agent Strategies', | ||||||
|     extensions: 'Extensions', |     extensions: 'Extensions', | ||||||
|     bundles: 'Bundles', |     bundles: 'Bundles', | ||||||
|  |     datasources: 'Datasources', | ||||||
|   }, |   }, | ||||||
|   categorySingle: { |   categorySingle: { | ||||||
|     model: 'Model', |     model: 'Model', | ||||||
| @ -16,6 +17,7 @@ const translation = { | |||||||
|     agent: 'Agent Strategy', |     agent: 'Agent Strategy', | ||||||
|     extension: 'Extension', |     extension: 'Extension', | ||||||
|     bundle: 'Bundle', |     bundle: 'Bundle', | ||||||
|  |     datasource: 'Datasource', | ||||||
|   }, |   }, | ||||||
|   search: 'Search', |   search: 'Search', | ||||||
|   allCategories: 'All Categories', |   allCategories: 'All Categories', | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ const translation = { | |||||||
|     agents: 'Agent 策略', |     agents: 'Agent 策略', | ||||||
|     extensions: '扩展', |     extensions: '扩展', | ||||||
|     bundles: '插件集', |     bundles: '插件集', | ||||||
|  |     datasources: '数据源', | ||||||
|   }, |   }, | ||||||
|   categorySingle: { |   categorySingle: { | ||||||
|     model: '模型', |     model: '模型', | ||||||
| @ -16,6 +17,7 @@ const translation = { | |||||||
|     agent: 'Agent 策略', |     agent: 'Agent 策略', | ||||||
|     extension: '扩展', |     extension: '扩展', | ||||||
|     bundle: '插件集', |     bundle: '插件集', | ||||||
|  |     datasource: '数据源', | ||||||
|   }, |   }, | ||||||
|   search: '搜索', |   search: '搜索', | ||||||
|   allCategories: '所有类别', |   allCategories: '所有类别', | ||||||
|  | |||||||
| @ -162,14 +162,14 @@ export const usePublishedPipelineProcessingParams = (params: PipelineProcessingP | |||||||
|   }) |   }) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export const useDataSourceList = (enabled: boolean, onSuccess: (v: DataSourceItem[]) => void) => { | export const useDataSourceList = (enabled: boolean, onSuccess?: (v: DataSourceItem[]) => void) => { | ||||||
|   return useQuery<DataSourceItem[]>({ |   return useQuery<DataSourceItem[]>({ | ||||||
|     enabled, |     enabled, | ||||||
|     queryKey: [NAME_SPACE, 'datasource'], |     queryKey: [NAME_SPACE, 'datasource'], | ||||||
|     staleTime: 0, |     staleTime: 0, | ||||||
|     queryFn: async () => { |     queryFn: async () => { | ||||||
|       const data = await get<DataSourceItem[]>('/rag/pipelines/datasource-plugins') |       const data = await get<DataSourceItem[]>('/rag/pipelines/datasource-plugins') | ||||||
|       onSuccess(data) |       onSuccess?.(data) | ||||||
|       return data |       return data | ||||||
|     }, |     }, | ||||||
|     retry: false, |     retry: false, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 zxhlyh
						zxhlyh