rivetkit 2.0.38 → 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 (93) hide show
  1. package/dist/tsup/{chunk-6WLJW57U.cjs → chunk-7E3RWMR6.cjs} +161 -115
  2. package/dist/tsup/chunk-7E3RWMR6.cjs.map +1 -0
  3. package/dist/tsup/{chunk-FA6FGAEC.js → chunk-BQ36VTSB.js} +74 -28
  4. package/dist/tsup/chunk-BQ36VTSB.js.map +1 -0
  5. package/dist/tsup/{chunk-GFKZZG2A.cjs → chunk-C64FV764.cjs} +3 -3
  6. package/dist/tsup/{chunk-GFKZZG2A.cjs.map → chunk-C64FV764.cjs.map} +1 -1
  7. package/dist/tsup/{chunk-4U45T5KW.js → chunk-CDK6DRO2.js} +2 -2
  8. package/dist/tsup/{chunk-4U45T5KW.js.map → chunk-CDK6DRO2.js.map} +1 -1
  9. package/dist/tsup/{chunk-IRTVRBJA.cjs → chunk-DY4H3ASE.cjs} +50 -46
  10. package/dist/tsup/chunk-DY4H3ASE.cjs.map +1 -0
  11. package/dist/tsup/{chunk-IWXMFQDT.cjs → chunk-KMYFL3OL.cjs} +264 -77
  12. package/dist/tsup/chunk-KMYFL3OL.cjs.map +1 -0
  13. package/dist/tsup/{chunk-FZQHTGQX.cjs → chunk-MZPYVTVG.cjs} +9 -9
  14. package/dist/tsup/{chunk-FZQHTGQX.cjs.map → chunk-MZPYVTVG.cjs.map} +1 -1
  15. package/dist/tsup/{chunk-K2RNF2ZR.js → chunk-OJZRCEIA.js} +5 -5
  16. package/dist/tsup/{chunk-WIZ4JGP6.js → chunk-PHCD25XO.js} +2 -2
  17. package/dist/tsup/{chunk-MIOU6BF3.js → chunk-PVKUXMOA.js} +209 -22
  18. package/dist/tsup/chunk-PVKUXMOA.js.map +1 -0
  19. package/dist/tsup/{chunk-UUEZVDRL.js → chunk-T7IPDBWH.js} +8 -4
  20. package/dist/tsup/{chunk-UUEZVDRL.js.map → chunk-T7IPDBWH.js.map} +1 -1
  21. package/dist/tsup/{chunk-LULP6HM2.cjs → chunk-UAX5E3EU.cjs} +311 -288
  22. package/dist/tsup/chunk-UAX5E3EU.cjs.map +1 -0
  23. package/dist/tsup/{chunk-O433HWWG.cjs → chunk-X72X7I7T.cjs} +2 -2
  24. package/dist/tsup/{chunk-O433HWWG.cjs.map → chunk-X72X7I7T.cjs.map} +1 -1
  25. package/dist/tsup/{chunk-EEL32AJM.js → chunk-XU74APB4.js} +72 -49
  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-CwJCQyP1.d.cts → config-BuBlMs6C.d.cts} +72 -5
  36. package/dist/tsup/{config-CbIHPGKl.d.ts → config-CBwo4ooA.d.ts} +72 -5
  37. package/dist/tsup/{driver-Lw_oORox.d.cts → driver-CPXmh8f8.d.cts} +1 -1
  38. package/dist/tsup/{driver-CMN823Lc.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 +9 -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 +8 -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 +2 -2
  63. package/src/actor/config.ts +183 -34
  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-handle.ts +13 -3
  73. package/src/client/mod.ts +1 -1
  74. package/src/driver-helpers/utils.ts +1 -1
  75. package/src/driver-test-suite/mod.ts +3 -0
  76. package/src/driver-test-suite/test-inline-client-driver.ts +3 -0
  77. package/src/driver-test-suite/tests/actor-kv.ts +44 -0
  78. package/src/driver-test-suite/utils.ts +4 -0
  79. package/src/drivers/engine/actor-driver.ts +3 -3
  80. package/src/drivers/file-system/manager.ts +5 -0
  81. package/src/manager/driver.ts +7 -0
  82. package/src/remote-manager-driver/actor-http-client.ts +5 -3
  83. package/src/remote-manager-driver/actor-websocket-client.ts +18 -7
  84. package/src/remote-manager-driver/mod.ts +10 -0
  85. package/dist/tsup/chunk-6WLJW57U.cjs.map +0 -1
  86. package/dist/tsup/chunk-EEL32AJM.js.map +0 -1
  87. package/dist/tsup/chunk-FA6FGAEC.js.map +0 -1
  88. package/dist/tsup/chunk-IRTVRBJA.cjs.map +0 -1
  89. package/dist/tsup/chunk-IWXMFQDT.cjs.map +0 -1
  90. package/dist/tsup/chunk-LULP6HM2.cjs.map +0 -1
  91. package/dist/tsup/chunk-MIOU6BF3.js.map +0 -1
  92. /package/dist/tsup/{chunk-K2RNF2ZR.js.map → chunk-OJZRCEIA.js.map} +0 -0
  93. /package/dist/tsup/{chunk-WIZ4JGP6.js.map → chunk-PHCD25XO.js.map} +0 -0
@@ -2,6 +2,7 @@ declare const KEYS: {
2
2
  PERSIST_DATA: Uint8Array<ArrayBuffer>;
3
3
  CONN_PREFIX: Uint8Array<ArrayBuffer>;
4
4
  INSPECTOR_TOKEN: Uint8Array<ArrayBuffer>;
5
+ KV: Uint8Array<ArrayBuffer>;
5
6
  };
6
7
 
7
8
  export { KEYS as K };
@@ -2,6 +2,7 @@ declare const KEYS: {
2
2
  PERSIST_DATA: Uint8Array<ArrayBuffer>;
3
3
  CONN_PREFIX: Uint8Array<ArrayBuffer>;
4
4
  INSPECTOR_TOKEN: Uint8Array<ArrayBuffer>;
5
+ KV: Uint8Array<ArrayBuffer>;
5
6
  };
6
7
 
7
8
  export { KEYS as K };
package/dist/tsup/mod.cjs CHANGED
@@ -3,18 +3,18 @@
3
3
 
4
4
 
5
5
 
6
- var _chunk6WLJW57Ucjs = require('./chunk-6WLJW57U.cjs');
6
+ var _chunk7E3RWMR6cjs = require('./chunk-7E3RWMR6.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
- var _chunkIRTVRBJAcjs = require('./chunk-IRTVRBJA.cjs');
12
+ var _chunkDY4H3ASEcjs = require('./chunk-DY4H3ASE.cjs');
13
13
 
14
14
 
15
15
 
16
- var _chunkLULP6HM2cjs = require('./chunk-LULP6HM2.cjs');
17
- require('./chunk-GFKZZG2A.cjs');
16
+ var _chunkUAX5E3EUcjs = require('./chunk-UAX5E3EU.cjs');
17
+ require('./chunk-C64FV764.cjs');
18
18
 
19
19
 
20
20
 
@@ -31,12 +31,13 @@ require('./chunk-GFKZZG2A.cjs');
31
31
 
32
32
 
33
33
 
34
- var _chunkIWXMFQDTcjs = require('./chunk-IWXMFQDT.cjs');
34
+
35
+ var _chunkKMYFL3OLcjs = require('./chunk-KMYFL3OL.cjs');
35
36
  require('./chunk-KDFWJKMJ.cjs');
36
37
 
37
38
 
38
39
 
39
- var _chunkO433HWWGcjs = require('./chunk-O433HWWG.cjs');
40
+ var _chunkX72X7I7Tcjs = require('./chunk-X72X7I7T.cjs');
40
41
 
41
42
 
42
43
  var _chunkSNAUKDDKcjs = require('./chunk-SNAUKDDK.cjs');
@@ -70,5 +71,6 @@ require('./chunk-GBENOENJ.cjs');
70
71
 
71
72
 
72
73
 
73
- exports.ALLOWED_PUBLIC_HEADERS = _chunkIWXMFQDTcjs.ALLOWED_PUBLIC_HEADERS; exports.ActorsSchema = _chunkIWXMFQDTcjs.ActorsSchema; exports.DocConfigureRunnerPoolSchema = _chunkIWXMFQDTcjs.DocConfigureRunnerPoolSchema; exports.DocInspectorConfigSchema = _chunkIWXMFQDTcjs.DocInspectorConfigSchema; exports.DocRegistryConfigSchema = _chunkIWXMFQDTcjs.DocRegistryConfigSchema; exports.DocRunnerConfigSchema = _chunkIWXMFQDTcjs.DocRunnerConfigSchema; exports.DocServerlessConfigSchema = _chunkIWXMFQDTcjs.DocServerlessConfigSchema; exports.DriverConfigSchema = _chunkIWXMFQDTcjs.DriverConfigSchema; exports.InlineWebSocketAdapter = _chunkIRTVRBJAcjs.InlineWebSocketAdapter; exports.KV_KEYS = _chunkIWXMFQDTcjs.KEYS; exports.PATH_CONNECT = _chunkIWXMFQDTcjs.PATH_CONNECT; exports.PATH_WEBSOCKET_PREFIX = _chunkIWXMFQDTcjs.PATH_WEBSOCKET_PREFIX; exports.Registry = _chunk6WLJW57Ucjs.Registry; exports.RegistryConfigSchema = _chunkIWXMFQDTcjs.RegistryConfigSchema; exports.TestConfigSchema = _chunkIWXMFQDTcjs.TestConfigSchema; exports.UserError = _chunkSNAUKDDKcjs.UserError; exports.actor = _chunk6WLJW57Ucjs.actor; exports.buildActorNames = _chunkIWXMFQDTcjs.buildActorNames; exports.createActorRouter = _chunkIRTVRBJAcjs.createActorRouter; exports.createClientWithDriver = _chunkLULP6HM2cjs.createClientWithDriver; exports.createEngineDriver = _chunk6WLJW57Ucjs.createEngineDriver; exports.createFileSystemDriver = _chunkIRTVRBJAcjs.createFileSystemDriver; exports.createMemoryDriver = _chunkIRTVRBJAcjs.createMemoryDriver; exports.lookupInRegistry = _chunkLULP6HM2cjs.lookupInRegistry; exports.noopNext = _chunkO433HWWGcjs.noopNext; exports.routeWebSocket = _chunkIWXMFQDTcjs.routeWebSocket; exports.setup = _chunk6WLJW57Ucjs.setup; exports.toUint8Array = _chunkO433HWWGcjs.toUint8Array;
74
+
75
+ exports.ALLOWED_PUBLIC_HEADERS = _chunkKMYFL3OLcjs.ALLOWED_PUBLIC_HEADERS; exports.ActorKv = _chunkKMYFL3OLcjs.ActorKv; exports.ActorsSchema = _chunkKMYFL3OLcjs.ActorsSchema; exports.DocConfigureRunnerPoolSchema = _chunkKMYFL3OLcjs.DocConfigureRunnerPoolSchema; exports.DocInspectorConfigSchema = _chunkKMYFL3OLcjs.DocInspectorConfigSchema; exports.DocRegistryConfigSchema = _chunkKMYFL3OLcjs.DocRegistryConfigSchema; exports.DocRunnerConfigSchema = _chunkKMYFL3OLcjs.DocRunnerConfigSchema; exports.DocServerlessConfigSchema = _chunkKMYFL3OLcjs.DocServerlessConfigSchema; exports.DriverConfigSchema = _chunkKMYFL3OLcjs.DriverConfigSchema; exports.InlineWebSocketAdapter = _chunkDY4H3ASEcjs.InlineWebSocketAdapter; exports.KV_KEYS = _chunkKMYFL3OLcjs.KEYS; exports.PATH_CONNECT = _chunkKMYFL3OLcjs.PATH_CONNECT; exports.PATH_WEBSOCKET_PREFIX = _chunkKMYFL3OLcjs.PATH_WEBSOCKET_PREFIX; exports.Registry = _chunk7E3RWMR6cjs.Registry; exports.RegistryConfigSchema = _chunkKMYFL3OLcjs.RegistryConfigSchema; exports.TestConfigSchema = _chunkKMYFL3OLcjs.TestConfigSchema; exports.UserError = _chunkSNAUKDDKcjs.UserError; exports.actor = _chunk7E3RWMR6cjs.actor; exports.buildActorNames = _chunkKMYFL3OLcjs.buildActorNames; exports.createActorRouter = _chunkDY4H3ASEcjs.createActorRouter; exports.createClientWithDriver = _chunkUAX5E3EUcjs.createClientWithDriver; exports.createEngineDriver = _chunk7E3RWMR6cjs.createEngineDriver; exports.createFileSystemDriver = _chunkDY4H3ASEcjs.createFileSystemDriver; exports.createMemoryDriver = _chunkDY4H3ASEcjs.createMemoryDriver; exports.lookupInRegistry = _chunkUAX5E3EUcjs.lookupInRegistry; exports.noopNext = _chunkX72X7I7Tcjs.noopNext; exports.routeWebSocket = _chunkKMYFL3OLcjs.routeWebSocket; exports.setup = _chunk7E3RWMR6cjs.setup; exports.toUint8Array = _chunkX72X7I7Tcjs.toUint8Array;
74
76
  //# sourceMappingURL=mod.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/mod.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wvDAAC","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/mod.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/mod.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,qyDAAC","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/mod.cjs"}
@@ -1,16 +1,16 @@
1
- import { R as RegistryConfig, A as ActorDriver, a as AnyConn, b as AnyActorInstance, E as Encoding, c as AnyDatabaseProvider, d as Actions, e as ActorConfigInput, f as ActorDefinition } from './config-CwJCQyP1.cjs';
2
- export { z as ActionContext, B as ActionContextOf, q as ActorConfig, o as ActorConfigSchema, s as ActorContext, u as ActorContextOf, j as ActorKey, i as ActorQuery, n as ActorTypes, ab as ActorsSchema, l as AnyActorDefinition, g as AnyClient, p as AuthIntent, F as BeforeActionResponseContext, G as BeforeActionResponseContextOf, H as BeforeConnectContext, I as BeforeConnectContextOf, C as Client, k as Conn, v as ConnContext, w as ConnContextOf, x as ConnInitContext, y as ConnInitContextOf, J as ConnectContext, K as ConnectContextOf, N as CreateConnStateContext, O as CreateConnStateContextOf, L as CreateContext, M as CreateContextOf, P as CreateVarsContext, Q as CreateVarsContextOf, S as DestroyContext, T as DestroyContextOf, U as DisconnectContext, V as DisconnectContextOf, r as DocActorConfigSchema, D as DocActorOptionsSchema, ah as DocConfigureRunnerPoolSchema, ag as DocInspectorConfigSchema, ak as DocRegistryConfigSchema, aj as DocRunnerConfigSchema, ai as DocServerlessConfigSchema, a6 as FetchHandler, a8 as LegacyStartServerOutput, a9 as Registry, a4 as RegistryActors, ae as RegistryConfigInput, a5 as RegistryConfigSchema, W as RequestContext, X as RequestContextOf, a7 as ServerlessHandler, Y as SleepContext, Z as SleepContextOf, _ as StateChangeContext, $ as StateChangeContextOf, ad as TestConfig, ac as TestConfigSchema, a0 as WakeContext, a1 as WakeContextOf, a2 as WebSocketContext, a3 as WebSocketContextOf, af as buildActorNames, h as createClientWithDriver, m as lookupInRegistry, aa as setup, t as test } from './config-CwJCQyP1.cjs';
1
+ import { R as RegistryConfig, A as ActorDriver, a as AnyConn, b as AnyActorInstance, E as Encoding, c as AnyDatabaseProvider, d as Actions, e as ActorConfigInput, f as ActorDefinition } from './config-BuBlMs6C.cjs';
2
+ export { B as ActionContext, F as ActionContextOf, r as ActorConfig, p as ActorConfigSchema, u as ActorContext, v as ActorContextOf, j as ActorKey, n as ActorKv, i as ActorQuery, o as ActorTypes, ac as ActorsSchema, l as AnyActorDefinition, g as AnyClient, q as AuthIntent, G as BeforeActionResponseContext, H as BeforeActionResponseContextOf, I as BeforeConnectContext, J as BeforeConnectContextOf, C as Client, k as Conn, w as ConnContext, x as ConnContextOf, y as ConnInitContext, z as ConnInitContextOf, K as ConnectContext, L as ConnectContextOf, O as CreateConnStateContext, P as CreateConnStateContextOf, M as CreateContext, N as CreateContextOf, Q as CreateVarsContext, S as CreateVarsContextOf, T as DestroyContext, U as DestroyContextOf, V as DisconnectContext, W as DisconnectContextOf, s as DocActorConfigSchema, D as DocActorOptionsSchema, ai as DocConfigureRunnerPoolSchema, ah as DocInspectorConfigSchema, al as DocRegistryConfigSchema, ak as DocRunnerConfigSchema, aj as DocServerlessConfigSchema, a7 as FetchHandler, a9 as LegacyStartServerOutput, aa as Registry, a5 as RegistryActors, af as RegistryConfigInput, a6 as RegistryConfigSchema, X as RequestContext, Y as RequestContextOf, a8 as ServerlessHandler, Z as SleepContext, _ as SleepContextOf, $ as StateChangeContext, a0 as StateChangeContextOf, ae as TestConfig, ad as TestConfigSchema, a1 as WakeContext, a2 as WakeContextOf, a3 as WebSocketContext, a4 as WebSocketContextOf, ag as buildActorNames, h as createClientWithDriver, m as lookupInRegistry, ab as setup, t as test } from './config-BuBlMs6C.cjs';
3
3
  import { WSContext } from 'hono/ws';
4
4
  import { UniversalWebSocket } from '@rivetkit/virtual-websocket';
5
5
  export { RivetCloseEvent, RivetEvent, RivetMessageEvent, UniversalWebSocket } from '@rivetkit/virtual-websocket';
6
6
  export { n as noopNext } from './utils-fwx3o3K9.cjs';
7
- import { D as DriverConfig } from './driver-Lw_oORox.cjs';
8
- export { a as DriverConfigSchema } from './driver-Lw_oORox.cjs';
7
+ import { D as DriverConfig } from './driver-CPXmh8f8.cjs';
8
+ export { a as DriverConfigSchema } from './driver-CPXmh8f8.cjs';
9
9
  import { GetUpgradeWebSocket } from './utils.cjs';
10
10
  export { toUint8Array } from './utils.cjs';
11
11
  export { A as ALLOWED_PUBLIC_HEADERS, P as PATH_CONNECT, a as PATH_WEBSOCKET_PREFIX } from './actor-router-consts-DzI2szci.cjs';
12
12
  export { UserError, UserErrorOptions } from './actor/errors.cjs';
13
- export { K as KV_KEYS } from './kv-CTM8sCvx.cjs';
13
+ export { K as KV_KEYS } from './keys-Chhy4ylv.cjs';
14
14
  import { Hono } from 'hono';
15
15
  import 'zod';
16
16
  import 'vbare';
@@ -1,16 +1,16 @@
1
- import { R as RegistryConfig, A as ActorDriver, a as AnyConn, b as AnyActorInstance, E as Encoding, c as AnyDatabaseProvider, d as Actions, e as ActorConfigInput, f as ActorDefinition } from './config-CbIHPGKl.js';
2
- export { z as ActionContext, B as ActionContextOf, q as ActorConfig, o as ActorConfigSchema, s as ActorContext, u as ActorContextOf, j as ActorKey, i as ActorQuery, n as ActorTypes, ab as ActorsSchema, l as AnyActorDefinition, g as AnyClient, p as AuthIntent, F as BeforeActionResponseContext, G as BeforeActionResponseContextOf, H as BeforeConnectContext, I as BeforeConnectContextOf, C as Client, k as Conn, v as ConnContext, w as ConnContextOf, x as ConnInitContext, y as ConnInitContextOf, J as ConnectContext, K as ConnectContextOf, N as CreateConnStateContext, O as CreateConnStateContextOf, L as CreateContext, M as CreateContextOf, P as CreateVarsContext, Q as CreateVarsContextOf, S as DestroyContext, T as DestroyContextOf, U as DisconnectContext, V as DisconnectContextOf, r as DocActorConfigSchema, D as DocActorOptionsSchema, ah as DocConfigureRunnerPoolSchema, ag as DocInspectorConfigSchema, ak as DocRegistryConfigSchema, aj as DocRunnerConfigSchema, ai as DocServerlessConfigSchema, a6 as FetchHandler, a8 as LegacyStartServerOutput, a9 as Registry, a4 as RegistryActors, ae as RegistryConfigInput, a5 as RegistryConfigSchema, W as RequestContext, X as RequestContextOf, a7 as ServerlessHandler, Y as SleepContext, Z as SleepContextOf, _ as StateChangeContext, $ as StateChangeContextOf, ad as TestConfig, ac as TestConfigSchema, a0 as WakeContext, a1 as WakeContextOf, a2 as WebSocketContext, a3 as WebSocketContextOf, af as buildActorNames, h as createClientWithDriver, m as lookupInRegistry, aa as setup, t as test } from './config-CbIHPGKl.js';
1
+ import { R as RegistryConfig, A as ActorDriver, a as AnyConn, b as AnyActorInstance, E as Encoding, c as AnyDatabaseProvider, d as Actions, e as ActorConfigInput, f as ActorDefinition } from './config-CBwo4ooA.js';
2
+ export { B as ActionContext, F as ActionContextOf, r as ActorConfig, p as ActorConfigSchema, u as ActorContext, v as ActorContextOf, j as ActorKey, n as ActorKv, i as ActorQuery, o as ActorTypes, ac as ActorsSchema, l as AnyActorDefinition, g as AnyClient, q as AuthIntent, G as BeforeActionResponseContext, H as BeforeActionResponseContextOf, I as BeforeConnectContext, J as BeforeConnectContextOf, C as Client, k as Conn, w as ConnContext, x as ConnContextOf, y as ConnInitContext, z as ConnInitContextOf, K as ConnectContext, L as ConnectContextOf, O as CreateConnStateContext, P as CreateConnStateContextOf, M as CreateContext, N as CreateContextOf, Q as CreateVarsContext, S as CreateVarsContextOf, T as DestroyContext, U as DestroyContextOf, V as DisconnectContext, W as DisconnectContextOf, s as DocActorConfigSchema, D as DocActorOptionsSchema, ai as DocConfigureRunnerPoolSchema, ah as DocInspectorConfigSchema, al as DocRegistryConfigSchema, ak as DocRunnerConfigSchema, aj as DocServerlessConfigSchema, a7 as FetchHandler, a9 as LegacyStartServerOutput, aa as Registry, a5 as RegistryActors, af as RegistryConfigInput, a6 as RegistryConfigSchema, X as RequestContext, Y as RequestContextOf, a8 as ServerlessHandler, Z as SleepContext, _ as SleepContextOf, $ as StateChangeContext, a0 as StateChangeContextOf, ae as TestConfig, ad as TestConfigSchema, a1 as WakeContext, a2 as WakeContextOf, a3 as WebSocketContext, a4 as WebSocketContextOf, ag as buildActorNames, h as createClientWithDriver, m as lookupInRegistry, ab as setup, t as test } from './config-CBwo4ooA.js';
3
3
  import { WSContext } from 'hono/ws';
4
4
  import { UniversalWebSocket } from '@rivetkit/virtual-websocket';
5
5
  export { RivetCloseEvent, RivetEvent, RivetMessageEvent, UniversalWebSocket } from '@rivetkit/virtual-websocket';
6
6
  export { n as noopNext } from './utils-fwx3o3K9.js';
7
- import { D as DriverConfig } from './driver-CMN823Lc.js';
8
- export { a as DriverConfigSchema } from './driver-CMN823Lc.js';
7
+ import { D as DriverConfig } from './driver-DxWa6HUO.js';
8
+ export { a as DriverConfigSchema } from './driver-DxWa6HUO.js';
9
9
  import { GetUpgradeWebSocket } from './utils.js';
10
10
  export { toUint8Array } from './utils.js';
11
11
  export { A as ALLOWED_PUBLIC_HEADERS, P as PATH_CONNECT, a as PATH_WEBSOCKET_PREFIX } from './actor-router-consts-DzI2szci.js';
12
12
  export { UserError, UserErrorOptions } from './actor/errors.js';
13
- export { K as KV_KEYS } from './kv-CTM8sCvx.js';
13
+ export { K as KV_KEYS } from './keys-Chhy4ylv.js';
14
14
  import { Hono } from 'hono';
15
15
  import 'zod';
16
16
  import 'vbare';
package/dist/tsup/mod.js CHANGED
@@ -3,20 +3,21 @@ import {
3
3
  actor,
4
4
  createEngineDriver,
5
5
  setup
6
- } from "./chunk-FA6FGAEC.js";
6
+ } from "./chunk-BQ36VTSB.js";
7
7
  import {
8
8
  InlineWebSocketAdapter,
9
9
  createActorRouter,
10
10
  createFileSystemDriver,
11
11
  createMemoryDriver
12
- } from "./chunk-UUEZVDRL.js";
12
+ } from "./chunk-T7IPDBWH.js";
13
13
  import {
14
14
  createClientWithDriver,
15
15
  lookupInRegistry
16
- } from "./chunk-EEL32AJM.js";
17
- import "./chunk-WIZ4JGP6.js";
16
+ } from "./chunk-XU74APB4.js";
17
+ import "./chunk-PHCD25XO.js";
18
18
  import {
19
19
  ALLOWED_PUBLIC_HEADERS,
20
+ ActorKv,
20
21
  ActorsSchema,
21
22
  DocConfigureRunnerPoolSchema,
22
23
  DocInspectorConfigSchema,
@@ -31,17 +32,18 @@ import {
31
32
  TestConfigSchema,
32
33
  buildActorNames,
33
34
  routeWebSocket
34
- } from "./chunk-MIOU6BF3.js";
35
+ } from "./chunk-PVKUXMOA.js";
35
36
  import "./chunk-E6ZE2YEA.js";
