rivetkit 2.0.20 → 2.0.22-rc.1

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 (169) hide show
  1. package/dist/tsup/actor/errors.cjs.map +1 -1
  2. package/dist/tsup/{chunk-L3YPHXPE.js → chunk-4B25D5OW.js} +481 -100
  3. package/dist/tsup/chunk-4B25D5OW.js.map +1 -0
  4. package/dist/tsup/{chunk-G6JGHCG4.cjs → chunk-5EB77IQ2.cjs} +6 -6
  5. package/dist/tsup/chunk-5EB77IQ2.cjs.map +1 -0
  6. package/dist/tsup/{chunk-KUZWEM23.cjs → chunk-6Z3YA6QR.cjs} +8 -4
  7. package/dist/tsup/chunk-6Z3YA6QR.cjs.map +1 -0
  8. package/dist/tsup/{chunk-ZODINJWN.cjs → chunk-7FEMVD3D.cjs} +12 -12
  9. package/dist/tsup/chunk-7FEMVD3D.cjs.map +1 -0
  10. package/dist/tsup/{chunk-FYP3TZXD.cjs → chunk-BIOPK7IB.cjs} +32 -26
  11. package/dist/tsup/chunk-BIOPK7IB.cjs.map +1 -0
  12. package/dist/tsup/{chunk-KKRR7DSG.cjs → chunk-C2U6KGOG.cjs} +3 -3
  13. package/dist/tsup/chunk-C2U6KGOG.cjs.map +1 -0
  14. package/dist/tsup/{chunk-5F6X4AFU.js → chunk-EEXX243L.js} +6 -6
  15. package/dist/tsup/chunk-EEXX243L.js.map +1 -0
  16. package/dist/tsup/{chunk-GQ5WTE64.js → chunk-FETQGZN4.js} +263 -97
  17. package/dist/tsup/chunk-FETQGZN4.js.map +1 -0
  18. package/dist/tsup/{chunk-ER5OT3SQ.js → chunk-GJPOIJHZ.js} +2 -2
  19. package/dist/tsup/chunk-GJPOIJHZ.js.map +1 -0
  20. package/dist/tsup/{chunk-7ACKZS3T.js → chunk-I7EJWHYV.js} +13 -7
  21. package/dist/tsup/chunk-I7EJWHYV.js.map +1 -0
  22. package/dist/tsup/{chunk-QMVCFQ37.js → chunk-JKNDUKFI.js} +8 -4
  23. package/dist/tsup/chunk-JKNDUKFI.js.map +1 -0
  24. package/dist/tsup/{chunk-M6LIJ6BK.js → chunk-JN6GPVFY.js} +3 -3
  25. package/dist/tsup/chunk-KSRXX3Z4.cjs.map +1 -1
  26. package/dist/tsup/{chunk-DUOTOMP7.cjs → chunk-LCQDY73V.cjs} +3 -3
  27. package/dist/tsup/chunk-LCQDY73V.cjs.map +1 -0
  28. package/dist/tsup/{chunk-RI4YHZZW.js → chunk-NDLOG2JH.js} +2 -2
  29. package/dist/tsup/{chunk-RI4YHZZW.js.map → chunk-NDLOG2JH.js.map} +1 -1
  30. package/dist/tsup/{chunk-2S7HJMMY.cjs → chunk-OAB7ECAB.cjs} +630 -249
  31. package/dist/tsup/chunk-OAB7ECAB.cjs.map +1 -0
  32. package/dist/tsup/{chunk-PV22ZBDE.cjs → chunk-PELXJCJS.cjs} +16 -10
  33. package/dist/tsup/chunk-PELXJCJS.cjs.map +1 -0
  34. package/dist/tsup/{chunk-JZD6FEOE.cjs → chunk-R6XOZKMU.cjs} +455 -289
  35. package/dist/tsup/chunk-R6XOZKMU.cjs.map +1 -0
  36. package/dist/tsup/{chunk-QRUGCDA5.js → chunk-RPI45FGS.js} +2 -2
  37. package/dist/tsup/{chunk-MGHPBNWB.js → chunk-UBCUW7HD.js} +2 -2
  38. package/dist/tsup/{chunk-RJVSNJO7.cjs → chunk-VJLGVVGP.cjs} +7 -7
  39. package/dist/tsup/chunk-VJLGVVGP.cjs.map +1 -0
  40. package/dist/tsup/{chunk-YFFCPYHY.js → chunk-ZVEDMBFT.js} +11 -5
  41. package/dist/tsup/chunk-ZVEDMBFT.js.map +1 -0
  42. package/dist/tsup/{chunk-2I6L3VRO.cjs → chunk-ZZYMCYAY.cjs} +14 -14
  43. package/dist/tsup/chunk-ZZYMCYAY.cjs.map +1 -0
  44. package/dist/tsup/client/mod.cjs +9 -9
  45. package/dist/tsup/client/mod.cjs.map +1 -1
  46. package/dist/tsup/client/mod.d.cts +2 -2
  47. package/dist/tsup/client/mod.d.ts +2 -2
  48. package/dist/tsup/client/mod.js +8 -8
  49. package/dist/tsup/common/log.cjs +3 -3
  50. package/dist/tsup/common/log.cjs.map +1 -1
  51. package/dist/tsup/common/log.js +2 -2
  52. package/dist/tsup/common/websocket.cjs +4 -4
  53. package/dist/tsup/common/websocket.cjs.map +1 -1
  54. package/dist/tsup/common/websocket.js +3 -3
  55. package/dist/tsup/{conn-CmPcqOCF.d.ts → conn-Clu655RU.d.ts} +72 -71
  56. package/dist/tsup/{conn-DU5EbfCu.d.cts → conn-lUvFLo_q.d.cts} +72 -71
  57. package/dist/tsup/driver-helpers/mod.cjs +5 -5
  58. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  59. package/dist/tsup/driver-helpers/mod.d.cts +1 -1
  60. package/dist/tsup/driver-helpers/mod.d.ts +1 -1
  61. package/dist/tsup/driver-helpers/mod.js +4 -4
  62. package/dist/tsup/driver-test-suite/mod.cjs +603 -294
  63. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  64. package/dist/tsup/driver-test-suite/mod.d.cts +1 -1
  65. package/dist/tsup/driver-test-suite/mod.d.ts +1 -1
  66. package/dist/tsup/driver-test-suite/mod.js +574 -265
  67. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  68. package/dist/tsup/inspector/mod.cjs +6 -6
  69. package/dist/tsup/inspector/mod.cjs.map +1 -1
  70. package/dist/tsup/inspector/mod.d.cts +68 -7
  71. package/dist/tsup/inspector/mod.d.ts +68 -7
  72. package/dist/tsup/inspector/mod.js +5 -5
  73. package/dist/tsup/mod.cjs +10 -10
  74. package/dist/tsup/mod.cjs.map +1 -1
  75. package/dist/tsup/mod.d.cts +2 -2
  76. package/dist/tsup/mod.d.ts +2 -2
  77. package/dist/tsup/mod.js +9 -9
  78. package/dist/tsup/test/mod.cjs +11 -11
  79. package/dist/tsup/test/mod.cjs.map +1 -1
  80. package/dist/tsup/test/mod.d.cts +1 -1
  81. package/dist/tsup/test/mod.d.ts +1 -1
  82. package/dist/tsup/test/mod.js +10 -10
  83. package/dist/tsup/utils.cjs +2 -2
  84. package/dist/tsup/utils.cjs.map +1 -1
  85. package/dist/tsup/utils.js +1 -1
  86. package/package.json +4 -3
  87. package/src/actor/config.ts +108 -15
  88. package/src/actor/conn-drivers.ts +2 -1
  89. package/src/actor/instance.ts +119 -35
  90. package/src/actor/keys.test.ts +13 -4
  91. package/src/actor/protocol/old.ts +10 -3
  92. package/src/actor/router-endpoints.ts +26 -16
  93. package/src/actor/router.ts +41 -13
  94. package/src/actor/unstable-react.ts +1 -1
  95. package/src/client/actor-common.ts +3 -1
  96. package/src/client/actor-conn.ts +44 -12
  97. package/src/client/actor-handle.ts +4 -1
  98. package/src/client/client.ts +32 -18
  99. package/src/client/utils.ts +21 -8
  100. package/src/common/actor-router-consts.ts +2 -0
  101. package/src/common/inline-websocket-adapter2.ts +24 -6
  102. package/src/common/log.ts +6 -2
  103. package/src/common/logfmt.ts +3 -1
  104. package/src/common/router.ts +3 -1
  105. package/src/common/utils.ts +6 -2
  106. package/src/driver-helpers/utils.ts +4 -1
  107. package/src/driver-test-suite/mod.ts +15 -4
  108. package/src/driver-test-suite/test-inline-client-driver.ts +35 -13
  109. package/src/driver-test-suite/tests/action-features.ts +6 -2
  110. package/src/driver-test-suite/tests/actor-conn-state.ts +18 -8
  111. package/src/driver-test-suite/tests/actor-conn.ts +35 -13
  112. package/src/driver-test-suite/tests/actor-handle.ts +35 -15
  113. package/src/driver-test-suite/tests/actor-inline-client.ts +34 -23
  114. package/src/driver-test-suite/tests/actor-inspector.ts +241 -131
  115. package/src/driver-test-suite/tests/actor-reconnect.ts +14 -4
  116. package/src/driver-test-suite/tests/actor-schedule.ts +12 -3
  117. package/src/driver-test-suite/tests/actor-sleep.ts +6 -3
  118. package/src/driver-test-suite/tests/actor-vars.ts +6 -2
  119. package/src/driver-test-suite/tests/manager-driver.ts +16 -6
  120. package/src/driver-test-suite/tests/raw-http-request-properties.ts +64 -25
  121. package/src/driver-test-suite/tests/raw-http.ts +17 -5
  122. package/src/driver-test-suite/tests/raw-websocket.ts +36 -12
  123. package/src/driver-test-suite/tests/request-access.ts +18 -8
  124. package/src/drivers/engine/actor-driver.ts +46 -25
  125. package/src/drivers/engine/config.ts +2 -1
  126. package/src/drivers/file-system/global-state.ts +58 -16
  127. package/src/drivers/file-system/manager.ts +35 -12
  128. package/src/drivers/file-system/mod.ts +6 -1
  129. package/src/drivers/file-system/utils.ts +8 -2
  130. package/src/engine-process/mod.ts +15 -4
  131. package/src/inspector/actor.ts +63 -23
  132. package/src/inspector/config.ts +2 -1
  133. package/src/inspector/manager.ts +10 -3
  134. package/src/inspector/utils.ts +2 -1
  135. package/src/manager/driver.ts +4 -1
  136. package/src/manager/gateway.ts +278 -8
  137. package/src/manager/hono-websocket-adapter.ts +33 -10
  138. package/src/manager/router-schema.ts +4 -2
  139. package/src/manager/router.ts +78 -12
  140. package/src/manager-api/actors.ts +2 -0
  141. package/src/registry/mod.ts +31 -9
  142. package/src/registry/run-config.ts +3 -1
  143. package/src/remote-manager-driver/api-endpoints.ts +2 -2
  144. package/src/remote-manager-driver/mod.ts +23 -7
  145. package/src/remote-manager-driver/ws-proxy.ts +21 -5
  146. package/src/serde.ts +6 -2
  147. package/src/test/mod.ts +2 -1
  148. package/src/utils.ts +6 -2
  149. package/dist/tsup/chunk-2I6L3VRO.cjs.map +0 -1
  150. package/dist/tsup/chunk-2S7HJMMY.cjs.map +0 -1
  151. package/dist/tsup/chunk-5F6X4AFU.js.map +0 -1
  152. package/dist/tsup/chunk-7ACKZS3T.js.map +0 -1
  153. package/dist/tsup/chunk-DUOTOMP7.cjs.map +0 -1
  154. package/dist/tsup/chunk-ER5OT3SQ.js.map +0 -1
  155. package/dist/tsup/chunk-FYP3TZXD.cjs.map +0 -1
  156. package/dist/tsup/chunk-G6JGHCG4.cjs.map +0 -1
  157. package/dist/tsup/chunk-GQ5WTE64.js.map +0 -1
  158. package/dist/tsup/chunk-JZD6FEOE.cjs.map +0 -1
  159. package/dist/tsup/chunk-KKRR7DSG.cjs.map +0 -1
  160. package/dist/tsup/chunk-KUZWEM23.cjs.map +0 -1
  161. package/dist/tsup/chunk-L3YPHXPE.js.map +0 -1
  162. package/dist/tsup/chunk-PV22ZBDE.cjs.map +0 -1
  163. package/dist/tsup/chunk-QMVCFQ37.js.map +0 -1
  164. package/dist/tsup/chunk-RJVSNJO7.cjs.map +0 -1
  165. package/dist/tsup/chunk-YFFCPYHY.js.map +0 -1
  166. package/dist/tsup/chunk-ZODINJWN.cjs.map +0 -1
  167. /package/dist/tsup/{chunk-M6LIJ6BK.js.map → chunk-JN6GPVFY.js.map} +0 -0
  168. /package/dist/tsup/{chunk-QRUGCDA5.js.map → chunk-RPI45FGS.js.map} +0 -0
  169. /package/dist/tsup/{chunk-MGHPBNWB.js.map → chunk-UBCUW7HD.js.map} +0 -0
