@oomol-lab/open-flow 0.1.0-alpha.10 → 0.1.0-alpha.13

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.
Files changed (43) hide show
  1. package/README.md +5 -1
  2. package/dist/browser/addNodeOptions-JRHMwVOl.js +9597 -0
  3. package/dist/browser/{change-Cu6pQIit.js → change-BATEvjif.js} +2 -2
  4. package/dist/browser/createResourceDialog-CWD62rU0.js +467 -0
  5. package/dist/browser/{esm-CvAs_mAS.js → esm-C04lx1pd.js} +1 -1
  6. package/dist/browser/flow-authoring-node.d.ts +2 -0
  7. package/dist/browser/flow-authoring.d.ts +1 -1
  8. package/dist/browser/flow-authoring.js +387 -126
  9. package/dist/browser/flow-change.d.ts +9 -4
  10. package/dist/browser/flow-change.js +49 -46
  11. package/dist/browser/{flowRunInputEditorStore-DXOyyY7o.js → flowRunInputEditorStore-BUwR9Vbp.js} +1615 -882
  12. package/dist/browser/{flowWorkspace-X_T_DcQf.js → flowWorkspace-_qaqIyDi.js} +18174 -16631
  13. package/dist/browser/languages-DgJehE1g.js +62 -0
  14. package/dist/browser/lib-C5Ipyfps.js +7856 -0
  15. package/dist/browser/main-DmjVyuWr.js +76 -0
  16. package/dist/browser/{markdownContent-BI-2PmDX.js → markdownContent-CX77lBFM.js} +4795 -4787
  17. package/dist/browser/theme.css +63 -0
  18. package/dist/browser/theme.css.d.ts +1 -0
  19. package/dist/browser/typeScriptSession-D5neIpug.js +2560 -0
  20. package/dist/browser/{createLucideIcon-COMgwa_u.js → useOpenInteractionType-CRgOHg5M.js} +2484 -2254
  21. package/dist/browser/workbench-contract.d.ts +2 -1
  22. package/dist/browser/workbench.css +1 -1
  23. package/dist/browser/workbench.d.ts +16 -1
  24. package/dist/browser/workbench.js +1492 -1307
  25. package/dist/common/control-api-conformance.js +39 -0
  26. package/dist/common/control-api-errors.d.ts +12 -0
  27. package/dist/common/control-api.d.ts +13 -0
  28. package/dist/common/control-api.js +120 -73
  29. package/dist/common/flow-encoding.d.ts +2 -2
  30. package/dist/common/flow-encoding.js +4 -1
  31. package/dist/common/flow-semantics.d.ts +2 -0
  32. package/dist/common/flow-semantics.js +869 -838
  33. package/dist/common/licenses.md +1 -25
  34. package/dist/common/localization.d.ts +21 -0
  35. package/dist/common/localization.js +62 -0
  36. package/dist/common/scheduler.d.ts +1 -0
  37. package/dist/common/scheduler.js +64 -50
  38. package/package.json +9 -1
  39. package/dist/browser/addNodeOptions-BwrMvPQC.js +0 -5230
  40. package/dist/browser/assets/typeScriptWorker-CaA4llbX.js +0 -59850
  41. package/dist/browser/createResourceDialog-YgMLylQz.js +0 -467
  42. package/dist/browser/field-BrEG-7ap.js +0 -312
  43. package/dist/browser/typeScriptSession-Dagu_tRs.js +0 -2549
@@ -1,27 +1,3 @@
1
1
  # Licenses
2
2
 