36
37
  import {
37
38
  noopNext,
38
39
  toUint8Array
39
- } from "./chunk-4U45T5KW.js";
40
+ } from "./chunk-CDK6DRO2.js";
40
41
  import {
41
42
  UserError
42
43
  } from "./chunk-2YHR67M4.js";
43
44
  export {
44
45
  ALLOWED_PUBLIC_HEADERS,
46
+ ActorKv,
45
47
  ActorsSchema,
46
48
  DocConfigureRunnerPoolSchema,
47
49
  DocInspectorConfigSchema,
@@ -1,17 +1,17 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkFZQHTGQXcjs = require('../chunk-FZQHTGQX.cjs');
5
- require('../chunk-IRTVRBJA.cjs');
6
- require('../chunk-LULP6HM2.cjs');
7
- require('../chunk-GFKZZG2A.cjs');
8
- require('../chunk-IWXMFQDT.cjs');
4
+ var _chunkMZPYVTVGcjs = require('../chunk-MZPYVTVG.cjs');
5
+ require('../chunk-DY4H3ASE.cjs');
6
+ require('../chunk-UAX5E3EU.cjs');
7
+ require('../chunk-C64FV764.cjs');
8
+ require('../chunk-KMYFL3OL.cjs');
9
9
  require('../chunk-KDFWJKMJ.cjs');
10
- require('../chunk-O433HWWG.cjs');
10
+ require('../chunk-X72X7I7T.cjs');
11
11
  require('../chunk-SNAUKDDK.cjs');
12
12
  require('../chunk-GBENOENJ.cjs');
13
13
 
14
14
 
15
15
 
16
- exports.getPort = _chunkFZQHTGQXcjs.getPort; exports.setupTest = _chunkFZQHTGQXcjs.setupTest;
16
+ exports.getPort = _chunkMZPYVTVGcjs.getPort; exports.setupTest = _chunkMZPYVTVGcjs.setupTest;
17
17
  //# sourceMappingURL=mod.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { TestContext } from 'vitest';
2
- import { a9 as Registry, C as Client } from '../config-CwJCQyP1.cjs';
2
+ import { aa as Registry, C as Client } from '../config-BuBlMs6C.cjs';
3
3
  import 'zod';
4
4
  import '@rivetkit/virtual-websocket';
5
5
  import 'hono';
@@ -1,5 +1,5 @@
1
1
  import { TestContext } from 'vitest';
2
- import { a9 as Registry, C as Client } from '../config-CbIHPGKl.js';
2
+ import { aa as Registry, C as Client } from '../config-CBwo4ooA.js';
3
3
  import 'zod';
4
4
  import '@rivetkit/virtual-websocket';
5
5
  import 'hono';
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  getPort,
3
3
  setupTest
4
- } from "../chunk-K2RNF2ZR.js";
5
- import "../chunk-UUEZVDRL.js";
6
- import "../chunk-EEL32AJM.js";
7
- import "../chunk-WIZ4JGP6.js";
8
- import "../chunk-MIOU6BF3.js";
4
+ } from "../chunk-OJZRCEIA.js";
5
+ import "../chunk-T7IPDBWH.js";
6
+ import "../chunk-XU74APB4.js";
7
+ import "../chunk-PHCD25XO.js";
8
+ import "../chunk-PVKUXMOA.js";
9
9
  import "../chunk-E6ZE2YEA.js";
