@oomol-lab/open-flow 0.1.0-alpha.0

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 (133) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +47 -0
  3. package/README.md +18 -0
  4. package/dist/browser/_virtual_open-flow-twemoji-DJwKsM_w.js +5067 -0
  5. package/dist/browser/addNodeOptions-DqoIueCR.js +33746 -0
  6. package/dist/browser/assets/font-00b26ac825e20950.woff2 +0 -0
  7. package/dist/browser/assets/font-036d4e95149b69ff.woff2 +0 -0
  8. package/dist/browser/assets/font-07d8e303ce4fc12b.ttf +0 -0
  9. package/dist/browser/assets/font-08ce98e51b04d589.ttf +0 -0
  10. package/dist/browser/assets/font-0cdd387c9590a1a9.woff2 +0 -0
  11. package/dist/browser/assets/font-0d85ae7cc30f2379.ttf +0 -0
  12. package/dist/browser/assets/font-0f60d1b897938ec9.woff2 +0 -0
  13. package/dist/browser/assets/font-11e4dc8a6471ff6d.woff +0 -0
  14. package/dist/browser/assets/font-138ac28d1663b303.ttf +0 -0
  15. package/dist/browser/assets/font-1ae6bd7475590e97.woff +0 -0
  16. package/dist/browser/assets/font-1c67f068fea8bb09.ttf +0 -0
  17. package/dist/browser/assets/font-1e6f9579e90e2cac.ttf +0 -0
  18. package/dist/browser/assets/font-1ece03f79f95277d.ttf +0 -0
  19. package/dist/browser/assets/font-2014c523c3210bcc.woff +0 -0
  20. package/dist/browser/assets/font-30da91e84c893f87.woff +0 -0
  21. package/dist/browser/assets/font-3398dd02302557a7.woff +0 -0
  22. package/dist/browser/assets/font-3931dd81faed86ba.ttf +0 -0
  23. package/dist/browser/assets/font-500e04d54f0d5166.ttf +0 -0
  24. package/dist/browser/assets/font-51814d270d06ff02.woff2 +0 -0
  25. package/dist/browser/assets/font-5d53e70ad607c235.woff2 +0 -0
  26. package/dist/browser/assets/font-5e28753be717dac9.woff +0 -0
  27. package/dist/browser/assets/font-68534840bcfdd2bf.ttf +0 -0
  28. package/dist/browser/assets/font-68e8c73ef42afd3c.woff2 +0 -0
  29. package/dist/browser/assets/font-6ab6b62e9b62dae2.woff +0 -0
  30. package/dist/browser/assets/font-6b47c40166b6dbe2.woff2 +0 -0
  31. package/dist/browser/assets/font-70ee1f64a20f2048.ttf +0 -0
  32. package/dist/browser/assets/font-71d517d67827787c.woff2 +0 -0
  33. package/dist/browser/assets/font-73d591271b160496.woff2 +0 -0
  34. package/dist/browser/assets/font-74444efd593c005e.woff2 +0 -0
  35. package/dist/browser/assets/font-7af58c5ec8f132a2.woff2 +0 -0
  36. package/dist/browser/assets/font-850c0af5c2238497.woff +0 -0
  37. package/dist/browser/assets/font-8a8d244581371912.woff +0 -0
  38. package/dist/browser/assets/font-9163df9c7122432e.ttf +0 -0
  39. package/dist/browser/assets/font-91ee67500cc0129a.woff +0 -0
  40. package/dist/browser/assets/font-95b6d2f1a50173bf.ttf +0 -0
  41. package/dist/browser/assets/font-97479ca6cce906ab.woff2 +0 -0
  42. package/dist/browser/assets/font-99cd42a3c072d918.woff2 +0 -0
  43. package/dist/browser/assets/font-99f9c6750b489c94.woff +0 -0
  44. package/dist/browser/assets/font-9be7ceb88004ab8a.woff +0 -0
  45. package/dist/browser/assets/font-a4af7d414440a1c1.woff2 +0 -0
  46. package/dist/browser/assets/font-a6b2099fb555c60e.ttf +0 -0
  47. package/dist/browser/assets/font-a6f7ec0d846ac7ad.woff +0 -0
  48. package/dist/browser/assets/font-c2342cd8b869e017.woff2 +0 -0
  49. package/dist/browser/assets/font-c6368d87e8a1a3a5.woff +0 -0
  50. package/dist/browser/assets/font-c647367d1dd4e162.ttf +0 -0
  51. package/dist/browser/assets/font-c76c5d696297d51b.woff +0 -0
  52. package/dist/browser/assets/font-c943cc986384f59e.woff +0 -0
  53. package/dist/browser/assets/font-d0332f52868370fd.ttf +0 -0
  54. package/dist/browser/assets/font-d04c54219f9eaec6.woff2 +0 -0
  55. package/dist/browser/assets/font-d96cdf2b3bdd4d64.woff +0 -0
  56. package/dist/browser/assets/font-dc47344dbb6cb5b6.woff2 +0 -0
  57. package/dist/browser/assets/font-de7701e42cf1f4cf.woff2 +0 -0
  58. package/dist/browser/assets/font-e14fed02b1aba7ce.woff +0 -0
  59. package/dist/browser/assets/font-e99ae51144bf1232.woff2 +0 -0
  60. package/dist/browser/assets/font-ece03cfd83e22c21.woff +0 -0
  61. package/dist/browser/assets/font-ed0b74372feefcbb.ttf +0 -0
  62. package/dist/browser/assets/font-f01f3e87d9c6a61c.ttf +0 -0
  63. package/dist/browser/assets/font-f1d6ef86f3b11a52.woff +0 -0
  64. package/dist/browser/assets/font-f36ea897e19f4a2e.ttf +0 -0
  65. package/dist/browser/assets/font-f9377ab0271cda59.ttf +0 -0
  66. package/dist/browser/carbon-nMY84Amv.js +53 -0
  67. package/dist/browser/composite-7VwgfnXx.js +6088 -0
  68. package/dist/browser/createResourceDialog-ByuJWdSL.js +439 -0
  69. package/dist/browser/dist-7oZK9QXZ.js +50088 -0
  70. package/dist/browser/dist-B9OV3YTx.js +881 -0
  71. package/dist/browser/dist-BLk5M0uK.js +1816 -0
  72. package/dist/browser/dist-BbyiRq3c.js +3285 -0
  73. package/dist/browser/dist-CIq6ue3I.js +6646 -0
  74. package/dist/browser/dist-CLZJNoWB.js +89 -0
  75. package/dist/browser/dist-CvcmLAMW.js +1620 -0
  76. package/dist/browser/dist-DL0SDskM.js +2327 -0
  77. package/dist/browser/dist-Djd02JSy.js +1247 -0
  78. package/dist/browser/dist-aWSZx4q1.js +850 -0
  79. package/dist/browser/dist-n-z5HtaO.js +4 -0
  80. package/dist/browser/dist-o4dBuwiG.js +320 -0
  81. package/dist/browser/dist-zyY--HOV.js +1543 -0
  82. package/dist/browser/esm-DXw7EADW.js +218 -0
  83. package/dist/browser/favicon.svg +7 -0
  84. package/dist/browser/flowWorkspace-DwVMpcar.js +22092 -0
  85. package/dist/browser/lib-S4ccuMeT.js +7857 -0
  86. package/dist/browser/licenses.md +4973 -0
  87. package/dist/browser/markdownContent-ZZFfSRqO.js +44545 -0
  88. package/dist/browser/project-change.d.ts +311 -0
  89. package/dist/browser/project-change.js +259 -0
  90. package/dist/browser/project-notifications.d.ts +12 -0
  91. package/dist/browser/rolldown-runtime-CEFd7nDs.js +30 -0
  92. package/dist/browser/workbench-contract.d.ts +28 -0
  93. package/dist/browser/workbench.css +2 -0
  94. package/dist/browser/workbench.css.d.ts +1 -0
  95. package/dist/browser/workbench.d.ts +14 -0
  96. package/dist/browser/workbench.js +3364 -0
  97. package/dist/common/connector-action.d.ts +20 -0
  98. package/dist/common/connector-action.js +106 -0
  99. package/dist/common/connector-proxy.d.ts +14 -0
  100. package/dist/common/connector-proxy.js +0 -0
  101. package/dist/common/control-api-conformance.d.ts +13 -0
  102. package/dist/common/control-api-conformance.js +518 -0
  103. package/dist/common/control-api-errors.d.ts +121 -0
  104. package/dist/common/control-api.d.ts +349 -0
  105. package/dist/common/control-api.js +884 -0
  106. package/dist/common/cron-trigger.d.ts +21 -0
  107. package/dist/common/cron-trigger.js +834 -0
  108. package/dist/common/engine-contract.d.ts +7 -0
  109. package/dist/common/favicon.svg +7 -0
  110. package/dist/common/integration-trigger.d.ts +111 -0
  111. package/dist/common/integration-trigger.js +290 -0
  112. package/dist/common/licenses.md +27 -0
  113. package/dist/common/poll-trigger.d.ts +69 -0
  114. package/dist/common/poll-trigger.js +155 -0
  115. package/dist/common/project-encoding.d.ts +11 -0
  116. package/dist/common/project-encoding.js +242 -0
  117. package/dist/common/project-notifications.d.ts +12 -0
  118. package/dist/common/project-semantics.d.ts +55 -0
  119. package/dist/common/project-semantics.js +8687 -0
  120. package/dist/common/provider-triggers.d.ts +6 -0
  121. package/dist/common/provider-triggers.js +4614 -0
  122. package/dist/common/run-events.d.ts +9 -0
  123. package/dist/common/run-events.js +192 -0
  124. package/dist/common/run-lifecycle.d.ts +69 -0
  125. package/dist/common/run-lifecycle.js +169 -0
  126. package/dist/common/runtime-contract.d.ts +53 -0
  127. package/dist/common/runtime-contract.js +151 -0
  128. package/dist/common/scheduler.d.ts +99 -0
  129. package/dist/common/scheduler.js +379 -0
  130. package/dist/common/webhook-trigger.d.ts +22 -0
  131. package/dist/common/webhook-trigger.js +270 -0
  132. package/dist/index.d.ts +66 -0
  133. package/package.json +102 -0