@@ -3,12 +3,13 @@ import {
3
3
  ForeignKeysSchema,
4
4
  PatchSchema,
5
5
  TablesSchema
6
- } from "./chunk-QRUGCDA5.js";
6
+ } from "./chunk-RPI45FGS.js";
7
7
  import {
8
8
  importWebSocket,
9
9
  logger
10
- } from "./chunk-MGHPBNWB.js";
10
+ } from "./chunk-UBCUW7HD.js";
11
11
  import {
12
+ ActionContext,
12
13
  HTTP_ACTION_REQUEST_VERSIONED,
13
14
  HTTP_ACTION_RESPONSE_VERSIONED,
14
15
  HTTP_RESPONSE_ERROR_VERSIONED,
@@ -17,7 +18,7 @@ import {
17
18
  TO_SERVER_VERSIONED,
18
19
  inputDataToBuffer,
19
20
  processMessage
20
- } from "./chunk-7ACKZS3T.js";
21
+ } from "./chunk-I7EJWHYV.js";
21
22
  import {
22
23
  CachedSerializer,
23
24
  DeadlineError,
@@ -49,12 +50,12 @@ import {
49
50
  jsonStringifyCompat,
50
51
  serializeWithEncoding,
51
52
  uint8ArrayToBase64
52
- } from "./chunk-YFFCPYHY.js";
53
+ } from "./chunk-ZVEDMBFT.js";
53
54
  import {
54
55
  getBaseLogger,
55
56
  getIncludeTarget,
56
57
  getLogger
57
- } from "./chunk-ER5OT3SQ.js";
58
+ } from "./chunk-GJPOIJHZ.js";
58
59
  import {
59
60
  SinglePromiseQueue,
60
61
  assertUnreachable,
@@ -67,7 +68,7 @@ import {
67
68
  noopNext,
68
69
  promiseWithResolvers,
69
70
  stringifyError
70
- } from "./chunk-QMVCFQ37.js";
71
+ } from "./chunk-JKNDUKFI.js";
71
72
  import {
72
73
  ActionNotFound,
73
74
  ActionTimedOut,
@@ -418,7 +419,10 @@ function createActorInspectorRouter() {
418
419
  );
419
420
  await c.var.inspector.accessors.setState(newState);
420
421
  return c.json(
421
- { enabled: true, state: await c.var.inspector.accessors.getState() },
422
+ {
423
+ enabled: true,
424
+ state: await c.var.inspector.accessors.getState()
425
+ },
422
426
  200
423
427
  );
424
428
  }