10
- import "../chunk-4U45T5KW.js";
10
+ import "../chunk-CDK6DRO2.js";
11
11
  import "../chunk-2YHR67M4.js";
12
12
  export {
13
13
  getPort,
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- var _chunkO433HWWGcjs = require('./chunk-O433HWWG.cjs');
17
+ var _chunkX72X7I7Tcjs = require('./chunk-X72X7I7T.cjs');
18
18
  require('./chunk-SNAUKDDK.cjs');
19
19
  require('./chunk-GBENOENJ.cjs');
20
20
 
@@ -33,5 +33,5 @@ require('./chunk-GBENOENJ.cjs');
33
33
 
34
34
 
35
35
 
36
- exports.EXTRA_ERROR_LOG = _chunkO433HWWGcjs.EXTRA_ERROR_LOG; exports.SinglePromiseQueue = _chunkO433HWWGcjs.SinglePromiseQueue; exports.VERSION = _chunkO433HWWGcjs.VERSION; exports.arrayBuffersEqual = _chunkO433HWWGcjs.arrayBuffersEqual; exports.assertUnreachable = _chunkO433HWWGcjs.assertUnreachable; exports.bufferToArrayBuffer = _chunkO433HWWGcjs.bufferToArrayBuffer; exports.combineUrlPath = _chunkO433HWWGcjs.combineUrlPath; exports.dbg = _chunkO433HWWGcjs.dbg; exports.detectRuntime = _chunkO433HWWGcjs.detectRuntime; exports.getEnvUniversal = _chunkO433HWWGcjs.getEnvUniversal; exports.httpUserAgent = _chunkO433HWWGcjs.httpUserAgent; exports.promiseWithResolvers = _chunkO433HWWGcjs.promiseWithResolvers; exports.setLongTimeout = _chunkO433HWWGcjs.setLongTimeout; exports.stringifyError = _chunkO433HWWGcjs.stringifyError; exports.toUint8Array = _chunkO433HWWGcjs.toUint8Array;
36
+ exports.EXTRA_ERROR_LOG = _chunkX72X7I7Tcjs.EXTRA_ERROR_LOG; exports.SinglePromiseQueue = _chunkX72X7I7Tcjs.SinglePromiseQueue; exports.VERSION = _chunkX72X7I7Tcjs.VERSION; exports.arrayBuffersEqual = _chunkX72X7I7Tcjs.arrayBuffersEqual; exports.assertUnreachable = _chunkX72X7I7Tcjs.assertUnreachable; exports.bufferToArrayBuffer = _chunkX72X7I7Tcjs.bufferToArrayBuffer; exports.combineUrlPath = _chunkX72X7I7Tcjs.combineUrlPath; exports.dbg = _chunkX72X7I7Tcjs.dbg; exports.detectRuntime = _chunkX72X7I7Tcjs.detectRuntime; exports.getEnvUniversal = _chunkX72X7I7Tcjs.getEnvUniversal; exports.httpUserAgent = _chunkX72X7I7Tcjs.httpUserAgent; exports.promiseWithResolvers = _chunkX72X7I7Tcjs.promiseWithResolvers; exports.setLongTimeout = _chunkX72X7I7Tcjs.setLongTimeout; exports.stringifyError = _chunkX72X7I7Tcjs.stringifyError; exports.toUint8Array = _chunkX72X7I7Tcjs.toUint8Array;
37
37
  //# sourceMappingURL=utils.cjs.map
@@ -14,7 +14,7 @@ import {
14
14
  setLongTimeout,
15
15
  stringifyError,
16
16
  toUint8Array
17
- } from "./chunk-4U45T5KW.js";
17
+ } from "./chunk-CDK6DRO2.js";
18
18
  import "./chunk-2YHR67M4.js";