3
- The app bundles dependencies which contain the following licenses:
4
-
5
- ## dequal - 2.0.3 (MIT)
6
-
7
- The MIT License (MIT)
8
-
9
- Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
10
-
11
- Permission is hereby granted, free of charge, to any person obtaining a copy
12
- of this software and associated documentation files (the "Software"), to deal
13
- in the Software without restriction, including without limitation the rights
14
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
- copies of the Software, and to permit persons to whom the Software is
16
- furnished to do so, subject to the following conditions:
17
-
18
- The above copyright notice and this permission notice shall be included in
19
- all copies or substantial portions of the Software.
20
-
21
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27
- THE SOFTWARE.
3
+ The app does not bundle any dependencies with licenses.
@@ -0,0 +1,21 @@
1
+ export declare const uiLanguages: readonly ['en', 'zh-CN', 'zh-TW', 'ja', 'ko', 'ru', 'fr'];
2
+ export type UiLanguage = (typeof uiLanguages)[number];
3
+ export declare const defaultUiLanguage: UiLanguage;
4
+ /** Endonyms, shown in language pickers regardless of the current UI language. */
5
+ export declare const uiLanguageNames: Readonly<Record<UiLanguage, string>>;
6
+ export declare function isUiLanguage(value: unknown): value is UiLanguage;
7
+ /**
8
+ * BCP 47 aware resolution over candidates such as `navigator.languages`: an exact tag match
9
+ * (case-insensitive) wins; for zh an explicit script subtag beats the region (zh-Hant-* to zh-TW,
10
+ * zh-Hans-* to zh-CN), then zh-TW, zh-HK and zh-MO map to zh-TW and any other zh* to zh-CN; en, ja,
11
+ * ko, ru and fr also match on their primary subtag (fr-CA to fr, ja-JP to ja).
12
+ */
13
+ export declare function resolveUiLanguage(candidates: Iterable<string | null | undefined>, fallback?: UiLanguage): UiLanguage;
14
+ /** Languages written with CJK scripts: zh-CN, zh-TW, ja and ko. */
15
+ export declare function isCjkLanguage(language: string): boolean;
16
+ /**
17
+ * Lookup order for package-author locale files (`oo-locales/<lang>.json`), which only exist for en
18
+ * and zh-CN today. Traditional Chinese readers prefer Simplified Chinese over English; every other
19
+ * language falls back to English first. The chain never repeats a locale.
20
+ */
21
+ export declare function userLocaleFallbackChain(language: string): readonly string[];
@@ -0,0 +1,62 @@
1
+ //#region src/localization/common/languages.ts
2
+ var e = [
3
+ "en",
4
+ "zh-CN",
5
+ "zh-TW",
6
+ "ja",
7
+ "ko",
8
+ "ru",
9
+ "fr"
10
+ ], t = "en", n = {
11
+ en: "English",
12
+ "zh-CN": "简体中文",
13
+ "zh-TW": "繁體中文",
14
+ ja: "日本語",
15
+ ko: "한국어",
16
+ ru: "Русский",
17
+ fr: "Français"
18
+ }, r = new Map(e.map((e) => [e.toLowerCase(), e])), i = /* @__PURE__ */ new Set([
19
+ "hk",
20
+ "mo",
21
+ "tw"
22
+ ]), a = /* @__PURE__ */ new Set([
23
+ "zh-CN",
24
+ "zh-TW",
25
+ "ja",
26
+ "ko"
27
+ ]);
28
+ function o(e) {
29
+ return typeof e == "string" && r.get(e.toLowerCase()) == e;
30
+ }
31
+ function s(e, t = "en") {
32
+ for (let t of e) {
33
+ let e = t == null ? void 0 : u(t);
34
+ if (e != null) return e;
35
+ }
36
+ return t;
37
+ }
38
+ function c(e) {
39
+ let t = u(e);
40
+ return t != null && a.has(t);
41
+ }
42
+ function l(e) {
43
+ return e == "zh-TW" ? [
44
+ "zh-TW",
45
+ "zh-CN",
46
+ "en"
47
+ ] : e == "zh-CN" ? ["zh-CN", "en"] : e == "en" ? ["en", "zh-CN"] : [
48
+ e,
49
+ "en",
50
+ "zh-CN"
51
+ ];
52
+ }
53
+ function u(e) {
54
+ let t = e.trim().toLowerCase();
55
+ if (t.length == 0) return;
56
+ let n = r.get(t);
57
+ if (n != null) return n;
58
+ let a = t.split("-");
59
+ return a[0] == "zh" ? a.includes("hant") ? "zh-TW" : a.includes("hans") ? "zh-CN" : a.some((e) => i.has(e)) ? "zh-TW" : "zh-CN" : r.get(a[0]);
60
+ }
61
+ //#endregion
62
+ export { t as defaultUiLanguage, c as isCjkLanguage, o as isUiLanguage, s as resolveUiLanguage, n as uiLanguageNames, e as uiLanguages, l as userLocaleFallbackChain };
@@ -86,6 +86,7 @@ export interface SchedulerFailure {
86
86
  readonly message: string;
87
87
  }