@@ -431,13 +435,16 @@ function createActorInspectorRouter() {
431
435
  return streamSSE(
432
436
  c,
433
437
  async (stream) => {
434
- unsub = c.var.inspector.emitter.on("stateUpdated", async (state) => {
435
- stream.writeSSE({
436
- data: JSON.stringify(state) || "",
437
- event: "state-update",
438
- id: String(id++)
439
- });
440
- });
438
+ unsub = c.var.inspector.emitter.on(
439
+ "stateUpdated",
440
+ async (state) => {
441
+ stream.writeSSE({
442
+ data: JSON.stringify(state) || "",
443
+ event: "state-update",
444
+ id: String(id++)
445
+ });
446
+ }
447
+ );
441
448
  const { promise } = promiseWithResolvers();
442
449
  return promise;
443
450
  },
@@ -454,15 +461,18 @@ function createActorInspectorRouter() {
454
461
  return streamSSE(
455
462
  c,
456
463
  async (stream) => {
457
- unsub = c.var.inspector.emitter.on("connectionUpdated", async () => {
458
- stream.writeSSE({
459
- data: JSON.stringify(
460
- await c.var.inspector.accessors.getConnections()
461
- ),
462
- event: "connection-update",
463
- id: String(id++)
464
- });
465
- });
464
+ unsub = c.var.inspector.emitter.on(
465
+ "connectionUpdated",
466
+ async () => {
467
+ stream.writeSSE({
468
+ data: JSON.stringify(
469
+ await c.var.inspector.accessors.getConnections()
470
+ ),
471
+ event: "connection-update",
472
+ id: String(id++)
473
+ });
474
+ }
475
+ );
466
476
  const { promise } = promiseWithResolvers();
467
477
  return promise;
468
478
  },
@@ -484,7 +494,9 @@ function createActorInspectorRouter() {
484
494
  async (stream) => {
485
495
  unsub = c.var.inspector.emitter.on("eventFired", () => {
486
496
  stream.writeSSE({
487
- data: JSON.stringify(c.var.inspector.lastRealtimeEvents),
497
+ data: JSON.stringify(
498
+ c.var.inspector.lastRealtimeEvents
499
+ ),
488
500
  event: "realtime-event",
489
501
  id: String(id++)
490
502
  });
@@ -509,7 +521,9 @@ function createActorInspectorRouter() {
509
521
  (table) => table.schema !== "temp" && !table.name.startsWith("sqlite_")
510
522
  );
511
523
  const tablesInfo = await Promise.all(
512
- tables.map((table) => db.execute(`PRAGMA table_info(${table.name})`))
524
+ tables.map(
525
+ (table) => db.execute(`PRAGMA table_info(${table.name})`)
526
+ )
513
527
  );
514
528
  const columns = tablesInfo.map((def) => ColumnsSchema.parse(def));
515
529
  const foreignKeysList = await Promise.all(
@@ -546,7 +560,10 @@ function createActorInspectorRouter() {
546
560
  "/db",
547
561
  sValidator(
548
562
  "json",
549
- z.object({ query: z.string(), params: z.array(z.any()).optional() })
563
+ z.object({
564
+ query: z.string(),
565
+ params: z.array(z.any()).optional()
566
+ })
550
567
  ),
551
568
  async (c) => {
552
569
  if (!await c.var.inspector.accessors.isDbEnabled()) {
@@ -564,6 +581,23 @@ function createActorInspectorRouter() {
564
581
  return c.json({ error: error.message }, 500);
565
582
  }
566
583
  }
584
+ ).post(
585
+ "/action",
586
+ sValidator(
587
+ "json",
588
+ z.object({
589
+ name: z.string(),
590
+ params: z.array(z.any()).optional()
591
+ })
592
+ ),
593
+ async (c) => {
594
+ const { name, params } = c.req.valid("json");
595
+ const result = await c.var.inspector.accessors.executeAction(
596
+ name,
597
+ params
598
+ );
599
+ return c.json({ result }, 200);
600
+ }
567
601
  );
568
602
  }
569
603
  var ActorInspector = class {
@@ -841,17 +875,39 @@ var ActorInstance = class {
841
875
  return Object.keys(this.#config.actions);
842
876
  },
843
877
  getConnections: async () => {
844
- return Array.from(this.#connections.entries()).map(([id, conn]) => ({
845
- id,
846
- stateEnabled: conn.__stateEnabled,
847
- params: conn.params,
848
- state: conn.__stateEnabled ? conn.state : void 0
849
- }));
878
+ return Array.from(this.#connections.entries()).map(
879
+ ([id, conn]) => ({
880
+ id,
881
+ stateEnabled: conn.__stateEnabled,
882
+ params: conn.params,
883
+ state: conn.__stateEnabled ? conn.state : void 0
884
+ })
885
+ );
850
886
  },
851
887
  setState: async (state) => {
852
888
  this.#validateStateEnabled();
853
889
  this.#persist.state = { ...state };
854
890
  await this.saveState({ immediate: true });
891
+ },
892
+ executeAction: async (name, params) => {
893
+ const socketId = generateConnSocketId();
894
+ const conn = await this.createConn(
895
+ {
896
+ socketId,
897
+ driverState: { [2 /* HTTP */]: {} }
898
+ },
899
+ void 0,
900
+ void 0
901
+ );
902
+ try {
903
+ return await this.executeAction(
904
+ new ActionContext(this.actorContext, conn),
905
+ name,
906
+ params || []
907
+ );
908
+ } finally {
909
+ this.__connDisconnected(conn, true, socketId);
910
+ }
855
911
  }
856
912
  };
857
913
  });
@@ -886,7 +942,10 @@ var ActorInstance = class {
886
942
  actorId
887
943
  };
888
944
  this.#log = getBaseLogger().child(
889
- Object.assign(getIncludeTarget() ? { target: "actor" } : {}, logParams)
945
+ Object.assign(
946
+ getIncludeTarget() ? { target: "actor" } : {},
947
+ logParams
948
+ )
890
949
  );
891
950
  this.#rLog = getBaseLogger().child(
892
951
  Object.assign(
@@ -920,7 +979,9 @@ var ActorInstance = class {
920
979
  } else if ("vars" in this.#config) {
921
980
  vars = structuredClone(this.#config.vars);
922
981
  } else {
923
- throw new Error("Could not variables from 'createVars' or 'vars'");
982
+ throw new Error(
983
+ "Could not variables from 'createVars' or 'vars'"
984
+ );
924
985
  }
925
986
  this.#vars = vars;
926
987
  }
@@ -941,7 +1002,9 @@ var ActorInstance = class {
941
1002
  this.#db = client;
942
1003
  }
943
1004
  if (this.#persist.scheduledEvents.length > 0) {
944
- await this.#queueSetAlarm(this.#persist.scheduledEvents[0].timestamp);
1005
+ await this.#queueSetAlarm(
1006
+ this.#persist.scheduledEvents[0].timestamp
1007
+ );
945
1008
  }
946
1009
  this.#rLog.info({ msg: "actor ready" });
947
1010
  this.#ready = true;
@@ -1117,10 +1180,14 @@ var ActorInstance = class {
1117
1180
  const finished = this.#persistWriteQueue.enqueue(async () => {
1118
1181
  this.#rLog.debug({ msg: "saving persist" });
1119
1182
  this.#persistChanged = false;
1120
- const bareData = this.#convertToBarePersisted(this.#persistRaw);
1183
+ const bareData = this.#convertToBarePersisted(
1184
+ this.#persistRaw
1185
+ );
1121
1186
  await this.#actorDriver.writePersistedData(
1122
1187
  this.#actorId,
1123
- PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(bareData)
1188
+ PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(
1189
+ bareData
1190
+ )
1124
1191
  );
1125
1192
  this.#rLog.debug({ msg: "persist saved" });
1126
1193
  });
@@ -1178,7 +1245,10 @@ var ActorInstance = class {
1178
1245
  });
1179
1246
  }
