@rivet-dev/vercel-world 2.3.6

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 (81) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/README.md +31 -0
  3. package/dist/actors/coordinator.d.ts +114 -0
  4. package/dist/actors/coordinator.d.ts.map +1 -0
  5. package/dist/actors/coordinator.js +232 -0
  6. package/dist/actors/coordinator.js.map +1 -0
  7. package/dist/actors/db.d.ts +8 -0
  8. package/dist/actors/db.d.ts.map +1 -0
  9. package/dist/actors/db.js +282 -0
  10. package/dist/actors/db.js.map +1 -0
  11. package/dist/actors/dispatcher.d.ts +84 -0
  12. package/dist/actors/dispatcher.d.ts.map +1 -0
  13. package/dist/actors/dispatcher.js +498 -0
  14. package/dist/actors/dispatcher.js.map +1 -0
  15. package/dist/actors/hook-token.d.ts +26 -0
  16. package/dist/actors/hook-token.d.ts.map +1 -0
  17. package/dist/actors/hook-token.js +151 -0
  18. package/dist/actors/hook-token.js.map +1 -0
  19. package/dist/actors/shared.d.ts +366 -0
  20. package/dist/actors/shared.d.ts.map +1 -0
  21. package/dist/actors/shared.js +112 -0
  22. package/dist/actors/shared.js.map +1 -0
  23. package/dist/actors/streams.d.ts +26 -0
  24. package/dist/actors/streams.d.ts.map +1 -0
  25. package/dist/actors/streams.js +127 -0
  26. package/dist/actors/streams.js.map +1 -0
  27. package/dist/actors/workflow-run.d.ts +890 -0
  28. package/dist/actors/workflow-run.d.ts.map +1 -0
  29. package/dist/actors/workflow-run.js +863 -0
  30. package/dist/actors/workflow-run.js.map +1 -0
  31. package/dist/actors.d.ts +2204 -0
  32. package/dist/actors.d.ts.map +1 -0
  33. package/dist/actors.js +16 -0
  34. package/dist/actors.js.map +1 -0
  35. package/dist/codec.d.ts +4 -0
  36. package/dist/codec.d.ts.map +1 -0
  37. package/dist/codec.js +27 -0
  38. package/dist/codec.js.map +1 -0
  39. package/dist/index.d.ts +843 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +553 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/runtime.d.ts +2 -0
  44. package/dist/runtime.d.ts.map +1 -0
  45. package/dist/runtime.js +24 -0
  46. package/dist/runtime.js.map +1 -0
  47. package/package.json +51 -0
  48. package/scripts/conformance/run.ts +278 -0
  49. package/scripts/integration/run.ts +935 -0
  50. package/src/actors/coordinator.ts +360 -0
  51. package/src/actors/db.ts +291 -0
  52. package/src/actors/dispatcher.ts +787 -0
  53. package/src/actors/hook-token.ts +239 -0
  54. package/src/actors/shared.ts +153 -0
  55. package/src/actors/streams.ts +215 -0
  56. package/src/actors/workflow-run.ts +1466 -0
  57. package/src/actors.ts +18 -0
  58. package/src/codec.ts +28 -0
  59. package/src/index.ts +768 -0
  60. package/src/runtime.ts +29 -0
  61. package/tests/conformance.test.ts +8 -0
  62. package/tests/helpers/db.ts +62 -0
  63. package/tests/helpers/dispatcher-driver.ts +71 -0
  64. package/tests/helpers/harness.ts +161 -0
  65. package/tests/integration/crash-restart.test.ts +145 -0
  66. package/tests/integration/dispatcher-loop.test.ts +144 -0
  67. package/tests/integration/hook-token.test.ts +160 -0
  68. package/tests/integration/hooks.test.ts +123 -0
  69. package/tests/integration/streams.test.ts +178 -0
  70. package/tests/integration/workflow-events.test.ts +326 -0
  71. package/tests/setup.ts +10 -0
  72. package/tests/unit/codec.test.ts +73 -0
  73. package/tests/unit/coordinator-record.test.ts +177 -0
  74. package/tests/unit/db-migrations.test.ts +65 -0
  75. package/tests/unit/dispatcher-queue.test.ts +274 -0
  76. package/tests/unit/logging.test.ts +49 -0
  77. package/tests/unit/readiness.test.ts +102 -0
  78. package/tests/unit/transaction.test.ts +76 -0
  79. package/tsconfig.build.json +13 -0
  80. package/tsconfig.json +12 -0
  81. package/vitest.config.ts +32 -0
