refactor: rename 'suspended' status to 'paused' across workflow components and update related styles

This commit is contained in:
twwu 2025-12-26 14:50:47 +08:00
parent 062896cb9c
commit 2969a77b15
21 changed files with 96 additions and 74 deletions

View File

@ -81,7 +81,7 @@ const WorkflowAppLogList: FC<ILogs> = ({ logs, appDetail, onRefresh }) => {
</div>
)
}
if (status === 'suspended') {
if (status === 'paused') {
return (
<div className="system-xs-semibold-uppercase inline-flex items-center gap-1">
<Indicator color="yellow" />

View File

@ -35,7 +35,7 @@ const WorkflowProcessItem = ({
const running = data.status === WorkflowRunningStatus.Running
const succeeded = data.status === WorkflowRunningStatus.Succeeded
const failed = data.status === WorkflowRunningStatus.Failed || data.status === WorkflowRunningStatus.Stopped
const suspended = data.status === WorkflowRunningStatus.Suspended
const paused = data.status === WorkflowRunningStatus.Paused
const latestNode = data.tracing[data.tracing.length - 1]
useEffect(() => {
@ -53,9 +53,9 @@ const WorkflowProcessItem = ({
running && !collapse && 'bg-background-section-burn',
succeeded && !collapse && 'bg-state-success-hover',
failed && !collapse && 'bg-state-destructive-hover',
suspended && !collapse && 'bg-state-warning-hover',
collapse && !failed && !suspended && 'bg-workflow-process-bg',
collapse && suspended && 'bg-workflow-process-suspended-bg',
paused && !collapse && 'bg-state-warning-hover',
collapse && !failed && !paused && 'bg-workflow-process-bg',
collapse && paused && 'bg-workflow-process-paused-bg',
collapse && failed && 'bg-workflow-process-failed-bg',
)}
>
@ -79,7 +79,7 @@ const WorkflowProcessItem = ({
)
}
{
suspended && (
paused && (
<RiPauseCircleFill className="mr-1 h-3.5 w-3.5 shrink-0 text-text-warning-secondary" />
)
}

View File

@ -90,7 +90,7 @@ export const useWorkflowRun = () => {
handleWorkflowAgentLog,
handleWorkflowTextChunk,
handleWorkflowTextReplace,
handleWorkflowSuspended,
handleWorkflowPaused,
} = useWorkflowRunEvent()
const handleBackupDraft = useCallback(() => {
@ -178,7 +178,7 @@ export const useWorkflowRun = () => {
onNodeRetry,
onAgentLog,
onError,
onWorkflowSuspended,
onWorkflowPaused,
onHumanInputRequired,
onCompleted,
...restCallback
@ -609,7 +609,7 @@ export const useWorkflowRun = () => {
baseSseOptions.onTextReplace,
baseSseOptions.onAgentLog,
baseSseOptions.onHumanInputRequired,
baseSseOptions.onWorkflowSuspended,
baseSseOptions.onWorkflowPaused,
baseSseOptions.onDataSourceNodeProcessing,
baseSseOptions.onDataSourceNodeCompleted,
baseSseOptions.onDataSourceNodeError,
@ -780,10 +780,10 @@ export const useWorkflowRun = () => {
onTTSEnd: (messageId: string, audio: string) => {
player?.playAudioWithAudio(audio, false)
},
onWorkflowSuspended: (params) => {
handleWorkflowSuspended()
if (onWorkflowSuspended)
onWorkflowSuspended(params)
onWorkflowPaused: (params) => {
handleWorkflowPaused()
if (onWorkflowPaused)
onWorkflowPaused(params)
},
onHumanInputRequired: (params) => {
handleWorkflowNodeHumanInputRequired(params)
@ -793,7 +793,7 @@ export const useWorkflowRun = () => {
...restCallback,
},
)
}, [store, doSyncWorkflowDraft, workflowStore, pathname, handleWorkflowStarted, handleWorkflowFinished, fetchInspectVars, invalidAllLastRun, handleWorkflowFailed, handleWorkflowNodeStarted, handleWorkflowNodeFinished, handleWorkflowNodeIterationStarted, handleWorkflowNodeIterationNext, handleWorkflowNodeIterationFinished, handleWorkflowNodeLoopStarted, handleWorkflowNodeLoopNext, handleWorkflowNodeLoopFinished, handleWorkflowNodeRetry, handleWorkflowAgentLog, handleWorkflowTextChunk, handleWorkflowTextReplace])
}, [store, doSyncWorkflowDraft, workflowStore, pathname, handleWorkflowFailed, flowId, handleWorkflowStarted, handleWorkflowFinished, fetchInspectVars, invalidAllLastRun, handleWorkflowNodeStarted, handleWorkflowNodeFinished, handleWorkflowNodeIterationStarted, handleWorkflowNodeIterationNext, handleWorkflowNodeIterationFinished, handleWorkflowNodeLoopStarted, handleWorkflowNodeLoopNext, handleWorkflowNodeLoopFinished, handleWorkflowNodeRetry, handleWorkflowAgentLog, handleWorkflowTextChunk, handleWorkflowTextReplace, handleWorkflowPaused, handleWorkflowNodeHumanInputRequired])
const handleStopRun = useCallback((taskId: string) => {
const setStoppedState = () => {

View File

@ -11,7 +11,7 @@ export * from './use-workflow-node-loop-next'
export * from './use-workflow-node-loop-started'
export * from './use-workflow-node-retry'
export * from './use-workflow-node-started'
export * from './use-workflow-paused'
export * from './use-workflow-started'
export * from './use-workflow-suspended'
export * from './use-workflow-text-chunk'
export * from './use-workflow-text-replace'

View File

@ -25,7 +25,7 @@ export const useWorkflowNodeHumanInputRequired = () => {
const nodes = getNodes()
const currentNodeIndex = nodes.findIndex(node => node.id === data.node_id)
const newNodes = produce(nodes, (draft) => {
draft[currentNodeIndex].data._runningStatus = NodeRunningStatus.Suspended
draft[currentNodeIndex].data._runningStatus = NodeRunningStatus.Paused
// draft[currentNodeIndex].data._waitingRun = false
// store form data & input form schema
})
@ -35,10 +35,10 @@ export const useWorkflowNodeHumanInputRequired = () => {
setWorkflowRunningData(produce(workflowRunningData!, (draft) => {
draft.result = {
...draft.result,
// status: WorkflowRunningStatus.Suspended, // human input required !== workflow 'Suspended'
// status: WorkflowRunningStatus.Paused, // human input required !== workflow 'Paused'
}
}))
}, [workflowStore])
}, [store, workflowStore])
return {
handleWorkflowNodeHumanInputRequired,

View File

@ -3,10 +3,10 @@ import { useCallback } from 'react'
import { useWorkflowStore } from '@/app/components/workflow/store'
import { WorkflowRunningStatus } from '@/app/components/workflow/types'
export const useWorkflowSuspended = () => {
export const useWorkflowPaused = () => {
const workflowStore = useWorkflowStore()
const handleWorkflowSuspended = useCallback(() => {
const handleWorkflowPaused = useCallback(() => {
const {
workflowRunningData,
setWorkflowRunningData,
@ -15,12 +15,12 @@ export const useWorkflowSuspended = () => {
setWorkflowRunningData(produce(workflowRunningData!, (draft) => {
draft.result = {
...draft.result,
status: WorkflowRunningStatus.Suspended,
status: WorkflowRunningStatus.Paused,
}
}))
}, [workflowStore])
return {
handleWorkflowSuspended,
handleWorkflowPaused,
}
}

View File

@ -12,8 +12,8 @@ import {
useWorkflowNodeLoopStarted,
useWorkflowNodeRetry,
useWorkflowNodeStarted,
useWorkflowPaused,
useWorkflowStarted,
useWorkflowSuspended,
useWorkflowTextChunk,
useWorkflowTextReplace,
} from '.'
@ -34,7 +34,7 @@ export const useWorkflowRunEvent = () => {
const { handleWorkflowTextChunk } = useWorkflowTextChunk()
const { handleWorkflowTextReplace } = useWorkflowTextReplace()
const { handleWorkflowAgentLog } = useWorkflowAgentLog()
const { handleWorkflowSuspended } = useWorkflowSuspended()
const { handleWorkflowPaused } = useWorkflowPaused()
const { handleWorkflowNodeHumanInputRequired } = useWorkflowNodeHumanInputRequired()
return {
@ -53,7 +53,7 @@ export const useWorkflowRunEvent = () => {
handleWorkflowTextChunk,
handleWorkflowTextReplace,
handleWorkflowAgentLog,
handleWorkflowSuspended,
handleWorkflowPaused,
handleWorkflowNodeHumanInputRequired,
}
}

View File

@ -9,6 +9,7 @@ import {
RiCheckboxCircleFill,
RiErrorWarningFill,
RiLoader2Line,
RiPauseCircleFill,
} from '@remixicon/react'
import {
cloneElement,
@ -107,7 +108,7 @@ const BaseNode: FC<BaseNodeProps> = ({
showExceptionBorder,
} = useMemo(() => {
return {
showRunningBorder: data._runningStatus === NodeRunningStatus.Running && !showSelectedBorder,
showRunningBorder: (data._runningStatus === NodeRunningStatus.Running || data._runningStatus === NodeRunningStatus.Paused) && !showSelectedBorder,
showSuccessBorder: (data._runningStatus === NodeRunningStatus.Succeeded || hasVarValue) && !showSelectedBorder,
showFailedBorder: data._runningStatus === NodeRunningStatus.Failed && !showSelectedBorder,
showExceptionBorder: data._runningStatus === NodeRunningStatus.Exception && !showSelectedBorder,
@ -287,15 +288,27 @@ const BaseNode: FC<BaseNodeProps> = ({
data.type === BlockEnum.Loop && data._loopIndex && LoopIndex
}
{
isLoading
? <RiLoader2Line className="h-3.5 w-3.5 animate-spin text-text-accent" />
: data._runningStatus === NodeRunningStatus.Failed
? <RiErrorWarningFill className="h-3.5 w-3.5 text-text-destructive" />
: data._runningStatus === NodeRunningStatus.Exception
? <RiAlertFill className="h-3.5 w-3.5 text-text-warning-secondary" />
: (data._runningStatus === NodeRunningStatus.Succeeded || hasVarValue)
? <RiCheckboxCircleFill className="h-3.5 w-3.5 text-text-success" />
: null
isLoading && <RiLoader2Line className="h-3.5 w-3.5 animate-spin text-text-accent" />
}
{
!isLoading && data._runningStatus === NodeRunningStatus.Failed && (
<RiErrorWarningFill className="h-3.5 w-3.5 text-text-destructive" />
)
}
{
!isLoading && data._runningStatus === NodeRunningStatus.Exception && (
<RiAlertFill className="h-3.5 w-3.5 text-text-warning-secondary" />
)
}
{
!isLoading && (data._runningStatus === NodeRunningStatus.Succeeded || hasVarValue) && (
<RiCheckboxCircleFill className="h-3.5 w-3.5 text-text-success" />
)
}
{
!isLoading && data._runningStatus === NodeRunningStatus.Paused && (
<RiPauseCircleFill className="h-3.5 w-3.5 text-text-warning-secondary" />
)
}
</div>
{

View File

@ -130,7 +130,7 @@ const ChatWrapper = (
const inputDisabled = useMemo(() => {
const latestMessage = chatList[chatList.length - 1]
return latestMessage?.isAnswer && (latestMessage.workflowProcess?.status === WorkflowRunningStatus.Suspended)
return latestMessage?.isAnswer && (latestMessage.workflowProcess?.status === WorkflowRunningStatus.Paused)
}, [chatList])
const { eventEmitter } = useEventEmitterContextContext()

View File

@ -514,9 +514,14 @@ export const useChat = (
parentId: params.parent_message_id,
})
},
onWorkflowSuspended: ({ data }) => {
console.log(data.suspended_at_node_ids)
responseItem.workflowProcess!.status = WorkflowRunningStatus.Suspended
onWorkflowPaused: ({ data }) => {
responseItem.workflowProcess!.status = WorkflowRunningStatus.Paused
data.paused_nodes.forEach((nodeId) => {
const currentTracingIndex = responseItem.workflowProcess!.tracing!.findIndex(item => item.node_id === nodeId)
if (currentTracingIndex > -1) {
responseItem.workflowProcess!.tracing[currentTracingIndex].status = NodeRunningStatus.Paused
}
})
updateCurrentQAOnTree({
placeholderQuestionId,
questionItem,

View File

@ -50,6 +50,9 @@ const MetaData: FC<Props> = ({
{status === 'stopped' && (
<span>STOP</span>
)}
{status === 'paused' && (
<span>PENDING</span>
)}
</div>
</div>
<div className="flex">
@ -88,10 +91,10 @@ const MetaData: FC<Props> = ({
<div className="flex">
<div className="system-xs-regular w-[104px] shrink-0 truncate px-2 py-1.5 text-text-tertiary">{t('runLog.meta.tokens')}</div>
<div className="system-xs-regular grow px-2 py-1.5 text-text-secondary">
{status === 'running' && (
{['running', 'paused'].includes(status) && (
<div className="my-1 h-2 w-[48px] rounded-sm bg-text-quaternary" />
)}
{status !== 'running' && (
{!['running', 'paused'].includes(status) && (
<span>{`${tokens || 0} Tokens`}</span>
)}
</div>

View File

@ -145,7 +145,7 @@ const NodePanel: FC<Props> = ({
{nodeInfo.title}
</div>
</Tooltip>
{nodeInfo.status !== 'running' && !hideInfo && (
{!['running', 'paused'].includes(nodeInfo.status) && !hideInfo && (
<div className="system-xs-regular shrink-0 text-text-tertiary">
{nodeInfo.execution_metadata?.total_tokens ? `${getTokenCount(nodeInfo.execution_metadata?.total_tokens || 0)} tokens · ` : ''}
{`${getTime(nodeInfo.elapsed_time || 0)}`}
@ -160,7 +160,7 @@ const NodePanel: FC<Props> = ({
{nodeInfo.status === 'stopped' && (
<RiAlertFill className={cn('ml-2 h-4 w-4 shrink-0 text-text-warning-secondary', inMessage && 'h-3.5 w-3.5')} />
)}
{nodeInfo.status === 'suspended' && (
{nodeInfo.status === 'paused' && (
<RiPauseCircleFill className={cn('ml-2 h-4 w-4 shrink-0 text-text-warning-secondary', inMessage && 'h-3.5 w-3.5')} />
)}
{nodeInfo.status === 'exception' && (
@ -233,8 +233,8 @@ const NodePanel: FC<Props> = ({
{nodeInfo.error}
</StatusContainer>
)}
{(nodeInfo.status === 'suspended') && (
<StatusContainer status="suspended">
{(nodeInfo.status === 'paused') && (
<StatusContainer status="paused">
<div className="system-xs-regular text-text-warning">{t('workflow.nodes.humanInput.log.reasonContent')}</div>
</StatusContainer>
)}

View File

@ -28,9 +28,9 @@ const StatusContainer: FC<Props> = ({
status === 'failed' && 'border-[rgba(240,68,56,0.8)] bg-workflow-display-error-bg bg-[url(~@/app/components/workflow/run/assets/bg-line-error.svg)] text-text-warning',
status === 'failed' && theme === Theme.light && 'shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.5),inset_0_1px_3px_0_rgba(0,0,0,0.12),inset_0_2px_24px_0_rgba(240,68,56,0.2),0_1px_2px_0_rgba(9,9,11,0.05),0_0_0_1px_rgba(0,0,0,0.05)]',
status === 'failed' && theme === Theme.dark && 'shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.12),inset_0_1px_3px_0_rgba(0,0,0,0.4),inset_0_2px_24px_0_rgba(240,68,56,0.25),0_1px_2px_0_rgba(0,0,0,0.1),0_0_0_1px_rgba(24, 24, 27, 0.95)]',
(status === 'stopped' || status === 'suspended') && 'border-[rgba(247,144,9,0.8)] bg-workflow-display-warning-bg bg-[url(~@/app/components/workflow/run/assets/bg-line-warning.svg)] text-text-destructive',
(status === 'stopped' || status === 'suspended') && theme === Theme.light && 'shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.5),inset_0_1px_3px_0_rgba(0,0,0,0.12),inset_0_2px_24px_0_rgba(247,144,9,0.2),0_1px_2px_0_rgba(9,9,11,0.05),0_0_0_1px_rgba(0,0,0,0.05)]',
(status === 'stopped' || status === 'suspended') && theme === Theme.dark && 'shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.12),inset_0_1px_3px_0_rgba(0,0,0,0.4),inset_0_2px_24px_0_rgba(247,144,9,0.25),0_1px_2px_0_rgba(0,0,0,0.1),0_0_0_1px_rgba(24, 24, 27, 0.95)]',
(status === 'stopped' || status === 'paused') && 'border-[rgba(247,144,9,0.8)] bg-workflow-display-warning-bg bg-[url(~@/app/components/workflow/run/assets/bg-line-warning.svg)] text-text-destructive',
(status === 'stopped' || status === 'paused') && theme === Theme.light && 'shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.5),inset_0_1px_3px_0_rgba(0,0,0,0.12),inset_0_2px_24px_0_rgba(247,144,9,0.2),0_1px_2px_0_rgba(9,9,11,0.05),0_0_0_1px_rgba(0,0,0,0.05)]',
(status === 'stopped' || status === 'paused') && theme === Theme.dark && 'shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.12),inset_0_1px_3px_0_rgba(0,0,0,0.4),inset_0_2px_24px_0_rgba(247,144,9,0.25),0_1px_2px_0_rgba(0,0,0,0.1),0_0_0_1px_rgba(24, 24, 27, 0.95)]',
status === 'exception' && 'border-[rgba(247,144,9,0.8)] bg-workflow-display-warning-bg bg-[url(~@/app/components/workflow/run/assets/bg-line-warning.svg)] text-text-destructive',
status === 'exception' && theme === Theme.light && 'shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.5),inset_0_1px_3px_0_rgba(0,0,0,0.12),inset_0_2px_24px_0_rgba(247,144,9,0.2),0_1px_2px_0_rgba(9,9,11,0.05),0_0_0_1px_rgba(0,0,0,0.05)]',
status === 'exception' && theme === Theme.dark && 'shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.12),inset_0_1px_3px_0_rgba(0,0,0,0.4),inset_0_2px_24px_0_rgba(247,144,9,0.25),0_1px_2px_0_rgba(0,0,0,0.1),0_0_0_1px_rgba(24, 24, 27, 0.95)]',

View File

@ -43,7 +43,7 @@ const StatusPanel: FC<ResultProps> = ({
status === 'succeeded' && 'text-util-colors-green-green-600',
status === 'partial-succeeded' && 'text-util-colors-green-green-600',
status === 'failed' && 'text-util-colors-red-red-600',
(status === 'stopped' || status === 'suspended') && 'text-util-colors-warning-warning-600',
(status === 'stopped' || status === 'paused') && 'text-util-colors-warning-warning-600',
status === 'running' && 'text-util-colors-blue-light-blue-light-600',
)}
>
@ -83,7 +83,7 @@ const StatusPanel: FC<ResultProps> = ({
<span>STOP</span>
</>
)}
{status === 'suspended' && (
{status === 'paused' && (
<>
<Indicator color="yellow" />
<span>PENDING</span>
@ -94,10 +94,10 @@ const StatusPanel: FC<ResultProps> = ({
<div className="max-w-[152px] flex-[33%]">
<div className="system-2xs-medium-uppercase mb-1 text-text-tertiary">{t('runLog.resultPanel.time')}</div>
<div className="system-sm-medium flex items-center gap-1 text-text-secondary">
{(status === 'running' || status === 'suspended') && (
{(status === 'running' || status === 'paused') && (
<div className="h-2 w-16 rounded-sm bg-text-quaternary" />
)}
{status !== 'running' && status !== 'suspended' && (
{status !== 'running' && status !== 'paused' && (
<span>{time ? `${time?.toFixed(3)}s` : '-'}</span>
)}
</div>
@ -105,10 +105,10 @@ const StatusPanel: FC<ResultProps> = ({
<div className="flex-[33%]">
<div className="system-2xs-medium-uppercase mb-1 text-text-tertiary">{t('runLog.resultPanel.tokens')}</div>
<div className="system-sm-medium flex items-center gap-1 text-text-secondary">
{(status === 'running' || status === 'suspended') && (
{(status === 'running' || status === 'paused') && (
<div className="h-2 w-20 rounded-sm bg-text-quaternary" />
)}
{status !== 'running' && status !== 'suspended' && (
{status !== 'running' && status !== 'paused' && (
<span>{`${tokens || 0} Tokens`}</span>
)}
</div>
@ -157,7 +157,7 @@ const StatusPanel: FC<ResultProps> = ({
</>
)
}
{status === 'suspended' && (
{status === 'paused' && (
<>
<div className="my-2 h-[0.5px] bg-divider-deep" />
<div className="system-xs-medium space-y-1 text-text-warning">

View File

@ -9,7 +9,7 @@ import type { FileUploadConfigResponse } from '@/models/common'
type PreviewRunningData = WorkflowRunningData & {
resultTabActive?: boolean
resultText?: string
// human input form schema or data cached when node is in 'Suspended' status
// human input form schema or data cached when node is in 'Paused' status
extraContentAndFormData?: Record<string, any>
}

View File

@ -351,7 +351,7 @@ export enum WorkflowRunningStatus {
Succeeded = 'succeeded',
Failed = 'failed',
Stopped = 'stopped',
Suspended = 'suspended',
Paused = 'paused',
}
export enum WorkflowVersion {
@ -369,7 +369,7 @@ export enum NodeRunningStatus {
Exception = 'exception',
Retry = 'retry',
Stopped = 'stopped',
Suspended = 'suspended',
Paused = 'paused',
}
export type OnNodeAdd = (

View File

@ -22,8 +22,8 @@ import type {
TextChunkResponse,
TextReplaceResponse,
WorkflowFinishedResponse,
WorkflowPausedResponse,
WorkflowStartedResponse,
WorkflowSuspendedResponse,
} from '@/types/workflow'
import Cookies from 'js-cookie'
import Toast from '@/app/components/base/toast'
@ -73,7 +73,7 @@ export type IOnLoopFinished = (workflowFinished: LoopFinishedResponse) => void
export type IOnAgentLog = (agentLog: AgentLogResponse) => void
export type IOHumanInputRequired = (humanInputRequired: HumanInputRequiredResponse) => void
export type IOWorkflowSuspended = (workflowSuspended: WorkflowSuspendedResponse) => void
export type IOWorkflowPaused = (workflowPaused: WorkflowPausedResponse) => void
export type IOnDataSourceNodeProcessing = (dataSourceNodeProcessing: DataSourceNodeProcessingResponse) => void
export type IOnDataSourceNodeCompleted = (dataSourceNodeCompleted: DataSourceNodeCompletedResponse) => void
export type IOnDataSourceNodeError = (dataSourceNodeError: DataSourceNodeErrorResponse) => void
@ -113,7 +113,7 @@ export type IOtherOptions = {
onLoopFinish?: IOnLoopFinished
onAgentLog?: IOnAgentLog
onHumanInputRequired?: IOHumanInputRequired
onWorkflowSuspended?: IOWorkflowSuspended
onWorkflowPaused?: IOWorkflowPaused
// Pipeline data source node run
onDataSourceNodeProcessing?: IOnDataSourceNodeProcessing
@ -197,7 +197,7 @@ export const handleStream = (
onTextReplace?: IOnTextReplace,
onAgentLog?: IOnAgentLog,
onHumanInputRequired?: IOHumanInputRequired,
onWorkflowSuspended?: IOWorkflowSuspended,
onWorkflowPaused?: IOWorkflowPaused,
onDataSourceNodeProcessing?: IOnDataSourceNodeProcessing,
onDataSourceNodeCompleted?: IOnDataSourceNodeCompleted,
onDataSourceNodeError?: IOnDataSourceNodeError,
@ -323,7 +323,7 @@ export const handleStream = (
onHumanInputRequired?.(bufferObj as HumanInputRequiredResponse)
}
else if (bufferObj.event === 'workflow_paused') {
onWorkflowSuspended?.(bufferObj as WorkflowSuspendedResponse)
onWorkflowPaused?.(bufferObj as WorkflowPausedResponse)
}
else if (bufferObj.event === 'datasource_processing') {
onDataSourceNodeProcessing?.(bufferObj as DataSourceNodeProcessingResponse)
@ -448,7 +448,7 @@ export const ssePost = async (
onLoopNext,
onLoopFinish,
onHumanInputRequired,
onWorkflowSuspended,
onWorkflowPaused,
onDataSourceNodeProcessing,
onDataSourceNodeCompleted,
onDataSourceNodeError,
@ -551,7 +551,7 @@ export const ssePost = async (
onTextReplace,
onAgentLog,
onHumanInputRequired,
onWorkflowSuspended,
onWorkflowPaused,
onDataSourceNodeProcessing,
onDataSourceNodeCompleted,
onDataSourceNodeError,
@ -598,7 +598,7 @@ export const sseGet = async (
onLoopNext,
onLoopFinish,
onHumanInputRequired,
onWorkflowSuspended,
onWorkflowPaused,
onDataSourceNodeProcessing,
onDataSourceNodeCompleted,
onDataSourceNodeError,
@ -694,7 +694,7 @@ export const sseGet = async (
onTextReplace,
onAgentLog,
onHumanInputRequired,
onWorkflowSuspended,
onWorkflowPaused,
onDataSourceNodeProcessing,
onDataSourceNodeCompleted,
onDataSourceNodeError,

View File

@ -103,6 +103,7 @@ const config = {
'chat-bubble-bg': 'var(--color-chat-bubble-bg)',
'chat-input-mask': 'var(--color-chat-input-mask)',
'workflow-process-bg': 'var(--color-workflow-process-bg)',
'workflow-process-paused-bg': 'var(--color-workflow-process-paused-bg)',
'workflow-run-failed-bg': 'var(--color-workflow-run-failed-bg)',
'workflow-batch-failed-bg': 'var(--color-workflow-batch-failed-bg)',
'mask-top2bottom-gray-50-to-transparent': 'var(--mask-top2bottom-gray-50-to-transparent)',

View File

@ -11,7 +11,7 @@ html[data-theme="dark"] {
--color-workflow-process-bg: linear-gradient(90deg,
rgba(24, 24, 27, 0.25) 0%,
rgba(24, 24, 27, 0.04) 100%);
--color-workflow-process-suspended-bg: linear-gradient(90deg,
--color-workflow-process-paused-bg: linear-gradient(90deg,
rgba(247, 144, 9, 0.14) 0%,
rgba(247, 144, 9, 0.00) 100%);
--color-workflow-process-failed-bg: linear-gradient(90deg,

View File

@ -11,7 +11,7 @@ html[data-theme="light"] {
--color-workflow-process-bg: linear-gradient(90deg,
rgba(200, 206, 218, 0.2) 0%,
rgba(200, 206, 218, 0.04) 100%);
--color-workflow-process-suspended-bg: linear-gradient(90deg,
--color-workflow-process-paused-bg: linear-gradient(90deg,
#FFFAEB 0%,
rgba(255, 250, 235, 0.00) 100%);
--color-workflow-process-failed-bg: linear-gradient(90deg,

View File

@ -168,15 +168,15 @@ export type WorkflowStartedResponse = {
}
}
export type WorkflowSuspendedResponse = {
export type WorkflowPausedResponse = {
task_id: string
workflow_run_id: string
event: string
data: {
id: string
workflow_id: string
created_at: number
suspended_at_node_ids: string[]
outputs: any // todo: remove any
paused_nodes: string[]
reasons: any[] // todo: remove any
workflow_run_id: string
}
}