@oomol-lab/open-flow 0.1.0-beta.3 → 0.1.0-beta.30

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 (123) hide show
  1. package/dist/browser/{_virtual_open-flow-twemoji-DJwKsM_w.js → _virtual_open-flow-twemoji-CpHJOEsk.js} +4028 -2
  2. package/dist/browser/carbon-Cn-DTyjG.js +54 -0
  3. package/dist/browser/createResourceDialog-_y2xHaUA.js +110 -0
  4. package/dist/browser/{dist-DWADUsVB.js → dist-By46o5UV.js} +47 -47
  5. package/dist/browser/dist-CoszrK7m.js +4 -0
  6. package/dist/browser/{dist-CPuF50D9.js → dist-D1VYgicl.js} +426 -305
  7. package/dist/browser/dist-DSe6KRsr.js +1224 -0
  8. package/dist/browser/dist-DYjIVIZC.js +795 -0
  9. package/dist/browser/{dist-3Mj8q8Pr.js → dist-DmuE3M0R.js} +53 -54
  10. package/dist/browser/{dist-BN4ZCyOB.js → dist-DpDLsYtO.js} +14 -15
  11. package/dist/browser/{dist-CJpzJrLM.js → dist-DwvhuMxw.js} +894 -895
  12. package/dist/browser/dist-DxahK_I8.js +2688 -0
  13. package/dist/browser/{dist-C46JByB-.js → dist-Dz6Nglsd.js} +61 -61
  14. package/dist/browser/{dist-DUzA0Ukh.js → dist-TJfrvoIQ.js} +141 -142
  15. package/dist/browser/editorComponent-Dq4IKp5R.js +14790 -0
  16. package/dist/browser/{esm-C2UUqIUP.js → esm-B7A42FzW.js} +68 -59
  17. package/dist/browser/event-sources.d.ts +30 -0
  18. package/dist/browser/flow-authoring-module.d.ts +2 -2
  19. package/dist/browser/flow-authoring-node.d.ts +26 -8
  20. package/dist/browser/flow-authoring.d.ts +1 -1
  21. package/dist/browser/flow-authoring.js +5282 -313
  22. package/dist/browser/flow-change-schema.d.ts +11 -0
  23. package/dist/browser/flow-change.d.ts +193 -18
  24. package/dist/browser/flow-change.js +5192 -137
  25. package/dist/browser/flow-notifications.d.ts +11 -2
  26. package/dist/browser/flowChanges-AdN0Iqma.js +12304 -0
  27. package/dist/browser/{flowRunInputEditorStore-CwvOiIiU.js → flowRunInputEditorStore-CTORQcA2.js} +864 -4000
  28. package/dist/browser/flowWorkspace-BrtzLKWB.js +153066 -0
  29. package/dist/browser/host-conformance.d.ts +7 -0
  30. package/dist/browser/host-conformance.js +39 -0
  31. package/dist/browser/inputValues-DJfFraxG.js +43 -0
  32. package/dist/browser/licenses.md +195 -662
  33. package/dist/browser/lite-BuKZ8joP.js +8545 -0
  34. package/dist/browser/main-BDnNHhkU.js +50 -0
  35. package/dist/browser/{markdownContent-DUfLdnUt.js → markdownContent-D2oHGWc6.js} +53 -53
  36. package/dist/browser/theme.css +527 -34
  37. package/dist/browser/{typeScriptSession-mPCiA9sV.js → typeScriptSession-DnAmJCzu.js} +70 -71
  38. package/dist/browser/ui-input.d.ts +5 -0
  39. package/dist/browser/ui-label.d.ts +3 -0
  40. package/dist/browser/ui-textarea.d.ts +3 -0
  41. package/dist/browser/ui.css +2 -0
  42. package/dist/browser/ui.css.d.ts +1 -0
  43. package/dist/browser/ui.d.ts +34 -0
  44. package/dist/browser/ui.js +2632 -0
  45. package/dist/browser/value-DPg_9yXB.js +93 -0
  46. package/dist/browser/warmCodeTheme-DVv4-rDO.js +35 -0
  47. package/dist/browser/workbench-contract.d.ts +27 -2
  48. package/dist/browser/workbench.css +1 -1
  49. package/dist/browser/workbench.d.ts +2 -0
  50. package/dist/browser/workbench.js +2767 -1406
  51. package/dist/browser/workbenchSelect-BDPIQxYK.js +5967 -0
  52. package/dist/common/authoringExamples.d.ts +28 -0
  53. package/dist/common/control-api-conformance.d.ts +7 -0
  54. package/dist/common/control-api-conformance.js +5568 -171
  55. package/dist/common/control-api-errors.d.ts +37 -0
  56. package/dist/common/control-api.d.ts +394 -47
  57. package/dist/common/control-api.js +6066 -569
  58. package/dist/common/control-requests.d.ts +98 -0
  59. package/dist/common/control-requests.js +5412 -0
  60. package/dist/common/cron-trigger.d.ts +2 -1
  61. package/dist/common/cron-trigger.js +27 -24
  62. package/dist/common/draftOperations.d.ts +14 -0
  63. package/dist/common/engine-contract.d.ts +3 -1
  64. package/dist/common/event-sources.d.ts +50 -0
  65. package/dist/common/feishu-events.d.ts +20 -0
  66. package/dist/common/feishu-subscriptions.d.ts +10 -0
  67. package/dist/common/flow-agent.d.ts +10 -0
  68. package/dist/common/flow-encoding.d.ts +16 -2
  69. package/dist/common/flow-encoding.js +5092 -68
  70. package/dist/common/flow-graph.d.ts +52 -0
  71. package/dist/common/flow-json.d.ts +2 -0
  72. package/dist/common/flow-modules.d.ts +20 -0
  73. package/dist/common/flow-notifications.d.ts +11 -2
  74. package/dist/common/flow-schema.d.ts +17 -0
  75. package/dist/common/flow-semantics.d.ts +12 -6
  76. package/dist/common/flow-semantics.js +15870 -9668
  77. package/dist/common/flowInspection.d.ts +16 -0
  78. package/dist/common/fr-iv1541dF.js +93 -0
  79. package/dist/common/integration-trigger.d.ts +29 -2
  80. package/dist/common/integration-trigger.js +192 -56
  81. package/dist/common/ja-Bq-ZDOD4.js +93 -0
  82. package/dist/common/ko-Z-k9R2c6.js +93 -0
  83. package/dist/common/localization.d.ts +2 -0
  84. package/dist/common/localization.js +37 -1
  85. package/dist/common/mcp-conformance.d.ts +2 -0
  86. package/dist/common/mcp.d.ts +767 -0
  87. package/dist/common/mcp.js +6733 -0
  88. package/dist/common/poll-trigger.d.ts +5 -0
  89. package/dist/common/poll-trigger.js +26 -22
  90. package/dist/common/provider-triggers.d.ts +4 -0
  91. package/dist/common/provider-triggers.js +7310 -1736
  92. package/dist/common/ru-B4gFecYZ.js +93 -0
  93. package/dist/common/run-events.d.ts +2 -2
  94. package/dist/common/run-events.js +13 -17
  95. package/dist/common/run-lifecycle.d.ts +21 -2
  96. package/dist/common/run-lifecycle.js +83 -2
  97. package/dist/common/run-results.d.ts +57 -0
  98. package/dist/common/runtime-contract.d.ts +38 -3
  99. package/dist/common/runtime-contract.js +291 -19
  100. package/dist/common/scheduler.d.ts +97 -19
  101. package/dist/common/scheduler.js +8234 -261
  102. package/dist/common/trigger-catalog.d.ts +17 -0
  103. package/dist/common/trigger-config-options.d.ts +13 -0
  104. package/dist/common/trigger-contract.d.ts +5 -0
  105. package/dist/common/trigger-localization.d.ts +7 -0
  106. package/dist/common/webhook-trigger.d.ts +3 -3
  107. package/dist/common/webhook-trigger.js +64 -18
  108. package/dist/common/zh-CN-ByQ6nYam.js +93 -0
  109. package/dist/common/zh-TW-QjIarvX9.js +93 -0
  110. package/dist/index.d.ts +6 -5
  111. package/package.json +21 -1
  112. package/dist/browser/carbon-DMCVsjHo.js +0 -53
  113. package/dist/browser/createResourceDialog-BkZns-oZ.js +0 -504
  114. package/dist/browser/diagnostics-SDCyFuxm.js +0 -11634
  115. package/dist/browser/dist-BMqL-qR5.js +0 -1894
  116. package/dist/browser/dist-BpopSHwP.js +0 -1543
  117. package/dist/browser/dist-CP0883sY.js +0 -4
  118. package/dist/browser/dist-CUSrALSX.js +0 -1620
  119. package/dist/browser/flowWorkspace-BZ_eiQNR.js +0 -45393
  120. package/dist/browser/getPseudoElementBounds-ESJExRFX.js +0 -7642
  121. package/dist/browser/languages-DgJehE1g.js +0 -62
  122. package/dist/browser/main-DmjVyuWr.js +0 -76
  123. package/dist/browser/workbenchSelect-B2s1HV-Y.js +0 -1374
