rivetkit 2.0.37 → 2.0.39

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 (104) hide show
  1. package/dist/tsup/{chunk-G4N7FZMM.cjs → chunk-7E3RWMR6.cjs} +195 -93
  2. package/dist/tsup/chunk-7E3RWMR6.cjs.map +1 -0
  3. package/dist/tsup/{chunk-J6TX5EFW.js → chunk-BQ36VTSB.js} +108 -6
  4. package/dist/tsup/chunk-BQ36VTSB.js.map +1 -0
  5. package/dist/tsup/{chunk-4V7MS7SO.cjs → chunk-C64FV764.cjs} +3 -3
  6. package/dist/tsup/{chunk-4V7MS7SO.cjs.map → chunk-C64FV764.cjs.map} +1 -1
  7. package/dist/tsup/{chunk-XI335ZED.js → chunk-CDK6DRO2.js} +6 -4
  8. package/dist/tsup/chunk-CDK6DRO2.js.map +1 -0
  9. package/dist/tsup/{chunk-LYYTV7DN.cjs → chunk-DY4H3ASE.cjs} +50 -46
  10. package/dist/tsup/chunk-DY4H3ASE.cjs.map +1 -0
  11. package/dist/tsup/{chunk-B6BP74X3.cjs → chunk-KMYFL3OL.cjs} +318 -92
  12. package/dist/tsup/chunk-KMYFL3OL.cjs.map +1 -0
  13. package/dist/tsup/{chunk-22NKW7F5.cjs → chunk-MZPYVTVG.cjs} +9 -9
  14. package/dist/tsup/{chunk-22NKW7F5.cjs.map → chunk-MZPYVTVG.cjs.map} +1 -1
  15. package/dist/tsup/{chunk-RBA5AQTB.js → chunk-OJZRCEIA.js} +5 -5
  16. package/dist/tsup/{chunk-RXA3ZMCL.js → chunk-PHCD25XO.js} +2 -2
  17. package/dist/tsup/{chunk-5XGZXH74.js → chunk-PVKUXMOA.js} +264 -38
  18. package/dist/tsup/chunk-PVKUXMOA.js.map +1 -0
  19. package/dist/tsup/{chunk-FIUSIG6J.js → chunk-T7IPDBWH.js} +8 -4
  20. package/dist/tsup/{chunk-FIUSIG6J.js.map → chunk-T7IPDBWH.js.map} +1 -1
  21. package/dist/tsup/{chunk-5VVIFC6M.cjs → chunk-UAX5E3EU.cjs} +443 -369
  22. package/dist/tsup/chunk-UAX5E3EU.cjs.map +1 -0
  23. package/dist/tsup/{chunk-X5IX3YPO.cjs → chunk-X72X7I7T.cjs} +6 -4
  24. package/dist/tsup/chunk-X72X7I7T.cjs.map +1 -0
  25. package/dist/tsup/{chunk-ZQBSQ6H3.js → chunk-XU74APB4.js} +208 -134
  26. package/dist/tsup/chunk-XU74APB4.js.map +1 -0
  27. package/dist/tsup/client/mod.cjs +5 -5
  28. package/dist/tsup/client/mod.d.cts +3 -3
  29. package/dist/tsup/client/mod.d.ts +3 -3
  30. package/dist/tsup/client/mod.js +4 -4
  31. package/dist/tsup/common/log.cjs +2 -2
  32. package/dist/tsup/common/log.js +1 -1
  33. package/dist/tsup/common/websocket.cjs +3 -3
  34. package/dist/tsup/common/websocket.js +2 -2
  35. package/dist/tsup/{config--NjwiYlS.d.cts → config-BuBlMs6C.d.cts} +238 -60
  36. package/dist/tsup/{config-CRuzI6n4.d.ts → config-CBwo4ooA.d.ts} +238 -60
  37. package/dist/tsup/{driver-yKjYx9Yy.d.cts → driver-CPXmh8f8.d.cts} +1 -1
  38. package/dist/tsup/{driver-BcmckRaF.d.ts → driver-DxWa6HUO.d.ts} +1 -1
  39. package/dist/tsup/driver-helpers/mod.cjs +3 -3
  40. package/dist/tsup/driver-helpers/mod.d.cts +2 -2
  41. package/dist/tsup/driver-helpers/mod.d.ts +2 -2
  42. package/dist/tsup/driver-helpers/mod.js +2 -2
  43. package/dist/tsup/driver-test-suite/mod.cjs +81 -35
  44. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  45. package/dist/tsup/driver-test-suite/mod.d.cts +2 -2
  46. package/dist/tsup/driver-test-suite/mod.d.ts +2 -2
  47. package/dist/tsup/driver-test-suite/mod.js +407 -361
  48. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  49. package/dist/tsup/{kv-CTM8sCvx.d.cts → keys-Chhy4ylv.d.cts} +1 -0
  50. package/dist/tsup/{kv-CTM8sCvx.d.ts → keys-Chhy4ylv.d.ts} +1 -0
  51. package/dist/tsup/mod.cjs +19 -7
  52. package/dist/tsup/mod.cjs.map +1 -1
  53. package/dist/tsup/mod.d.cts +5 -5
  54. package/dist/tsup/mod.d.ts +5 -5
  55. package/dist/tsup/mod.js +18 -6
  56. package/dist/tsup/test/mod.cjs +7 -7
  57. package/dist/tsup/test/mod.d.cts +1 -1
  58. package/dist/tsup/test/mod.d.ts +1 -1
  59. package/dist/tsup/test/mod.js +6 -6
  60. package/dist/tsup/utils.cjs +2 -2
  61. package/dist/tsup/utils.js +1 -1
  62. package/package.json +6 -4
  63. package/src/actor/config.ts +198 -2
  64. package/src/actor/contexts/base/actor.ts +12 -0
  65. package/src/actor/instance/connection-manager.ts +1 -1
  66. package/src/actor/instance/keys.ts +29 -0
  67. package/src/actor/instance/kv.ts +240 -14
  68. package/src/actor/instance/mod.ts +5 -4
  69. package/src/actor/instance/state-manager.ts +1 -1
  70. package/src/actor/mod.ts +2 -1
  71. package/src/actor/router-websocket-endpoints.ts +2 -1
  72. package/src/client/actor-conn.ts +70 -81
  73. package/src/client/actor-handle.ts +35 -15
  74. package/src/client/actor-query.ts +47 -0
  75. package/src/client/errors.ts +22 -58
  76. package/src/client/mod.ts +1 -1
  77. package/src/client/utils.ts +33 -0
  78. package/src/driver-helpers/utils.ts +1 -1
  79. package/src/driver-test-suite/mod.ts +3 -0
  80. package/src/driver-test-suite/test-inline-client-driver.ts +3 -0
  81. package/src/driver-test-suite/tests/actor-kv.ts +44 -0
  82. package/src/driver-test-suite/utils.ts +4 -0
  83. package/src/drivers/engine/actor-driver.ts +3 -3
  84. package/src/drivers/file-system/manager.ts +5 -0
  85. package/src/manager/driver.ts +8 -3
  86. package/src/manager-api/actors.ts +1 -20
  87. package/src/registry/config/index.ts +68 -0
  88. package/src/remote-manager-driver/actor-http-client.ts +5 -3
  89. package/src/remote-manager-driver/actor-websocket-client.ts +18 -7
  90. package/src/remote-manager-driver/mod.ts +21 -1
  91. package/src/serverless/router.test.ts +166 -0
  92. package/src/serverless/router.ts +58 -5
  93. package/src/utils/env-vars.ts +4 -1
  94. package/dist/tsup/chunk-5VVIFC6M.cjs.map +0 -1
  95. package/dist/tsup/chunk-5XGZXH74.js.map +0 -1
  96. package/dist/tsup/chunk-B6BP74X3.cjs.map +0 -1
  97. package/dist/tsup/chunk-G4N7FZMM.cjs.map +0 -1
  98. package/dist/tsup/chunk-J6TX5EFW.js.map +0 -1
  99. package/dist/tsup/chunk-LYYTV7DN.cjs.map +0 -1
  100. package/dist/tsup/chunk-X5IX3YPO.cjs.map +0 -1
  101. package/dist/tsup/chunk-XI335ZED.js.map +0 -1
  102. package/dist/tsup/chunk-ZQBSQ6H3.js.map +0 -1
  103. /package/dist/tsup/{chunk-RBA5AQTB.js.map → chunk-OJZRCEIA.js.map} +0 -0
  104. /package/dist/tsup/{chunk-RXA3ZMCL.js.map → chunk-PHCD25XO.js.map} +0 -0
