dify/web/models/pipeline.ts

282 lines
6.4 KiB
TypeScript
Raw Permalink Normal View History

import type { Edge, EnvironmentVariable, Node, SupportUploadFileTypes } from '@/app/components/workflow/types'
import type { DSLImportMode, DSLImportStatus } from './app'
import type { ChunkingMode, DatasetPermission, DocumentIndexingStatus, FileIndexingEstimateResponse, IconInfo } from './datasets'
import type { Dependency } from '@/app/components/plugins/types'
import type { AppIconSelection } from '@/app/components/base/app-icon-picker'
import type { Viewport } from 'reactflow'
import type { TransferMethod } from '@/types/app'
import { BaseFieldType } from '@/app/components/base/form/form-scenarios/base/types'
export enum DatasourceType {
localFile = 'local_file',
onlineDocument = 'online_document',
websiteCrawl = 'website_crawl',
onlineDrive = 'online_drive',
}
export type PipelineTemplateListParams = {
type: 'built-in' | 'customized'
}
export type PipelineTemplate = {
id: string
name: string
icon: IconInfo
description: string
position: number
chunk_structure: ChunkingMode
}
export type PipelineTemplateListResponse = {
2025-06-11 10:40:32 +08:00
pipeline_templates: PipelineTemplate[]
}
export type PipelineTemplateByIdRequest = {
template_id: string
type: 'built-in' | 'customized'
}
export type PipelineTemplateByIdResponse = {
2025-06-11 11:51:19 +08:00
id: string
name: string
icon_info: IconInfo
description: string
chunk_structure: ChunkingMode
export_data: string // DSL content
graph: {
nodes: Node[]
edges: Edge[]
viewport: Viewport
}
created_by: string
}
export type CreateFormData = {
name: string
appIcon: AppIconSelection
description: string
permission: DatasetPermission
selectedMemberIDs: string[]
}
export type UpdateTemplateInfoRequest = {
template_id: string
name: string
icon_info: IconInfo
description: string
}
export type UpdateTemplateInfoResponse = {
pipeline_id: string
name: string
icon: IconInfo
description: string
position: number
}
export type DeleteTemplateResponse = {
code: number
}
export type ExportTemplateDSLResponse = {
data: string
}
export type ImportPipelineDSLRequest = {
mode: DSLImportMode
yaml_content?: string
yaml_url?: string
pipeline_id?: string
}
export type ImportPipelineDSLResponse = {
id: string
status: DSLImportStatus
pipeline_id: string
dataset_id: string
current_dsl_version: string
imported_dsl_version: string
}
export type ImportPipelineDSLConfirmResponse = {
status: DSLImportStatus
pipeline_id: string
dataset_id: string
current_dsl_version: string
imported_dsl_version: string
error: string
}
export type PipelineCheckDependenciesResponse = {
leaked_dependencies: Dependency[]
}
export enum PipelineInputVarType {
textInput = 'text-input',
paragraph = 'paragraph',
select = 'select',
number = 'number',
singleFile = 'file',
multiFiles = 'file-list',
checkbox = 'checkbox',
}
export const VAR_TYPE_MAP: Record<PipelineInputVarType, BaseFieldType> = {
[PipelineInputVarType.textInput]: BaseFieldType.textInput,
[PipelineInputVarType.paragraph]: BaseFieldType.paragraph,
[PipelineInputVarType.select]: BaseFieldType.select,
[PipelineInputVarType.singleFile]: BaseFieldType.file,
[PipelineInputVarType.multiFiles]: BaseFieldType.fileList,
[PipelineInputVarType.number]: BaseFieldType.numberInput,
[PipelineInputVarType.checkbox]: BaseFieldType.checkbox,
}
export type RAGPipelineVariable = {
belong_to_node_id: string // indicates belong to which node or 'shared'
type: PipelineInputVarType
label: string
variable: string
max_length?: number
default_value?: string
placeholder?: string
unit?: string
required: boolean
tooltips?: string
options?: string[]
allowed_file_upload_methods?: TransferMethod[]
allowed_file_types?: SupportUploadFileTypes[]
allowed_file_extensions?: string[]
}
export type InputVar = Omit<RAGPipelineVariable, 'belong_to_node_id'>
export type RAGPipelineVariables = RAGPipelineVariable[]
export type PipelineProcessingParamsRequest = {
pipeline_id: string
node_id: string
}
export type PipelineProcessingParamsResponse = {
variables: RAGPipelineVariables
}
export type PipelinePreProcessingParamsRequest = {
pipeline_id: string
node_id: string
}
export type PipelinePreProcessingParamsResponse = {
variables: RAGPipelineVariables
}
export type PublishedPipelineInfoResponse = {
id: string
graph: {
nodes: Node[]
edges: Edge[]
viewport: Viewport
}
created_at: number
created_by: {
id: string
name: string
email: string
}
hash: string
updated_at: number
updated_by: {
id: string
name: string
email: string
},
environment_variables?: EnvironmentVariable[]
rag_pipeline_variables?: RAGPipelineVariables
version: string
marked_name: string
marked_comment: string
}
export type PublishedPipelineRunRequest = {
pipeline_id: string
inputs: Record<string, any>
start_node_id: string
datasource_type: DatasourceType
datasource_info_list: Array<Record<string, any>>
is_preview: boolean
}
export type PublishedPipelineRunPreviewResponse = {
task_iod: string
workflow_run_id: string
data: {
id: string
status: string
created_at: number
elapsed_time: number
error: string
finished_at: number
outputs: FileIndexingEstimateResponse
total_steps: number
total_tokens: number
workflow_id: string
}
}
export type PublishedPipelineRunResponse = {
batch: string
dataset: {
chunk_structure: ChunkingMode
description: string
id: string
name: string
}
documents: InitialDocumentDetail[]
}
export type InitialDocumentDetail = {
data_source_info: Record<string, any>
data_source_type: DatasourceType
enable: boolean
error: string
id: string
indexing_status: DocumentIndexingStatus
name: string
position: number
}
export type PipelineExecutionLogRequest = {
dataset_id: string
document_id: string
}
export type PipelineExecutionLogResponse = {
datasource_info: Record<string, any>
datasource_type: DatasourceType
input_data: Record<string, any>
datasource_node_id: string
}
export type OnlineDocumentPreviewRequest = {
workspaceID: string
pageID: string
pageType: string
pipelineId: string
datasourceNodeId: string
}
export type OnlineDocumentPreviewResponse = {
content: string
}
export enum OnlineDriveFileType {
file = 'file',
folder = 'folder',
bucket = 'bucket',
}
export type OnlineDriveFile = {
key: string
size?: number
type: OnlineDriveFileType
}