88
88
  export interface FlowRunOptions {
89
+ readonly bindingValues?: Readonly<Record<string, string>>;
89
90
  readonly createId: () => string;
90
91
  readonly emit?: (event: SchedulerEvent) => Effect.Effect<void, Error>;
91
92
  readonly flowId: string;
@@ -3,7 +3,7 @@ import * as t from "effect/Exit";
3
3
  import * as n from "effect/FiberSet";
4
4
  //#region src/flow/common/change.ts
5
5
  function r(e) {
6
- return Object.fromEntries(e.map((e) => [e.handle, e]));
6
+ return Object.fromEntries(e.flatMap((e) => "handle" in e ? [[e.handle, e]] : []));
7
7
  }
8
8
  //#endregion
9
9
  //#region src/execution/common/scheduler.ts
@@ -173,21 +173,27 @@ function _(a, o, m, v, b, x = {}, S, C) {
173
173
  runId: m,
174
174
  type: "run.started"
175
175
  });
176
- let w = p(o.graph), T = w.length, E = new Map(Object.entries(o.graph.nodes).map(([e, t]) => [e, new s(e, t, c(a.prepared, t))])), D = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Map(), k = /* @__PURE__ */ new Map();
177
- for (let [e, t] of Object.entries(o.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") {
176
+ let w = p(o.graph), T = w.length, E = new Map(Object.entries(o.graph.nodes).map(([e, t]) => [e, new s(e, t, c(a.prepared, t))])), D = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Map(), k = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Map();
177
+ for (let [e, t] of Object.entries(o.graph.nodes)) for (let [n, r] of Object.entries(t.inputs)) if (r.kind == "sources") for (let t of r.sources) if (t.kind == "binding") {
178
+ let r = O.get(t.bindingId) ?? [];
179
+ r.push({
180
+ handle: n,
181
+ nodeId: e
182
+ }), O.set(t.bindingId, r);
183
+ } else if (t.kind == "flow") {
178
184
  let r = D.get(t.input) ?? [];
179
185
  r.push({
180
186
  handle: n,
181
187
  nodeId: e
182
188
  }), D.set(t.input, r);
183
- } else t.kind == "node" && d(O, t.nodeId, t.output, {
189
+ } else t.kind == "node" && d(k, t.nodeId, t.output, {
184
190
  handle: n,
185
191
  nodeId: e
186
192
  });
187
- for (let [e, t] of Object.entries(o.outputs)) for (let n of t.sources) n.kind == "node" && d(k, n.nodeId, n.output, e);
188
- let A = /* @__PURE__ */ new Map(), j = yield* n.make(), M = yield* n.runtime(j)(), N = /* @__PURE__ */ new Map(), P = /* @__PURE__ */ new Map(), F = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Set(), L, R, z, B = (e, t) => {
189
- L ?? (E.get(e.nodeId).push(e.handle, t), z(e.nodeId));
190
- }, V = (t, n, r, i) => e.gen(function* () {
193
+ for (let [e, t] of Object.entries(o.outputs)) for (let n of t.sources) n.kind == "node" && d(A, n.nodeId, n.output, e);
194
+ let j = /* @__PURE__ */ new Map(), M = yield* n.make(), N = yield* n.runtime(M)(), P = /* @__PURE__ */ new Map(), F = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(), L = /* @__PURE__ */ new Set(), R, z, B, V = (e, t) => {
195
+ R ?? (E.get(e.nodeId).push(e.handle, t), B(e.nodeId));
196
+ }, H = (t, n, r, i) => e.gen(function* () {
191
197
  yield* a.emit({
192
198
  handle: r,
193
199
  jobId: n,
@@ -196,13 +202,16 @@ function _(a, o, m, v, b, x = {}, S, C) {
196
202
  type: "node.output",
197
203
  value: i
198
204
  });
199
- for (let e of f(O, t, r)) B(e, i);
200
- for (let e of f(k, t, r)) F.set(e, i), S != null && (yield* S(e, i));
201
- }), H = (t, n, i, o) => {
205
+ for (let e of f(k, t, r)) V(e, i);
206
+ for (let e of f(A, t, r)) I.set(e, i), S != null && (yield* S(e, i));
207
+ }), U = (t, n, i, o) => {
202
208
  let s = e.gen(function* () {
203
- let s = u(a.prepared, n), c = l(a.prepared, n);
209
+ let s = u(a.prepared, n), c = l(a.prepared, n), d = Object.fromEntries(Object.entries(o).filter(([e]) => {
210
+ let t = n.inputs[e];
211
+ return t?.kind != "sources" || t.sources.every((e) => e.kind != "binding");
212
+ }));
204
213
  yield* a.emit({
205
- inputs: o,
214
+ inputs: d,
206
215
  jobId: i,
207
216
  nodeId: t,
208
217
  nodeKind: s,
@@ -210,7 +219,7 @@ function _(a, o, m, v, b, x = {}, S, C) {
210
219
  runId: m,
211
220
  type: "node.started"
212
221
  });
213
- let d;
222
+ let f;
214
223
  switch (n.kind) {
215
224
  case "condition": {
216
225
  let e = n.cases.find((e) => {
@@ -218,16 +227,16 @@ function _(a, o, m, v, b, x = {}, S, C) {
218
227
  let t = e.expressions.map((e) => h(n, e, o));
219
228
  return e.relation == "all" ? t.every(Boolean) : t.some(Boolean);
220
229
  })?.output ?? n.defaultOutput;
221
- d = e == null ? {} : { [e]: o[n.input.handle] ?? null }, e != null && (yield* V(t, i, e, d[e]));
230
+ f = e == null ? {} : { [e]: o[n.input.handle] ?? null }, e != null && (yield* H(t, i, e, f[e]));
222
231
  break;
223
232
  }
224
233
  case "value":
225
- d = Object.fromEntries(n.values.map((e) => [e.handle, e.value ?? null]));
226
- for (let [e, n] of Object.entries(d)) yield* V(t, i, e, n);
234
+ f = Object.fromEntries(n.values.map((e) => [e.handle, e.value ?? null]));
235
+ for (let [e, n] of Object.entries(f)) yield* H(t, i, e, n);
227
236
  break;
228
237
  case "subflow": {
229
238
  let e = a.prepared.subflows[n.subflowId];
230
- d = yield* _(a, {
239
+ f = yield* _(a, {
231
240
  flowId: n.subflowId,
232
241
  graph: y(e.graph),
233
242
  inputs: r(e.inputs),
@@ -236,7 +245,7 @@ function _(a, o, m, v, b, x = {}, S, C) {
236
245
  }, a.createId(), o, {
237
246
  jobId: i,
238
247
  runId: m
239
- }, {}, (e, n) => V(t, i, e, n));
248
+ }, {}, (e, n) => H(t, i, e, n));
240
249
  break;
241
250
  }
242
251
  case "task": {
@@ -251,11 +260,11 @@ function _(a, o, m, v, b, x = {}, S, C) {
251
260
  moduleId: n.task.moduleId
252
261
  }
253
262
  });
254
- d = yield* e.try({
263
+ f = yield* e.try({
255
264
  try: () => g(r, t),
256
265
  catch: (e) => e instanceof Error ? e : Error(String(e))
257
266
  });
258
- for (let [e, n] of Object.entries(d)) yield* V(t, i, e, n);
267
+ for (let [e, n] of Object.entries(f)) yield* H(t, i, e, n);
259
268
  break;
260
269
  }
261
270
  }
@@ -264,31 +273,31 @@ function _(a, o, m, v, b, x = {}, S, C) {
264
273
  nodeId: t,
265
274
  runId: m,
266
275
  type: "node.completed"
267
- }), d;
276
+ }), f;
268
277
  });
269
278
  return n.timeoutMs == null ? s : s.pipe(e.timeoutOrElse({
270
279
  duration: n.timeoutMs,
271
280
  orElse: () => e.fail(/* @__PURE__ */ Error(`Node "${t}" timed out.`))
272
281
  }));
273
- }, U = (t) => {
274
- let n = o.graph.nodes[t], r = E.get(t).take(), s = a.createId(), c = P.get(t) ?? 0;
275
- P.set(t, c + 1), A.set(t, (A.get(t) ?? 0) + 1), M(H(t, n, s, r).pipe(e.tap((n) => e.gen(function* () {
276
- let e = N.get(t) ?? [];
282
+ }, W = (t) => {
283
+ let n = o.graph.nodes[t], r = E.get(t).take(), s = a.createId(), c = F.get(t) ?? 0;
284
+ F.set(t, c + 1), j.set(t, (j.get(t) ?? 0) + 1), N(U(t, n, s, r).pipe(e.tap((n) => e.gen(function* () {
285
+ let e = P.get(t) ?? [];
277
286
  e.push({
278
287
  jobId: s,
279
288
  order: c,
280
289
  outputs: n
281
- }), N.set(t, e), I.has(t) || (I.add(t), yield* a.emit({
290
+ }), P.set(t, e), L.has(t) || (L.add(t), yield* a.emit({
282
291
  ...b == null ? {} : {
283
292
  parentJobId: b.jobId,
284
293
  parentRunId: b.runId
285
294
  },
286
- progress: I.size / T * 100,
295
+ progress: L.size / T * 100,
287
296
  runId: m,
288
297
  type: "run.progress"
289
298
  }));
290
299
  })), e.tapError((n) => e.gen(function* () {
291
- L ?? (R ??= n);
300
+ R ?? (z ??= n);
292
301
  let r = i(n, a.projectFailure);
293
302
  yield* a.emit({
294
303
  ...r,
@@ -298,39 +307,43 @@ function _(a, o, m, v, b, x = {}, S, C) {
298
307
  type: "node.failed"
299
308
  }).pipe(e.ignore);
300
309
  })), e.tapCause((t) => e.sync(() => {
301
- L ??= t;
310
+ R ??= t;
302
311
  })), e.ensuring(e.sync(() => {
303
- A.set(t, (A.get(t) ?? 1) - 1), z(t);
312
+ j.set(t, (j.get(t) ?? 1) - 1), B(t);
304
313
  }))));
305
314
  };
306
- z = (e) => {
307
- if (L != null) return;
315
+ B = (e) => {
316
+ if (R != null) return;
308
317
  let t = o.graph.nodes[e], n = E.get(e);
309
- for (; n.ready && (A.get(e) ?? 0) < t.concurrency;) U(e);
318
+ for (; n.ready && (j.get(e) ?? 0) < t.concurrency;) W(e);
310
319
  };
311
320
  for (let [e, t] of Object.entries(x)) {
312
321
  let n = E.get(e);
313
322
  if (n != null) for (let [e, r] of Object.entries(t)) n.launch(e, r);
314
323
  }
324
+ for (let [t, n] of O) {
325
+ if (!Object.hasOwn(a.bindingValues, t)) return yield* e.fail(/* @__PURE__ */ Error(`Variable binding "${t}" is unresolved.`));
326
+ for (let e of n) V(e, a.bindingValues[t]);
327
+ }
315
328
  for (let [e, t] of Object.entries(o.inputs)) {
316
329
  let n = Object.hasOwn(v, e) ? v[e] : t.value;
317
330
  if (n !== void 0) {
318
- for (let t of Object.entries(o.outputs)) t[1].sources.some((t) => t.kind == "flow" && t.input == e) && (F.set(t[0], n), S != null && (yield* S(t[0], n)));
319
- for (let t of D.get(e) ?? []) B(t, n);
331
+ for (let t of Object.entries(o.outputs)) t[1].sources.some((t) => t.kind == "flow" && t.input == e) && (I.set(t[0], n), S != null && (yield* S(t[0], n)));
332
+ for (let t of D.get(e) ?? []) V(t, n);
320
333
  }
321
334
  }
322
- if (C != null) for (let e of f(O, C.nodeId, "payload")) B(e, C.payload);
323
- for (let e of w) z(e);
324
- let W = yield* e.raceFirst(n.awaitEmpty(j), n.join(j)).pipe(e.exit);
325
- if (R != null) return yield* n.clear(j), yield* a.emit({
326
- message: R.message,
335
+ if (C != null) for (let e of f(k, C.nodeId, "payload")) V(e, C.payload);
336
+ for (let e of w) B(e);
337
+ let G = yield* e.raceFirst(n.awaitEmpty(M), n.join(M)).pipe(e.exit);
338
+ if (z != null) return yield* n.clear(M), yield* a.emit({
339
+ message: z.message,
327
340
  runId: m,
328
341
  type: "run.failed"
329
- }).pipe(e.ignore), yield* e.fail(R);
330
- if (L != null) return yield* n.clear(j), yield* e.failCause(L);
331
- if (t.isFailure(W)) return yield* e.failCause(W.cause);
342
+ }).pipe(e.ignore), yield* e.fail(z);
343
+ if (R != null) return yield* n.clear(M), yield* e.failCause(R);
344
+ if (t.isFailure(G)) return yield* e.failCause(G.cause);
332
345
  if (o.kind == "subflow") {
333
- let e = Object.fromEntries(F);
346
+ let e = Object.fromEntries(I);
334
347
  return yield* a.emit({
335
348
  result: {
336
349
  kind: "function-outputs",
@@ -341,10 +354,10 @@ function _(a, o, m, v, b, x = {}, S, C) {
341
354
  type: "run.completed"
342
355
  }), e;
343
356
  }
344
- let G = new Set(Object.values(o.graph.nodes).flatMap((e) => Object.values(e.inputs).flatMap((e) => e.kind == "sources" ? e.sources.filter((e) => e.kind == "node").map((e) => e.nodeId) : []))), K = {
357
+ let K = new Set(Object.values(o.graph.nodes).flatMap((e) => Object.values(e.inputs).flatMap((e) => e.kind == "sources" ? e.sources.filter((e) => e.kind == "node").map((e) => e.nodeId) : []))), q = {
345
358
  kind: "node-results",
346
- nodes: w.filter((e) => !G.has(e)).map((e) => ({
347
- jobs: (N.get(e) ?? []).toSorted((e, t) => e.order - t.order).map(({ jobId: e, outputs: t }) => ({
359
+ nodes: w.filter((e) => !K.has(e)).map((e) => ({
360
+ jobs: (P.get(e) ?? []).toSorted((e, t) => e.order - t.order).map(({ jobId: e, outputs: t }) => ({
348
361
  jobId: e,
349
362
  outputs: t
350
363
  })),
@@ -352,10 +365,10 @@ function _(a, o, m, v, b, x = {}, S, C) {
352
365
  }))
353
366
  };
354
367
  return yield* a.emit({
355
- result: K,
368
+ result: q,
356
369
  runId: m,
357
370
  type: "run.completed"
358
- }), K;
371
+ }), q;
359
372
  }));
360
373
  }
361
374
  function v(t, n) {
@@ -363,6 +376,7 @@ function v(t, n) {
363
376
  return e.gen(function* () {
364
377
  let i = n.trigger == null ? void 0 : t.graph.nodes[n.trigger.nodeId];
365
378
  return n.trigger != null && (i == null || "inputs" in i) ? yield* e.fail(/* @__PURE__ */ Error(`Node "${n.trigger.nodeId}" is not a TriggerNode in Flow "${n.flowId}".`)) : yield* _({
379
+ bindingValues: n.bindingValues ?? {},
366
380
  createId: n.createId,
367
381
  emit: r,
368
382
  invokeTask: n.invokeTask,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oomol-lab/open-flow",
3
- "version": "0.1.0-alpha.10",
3
+ "version": "0.1.0-alpha.13",
4
4
  "description": "TypeScript contracts and Browser runtime for Open Flow.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -37,6 +37,10 @@
37
37
  "types": "./dist/common/integration-trigger.d.ts",
38
38
  "import": "./dist/common/integration-trigger.js"
39
39
  },
40
+ "./localization": {
41
+ "types": "./dist/common/localization.d.ts",
42
+ "import": "./dist/common/localization.js"
43
+ },
40
44
  "./poll-trigger": {
41
45
  "types": "./dist/common/poll-trigger.d.ts",
42
46
  "import": "./dist/common/poll-trigger.js"
@@ -88,6 +92,10 @@
88
92
  "./workbench.css": {
89
93
  "types": "./dist/browser/workbench.css.d.ts",
90
94
  "default": "./dist/browser/workbench.css"
95
+ },
96
+ "./theme.css": {
97
+ "types": "./dist/browser/theme.css.d.ts",
98
+ "default": "./dist/browser/theme.css"
91
99
  }
92
100
  },
93
101
  "files": [