workflow.ts 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import type { Fetcher } from 'swr'
  2. import { get, post } from './base'
  3. import type { CommonResponse } from '@/models/common'
  4. import type {
  5. ChatRunHistoryResponse,
  6. ConversationVariableResponse,
  7. FetchWorkflowDraftPageResponse,
  8. FetchWorkflowDraftResponse,
  9. NodesDefaultConfigsResponse,
  10. WorkflowRunHistoryResponse,
  11. } from '@/types/workflow'
  12. import type { BlockEnum } from '@/app/components/workflow/types'
  13. export const fetchWorkflowDraft = (url: string) => {
  14. return get(url, {}, { silent: true }) as Promise<FetchWorkflowDraftResponse>
  15. }
  16. export const syncWorkflowDraft = ({ url, params }: {
  17. url: string
  18. params: Pick<FetchWorkflowDraftResponse, 'graph' | 'features' | 'environment_variables' | 'conversation_variables'>
  19. }) => {
  20. return post<CommonResponse & { updated_at: number; hash: string }>(url, { body: params }, { silent: true })
  21. }
  22. export const fetchNodesDefaultConfigs: Fetcher<NodesDefaultConfigsResponse, string> = (url) => {
  23. return get<NodesDefaultConfigsResponse>(url)
  24. }
  25. export const fetchWorkflowRunHistory: Fetcher<WorkflowRunHistoryResponse, string> = (url) => {
  26. return get<WorkflowRunHistoryResponse>(url)
  27. }
  28. export const fetchChatRunHistory: Fetcher<ChatRunHistoryResponse, string> = (url) => {
  29. return get<ChatRunHistoryResponse>(url)
  30. }
  31. export const singleNodeRun = (appId: string, nodeId: string, params: object) => {
  32. return post(`apps/${appId}/workflows/draft/nodes/${nodeId}/run`, { body: params })
  33. }
  34. export const getIterationSingleNodeRunUrl = (isChatFlow: boolean, appId: string, nodeId: string) => {
  35. return `apps/${appId}/${isChatFlow ? 'advanced-chat/' : ''}workflows/draft/iteration/nodes/${nodeId}/run`
  36. }
  37. export const publishWorkflow = (url: string) => {
  38. return post<CommonResponse & { created_at: number }>(url)
  39. }
  40. export const fetchPublishedWorkflow: Fetcher<FetchWorkflowDraftResponse, string> = (url) => {
  41. return get<FetchWorkflowDraftResponse>(url)
  42. }
  43. export const fetchPublishedAllWorkflow: Fetcher<FetchWorkflowDraftPageResponse, string> = (url) => {
  44. return get<FetchWorkflowDraftPageResponse>(url)
  45. }
  46. export const stopWorkflowRun = (url: string) => {
  47. return post<CommonResponse>(url)
  48. }
  49. export const fetchNodeDefault = (appId: string, blockType: BlockEnum, query = {}) => {
  50. return get(`apps/${appId}/workflows/default-workflow-block-configs/${blockType}`, {
  51. params: { q: JSON.stringify(query) },
  52. })
  53. }
  54. // TODO: archived
  55. export const updateWorkflowDraftFromDSL = (appId: string, data: string) => {
  56. return post<FetchWorkflowDraftResponse>(`apps/${appId}/workflows/draft/import`, { body: { data } })
  57. }
  58. export const fetchCurrentValueOfConversationVariable: Fetcher<ConversationVariableResponse, {
  59. url: string
  60. params: { conversation_id: string }
  61. }> = ({ url, params }) => {
  62. return get<ConversationVariableResponse>(url, { params })
  63. }