Initial commit
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
export type TypeWithI18N<T = string> = {
|
||||
en_US: T
|
||||
zh_Hans: T
|
||||
[key: string]: T
|
||||
}
|
||||
|
||||
export enum LOC {
|
||||
tools = 'tools',
|
||||
app = 'app',
|
||||
}
|
||||
|
||||
export enum AuthType {
|
||||
none = 'none',
|
||||
apiKey = 'api_key',
|
||||
}
|
||||
|
||||
export enum AuthHeaderPrefix {
|
||||
basic = 'basic',
|
||||
bearer = 'bearer',
|
||||
custom = 'custom',
|
||||
}
|
||||
|
||||
export type Credential = {
|
||||
auth_type: AuthType
|
||||
api_key_header?: string
|
||||
api_key_value?: string
|
||||
api_key_header_prefix?: AuthHeaderPrefix
|
||||
}
|
||||
|
||||
export enum CollectionType {
|
||||
all = 'all',
|
||||
builtIn = 'builtin',
|
||||
custom = 'api',
|
||||
model = 'model',
|
||||
workflow = 'workflow',
|
||||
}
|
||||
|
||||
export type Emoji = {
|
||||
background: string
|
||||
content: string
|
||||
}
|
||||
|
||||
export type Collection = {
|
||||
id: string
|
||||
name: string
|
||||
author: string
|
||||
description: TypeWithI18N
|
||||
icon: string | Emoji
|
||||
label: TypeWithI18N
|
||||
type: CollectionType
|
||||
team_credentials: Record<string, any>
|
||||
is_team_authorization: boolean
|
||||
allow_delete: boolean
|
||||
labels: string[]
|
||||
plugin_id?: string
|
||||
letter?: string
|
||||
}
|
||||
|
||||
export type ToolParameter = {
|
||||
name: string
|
||||
label: TypeWithI18N
|
||||
human_description: TypeWithI18N
|
||||
type: string
|
||||
form: string
|
||||
llm_description: string
|
||||
required: boolean
|
||||
default: string
|
||||
options?: {
|
||||
label: TypeWithI18N
|
||||
value: string
|
||||
}[]
|
||||
min?: number
|
||||
max?: number
|
||||
}
|
||||
|
||||
// Action
|
||||
export type Tool = {
|
||||
name: string
|
||||
author: string
|
||||
label: TypeWithI18N
|
||||
description: any
|
||||
parameters: ToolParameter[]
|
||||
labels: string[]
|
||||
output_schema: Record<string, any>
|
||||
}
|
||||
|
||||
export type ToolCredential = {
|
||||
name: string
|
||||
label: TypeWithI18N
|
||||
help: TypeWithI18N | null
|
||||
placeholder: TypeWithI18N
|
||||
type: string
|
||||
required: boolean
|
||||
default: string
|
||||
options?: {
|
||||
label: TypeWithI18N
|
||||
value: string
|
||||
}[]
|
||||
}
|
||||
|
||||
export type CustomCollectionBackend = {
|
||||
provider: string
|
||||
original_provider?: string
|
||||
credentials: Credential
|
||||
icon: Emoji
|
||||
schema_type: string
|
||||
schema: string
|
||||
privacy_policy: string
|
||||
custom_disclaimer: string
|
||||
tools?: ParamItem[]
|
||||
id: string
|
||||
labels: string[]
|
||||
}
|
||||
|
||||
export type ParamItem = {
|
||||
name: string
|
||||
label: TypeWithI18N
|
||||
human_description: TypeWithI18N
|
||||
llm_description: string
|
||||
type: string
|
||||
form: string
|
||||
required: boolean
|
||||
default: string
|
||||
min?: number
|
||||
max?: number
|
||||
options?: {
|
||||
label: TypeWithI18N
|
||||
value: string
|
||||
}[]
|
||||
}
|
||||
|
||||
export type CustomParamSchema = {
|
||||
operation_id: string // name
|
||||
summary: string
|
||||
server_url: string
|
||||
method: string
|
||||
parameters: ParamItem[]
|
||||
}
|
||||
|
||||
export type WorkflowToolProviderParameter = {
|
||||
name: string
|
||||
form: string
|
||||
description: string
|
||||
required?: boolean
|
||||
type?: string
|
||||
}
|
||||
|
||||
export type WorkflowToolProviderRequest = {
|
||||
name: string
|
||||
icon: Emoji
|
||||
description: string
|
||||
parameters: WorkflowToolProviderParameter[]
|
||||
labels: string[]
|
||||
privacy_policy: string
|
||||
}
|
||||
|
||||
export type WorkflowToolProviderResponse = {
|
||||
workflow_app_id: string
|
||||
workflow_tool_id: string
|
||||
label: string
|
||||
name: string
|
||||
icon: Emoji
|
||||
description: string
|
||||
synced: boolean
|
||||
tool: {
|
||||
author: string
|
||||
name: string
|
||||
label: TypeWithI18N
|
||||
description: TypeWithI18N
|
||||
labels: string[]
|
||||
parameters: ParamItem[]
|
||||
}
|
||||
privacy_policy: string
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import type { ThoughtItem } from '@/app/components/chat/type'
|
||||
import type { FileEntity } from '@/app/components/base/file-uploader/types'
|
||||
import type { VisionFile } from '@/types/app'
|
||||
|
||||
export const sortAgentSorts = (list: ThoughtItem[]) => {
|
||||
if (!list)
|
||||
return list
|
||||
if (list.some(item => item.position === undefined))
|
||||
return list
|
||||
const temp = [...list]
|
||||
temp.sort((a, b) => a.position - b.position)
|
||||
return temp
|
||||
}
|
||||
|
||||
export const addFileInfos = (list: ThoughtItem[], messageFiles: (FileEntity | VisionFile)[]) => {
|
||||
if (!list || !messageFiles)
|
||||
return list
|
||||
return list.map((item) => {
|
||||
if (item.files && item.files?.length > 0) {
|
||||
return {
|
||||
...item,
|
||||
message_files: item.files.map(fileId => messageFiles.find(file => file.id === fileId)) as FileEntity[],
|
||||
}
|
||||
}
|
||||
return item
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
import type { ToolCredential, ToolParameter } from '../types'
|
||||
export const toType = (type: string) => {
|
||||
switch (type) {
|
||||
case 'string':
|
||||
return 'text-input'
|
||||
case 'number':
|
||||
return 'number-input'
|
||||
default:
|
||||
return type
|
||||
}
|
||||
}
|
||||
export const toolParametersToFormSchemas = (parameters: ToolParameter[]) => {
|
||||
if (!parameters)
|
||||
return []
|
||||
|
||||
const formSchemas = parameters.map((parameter) => {
|
||||
return {
|
||||
...parameter,
|
||||
variable: parameter.name,
|
||||
type: toType(parameter.type),
|
||||
_type: parameter.type,
|
||||
show_on: [],
|
||||
options: parameter.options?.map((option) => {
|
||||
return {
|
||||
...option,
|
||||
show_on: [],
|
||||
}
|
||||
}),
|
||||
tooltip: parameter.human_description,
|
||||
}
|
||||
})
|
||||
return formSchemas
|
||||
}
|
||||
|
||||
export const toolCredentialToFormSchemas = (parameters: ToolCredential[]) => {
|
||||
if (!parameters)
|
||||
return []
|
||||
|
||||
const formSchemas = parameters.map((parameter) => {
|
||||
return {
|
||||
...parameter,
|
||||
variable: parameter.name,
|
||||
label: parameter.label,
|
||||
tooltip: parameter.help,
|
||||
show_on: [],
|
||||
options: parameter.options?.map((option) => {
|
||||
return {
|
||||
...option,
|
||||
show_on: [],
|
||||
}
|
||||
}),
|
||||
}
|
||||
})
|
||||
return formSchemas
|
||||
}
|
||||
|
||||
export const addDefaultValue = (value: Record<string, any>, formSchemas: { variable: string; default?: any }[]) => {
|
||||
const newValues = { ...value }
|
||||
formSchemas.forEach((formSchema) => {
|
||||
const itemValue = value[formSchema.variable]
|
||||
if ((formSchema.default !== undefined) && (value === undefined || itemValue === null || itemValue === '' || itemValue === undefined))
|
||||
newValues[formSchema.variable] = formSchema.default
|
||||
})
|
||||
return newValues
|
||||
}
|
||||
|
||||
export const generateFormValue = (value: Record<string, any>, formSchemas: { variable: string; default?: any }[], isReasoning = false) => {
|
||||
const newValues = {} as any
|
||||
formSchemas.forEach((formSchema) => {
|
||||
const itemValue = value[formSchema.variable]
|
||||
if ((formSchema.default !== undefined) && (value === undefined || itemValue === null || itemValue === '' || itemValue === undefined)) {
|
||||
newValues[formSchema.variable] = {
|
||||
...(isReasoning ? { value: null, auto: 1 } : { value: formSchema.default }),
|
||||
}
|
||||
}
|
||||
})
|
||||
return newValues
|
||||
}
|
||||
|
||||
export const getPlainValue = (value: Record<string, any>) => {
|
||||
const plainValue = { ...value } as any
|
||||
Object.keys(plainValue).forEach((key) => {
|
||||
plainValue[key] = value[key].value
|
||||
})
|
||||
return plainValue
|
||||
}
|
||||
|
||||
export const getStructureValue = (value: Record<string, any>) => {
|
||||
const newValue = { ...value } as any
|
||||
Object.keys(newValue).forEach((key) => {
|
||||
newValue[key] = {
|
||||
value: value[key],
|
||||
}
|
||||
})
|
||||
return newValue
|
||||
}
|
||||
Reference in New Issue
Block a user