@@ -0,0 +1,151 @@
1
+ import { actor } from "rivetkit";
2
+ import { hookTokenDb } from "./db.js";
3
+ import { one } from "./shared.js";
4
+ export const PENDING_RESERVATION_TTL_MS = 60_000;
5
+ function assertTokenKey(c, token) {
6
+ if (String(c.key[0] ?? "") !== token) {
7
+ throw new Error("hookToken actor key must match token");
8
+ }
9
+ }
10
+ async function readState(c) {
11
+ const row = await one(c, `SELECT generation, run_id, hook_id, status, created_at, updated_at, expires_at
12
+ FROM hook_token_state WHERE singleton = 1`);
13
+ if (!row)
14
+ throw new Error("hookToken state is missing");
15
+ return {
16
+ generation: Number(row.generation),
17
+ runId: row.run_id == null ? undefined : String(row.run_id),
18
+ hookId: row.hook_id == null ? undefined : String(row.hook_id),
19
+ status: String(row.status),
20
+ createdAt: row.created_at == null ? undefined : Number(row.created_at),
21
+ updatedAt: Number(row.updated_at),
22
+ expiresAt: row.expires_at == null ? undefined : Number(row.expires_at),
23
+ };
24
+ }
25
+ async function verifyPendingOwner(c, token, state) {
26
+ if (state.status !== "pending" ||
27
+ state.runId == null ||
28
+ state.hookId == null) {
29
+ return state.status === "confirmed" ? state : null;
30
+ }
31
+ let ownsHook;
32
+ try {
33
+ ownsHook = await c
34
+ .client()
35
+ .workflowRun.getOrCreate([state.runId])
36
+ .ownsHook(state.hookId, token);
37
+ }
38
+ catch {
39
+ // Canonical ownership could not be checked. A pending reservation must
40
+ // never become externally visible or be stolen on an inconclusive result.
41
+ return null;
42
+ }
43
+ const now = Date.now();
44
+ if (ownsHook) {
45
+ await c.db.execute(`UPDATE hook_token_state
46
+ SET status = 'confirmed', updated_at = ?, expires_at = NULL
47
+ WHERE singleton = 1 AND generation = ? AND run_id = ? AND hook_id = ?
48
+ AND status = 'pending'`, now, state.generation, state.runId, state.hookId);
49
+ const current = await readState(c);
50
+ return current.generation === state.generation &&
51
+ current.status === "confirmed" &&
52
+ current.runId === state.runId &&
53
+ current.hookId === state.hookId
54
+ ? current
55
+ : null;
56
+ }
57
+ if ((state.expiresAt ?? Number.POSITIVE_INFINITY) > now)
58
+ return null;
59
+ await c.db.execute(`UPDATE hook_token_state
60
+ SET generation = generation + 1, run_id = NULL, hook_id = NULL,
61
+ status = 'empty', created_at = NULL, updated_at = ?, expires_at = NULL
62
+ WHERE singleton = 1 AND generation = ? AND run_id = ? AND hook_id = ?
63
+ AND status = 'pending'`, now, state.generation, state.runId, state.hookId);
64
+ return null;
65
+ }
66
+ export const hookToken = actor({
67
+ db: hookTokenDb,
68
+ actions: {
69
+ reserve: async (c, token, runId, hookId) => {
70
+ const ctx = c;
71
+ assertTokenKey(ctx, token);
72
+ let state = await readState(ctx);
73
+ if (state.status === "pending" &&
74
+ (state.runId !== runId || state.hookId !== hookId) &&
75
+ (state.expiresAt ?? Number.POSITIVE_INFINITY) <= Date.now()) {
76
+ await verifyPendingOwner(ctx, token, state);
77
+ state = await readState(ctx);
78
+ }
79
+ if (state.status !== "empty" &&
80
+ state.runId === runId &&
81
+ state.hookId === hookId) {
82
+ return { ok: true, generation: state.generation };
83
+ }
84
+ if (state.status !== "empty") {
85
+ return {
86
+ ok: false,
87
+ generation: state.generation,
88
+ runId: state.runId,
89
+ hookId: state.hookId,
90
+ };
91
+ }
92
+ const now = Date.now();
93
+ await ctx.db.execute(`UPDATE hook_token_state
94
+ SET generation = generation + 1, run_id = ?, hook_id = ?,
95
+ status = 'pending', created_at = ?, updated_at = ?, expires_at = ?
96
+ WHERE singleton = 1 AND status = 'empty'`, runId, hookId, now, now, now + PENDING_RESERVATION_TTL_MS);
97
+ const reserved = await readState(ctx);
98
+ return {
99
+ ok: reserved.status === "pending" &&
100
+ reserved.runId === runId &&
101
+ reserved.hookId === hookId,
102
+ generation: reserved.generation,
103
+ };
104
+ },
105
+ confirm: async (c, token, generation, runId, hookId) => {
106
+ const ctx = c;
107
+ assertTokenKey(ctx, token);
108
+ await ctx.db.execute(`UPDATE hook_token_state
109
+ SET status = 'confirmed', updated_at = ?, expires_at = NULL
110
+ WHERE singleton = 1 AND generation = ? AND run_id = ? AND hook_id = ?
111
+ AND status IN ('pending', 'confirmed')`, Date.now(), generation, runId, hookId);
112
+ const state = await readState(ctx);
113
+ return {
114
+ ok: state.generation === generation &&
115
+ state.status === "confirmed" &&
116
+ state.runId === runId &&
117
+ state.hookId === hookId,
118
+ };
119
+ },
120
+ get: async (c, token) => {
121
+ const ctx = c;
122
+ assertTokenKey(ctx, token);
123
+ let state = await readState(ctx);
124
+ if (state.status === "pending") {
125
+ await verifyPendingOwner(ctx, token, state);
126
+ state = await readState(ctx);
127
+ }
128
+ if (state.status !== "confirmed")
129
+ return null;
130
+ return {
131
+ runId: state.runId,
132
+ hookId: state.hookId,
133
+ generation: state.generation,
134
+ };
135
+ },
136
+ release: async (c, token, generation, runId, hookId) => {
137
+ const ctx = c;
138
+ assertTokenKey(ctx, token);
139
+ await ctx.db.execute(`UPDATE hook_token_state
140
+ SET generation = generation + 1, run_id = NULL, hook_id = NULL,
141
+ status = 'empty', created_at = NULL, updated_at = ?, expires_at = NULL
142
+ WHERE singleton = 1 AND generation = ? AND run_id = ?
143
+ AND (? IS NULL OR hook_id = ?) AND status IN ('pending', 'confirmed')`, Date.now(), generation, runId, hookId ?? null, hookId ?? null);
144
+ const state = await readState(ctx);
145
+ return {
146
+ ok: state.status === "empty" && state.generation >= generation + 1,
147
+ };
148
+ },
149
+ },
150
+ });
151
+ //# sourceMappingURL=hook-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-token.js","sourceRoot":"","sources":["../../src/actors/hook-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,366 @@
1
+ import { type Wait } from "@workflow/world";
2
+ export type Db = {
3
+ execute(sql: string, ...args: unknown[]): Promise<Record<string, unknown>[]>;
4
+ transaction<T>(callback: (tx: Db) => Promise<T> | T): Promise<T>;
5
+ };
6
+ export type Ctx = {
7
+ db: Db;
8
+ };
9
+ export declare function withActorTransaction<T>(c: Ctx, fn: (tx: Ctx) => Promise<T>): Promise<T>;
10
+ export declare function toDate(value: unknown): Date | undefined;
11
+ export declare function toMs(value: unknown): number | null;
12
+ export declare function rowToRun(row: Record<string, unknown>): {
13
+ runId: string;
14
+ deploymentId: string;
15
+ workflowName: string;
16
+ attributes: Record<string, string>;
17
+ createdAt: Date;
18
+ updatedAt: Date;
19
+ status: "pending" | "running";
20
+ specVersion?: number | undefined;
21
+ executionContext?: Record<string, any> | undefined;
22
+ input?: unknown;
23
+ errorCode?: string | undefined;
24
+ expiredAt?: Date | undefined;
25
+ startedAt?: Date | undefined;
26
+ output?: undefined;
27
+ error?: undefined;
28
+ completedAt?: undefined;
29
+ } | {
30
+ runId: string;
31
+ deploymentId: string;
32
+ workflowName: string;
33
+ attributes: Record<string, string>;
34
+ createdAt: Date;
35
+ updatedAt: Date;
36
+ status: "cancelled";
37
+ completedAt: Date;
38
+ specVersion?: number | undefined;
39
+ executionContext?: Record<string, any> | undefined;
40
+ input?: unknown;
41
+ errorCode?: string | undefined;
42
+ expiredAt?: Date | undefined;
43
+ startedAt?: Date | undefined;
44
+ output?: undefined;
45
+ error?: undefined;
46
+ } | {
47
+ runId: string;
48
+ deploymentId: string;
49
+ workflowName: string;
50
+ attributes: Record<string, string>;
51
+ createdAt: Date;
52
+ updatedAt: Date;
53
+ status: "completed";
54
+ output: unknown;
55
+ completedAt: Date;
56
+ specVersion?: number | undefined;
57
+ executionContext?: Record<string, any> | undefined;
58
+ input?: unknown;
59
+ errorCode?: string | undefined;
60
+ expiredAt?: Date | undefined;
61
+ startedAt?: Date | undefined;
62
+ error?: undefined;
63
+ } | {
64
+ runId: string;
65
+ deploymentId: string;
66
+ workflowName: string;
67
+ attributes: Record<string, string>;
68
+ createdAt: Date;
69
+ updatedAt: Date;
70
+ status: "failed";
71
+ error: unknown;
72
+ completedAt: Date;
73
+ specVersion?: number | undefined;
74
+ executionContext?: Record<string, any> | undefined;
75
+ input?: unknown;
76
+ errorCode?: string | undefined;
77
+ expiredAt?: Date | undefined;
78
+ startedAt?: Date | undefined;
79
+ output?: undefined;
80
+ };
81
+ export declare function rowToEvent(row: Record<string, unknown>): ({
82
+ eventType: "run_created";
83
+ eventData: {
84
+ deploymentId: string;
85
+ workflowName: string;
86
+ input: unknown;
87
+ executionContext?: Record<string, any> | undefined;
88
+ attributes?: Record<string, string> | undefined;
89
+ allowReservedAttributes?: true | undefined;
90
+ };
91
+ correlationId?: string | undefined;
92
+ specVersion?: number | undefined;
93
+ } | {
94
+ eventType: "run_started";
95
+ correlationId?: string | undefined;
96
+ specVersion?: number | undefined;
97
+ eventData?: {
98
+ input?: unknown;
99
+ deploymentId?: string | undefined;
100
+ workflowName?: string | undefined;
101
+ executionContext?: Record<string, any> | undefined;
102
+ attributes?: Record<string, string> | undefined;
103
+ allowReservedAttributes?: true | undefined;
104
+ } | undefined;
105
+ } | {
106
+ eventType: "run_completed";
107
+ eventData: {
108
+ output?: unknown;
109
+ };
110
+ correlationId?: string | undefined;
111
+ specVersion?: number | undefined;
112
+ } | {
113
+ eventType: "run_failed";
114
+ eventData: {
115
+ error: unknown;
116
+ errorCode?: string | undefined;
117
+ };
118
+ correlationId?: string | undefined;
119
+ specVersion?: number | undefined;
120
+ } | {
121
+ eventType: "run_cancelled";
122
+ correlationId?: string | undefined;
123
+ specVersion?: number | undefined;
124
+ eventData?: {
125
+ cancelReason?: string | undefined;
126
+ } | undefined;
127
+ } | {
128
+ eventType: "attr_set";
129
+ eventData: {
130
+ changes: {
131
+ key: string;
132
+ value: string | null;
133
+ }[];
134
+ writer: {
135
+ type: "workflow";
136
+ } | {
137
+ type: "step";
138
+ stepId: string;
139
+ attempt: number;
140
+ };
141
+ allowReservedAttributes?: true | undefined;
142
+ };
143
+ specVersion?: number | undefined;
144
+ correlationId?: string | undefined;
145
+ } | {
146
+ eventType: "step_created";
147
+ correlationId: string;
148
+ eventData: {
149
+ stepName: string;
150
+ input: unknown;
151
+ workflowName?: string | undefined;
152
+ };
153
+ specVersion?: number | undefined;
154
+ } | {
155
+ eventType: "step_completed";
156
+ correlationId: string;
157
+ eventData: {
158
+ result: unknown;
159
+ ttfs?: number | undefined;
160
+ stso?: number | undefined;
161
+ stepCount?: number | undefined;
162
+ eventCount?: number | undefined;
163
+ rsfs?: number | undefined;
164
+ finalSchedulingReplay?: number | undefined;
165
+ optimizations?: string[] | undefined;
166
+ stepName?: string | undefined;
167
+ workflowName?: string | undefined;
168
+ };
169
+ specVersion?: number | undefined;
170
+ } | {
171
+ eventType: "step_failed";
172
+ correlationId: string;
173
+ eventData: {
174
+ error: unknown;
175
+ ttfs?: number | undefined;
176
+ stso?: number | undefined;
177
+ stepCount?: number | undefined;
178
+ eventCount?: number | undefined;
179
+ rsfs?: number | undefined;
180
+ finalSchedulingReplay?: number | undefined;
181
+ optimizations?: string[] | undefined;
182
+ stepName?: string | undefined;
183
+ };
184
+ specVersion?: number | undefined;
185
+ } | {
186
+ eventType: "step_retrying";
187
+ correlationId: string;
188
+ eventData: {
189
+ error: unknown;
190
+ stepName?: string | undefined;
191
+ retryAfter?: Date | undefined;
192
+ };
193
+ specVersion?: number | undefined;
194
+ } | {
195
+ eventType: "step_started";
196
+ correlationId: string;
197
+ specVersion?: number | undefined;
198
+ eventData?: {
199
+ stepName?: string | undefined;
200
+ attempt?: number | undefined;
201
+ workflowName?: string | undefined;
202
+ input?: unknown;
203
+ ownerMessageId?: string | undefined;
204
+ } | undefined;
205
+ } | {
206
+ eventType: "hook_created";
207
+ correlationId: string;
208
+ eventData: {
209
+ token: string;
210
+ metadata?: unknown;
211
+ isWebhook?: boolean | undefined;
212
+ isSystem?: boolean | undefined;
213
+ };
214
+ specVersion?: number | undefined;
215
+ } | {
216
+ eventType: "hook_received";
217
+ correlationId: string;
218
+ eventData: {
219
+ payload: unknown;
220
+ token?: string | undefined;
221
+ };
222
+ specVersion?: number | undefined;
223
+ } | {
224
+ eventType: "hook_disposed";
225
+ correlationId: string;
226
+ specVersion?: number | undefined;
227
+ eventData?: {
228
+ token?: string | undefined;
229
+ } | undefined;
230
+ } | {
231
+ eventType: "hook_conflict";
232
+ correlationId: string;
233
+ eventData: {
234
+ token: string;
235
+ conflictingRunId?: string | undefined;
236
+ };
237
+ specVersion?: number | undefined;
238
+ } | {
239
+ eventType: "wait_created";
240
+ correlationId: string;
241
+ eventData: {
242
+ resumeAt: Date;
243
+ };
244
+ specVersion?: number | undefined;
245
+ } | {
246
+ eventType: "wait_completed";
247
+ correlationId: string;
248
+ specVersion?: number | undefined;
249
+ eventData?: {
250
+ resumeAt?: Date | undefined;
251
+ } | undefined;
252
+ }) & {
253
+ runId: string;
254
+ eventId: string;
255
+ createdAt: Date;
256
+ occurredAt?: Date | undefined;
257
+ specVersion?: number | undefined;
258
+ };
259
+ export declare function rowToStep(row: Record<string, unknown>): {
260
+ runId: string;
261
+ stepId: string;
262
+ stepName: string;
263
+ status: "pending" | "running" | "cancelled" | "completed" | "failed";
264
+ attempt: number;
265
+ createdAt: Date;
266
+ updatedAt: Date;
267
+ input?: unknown;
268
+ output?: unknown;
269
+ error?: unknown;
270
+ startedAt?: Date | undefined;
271
+ completedAt?: Date | undefined;
272
+ retryAfter?: Date | undefined;
273
+ specVersion?: number | undefined;
274
+ };
275
+ export declare function rowToHook(row: Record<string, unknown>): {
276
+ runId: string;
277
+ hookId: string;
278
+ token: string;
279
+ ownerId: string;
280
+ projectId: string;
281
+ environment: string;
282
+ createdAt: Date;
283
+ metadata?: unknown;
284
+ specVersion?: number | undefined;
285
+ isWebhook?: boolean | undefined;
286
+ isSystem?: boolean | undefined;
287
+ };
288
+ export declare function rowToWait(row: Record<string, unknown>): Wait;
289
+ export declare function filterData<T extends {
290
+ input?: unknown;
291
+ output?: unknown;
292
+ }>(value: T, resolveData?: string): T;
293
+ export declare function filterHookData<T extends {
294
+ metadata?: unknown;
295
+ }>(value: T, resolveData?: string): T;
296
+ export declare function one(c: Ctx, sql: string, ...args: unknown[]): Promise<Record<string, unknown>>;
297
+ export declare function requireRun(c: Ctx, runId: string): Promise<{
298
+ runId: string;
299
+ deploymentId: string;
300
+ workflowName: string;
301
+ attributes: Record<string, string>;
302
+ createdAt: Date;
303
+ updatedAt: Date;
304
+ status: "pending" | "running";
305
+ specVersion?: number | undefined;
306
+ executionContext?: Record<string, any> | undefined;
307
+ input?: unknown;
308
+ errorCode?: string | undefined;
309
+ expiredAt?: Date | undefined;
310
+ startedAt?: Date | undefined;
311
+ output?: undefined;
312
+ error?: undefined;
313
+ completedAt?: undefined;
314
+ } | {
315
+ runId: string;
316
+ deploymentId: string;
317
+ workflowName: string;
318
+ attributes: Record<string, string>;
319
+ createdAt: Date;
320
+ updatedAt: Date;
321
+ status: "cancelled";
322
+ completedAt: Date;
323
+ specVersion?: number | undefined;
324
+ executionContext?: Record<string, any> | undefined;
325
+ input?: unknown;
326
+ errorCode?: string | undefined;
327
+ expiredAt?: Date | undefined;
328
+ startedAt?: Date | undefined;
329
+ output?: undefined;
330
+ error?: undefined;
331
+ } | {
332
+ runId: string;
333
+ deploymentId: string;
334
+ workflowName: string;
335
+ attributes: Record<string, string>;
336
+ createdAt: Date;
337
+ updatedAt: Date;
338
+ status: "completed";
339
+ output: unknown;
340
+ completedAt: Date;
341
+ specVersion?: number | undefined;
342
+ executionContext?: Record<string, any> | undefined;
343
+ input?: unknown;
344
+ errorCode?: string | undefined;
345
+ expiredAt?: Date | undefined;
346
+ startedAt?: Date | undefined;
347
+ error?: undefined;
348
+ } | {
349
+ runId: string;
350
+ deploymentId: string;
351
+ workflowName: string;
352
+ attributes: Record<string, string>;
353
+ createdAt: Date;
354
+ updatedAt: Date;
355
+ status: "failed";
356
+ error: unknown;
357
+ completedAt: Date;
358
+ specVersion?: number | undefined;
359
+ executionContext?: Record<string, any> | undefined;
360
+ input?: unknown;
361
+ errorCode?: string | undefined;
362
+ expiredAt?: Date | undefined;
363
+ startedAt?: Date | undefined;
364
+ output?: undefined;
365
+ }>;
366
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/actors/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAMN,KAAK,IAAI,EACT,MAAM,iBAAiB,CAAC;AAGzB,MAAM,MAAM,EAAE,GAAG;IAChB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7E,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAAE,EAAE,EAAE,EAAE,CAAA;CAAE,CAAC;AAE7B,wBAAsB,oBAAoB,CAAC,CAAC,EAC3C,CAAC,EAAE,GAAG,EACN,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAEvD;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAIlD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAatD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;EAoBrD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;EAkBrD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAW5D;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EACzE,KAAK,EAAE,CAAC,EACR,WAAW,CAAC,EAAE,MAAM,KAIpB;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAC9D,KAAK,EAAE,CAAC,EACR,WAAW,CAAC,EAAE,MAAM,KAIpB;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,oCAEhE;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIrD"}
@@ -0,0 +1,112 @@
1
+ import { WorkflowRunNotFoundError } from "@workflow/errors";
2
+ import { EventSchema, HookSchema, StepSchema, WorkflowRunSchema, } from "@workflow/world";
3
+ import { compact, decodeValue } from "../codec.js";
4
+ export async function withActorTransaction(c, fn) {
5
+ return c.db.transaction((db) => fn({ db }));
6
+ }
7
+ export function toDate(value) {
8
+ return value == null ? undefined : new Date(Number(value));
9
+ }
10
+ export function toMs(value) {
11
+ if (value == null)
12
+ return null;
13
+ if (value instanceof Date)
14
+ return value.getTime();
15
+ return new Date(value).getTime();
16
+ }
17
+ export function rowToRun(row) {
18
+ return WorkflowRunSchema.parse(compact({
19
+ runId: row.run_id,
20
+ status: row.status,
21
+ deploymentId: row.deployment_id,
22
+ workflowName: row.workflow_name,
23
+ specVersion: row.spec_version == null ? undefined : Number(row.spec_version),
24
+ executionContext: decodeValue(row.execution_context),
25
+ attributes: decodeValue(row.attributes) ?? {},
26
+ input: decodeValue(row.input),
27
+ output: decodeValue(row.output),
28
+ error: decodeValue(row.error),
29
+ expiredAt: toDate(row.expired_at),
30
+ startedAt: toDate(row.started_at),
31
+ completedAt: toDate(row.completed_at),
32
+ createdAt: toDate(row.created_at),
33
+ updatedAt: toDate(row.updated_at),
34
+ }));
35
+ }
36
+ export function rowToEvent(row) {
37
+ return EventSchema.parse(compact({
38
+ runId: row.run_id,
39
+ eventId: row.event_id,
40
+ eventType: row.event_type,
41
+ correlationId: row.correlation_id,
42
+ eventData: decodeValue(row.event_data),
43
+ specVersion: row.spec_version == null ? undefined : Number(row.spec_version),
44
+ createdAt: toDate(row.created_at),
45
+ }));
46
+ }
47
+ export function rowToStep(row) {
48
+ return StepSchema.parse(compact({
49
+ runId: row.run_id,
50
+ stepId: row.step_id,
51
+ stepName: row.step_name,
52
+ status: row.status,
53
+ input: decodeValue(row.input),
54
+ output: decodeValue(row.output),
55
+ error: decodeValue(row.error),
56
+ attempt: Number(row.attempt),
57
+ startedAt: toDate(row.started_at),
58
+ completedAt: toDate(row.completed_at),
59
+ createdAt: toDate(row.created_at),
60
+ updatedAt: toDate(row.updated_at),
61
+ retryAfter: toDate(row.retry_after),
62
+ specVersion: row.spec_version == null ? undefined : Number(row.spec_version),
63
+ }));
64
+ }
65
+ export function rowToHook(row) {
66
+ const parsed = HookSchema.parse(compact({
67
+ runId: row.run_id,
68
+ hookId: row.hook_id,
69
+ token: row.token,
70
+ ownerId: row.owner_id,
71
+ projectId: row.project_id,
72
+ environment: row.environment,
73
+ metadata: decodeValue(row.metadata),
74
+ createdAt: toDate(row.created_at),
75
+ specVersion: row.spec_version == null ? undefined : Number(row.spec_version),
76
+ isWebhook: row.is_webhook == null ? undefined : Boolean(row.is_webhook),
77
+ }));
78
+ parsed.isWebhook ??= true;
79
+ return parsed;
80
+ }
81
+ export function rowToWait(row) {
82
+ return compact({
83
+ waitId: row.wait_id,
84
+ runId: row.run_id,
85
+ status: row.status,
86
+ resumeAt: toDate(row.resume_at),
87
+ completedAt: toDate(row.completed_at),
88
+ createdAt: toDate(row.created_at),
89
+ updatedAt: toDate(row.updated_at),
90
+ specVersion: row.spec_version == null ? undefined : Number(row.spec_version),
91
+ });
92
+ }
93
+ export function filterData(value, resolveData) {
94
+ if (resolveData !== "none")
95
+ return value;
96
+ return { ...value, input: undefined, output: undefined };
97
+ }
98
+ export function filterHookData(value, resolveData) {
99
+ if (resolveData !== "none")
100
+ return value;
101
+ return { ...value, metadata: undefined };
102
+ }
103
+ export async function one(c, sql, ...args) {
104
+ return (await c.db.execute(sql, ...args))[0];
105
+ }
106
+ export async function requireRun(c, runId) {
107
+ const row = await one(c, "SELECT * FROM workflow_runs WHERE run_id = ?", runId);
108
+ if (!row)
109
+ throw new WorkflowRunNotFoundError(runId);
110
+ return rowToRun(row);
111
+ }
112
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/actors/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { StreamChunksResponse, StreamInfoResponse } from "@workflow/world";
2
+ import { type Type } from "rivetkit";
3
+ import { type Ctx } from "./shared.js";
4
+ export declare const STREAM_TTL_MS: number;
5
+ export declare const streamAppended: Type<{
6
+ streamId: string;
7
+ runId: string;
8
+ chunkId: string;
9
+ eof: boolean;
10
+ }>;
11
+ type StreamContext = Ctx & {
12
+ key: readonly string[];
13
+ broadcast(name: "streamAppended", value: unknown): void;
14
+ };
15
+ export declare function writeStream(c: StreamContext, streamId: string, runId: string, chunkBase64: string, eof: boolean): Promise<{
16
+ chunkId: string;
17
+ }>;
18
+ export declare function getStreamChunks(c: StreamContext, streamId: string, runId: string, startIndex?: number, limit?: number): Promise<StreamChunksResponse>;
19
+ export declare function getStreamInfo(c: StreamContext, streamId: string, runId: string): Promise<StreamInfoResponse>;
20
+ export declare function listStreams(c: StreamContext, runId: string): Promise<string[]>;
21
+ export declare function cleanupExpiredStreams(c: Ctx): Promise<void>;
22
+ export declare function expireClosedStreamForTesting(c: StreamContext, streamId: string, runId: string): Promise<{
23
+ deletedChunks: number;
24
+ }>;
25
+ export {};
26
+ //# sourceMappingURL=streams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/actors/streams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAwB,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAO7D,eAAO,MAAM,aAAa,QAIzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACb,CAAW,CAAC;AAEb,KAAK,aAAa,GAAG,GAAG,GAAG;IAC1B,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACxD,CAAC;AA4CF,wBAAsB,WAAW,CAChC,CAAC,EAAE,aAAa,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,OAAO;;GAsCZ;AAED,wBAAsB,eAAe,CACpC,CAAC,EAAE,aAAa,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,UAAU,SAAI,EACd,KAAK,SAAM,GACT,OAAO,CAAC,oBAAoB,CAAC,CAiC/B;AAED,wBAAsB,aAAa,CAClC,CAAC,EAAE,aAAa,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,CAAC,CAY7B;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,qBAOhE;AAED,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,GAAG,iBAcjD;AAED,wBAAsB,4BAA4B,CACjD,CAAC,EAAE,aAAa,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM;;GAYb"}