@@ -1,15 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkLYYTV7DNcjs = require('./chunk-LYYTV7DN.cjs');
3
+ var _chunkDY4H3ASEcjs = require('./chunk-DY4H3ASE.cjs');
4
4
 
5
5
 
6
- var _chunk5VVIFC6Mcjs = require('./chunk-5VVIFC6M.cjs');
6
+ var _chunkUAX5E3EUcjs = require('./chunk-UAX5E3EU.cjs');
7
7
 
8
8
 
9
- var _chunkB6BP74X3cjs = require('./chunk-B6BP74X3.cjs');
9
+ var _chunkKMYFL3OLcjs = require('./chunk-KMYFL3OL.cjs');
10
10
 
11
11
 
12
- var _chunkX5IX3YPOcjs = require('./chunk-X5IX3YPO.cjs');
12
+ var _chunkX72X7I7Tcjs = require('./chunk-X72X7I7T.cjs');
13
13
 
14
14
  // src/test/mod.ts
15
15
  var _net = require('net');
@@ -19,14 +19,14 @@ var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(
19
19
 
20
20
  // src/test/log.ts
21
21
  function logger() {
22
- return _chunkX5IX3YPOcjs.getLogger.call(void 0, "test");
22
+ return _chunkX72X7I7Tcjs.getLogger.call(void 0, "test");
23
23
  }
24
24
 
25
25
  // src/test/mod.ts
26
26
  async function setupTest(c, registry) {
27
27
  var _a;
28
28
  registry.config.test = { ...registry.config.test, enabled: true };
29
- const driver = await _chunkLYYTV7DNcjs.createFileSystemOrMemoryDriver.call(void 0,
29
+ const driver = await _chunkDY4H3ASEcjs.createFileSystemOrMemoryDriver.call(void 0,
30
30
  true,
31
31
  `/tmp/rivetkit-test-${crypto.randomUUID()}`
32
32
  );
@@ -39,7 +39,7 @@ async function setupTest(c, registry) {
39
39
  const parsedConfig = registry.parseConfig();
40
40
  const managerDriver = (_a = driver.manager) == null ? void 0 : _a.call(driver, parsedConfig);
41
41
  _invariant2.default.call(void 0, managerDriver, "missing manager driver");
42
- const { router } = _chunkB6BP74X3cjs.buildManagerRouter.call(void 0,
42
+ const { router } = _chunkKMYFL3OLcjs.buildManagerRouter.call(void 0,
43
43
  parsedConfig,
44
44
  managerDriver,
45
45
  () => upgradeWebSocket
@@ -62,7 +62,7 @@ async function setupTest(c, registry) {
62
62
  c.onTestFinished(async () => {
63
63
  await new Promise((resolve) => server.close(() => resolve(void 0)));
64
64
  });
65
- const client = _chunk5VVIFC6Mcjs.createClient.call(void 0, {
65
+ const client = _chunkUAX5E3EUcjs.createClient.call(void 0, {
66
66
  endpoint,
67
67
  namespace: "default",
68
68
  runnerName: "default"
@@ -111,4 +111,4 @@ async function getPort() {
111
111
 
112
112
 
113
113
  exports.setupTest = setupTest; exports.getPort = getPort;
114
- //# sourceMappingURL=chunk-22NKW7F5.cjs.map
114
+ //# sourceMappingURL=chunk-MZPYVTVG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-22NKW7F5.cjs","../../src/test/mod.ts","../../src/test/log.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACbA,0BAA6B;AAC7B,+CAAmC;AACnC,uCAAoC;AACpC,4FAAsB;ADetB;AACA;AEjBO,SAAS,MAAA,CAAA,EAAS;AACxB,EAAA,OAAO,yCAAA,MAAgB,CAAA;AACxB;AFmBA;AACA;ACNA,MAAA,SAAsB,SAAA,CACrB,CAAA,EACA,QAAA,EAC8B;AArB/B,EAAA,IAAA,EAAA;AAuBC,EAAA,QAAA,CAAS,MAAA,CAAO,KAAA,EAAO,EAAE,GAAG,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAA,EAAS,KAAK,CAAA;AAGhE,EAAA,MAAM,OAAA,EAAS,MAAM,8DAAA;AAAA,IACpB,IAAA;AAAA,IACA,CAAA,mBAAA,EAAsB,MAAA,CAAO,UAAA,CAAW,CAAC,CAAA;AAAA,EAAA;AAK1C,EAAA;AACA,EAAA;AACA,EAAA;AAA4B,IAAA;AAClB,IAAA;AACI,EAAA;AAId,EAAA;AACA,EAAA;AACA,EAAA;AAKA,EAAA;AAAmB,IAAA;AAClB,IAAA;AACA,IAAA;AACM,EAAA;AAIP,EAAA;AACA,EAAA;AAIA,EAAA;AACA,EAAA;AAAyB,IAAA;AACV,IAAA;AACJ,IAAA;AACV,EAAA;AAED,EAAA;AAAA,IAAA;AACmC,IAAA;AAClC,EAAA;AAED,EAAA;AACA,EAAA;AAEA,EAAA;AAGA,EAAA;AACC,IAAA;AAAqE,EAAA;AAItE,EAAA;AAA+B,IAAA;AAC9B,IAAA;AACW,IAAA;AACC,EAAA;AAEb,EAAA;AAEA,EAAA;AACD;AAEA;AAEC,EAAA;AACA,EAAA;AACA,EAAA;AAGA,EAAA;AACA,EAAA;AAEA,EAAA;AACC,IAAA;AAEC,MAAA;AACC,QAAA;AAEA,QAAA;AACC,UAAA;AACC,YAAA;AAA0C,UAAA;AAE1C,YAAA;AAAU,UAAA;AACX,QAAA;AAGD,QAAA;AACC,UAAA;AAAc,QAAA;AAGf,QAAA;AAAkB,MAAA;AAInB,MAAA;AACC,QAAA;AAA4B,MAAA;AAG7B,MAAA;AAAO,IAAA;AAGP,MAAA;AACA,MAAA;AACC,QAAA;AAAA,MAAA;AAED,MAAA;AAAqB,IAAA;AACtB,EAAA;AAGD,EAAA;AACD;AD/BA;AACA;AACA;AACA;AACA","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-22NKW7F5.cjs","sourcesContent":[null,"import { createServer } from \"node:net\";\nimport { serve as honoServe } from \"@hono/node-server\";\nimport { createNodeWebSocket } from \"@hono/node-ws\";\nimport invariant from \"invariant\";\nimport { type TestContext, vi } from \"vitest\";\nimport { ClientConfigSchema } from \"@/client/config\";\nimport { type Client, createClient } from \"@/client/mod\";\nimport { createFileSystemOrMemoryDriver } from \"@/drivers/file-system/mod\";\nimport { createClientWithDriver, type Registry } from \"@/mod\";\nimport { RegistryConfig, RegistryConfigSchema } from \"@/registry/config\";\nimport { buildManagerRouter } from \"@/manager/router\";\nimport { logger } from \"./log\";\n\nexport interface SetupTestResult<A extends Registry<any>> {\n\tclient: Client<A>;\n}\n\n// Must use `TestContext` since global hooks do not work when running concurrently\nexport async function setupTest<A extends Registry<any>>(\n\tc: TestContext,\n\tregistry: A,\n): Promise<SetupTestResult<A>> {\n\t// Force enable test mode\n\tregistry.config.test = { ...registry.config.test, enabled: true };\n\n\t// Create driver\n\tconst driver = await createFileSystemOrMemoryDriver(\n\t\ttrue,\n\t\t`/tmp/rivetkit-test-${crypto.randomUUID()}`,\n\t);\n\n\t// Build driver config\n\t// biome-ignore lint/style/useConst: Assigned later\n\tlet upgradeWebSocket: any;\n\tregistry.config.driver = driver;\n\tregistry.config.inspector = {\n\t\tenabled: true,\n\t\ttoken: () => \"token\",\n\t};\n\n\t// Create router\n\tconst parsedConfig = registry.parseConfig();\n\tconst managerDriver = driver.manager?.(parsedConfig);\n\tinvariant(managerDriver, \"missing manager driver\");\n\t// const internalClient = createClientWithDriver(\n\t// \tmanagerDriver,\n\t// \tClientConfigSchema.parse({}),\n\t// );\n\tconst { router } = buildManagerRouter(\n\t\tparsedConfig,\n\t\tmanagerDriver,\n\t\t() => upgradeWebSocket!,\n\t);\n\n\t// Inject WebSocket\n\tconst nodeWebSocket = createNodeWebSocket({ app: router });\n\tupgradeWebSocket = nodeWebSocket.upgradeWebSocket;\n\n\t// TODO: I think this whole function is fucked, we should probably switch to calling registry.serve() directly\n\t// Start server\n\tconst port = await getPort();\n\tconst server = honoServe({\n\t\tfetch: router.fetch,\n\t\thostname: \"127.0.0.1\",\n\t\tport,\n\t});\n\tinvariant(\n\t\tnodeWebSocket.injectWebSocket !== undefined,\n\t\t\"should have injectWebSocket\",\n\t);\n\tnodeWebSocket.injectWebSocket(server);\n\tconst endpoint = `http://127.0.0.1:${port}`;\n\n\tlogger().info({ msg: \"test server listening\", port });\n\n\t// Cleanup on test finish\n\tc.onTestFinished(async () => {\n\t\tawait new Promise((resolve) => server.close(() => resolve(undefined)));\n\t});\n\n\t// Create client\n\tconst client = createClient<A>({\n\t\tendpoint,\n\t\tnamespace: \"default\",\n\t\trunnerName: \"default\",\n\t});\n\tc.onTestFinished(async () => await client.dispose());\n\n\treturn { client };\n}\n\nexport async function getPort(): Promise<number> {\n\t// Pick random port between 10000 and 65535 (avoiding well-known and registered ports)\n\tconst MIN_PORT = 10000;\n\tconst MAX_PORT = 65535;\n\tconst getRandomPort = () =>\n\t\tMath.floor(Math.random() * (MAX_PORT - MIN_PORT + 1)) + MIN_PORT;\n\n\tlet port = getRandomPort();\n\tlet maxAttempts = 10;\n\n\twhile (maxAttempts > 0) {\n\t\ttry {\n\t\t\t// Try to create a server on the port to check if it's available\n\t\t\tconst server = await new Promise<any>((resolve, reject) => {\n\t\t\t\tconst server = createServer();\n\n\t\t\t\tserver.once(\"error\", (err: Error & { code?: string }) => {\n\t\t\t\t\tif (err.code === \"EADDRINUSE\") {\n\t\t\t\t\t\treject(new Error(`Port ${port} is in use`));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tserver.once(\"listening\", () => {\n\t\t\t\t\tresolve(server);\n\t\t\t\t});\n\n\t\t\t\tserver.listen(port);\n\t\t\t});\n\n\t\t\t// Close the server since we're just checking availability\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tserver.close(() => resolve());\n\t\t\t});\n\n\t\t\treturn port;\n\t\t} catch (err) {\n\t\t\t// If port is in use, try a different one\n\t\t\tmaxAttempts--;\n\t\t\tif (maxAttempts <= 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tport = getRandomPort();\n\t\t}\n\t}\n\n\tthrow new Error(\"Could not find an available port after multiple attempts\");\n}\n","import { getLogger } from \"@/common/log\";\n\nexport function logger() {\n\treturn getLogger(\"test\");\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-MZPYVTVG.cjs","../../src/test/mod.ts","../../src/test/log.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACbA,0BAA6B;AAC7B,+CAAmC;AACnC,uCAAoC;AACpC,4FAAsB;ADetB;AACA;AEjBO,SAAS,MAAA,CAAA,EAAS;AACxB,EAAA,OAAO,yCAAA,MAAgB,CAAA;AACxB;AFmBA;AACA;ACNA,MAAA,SAAsB,SAAA,CACrB,CAAA,EACA,QAAA,EAC8B;AArB/B,EAAA,IAAA,EAAA;AAuBC,EAAA,QAAA,CAAS,MAAA,CAAO,KAAA,EAAO,EAAE,GAAG,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAA,EAAS,KAAK,CAAA;AAGhE,EAAA,MAAM,OAAA,EAAS,MAAM,8DAAA;AAAA,IACpB,IAAA;AAAA,IACA,CAAA,mBAAA,EAAsB,MAAA,CAAO,UAAA,CAAW,CAAC,CAAA;AAAA,EAAA;AAK1C,EAAA;AACA,EAAA;AACA,EAAA;AAA4B,IAAA;AAClB,IAAA;AACI,EAAA;AAId,EAAA;AACA,EAAA;AACA,EAAA;AAKA,EAAA;AAAmB,IAAA;AAClB,IAAA;AACA,IAAA;AACM,EAAA;AAIP,EAAA;AACA,EAAA;AAIA,EAAA;AACA,EAAA;AAAyB,IAAA;AACV,IAAA;AACJ,IAAA;AACV,EAAA;AAED,EAAA;AAAA,IAAA;AACmC,IAAA;AAClC,EAAA;AAED,EAAA;AACA,EAAA;AAEA,EAAA;AAGA,EAAA;AACC,IAAA;AAAqE,EAAA;AAItE,EAAA;AAA+B,IAAA;AAC9B,IAAA;AACW,IAAA;AACC,EAAA;AAEb,EAAA;AAEA,EAAA;AACD;AAEA;AAEC,EAAA;AACA,EAAA;AACA,EAAA;AAGA,EAAA;AACA,EAAA;AAEA,EAAA;AACC,IAAA;AAEC,MAAA;AACC,QAAA;AAEA,QAAA;AACC,UAAA;AACC,YAAA;AAA0C,UAAA;AAE1C,YAAA;AAAU,UAAA;AACX,QAAA;AAGD,QAAA;AACC,UAAA;AAAc,QAAA;AAGf,QAAA;AAAkB,MAAA;AAInB,MAAA;AACC,QAAA;AAA4B,MAAA;AAG7B,MAAA;AAAO,IAAA;AAGP,MAAA;AACA,MAAA;AACC,QAAA;AAAA,MAAA;AAED,MAAA;AAAqB,IAAA;AACtB,EAAA;AAGD,EAAA;AACD;AD/BA;AACA;AACA;AACA;AACA","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-MZPYVTVG.cjs","sourcesContent":[null,"import { createServer } from \"node:net\";\nimport { serve as honoServe } from \"@hono/node-server\";\nimport { createNodeWebSocket } from \"@hono/node-ws\";\nimport invariant from \"invariant\";\nimport { type TestContext, vi } from \"vitest\";\nimport { ClientConfigSchema } from \"@/client/config\";\nimport { type Client, createClient } from \"@/client/mod\";\nimport { createFileSystemOrMemoryDriver } from \"@/drivers/file-system/mod\";\nimport { createClientWithDriver, type Registry } from \"@/mod\";\nimport { RegistryConfig, RegistryConfigSchema } from \"@/registry/config\";\nimport { buildManagerRouter } from \"@/manager/router\";\nimport { logger } from \"./log\";\n\nexport interface SetupTestResult<A extends Registry<any>> {\n\tclient: Client<A>;\n}\n\n// Must use `TestContext` since global hooks do not work when running concurrently\nexport async function setupTest<A extends Registry<any>>(\n\tc: TestContext,\n\tregistry: A,\n): Promise<SetupTestResult<A>> {\n\t// Force enable test mode\n\tregistry.config.test = { ...registry.config.test, enabled: true };\n\n\t// Create driver\n\tconst driver = await createFileSystemOrMemoryDriver(\n\t\ttrue,\n\t\t`/tmp/rivetkit-test-${crypto.randomUUID()}`,\n\t);\n\n\t// Build driver config\n\t// biome-ignore lint/style/useConst: Assigned later\n\tlet upgradeWebSocket: any;\n\tregistry.config.driver = driver;\n\tregistry.config.inspector = {\n\t\tenabled: true,\n\t\ttoken: () => \"token\",\n\t};\n\n\t// Create router\n\tconst parsedConfig = registry.parseConfig();\n\tconst managerDriver = driver.manager?.(parsedConfig);\n\tinvariant(managerDriver, \"missing manager driver\");\n\t// const internalClient = createClientWithDriver(\n\t// \tmanagerDriver,\n\t// \tClientConfigSchema.parse({}),\n\t// );\n\tconst { router } = buildManagerRouter(\n\t\tparsedConfig,\n\t\tmanagerDriver,\n\t\t() => upgradeWebSocket!,\n\t);\n\n\t// Inject WebSocket\n\tconst nodeWebSocket = createNodeWebSocket({ app: router });\n\tupgradeWebSocket = nodeWebSocket.upgradeWebSocket;\n\n\t// TODO: I think this whole function is fucked, we should probably switch to calling registry.serve() directly\n\t// Start server\n\tconst port = await getPort();\n\tconst server = honoServe({\n\t\tfetch: router.fetch,\n\t\thostname: \"127.0.0.1\",\n\t\tport,\n\t});\n\tinvariant(\n\t\tnodeWebSocket.injectWebSocket !== undefined,\n\t\t\"should have injectWebSocket\",\n\t);\n\tnodeWebSocket.injectWebSocket(server);\n\tconst endpoint = `http://127.0.0.1:${port}`;\n\n\tlogger().info({ msg: \"test server listening\", port });\n\n\t// Cleanup on test finish\n\tc.onTestFinished(async () => {\n\t\tawait new Promise((resolve) => server.close(() => resolve(undefined)));\n\t});\n\n\t// Create client\n\tconst client = createClient<A>({\n\t\tendpoint,\n\t\tnamespace: \"default\",\n\t\trunnerName: \"default\",\n\t});\n\tc.onTestFinished(async () => await client.dispose());\n\n\treturn { client };\n}\n\nexport async function getPort(): Promise<number> {\n\t// Pick random port between 10000 and 65535 (avoiding well-known and registered ports)\n\tconst MIN_PORT = 10000;\n\tconst MAX_PORT = 65535;\n\tconst getRandomPort = () =>\n\t\tMath.floor(Math.random() * (MAX_PORT - MIN_PORT + 1)) + MIN_PORT;\n\n\tlet port = getRandomPort();\n\tlet maxAttempts = 10;\n\n\twhile (maxAttempts > 0) {\n\t\ttry {\n\t\t\t// Try to create a server on the port to check if it's available\n\t\t\tconst server = await new Promise<any>((resolve, reject) => {\n\t\t\t\tconst server = createServer();\n\n\t\t\t\tserver.once(\"error\", (err: Error & { code?: string }) => {\n\t\t\t\t\tif (err.code === \"EADDRINUSE\") {\n\t\t\t\t\t\treject(new Error(`Port ${port} is in use`));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tserver.once(\"listening\", () => {\n\t\t\t\t\tresolve(server);\n\t\t\t\t});\n\n\t\t\t\tserver.listen(port);\n\t\t\t});\n\n\t\t\t// Close the server since we're just checking availability\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tserver.close(() => resolve());\n\t\t\t});\n\n\t\t\treturn port;\n\t\t} catch (err) {\n\t\t\t// If port is in use, try a different one\n\t\t\tmaxAttempts--;\n\t\t\tif (maxAttempts <= 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tport = getRandomPort();\n\t\t}\n\t}\n\n\tthrow new Error(\"Could not find an available port after multiple attempts\");\n}\n","import { getLogger } from \"@/common/log\";\n\nexport function logger() {\n\treturn getLogger(\"test\");\n}\n"]}
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  createFileSystemOrMemoryDriver
3
- } from "./chunk-FIUSIG6J.js";
3
+ } from "./chunk-T7IPDBWH.js";
4
4
  import {
5
5
  createClient
6
- } from "./chunk-ZQBSQ6H3.js";
6
+ } from "./chunk-XU74APB4.js";
7
7
  import {
8
8
  buildManagerRouter
9
- } from "./chunk-5XGZXH74.js";
9
+ } from "./chunk-PVKUXMOA.js";
10
10
  import {
11
11
  getLogger
12
- } from "./chunk-XI335ZED.js";
12
+ } from "./chunk-CDK6DRO2.js";
13
13
 
14
14
  // src/test/mod.ts
15
15
  import { createServer } from "net";
@@ -111,4 +111,4 @@ export {
111
111
  setupTest,
112
112
  getPort
113
113
  };
114
- //# sourceMappingURL=chunk-RBA5AQTB.js.map
114
+ //# sourceMappingURL=chunk-OJZRCEIA.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getLogger
3
- } from "./chunk-XI335ZED.js";
3
+ } from "./chunk-CDK6DRO2.js";
4
4
 
5
5
  // src/client/log.ts
6
6
  function logger() {
@@ -46,4 +46,4 @@ export {
46
46
  logger,
47
47
  importWebSocket
48
48
  };
49
- //# sourceMappingURL=chunk-RXA3ZMCL.js.map
49
+ //# sourceMappingURL=chunk-PHCD25XO.js.map
@@ -31,7 +31,7 @@ import {
31
31
  noopNext,
32
32
  promiseWithResolvers,
33
33
  stringifyError
34
- } from "./chunk-XI335ZED.js";
34
+ } from "./chunk-CDK6DRO2.js";
35
35
  import {
36
36
  ConnStateNotEnabled,
37
37
  Forbidden,
@@ -152,12 +152,215 @@ import * as cbor3 from "cbor-x";
152
152
  // src/actor/router-endpoints.ts
153
153
  import * as cbor2 from "cbor-x";
154
154
 
155
+ // src/actor/instance/keys.ts
156
+ var KEYS = {
157
+ PERSIST_DATA: Uint8Array.from([1]),
158
+ CONN_PREFIX: Uint8Array.from([2]),
159
+ // Prefix for connection keys
160
+ INSPECTOR_TOKEN: Uint8Array.from([3]),
161
+ // Inspector token key
162
+ KV: Uint8Array.from([4])
163
+ // Prefix for user-facing KV storage
164
+ };
165
+ function makePrefixedKey(key) {
166
+ const prefixed = new Uint8Array(KEYS.KV.length + key.length);
167
+ prefixed.set(KEYS.KV, 0);
168
+ prefixed.set(key, KEYS.KV.length);
169
+ return prefixed;
170
+ }
171
+ function removePrefixFromKey(prefixedKey) {
172
+ return prefixedKey.slice(KEYS.KV.length);
173
+ }
174
+ function makeConnKey(connId) {
175
+ const encoder = new TextEncoder();
176
+ const connIdBytes = encoder.encode(connId);
177
+ const key = new Uint8Array(KEYS.CONN_PREFIX.length + connIdBytes.length);
178
+ key.set(KEYS.CONN_PREFIX, 0);
179
+ key.set(connIdBytes, KEYS.CONN_PREFIX.length);
180
+ return key;
181
+ }
182
+
183
+ // src/actor/instance/kv.ts
184
+ var textEncoder = new TextEncoder();
185
+ var textDecoder = new TextDecoder();
186
+ function encodeKey(key, keyType) {
187
+ if (key instanceof Uint8Array) {
188
+ return key;
189
+ }
190
+ const resolvedKeyType = keyType ?? "text";
191
+ if (resolvedKeyType === "binary") {
192
+ throw new TypeError("Expected a Uint8Array when keyType is binary");
193
+ }
194
+ return textEncoder.encode(key);
195
+ }
196
+ function decodeKey(key, keyType) {
197
+ const resolvedKeyType = keyType ?? "text";
198
+ switch (resolvedKeyType) {
199
+ case "text":
200
+ return textDecoder.decode(key);
201
+ case "binary":
202
+ return key;
203
+ default:
204
+ throw new TypeError("Invalid kv key type");
205
+ }
206
+ }
207
+ function resolveValueType(value) {
208
+ if (typeof value === "string") {
209
+ return "text";
210
+ }
211
+ if (value instanceof Uint8Array) {
212
+ return "binary";
213
+ }
214
+ if (value instanceof ArrayBuffer) {
215
+ return "arrayBuffer";
216
+ }
217
+ throw new TypeError("Invalid kv value");
218
+ }
219
+ function encodeValue(value, options) {
220
+ const type = (options == null ? void 0 : options.type) ?? resolveValueType(value);
221
+ switch (type) {
222
+ case "text":
223
+ if (typeof value !== "string") {
224
+ throw new TypeError("Expected a string when type is text");
225
+ }
226
+ return textEncoder.encode(value);
227
+ case "arrayBuffer":
228
+ if (!(value instanceof ArrayBuffer)) {
229
+ throw new TypeError("Expected an ArrayBuffer when type is arrayBuffer");
230
+ }
231
+ return new Uint8Array(value);
232
+ case "binary":
233
+ if (!(value instanceof Uint8Array)) {
234
+ throw new TypeError("Expected a Uint8Array when type is binary");
235
+ }
236
+ return value;
237
+ default:
238
+ throw new TypeError("Invalid kv value type");
239
+ }
240
+ }
241
+ function decodeValue(value, options) {
242
+ const type = (options == null ? void 0 : options.type) ?? "text";
243
+ switch (type) {
244
+ case "text":
245
+ return textDecoder.decode(value);
246
+ case "arrayBuffer": {
247
+ const copy = new Uint8Array(value.byteLength);
248
+ copy.set(value);
249
+ return copy.buffer;
250
+ }
251
+ case "binary":
252
+ return value;
253
+ default:
254
+ throw new TypeError("Invalid kv value type");
255
+ }
256
+ }
257
+ var ActorKv = class {
258
+ #driver;
259
+ #actorId;
260
+ constructor(driver, actorId) {
261
+ this.#driver = driver;
262
+ this.#actorId = actorId;
263
+ }
264
+ /**
265
+ * Get a single value by key.
266
+ */
267
+ async get(key, options) {
268
+ const results = await this.#driver.kvBatchGet(this.#actorId, [
269
+ makePrefixedKey(encodeKey(key))
270
+ ]);
271
+ const result = results[0];
272
+ if (!result) {
273
+ return null;
274
+ }
275
+ return decodeValue(result, options);
276
+ }
277
+ /**
278
+ * Get multiple values by keys.
279
+ */
280
+ async getBatch(keys, options) {
281
+ const prefixedKeys = keys.map(
282
+ (key) => makePrefixedKey(encodeKey(key))
283
+ );
284
+ const results = await this.#driver.kvBatchGet(
285
+ this.#actorId,
286
+ prefixedKeys
287
+ );
288
+ return results.map(
289
+ (result) => result ? decodeValue(result, options) : null
290
+ );
291
+ }
292
+ /**
293
+ * Put a single key-value pair.
294
+ */
295
+ async put(key, value, options) {
296
+ await this.#driver.kvBatchPut(this.#actorId, [
297
+ [makePrefixedKey(encodeKey(key)), encodeValue(value, options)]
298
+ ]);
299
+ }
300
+ /**
301
+ * Put multiple key-value pairs.
302
+ */
303
+ async putBatch(entries, options) {
304
+ const prefixedEntries = entries.map(
305
+ ([key, value]) => [
306
+ makePrefixedKey(encodeKey(key)),
307
+ encodeValue(value, options)
308
+ ]
309
+ );
310
+ await this.#driver.kvBatchPut(this.#actorId, prefixedEntries);
311
+ }
312
+ /**
313
+ * Delete a single key.
314
+ */
315
+ async delete(key) {
316
+ await this.#driver.kvBatchDelete(this.#actorId, [
317
+ makePrefixedKey(encodeKey(key))
318
+ ]);
319
+ }
320
+ /**
321
+ * Delete multiple keys.
322
+ */
323
+ async deleteBatch(keys) {
324
+ const prefixedKeys = keys.map(
325
+ (key) => makePrefixedKey(encodeKey(key))
326
+ );
327
+ await this.#driver.kvBatchDelete(this.#actorId, prefixedKeys);
328
+ }
329
+ /**
330
+ * List all keys with a given prefix.
331
+ * Returns key-value pairs where keys have the user prefix removed.
332
+ */
333
+ async list(prefix, options) {
334
+ const prefixedPrefix = makePrefixedKey(
335
+ encodeKey(prefix, options == null ? void 0 : options.keyType)
336
+ );
337
+ const results = await this.#driver.kvListPrefix(
338
+ this.#actorId,
339
+ prefixedPrefix
340
+ );
341
+ return results.map(([key, value]) => [
342
+ decodeKey(removePrefixFromKey(key), options == null ? void 0 : options.keyType),
343
+ decodeValue(value, options)
344
+ ]);
345
+ }
346
+ };
347
+
155
348
  // src/actor/contexts/base/actor.ts
