@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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,553 @@
1
+ import { MessageId, QueuePayloadSchema, ValidQueueName as ValidQueueNameSchema, SPEC_VERSION_CURRENT, getQueueTopicPrefix, resolveQueueNamespace, } from "@workflow/world";
2
+ import { HookNotFoundError, WorkflowWorldError } from "@workflow/errors";
3
+ import { setup } from "rivetkit";
4
+ import { createClient } from "rivetkit/client";
5
+ import { monotonicFactory } from "ulid";
6
+ import { registry, vercelWorldActors } from "./actors.js";
7
+ function env(name) {
8
+ return process.env[name];
9
+ }
10
+ function required(value, name) {
11
+ if (!value) {
12
+ throw new Error(`${name} is required for @rivet-dev/vercel-world. Set it in the app process environment.`);
13
+ }
14
+ return value;
15
+ }
16
+ function jsonReplacer(_key, value) {
17
+ if (value instanceof Uint8Array) {
18
+ return {
19
+ __type: "Uint8Array",
20
+ data: Buffer.from(value).toString("base64"),
21
+ };
22
+ }
23
+ return value;
24
+ }
25
+ function jsonReviver(_key, value) {
26
+ if (value !== null &&
27
+ typeof value === "object" &&
28
+ "__type" in value &&
29
+ value.__type === "Uint8Array" &&
30
+ "data" in value &&
31
+ typeof value.data === "string") {
32
+ return new Uint8Array(Buffer.from(value.data, "base64"));
33
+ }
34
+ return value;
35
+ }
36
+ function serializeQueuePayload(value) {
37
+ return JSON.stringify(value, jsonReplacer);
38
+ }
39
+ function streamChunkToBase64(chunk) {
40
+ const bytes = typeof chunk === "string" ? Buffer.from(chunk) : Buffer.from(chunk);
41
+ return bytes.toString("base64");
42
+ }
43
+ function encodeStreamCursor(index) {
44
+ return Buffer.from(JSON.stringify({ i: Math.max(0, index) })).toString("base64");
45
+ }
46
+ function decodeStreamCursor(cursor) {
47
+ if (!cursor)
48
+ return 0;
49
+ try {
50
+ const decoded = JSON.parse(Buffer.from(cursor, "base64").toString("utf8"));
51
+ return typeof decoded.i === "number" ? Math.max(0, decoded.i) : 0;
52
+ }
53
+ catch {
54
+ return 0;
55
+ }
56
+ }
57
+ async function parseQueueRequestBody(req) {
58
+ return JSON.parse(await req.text(), jsonReviver);
59
+ }
60
+ function partitionForQueuePayload(message) {
61
+ const data = QueuePayloadSchema.parse(message);
62
+ const runId = "runId" in data ? data.runId : "workflowRunId" in data ? data.workflowRunId : undefined;
63
+ if (typeof runId !== "string" || runId.length === 0) {
64
+ throw new Error("Vercel World queue payload requires a non-empty runId");
65
+ }
66
+ return runId;
67
+ }
68
+ function resolveRuntimeUrl(configured) {
69
+ const value = configured ??
70
+ env("WORKFLOW_RUNTIME_URL") ??
71
+ env("WORKFLOW_LOCAL_BASE_URL") ??
72
+ (env("PORT") ? `http://localhost:${env("PORT")}` : undefined);
73
+ return required(value, "WORKFLOW_RUNTIME_URL");
74
+ }
75
+ function queueHeaders(opts) {
76
+ const headers = { ...(opts?.headers ?? {}) };
77
+ const secret = env("RIVET_WORKFLOW_SECRET");
78
+ if (secret && !("authorization" in headers) && !("Authorization" in headers)) {
79
+ headers.authorization = `Bearer ${secret}`;
80
+ }
81
+ return headers;
82
+ }
83
+ function verifyWorkflowBearer(req) {
84
+ const secret = env("RIVET_WORKFLOW_SECRET");
85
+ if (!secret)
86
+ return null;
87
+ const expected = `Bearer ${secret}`;
88
+ if (req.headers.get("authorization") === expected)
89
+ return null;
90
+ return Response.json({ error: "Unauthorized" }, { status: 401 });
91
+ }
92
+ function runActor(client, runId) {
93
+ return client.workflowRun.getOrCreate([runId]);
94
+ }
95
+ function withReadyHandle(handle, applicationRegistry) {
96
+ return new Proxy(handle, {
97
+ get(target, prop, receiver) {
98
+ if (prop === "then")
99
+ return undefined;
100
+ const value = Reflect.get(target, prop, receiver);
101
+ if (typeof value !== "function")
102
+ return value;
103
+ // ActorHandle.connect() is intentionally synchronous. Stream setup waits
104
+ // for registry readiness before calling it, so preserve that contract.
105
+ if (prop === "connect")
106
+ return value.bind(target);
107
+ return async (...args) => {
108
+ // Every outgoing World operation intentionally waits here. Registry
109
+ // readiness is shared, so repeated/concurrent calls are cheap and cannot
110
+ // start duplicate runtimes or let a cold request race registry startup.
111
+ await applicationRegistry.startAndWait();
112
+ return Reflect.apply(value, target, args);
113
+ };
114
+ },
115
+ });
116
+ }
117
+ function withRegistryReadiness(client, applicationRegistry) {
118
+ if (!applicationRegistry)
119
+ return client;
120
+ const actorNames = new Set(["workflowRun", "coordinator", "hookToken"]);
121
+ return new Proxy(client, {
122
+ get(target, prop, receiver) {
123
+ if (typeof prop !== "string" || !actorNames.has(prop)) {
124
+ const value = Reflect.get(target, prop, receiver);
125
+ return typeof value === "function" ? value.bind(target) : value;
126
+ }
127
+ const accessor = Reflect.get(target, prop, receiver);
128
+ return {
129
+ get: (...args) => withReadyHandle(accessor.get(...args), applicationRegistry),
130
+ getOrCreate: (...args) => withReadyHandle(accessor.getOrCreate(...args), applicationRegistry),
131
+ getForId: (...args) => withReadyHandle(accessor.getForId(...args), applicationRegistry),
132
+ create: async (...args) => {
133
+ await applicationRegistry.startAndWait();
134
+ return withReadyHandle(await accessor.create(...args), applicationRegistry);
135
+ },
136
+ };
137
+ },
138
+ });
139
+ }
140
+ const ulid = monotonicFactory();
141
+ export class RivetClientWorld {
142
+ specVersion = SPEC_VERSION_CURRENT;
143
+ #client;
144
+ #registry;
145
+ #ownsRegistry;
146
+ #runtimeUrl;
147
+ #injectedClient;
148
+ #startPromise;
149
+ constructor(config = {}) {
150
+ this.#runtimeUrl = config.runtimeUrl;
151
+ this.#injectedClient = config.client != null;
152
+ this.#ownsRegistry = config.registry == null && config.client == null;
153
+ this.#registry =
154
+ config.registry ??
155
+ (config.client
156
+ ? undefined
157
+ : setup({ use: vercelWorldActors }));
158
+ const registryConfig = this.#registry?.parseConfig();
159
+ this.#client = withRegistryReadiness(config.client ??
160
+ createClient(registryConfig
161
+ ? {
162
+ endpoint: registryConfig.endpoint,
163
+ headers: registryConfig.headers,
164
+ namespace: registryConfig.namespace,
165
+ poolName: registryConfig.envoy.poolName,
166
+ token: registryConfig.token,
167
+ }
168
+ : undefined), this.#registry);
169
+ }
170
+ async start() {
171
+ this.#startPromise ??= this.#startOnce().catch((error) => {
172
+ this.#startPromise = undefined;
173
+ throw error;
174
+ });
175
+ await this.#startPromise;
176
+ }
177
+ async #startOnce() {
178
+ // Per-run alarms and the transactionally persisted initial dispatch recover
179
+ // their own work. World startup intentionally performs no global scan.
180
+ }
181
+ #workflowQueueName(workflowName) {
182
+ return ValidQueueNameSchema.parse(`${getQueueTopicPrefix("workflow", resolveQueueNamespace())}${workflowName}`);
183
+ }
184
+ runs = {
185
+ get: async (id, params) => runActor(this.#client, id).getRun(id, params),
186
+ list: async (params) => this.#client.coordinator.getOrCreate(["coordinator"]).listRuns(params),
187
+ };
188
+ steps = {
189
+ get: async (runId, stepId, params) => {
190
+ const effectiveRunId = runId ??
191
+ (await this.#client.coordinator
192
+ .getOrCreate(["coordinator"])
193
+ .getRunIdByCorrelation(stepId));
194
+ if (!effectiveRunId) {
195
+ throw new WorkflowWorldError(`Step not found: ${stepId}`);
196
+ }
197
+ return runActor(this.#client, effectiveRunId).getStep(effectiveRunId, stepId, params);
198
+ },
199
+ list: async (params) => runActor(this.#client, params.runId).listSteps(params),
200
+ };
201
+ events = {
202
+ create: async (runId, data, params) => {
203
+ let effectiveRunId = data.eventType === "run_created" && !runId ? `wrun_${ulid()}` : runId;
204
+ if (data.eventType !== "run_created" && !effectiveRunId) {
205
+ throw new Error("runId is required for non-run_created events");
206
+ }
207
+ let dataToStore = data;
208
+ // Token reserved by THIS call that must be released if the append below
209
+ // never lands (P0 #3): otherwise a thrown/crashed append leaves the
210
+ // token claimed with no backing `hook_created` event, leaking it past
211
+ // the 60s reconciliation grace.
212
+ let reservationToConfirm;
213
+ if (data.eventType === "hook_created") {
214
+ if (!effectiveRunId) {
215
+ throw new Error("runId is required for hook_created events");
216
+ }
217
+ const reservation = await this.#client.hookToken
218
+ .getOrCreate([data.eventData.token])
219
+ .reserve(data.eventData.token, effectiveRunId, data.correlationId);
220
+ if (reservation.ok) {
221
+ reservationToConfirm = {
222
+ token: data.eventData.token,
223
+ hookId: data.correlationId,
224
+ generation: reservation.generation,
225
+ };
226
+ }
227
+ else {
228
+ dataToStore = {
229
+ eventType: "hook_conflict",
230
+ specVersion: data.specVersion,
231
+ correlationId: data.correlationId,
232
+ eventData: {
233
+ token: data.eventData.token,
234
+ ...(reservation.runId
235
+ ? { conflictingRunId: reservation.runId }
236
+ : {}),
237
+ },
238
+ };
239
+ }
240
+ }
241
+ if (!effectiveRunId) {
242
+ throw new Error("runId is required");
243
+ }
244
+ const actorRunId = effectiveRunId;
245
+ let initialDispatch;
246
+ if (dataToStore.eventType === "run_created") {
247
+ const queueName = this.#workflowQueueName(dataToStore.eventData.workflowName);
248
+ const executionContext = dataToStore.eventData.executionContext;
249
+ const traceCarrier = executionContext?.traceCarrier;
250
+ const payload = {
251
+ runId: actorRunId,
252
+ ...(traceCarrier == null ? {} : { traceCarrier }),
253
+ runInput: {
254
+ input: dataToStore.eventData.input,
255
+ deploymentId: dataToStore.eventData.deploymentId,
256
+ workflowName: dataToStore.eventData.workflowName,
257
+ specVersion: dataToStore.specVersion ?? SPEC_VERSION_CURRENT,
258
+ ...(executionContext == null ? {} : { executionContext }),
259
+ ...(dataToStore.eventData.attributes == null
260
+ ? {}
261
+ : { attributes: dataToStore.eventData.attributes }),
262
+ ...(dataToStore.eventData.allowReservedAttributes == null
263
+ ? {}
264
+ : { allowReservedAttributes: true }),
265
+ },
266
+ };
267
+ initialDispatch = {
268
+ runtimeUrl: resolveRuntimeUrl(this.#runtimeUrl),
269
+ queueName,
270
+ headers: queueHeaders(),
271
+ initial: {
272
+ messageId: MessageId.parse(`msg_${ulid()}`),
273
+ body: serializeQueuePayload(QueuePayloadSchema.parse(payload)),
274
+ idempotencyKey: `workflow-start:${actorRunId}`,
275
+ },
276
+ };
277
+ }
278
+ let result;
279
+ try {
280
+ result = await runActor(this.#client, actorRunId).appendEvent(actorRunId, dataToStore, params, initialDispatch, {
281
+ ...(reservationToConfirm == null
282
+ ? {}
283
+ : { confirm: reservationToConfirm }),
284
+ });
285
+ }
286
+ catch (error) {
287
+ if (reservationToConfirm) {
288
+ // An action error is ambiguous: postcommit work can fail after the
289
+ // canonical hook landed. Verify canonical ownership before deciding
290
+ // whether to confirm or release this generation.
291
+ try {
292
+ const owns = await runActor(this.#client, actorRunId).ownsHook(reservationToConfirm.hookId, reservationToConfirm.token);
293
+ const tokenActor = this.#client.hookToken.getOrCreate([
294
+ reservationToConfirm.token,
295
+ ]);
296
+ if (owns) {
297
+ await tokenActor.confirm(reservationToConfirm.token, reservationToConfirm.generation, actorRunId, reservationToConfirm.hookId);
298
+ }
299
+ else {
300
+ await tokenActor.release(reservationToConfirm.token, reservationToConfirm.generation, actorRunId, reservationToConfirm.hookId);
301
+ }
302
+ }
303
+ catch { }
304
+ }
305
+ throw error;
306
+ }
307
+ effectiveRunId = result.run?.runId ?? result.event?.runId ?? effectiveRunId;
308
+ return result;
309
+ },
310
+ get: async (runId, eventId, params) => runActor(this.#client, runId).getEvent(runId, eventId, params),
311
+ list: async (params) => runActor(this.#client, params.runId).listEvents(params),
312
+ listByCorrelationId: async (params) => {
313
+ const runId = await this.#client.coordinator
314
+ .getOrCreate(["coordinator"])
315
+ .getRunIdByCorrelation(params.correlationId);
316
+ if (!runId)
317
+ return { data: [], cursor: null, hasMore: false };
318
+ return runActor(this.#client, runId).listEventsByCorrelationId(params);
319
+ },
320
+ };
321
+ hooks = {
322
+ get: async (hookId, params) => {
323
+ const runId = await this.#client.coordinator
324
+ .getOrCreate(["coordinator"])
325
+ .getRunIdByHook(hookId);
326
+ if (!runId)
327
+ throw new HookNotFoundError(hookId);
328
+ return runActor(this.#client, runId).getHook(hookId, params);
329
+ },
330
+ getByToken: async (token, params) => {
331
+ const owner = await this.#client.hookToken.getOrCreate([token]).get(token);
332
+ if (!owner)
333
+ throw new HookNotFoundError(token);
334
+ return runActor(this.#client, owner.runId).getHook(owner.hookId, params);
335
+ },
336
+ list: async (params) => {
337
+ if (!params.runId) {
338
+ const page = await this.#client.coordinator
339
+ .getOrCreate(["coordinator"])
340
+ .listHookIndex(params);
341
+ const data = [];
342
+ for (const item of page.data) {
343
+ try {
344
+ data.push(await runActor(this.#client, item.runId).getHook(item.hookId, params));
345
+ }
346
+ catch (error) {
347
+ if (!(error instanceof HookNotFoundError))
348
+ throw error;
349
+ }
350
+ }
351
+ return { data, cursor: page.cursor, hasMore: page.hasMore };
352
+ }
353
+ return runActor(this.#client, params.runId).listHooks(params);
354
+ },
355
+ };
356
+ async getDeploymentId() {
357
+ // Rivet currently dispatches to WORKFLOW_RUNTIME_URL, so it cannot route an
358
+ // unfinished run to immutable historical code. True deployment pinning
359
+ // requires a retained deployment URL or versioned workflow bundle loader.
360
+ return "rivet";
361
+ }
362
+ async queue(queueName, message, opts) {
363
+ const messageId = MessageId.parse(`msg_${ulid()}`);
364
+ const runId = partitionForQueuePayload(message);
365
+ const result = await this.#client.workflowRun
366
+ .getOrCreate([runId])
367
+ .enqueue(runId, messageId, queueName, resolveRuntimeUrl(this.#runtimeUrl), serializeQueuePayload(message), queueHeaders(opts), opts?.delaySeconds, opts?.idempotencyKey ??
368
+ ("runInput" in message ? `workflow-start:${runId}` : undefined));
369
+ return { messageId: MessageId.parse(result.messageId) };
370
+ }
371
+ async inspectDispatcherQueue(runId) {
372
+ return runActor(this.#client, runId).inspectQueue();
373
+ }
374
+ async forceStaleDispatcherMessageForTesting(runId, messageId, ageMs) {
375
+ await this.#client.workflowRun
376
+ .getOrCreate([runId])
377
+ .forceStaleInflightForTesting(runId, messageId, ageMs);
378
+ }
379
+ async expireClosedStreamForTesting(runId, name) {
380
+ return runActor(this.#client, runId).expireClosedStreamForTesting(name, runId);
381
+ }
382
+ createQueueHandler(queueNamePrefix, handler) {
383
+ return async (req) => {
384
+ const unauthorized = verifyWorkflowBearer(req);
385
+ if (unauthorized)
386
+ return unauthorized;
387
+ if (!req.body) {
388
+ return Response.json({ error: "Missing request body" }, { status: 400 });
389
+ }
390
+ const queueName = req.headers.get("x-vqs-queue-name");
391
+ const messageId = req.headers.get("x-vqs-message-id");
392
+ const attemptHeader = req.headers.get("x-vqs-message-attempt");
393
+ const attempt = Number(attemptHeader);
394
+ if (!queueName ||
395
+ !messageId ||
396
+ attemptHeader == null ||
397
+ !Number.isSafeInteger(attempt) ||
398
+ attempt < 1) {
399
+ return Response.json({ error: "Missing required headers" }, { status: 400 });
400
+ }
401
+ ValidQueueNameSchema.parse(queueName);
402
+ const parsedMessageId = MessageId.parse(messageId);
403
+ if (!queueName.startsWith(queueNamePrefix)) {
404
+ return Response.json({ error: "Unhandled queue" }, { status: 400 });
405
+ }
406
+ const message = await parseQueueRequestBody(req);
407
+ try {
408
+ // Stable across delivery attempts. Workflow uses the message id as a
409
+ // crash-recovery ownership token, not as an ingress deduplication key.
410
+ const result = await handler(message, {
411
+ attempt,
412
+ queueName,
413
+ messageId: parsedMessageId,
414
+ });
415
+ if (typeof result?.timeoutSeconds === "number") {
416
+ return Response.json({ timeoutSeconds: result.timeoutSeconds });
417
+ }
418
+ return Response.json({ ok: true });
419
+ }
420
+ catch (error) {
421
+ return Response.json(String(error), { status: 500 });
422
+ }
423
+ };
424
+ }
425
+ async writeToStream(name, runId, chunk) {
426
+ await runActor(this.#client, runId).writeStream(name, runId, streamChunkToBase64(chunk), false);
427
+ }
428
+ async closeStream(name, runId) {
429
+ await runActor(this.#client, runId).writeStream(name, runId, "", true);
430
+ }
431
+ async readFromStream(runId, name, startIndex = 0) {
432
+ const store = runActor(this.#client, runId);
433
+ let nextIndex = startIndex;
434
+ if (nextIndex < 0) {
435
+ const info = await store.getStreamInfo(name, runId);
436
+ nextIndex = Math.max(0, info.tailIndex + 1 + nextIndex);
437
+ }
438
+ let cancelled = false;
439
+ let disposeConnection;
440
+ const applicationRegistry = this.#registry;
441
+ return new ReadableStream({
442
+ async start(controller) {
443
+ await applicationRegistry?.startAndWait();
444
+ // `nextIndex` is the last-consumed cursor and is the single source of
445
+ // truth for resume position: every drain reads forward from it, so a
446
+ // later (surviving) `streamAppended` re-drain catches up any chunks
447
+ // whose own broadcast was lost (best-effort delivery, SPEC §7).
448
+ let draining = false;
449
+ let pending = false;
450
+ const drainOnce = async () => {
451
+ for (;;) {
452
+ const page = await store.getStreamChunks(name, runId, nextIndex, 100);
453
+ for (const chunk of page.data) {
454
+ controller.enqueue(chunk.data);
455
+ }
456
+ nextIndex += page.data.length;
457
+ if (page.done) {
458
+ cancelled = true;
459
+ controller.close();
460
+ await disposeConnection?.();
461
+ return;
462
+ }
463
+ if (!page.hasMore)
464
+ return;
465
+ }
466
+ };
467
+ // Re-drain if signaled while a drain is in flight: a naive "one drain
468
+ // at a time" guard would coalesce away the trailing notification and
469
+ // strand the chunk that arrived mid-drain. The pending flag forces
470
+ // another pass so no signal is lost.
471
+ const scheduleDrain = () => {
472
+ if (cancelled)
473
+ return;
474
+ pending = true;
475
+ if (draining)
476
+ return;
477
+ draining = true;
478
+ void (async () => {
479
+ try {
480
+ while (pending && !cancelled) {
481
+ pending = false;
482
+ await drainOnce();
483
+ }
484
+ }
485
+ catch (error) {
486
+ cancelled = true;
487
+ controller.error(error);
488
+ await disposeConnection?.();
489
+ }
490
+ finally {
491
+ draining = false;
492
+ }
493
+ })();
494
+ };
495
+ const conn = store.connect();
496
+ const unsubscribe = conn.on("streamAppended", (event) => {
497
+ if (!cancelled &&
498
+ event.streamId === name &&
499
+ event.runId === runId) {
500
+ scheduleDrain();
501
+ }
502
+ });
503
+ // The actor connection may still be opening when the initial drain runs.
504
+ // Re-drain once it is live so an append that raced connection setup is
505
+ // recovered from persisted chunks even if its broadcast was missed.
506
+ const unsubscribeOpen = conn.onOpen(scheduleDrain);
507
+ disposeConnection = async () => {
508
+ unsubscribe();
509
+ unsubscribeOpen();
510
+ await conn.dispose();
511
+ };
512
+ scheduleDrain();
513
+ },
514
+ cancel() {
515
+ cancelled = true;
516
+ void disposeConnection?.();
517
+ },
518
+ });
519
+ }
520
+ async listStreamsByRunId(runId) {
521
+ return runActor(this.#client, runId).listStreams(runId);
522
+ }
523
+ async getStreamChunks(name, runId, options) {
524
+ const limit = Math.min(Math.max(options?.limit ?? 100, 1), 1000);
525
+ return runActor(this.#client, runId).getStreamChunks(name, runId, decodeStreamCursor(options?.cursor), limit);
526
+ }
527
+ async getStreamInfo(name, runId) {
528
+ return runActor(this.#client, runId).getStreamInfo(name, runId);
529
+ }
530
+ streams = {
531
+ write: (runId, name, chunk) => this.writeToStream(name, runId, chunk),
532
+ close: (runId, name) => this.closeStream(name, runId),
533
+ get: (runId, name, startIndex) => this.readFromStream(runId, name, startIndex),
534
+ list: (runId) => this.listStreamsByRunId(runId),
535
+ getChunks: (runId, name, options) => this.getStreamChunks(name, runId, options),
536
+ getInfo: (runId, name) => this.getStreamInfo(name, runId),
537
+ };
538
+ async close() {
539
+ if (this.#injectedClient)
540
+ return;
541
+ await this.#client.dispose();
542
+ if (this.#ownsRegistry)
543
+ await this.#registry?.shutdown();
544
+ }
545
+ }
546
+ export function createWorld(config) {
547
+ // The SDK's data-resolution overloads cannot be expressed on object-literal
548
+ // namespaces, but the actor methods honor the same runtime contract.
549
+ return new RivetClientWorld(config);
550
+ }
551
+ export default createWorld;
552
+ export { registry };
553
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { registry } from "./actors.js";
2
+ const endpoint = process.env.RIVET_ENDPOINT;
3
+ const namespace = process.env.RIVET_NAMESPACE;
4
+ const poolName = process.env.RIVET_POOL;
5
+ if (!endpoint || !namespace || !poolName) {
6
+ throw new Error("RIVET_ENDPOINT, RIVET_NAMESPACE, and RIVET_POOL are required");
7
+ }
8
+ registry.config.test = {
9
+ ...registry.config.test,
10
+ enabled: true,
11
+ sqliteBackend: "local",
12
+ };
13
+ registry.config.runtime = "native";
14
+ registry.config.startEngine = false;
15
+ registry.config.endpoint = endpoint;
16
+ registry.config.token = process.env.RIVET_TOKEN;
17
+ registry.config.namespace = namespace;
18
+ registry.config.envoy = {
19
+ ...registry.config.envoy,
20
+ poolName,
21
+ };
22
+ registry.config.noWelcome = true;
23
+ await registry.startAndWait();
24
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAExC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1C,MAAM,IAAI,KAAK,CACd,8DAA8D,CAC9D,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG;IACtB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI;IACvB,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,OAAO;CACtB,CAAC;AACF,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;AACnC,QAAQ,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AACpC,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACpC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AAChD,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AACtC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG;IACvB,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;IACxB,QAAQ;CACR,CAAC;AACF,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAEjC,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC"}