comfyui-node 1.6.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/call-wrapper.js +856 -856
- package/dist/index.d.ts +13 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/multipool/client-registry.d.ts +33 -0
- package/dist/multipool/client-registry.d.ts.map +1 -0
- package/dist/multipool/client-registry.js +153 -0
- package/dist/multipool/client-registry.js.map +1 -0
- package/dist/multipool/helpers.d.ts +5 -0
- package/dist/multipool/helpers.d.ts.map +1 -0
- package/dist/multipool/helpers.js +53 -0
- package/dist/multipool/helpers.js.map +1 -0
- package/dist/multipool/index.d.ts +3 -0
- package/dist/multipool/index.d.ts.map +1 -0
- package/dist/multipool/index.js +3 -0
- package/dist/multipool/index.js.map +1 -0
- package/dist/multipool/interfaces.d.ts +13 -0
- package/dist/multipool/interfaces.d.ts.map +1 -0
- package/dist/multipool/interfaces.js +2 -0
- package/dist/multipool/interfaces.js.map +1 -0
- package/dist/multipool/job-profiler.d.ts +128 -0
- package/dist/multipool/job-profiler.d.ts.map +1 -0
- package/dist/multipool/job-profiler.js +222 -0
- package/dist/multipool/job-profiler.js.map +1 -0
- package/dist/multipool/job-queue-processor.d.ts +28 -0
- package/dist/multipool/job-queue-processor.d.ts.map +1 -0
- package/dist/multipool/job-queue-processor.js +197 -0
- package/dist/multipool/job-queue-processor.js.map +1 -0
- package/dist/multipool/job-state-registry.d.ts +67 -0
- package/dist/multipool/job-state-registry.d.ts.map +1 -0
- package/dist/multipool/job-state-registry.js +283 -0
- package/dist/multipool/job-state-registry.js.map +1 -0
- package/dist/multipool/logger.d.ts +30 -0
- package/dist/multipool/logger.d.ts.map +1 -0
- package/dist/multipool/logger.js +75 -0
- package/dist/multipool/logger.js.map +1 -0
- package/dist/multipool/multi-workflow-pool.d.ts +43 -0
- package/dist/multipool/multi-workflow-pool.d.ts.map +1 -0
- package/dist/multipool/multi-workflow-pool.js +314 -0
- package/dist/multipool/multi-workflow-pool.js.map +1 -0
- package/dist/multipool/pool-event-manager.d.ts +11 -0
- package/dist/multipool/pool-event-manager.d.ts.map +1 -0
- package/dist/multipool/pool-event-manager.js +28 -0
- package/dist/multipool/pool-event-manager.js.map +1 -0
- package/dist/multipool/tests/error-classification-tests.d.ts +2 -0
- package/dist/multipool/tests/error-classification-tests.d.ts.map +1 -0
- package/dist/multipool/tests/error-classification-tests.js +374 -0
- package/dist/multipool/tests/error-classification-tests.js.map +1 -0
- package/dist/multipool/tests/job-state-registry.d.ts +17 -0
- package/dist/multipool/tests/job-state-registry.d.ts.map +1 -0
- package/dist/multipool/tests/job-state-registry.js +24 -0
- package/dist/multipool/tests/job-state-registry.js.map +1 -0
- package/dist/multipool/tests/multipool-basic.d.ts +12 -0
- package/dist/multipool/tests/multipool-basic.d.ts.map +1 -0
- package/dist/multipool/tests/multipool-basic.js +142 -0
- package/dist/multipool/tests/multipool-basic.js.map +1 -0
- package/dist/multipool/tests/profiling-demo.d.ts +7 -0
- package/dist/multipool/tests/profiling-demo.d.ts.map +1 -0
- package/dist/multipool/tests/profiling-demo.js +88 -0
- package/dist/multipool/tests/profiling-demo.js.map +1 -0
- package/dist/multipool/tests/prompt-generator.d.ts +10 -0
- package/dist/multipool/tests/prompt-generator.d.ts.map +1 -0
- package/dist/multipool/tests/prompt-generator.js +26 -0
- package/dist/multipool/tests/prompt-generator.js.map +1 -0
- package/dist/multipool/tests/test-helpers.d.ts +4 -0
- package/dist/multipool/tests/test-helpers.d.ts.map +1 -0
- package/dist/multipool/tests/test-helpers.js +10 -0
- package/dist/multipool/tests/test-helpers.js.map +1 -0
- package/dist/multipool/tests/two-stage-edit-simulation.d.ts +32 -0
- package/dist/multipool/tests/two-stage-edit-simulation.d.ts.map +1 -0
- package/dist/multipool/tests/two-stage-edit-simulation.js +299 -0
- package/dist/multipool/tests/two-stage-edit-simulation.js.map +1 -0
- package/dist/multipool/workflow.d.ts +179 -0
- package/dist/multipool/workflow.d.ts.map +1 -0
- package/dist/multipool/workflow.js +334 -0
- package/dist/multipool/workflow.js.map +1 -0
- package/dist/pool/SmartPool.d.ts +143 -143
- package/dist/pool/SmartPool.d.ts.map +1 -1
- package/dist/pool/SmartPool.js +676 -676
- package/dist/pool/SmartPool.js.map +1 -1
- package/dist/pool/SmartPoolV2.d.ts +119 -119
- package/dist/pool/SmartPoolV2.js +586 -586
- package/dist/pool/WorkflowPool.d.ts +202 -202
- package/dist/pool/WorkflowPool.d.ts.map +1 -1
- package/dist/pool/WorkflowPool.js +845 -840
- package/dist/pool/WorkflowPool.js.map +1 -1
- package/dist/pool/client/ClientManager.d.ts +86 -86
- package/dist/pool/client/ClientManager.js +215 -215
- package/dist/pool/index.d.ts +9 -11
- package/dist/pool/index.d.ts.map +1 -1
- package/dist/pool/index.js +3 -5
- package/dist/pool/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import { MultiWorkflowPool } from "src/multipool/multi-workflow-pool.js";
|
|
2
|
+
import { Workflow } from "src/multipool/workflow.js";
|
|
3
|
+
/**
|
|
4
|
+
* Error Classification Validation Tests
|
|
5
|
+
*
|
|
6
|
+
* This script validates the error classification logic by intentionally triggering
|
|
7
|
+
* different types of errors from real ComfyUI servers.
|
|
8
|
+
*
|
|
9
|
+
* Test Cases:
|
|
10
|
+
* 1. Missing Model Error (workflow_incompatibility)
|
|
11
|
+
* 2. Missing Custom Node Error (workflow_incompatibility)
|
|
12
|
+
* 3. Invalid Input Error (transient)
|
|
13
|
+
* 4. Connection Error (connection)
|
|
14
|
+
*/
|
|
15
|
+
const pool = new MultiWorkflowPool();
|
|
16
|
+
// Add your real ComfyUI servers here
|
|
17
|
+
pool.addClient("http://server1:8188", {
|
|
18
|
+
workflowAffinity: [],
|
|
19
|
+
priority: 1
|
|
20
|
+
});
|
|
21
|
+
pool.addClient("http://server2:8188", {
|
|
22
|
+
workflowAffinity: [],
|
|
23
|
+
priority: 1
|
|
24
|
+
});
|
|
25
|
+
pool.addClient("http://server3:8188", {
|
|
26
|
+
workflowAffinity: [],
|
|
27
|
+
priority: 1
|
|
28
|
+
});
|
|
29
|
+
await pool.init();
|
|
30
|
+
console.log("\n" + "=".repeat(80));
|
|
31
|
+
console.log("ERROR CLASSIFICATION VALIDATION TESTS");
|
|
32
|
+
console.log("=".repeat(80) + "\n");
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// TEST 1: Missing Model Error (should be classified as workflow_incompatibility)
|
|
35
|
+
// ============================================================================
|
|
36
|
+
async function testMissingModel() {
|
|
37
|
+
console.log("\n📋 TEST 1: Missing Model Error");
|
|
38
|
+
console.log("-".repeat(80));
|
|
39
|
+
const workflow = new Workflow({
|
|
40
|
+
"1": {
|
|
41
|
+
"inputs": {
|
|
42
|
+
"text": "beautiful landscape"
|
|
43
|
+
},
|
|
44
|
+
"class_type": "CLIPTextEncode",
|
|
45
|
+
"_meta": {
|
|
46
|
+
"title": "CLIP Text Encode (Prompt)"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"2": {
|
|
50
|
+
"inputs": {
|
|
51
|
+
"ckpt_name": "this_model_definitely_does_not_exist_anywhere_12345.safetensors"
|
|
52
|
+
},
|
|
53
|
+
"class_type": "CheckpointLoaderSimple",
|
|
54
|
+
"_meta": {
|
|
55
|
+
"title": "Load Checkpoint"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"3": {
|
|
59
|
+
"inputs": {
|
|
60
|
+
"seed": 12345,
|
|
61
|
+
"steps": 20,
|
|
62
|
+
"cfg": 7.0,
|
|
63
|
+
"sampler_name": "euler",
|
|
64
|
+
"scheduler": "normal",
|
|
65
|
+
"denoise": 1.0,
|
|
66
|
+
"model": ["2", 0],
|
|
67
|
+
"positive": ["1", 0],
|
|
68
|
+
"negative": ["1", 0],
|
|
69
|
+
"latent_image": ["4", 0]
|
|
70
|
+
},
|
|
71
|
+
"class_type": "KSampler",
|
|
72
|
+
"_meta": {
|
|
73
|
+
"title": "KSampler"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"4": {
|
|
77
|
+
"inputs": {
|
|
78
|
+
"width": 512,
|
|
79
|
+
"height": 512,
|
|
80
|
+
"batch_size": 1
|
|
81
|
+
},
|
|
82
|
+
"class_type": "EmptyLatentImage",
|
|
83
|
+
"_meta": {
|
|
84
|
+
"title": "Empty Latent Image"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"5": {
|
|
88
|
+
"inputs": {
|
|
89
|
+
"samples": ["3", 0],
|
|
90
|
+
"vae": ["2", 2]
|
|
91
|
+
},
|
|
92
|
+
"class_type": "VAEDecode",
|
|
93
|
+
"_meta": {
|
|
94
|
+
"title": "VAE Decode"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"6": {
|
|
98
|
+
"inputs": {
|
|
99
|
+
"filename_prefix": "ComfyUI",
|
|
100
|
+
"images": ["5", 0]
|
|
101
|
+
},
|
|
102
|
+
"class_type": "SaveImage",
|
|
103
|
+
"_meta": {
|
|
104
|
+
"title": "Save Image"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
try {
|
|
109
|
+
const jobId = await pool.submitJob(workflow);
|
|
110
|
+
console.log(`Submitted job: ${jobId}`);
|
|
111
|
+
const result = await pool.waitForJobCompletion(jobId);
|
|
112
|
+
if (result.status === "failed") {
|
|
113
|
+
console.log("✅ Test PASSED: Job failed as expected");
|
|
114
|
+
console.log(`Error classification should be: workflow_incompatibility`);
|
|
115
|
+
console.log(`Actual error:`, result.error);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
console.log("❌ Test FAILED: Job should have failed but didn't");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
console.log("❌ Test ERROR:", error);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// TEST 2: Missing Custom Node Error (should be classified as workflow_incompatibility)
|
|
127
|
+
// ============================================================================
|
|
128
|
+
async function testMissingCustomNode() {
|
|
129
|
+
console.log("\n📋 TEST 2: Missing Custom Node Error");
|
|
130
|
+
console.log("-".repeat(80));
|
|
131
|
+
const workflow = new Workflow({
|
|
132
|
+
"1": {
|
|
133
|
+
"inputs": {
|
|
134
|
+
"some_input": "test"
|
|
135
|
+
},
|
|
136
|
+
"class_type": "NonExistentCustomNode_XYZ_12345",
|
|
137
|
+
"_meta": {
|
|
138
|
+
"title": "This Node Does Not Exist"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"2": {
|
|
142
|
+
"inputs": {
|
|
143
|
+
"filename_prefix": "test",
|
|
144
|
+
"images": ["1", 0]
|
|
145
|
+
},
|
|
146
|
+
"class_type": "SaveImage",
|
|
147
|
+
"_meta": {
|
|
148
|
+
"title": "Save Image"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
try {
|
|
153
|
+
const jobId = await pool.submitJob(workflow);
|
|
154
|
+
console.log(`Submitted job: ${jobId}`);
|
|
155
|
+
const result = await pool.waitForJobCompletion(jobId);
|
|
156
|
+
if (result.status === "failed") {
|
|
157
|
+
console.log("✅ Test PASSED: Job failed as expected");
|
|
158
|
+
console.log(`Error classification should be: workflow_incompatibility`);
|
|
159
|
+
console.log(`Actual error:`, result.error);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
console.log("❌ Test FAILED: Job should have failed but didn't");
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
console.log("❌ Test ERROR:", error);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// ============================================================================
|
|
170
|
+
// TEST 3: Invalid Input Error (should be classified as transient)
|
|
171
|
+
// ============================================================================
|
|
172
|
+
async function testInvalidInput() {
|
|
173
|
+
console.log("\n📋 TEST 3: Invalid Input Error");
|
|
174
|
+
console.log("-".repeat(80));
|
|
175
|
+
const workflow = new Workflow({
|
|
176
|
+
"1": {
|
|
177
|
+
"inputs": {
|
|
178
|
+
"width": -999999, // Negative width should cause validation error
|
|
179
|
+
"height": -999999, // Negative height should cause validation error
|
|
180
|
+
"batch_size": 1
|
|
181
|
+
},
|
|
182
|
+
"class_type": "EmptyLatentImage",
|
|
183
|
+
"_meta": {
|
|
184
|
+
"title": "Empty Latent Image"
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"2": {
|
|
188
|
+
"inputs": {
|
|
189
|
+
"filename_prefix": "test",
|
|
190
|
+
"images": ["1", 0]
|
|
191
|
+
},
|
|
192
|
+
"class_type": "SaveImage",
|
|
193
|
+
"_meta": {
|
|
194
|
+
"title": "Save Image"
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
try {
|
|
199
|
+
const jobId = await pool.submitJob(workflow);
|
|
200
|
+
console.log(`Submitted job: ${jobId}`);
|
|
201
|
+
const result = await pool.waitForJobCompletion(jobId);
|
|
202
|
+
if (result.status === "failed") {
|
|
203
|
+
console.log("✅ Test PASSED: Job failed as expected");
|
|
204
|
+
console.log(`Error classification should be: transient`);
|
|
205
|
+
console.log(`Actual error:`, result.error);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.log("❌ Test FAILED: Job should have failed but didn't");
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
console.log("❌ Test ERROR:", error);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// ============================================================================
|
|
216
|
+
// TEST 4: Connection Error (should be classified as connection)
|
|
217
|
+
// ============================================================================
|
|
218
|
+
async function testConnectionError() {
|
|
219
|
+
console.log("\n📋 TEST 4: Connection Error");
|
|
220
|
+
console.log("-".repeat(80));
|
|
221
|
+
const isolatedPool = new MultiWorkflowPool();
|
|
222
|
+
// Add a client that definitely doesn't exist
|
|
223
|
+
isolatedPool.addClient("http://this-server-does-not-exist-12345:8188", {
|
|
224
|
+
workflowAffinity: [],
|
|
225
|
+
priority: 1
|
|
226
|
+
});
|
|
227
|
+
try {
|
|
228
|
+
console.log("Attempting to connect to non-existent server...");
|
|
229
|
+
await isolatedPool.init();
|
|
230
|
+
console.log("❌ Test FAILED: Should have failed to connect");
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
console.log("✅ Test PASSED: Connection failed as expected");
|
|
234
|
+
console.log(`Error classification should be: connection`);
|
|
235
|
+
console.log(`Actual error:`, error);
|
|
236
|
+
}
|
|
237
|
+
finally {
|
|
238
|
+
await isolatedPool.shutdown();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// ============================================================================
|
|
242
|
+
// TEST 5: Missing LoRA Error (should be classified as workflow_incompatibility)
|
|
243
|
+
// ============================================================================
|
|
244
|
+
async function testMissingLoRA() {
|
|
245
|
+
console.log("\n📋 TEST 5: Missing LoRA Error");
|
|
246
|
+
console.log("-".repeat(80));
|
|
247
|
+
const workflow = new Workflow({
|
|
248
|
+
"1": {
|
|
249
|
+
"inputs": {
|
|
250
|
+
"text": "beautiful landscape"
|
|
251
|
+
},
|
|
252
|
+
"class_type": "CLIPTextEncode",
|
|
253
|
+
"_meta": {
|
|
254
|
+
"title": "CLIP Text Encode"
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"2": {
|
|
258
|
+
"inputs": {
|
|
259
|
+
"ckpt_name": "novaAnimeXL_ilV125.safetensors" // Use a model that exists on the servers
|
|
260
|
+
},
|
|
261
|
+
"class_type": "CheckpointLoaderSimple",
|
|
262
|
+
"_meta": {
|
|
263
|
+
"title": "Load Checkpoint"
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"3": {
|
|
267
|
+
"inputs": {
|
|
268
|
+
"lora_name": "this_lora_does_not_exist_12345.safetensors",
|
|
269
|
+
"strength_model": 1.0,
|
|
270
|
+
"strength_clip": 1.0,
|
|
271
|
+
"model": ["2", 0],
|
|
272
|
+
"clip": ["2", 1]
|
|
273
|
+
},
|
|
274
|
+
"class_type": "LoraLoader",
|
|
275
|
+
"_meta": {
|
|
276
|
+
"title": "Load LoRA"
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"4": {
|
|
280
|
+
"inputs": {
|
|
281
|
+
"width": 512,
|
|
282
|
+
"height": 512,
|
|
283
|
+
"batch_size": 1
|
|
284
|
+
},
|
|
285
|
+
"class_type": "EmptyLatentImage",
|
|
286
|
+
"_meta": {
|
|
287
|
+
"title": "Empty Latent Image"
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
"5": {
|
|
291
|
+
"inputs": {
|
|
292
|
+
"seed": 12345,
|
|
293
|
+
"steps": 20,
|
|
294
|
+
"cfg": 7.0,
|
|
295
|
+
"sampler_name": "euler",
|
|
296
|
+
"scheduler": "normal",
|
|
297
|
+
"denoise": 1.0,
|
|
298
|
+
"model": ["3", 0],
|
|
299
|
+
"positive": ["1", 0],
|
|
300
|
+
"negative": ["1", 0],
|
|
301
|
+
"latent_image": ["4", 0]
|
|
302
|
+
},
|
|
303
|
+
"class_type": "KSampler",
|
|
304
|
+
"_meta": {
|
|
305
|
+
"title": "KSampler"
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
"6": {
|
|
309
|
+
"inputs": {
|
|
310
|
+
"samples": ["5", 0],
|
|
311
|
+
"vae": ["2", 2]
|
|
312
|
+
},
|
|
313
|
+
"class_type": "VAEDecode",
|
|
314
|
+
"_meta": {
|
|
315
|
+
"title": "VAE Decode"
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
"7": {
|
|
319
|
+
"inputs": {
|
|
320
|
+
"filename_prefix": "ComfyUI",
|
|
321
|
+
"images": ["6", 0]
|
|
322
|
+
},
|
|
323
|
+
"class_type": "SaveImage",
|
|
324
|
+
"_meta": {
|
|
325
|
+
"title": "Save Image"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
try {
|
|
330
|
+
const jobId = await pool.submitJob(workflow);
|
|
331
|
+
console.log(`Submitted job: ${jobId}`);
|
|
332
|
+
const result = await pool.waitForJobCompletion(jobId);
|
|
333
|
+
if (result.status === "failed") {
|
|
334
|
+
console.log("✅ Test PASSED: Job failed as expected");
|
|
335
|
+
console.log(`Error classification should be: workflow_incompatibility`);
|
|
336
|
+
console.log(`Actual error:`, result.error);
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
console.log("❌ Test FAILED: Job should have failed but didn't");
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
console.log("❌ Test ERROR:", error);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
// ============================================================================
|
|
347
|
+
// Run all tests
|
|
348
|
+
// ============================================================================
|
|
349
|
+
async function runAllTests() {
|
|
350
|
+
try {
|
|
351
|
+
await testMissingModel();
|
|
352
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
353
|
+
await testMissingCustomNode();
|
|
354
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
355
|
+
await testInvalidInput();
|
|
356
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
357
|
+
await testMissingLoRA();
|
|
358
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
359
|
+
await testConnectionError();
|
|
360
|
+
console.log("\n" + "=".repeat(80));
|
|
361
|
+
console.log("ALL TESTS COMPLETED");
|
|
362
|
+
console.log("=".repeat(80) + "\n");
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
console.error("Fatal error during tests:", error);
|
|
366
|
+
}
|
|
367
|
+
finally {
|
|
368
|
+
await pool.shutdown();
|
|
369
|
+
process.exit(0);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
// Run the tests
|
|
373
|
+
runAllTests();
|
|
374
|
+
//# sourceMappingURL=error-classification-tests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-classification-tests.js","sourceRoot":"","sources":["../../../src/multipool/tests/error-classification-tests.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MultiWorkflowPool } from "src/multipool/multi-workflow-pool.js";
|
|
2
|
+
import { Workflow } from "src/multipool/workflow.js";
|
|
3
|
+
interface JobState {
|
|
4
|
+
jobId: string;
|
|
5
|
+
workflow: Workflow;
|
|
6
|
+
status: 'pending' | 'running' | 'completed' | 'failed' | 'canceled';
|
|
7
|
+
}
|
|
8
|
+
export declare class JobStateRegistry {
|
|
9
|
+
pool: MultiWorkflowPool;
|
|
10
|
+
jobs: Map<string, JobState>;
|
|
11
|
+
constructor(pool: MultiWorkflowPool);
|
|
12
|
+
addJob(workflow: Workflow): `${string}-${string}-${string}-${string}-${string}`;
|
|
13
|
+
getJobStatus(jobId: string): void;
|
|
14
|
+
cancelJob(jobId: string): void;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=job-state-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-state-registry.d.ts","sourceRoot":"","sources":["../../../src/multipool/tests/job-state-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;CACrE;AAED,qBAAa,gBAAgB;IAE3B,IAAI,EAAE,iBAAiB,CAAC;IAExB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;gBAE5B,IAAI,EAAE,iBAAiB;IAInC,MAAM,CAAC,QAAQ,EAAE,QAAQ;IAYzB,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,SAAS,CAAC,KAAK,EAAE,MAAM;CAGxB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
export class JobStateRegistry {
|
|
3
|
+
pool;
|
|
4
|
+
jobs = new Map();
|
|
5
|
+
constructor(pool) {
|
|
6
|
+
this.pool = pool;
|
|
7
|
+
}
|
|
8
|
+
addJob(workflow) {
|
|
9
|
+
// Create new job id
|
|
10
|
+
const jobId = randomUUID();
|
|
11
|
+
const jobState = {
|
|
12
|
+
jobId,
|
|
13
|
+
workflow,
|
|
14
|
+
status: 'pending',
|
|
15
|
+
};
|
|
16
|
+
this.jobs.set(jobId, jobState);
|
|
17
|
+
return jobId;
|
|
18
|
+
}
|
|
19
|
+
getJobStatus(jobId) {
|
|
20
|
+
}
|
|
21
|
+
cancelJob(jobId) {
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=job-state-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-state-registry.js","sourceRoot":"","sources":["../../../src/multipool/tests/job-state-registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,MAAM,OAAO,gBAAgB;IAE3B,IAAI,CAAoB;IAExB,IAAI,GAA0B,IAAI,GAAG,EAAE,CAAC;IAExC,YAAY,IAAuB;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,QAAkB;QACvB,oBAAoB;QACpB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAa;YACzB,KAAK;YACL,QAAQ;YACR,MAAM,EAAE,SAAS;SAClB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,CAAC,KAAa;IAE1B,CAAC;IAED,SAAS,CAAC,KAAa;IAEvB,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class SimulatedUser {
|
|
2
|
+
promptGenerator: (() => string) | null;
|
|
3
|
+
modelFunction: (prompt: string) => Promise<string[]>;
|
|
4
|
+
shouldGenerate: boolean;
|
|
5
|
+
totalImages: number;
|
|
6
|
+
collectedImages: number;
|
|
7
|
+
constructor(generator?: (() => string) | null, modelFunction?: (prompt: string) => Promise<string[]>, totalImages?: number);
|
|
8
|
+
stop(): void;
|
|
9
|
+
start(): void;
|
|
10
|
+
generateImages(count: number): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=multipool-basic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipool-basic.d.ts","sourceRoot":"","sources":["../../../src/multipool/tests/multipool-basic.ts"],"names":[],"mappings":"AA8GA,qBAAa,aAAa;IAExB,eAAe,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAkB;IACtE,cAAc,EAAE,OAAO,CAAQ;IAC/B,WAAW,EAAE,MAAM,CAAM;IACzB,eAAe,EAAE,MAAM,CAAK;gBAG1B,SAAS,GAAE,CAAC,MAAM,MAAM,CAAC,GAAG,IAAW,EACvC,aAAa,GAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAkB,EACrE,WAAW,GAAE,MAAW;IAO1B,IAAI;IAIJ,KAAK;IAOC,cAAc,CAAC,KAAK,EAAE,MAAM;CAkBnC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { MultiWorkflowPool } from "../multi-workflow-pool.js";
|
|
2
|
+
import GenerationGraph from "../../../scripts/workflows/T2I-anime-nova-xl.json" with { type: "json" };
|
|
3
|
+
import GenerationGraph2 from "../../../scripts/workflows/T2I-one-obsession.json" with { type: "json" };
|
|
4
|
+
import { Workflow } from "../workflow.js";
|
|
5
|
+
import { animeXLPromptGenerator, NEGATIVE_PROMPT, promptGenerator } from "./prompt-generator.js";
|
|
6
|
+
const pool = new MultiWorkflowPool();
|
|
7
|
+
const w1 = Workflow.fromAugmented(GenerationGraph);
|
|
8
|
+
console.log(`Workflow 1 Hash: ${w1.structureHash}`);
|
|
9
|
+
const w2 = Workflow.fromAugmented(GenerationGraph2);
|
|
10
|
+
console.log(`Workflow 2 Hash: ${w2.structureHash}`);
|
|
11
|
+
// Set affinity mapping
|
|
12
|
+
pool.addClient("http://server1:8188", {
|
|
13
|
+
workflowAffinity: [w1, w2],
|
|
14
|
+
priority: 1
|
|
15
|
+
});
|
|
16
|
+
pool.addClient("http://server2:8188", {
|
|
17
|
+
workflowAffinity: [w1],
|
|
18
|
+
priority: 1
|
|
19
|
+
});
|
|
20
|
+
pool.addClient("http://server3:8188", {
|
|
21
|
+
workflowAffinity: [w1],
|
|
22
|
+
priority: 1
|
|
23
|
+
});
|
|
24
|
+
await pool.init();
|
|
25
|
+
async function generateImage1(prompt) {
|
|
26
|
+
const workflow = Workflow.fromAugmented(GenerationGraph)
|
|
27
|
+
.input("1", "value", prompt)
|
|
28
|
+
.input("2", "value", NEGATIVE_PROMPT)
|
|
29
|
+
.input("10", "steps", 30)
|
|
30
|
+
.input("10", "seed", -1);
|
|
31
|
+
const jobId = await pool.submitJob(workflow);
|
|
32
|
+
if (!jobId) {
|
|
33
|
+
throw new Error("Failed to submit job to pool.");
|
|
34
|
+
}
|
|
35
|
+
console.log(`[T2I-anime-nova-xl.json] Submitted job ${jobId} for prompt: "${prompt.substring(0, 30)}..."`);
|
|
36
|
+
pool.attachJobProgressListener(jobId, (progress) => {
|
|
37
|
+
console.log(`[T2I-anime-nova-xl.json] Job ${jobId} Progress: ${JSON.stringify(progress)}`);
|
|
38
|
+
});
|
|
39
|
+
pool.attachJobPreviewListener(jobId, (preview) => {
|
|
40
|
+
console.log(`[T2I-anime-nova-xl.json] Job ${jobId} Preview Image Available: ${preview.blob.size}`);
|
|
41
|
+
});
|
|
42
|
+
// // 25% chance to simulate a user cancelling the job
|
|
43
|
+
// if (Math.random() < 0.25) {
|
|
44
|
+
// await delay(2000); // wait a bit before cancelling
|
|
45
|
+
// console.log(`[T2I-anime-nova-xl.json] Simulating cancellation of job ${jobId}`);
|
|
46
|
+
// await pool.cancelJob(jobId);
|
|
47
|
+
// return [];
|
|
48
|
+
// }
|
|
49
|
+
const results = await pool.waitForJobCompletion(jobId);
|
|
50
|
+
switch (results.status) {
|
|
51
|
+
case "completed": {
|
|
52
|
+
console.log(`[T2I-anime-nova-xl.json] Job ${jobId} completed successfully.`);
|
|
53
|
+
return results.images;
|
|
54
|
+
}
|
|
55
|
+
case "canceled": {
|
|
56
|
+
console.log(`[T2I-anime-nova-xl.json] Job ${jobId} was cancelled.`);
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
case "failed": {
|
|
60
|
+
console.log(`[T2I-anime-nova-xl.json] Job ${jobId} failed with error: ${results.error.error.message}`);
|
|
61
|
+
console.dir(results.error, { depth: Infinity, colors: true });
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function generateImage2(prompt) {
|
|
67
|
+
const workflow = Workflow.fromAugmented(GenerationGraph2)
|
|
68
|
+
.input("1", "value", prompt)
|
|
69
|
+
.input("2", "value", NEGATIVE_PROMPT)
|
|
70
|
+
.input("10", "steps", 20)
|
|
71
|
+
.input("10", "seed", -1);
|
|
72
|
+
const jobId = await pool.submitJob(workflow);
|
|
73
|
+
if (!jobId) {
|
|
74
|
+
throw new Error("Failed to submit job to pool.");
|
|
75
|
+
}
|
|
76
|
+
console.log(`[T2I-one-obsession.json] Submitted job ${jobId} for prompt: "${prompt.substring(0, 30)}..."`);
|
|
77
|
+
const results = await pool.waitForJobCompletion(jobId);
|
|
78
|
+
switch (results.status) {
|
|
79
|
+
case "completed": {
|
|
80
|
+
console.log(`[T2I-one-obsession.json] Job ${jobId} completed successfully.`);
|
|
81
|
+
return results.images;
|
|
82
|
+
}
|
|
83
|
+
case "canceled": {
|
|
84
|
+
console.log(`[T2I-one-obsession.json] Job ${jobId} was cancelled.`);
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
case "failed": {
|
|
88
|
+
console.log(`[T2I-one-obsession.json] Job ${jobId} failed with error: ${results.error.error.message}`);
|
|
89
|
+
console.dir(results.error, { depth: Infinity, colors: true });
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export class SimulatedUser {
|
|
95
|
+
promptGenerator;
|
|
96
|
+
modelFunction = generateImage1;
|
|
97
|
+
shouldGenerate = true;
|
|
98
|
+
totalImages = 10;
|
|
99
|
+
collectedImages = 0;
|
|
100
|
+
constructor(generator = null, modelFunction = generateImage1, totalImages = 10) {
|
|
101
|
+
this.modelFunction = modelFunction;
|
|
102
|
+
this.promptGenerator = generator;
|
|
103
|
+
this.totalImages = totalImages;
|
|
104
|
+
}
|
|
105
|
+
stop() {
|
|
106
|
+
this.shouldGenerate = false;
|
|
107
|
+
}
|
|
108
|
+
start() {
|
|
109
|
+
this.shouldGenerate = true;
|
|
110
|
+
this.generateImages(this.totalImages).catch(reason => {
|
|
111
|
+
console.error("Error generating images:", reason);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async generateImages(count) {
|
|
115
|
+
for (let i = 0; i < count; i++) {
|
|
116
|
+
const prompt = this.promptGenerator ? this.promptGenerator() : `default prompt ${i}`;
|
|
117
|
+
const images = await this.modelFunction(prompt);
|
|
118
|
+
this.collectedImages += images.length;
|
|
119
|
+
console.log(`Simulated user generated ${images.length} images for prompt: "${prompt.substring(0, 30)}..." Total collected: ${this.collectedImages}`);
|
|
120
|
+
if (!this.shouldGenerate) {
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
await new Promise(resolve => {
|
|
124
|
+
const randomDelay = Math.floor(Math.random() * 3000) + 1000;
|
|
125
|
+
setTimeout(() => {
|
|
126
|
+
resolve(null);
|
|
127
|
+
}, randomDelay);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
console.log(`Simulated user finished generating images ${this.collectedImages} total.`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// const user1 = new SimulatedUser(animeXLPromptGenerator, generateImage1, 3);
|
|
134
|
+
// user1.start();
|
|
135
|
+
//
|
|
136
|
+
const user2 = new SimulatedUser(promptGenerator, generateImage1, 1);
|
|
137
|
+
user2.start();
|
|
138
|
+
const user3 = new SimulatedUser(animeXLPromptGenerator, generateImage1, 1);
|
|
139
|
+
user3.start();
|
|
140
|
+
const user4 = new SimulatedUser(animeXLPromptGenerator, generateImage2, 1);
|
|
141
|
+
user4.start();
|
|
142
|
+
//# sourceMappingURL=multipool-basic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipool-basic.js","sourceRoot":"","sources":["../../../src/multipool/tests/multipool-basic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiling-demo.d.ts","sourceRoot":"","sources":["../../../src/multipool/tests/profiling-demo.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|