mirror of
https://github.com/langgenius/dify.git
synced 2026-03-04 23:36:20 +08:00
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
"""
|
|
GraphEngine command entities for external control.
|
|
|
|
This module defines command types that can be sent to a running GraphEngine
|
|
instance to control its execution flow.
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
from enum import StrEnum, auto
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from dify_graph.variables.variables import Variable
|
|
|
|
|
|
class CommandType(StrEnum):
|
|
"""Types of commands that can be sent to GraphEngine."""
|
|
|
|
ABORT = auto()
|
|
PAUSE = auto()
|
|
UPDATE_VARIABLES = auto()
|
|
|
|
|
|
class GraphEngineCommand(BaseModel):
|
|
"""Base class for all GraphEngine commands."""
|
|
|
|
command_type: CommandType = Field(..., description="Type of command")
|
|
payload: dict[str, Any] | None = Field(default=None, description="Optional command payload")
|
|
|
|
|
|
class AbortCommand(GraphEngineCommand):
|
|
"""Command to abort a running workflow execution."""
|
|
|
|
command_type: CommandType = Field(default=CommandType.ABORT, description="Type of command")
|
|
reason: str | None = Field(default=None, description="Optional reason for abort")
|
|
|
|
|
|
class PauseCommand(GraphEngineCommand):
|
|
"""Command to pause a running workflow execution."""
|
|
|
|
command_type: CommandType = Field(default=CommandType.PAUSE, description="Type of command")
|
|
reason: str = Field(default="unknown reason", description="reason for pause")
|
|
|
|
|
|
class VariableUpdate(BaseModel):
|
|
"""Represents a single variable update instruction."""
|
|
|
|
value: Variable = Field(description="New variable value")
|
|
|
|
|
|
class UpdateVariablesCommand(GraphEngineCommand):
|
|
"""Command to update a group of variables in the variable pool."""
|
|
|
|
command_type: CommandType = Field(default=CommandType.UPDATE_VARIABLES, description="Type of command")
|
|
updates: Sequence[VariableUpdate] = Field(default_factory=list, description="Variable updates")
|