@oomol-lab/open-flow 0.1.0-alpha.6 → 0.1.0-alpha.7
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/browser/{addNodeOptions-C4wix0_u.js → addNodeOptions-DRndy4EK.js} +2080 -2022
- package/dist/browser/{createLucideIcon-ggJB9CTC.js → createLucideIcon-CqjqCezK.js} +829 -832
- package/dist/browser/{createResourceDialog-CESUCxOM.js → createResourceDialog-A64dDFCG.js} +140 -140
- package/dist/browser/{esm-CoE5_2w7.js → esm-YIGXG-Js.js} +1 -11
- package/dist/browser/{field-CIrv7Rez.js → field-CKGQHCIi.js} +88 -88
- package/dist/browser/flow-authoring.js +29 -19
- package/dist/browser/flow-change.d.ts +16 -10
- package/dist/browser/flow-change.js +62 -59
- package/dist/browser/{flowWorkspace-Bo0bz1Uz.js → flowWorkspace-D7-rBA1-.js} +16961 -12403
- package/dist/browser/licenses.md +514 -0
- package/dist/browser/workbench.css +1 -1
- package/dist/browser/workbench.js +439 -388
- package/dist/common/control-api-conformance.js +106 -15
- package/dist/common/control-api.d.ts +1 -1
- package/dist/common/control-api.js +1 -1
- package/dist/common/flow-encoding.d.ts +3 -3
- package/dist/common/flow-encoding.js +11 -7
- package/dist/common/flow-semantics.js +514 -505
- package/dist/common/scheduler.js +156 -151
- package/package.json +1 -1
package/dist/common/scheduler.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
//#region src/flow/common/change.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
return Object.fromEntries(e.map((e) => [e.handle, e]));
|
|
4
|
+
}
|
|
5
|
+
//#endregion
|
|
1
6
|
//#region src/execution/common/scheduler.ts
|
|
2
|
-
function
|
|
7
|
+
function t(e, t) {
|
|
3
8
|
return t?.(e) ?? {
|
|
4
9
|
code: "node.failed",
|
|
5
10
|
message: e instanceof Error ? e.message : String(e)
|
|
6
11
|
};
|
|
7
12
|
}
|
|
8
|
-
var
|
|
13
|
+
var n = class {
|
|
9
14
|
#e = [];
|
|
10
15
|
#t = 0;
|
|
11
16
|
get length() {
|
|
@@ -18,9 +23,9 @@ var t = class {
|
|
|
18
23
|
let e = this.#e[this.#t];
|
|
19
24
|
return this.#t += 1, this.#t >= 64 && this.#t * 2 >= this.#e.length && (this.#e.splice(0, this.#t), this.#t = 0), e;
|
|
20
25
|
}
|
|
21
|
-
},
|
|
26
|
+
}, r = class {
|
|
22
27
|
#e;
|
|
23
|
-
#t = new
|
|
28
|
+
#t = new n();
|
|
24
29
|
#n;
|
|
25
30
|
#r;
|
|
26
31
|
constructor(e, t, n) {
|
|
@@ -42,13 +47,13 @@ var t = class {
|
|
|
42
47
|
take() {
|
|
43
48
|
return this.#t.length > 0 ? this.#t.shift() : this.#r;
|
|
44
49
|
}
|
|
45
|
-
},
|
|
50
|
+
}, i = class {
|
|
46
51
|
#e;
|
|
47
52
|
#t;
|
|
48
53
|
#n;
|
|
49
54
|
#r = !1;
|
|
50
|
-
constructor(e, t,
|
|
51
|
-
this.#t = e, this.#n = new Map(Object.entries(
|
|
55
|
+
constructor(e, t, n) {
|
|
56
|
+
this.#t = e, this.#n = new Map(Object.entries(n).map(([e, n]) => [e, new r(t, e, n)])), this.#e = [...this.#n.values()].some((e) => e.dynamic);
|
|
52
57
|
}
|
|
53
58
|
get ready() {
|
|
54
59
|
return (!this.#r || this.#e) && [...this.#n.values()].every((e) => e.ready);
|
|
@@ -67,15 +72,15 @@ var t = class {
|
|
|
67
72
|
return this.#e || (this.#r = !0), Object.fromEntries([...this.#n].map(([e, t]) => [e, t.take()]));
|
|
68
73
|
}
|
|
69
74
|
};
|
|
70
|
-
function
|
|
71
|
-
switch (
|
|
72
|
-
case "condition": return { [
|
|
75
|
+
function a(t, n) {
|
|
76
|
+
switch (n.kind) {
|
|
77
|
+
case "condition": return { [n.input.handle]: n.input };
|
|
73
78
|
case "value": return {};
|
|
74
|
-
case "subflow": return e.subflows[
|
|
75
|
-
case "task": return
|
|
79
|
+
case "subflow": return e(t.subflows[n.subflowId].inputs);
|
|
80
|
+
case "task": return e(n.task == null ? t.tasks[n.taskId].inputs : n.task.inputs);
|
|
76
81
|
}
|
|
77
82
|
}
|
|
78
|
-
function
|
|
83
|
+
function o(e, t) {
|
|
79
84
|
if (t.name != null) return t.name;
|
|
80
85
|
switch (t.kind) {
|
|
81
86
|
case "condition": return;
|
|
@@ -84,17 +89,17 @@ function a(e, t) {
|
|
|
84
89
|
case "task": return t.task == null ? e.tasks[t.taskId].name : t.task.name;
|
|
85
90
|
}
|
|
86
91
|
}
|
|
87
|
-
function
|
|
92
|
+
function s(e, t) {
|
|
88
93
|
return t.kind == "task" ? t.task == null ? e.tasks[t.taskId].executor.kind : "javascript" : t.kind;
|
|
89
94
|
}
|
|
90
|
-
function
|
|
95
|
+
function c(e, t, n, r) {
|
|
91
96
|
let i = e.get(t) ?? /* @__PURE__ */ new Map(), a = i.get(n) ?? [];
|
|
92
97
|
a.push(r), i.set(n, a), e.set(t, i);
|
|
93
98
|
}
|
|
94
|
-
function
|
|
99
|
+
function l(e, t, n) {
|
|
95
100
|
return e.get(t)?.get(n) ?? [];
|
|
96
101
|
}
|
|
97
|
-
function
|
|
102
|
+
function u(e) {
|
|
98
103
|
let t = new Map(Object.entries(e.nodes).map(([t, n]) => [t, new Set(Object.values(n.inputs).flatMap((t) => t.kind == "sources" ? t.sources.flatMap((t) => t.kind == "node" && e.nodes[t.nodeId] != null ? [t.nodeId] : []) : []))])), n = [];
|
|
99
104
|
for (; t.size > 0;) {
|
|
100
105
|
let e = [...t].filter(([, e]) => e.size == 0).map(([e]) => e).toSorted();
|
|
@@ -104,18 +109,18 @@ function l(e) {
|
|
|
104
109
|
}
|
|
105
110
|
return n;
|
|
106
111
|
}
|
|
107
|
-
function
|
|
112
|
+
function d(e, t) {
|
|
108
113
|
if (e === t) return !0;
|
|
109
114
|
if (e == null || t == null || typeof e != "object" || typeof t != "object") return !1;
|
|
110
|
-
if (Array.isArray(e) || Array.isArray(t)) return Array.isArray(e) && Array.isArray(t) && e.length == t.length && e.every((e, n) =>
|
|
115
|
+
if (Array.isArray(e) || Array.isArray(t)) return Array.isArray(e) && Array.isArray(t) && e.length == t.length && e.every((e, n) => d(e, t[n]));
|
|
111
116
|
let n = Object.entries(e), r = Object.entries(t), i = t;
|
|
112
|
-
return n.length == r.length && n.every(([e, t]) => Object.hasOwn(i, e) &&
|
|
117
|
+
return n.length == r.length && n.every(([e, t]) => Object.hasOwn(i, e) && d(t, i[e]));
|
|
113
118
|
}
|
|
114
|
-
function
|
|
119
|
+
function f(e, t, n) {
|
|
115
120
|
let r = Object.hasOwn(n, t.input) ? n[t.input] : null, i = t.value;
|
|
116
121
|
switch (t.operator) {
|
|
117
|
-
case "==": return i !== void 0 &&
|
|
118
|
-
case "!=": return i !== void 0 && !
|
|
122
|
+
case "==": return i !== void 0 && d(r, i);
|
|
123
|
+
case "!=": return i !== void 0 && !d(r, i);
|
|
119
124
|
case ">": return typeof r == "number" && typeof i == "number" && r > i;
|
|
120
125
|
case ">=": return typeof r == "number" && typeof i == "number" && r >= i;
|
|
121
126
|
case "<": return typeof r == "number" && typeof i == "number" && r < i;
|
|
@@ -123,7 +128,7 @@ function d(e, t, n) {
|
|
|
123
128
|
case "contains":
|
|
124
129
|
case "notContains": {
|
|
125
130
|
let e;
|
|
126
|
-
return typeof r == "string" && typeof i == "string" ? e = r.includes(i) : Array.isArray(r) && i !== void 0 && (e = r.some((e) =>
|
|
131
|
+
return typeof r == "string" && typeof i == "string" ? e = r.includes(i) : Array.isArray(r) && i !== void 0 && (e = r.some((e) => d(e, i))), e == null ? !1 : t.operator == "contains" ? e : !e;
|
|
127
132
|
}
|
|
128
133
|
case "startsWith": return typeof r == "string" && typeof i == "string" && r.startsWith(i);
|
|
129
134
|
case "endsWith": return typeof r == "string" && typeof i == "string" && r.endsWith(i);
|
|
@@ -136,7 +141,7 @@ function d(e, t, n) {
|
|
|
136
141
|
case "hasValue":
|
|
137
142
|
case "notHasValue": {
|
|
138
143
|
if (r == null || Array.isArray(r) || typeof r != "object" || i === void 0) return !1;
|
|
139
|
-
let e = Object.values(r).some((e) =>
|
|
144
|
+
let e = Object.values(r).some((e) => d(e, i));
|
|
140
145
|
return t.operator == "hasValue" ? e : !e;
|
|
141
146
|
}
|
|
142
147
|
case "isEmpty":
|
|
@@ -150,17 +155,17 @@ function d(e, t, n) {
|
|
|
150
155
|
case "isFalse": return r === !1;
|
|
151
156
|
}
|
|
152
157
|
}
|
|
153
|
-
function
|
|
158
|
+
function p(e, t) {
|
|
154
159
|
if (typeof e != "object" || !e || Array.isArray(e)) throw Error(`Node "${t}" must return an object.`);
|
|
155
160
|
return e;
|
|
156
161
|
}
|
|
157
|
-
function
|
|
162
|
+
function m(e) {
|
|
158
163
|
return e.reason instanceof Error ? e.reason : /* @__PURE__ */ Error("Run canceled.");
|
|
159
164
|
}
|
|
160
|
-
function
|
|
165
|
+
function h(e, t) {
|
|
161
166
|
return new Promise((n, r) => {
|
|
162
167
|
let i = () => {
|
|
163
|
-
t.removeEventListener("abort", i), r(
|
|
168
|
+
t.removeEventListener("abort", i), r(m(t));
|
|
164
169
|
};
|
|
165
170
|
e.then((e) => {
|
|
166
171
|
t.removeEventListener("abort", i), n(e);
|
|
@@ -169,196 +174,196 @@ function m(e, t) {
|
|
|
169
174
|
}), t.aborted ? i() : t.addEventListener("abort", i, { once: !0 });
|
|
170
175
|
});
|
|
171
176
|
}
|
|
172
|
-
async function
|
|
173
|
-
|
|
174
|
-
flowId:
|
|
175
|
-
...
|
|
176
|
-
parentJobId:
|
|
177
|
-
parentRunId:
|
|
177
|
+
async function g(n, r, d, m, _, y, b = {}, x, S) {
|
|
178
|
+
_.throwIfAborted(), await n.emit({
|
|
179
|
+
flowId: r.flowId,
|
|
180
|
+
...y == null ? {} : {
|
|
181
|
+
parentJobId: y.jobId,
|
|
182
|
+
parentRunId: y.runId
|
|
178
183
|
},
|
|
179
|
-
runId:
|
|
184
|
+
runId: d,
|
|
180
185
|
type: "run.started"
|
|
181
186
|
});
|
|
182
|
-
let
|
|
183
|
-
for (let [e, t] of Object.entries(
|
|
184
|
-
let r =
|
|
187
|
+
let C = u(r.graph), w = C.length, T = new Map(Object.entries(r.graph.nodes).map(([e, t]) => [e, new i(e, t, a(n.prepared, t))])), E = /* @__PURE__ */ new Map(), D = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Map();
|
|
188
|
+
for (let [e, t] of Object.entries(r.graph.nodes)) for (let [n, r] of Object.entries(t.inputs)) if (r.kind == "sources") for (let t of r.sources) if (t.kind == "flow") {
|
|
189
|
+
let r = E.get(t.input) ?? [];
|
|
185
190
|
r.push({
|
|
186
191
|
handle: n,
|
|
187
192
|
nodeId: e
|
|
188
|
-
}),
|
|
189
|
-
} else t.kind == "node" &&
|
|
193
|
+
}), E.set(t.input, r);
|
|
194
|
+
} else t.kind == "node" && c(D, t.nodeId, t.output, {
|
|
190
195
|
handle: n,
|
|
191
196
|
nodeId: e
|
|
192
197
|
});
|
|
193
|
-
for (let [e, t] of Object.entries(
|
|
194
|
-
let
|
|
195
|
-
|
|
196
|
-
},
|
|
197
|
-
await
|
|
198
|
+
for (let [e, t] of Object.entries(r.outputs)) for (let n of t.sources) n.kind == "node" && c(O, n.nodeId, n.output, e);
|
|
199
|
+
let k = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Set(), j = /* @__PURE__ */ new Map(), M = /* @__PURE__ */ new Map(), N = /* @__PURE__ */ new Map(), P = /* @__PURE__ */ new Set(), F = new AbortController(), I = AbortSignal.any([_, F.signal]), L, R = !1, z, B = (e, t) => {
|
|
200
|
+
F.signal.aborted || (T.get(e.nodeId).push(e.handle, t), z(e.nodeId));
|
|
201
|
+
}, V = async (e, t, r, i) => {
|
|
202
|
+
await n.emit({
|
|
198
203
|
handle: r,
|
|
199
|
-
jobId:
|
|
204
|
+
jobId: t,
|
|
200
205
|
nodeId: e,
|
|
201
|
-
runId:
|
|
206
|
+
runId: d,
|
|
202
207
|
type: "node.output",
|
|
203
208
|
value: i
|
|
204
209
|
});
|
|
205
|
-
for (let t of
|
|
206
|
-
for (let t of
|
|
207
|
-
},
|
|
208
|
-
let
|
|
209
|
-
await
|
|
210
|
-
inputs:
|
|
211
|
-
jobId:
|
|
212
|
-
nodeId:
|
|
213
|
-
nodeKind:
|
|
214
|
-
...
|
|
215
|
-
runId:
|
|
210
|
+
for (let t of l(D, e, r)) B(t, i);
|
|
211
|
+
for (let t of l(O, e, r)) N.set(t, i), await x?.(t, i);
|
|
212
|
+
}, H = async (t, r, i, a) => {
|
|
213
|
+
let c = s(n.prepared, r), l = o(n.prepared, r);
|
|
214
|
+
await n.emit({
|
|
215
|
+
inputs: a,
|
|
216
|
+
jobId: i,
|
|
217
|
+
nodeId: t,
|
|
218
|
+
nodeKind: c,
|
|
219
|
+
...l == null ? {} : { nodeTitle: l },
|
|
220
|
+
runId: d,
|
|
216
221
|
type: "node.started"
|
|
217
222
|
});
|
|
218
|
-
let
|
|
223
|
+
let u = r.timeoutMs == null ? void 0 : new AbortController(), m = u == null ? void 0 : setTimeout(() => u.abort(/* @__PURE__ */ Error(`Node "${t}" timed out.`)), r.timeoutMs), _ = u == null ? I : AbortSignal.any([I, u.signal]);
|
|
219
224
|
try {
|
|
220
|
-
let
|
|
221
|
-
switch (
|
|
225
|
+
let o;
|
|
226
|
+
switch (r.kind) {
|
|
222
227
|
case "condition": {
|
|
223
|
-
let
|
|
228
|
+
let e = r.cases.find((e) => {
|
|
224
229
|
if (e.expressions.length == 0) return !1;
|
|
225
|
-
let t = e.expressions.map((e) =>
|
|
230
|
+
let t = e.expressions.map((e) => f(r, e, a));
|
|
226
231
|
return e.relation == "all" ? t.every(Boolean) : t.some(Boolean);
|
|
227
|
-
})?.output ??
|
|
228
|
-
|
|
232
|
+
})?.output ?? r.defaultOutput;
|
|
233
|
+
o = e == null ? {} : { [e]: a[r.input.handle] ?? null }, e != null && await V(t, i, e, o[e]);
|
|
229
234
|
break;
|
|
230
235
|
}
|
|
231
236
|
case "value":
|
|
232
|
-
|
|
233
|
-
for (let [
|
|
237
|
+
o = Object.fromEntries(r.values.map((e) => [e.handle, e.value ?? null]));
|
|
238
|
+
for (let [e, n] of Object.entries(o)) await V(t, i, e, n);
|
|
234
239
|
break;
|
|
235
240
|
case "subflow": {
|
|
236
|
-
let
|
|
237
|
-
|
|
238
|
-
flowId:
|
|
239
|
-
graph:
|
|
240
|
-
inputs:
|
|
241
|
+
let s = n.prepared.subflows[r.subflowId];
|
|
242
|
+
o = await h(g(n, {
|
|
243
|
+
flowId: r.subflowId,
|
|
244
|
+
graph: v(s.graph),
|
|
245
|
+
inputs: e(s.inputs),
|
|
241
246
|
kind: "subflow",
|
|
242
|
-
outputs:
|
|
243
|
-
},
|
|
244
|
-
jobId:
|
|
245
|
-
runId:
|
|
246
|
-
}, {}, (
|
|
247
|
+
outputs: e(s.outputs)
|
|
248
|
+
}, n.createId(), a, _, {
|
|
249
|
+
jobId: i,
|
|
250
|
+
runId: d
|
|
251
|
+
}, {}, (e, n) => V(t, i, e, n)), _);
|
|
247
252
|
break;
|
|
248
253
|
}
|
|
249
254
|
case "task":
|
|
250
|
-
|
|
251
|
-
input:
|
|
252
|
-
invocationId:
|
|
253
|
-
jobId:
|
|
254
|
-
nodeId:
|
|
255
|
-
runId:
|
|
256
|
-
signal:
|
|
257
|
-
...
|
|
258
|
-
capabilities:
|
|
259
|
-
moduleId:
|
|
255
|
+
o = p(await h(n.invokeTask({
|
|
256
|
+
input: a,
|
|
257
|
+
invocationId: n.createId(),
|
|
258
|
+
jobId: i,
|
|
259
|
+
nodeId: t,
|
|
260
|
+
runId: d,
|
|
261
|
+
signal: _,
|
|
262
|
+
...r.task == null ? { taskId: r.taskId } : {
|
|
263
|
+
capabilities: r.task.capabilities ?? [],
|
|
264
|
+
moduleId: r.task.moduleId
|
|
260
265
|
}
|
|
261
|
-
}),
|
|
262
|
-
for (let [
|
|
266
|
+
}), _), t);
|
|
267
|
+
for (let [e, n] of Object.entries(o)) await V(t, i, e, n);
|
|
263
268
|
}
|
|
264
|
-
return await
|
|
265
|
-
jobId:
|
|
266
|
-
nodeId:
|
|
267
|
-
runId:
|
|
269
|
+
return await n.emit({
|
|
270
|
+
jobId: i,
|
|
271
|
+
nodeId: t,
|
|
272
|
+
runId: d,
|
|
268
273
|
type: "node.completed"
|
|
269
|
-
}),
|
|
274
|
+
}), o;
|
|
270
275
|
} finally {
|
|
271
|
-
|
|
276
|
+
m != null && clearTimeout(m);
|
|
272
277
|
}
|
|
273
|
-
},
|
|
274
|
-
let i =
|
|
275
|
-
|
|
278
|
+
}, U = (e) => {
|
|
279
|
+
let i = r.graph.nodes[e], a = T.get(e).take(), o = n.createId(), s = M.get(e) ?? 0;
|
|
280
|
+
M.set(e, s + 1), k.set(e, (k.get(e) ?? 0) + 1);
|
|
276
281
|
let c = Promise.resolve();
|
|
277
|
-
c =
|
|
278
|
-
let
|
|
279
|
-
|
|
282
|
+
c = H(e, i, o, a).then(async (t) => {
|
|
283
|
+
let r = j.get(e) ?? [];
|
|
284
|
+
r.push({
|
|
280
285
|
jobId: o,
|
|
281
286
|
order: s,
|
|
282
|
-
outputs:
|
|
283
|
-
}),
|
|
284
|
-
...
|
|
285
|
-
parentJobId:
|
|
286
|
-
parentRunId:
|
|
287
|
+
outputs: t
|
|
288
|
+
}), j.set(e, r), P.has(e) || (P.add(e), await n.emit({
|
|
289
|
+
...y == null ? {} : {
|
|
290
|
+
parentJobId: y.jobId,
|
|
291
|
+
parentRunId: y.runId
|
|
287
292
|
},
|
|
288
|
-
progress:
|
|
289
|
-
runId:
|
|
293
|
+
progress: P.size / w * 100,
|
|
294
|
+
runId: d,
|
|
290
295
|
type: "run.progress"
|
|
291
296
|
}));
|
|
292
|
-
}).catch(async (
|
|
293
|
-
|
|
294
|
-
let i =
|
|
295
|
-
await
|
|
297
|
+
}).catch(async (r) => {
|
|
298
|
+
R || (R = !0, L = r, F.abort(r));
|
|
299
|
+
let i = t(r, n.projectFailure);
|
|
300
|
+
await n.emit({
|
|
296
301
|
...i,
|
|
297
302
|
jobId: o,
|
|
298
|
-
nodeId:
|
|
299
|
-
runId:
|
|
303
|
+
nodeId: e,
|
|
304
|
+
runId: d,
|
|
300
305
|
type: "node.failed"
|
|
301
306
|
}).catch(() => void 0);
|
|
302
307
|
}).finally(() => {
|
|
303
|
-
|
|
304
|
-
}),
|
|
308
|
+
A.delete(c), k.set(e, (k.get(e) ?? 1) - 1), z(e);
|
|
309
|
+
}), A.add(c);
|
|
305
310
|
};
|
|
306
|
-
|
|
307
|
-
if (
|
|
308
|
-
let t =
|
|
309
|
-
for (;
|
|
311
|
+
z = (e) => {
|
|
312
|
+
if (F.signal.aborted) return;
|
|
313
|
+
let t = r.graph.nodes[e], n = T.get(e);
|
|
314
|
+
for (; n.ready && (k.get(e) ?? 0) < t.concurrency;) U(e);
|
|
310
315
|
};
|
|
311
|
-
for (let [e, t] of Object.entries(
|
|
312
|
-
let n =
|
|
316
|
+
for (let [e, t] of Object.entries(b)) {
|
|
317
|
+
let n = T.get(e);
|
|
313
318
|
if (n != null) for (let [e, r] of Object.entries(t)) n.launch(e, r);
|
|
314
319
|
}
|
|
315
|
-
for (let [e, t] of Object.entries(
|
|
316
|
-
let
|
|
317
|
-
if (
|
|
318
|
-
for (let t of Object.entries(
|
|
319
|
-
for (let t of
|
|
320
|
+
for (let [e, t] of Object.entries(r.inputs)) {
|
|
321
|
+
let n = Object.hasOwn(m, e) ? m[e] : t.value;
|
|
322
|
+
if (n !== void 0) {
|
|
323
|
+
for (let t of Object.entries(r.outputs)) t[1].sources.some((t) => t.kind == "flow" && t.input == e) && (N.set(t[0], n), await x?.(t[0], n));
|
|
324
|
+
for (let t of E.get(e) ?? []) B(t, n);
|
|
320
325
|
}
|
|
321
326
|
}
|
|
322
|
-
if (
|
|
323
|
-
for (let e of
|
|
324
|
-
for (;
|
|
325
|
-
if (
|
|
326
|
-
message:
|
|
327
|
-
runId:
|
|
327
|
+
if (S != null) for (let e of l(D, S.nodeId, "payload")) B(e, S.payload);
|
|
328
|
+
for (let e of C) z(e);
|
|
329
|
+
for (; A.size > 0;) await Promise.race(A);
|
|
330
|
+
if (R) throw await n.emit({
|
|
331
|
+
message: L instanceof Error ? L.message : String(L),
|
|
332
|
+
runId: d,
|
|
328
333
|
type: "run.failed"
|
|
329
|
-
}).catch(() => void 0),
|
|
330
|
-
if (
|
|
331
|
-
let e = Object.fromEntries(
|
|
332
|
-
return await
|
|
334
|
+
}).catch(() => void 0), L;
|
|
335
|
+
if (I.throwIfAborted(), r.kind == "subflow") {
|
|
336
|
+
let e = Object.fromEntries(N);
|
|
337
|
+
return await n.emit({
|
|
333
338
|
result: {
|
|
334
339
|
kind: "function-outputs",
|
|
335
340
|
outputs: e,
|
|
336
341
|
target: "subflow"
|
|
337
342
|
},
|
|
338
|
-
runId:
|
|
343
|
+
runId: d,
|
|
339
344
|
type: "run.completed"
|
|
340
345
|
}), e;
|
|
341
346
|
}
|
|
342
|
-
let
|
|
347
|
+
let W = new Set(Object.values(r.graph.nodes).flatMap((e) => Object.values(e.inputs).flatMap((e) => e.kind == "sources" ? e.sources.filter((e) => e.kind == "node").map((e) => e.nodeId) : []))), G = {
|
|
343
348
|
kind: "node-results",
|
|
344
|
-
nodes:
|
|
345
|
-
jobs: (
|
|
349
|
+
nodes: C.filter((e) => !W.has(e)).map((e) => ({
|
|
350
|
+
jobs: (j.get(e) ?? []).toSorted((e, t) => e.order - t.order).map(({ jobId: e, outputs: t }) => ({
|
|
346
351
|
jobId: e,
|
|
347
352
|
outputs: t
|
|
348
353
|
})),
|
|
349
354
|
nodeId: e
|
|
350
355
|
}))
|
|
351
356
|
};
|
|
352
|
-
return await
|
|
353
|
-
result:
|
|
354
|
-
runId:
|
|
357
|
+
return await n.emit({
|
|
358
|
+
result: G,
|
|
359
|
+
runId: d,
|
|
355
360
|
type: "run.completed"
|
|
356
|
-
}),
|
|
361
|
+
}), G;
|
|
357
362
|
}
|
|
358
|
-
async function
|
|
363
|
+
async function _(e, t) {
|
|
359
364
|
let n = async (e) => await t.emit?.(e), r = t.signal ?? new AbortController().signal, i = t.trigger == null ? void 0 : e.graph.nodes[t.trigger.nodeId];
|
|
360
365
|
if (t.trigger != null && (i == null || "inputs" in i)) throw Error(`Node "${t.trigger.nodeId}" is not a TriggerNode in Flow "${t.flowId}".`);
|
|
361
|
-
return await
|
|
366
|
+
return await g({
|
|
362
367
|
createId: t.createId,
|
|
363
368
|
emit: n,
|
|
364
369
|
invokeTask: t.invokeTask,
|
|
@@ -366,14 +371,14 @@ async function g(e, t) {
|
|
|
366
371
|
projectFailure: t.projectFailure
|
|
367
372
|
}, {
|
|
368
373
|
flowId: t.flowId,
|
|
369
|
-
graph:
|
|
374
|
+
graph: v(e.graph),
|
|
370
375
|
inputs: {},
|
|
371
376
|
kind: "flow",
|
|
372
377
|
outputs: {}
|
|
373
378
|
}, t.runId, {}, r, void 0, t.inputs, void 0, t.trigger);
|
|
374
379
|
}
|
|
375
|
-
function
|
|
380
|
+
function v(e) {
|
|
376
381
|
return { nodes: Object.fromEntries(Object.entries(e.nodes).filter((e) => "inputs" in e[1])) };
|
|
377
382
|
}
|
|
378
383
|
//#endregion
|
|
379
|
-
export {
|
|
384
|
+
export { _ as runFlow };
|