rivetkit 2.0.9 → 2.0.10

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 (123) hide show
  1. package/dist/tsup/{chunk-APHV6WXU.js → chunk-346X2XU4.js} +2 -2
  2. package/dist/tsup/{chunk-DLPIL3VC.js → chunk-7E5K3375.js} +2 -2
  3. package/dist/tsup/{chunk-SOC4HWCG.cjs → chunk-CA3X5M6H.cjs} +92 -39
  4. package/dist/tsup/{chunk-VVCL5DXN.js.map → chunk-CA3X5M6H.cjs.map} +1 -1
  5. package/dist/tsup/{chunk-2MJYYF2Q.cjs → chunk-DVPXSB4B.cjs} +12 -12
  6. package/dist/tsup/{chunk-2MJYYF2Q.cjs.map → chunk-DVPXSB4B.cjs.map} +1 -1
  7. package/dist/tsup/{chunk-U2IXX6DY.cjs → chunk-GIFHYL7A.cjs} +5 -6
  8. package/dist/tsup/chunk-GIFHYL7A.cjs.map +1 -0
  9. package/dist/tsup/{chunk-KHZ2QSQ4.js → chunk-H7E2UU23.js} +32 -10
  10. package/dist/tsup/chunk-H7E2UU23.js.map +1 -0
  11. package/dist/tsup/{chunk-E63WU5PL.js → chunk-HI55LHM3.js} +5 -6
  12. package/dist/tsup/chunk-HI55LHM3.js.map +1 -0
  13. package/dist/tsup/{chunk-SDXTJDDR.cjs → chunk-I3FB346I.cjs} +58 -14
  14. package/dist/tsup/chunk-I3FB346I.cjs.map +1 -0
  15. package/dist/tsup/{chunk-WBSPHV5V.js → chunk-KGDZYQYE.js} +2 -2
  16. package/dist/tsup/{chunk-A44TWAS5.cjs → chunk-KH5WFDUK.cjs} +6 -6
  17. package/dist/tsup/{chunk-A44TWAS5.cjs.map → chunk-KH5WFDUK.cjs.map} +1 -1
  18. package/dist/tsup/{chunk-YR2VY4XS.js → chunk-KL4V2ULR.js} +5 -4
  19. package/dist/tsup/chunk-KL4V2ULR.js.map +1 -0
  20. package/dist/tsup/{chunk-R7OP5N25.js → chunk-MLQIYKAZ.js} +53 -9
  21. package/dist/tsup/chunk-MLQIYKAZ.js.map +1 -0
  22. package/dist/tsup/{chunk-F2YZNUPU.js → chunk-N3A5GYJU.js} +3 -3
  23. package/dist/tsup/{chunk-4YV6RDZL.cjs → chunk-PDFL7FBL.cjs} +698 -358
  24. package/dist/tsup/chunk-PDFL7FBL.cjs.map +1 -0
  25. package/dist/tsup/{chunk-DZZQG7VH.cjs → chunk-PPLR53PP.cjs} +3 -3
  26. package/dist/tsup/{chunk-DZZQG7VH.cjs.map → chunk-PPLR53PP.cjs.map} +1 -1
  27. package/dist/tsup/{chunk-7OMMIAWP.cjs → chunk-PSCDCEXM.cjs} +17 -12
  28. package/dist/tsup/chunk-PSCDCEXM.cjs.map +1 -0
  29. package/dist/tsup/{chunk-VVCL5DXN.js → chunk-QRFXXTLG.js} +96 -43
  30. package/dist/tsup/chunk-QRFXXTLG.js.map +1 -0
  31. package/dist/tsup/{chunk-WRSWUDFA.js → chunk-R2S45MO6.js} +14 -9
  32. package/dist/tsup/chunk-R2S45MO6.js.map +1 -0
  33. package/dist/tsup/{chunk-QGRYH6TU.cjs → chunk-SIWYIRXP.cjs} +7 -6
  34. package/dist/tsup/chunk-SIWYIRXP.cjs.map +1 -0
  35. package/dist/tsup/{chunk-FZP2IBIX.js → chunk-VJRXZPTT.js} +579 -239
  36. package/dist/tsup/chunk-VJRXZPTT.js.map +1 -0
  37. package/dist/tsup/{chunk-4PSLOAXR.cjs → chunk-VZMXAZKC.cjs} +226 -204
  38. package/dist/tsup/chunk-VZMXAZKC.cjs.map +1 -0
  39. package/dist/tsup/{chunk-DL7TPF63.cjs → chunk-YKVTF7MP.cjs} +7 -7
  40. package/dist/tsup/{chunk-DL7TPF63.cjs.map → chunk-YKVTF7MP.cjs.map} +1 -1
  41. package/dist/tsup/client/mod.cjs +9 -9
  42. package/dist/tsup/client/mod.d.cts +2 -2
  43. package/dist/tsup/client/mod.d.ts +2 -2
  44. package/dist/tsup/client/mod.js +8 -8
  45. package/dist/tsup/common/log.cjs +3 -3
  46. package/dist/tsup/common/log.js +2 -2
  47. package/dist/tsup/common/websocket.cjs +4 -4
  48. package/dist/tsup/common/websocket.js +3 -3
  49. package/dist/tsup/{conn-CEh3WKbA.d.cts → conn-Cc9WHuN4.d.cts} +196 -191
  50. package/dist/tsup/{conn-Bt8rkUzm.d.ts → conn-DfPG71FA.d.ts} +196 -191
  51. package/dist/tsup/driver-helpers/mod.cjs +5 -5
  52. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  53. package/dist/tsup/driver-helpers/mod.d.cts +1 -1
  54. package/dist/tsup/driver-helpers/mod.d.ts +1 -1
  55. package/dist/tsup/driver-helpers/mod.js +6 -6
  56. package/dist/tsup/driver-test-suite/mod.cjs +116 -102
  57. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  58. package/dist/tsup/driver-test-suite/mod.d.cts +3 -2
  59. package/dist/tsup/driver-test-suite/mod.d.ts +3 -2
  60. package/dist/tsup/driver-test-suite/mod.js +61 -47
  61. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  62. package/dist/tsup/inspector/mod.cjs +6 -6
  63. package/dist/tsup/inspector/mod.d.cts +6 -6
  64. package/dist/tsup/inspector/mod.d.ts +6 -6
  65. package/dist/tsup/inspector/mod.js +5 -5
  66. package/dist/tsup/mod.cjs +10 -10
  67. package/dist/tsup/mod.d.cts +8 -39
  68. package/dist/tsup/mod.d.ts +8 -39
  69. package/dist/tsup/mod.js +9 -9
  70. package/dist/tsup/test/mod.cjs +11 -11
  71. package/dist/tsup/test/mod.d.cts +1 -1
  72. package/dist/tsup/test/mod.d.ts +1 -1
  73. package/dist/tsup/test/mod.js +10 -10
  74. package/dist/tsup/utils.cjs +2 -2
  75. package/dist/tsup/utils.d.cts +2 -1
  76. package/dist/tsup/utils.d.ts +2 -1
  77. package/dist/tsup/utils.js +1 -1
  78. package/package.json +4 -5
  79. package/src/actor/driver.ts +2 -2
  80. package/src/actor/protocol/serde.ts +75 -3
  81. package/src/actor/router-endpoints.ts +6 -6
  82. package/src/actor/router.ts +2 -2
  83. package/src/client/actor-conn.ts +24 -3
  84. package/src/client/config.ts +18 -25
  85. package/src/driver-helpers/mod.ts +4 -1
  86. package/src/driver-test-suite/mod.ts +65 -43
  87. package/src/driver-test-suite/utils.ts +4 -1
  88. package/src/drivers/default.ts +11 -9
  89. package/src/drivers/engine/actor-driver.ts +40 -39
  90. package/src/drivers/engine/config.ts +9 -22
  91. package/src/drivers/engine/mod.ts +9 -8
  92. package/src/drivers/file-system/global-state.ts +4 -4
  93. package/src/engine-process/log.ts +5 -0
  94. package/src/engine-process/mod.ts +316 -0
  95. package/src/inspector/utils.ts +6 -4
  96. package/src/manager/driver.ts +2 -2
  97. package/src/manager/gateway.ts +29 -11
  98. package/src/manager/router-schema.ts +20 -0
  99. package/src/manager/router.ts +105 -23
  100. package/src/registry/mod.ts +145 -119
  101. package/src/registry/run-config.ts +116 -47
  102. package/src/registry/serve.ts +3 -1
  103. package/src/serde.ts +3 -3
  104. package/src/test/config.ts +2 -2
  105. package/src/test/mod.ts +6 -3
  106. package/src/utils.ts +2 -0
  107. package/dist/tsup/chunk-4PSLOAXR.cjs.map +0 -1
  108. package/dist/tsup/chunk-4YV6RDZL.cjs.map +0 -1
  109. package/dist/tsup/chunk-7OMMIAWP.cjs.map +0 -1
  110. package/dist/tsup/chunk-E63WU5PL.js.map +0 -1
  111. package/dist/tsup/chunk-FZP2IBIX.js.map +0 -1
  112. package/dist/tsup/chunk-KHZ2QSQ4.js.map +0 -1
  113. package/dist/tsup/chunk-QGRYH6TU.cjs.map +0 -1
  114. package/dist/tsup/chunk-R7OP5N25.js.map +0 -1
  115. package/dist/tsup/chunk-SDXTJDDR.cjs.map +0 -1
  116. package/dist/tsup/chunk-SOC4HWCG.cjs.map +0 -1
  117. package/dist/tsup/chunk-U2IXX6DY.cjs.map +0 -1
  118. package/dist/tsup/chunk-WRSWUDFA.js.map +0 -1
  119. package/dist/tsup/chunk-YR2VY4XS.js.map +0 -1
  120. /package/dist/tsup/{chunk-APHV6WXU.js.map → chunk-346X2XU4.js.map} +0 -0
  121. /package/dist/tsup/{chunk-DLPIL3VC.js.map → chunk-7E5K3375.js.map} +0 -0
  122. /package/dist/tsup/{chunk-WBSPHV5V.js.map → chunk-KGDZYQYE.js.map} +0 -0
  123. /package/dist/tsup/{chunk-F2YZNUPU.js.map → chunk-N3A5GYJU.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getLogger
3
- } from "./chunk-DLPIL3VC.js";
3
+ } from "./chunk-7E5K3375.js";
4
4
 
