agent-strategy-list.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React, { useMemo } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import StrategyItem from '@/app/components/plugins/plugin-detail-panel/strategy-item'
  4. import {
  5. useStrategyProviderDetail,
  6. } from '@/service/use-strategy'
  7. import type { PluginDetail } from '@/app/components/plugins/types'
  8. type Props = {
  9. detail: PluginDetail
  10. }
  11. const AgentStrategyList = ({
  12. detail,
  13. }: Props) => {
  14. const { t } = useTranslation()
  15. const providerBriefInfo = detail.declaration.agent_strategy.identity
  16. const providerKey = `${detail.plugin_id}/${providerBriefInfo.name}`
  17. const { data: strategyProviderDetail } = useStrategyProviderDetail(providerKey)
  18. const providerDetail = useMemo(() => {
  19. return {
  20. ...strategyProviderDetail?.declaration.identity,
  21. tenant_id: detail.tenant_id,
  22. }
  23. }, [detail.tenant_id, strategyProviderDetail?.declaration.identity])
  24. const strategyList = useMemo(() => {
  25. if (!strategyProviderDetail)
  26. return []
  27. return strategyProviderDetail.declaration.strategies
  28. }, [strategyProviderDetail])
  29. if (!strategyProviderDetail)
  30. return null
  31. return (
  32. <div className='px-4 pt-2 pb-4'>
  33. <div className='mb-1 py-1'>
  34. <div className='mb-1 h-6 flex items-center justify-between text-text-secondary system-sm-semibold-uppercase'>
  35. {t('plugin.detailPanel.strategyNum', { num: strategyList.length, strategy: strategyList.length > 1 ? 'strategies' : 'strategy' })}
  36. </div>
  37. </div>
  38. <div className='flex flex-col gap-2'>
  39. {strategyList.map(strategyDetail => (
  40. <StrategyItem
  41. key={`${strategyDetail.identity.provider}${strategyDetail.identity.name}`}
  42. provider={providerDetail as any}
  43. detail={strategyDetail}
  44. />
  45. ))}
  46. </div>
  47. </div>
  48. )
  49. }
  50. export default AgentStrategyList