1180
1247
  this.#persistChanged = true;
1181
- this.inspector.emitter.emit("stateUpdated", this.#persist.state);
1248
+ this.inspector.emitter.emit(
1249
+ "stateUpdated",
1250
+ this.#persist.state
1251
+ );
1182
1252
  if (this.#config.onStateChange && this.#ready && !this.#isInOnStateChange) {
1183
1253
  try {
1184
1254
  this.#isInOnStateChange = true;
@@ -1238,7 +1308,9 @@ var ActorInstance = class {
1238
1308
  } else if ("state" in this.#config) {
1239
1309
  stateData = structuredClone(this.#config.state);
1240
1310
  } else {
1241
- throw new Error("Both 'createState' or 'state' were not defined");
1311
+ throw new Error(
1312
+ "Both 'createState' or 'state' were not defined"
1313
+ );
1242
1314
  }
1243
1315
  } else {
1244
1316
  this.#rLog.debug({ msg: "state not enabled" });
@@ -1249,11 +1321,16 @@ var ActorInstance = class {
1249
1321
  const bareData2 = this.#convertToBarePersisted(persistData);
1250
1322
  await this.#actorDriver.writePersistedData(
1251
1323
  this.#actorId,
1252
- PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(bareData2)
1324
+ PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(
1325
+ bareData2
1326
+ )
1253
1327
  );
1254
1328
  this.#setPersist(persistData);
1255
1329
  if (this.#config.onCreate) {
1256
- await this.#config.onCreate(this.actorContext, persistData.input);
1330
+ await this.#config.onCreate(
1331
+ this.actorContext,
1332
+ persistData.input
1333
+ );
1257
1334
  }
1258
1335
  }
1259
1336
  }
@@ -1312,7 +1389,10 @@ var ActorInstance = class {
1312
1389
  this.inspector.emitter.emit("connectionUpdated");
1313
1390
  if (this.#config.onDisconnect) {
1314
1391
  try {
1315
- const result = this.#config.onDisconnect(this.actorContext, conn);
1392
+ const result = this.#config.onDisconnect(
1393
+ this.actorContext,
1394
+ conn
1395
+ );
1316
1396
  if (result instanceof Promise) {
1317
1397
  result.catch((error) => {
1318
1398
  this.#rLog.error({
@@ -1443,15 +1523,16 @@ var ActorInstance = class {
1443
1523
  try {
1444
1524
  const result = this.#config.onConnect(this.actorContext, conn);
1445
1525
  if (result instanceof Promise) {
1446
- deadline(result, this.#config.options.onConnectTimeout).catch(
1447
- (error) => {
1448
- this.#rLog.error({
1449
- msg: "error in `onConnect`, closing socket",
1450
- error
1451
- });
1452
- conn == null ? void 0 : conn.disconnect("`onConnect` failed");
1453
- }
1454
- );
1526
+ deadline(
1527
+ result,
1528
+ this.#config.options.onConnectTimeout
1529
+ ).catch((error) => {
1530
+ this.#rLog.error({
1531
+ msg: "error in `onConnect`, closing socket",
1532
+ error
1533
+ });
1534
+ conn == null ? void 0 : conn.disconnect("`onConnect` failed");
1535
+ });
1455
1536
  }
1456
1537
  } catch (error) {
1457
1538
  this.#rLog.error({
@@ -1576,7 +1657,10 @@ var ActorInstance = class {
1576
1657
  this.#rLog.debug({ msg: "checking connections liveness" });
1577
1658
  for (const conn of this.#connections.values()) {
1578
1659
  if (conn.__status === "connected") {
1579
- this.#rLog.debug({ msg: "connection is alive", connId: conn.id });
1660
+ this.#rLog.debug({
1661
+ msg: "connection is alive",
1662
+ connId: conn.id
1663
+ });
1580
1664
  } else {
1581
1665
  const lastSeen = conn.__persist.lastSeen;
1582
1666
  const sinceLastSeen = Date.now() - lastSeen;
@@ -1643,7 +1727,11 @@ var ActorInstance = class {
1643
1727
  actionName,
1644
1728
  args
1645
1729
  });
1646
- const outputOrPromise = actionFunction.call(void 0, ctx, ...args);
1730
+ const outputOrPromise = actionFunction.call(
1731
+ void 0,
1732
+ ctx,
1733
+ ...args
1734
+ );
1647
1735
  let output;
1648
1736
  if (outputOrPromise instanceof Promise) {
1649
1737
  this.#rLog.debug({
@@ -1737,10 +1825,16 @@ var ActorInstance = class {
1737
1825
  }
1738
1826
  return response;
1739
1827
  } catch (error) {
1740
- this.#rLog.error({ msg: "onFetch error", error: stringifyError(error) });
1828
+ this.#rLog.error({
1829
+ msg: "onFetch error",
1830
+ error: stringifyError(error)
1831
+ });
1741
1832
  throw error;
1742
1833
  } finally {
1743
- this.#activeRawFetchCount = Math.max(0, this.#activeRawFetchCount - 1);
1834
+ this.#activeRawFetchCount = Math.max(
1835
+ 0,
1836
+ this.#activeRawFetchCount - 1
1837
+ );
1744
1838
  this.#resetSleepTimer();
1745
1839
  this.#savePersistThrottled();
1746
1840
  }
@@ -2003,6 +2097,10 @@ var ActorInstance = class {
2003
2097
  }
2004
2098
  this.#stopCalled = true;
2005
2099
  this.#rLog.info({ msg: "actor stopping" });
2100
+ if (this.#sleepTimeout) {
2101
+ clearTimeout(this.#sleepTimeout);
2102
+ this.#sleepTimeout = void 0;
2103
+ }
2006
2104
  try {
2007
2105
  this.#abortController.abort();
2008
2106
  } catch {
@@ -2030,7 +2128,9 @@ var ActorInstance = class {
2030
2128
  for (const connection of this.#connections.values()) {
2031
2129
  promises.push(connection.disconnect());
2032
2130
  }
2033
- await this.#waitBackgroundPromises(this.#config.options.waitUntilTimeout);
2131
+ await this.#waitBackgroundPromises(
2132
+ this.#config.options.waitUntilTimeout
2133
+ );
2034
2134
  if (this.#pendingSaveTimeout) clearTimeout(this.#pendingSaveTimeout);
2035
2135
  if (this.#sleepTimeout) clearTimeout(this.#sleepTimeout);
2036
2136
  if (this.#checkConnLivenessInterval)
@@ -2446,17 +2546,27 @@ async function sendHttpRequest(opts) {
2446
2546
  HTTP_RESPONSE_ERROR_VERSIONED
2447
2547
  );
2448
2548
  } catch (error) {
2449
- const textResponse = new TextDecoder("utf-8", { fatal: false }).decode(
2450
- bufferResponse
2451
- );
2452
- throw new HttpRequestError(
2453
- `${response.statusText} (${response.status}):
2549
+ const textResponse = new TextDecoder("utf-8", {
2550
+ fatal: false
2551
+ }).decode(bufferResponse);
2552
+ const rayId = response.headers.get("x-rivet-ray-id");
2553
+ if (rayId) {
2554
+ throw new HttpRequestError(
2555
+ `${response.statusText} (${response.status}) (Ray ID: ${rayId}):
2454
2556
  ${textResponse}`
2455
- );
2557
+ );
2558
+ } else {
2559
+ throw new HttpRequestError(
2560
+ `${response.statusText} (${response.status}):
2561
+ ${textResponse}`
2562
+ );
2563
+ }
2456
2564
  }
2457
2565
  let decodedMetadata;
2458
2566
  if (responseData.metadata && encodingIsBinary(opts.encoding)) {
2459
- decodedMetadata = cbor3.decode(new Uint8Array(responseData.metadata));
2567
+ decodedMetadata = cbor3.decode(
2568
+ new Uint8Array(responseData.metadata)
2569
+ );
2460
2570
  }
2461
2571
  throw new ActorError(
2462
2572
  responseData.group,
@@ -2535,7 +2645,10 @@ var ActorHandleRaw = class {
2535
2645
  args: bufferToArrayBuffer(cbor4.encode(opts.args))
2536
2646
  },
2537
2647
  encoding: this.#encoding,
2538
- customFetch: this.#driver.sendRequest.bind(this.#driver, actorId),
2648
+ customFetch: this.#driver.sendRequest.bind(
2649
+ this.#driver,
2650
+ actorId
2651
+ ),
2539
2652
  signal: opts == null ? void 0 : opts.signal,
2540
2653
  requestVersionedDataHandler: HTTP_ACTION_REQUEST_VERSIONED,
2541
2654
  responseVersionedDataHandler: HTTP_ACTION_RESPONSE_VERSIONED
@@ -2762,7 +2875,11 @@ var ClientRaw = class {
2762
2875
  parameters: opts == null ? void 0 : opts.params,
2763
2876
  create: createQuery.create
2764
2877
  });
2765
- const { actorId } = await queryActor(void 0, createQuery, this.#driver);
2878
+ const { actorId } = await queryActor(
2879
+ void 0,
2880
+ createQuery,
2881
+ this.#driver
2882
+ );
2766
2883
  logger().debug({
2767
2884
  msg: "created actor with ID",
2768
2885
  name,
@@ -2827,21 +2944,13 @@ function createClientWithDriver(driver, config) {
2827
2944
  return {
2828
2945
  // Handle methods (stateless action)
2829
2946
  get: (key, opts) => {
2830
- return target.get(
2831
- prop,
2832
- key,
2833
- opts
2834
- );
2947
+ return target.get(prop, key, opts);
2835
2948
  },
2836
2949
  getOrCreate: (key, opts) => {
2837
2950
  return target.getOrCreate(prop, key, opts);
2838
2951
  },
2839
2952
  getForId: (actorId, opts) => {
2840
- return target.getForId(
2841
- prop,
2842
- actorId,
2843
- opts
2844
- );
2953
+ return target.getForId(prop, actorId, opts);
2845
2954
  },
2846
2955
  create: async (key, opts = {}) => {
2847
2956
  return await target.create(prop, key, opts);
@@ -2893,7 +3002,10 @@ function createActorProxy(handle) {
2893
3002
  },
2894
3003
  // Support proper property descriptors
2895
3004
  getOwnPropertyDescriptor(target, prop) {
2896
- const targetDescriptor = Reflect.getOwnPropertyDescriptor(target, prop);
3005
+ const targetDescriptor = Reflect.getOwnPropertyDescriptor(
3006
+ target,
3007
+ prop
3008
+ );
2897
3009
  if (targetDescriptor) {
2898
3010
  return targetDescriptor;
2899
3011
  }
@@ -2973,7 +3085,11 @@ var ActorConnRaw = class {
2973
3085
  const actionId = this.#actionIdCounter;
2974
3086
  this.#actionIdCounter += 1;
2975
3087
  const { promise, resolve, reject } = promiseWithResolvers();
2976
- this.#actionsInFlight.set(actionId, { name: opts.name, resolve, reject });
3088
+ this.#actionsInFlight.set(actionId, {
3089
+ name: opts.name,
3090
+ resolve,
3091
+ reject
3092
+ });
2977
3093
  this.#sendMessage({
2978
3094
  body: {
2979
3095
  tag: "ActionRequest",
@@ -3136,7 +3252,11 @@ var ActorConnRaw = class {
3136
3252
  ...init == null ? void 0 : init.headers,
3137
3253
  "User-Agent": httpUserAgent(),
3138
3254
  [HEADER_ENCODING]: this.#encoding,
3139
- ...this.#params !== void 0 ? { [HEADER_CONN_PARAMS]: JSON.stringify(this.#params) } : {},
3255
+ ...this.#params !== void 0 ? {
3256
+ [HEADER_CONN_PARAMS]: JSON.stringify(
3257
+ this.#params
3258
+ )
3259
+ } : {},
3140
3260
  ...isReconnection ? {
3141
3261
  [HEADER_CONN_ID]: this.#connectionId,
3142
3262
  [HEADER_CONN_TOKEN]: this.#connectionToken
@@ -3218,7 +3338,9 @@ var ActorConnRaw = class {
3218
3338
  message,
3219
3339
  metadata
3220
3340
  });
3221
- inFlight.reject(new ActorError(group, code, message, metadata));
3341
+ inFlight.reject(
3342
+ new ActorError(group, code, message, metadata)
3343
+ );
3222
3344
  } else {
3223
3345
  logger().warn({
3224
3346
  msg: "connection error",
@@ -3256,7 +3378,10 @@ var ActorConnRaw = class {
3256
3378
  });
3257
3379
  inFlight.resolve(response.body.val);
3258
3380
  } else if (response.body.tag === "Event") {
3259
- logger().trace({ msg: "received event", name: response.body.val.name });
3381
+ logger().trace({
3382
+ msg: "received event",
3383
+ name: response.body.val.name
3384
+ });
3260
3385
  this.#dispatchEvent(response.body.val);
3261
3386
  } else {
3262
3387
  assertUnreachable(response.body);
@@ -3471,7 +3596,9 @@ var ActorConnRaw = class {
3471
3596
  async #sendHttpMessage(message, opts) {
3472
3597
  try {
3473
3598
  if (!this.#actorId || !this.#connectionId || !this.#connectionToken)
3474
- throw new InternalError2("Missing connection ID or token.");
3599
+ throw new InternalError2(
3600
+ "Missing connection ID or token."
3601
+ );
3475
3602
  logger().trace(
3476
3603
  getEnvUniversal("_RIVETKIT_LOG_MESSAGE") ? {
3477
3604
  msg: "sent http message",
@@ -3494,12 +3621,18 @@ var ActorConnRaw = class {
3494
3621
  body: message,
3495
3622
  encoding: this.#encoding,
3496
3623
  skipParseResponse: true,
3497
- customFetch: this.#driver.sendRequest.bind(this.#driver, this.#actorId),
3624
+ customFetch: this.#driver.sendRequest.bind(
3625
+ this.#driver,
3626
+ this.#actorId
3627
+ ),
3498
3628
  requestVersionedDataHandler: TO_SERVER_VERSIONED,
3499
3629
  responseVersionedDataHandler: TO_CLIENT_VERSIONED
3500
3630
  });
3501
3631
  } catch (error) {
3502
- logger().warn({ msg: "failed to send message, added to queue", error });
3632
+ logger().warn({
3633
+ msg: "failed to send message, added to queue",
3634
+ error
3635
+ });
3503
3636
  if (!(opts == null ? void 0 : opts.ephemeral)) {
3504
3637
  this.#messageQueue.unshift(message);
3505
3638
  }
@@ -3520,7 +3653,11 @@ var ActorConnRaw = class {
3520
3653
  }
3521
3654
  }
3522
3655
  const buffer = await inputDataToBuffer(data);
3523
- return deserializeWithEncoding(this.#encoding, buffer, TO_CLIENT_VERSIONED);
3656
+ return deserializeWithEncoding(
3657
+ this.#encoding,
3658
+ buffer,
3659
+ TO_CLIENT_VERSIONED
3660
+ );
3524
3661
  }
3525
3662
  /**
3526
3663
  * Get the actor ID (for testing purposes).
@@ -3587,7 +3724,10 @@ var ActorConnRaw = class {
3587
3724
  responseVersionedDataHandler: TO_CLIENT_VERSIONED
3588
3725
  });
3589
3726
  } catch (error) {
3590
- logger().warn({ msg: "failed to send close request", error });
3727
+ logger().warn({
3728
+ msg: "failed to send close request",
3729
+ error
3730
+ });
3591
3731
  }
3592
3732
  }
3593
3733
  this.#transport.sse.close();
@@ -3756,11 +3896,11 @@ function buildWebSocketProtocols(runConfig, actorId, encoding, params, connId, c
3756
3896
  }
3757
3897
 
3758
3898
  // src/remote-manager-driver/api-endpoints.ts
3759
- async function getActor(config, name, actorId) {
3899
+ async function getActor(config, _, actorId) {
3760
3900
  return apiCall(
3761
3901
  config,
3762
3902
  "GET",
3763
- `/actors?name=${name}&actor_ids=${encodeURIComponent(actorId)}`
3903
+ `/actors?actor_ids=${encodeURIComponent(actorId)}`
3764
3904
  );
3765
3905
  }
3766
3906
  async function getActorByKey(config, name, key) {
@@ -3828,7 +3968,10 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
3828
3968
  state.targetWs = targetWs;
3829
3969
  state.connectPromise = new Promise((resolve, reject) => {
3830
3970
  targetWs.addEventListener("open", () => {
3831
- logger2().debug({ msg: "target websocket connected", targetUrl });
3971
+ logger2().debug({
3972
+ msg: "target websocket connected",
3973
+ targetUrl
3974
+ });
3832
3975
  if (clientWs.readyState !== 1) {
3833
3976
  logger2().warn({
3834
3977
  msg: "client websocket closed before target connected",
@@ -3878,7 +4021,10 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
3878
4021
  },
3879
4022
  onMessage: async (event, clientWs) => {
3880
4023
  if (!state.targetWs || !state.connectPromise) {
3881
- logger2().error({ msg: "websocket state not initialized", targetUrl });
4024
+ logger2().error({
4025
+ msg: "websocket state not initialized",
4026
+ targetUrl
4027
+ });
3882
4028
  return;
3883
4029
  }
3884
4030
  try {
@@ -3898,7 +4044,11 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
3898
4044
  targetUrl,
3899
4045
  error
3900
4046
  });
3901
- closeWebSocketIfOpen(clientWs, 1011, "Failed to connect to target");
4047
+ closeWebSocketIfOpen(
4048
+ clientWs,
4049
+ 1011,
4050
+ "Failed to connect to target"
4051
+ );
3902
4052
  }
3903
4053
  },
3904
4054
  onClose: (event, clientWs) => {
@@ -3911,7 +4061,10 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
3911
4061
  });
3912
4062
  if (state.targetWs) {
3913
4063
  if (state.targetWs.readyState === WebSocket2.OPEN || state.targetWs.readyState === WebSocket2.CONNECTING) {
3914
- state.targetWs.close(1e3, event.reason || "Client disconnected");
4064
+ state.targetWs.close(
4065
+ 1e3,
4066
+ event.reason || "Client disconnected"
4067
+ );
3915
4068
  }
3916
4069
  }
3917
4070
  },
@@ -3942,14 +4095,16 @@ var RemoteManagerDriver = class {
3942
4095
  #metadataPromise;
3943
4096
  constructor(runConfig) {
3944
4097
  if (getEnvUniversal("NEXT_PHASE") === "phase-production-build") {
3945
- logger2().info("detected next.js build phase, disabling health check");
4098
+ logger2().info(
4099
+ "detected next.js build phase, disabling health check"
4100
+ );
3946
4101
  runConfig.disableHealthCheck = true;
3947
4102
  }
3948
4103
  this.#config = runConfig;
3949
4104
  if (!runConfig.disableHealthCheck) {
3950
4105
  this.#metadataPromise = this.#performMetadataCheck(runConfig);
3951
4106
  this.#metadataPromise.catch((error) => {
3952
- logger2().info({
4107
+ logger2().error({
3953
4108
  msg: "metadata check failed",
3954
4109
  error: error instanceof Error ? error.message : String(error)
3955
4110
  });
@@ -4061,6 +4216,7 @@ var RemoteManagerDriver = class {
4061
4216
  key
4062
4217
  });
4063
4218
  const { actor, created } = await getOrCreateActor(this.#config, {
4219
+ datacenter: region,
4064
4220
  name,
4065
4221
  key: serializeActorKey(key),
4066
4222
  runner_name_selector: this.#config.runnerName,
@@ -4085,13 +4241,15 @@ var RemoteManagerDriver = class {
4085
4241
  c,
4086
4242
  name,
4087
4243
  key,
4088
- input
4244
+ input,
4245
+ region
4089
4246
  }) {
4090
4247
  if (this.#metadataPromise) {
4091
4248
  await this.#metadataPromise;
4092
4249
  }
4093
4250
  logger2().info({ msg: "creating actor via engine api", name, key });
4094
4251
  const result = await createActor(this.#config, {
4252
+ datacenter: region,
4095
4253
  name,
4096
4254
  runner_name_selector: this.#config.runnerName,
4097
4255
  key: serializeActorKey(key),
@@ -4118,7 +4276,11 @@ var RemoteManagerDriver = class {
4118
4276
  if (this.#metadataPromise) {
4119
4277
  await this.#metadataPromise;
4120
4278
  }
4121
- return await sendHttpRequestToActor(this.#config, actorId, actorRequest);
4279
+ return await sendHttpRequestToActor(
4280
+ this.#config,
4281
+ actorId,
4282
+ actorRequest
4283
+ );
4122
4284
  }
4123
4285
  async openWebSocket(path, actorId, encoding, params, connId, connToken) {
4124
4286
  if (this.#metadataPromise) {
@@ -4138,7 +4300,11 @@ var RemoteManagerDriver = class {
4138
4300
  if (this.#metadataPromise) {
4139
4301
  await this.#metadataPromise;
4140
4302
  }
4141
- return await sendHttpRequestToActor(this.#config, actorId, actorRequest);
4303
+ return await sendHttpRequestToActor(
4304
+ this.#config,
4305
+ actorId,
4306
+ actorRequest
4307
+ );
4142
4308
  }
4143
4309
  async proxyWebSocket(c, path, actorId, encoding, params, connId, connToken) {
4144
4310
  var _a, _b;
@@ -4197,4 +4363,4 @@ export {
4197
4363
  updateRunnerConfig,
4198
4364
  RemoteManagerDriver
4199
4365
  };
4200
- //# sourceMappingURL=chunk-GQ5WTE64.js.map
4366
+ //# sourceMappingURL=chunk-FETQGZN4.js.map