@@ -1,5 +1,6 @@
1
1
  import type { JsonValue, TriggerSchedule } from '../browser/flow-change.js';
2
2
  export declare function validateTriggerSchedule(rules: readonly TriggerSchedule[]): void;
3
+ export declare function validateCronExpression(expression: string, timezone: string): void;
3
4
  export declare function nextTriggerScheduledAt(rules: readonly TriggerSchedule[], afterMs: number): number;
4
5
  export declare function scheduledTriggerOccurrenceId(bindingId: string, runtimeVersion: number, scheduledAt: string): Promise<string>;
5
6
  export interface CronConformanceFixture {
@@ -8,7 +9,7 @@ export interface CronConformanceFixture {
8
9
  }
9
10
  export interface CronConformanceHarness {
10
11
  dispose(): Promise<void>;
11
- payloads(): Promise<readonly JsonValue[]>;
12
+ outputs(): Promise<readonly Readonly<Record<string, JsonValue>>[]>;
12
13
  republish(at: string, rules: readonly TriggerSchedule[]): Promise<void>;
13
14
  retire(at: string): Promise<void>;
14
15
  tick(at: string): Promise<void>;
@@ -742,82 +742,85 @@ function E(e) {
742
742
  if (t.unit == "month" && t.value > 12 || t.unit != "month" && t.value * T[t.unit] > C) throw TypeError("Every rule interval must not exceed one year.");
743
743
  continue;
744
744
  }
745
- if (t.expression.trim().split(/\s+/).length != 5) throw TypeError("Cron expression must have exactly five fields.");
746
745
  try {
747
746
  Intl.DateTimeFormat("en-US", { timeZone: t.timezone });
748
747
  } catch {
749
748
  throw TypeError(`Invalid IANA timezone: ${t.timezone}`);
750
749
  }
751
- let e;
752
- try {
753
- e = new v(t.expression, { timezone: t.timezone });
754
- } catch (e) {
755
- throw TypeError(`Invalid cron expression: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
756
- }
757
- if (e.nextRun() == null) throw TypeError("Cron expression has no future occurrence.");
750
+ D(t.expression, t.timezone);
758
751
  }
759
752
  }
760
753
  function D(e, t) {
754
+ if (e.trim().split(/\s+/).length != 5) throw TypeError("Cron expression must have exactly five fields.");
755
+ let n;
756
+ try {
757
+ n = new v(e, { timezone: t });
758
+ } catch (e) {
759
+ throw TypeError(`Invalid cron expression: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
760
+ }
761
+ if (n.nextRun() == null) throw TypeError("Cron expression has no future occurrence.");
762
+ }
763
+ function O(e, t) {
761
764
  let n = Infinity;
762
- for (let r of e) n = Math.min(n, M(r, t));
765
+ for (let r of e) n = Math.min(n, N(r, t));
763
766
  if (!Number.isFinite(n)) throw Error("Schedule has no future occurrence.");
764
767
  return n;
765
768
  }
766
- async function O(e, t, n) {
769
+ async function k(e, t, n) {
767
770
  let r = w.encode(`${e}\0${t}\0${n}`), i = await crypto.subtle.digest("SHA-256", r);
768
771
  return `sha256:${Array.from(new Uint8Array(i), (e) => e.toString(16).padStart(2, "0")).join("")}`;
769
772
  }
770
- var k = [{
773
+ var A = [{
771
774
  type: "every",
772
775
  unit: "hour",
773
776
  value: 1
774
- }], A = [{
777
+ }], j = [{
775
778
  type: "every",
776
779
  unit: "minute",
777
780
  value: 1
778
- }], j = [
781
+ }], M = [
779
782
  {
780
783
  fixture: {
781
784
  publishedAt: "2026-08-21T00:30:00.000Z",
782
- rules: k
785
+ rules: A
783
786
  },
784
787
  name: "admits an exact schedule grid once",
785
788
  async verify(e) {
786
- await e.tick("2026-08-21T01:00:00.000Z"), await e.tick("2026-08-21T01:00:00.000Z"), N(await e.payloads(), [{ scheduledAt: "2026-08-21T01:00:00.000Z" }], "Exact schedule payloads");
789
+ await e.tick("2026-08-21T01:00:00.000Z"), await e.tick("2026-08-21T01:00:00.000Z"), P(await e.outputs(), [{ scheduledAt: "2026-08-21T01:00:00.000Z" }], "Exact schedule outputs");
787
790
  }
788
791
  },
789
792
  {
790
793
  fixture: {
791
794
  publishedAt: "2026-08-21T00:00:30.000Z",
792
- rules: A
795
+ rules: j
793
796
  },
794
797
  name: "coalesces missed grids and preserves the earliest due time",
795
798
  async verify(e) {
796
- await e.tick("2026-08-21T00:03:30.000Z"), N(await e.payloads(), [{ scheduledAt: "2026-08-21T00:01:00.000Z" }], "Delayed schedule payloads"), await e.tick("2026-08-21T00:04:00.000Z"), N(await e.payloads(), [{ scheduledAt: "2026-08-21T00:01:00.000Z" }, { scheduledAt: "2026-08-21T00:04:00.000Z" }], "Advanced schedule payloads");
799
+ await e.tick("2026-08-21T00:03:30.000Z"), P(await e.outputs(), [{ scheduledAt: "2026-08-21T00:01:00.000Z" }], "Delayed schedule outputs"), await e.tick("2026-08-21T00:04:00.000Z"), P(await e.outputs(), [{ scheduledAt: "2026-08-21T00:01:00.000Z" }, { scheduledAt: "2026-08-21T00:04:00.000Z" }], "Advanced schedule outputs");
797
800
  }
798
801
  },
799
802
  {
800
803
  fixture: {
801
804
  publishedAt: "2026-08-21T00:00:30.000Z",
802
- rules: A
805
+ rules: j
803
806
  },
804
807
  name: "resets the schedule when its publication changes",
805
808
  async verify(e) {
806
- await e.republish("2026-08-21T00:00:45.000Z", k), await e.tick("2026-08-21T00:01:00.000Z"), N(await e.payloads(), [], "Payloads from the previous publication"), await e.tick("2026-08-21T01:00:00.000Z"), N(await e.payloads(), [{ scheduledAt: "2026-08-21T01:00:00.000Z" }], "Republished schedule payloads");
809
+ await e.republish("2026-08-21T00:00:45.000Z", A), await e.tick("2026-08-21T00:01:00.000Z"), P(await e.outputs(), [], "Outputs from the previous publication"), await e.tick("2026-08-21T01:00:00.000Z"), P(await e.outputs(), [{ scheduledAt: "2026-08-21T01:00:00.000Z" }], "Republished schedule outputs");
807
810
  }
808
811
  },
809
812
  {
810
813
  fixture: {
811
814
  publishedAt: "2026-08-21T00:30:00.000Z",
812
- rules: k
815
+ rules: A
813
816
  },
814
817
  name: "stops admitting runs after retirement",
815
818
  async verify(e) {
816
- await e.retire("2026-08-21T00:45:00.000Z"), await e.tick("2026-08-21T01:00:00.000Z"), N(await e.payloads(), [], "Retired schedule payloads");
819
+ await e.retire("2026-08-21T00:45:00.000Z"), await e.tick("2026-08-21T01:00:00.000Z"), P(await e.outputs(), [], "Retired schedule outputs");
817
820
  }
818
821
  }
819
822
  ];
820
- function M(e, t) {
823
+ function N(e, t) {
821
824
  if (e.type == "cron") return new v(e.expression, { timezone: e.timezone }).nextRun(new Date(t))?.getTime() ?? Infinity;
822
825
  if (e.unit == "month") {
823
826
  let n = new Date(t), r = (n.getUTCFullYear() - 1970) * 12 + n.getUTCMonth(), i = Math.floor(r / e.value) * e.value, a = Date.UTC(1970, i, 1);
@@ -827,8 +830,8 @@ function M(e, t) {
827
830
  let n = e.value * T[e.unit], r = e.unit == "week" ? S : 0;
828
831
  return r + (Math.floor((t - r) / n) + 1) * n;
829
832
  }
830
- function N(e, t, n) {
833
+ function P(e, t, n) {
831
834
  if (JSON.stringify(e) != JSON.stringify(t)) throw Error(`${n}: expected ${JSON.stringify(t)}, received ${JSON.stringify(e)}.`);
832
835
  }
833
836
  //#endregion
834
- export { j as cronConformanceCases, D as nextTriggerScheduledAt, O as scheduledTriggerOccurrenceId, E as validateTriggerSchedule };
837
+ export { M as cronConformanceCases, O as nextTriggerScheduledAt, k as scheduledTriggerOccurrenceId, D as validateCronExpression, E as validateTriggerSchedule };
@@ -0,0 +1,14 @@
1
+ import type { ChangeOperation, JsonValue, TriggerKeySnapshot, TriggerSchedule } from '../browser/flow-change.js';
2
+ export type DraftOperation = ChangeOperation | {
3
+ readonly kind: 'graph.trigger.create';
4
+ readonly nodeId: string;
5
+ readonly bindingId: string;
6
+ readonly key: string;
7
+ readonly connectionId?: string;
8
+ readonly name?: string;
9
+ readonly config: Readonly<Record<string, JsonValue>>;
10
+ readonly schedule?: readonly TriggerSchedule[];
11
+ };
12
+ export declare function decodeDraftOperations(value: unknown): readonly DraftOperation[];
13
+ export declare function draftOperationsSchema(kind?: string): JsonValue;
14
+ export declare function resolveDraftOperations(operations: readonly DraftOperation[], definition: (key: string) => TriggerKeySnapshot): readonly ChangeOperation[];
@@ -1,7 +1,9 @@
1
1
  export interface EngineContract {
2
+ readonly builtinModules?: ReadonlySet<string>;
2
3
  readonly platformExports: ReadonlySet<string>;
3
4
  readonly platformModule: string;
4
5
  readonly platformSource: string;
5
6
  }
6
- export declare const currentEngineContract = "open-flow-engine/v1";
7
+ export declare const currentEngineContract = "open-flow-engine/v5";
8
+ export declare const nodejsEngineContract = "open-flow-engine/v5/nodejs-compat-v1";
7
9
  export declare function findEngineContract(contract: string): EngineContract | undefined;
@@ -0,0 +1,50 @@
1
+ export interface CreateEventSource {
2
+ readonly version: 1;
3
+ readonly name: string;
4
+ readonly connectionId: string;
5
+ readonly teamId: string | null;
6
+ readonly verificationToken: string;
7
+ readonly encryptKey: string;
8
+ readonly eventTypes: string[];
9
+ readonly manageSubscriptions: boolean;
10
+ }
11
+ export interface UpdateEventSource {
12
+ readonly version: 1;
13
+ readonly expectedRevision: number;
14
+ readonly name: string;
15
+ readonly enabled: boolean;
16
+ readonly eventTypes: string[];
17
+ readonly verificationToken?: string;
18
+ readonly encryptKey?: string;
19
+ }
20
+ export interface EventSource {
21
+ readonly version: 1;
22
+ readonly sourceId: string;
23
+ readonly revision: number;
24
+ readonly name: string;
25
+ readonly provider: 'feishu' | 'feishu_app_bot';
26
+ readonly appId: string;
27
+ readonly tenantKey: string;
28
+ readonly connectionId: string;
29
+ readonly teamId: string | null;
30
+ readonly enabled: boolean;
31
+ readonly eventTypes: string[];
32
+ readonly manageSubscriptions: boolean;
33
+ readonly verificationTokenConfigured: boolean;
34
+ readonly encryptKeyConfigured: boolean;
35
+ readonly endpointUrl: string | null;
36
+ readonly verifiedAt: string | null;
37
+ readonly lastReceivedAt: string | null;
38
+ readonly updatedAt: string;
39
+ readonly consumers: {
40
+ flowId: string;
41
+ flowName: string;
42
+ triggerNodeId: string;
43
+ }[];
44
+ }
45
+ export declare function decodeEventSource(value: unknown): EventSource;
46
+ export declare function decodeEventSources(value: unknown): {
47
+ readonly version: 1;
48
+ readonly sources: readonly EventSource[];
49
+ readonly teamId?: string | null;
50
+ };
@@ -0,0 +1,20 @@
1
+ import type { JsonValue } from '../browser/flow-change.js';
2
+ export interface FeishuEvent {
3
+ readonly id: string;
4
+ readonly type: string;
5
+ readonly appId: string;
6
+ readonly tenantKey: string;
7
+ readonly occurredAt: string | null;
8
+ readonly body: Readonly<Record<string, JsonValue>>;
9
+ }
10
+ export declare function receiveFeishuEvent(rawBody: Uint8Array, headers: Headers, source: {
11
+ readonly appId: string;
12
+ readonly tenantKey: string;
13
+ readonly verificationToken: string;
14
+ readonly encryptKey: string;
15
+ }, now: number): Promise<{
16
+ readonly challenge: string;
17
+ } | {
18
+ readonly event: FeishuEvent;
19
+ }>;
20
+ export declare function matchesFeishuEvent(config: Readonly<Record<string, JsonValue>>, event: FeishuEvent): boolean;
@@ -0,0 +1,10 @@
1
+ import type { ConnectorProxyRequest, ConnectorProxyResult } from './connector-proxy.js';
2
+ import type { JsonValue } from '../browser/flow-change.js';
3
+ export interface FeishuSubscription {
4
+ readonly key: string;
5
+ readonly subscribe: ConnectorProxyRequest;
6
+ readonly unsubscribe: ConnectorProxyRequest;
7
+ readonly inspect?: ConnectorProxyRequest;
8
+ }
9
+ export declare function feishuSubscriptions(config: Readonly<Record<string, JsonValue>>, provider: string): readonly FeishuSubscription[];
10
+ export declare function feishuResponse(result: ConnectorProxyResult): Readonly<Record<string, JsonValue>>;
@@ -0,0 +1,10 @@
1
+ import type { AgentInput, AgentTool, JsonValue, ManagedTaskDefinition, ManagedTaskExecutor } from '../browser/flow-change.js';
2
+ export type AgentConfig = Extract<ManagedTaskExecutor, {
3
+ readonly kind: 'agent';
4
+ }>;
5
+ export declare function agentConfigIssues(task: ManagedTaskDefinition, tasks: Readonly<Record<string, ManagedTaskDefinition>>): readonly string[];
6
+ export declare function agentInput(source: Exclude<AgentInput, {
7
+ readonly kind: 'model';
8
+ }>, input: Readonly<Record<string, JsonValue>>): JsonValue;
9
+ export declare function agentToolSchema(tool: AgentTool): JsonValue;
10
+ export declare function agentToolInput(tool: AgentTool, input: Readonly<Record<string, JsonValue>>, argumentsValue: unknown): Readonly<Record<string, JsonValue>>;
@@ -1,11 +1,25 @@
1
- import type { CodeModule, FlowDocument, Graph, Group, InputPort, JsonValue, OutputMapping, Port, RevisionContent } from '@oomol-lab/open-flow/flow-change';
2
- export declare const maxJsonDepth = 64;
1
+ import type { CodeModule, FlowDocument, Graph, Group, InputPort, JsonValue, OutputMapping, Port, RevisionContent, TriggerNode } from '@oomol-lab/open-flow/flow-change';
2
+ export { maxJsonDepth } from './flow-json.js';
3
+ export { decodeFlowDocument, decodeRevisionContent } from '../browser/flow-change-schema.js';
3
4
  export declare function canonicalJsonBytes(value: JsonValue): Uint8Array;
4
5
  export declare function digestBytes(bytes: Uint8Array): Promise<string>;
5
6
  export declare function canonicalPorts(value: readonly (InputPort | Port | Group)[]): JsonValue;
6
7
  export declare function canonicalOutputs(value: readonly (OutputMapping & Port)[]): JsonValue;
7
8
  export declare function canonicalGraph(value: Graph): JsonValue;
9
+ export declare function canonicalRevisionGraph(content: RevisionContent, graph: Graph): JsonValue;
10
+ export declare function canonicalRevisionOutputs(content: RevisionContent, value: readonly (OutputMapping & Port)[], graph: Graph): JsonValue;
8
11
  export declare function canonicalTask(task: FlowDocument['tasks'][string]): JsonValue;
12
+ export declare function triggerRuntimeJson(trigger: TriggerNode): string;
9
13
  export declare function canonicalDocument(document: FlowDocument): JsonValue;
10
14
  export declare function canonicalModule(module: CodeModule): JsonValue;
11
15
  export declare function encodeRevision(content: RevisionContent): Uint8Array;
16
+ export declare function decodeRevision(bytes: Uint8Array): RevisionContent;
17
+ export type RevisionRepairKind = 'repair' | 'upgrade';
18
+ export declare function revisionRepairKind(bytes: Uint8Array): RevisionRepairKind | undefined;
19
+ export declare function repairRevision(bytes: Uint8Array): RevisionContent;
20
+ export declare function legacyProjectFlowIds(value: unknown): readonly string[];
21
+ export declare function convertProjectFlow(value: unknown, flowId: string): {
22
+ name: string;
23
+ revision: RevisionContent;
24
+ adjustments: readonly string[];
25
+ };