rivetkit 2.0.22-rc.1 → 2.0.22-rc.2

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 (124) hide show
  1. package/dist/schemas/actor-persist/v2.ts +259 -0
  2. package/dist/tsup/{chunk-VJLGVVGP.cjs → chunk-5N6F5PXD.cjs} +31 -12
  3. package/dist/tsup/chunk-5N6F5PXD.cjs.map +1 -0
  4. package/dist/tsup/{chunk-BIOPK7IB.cjs → chunk-5TRXLS6X.cjs} +71 -67
  5. package/dist/tsup/chunk-5TRXLS6X.cjs.map +1 -0
  6. package/dist/tsup/{chunk-JKNDUKFI.js → chunk-7RUROQAZ.js} +36 -16
  7. package/dist/tsup/chunk-7RUROQAZ.js.map +1 -0
  8. package/dist/tsup/{chunk-FETQGZN4.js → chunk-AMK3AACS.js} +272 -89
  9. package/dist/tsup/chunk-AMK3AACS.js.map +1 -0
  10. package/dist/tsup/{chunk-I7EJWHYV.js → chunk-BHLQTKOD.js} +51 -47
  11. package/dist/tsup/chunk-BHLQTKOD.js.map +1 -0
  12. package/dist/tsup/{chunk-RPI45FGS.js → chunk-C4FPCW7T.js} +2 -2
  13. package/dist/tsup/{chunk-ZVEDMBFT.js → chunk-CVLO2OOK.js} +3 -3
  14. package/dist/tsup/{chunk-NDLOG2JH.js → chunk-EJXZYQ3N.js} +2 -2
  15. package/dist/tsup/{chunk-UBCUW7HD.js → chunk-F7WVJXPB.js} +2 -2
  16. package/dist/tsup/{chunk-JN6GPVFY.js → chunk-FLVL7RGH.js} +3 -3
  17. package/dist/tsup/{chunk-PELXJCJS.cjs → chunk-GXIO5YOT.cjs} +8 -8
  18. package/dist/tsup/{chunk-PELXJCJS.cjs.map → chunk-GXIO5YOT.cjs.map} +1 -1
  19. package/dist/tsup/{chunk-4B25D5OW.js → chunk-HLZT5C6A.js} +385 -104
  20. package/dist/tsup/chunk-HLZT5C6A.js.map +1 -0
  21. package/dist/tsup/{chunk-ZZYMCYAY.cjs → chunk-LFP446KS.cjs} +14 -14
  22. package/dist/tsup/{chunk-ZZYMCYAY.cjs.map → chunk-LFP446KS.cjs.map} +1 -1
  23. package/dist/tsup/{chunk-EEXX243L.js → chunk-MQDXPGNE.js} +6 -6
  24. package/dist/tsup/{chunk-5EB77IQ2.cjs → chunk-NDOG6IQ5.cjs} +6 -6
  25. package/dist/tsup/{chunk-5EB77IQ2.cjs.map → chunk-NDOG6IQ5.cjs.map} +1 -1
  26. package/dist/tsup/{chunk-R6XOZKMU.cjs → chunk-Q5CAVEKC.cjs} +467 -284
  27. package/dist/tsup/chunk-Q5CAVEKC.cjs.map +1 -0
  28. package/dist/tsup/{chunk-7FEMVD3D.cjs → chunk-UBMUBNS2.cjs} +12 -12
  29. package/dist/tsup/{chunk-7FEMVD3D.cjs.map → chunk-UBMUBNS2.cjs.map} +1 -1
  30. package/dist/tsup/{chunk-GJPOIJHZ.js → chunk-VMFBKBJL.js} +26 -7
  31. package/dist/tsup/chunk-VMFBKBJL.js.map +1 -0
  32. package/dist/tsup/{chunk-OAB7ECAB.cjs → chunk-YLWF6RFL.cjs} +558 -277
  33. package/dist/tsup/chunk-YLWF6RFL.cjs.map +1 -0
  34. package/dist/tsup/{chunk-6Z3YA6QR.cjs → chunk-YUBR6XCJ.cjs} +35 -15
  35. package/dist/tsup/chunk-YUBR6XCJ.cjs.map +1 -0
  36. package/dist/tsup/{chunk-LCQDY73V.cjs → chunk-ZL6NSKF2.cjs} +3 -3
  37. package/dist/tsup/{chunk-LCQDY73V.cjs.map → chunk-ZL6NSKF2.cjs.map} +1 -1
  38. package/dist/tsup/{chunk-C2U6KGOG.cjs → chunk-ZY4DKLMT.cjs} +3 -3
  39. package/dist/tsup/{chunk-C2U6KGOG.cjs.map → chunk-ZY4DKLMT.cjs.map} +1 -1
  40. package/dist/tsup/client/mod.cjs +9 -9
  41. package/dist/tsup/client/mod.d.cts +2 -2
  42. package/dist/tsup/client/mod.d.ts +2 -2
  43. package/dist/tsup/client/mod.js +8 -8
  44. package/dist/tsup/common/log.cjs +3 -3
  45. package/dist/tsup/common/log.js +2 -2
  46. package/dist/tsup/common/websocket.cjs +4 -4
  47. package/dist/tsup/common/websocket.js +3 -3
  48. package/dist/tsup/{conn-Clu655RU.d.ts → conn-BYXlxnh0.d.ts} +111 -102
  49. package/dist/tsup/{conn-lUvFLo_q.d.cts → conn-BiazosE_.d.cts} +111 -102
  50. package/dist/tsup/driver-helpers/mod.cjs +5 -5
  51. package/dist/tsup/driver-helpers/mod.d.cts +1 -1
  52. package/dist/tsup/driver-helpers/mod.d.ts +1 -1
  53. package/dist/tsup/driver-helpers/mod.js +4 -4
  54. package/dist/tsup/driver-test-suite/mod.cjs +71 -71
  55. package/dist/tsup/driver-test-suite/mod.d.cts +1 -1
  56. package/dist/tsup/driver-test-suite/mod.d.ts +1 -1
  57. package/dist/tsup/driver-test-suite/mod.js +11 -11
  58. package/dist/tsup/inspector/mod.cjs +6 -6
  59. package/dist/tsup/inspector/mod.d.cts +2 -2
  60. package/dist/tsup/inspector/mod.d.ts +2 -2
  61. package/dist/tsup/inspector/mod.js +5 -5
  62. package/dist/tsup/mod.cjs +10 -10
  63. package/dist/tsup/mod.d.cts +3 -3
  64. package/dist/tsup/mod.d.ts +3 -3
  65. package/dist/tsup/mod.js +9 -9
  66. package/dist/tsup/test/mod.cjs +11 -11
  67. package/dist/tsup/test/mod.d.cts +1 -1
  68. package/dist/tsup/test/mod.d.ts +1 -1
  69. package/dist/tsup/test/mod.js +10 -10
  70. package/dist/tsup/utils.cjs +8 -2
  71. package/dist/tsup/utils.cjs.map +1 -1
  72. package/dist/tsup/utils.d.cts +8 -1
  73. package/dist/tsup/utils.d.ts +8 -1
  74. package/dist/tsup/utils.js +7 -1
  75. package/package.json +5 -4
  76. package/src/actor/config.ts +10 -0
  77. package/src/actor/conn-drivers.ts +43 -1
  78. package/src/actor/conn-socket.ts +1 -1
  79. package/src/actor/conn.ts +22 -2
  80. package/src/actor/context.ts +1 -1
  81. package/src/actor/driver.ts +13 -2
  82. package/src/actor/instance.ts +248 -57
  83. package/src/actor/persisted.ts +7 -0
  84. package/src/actor/router-endpoints.ts +67 -45
  85. package/src/actor/router.ts +25 -17
  86. package/src/client/actor-conn.ts +9 -5
  87. package/src/common/cors.ts +57 -0
  88. package/src/common/log.ts +26 -5
  89. package/src/common/utils.ts +5 -9
  90. package/src/common/websocket-interface.ts +10 -0
  91. package/src/driver-helpers/utils.ts +1 -0
  92. package/src/drivers/engine/actor-driver.ts +261 -14
  93. package/src/drivers/engine/config.ts +2 -4
  94. package/src/drivers/file-system/actor.ts +3 -2
  95. package/src/drivers/file-system/global-state.ts +1 -1
  96. package/src/drivers/file-system/manager.ts +3 -0
  97. package/src/engine-process/mod.ts +22 -4
  98. package/src/inspector/config.ts +0 -45
  99. package/src/manager/gateway.ts +45 -32
  100. package/src/manager/hono-websocket-adapter.ts +31 -3
  101. package/src/manager/router.ts +11 -17
  102. package/src/registry/run-config.ts +2 -8
  103. package/src/remote-manager-driver/actor-http-client.ts +5 -8
  104. package/src/remote-manager-driver/actor-websocket-client.ts +2 -14
  105. package/src/remote-manager-driver/mod.ts +0 -1
  106. package/src/schemas/actor-persist/mod.ts +1 -1
  107. package/src/schemas/actor-persist/versioned.ts +22 -10
  108. package/src/utils.ts +26 -0
  109. package/dist/tsup/chunk-4B25D5OW.js.map +0 -1
  110. package/dist/tsup/chunk-6Z3YA6QR.cjs.map +0 -1
  111. package/dist/tsup/chunk-BIOPK7IB.cjs.map +0 -1
  112. package/dist/tsup/chunk-FETQGZN4.js.map +0 -1
  113. package/dist/tsup/chunk-GJPOIJHZ.js.map +0 -1
  114. package/dist/tsup/chunk-I7EJWHYV.js.map +0 -1
  115. package/dist/tsup/chunk-JKNDUKFI.js.map +0 -1
  116. package/dist/tsup/chunk-OAB7ECAB.cjs.map +0 -1
  117. package/dist/tsup/chunk-R6XOZKMU.cjs.map +0 -1
  118. package/dist/tsup/chunk-VJLGVVGP.cjs.map +0 -1
  119. /package/dist/tsup/{chunk-RPI45FGS.js.map → chunk-C4FPCW7T.js.map} +0 -0
  120. /package/dist/tsup/{chunk-ZVEDMBFT.js.map → chunk-CVLO2OOK.js.map} +0 -0
  121. /package/dist/tsup/{chunk-NDLOG2JH.js.map → chunk-EJXZYQ3N.js.map} +0 -0
  122. /package/dist/tsup/{chunk-UBCUW7HD.js.map → chunk-F7WVJXPB.js.map} +0 -0
  123. /package/dist/tsup/{chunk-JN6GPVFY.js.map → chunk-FLVL7RGH.js.map} +0 -0
  124. /package/dist/tsup/{chunk-EEXX243L.js.map → chunk-MQDXPGNE.js.map} +0 -0
@@ -2,16 +2,17 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkPELXJCJScjs = require('./chunk-PELXJCJS.cjs');
5
+ var _chunkGXIO5YOTcjs = require('./chunk-GXIO5YOT.cjs');
6
6
 
7
7
 
