'use client' import type { FC } from 'react' import React, { useMemo } from 'react' import { useTranslation } from 'react-i18next' import { RiArrowLeftLine, RiCloseLine, } from '@remixicon/react' import Drawer from '@/app/components/base/drawer' import ActionButton from '@/app/components/base/action-button' import Icon from '@/app/components/plugins/card/base/card-icon' import Description from '@/app/components/plugins/card/base/description' import Divider from '@/app/components/base/divider' import type { StrategyDetail, } from '@/app/components/plugins/types' import type { Locale } from '@/i18n' import { useRenderI18nObject } from '@/hooks/use-i18n' import { API_PREFIX } from '@/config' import cn from '@/utils/classnames' type Props = { provider: { author: string name: string description: Record tenant_id: string icon: string label: Record tags: string[] } detail: StrategyDetail onHide: () => void } const StrategyDetail: FC = ({ provider, detail, onHide, }) => { const getValueFromI18nObject = useRenderI18nObject() const { t } = useTranslation() const outputSchema = useMemo(() => { const res: any[] = [] if (!detail.output_schema) return [] Object.keys(detail.output_schema.properties).forEach((outputKey) => { const output = detail.output_schema.properties[outputKey] res.push({ name: outputKey, type: output.type === 'array' ? `Array[${output.items?.type.slice(0, 1).toLocaleUpperCase()}${output.items?.type.slice(1)}]` : `${output.type.slice(0, 1).toLocaleUpperCase()}${output.type.slice(1)}`, description: output.description, }) }) return res }, [detail.output_schema]) const getType = (type: string) => { if (type === 'number-input') return t('tools.setBuiltInTools.number') if (type === 'text-input') return t('tools.setBuiltInTools.string') if (type === 'file') return t('tools.setBuiltInTools.file') if (type === 'array[tools]') return 'multiple-tool-select' return type } return ( <> {/* header */}
BACK
{getValueFromI18nObject(provider.label)}
{getValueFromI18nObject(detail.identity.label)}
{/* form */}
{t('tools.setBuiltInTools.parameters')}
{detail.parameters.length > 0 && (
{detail.parameters.map((item: any, index) => (
{getValueFromI18nObject(item.label)}
{getType(item.type)}
{item.required && (
{t('tools.setBuiltInTools.required')}
)}
{item.human_description && (
{getValueFromI18nObject(item.human_description)}
)}
))}
)}
{detail.output_schema && ( <>
OUTPUT
{outputSchema.length > 0 && (
{outputSchema.map((outputItem, index) => (
{outputItem.name}
{outputItem.type}
{outputItem.description && (
{outputItem.description}
)}
))}
)} )}
) } export default StrategyDetail