You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

queue_entities.py 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737
  1. from collections.abc import Mapping
  2. from datetime import datetime
  3. from enum import Enum, StrEnum
  4. from typing import Any, Optional
  5. from pydantic import BaseModel
  6. from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
  7. from core.workflow.entities.node_entities import AgentNodeStrategyInit
  8. from core.workflow.entities.workflow_node_execution import NodeRunMetadataKey
  9. from core.workflow.graph_engine.entities.graph_runtime_state import GraphRuntimeState
  10. from core.workflow.nodes import NodeType
  11. from core.workflow.nodes.base import BaseNodeData
  12. class QueueEvent(StrEnum):
  13. """
  14. QueueEvent enum
  15. """
  16. LLM_CHUNK = "llm_chunk"
  17. TEXT_CHUNK = "text_chunk"
  18. AGENT_MESSAGE = "agent_message"
  19. MESSAGE_REPLACE = "message_replace"
  20. MESSAGE_END = "message_end"
  21. ADVANCED_CHAT_MESSAGE_END = "advanced_chat_message_end"
  22. WORKFLOW_STARTED = "workflow_started"
  23. WORKFLOW_SUCCEEDED = "workflow_succeeded"
  24. WORKFLOW_FAILED = "workflow_failed"
  25. WORKFLOW_PARTIAL_SUCCEEDED = "workflow_partial_succeeded"
  26. ITERATION_START = "iteration_start"
  27. ITERATION_NEXT = "iteration_next"
  28. ITERATION_COMPLETED = "iteration_completed"
  29. LOOP_START = "loop_start"
  30. LOOP_NEXT = "loop_next"
  31. LOOP_COMPLETED = "loop_completed"
  32. NODE_STARTED = "node_started"
  33. NODE_SUCCEEDED = "node_succeeded"
  34. NODE_FAILED = "node_failed"
  35. NODE_EXCEPTION = "node_exception"
  36. RETRIEVER_RESOURCES = "retriever_resources"
  37. ANNOTATION_REPLY = "annotation_reply"
  38. AGENT_THOUGHT = "agent_thought"
  39. MESSAGE_FILE = "message_file"
  40. PARALLEL_BRANCH_RUN_STARTED = "parallel_branch_run_started"
  41. PARALLEL_BRANCH_RUN_SUCCEEDED = "parallel_branch_run_succeeded"
  42. PARALLEL_BRANCH_RUN_FAILED = "parallel_branch_run_failed"
  43. AGENT_LOG = "agent_log"
  44. ERROR = "error"
  45. PING = "ping"
  46. STOP = "stop"
  47. RETRY = "retry"
  48. class AppQueueEvent(BaseModel):
  49. """
  50. QueueEvent abstract entity
  51. """
  52. event: QueueEvent
  53. class QueueLLMChunkEvent(AppQueueEvent):
  54. """
  55. QueueLLMChunkEvent entity
  56. Only for basic mode apps
  57. """
  58. event: QueueEvent = QueueEvent.LLM_CHUNK
  59. chunk: LLMResultChunk
  60. class QueueIterationStartEvent(AppQueueEvent):
  61. """
  62. QueueIterationStartEvent entity
  63. """
  64. event: QueueEvent = QueueEvent.ITERATION_START
  65. node_execution_id: str
  66. node_id: str
  67. node_type: NodeType
  68. node_data: BaseNodeData
  69. parallel_id: Optional[str] = None
  70. """parallel id if node is in parallel"""
  71. parallel_start_node_id: Optional[str] = None
  72. """parallel start node id if node is in parallel"""
  73. parent_parallel_id: Optional[str] = None
  74. """parent parallel id if node is in parallel"""
  75. parent_parallel_start_node_id: Optional[str] = None
  76. """parent parallel start node id if node is in parallel"""
  77. start_at: datetime
  78. node_run_index: int
  79. inputs: Optional[Mapping[str, Any]] = None
  80. predecessor_node_id: Optional[str] = None
  81. metadata: Optional[Mapping[str, Any]] = None
  82. class QueueIterationNextEvent(AppQueueEvent):
  83. """
  84. QueueIterationNextEvent entity
  85. """
  86. event: QueueEvent = QueueEvent.ITERATION_NEXT
  87. index: int
  88. node_execution_id: str
  89. node_id: str
  90. node_type: NodeType
  91. node_data: BaseNodeData
  92. parallel_id: Optional[str] = None
  93. """parallel id if node is in parallel"""
  94. parallel_start_node_id: Optional[str] = None
  95. """parallel start node id if node is in parallel"""
  96. parent_parallel_id: Optional[str] = None
  97. """parent parallel id if node is in parallel"""
  98. parent_parallel_start_node_id: Optional[str] = None
  99. """parent parallel start node id if node is in parallel"""
  100. parallel_mode_run_id: Optional[str] = None
  101. """iteratoin run in parallel mode run id"""
  102. node_run_index: int
  103. output: Optional[Any] = None # output for the current iteration
  104. duration: Optional[float] = None
  105. class QueueIterationCompletedEvent(AppQueueEvent):
  106. """
  107. QueueIterationCompletedEvent entity
  108. """
  109. event: QueueEvent = QueueEvent.ITERATION_COMPLETED
  110. node_execution_id: str
  111. node_id: str
  112. node_type: NodeType
  113. node_data: BaseNodeData
  114. parallel_id: Optional[str] = None
  115. """parallel id if node is in parallel"""
  116. parallel_start_node_id: Optional[str] = None
  117. """parallel start node id if node is in parallel"""
  118. parent_parallel_id: Optional[str] = None
  119. """parent parallel id if node is in parallel"""
  120. parent_parallel_start_node_id: Optional[str] = None
  121. """parent parallel start node id if node is in parallel"""
  122. start_at: datetime
  123. node_run_index: int
  124. inputs: Optional[Mapping[str, Any]] = None
  125. outputs: Optional[Mapping[str, Any]] = None
  126. metadata: Optional[Mapping[str, Any]] = None
  127. steps: int = 0
  128. error: Optional[str] = None
  129. class QueueLoopStartEvent(AppQueueEvent):
  130. """
  131. QueueLoopStartEvent entity
  132. """
  133. event: QueueEvent = QueueEvent.LOOP_START
  134. node_execution_id: str
  135. node_id: str
  136. node_type: NodeType
  137. node_data: BaseNodeData
  138. parallel_id: Optional[str] = None
  139. """parallel id if node is in parallel"""
  140. parallel_start_node_id: Optional[str] = None
  141. """parallel start node id if node is in parallel"""
  142. parent_parallel_id: Optional[str] = None
  143. """parent parallel id if node is in parallel"""
  144. parent_parallel_start_node_id: Optional[str] = None
  145. """parent parallel start node id if node is in parallel"""
  146. start_at: datetime
  147. node_run_index: int
  148. inputs: Optional[Mapping[str, Any]] = None
  149. predecessor_node_id: Optional[str] = None
  150. metadata: Optional[Mapping[str, Any]] = None
  151. class QueueLoopNextEvent(AppQueueEvent):
  152. """
  153. QueueLoopNextEvent entity
  154. """
  155. event: QueueEvent = QueueEvent.LOOP_NEXT
  156. index: int
  157. node_execution_id: str
  158. node_id: str
  159. node_type: NodeType
  160. node_data: BaseNodeData
  161. parallel_id: Optional[str] = None
  162. """parallel id if node is in parallel"""
  163. parallel_start_node_id: Optional[str] = None
  164. """parallel start node id if node is in parallel"""
  165. parent_parallel_id: Optional[str] = None
  166. """parent parallel id if node is in parallel"""
  167. parent_parallel_start_node_id: Optional[str] = None
  168. """parent parallel start node id if node is in parallel"""
  169. parallel_mode_run_id: Optional[str] = None
  170. """iteratoin run in parallel mode run id"""
  171. node_run_index: int
  172. output: Optional[Any] = None # output for the current loop
  173. duration: Optional[float] = None
  174. class QueueLoopCompletedEvent(AppQueueEvent):
  175. """
  176. QueueLoopCompletedEvent entity
  177. """
  178. event: QueueEvent = QueueEvent.LOOP_COMPLETED
  179. node_execution_id: str
  180. node_id: str
  181. node_type: NodeType
  182. node_data: BaseNodeData
  183. parallel_id: Optional[str] = None
  184. """parallel id if node is in parallel"""
  185. parallel_start_node_id: Optional[str] = None
  186. """parallel start node id if node is in parallel"""
  187. parent_parallel_id: Optional[str] = None
  188. """parent parallel id if node is in parallel"""
  189. parent_parallel_start_node_id: Optional[str] = None
  190. """parent parallel start node id if node is in parallel"""
  191. start_at: datetime
  192. node_run_index: int
  193. inputs: Optional[Mapping[str, Any]] = None
  194. outputs: Optional[Mapping[str, Any]] = None
  195. metadata: Optional[Mapping[str, Any]] = None
  196. steps: int = 0
  197. error: Optional[str] = None
  198. class QueueTextChunkEvent(AppQueueEvent):
  199. """
  200. QueueTextChunkEvent entity
  201. """
  202. event: QueueEvent = QueueEvent.TEXT_CHUNK
  203. text: str
  204. from_variable_selector: Optional[list[str]] = None
  205. """from variable selector"""
  206. in_iteration_id: Optional[str] = None
  207. """iteration id if node is in iteration"""
  208. in_loop_id: Optional[str] = None
  209. """loop id if node is in loop"""
  210. class QueueAgentMessageEvent(AppQueueEvent):
  211. """
  212. QueueMessageEvent entity
  213. """
  214. event: QueueEvent = QueueEvent.AGENT_MESSAGE
  215. chunk: LLMResultChunk
  216. class QueueMessageReplaceEvent(AppQueueEvent):
  217. """
  218. QueueMessageReplaceEvent entity
  219. """
  220. class MessageReplaceReason(StrEnum):
  221. """
  222. Reason for message replace event
  223. """
  224. OUTPUT_MODERATION = "output_moderation"
  225. event: QueueEvent = QueueEvent.MESSAGE_REPLACE
  226. text: str
  227. reason: str
  228. class QueueRetrieverResourcesEvent(AppQueueEvent):
  229. """
  230. QueueRetrieverResourcesEvent entity
  231. """
  232. event: QueueEvent = QueueEvent.RETRIEVER_RESOURCES
  233. retriever_resources: list[dict]
  234. in_iteration_id: Optional[str] = None
  235. """iteration id if node is in iteration"""
  236. in_loop_id: Optional[str] = None
  237. """loop id if node is in loop"""
  238. class QueueAnnotationReplyEvent(AppQueueEvent):
  239. """
  240. QueueAnnotationReplyEvent entity
  241. """
  242. event: QueueEvent = QueueEvent.ANNOTATION_REPLY
  243. message_annotation_id: str
  244. class QueueMessageEndEvent(AppQueueEvent):
  245. """
  246. QueueMessageEndEvent entity
  247. """
  248. event: QueueEvent = QueueEvent.MESSAGE_END
  249. llm_result: Optional[LLMResult] = None
  250. class QueueAdvancedChatMessageEndEvent(AppQueueEvent):
  251. """
  252. QueueAdvancedChatMessageEndEvent entity
  253. """
  254. event: QueueEvent = QueueEvent.ADVANCED_CHAT_MESSAGE_END
  255. class QueueWorkflowStartedEvent(AppQueueEvent):
  256. """
  257. QueueWorkflowStartedEvent entity
  258. """
  259. event: QueueEvent = QueueEvent.WORKFLOW_STARTED
  260. graph_runtime_state: GraphRuntimeState
  261. class QueueWorkflowSucceededEvent(AppQueueEvent):
  262. """
  263. QueueWorkflowSucceededEvent entity
  264. """
  265. event: QueueEvent = QueueEvent.WORKFLOW_SUCCEEDED
  266. outputs: Optional[dict[str, Any]] = None
  267. class QueueWorkflowFailedEvent(AppQueueEvent):
  268. """
  269. QueueWorkflowFailedEvent entity
  270. """
  271. event: QueueEvent = QueueEvent.WORKFLOW_FAILED
  272. error: str
  273. exceptions_count: int
  274. class QueueWorkflowPartialSuccessEvent(AppQueueEvent):
  275. """
  276. QueueWorkflowFailedEvent entity
  277. """
  278. event: QueueEvent = QueueEvent.WORKFLOW_PARTIAL_SUCCEEDED
  279. exceptions_count: int
  280. outputs: Optional[dict[str, Any]] = None
  281. class QueueNodeStartedEvent(AppQueueEvent):
  282. """
  283. QueueNodeStartedEvent entity
  284. """
  285. event: QueueEvent = QueueEvent.NODE_STARTED
  286. node_execution_id: str
  287. node_id: str
  288. node_type: NodeType
  289. node_data: BaseNodeData
  290. node_run_index: int = 1
  291. predecessor_node_id: Optional[str] = None
  292. parallel_id: Optional[str] = None
  293. """parallel id if node is in parallel"""
  294. parallel_start_node_id: Optional[str] = None
  295. """parallel start node id if node is in parallel"""
  296. parent_parallel_id: Optional[str] = None
  297. """parent parallel id if node is in parallel"""
  298. parent_parallel_start_node_id: Optional[str] = None
  299. """parent parallel start node id if node is in parallel"""
  300. in_iteration_id: Optional[str] = None
  301. """iteration id if node is in iteration"""
  302. in_loop_id: Optional[str] = None
  303. """loop id if node is in loop"""
  304. start_at: datetime
  305. parallel_mode_run_id: Optional[str] = None
  306. """iteratoin run in parallel mode run id"""
  307. agent_strategy: Optional[AgentNodeStrategyInit] = None
  308. class QueueNodeSucceededEvent(AppQueueEvent):
  309. """
  310. QueueNodeSucceededEvent entity
  311. """
  312. event: QueueEvent = QueueEvent.NODE_SUCCEEDED
  313. node_execution_id: str
  314. node_id: str
  315. node_type: NodeType
  316. node_data: BaseNodeData
  317. parallel_id: Optional[str] = None
  318. """parallel id if node is in parallel"""
  319. parallel_start_node_id: Optional[str] = None
  320. """parallel start node id if node is in parallel"""
  321. parent_parallel_id: Optional[str] = None
  322. """parent parallel id if node is in parallel"""
  323. parent_parallel_start_node_id: Optional[str] = None
  324. """parent parallel start node id if node is in parallel"""
  325. in_iteration_id: Optional[str] = None
  326. """iteration id if node is in iteration"""
  327. in_loop_id: Optional[str] = None
  328. """loop id if node is in loop"""
  329. start_at: datetime
  330. inputs: Optional[Mapping[str, Any]] = None
  331. process_data: Optional[Mapping[str, Any]] = None
  332. outputs: Optional[Mapping[str, Any]] = None
  333. execution_metadata: Optional[Mapping[NodeRunMetadataKey, Any]] = None
  334. error: Optional[str] = None
  335. """single iteration duration map"""
  336. iteration_duration_map: Optional[dict[str, float]] = None
  337. """single loop duration map"""
  338. loop_duration_map: Optional[dict[str, float]] = None
  339. class QueueAgentLogEvent(AppQueueEvent):
  340. """
  341. QueueAgentLogEvent entity
  342. """
  343. event: QueueEvent = QueueEvent.AGENT_LOG
  344. id: str
  345. label: str
  346. node_execution_id: str
  347. parent_id: str | None
  348. error: str | None
  349. status: str
  350. data: Mapping[str, Any]
  351. metadata: Optional[Mapping[str, Any]] = None
  352. node_id: str
  353. class QueueNodeRetryEvent(QueueNodeStartedEvent):
  354. """QueueNodeRetryEvent entity"""
  355. event: QueueEvent = QueueEvent.RETRY
  356. inputs: Optional[Mapping[str, Any]] = None
  357. process_data: Optional[Mapping[str, Any]] = None
  358. outputs: Optional[Mapping[str, Any]] = None
  359. execution_metadata: Optional[Mapping[NodeRunMetadataKey, Any]] = None
  360. error: str
  361. retry_index: int # retry index
  362. class QueueNodeInIterationFailedEvent(AppQueueEvent):
  363. """
  364. QueueNodeInIterationFailedEvent entity
  365. """
  366. event: QueueEvent = QueueEvent.NODE_FAILED
  367. node_execution_id: str
  368. node_id: str
  369. node_type: NodeType
  370. node_data: BaseNodeData
  371. parallel_id: Optional[str] = None
  372. """parallel id if node is in parallel"""
  373. parallel_start_node_id: Optional[str] = None
  374. """parallel start node id if node is in parallel"""
  375. parent_parallel_id: Optional[str] = None
  376. """parent parallel id if node is in parallel"""
  377. parent_parallel_start_node_id: Optional[str] = None
  378. """parent parallel start node id if node is in parallel"""
  379. in_iteration_id: Optional[str] = None
  380. """iteration id if node is in iteration"""
  381. in_loop_id: Optional[str] = None
  382. """loop id if node is in loop"""
  383. start_at: datetime
  384. inputs: Optional[Mapping[str, Any]] = None
  385. process_data: Optional[Mapping[str, Any]] = None
  386. outputs: Optional[Mapping[str, Any]] = None
  387. execution_metadata: Optional[Mapping[NodeRunMetadataKey, Any]] = None
  388. error: str
  389. class QueueNodeInLoopFailedEvent(AppQueueEvent):
  390. """
  391. QueueNodeInLoopFailedEvent entity
  392. """
  393. event: QueueEvent = QueueEvent.NODE_FAILED
  394. node_execution_id: str
  395. node_id: str
  396. node_type: NodeType
  397. node_data: BaseNodeData
  398. parallel_id: Optional[str] = None
  399. """parallel id if node is in parallel"""
  400. parallel_start_node_id: Optional[str] = None
  401. """parallel start node id if node is in parallel"""
  402. parent_parallel_id: Optional[str] = None
  403. """parent parallel id if node is in parallel"""
  404. parent_parallel_start_node_id: Optional[str] = None
  405. """parent parallel start node id if node is in parallel"""
  406. in_iteration_id: Optional[str] = None
  407. """iteration id if node is in iteration"""
  408. in_loop_id: Optional[str] = None
  409. """loop id if node is in loop"""
  410. start_at: datetime
  411. inputs: Optional[Mapping[str, Any]] = None
  412. process_data: Optional[Mapping[str, Any]] = None
  413. outputs: Optional[Mapping[str, Any]] = None
  414. execution_metadata: Optional[Mapping[NodeRunMetadataKey, Any]] = None
  415. error: str
  416. class QueueNodeExceptionEvent(AppQueueEvent):
  417. """
  418. QueueNodeExceptionEvent entity
  419. """
  420. event: QueueEvent = QueueEvent.NODE_EXCEPTION
  421. node_execution_id: str
  422. node_id: str
  423. node_type: NodeType
  424. node_data: BaseNodeData
  425. parallel_id: Optional[str] = None
  426. """parallel id if node is in parallel"""
  427. parallel_start_node_id: Optional[str] = None
  428. """parallel start node id if node is in parallel"""
  429. parent_parallel_id: Optional[str] = None
  430. """parent parallel id if node is in parallel"""
  431. parent_parallel_start_node_id: Optional[str] = None
  432. """parent parallel start node id if node is in parallel"""
  433. in_iteration_id: Optional[str] = None
  434. """iteration id if node is in iteration"""
  435. in_loop_id: Optional[str] = None
  436. """loop id if node is in loop"""
  437. start_at: datetime
  438. inputs: Optional[Mapping[str, Any]] = None
  439. process_data: Optional[Mapping[str, Any]] = None
  440. outputs: Optional[Mapping[str, Any]] = None
  441. execution_metadata: Optional[Mapping[NodeRunMetadataKey, Any]] = None
  442. error: str
  443. class QueueNodeFailedEvent(AppQueueEvent):
  444. """
  445. QueueNodeFailedEvent entity
  446. """
  447. event: QueueEvent = QueueEvent.NODE_FAILED
  448. node_execution_id: str
  449. node_id: str
  450. node_type: NodeType
  451. node_data: BaseNodeData
  452. parallel_id: Optional[str] = None
  453. """parallel id if node is in parallel"""
  454. parallel_start_node_id: Optional[str] = None
  455. """parallel start node id if node is in parallel"""
  456. parent_parallel_id: Optional[str] = None
  457. """parent parallel id if node is in parallel"""
  458. parent_parallel_start_node_id: Optional[str] = None
  459. """parent parallel start node id if node is in parallel"""
  460. in_iteration_id: Optional[str] = None
  461. """iteration id if node is in iteration"""
  462. in_loop_id: Optional[str] = None
  463. """loop id if node is in loop"""
  464. start_at: datetime
  465. inputs: Optional[Mapping[str, Any]] = None
  466. process_data: Optional[Mapping[str, Any]] = None
  467. outputs: Optional[Mapping[str, Any]] = None
  468. execution_metadata: Optional[Mapping[NodeRunMetadataKey, Any]] = None
  469. error: str
  470. class QueueAgentThoughtEvent(AppQueueEvent):
  471. """
  472. QueueAgentThoughtEvent entity
  473. """
  474. event: QueueEvent = QueueEvent.AGENT_THOUGHT
  475. agent_thought_id: str
  476. class QueueMessageFileEvent(AppQueueEvent):
  477. """
  478. QueueAgentThoughtEvent entity
  479. """
  480. event: QueueEvent = QueueEvent.MESSAGE_FILE
  481. message_file_id: str
  482. class QueueErrorEvent(AppQueueEvent):
  483. """
  484. QueueErrorEvent entity
  485. """
  486. event: QueueEvent = QueueEvent.ERROR
  487. error: Any = None
  488. class QueuePingEvent(AppQueueEvent):
  489. """
  490. QueuePingEvent entity
  491. """
  492. event: QueueEvent = QueueEvent.PING
  493. class QueueStopEvent(AppQueueEvent):
  494. """
  495. QueueStopEvent entity
  496. """
  497. class StopBy(Enum):
  498. """
  499. Stop by enum
  500. """
  501. USER_MANUAL = "user-manual"
  502. ANNOTATION_REPLY = "annotation-reply"
  503. OUTPUT_MODERATION = "output-moderation"
  504. INPUT_MODERATION = "input-moderation"
  505. event: QueueEvent = QueueEvent.STOP
  506. stopped_by: StopBy
  507. def get_stop_reason(self) -> str:
  508. """
  509. To stop reason
  510. """
  511. reason_mapping = {
  512. QueueStopEvent.StopBy.USER_MANUAL: "Stopped by user.",
  513. QueueStopEvent.StopBy.ANNOTATION_REPLY: "Stopped by annotation reply.",
  514. QueueStopEvent.StopBy.OUTPUT_MODERATION: "Stopped by output moderation.",
  515. QueueStopEvent.StopBy.INPUT_MODERATION: "Stopped by input moderation.",
  516. }
  517. return reason_mapping.get(self.stopped_by, "Stopped by unknown reason.")
  518. class QueueMessage(BaseModel):
  519. """
  520. QueueMessage abstract entity
  521. """
  522. task_id: str
  523. app_mode: str
  524. event: AppQueueEvent
  525. class MessageQueueMessage(QueueMessage):
  526. """
  527. MessageQueueMessage entity
  528. """
  529. message_id: str
  530. conversation_id: str
  531. class WorkflowQueueMessage(QueueMessage):
  532. """
  533. WorkflowQueueMessage entity
  534. """
  535. pass
  536. class QueueParallelBranchRunStartedEvent(AppQueueEvent):
  537. """
  538. QueueParallelBranchRunStartedEvent entity
  539. """
  540. event: QueueEvent = QueueEvent.PARALLEL_BRANCH_RUN_STARTED
  541. parallel_id: str
  542. parallel_start_node_id: str
  543. parent_parallel_id: Optional[str] = None
  544. """parent parallel id if node is in parallel"""
  545. parent_parallel_start_node_id: Optional[str] = None
  546. """parent parallel start node id if node is in parallel"""
  547. in_iteration_id: Optional[str] = None
  548. """iteration id if node is in iteration"""
  549. in_loop_id: Optional[str] = None
  550. """loop id if node is in loop"""
  551. class QueueParallelBranchRunSucceededEvent(AppQueueEvent):
  552. """
  553. QueueParallelBranchRunSucceededEvent entity
  554. """
  555. event: QueueEvent = QueueEvent.PARALLEL_BRANCH_RUN_SUCCEEDED
  556. parallel_id: str
  557. parallel_start_node_id: str
  558. parent_parallel_id: Optional[str] = None
  559. """parent parallel id if node is in parallel"""
  560. parent_parallel_start_node_id: Optional[str] = None
  561. """parent parallel start node id if node is in parallel"""
  562. in_iteration_id: Optional[str] = None
  563. """iteration id if node is in iteration"""
  564. in_loop_id: Optional[str] = None
  565. """loop id if node is in loop"""
  566. class QueueParallelBranchRunFailedEvent(AppQueueEvent):
  567. """
  568. QueueParallelBranchRunFailedEvent entity
  569. """
  570. event: QueueEvent = QueueEvent.PARALLEL_BRANCH_RUN_FAILED
  571. parallel_id: str
  572. parallel_start_node_id: str
  573. parent_parallel_id: Optional[str] = None
  574. """parent parallel id if node is in parallel"""
  575. parent_parallel_start_node_id: Optional[str] = None
  576. """parent parallel start node id if node is in parallel"""
  577. in_iteration_id: Optional[str] = None
  578. """iteration id if node is in iteration"""
  579. in_loop_id: Optional[str] = None
  580. """loop id if node is in loop"""
  581. error: str