diff --git a/web/app/components/plugins/plugin-detail-panel/agent-strategy-list.tsx b/web/app/components/plugins/plugin-detail-panel/agent-strategy-list.tsx index dd20403985..47cab0ba7d 100644 --- a/web/app/components/plugins/plugin-detail-panel/agent-strategy-list.tsx +++ b/web/app/components/plugins/plugin-detail-panel/agent-strategy-list.tsx @@ -1,10 +1,9 @@ import React, { useMemo } from 'react' import { useTranslation } from 'react-i18next' -import ToolItem from '@/app/components/tools/provider/tool-item' +import StrategyItem from '@/app/components/plugins/plugin-detail-panel/strategy-item' import { - useAllToolProviders, - useBuiltinTools, -} from '@/service/use-tools' + useStrategyProviderDetail, +} from '@/service/use-strategy' import type { PluginDetail } from '@/app/components/plugins/types' type Props = { @@ -17,31 +16,30 @@ const AgentStrategyList = ({ const { t } = useTranslation() const providerBriefInfo = detail.declaration.agent_strategy.identity const providerKey = `${detail.plugin_id}/${providerBriefInfo.name}` - const { data: collectionList = [] } = useAllToolProviders() + const { data: strategyProviderDetail } = useStrategyProviderDetail(providerKey) - const provider = useMemo(() => { - return collectionList.find(collection => collection.name === providerKey) - }, [collectionList, providerKey]) - const { data } = useBuiltinTools(providerKey) + const strategyList = useMemo(() => { + if (!strategyProviderDetail) + return [] - if (!data || !provider) + return strategyProviderDetail.declaration.strategies + }, [strategyProviderDetail]) + + if (!strategyProviderDetail) return null return (
- {t('plugin.detailPanel.strategyNum', { num: data.length, strategy: data.length > 1 ? 'strategies' : 'strategy' })} + {t('plugin.detailPanel.strategyNum', { num: strategyList.length, strategy: strategyList.length > 1 ? 'strategies' : 'strategy' })}
- {data.map(tool => ( - ( + ))}
diff --git a/web/app/components/plugins/plugin-detail-panel/strategy-item.tsx b/web/app/components/plugins/plugin-detail-panel/strategy-item.tsx new file mode 100644 index 0000000000..cbcb754410 --- /dev/null +++ b/web/app/components/plugins/plugin-detail-panel/strategy-item.tsx @@ -0,0 +1,34 @@ +'use client' +import React, { useState } from 'react' +import { useContext } from 'use-context-selector' +import type { + StrategyDetail, +} from '@/app/components/plugins/types' +import I18n from '@/context/i18n' +import { getLanguage } from '@/i18n/language' +import cn from '@/utils/classnames' + +type Props = { + detail: StrategyDetail +} + +const StrategyItem = ({ + detail, +}: Props) => { + const { locale } = useContext(I18n) + const language = getLanguage(locale) + const [showDetail, setShowDetail] = useState(false) + + return ( + <> +
setShowDetail(true)} + > +
{detail.identity.label[language]}
+
{detail.description[language]}
+
+ + ) +} +export default StrategyItem