import type {NodeProps} from '@xyflow/react'
import {commonInfo} from '../../../util/amis.tsx'
import AmisNode, {inputsFormColumns, outputsFormColumns} from './AmisNode.tsx'
import React from 'react'

const KnowledgeNode = (props: NodeProps) => AmisNode({
  nodeProps: props,
  type: 'normal',
  defaultNodeName: '知识库',
  defaultNodeDescription: '查询知识库获取外部知识',
  columnSchema: [
    ...inputsFormColumns(),
    {
      type: 'divider',
    },
    {
      type: 'select',
      name: 'knowledgeId',
      label: '知识库',
      required: true,
      options: [],
      source: {
        method: 'get',
        url: `${commonInfo.baseAiUrl}/knowledge/list`,
        // @ts-ignore
        adaptor: (payload, response, api, context) => {
          return {
            ...payload,
            data: {
              items: payload.data.items.map((item: any) => ({value: item['id'], label: item['name']})),
            },
          }
        },
      },
    },
    {
      type: 'input-text',
      name: 'query',
      label: '查询文本',
      required: true,
    },
    {
      type: 'input-range',
      name: 'count',
      label: '返回数量',
      required: true,
      value: 3,
      max: 10,
    },
    {
      type: 'input-range',
      name: 'score',
      label: '匹配阀值',
      required: true,
      value: 0.6,
      max: 1,
      step: 0.05,
    },
    {
      type: 'divider',
    },
    ...outputsFormColumns(false, true, {result: {type: 'array-string'}}),
  ],
})

export default React.memo(KnowledgeNode)