@oomol-lab/open-flow 0.1.0-beta.39 → 0.1.0-beta.40

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 (41) hide show
  1. package/dist/browser/codeDiagnostics-BtH_YuXu.js +44 -0
  2. package/dist/browser/{createResourceDialog-DnlKSqIs.js → createResourceDialog-BOrW62JW.js} +1 -1
  3. package/dist/browser/{dist-DYjIVIZC.js → dist-Cdna4VV_.js} +1 -1
  4. package/dist/browser/{dist-CeSZ2xSM.js → dist-DINmJ4Gr.js} +171 -112
  5. package/dist/browser/{editorComponent-T-GmTa-C.js → editorComponent-0skblWYk.js} +190 -107
  6. package/dist/browser/flow-authoring-node.d.ts +2 -5
  7. package/dist/browser/flow-authoring.js +111 -83
  8. package/dist/browser/flow-change-schema.d.ts +1 -1
  9. package/dist/browser/flow-change.d.ts +16 -5
  10. package/dist/browser/flow-change.js +196 -143
  11. package/dist/browser/{flowChanges-BXqN4jyH.js → flowChanges-3o9Vs_1I.js} +2479 -3906
  12. package/dist/browser/{flowWorkspace-a5QLISui.js → flowWorkspace-DJzQVVtZ.js} +12035 -10159
  13. package/dist/browser/{inputValues-Do4FrC_6.js → inputValues-DkDT6u0o.js} +1 -1
  14. package/dist/browser/{typeScriptSession-vC9uPDVV.js → typeScriptSession-v9Pb3G6d.js} +136 -136
  15. package/dist/browser/ui.css +1 -1
  16. package/dist/browser/workbench.css +1 -1
  17. package/dist/browser/workbench.d.ts +0 -3
  18. package/dist/browser/workbench.js +1046 -1025
  19. package/dist/browser/{workbenchSelect-Dx2Y46cD.js → workbenchSelect-B5zXyaaX.js} +1116 -1063
  20. package/dist/common/connectorDecoders.d.ts +2 -1
  21. package/dist/common/control-api-conformance.js +1589 -1518
  22. package/dist/common/control-api.d.ts +18 -6
  23. package/dist/common/control-api.js +1470 -1392
  24. package/dist/common/control-requests.js +1550 -1535
  25. package/dist/common/draftOperations.d.ts +0 -1
  26. package/dist/common/flow-connectionUsage.d.ts +1 -1
  27. package/dist/common/flow-encoding.js +1092 -1060
  28. package/dist/common/flow-semantics.d.ts +1 -0
  29. package/dist/common/flow-semantics.js +2777 -2699
  30. package/dist/common/flowInspection.d.ts +1 -1
  31. package/dist/common/integration-trigger.js +350 -328
  32. package/dist/common/mcp.d.ts +27 -0
  33. package/dist/common/mcp.js +807 -728
  34. package/dist/common/poll-trigger.js +993 -971
  35. package/dist/common/provider-triggers.js +1521 -1203
  36. package/dist/common/runtime-contract.js +13 -6
  37. package/dist/common/scheduler.js +1430 -1408
  38. package/dist/common/trigger-catalog.d.ts +2 -1
  39. package/dist/common/webhook-trigger.js +221 -199
  40. package/dist/common/{zh-CN-D2od3TNw.js → zh-CN-CxZ3yYfR.js} +2 -2
  41. package/package.json +1 -1
@@ -72,10 +72,7 @@ export declare function createBuiltinTrigger(target: Extract<GraphTarget, {
72
72
  }>): readonly ChangeOperation[];
