| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 | from enum import Enumfrom typing import Any, Optionalfrom pydantic import BaseModel, field_validatorfrom core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkfrom core.workflow.entities.base_node_data_entities import BaseNodeDatafrom core.workflow.entities.node_entities import NodeTypeclass QueueEvent(str, Enum):    """    QueueEvent enum    """    LLM_CHUNK = "llm_chunk"    TEXT_CHUNK = "text_chunk"    AGENT_MESSAGE = "agent_message"    MESSAGE_REPLACE = "message_replace"    MESSAGE_END = "message_end"    ADVANCED_CHAT_MESSAGE_END = "advanced_chat_message_end"    WORKFLOW_STARTED = "workflow_started"    WORKFLOW_SUCCEEDED = "workflow_succeeded"    WORKFLOW_FAILED = "workflow_failed"    ITERATION_START = "iteration_start"    ITERATION_NEXT = "iteration_next"    ITERATION_COMPLETED = "iteration_completed"    NODE_STARTED = "node_started"    NODE_SUCCEEDED = "node_succeeded"    NODE_FAILED = "node_failed"    RETRIEVER_RESOURCES = "retriever_resources"    ANNOTATION_REPLY = "annotation_reply"    AGENT_THOUGHT = "agent_thought"    MESSAGE_FILE = "message_file"    ERROR = "error"    PING = "ping"    STOP = "stop"class AppQueueEvent(BaseModel):    """    QueueEvent entity    """    event: QueueEventclass QueueLLMChunkEvent(AppQueueEvent):    """    QueueLLMChunkEvent entity    """    event: QueueEvent = QueueEvent.LLM_CHUNK    chunk: LLMResultChunkclass QueueIterationStartEvent(AppQueueEvent):    """    QueueIterationStartEvent entity    """    event: QueueEvent = QueueEvent.ITERATION_START    node_id: str    node_type: NodeType    node_data: BaseNodeData    node_run_index: int    inputs: dict = None    predecessor_node_id: Optional[str] = None    metadata: Optional[dict] = Noneclass QueueIterationNextEvent(AppQueueEvent):    """    QueueIterationNextEvent entity    """    event: QueueEvent = QueueEvent.ITERATION_NEXT    index: int    node_id: str    node_type: NodeType    node_run_index: int    output: Optional[Any] = None # output for the current iteration    @field_validator('output', mode='before')    @classmethod    def set_output(cls, v):        """        Set output        """        if v is None:            return None        if isinstance(v, int | float | str | bool | dict | list):            return v        raise ValueError('output must be a valid type')class QueueIterationCompletedEvent(AppQueueEvent):    """    QueueIterationCompletedEvent entity    """    event:QueueEvent = QueueEvent.ITERATION_COMPLETED    node_id: str    node_type: NodeType        node_run_index: int    outputs: dictclass QueueTextChunkEvent(AppQueueEvent):    """    QueueTextChunkEvent entity    """    event: QueueEvent = QueueEvent.TEXT_CHUNK    text: str    metadata: Optional[dict] = Noneclass QueueAgentMessageEvent(AppQueueEvent):    """    QueueMessageEvent entity    """    event: QueueEvent = QueueEvent.AGENT_MESSAGE    chunk: LLMResultChunk    class QueueMessageReplaceEvent(AppQueueEvent):    """    QueueMessageReplaceEvent entity    """    event: QueueEvent = QueueEvent.MESSAGE_REPLACE    text: strclass QueueRetrieverResourcesEvent(AppQueueEvent):    """    QueueRetrieverResourcesEvent entity    """    event: QueueEvent = QueueEvent.RETRIEVER_RESOURCES    retriever_resources: list[dict]class QueueAnnotationReplyEvent(AppQueueEvent):    """    QueueAnnotationReplyEvent entity    """    event: QueueEvent = QueueEvent.ANNOTATION_REPLY    message_annotation_id: strclass QueueMessageEndEvent(AppQueueEvent):    """    QueueMessageEndEvent entity    """    event: QueueEvent = QueueEvent.MESSAGE_END    llm_result: Optional[LLMResult] = Noneclass QueueAdvancedChatMessageEndEvent(AppQueueEvent):    """    QueueAdvancedChatMessageEndEvent entity    """    event: QueueEvent = QueueEvent.ADVANCED_CHAT_MESSAGE_ENDclass QueueWorkflowStartedEvent(AppQueueEvent):    """    QueueWorkflowStartedEvent entity    """    event: QueueEvent = QueueEvent.WORKFLOW_STARTEDclass QueueWorkflowSucceededEvent(AppQueueEvent):    """    QueueWorkflowSucceededEvent entity    """    event: QueueEvent = QueueEvent.WORKFLOW_SUCCEEDEDclass QueueWorkflowFailedEvent(AppQueueEvent):    """    QueueWorkflowFailedEvent entity    """    event: QueueEvent = QueueEvent.WORKFLOW_FAILED    error: strclass QueueNodeStartedEvent(AppQueueEvent):    """    QueueNodeStartedEvent entity    """    event: QueueEvent = QueueEvent.NODE_STARTED    node_id: str    node_type: NodeType    node_data: BaseNodeData    node_run_index: int = 1    predecessor_node_id: Optional[str] = Noneclass QueueNodeSucceededEvent(AppQueueEvent):    """    QueueNodeSucceededEvent entity    """    event: QueueEvent = QueueEvent.NODE_SUCCEEDED    node_id: str    node_type: NodeType    node_data: BaseNodeData    inputs: Optional[dict] = None    process_data: Optional[dict] = None    outputs: Optional[dict] = None    execution_metadata: Optional[dict] = None    error: Optional[str] = Noneclass QueueNodeFailedEvent(AppQueueEvent):    """    QueueNodeFailedEvent entity    """    event: QueueEvent = QueueEvent.NODE_FAILED    node_id: str    node_type: NodeType    node_data: BaseNodeData    inputs: Optional[dict] = None    outputs: Optional[dict] = None    process_data: Optional[dict] = None    error: strclass QueueAgentThoughtEvent(AppQueueEvent):    """    QueueAgentThoughtEvent entity    """    event: QueueEvent = QueueEvent.AGENT_THOUGHT    agent_thought_id: strclass QueueMessageFileEvent(AppQueueEvent):    """    QueueAgentThoughtEvent entity    """    event: QueueEvent = QueueEvent.MESSAGE_FILE    message_file_id: strclass QueueErrorEvent(AppQueueEvent):    """    QueueErrorEvent entity    """    event: QueueEvent = QueueEvent.ERROR    error: Any = Noneclass QueuePingEvent(AppQueueEvent):    """    QueuePingEvent entity    """    event: QueueEvent = QueueEvent.PINGclass QueueStopEvent(AppQueueEvent):    """    QueueStopEvent entity    """    class StopBy(Enum):        """        Stop by enum        """        USER_MANUAL = "user-manual"        ANNOTATION_REPLY = "annotation-reply"        OUTPUT_MODERATION = "output-moderation"        INPUT_MODERATION = "input-moderation"    event: QueueEvent = QueueEvent.STOP    stopped_by: StopByclass QueueMessage(BaseModel):    """    QueueMessage entity    """    task_id: str    app_mode: str    event: AppQueueEventclass MessageQueueMessage(QueueMessage):    """    MessageQueueMessage entity    """    message_id: str    conversation_id: strclass WorkflowQueueMessage(QueueMessage):    """    WorkflowQueueMessage entity    """    pass
 |