5
5
  // src/client/log.ts
6
6
  function logger() {
@@ -42,4 +42,4 @@ export {
42
42
  logger,
43
43
  importWebSocket
44
44
  };
45
- //# sourceMappingURL=chunk-APHV6WXU.js.map
45
+ //# sourceMappingURL=chunk-346X2XU4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getEnvUniversal
3
- } from "./chunk-E63WU5PL.js";
3
+ } from "./chunk-HI55LHM3.js";
4
4
 
5
5
  // src/common/log.ts
6
6
  import {
@@ -247,4 +247,4 @@ export {
247
247
  getBaseLogger,
248
248
  getLogger
249
249
  };
250
- //# sourceMappingURL=chunk-DLPIL3VC.js.map
250
+ //# sourceMappingURL=chunk-7E5K3375.js.map
@@ -2,16 +2,16 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkSDXTJDDRcjs = require('./chunk-SDXTJDDR.cjs');
5
+ var _chunkI3FB346Icjs = require('./chunk-I3FB346I.cjs');
6
6
 
7
7
 
8
- var _chunkDL7TPF63cjs = require('./chunk-DL7TPF63.cjs');
8
+ var _chunkYKVTF7MPcjs = require('./chunk-YKVTF7MP.cjs');
9
9
 
10
10
 
11
11
 
12
12
 
13
13
 
14
- var _chunkU2IXX6DYcjs = require('./chunk-U2IXX6DY.cjs');
14
+ var _chunkGIFHYL7Acjs = require('./chunk-GIFHYL7A.cjs');
15
15
 
16
16
 
17
17
 
@@ -21,6 +21,9 @@ var _chunk5QGQK44Lcjs = require('./chunk-5QGQK44L.cjs');
21
21
  // src/registry/run-config.ts
22
22
  var _zod = require('zod'); var _zod2 = _interopRequireDefault(_zod);
23
23
 
24
+ // src/drivers/engine/config.ts
25
+
26
+
24
27
  // src/client/config.ts
25
28
 
26
29
 
@@ -577,7 +580,7 @@ function getValueLength(value) {
577
580
  } else if (value instanceof ArrayBuffer || value instanceof SharedArrayBuffer || value instanceof Uint8Array) {
578
581
  return value.byteLength;
579
582
  } else {
580
- _chunkU2IXX6DYcjs.assertUnreachable.call(void 0, value);
583
+ _chunkGIFHYL7Acjs.assertUnreachable.call(void 0, value);
581
584
  }
582
585
  }