8
- var _chunkVJLGVVGPcjs = require('./chunk-VJLGVVGP.cjs');
8
+ var _chunk5N6F5PXDcjs = require('./chunk-5N6F5PXD.cjs');
9
9
 
10
10
 
11
11
 
12
12
 
13
13
 
14
- var _chunk6Z3YA6QRcjs = require('./chunk-6Z3YA6QR.cjs');
14
+
15
+ var _chunkYUBR6XCJcjs = require('./chunk-YUBR6XCJ.cjs');
15
16
 
16
17
 
17
18
 
@@ -580,7 +581,7 @@ function getValueLength(value) {
580
581
  } else if (value instanceof ArrayBuffer || value instanceof SharedArrayBuffer || value instanceof Uint8Array) {
581
582
  return value.byteLength;
582
583
  } else {
583
- _chunk6Z3YA6QRcjs.assertUnreachable.call(void 0, value);
584
+ _chunkYUBR6XCJcjs.assertUnreachable.call(void 0, value);
584
585
  }
585
586
  }
586
587
  async function inputDataToBuffer(data) {
@@ -606,7 +607,7 @@ async function parseMessage(value, opts) {
606
607
  if (buffer instanceof Buffer) {
607
608
  buffer = new Uint8Array(buffer);
608
609
  }
609
- return _chunkPELXJCJScjs.deserializeWithEncoding.call(void 0, opts.encoding, buffer, TO_SERVER_VERSIONED);
610
+ return _chunkGXIO5YOTcjs.deserializeWithEncoding.call(void 0, opts.encoding, buffer, TO_SERVER_VERSIONED);
610
611
  }
611
612
  async function processMessage(message, actor, conn, handler) {
612
613
  let actionId;
@@ -638,13 +639,13 @@ async function processMessage(message, actor, conn, handler) {
638
639
  isPromise: output instanceof Promise
639
640
  });
640
641
  conn._sendMessage(
641
- new (0, _chunkPELXJCJScjs.CachedSerializer)(
642
+ new (0, _chunkGXIO5YOTcjs.CachedSerializer)(
642
643
  {
643
644
  body: {
644
645
  tag: "ActionResponse",
645
646
  val: {
646
647
  id,
647
- output: _chunk6Z3YA6QRcjs.bufferToArrayBuffer.call(void 0,
648
+ output: _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0,
648
649
  cbor.encode(output)
649
650
  )
650
651
  }
@@ -675,10 +676,10 @@ async function processMessage(message, actor, conn, handler) {
675
676
  subscribe
676
677
  });
677
678
  } else {
678
- _chunk6Z3YA6QRcjs.assertUnreachable.call(void 0, message.body);
679
+ _chunkYUBR6XCJcjs.assertUnreachable.call(void 0, message.body);
679
680
  }
680
681
  } catch (error) {
681
- const { group, code, message: message2, metadata } = _chunk6Z3YA6QRcjs.deconstructError.call(void 0,
682
+ const { group, code, message: message2, metadata } = _chunkYUBR6XCJcjs.deconstructError.call(void 0,
682
683
  error,
683
684
  actor.rLog,
684
685
  {
@@ -695,7 +696,7 @@ async function processMessage(message, actor, conn, handler) {
695
696
  message: message2
696
697
  });
697
698
  conn._sendMessage(
698
- new (0, _chunkPELXJCJScjs.CachedSerializer)(
699
+ new (0, _chunkGXIO5YOTcjs.CachedSerializer)(
699
700
  {
700
701
  body: {
701
702
  tag: "Error",
@@ -703,7 +704,7 @@ async function processMessage(message, actor, conn, handler) {
703
704
  group,
704
705
  code,
705
706
  message: message2,
706
- metadata: _chunk6Z3YA6QRcjs.bufferToArrayBuffer.call(void 0,
707
+ metadata: _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0,
707
708
  cbor.encode(metadata)
708
709
  ),
709
710
  actionId: _nullishCoalesce(actionId, () => ( null))
@@ -721,15 +722,15 @@ async function processMessage(message, actor, conn, handler) {
721
722
  var ClientConfigSchema = _zod2.default.object({
722
723
  /** Endpoint to connect to for Rivet Engine or RivetKit manager API. */
723
724
  endpoint: _zod2.default.string().optional().transform(
724
- (x) => _nullishCoalesce(_nullishCoalesce(x, () => ( _chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"))), () => ( _chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_ENDPOINT")))
725
+ (x) => _nullishCoalesce(_nullishCoalesce(x, () => ( _chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"))), () => ( _chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_ENDPOINT")))
725
726
  ),
726
727
  /** Token to use to authenticate with the API. */
727
- token: _zod2.default.string().optional().transform((x) => _nullishCoalesce(x, () => ( _chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
728
+ token: _zod2.default.string().optional().transform((x) => _nullishCoalesce(x, () => ( _chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
728
729
  /** Namespace to connect to. */
729
- namespace: _zod2.default.string().default(() => _nullishCoalesce(_chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
730
+ namespace: _zod2.default.string().default(() => _nullishCoalesce(_chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
730
731
  /** Name of the runner. This is used to group together runners in to different pools. */
731
- runnerName: _zod2.default.string().default(() => _nullishCoalesce(_chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER"), () => ( "default"))),
732
- encoding: _chunkPELXJCJScjs.EncodingSchema.default("bare"),
732
+ runnerName: _zod2.default.string().default(() => _nullishCoalesce(_chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER"), () => ( "default"))),
733
+ encoding: _chunkGXIO5YOTcjs.EncodingSchema.default("bare"),
733
734
  transport: TransportSchema.default("websocket"),
734
735
  headers: _zod2.default.record(_zod2.default.string()).optional().default({}),
735
736
  // See RunConfig.getUpgradeWebSocket
@@ -741,9 +742,7 @@ var ClientConfigSchema = _zod2.default.object({
741
742
  // src/drivers/engine/config.ts
742
743
  var EngingConfigSchema = _zod.z.object({
743
744
  /** Unique key for this runner. Runners connecting a given key will replace any other runner connected with the same key. */
744
- runnerKey: _zod.z.string().default(
745
- () => _nullishCoalesce(_chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER_KEY"), () => ( crypto.randomUUID()))
746
- ),
745
+ runnerKey: _zod.z.string().optional().transform((x) => _nullishCoalesce(x, () => ( _chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER_KEY")))),
747
746
  /** How many actors this runner can run. */
748
747
  totalSlots: _zod.z.number().default(1e5)
749
748
  }).merge(ClientConfigSchema).default({});
@@ -751,43 +750,14 @@ var EngingConfigSchema = _zod.z.object({
751
750
  // src/inspector/config.ts
752
751
 
753
752
  var defaultTokenFn = () => {
754
- const envToken = _chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_TOKEN");
753
+ const envToken = _chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_TOKEN");
755
754
  if (envToken) {
756
755
  return envToken;
757
756
  }
758
757
  return "";
759
758
  };
760
759
  var defaultEnabled = () => {
761
- return _chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "NODE_ENV") !== "production" || !_chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_DISABLE");
762
- };
763
- var defaultInspectorOrigins = [
764
- "http://localhost:43708",
765
- "http://localhost:43709",
766
- "https://studio.rivet.gg",
767
- "https://inspect.rivet.dev",
768
- "https://dashboard.rivet.dev",
769
- "https://dashboard.staging.rivet.dev"
770
- ];
771
- var defaultCors = {
772
- origin: (origin) => {
773
- if (defaultInspectorOrigins.includes(origin) || origin.startsWith("https://") && origin.endsWith("rivet-dev.vercel.app")) {
774
- return origin;
775
- } else {
776
- return null;
777
- }
778
- },
779
- allowMethods: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
780
- allowHeaders: [
781
- "Authorization",
782
- "Content-Type",
783
- "User-Agent",
784
- "baggage",
785
- "sentry-trace",
786
- "x-rivet-actor",
787
- "x-rivet-target"
788
- ],
789
- maxAge: 3600,
790
- credentials: true
760
+ return _chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "NODE_ENV") !== "production" || !_chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_DISABLE");
791
761
  };
792
762
  var InspectorConfigSchema = _zod.z.object({
793
763
  enabled: _zod.z.boolean().or(
@@ -796,8 +766,6 @@ var InspectorConfigSchema = _zod.z.object({
796
766
  manager: _zod.z.boolean().optional().default(true)
797
767
  })
798
768
  ).optional().default(defaultEnabled),
799
- /** CORS configuration for the router. Uses Hono's CORS middleware options. */
800
- cors: _zod.z.custom().optional().default(() => defaultCors),
801
769
  /**
802
770
  * Token used to access the Inspector.
803
771
  */
@@ -810,8 +778,7 @@ var InspectorConfigSchema = _zod.z.object({
810
778
  defaultEndpoint: _zod.z.string().optional()
811
779
  }).optional().default(() => ({
812
780
  enabled: defaultEnabled(),
813
- token: defaultTokenFn,
814
- cors: defaultCors
781
+ token: defaultTokenFn
815
782
  }));
816
783
 
817
784
  // src/registry/run-config.ts
@@ -823,8 +790,6 @@ var DriverConfigSchema = _zod.z.object({
823
790
  });
824
791
  var RunnerConfigSchema = _zod.z.object({
825
792
  driver: DriverConfigSchema.optional(),
826
- /** CORS configuration for the router. Uses Hono's CORS middleware options. */
827
- cors: _zod.z.custom().optional(),
828
793
  /** @experimental */
829
794
  maxIncomingMessageSize: _zod.z.number().optional().default(65536),
830
795
  /** @experimental */
@@ -834,10 +799,10 @@ var RunnerConfigSchema = _zod.z.object({
834
799
  /** @experimental */
835
800
  defaultServerPort: _zod.z.number().default(6420),
836
801
  /** @experimental */
837
- runEngine: _zod.z.boolean().optional().default(() => _chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_RUN_ENGINE") === "1"),
802
+ runEngine: _zod.z.boolean().optional().default(() => _chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_RUN_ENGINE") === "1"),
838
803
  /** @experimental */
839
804
  runEngineVersion: _zod.z.string().optional().default(
840
- () => _nullishCoalesce(_chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_RUN_ENGINE_VERSION"), () => ( "25.8.2"))
805
+ () => _nullishCoalesce(_chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_RUN_ENGINE_VERSION"), () => ( _chunkYUBR6XCJcjs.VERSION))
841
806
  ),
842
807
  /** @experimental */
843
808
  overrideServerAddress: _zod.z.string().optional(),
@@ -850,7 +815,7 @@ var RunnerConfigSchema = _zod.z.object({
850
815
  * serverlessly (by the Rivet Engine for example).
851
816
  */
852
817
  runnerKind: _zod.z.enum(["serverless", "normal"]).optional().default(
853
- () => _chunk6Z3YA6QRcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER_KIND") === "serverless" ? "serverless" : "normal"
818
+ () => _chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER_KIND") === "serverless" ? "serverless" : "normal"
854
819
  ),
855
820
  totalSlots: _zod.z.number().optional(),
856
821
  /**
@@ -872,7 +837,7 @@ var RunnerConfigSchema = _zod.z.object({
872
837
  * */
873
838
  logging: _zod.z.object({
874
839
  baseLogger: _zod.z.custom().optional(),
875
- level: _chunkVJLGVVGPcjs.LogLevelSchema.optional()
840
+ level: _chunk5N6F5PXDcjs.LogLevelSchema.optional()
876
841
  }).optional().default({}),
877
842
  /**
878
843
  * @experimental
@@ -904,7 +869,7 @@ var RunnerConfigSchema = _zod.z.object({
904
869
  // src/driver-helpers/utils.ts
905
870
 
906
871
 
907
- // dist/schemas/actor-persist/v1.ts
872
+ // dist/schemas/actor-persist/v2.ts
908
873
 
909
874
  var config2 = /* @__PURE__ */ bare2.Config({});
910
875
  function readPersistedSubscription(bc) {
@@ -1002,6 +967,18 @@ function writePersistedScheduleEvent(bc, x) {
1002
967
  bare2.writeU64(bc, x.timestamp);
1003
968
  writePersistedScheduleEventKind(bc, x.kind);
1004
969
  }
970
+ function readPersistedHibernatableWebSocket(bc) {
971
+ return {
972
+ requestId: bare2.readData(bc),
973
+ lastSeenTimestamp: bare2.readU64(bc),
974
+ msgIndex: bare2.readU64(bc)
975
+ };
976
+ }
977
+ function writePersistedHibernatableWebSocket(bc, x) {
978
+ bare2.writeData(bc, x.requestId);
979
+ bare2.writeU64(bc, x.lastSeenTimestamp);
980
+ bare2.writeU64(bc, x.msgIndex);
981
+ }
1005
982
  function read2(bc) {
1006
983
  const len = bare2.readUintSafe(bc);
1007
984
  if (len === 0) {
@@ -1036,13 +1013,31 @@ function write3(bc, x) {
1036
1013
  writePersistedScheduleEvent(bc, x[i]);
1037
1014
  }
1038
1015
  }
1016
+ function read4(bc) {
1017
+ const len = bare2.readUintSafe(bc);
1018
+ if (len === 0) {
1019
+ return [];
1020
+ }
1021
+ const result = [readPersistedHibernatableWebSocket(bc)];
1022
+ for (let i = 1; i < len; i++) {
1023
+ result[i] = readPersistedHibernatableWebSocket(bc);
1024
+ }
1025
+ return result;
1026
+ }
1027
+ function write4(bc, x) {
1028
+ bare2.writeUintSafe(bc, x.length);
1029
+ for (let i = 0; i < x.length; i++) {
1030
+ writePersistedHibernatableWebSocket(bc, x[i]);
1031
+ }
1032
+ }
1039
1033
  function readPersistedActor(bc) {
1040
1034
  return {
1041
1035
  input: read12(bc),
1042
1036
  hasInitialized: bare2.readBool(bc),
1043
1037
  state: bare2.readData(bc),
1044
1038
  connections: read2(bc),
1045
- scheduledEvents: read3(bc)
1039
+ scheduledEvents: read3(bc),
1040
+ hibernatableWebSocket: read4(bc)
1046
1041
  };
1047
1042
  }
1048
1043
  function writePersistedActor(bc, x) {
@@ -1051,6 +1046,7 @@ function writePersistedActor(bc, x) {
1051
1046
  bare2.writeData(bc, x.state);
1052
1047
  write2(bc, x.connections);
1053
1048
  write3(bc, x.scheduledEvents);
1049
+ write4(bc, x.hibernatableWebSocket);
1054
1050
  }
1055
1051
  function encodePersistedActor(x) {
1056
1052
  const bc = new bare2.ByteCursor(
@@ -1070,8 +1066,15 @@ function decodePersistedActor(bytes) {
1070
1066
  }
1071
1067
 
1072
1068
  // src/schemas/actor-persist/versioned.ts
1073
- var CURRENT_VERSION2 = 1;
1069
+ var CURRENT_VERSION2 = 2;
1074
1070
  var migrations2 = /* @__PURE__ */ new Map();
1071
+ migrations2.set(
1072
+ 1,
1073
+ (v1Data) => ({
1074
+ ...v1Data,
1075
+ hibernatableWebSocket: []
1076
+ })
1077
+ );
1075
1078
  var PERSISTED_ACTOR_VERSIONED = createVersionedDataHandler({
1076
1079
  currentVersion: CURRENT_VERSION2,
1077
1080
  migrations: migrations2,
@@ -1082,11 +1085,12 @@ var PERSISTED_ACTOR_VERSIONED = createVersionedDataHandler({
1082
1085
  // src/driver-helpers/utils.ts
1083
1086
  function serializeEmptyPersistData(input) {
1084
1087
  const persistData = {
1085
- input: input !== void 0 ? _chunk6Z3YA6QRcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(input)) : null,
1088
+ input: input !== void 0 ? _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(input)) : null,
1086
1089
  hasInitialized: false,
1087
- state: _chunk6Z3YA6QRcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(void 0)),
1090
+ state: _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(void 0)),
1088
1091
  connections: [],
1089
- scheduledEvents: []
1092
+ scheduledEvents: [],
1093
+ hibernatableWebSocket: []
1090
1094
  };
1091
1095
  return PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(persistData);
1092
1096
  }
@@ -1108,4 +1112,4 @@ function serializeEmptyPersistData(input) {
1108
1112
 
1109
1113
 
1110
1114
  exports.createVersionedDataHandler = createVersionedDataHandler; exports.TO_SERVER_VERSIONED = TO_SERVER_VERSIONED; exports.TO_CLIENT_VERSIONED = TO_CLIENT_VERSIONED; exports.HTTP_ACTION_REQUEST_VERSIONED = HTTP_ACTION_REQUEST_VERSIONED; exports.HTTP_ACTION_RESPONSE_VERSIONED = HTTP_ACTION_RESPONSE_VERSIONED; exports.HTTP_RESPONSE_ERROR_VERSIONED = HTTP_RESPONSE_ERROR_VERSIONED; exports.PERSISTED_ACTOR_VERSIONED = PERSISTED_ACTOR_VERSIONED; exports.ActionContext = ActionContext; exports.inputDataToBuffer = inputDataToBuffer; exports.parseMessage = parseMessage; exports.processMessage = processMessage; exports.ClientConfigSchema = ClientConfigSchema; exports.DriverConfigSchema = DriverConfigSchema; exports.RunnerConfigSchema = RunnerConfigSchema; exports.serializeEmptyPersistData = serializeEmptyPersistData;
1111
- //# sourceMappingURL=chunk-BIOPK7IB.cjs.map
1115
+ //# sourceMappingURL=chunk-5TRXLS6X.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-5TRXLS6X.cjs","../../src/registry/run-config.ts","../../src/drivers/engine/config.ts","../../src/client/config.ts","../../src/actor/protocol/old.ts","../../src/common/versioned-data.ts","../schemas/client-protocol/v1.ts","../../src/schemas/client-protocol/versioned.ts","../../src/actor/action.ts","../../src/inspector/config.ts","../../src/driver-helpers/utils.ts","../schemas/actor-persist/v2.ts","../../src/schemas/actor-persist/versioned.ts"],"names":["config","migrations"],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-5TRXLS6X.cjs","sourcesContent":[null,"import type { Logger } from \"pino\";\nimport { z } from \"zod\";\nimport type { ActorDriverBuilder } from \"@/actor/driver\";\nimport { LogLevelSchema } from \"@/common/log\";\nimport { EngingConfigSchema as EngineConfigSchema } from \"@/drivers/engine/config\";\nimport { InspectorConfigSchema } from \"@/inspector/config\";\nimport type { ManagerDriverBuilder } from \"@/manager/driver\";\nimport type { GetUpgradeWebSocket } from \"@/utils\";\nimport { getEnvUniversal, VERSION } from \"@/utils\";\n\nexport const DriverConfigSchema = z.object({\n\t/** Machine-readable name to identify this driver by. */\n\tname: z.string(),\n\tmanager: z.custom<ManagerDriverBuilder>(),\n\tactor: z.custom<ActorDriverBuilder>(),\n});\n\nexport type DriverConfig = z.infer<typeof DriverConfigSchema>;\n\n/** Base config used for the actor config across all platforms. */\nexport const RunnerConfigSchema = z\n\t.object({\n\t\tdriver: DriverConfigSchema.optional(),\n\n\t\t/** @experimental */\n\t\tmaxIncomingMessageSize: z.number().optional().default(65_536),\n\n\t\t/** @experimental */\n\t\tinspector: InspectorConfigSchema,\n\n\t\t/** @experimental */\n\t\tdisableDefaultServer: z.boolean().optional().default(false),\n\n\t\t/** @experimental */\n\t\tdefaultServerPort: z.number().default(6420),\n\n\t\t/** @experimental */\n\t\trunEngine: z\n\t\t\t.boolean()\n\t\t\t.optional()\n\t\t\t.default(() => getEnvUniversal(\"RIVET_RUN_ENGINE\") === \"1\"),\n\n\t\t/** @experimental */\n\t\trunEngineVersion: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.default(\n\t\t\t\t() => getEnvUniversal(\"RIVET_RUN_ENGINE_VERSION\") ?? VERSION,\n\t\t\t),\n\n\t\t/** @experimental */\n\t\toverrideServerAddress: z.string().optional(),\n\n\t\t/** @experimental */\n\t\tdisableActorDriver: z.boolean().optional().default(false),\n\n\t\t/**\n\t\t * @experimental\n\t\t *\n\t\t * Whether to run runners normally or have them managed\n\t\t * serverlessly (by the Rivet Engine for example).\n\t\t */\n\t\trunnerKind: z\n\t\t\t.enum([\"serverless\", \"normal\"])\n\t\t\t.optional()\n\t\t\t.default(() =>\n\t\t\t\tgetEnvUniversal(\"RIVET_RUNNER_KIND\") === \"serverless\"\n\t\t\t\t\t? \"serverless\"\n\t\t\t\t\t: \"normal\",\n\t\t\t),\n\t\ttotalSlots: z.number().optional(),\n\n\t\t/**\n\t\t * @experimental\n\t\t *\n\t\t * Base path for the router. This is used to prefix all routes.\n\t\t * For example, if the base path is `/api`, then the route `/actors` will be\n\t\t * available at `/api/actors`.\n\t\t */\n\t\tbasePath: z.string().optional().default(\"/\"),\n\n\t\t/**\n\t\t * @experimental\n\t\t *\n\t\t * Disable welcome message.\n\t\t * */\n\t\tnoWelcome: z.boolean().optional().default(false),\n\n\t\t/**\n\t\t * @experimental\n\t\t * */\n\t\tlogging: z\n\t\t\t.object({\n\t\t\t\tbaseLogger: z.custom<Logger>().optional(),\n\t\t\t\tlevel: LogLevelSchema.optional(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.default({}),\n\n\t\t/**\n\t\t * @experimental\n\t\t *\n\t\t * Automatically configure serverless runners in the engine.\n\t\t * Can only be used when runnerKind is \"serverless\".\n\t\t * If true, uses default configuration. Can also provide custom configuration.\n\t\t */\n\t\tautoConfigureServerless: z\n\t\t\t.union([\n\t\t\t\tz.boolean(),\n\t\t\t\tz.object({\n\t\t\t\t\turl: z.string().optional(),\n\t\t\t\t\theaders: z.record(z.string(), z.string()).optional(),\n\t\t\t\t\tmaxRunners: z.number().optional(),\n\t\t\t\t\tminRunners: z.number().optional(),\n\t\t\t\t\trequestLifespan: z.number().optional(),\n\t\t\t\t\trunnersMargin: z.number().optional(),\n\t\t\t\t\tslotsPerRunner: z.number().optional(),\n\t\t\t\t\tmetadata: z.record(z.unknown()).optional(),\n\t\t\t\t}),\n\t\t\t])\n\t\t\t.optional(),\n\n\t\t// This is a function to allow for lazy configuration of upgradeWebSocket on the\n\t\t// fly. This is required since the dependencies that upgradeWebSocket\n\t\t// (specifically Node.js) can sometimes only be specified after the router is\n\t\t// created or must be imported async using `await import(...)`\n\t\tgetUpgradeWebSocket: z.custom<GetUpgradeWebSocket>().optional(),\n\t})\n\t.merge(EngineConfigSchema.removeDefault())\n\t.default({});\n\nexport type RunnerConfig = z.infer<typeof RunnerConfigSchema>;\nexport type RunnerConfigInput = z.input<typeof RunnerConfigSchema>;\n","import { z } from \"zod\";\nimport { ClientConfigSchema } from \"@/client/config\";\nimport { getEnvUniversal } from \"@/utils\";\n\nexport const EngingConfigSchema = z\n\t.object({\n\t\t/** Unique key for this runner. Runners connecting a given key will replace any other runner connected with the same key. */\n\t\trunnerKey: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.transform((x) => x ?? getEnvUniversal(\"RIVET_RUNNER_KEY\")),\n\n\t\t/** How many actors this runner can run. */\n\t\ttotalSlots: z.number().default(100_000),\n\t})\n\t// We include the client config since this includes the common properties like endpoint, namespace, etc.\n\t.merge(ClientConfigSchema)\n\t.default({});\n\nexport type EngineConfig = z.infer<typeof EngingConfigSchema>;\nexport type EngineConfigInput = z.input<typeof EngingConfigSchema>;\n","import z from \"zod\";\nimport { TransportSchema } from \"@/actor/protocol/old\";\nimport { EncodingSchema } from \"@/actor/protocol/serde\";\nimport { type GetUpgradeWebSocket, getEnvUniversal } from \"@/utils\";\n\nexport const ClientConfigSchema = z.object({\n\t/** Endpoint to connect to for Rivet Engine or RivetKit manager API. */\n\tendpoint: z\n\t\t.string()\n\t\t.optional()\n\t\t.transform(\n\t\t\t(x) =>\n\t\t\t\tx ??\n\t\t\t\tgetEnvUniversal(\"RIVET_ENGINE\") ??\n\t\t\t\tgetEnvUniversal(\"RIVET_ENDPOINT\"),\n\t\t),\n\n\t/** Token to use to authenticate with the API. */\n\ttoken: z\n\t\t.string()\n\t\t.optional()\n\t\t.transform((x) => x ?? getEnvUniversal(\"RIVET_TOKEN\")),\n\n\t/** Namespace to connect to. */\n\tnamespace: z\n\t\t.string()\n\t\t.default(() => getEnvUniversal(\"RIVET_NAMESPACE\") ?? \"default\"),\n\n\t/** Name of the runner. This is used to group together runners in to different pools. */\n\trunnerName: z\n\t\t.string()\n\t\t.default(() => getEnvUniversal(\"RIVET_RUNNER\") ?? \"default\"),\n\n\tencoding: EncodingSchema.default(\"bare\"),\n\n\ttransport: TransportSchema.default(\"websocket\"),\n\n\theaders: z.record(z.string()).optional().default({}),\n\n\t// See RunConfig.getUpgradeWebSocket\n\tgetUpgradeWebSocket: z.custom<GetUpgradeWebSocket>().optional(),\n\n\t/** Whether to automatically perform health checks when the client is created. */\n\tdisableHealthCheck: z.boolean().optional().default(false),\n});\n\nexport type ClientConfig = z.infer<typeof ClientConfigSchema>;\n\nexport type ClientConfigInput = z.input<typeof ClientConfigSchema>;\n","import * as cbor from \"cbor-x\";\nimport { z } from \"zod\";\nimport type { AnyDatabaseProvider } from \"@/actor/database\";\nimport * as errors from \"@/actor/errors\";\nimport {\n\tCachedSerializer,\n\ttype Encoding,\n\ttype InputData,\n} from \"@/actor/protocol/serde\";\nimport { deconstructError } from \"@/common/utils\";\nimport type * as protocol from \"@/schemas/client-protocol/mod\";\nimport {\n\tTO_CLIENT_VERSIONED,\n\tTO_SERVER_VERSIONED,\n} from \"@/schemas/client-protocol/versioned\";\nimport { deserializeWithEncoding } from \"@/serde\";\nimport { assertUnreachable, bufferToArrayBuffer } from \"../../utils\";\nimport { ActionContext } from \"../action\";\nimport type { Conn } from \"../conn\";\nimport type { ActorInstance } from \"../instance\";\n\nexport const TransportSchema = z.enum([\"websocket\", \"sse\"]);\n\n/**\n * Transport mechanism used to communicate between client & actor.\n */\nexport type Transport = z.infer<typeof TransportSchema>;\n\ninterface MessageEventOpts {\n\tencoding: Encoding;\n\tmaxIncomingMessageSize: number;\n}\n\nfunction getValueLength(value: InputData): number {\n\tif (typeof value === \"string\") {\n\t\treturn value.length;\n\t} else if (value instanceof Blob) {\n\t\treturn value.size;\n\t} else if (\n\t\tvalue instanceof ArrayBuffer ||\n\t\tvalue instanceof SharedArrayBuffer ||\n\t\tvalue instanceof Uint8Array\n\t) {\n\t\treturn value.byteLength;\n\t} else {\n\t\tassertUnreachable(value);\n\t}\n}\n\nexport async function inputDataToBuffer(\n\tdata: InputData,\n): Promise<Uint8Array | string> {\n\tif (typeof data === \"string\") {\n\t\treturn data;\n\t} else if (data instanceof Blob) {\n\t\tconst arrayBuffer = await data.arrayBuffer();\n\t\treturn new Uint8Array(arrayBuffer);\n\t} else if (data instanceof Uint8Array) {\n\t\treturn data;\n\t} else if (\n\t\tdata instanceof ArrayBuffer ||\n\t\tdata instanceof SharedArrayBuffer\n\t) {\n\t\treturn new Uint8Array(data);\n\t} else {\n\t\tthrow new errors.MalformedMessage();\n\t}\n}\n\nexport async function parseMessage(\n\tvalue: InputData,\n\topts: MessageEventOpts,\n): Promise<protocol.ToServer> {\n\t// Validate value length\n\tconst length = getValueLength(value);\n\tif (length > opts.maxIncomingMessageSize) {\n\t\tthrow new errors.MessageTooLong();\n\t}\n\n\t// Convert value\n\tlet buffer = await inputDataToBuffer(value);\n\n\t// HACK: For some reason, the output buffer needs to be cloned when using BARE encoding\n\t//\n\t// THis is likely because the input data is of type `Buffer` and there is an inconsistency in implementation that I am not aware of\n\tif (buffer instanceof Buffer) {\n\t\tbuffer = new Uint8Array(buffer);\n\t}\n\n\t// Deserialize message\n\treturn deserializeWithEncoding(opts.encoding, buffer, TO_SERVER_VERSIONED);\n}\n\nexport interface ProcessMessageHandler<\n\tS,\n\tCP,\n\tCS,\n\tV,\n\tI,\n\tDB extends AnyDatabaseProvider,\n> {\n\tonExecuteAction?: (\n\t\tctx: ActionContext<S, CP, CS, V, I, DB>,\n\t\tname: string,\n\t\targs: unknown[],\n\t) => Promise<unknown>;\n\tonSubscribe?: (\n\t\teventName: string,\n\t\tconn: Conn<S, CP, CS, V, I, DB>,\n\t) => Promise<void>;\n\tonUnsubscribe?: (\n\t\teventName: string,\n\t\tconn: Conn<S, CP, CS, V, I, DB>,\n\t) => Promise<void>;\n}\n\nexport async function processMessage<\n\tS,\n\tCP,\n\tCS,\n\tV,\n\tI,\n\tDB extends AnyDatabaseProvider,\n>(\n\tmessage: protocol.ToServer,\n\tactor: ActorInstance<S, CP, CS, V, I, DB>,\n\tconn: Conn<S, CP, CS, V, I, DB>,\n\thandler: ProcessMessageHandler<S, CP, CS, V, I, DB>,\n) {\n\tlet actionId: bigint | undefined;\n\tlet actionName: string | undefined;\n\n\ttry {\n\t\tif (message.body.tag === \"ActionRequest\") {\n\t\t\t// Action request\n\n\t\t\tif (handler.onExecuteAction === undefined) {\n\t\t\t\tthrow new errors.Unsupported(\"Action\");\n\t\t\t}\n\n\t\t\tconst { id, name, args: argsRaw } = message.body.val;\n\t\t\tactionId = id;\n\t\t\tactionName = name;\n\t\t\tconst args = cbor.decode(new Uint8Array(argsRaw));\n\n\t\t\tactor.rLog.debug({\n\t\t\t\tmsg: \"processing action request\",\n\t\t\t\tactionId: id,\n\t\t\t\tactionName: name,\n\t\t\t});\n\n\t\t\tconst ctx = new ActionContext<S, CP, CS, V, I, DB>(\n\t\t\t\tactor.actorContext,\n\t\t\t\tconn,\n\t\t\t);\n\n\t\t\t// Process the action request and wait for the result\n\t\t\t// This will wait for async actions to complete\n\t\t\tconst output = await handler.onExecuteAction(ctx, name, args);\n\n\t\t\tactor.rLog.debug({\n\t\t\t\tmsg: \"sending action response\",\n\t\t\t\tactionId: id,\n\t\t\t\tactionName: name,\n\t\t\t\toutputType: typeof output,\n\t\t\t\tisPromise: output instanceof Promise,\n\t\t\t});\n\n\t\t\t// Send the response back to the client\n\t\t\tconn._sendMessage(\n\t\t\t\tnew CachedSerializer<protocol.ToClient>(\n\t\t\t\t\t{\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\ttag: \"ActionResponse\",\n\t\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\t\tid: id,\n\t\t\t\t\t\t\t\toutput: bufferToArrayBuffer(\n\t\t\t\t\t\t\t\t\tcbor.encode(output),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTO_CLIENT_VERSIONED,\n\t\t\t\t),\n\t\t\t);\n\n\t\t\tactor.rLog.debug({ msg: \"action response sent\", id, name: name });\n\t\t} else if (message.body.tag === \"SubscriptionRequest\") {\n\t\t\t// Subscription request\n\n\t\t\tif (\n\t\t\t\thandler.onSubscribe === undefined ||\n\t\t\t\thandler.onUnsubscribe === undefined\n\t\t\t) {\n\t\t\t\tthrow new errors.Unsupported(\"Subscriptions\");\n\t\t\t}\n\n\t\t\tconst { eventName, subscribe } = message.body.val;\n\t\t\tactor.rLog.debug({\n\t\t\t\tmsg: \"processing subscription request\",\n\t\t\t\teventName,\n\t\t\t\tsubscribe,\n\t\t\t});\n\n\t\t\tif (subscribe) {\n\t\t\t\tawait handler.onSubscribe(eventName, conn);\n\t\t\t} else {\n\t\t\t\tawait handler.onUnsubscribe(eventName, conn);\n\t\t\t}\n\n\t\t\tactor.rLog.debug({\n\t\t\t\tmsg: \"subscription request completed\",\n\t\t\t\teventName,\n\t\t\t\tsubscribe,\n\t\t\t});\n\t\t} else {\n\t\t\tassertUnreachable(message.body);\n\t\t}\n\t} catch (error) {\n\t\tconst { group, code, message, metadata } = deconstructError(\n\t\t\terror,\n\t\t\tactor.rLog,\n\t\t\t{\n\t\t\t\tconnectionId: conn.id,\n\t\t\t\tactionId,\n\t\t\t\tactionName,\n\t\t\t},\n\t\t);\n\n\t\tactor.rLog.debug({\n\t\t\tmsg: \"sending error response\",\n\t\t\tactionId,\n\t\t\tactionName,\n\t\t\tcode,\n\t\t\tmessage,\n\t\t});\n\n\t\t// Build response\n\t\tconn._sendMessage(\n\t\t\tnew CachedSerializer<protocol.ToClient>(\n\t\t\t\t{\n\t\t\t\t\tbody: {\n\t\t\t\t\t\ttag: \"Error\",\n\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\tmetadata: bufferToArrayBuffer(\n\t\t\t\t\t\t\t\tcbor.encode(metadata),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tactionId: actionId ?? null,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTO_CLIENT_VERSIONED,\n\t\t\t),\n\t\t);\n\n\t\tactor.rLog.debug({ msg: \"error response sent\", actionId, actionName });\n\t}\n}\n\n///**\n// * Use `CachedSerializer` if serializing the same data repeatedly.\n// */\n//export function serialize<T>(value: T, encoding: Encoding): OutputData {\n//\tif (encoding === \"json\") {\n//\t\treturn JSON.stringify(value);\n//\t} else if (encoding === \"cbor\") {\n//\t\t// TODO: Remove this hack, but cbor-x can't handle anything extra in data structures\n//\t\tconst cleanValue = JSON.parse(JSON.stringify(value));\n//\t\treturn cbor.encode(cleanValue);\n//\t} else {\n//\t\tassertUnreachable(encoding);\n//\t}\n//}\n//\n//export async function deserialize(data: InputData, encoding: Encoding) {\n//\tif (encoding === \"json\") {\n//\t\tif (typeof data !== \"string\") {\n//\t\t\tactor.rLog.warn(\"received non-string for json parse\");\n//\t\t\tthrow new errors.MalformedMessage();\n//\t\t} else {\n//\t\t\treturn JSON.parse(data);\n//\t\t}\n//\t} else if (encoding === \"cbor\") {\n//\t\tif (data instanceof Blob) {\n//\t\t\tconst arrayBuffer = await data.arrayBuffer();\n//\t\t\treturn cbor.decode(new Uint8Array(arrayBuffer));\n//\t\t} else if (data instanceof Uint8Array) {\n//\t\t\treturn cbor.decode(data);\n//\t\t} else if (\n//\t\t\tdata instanceof ArrayBuffer ||\n//\t\t\tdata instanceof SharedArrayBuffer\n//\t\t) {\n//\t\t\treturn cbor.decode(new Uint8Array(data));\n//\t\t} else {\n//\t\t\tactor.rLog.warn(\"received non-binary type for cbor parse\");\n//\t\t\tthrow new errors.MalformedMessage();\n//\t\t}\n//\t} else {\n//\t\tassertUnreachable(encoding);\n//\t}\n//}\n","export interface VersionedData<T> {\n\tversion: number;\n\tdata: T;\n}\n\nexport type MigrationFn<TFrom, TTo> = (data: TFrom) => TTo;\n\nexport interface VersionedDataConfig<T> {\n\tcurrentVersion: number;\n\tmigrations: Map<number, MigrationFn<any, any>>;\n\tserializeVersion: (data: T) => Uint8Array;\n\tdeserializeVersion: (bytes: Uint8Array) => T;\n}\n\nexport class VersionedDataHandler<T> {\n\tconstructor(private config: VersionedDataConfig<T>) {}\n\n\tserializeWithEmbeddedVersion(data: T): Uint8Array {\n\t\tconst versioned: VersionedData<Uint8Array> = {\n\t\t\tversion: this.config.currentVersion,\n\t\t\tdata: this.config.serializeVersion(data),\n\t\t};\n\n\t\treturn this.embedVersion(versioned);\n\t}\n\n\tdeserializeWithEmbeddedVersion(bytes: Uint8Array): T {\n\t\tconst versioned = this.extractVersion(bytes);\n\t\treturn this.deserialize(versioned.data, versioned.version);\n\t}\n\n\tserialize(data: T, version: number): Uint8Array {\n\t\treturn this.config.serializeVersion(data);\n\t}\n\n\tdeserialize(bytes: Uint8Array, version: number): T {\n\t\tif (version === this.config.currentVersion) {\n\t\t\treturn this.config.deserializeVersion(bytes);\n\t\t}\n\n\t\tif (version > this.config.currentVersion) {\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot decode data from version ${version}, current version is ${this.config.currentVersion}`,\n\t\t\t);\n\t\t}\n\n\t\tlet currentData: any = this.config.deserializeVersion(bytes);\n\t\tlet currentVersion = version;\n\n\t\twhile (currentVersion < this.config.currentVersion) {\n\t\t\tconst migration = this.config.migrations.get(currentVersion);\n\t\t\tif (!migration) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`No migration found from version ${currentVersion} to ${currentVersion + 1}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcurrentData = migration(currentData);\n\t\t\tcurrentVersion++;\n\t\t}\n\n\t\treturn currentData;\n\t}\n\n\tprivate embedVersion(data: VersionedData<Uint8Array>): Uint8Array {\n\t\tconst versionBytes = new Uint8Array(2);\n\t\tnew DataView(versionBytes.buffer).setUint16(0, data.version, true);\n\n\t\tconst result = new Uint8Array(versionBytes.length + data.data.length);\n\t\tresult.set(versionBytes);\n\t\tresult.set(data.data, versionBytes.length);\n\n\t\treturn result;\n\t}\n\n\tprivate extractVersion(bytes: Uint8Array): VersionedData<Uint8Array> {\n\t\tif (bytes.length < 2) {\n\t\t\tthrow new Error(\"Invalid versioned data: too short\");\n\t\t}\n\n\t\tconst version = new DataView(bytes.buffer, bytes.byteOffset).getUint16(\n\t\t\t0,\n\t\t\ttrue,\n\t\t);\n\t\tconst data = bytes.slice(2);\n\n\t\treturn { version, data };\n\t}\n}\n\nexport function createVersionedDataHandler<T>(\n\tconfig: VersionedDataConfig<T>,\n): VersionedDataHandler<T> {\n\treturn new VersionedDataHandler(config);\n}\n","import * as bare from \"@bare-ts/lib\"\n\nconst config = /* @__PURE__ */ bare.Config({})\n\nexport type uint = bigint\n\nexport type Init = {\n readonly actorId: string,\n readonly connectionId: string,\n readonly connectionToken: string,\n}\n\nexport function readInit(bc: bare.ByteCursor): Init {\n return {\n actorId: bare.readString(bc),\n connectionId: bare.readString(bc),\n connectionToken: bare.readString(bc),\n }\n}\n\nexport function writeInit(bc: bare.ByteCursor, x: Init): void {\n bare.writeString(bc, x.actorId)\n bare.writeString(bc, x.connectionId)\n bare.writeString(bc, x.connectionToken)\n}\n\nfunction read0(bc: bare.ByteCursor): ArrayBuffer | null {\n return bare.readBool(bc)\n ? bare.readData(bc)\n : null\n}\n\nfunction write0(bc: bare.ByteCursor, x: ArrayBuffer | null): void {\n bare.writeBool(bc, x !== null)\n if (x !== null) {\n bare.writeData(bc, x)\n }\n}\n\nfunction read1(bc: bare.ByteCursor): uint | null {\n return bare.readBool(bc)\n ? bare.readUint(bc)\n : null\n}\n\nfunction write1(bc: bare.ByteCursor, x: uint | null): void {\n bare.writeBool(bc, x !== null)\n if (x !== null) {\n bare.writeUint(bc, x)\n }\n}\n\nexport type Error = {\n readonly group: string,\n readonly code: string,\n readonly message: string,\n readonly metadata: ArrayBuffer | null,\n readonly actionId: uint | null,\n}\n\nexport function readError(bc: bare.ByteCursor): Error {\n return {\n group: bare.readString(bc),\n code: bare.readString(bc),\n message: bare.readString(bc),\n metadata: read0(bc),\n actionId: read1(bc),\n }\n}\n\nexport function writeError(bc: bare.ByteCursor, x: Error): void {\n bare.writeString(bc, x.group)\n bare.writeString(bc, x.code)\n bare.writeString(bc, x.message)\n write0(bc, x.metadata)\n write1(bc, x.actionId)\n}\n\nexport type ActionResponse = {\n readonly id: uint,\n readonly output: ArrayBuffer,\n}\n\nexport function readActionResponse(bc: bare.ByteCursor): ActionResponse {\n return {\n id: bare.readUint(bc),\n output: bare.readData(bc),\n }\n}\n\nexport function writeActionResponse(bc: bare.ByteCursor, x: ActionResponse): void {\n bare.writeUint(bc, x.id)\n bare.writeData(bc, x.output)\n}\n\nexport type Event = {\n readonly name: string,\n readonly args: ArrayBuffer,\n}\n\nexport function readEvent(bc: bare.ByteCursor): Event {\n return {\n name: bare.readString(bc),\n args: bare.readData(bc),\n }\n}\n\nexport function writeEvent(bc: bare.ByteCursor, x: Event): void {\n bare.writeString(bc, x.name)\n bare.writeData(bc, x.args)\n}\n\nexport type ToClientBody =\n | { readonly tag: \"Init\", readonly val: Init }\n | { readonly tag: \"Error\", readonly val: Error }\n | { readonly tag: \"ActionResponse\", readonly val: ActionResponse }\n | { readonly tag: \"Event\", readonly val: Event }\n\nexport function readToClientBody(bc: bare.ByteCursor): ToClientBody {\n const offset = bc.offset\n const tag = bare.readU8(bc)\n switch (tag) {\n case 0:\n return { tag: \"Init\", val: readInit(bc) }\n case 1:\n return { tag: \"Error\", val: readError(bc) }\n case 2:\n return { tag: \"ActionResponse\", val: readActionResponse(bc) }\n case 3:\n return { tag: \"Event\", val: readEvent(bc) }\n default: {\n bc.offset = offset\n throw new bare.BareError(offset, \"invalid tag\")\n }\n }\n}\n\nexport function writeToClientBody(bc: bare.ByteCursor, x: ToClientBody): void {\n switch (x.tag) {\n case \"Init\": {\n bare.writeU8(bc, 0)\n writeInit(bc, x.val)\n break\n }\n case \"Error\": {\n bare.writeU8(bc, 1)\n writeError(bc, x.val)\n break\n }\n case \"ActionResponse\": {\n bare.writeU8(bc, 2)\n writeActionResponse(bc, x.val)\n break\n }\n case \"Event\": {\n bare.writeU8(bc, 3)\n writeEvent(bc, x.val)\n break\n }\n }\n}\n\nexport type ToClient = {\n readonly body: ToClientBody,\n}\n\nexport function readToClient(bc: bare.ByteCursor): ToClient {\n return {\n body: readToClientBody(bc),\n }\n}\n\nexport function writeToClient(bc: bare.ByteCursor, x: ToClient): void {\n writeToClientBody(bc, x.body)\n}\n\nexport function encodeToClient(x: ToClient): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeToClient(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeToClient(bytes: Uint8Array): ToClient {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readToClient(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n\nexport type ActionRequest = {\n readonly id: uint,\n readonly name: string,\n readonly args: ArrayBuffer,\n}\n\nexport function readActionRequest(bc: bare.ByteCursor): ActionRequest {\n return {\n id: bare.readUint(bc),\n name: bare.readString(bc),\n args: bare.readData(bc),\n }\n}\n\nexport function writeActionRequest(bc: bare.ByteCursor, x: ActionRequest): void {\n bare.writeUint(bc, x.id)\n bare.writeString(bc, x.name)\n bare.writeData(bc, x.args)\n}\n\nexport type SubscriptionRequest = {\n readonly eventName: string,\n readonly subscribe: boolean,\n}\n\nexport function readSubscriptionRequest(bc: bare.ByteCursor): SubscriptionRequest {\n return {\n eventName: bare.readString(bc),\n subscribe: bare.readBool(bc),\n }\n}\n\nexport function writeSubscriptionRequest(bc: bare.ByteCursor, x: SubscriptionRequest): void {\n bare.writeString(bc, x.eventName)\n bare.writeBool(bc, x.subscribe)\n}\n\nexport type ToServerBody =\n | { readonly tag: \"ActionRequest\", readonly val: ActionRequest }\n | { readonly tag: \"SubscriptionRequest\", readonly val: SubscriptionRequest }\n\nexport function readToServerBody(bc: bare.ByteCursor): ToServerBody {\n const offset = bc.offset\n const tag = bare.readU8(bc)\n switch (tag) {\n case 0:\n return { tag: \"ActionRequest\", val: readActionRequest(bc) }\n case 1:\n return { tag: \"SubscriptionRequest\", val: readSubscriptionRequest(bc) }\n default: {\n bc.offset = offset\n throw new bare.BareError(offset, \"invalid tag\")\n }\n }\n}\n\nexport function writeToServerBody(bc: bare.ByteCursor, x: ToServerBody): void {\n switch (x.tag) {\n case \"ActionRequest\": {\n bare.writeU8(bc, 0)\n writeActionRequest(bc, x.val)\n break\n }\n case \"SubscriptionRequest\": {\n bare.writeU8(bc, 1)\n writeSubscriptionRequest(bc, x.val)\n break\n }\n }\n}\n\nexport type ToServer = {\n readonly body: ToServerBody,\n}\n\nexport function readToServer(bc: bare.ByteCursor): ToServer {\n return {\n body: readToServerBody(bc),\n }\n}\n\nexport function writeToServer(bc: bare.ByteCursor, x: ToServer): void {\n writeToServerBody(bc, x.body)\n}\n\nexport function encodeToServer(x: ToServer): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeToServer(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeToServer(bytes: Uint8Array): ToServer {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readToServer(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n\nexport type HttpActionRequest = {\n readonly args: ArrayBuffer,\n}\n\nexport function readHttpActionRequest(bc: bare.ByteCursor): HttpActionRequest {\n return {\n args: bare.readData(bc),\n }\n}\n\nexport function writeHttpActionRequest(bc: bare.ByteCursor, x: HttpActionRequest): void {\n bare.writeData(bc, x.args)\n}\n\nexport function encodeHttpActionRequest(x: HttpActionRequest): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeHttpActionRequest(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeHttpActionRequest(bytes: Uint8Array): HttpActionRequest {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readHttpActionRequest(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n\nexport type HttpActionResponse = {\n readonly output: ArrayBuffer,\n}\n\nexport function readHttpActionResponse(bc: bare.ByteCursor): HttpActionResponse {\n return {\n output: bare.readData(bc),\n }\n}\n\nexport function writeHttpActionResponse(bc: bare.ByteCursor, x: HttpActionResponse): void {\n bare.writeData(bc, x.output)\n}\n\nexport function encodeHttpActionResponse(x: HttpActionResponse): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeHttpActionResponse(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeHttpActionResponse(bytes: Uint8Array): HttpActionResponse {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readHttpActionResponse(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n\nexport type HttpResponseError = {\n readonly group: string,\n readonly code: string,\n readonly message: string,\n readonly metadata: ArrayBuffer | null,\n}\n\nexport function readHttpResponseError(bc: bare.ByteCursor): HttpResponseError {\n return {\n group: bare.readString(bc),\n code: bare.readString(bc),\n message: bare.readString(bc),\n metadata: read0(bc),\n }\n}\n\nexport function writeHttpResponseError(bc: bare.ByteCursor, x: HttpResponseError): void {\n bare.writeString(bc, x.group)\n bare.writeString(bc, x.code)\n bare.writeString(bc, x.message)\n write0(bc, x.metadata)\n}\n\nexport function encodeHttpResponseError(x: HttpResponseError): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeHttpResponseError(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeHttpResponseError(bytes: Uint8Array): HttpResponseError {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readHttpResponseError(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n\nexport type HttpResolveRequest = null\n\nexport type HttpResolveResponse = {\n readonly actorId: string,\n}\n\nexport function readHttpResolveResponse(bc: bare.ByteCursor): HttpResolveResponse {\n return {\n actorId: bare.readString(bc),\n }\n}\n\nexport function writeHttpResolveResponse(bc: bare.ByteCursor, x: HttpResolveResponse): void {\n bare.writeString(bc, x.actorId)\n}\n\nexport function encodeHttpResolveResponse(x: HttpResolveResponse): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeHttpResolveResponse(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeHttpResolveResponse(bytes: Uint8Array): HttpResolveResponse {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readHttpResolveResponse(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n","import {\n\tcreateVersionedDataHandler,\n\ttype MigrationFn,\n} from \"@/common/versioned-data\";\nimport * as v1 from \"../../../dist/schemas/client-protocol/v1\";\n\nexport const CURRENT_VERSION = 1;\n\nconst migrations = new Map<number, MigrationFn<any, any>>();\n\nexport const TO_SERVER_VERSIONED = createVersionedDataHandler<v1.ToServer>({\n\tcurrentVersion: CURRENT_VERSION,\n\tmigrations,\n\tserializeVersion: (data) => v1.encodeToServer(data),\n\tdeserializeVersion: (bytes) => v1.decodeToServer(bytes),\n});\n\nexport const TO_CLIENT_VERSIONED = createVersionedDataHandler<v1.ToClient>({\n\tcurrentVersion: CURRENT_VERSION,\n\tmigrations,\n\tserializeVersion: (data) => v1.encodeToClient(data),\n\tdeserializeVersion: (bytes) => v1.decodeToClient(bytes),\n});\n\nexport const HTTP_ACTION_REQUEST_VERSIONED =\n\tcreateVersionedDataHandler<v1.HttpActionRequest>({\n\t\tcurrentVersion: CURRENT_VERSION,\n\t\tmigrations,\n\t\tserializeVersion: (data) => v1.encodeHttpActionRequest(data),\n\t\tdeserializeVersion: (bytes) => v1.decodeHttpActionRequest(bytes),\n\t});\n\nexport const HTTP_ACTION_RESPONSE_VERSIONED =\n\tcreateVersionedDataHandler<v1.HttpActionResponse>({\n\t\tcurrentVersion: CURRENT_VERSION,\n\t\tmigrations,\n\t\tserializeVersion: (data) => v1.encodeHttpActionResponse(data),\n\t\tdeserializeVersion: (bytes) => v1.decodeHttpActionResponse(bytes),\n\t});\n\nexport const HTTP_RESPONSE_ERROR_VERSIONED =\n\tcreateVersionedDataHandler<v1.HttpResponseError>({\n\t\tcurrentVersion: CURRENT_VERSION,\n\t\tmigrations,\n\t\tserializeVersion: (data) => v1.encodeHttpResponseError(data),\n\t\tdeserializeVersion: (bytes) => v1.decodeHttpResponseError(bytes),\n\t});\n\nexport const HTTP_RESOLVE_REQUEST_VERSIONED =\n\tcreateVersionedDataHandler<v1.HttpResolveRequest>({\n\t\tcurrentVersion: CURRENT_VERSION,\n\t\tmigrations,\n\t\tserializeVersion: (_) => new Uint8Array(),\n\t\tdeserializeVersion: (bytes) => null,\n\t});\n\nexport const HTTP_RESOLVE_RESPONSE_VERSIONED =\n\tcreateVersionedDataHandler<v1.HttpResolveResponse>({\n\t\tcurrentVersion: CURRENT_VERSION,\n\t\tmigrations,\n\t\tserializeVersion: (data) => v1.encodeHttpResolveResponse(data),\n\t\tdeserializeVersion: (bytes) => v1.decodeHttpResolveResponse(bytes),\n\t});\n","import type { ActorKey } from \"@/actor/mod\";\nimport type { Client } from \"@/client/client\";\nimport type { Logger } from \"@/common/log\";\nimport type { Registry } from \"@/registry/mod\";\nimport type { Conn, ConnId } from \"./conn\";\nimport type { ActorContext } from \"./context\";\nimport type { AnyDatabaseProvider, InferDatabaseClient } from \"./database\";\nimport type { SaveStateOptions } from \"./instance\";\nimport type { Schedule } from \"./schedule\";\n\n/**\n * Context for a remote procedure call.\n *\n * @typeParam A Actor this action belongs to\n */\nexport class ActionContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n> {\n\t#actorContext: ActorContext<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase\n\t>;\n\n\t/**\n\t * Should not be called directly.\n\t *\n\t * @param actorContext - The actor context\n\t * @param conn - The connection associated with the action\n\t */\n\tconstructor(\n\t\tactorContext: ActorContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase\n\t\t>,\n\t\tpublic readonly conn: Conn<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase\n\t\t>,\n\t) {\n\t\tthis.#actorContext = actorContext;\n\t}\n\n\t/**\n\t * Get the actor state\n\t */\n\tget state(): TState {\n\t\treturn this.#actorContext.state;\n\t}\n\n\t/**\n\t * Get the actor variables\n\t */\n\tget vars(): TVars {\n\t\treturn this.#actorContext.vars;\n\t}\n\n\t/**\n\t * Broadcasts an event to all connected clients.\n\t */\n\tbroadcast(name: string, ...args: any[]): void {\n\t\tthis.#actorContext.broadcast(name, ...args);\n\t}\n\n\t/**\n\t * Gets the logger instance.\n\t */\n\tget log(): Logger {\n\t\treturn this.#actorContext.log;\n\t}\n\n\t/**\n\t * Gets actor ID.\n\t */\n\tget actorId(): string {\n\t\treturn this.#actorContext.actorId;\n\t}\n\n\t/**\n\t * Gets the actor name.\n\t */\n\tget name(): string {\n\t\treturn this.#actorContext.name;\n\t}\n\n\t/**\n\t * Gets the actor key.\n\t */\n\tget key(): ActorKey {\n\t\treturn this.#actorContext.key;\n\t}\n\n\t/**\n\t * Gets the region.\n\t */\n\tget region(): string {\n\t\treturn this.#actorContext.region;\n\t}\n\n\t/**\n\t * Gets the scheduler.\n\t */\n\tget schedule(): Schedule {\n\t\treturn this.#actorContext.schedule;\n\t}\n\n\t/**\n\t * Gets the map of connections.\n\t */\n\tget conns(): Map<\n\t\tConnId,\n\t\tConn<TState, TConnParams, TConnState, TVars, TInput, TDatabase>\n\t> {\n\t\treturn this.#actorContext.conns;\n\t}\n\n\t/**\n\t * Returns the client for the given registry.\n\t */\n\tclient<R extends Registry<any>>(): Client<R> {\n\t\treturn this.#actorContext.client<R>();\n\t}\n\n\t/**\n\t * @experimental\n\t */\n\tget db(): InferDatabaseClient<TDatabase> {\n\t\treturn this.#actorContext.db;\n\t}\n\n\t/**\n\t * Forces the state to get saved.\n\t */\n\tasync saveState(opts: SaveStateOptions): Promise<void> {\n\t\treturn this.#actorContext.saveState(opts);\n\t}\n\n\t/**\n\t * Prevents the actor from sleeping until promise is complete.\n\t */\n\twaitUntil(promise: Promise<void>): void {\n\t\tthis.#actorContext.waitUntil(promise);\n\t}\n\n\t/**\n\t * AbortSignal that fires when the actor is stopping.\n\t */\n\tget abortSignal(): AbortSignal {\n\t\treturn this.#actorContext.abortSignal;\n\t}\n\n\t/**\n\t * Forces the actor to sleep.\n\t *\n\t * Not supported on all drivers.\n\t *\n\t * @experimental\n\t */\n\tsleep() {\n\t\tthis.#actorContext.sleep();\n\t}\n}\n","import { z } from \"zod\";\nimport { getEnvUniversal } from \"@/utils\";\n\nconst defaultTokenFn = () => {\n\tconst envToken = getEnvUniversal(\"RIVETKIT_INSPECTOR_TOKEN\");\n\n\tif (envToken) {\n\t\treturn envToken;\n\t}\n\n\treturn \"\";\n};\n\nconst defaultEnabled = () => {\n\treturn (\n\t\tgetEnvUniversal(\"NODE_ENV\") !== \"production\" ||\n\t\t!getEnvUniversal(\"RIVETKIT_INSPECTOR_DISABLE\")\n\t);\n};\n\nexport const InspectorConfigSchema = z\n\t.object({\n\t\tenabled: z\n\t\t\t.boolean()\n\t\t\t.or(\n\t\t\t\tz.object({\n\t\t\t\t\tactor: z.boolean().optional().default(true),\n\t\t\t\t\tmanager: z.boolean().optional().default(true),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional()\n\t\t\t.default(defaultEnabled),\n\n\t\t/**\n\t\t * Token used to access the Inspector.\n\t\t */\n\t\ttoken: z\n\t\t\t.function()\n\t\t\t.returns(z.string())\n\t\t\t.optional()\n\t\t\t.default(() => defaultTokenFn),\n\n\t\t/**\n\t\t * Default RivetKit server endpoint for Rivet Inspector to connect to. This should be the same endpoint as what you use for your Rivet client to connect to RivetKit.\n\t\t *\n\t\t * This is a convenience property just for printing out the inspector URL.\n\t\t */\n\t\tdefaultEndpoint: z.string().optional(),\n\t})\n\t.optional()\n\t.default(() => ({\n\t\tenabled: defaultEnabled(),\n\t\ttoken: defaultTokenFn,\n\t}));\nexport type InspectorConfig = z.infer<typeof InspectorConfigSchema>;\n","import * as cbor from \"cbor-x\";\nimport type * as schema from \"@/schemas/actor-persist/mod\";\nimport { PERSISTED_ACTOR_VERSIONED } from \"@/schemas/actor-persist/versioned\";\nimport { bufferToArrayBuffer } from \"@/utils\";\n\nexport function serializeEmptyPersistData(\n\tinput: unknown | undefined,\n): Uint8Array {\n\tconst persistData: schema.PersistedActor = {\n\t\tinput:\n\t\t\tinput !== undefined\n\t\t\t\t? bufferToArrayBuffer(cbor.encode(input))\n\t\t\t\t: null,\n\t\thasInitialized: false,\n\t\tstate: bufferToArrayBuffer(cbor.encode(undefined)),\n\t\tconnections: [],\n\t\tscheduledEvents: [],\n\t\thibernatableWebSocket: [],\n\t};\n\treturn PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(persistData);\n}\n","import * as bare from \"@bare-ts/lib\"\n\nconst config = /* @__PURE__ */ bare.Config({})\n\nexport type u64 = bigint\n\nexport type PersistedSubscription = {\n readonly eventName: string,\n}\n\nexport function readPersistedSubscription(bc: bare.ByteCursor): PersistedSubscription {\n return {\n eventName: bare.readString(bc),\n }\n}\n\nexport function writePersistedSubscription(bc: bare.ByteCursor, x: PersistedSubscription): void {\n bare.writeString(bc, x.eventName)\n}\n\nfunction read0(bc: bare.ByteCursor): readonly PersistedSubscription[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedSubscription(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedSubscription(bc)\n }\n return result\n}\n\nfunction write0(bc: bare.ByteCursor, x: readonly PersistedSubscription[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedSubscription(bc, x[i])\n }\n}\n\nexport type PersistedConnection = {\n readonly id: string,\n readonly token: string,\n readonly parameters: ArrayBuffer,\n readonly state: ArrayBuffer,\n readonly subscriptions: readonly PersistedSubscription[],\n readonly lastSeen: u64,\n}\n\nexport function readPersistedConnection(bc: bare.ByteCursor): PersistedConnection {\n return {\n id: bare.readString(bc),\n token: bare.readString(bc),\n parameters: bare.readData(bc),\n state: bare.readData(bc),\n subscriptions: read0(bc),\n lastSeen: bare.readU64(bc),\n }\n}\n\nexport function writePersistedConnection(bc: bare.ByteCursor, x: PersistedConnection): void {\n bare.writeString(bc, x.id)\n bare.writeString(bc, x.token)\n bare.writeData(bc, x.parameters)\n bare.writeData(bc, x.state)\n write0(bc, x.subscriptions)\n bare.writeU64(bc, x.lastSeen)\n}\n\nfunction read1(bc: bare.ByteCursor): ArrayBuffer | null {\n return bare.readBool(bc)\n ? bare.readData(bc)\n : null\n}\n\nfunction write1(bc: bare.ByteCursor, x: ArrayBuffer | null): void {\n bare.writeBool(bc, x !== null)\n if (x !== null) {\n bare.writeData(bc, x)\n }\n}\n\nexport type GenericPersistedScheduleEvent = {\n readonly action: string,\n readonly args: ArrayBuffer | null,\n}\n\nexport function readGenericPersistedScheduleEvent(bc: bare.ByteCursor): GenericPersistedScheduleEvent {\n return {\n action: bare.readString(bc),\n args: read1(bc),\n }\n}\n\nexport function writeGenericPersistedScheduleEvent(bc: bare.ByteCursor, x: GenericPersistedScheduleEvent): void {\n bare.writeString(bc, x.action)\n write1(bc, x.args)\n}\n\nexport type PersistedScheduleEventKind =\n | { readonly tag: \"GenericPersistedScheduleEvent\", readonly val: GenericPersistedScheduleEvent }\n\nexport function readPersistedScheduleEventKind(bc: bare.ByteCursor): PersistedScheduleEventKind {\n const offset = bc.offset\n const tag = bare.readU8(bc)\n switch (tag) {\n case 0:\n return { tag: \"GenericPersistedScheduleEvent\", val: readGenericPersistedScheduleEvent(bc) }\n default: {\n bc.offset = offset\n throw new bare.BareError(offset, \"invalid tag\")\n }\n }\n}\n\nexport function writePersistedScheduleEventKind(bc: bare.ByteCursor, x: PersistedScheduleEventKind): void {\n switch (x.tag) {\n case \"GenericPersistedScheduleEvent\": {\n bare.writeU8(bc, 0)\n writeGenericPersistedScheduleEvent(bc, x.val)\n break\n }\n }\n}\n\nexport type PersistedScheduleEvent = {\n readonly eventId: string,\n readonly timestamp: u64,\n readonly kind: PersistedScheduleEventKind,\n}\n\nexport function readPersistedScheduleEvent(bc: bare.ByteCursor): PersistedScheduleEvent {\n return {\n eventId: bare.readString(bc),\n timestamp: bare.readU64(bc),\n kind: readPersistedScheduleEventKind(bc),\n }\n}\n\nexport function writePersistedScheduleEvent(bc: bare.ByteCursor, x: PersistedScheduleEvent): void {\n bare.writeString(bc, x.eventId)\n bare.writeU64(bc, x.timestamp)\n writePersistedScheduleEventKind(bc, x.kind)\n}\n\nexport type PersistedHibernatableWebSocket = {\n readonly requestId: ArrayBuffer,\n readonly lastSeenTimestamp: u64,\n readonly msgIndex: u64,\n}\n\nexport function readPersistedHibernatableWebSocket(bc: bare.ByteCursor): PersistedHibernatableWebSocket {\n return {\n requestId: bare.readData(bc),\n lastSeenTimestamp: bare.readU64(bc),\n msgIndex: bare.readU64(bc),\n }\n}\n\nexport function writePersistedHibernatableWebSocket(bc: bare.ByteCursor, x: PersistedHibernatableWebSocket): void {\n bare.writeData(bc, x.requestId)\n bare.writeU64(bc, x.lastSeenTimestamp)\n bare.writeU64(bc, x.msgIndex)\n}\n\nfunction read2(bc: bare.ByteCursor): readonly PersistedConnection[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedConnection(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedConnection(bc)\n }\n return result\n}\n\nfunction write2(bc: bare.ByteCursor, x: readonly PersistedConnection[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedConnection(bc, x[i])\n }\n}\n\nfunction read3(bc: bare.ByteCursor): readonly PersistedScheduleEvent[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedScheduleEvent(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedScheduleEvent(bc)\n }\n return result\n}\n\nfunction write3(bc: bare.ByteCursor, x: readonly PersistedScheduleEvent[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedScheduleEvent(bc, x[i])\n }\n}\n\nfunction read4(bc: bare.ByteCursor): readonly PersistedHibernatableWebSocket[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedHibernatableWebSocket(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedHibernatableWebSocket(bc)\n }\n return result\n}\n\nfunction write4(bc: bare.ByteCursor, x: readonly PersistedHibernatableWebSocket[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedHibernatableWebSocket(bc, x[i])\n }\n}\n\nexport type PersistedActor = {\n readonly input: ArrayBuffer | null,\n readonly hasInitialized: boolean,\n readonly state: ArrayBuffer,\n readonly connections: readonly PersistedConnection[],\n readonly scheduledEvents: readonly PersistedScheduleEvent[],\n readonly hibernatableWebSocket: readonly PersistedHibernatableWebSocket[],\n}\n\nexport function readPersistedActor(bc: bare.ByteCursor): PersistedActor {\n return {\n input: read1(bc),\n hasInitialized: bare.readBool(bc),\n state: bare.readData(bc),\n connections: read2(bc),\n scheduledEvents: read3(bc),\n hibernatableWebSocket: read4(bc),\n }\n}\n\nexport function writePersistedActor(bc: bare.ByteCursor, x: PersistedActor): void {\n write1(bc, x.input)\n bare.writeBool(bc, x.hasInitialized)\n bare.writeData(bc, x.state)\n write2(bc, x.connections)\n write3(bc, x.scheduledEvents)\n write4(bc, x.hibernatableWebSocket)\n}\n\nexport function encodePersistedActor(x: PersistedActor): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writePersistedActor(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodePersistedActor(bytes: Uint8Array): PersistedActor {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readPersistedActor(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n","import {\n\tcreateVersionedDataHandler,\n\ttype MigrationFn,\n} from \"@/common/versioned-data\";\nimport type * as v1 from \"../../../dist/schemas/actor-persist/v1\";\nimport * as v2 from \"../../../dist/schemas/actor-persist/v2\";\n\nexport const CURRENT_VERSION = 2;\n\nexport type CurrentPersistedActor = v2.PersistedActor;\nexport type CurrentPersistedConnection = v2.PersistedConnection;\nexport type CurrentPersistedSubscription = v2.PersistedSubscription;\nexport type CurrentGenericPersistedScheduleEvent =\n\tv2.GenericPersistedScheduleEvent;\nexport type CurrentPersistedScheduleEventKind = v2.PersistedScheduleEventKind;\nexport type CurrentPersistedScheduleEvent = v2.PersistedScheduleEvent;\nexport type CurrentPersistedHibernatableWebSocket =\n\tv2.PersistedHibernatableWebSocket;\n\nconst migrations = new Map<number, MigrationFn<any, any>>();\n\n// Migration from v1 to v2: Add hibernatableWebSocket field\nmigrations.set(\n\t1,\n\t(v1Data: v1.PersistedActor): v2.PersistedActor => ({\n\t\t...v1Data,\n\t\thibernatableWebSocket: [],\n\t}),\n);\n\nexport const PERSISTED_ACTOR_VERSIONED =\n\tcreateVersionedDataHandler<CurrentPersistedActor>({\n\t\tcurrentVersion: CURRENT_VERSION,\n\t\tmigrations,\n\t\tserializeVersion: (data) => v2.encodePersistedActor(data),\n\t\tdeserializeVersion: (bytes) => v2.decodePersistedActor(bytes),\n\t});\n"]}
@@ -108,8 +108,7 @@ function deconstructError(error, logger, extraLog, exposeInternalError = false)
108
108
  group,
109
109
  code,
110
110
  message,
111
- issues: "https://github.com/rivet-dev/rivetkit/issues",
112
- support: "https://rivet.dev/discord",
111
+ ...EXTRA_ERROR_LOG,
113
112
  ...extraLog
114
113
  });
115
114
  } else if (exposeInternalError) {
@@ -125,8 +124,7 @@ function deconstructError(error, logger, extraLog, exposeInternalError = false)
125
124
  group,
126
125
  code,
127
126
  message,
128
- issues: "https://github.com/rivet-dev/rivetkit/issues",
129
- support: "https://rivet.dev/discord",
127
+ ...EXTRA_ERROR_LOG,
130
128
  ...extraLog
131
129
  });
132
130
  } else {
@@ -140,8 +138,7 @@ function deconstructError(error, logger, extraLog, exposeInternalError = false)
140
138
  group,
141
139
  code,
142
140
  message,
143
- issues: "https://github.com/rivet-dev/rivetkit/issues",
144
- support: "https://rivet.dev/discord",
141
+ ...EXTRA_ERROR_LOG,
145
142
  ...extraLog
146
143
  });
147
144
  }
@@ -158,8 +155,7 @@ function deconstructError(error, logger, extraLog, exposeInternalError = false)
158
155
  msg: "internal error",
159
156
  error: getErrorMessage(error),
160
157
  stack: error == null ? void 0 : error.stack,
161
- issues: "https://github.com/rivet-dev/rivetkit/issues",
162
- support: "https://rivet.dev/discord",
158
+ ...EXTRA_ERROR_LOG,
163
159
  ...extraLog
164
160
  });
165
161
  }
@@ -205,10 +201,13 @@ function noopNext() {
205
201
  };
206
202
  }
207
203
 
204
+ // src/utils.ts
205
+ import { stringify as uuidstringify } from "uuid";
206
+
208
207
  // package.json
209
208
  var package_default = {
210
209
  name: "rivetkit",
211
- version: "2.0.22-rc.1",
210
+ version: "2.0.22-rc.2",
212
211
  description: "Lightweight libraries for building stateful actors on edge platforms",
213
212
  license: "Apache-2.0",
214
213
  keywords: [
@@ -361,7 +360,7 @@ var package_default = {
361
360
  ],
362
361
  scripts: {
363
362
  build: "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/topologies/coordinate/mod.ts src/topologies/partition/mod.ts src/utils.ts src/driver-helpers/mod.ts src/driver-test-suite/mod.ts src/test/mod.ts src/inspector/mod.ts",
364
- "build:schema": "./scripts/compile-bare.ts compile schemas/client-protocol/v1.bare -o dist/schemas/client-protocol/v1.ts && ./scripts/compile-bare.ts compile schemas/file-system-driver/v1.bare -o dist/schemas/file-system-driver/v1.ts && ./scripts/compile-bare.ts compile schemas/actor-persist/v1.bare -o dist/schemas/actor-persist/v1.ts",
363
+ "build:schema": "./scripts/compile-bare.ts compile schemas/client-protocol/v1.bare -o dist/schemas/client-protocol/v1.ts && ./scripts/compile-bare.ts compile schemas/file-system-driver/v1.bare -o dist/schemas/file-system-driver/v1.ts && ./scripts/compile-bare.ts compile schemas/actor-persist/v1.bare -o dist/schemas/actor-persist/v1.ts && ./scripts/compile-bare.ts compile schemas/actor-persist/v2.bare -o dist/schemas/actor-persist/v2.ts",
365
364
  "check-types": "tsc --noEmit",
366
365
  test: "vitest run",
367
366
  "test:watch": "vitest",
@@ -377,9 +376,10 @@ var package_default = {
377
376
  hono: "^4.7.0",
378
377
  invariant: "^2.2.4",
379
378
  nanoevents: "^9.1.0",
380
- "on-change": "^5.0.1",
379
+ "on-change": "npm:@rivetkit/on-change@^6.0.2-rc.1",
381
380
  "p-retry": "^6.2.1",
382
381
  pino: "^9.5.0",
382
+ uuid: "^12.0.0",
383
383
  zod: "^3.25.76"
384
384
  },
385
385
  devDependencies: {
@@ -423,13 +423,13 @@ var package_default = {
423
423
  };
424
424
 
425
425
  // src/utils.ts
426
- var VERSION = package_default.version;
426
+ var VERSION2 = package_default.version;
427
427
  var _userAgent;
428
428
  function httpUserAgent() {
429
429
  if (_userAgent !== void 0) {
430
430
  return _userAgent;
431
431
  }
432
- let userAgent = `RivetKit/${VERSION}`;
432
+ let userAgent = `RivetKit/${VERSION2}`;
433
433
  const navigatorObj = typeof navigator !== "undefined" ? navigator : void 0;
434
434
  if (navigatorObj == null ? void 0 : navigatorObj.userAgent) userAgent += ` ${navigatorObj.userAgent}`;
435
435
  _userAgent = userAgent;
@@ -559,6 +559,23 @@ function combineUrlPath(endpoint, path, queryParams) {
559
559
  const fullQuery = queryParts.length > 0 ? `?${queryParts.join("&")}` : "";
560
560
  return `${baseUrl.protocol}//${baseUrl.host}${fullPath}${fullQuery}`;
561
561
  }
562
+ function arrayBuffersEqual(buf1, buf2) {
563
+ if (buf1.byteLength !== buf2.byteLength) return false;
564
+ const view1 = new Uint8Array(buf1);
565
+ const view2 = new Uint8Array(buf2);
566
+ for (let i = 0; i < view1.length; i++) {
567
+ if (view1[i] !== view2[i]) return false;
568
+ }
569
+ return true;
570
+ }
571
+ var EXTRA_ERROR_LOG = {
572
+ issues: "https://github.com/rivet-dev/rivetkit/issues",
573
+ support: "https://rivet.dev/discord",
574
+ version: VERSION2
575
+ };
576
+ function idToStr(id) {
577
+ return uuidstringify(new Uint8Array(id));
578
+ }
562
579
 
563
580
  export {
564
581
  assertUnreachable,
@@ -567,7 +584,7 @@ export {
567
584
  stringifyError,
568
585
  noopNext,
569
586
  package_default,
570
- VERSION,
587
+ VERSION2 as VERSION,
571
588
  httpUserAgent,
572
589
  getEnvUniversal,
573
590
  dbg,
@@ -576,6 +593,9 @@ export {
576
593
  setLongTimeout,
577
594
  SinglePromiseQueue,
578
595
  bufferToArrayBuffer,
579
- combineUrlPath
596
+ combineUrlPath,
597
+ arrayBuffersEqual,
598
+ EXTRA_ERROR_LOG,
599
+ idToStr
580
600
  };
581
- //# sourceMappingURL=chunk-JKNDUKFI.js.map
601
+ //# sourceMappingURL=chunk-7RUROQAZ.js.map