19
19
  export {
20
20
  EXTRA_ERROR_LOG,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rivetkit",
3
- "version": "2.0.38",
3
+ "version": "2.0.39",
4
4
  "description": "Lightweight libraries for building stateful actors on edge platforms",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -167,7 +167,7 @@
167
167
  "uuid": "^12.0.0",
168
168
  "vbare": "^0.0.4",
169
169
  "zod": "^4.1.0",
170
- "@rivetkit/engine-runner": "2.0.38",
170
+ "@rivetkit/engine-runner": "2.0.39",
171
171
  "@rivetkit/virtual-websocket": "2.0.33"
172
172
  },
173
173
  "devDependencies": {
@@ -132,7 +132,14 @@ export const ActorConfigSchema = z
132
132
  // This must have only one or the other or else TState will not be able to be inferred
133
133
  //
134
134
  // Data returned from this handler will be available on `c.state`.
135
- type CreateState<TState, TConnParams, TConnState, TVars, TInput, TDatabase extends AnyDatabaseProvider> =
135
+ type CreateState<
136
+ TState,
137
+ TConnParams,
138
+ TConnState,
139
+ TVars,
140
+ TInput,
141
+ TDatabase extends AnyDatabaseProvider,
142
+ > =
136
143
  | { state: TState }
137
144
  | {
138
145
  createState: (
@@ -458,7 +465,7 @@ interface BaseActorConfig<
458
465
  websocket: UniversalWebSocket,
459
466
  ) => void | Promise<void>;
460
467
 
461
- actions: TActions;
468
+ actions?: TActions;
462
469
  }
463
470
 
464
471
  type ActorDatabaseConfig<TDatabase extends AnyDatabaseProvider> =
@@ -620,43 +627,185 @@ export function test<
620
627
 
621
628
  export const DocActorOptionsSchema = z
622
629
  .object({
623
- createVarsTimeout: z.number().optional().describe("Timeout in ms for createVars handler. Default: 5000"),
624
- createConnStateTimeout: z.number().optional().describe("Timeout in ms for createConnState handler. Default: 5000"),
625
- onConnectTimeout: z.number().optional().describe("Timeout in ms for onConnect handler. Default: 5000"),
626
- onSleepTimeout: z.number().optional().describe("Timeout in ms for onSleep handler. Must be less than ACTOR_STOP_THRESHOLD_MS. Default: 5000"),
627
- onDestroyTimeout: z.number().optional().describe("Timeout in ms for onDestroy handler. Default: 5000"),
628
- stateSaveInterval: z.number().optional().describe("Interval in ms between automatic state saves. Default: 10000"),
629
- actionTimeout: z.number().optional().describe("Timeout in ms for action handlers. Default: 60000"),
630
- waitUntilTimeout: z.number().optional().describe("Max time in ms to wait for waitUntil background promises during shutdown. Default: 15000"),
631
- connectionLivenessTimeout: z.number().optional().describe("Timeout in ms for connection liveness checks. Default: 2500"),
632
- connectionLivenessInterval: z.number().optional().describe("Interval in ms between connection liveness checks. Default: 5000"),
633
- noSleep: z.boolean().optional().describe("If true, the actor will never sleep. Default: false"),
634
- sleepTimeout: z.number().optional().describe("Time in ms of inactivity before the actor sleeps. Default: 30000"),
635
- canHibernateWebSocket: z.boolean().optional().describe("Whether WebSockets using onWebSocket can be hibernated. WebSockets using actions/events are hibernatable by default. Default: false"),
630
+ createVarsTimeout: z
631
+ .number()
632
+ .optional()
633
+ .describe("Timeout in ms for createVars handler. Default: 5000"),
634
+ createConnStateTimeout: z
635
+ .number()
636
+ .optional()
637
+ .describe(
638
+ "Timeout in ms for createConnState handler. Default: 5000",
639
+ ),
640
+ onConnectTimeout: z
641
+ .number()
642
+ .optional()
643
+ .describe("Timeout in ms for onConnect handler. Default: 5000"),
644
+ onSleepTimeout: z
645
+ .number()
646
+ .optional()
647
+ .describe(
648
+ "Timeout in ms for onSleep handler. Must be less than ACTOR_STOP_THRESHOLD_MS. Default: 5000",
649
+ ),
650
+ onDestroyTimeout: z
651
+ .number()
652
+ .optional()
653
+ .describe("Timeout in ms for onDestroy handler. Default: 5000"),
654
+ stateSaveInterval: z
655
+ .number()
656
+ .optional()
657
+ .describe(
658
+ "Interval in ms between automatic state saves. Default: 10000",
659
+ ),
660
+ actionTimeout: z
661
+ .number()
662
+ .optional()
663
+ .describe("Timeout in ms for action handlers. Default: 60000"),
664
+ waitUntilTimeout: z
665
+ .number()
666
+ .optional()
667
+ .describe(
668
+ "Max time in ms to wait for waitUntil background promises during shutdown. Default: 15000",
669
+ ),
670
+ connectionLivenessTimeout: z
671
+ .number()
672
+ .optional()
673
+ .describe(
674
+ "Timeout in ms for connection liveness checks. Default: 2500",
675
+ ),
676
+ connectionLivenessInterval: z
677
+ .number()
678
+ .optional()
679
+ .describe(
680
+ "Interval in ms between connection liveness checks. Default: 5000",
681
+ ),
682
+ noSleep: z
683
+ .boolean()
684
+ .optional()
685
+ .describe("If true, the actor will never sleep. Default: false"),
686
+ sleepTimeout: z
687
+ .number()
688
+ .optional()
689
+ .describe(
690
+ "Time in ms of inactivity before the actor sleeps. Default: 30000",
691
+ ),
692
+ canHibernateWebSocket: z
693
+ .boolean()
694
+ .optional()
695
+ .describe(
696
+ "Whether WebSockets using onWebSocket can be hibernated. WebSockets using actions/events are hibernatable by default. Default: false",
697
+ ),
636
698
  })
637
699
  .describe("Actor options for timeouts and behavior configuration.");
638
700
 
639
701
  export const DocActorConfigSchema = z
640
702
  .object({
641
- state: z.unknown().optional().describe("Initial state value for the actor. Cannot be used with createState."),
642
- createState: z.unknown().optional().describe("Function to create initial state. Receives context and input. Cannot be used with state."),
643
- connState: z.unknown().optional().describe("Initial connection state value. Cannot be used with createConnState."),
644
- createConnState: z.unknown().optional().describe("Function to create connection state. Receives context and connection params. Cannot be used with connState."),
645
- vars: z.unknown().optional().describe("Initial ephemeral variables value. Cannot be used with createVars."),
646
- createVars: z.unknown().optional().describe("Function to create ephemeral variables. Receives context and driver context. Cannot be used with vars."),
647
- db: z.unknown().optional().describe("Database provider instance for the actor."),
648
- onCreate: z.unknown().optional().describe("Called when the actor is first initialized. Use to initialize state."),
649
- onDestroy: z.unknown().optional().describe("Called when the actor is destroyed."),
650
- onWake: z.unknown().optional().describe("Called when the actor wakes up and is ready to receive connections and actions."),
651
- onSleep: z.unknown().optional().describe("Called when the actor is stopping or sleeping. Use to clean up resources."),
652
- onStateChange: z.unknown().optional().describe("Called when the actor's state changes. State changes within this hook won't trigger recursion."),
653
- onBeforeConnect: z.unknown().optional().describe("Called before a client connects. Throw an error to reject the connection."),
654
- onConnect: z.unknown().optional().describe("Called when a client successfully connects."),
655
- onDisconnect: z.unknown().optional().describe("Called when a client disconnects."),
656
- onBeforeActionResponse: z.unknown().optional().describe("Called before sending an action response. Use to transform output."),
657
- onRequest: z.unknown().optional().describe("Called for raw HTTP requests to /actors/{name}/http/* endpoints."),
658
- onWebSocket: z.unknown().optional().describe("Called for raw WebSocket connections to /actors/{name}/websocket/* endpoints."),
659
- actions: z.record(z.string(), z.unknown()).optional().describe("Map of action name to handler function."),
703
+ state: z
704
+ .unknown()
705
+ .optional()
706
+ .describe(
707
+ "Initial state value for the actor. Cannot be used with createState.",
708
+ ),
709
+ createState: z
710
+ .unknown()
711
+ .optional()
712
+ .describe(
713
+ "Function to create initial state. Receives context and input. Cannot be used with state.",
714
+ ),
715
+ connState: z
716
+ .unknown()
717
+ .optional()
718
+ .describe(
719
+ "Initial connection state value. Cannot be used with createConnState.",
720
+ ),
721
+ createConnState: z
722
+ .unknown()
723
+ .optional()
724
+ .describe(
725
+ "Function to create connection state. Receives context and connection params. Cannot be used with connState.",
726
+ ),
727
+ vars: z
728
+ .unknown()
729
+ .optional()
730
+ .describe(
731
+ "Initial ephemeral variables value. Cannot be used with createVars.",
732
+ ),
733
+ createVars: z
734
+ .unknown()
735
+ .optional()
736
+ .describe(
737
+ "Function to create ephemeral variables. Receives context and driver context. Cannot be used with vars.",
738
+ ),
739
+ db: z
740
+ .unknown()
741
+ .optional()
742
+ .describe("Database provider instance for the actor."),
743
+ onCreate: z
744
+ .unknown()
745
+ .optional()
746
+ .describe(
747
+ "Called when the actor is first initialized. Use to initialize state.",
748
+ ),
749
+ onDestroy: z
750
+ .unknown()
751
+ .optional()
752
+ .describe("Called when the actor is destroyed."),
753
+ onWake: z
754
+ .unknown()
755
+ .optional()
756
+ .describe(
757
+ "Called when the actor wakes up and is ready to receive connections and actions.",
758
+ ),
759
+ onSleep: z
760
+ .unknown()
761
+ .optional()
762
+ .describe(
763
+ "Called when the actor is stopping or sleeping. Use to clean up resources.",
764
+ ),
765
+ onStateChange: z
766
+ .unknown()
767
+ .optional()
768
+ .describe(
769
+ "Called when the actor's state changes. State changes within this hook won't trigger recursion.",
770
+ ),
771
+ onBeforeConnect: z
772
+ .unknown()
773
+ .optional()
774
+ .describe(
775
+ "Called before a client connects. Throw an error to reject the connection.",
776
+ ),
777
+ onConnect: z
778
+ .unknown()
779
+ .optional()
780
+ .describe("Called when a client successfully connects."),
781
+ onDisconnect: z
782
+ .unknown()
783
+ .optional()
784
+ .describe("Called when a client disconnects."),
785
+ onBeforeActionResponse: z
786
+ .unknown()
787
+ .optional()
788
+ .describe(
789
+ "Called before sending an action response. Use to transform output.",
790
+ ),
791
+ onRequest: z
792
+ .unknown()
793
+ .optional()
794
+ .describe(
795
+ "Called for raw HTTP requests to /actors/{name}/http/* endpoints.",
796
+ ),
797
+ onWebSocket: z
798
+ .unknown()
799
+ .optional()
800
+ .describe(
801
+ "Called for raw WebSocket connections to /actors/{name}/websocket/* endpoints.",
802
+ ),
803
+ actions: z
804
+ .record(z.string(), z.unknown())
805
+ .optional()
806
+ .describe(
807
+ "Map of action name to handler function. Defaults to an empty object.",
808
+ ),
660
809
  options: DocActorOptionsSchema.optional(),
661
810
  })
662
811
  .describe("Actor configuration passed to the actor() function.");
@@ -6,6 +6,7 @@ import type { Conn, ConnId } from "../../conn/mod";
6
6
  import type { AnyDatabaseProvider, InferDatabaseClient } from "../../database";
7
7
  import type { ActorDefinition, AnyActorDefinition } from "../../definition";
8
8
  import type { ActorInstance, SaveStateOptions } from "../../instance/mod";
9
+ import { ActorKv } from "../../instance/kv";
9
10
  import type { Schedule } from "../../schedule";
10
11
 
11
12
  /**
@@ -27,6 +28,7 @@ export class ActorContext<
27
28
  TInput,
28
29
  TDatabase
29
30
  >;
31
+ #kv: ActorKv | undefined;
30
32
 
31
33
  constructor(
32
34
  actor: ActorInstance<
@@ -41,6 +43,16 @@ export class ActorContext<
41
43
  this.#actor = actor;
42
44
  }
43
45
 
46
+ /**
47
+ * Gets the KV storage interface.
48
+ */
49
+ get kv(): ActorKv {
50
+ if (!this.#kv) {
51
+ this.#kv = new ActorKv(this.#actor.driver, this.#actor.id);
52
+ }
53
+ return this.#kv;
54
+ }
55
+
44
56
  /**
45
57
  * Get the actor state
46
58
  *
@@ -31,7 +31,7 @@ import {
31
31
  import type { AnyDatabaseProvider } from "../database";
32
32
  import { CachedSerializer } from "../protocol/serde";
33
33
  import { deadline } from "../utils";
34
- import { makeConnKey } from "./kv";
34
+ import { makeConnKey } from "./keys";
35
35
  import type { ActorInstance } from "./mod";
36
36
  /**
37
37
  * Manages all connection-related operations for an actor instance.
@@ -0,0 +1,29 @@
1
+ export const KEYS = {
2
+ PERSIST_DATA: Uint8Array.from([1]),
3
+ CONN_PREFIX: Uint8Array.from([2]), // Prefix for connection keys
4
+ INSPECTOR_TOKEN: Uint8Array.from([3]), // Inspector token key
5
+ KV: Uint8Array.from([4]), // Prefix for user-facing KV storage
6
+ };
7
+
8
+ // Helper to create a prefixed key for user-facing KV storage
9
+ export function makePrefixedKey(key: Uint8Array): Uint8Array {
10
+ const prefixed = new Uint8Array(KEYS.KV.length + key.length);
11
+ prefixed.set(KEYS.KV, 0);
12
+ prefixed.set(key, KEYS.KV.length);
13
+ return prefixed;
14
+ }
15
+
16
+ // Helper to remove the prefix from a key
17
+ export function removePrefixFromKey(prefixedKey: Uint8Array): Uint8Array {
18
+ return prefixedKey.slice(KEYS.KV.length);
19
+ }
20
+
21
+ // Helper to create a connection key
22
+ export function makeConnKey(connId: string): Uint8Array {
23
+ const encoder = new TextEncoder();
24
+ const connIdBytes = encoder.encode(connId);
25
+ const key = new Uint8Array(KEYS.CONN_PREFIX.length + connIdBytes.length);
26
+ key.set(KEYS.CONN_PREFIX, 0);
27
+ key.set(connIdBytes, KEYS.CONN_PREFIX.length);
28
+ return key;
29
+ }