@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.
- package/LICENSE +201 -0
- package/NOTICE +47 -0
- package/README.md +18 -0
- package/dist/browser/_virtual_open-flow-twemoji-DJwKsM_w.js +5067 -0
- package/dist/browser/addNodeOptions-DqoIueCR.js +33746 -0
- package/dist/browser/assets/font-00b26ac825e20950.woff2 +0 -0
- package/dist/browser/assets/font-036d4e95149b69ff.woff2 +0 -0
- package/dist/browser/assets/font-07d8e303ce4fc12b.ttf +0 -0
- package/dist/browser/assets/font-08ce98e51b04d589.ttf +0 -0
- package/dist/browser/assets/font-0cdd387c9590a1a9.woff2 +0 -0
- package/dist/browser/assets/font-0d85ae7cc30f2379.ttf +0 -0
- package/dist/browser/assets/font-0f60d1b897938ec9.woff2 +0 -0
- package/dist/browser/assets/font-11e4dc8a6471ff6d.woff +0 -0
- package/dist/browser/assets/font-138ac28d1663b303.ttf +0 -0
- package/dist/browser/assets/font-1ae6bd7475590e97.woff +0 -0
- package/dist/browser/assets/font-1c67f068fea8bb09.ttf +0 -0
- package/dist/browser/assets/font-1e6f9579e90e2cac.ttf +0 -0
- package/dist/browser/assets/font-1ece03f79f95277d.ttf +0 -0
- package/dist/browser/assets/font-2014c523c3210bcc.woff +0 -0
- package/dist/browser/assets/font-30da91e84c893f87.woff +0 -0
- package/dist/browser/assets/font-3398dd02302557a7.woff +0 -0
- package/dist/browser/assets/font-3931dd81faed86ba.ttf +0 -0
- package/dist/browser/assets/font-500e04d54f0d5166.ttf +0 -0
- package/dist/browser/assets/font-51814d270d06ff02.woff2 +0 -0
- package/dist/browser/assets/font-5d53e70ad607c235.woff2 +0 -0
- package/dist/browser/assets/font-5e28753be717dac9.woff +0 -0
- package/dist/browser/assets/font-68534840bcfdd2bf.ttf +0 -0
- package/dist/browser/assets/font-68e8c73ef42afd3c.woff2 +0 -0
- package/dist/browser/assets/font-6ab6b62e9b62dae2.woff +0 -0
- package/dist/browser/assets/font-6b47c40166b6dbe2.woff2 +0 -0
- package/dist/browser/assets/font-70ee1f64a20f2048.ttf +0 -0
- package/dist/browser/assets/font-71d517d67827787c.woff2 +0 -0
- package/dist/browser/assets/font-73d591271b160496.woff2 +0 -0
- package/dist/browser/assets/font-74444efd593c005e.woff2 +0 -0
- package/dist/browser/assets/font-7af58c5ec8f132a2.woff2 +0 -0
- package/dist/browser/assets/font-850c0af5c2238497.woff +0 -0
- package/dist/browser/assets/font-8a8d244581371912.woff +0 -0
- package/dist/browser/assets/font-9163df9c7122432e.ttf +0 -0
- package/dist/browser/assets/font-91ee67500cc0129a.woff +0 -0
- package/dist/browser/assets/font-95b6d2f1a50173bf.ttf +0 -0
- package/dist/browser/assets/font-97479ca6cce906ab.woff2 +0 -0
- package/dist/browser/assets/font-99cd42a3c072d918.woff2 +0 -0
- package/dist/browser/assets/font-99f9c6750b489c94.woff +0 -0
- package/dist/browser/assets/font-9be7ceb88004ab8a.woff +0 -0
- package/dist/browser/assets/font-a4af7d414440a1c1.woff2 +0 -0
- package/dist/browser/assets/font-a6b2099fb555c60e.ttf +0 -0
- package/dist/browser/assets/font-a6f7ec0d846ac7ad.woff +0 -0
- package/dist/browser/assets/font-c2342cd8b869e017.woff2 +0 -0
- package/dist/browser/assets/font-c6368d87e8a1a3a5.woff +0 -0
- package/dist/browser/assets/font-c647367d1dd4e162.ttf +0 -0
- package/dist/browser/assets/font-c76c5d696297d51b.woff +0 -0
- package/dist/browser/assets/font-c943cc986384f59e.woff +0 -0
- package/dist/browser/assets/font-d0332f52868370fd.ttf +0 -0
- package/dist/browser/assets/font-d04c54219f9eaec6.woff2 +0 -0
- package/dist/browser/assets/font-d96cdf2b3bdd4d64.woff +0 -0
- package/dist/browser/assets/font-dc47344dbb6cb5b6.woff2 +0 -0
- package/dist/browser/assets/font-de7701e42cf1f4cf.woff2 +0 -0
- package/dist/browser/assets/font-e14fed02b1aba7ce.woff +0 -0
- package/dist/browser/assets/font-e99ae51144bf1232.woff2 +0 -0
- package/dist/browser/assets/font-ece03cfd83e22c21.woff +0 -0
- package/dist/browser/assets/font-ed0b74372feefcbb.ttf +0 -0
- package/dist/browser/assets/font-f01f3e87d9c6a61c.ttf +0 -0
- package/dist/browser/assets/font-f1d6ef86f3b11a52.woff +0 -0
- package/dist/browser/assets/font-f36ea897e19f4a2e.ttf +0 -0
- package/dist/browser/assets/font-f9377ab0271cda59.ttf +0 -0
- package/dist/browser/carbon-nMY84Amv.js +53 -0
- package/dist/browser/composite-7VwgfnXx.js +6088 -0
- package/dist/browser/createResourceDialog-ByuJWdSL.js +439 -0
- package/dist/browser/dist-7oZK9QXZ.js +50088 -0
- package/dist/browser/dist-B9OV3YTx.js +881 -0
- package/dist/browser/dist-BLk5M0uK.js +1816 -0
- package/dist/browser/dist-BbyiRq3c.js +3285 -0
- package/dist/browser/dist-CIq6ue3I.js +6646 -0
- package/dist/browser/dist-CLZJNoWB.js +89 -0
- package/dist/browser/dist-CvcmLAMW.js +1620 -0
- package/dist/browser/dist-DL0SDskM.js +2327 -0
- package/dist/browser/dist-Djd02JSy.js +1247 -0
- package/dist/browser/dist-aWSZx4q1.js +850 -0
- package/dist/browser/dist-n-z5HtaO.js +4 -0
- package/dist/browser/dist-o4dBuwiG.js +320 -0
- package/dist/browser/dist-zyY--HOV.js +1543 -0
- package/dist/browser/esm-DXw7EADW.js +218 -0
- package/dist/browser/favicon.svg +7 -0
- package/dist/browser/flowWorkspace-DwVMpcar.js +22092 -0
- package/dist/browser/lib-S4ccuMeT.js +7857 -0
- package/dist/browser/licenses.md +4973 -0
- package/dist/browser/markdownContent-ZZFfSRqO.js +44545 -0
- package/dist/browser/project-change.d.ts +311 -0
- package/dist/browser/project-change.js +259 -0
- package/dist/browser/project-notifications.d.ts +12 -0
- package/dist/browser/rolldown-runtime-CEFd7nDs.js +30 -0
- package/dist/browser/workbench-contract.d.ts +28 -0
- package/dist/browser/workbench.css +2 -0
- package/dist/browser/workbench.css.d.ts +1 -0
- package/dist/browser/workbench.d.ts +14 -0
- package/dist/browser/workbench.js +3364 -0
- package/dist/common/connector-action.d.ts +20 -0
- package/dist/common/connector-action.js +106 -0
- package/dist/common/connector-proxy.d.ts +14 -0
- package/dist/common/connector-proxy.js +0 -0
- package/dist/common/control-api-conformance.d.ts +13 -0
- package/dist/common/control-api-conformance.js +518 -0
- package/dist/common/control-api-errors.d.ts +121 -0
- package/dist/common/control-api.d.ts +349 -0
- package/dist/common/control-api.js +884 -0
- package/dist/common/cron-trigger.d.ts +21 -0
- package/dist/common/cron-trigger.js +834 -0
- package/dist/common/engine-contract.d.ts +7 -0
- package/dist/common/favicon.svg +7 -0
- package/dist/common/integration-trigger.d.ts +111 -0
- package/dist/common/integration-trigger.js +290 -0
- package/dist/common/licenses.md +27 -0
- package/dist/common/poll-trigger.d.ts +69 -0
- package/dist/common/poll-trigger.js +155 -0
- package/dist/common/project-encoding.d.ts +11 -0
- package/dist/common/project-encoding.js +242 -0
- package/dist/common/project-notifications.d.ts +12 -0
- package/dist/common/project-semantics.d.ts +55 -0
- package/dist/common/project-semantics.js +8687 -0
- package/dist/common/provider-triggers.d.ts +6 -0
- package/dist/common/provider-triggers.js +4614 -0
- package/dist/common/run-events.d.ts +9 -0
- package/dist/common/run-events.js +192 -0
- package/dist/common/run-lifecycle.d.ts +69 -0
- package/dist/common/run-lifecycle.js +169 -0
- package/dist/common/runtime-contract.d.ts +53 -0
- package/dist/common/runtime-contract.js +151 -0
- package/dist/common/scheduler.d.ts +99 -0
- package/dist/common/scheduler.js +379 -0
- package/dist/common/webhook-trigger.d.ts +22 -0
- package/dist/common/webhook-trigger.js +270 -0
- package/dist/index.d.ts +66 -0
- package/package.json +102 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
//#region ../../node_modules/dequal/lite/index.mjs
|
|
2
|
+
var e = Object.prototype.hasOwnProperty;
|
|
3
|
+
function t(n, r) {
|
|
4
|
+
var i, a;
|
|
5
|
+
if (n === r) return !0;
|
|
6
|
+
if (n && r && (i = n.constructor) === r.constructor) {
|
|
7
|
+
if (i === Date) return n.getTime() === r.getTime();
|
|
8
|
+
if (i === RegExp) return n.toString() === r.toString();
|
|
9
|
+
if (i === Array) {
|
|
10
|
+
if ((a = n.length) === r.length) for (; a-- && t(n[a], r[a]););
|
|
11
|
+
return a === -1;
|
|
12
|
+
}
|
|
13
|
+
if (!i || typeof n == "object") {
|
|
14
|
+
for (i in a = 0, n) if (e.call(n, i) && ++a && !e.call(r, i) || !(i in r) || !t(n[i], r[i])) return !1;
|
|
15
|
+
return Object.keys(r).length === a;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return n !== n && r !== r;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/trigger/common/webhook.ts
|
|
22
|
+
var n = 65536, r = /^\/v1\/webhooks\/(endpoint_[0-9a-f]{32})$/, i = new TextEncoder();
|
|
23
|
+
function a(e) {
|
|
24
|
+
return r.exec(e.pathname)?.[1];
|
|
25
|
+
}
|
|
26
|
+
async function o(e, t, n) {
|
|
27
|
+
if (n == null) return `webhook_${crypto.randomUUID().replaceAll("-", "")}`;
|
|
28
|
+
if (n.trim().length == 0 || n.length > 256) return;
|
|
29
|
+
let r = JSON.stringify([
|
|
30
|
+
1,
|
|
31
|
+
"webhook-occurrence",
|
|
32
|
+
e,
|
|
33
|
+
t,
|
|
34
|
+
n
|
|
35
|
+
]);
|
|
36
|
+
return [...new Uint8Array(await crypto.subtle.digest("SHA-256", i.encode(r)))].map((e) => e.toString(16).padStart(2, "0")).join("");
|
|
37
|
+
}
|
|
38
|
+
function s(e, n, r) {
|
|
39
|
+
if (!t(e, n)) throw Error(`${r}: expected ${JSON.stringify(n)}, received ${JSON.stringify(e)}.`);
|
|
40
|
+
}
|
|
41
|
+
async function c(e, t, n) {
|
|
42
|
+
s(e.status, t.status, `${n} status`), t.body != null && s(await e.text(), t.body, `${n} body`);
|
|
43
|
+
for (let [r, i] of Object.entries(t.headers ?? {})) s(e.headers.get(r), i, `${n} header ${r}`);
|
|
44
|
+
}
|
|
45
|
+
function l(e, t = {}) {
|
|
46
|
+
return e.request(new Request(t.url ?? e.endpointUrl, {
|
|
47
|
+
...t.body == null ? {} : { body: t.body },
|
|
48
|
+
headers: t.headers,
|
|
49
|
+
method: t.method ?? "POST"
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
var u = [], d = [{
|
|
53
|
+
handle: "event",
|
|
54
|
+
jsonSchema: {
|
|
55
|
+
additionalProperties: !1,
|
|
56
|
+
properties: { message: { type: "string" } },
|
|
57
|
+
required: ["message"],
|
|
58
|
+
type: "object"
|
|
59
|
+
},
|
|
60
|
+
nullable: !1
|
|
61
|
+
}], f = { event: { message: "hello" } }, p = [
|
|
62
|
+
{
|
|
63
|
+
fixture: { inputsDef: u },
|
|
64
|
+
name: "rejects malformed and unknown endpoint identities",
|
|
65
|
+
async verify(e) {
|
|
66
|
+
let t = new URL(e.endpointUrl);
|
|
67
|
+
await c(await l(e, { url: new URL("/v1/webhooks/not-an-endpoint", t).href }), {
|
|
68
|
+
body: "",
|
|
69
|
+
headers: { "cache-control": "no-store" },
|
|
70
|
+
status: 404
|
|
71
|
+
}, "Malformed endpoint"), await c(await l(e, { url: new URL("/v1/webhooks/endpoint_00000000000000000000000000000000", t).href }), {
|
|
72
|
+
body: "",
|
|
73
|
+
headers: { "cache-control": "no-store" },
|
|
74
|
+
status: 404
|
|
75
|
+
}, "Unknown endpoint");
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
fixture: { inputsDef: u },
|
|
80
|
+
name: "uses POST by default and decodes an empty body as an empty object",
|
|
81
|
+
async verify(e) {
|
|
82
|
+
await c(await l(e, { method: "GET" }), {
|
|
83
|
+
headers: {
|
|
84
|
+
allow: "POST",
|
|
85
|
+
"cache-control": "no-store"
|
|
86
|
+
},
|
|
87
|
+
status: 405
|
|
88
|
+
}, "Default method"), await c(await l(e), {
|
|
89
|
+
body: "",
|
|
90
|
+
headers: { "cache-control": "no-store" },
|
|
91
|
+
status: 200
|
|
92
|
+
}, "Empty payload"), s(await e.payloads(), [{}], "Decoded empty payloads");
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
fixture: {
|
|
97
|
+
inputsDef: u,
|
|
98
|
+
options: {
|
|
99
|
+
allowedMethods: ["PUT"],
|
|
100
|
+
allowedOrigins: ["https://client.example"],
|
|
101
|
+
responseData: "accepted",
|
|
102
|
+
responseHeaders: { "x-webhook-response": "configured" },
|
|
103
|
+
responseStatusCode: 202
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
name: "applies configured methods, CORS, preflight, and success response",
|
|
107
|
+
async verify(e) {
|
|
108
|
+
await c(await l(e, {
|
|
109
|
+
headers: {
|
|
110
|
+
"access-control-request-headers": "content-type, idempotency-key",
|
|
111
|
+
"access-control-request-method": "PUT",
|
|
112
|
+
origin: "https://client.example"
|
|
113
|
+
},
|
|
114
|
+
method: "OPTIONS"
|
|
115
|
+
}), {
|
|
116
|
+
body: "",
|
|
117
|
+
headers: {
|
|
118
|
+
"access-control-allow-headers": "content-type, idempotency-key",
|
|
119
|
+
"access-control-allow-methods": "PUT",
|
|
120
|
+
"access-control-allow-origin": "https://client.example",
|
|
121
|
+
"access-control-max-age": "600"
|
|
122
|
+
},
|
|
123
|
+
status: 204
|
|
124
|
+
}, "Preflight"), await c(await l(e, {
|
|
125
|
+
body: "{}",
|
|
126
|
+
headers: { origin: "https://client.example" },
|
|
127
|
+
method: "PUT"
|
|
128
|
+
}), {
|
|
129
|
+
body: "accepted",
|
|
130
|
+
headers: {
|
|
131
|
+
"access-control-allow-origin": "https://client.example",
|
|
132
|
+
"cache-control": "no-store",
|
|
133
|
+
"x-webhook-response": "configured"
|
|
134
|
+
},
|
|
135
|
+
status: 202
|
|
136
|
+
}, "Configured success"), await c(await l(e, {
|
|
137
|
+
body: "{}",
|
|
138
|
+
headers: { origin: "https://other.example" },
|
|
139
|
+
method: "PUT"
|
|
140
|
+
}), {
|
|
141
|
+
body: "",
|
|
142
|
+
headers: { "cache-control": "no-store" },
|
|
143
|
+
status: 403
|
|
144
|
+
}, "Disallowed origin");
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
fixture: { inputsDef: d },
|
|
149
|
+
name: "rejects invalid JSON, invalid payloads, invalid idempotency keys, and oversized bodies",
|
|
150
|
+
async verify(e) {
|
|
151
|
+
await c(await l(e, { body: "{" }), {
|
|
152
|
+
body: "",
|
|
153
|
+
headers: { "cache-control": "no-store" },
|
|
154
|
+
status: 400
|
|
155
|
+
}, "Invalid JSON"), await c(await l(e, { body: JSON.stringify({ event: {} }) }), {
|
|
156
|
+
body: "",
|
|
157
|
+
headers: { "cache-control": "no-store" },
|
|
158
|
+
status: 400
|
|
159
|
+
}, "Invalid payload"), await c(await l(e, {
|
|
160
|
+
body: JSON.stringify(f),
|
|
161
|
+
headers: { "idempotency-key": " " }
|
|
162
|
+
}), {
|
|
163
|
+
body: "",
|
|
164
|
+
headers: { "cache-control": "no-store" },
|
|
165
|
+
status: 400
|
|
166
|
+
}, "Empty key"), await c(await l(e, {
|
|
167
|
+
body: JSON.stringify(f),
|
|
168
|
+
headers: { "idempotency-key": "x".repeat(257) }
|
|
169
|
+
}), {
|
|
170
|
+
body: "",
|
|
171
|
+
headers: { "cache-control": "no-store" },
|
|
172
|
+
status: 400
|
|
173
|
+
}, "Oversized key"), await c(await l(e, { body: "x".repeat(65537) }), {
|
|
174
|
+
body: "",
|
|
175
|
+
headers: { "cache-control": "no-store" },
|
|
176
|
+
status: 413
|
|
177
|
+
}, "Oversized body"), s(await e.payloads(), [], "Rejected payloads");
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
fixture: { inputsDef: d },
|
|
182
|
+
name: "replays one idempotent occurrence and rejects conflicting payloads",
|
|
183
|
+
async verify(e) {
|
|
184
|
+
let t = { "idempotency-key": "delivery-1" };
|
|
185
|
+
await c(await l(e, {
|
|
186
|
+
body: JSON.stringify(f),
|
|
187
|
+
headers: t
|
|
188
|
+
}), { status: 200 }, "Initial delivery"), await c(await l(e, {
|
|
189
|
+
body: JSON.stringify(f),
|
|
190
|
+
headers: t
|
|
191
|
+
}), { status: 200 }, "Repeated delivery"), await c(await l(e, {
|
|
192
|
+
body: JSON.stringify({ event: { message: "different" } }),
|
|
193
|
+
headers: t
|
|
194
|
+
}), {
|
|
195
|
+
body: "",
|
|
196
|
+
headers: { "cache-control": "no-store" },
|
|
197
|
+
status: 409
|
|
198
|
+
}, "Conflicting delivery"), s(await e.payloads(), [f], "Idempotent payloads");
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
fixture: { inputsDef: d },
|
|
203
|
+
name: "admits requests without an idempotency key as separate occurrences",
|
|
204
|
+
async verify(e) {
|
|
205
|
+
let t = JSON.stringify(f);
|
|
206
|
+
await c(await l(e, { body: t }), { status: 200 }, "First unkeyed delivery"), await c(await l(e, { body: t }), { status: 200 }, "Second unkeyed delivery"), s(await e.payloads(), [f, f], "Unkeyed payloads");
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
fixture: { inputsDef: d },
|
|
211
|
+
name: "scopes occurrence identity to the current runtime version",
|
|
212
|
+
async verify(e) {
|
|
213
|
+
let t = JSON.stringify(f), n = { "idempotency-key": "delivery-across-publish" };
|
|
214
|
+
await c(await l(e, {
|
|
215
|
+
body: t,
|
|
216
|
+
headers: n
|
|
217
|
+
}), { status: 200 }, "Delivery before publish");
|
|
218
|
+
let r = e.endpointUrl;
|
|
219
|
+
await e.republish(), s(e.endpointUrl, r, "Endpoint after publish"), await c(await l(e, {
|
|
220
|
+
body: t,
|
|
221
|
+
headers: n
|
|
222
|
+
}), { status: 200 }, "Delivery after publish"), s(await e.payloads(), [f, f], "Payloads across publish");
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
fixture: { inputsDef: u },
|
|
227
|
+
name: "fails closed after its trigger is retired",
|
|
228
|
+
async verify(e) {
|
|
229
|
+
await e.retire(), await c(await l(e, { body: "{}" }), {
|
|
230
|
+
body: "",
|
|
231
|
+
headers: { "cache-control": "no-store" },
|
|
232
|
+
status: 404
|
|
233
|
+
}, "Retired endpoint"), s(await e.payloads(), [], "Payloads after retirement");
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
fixture: {
|
|
238
|
+
inputsDef: u,
|
|
239
|
+
options: {
|
|
240
|
+
responseData: "ignored",
|
|
241
|
+
responseStatusCode: 204
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
name: "omits a configured response body for null-body statuses",
|
|
245
|
+
async verify(e) {
|
|
246
|
+
await c(await l(e, { body: "{}" }), {
|
|
247
|
+
body: "",
|
|
248
|
+
status: 204
|
|
249
|
+
}, "Null-body status");
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
fixture: {
|
|
254
|
+
inputsDef: u,
|
|
255
|
+
options: {
|
|
256
|
+
allowedMethods: ["HEAD"],
|
|
257
|
+
responseData: "ignored"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
name: "omits the response body for HEAD requests",
|
|
261
|
+
async verify(e) {
|
|
262
|
+
await c(await l(e, { method: "HEAD" }), {
|
|
263
|
+
body: "",
|
|
264
|
+
status: 200
|
|
265
|
+
}, "HEAD response");
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
];
|
|
269
|
+
//#endregion
|
|
270
|
+
export { n as maximumWebhookBodyBytes, p as webhookConformanceCases, a as webhookEndpointId, o as webhookOccurrenceId };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface ArtifactRef {
|
|
2
|
+
readonly kind: 'artifact';
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly mediaType: string | undefined;
|
|
6
|
+
readonly size: number;
|
|
7
|
+
readonly digest: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ArtifactPutOptions {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly mediaType?: string | undefined;
|
|
12
|
+
}
|
|
13
|
+
export type ArtifactData = Uint8Array | Blob | ReadableStream<Uint8Array>;
|
|
14
|
+
export interface ArtifactCapability {
|
|
15
|
+
put(data: ArtifactData, options: ArtifactPutOptions): Promise<ArtifactRef>;
|
|
16
|
+
open(ref: ArtifactRef): Promise<ReadableStream<Uint8Array>>;
|
|
17
|
+
}
|
|
18
|
+
export interface MediaPreviewPayload {
|
|
19
|
+
readonly type: 'video' | 'audio' | 'markdown' | 'iframe' | 'html';
|
|
20
|
+
readonly data: string;
|
|
21
|
+
}
|
|
22
|
+
export interface TextPreviewPayload {
|
|
23
|
+
readonly type: 'json' | 'text' | `text/${string}`;
|
|
24
|
+
readonly data: unknown;
|
|
25
|
+
}
|
|
26
|
+
export interface ImagePreviewPayload {
|
|
27
|
+
readonly type: 'image';
|
|
28
|
+
readonly data: string | readonly string[];
|
|
29
|
+
}
|
|
30
|
+
export interface TablePreviewData {
|
|
31
|
+
readonly columns: readonly (string | number)[];
|
|
32
|
+
readonly rows: readonly (readonly (string | number | boolean)[])[];
|
|
33
|
+
readonly row_count?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface TablePreviewPayload {
|
|
36
|
+
readonly type: 'table';
|
|
37
|
+
readonly data: TablePreviewData | string;
|
|
38
|
+
}
|
|
39
|
+
export interface CsvPreviewPayload {
|
|
40
|
+
readonly type: 'csv';
|
|
41
|
+
readonly data: string;
|
|
42
|
+
}
|
|
43
|
+
export type PreviewPayload = MediaPreviewPayload | TextPreviewPayload | ImagePreviewPayload | TablePreviewPayload | CsvPreviewPayload;
|
|
44
|
+
export type PreviewType = PreviewPayload['type'];
|
|
45
|
+
export interface TaskLogger {
|
|
46
|
+
debug(message: string, data?: unknown): void;
|
|
47
|
+
info(message: string, data?: unknown): void;
|
|
48
|
+
warn(message: string, data?: unknown): void;
|
|
49
|
+
error(message: string, data?: unknown): void;
|
|
50
|
+
}
|
|
51
|
+
export interface TaskContext<Outputs extends object = Record<string, unknown>> {
|
|
52
|
+
readonly signal: AbortSignal;
|
|
53
|
+
readonly flowId: string;
|
|
54
|
+
readonly runId: string;
|
|
55
|
+
readonly blockId: string;
|
|
56
|
+
readonly artifact: ArtifactCapability;
|
|
57
|
+
readonly fetch: typeof fetch;
|
|
58
|
+
readonly logger: TaskLogger;
|
|
59
|
+
output<Handle extends keyof Outputs & string>(handle: Handle, value: Outputs[Handle]): Promise<void>;
|
|
60
|
+
preview(payload: PreviewPayload, id?: string): Promise<void>;
|
|
61
|
+
reportProgress(progress: number): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
export type TaskResult<Outputs extends object> = Partial<Outputs> | void;
|
|
64
|
+
export interface Task<Inputs extends object = Record<string, unknown>, Outputs extends object = Record<string, unknown>> {
|
|
65
|
+
(inputs: Inputs, context: TaskContext<Outputs>): TaskResult<Outputs> | Promise<TaskResult<Outputs>>;
|
|
66
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@oomol-lab/open-flow",
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
4
|
+
"description": "TypeScript contracts and Browser runtime for Open Flow.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts"
|
|
10
|
+
},
|
|
11
|
+
"./connector-action": {
|
|
12
|
+
"types": "./dist/common/connector-action.d.ts",
|
|
13
|
+
"import": "./dist/common/connector-action.js"
|
|
14
|
+
},
|
|
15
|
+
"./connector-proxy": {
|
|
16
|
+
"types": "./dist/common/connector-proxy.d.ts",
|
|
17
|
+
"import": "./dist/common/connector-proxy.js"
|
|
18
|
+
},
|
|
19
|
+
"./control-api": {
|
|
20
|
+
"types": "./dist/common/control-api.d.ts",
|
|
21
|
+
"import": "./dist/common/control-api.js"
|
|
22
|
+
},
|
|
23
|
+
"./control-api-conformance": {
|
|
24
|
+
"types": "./dist/common/control-api-conformance.d.ts",
|
|
25
|
+
"import": "./dist/common/control-api-conformance.js"
|
|
26
|
+
},
|
|
27
|
+
"./cron-trigger": {
|
|
28
|
+
"types": "./dist/common/cron-trigger.d.ts",
|
|
29
|
+
"import": "./dist/common/cron-trigger.js"
|
|
30
|
+
},
|
|
31
|
+
"./integration-trigger": {
|
|
32
|
+
"types": "./dist/common/integration-trigger.d.ts",
|
|
33
|
+
"import": "./dist/common/integration-trigger.js"
|
|
34
|
+
},
|
|
35
|
+
"./poll-trigger": {
|
|
36
|
+
"types": "./dist/common/poll-trigger.d.ts",
|
|
37
|
+
"import": "./dist/common/poll-trigger.js"
|
|
38
|
+
},
|
|
39
|
+
"./provider-triggers": {
|
|
40
|
+
"types": "./dist/common/provider-triggers.d.ts",
|
|
41
|
+
"import": "./dist/common/provider-triggers.js"
|
|
42
|
+
},
|
|
43
|
+
"./project-change": {
|
|
44
|
+
"types": "./dist/browser/project-change.d.ts",
|
|
45
|
+
"import": "./dist/browser/project-change.js"
|
|
46
|
+
},
|
|
47
|
+
"./project-encoding": {
|
|
48
|
+
"types": "./dist/common/project-encoding.d.ts",
|
|
49
|
+
"import": "./dist/common/project-encoding.js"
|
|
50
|
+
},
|
|
51
|
+
"./project-semantics": {
|
|
52
|
+
"types": "./dist/common/project-semantics.d.ts",
|
|
53
|
+
"import": "./dist/common/project-semantics.js"
|
|
54
|
+
},
|
|
55
|
+
"./run-lifecycle": {
|
|
56
|
+
"types": "./dist/common/run-lifecycle.d.ts",
|
|
57
|
+
"import": "./dist/common/run-lifecycle.js"
|
|
58
|
+
},
|
|
59
|
+
"./run-events": {
|
|
60
|
+
"types": "./dist/common/run-events.d.ts",
|
|
61
|
+
"import": "./dist/common/run-events.js"
|
|
62
|
+
},
|
|
63
|
+
"./runtime-contract": {
|
|
64
|
+
"types": "./dist/common/runtime-contract.d.ts",
|
|
65
|
+
"import": "./dist/common/runtime-contract.js"
|
|
66
|
+
},
|
|
67
|
+
"./scheduler": {
|
|
68
|
+
"types": "./dist/common/scheduler.d.ts",
|
|
69
|
+
"import": "./dist/common/scheduler.js"
|
|
70
|
+
},
|
|
71
|
+
"./webhook-trigger": {
|
|
72
|
+
"types": "./dist/common/webhook-trigger.d.ts",
|
|
73
|
+
"import": "./dist/common/webhook-trigger.js"
|
|
74
|
+
},
|
|
75
|
+
"./workbench": {
|
|
76
|
+
"types": "./dist/browser/workbench.d.ts",
|
|
77
|
+
"import": "./dist/browser/workbench.js"
|
|
78
|
+
},
|
|
79
|
+
"./workbench.css": {
|
|
80
|
+
"types": "./dist/browser/workbench.css.d.ts",
|
|
81
|
+
"default": "./dist/browser/workbench.css"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"files": [
|
|
85
|
+
"dist",
|
|
86
|
+
"README.md",
|
|
87
|
+
"NOTICE",
|
|
88
|
+
"LICENSE"
|
|
89
|
+
],
|
|
90
|
+
"peerDependencies": {
|
|
91
|
+
"react": "^18.3.1 || ^19.0.0",
|
|
92
|
+
"react-dom": "^18.3.1 || ^19.0.0"
|
|
93
|
+
},
|
|
94
|
+
"sideEffects": [
|
|
95
|
+
"**/*.css"
|
|
96
|
+
],
|
|
97
|
+
"publishConfig": {
|
|
98
|
+
"access": "public",
|
|
99
|
+
"provenance": true,
|
|
100
|
+
"registry": "https://registry.npmjs.org/"
|
|
101
|
+
}
|
|
102
|
+
}
|