583
586
  async function inputDataToBuffer(data) {
@@ -603,7 +606,7 @@ async function parseMessage(value, opts) {
603
606
  if (buffer instanceof Buffer) {
604
607
  buffer = new Uint8Array(buffer);
605
608
  }
606
- return _chunkSDXTJDDRcjs.deserializeWithEncoding.call(void 0, opts.encoding, buffer, TO_SERVER_VERSIONED);
609
+ return _chunkI3FB346Icjs.deserializeWithEncoding.call(void 0, opts.encoding, buffer, TO_SERVER_VERSIONED);
607
610
  }
608
611
  async function processMessage(message, actor, conn, handler) {
609
612
  let actionId;
@@ -635,13 +638,13 @@ async function processMessage(message, actor, conn, handler) {
635
638
  isPromise: output instanceof Promise
636
639
  });
637
640
  conn._sendMessage(
638
- new (0, _chunkSDXTJDDRcjs.CachedSerializer)(
641
+ new (0, _chunkI3FB346Icjs.CachedSerializer)(
639
642
  {
640
643
  body: {
641
644
  tag: "ActionResponse",
642
645
  val: {
643
646
  id,
644
- output: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
647
+ output: _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
645
648
  }
646
649
  }
647
650
  },
@@ -670,10 +673,10 @@ async function processMessage(message, actor, conn, handler) {
670
673
  subscribe
671
674
  });
672
675
  } else {
673
- _chunkU2IXX6DYcjs.assertUnreachable.call(void 0, message.body);
676
+ _chunkGIFHYL7Acjs.assertUnreachable.call(void 0, message.body);
674
677
  }
675
678
  } catch (error) {
676
- const { group, code, message: message2, metadata } = _chunkU2IXX6DYcjs.deconstructError.call(void 0,
679
+ const { group, code, message: message2, metadata } = _chunkGIFHYL7Acjs.deconstructError.call(void 0,
677
680
  error,
678
681
  actor.rLog,
679
682
  {
@@ -690,7 +693,7 @@ async function processMessage(message, actor, conn, handler) {
690
693
  message: message2
691
694
  });
692
695
  conn._sendMessage(
693
- new (0, _chunkSDXTJDDRcjs.CachedSerializer)(
696
+ new (0, _chunkI3FB346Icjs.CachedSerializer)(
694
697
  {
695
698
  body: {
696
699
  tag: "Error",
@@ -698,7 +701,7 @@ async function processMessage(message, actor, conn, handler) {
698
701
  group,
699
702
  code,
700
703
  message: message2,
701
- metadata: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor.encode(metadata)),
704
+ metadata: _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, cbor.encode(metadata)),
702
705
  actionId: _nullishCoalesce(actionId, () => ( null))
703
706
  }
704
707
  }
@@ -712,38 +715,44 @@ async function processMessage(message, actor, conn, handler) {
712
715
 
713
716
  // src/client/config.ts
714
717
  var ClientConfigSchema = _zod2.default.object({
715
- /** Configure serving the API */
716
- api: _zod2.default.object({
717
- host: _zod2.default.string().default("127.0.0.1"),
718
- port: _zod2.default.number().default(6420)
719
- }).default({}),
720
- token: _zod2.default.string().optional().transform((x) => _nullishCoalesce(x, () => ( _chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
721
- totalSlots: _zod2.default.number().optional(),
722
- headers: _zod2.default.record(_zod2.default.string()).optional().default({}),
723
- /** Endpoint to connect to the Rivet engine. Can be configured via RIVET_ENGINE env var. */
724
- endpoint: _zod2.default.string().nullable().default(() => _nullishCoalesce(_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"), () => ( null))),
725
- namespace: _zod2.default.string().default(() => _nullishCoalesce(_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
726
- runnerName: _zod2.default.string().default(() => _nullishCoalesce(_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER"), () => ( "rivetkit"))),
727
- encoding: _chunkSDXTJDDRcjs.EncodingSchema.default("bare"),
718
+ /** Endpoint to connect to for Rivet Engine or RivetKit manager API. */
719
+ endpoint: _zod2.default.string().optional().transform(
720
+ (x) => _nullishCoalesce(_nullishCoalesce(x, () => ( _chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"))), () => ( _chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_ENDPOINT")))
721
+ ),
722
+ /** Token to use to authenticate with the API. */
723
+ token: _zod2.default.string().optional().transform((x) => _nullishCoalesce(x, () => ( _chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
724
+ /** Namespace to connect to. */
725
+ namespace: _zod2.default.string().default(() => _nullishCoalesce(_chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
726
+ /** Name of the runner. This is used to group together runners in to different pools. */
727
+ runnerName: _zod2.default.string().default(() => _nullishCoalesce(_chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_RUNNER"), () => ( "rivetkit"))),
728
+ encoding: _chunkI3FB346Icjs.EncodingSchema.default("bare"),
728
729
  transport: TransportSchema.default("websocket"),
729
- // This is a function to allow for lazy configuration of upgradeWebSocket on the
730
- // fly. This is required since the dependencies that upgradeWebSocket
731
- // (specifically Node.js) can sometimes only be specified after the router is
732
- // created or must be imported async using `await import(...)`
730
+ headers: _zod2.default.record(_zod2.default.string()).optional().default({}),
731
+ // See RunConfig.getUpgradeWebSocket
733
732
  getUpgradeWebSocket: _zod2.default.custom().optional()
734
733
  });
735
734
 
735
+ // src/drivers/engine/config.ts
736
+ var EngingConfigSchema = _zod.z.object({
737
+ /** Unique key for this runner. Runners connecting a given key will replace any other runner connected with the same key. */
738
+ runnerKey: _zod.z.string().default(
739
+ () => _nullishCoalesce(_chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_RUNNER_KEY"), () => ( crypto.randomUUID()))
740
+ ),
741
+ /** How many actors this runner can run. */
742
+ totalSlots: _zod.z.number().default(1e5)
743
+ }).merge(ClientConfigSchema).default({});
744
+
736
745
  // src/inspector/config.ts
737
746
 
738
747
  var defaultTokenFn = () => {
739
- const envToken = _chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_TOKEN");
748
+ const envToken = _chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_TOKEN");
740
749
  if (envToken) {
741
750
  return envToken;
742
751
  }
743
752
  return "";
744
753
  };
745
754
  var defaultEnabled = () => {
746
- return _chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "NODE_ENV") !== "production" || !_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_DISABLE");
755
+ return _chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "NODE_ENV") !== "production" || !_chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_DISABLE");
747
756
  };
748
757
  var defaultInspectorOrigins = [
749
758
  "http://localhost:43708",
@@ -804,16 +813,36 @@ var DriverConfigSchema = _zod.z.object({
804
813
  manager: _zod.z.custom(),
805
814
  actor: _zod.z.custom()
806
815
  });
807
- var RunConfigSchema = ClientConfigSchema.extend({
816
+ var RunnerConfigSchema = _zod.z.object({
808
817
  driver: DriverConfigSchema.optional(),
809
818
  /** CORS configuration for the router. Uses Hono's CORS middleware options. */
810
819
  cors: _zod.z.custom().optional(),
820
+ /** @experimental */
811
821
  maxIncomingMessageSize: _zod.z.number().optional().default(65536),
822
+ /** @experimental */
812
823
  inspector: InspectorConfigSchema,
813
824
  /** @experimental */
814
- disableServer: _zod.z.boolean().optional().default(false),
825
+ disableDefaultServer: _zod.z.boolean().optional().default(false),
826
+ /** @experimental */
827
+ defaultServerPort: _zod.z.number().default(6420),
828
+ /** @experimental */
829
+ runEngine: _zod.z.boolean().optional().default(() => _chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_RUN_ENGINE") === "1"),
830
+ /** @experimental */
831
+ runEngineVersion: _zod.z.string().optional().default(() => _nullishCoalesce(_chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_RUN_ENGINE_VERSION"), () => ( "25.7.3"))),
832
+ /** @experimental */
833
+ overrideServerAddress: _zod.z.string().optional(),
815
834
  /** @experimental */
816
835
  disableActorDriver: _zod.z.boolean().optional().default(false),
836
+ /**
837
+ * @experimental
838
+ *
839
+ * Whether to run runners normally or have them managed
840
+ * serverlessly (by the Rivet Engine for example).
841
+ */
842
+ runnerKind: _zod.z.enum(["serverless", "normal"]).optional().default(
843
+ () => _chunkGIFHYL7Acjs.getEnvUniversal.call(void 0, "RIVET_RUNNER_KIND") === "serverless" ? "serverless" : "normal"
844
+ ),
845
+ totalSlots: _zod.z.number().optional(),
817
846
  /**
818
847
  * @experimental
819
848
  *
@@ -833,9 +862,33 @@ var RunConfigSchema = ClientConfigSchema.extend({
833
862
  * */
834
863
  logging: _zod.z.object({
835
864
  baseLogger: _zod.z.custom().optional(),
836
- level: _chunkDL7TPF63cjs.LogLevelSchema.optional()
837
- }).optional().default({})
838
- }).default({});
865
+ level: _chunkYKVTF7MPcjs.LogLevelSchema.optional()
866
+ }).optional().default({}),
867
+ /**
868
+ * @experimental
869
+ *
870
+ * Automatically configure serverless runners in the engine.
871
+ * Can only be used when runnerKind is "serverless".
872
+ * If true, uses default configuration. Can also provide custom configuration.
873
+ */
874
+ autoConfigureServerless: _zod.z.union([
875
+ _zod.z.boolean(),
876
+ _zod.z.object({
877
+ url: _zod.z.string().optional(),
878
+ headers: _zod.z.record(_zod.z.string(), _zod.z.string()).optional(),
879
+ maxRunners: _zod.z.number().optional(),
880
+ minRunners: _zod.z.number().optional(),
881
+ requestLifespan: _zod.z.number().optional(),
882
+ runnersMargin: _zod.z.number().optional(),
883
+ slotsPerRunner: _zod.z.number().optional()
884
+ })
885
+ ]).optional(),
886
+ // This is a function to allow for lazy configuration of upgradeWebSocket on the
887
+ // fly. This is required since the dependencies that upgradeWebSocket
888
+ // (specifically Node.js) can sometimes only be specified after the router is
889
+ // created or must be imported async using `await import(...)`
890
+ getUpgradeWebSocket: _zod.z.custom().optional()
891
+ }).merge(EngingConfigSchema.removeDefault()).default({});
839
892
 
840
893
  // src/driver-helpers/utils.ts
841
894
 
@@ -1018,9 +1071,9 @@ var PERSISTED_ACTOR_VERSIONED = createVersionedDataHandler({
1018
1071
  // src/driver-helpers/utils.ts
1019
1072
  function serializeEmptyPersistData(input) {
1020
1073
  const persistData = {
1021
- input: input !== void 0 ? _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(input)) : null,
1074
+ input: input !== void 0 ? _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(input)) : null,
1022
1075
  hasInitialized: false,
1023
- state: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(void 0)),
1076
+ state: _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(void 0)),
1024
1077
  connections: [],
1025
1078
  scheduledEvents: []
1026
1079
  };
@@ -1043,5 +1096,5 @@ function serializeEmptyPersistData(input) {
1043
1096
 
1044
1097
 
1045
1098
 
1046
- 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.RunConfigSchema = RunConfigSchema; exports.serializeEmptyPersistData = serializeEmptyPersistData;
1047
- //# sourceMappingURL=chunk-SOC4HWCG.cjs.map
1099
+ 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;
1100
+ //# sourceMappingURL=chunk-CA3X5M6H.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/registry/run-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/v1.ts","../../src/schemas/actor-persist/versioned.ts"],"sourcesContent":["import type { cors } from \"hono/cors\";\nimport type { Logger } from \"pino\";\nimport { z } from \"zod\";\nimport type { ActorDriverBuilder } from \"@/actor/driver\";\nimport { ClientConfigSchema } from \"@/client/config\";\nimport { LogLevelSchema } from \"@/common/log\";\nimport { InspectorConfigSchema } from \"@/inspector/config\";\nimport type { ManagerDriverBuilder } from \"@/manager/driver\";\n\ntype CorsOptions = NonNullable<Parameters<typeof cors>[0]>;\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 RunConfigSchema = ClientConfigSchema.extend({\n\tdriver: DriverConfigSchema.optional(),\n\n\t/** CORS configuration for the router. Uses Hono's CORS middleware options. */\n\tcors: z.custom<CorsOptions>().optional(),\n\n\tmaxIncomingMessageSize: z.number().optional().default(65_536),\n\n\tinspector: InspectorConfigSchema,\n\n\t/** @experimental */\n\tdisableServer: z.boolean().optional().default(false),\n\n\t/** @experimental */\n\tdisableActorDriver: z.boolean().optional().default(false),\n\n\t/**\n\t * @experimental\n\t *\n\t * Base path for the router. This is used to prefix all routes.\n\t * For example, if the base path is `/api`, then the route `/actors` will be\n\t * available at `/api/actors`.\n\t */\n\tbasePath: z.string().optional().default(\"/\"),\n\n\t/**\n\t * @experimental\n\t *\n\t * Disable welcome message.\n\t * */\n\tnoWelcome: z.boolean().optional().default(false),\n\n\t/**\n\t * @experimental\n\t * */\n\tlogging: z\n\t\t.object({\n\t\t\tbaseLogger: z.custom<Logger>().optional(),\n\t\t\tlevel: LogLevelSchema.optional(),\n\t\t})\n\t\t.optional()\n\t\t.default({}),\n}).default({});\n\nexport type RunConfig = z.infer<typeof RunConfigSchema>;\nexport type RunConfigInput = z.input<typeof RunConfigSchema>;\n","import z from \"zod\";\nimport { TransportSchema } from \"@/actor/protocol/old\";\nimport { EncodingSchema } from \"@/actor/protocol/serde\";\nimport { getEnvUniversal, type UpgradeWebSocket } from \"@/utils\";\n\nexport type GetUpgradeWebSocket = () => UpgradeWebSocket;\n\nexport const ClientConfigSchema = z.object({\n\t/** Configure serving the API */\n\tapi: z\n\t\t.object({\n\t\t\thost: z.string().default(\"127.0.0.1\"),\n\t\t\tport: z.number().default(6420),\n\t\t})\n\t\t.default({}),\n\n\ttoken: z\n\t\t.string()\n\t\t.optional()\n\t\t.transform((x) => x ?? getEnvUniversal(\"RIVET_TOKEN\")),\n\n\ttotalSlots: z.number().optional(),\n\n\theaders: z.record(z.string()).optional().default({}),\n\n\t/** Endpoint to connect to the Rivet engine. Can be configured via RIVET_ENGINE env var. */\n\tendpoint: z\n\t\t.string()\n\t\t.nullable()\n\t\t.default(() => getEnvUniversal(\"RIVET_ENGINE\") ?? null),\n\n\tnamespace: z\n\t\t.string()\n\t\t.default(() => getEnvUniversal(\"RIVET_NAMESPACE\") ?? \"default\"),\n\n\trunnerName: z\n\t\t.string()\n\t\t.default(() => getEnvUniversal(\"RIVET_RUNNER\") ?? \"rivetkit\"),\n\n\tencoding: EncodingSchema.default(\"bare\"),\n\n\ttransport: TransportSchema.default(\"websocket\"),\n\n\t// This is a function to allow for lazy configuration of upgradeWebSocket on the\n\t// fly. This is required since the dependencies that upgradeWebSocket\n\t// (specifically Node.js) can sometimes only be specified after the router is\n\t// created or must be imported async using `await import(...)`\n\tgetUpgradeWebSocket: z.custom<GetUpgradeWebSocket>().optional(),\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 (data instanceof ArrayBuffer || data instanceof SharedArrayBuffer) {\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(cbor.encode(output)),\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(cbor.encode(metadata)),\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 type { cors } from \"hono/cors\";\nimport { z } from \"zod\";\nimport { HEADER_ACTOR_QUERY } from \"@/driver-helpers/mod\";\nimport { getEnvUniversal } from \"@/utils\";\n\ntype CorsOptions = NonNullable<Parameters<typeof cors>[0]>;\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\nconst defaultInspectorOrigins = [\n\t\"http://localhost:43708\",\n\t\"http://localhost:43709\",\n\t\"https://studio.rivet.gg\",\n\t\"https://inspect.rivet.dev\",\n];\n\nconst defaultCors: CorsOptions = {\n\torigin: (origin) => {\n\t\tif (\n\t\t\tdefaultInspectorOrigins.includes(origin) ||\n\t\t\t(origin.startsWith(\"https://\") && origin.endsWith(\"rivet-dev.vercel.app\"))\n\t\t) {\n\t\t\treturn origin;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t},\n\tallowMethods: [\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"OPTIONS\"],\n\tallowHeaders: [\n\t\t\"Authorization\",\n\t\t\"Content-Type\",\n\t\t\"User-Agent\",\n\t\t\"baggage\",\n\t\t\"sentry-trace\",\n\t\t\"x-rivet-actor\",\n\t\t\"x-rivet-target\",\n\t],\n\tmaxAge: 3600,\n\tcredentials: true,\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\t\t/** CORS configuration for the router. Uses Hono's CORS middleware options. */\n\t\tcors: z\n\t\t\t.custom<CorsOptions>()\n\t\t\t.optional()\n\t\t\t.default(() => defaultCors),\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\tcors: defaultCors,\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: input !== undefined ? bufferToArrayBuffer(cbor.encode(input)) : null,\n\t\thasInitialized: false,\n\t\tstate: bufferToArrayBuffer(cbor.encode(undefined)),\n\t\tconnections: [],\n\t\tscheduledEvents: [],\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\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\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}\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 }\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}\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 * as v1 from \"../../../dist/schemas/actor-persist/v1\";\n\nexport const CURRENT_VERSION = 1;\n\nexport type CurrentPersistedActor = v1.PersistedActor;\nexport type CurrentPersistedConnection = v1.PersistedConnection;\nexport type CurrentPersistedSubscription = v1.PersistedSubscription;\nexport type CurrentGenericPersistedScheduleEvent =\n\tv1.GenericPersistedScheduleEvent;\nexport type CurrentPersistedScheduleEventKind = v1.PersistedScheduleEventKind;\nexport type CurrentPersistedScheduleEvent = v1.PersistedScheduleEvent;\n\nconst migrations = new Map<number, MigrationFn<any, any>>();\n\nexport const PERSISTED_ACTOR_VERSIONED =\n\tcreateVersionedDataHandler<CurrentPersistedActor>({\n\t\tcurrentVersion: CURRENT_VERSION,\n\t\tmigrations,\n\t\tserializeVersion: (data) => v1.encodePersistedActor(data),\n\t\tdeserializeVersion: (bytes) => v1.decodePersistedActor(bytes),\n\t});\n"],"mappings":"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","names":["z","z","config","message","z","z","z","z","cbor","bare","config","read0","write0","read1","write1","CURRENT_VERSION","migrations"]}
1
+ {"version":3,"sources":["/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-CA3X5M6H.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/v1.ts","../../src/schemas/actor-persist/versioned.ts"],"names":["config"],"mappings":"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","file":"/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-CA3X5M6H.cjs","sourcesContent":[null,"import type { cors } from \"hono/cors\";\nimport 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 } from \"@/utils\";\n\ntype CorsOptions = NonNullable<Parameters<typeof cors>[0]>;\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/** CORS configuration for the router. Uses Hono's CORS middleware options. */\n\t\tcors: z.custom<CorsOptions>().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(() => getEnvUniversal(\"RIVET_RUN_ENGINE_VERSION\") ?? \"25.7.3\"),\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}),\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.default(\n\t\t\t\t() => getEnvUniversal(\"RIVET_RUNNER_KEY\") ?? crypto.randomUUID(),\n\t\t\t),\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\") ?? \"rivetkit\"),\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\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 (data instanceof ArrayBuffer || data instanceof SharedArrayBuffer) {\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(cbor.encode(output)),\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(cbor.encode(metadata)),\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 type { cors } from \"hono/cors\";\nimport { z } from \"zod\";\nimport { HEADER_ACTOR_QUERY } from \"@/driver-helpers/mod\";\nimport { getEnvUniversal } from \"@/utils\";\n\ntype CorsOptions = NonNullable<Parameters<typeof cors>[0]>;\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\nconst defaultInspectorOrigins = [\n\t\"http://localhost:43708\",\n\t\"http://localhost:43709\",\n\t\"https://studio.rivet.gg\",\n\t\"https://inspect.rivet.dev\",\n];\n\nconst defaultCors: CorsOptions = {\n\torigin: (origin) => {\n\t\tif (\n\t\t\tdefaultInspectorOrigins.includes(origin) ||\n\t\t\t(origin.startsWith(\"https://\") && origin.endsWith(\"rivet-dev.vercel.app\"))\n\t\t) {\n\t\t\treturn origin;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t},\n\tallowMethods: [\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"OPTIONS\"],\n\tallowHeaders: [\n\t\t\"Authorization\",\n\t\t\"Content-Type\",\n\t\t\"User-Agent\",\n\t\t\"baggage\",\n\t\t\"sentry-trace\",\n\t\t\"x-rivet-actor\",\n\t\t\"x-rivet-target\",\n\t],\n\tmaxAge: 3600,\n\tcredentials: true,\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\t\t/** CORS configuration for the router. Uses Hono's CORS middleware options. */\n\t\tcors: z\n\t\t\t.custom<CorsOptions>()\n\t\t\t.optional()\n\t\t\t.default(() => defaultCors),\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\tcors: defaultCors,\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: input !== undefined ? bufferToArrayBuffer(cbor.encode(input)) : null,\n\t\thasInitialized: false,\n\t\tstate: bufferToArrayBuffer(cbor.encode(undefined)),\n\t\tconnections: [],\n\t\tscheduledEvents: [],\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\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\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}\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 }\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}\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 * as v1 from \"../../../dist/schemas/actor-persist/v1\";\n\nexport const CURRENT_VERSION = 1;\n\nexport type CurrentPersistedActor = v1.PersistedActor;\nexport type CurrentPersistedConnection = v1.PersistedConnection;\nexport type CurrentPersistedSubscription = v1.PersistedSubscription;\nexport type CurrentGenericPersistedScheduleEvent =\n\tv1.GenericPersistedScheduleEvent;\nexport type CurrentPersistedScheduleEventKind = v1.PersistedScheduleEventKind;\nexport type CurrentPersistedScheduleEvent = v1.PersistedScheduleEvent;\n\nconst migrations = new Map<number, MigrationFn<any, any>>();\n\nexport const PERSISTED_ACTOR_VERSIONED =\n\tcreateVersionedDataHandler<CurrentPersistedActor>({\n\t\tcurrentVersion: CURRENT_VERSION,\n\t\tmigrations,\n\t\tserializeVersion: (data) => v1.encodePersistedActor(data),\n\t\tdeserializeVersion: (bytes) => v1.decodePersistedActor(bytes),\n\t});\n"]}