@@ -0,0 +1,242 @@
1
+ //#region src/project/common/encoding.ts
2
+ var e = new TextEncoder(), t = 64;
3
+ function n(e) {
4
+ if (e == null || typeof e == "boolean" || typeof e == "string" || typeof e == "number") return JSON.stringify(e);
5
+ if (Array.isArray(e)) return `[${e.map(n).join(",")}]`;
6
+ let t = e;
7
+ return `{${Object.keys(t).toSorted().map((e) => `${JSON.stringify(e)}:${n(t[e])}`).join(",")}}`;
8
+ }
9
+ function r(t) {
10
+ return e.encode(n(t));
11
+ }
12
+ async function i(e) {
13
+ let t = new Uint8Array(e.byteLength);
14
+ return t.set(e), `sha256:${[...new Uint8Array(await crypto.subtle.digest("SHA-256", t))].map((e) => e.toString(16).padStart(2, "0")).join("")}`;
15
+ }
16
+ function a(e) {
17
+ return Object.keys(e).toSorted().map((t) => [t, e[t]]);
18
+ }
19
+ function o(e) {
20
+ return {
21
+ ...e.description == null ? {} : { description: e.description },
22
+ jsonSchema: e.jsonSchema,
23
+ nullable: e.nullable,
24
+ ...Object.hasOwn(e, "value") ? { value: e.value } : {}
25
+ };
26
+ }
27
+ function s(e) {
28
+ return Object.fromEntries(a(e).map(([e, t]) => [e, o(t)]));
29
+ }
30
+ function c(e) {
31
+ switch (e.kind) {
32
+ case "sources": return {
33
+ kind: e.kind,
34
+ sources: e.sources.map((e) => ({ ...e }))
35
+ };
36
+ case "value": return {
37
+ kind: e.kind,
38
+ value: e.value
39
+ };
40
+ }
41
+ }
42
+ function l(e) {
43
+ return Object.fromEntries(a(e).map(([e, t]) => [e, c(t)]));
44
+ }
45
+ function u(e) {
46
+ return Object.fromEntries(a(e).map(([e, t]) => [e, {
47
+ ...t.description == null ? {} : { description: t.description },
48
+ jsonSchema: t.jsonSchema,
49
+ nullable: t.nullable,
50
+ sources: t.sources.map((e) => ({ ...e }))
51
+ }]));
52
+ }
53
+ function d(e) {
54
+ if (!("inputs" in e)) return v(e);
55
+ let t = {
56
+ concurrency: e.concurrency,
57
+ ...e.description == null ? {} : { description: e.description },
58
+ inputs: l(e.inputs),
59
+ ...e.name == null ? {} : { name: e.name },
60
+ ...e.timeoutMs == null ? {} : { timeoutMs: e.timeoutMs }
61
+ };
62
+ switch (e.kind) {
63
+ case "condition": return {
64
+ ...t,
65
+ cases: e.cases.map((e) => ({
66
+ expressions: e.expressions.map((e) => ({
67
+ input: e.input,
68
+ operator: e.operator,
69
+ ...Object.hasOwn(e, "value") ? { value: e.value } : {}
70
+ })),
71
+ output: e.output,
72
+ relation: e.relation
73
+ })),
74
+ ...e.defaultOutput == null ? {} : { defaultOutput: e.defaultOutput },
75
+ input: {
76
+ handle: e.input.handle,
77
+ ...o(e.input)
78
+ },
79
+ kind: e.kind
80
+ };
81
+ case "subflow": return {
82
+ ...t,
83
+ kind: e.kind,
84
+ subflowId: e.subflowId
85
+ };
86
+ case "task": return e.task == null ? {
87
+ ...t,
88
+ kind: e.kind,
89
+ taskId: e.taskId
90
+ } : {
91
+ ...t,
92
+ kind: e.kind,
93
+ task: m(e.task)
94
+ };
95
+ case "value": return {
96
+ ...t,
97
+ kind: e.kind,
98
+ values: s(e.values)
99
+ };
100
+ }
101
+ }
102
+ function f(e) {
103
+ return { nodes: Object.fromEntries(a(e.nodes).map(([e, t]) => [e, d(t)])) };
104
+ }
105
+ function p(e) {
106
+ return {
107
+ executor: e.executor,
108
+ inputs: s(e.inputs),
109
+ name: e.name,
110
+ outputs: s(e.outputs)
111
+ };
112
+ }
113
+ function m(e) {
114
+ return {
115
+ ...e.capabilities == null ? {} : { capabilities: e.capabilities.map(({ action: e, connectionId: t, kind: n }) => ({
116
+ action: e,
117
+ connectionId: t,
118
+ kind: n
119
+ })) },
120
+ inputs: s(e.inputs),
121
+ moduleId: e.moduleId,
122
+ name: e.name,
123
+ outputs: s(e.outputs)
124
+ };
125
+ }
126
+ function h(e) {
127
+ return {
128
+ configSchema: e.configSchema,
129
+ definitionVersion: e.definitionVersion,
130
+ description: e.description,
131
+ displayName: e.displayName,
132
+ ...e.type == "integration" ? { endpoint: {
133
+ body: {
134
+ allowArray: e.endpoint.body.allowArray,
135
+ allowEmpty: e.endpoint.body.allowEmpty,
136
+ formats: e.endpoint.body.formats
137
+ },
138
+ methods: e.endpoint.methods,
139
+ successStatus: e.endpoint.successStatus
140
+ } } : {},
141
+ key: e.key,
142
+ name: e.name,
143
+ payloadSchema: e.payloadSchema,
144
+ provider: e.provider,
145
+ type: e.type
146
+ };
147
+ }
148
+ function g(e) {
149
+ return {
150
+ ...e.allowedMethods == null ? {} : { allowedMethods: e.allowedMethods },
151
+ ...e.allowedOrigins == null ? {} : { allowedOrigins: e.allowedOrigins },
152
+ ...e.noResponseBody == null ? {} : { noResponseBody: e.noResponseBody },
153
+ ...e.responseData == null ? {} : { responseData: e.responseData },
154
+ ...e.responseHeaders == null ? {} : { responseHeaders: e.responseHeaders },
155
+ ...e.responseStatusCode == null ? {} : { responseStatusCode: e.responseStatusCode }
156
+ };
157
+ }
158
+ function _(e) {
159
+ switch (e.type) {
160
+ case "cron": return {
161
+ expression: e.expression,
162
+ timezone: e.timezone,
163
+ type: e.type
164
+ };
165
+ case "every": return {
166
+ type: e.type,
167
+ unit: e.unit,
168
+ value: e.value
169
+ };
170
+ }
171
+ }
172
+ function v(e) {
173
+ let t = (t) => ({
174
+ ...e.description == null ? {} : { description: e.description },
175
+ kind: t,
176
+ name: e.name
177
+ });
178
+ switch (e.kind) {
179
+ case "webhook": return {
180
+ ...t(e.kind),
181
+ inputsDef: e.inputsDef.map((e) => ({
182
+ handle: e.handle,
183
+ ...o(e)
184
+ })),
185
+ ...e.options == null ? {} : { options: g(e.options) }
186
+ };
187
+ case "cron": return {
188
+ ...t(e.kind),
189
+ cronTimes: e.cronTimes.map(_)
190
+ };
191
+ case "poll": return {
192
+ ...t(e.kind),
193
+ bindingId: e.bindingId,
194
+ config: e.config,
195
+ definition: h(e.definition),
196
+ pollTimes: e.pollTimes.map(_)
197
+ };
198
+ case "integration": return {
199
+ ...t(e.kind),
200
+ bindingId: e.bindingId,
201
+ config: e.config,
202
+ definition: h(e.definition)
203
+ };
204
+ }
205
+ }
206
+ function y(e) {
207
+ return {
208
+ bindings: Object.fromEntries(a(e.bindings)),
209
+ flows: Object.fromEntries(a(e.flows).map(([e, t]) => [e, {
210
+ graph: f(t.graph),
211
+ name: t.name
212
+ }])),
213
+ subflows: Object.fromEntries(a(e.subflows).map(([e, t]) => [e, {
214
+ graph: f(t.graph),
215
+ inputs: s(t.inputs),
216
+ name: t.name,
217
+ outputs: u(t.outputs)
218
+ }])),
219
+ tasks: Object.fromEntries(a(e.tasks).map(([e, t]) => [e, p(t)]))
220
+ };
221
+ }
222
+ function b(e) {
223
+ return {
224
+ imports: e.imports.toSorted(),
225
+ name: e.name,
226
+ source: e.source
227
+ };
228
+ }
229
+ function x(e) {
230
+ return {
231
+ document: y(e.document),
232
+ kind: "open-flow-project-revision",
233
+ modelVersion: e.modelVersion,
234
+ modules: Object.fromEntries(a(e.modules).map(([e, t]) => [e, b(t)])),
235
+ version: 1
236
+ };
237
+ }
238
+ function S(e) {
239
+ return r(x(e));
240
+ }
241
+ //#endregion
242
+ export { y as canonicalDocument, f as canonicalGraph, r as canonicalJsonBytes, b as canonicalModule, u as canonicalOutputs, s as canonicalPorts, p as canonicalTask, i as digestBytes, S as encodeRevision, t as maxJsonDepth };
@@ -0,0 +1,12 @@
1
+ export type ProjectChangeEvent = {
2
+ readonly kind: 'draft.changed';
3
+ readonly projectId: string;
4
+ readonly revisionId: string;
5
+ readonly version: 1;
6
+ } | {
7
+ readonly flowId: string;
8
+ readonly kind: 'run.created';
9
+ readonly projectId: string;
10
+ readonly runId: string;
11
+ readonly version: 1;
12
+ };
@@ -0,0 +1,55 @@
1
+ import type { JsonValue, ProjectDocument, RevisionContent, TriggerNode } from '@oomol-lab/open-flow/project-change';
2
+ import type { EngineContract } from './engine-contract.js';
3
+ import type { RuntimeProgram } from './runtime-contract.js';
4
+ export interface SemanticClosure {
5
+ readonly dependencies: {
6
+ readonly bindings: ReadonlySet<string>;
7
+ readonly inputBindings: ReadonlySet<string>;
8
+ readonly modules: ReadonlySet<string>;
9
+ readonly subflows: ReadonlySet<string>;
10
+ readonly tasks: ReadonlySet<string>;
11
+ };
12
+ readonly digest: string;
13
+ }
14
+ export declare function flowClosure(content: RevisionContent, flowId: string): Promise<SemanticClosure | undefined>;
15
+ export interface Diagnostic {
16
+ readonly code: string;
17
+ readonly column: number;
18
+ readonly line: number;
19
+ readonly message: string;
20
+ readonly path: string;
21
+ }
22
+ export interface FlowValidation {
23
+ readonly closure: SemanticClosure;
24
+ readonly diagnostics: readonly Diagnostic[];
25
+ readonly valid: boolean;
26
+ }
27
+ export declare function triggerPayloadSchema(trigger: TriggerNode): JsonValue;
28
+ export declare function matchesSchema(value: JsonValue, schema: JsonValue): boolean;
29
+ export type FlowInputsValidation = 'flow-not-found' | 'invalid' | 'valid';
30
+ export declare function validateFlowInputs(revision: RevisionContent, flowId: string, value: unknown): FlowInputsValidation;
31
+ export declare function validateModules(revision: RevisionContent, moduleIds: readonly string[], engine: EngineContract): readonly Diagnostic[];
32
+ export declare function validateFlow(revision: RevisionContent, flowId: string, engine: EngineContract): Promise<FlowValidation | undefined>;
33
+ export interface PreparedFlow {
34
+ readonly closureDigest: string;
35
+ readonly engineContract: string;
36
+ readonly flow: ProjectDocument['flows'][string];
37
+ readonly flowId: string;
38
+ readonly modules: RevisionContent['modules'];
39
+ readonly subflows: ProjectDocument['subflows'];
40
+ readonly tasks: ProjectDocument['tasks'];
41
+ }
42
+ export type PrepareFlowResult = {
43
+ readonly kind: 'engine-unsupported';
44
+ } | {
45
+ readonly kind: 'flow-invalid';
46
+ readonly validation: FlowValidation;
47
+ } | {
48
+ readonly kind: 'flow-not-found';
49
+ } | {
50
+ readonly flow: PreparedFlow;
51
+ readonly kind: 'prepared';
52
+ readonly validation: FlowValidation;
53
+ };
54
+ export declare function prepareFlow(revision: RevisionContent, flowId: string, engineContract: string): Promise<PrepareFlowResult>;
55
+ export declare function createRuntimeProgram(prepared: PreparedFlow, entryModuleId: string, engineDigest: string): RuntimeProgram | undefined;