73
73
  export declare function createProviderTrigger(target: Extract<GraphTarget, {
74
74
  readonly kind: 'flow';
75
- }>, identity: {
76
- readonly bindingId: string;
77
- readonly nodeId: string;
78
- }, definition: TriggerKeySnapshot, options: {
75
+ }>, nodeId: string, definition: TriggerKeySnapshot, options: {
79
76
  readonly config: Readonly<Record<string, JsonValue>>;
80
77
  readonly connectionId?: string;
81
78
  readonly name?: string;
@@ -102,7 +99,7 @@ export declare function updateTriggerConfig(content: RevisionContent, _target: {
102
99
  export declare function updateTriggerSchedule(content: RevisionContent, _target: {
103
100
  readonly kind: 'flow';
104
101
  }, nodeId: string, schedule: readonly TriggerSchedule[]): readonly ChangeOperation[] | undefined;
105
- export declare function setTriggerConnection(content: RevisionContent, _target: {
102
+ export declare function setTriggerConnection(content: RevisionContent, target: {
106
103
  readonly kind: 'flow';
107
104
  }, nodeId: string, connectionId: string | undefined): readonly ChangeOperation[] | undefined;
108
105
  export declare function setCodeActions(content: RevisionContent, target: GraphTarget, nodeId: string, capabilities: readonly ConnectorCapability[]): readonly ChangeOperation[] | undefined;
@@ -4449,23 +4449,38 @@ var Lc = T(D([E({
4449
4449
  })]), Yc = O(A, Jc), Xc = {
4450
4450
  inputs: T(D([Hc, Uc])),
4451
4451
  outputs: T(D([Vc, Uc]))
4452
- }, Zc = D([rc({
4453
- kind: k("connector"),
4454
- action: A,
4455
- connectionId: A.optional(),
4456
- connections: T(rc({
4457
- connectionId: A,
4458
- alias: A.optional()
4459
- }))
4460
- }), rc({
4461
- kind: k("connector"),
4462
- actionHints: T(A).optional(),
4463
- connectionHints: T(rc({
4452
+ }, Zc = D([
4453
+ rc({
4454
+ kind: k("connector"),
4464
4455
  action: A,
4465
- connectionId: A,
4466
- alias: A.optional()
4467
- })).optional()
4468
- })]), Qc = E({
4456
+ connectionId: A.optional(),
4457
+ connections: T(rc({
4458
+ connectionId: A,
4459
+ alias: A.optional()
4460
+ }))
4461
+ }),
4462
+ rc({
4463
+ kind: k("connector"),
4464
+ mode: k("shared")
4465
+ }),
4466
+ rc({
4467
+ kind: k("connector"),
4468
+ mode: k("independent"),
4469
+ actions: T(rc({
4470
+ action: A,
4471
+ connectionId: A.optional()
4472
+ }))
4473
+ }),
4474
+ rc({
4475
+ kind: k("connector"),
4476
+ actionHints: T(A).optional(),
4477
+ connectionHints: T(rc({
4478
+ action: A,
4479
+ connectionId: A,
4480
+ alias: A.optional()
4481
+ })).optional()
4482
+ })
4483
+ ]), Qc = E({
4469
4484
  ...Xc,
4470
4485
  name: A,
4471
4486
  moduleId: A,
@@ -4662,7 +4677,7 @@ var Lc = T(D([E({
4662
4677
  E({
4663
4678
  ...ll,
4664
4679
  kind: k("poll"),
4665
- bindingId: A,
4680
+ connectionId: A.min(1).optional(),
4666
4681
  config: O(A, qc),
4667
4682
  definition: E({
4668
4683
  ...sl,
@@ -4673,7 +4688,7 @@ var Lc = T(D([E({
4673
4688
  E({
4674
4689
  ...ll,
4675
4690
  kind: k("integration"),
4676
- bindingId: A,
4691
+ connectionId: A.min(1).optional(),
4677
4692
  config: O(A, qc),
4678
4693
  definition: E({
4679
4694
  ...sl,
@@ -4699,7 +4714,7 @@ var Lc = T(D([E({
4699
4714
  nodes: O(A, dl),
4700
4715
  edges: T(pl).default([])
4701
4716
  }), _l = E({
4702
- kind: lc(["connection", "variable"]),
4717
+ kind: k("variable"),
4703
4718
  target: A
4704
4719
  }), vl = E({
4705
4720
  name: A,
@@ -4712,7 +4727,7 @@ var Lc = T(D([E({
4712
4727
  tasks: O(A, tl)
4713
4728
  });
4714
4729
  E({
4715
- modelVersion: D([k(2), k(3)]),
4730
+ modelVersion: D([k(2), k(4)]),
4716
4731
  document: yl,
4717
4732
  modules: O(A, vl)
4718
4733
  }).extend({
@@ -4744,6 +4759,13 @@ var bl = {
4744
4759
  },
4745
4760
  "graph.node.delete": ml,
4746
4761
  "graph.node.field.set": D([
4762
+ E({
4763
+ ...ml,
4764
+ kind: k("graph.node.field.set"),
4765
+ field: k("connectionId"),
4766
+ before: A.min(1).optional(),
4767
+ value: A.min(1).optional()
4768
+ }),
4747
4769
  E({
4748
4770
  ...ml,
4749
4771
  kind: k("graph.node.field.set"),
@@ -4942,6 +4964,37 @@ function Tl(e, t, n) {
4942
4964
  function El(e) {
4943
4965
  if (!Array.isArray(e)) throw TypeError("Connector capabilities must be an array.");
4944
4966
  if (e.length == 0) return [];
4967
+ if (e.some((e) => typeof e == "object" && !!e && !Array.isArray(e) && Object.hasOwn(e, "mode"))) {
4968
+ if (e.length != 1) throw TypeError("Connector capability is declared more than once.");
4969
+ let t = e[0];
4970
+ if (t.mode == "shared") {
4971
+ if (t.kind != "connector" || Object.keys(t).some((e) => !["kind", "mode"].includes(e))) throw TypeError("Invalid shared Connector permission capability.");
4972
+ return [{
4973
+ kind: "connector",
4974
+ mode: "shared"
4975
+ }];
4976
+ }
4977
+ if (Object.keys(t).some((e) => ![
4978
+ "kind",
4979
+ "mode",
4980
+ "actions"
4981
+ ].includes(e)) || t.kind != "connector" || t.mode != "independent" || !Array.isArray(t.actions)) throw TypeError("Invalid Connector permission capability.");
4982
+ let n = t.actions.map((e) => {
4983
+ if (typeof e != "object" || !e || Array.isArray(e)) throw TypeError("Invalid Connector Action.");
4984
+ let t = e;
4985
+ if (Object.keys(t).some((e) => !["action", "connectionId"].includes(e)) || typeof t.action != "string" || !/^[A-Za-z0-9_-]+\.[A-Za-z0-9_.-]+$/.test(t.action) || Object.hasOwn(t, "connectionId") && (typeof t.connectionId != "string" || t.connectionId.length == 0)) throw TypeError("Invalid Connector Action permission.");
4986
+ return t.connectionId == null ? { action: t.action } : {
4987
+ action: t.action,
4988
+ connectionId: t.connectionId
4989
+ };
4990
+ });
4991
+ if (new Set(n.map((e) => e.action)).size != n.length) throw TypeError("Duplicate Connector Action permission.");
4992
+ return [{
4993
+ kind: "connector",
4994
+ mode: "independent",
4995
+ actions: n
4996
+ }];
4997
+ }
4945
4998
  if (e.some((e) => typeof e == "object" && !!e && !Array.isArray(e) && !Object.hasOwn(e, "action"))) {
4946
4999
  if (e.length != 1) throw TypeError("Connector capability is declared more than once.");
4947
5000
  let t = e[0];
@@ -5160,7 +5213,7 @@ function Ml(e, t) {
5160
5213
  }
5161
5214
  case "graph.node.field.set": {
5162
5215
  let t = Al(n, e.target), r = t.nodes[e.nodeId];
5163
- r ?? j("The Node does not exist in the target graph."), o(Reflect.get(r, e.field), e.before) || j("The Node field changed before this operation was applied.");
5216
+ r ?? j("The Node does not exist in the target graph."), e.field == "connectionId" && r.kind != "poll" && r.kind != "integration" && j("Only provider Triggers select a node Connection."), o(Reflect.get(r, e.field), e.before) || j("The Node field changed before this operation was applied.");
5164
5217
  let i = { ...r };
5165
5218
  if (e.field == "name") {
5166
5219
  typeof e.value != "string" && j("A Node name cannot be empty.");
@@ -5454,7 +5507,7 @@ function Ml(e, t) {
5454
5507
  }
5455
5508
  return {
5456
5509
  document: n,
5457
- modelVersion: 3,
5510
+ modelVersion: 4,
5458
5511
  modules: r
5459
5512
  };
5460
5513
  }
@@ -15675,7 +15728,10 @@ function jg(e, t, n, r = void 0, i = {
15675
15728
  kind: "task",
15676
15729
  name: n,
15677
15730
  task: {
15678
- ...i.capabilities == null ? {} : { capabilities: i.capabilities },
15731
+ capabilities: i.capabilities ?? [{
15732
+ kind: "connector",
15733
+ mode: "shared"
15734
+ }],
15679
15735
  inputs: i.inputs,
15680
15736
  moduleId: t.moduleId,
15681
15737
  name: n,
@@ -15846,42 +15902,35 @@ function Rg(e, t, n) {
15846
15902
  }];
15847
15903
  }
15848
15904
  function zg(e, t, n, r) {
15849
- let i = r.name ?? n.displayName, a = n.type == "poll" ? {
15850
- bindingId: t.bindingId,
15851
- config: p(r.config),
15852
- definition: n,
15853
- kind: "poll",
15854
- name: i,
15855
- pollTimes: r.schedule ?? [{
15856
- type: "every",
15857
- unit: "minute",
15858
- value: 5
15859
- }]
15860
- } : {
15861
- bindingId: t.bindingId,
15862
- config: p(r.config),
15863
- definition: n,
15864
- kind: "integration",
15865
- name: i
15866
- };
15867
- return [...r.connectionId == null ? [] : [{
15868
- binding: {
15869
- kind: "connection",
15870
- target: r.connectionId
15871
- },
15872
- bindingId: t.bindingId,
15873
- kind: "binding.create"
15874
- }], {
15905
+ let i = r.name ?? n.displayName;
15906
+ return [{
15875
15907
  kind: "graph.node.create",
15876
- node: a,
15877
- nodeId: t.nodeId,
15908
+ node: n.type == "poll" ? {
15909
+ ...r.connectionId == null ? {} : { connectionId: r.connectionId },
15910
+ config: p(r.config),
15911
+ definition: n,
15912
+ kind: "poll",
15913
+ name: i,
15914
+ pollTimes: r.schedule ?? [{
15915
+ type: "every",
15916
+ unit: "minute",
15917
+ value: 5
15918
+ }]
15919
+ } : {
15920
+ ...r.connectionId == null ? {} : { connectionId: r.connectionId },
15921
+ config: p(r.config),
15922
+ definition: n,
15923
+ kind: "integration",
15924
+ name: i
15925
+ },
15926
+ nodeId: t,
15878
15927
  target: e
15879
15928
  }];
15880
15929
  }
15881
15930
  function Bg(e, t, n) {
15882
15931
  let r = Xg(e, t)?.nodes;
15883
15932
  if (r == null) return [];
15884
- let i = new Set(n), a = n.flatMap((e) => {
15933
+ let i = n.flatMap((e) => {
15885
15934
  let n = r[e];
15886
15935
  return n == null ? [] : [{
15887
15936
  kind: "graph.node.delete",
@@ -15891,21 +15940,12 @@ function Bg(e, t, n) {
15891
15940
  kind: "module.delete",
15892
15941
  moduleId: n.task.moduleId
15893
15942
  }] : []];
15894
- }), o = kg(Ml(e, a).document);
15895
- for (let t of kg(e.document)) !o.has(t) && e.document.tasks[t] != null && a.push({
15943
+ }), a = kg(Ml(e, i).document);
15944
+ for (let t of kg(e.document)) !a.has(t) && e.document.tasks[t] != null && i.push({
15896
15945
  kind: "task.delete",
15897
15946
  taskId: t
15898
15947
  });
15899
- if (t.kind == "subflow") return Gg(e, a);
15900
- let s = new Set(n.flatMap((e) => {
15901
- let t = r[e];
15902
- return t?.kind == "poll" || t?.kind == "integration" ? [t.bindingId] : [];
15903
- }));
15904
- for (let t of s) !Object.entries(e.document.graph.nodes).some(([e, n]) => !i.has(e) && (n.kind == "poll" || n.kind == "integration") && n.bindingId == t) && e.document.bindings[t] != null && a.push({
15905
- bindingId: t,
15906
- kind: "binding.delete"
15907
- });
15908
- return Gg(e, a);
15948
+ return Gg(e, i);
15909
15949
  }
15910
15950
  function Vg(e, t, n, r) {
15911
15951
  let i = Xg(e, t)?.nodes[n];
@@ -16008,7 +16048,7 @@ function Kg(e) {
16008
16048
  t.set(e, (t.get(e) ?? 0) + 1);
16009
16049
  };
16010
16050
  for (let t of [e.graph, ...Object.values(e.subflows).map((e) => e.graph)]) for (let e of Object.values(t.nodes)) {
16011
- if ((e.kind == "poll" || e.kind == "integration") && n(e.bindingId), !("inputs" in e)) continue;
16051
+ if (!("inputs" in e)) continue;
16012
16052
  let t = Object.values(wl(e));
16013
16053
  for (let e of t) if (e.kind == "sources") for (let t of e.sources) t.kind == "binding" && n(t.bindingId);
16014
16054
  }
@@ -16104,24 +16144,12 @@ function Jg(e, t, n, r) {
16104
16144
  }
16105
16145
  function Yg(e, t, n, r) {
16106
16146
  let i = e.document.graph.nodes[n];
16107
- if (i == null || i.kind != "poll" && i.kind != "integration") return;
16108
- let a = e.document.bindings[i.bindingId];
16109
- if (r == null) return a == null ? [] : [{
16110
- bindingId: i.bindingId,
16111
- kind: "binding.delete"
16112
- }];
16113
- if (a == null) return [{
16114
- binding: {
16115
- kind: "connection",
16116
- target: r
16117
- },
16118
- bindingId: i.bindingId,
16119
- kind: "binding.create"
16120
- }];
16121
- if (a.kind == "connection") return a.target == r ? [] : [{
16122
- before: a.target,
16123
- bindingId: i.bindingId,
16124
- kind: "binding.target.set",
16147
+ if (!(i == null || i.kind != "poll" && i.kind != "integration")) return i.connectionId == r ? [] : [{
16148
+ before: i.connectionId,
16149
+ kind: "graph.node.field.set",
16150
+ field: "connectionId",
16151
+ nodeId: n,
16152
+ target: t,
16125
16153
  value: r
16126
16154
  }];
16127
16155
  }
@@ -1,5 +1,5 @@
1
1
  import type { ChangeOperation, FlowDocument, JsonValue, RevisionContent } from './flow-change.js';
2
- export declare const currentFlowModelVersion = 3;
2
+ export declare const currentFlowModelVersion = 4;
3
3
  /** Best-effort recovery for a parseable Revision envelope. Invalid collection entries are discarded. */
4
4
  export declare function repairRevisionEnvelope(value: unknown): RevisionContent;
5
5
  export declare function decodeFlowDocument(value: unknown): FlowDocument;
@@ -191,7 +191,18 @@ export interface ConnectorActionCapability {
191
191
  readonly connectionId?: string;
192
192
  readonly kind: 'connector';
193
193
  }
194
- export type ConnectorCapability = ConnectorAccessCapability | ConnectorActionCapability;
194
+ export type ConnectorPermissionCapability = {
195
+ readonly kind: 'connector';
196
+ readonly mode: 'shared';
197
+ } | {
198
+ readonly kind: 'connector';
199
+ readonly mode: 'independent';
200
+ readonly actions: readonly {
201
+ readonly action: string;
202
+ readonly connectionId?: string;
203
+ }[];
204
+ };
205
+ export type ConnectorCapability = ConnectorAccessCapability | ConnectorActionCapability | ConnectorPermissionCapability;
195
206
  export declare function decodeConnectorCapabilities(value: unknown): readonly ConnectorCapability[];
196
207
  interface TaskDefinitionBase {
197
208
  readonly inputs: readonly (InputPort | Group)[];
@@ -281,7 +292,7 @@ export type TriggerNode = (TriggerNodeBase & {
281
292
  readonly cronTimes: readonly TriggerSchedule[];
282
293
  readonly kind: 'cron';
283
294
  }) | (TriggerNodeBase & {
284
- readonly bindingId: string;
295
+ readonly connectionId?: string;
285
296
  readonly config: InputValues;
286
297
  readonly definition: TriggerKeySnapshot & {
287
298
  readonly type: 'poll';
@@ -289,7 +300,7 @@ export type TriggerNode = (TriggerNodeBase & {
289
300
  readonly kind: 'poll';
290
301
  readonly pollTimes: readonly TriggerSchedule[];
291
302
  }) | (TriggerNodeBase & {
292
- readonly bindingId: string;
303
+ readonly connectionId?: string;
293
304
  readonly config: InputValues;
294
305
  readonly definition: TriggerKeySnapshot & {
295
306
  readonly type: 'integration';
@@ -299,7 +310,7 @@ export type TriggerNode = (TriggerNodeBase & {
299
310
  export type GraphNode = ApprovalNode | ConditionNode | SubflowNode | TaskNode | TriggerNode | ValueNode | WaitNode;
300
311
  export interface FlowDocument {
301
312
  readonly bindings: Readonly<Record<string, {
302
- readonly kind: 'connection' | 'variable';
313
+ readonly kind: 'variable';
303
314
  readonly target: string;
304
315
  }>>;
305
316
  readonly graph: Graph;
@@ -384,7 +395,7 @@ export type ChangeOperation = {
384
395
  readonly target: GraphTarget;
385
396
  } | {
386
397
  readonly before?: number | string;
387
- readonly field: 'description' | 'icon' | 'maxExecutions' | 'name' | 'timeoutMs';
398
+ readonly field: 'connectionId' | 'description' | 'icon' | 'maxExecutions' | 'name' | 'timeoutMs';
388
399
  readonly kind: 'graph.node.field.set';
389
400
  readonly nodeId: string;
390
401
  readonly target: GraphTarget;