From 440bd825d817d667cff4f584bcf98e9e91d1e49d Mon Sep 17 00:00:00 2001 From: Joel Date: Wed, 15 Oct 2025 17:35:06 +0800 Subject: [PATCH] feat: can show tools in preview --- .../app/configuration/config/index.tsx | 27 ++++++++++-------- .../components/app/configuration/preview.tsx | 28 +++++++++++++++++-- web/service/try-app.ts | 1 + 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/web/app/components/app/configuration/config/index.tsx b/web/app/components/app/configuration/config/index.tsx index 7ff534a20a..b98d52c5d7 100644 --- a/web/app/components/app/configuration/config/index.tsx +++ b/web/app/components/app/configuration/config/index.tsx @@ -29,6 +29,7 @@ const Config: FC = () => { modelConfig, setModelConfig, setPrevPromptConfig, + dataSets, } = useContext(ConfigContext) const isChatApp = ['advanced-chat', 'agent-chat', 'chat'].includes(mode) const formattingChangedDispatcher = useFormattingChangedDispatcher() @@ -71,20 +72,24 @@ const Config: FC = () => { /> {/* Variables */} - + {!(readonly && promptVariables.length === 0) && ( + + )} {/* Dataset */} - - + {!(readonly && dataSets.length === 0) && ( + + ) + } {/* Tools */} - {isAgent && ( + {isAgent && !(readonly && modelConfig.agentConfig.tools.length === 0) && ( )} diff --git a/web/app/components/app/configuration/preview.tsx b/web/app/components/app/configuration/preview.tsx index 315cbd6bd0..138cd192ae 100644 --- a/web/app/components/app/configuration/preview.tsx +++ b/web/app/components/app/configuration/preview.tsx @@ -24,9 +24,11 @@ import { SupportUploadFileTypes } from '@/app/components/workflow/types' import { useGetTryAppDataSets, useGetTryAppInfo } from '@/service/use-try-app' import { noop } from 'lodash' -import { correctModelProvider } from '@/utils' +import { correctModelProvider, correctToolProvider } from '@/utils' import { userInputsFormToPromptVariables } from '@/utils/model-config' import { useTextGenerationCurrentProviderAndModelAndModelList } from '../../header/account-setting/model-provider-page/hooks' +import { useAllToolProviders } from '@/service/use-tools' +import { basePath } from '@/utils/var' type Props = { appId: string @@ -60,6 +62,13 @@ const Configuration: FC = ({ const isMobile = media === MediaType.mobile const { data: appDetail, isLoading: isLoadingAppDetail } = useGetTryAppInfo(appId) + const { data: collectionListFromServer, isLoading: isLoadingToolProviders } = useAllToolProviders() + const collectionList = collectionListFromServer?.map((item) => { + return { + ...item, + icon: basePath && typeof item.icon == 'string' && !item.icon.includes(basePath) ? `${basePath}${item.icon}` : item.icon, + } + }) const datasetIds = (() => { if(isLoadingAppDetail) return [] @@ -81,7 +90,7 @@ const Configuration: FC = ({ })() const { data: dataSetData, isLoading: isLoadingDatasets } = useGetTryAppDataSets(appId, datasetIds) const dataSets = dataSetData?.data || [] - const isLoading = isLoadingAppDetail || isLoadingDatasets + const isLoading = isLoadingAppDetail || isLoadingDatasets || isLoadingToolProviders const modelConfig: ModelConfig = ((modelConfig?: BackendModelConfig) => { if(isLoading || !modelConfig) @@ -137,7 +146,20 @@ const Configuration: FC = ({ ...modelConfig.agent_mode, // remove dataset enabled: true, // modelConfig.agent_mode?.enabled is not correct. old app: the value of app with dataset's is always true - tools: [], + tools: modelConfig.agent_mode?.tools.filter((tool: any) => { + return !tool.dataset + }).map((tool: any) => { + const toolInCollectionList = collectionList?.find(c => tool.provider_id === c.id) + return { + ...tool, + isDeleted: appDetail?.deleted_tools?.some((deletedTool: any) => deletedTool.id === tool.id && deletedTool.tool_name === tool.tool_name), + notAuthor: toolInCollectionList?.is_team_authorization === false, + ...(tool.provider_type === 'builtin' ? { + provider_id: correctToolProvider(tool.provider_name, !!toolInCollectionList), + provider_name: correctToolProvider(tool.provider_name, !!toolInCollectionList), + } : {}), + } + }), } : DEFAULT_AGENT_SETTING, } return (newModelConfig as any) diff --git a/web/service/try-app.ts b/web/service/try-app.ts index a6f7a12c91..0a523623b8 100644 --- a/web/service/try-app.ts +++ b/web/service/try-app.ts @@ -14,6 +14,7 @@ type TryAppInfo = { mode: AppMode site: SiteInfo model_config: ModelConfig + deleted_tools: any[] } export const fetchTryAppInfo = async (appId: string) => {