You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

use-pipeline.ts 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import type { MutationOptions } from '@tanstack/react-query'
  2. import { useMutation, useQuery } from '@tanstack/react-query'
  3. import { del, get, patch, post } from './base'
  4. import type {
  5. DeleteTemplateResponse,
  6. ExportTemplateDSLResponse,
  7. ImportPipelineDSLConfirmResponse,
  8. ImportPipelineDSLRequest,
  9. ImportPipelineDSLResponse,
  10. PipelineCheckDependenciesResponse,
  11. PipelineDatasourceNodeRunRequest,
  12. PipelineDatasourceNodeRunResponse,
  13. PipelineProcessingParamsRequest,
  14. PipelineProcessingParamsResponse,
  15. PipelineTemplateByIdResponse,
  16. PipelineTemplateListParams,
  17. PipelineTemplateListResponse,
  18. PublishedPipelineInfoResponse,
  19. UpdateTemplateInfoRequest,
  20. UpdateTemplateInfoResponse,
  21. } from '@/models/pipeline'
  22. import type { ToolWithProvider } from '@/app/components/workflow/types'
  23. const NAME_SPACE = 'pipeline'
  24. export const usePipelineTemplateList = (params: PipelineTemplateListParams) => {
  25. return useQuery<PipelineTemplateListResponse>({
  26. queryKey: [NAME_SPACE, 'template', 'list'],
  27. queryFn: () => {
  28. return get<PipelineTemplateListResponse>('/rag/pipeline/templates', { params })
  29. },
  30. })
  31. }
  32. export const usePipelineTemplateById = (templateId: string, enabled: boolean) => {
  33. return useQuery<PipelineTemplateByIdResponse>({
  34. queryKey: [NAME_SPACE, 'template', templateId],
  35. queryFn: () => {
  36. return get<PipelineTemplateByIdResponse>(`/rag/pipeline/templates/${templateId}`)
  37. },
  38. enabled,
  39. })
  40. }
  41. export const useUpdateTemplateInfo = (
  42. mutationOptions: MutationOptions<UpdateTemplateInfoResponse, Error, UpdateTemplateInfoRequest> = {},
  43. ) => {
  44. return useMutation({
  45. mutationKey: [NAME_SPACE, 'template', 'update'],
  46. mutationFn: (request: UpdateTemplateInfoRequest) => {
  47. const { template_id, ...rest } = request
  48. return patch<UpdateTemplateInfoResponse>(`/rag/customized/templates/${template_id}`, {
  49. body: rest,
  50. })
  51. },
  52. ...mutationOptions,
  53. })
  54. }
  55. export const useDeleteTemplate = (
  56. mutationOptions: MutationOptions<DeleteTemplateResponse, Error, string> = {},
  57. ) => {
  58. return useMutation({
  59. mutationKey: [NAME_SPACE, 'template', 'delete'],
  60. mutationFn: (templateId: string) => {
  61. return del<DeleteTemplateResponse>(`/rag/customized/templates/${templateId}`)
  62. },
  63. ...mutationOptions,
  64. })
  65. }
  66. export const useExportTemplateDSL = (
  67. mutationOptions: MutationOptions<ExportTemplateDSLResponse, Error, string> = {},
  68. ) => {
  69. return useMutation({
  70. mutationKey: [NAME_SPACE, 'dsl-export'],
  71. mutationFn: (templateId: string) => {
  72. return get<ExportTemplateDSLResponse>(`/rag/customized/templates/${templateId}`)
  73. },
  74. ...mutationOptions,
  75. })
  76. }
  77. export const useImportPipelineDSL = (
  78. mutationOptions: MutationOptions<ImportPipelineDSLResponse, Error, ImportPipelineDSLRequest> = {},
  79. ) => {
  80. return useMutation({
  81. mutationKey: [NAME_SPACE, 'dsl-import'],
  82. mutationFn: (request: ImportPipelineDSLRequest) => {
  83. return post<ImportPipelineDSLResponse>('/rag/pipelines/imports', { body: request })
  84. },
  85. ...mutationOptions,
  86. })
  87. }
  88. export const useImportPipelineDSLConfirm = (
  89. mutationOptions: MutationOptions<ImportPipelineDSLConfirmResponse, Error, string> = {},
  90. ) => {
  91. return useMutation({
  92. mutationKey: [NAME_SPACE, 'dsl-import-confirm'],
  93. mutationFn: (importId: string) => {
  94. return post<ImportPipelineDSLConfirmResponse>(`/rag/pipelines/imports/${importId}/confirm`)
  95. },
  96. ...mutationOptions,
  97. })
  98. }
  99. export const useCheckPipelineDependencies = (
  100. mutationOptions: MutationOptions<PipelineCheckDependenciesResponse, Error, string> = {},
  101. ) => {
  102. return useMutation({
  103. mutationKey: [NAME_SPACE, 'check-dependencies'],
  104. mutationFn: (pipelineId: string) => {
  105. return post<PipelineCheckDependenciesResponse>(`/rag/pipelines/imports/${pipelineId}/check-dependencies`)
  106. },
  107. ...mutationOptions,
  108. })
  109. }
  110. export const useDatasourceNodeRun = (
  111. mutationOptions: MutationOptions<PipelineDatasourceNodeRunResponse, Error, PipelineDatasourceNodeRunRequest> = {},
  112. ) => {
  113. return useMutation({
  114. mutationKey: [NAME_SPACE, 'datasource-node-run'],
  115. mutationFn: (request: PipelineDatasourceNodeRunRequest) => {
  116. const { pipeline_id, node_id, ...rest } = request
  117. return post<PipelineDatasourceNodeRunResponse>(`/rag/pipelines/${pipeline_id}/workflows/published/nodes/${node_id}/run`, {
  118. body: rest,
  119. })
  120. },
  121. ...mutationOptions,
  122. })
  123. }
  124. // Get the config of shared input fields
  125. export const usePipelineProcessingParams = (params: PipelineProcessingParamsRequest) => {
  126. const { pipeline_id, node_id } = params
  127. return useQuery<PipelineProcessingParamsResponse>({
  128. queryKey: [NAME_SPACE, 'pipeline-processing-params', pipeline_id],
  129. queryFn: () => {
  130. return get<PipelineProcessingParamsResponse>(`/rag/pipelines/${pipeline_id}/workflows/processing/parameters`, {
  131. params: {
  132. node_id,
  133. },
  134. })
  135. },
  136. })
  137. }
  138. export const useDataSourceList = (enabled?: boolean) => {
  139. return useQuery<ToolWithProvider[]>({
  140. enabled,
  141. queryKey: [NAME_SPACE, 'data-source'],
  142. queryFn: () => {
  143. return get('/rag/pipelines/datasource-plugins')
  144. },
  145. retry: false,
  146. })
  147. }
  148. export const usePublishedPipelineInfo = (pipelineId: string) => {
  149. return useQuery<PublishedPipelineInfoResponse>({
  150. queryKey: [NAME_SPACE, 'published-pipeline', pipelineId],
  151. queryFn: () => {
  152. return get<PublishedPipelineInfoResponse>(`/rag/pipelines/${pipelineId}/workflows/publish`)
  153. },
  154. enabled: !!pipelineId,
  155. })
  156. }