156
349
  var ActorContext = class {
157
350
  #actor;
351
+ #kv;
158
352
  constructor(actor) {
159
353
  this.#actor = actor;
160
354
  }
355
+ /**
356
+ * Gets the KV storage interface.
357
+ */
358
+ get kv() {
359
+ if (!this.#kv) {
360
+ this.#kv = new ActorKv(this.#actor.driver, this.#actor.id);
361
+ }
362
+ return this.#kv;
363
+ }
161
364
  /**
162
365
  * Get the actor state
163
366
  *
@@ -1981,6 +2184,55 @@ function buildActorNames(config6) {
1981
2184
  Object.keys(config6.use).map((name) => [name, { metadata: {} }])
1982
2185
  );
1983
2186
  }
2187
+ var DocInspectorConfigSchema = z7.object({
2188
+ enabled: z7.boolean().optional().describe("Whether to enable the Rivet Inspector. Defaults to true in development mode."),
2189
+ token: z7.string().optional().describe("Token used to access the Inspector."),
2190
+ defaultEndpoint: z7.string().optional().describe("Default RivetKit server endpoint for Rivet Inspector to connect to.")
2191
+ }).optional().describe("Inspector configuration for debugging and development.");
2192
+ var DocConfigureRunnerPoolSchema = z7.object({
2193
+ name: z7.string().optional().describe("Name of the runner pool."),
2194
+ url: z7.string().describe("URL of the serverless platform to configure runners."),
2195
+ headers: z7.record(z7.string(), z7.string()).optional().describe("Headers to include in requests to the serverless platform."),
2196
+ maxRunners: z7.number().optional().describe("Maximum number of runners in the pool."),
2197
+ minRunners: z7.number().optional().describe("Minimum number of runners to keep warm."),
2198
+ requestLifespan: z7.number().optional().describe("Maximum lifespan of a request in milliseconds."),
2199
+ runnersMargin: z7.number().optional().describe("Buffer margin for scaling runners."),
2200
+ slotsPerRunner: z7.number().optional().describe("Number of actor slots per runner."),
2201
+ metadata: z7.record(z7.string(), z7.unknown()).optional().describe("Additional metadata to pass to the serverless platform.")
2202
+ }).optional();
2203
+ var DocServerlessConfigSchema = z7.object({
2204
+ spawnEngine: z7.boolean().optional().describe("Downloads and starts the full Rust engine process. Auto-enabled in development mode when no endpoint is provided. Default: false"),
2205
+ engineVersion: z7.string().optional().describe("Version of the engine to download. Defaults to the current RivetKit version."),
2206
+ configureRunnerPool: DocConfigureRunnerPoolSchema.describe("Automatically configure serverless runners in the engine."),
2207
+ basePath: z7.string().optional().describe("Base path for serverless API routes. Default: '/api/rivet'"),
2208
+ publicEndpoint: z7.string().optional().describe("The endpoint that clients should connect to. Supports URL auth syntax: https://namespace:token@api.rivet.dev"),
2209
+ publicToken: z7.string().optional().describe("Token that clients should use when connecting via the public endpoint.")
2210
+ }).describe("Configuration for serverless deployment mode.");
2211
+ var DocRunnerConfigSchema = z7.object({
2212
+ totalSlots: z7.number().optional().describe("Total number of actor slots available. Default: 100000"),
2213
+ runnerName: z7.string().optional().describe("Name of this runner. Default: 'default'"),
2214
+ runnerKey: z7.string().optional().describe("Authentication key for the runner."),
2215
+ version: z7.number().optional().describe("Version number of this runner. Default: 1")
2216
+ }).describe("Configuration for runner mode.");
2217
+ var DocRegistryConfigSchema = z7.object({
2218
+ use: z7.record(z7.string(), z7.unknown()).describe("Actor definitions. Keys are actor names, values are actor definitions."),
2219
+ maxIncomingMessageSize: z7.number().optional().describe("Maximum size of incoming WebSocket messages in bytes. Default: 65536"),
2220
+ maxOutgoingMessageSize: z7.number().optional().describe("Maximum size of outgoing WebSocket messages in bytes. Default: 1048576"),
2221
+ noWelcome: z7.boolean().optional().describe("Disable the welcome message on startup. Default: false"),
2222
+ logging: z7.object({
2223
+ level: LogLevelSchema.optional().describe("Log level for RivetKit. Default: 'warn'")
2224
+ }).optional().describe("Logging configuration."),
2225
+ endpoint: z7.string().optional().describe("Endpoint URL to connect to Rivet Engine. Supports URL auth syntax: https://namespace:token@api.rivet.dev. Can also be set via RIVET_ENDPOINT environment variable."),
2226
+ token: z7.string().optional().describe("Authentication token for Rivet Engine. Can also be set via RIVET_TOKEN environment variable."),
2227
+ namespace: z7.string().optional().describe("Namespace to use. Default: 'default'. Can also be set via RIVET_NAMESPACE environment variable."),
2228
+ headers: z7.record(z7.string(), z7.string()).optional().describe("Additional headers to include in requests to Rivet Engine."),
2229
+ serveManager: z7.boolean().optional().describe("Whether to start the local manager server. Auto-determined based on endpoint and NODE_ENV if not specified."),
2230
+ managerBasePath: z7.string().optional().describe("Base path for the manager API. Default: '/'"),
2231
+ managerPort: z7.number().optional().describe("Port to run the manager on. Default: 6420"),
2232
+ inspector: DocInspectorConfigSchema,
2233
+ serverless: DocServerlessConfigSchema.optional(),
2234
+ runner: DocRunnerConfigSchema.optional()
2235
+ }).describe("RivetKit registry configuration.");
1984
2236
 
1985
2237
  // src/common/router.ts
1986
2238
  function logger() {
@@ -2080,21 +2332,6 @@ import { z as z8 } from "zod";
2080
2332
  var RivetIdSchema = z8.string();
2081
2333
 
2082
2334
  // src/manager-api/actors.ts
2083
- var ServerlessConnectionErrorSchema = z9.union([
2084
- z9.object({ http_error: z9.object({ status_code: z9.number(), body: z9.string() }) }),
2085
- z9.literal("stream_ended_early"),
2086
- z9.object({ connection_error: z9.object({ message: z9.string() }) }),
2087
- z9.literal("invalid_base64"),
2088
- z9.object({ invalid_payload: z9.object({ message: z9.string() }) }),
2089
- z9.literal("runner_config_not_found"),
2090
- z9.literal("runner_config_not_serverless"),
2091
- z9.literal("namespace_not_found")
2092
- ]);
2093
- var ActorErrorDetailsSchema = z9.union([
2094
- z9.object({ serverless_error: ServerlessConnectionErrorSchema }),
2095
- z9.object({ no_capacity: z9.object({ runner_name: z9.string() }) }),
2096
- z9.object({ runner_no_response: z9.object({ runner_id: z9.string() }) })
2097
- ]);
2098
2335
  var ActorSchema = z9.object({
2099
2336
  actor_id: RivetIdSchema,
2100
2337
  name: z9.string(),
@@ -2106,7 +2343,7 @@ var ActorSchema = z9.object({
2106
2343
  destroy_ts: z9.number().nullable().optional(),
2107
2344
  sleep_ts: z9.number().nullable().optional(),
2108
2345
  start_ts: z9.number().nullable().optional(),
2109
- error: ActorErrorDetailsSchema.nullable().optional()
2346
+ error: z9.unknown().nullable().optional()
2110
2347
  });
2111
2348
  var ActorNameSchema = z9.object({
2112
2349
  metadata: z9.record(z9.string(), z9.unknown())
@@ -3304,7 +3541,7 @@ function parseWebSocketProtocols(protocols) {
3304
3541
  }
3305
3542
  }
3306
3543
  }
3307
- const encoding = EncodingSchema.parse(encodingRaw);
3544
+ const encoding = EncodingSchema.parse(encodingRaw ?? "json");
3308
3545
  const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
3309
3546
  return { encoding, connParams };
3310
3547
  }
@@ -4166,23 +4403,6 @@ function createApiActor(actor) {
4166
4403
  // src/driver-helpers/utils.ts
4167
4404
  import * as cbor7 from "cbor-x";
4168
4405
 
4169
- // src/actor/instance/kv.ts
4170
- var KEYS = {
4171
- PERSIST_DATA: Uint8Array.from([1]),
4172
- CONN_PREFIX: Uint8Array.from([2]),
4173
- // Prefix for connection keys
4174
- INSPECTOR_TOKEN: Uint8Array.from([3])
4175
- // Inspector token key
4176
- };
4177
- function makeConnKey(connId) {
4178
- const encoder = new TextEncoder();
4179
- const connIdBytes = encoder.encode(connId);
4180
- const key = new Uint8Array(KEYS.CONN_PREFIX.length + connIdBytes.length);
4181
- key.set(KEYS.CONN_PREFIX, 0);
4182
- key.set(connIdBytes, KEYS.CONN_PREFIX.length);
4183
- return key;
4184
- }
4185
-
4186
4406
  // src/schemas/actor-persist/versioned.ts
4187
4407
  import { createVersionedDataHandler as createVersionedDataHandler2 } from "vbare";
4188
4408
 
@@ -4902,6 +5122,9 @@ export {
4902
5122
  CONN_STATE_MANAGER_SYMBOL,
4903
5123
  CONN_SEND_MESSAGE_SYMBOL,
4904
5124
  Conn,
5125
+ KEYS,
5126
+ makeConnKey,
5127
+ ActorKv,
4905
5128
  ActorContext,
4906
5129
  ActionContext,
4907
5130
  CURRENT_VERSION2,
@@ -4917,8 +5140,6 @@ export {
4917
5140
  getValueLength,
4918
5141
  inputDataToBuffer,
4919
5142
  processMessage,
4920
- KEYS,
4921
- makeConnKey,
4922
5143
  PATH_CONNECT,
4923
5144
  PATH_WEBSOCKET_BASE,
4924
5145
  PATH_WEBSOCKET_PREFIX,
@@ -4948,6 +5169,11 @@ export {
4948
5169
  TestConfigSchema,
4949
5170
  RegistryConfigSchema,
4950
5171
  buildActorNames,
5172
+ DocInspectorConfigSchema,
5173
+ DocConfigureRunnerPoolSchema,
5174
+ DocServerlessConfigSchema,
5175
+ DocRunnerConfigSchema,
5176
+ DocRegistryConfigSchema,
4951
5177
  loggerMiddleware,
4952
5178
  handleRouteNotFound,
4953
5179
  handleRouteError,
@@ -4960,4 +5186,4 @@ export {
4960
5186
  buildManagerRouter,
4961
5187
  getInitialActorKvState
4962
5188
  };
4963
- //# sourceMappingURL=chunk-5XGZXH74.js.map
5189
+ //# sourceMappingURL=chunk-PVKUXMOA.js.map