workflow.ts 2.7 KB

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