comfyui_api/models/
websocket.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[allow(clippy::large_enum_variant)]
7#[derive(Serialize, Deserialize, Debug)]
8#[serde(untagged)]
9pub enum PreviewOrUpdate {
10 Preview(Preview),
12 Update(Update),
14}
15
16#[derive(Default, Serialize, Deserialize, Debug)]
18pub struct Preview(pub Vec<u8>);
19
20#[derive(Serialize, Deserialize, Debug)]
22#[serde(tag = "type", content = "data")]
23#[serde(rename_all = "snake_case")]
24pub enum Update {
25 Status { status: Status },
27 Progress(Progress),
29 ExecutionStart(ExecutionStart),
31 Executing(Executing),
33 Executed(Executed),
35 ExecutionCached(ExecutionCached),
37 ExecutionInterrupted(ExecutionInterrupted),
39 ExecutionError(ExecutionError),
41}
42
43#[derive(Serialize, Deserialize, Debug)]
45pub struct Progress {
46 pub value: u64,
48 pub max: u64,
50}
51
52#[derive(Serialize, Deserialize, Debug)]
54pub struct Status {
55 pub exec_info: ExecInfo,
57}
58
59#[derive(Serialize, Deserialize, Debug)]
61pub struct ExecInfo {
62 pub queue_remaining: u64,
64}
65
66#[derive(Serialize, Deserialize, Debug)]
68pub struct ExecutionStart {
69 pub prompt_id: uuid::Uuid,
71}
72
73#[derive(Serialize, Deserialize, Debug)]
75pub struct ExecutionCached {
76 pub prompt_id: uuid::Uuid,
78 pub nodes: Vec<String>,
80}
81
82#[derive(Serialize, Deserialize, Debug)]
84pub struct Executing {
85 pub prompt_id: Option<uuid::Uuid>,
87 pub node: Option<String>,
89}
90
91#[derive(Serialize, Deserialize, Debug)]
93pub struct Executed {
94 pub prompt_id: uuid::Uuid,
96 pub node: String,
98 pub output: Output,
100}
101
102#[derive(Serialize, Deserialize, Debug)]
104pub struct Output {
105 pub images: Vec<Image>,
107}
108
109#[derive(Serialize, Deserialize, Debug, Clone)]
111pub struct Image {
112 pub filename: String,
114 pub subfolder: String,
116 #[serde(rename = "type")]
118 pub folder_type: String,
119}
120
121#[derive(Serialize, Deserialize, Debug)]
123pub struct ExecutionInterrupted {
124 pub prompt_id: uuid::Uuid,
126 pub node_id: String,
128 pub node_type: String,
130 pub executed: Vec<String>,
132}
133
134#[derive(Serialize, Deserialize, Debug)]
136pub struct ExecutionError {
137 #[serde(flatten)]
139 pub execution_status: ExecutionInterrupted,
140 pub exception_message: String,
142 pub exception_type: String,
144 pub traceback: Vec<String>,
146 pub current_inputs: CurrentInputs,
148 pub current_outputs: CurrentOutputs,
150}
151
152#[derive(Serialize, Deserialize, Debug)]
154#[serde(transparent)]
155pub struct CurrentInputs {
156 pub inputs: HashMap<String, serde_json::Value>,
158}
159
160#[derive(Serialize, Deserialize, Debug)]
162#[serde(transparent)]
163pub struct CurrentOutputs {
164 pub outputs: HashMap<String, Vec<serde_json::Value>>,
166}