rivetkit 2.0.6 → 2.0.7-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/schemas/actor-persist/v1.ts +0 -6
  2. package/dist/tsup/actor-router-consts-B3Lu87yJ.d.cts +28 -0
  3. package/dist/tsup/actor-router-consts-B3Lu87yJ.d.ts +28 -0
  4. package/dist/tsup/{chunk-MRRT2CZD.cjs → chunk-3MBP4WNC.cjs} +7 -7
  5. package/dist/tsup/{chunk-MRRT2CZD.cjs.map → chunk-3MBP4WNC.cjs.map} +1 -1
  6. package/dist/tsup/{chunk-TWGATZ3X.cjs → chunk-3Y45CIF4.cjs} +922 -872
  7. package/dist/tsup/chunk-3Y45CIF4.cjs.map +1 -0
  8. package/dist/tsup/chunk-4GP7BZSR.js +102 -0
  9. package/dist/tsup/chunk-4GP7BZSR.js.map +1 -0
  10. package/dist/tsup/{chunk-UFWAK3X2.cjs → chunk-5ZOHIKWG.cjs} +660 -385
  11. package/dist/tsup/chunk-5ZOHIKWG.cjs.map +1 -0
  12. package/dist/tsup/{chunk-5JBFVV4C.cjs → chunk-6EUWRXLT.cjs} +21 -7
  13. package/dist/tsup/chunk-6EUWRXLT.cjs.map +1 -0
  14. package/dist/tsup/{chunk-UTI5NCES.cjs → chunk-6OVKCDSH.cjs} +6 -6
  15. package/dist/tsup/{chunk-UTI5NCES.cjs.map → chunk-6OVKCDSH.cjs.map} +1 -1
  16. package/dist/tsup/{chunk-VPV4MWXR.js → chunk-7N56ZUC7.js} +3 -3
  17. package/dist/tsup/{chunk-DIAYNQTE.cjs → chunk-B3TLRM4Q.cjs} +12 -12
  18. package/dist/tsup/{chunk-DIAYNQTE.cjs.map → chunk-B3TLRM4Q.cjs.map} +1 -1
  19. package/dist/tsup/{chunk-4CKHQRXG.js → chunk-BW5DPM6Z.js} +515 -240
  20. package/dist/tsup/chunk-BW5DPM6Z.js.map +1 -0
  21. package/dist/tsup/{chunk-NTCUGYSD.cjs → chunk-DFS77KAA.cjs} +34 -31
  22. package/dist/tsup/chunk-DFS77KAA.cjs.map +1 -0
  23. package/dist/tsup/{chunk-VCEHU56K.js → chunk-E4UVJKSV.js} +2 -2
  24. package/dist/tsup/chunk-G4ABMAQY.cjs +102 -0
  25. package/dist/tsup/chunk-G4ABMAQY.cjs.map +1 -0
  26. package/dist/tsup/{chunk-ZYLTS2EM.js → chunk-GZVBFXBI.js} +2 -2
  27. package/dist/tsup/{chunk-W6LN7AF5.js → chunk-HPT3I7UU.js} +866 -816
  28. package/dist/tsup/chunk-HPT3I7UU.js.map +1 -0
  29. package/dist/tsup/{chunk-7OUKNSTU.js → chunk-JD54PXWP.js} +17 -14
  30. package/dist/tsup/chunk-JD54PXWP.js.map +1 -0
  31. package/dist/tsup/{chunk-KG3C7MKR.cjs → chunk-K4ENQCC4.cjs} +3 -3
  32. package/dist/tsup/{chunk-KG3C7MKR.cjs.map → chunk-K4ENQCC4.cjs.map} +1 -1
  33. package/dist/tsup/{chunk-WC2PSJWN.js → chunk-PUSQNDJG.js} +2 -2
  34. package/dist/tsup/{chunk-RGQR2J7S.js → chunk-RVP5RUSC.js} +20 -6
  35. package/dist/tsup/chunk-RVP5RUSC.js.map +1 -0
  36. package/dist/tsup/{chunk-TCUI5JFE.cjs → chunk-SAZCNSVY.cjs} +45 -18
  37. package/dist/tsup/chunk-SAZCNSVY.cjs.map +1 -0
  38. package/dist/tsup/{chunk-G75SVQON.js → chunk-SBKRVQS2.js} +9 -5
  39. package/dist/tsup/chunk-SBKRVQS2.js.map +1 -0
  40. package/dist/tsup/{chunk-6P6RA47N.cjs → chunk-TZGUSEIJ.cjs} +14 -10
  41. package/dist/tsup/chunk-TZGUSEIJ.cjs.map +1 -0
  42. package/dist/tsup/{chunk-2K3JMDAN.js → chunk-YQ4XQYPM.js} +40 -13
  43. package/dist/tsup/chunk-YQ4XQYPM.js.map +1 -0
  44. package/dist/tsup/client/mod.cjs +9 -9
  45. package/dist/tsup/client/mod.d.cts +7 -8
  46. package/dist/tsup/client/mod.d.ts +7 -8
  47. package/dist/tsup/client/mod.js +8 -8
  48. package/dist/tsup/common/log.cjs +3 -3
  49. package/dist/tsup/common/log.js +2 -2
  50. package/dist/tsup/common/websocket.cjs +4 -4
  51. package/dist/tsup/common/websocket.js +3 -3
  52. package/dist/tsup/{connection-BLemxi4f.d.ts → conn-DCSQgIlw.d.ts} +1605 -1353
  53. package/dist/tsup/{connection-CpDIydXf.d.cts → conn-DdzHTm2E.d.cts} +1605 -1353
  54. package/dist/tsup/driver-helpers/mod.cjs +31 -5
  55. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  56. package/dist/tsup/driver-helpers/mod.d.cts +7 -8
  57. package/dist/tsup/driver-helpers/mod.d.ts +7 -8
  58. package/dist/tsup/driver-helpers/mod.js +33 -7
  59. package/dist/tsup/driver-test-suite/mod.cjs +317 -222
  60. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  61. package/dist/tsup/driver-test-suite/mod.d.cts +7 -7
  62. package/dist/tsup/driver-test-suite/mod.d.ts +7 -7
  63. package/dist/tsup/driver-test-suite/mod.js +582 -487
  64. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  65. package/dist/tsup/inspector/mod.cjs +16 -6
  66. package/dist/tsup/inspector/mod.cjs.map +1 -1
  67. package/dist/tsup/inspector/mod.d.cts +34 -7
  68. package/dist/tsup/inspector/mod.d.ts +34 -7
  69. package/dist/tsup/inspector/mod.js +17 -7
  70. package/dist/tsup/mod.cjs +10 -20
  71. package/dist/tsup/mod.cjs.map +1 -1
  72. package/dist/tsup/mod.d.cts +9 -7
  73. package/dist/tsup/mod.d.ts +9 -7
  74. package/dist/tsup/mod.js +9 -19
  75. package/dist/tsup/test/mod.cjs +11 -11
  76. package/dist/tsup/test/mod.d.cts +6 -7
  77. package/dist/tsup/test/mod.d.ts +6 -7
  78. package/dist/tsup/test/mod.js +10 -10
  79. package/dist/tsup/utils.cjs +4 -2
  80. package/dist/tsup/utils.cjs.map +1 -1
  81. package/dist/tsup/utils.d.cts +11 -1
  82. package/dist/tsup/utils.d.ts +11 -1
  83. package/dist/tsup/utils.js +3 -1
  84. package/package.json +8 -4
  85. package/src/actor/action.ts +1 -1
  86. package/src/actor/config.ts +1 -1
  87. package/src/actor/conn-drivers.ts +205 -0
  88. package/src/actor/conn-socket.ts +6 -0
  89. package/src/actor/{connection.ts → conn.ts} +78 -84
  90. package/src/actor/context.ts +1 -1
  91. package/src/actor/driver.ts +4 -43
  92. package/src/actor/instance.ts +162 -86
  93. package/src/actor/mod.ts +1 -11
  94. package/src/actor/persisted.ts +2 -5
  95. package/src/actor/protocol/old.ts +1 -1
  96. package/src/actor/router-endpoints.ts +142 -106
  97. package/src/actor/router.ts +81 -45
  98. package/src/actor/utils.ts +5 -1
  99. package/src/client/actor-conn.ts +154 -23
  100. package/src/client/client.ts +1 -1
  101. package/src/client/config.ts +7 -0
  102. package/src/common/actor-router-consts.ts +29 -8
  103. package/src/common/router.ts +2 -1
  104. package/src/common/versioned-data.ts +5 -5
  105. package/src/driver-helpers/mod.ts +14 -1
  106. package/src/driver-test-suite/mod.ts +11 -2
  107. package/src/driver-test-suite/test-inline-client-driver.ts +36 -18
  108. package/src/driver-test-suite/tests/actor-conn-state.ts +66 -22
  109. package/src/driver-test-suite/tests/actor-conn.ts +65 -126
  110. package/src/driver-test-suite/tests/actor-reconnect.ts +160 -0
  111. package/src/driver-test-suite/tests/actor-sleep.ts +0 -1
  112. package/src/driver-test-suite/tests/raw-websocket.ts +0 -35
  113. package/src/driver-test-suite/utils.ts +3 -3
  114. package/src/drivers/default.ts +8 -7
  115. package/src/drivers/engine/actor-driver.ts +53 -31
  116. package/src/drivers/engine/config.ts +4 -0
  117. package/src/drivers/file-system/actor.ts +0 -6
  118. package/src/drivers/file-system/global-state.ts +3 -14
  119. package/src/drivers/file-system/manager.ts +12 -8
  120. package/src/inspector/actor.ts +4 -3
  121. package/src/inspector/config.ts +10 -1
  122. package/src/inspector/mod.ts +1 -0
  123. package/src/inspector/utils.ts +23 -4
  124. package/src/manager/driver.ts +11 -1
  125. package/src/manager/gateway.ts +407 -0
  126. package/src/manager/router.ts +269 -468
  127. package/src/manager-api/actors.ts +61 -0
  128. package/src/manager-api/common.ts +4 -0
  129. package/src/mod.ts +1 -1
  130. package/src/registry/mod.ts +119 -10
  131. package/src/remote-manager-driver/actor-http-client.ts +30 -19
  132. package/src/remote-manager-driver/actor-websocket-client.ts +43 -16
  133. package/src/remote-manager-driver/api-endpoints.ts +19 -21
  134. package/src/remote-manager-driver/api-utils.ts +10 -1
  135. package/src/remote-manager-driver/mod.ts +51 -48
  136. package/src/remote-manager-driver/ws-proxy.ts +2 -9
  137. package/src/test/mod.ts +6 -2
  138. package/src/utils.ts +21 -2
  139. package/dist/tsup/actor-router-consts-BK6arfy8.d.cts +0 -17
  140. package/dist/tsup/actor-router-consts-BK6arfy8.d.ts +0 -17
  141. package/dist/tsup/chunk-2K3JMDAN.js.map +0 -1
  142. package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
  143. package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
  144. package/dist/tsup/chunk-4CKHQRXG.js.map +0 -1
  145. package/dist/tsup/chunk-5JBFVV4C.cjs.map +0 -1
  146. package/dist/tsup/chunk-6P6RA47N.cjs.map +0 -1
  147. package/dist/tsup/chunk-7OUKNSTU.js.map +0 -1
  148. package/dist/tsup/chunk-G75SVQON.js.map +0 -1
  149. package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
  150. package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
  151. package/dist/tsup/chunk-NTCUGYSD.cjs.map +0 -1
  152. package/dist/tsup/chunk-RGQR2J7S.js.map +0 -1
  153. package/dist/tsup/chunk-TCUI5JFE.cjs.map +0 -1
  154. package/dist/tsup/chunk-TWGATZ3X.cjs.map +0 -1
  155. package/dist/tsup/chunk-UFWAK3X2.cjs.map +0 -1
  156. package/dist/tsup/chunk-W6LN7AF5.js.map +0 -1
  157. package/dist/tsup/common-CXCe7s6i.d.cts +0 -218
  158. package/dist/tsup/common-CXCe7s6i.d.ts +0 -218
  159. package/src/actor/generic-conn-driver.ts +0 -246
  160. package/src/common/fake-event-source.ts +0 -267
  161. package/src/manager-api/routes/actors-create.ts +0 -16
  162. package/src/manager-api/routes/actors-delete.ts +0 -4
  163. package/src/manager-api/routes/actors-get-by-id.ts +0 -7
  164. package/src/manager-api/routes/actors-get-or-create-by-id.ts +0 -29
  165. package/src/manager-api/routes/actors-get.ts +0 -7
  166. package/src/manager-api/routes/common.ts +0 -18
  167. /package/dist/tsup/{chunk-VPV4MWXR.js.map → chunk-7N56ZUC7.js.map} +0 -0
  168. /package/dist/tsup/{chunk-VCEHU56K.js.map → chunk-E4UVJKSV.js.map} +0 -0
  169. /package/dist/tsup/{chunk-ZYLTS2EM.js.map → chunk-GZVBFXBI.js.map} +0 -0
  170. /package/dist/tsup/{chunk-WC2PSJWN.js.map → chunk-PUSQNDJG.js.map} +0 -0
@@ -3,11 +3,11 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkDIAYNQTEcjs = require('./chunk-DIAYNQTE.cjs');
6
+ var _chunkB3TLRM4Qcjs = require('./chunk-B3TLRM4Q.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkKG3C7MKRcjs = require('./chunk-KG3C7MKR.cjs');
10
+ var _chunkK4ENQCC4cjs = require('./chunk-K4ENQCC4.cjs');
11
11
 
12
12
 
13
13
 
@@ -17,7 +17,7 @@ var _chunkKG3C7MKRcjs = require('./chunk-KG3C7MKR.cjs');
17
17
 
18
18
 
19
19
 
20
- var _chunkNTCUGYSDcjs = require('./chunk-NTCUGYSD.cjs');
20
+ var _chunkDFS77KAAcjs = require('./chunk-DFS77KAA.cjs');
21
21
 
22
22
 
23
23
 
@@ -36,12 +36,10 @@ var _chunkNTCUGYSDcjs = require('./chunk-NTCUGYSD.cjs');
36
36
 
37
37
 
38
38
 
39
- var _chunkTCUI5JFEcjs = require('./chunk-TCUI5JFE.cjs');
40
39
 
41
40
 
42
41
 
43
42
 
44
- var _chunkMRRT2CZDcjs = require('./chunk-MRRT2CZD.cjs');
45
43
 
46
44
 
47
45
 
@@ -50,10 +48,25 @@ var _chunkMRRT2CZDcjs = require('./chunk-MRRT2CZD.cjs');
50
48
 
51
49
 
52
50
 
51
+ var _chunkSAZCNSVYcjs = require('./chunk-SAZCNSVY.cjs');
53
52
 
54
53
 
55
54
 
56
- var _chunk5JBFVV4Ccjs = require('./chunk-5JBFVV4C.cjs');
55
+
56
+ var _chunk3MBP4WNCcjs = require('./chunk-3MBP4WNC.cjs');
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+ var _chunk6EUWRXLTcjs = require('./chunk-6EUWRXLT.cjs');
57
70
 
58
71
 
59
72
 
@@ -69,44 +82,134 @@ var _chunk5JBFVV4Ccjs = require('./chunk-5JBFVV4C.cjs');
69
82
 
70
83
  var _chunk5QGQK44Lcjs = require('./chunk-5QGQK44L.cjs');
71
84
 
72
- // src/actor/connection.ts
85
+ // src/actor/conn.ts
73
86
  var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx); var cbor2 = _interopRequireWildcard(_cborx); var cbor5 = _interopRequireWildcard(_cborx); var cbor4 = _interopRequireWildcard(_cborx); var cbor3 = _interopRequireWildcard(_cborx); var cbor6 = _interopRequireWildcard(_cborx);
87
+
88
+ // src/actor/conn-drivers.ts
89
+ var WEBSOCKET_DRIVER = {
90
+ sendMessage: (actor, _conn, state, message) => {
91
+ const serialized = message.serialize(state.encoding);
92
+ actor.rLog.debug({
93
+ msg: "sending websocket message",
94
+ encoding: state.encoding,
95
+ dataType: typeof serialized,
96
+ isUint8Array: serialized instanceof Uint8Array,
97
+ isArrayBuffer: serialized instanceof ArrayBuffer,
98
+ dataLength: serialized.byteLength || serialized.length
99
+ });
100
+ if (serialized instanceof Uint8Array) {
101
+ const buffer = serialized.buffer.slice(
102
+ serialized.byteOffset,
103
+ serialized.byteOffset + serialized.byteLength
104
+ );
105
+ if (buffer instanceof SharedArrayBuffer) {
106
+ const arrayBuffer = new ArrayBuffer(buffer.byteLength);
107
+ new Uint8Array(arrayBuffer).set(new Uint8Array(buffer));
108
+ actor.rLog.debug({
109
+ msg: "converted SharedArrayBuffer to ArrayBuffer",
110
+ byteLength: arrayBuffer.byteLength
111
+ });
112
+ state.websocket.send(arrayBuffer);
113
+ } else {
114
+ actor.rLog.debug({
115
+ msg: "sending ArrayBuffer",
116
+ byteLength: buffer.byteLength
117
+ });
118
+ state.websocket.send(buffer);
119
+ }
120
+ } else {
121
+ actor.rLog.debug({
122
+ msg: "sending string data",
123
+ length: serialized.length
124
+ });
125
+ state.websocket.send(serialized);
126
+ }
127
+ },
128
+ disconnect: async (_actor, _conn, state, reason) => {
129
+ state.websocket.close(1e3, reason);
130
+ await state.closePromise.promise;
131
+ },
132
+ getConnectionReadyState: (_actor, _conn, state) => {
133
+ return state.websocket.readyState;
134
+ }
135
+ };
136
+ var SSE_DRIVER = {
137
+ sendMessage: (_actor, _conn, state, message) => {
138
+ state.stream.writeSSE({
139
+ data: _chunkSAZCNSVYcjs.encodeDataToString.call(void 0, message.serialize(state.encoding))
140
+ });
141
+ },
142
+ disconnect: async (_actor, _conn, state, _reason) => {
143
+ state.stream.close();
144
+ },
145
+ getConnectionReadyState: (_actor, _conn, state) => {
146
+ if (state.stream.aborted || state.stream.closed) {
147
+ return 3 /* CLOSED */;
148
+ }
149
+ return 1 /* OPEN */;
150
+ }
151
+ };
152
+ var HTTP_DRIVER = {
153
+ getConnectionReadyState(_actor, _conn) {
154
+ return 1 /* OPEN */;
155
+ },
156
+ disconnect: async () => {
157
+ }
158
+ };
159
+ var CONN_DRIVERS = {
160
+ [0 /* WEBSOCKET */]: WEBSOCKET_DRIVER,
161
+ [1 /* SSE */]: SSE_DRIVER,
162
+ [2 /* HTTP */]: HTTP_DRIVER
163
+ };
164
+ function getConnDriverKindFromState(state) {
165
+ if (0 /* WEBSOCKET */ in state) return 0 /* WEBSOCKET */;
166
+ else if (1 /* SSE */ in state) return 1 /* SSE */;
167
+ else if (2 /* HTTP */ in state) return 2 /* HTTP */;
168
+ else _chunk6EUWRXLTcjs.assertUnreachable.call(void 0, state);
169
+ }
170
+
171
+ // src/actor/conn.ts
74
172
  function generateConnId() {
75
173
  return crypto.randomUUID();
76
174
  }
77
175
  function generateConnToken() {
78
- return _chunkTCUI5JFEcjs.generateSecureToken.call(void 0, 32);
176
+ return _chunkSAZCNSVYcjs.generateSecureToken.call(void 0, 32);
177
+ }
178
+ function generateConnSocketId() {
179
+ return crypto.randomUUID();
79
180
  }
80
- var CONNECTION_DRIVER_WEBSOCKET = "webSocket";
81
- var CONNECTION_DRIVER_SSE = "sse";
82
- var CONNECTION_DRIVER_HTTP = "http";
83
- var CONNECTION_CHECK_LIVENESS_SYMBOL = Symbol("checkLiveness");
84
181
  var Conn = (_class = class {
85
182
  __init() {this.subscriptions = /* @__PURE__ */ new Set()}
86
- #stateEnabled;
87
183
  // TODO: Remove this cyclical reference
88
184
  #actor;
89
- #status = "connected";
90
185
  /**
91
186
  * The proxied state that notifies of changes automatically.
92
187
  *
93
188
  * Any data that should be stored indefinitely should be held within this object.
94
189
  */
95
190
 
191
+ get __driverState() {
192
+ var _a;
193
+ return (_a = this.__socket) == null ? void 0 : _a.driverState;
194
+ }
96
195
  /**
97
- * Driver used to manage realtime connection communication.
196
+ * Socket connected to this connection.
98
197
  *
99
- * @protected
198
+ * If undefined, then nothing is connected to this.
100
199
  */
101
- #driver;
200
+
201
+ get __status() {
202
+ if (this.__socket) {
203
+ return "connected";
204
+ } else {
205
+ return "reconnecting";
206
+ }
207
+ }
102
208
  get params() {
103
209
  return this.__persist.params;
104
210
  }
105
- get driver() {
106
- return this.__persist.connDriver;
107
- }
108
- get _stateEnabled() {
109
- return this.#stateEnabled;
211
+ get __stateEnabled() {
212
+ return this.#actor.connStateEnabled;
110
213
  }
111
214
  /**
112
215
  * Gets the current state of the connection.
@@ -143,7 +246,7 @@ var Conn = (_class = class {
143
246
  * Status of the connection.
144
247
  */
145
248
  get status() {
146
- return this.#status;
249
+ return this.__status;
147
250
  }
148
251
  /**
149
252
  * Timestamp of the last time the connection was seen, i.e. the last time the connection was active and checked for liveness.
@@ -158,14 +261,12 @@ var Conn = (_class = class {
158
261
  *
159
262
  * @protected
160
263
  */
161
- constructor(actor, persist, driver, stateEnabled) {;_class.prototype.__init.call(this);
264
+ constructor(actor, persist) {;_class.prototype.__init.call(this);
162
265
  this.#actor = actor;
163
266
  this.__persist = persist;
164
- this.#driver = driver;
165
- this.#stateEnabled = stateEnabled;
166
267
  }
167
268
  #validateStateEnabled() {
168
- if (!this.#stateEnabled) {
269
+ if (!this.__stateEnabled) {
169
270
  throw new (0, _chunk5QGQK44Lcjs.ConnStateNotEnabled)();
170
271
  }
171
272
  }
@@ -177,14 +278,28 @@ var Conn = (_class = class {
177
278
  * @protected
178
279
  */
179
280
  _sendMessage(message) {
180
- var _a, _b;
181
- (_b = (_a = this.#driver).sendMessage) == null ? void 0 : _b.call(
182
- _a,
183
- this.#actor,
184
- this,
185
- this.__persist.connDriverState,
186
- message
187
- );
281
+ if (this.__driverState) {
282
+ const driverKind = getConnDriverKindFromState(this.__driverState);
283
+ const driver = CONN_DRIVERS[driverKind];
284
+ if (driver.sendMessage) {
285
+ driver.sendMessage(
286
+ this.#actor,
287
+ this,
288
+ this.__driverState[driverKind],
289
+ message
290
+ );
291
+ } else {
292
+ this.#actor.rLog.debug({
293
+ msg: "conn driver does not support sending messages",
294
+ conn: this.id
295
+ });
296
+ }
297
+ } else {
298
+ this.#actor.rLog.warn({
299
+ msg: "missing connection driver state for send message",
300
+ conn: this.id
301
+ });
302
+ }
188
303
  }
189
304
  /**
190
305
  * Sends an event with arguments to the client.
@@ -201,17 +316,17 @@ var Conn = (_class = class {
201
316
  connId: this.id
202
317
  });
203
318
  this._sendMessage(
204
- new (0, _chunkTCUI5JFEcjs.CachedSerializer)(
319
+ new (0, _chunkSAZCNSVYcjs.CachedSerializer)(
205
320
  {
206
321
  body: {
207
322
  tag: "Event",
208
323
  val: {
209
324
  name: eventName,
210
- args: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor.encode(args))
325
+ args: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor.encode(args))
211
326
  }
212
327
  }
213
328
  },
214
- _chunkNTCUGYSDcjs.TO_CLIENT_VERSIONED
329
+ _chunkDFS77KAAcjs.TO_CLIENT_VERSIONED
215
330
  )
216
331
  );
217
332
  }
@@ -221,43 +336,30 @@ var Conn = (_class = class {
221
336
  * @param reason - The reason for disconnection.
222
337
  */
223
338
  async disconnect(reason) {
224
- this.#status = "reconnecting";
225
- await this.#driver.disconnect(
226
- this.#actor,
227
- this,
228
- this.__persist.connDriverState,
229
- reason
230
- );
231
- }
232
- /**
233
- * This method checks the connection's liveness by querying the driver for its ready state.
234
- * If the connection is not closed, it updates the last liveness timestamp and returns `true`.
235
- * Otherwise, it returns `false`.
236
- * @internal
237
- */
238
- [CONNECTION_CHECK_LIVENESS_SYMBOL]() {
239
- const readyState = this.#driver.getConnectionReadyState(this.#actor, this);
240
- const isConnectionClosed = readyState === 3 /* CLOSED */ || readyState === 2 /* CLOSING */ || readyState === void 0;
241
- const newLastSeen = Date.now();
242
- const newStatus = isConnectionClosed ? "reconnecting" : "connected";
243
- this.#actor.rLog.debug({
244
- msg: "liveness probe for connection",
245
- connId: this.id,
246
- actorId: this.#actor.id,
247
- readyState,
248
- status: this.#status,
249
- newStatus,
250
- lastSeen: this.__persist.lastSeen,
251
- currentTs: newLastSeen
252
- });
253
- if (!isConnectionClosed) {
254
- this.__persist.lastSeen = newLastSeen;
339
+ if (this.__socket && this.__driverState) {
340
+ const driverKind = getConnDriverKindFromState(this.__driverState);
341
+ const driver = CONN_DRIVERS[driverKind];
342
+ if (driver.disconnect) {
343
+ driver.disconnect(
344
+ this.#actor,
345
+ this,
346
+ this.__driverState[driverKind],
347
+ reason
348
+ );
349
+ } else {
350
+ this.#actor.rLog.debug({
351
+ msg: "no disconnect handler for conn driver",
352
+ conn: this.id
353
+ });
354
+ }
355
+ this.#actor.__connDisconnected(this, true, this.__socket.socketId);
356
+ } else {
357
+ this.#actor.rLog.warn({
358
+ msg: "missing connection driver state for disconnect",
359
+ conn: this.id
360
+ });
255
361
  }
256
- this.#status = newStatus;
257
- return {
258
- status: this.#status,
259
- lastSeen: this.__persist.lastSeen
260
- };
362
+ this.__socket = void 0;
261
363
  }
262
364
  }, _class);
263
365
 
@@ -291,7 +393,7 @@ function createActorInspectorRouter() {
291
393
  "/state",
292
394
  _standardvalidator.sValidator.call(void 0,
293
395
  "json",
294
- _v42.default.object({ patch: _chunkDIAYNQTEcjs.PatchSchema }).or(_v42.default.object({ replace: _v42.default.any() }))
396
+ _v42.default.object({ patch: _chunkB3TLRM4Qcjs.PatchSchema }).or(_v42.default.object({ replace: _v42.default.any() }))
295
397
  ),
296
398
  async (c) => {
297
399
  if (!await c.var.inspector.accessors.isStateEnabled()) {
@@ -335,7 +437,7 @@ function createActorInspectorRouter() {
335
437
  id: String(id++)
336
438
  });
337
439
  });
338
- const { promise } = Promise.withResolvers();
440
+ const { promise } = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
339
441
  return promise;
340
442
  },
341
443
  async () => {
@@ -360,7 +462,7 @@ function createActorInspectorRouter() {
360
462
  id: String(id++)
361
463
  });
362
464
  });
363
- const { promise } = Promise.withResolvers();
465
+ const { promise } = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
364
466
  return promise;
365
467
  },
366
468
  async () => {
@@ -386,7 +488,7 @@ function createActorInspectorRouter() {
386
488
  id: String(id++)
387
489
  });
388
490
  });
389
- const { promise } = Promise.withResolvers();
491
+ const { promise } = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
390
492
  return promise;
391
493
  },
392
494
  async () => {
@@ -402,20 +504,20 @@ function createActorInspectorRouter() {
402
504
  }
403
505
  const db = await c.var.inspector.accessors.getDb();
404
506
  const rows = await db.execute(`PRAGMA table_list`);
405
- const tables = _chunkDIAYNQTEcjs.TablesSchema.parse(rows).filter(
507
+ const tables = _chunkB3TLRM4Qcjs.TablesSchema.parse(rows).filter(
406
508
  (table) => table.schema !== "temp" && !table.name.startsWith("sqlite_")
407
509
  );
408
510
  const tablesInfo = await Promise.all(
409
511
  tables.map((table) => db.execute(`PRAGMA table_info(${table.name})`))
410
512
  );
411
- const columns = tablesInfo.map((def) => _chunkDIAYNQTEcjs.ColumnsSchema.parse(def));
513
+ const columns = tablesInfo.map((def) => _chunkB3TLRM4Qcjs.ColumnsSchema.parse(def));
412
514
  const foreignKeysList = await Promise.all(
413
515
  tables.map(
414
516
  (table) => db.execute(`PRAGMA foreign_key_list(${table.name})`)
415
517
  )
416
518
  );
417
519
  const foreignKeys = foreignKeysList.map(
418
- (def) => _chunkDIAYNQTEcjs.ForeignKeysSchema.parse(def)
520
+ (def) => _chunkB3TLRM4Qcjs.ForeignKeysSchema.parse(def)
419
521
  );
420
522
  const countInfo = await Promise.all(
421
523
  tables.map(
@@ -695,15 +797,14 @@ var ActorInstance = class {
695
797
  #persist;
696
798
  /** Raw state without the proxy wrapper */
697
799
  #persistRaw;
698
- #persistWriteQueue = new (0, _chunk5JBFVV4Ccjs.SinglePromiseQueue)();
699
- #alarmWriteQueue = new (0, _chunk5JBFVV4Ccjs.SinglePromiseQueue)();
800
+ #persistWriteQueue = new (0, _chunk6EUWRXLTcjs.SinglePromiseQueue)();
801
+ #alarmWriteQueue = new (0, _chunk6EUWRXLTcjs.SinglePromiseQueue)();
700
802
  #lastSaveTime = 0;
701
803
  #pendingSaveTimeout;
702
804
  #vars;
703
805
  #backgroundPromises = [];
704
806
  #abortController = new AbortController();
705
807
  #config;
706
- #connectionDrivers;
707
808
  #actorDriver;
708
809
  #inlineClient;
709
810
  #actorId;
@@ -741,9 +842,9 @@ var ActorInstance = class {
741
842
  getConnections: async () => {
742
843
  return Array.from(this.#connections.entries()).map(([id, conn]) => ({
743
844
  id,
744
- stateEnabled: conn._stateEnabled,
845
+ stateEnabled: conn.__stateEnabled,
745
846
  params: conn.params,
746
- state: conn._stateEnabled ? conn.state : void 0
847
+ state: conn.__stateEnabled ? conn.state : void 0
747
848
  }));
748
849
  },
749
850
  setState: async (state) => {
@@ -776,23 +877,22 @@ var ActorInstance = class {
776
877
  this.#config = config;
777
878
  this.actorContext = new ActorContext(this);
778
879
  }
779
- async start(connectionDrivers, actorDriver, inlineClient, actorId, name, key, region) {
880
+ async start(actorDriver, inlineClient, actorId, name, key, region) {
780
881
  var _a, _b;
781
882
  const logParams = {
782
883
  actor: name,
783
884
  key: serializeActorKey(key),
784
885
  actorId
785
886
  };
786
- this.#log = _chunkMRRT2CZDcjs.getBaseLogger.call(void 0, ).child(
787
- Object.assign(_chunkMRRT2CZDcjs.getIncludeTarget.call(void 0, ) ? { target: "actor" } : {}, logParams)
887
+ this.#log = _chunk3MBP4WNCcjs.getBaseLogger.call(void 0, ).child(
888
+ Object.assign(_chunk3MBP4WNCcjs.getIncludeTarget.call(void 0, ) ? { target: "actor" } : {}, logParams)
788
889
  );
789
- this.#rLog = _chunkMRRT2CZDcjs.getBaseLogger.call(void 0, ).child(
890
+ this.#rLog = _chunk3MBP4WNCcjs.getBaseLogger.call(void 0, ).child(
790
891
  Object.assign(
791
- _chunkMRRT2CZDcjs.getIncludeTarget.call(void 0, ) ? { target: "actor-runtime" } : {},
892
+ _chunk3MBP4WNCcjs.getIncludeTarget.call(void 0, ) ? { target: "actor-runtime" } : {},
792
893
  logParams
793
894
  )
794
895
  );
795
- this.#connectionDrivers = connectionDrivers;
796
896
  this.#actorDriver = actorDriver;
797
897
  this.#inlineClient = inlineClient;
798
898
  this.#actorId = actorId;
@@ -809,7 +909,7 @@ var ActorInstance = class {
809
909
  this.#actorDriver.getContext(this.#actorId)
810
910
  );
811
911
  if (dataOrPromise instanceof Promise) {
812
- vars = await _chunkTCUI5JFEcjs.deadline.call(void 0,
912
+ vars = await _chunkSAZCNSVYcjs.deadline.call(void 0,
813
913
  dataOrPromise,
814
914
  this.#config.options.createVarsTimeout
815
915
  );
@@ -936,7 +1036,7 @@ var ActorInstance = class {
936
1036
  } catch (error) {
937
1037
  this.actorContext.log.error({
938
1038
  msg: "error while running event",
939
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error),
1039
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error),
940
1040
  event: event.eventId,
941
1041
  timestamp: event.timestamp,
942
1042
  action: event.kind.generic.actionName
@@ -945,7 +1045,7 @@ var ActorInstance = class {
945
1045
  } catch (error) {
946
1046
  this.actorContext.log.error({
947
1047
  msg: "internal error while running event",
948
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error),
1048
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error),
949
1049
  ...event
950
1050
  });
951
1051
  }
@@ -958,7 +1058,7 @@ var ActorInstance = class {
958
1058
  kind: {
959
1059
  generic: {
960
1060
  actionName: action,
961
- args: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor2.encode(args))
1061
+ args: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(args))
962
1062
  }
963
1063
  }
964
1064
  });
@@ -971,7 +1071,7 @@ var ActorInstance = class {
971
1071
  throw new (0, _chunk5QGQK44Lcjs.StateNotEnabled)();
972
1072
  }
973
1073
  }
974
- get #connStateEnabled() {
1074
+ get connStateEnabled() {
975
1075
  return "createConnState" in this.#config || "connState" in this.#config;
976
1076
  }
977
1077
  get #varsEnabled() {
@@ -1012,7 +1112,7 @@ var ActorInstance = class {
1012
1112
  const bareData = this.#convertToBarePersisted(this.#persistRaw);
1013
1113
  await this.#actorDriver.writePersistedData(
1014
1114
  this.#actorId,
1015
- _chunkNTCUGYSDcjs.PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(bareData)
1115
+ _chunkDFS77KAAcjs.PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(bareData)
1016
1116
  );
1017
1117
  this.#rLog.debug({ msg: "persist saved" });
1018
1118
  });
@@ -1036,7 +1136,7 @@ var ActorInstance = class {
1036
1136
  this.#persistRaw = target;
1037
1137
  if (target === null || typeof target !== "object") {
1038
1138
  let invalidPath = "";
1039
- if (!_chunk5JBFVV4Ccjs.isCborSerializable.call(void 0,
1139
+ if (!_chunk6EUWRXLTcjs.isCborSerializable.call(void 0,
1040
1140
  target,
1041
1141
  (path) => {
1042
1142
  invalidPath = path;
@@ -1058,7 +1158,7 @@ var ActorInstance = class {
1058
1158
  return;
1059
1159
  }
1060
1160
  let invalidPath = "";
1061
- if (!_chunk5JBFVV4Ccjs.isCborSerializable.call(void 0,
1161
+ if (!_chunk6EUWRXLTcjs.isCborSerializable.call(void 0,
1062
1162
  value,
1063
1163
  (invalidPathPart) => {
1064
1164
  invalidPath = invalidPathPart;
@@ -1081,7 +1181,7 @@ var ActorInstance = class {
1081
1181
  } catch (error) {
1082
1182
  this.#rLog.error({
1083
1183
  msg: "error in `_onStateChange`",
1084
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1184
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1085
1185
  });
1086
1186
  } finally {
1087
1187
  this.#isInOnStateChange = false;
@@ -1099,7 +1199,7 @@ var ActorInstance = class {
1099
1199
  persistDataBuffer !== void 0,
1100
1200
  "persist data has not been set, it should be set when initialized"
1101
1201
  );
1102
- const bareData = _chunkNTCUGYSDcjs.PERSISTED_ACTOR_VERSIONED.deserializeWithEmbeddedVersion(
1202
+ const bareData = _chunkDFS77KAAcjs.PERSISTED_ACTOR_VERSIONED.deserializeWithEmbeddedVersion(
1103
1203
  persistDataBuffer
1104
1204
  );
1105
1205
  const persistData = this.#convertFromBarePersisted(bareData);
@@ -1110,13 +1210,7 @@ var ActorInstance = class {
1110
1210
  });
1111
1211
  this.#setPersist(persistData);
1112
1212
  for (const connPersist of this.#persist.connections) {
1113
- const driver = this.__getConnDriver(connPersist.connDriver);
1114
- const conn = new Conn(
1115
- this,
1116
- connPersist,
1117
- driver,
1118
- this.#connStateEnabled
1119
- );
1213
+ const conn = new Conn(this, connPersist);
1120
1214
  this.#connections.set(conn.id, conn);
1121
1215
  for (const sub of connPersist.subscriptions) {
1122
1216
  this.#addSubscription(sub.eventName, conn, true);
@@ -1147,7 +1241,7 @@ var ActorInstance = class {
1147
1241
  const bareData2 = this.#convertToBarePersisted(persistData);
1148
1242
  await this.#actorDriver.writePersistedData(
1149
1243
  this.#actorId,
1150
- _chunkNTCUGYSDcjs.PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(bareData2)
1244
+ _chunkDFS77KAAcjs.PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(bareData2)
1151
1245
  );
1152
1246
  this.#setPersist(persistData);
1153
1247
  if (this.#config.onCreate) {
@@ -1159,13 +1253,36 @@ var ActorInstance = class {
1159
1253
  return this.#connections.get(id);
1160
1254
  }
1161
1255
  /**
1162
- * Removes a connection and cleans up its resources.
1256
+ * Connection disconnected.
1257
+ *
1258
+ * If a clean diconnect, will be removed immediately.
1259
+ *
1260
+ * If not a clean disconnect, will keep the connection alive for a given interval to wait for reconnect.
1163
1261
  */
1164
- __removeConn(conn) {
1165
- if (!conn) {
1166
- this.#rLog.warn({ msg: "`conn` does not exist" });
1262
+ __connDisconnected(conn, wasClean, socketId) {
1263
+ if (socketId && conn.__socket && socketId !== conn.__socket.socketId) {
1264
+ this.rLog.debug({
1265
+ msg: "ignoring stale disconnect event",
1266
+ connId: conn.id,
1267
+ eventSocketId: socketId,
1268
+ currentSocketId: conn.__socket.socketId
1269
+ });
1167
1270
  return;
1168
1271
  }
1272
+ if (wasClean) {
1273
+ this.#removeConn(conn);
1274
+ } else {
1275
+ if (!conn.__driverState) {
1276
+ this.rLog.warn("called conn disconnected without driver state");
1277
+ }
1278
+ conn.__persist.lastSeen = Date.now();
1279
+ conn.__socket = void 0;
1280
+ }
1281
+ }
1282
+ /**
1283
+ * Removes a connection and cleans up its resources.
1284
+ */
1285
+ #removeConn(conn) {
1169
1286
  const connIdx = this.#persist.connections.findIndex(
1170
1287
  (c) => c.connId === conn.id
1171
1288
  );
@@ -1190,20 +1307,80 @@ var ActorInstance = class {
1190
1307
  result.catch((error) => {
1191
1308
  this.#rLog.error({
1192
1309
  msg: "error in `onDisconnect`",
1193
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1310
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1194
1311
  });
1195
1312
  });
1196
1313
  }
1197
1314
  } catch (error) {
1198
1315
  this.#rLog.error({
1199
1316
  msg: "error in `onDisconnect`",
1200
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1317
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1201
1318
  });
1202
1319
  }
1203
1320
  }
1204
1321
  this.#resetSleepTimer();
1205
1322
  }
1206
- async prepareConn(params, request) {
1323
+ /**
1324
+ * Called to create a new connection or reconnect an existing one.
1325
+ */
1326
+ async createConn(socket, params, request, connectionId, connectionToken) {
1327
+ this.#assertReady();
1328
+ if (connectionId && connectionToken) {
1329
+ this.rLog.debug({
1330
+ msg: "checking for existing connection",
1331
+ connectionId
1332
+ });
1333
+ const existingConn = this.#connections.get(connectionId);
1334
+ if (existingConn && existingConn._token === connectionToken) {
1335
+ this.rLog.debug({
1336
+ msg: "reconnecting existing connection",
1337
+ connectionId
1338
+ });
1339
+ if (existingConn.__driverState) {
1340
+ const driverKind = getConnDriverKindFromState(
1341
+ existingConn.__driverState
1342
+ );
1343
+ const driver = CONN_DRIVERS[driverKind];
1344
+ if (driver.disconnect) {
1345
+ driver.disconnect(
1346
+ this,
1347
+ existingConn,
1348
+ existingConn.__driverState[driverKind],
1349
+ "Reconnecting with new driver state"
1350
+ );
1351
+ }
1352
+ }
1353
+ existingConn.__socket = socket;
1354
+ existingConn.__persist.lastSeen = Date.now();
1355
+ this.#resetSleepTimer();
1356
+ this.inspector.emitter.emit("connectionUpdated");
1357
+ existingConn._sendMessage(
1358
+ new (0, _chunkSAZCNSVYcjs.CachedSerializer)(
1359
+ {
1360
+ body: {
1361
+ tag: "Init",
1362
+ val: {
1363
+ actorId: this.id,
1364
+ connectionId: existingConn.id,
1365
+ connectionToken: existingConn._token
1366
+ }
1367
+ }
1368
+ },
1369
+ _chunkDFS77KAAcjs.TO_CLIENT_VERSIONED
1370
+ )
1371
+ );
1372
+ return existingConn;
1373
+ }
1374
+ this.rLog.debug({
1375
+ msg: "connection not found or token mismatch, creating new connection",
1376
+ connectionId
1377
+ });
1378
+ }
1379
+ const newConnId = generateConnId();
1380
+ const newConnToken = generateConnToken();
1381
+ if (this.#connections.has(newConnId)) {
1382
+ throw new Error(`Connection already exists: ${newConnId}`);
1383
+ }
1207
1384
  let connState;
1208
1385
  const onBeforeConnectOpts = {
1209
1386
  request
@@ -1215,7 +1392,7 @@ var ActorInstance = class {
1215
1392
  params
1216
1393
  );
1217
1394
  }
1218
- if (this.#connStateEnabled) {
1395
+ if (this.connStateEnabled) {
1219
1396
  if ("createConnState" in this.#config) {
1220
1397
  const dataOrPromise = this.#config.createConnState(
1221
1398
  this.actorContext,
@@ -1223,7 +1400,7 @@ var ActorInstance = class {
1223
1400
  params
1224
1401
  );
1225
1402
  if (dataOrPromise instanceof Promise) {
1226
- connState = await _chunkTCUI5JFEcjs.deadline.call(void 0,
1403
+ connState = await _chunkSAZCNSVYcjs.deadline.call(void 0,
1227
1404
  dataOrPromise,
1228
1405
  this.#config.options.createConnStateTimeout
1229
1406
  );
@@ -1238,39 +1415,16 @@ var ActorInstance = class {
1238
1415
  );
1239
1416
  }
1240
1417
  }
1241
- return connState;
1242
- }
1243
- __getConnDriver(driverId) {
1244
- const driver = this.#connectionDrivers[driverId];
1245
- if (!driver) throw new Error(`No connection driver: ${driverId}`);
1246
- return driver;
1247
- }
1248
- /**
1249
- * Called after establishing a connection handshake.
1250
- */
1251
- async createConn(connectionId, connectionToken, params, state, driverId, driverState, authData) {
1252
- this.#assertReady();
1253
- if (this.#connections.has(connectionId)) {
1254
- throw new Error(`Connection already exists: ${connectionId}`);
1255
- }
1256
- const driver = this.__getConnDriver(driverId);
1257
1418
  const persist = {
1258
- connId: connectionId,
1259
- token: connectionToken,
1260
- connDriver: driverId,
1261
- connDriverState: driverState,
1419
+ connId: newConnId,
1420
+ token: newConnToken,
1262
1421
  params,
1263
- state,
1264
- authData,
1422
+ state: connState,
1265
1423
  lastSeen: Date.now(),
1266
1424
  subscriptions: []
1267
1425
  };
1268
- const conn = new Conn(
1269
- this,
1270
- persist,
1271
- driver,
1272
- this.#connStateEnabled
1273
- );
1426
+ const conn = new Conn(this, persist);
1427
+ conn.__socket = socket;
1274
1428
  this.#connections.set(conn.id, conn);
1275
1429
  this.#resetSleepTimer();
1276
1430
  this.#persist.connections.push(persist);
@@ -1279,7 +1433,7 @@ var ActorInstance = class {
1279
1433
  try {
1280
1434
  const result = this.#config.onConnect(this.actorContext, conn);
1281
1435
  if (result instanceof Promise) {
1282
- _chunkTCUI5JFEcjs.deadline.call(void 0, result, this.#config.options.onConnectTimeout).catch(
1436
+ _chunkSAZCNSVYcjs.deadline.call(void 0, result, this.#config.options.onConnectTimeout).catch(
1283
1437
  (error) => {
1284
1438
  this.#rLog.error({
1285
1439
  msg: "error in `onConnect`, closing socket",
@@ -1292,14 +1446,14 @@ var ActorInstance = class {
1292
1446
  } catch (error) {
1293
1447
  this.#rLog.error({
1294
1448
  msg: "error in `onConnect`",
1295
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1449
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1296
1450
  });
1297
1451
  conn == null ? void 0 : conn.disconnect("`onConnect` failed");
1298
1452
  }
1299
1453
  }
1300
1454
  this.inspector.emitter.emit("connectionUpdated");
1301
1455
  conn._sendMessage(
1302
- new (0, _chunkTCUI5JFEcjs.CachedSerializer)(
1456
+ new (0, _chunkSAZCNSVYcjs.CachedSerializer)(
1303
1457
  {
1304
1458
  body: {
1305
1459
  tag: "Init",
@@ -1310,14 +1464,14 @@ var ActorInstance = class {
1310
1464
  }
1311
1465
  }
1312
1466
  },
1313
- _chunkNTCUGYSDcjs.TO_CLIENT_VERSIONED
1467
+ _chunkDFS77KAAcjs.TO_CLIENT_VERSIONED
1314
1468
  )
1315
1469
  );
1316
1470
  return conn;
1317
1471
  }
1318
1472
  // MARK: Messages
1319
1473
  async processMessage(message, conn) {
1320
- await _chunkNTCUGYSDcjs.processMessage.call(void 0, message, this, conn, {
1474
+ await _chunkDFS77KAAcjs.processMessage.call(void 0, message, this, conn, {
1321
1475
  onExecuteAction: async (ctx, name, args) => {
1322
1476
  this.inspector.emitter.emit("eventFired", {
1323
1477
  type: "action",
@@ -1411,11 +1565,10 @@ var ActorInstance = class {
1411
1565
  #checkConnectionsLiveness() {
1412
1566
  this.#rLog.debug({ msg: "checking connections liveness" });
1413
1567
  for (const conn of this.#connections.values()) {
1414
- const liveness = conn[CONNECTION_CHECK_LIVENESS_SYMBOL]();
1415
- if (liveness.status === "connected") {
1568
+ if (conn.__status === "connected") {
1416
1569
  this.#rLog.debug({ msg: "connection is alive", connId: conn.id });
1417
1570
  } else {
1418
- const lastSeen = liveness.lastSeen;
1571
+ const lastSeen = conn.__persist.lastSeen;
1419
1572
  const sinceLastSeen = Date.now() - lastSeen;
1420
1573
  if (sinceLastSeen < this.#config.options.connectionLivenessTimeout) {
1421
1574
  this.#rLog.debug({
@@ -1431,7 +1584,7 @@ var ActorInstance = class {
1431
1584
  connId: conn.id,
1432
1585
  lastSeen
1433
1586
  });
1434
- this.__removeConn(conn);
1587
+ this.#removeConn(conn);
1435
1588
  }
1436
1589
  }
1437
1590
  }
@@ -1487,7 +1640,7 @@ var ActorInstance = class {
1487
1640
  msg: "awaiting async action",
1488
1641
  actionName
1489
1642
  });
1490
- output = await _chunkTCUI5JFEcjs.deadline.call(void 0,
1643
+ output = await _chunkSAZCNSVYcjs.deadline.call(void 0,
1491
1644
  outputOrPromise,
1492
1645
  this.#config.options.actionTimeout
1493
1646
  );
@@ -1522,7 +1675,7 @@ var ActorInstance = class {
1522
1675
  } catch (error) {
1523
1676
  this.#rLog.error({
1524
1677
  msg: "error in `onBeforeActionResponse`",
1525
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1678
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1526
1679
  });
1527
1680
  }
1528
1681
  }
@@ -1534,13 +1687,13 @@ var ActorInstance = class {
1534
1687
  });
1535
1688
  return output;
1536
1689
  } catch (error) {
1537
- if (error instanceof _chunkTCUI5JFEcjs.DeadlineError) {
1690
+ if (error instanceof _chunkSAZCNSVYcjs.DeadlineError) {
1538
1691
  throw new (0, _chunk5QGQK44Lcjs.ActionTimedOut)();
1539
1692
  }
1540
1693
  this.#rLog.error({
1541
1694
  msg: "action error",
1542
1695
  actionName,
1543
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1696
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1544
1697
  });
1545
1698
  throw error;
1546
1699
  } finally {
@@ -1574,7 +1727,7 @@ var ActorInstance = class {
1574
1727
  }
1575
1728
  return response;
1576
1729
  } catch (error) {
1577
- this.#rLog.error({ msg: "onFetch error", error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error) });
1730
+ this.#rLog.error({ msg: "onFetch error", error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error) });
1578
1731
  throw error;
1579
1732
  } finally {
1580
1733
  this.#activeRawFetchCount = Math.max(0, this.#activeRawFetchCount - 1);
@@ -1615,7 +1768,7 @@ var ActorInstance = class {
1615
1768
  } catch (error) {
1616
1769
  this.#rLog.error({
1617
1770
  msg: "onWebSocket error",
1618
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1771
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1619
1772
  });
1620
1773
  throw error;
1621
1774
  } finally {
@@ -1710,17 +1863,17 @@ var ActorInstance = class {
1710
1863
  });
1711
1864
  const subscriptions = this.#subscriptionIndex.get(name);
1712
1865
  if (!subscriptions) return;
1713
- const toClientSerializer = new (0, _chunkTCUI5JFEcjs.CachedSerializer)(
1866
+ const toClientSerializer = new (0, _chunkSAZCNSVYcjs.CachedSerializer)(
1714
1867
  {
1715
1868
  body: {
1716
1869
  tag: "Event",
1717
1870
  val: {
1718
1871
  name,
1719
- args: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor2.encode(args))
1872
+ args: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(args))
1720
1873
  }
1721
1874
  }
1722
1875
  },
1723
- _chunkNTCUGYSDcjs.TO_CLIENT_VERSIONED
1876
+ _chunkDFS77KAAcjs.TO_CLIENT_VERSIONED
1724
1877
  );
1725
1878
  for (const connection of subscriptions) {
1726
1879
  connection._sendMessage(toClientSerializer);
@@ -1741,7 +1894,7 @@ var ActorInstance = class {
1741
1894
  }).catch((error) => {
1742
1895
  this.#rLog.error({
1743
1896
  msg: "wait until promise failed",
1744
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1897
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1745
1898
  });
1746
1899
  });
1747
1900
  this.#backgroundPromises.push(nonfailablePromise);
@@ -1761,7 +1914,7 @@ var ActorInstance = class {
1761
1914
  await this.#savePersistInner();
1762
1915
  } else {
1763
1916
  if (!this.#onPersistSavedPromise) {
1764
- this.#onPersistSavedPromise = Promise.withResolvers();
1917
+ this.#onPersistSavedPromise = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
1765
1918
  }
1766
1919
  this.#savePersistThrottled();
1767
1920
  await this.#onPersistSavedPromise.promise;
@@ -1797,7 +1950,7 @@ var ActorInstance = class {
1797
1950
  this._sleep().catch((error) => {
1798
1951
  this.#rLog.error({
1799
1952
  msg: "error during sleep",
1800
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
1953
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1801
1954
  });
1802
1955
  });
1803
1956
  }, this.#config.options.sleepTimeout);
@@ -1849,16 +2002,16 @@ var ActorInstance = class {
1849
2002
  this.#rLog.debug({ msg: "calling onStop" });
1850
2003
  const result = this.#config.onStop(this.actorContext);
1851
2004
  if (result instanceof Promise) {
1852
- await _chunkTCUI5JFEcjs.deadline.call(void 0, result, this.#config.options.onStopTimeout);
2005
+ await _chunkSAZCNSVYcjs.deadline.call(void 0, result, this.#config.options.onStopTimeout);
1853
2006
  }
1854
2007
  this.#rLog.debug({ msg: "onStop completed" });
1855
2008
  } catch (error) {
1856
- if (error instanceof _chunkTCUI5JFEcjs.DeadlineError) {
2009
+ if (error instanceof _chunkSAZCNSVYcjs.DeadlineError) {
1857
2010
  this.#rLog.error({ msg: "onStop timed out" });
1858
2011
  } else {
1859
2012
  this.#rLog.error({
1860
2013
  msg: "error in onStop",
1861
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
2014
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
1862
2015
  });
1863
2016
  }
1864
2017
  }
@@ -1919,18 +2072,14 @@ var ActorInstance = class {
1919
2072
  // MARK: BARE Conversion Helpers
1920
2073
  #convertToBarePersisted(persist) {
1921
2074
  return {
1922
- input: persist.input !== void 0 ? _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor2.encode(persist.input)) : null,
2075
+ input: persist.input !== void 0 ? _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(persist.input)) : null,
1923
2076
  hasInitialized: persist.hasInitiated,
1924
- state: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor2.encode(persist.state)),
2077
+ state: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(persist.state)),
1925
2078
  connections: persist.connections.map((conn) => ({
1926
2079
  id: conn.connId,
1927
2080
  token: conn.token,
1928
- driver: conn.connDriver,
1929
- driverState: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0,
1930
- cbor2.encode(conn.connDriverState || {})
1931
- ),
1932
- parameters: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor2.encode(conn.params || {})),
1933
- state: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor2.encode(conn.state || {})),
2081
+ parameters: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(conn.params || {})),
2082
+ state: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(conn.state || {})),
1934
2083
  subscriptions: conn.subscriptions.map((sub) => ({
1935
2084
  eventName: sub.eventName
1936
2085
  })),
@@ -1957,8 +2106,6 @@ var ActorInstance = class {
1957
2106
  connections: bareData.connections.map((conn) => ({
1958
2107
  connId: conn.id,
1959
2108
  token: conn.token,
1960
- connDriver: conn.driver,
1961
- connDriverState: cbor2.decode(new Uint8Array(conn.driverState)),
1962
2109
  params: cbor2.decode(new Uint8Array(conn.parameters)),
1963
2110
  state: cbor2.decode(new Uint8Array(conn.state)),
1964
2111
  subscriptions: conn.subscriptions.map((sub) => ({
@@ -2050,7 +2197,7 @@ async function importEventSource() {
2050
2197
  try {
2051
2198
  const es = await Promise.resolve().then(() => _interopRequireWildcard(require("eventsource")));
2052
2199
  _EventSource = es.EventSource;
2053
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug("using eventsource from npm");
2200
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug("using eventsource from npm");
2054
2201
  } catch (err) {
2055
2202
  _EventSource = class MockEventSource {
2056
2203
  constructor() {
@@ -2059,7 +2206,7 @@ async function importEventSource() {
2059
2206
  );
2060
2207
  }
2061
2208
  };
2062
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug("using mock eventsource");
2209
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug("using mock eventsource");
2063
2210
  }
2064
2211
  return _EventSource;
2065
2212
  })();
@@ -2068,7 +2215,7 @@ async function importEventSource() {
2068
2215
 
2069
2216
  // src/client/actor-query.ts
2070
2217
  async function queryActor(c, query, managerDriver) {
2071
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "querying actor", query: JSON.stringify(query) });
2218
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "querying actor", query: JSON.stringify(query) });
2072
2219
  let actorOutput;
2073
2220
  if ("getForId" in query) {
2074
2221
  const output = await managerDriver.getForId({
@@ -2115,7 +2262,7 @@ async function queryActor(c, query, managerDriver) {
2115
2262
  } else {
2116
2263
  throw new (0, _chunk5QGQK44Lcjs.InvalidRequest)("Invalid query format");
2117
2264
  }
2118
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "actor query result", actorId: actorOutput.actorId });
2265
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "actor query result", actorId: actorOutput.actorId });
2119
2266
  return { actorId: actorOutput.actorId };
2120
2267
  }
2121
2268
 
@@ -2165,13 +2312,13 @@ async function rawHttpFetch(driver, actorQuery, params, input, init) {
2165
2312
  }
2166
2313
  try {
2167
2314
  const { actorId } = await queryActor(void 0, actorQuery, driver);
2168
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "found actor for raw http", actorId });
2315
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "found actor for raw http", actorId });
2169
2316
  _invariant2.default.call(void 0, actorId, "Missing actor ID");
2170
2317
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
2171
2318
  const url = new URL(`http://actor/raw/http/${normalizedPath}`);
2172
2319
  const proxyRequestHeaders = new Headers(mergedInit.headers);
2173
2320
  if (params) {
2174
- proxyRequestHeaders.set(_chunkTCUI5JFEcjs.HEADER_CONN_PARAMS, JSON.stringify(params));
2321
+ proxyRequestHeaders.set(_chunkSAZCNSVYcjs.HEADER_CONN_PARAMS, JSON.stringify(params));
2175
2322
  }
2176
2323
  const proxyRequest = new Request(url, {
2177
2324
  ...mergedInit,
@@ -2179,9 +2326,9 @@ async function rawHttpFetch(driver, actorQuery, params, input, init) {
2179
2326
  });
2180
2327
  return driver.sendRequest(actorId, proxyRequest);
2181
2328
  } catch (err) {
2182
- const { group, code, message, metadata } = _chunk5JBFVV4Ccjs.deconstructError.call(void 0,
2329
+ const { group, code, message, metadata } = _chunk6EUWRXLTcjs.deconstructError.call(void 0,
2183
2330
  err,
2184
- _chunkKG3C7MKRcjs.logger.call(void 0, ),
2331
+ _chunkK4ENQCC4cjs.logger.call(void 0, ),
2185
2332
  {},
2186
2333
  true
2187
2334
  );
@@ -2191,7 +2338,7 @@ async function rawHttpFetch(driver, actorQuery, params, input, init) {
2191
2338
  async function rawWebSocket(driver, actorQuery, params, path, protocols) {
2192
2339
  const encoding = "bare";
2193
2340
  const { actorId } = await queryActor(void 0, actorQuery, driver);
2194
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "found actor for action", actorId });
2341
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "found actor for action", actorId });
2195
2342
  _invariant2.default.call(void 0, actorId, "Missing actor ID");
2196
2343
  let pathPortion = "";
2197
2344
  let queryPortion = "";
@@ -2207,8 +2354,8 @@ async function rawWebSocket(driver, actorQuery, params, path, protocols) {
2207
2354
  pathPortion = pathPortion.slice(1);
2208
2355
  }
2209
2356
  }
2210
- const fullPath = `${_chunkTCUI5JFEcjs.PATH_RAW_WEBSOCKET_PREFIX}${pathPortion}${queryPortion}`;
2211
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2357
+ const fullPath = `${_chunkSAZCNSVYcjs.PATH_RAW_WEBSOCKET_PREFIX}${pathPortion}${queryPortion}`;
2358
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2212
2359
  msg: "opening websocket",
2213
2360
  actorId,
2214
2361
  encoding,
@@ -2234,10 +2381,10 @@ function messageLength(message) {
2234
2381
  if (typeof message === "string") {
2235
2382
  return message.length;
2236
2383
  }
2237
- _chunk5JBFVV4Ccjs.assertUnreachable.call(void 0, message);
2384
+ _chunk6EUWRXLTcjs.assertUnreachable.call(void 0, message);
2238
2385
  }
2239
2386
  async function sendHttpRequest(opts) {
2240
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2387
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2241
2388
  msg: "sending http request",
2242
2389
  url: opts.url,
2243
2390
  encoding: opts.encoding
@@ -2246,8 +2393,8 @@ async function sendHttpRequest(opts) {
2246
2393
  let bodyData;
2247
2394
  if (opts.method === "POST" || opts.method === "PUT") {
2248
2395
  _invariant2.default.call(void 0, opts.body !== void 0, "missing body");
2249
- contentType = _chunkTCUI5JFEcjs.contentTypeForEncoding.call(void 0, opts.encoding);
2250
- bodyData = _chunkTCUI5JFEcjs.serializeWithEncoding.call(void 0,
2396
+ contentType = _chunkSAZCNSVYcjs.contentTypeForEncoding.call(void 0, opts.encoding);
2397
+ bodyData = _chunkSAZCNSVYcjs.serializeWithEncoding.call(void 0,
2251
2398
  opts.encoding,
2252
2399
  opts.body,
2253
2400
  opts.requestVersionedDataHandler
@@ -2263,7 +2410,7 @@ async function sendHttpRequest(opts) {
2263
2410
  ...contentType ? {
2264
2411
  "Content-Type": contentType
2265
2412
  } : {},
2266
- "User-Agent": _chunk5JBFVV4Ccjs.httpUserAgent.call(void 0, )
2413
+ "User-Agent": _chunk6EUWRXLTcjs.httpUserAgent.call(void 0, )
2267
2414
  },
2268
2415
  body: bodyData,
2269
2416
  credentials: "include",
@@ -2279,10 +2426,10 @@ async function sendHttpRequest(opts) {
2279
2426
  const bufferResponse = await response.arrayBuffer();
2280
2427
  let responseData;
2281
2428
  try {
2282
- responseData = _chunkTCUI5JFEcjs.deserializeWithEncoding.call(void 0,
2429
+ responseData = _chunkSAZCNSVYcjs.deserializeWithEncoding.call(void 0,
2283
2430
  opts.encoding,
2284
2431
  new Uint8Array(bufferResponse),
2285
- _chunkNTCUGYSDcjs.HTTP_RESPONSE_ERROR_VERSIONED
2432
+ _chunkDFS77KAAcjs.HTTP_RESPONSE_ERROR_VERSIONED
2286
2433
  );
2287
2434
  } catch (error) {
2288
2435
  const textResponse = new TextDecoder("utf-8", { fatal: false }).decode(
@@ -2305,7 +2452,7 @@ ${textResponse}`
2305
2452
  }
2306
2453
  try {
2307
2454
  const buffer = new Uint8Array(await response.arrayBuffer());
2308
- return _chunkTCUI5JFEcjs.deserializeWithEncoding.call(void 0,
2455
+ return _chunkSAZCNSVYcjs.deserializeWithEncoding.call(void 0,
2309
2456
  opts.encoding,
2310
2457
  buffer,
2311
2458
  opts.responseVersionedDataHandler
@@ -2352,9 +2499,9 @@ var ActorHandleRaw = class {
2352
2499
  this.#actorQuery,
2353
2500
  this.#driver
2354
2501
  );
2355
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "found actor for action", actorId });
2502
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "found actor for action", actorId });
2356
2503
  _invariant2.default.call(void 0, actorId, "Missing actor ID");
2357
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2504
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2358
2505
  msg: "handling action",
2359
2506
  name: opts.name,
2360
2507
  encoding: this.#encoding
@@ -2363,23 +2510,23 @@ var ActorHandleRaw = class {
2363
2510
  url: `http://actor/action/${encodeURIComponent(opts.name)}`,
2364
2511
  method: "POST",
2365
2512
  headers: {
2366
- [_chunkTCUI5JFEcjs.HEADER_ENCODING]: this.#encoding,
2367
- ...this.#params !== void 0 ? { [_chunkTCUI5JFEcjs.HEADER_CONN_PARAMS]: JSON.stringify(this.#params) } : {}
2513
+ [_chunkSAZCNSVYcjs.HEADER_ENCODING]: this.#encoding,
2514
+ ...this.#params !== void 0 ? { [_chunkSAZCNSVYcjs.HEADER_CONN_PARAMS]: JSON.stringify(this.#params) } : {}
2368
2515
  },
2369
2516
  body: {
2370
- args: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor4.encode(opts.args))
2517
+ args: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor4.encode(opts.args))
2371
2518
  },
2372
2519
  encoding: this.#encoding,
2373
2520
  customFetch: this.#driver.sendRequest.bind(this.#driver, actorId),
2374
2521
  signal: opts == null ? void 0 : opts.signal,
2375
- requestVersionedDataHandler: _chunkNTCUGYSDcjs.HTTP_ACTION_REQUEST_VERSIONED,
2376
- responseVersionedDataHandler: _chunkNTCUGYSDcjs.HTTP_ACTION_RESPONSE_VERSIONED
2522
+ requestVersionedDataHandler: _chunkDFS77KAAcjs.HTTP_ACTION_REQUEST_VERSIONED,
2523
+ responseVersionedDataHandler: _chunkDFS77KAAcjs.HTTP_ACTION_RESPONSE_VERSIONED
2377
2524
  });
2378
2525
  return cbor4.decode(new Uint8Array(responseData.output));
2379
2526
  } catch (err) {
2380
- const { group, code, message, metadata } = _chunk5JBFVV4Ccjs.deconstructError.call(void 0,
2527
+ const { group, code, message, metadata } = _chunk6EUWRXLTcjs.deconstructError.call(void 0,
2381
2528
  err,
2382
- _chunkKG3C7MKRcjs.logger.call(void 0, ),
2529
+ _chunkK4ENQCC4cjs.logger.call(void 0, ),
2383
2530
  {},
2384
2531
  true
2385
2532
  );
@@ -2393,7 +2540,7 @@ var ActorHandleRaw = class {
2393
2540
  * @returns {ActorConn<AD>} A connection to the actor.
2394
2541
  */
2395
2542
  connect() {
2396
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2543
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2397
2544
  msg: "establishing connection from handle",
2398
2545
  query: this.#actorQuery
2399
2546
  });
@@ -2453,7 +2600,7 @@ var ActorHandleRaw = class {
2453
2600
  } else if ("getOrCreateForKey" in this.#actorQuery) {
2454
2601
  name = this.#actorQuery.getOrCreateForKey.name;
2455
2602
  } else {
2456
- _chunkTCUI5JFEcjs.assertUnreachable.call(void 0, this.#actorQuery);
2603
+ _chunkSAZCNSVYcjs.assertUnreachable.call(void 0, this.#actorQuery);
2457
2604
  }
2458
2605
  const { actorId } = await queryActor(
2459
2606
  void 0,
@@ -2467,7 +2614,7 @@ var ActorHandleRaw = class {
2467
2614
  } else if ("create" in this.#actorQuery) {
2468
2615
  _invariant2.default.call(void 0, false, "actorQuery cannot be create");
2469
2616
  } else {
2470
- _chunkTCUI5JFEcjs.assertUnreachable.call(void 0, this.#actorQuery);
2617
+ _chunkSAZCNSVYcjs.assertUnreachable.call(void 0, this.#actorQuery);
2471
2618
  }
2472
2619
  }
2473
2620
  };
@@ -2504,7 +2651,7 @@ var ClientRaw = (_class4 = class {
2504
2651
  * @returns {ActorHandle<AD>} - A handle to the actor.
2505
2652
  */
2506
2653
  getForId(name, actorId, opts) {
2507
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2654
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2508
2655
  msg: "get handle to actor with id",
2509
2656
  name,
2510
2657
  actorId,
@@ -2530,7 +2677,7 @@ var ClientRaw = (_class4 = class {
2530
2677
  */
2531
2678
  get(name, key, opts) {
2532
2679
  const keyArray = typeof key === "string" ? [key] : key || [];
2533
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2680
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2534
2681
  msg: "get handle to actor",
2535
2682
  name,
2536
2683
  key: keyArray,
@@ -2556,7 +2703,7 @@ var ClientRaw = (_class4 = class {
2556
2703
  */
2557
2704
  getOrCreate(name, key, opts) {
2558
2705
  const keyArray = typeof key === "string" ? [key] : key || [];
2559
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2706
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2560
2707
  msg: "get or create handle to actor",
2561
2708
  name,
2562
2709
  key: keyArray,
@@ -2594,7 +2741,7 @@ var ClientRaw = (_class4 = class {
2594
2741
  key: keyArray
2595
2742
  }
2596
2743
  };
2597
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2744
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2598
2745
  msg: "create actor handle",
2599
2746
  name,
2600
2747
  key: keyArray,
@@ -2602,7 +2749,7 @@ var ClientRaw = (_class4 = class {
2602
2749
  create: createQuery.create
2603
2750
  });
2604
2751
  const { actorId } = await queryActor(void 0, createQuery, this.#driver);
2605
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
2752
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2606
2753
  msg: "created actor with ID",
2607
2754
  name,
2608
2755
  key: keyArray,
@@ -2639,11 +2786,11 @@ var ClientRaw = (_class4 = class {
2639
2786
  */
2640
2787
  async dispose() {
2641
2788
  if (this.#disposed) {
2642
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({ msg: "client already disconnected" });
2789
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({ msg: "client already disconnected" });
2643
2790
  return;
2644
2791
  }
2645
2792
  this.#disposed = true;
2646
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "disposing client" });
2793
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "disposing client" });
2647
2794
  const disposePromises = [];
2648
2795
  for (const conn of this[ACTOR_CONNS_SYMBOL].values()) {
2649
2796
  disposePromises.push(conn.dispose());
@@ -2699,7 +2846,7 @@ function createActorProxy(handle) {
2699
2846
  return Reflect.get(target, prop, receiver);
2700
2847
  }
2701
2848
  if (prop === "constructor" || prop in target) {
2702
- const value = Reflect.get(target, prop, receiver);
2849
+ const value = Reflect.get(target, prop, target);
2703
2850
  if (typeof value === "function") {
2704
2851
  return value.bind(target);
2705
2852
  }
@@ -2757,7 +2904,7 @@ var ActorConnRaw = class {
2757
2904
  #abortController = new AbortController();
2758
2905
  /** If attempting to connect. Helpful for knowing if in a retry loop when reconnecting. */
2759
2906
  #connecting = false;
2760
- // These will only be set on SSE driver
2907
+ // Connection info, used for reconnection and HTTP requests
2761
2908
  #actorId;
2762
2909
  #connectionId;
2763
2910
  #connectionToken;
@@ -2808,10 +2955,10 @@ var ActorConnRaw = class {
2808
2955
  * @returns {Promise<Response>} - A promise that resolves to the response of the action function.
2809
2956
  */
2810
2957
  async action(opts) {
2811
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "action", name: opts.name, args: opts.args });
2958
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "action", name: opts.name, args: opts.args });
2812
2959
  const actionId = this.#actionIdCounter;
2813
2960
  this.#actionIdCounter += 1;
2814
- const { promise, resolve, reject } = Promise.withResolvers();
2961
+ const { promise, resolve, reject } = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
2815
2962
  this.#actionsInFlight.set(actionId, { name: opts.name, resolve, reject });
2816
2963
  this.#sendMessage({
2817
2964
  body: {
@@ -2819,7 +2966,7 @@ var ActorConnRaw = class {
2819
2966
  val: {
2820
2967
  id: BigInt(actionId),
2821
2968
  name: opts.name,
2822
- args: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor5.encode(opts.args))
2969
+ args: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor5.encode(opts.args))
2823
2970
  }
2824
2971
  }
2825
2972
  });
@@ -2848,10 +2995,10 @@ var ActorConnRaw = class {
2848
2995
  minTimeout: 250,
2849
2996
  maxTimeout: 3e4,
2850
2997
  onFailedAttempt: (error) => {
2851
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({
2998
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({
2852
2999
  msg: "failed to reconnect",
2853
3000
  attempt: error.attemptNumber,
2854
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
3001
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
2855
3002
  });
2856
3003
  },
2857
3004
  // Cancel retry if aborted
@@ -2859,7 +3006,7 @@ var ActorConnRaw = class {
2859
3006
  });
2860
3007
  } catch (err) {
2861
3008
  if (err.name === "AbortError") {
2862
- _chunkKG3C7MKRcjs.logger.call(void 0, ).info({ msg: "connection retry aborted" });
3009
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).info({ msg: "connection retry aborted" });
2863
3010
  return;
2864
3011
  } else {
2865
3012
  throw err;
@@ -2871,13 +3018,13 @@ var ActorConnRaw = class {
2871
3018
  try {
2872
3019
  if (this.#onOpenPromise)
2873
3020
  throw new Error("#onOpenPromise already defined");
2874
- this.#onOpenPromise = Promise.withResolvers();
3021
+ this.#onOpenPromise = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
2875
3022
  if (this.#client[TRANSPORT_SYMBOL] === "websocket") {
2876
3023
  await this.#connectWebSocket();
2877
3024
  } else if (this.#client[TRANSPORT_SYMBOL] === "sse") {
2878
3025
  await this.#connectSse();
2879
3026
  } else {
2880
- _chunk5JBFVV4Ccjs.assertUnreachable.call(void 0, this.#client[TRANSPORT_SYMBOL]);
3027
+ _chunk6EUWRXLTcjs.assertUnreachable.call(void 0, this.#client[TRANSPORT_SYMBOL]);
2881
3028
  }
2882
3029
  await this.#onOpenPromise.promise;
2883
3030
  } finally {
@@ -2890,15 +3037,34 @@ var ActorConnRaw = class {
2890
3037
  this.#actorQuery,
2891
3038
  this.#driver
2892
3039
  );
3040
+ const isReconnection = this.#connectionId && this.#connectionToken;
3041
+ if (isReconnection) {
3042
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3043
+ msg: "attempting websocket reconnection",
3044
+ connectionId: this.#connectionId
3045
+ });
3046
+ }
2893
3047
  const ws = await this.#driver.openWebSocket(
2894
- _chunkTCUI5JFEcjs.PATH_CONNECT_WEBSOCKET,
3048
+ _chunkSAZCNSVYcjs.PATH_CONNECT_WEBSOCKET,
2895
3049
  actorId,
2896
3050
  this.#encoding,
2897
- this.#params
3051
+ this.#params,
3052
+ // Pass connection ID and token for reconnection if available
3053
+ isReconnection ? this.#connectionId : void 0,
3054
+ isReconnection ? this.#connectionToken : void 0
2898
3055
  );
3056
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3057
+ msg: "transport set to new websocket",
3058
+ connectionId: this.#connectionId,
3059
+ readyState: ws.readyState,
3060
+ messageQueueLength: this.#messageQueue.length
3061
+ });
2899
3062
  this.#transport = { websocket: ws };
2900
3063
  ws.addEventListener("open", () => {
2901
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "websocket open" });
3064
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3065
+ msg: "client websocket open",
3066
+ connectionId: this.#connectionId
3067
+ });
2902
3068
  });
2903
3069
  ws.addEventListener("message", async (ev) => {
2904
3070
  this.#handleOnMessage(ev.data);
@@ -2917,13 +3083,14 @@ var ActorConnRaw = class {
2917
3083
  this.#actorQuery,
2918
3084
  this.#driver
2919
3085
  );
2920
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "found actor for sse connection", actorId });
3086
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "found actor for sse connection", actorId });
2921
3087
  _invariant2.default.call(void 0, actorId, "Missing actor ID");
2922
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
3088
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2923
3089
  msg: "opening sse connection",
2924
3090
  actorId,
2925
3091
  encoding: this.#encoding
2926
3092
  });
3093
+ const isReconnection = this.#connectionId && this.#connectionToken;
2927
3094
  const eventSource = new EventSource("http://actor/connect/sse", {
2928
3095
  fetch: (input, init) => {
2929
3096
  return this.#driver.sendRequest(
@@ -2932,9 +3099,13 @@ var ActorConnRaw = class {
2932
3099
  ...init,
2933
3100
  headers: {
2934
3101
  ...init == null ? void 0 : init.headers,
2935
- "User-Agent": _chunk5JBFVV4Ccjs.httpUserAgent.call(void 0, ),
2936
- [_chunkTCUI5JFEcjs.HEADER_ENCODING]: this.#encoding,
2937
- ...this.#params !== void 0 ? { [_chunkTCUI5JFEcjs.HEADER_CONN_PARAMS]: JSON.stringify(this.#params) } : {}
3102
+ "User-Agent": _chunk6EUWRXLTcjs.httpUserAgent.call(void 0, ),
3103
+ [_chunkSAZCNSVYcjs.HEADER_ENCODING]: this.#encoding,
3104
+ ...this.#params !== void 0 ? { [_chunkSAZCNSVYcjs.HEADER_CONN_PARAMS]: JSON.stringify(this.#params) } : {},
3105
+ ...isReconnection ? {
3106
+ [_chunkSAZCNSVYcjs.HEADER_CONN_ID]: this.#connectionId,
3107
+ [_chunkSAZCNSVYcjs.HEADER_CONN_TOKEN]: this.#connectionToken
3108
+ } : {}
2938
3109
  }
2939
3110
  })
2940
3111
  );
@@ -2942,6 +3113,7 @@ var ActorConnRaw = class {
2942
3113
  });
2943
3114
  this.#transport = { sse: eventSource };
2944
3115
  eventSource.addEventListener("message", (ev) => {
3116
+ if (ev.type === "ping") return;
2945
3117
  this.#handleOnMessage(ev.data);
2946
3118
  });
2947
3119
  eventSource.addEventListener("error", (ev) => {
@@ -2950,44 +3122,49 @@ var ActorConnRaw = class {
2950
3122
  }
2951
3123
  /** Called by the onopen event from drivers. */
2952
3124
  #handleOnOpen() {
2953
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
3125
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
2954
3126
  msg: "socket open",
2955
- messageQueueLength: this.#messageQueue.length
3127
+ messageQueueLength: this.#messageQueue.length,
3128
+ connectionId: this.#connectionId
2956
3129
  });
2957
3130
  if (this.#onOpenPromise) {
2958
3131
  this.#onOpenPromise.resolve(void 0);
2959
3132
  } else {
2960
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({ msg: "#onOpenPromise is undefined" });
3133
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({ msg: "#onOpenPromise is undefined" });
2961
3134
  }
2962
3135
  for (const eventName of this.#eventSubscriptions.keys()) {
2963
3136
  this.#sendSubscription(eventName, true);
2964
3137
  }
2965
3138
  const queue = this.#messageQueue;
2966
3139
  this.#messageQueue = [];
3140
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3141
+ msg: "flushing message queue",
3142
+ queueLength: queue.length
3143
+ });
2967
3144
  for (const msg of queue) {
2968
3145
  this.#sendMessage(msg);
2969
3146
  }
2970
3147
  }
2971
3148
  /** Called by the onmessage event from drivers. */
2972
3149
  async #handleOnMessage(data) {
2973
- _chunkKG3C7MKRcjs.logger.call(void 0, ).trace({
3150
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).trace({
2974
3151
  msg: "received message",
2975
3152
  dataType: typeof data,
2976
3153
  isBlob: data instanceof Blob,
2977
3154
  isArrayBuffer: data instanceof ArrayBuffer
2978
3155
  });
2979
3156
  const response = await this.#parseMessage(data);
2980
- _chunkKG3C7MKRcjs.logger.call(void 0, ).trace(
2981
- _chunk5JBFVV4Ccjs.getEnvUniversal.call(void 0, "_RIVETKIT_LOG_MESSAGE") ? {
3157
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).trace(
3158
+ _chunk6EUWRXLTcjs.getEnvUniversal.call(void 0, "_RIVETKIT_LOG_MESSAGE") ? {
2982
3159
  msg: "parsed message",
2983
- message: _chunkTCUI5JFEcjs.jsonStringifyCompat.call(void 0, response).substring(0, 100) + "..."
3160
+ message: _chunkSAZCNSVYcjs.jsonStringifyCompat.call(void 0, response).substring(0, 100) + "..."
2984
3161
  } : { msg: "parsed message" }
2985
3162
  );
2986
3163
  if (response.body.tag === "Init") {
2987
3164
  this.#actorId = response.body.val.actorId;
2988
3165
  this.#connectionId = response.body.val.connectionId;
2989
3166
  this.#connectionToken = response.body.val.connectionToken;
2990
- _chunkKG3C7MKRcjs.logger.call(void 0, ).trace({
3167
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).trace({
2991
3168
  msg: "received init message",
2992
3169
  actorId: this.#actorId,
2993
3170
  connectionId: this.#connectionId
@@ -2997,7 +3174,7 @@ var ActorConnRaw = class {
2997
3174
  const { group, code, message, metadata, actionId } = response.body.val;
2998
3175
  if (actionId) {
2999
3176
  const inFlight = this.#takeActionInFlight(Number(actionId));
3000
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({
3177
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({
3001
3178
  msg: "action error",
3002
3179
  actionId,
3003
3180
  actionName: inFlight == null ? void 0 : inFlight.name,
@@ -3008,7 +3185,7 @@ var ActorConnRaw = class {
3008
3185
  });
3009
3186
  inFlight.reject(new ActorError(group, code, message, metadata));
3010
3187
  } else {
3011
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({
3188
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({
3012
3189
  msg: "connection error",
3013
3190
  group,
3014
3191
  code,
@@ -3032,22 +3209,22 @@ var ActorConnRaw = class {
3032
3209
  }
3033
3210
  } else if (response.body.tag === "ActionResponse") {
3034
3211
  const { id: actionId } = response.body.val;
3035
- _chunkKG3C7MKRcjs.logger.call(void 0, ).trace({
3212
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).trace({
3036
3213
  msg: "received action response",
3037
3214
  actionId
3038
3215
  });
3039
3216
  const inFlight = this.#takeActionInFlight(Number(actionId));
3040
- _chunkKG3C7MKRcjs.logger.call(void 0, ).trace({
3217
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).trace({
3041
3218
  msg: "resolving action promise",
3042
3219
  actionId,
3043
3220
  actionName: inFlight == null ? void 0 : inFlight.name
3044
3221
  });
3045
3222
  inFlight.resolve(response.body.val);
3046
3223
  } else if (response.body.tag === "Event") {
3047
- _chunkKG3C7MKRcjs.logger.call(void 0, ).trace({ msg: "received event", name: response.body.val.name });
3224
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).trace({ msg: "received event", name: response.body.val.name });
3048
3225
  this.#dispatchEvent(response.body.val);
3049
3226
  } else {
3050
- _chunk5JBFVV4Ccjs.assertUnreachable.call(void 0, response.body);
3227
+ _chunk6EUWRXLTcjs.assertUnreachable.call(void 0, response.body);
3051
3228
  }
3052
3229
  }
3053
3230
  /** Called by the onclose event from drivers. */
@@ -3056,30 +3233,45 @@ var ActorConnRaw = class {
3056
3233
  this.#onOpenPromise.reject(new Error("Closed"));
3057
3234
  }
3058
3235
  const closeEvent = event;
3059
- if (closeEvent.wasClean) {
3060
- _chunkKG3C7MKRcjs.logger.call(void 0, ).info({
3061
- msg: "socket closed",
3062
- code: closeEvent.code,
3063
- reason: closeEvent.reason,
3064
- wasClean: closeEvent.wasClean
3065
- });
3066
- } else {
3067
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({
3068
- msg: "socket closed",
3069
- code: closeEvent.code,
3070
- reason: closeEvent.reason,
3071
- wasClean: closeEvent.wasClean
3236
+ const wasClean = closeEvent.wasClean;
3237
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).info({
3238
+ msg: "socket closed",
3239
+ code: closeEvent.code,
3240
+ reason: closeEvent.reason,
3241
+ wasClean,
3242
+ connectionId: this.#connectionId,
3243
+ messageQueueLength: this.#messageQueue.length,
3244
+ actionsInFlight: this.#actionsInFlight.size
3245
+ });
3246
+ if (this.#actionsInFlight.size > 0) {
3247
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3248
+ msg: "rejecting in-flight actions after disconnect",
3249
+ count: this.#actionsInFlight.size,
3250
+ connectionId: this.#connectionId,
3251
+ wasClean
3072
3252
  });
3253
+ const disconnectError = new Error(
3254
+ wasClean ? "Connection closed" : "Connection lost"
3255
+ );
3256
+ for (const actionInfo of this.#actionsInFlight.values()) {
3257
+ actionInfo.reject(disconnectError);
3258
+ }
3259
+ this.#actionsInFlight.clear();
3073
3260
  }
3074
3261
  this.#transport = void 0;
3075
3262
  if (!this.#disposed && !this.#connecting) {
3263
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3264
+ msg: "triggering reconnect",
3265
+ connectionId: this.#connectionId,
3266
+ messageQueueLength: this.#messageQueue.length
3267
+ });
3076
3268
  this.#connectWithRetry();
3077
3269
  }
3078
3270
  }
3079
3271
  /** Called by the onerror event from drivers. */
3080
3272
  #handleOnError() {
3081
3273
  if (this.#disposed) return;
3082
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn("socket error");
3274
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn("socket error");
3083
3275
  }
3084
3276
  #takeActionInFlight(id) {
3085
3277
  const inFlight = this.#actionsInFlight.get(id);
@@ -3109,9 +3301,9 @@ var ActorConnRaw = class {
3109
3301
  try {
3110
3302
  handler(error);
3111
3303
  } catch (err) {
3112
- _chunkKG3C7MKRcjs.logger.call(void 0, ).error({
3304
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).error({
3113
3305
  msg: "error in connection error handler",
3114
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, err)
3306
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, err)
3115
3307
  });
3116
3308
  }
3117
3309
  }
@@ -3176,33 +3368,49 @@ var ActorConnRaw = class {
3176
3368
  };
3177
3369
  }
3178
3370
  #sendMessage(message, opts) {
3371
+ var _a, _b;
3179
3372
  if (this.#disposed) {
3180
3373
  throw new ActorConnDisposed();
3181
3374
  }
3182
3375
  let queueMessage = false;
3183
3376
  if (!this.#transport) {
3377
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "no transport, queueing message" });
3184
3378
  queueMessage = true;
3185
3379
  } else if ("websocket" in this.#transport) {
3186
- if (this.#transport.websocket.readyState === 1) {
3380
+ const readyState = this.#transport.websocket.readyState;
3381
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3382
+ msg: "websocket send attempt",
3383
+ readyState,
3384
+ readyStateString: readyState === 0 ? "CONNECTING" : readyState === 1 ? "OPEN" : readyState === 2 ? "CLOSING" : "CLOSED",
3385
+ connectionId: this.#connectionId,
3386
+ messageType: message.body.tag,
3387
+ actionName: (_a = message.body.val) == null ? void 0 : _a.name
3388
+ });
3389
+ if (readyState === 1) {
3187
3390
  try {
3188
- const messageSerialized = _chunkTCUI5JFEcjs.serializeWithEncoding.call(void 0,
3391
+ const messageSerialized = _chunkSAZCNSVYcjs.serializeWithEncoding.call(void 0,
3189
3392
  this.#encoding,
3190
3393
  message,
3191
- _chunkNTCUGYSDcjs.TO_SERVER_VERSIONED
3394
+ _chunkDFS77KAAcjs.TO_SERVER_VERSIONED
3192
3395
  );
3193
3396
  this.#transport.websocket.send(messageSerialized);
3194
- _chunkKG3C7MKRcjs.logger.call(void 0, ).trace({
3397
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).trace({
3195
3398
  msg: "sent websocket message",
3196
3399
  len: messageLength(messageSerialized)
3197
3400
  });
3198
3401
  } catch (error) {
3199
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({
3402
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({
3200
3403
  msg: "failed to send message, added to queue",
3201
- error
3404
+ error,
3405
+ connectionId: this.#connectionId
3202
3406
  });
3203
3407
  queueMessage = true;
3204
3408
  }
3205
3409
  } else {
3410
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3411
+ msg: "websocket not open, queueing message",
3412
+ readyState
3413
+ });
3206
3414
  queueMessage = true;
3207
3415
  }
3208
3416
  } else if ("sse" in this.#transport) {
@@ -3212,24 +3420,30 @@ var ActorConnRaw = class {
3212
3420
  queueMessage = true;
3213
3421
  }
3214
3422
  } else {
3215
- _chunk5JBFVV4Ccjs.assertUnreachable.call(void 0, this.#transport);
3423
+ _chunk6EUWRXLTcjs.assertUnreachable.call(void 0, this.#transport);
3216
3424
  }
3217
3425
  if (!(opts == null ? void 0 : opts.ephemeral) && queueMessage) {
3218
3426
  this.#messageQueue.push(message);
3219
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "queued connection message" });
3427
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3428
+ msg: "queued connection message",
3429
+ queueLength: this.#messageQueue.length,
3430
+ connectionId: this.#connectionId,
3431
+ messageType: message.body.tag,
3432
+ actionName: (_b = message.body.val) == null ? void 0 : _b.name
3433
+ });
3220
3434
  }
3221
3435
  }
3222
3436
  async #sendHttpMessage(message, opts) {
3223
3437
  try {
3224
3438
  if (!this.#actorId || !this.#connectionId || !this.#connectionToken)
3225
3439
  throw new InternalError2("Missing connection ID or token.");
3226
- _chunkKG3C7MKRcjs.logger.call(void 0, ).trace(
3227
- _chunk5JBFVV4Ccjs.getEnvUniversal.call(void 0, "_RIVETKIT_LOG_MESSAGE") ? {
3440
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).trace(
3441
+ _chunk6EUWRXLTcjs.getEnvUniversal.call(void 0, "_RIVETKIT_LOG_MESSAGE") ? {
3228
3442
  msg: "sent http message",
3229
- message: `${_chunkTCUI5JFEcjs.jsonStringifyCompat.call(void 0, message).substring(0, 100)}...`
3443
+ message: `${_chunkSAZCNSVYcjs.jsonStringifyCompat.call(void 0, message).substring(0, 100)}...`
3230
3444
  } : { msg: "sent http message" }
3231
3445
  );
3232
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({
3446
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({
3233
3447
  msg: "sending http message",
3234
3448
  actorId: this.#actorId,
3235
3449
  connectionId: this.#connectionId
@@ -3238,19 +3452,19 @@ var ActorConnRaw = class {
3238
3452
  url: "http://actor/connections/message",
3239
3453
  method: "POST",
3240
3454
  headers: {
3241
- [_chunkTCUI5JFEcjs.HEADER_ENCODING]: this.#encoding,
3242
- [_chunkTCUI5JFEcjs.HEADER_CONN_ID]: this.#connectionId,
3243
- [_chunkTCUI5JFEcjs.HEADER_CONN_TOKEN]: this.#connectionToken
3455
+ [_chunkSAZCNSVYcjs.HEADER_ENCODING]: this.#encoding,
3456
+ [_chunkSAZCNSVYcjs.HEADER_CONN_ID]: this.#connectionId,
3457
+ [_chunkSAZCNSVYcjs.HEADER_CONN_TOKEN]: this.#connectionToken
3244
3458
  },
3245
3459
  body: message,
3246
3460
  encoding: this.#encoding,
3247
3461
  skipParseResponse: true,
3248
3462
  customFetch: this.#driver.sendRequest.bind(this.#driver, this.#actorId),
3249
- requestVersionedDataHandler: _chunkNTCUGYSDcjs.TO_SERVER_VERSIONED,
3250
- responseVersionedDataHandler: _chunkNTCUGYSDcjs.TO_CLIENT_VERSIONED
3463
+ requestVersionedDataHandler: _chunkDFS77KAAcjs.TO_SERVER_VERSIONED,
3464
+ responseVersionedDataHandler: _chunkDFS77KAAcjs.TO_CLIENT_VERSIONED
3251
3465
  });
3252
3466
  } catch (error) {
3253
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({ msg: "failed to send message, added to queue", error });
3467
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({ msg: "failed to send message, added to queue", error });
3254
3468
  if (!(opts == null ? void 0 : opts.ephemeral)) {
3255
3469
  this.#messageQueue.unshift(message);
3256
3470
  }
@@ -3258,7 +3472,7 @@ var ActorConnRaw = class {
3258
3472
  }
3259
3473
  async #parseMessage(data) {
3260
3474
  _invariant2.default.call(void 0, this.#transport, "transport must be defined");
3261
- if (_chunkTCUI5JFEcjs.encodingIsBinary.call(void 0, this.#encoding) && "sse" in this.#transport) {
3475
+ if (_chunkSAZCNSVYcjs.encodingIsBinary.call(void 0, this.#encoding) && "sse" in this.#transport) {
3262
3476
  if (typeof data === "string") {
3263
3477
  const binaryString = atob(data);
3264
3478
  data = new Uint8Array(
@@ -3270,8 +3484,22 @@ var ActorConnRaw = class {
3270
3484
  );
3271
3485
  }
3272
3486
  }
3273
- const buffer = await _chunkNTCUGYSDcjs.inputDataToBuffer.call(void 0, data);
3274
- return _chunkTCUI5JFEcjs.deserializeWithEncoding.call(void 0, this.#encoding, buffer, _chunkNTCUGYSDcjs.TO_CLIENT_VERSIONED);
3487
+ const buffer = await _chunkDFS77KAAcjs.inputDataToBuffer.call(void 0, data);
3488
+ return _chunkSAZCNSVYcjs.deserializeWithEncoding.call(void 0, this.#encoding, buffer, _chunkDFS77KAAcjs.TO_CLIENT_VERSIONED);
3489
+ }
3490
+ /**
3491
+ * Get the actor ID (for testing purposes).
3492
+ * @internal
3493
+ */
3494
+ get actorId() {
3495
+ return this.#actorId;
3496
+ }
3497
+ /**
3498
+ * Get the connection ID (for testing purposes).
3499
+ * @internal
3500
+ */
3501
+ get connectionId() {
3502
+ return this.#connectionId;
3275
3503
  }
3276
3504
  /**
3277
3505
  * Disconnects from the actor.
@@ -3280,11 +3508,11 @@ var ActorConnRaw = class {
3280
3508
  */
3281
3509
  async dispose() {
3282
3510
  if (this.#disposed) {
3283
- _chunkKG3C7MKRcjs.logger.call(void 0, ).warn({ msg: "connection already disconnected" });
3511
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({ msg: "connection already disconnected" });
3284
3512
  return;
3285
3513
  }
3286
3514
  this.#disposed = true;
3287
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "disposing actor conn" });
3515
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "disposing actor conn" });
3288
3516
  clearInterval(this.#keepNodeAliveInterval);
3289
3517
  this.#abortController.abort();
3290
3518
  this.#client[ACTOR_CONNS_SYMBOL].delete(this);
@@ -3292,20 +3520,42 @@ var ActorConnRaw = class {
3292
3520
  } else if ("websocket" in this.#transport) {
3293
3521
  const ws = this.#transport.websocket;
3294
3522
  if (ws.readyState === 2 || ws.readyState === 3) {
3295
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "ws already closed or closing" });
3523
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "ws already closed or closing" });
3296
3524
  } else {
3297
- const { promise, resolve } = Promise.withResolvers();
3525
+ const { promise, resolve } = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
3298
3526
  ws.addEventListener("close", () => {
3299
- _chunkKG3C7MKRcjs.logger.call(void 0, ).debug({ msg: "ws closed" });
3527
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).debug({ msg: "ws closed" });
3300
3528
  resolve(void 0);
3301
3529
  });
3302
3530
  ws.close();
3303
3531
  await promise;
3304
3532
  }
3305
3533
  } else if ("sse" in this.#transport) {
3534
+ if (this.#connectionId && this.#connectionToken) {
3535
+ try {
3536
+ await sendHttpRequest({
3537
+ url: "http://actor/connections/close",
3538
+ method: "POST",
3539
+ headers: {
3540
+ [_chunkSAZCNSVYcjs.HEADER_CONN_ID]: this.#connectionId,
3541
+ [_chunkSAZCNSVYcjs.HEADER_CONN_TOKEN]: this.#connectionToken
3542
+ },
3543
+ encoding: this.#encoding,
3544
+ skipParseResponse: true,
3545
+ customFetch: this.#driver.sendRequest.bind(
3546
+ this.#driver,
3547
+ this.#actorId
3548
+ ),
3549
+ requestVersionedDataHandler: _chunkDFS77KAAcjs.TO_SERVER_VERSIONED,
3550
+ responseVersionedDataHandler: _chunkDFS77KAAcjs.TO_CLIENT_VERSIONED
3551
+ });
3552
+ } catch (error) {
3553
+ _chunkK4ENQCC4cjs.logger.call(void 0, ).warn({ msg: "failed to send close request", error });
3554
+ }
3555
+ }
3306
3556
  this.#transport.sse.close();
3307
3557
  } else {
3308
- _chunk5JBFVV4Ccjs.assertUnreachable.call(void 0, this.#transport);
3558
+ _chunk6EUWRXLTcjs.assertUnreachable.call(void 0, this.#transport);
3309
3559
  }
3310
3560
  this.#transport = void 0;
3311
3561
  }
@@ -3331,7 +3581,7 @@ var ActorConnRaw = class {
3331
3581
 
3332
3582
  // src/remote-manager-driver/log.ts
3333
3583
  function logger2() {
3334
- return _chunkMRRT2CZDcjs.getLogger.call(void 0, "remote-manager-driver");
3584
+ return _chunk3MBP4WNCcjs.getLogger.call(void 0, "remote-manager-driver");
3335
3585
  }
3336
3586
 
3337
3587
  // src/remote-manager-driver/api-utils.ts
@@ -3348,14 +3598,20 @@ function getEndpoint(config) {
3348
3598
  }
3349
3599
  async function apiCall(config, method, path, body) {
3350
3600
  const endpoint = getEndpoint(config);
3351
- const url = _chunk5JBFVV4Ccjs.combineUrlPath.call(void 0, endpoint, path, {
3601
+ const url = _chunk6EUWRXLTcjs.combineUrlPath.call(void 0, endpoint, path, {
3352
3602
  namespace: config.namespace
3353
3603
  });
3354
3604
  logger2().debug({ msg: "making api call", method, url });
3605
+ const headers = {
3606
+ ...config.headers
3607
+ };
3608
+ if (config.token) {
3609
+ headers.Authorization = `Bearer ${config.token}`;
3610
+ }
3355
3611
  return await sendHttpRequest({
3356
3612
  method,
3357
3613
  url,
3358
- headers: {},
3614
+ headers,
3359
3615
  body,
3360
3616
  encoding: "json",
3361
3617
  skipParseResponse: false,
@@ -3368,20 +3624,23 @@ async function apiCall(config, method, path, body) {
3368
3624
  async function sendHttpRequestToActor(runConfig, actorId, actorRequest) {
3369
3625
  const url = new URL(actorRequest.url);
3370
3626
  const endpoint = getEndpoint(runConfig);
3371
- const guardUrl = _chunk5JBFVV4Ccjs.combineUrlPath.call(void 0, endpoint, url.pathname + url.search);
3627
+ const guardUrl = _chunk6EUWRXLTcjs.combineUrlPath.call(void 0, endpoint, url.pathname + url.search);
3372
3628
  let bodyToSend = null;
3373
- const guardHeaders = buildGuardHeadersForHttp(actorRequest, actorId);
3374
- if (actorRequest.body && actorRequest.method !== "GET" && actorRequest.method !== "HEAD") {
3629
+ const guardHeaders = buildGuardHeadersForHttp(
3630
+ runConfig,
3631
+ actorRequest,
3632
+ actorId
3633
+ );
3634
+ if (actorRequest.method !== "GET" && actorRequest.method !== "HEAD") {
3375
3635
  if (actorRequest.bodyUsed) {
3376
3636
  throw new Error("Request body has already been consumed");
3377
3637
  }
3378
- const clonedRequest = actorRequest.clone();
3379
- bodyToSend = await clonedRequest.arrayBuffer();
3380
- guardHeaders.delete("transfer-encoding");
3381
- guardHeaders.set(
3382
- "content-length",
3383
- String(bodyToSend.byteLength)
3384
- );
3638
+ const reqBody = await actorRequest.arrayBuffer();
3639
+ if (reqBody.byteLength !== 0) {
3640
+ bodyToSend = reqBody;
3641
+ guardHeaders.delete("transfer-encoding");
3642
+ guardHeaders.set("content-length", String(bodyToSend.byteLength));
3643
+ }
3385
3644
  }
3386
3645
  const guardRequest = new Request(guardUrl, {
3387
3646
  method: actorRequest.method,
@@ -3394,71 +3653,92 @@ async function sendHttpRequestToActor(runConfig, actorId, actorRequest) {
3394
3653
  function mutableResponse(fetchRes) {
3395
3654
  return new Response(fetchRes.body, fetchRes);
3396
3655
  }
3397
- function buildGuardHeadersForHttp(actorRequest, actorId) {
3656
+ function buildGuardHeadersForHttp(runConfig, actorRequest, actorId) {
3398
3657
  const headers = new Headers();
3399
3658
  for (const [key, value] of actorRequest.headers.entries()) {
3400
3659
  headers.set(key, value);
3401
3660
  }
3402
- headers.set("x-rivet-target", "actor");
3403
- headers.set("x-rivet-actor", actorId);
3404
- headers.set("x-rivet-port", "main");
3661
+ for (const [key, value] of Object.entries(runConfig.headers)) {
3662
+ headers.set(key, value);
3663
+ }
3664
+ headers.set(_chunkSAZCNSVYcjs.HEADER_RIVET_TARGET, "actor");
3665
+ headers.set(_chunkSAZCNSVYcjs.HEADER_RIVET_ACTOR, actorId);
3666
+ if (runConfig.token) {
3667
+ headers.set(_chunkSAZCNSVYcjs.HEADER_RIVET_TOKEN, runConfig.token);
3668
+ }
3405
3669
  return headers;
3406
3670
  }
3407
3671
 
3408
3672
  // src/remote-manager-driver/actor-websocket-client.ts
3409
- async function openWebSocketToActor(runConfig, path, actorId, encoding, params) {
3410
- const WebSocket2 = await _chunkKG3C7MKRcjs.importWebSocket.call(void 0, );
3673
+ async function openWebSocketToActor(runConfig, path, actorId, encoding, params, connId, connToken) {
3674
+ const WebSocket2 = await _chunkK4ENQCC4cjs.importWebSocket.call(void 0, );
3411
3675
  const endpoint = getEndpoint(runConfig);
3412
- const guardUrl = _chunk5JBFVV4Ccjs.combineUrlPath.call(void 0, endpoint, path);
3676
+ const guardUrl = _chunk6EUWRXLTcjs.combineUrlPath.call(void 0, endpoint, path);
3413
3677
  logger2().debug({
3414
3678
  msg: "opening websocket to actor via guard",
3415
3679
  actorId,
3416
3680
  path,
3417
3681
  guardUrl
3418
3682
  });
3419
- const ws = new WebSocket2(guardUrl, {
3420
- headers: buildGuardHeadersForWebSocket(actorId, encoding, params)
3421
- });
3683
+ const ws = new WebSocket2(
3684
+ guardUrl,
3685
+ buildWebSocketProtocols(
3686
+ runConfig,
3687
+ actorId,
3688
+ encoding,
3689
+ params,
3690
+ connId,
3691
+ connToken
3692
+ )
3693
+ );
3422
3694
  ws.binaryType = "arraybuffer";
3423
3695
  logger2().debug({ msg: "websocket connection opened", actorId });
3424
3696
  return ws;
3425
3697
  }
3426
- function buildGuardHeadersForWebSocket(actorId, encoding, params, authData) {
3427
- const headers = {};
3428
- headers["x-rivet-target"] = "actor";
3429
- headers["x-rivet-actor"] = actorId;
3430
- headers["x-rivet-port"] = "main";
3431
- headers[_chunkTCUI5JFEcjs.HEADER_ENCODING] = encoding;
3698
+ function buildWebSocketProtocols(runConfig, actorId, encoding, params, connId, connToken) {
3699
+ const protocols = [];
3700
+ protocols.push(_chunkSAZCNSVYcjs.WS_PROTOCOL_STANDARD);
3701
+ protocols.push(`${_chunkSAZCNSVYcjs.WS_PROTOCOL_TARGET}actor`);
3702
+ protocols.push(`${_chunkSAZCNSVYcjs.WS_PROTOCOL_ACTOR}${actorId}`);
3703
+ protocols.push(`${_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING}${encoding}`);
3704
+ if (runConfig.token) {
3705
+ protocols.push(`${_chunkSAZCNSVYcjs.WS_PROTOCOL_TOKEN}${runConfig.token}`);
3706
+ }
3432
3707
  if (params) {
3433
- headers[_chunkTCUI5JFEcjs.HEADER_CONN_PARAMS] = JSON.stringify(params);
3708
+ protocols.push(
3709
+ `${_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS}${encodeURIComponent(JSON.stringify(params))}`
3710
+ );
3434
3711
  }
3435
- if (authData) {
3436
- headers[_chunkTCUI5JFEcjs.HEADER_AUTH_DATA] = JSON.stringify(authData);
3712
+ if (connId) {
3713
+ protocols.push(`${_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_ID}${connId}`);
3437
3714
  }
3438
- return headers;
3715
+ if (connToken) {
3716
+ protocols.push(`${_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_TOKEN}${connToken}`);
3717
+ }
3718
+ return protocols;
3439
3719
  }
3440
3720
 
3441
3721
  // src/remote-manager-driver/api-endpoints.ts
3442
- async function getActor(config, actorId) {
3722
+ async function getActor(config, name, actorId) {
3443
3723
  return apiCall(
3444
3724
  config,
3445
3725
  "GET",
3446
- `/actors/${encodeURIComponent(actorId)}`
3726
+ `/actors?name=${name}&actor_ids=${encodeURIComponent(actorId)}`
3447
3727
  );
3448
3728
  }
3449
- async function getActorById(config, name, key) {
3729
+ async function getActorByKey(config, name, key) {
3450
3730
  const serializedKey = serializeActorKey(key);
3451
3731
  return apiCall(
3452
3732
  config,
3453
3733
  "GET",
3454
- `/actors/by-id?name=${encodeURIComponent(name)}&key=${encodeURIComponent(serializedKey)}`
3734
+ `/actors?name=${encodeURIComponent(name)}&key=${encodeURIComponent(serializedKey)}`
3455
3735
  );
3456
3736
  }
3457
- async function getOrCreateActorById(config, request) {
3737
+ async function getOrCreateActor(config, request) {
3458
3738
  return apiCall(
3459
3739
  config,
3460
3740
  "PUT",
3461
- `/actors/by-id`,
3741
+ `/actors`,
3462
3742
  request
3463
3743
  );
3464
3744
  }
@@ -3479,13 +3759,8 @@ async function destroyActor(config, actorId) {
3479
3759
  }
3480
3760
 
3481
3761
  // src/remote-manager-driver/ws-proxy.ts
3482
- async function createWebSocketProxy(c, targetUrl, headers) {
3483
- const WebSocket2 = await _chunkKG3C7MKRcjs.importWebSocket.call(void 0, );
3484
- for (const [k, v] of c.req.raw.headers.entries()) {
3485
- if (!k.startsWith("sec-") && k !== "connection" && k !== "upgrade") {
3486
- headers[k] = v;
3487
- }
3488
- }
3762
+ async function createWebSocketProxy(c, targetUrl, protocols) {
3763
+ const WebSocket2 = await _chunkK4ENQCC4cjs.importWebSocket.call(void 0, );
3489
3764
  const state = {};
3490
3765
  return {
3491
3766
  onOpen: async (event, clientWs) => {
@@ -3498,7 +3773,7 @@ async function createWebSocketProxy(c, targetUrl, headers) {
3498
3773
  });
3499
3774
  return;
3500
3775
  }
3501
- const targetWs = new WebSocket2(targetUrl, { headers });
3776
+ const targetWs = new WebSocket2(targetUrl, protocols);
3502
3777
  state.targetWs = targetWs;
3503
3778
  state.connectPromise = new Promise((resolve, reject) => {
3504
3779
  targetWs.addEventListener("open", () => {
@@ -3545,7 +3820,7 @@ async function createWebSocketProxy(c, targetUrl, headers) {
3545
3820
  logger2().error({
3546
3821
  msg: "target websocket error",
3547
3822
  targetUrl,
3548
- error: _chunk5JBFVV4Ccjs.stringifyError.call(void 0, error)
3823
+ error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
3549
3824
  });
3550
3825
  closeWebSocketIfOpen(clientWs, 1011, "Target WebSocket error");
3551
3826
  });
@@ -3620,31 +3895,26 @@ var RemoteManagerDriver = class {
3620
3895
  name,
3621
3896
  actorId
3622
3897
  }) {
3623
- try {
3624
- const response = await getActor(this.#config, actorId);
3625
- if (response.actor.name !== name) {
3626
- logger2().debug({
3627
- msg: "actor name mismatch from api",
3628
- actorId,
3629
- apiName: response.actor.name,
3630
- requestedName: name
3631
- });
3632
- return void 0;
3633
- }
3634
- const keyRaw = response.actor.key;
3635
- _invariant2.default.call(void 0, keyRaw, `actor ${actorId} should have key`);
3636
- const key = deserializeActorKey(keyRaw);
3637
- return {
3898
+ const response = await getActor(this.#config, name, actorId);
3899
+ const actor = response.actors[0];
3900
+ if (!actor) return void 0;
3901
+ if (actor.name !== name) {
3902
+ logger2().debug({
3903
+ msg: "actor name mismatch from api",
3638
3904
  actorId,
3639
- name,
3640
- key
3641
- };
3642
- } catch (error) {
3643
- if (error instanceof EngineApiError && error.group === "actor" && error.code === "not_found") {
3644
- return void 0;
3645
- }
3646
- throw error;
3905
+ apiName: actor.name,
3906
+ requestedName: name
3907
+ });
3908
+ return void 0;
3647
3909
  }
3910
+ const keyRaw = actor.key;
3911
+ _invariant2.default.call(void 0, keyRaw, `actor ${actorId} should have key`);
3912
+ const key = deserializeActorKey(keyRaw);
3913
+ return {
3914
+ actorId,
3915
+ name,
3916
+ key
3917
+ };
3648
3918
  }
3649
3919
  async getWithKey({
3650
3920
  c,
@@ -3653,11 +3923,10 @@ var RemoteManagerDriver = class {
3653
3923
  }) {
3654
3924
  logger2().debug({ msg: "getWithKey: searching for actor", name, key });
3655
3925
  try {
3656
- const response = await getActorById(this.#config, name, key);
3657
- if (!response.actor_id) {
3658
- return void 0;
3659
- }
3660
- const actorId = response.actor_id;
3926
+ const response = await getActorByKey(this.#config, name, key);
3927
+ const actor = response.actors[0];
3928
+ if (!actor) return void 0;
3929
+ const actorId = actor.actor_id;
3661
3930
  logger2().debug({
3662
3931
  msg: "getWithKey: found actor via api",
3663
3932
  actorId,
@@ -3683,20 +3952,20 @@ var RemoteManagerDriver = class {
3683
3952
  name,
3684
3953
  key
3685
3954
  });
3686
- const response = await getOrCreateActorById(this.#config, {
3955
+ const { actor, created } = await getOrCreateActor(this.#config, {
3687
3956
  name,
3688
3957
  key: serializeActorKey(key),
3689
3958
  runner_name_selector: this.#config.runnerName,
3690
- input: input ? cbor6.encode(actorInput).toString("base64") : void 0,
3959
+ input: actorInput ? cbor6.encode(actorInput).toString("base64") : void 0,
3691
3960
  crash_policy: "sleep"
3692
3961
  });
3693
- const actorId = response.actor_id;
3962
+ const actorId = actor.actor_id;
3694
3963
  logger2().info({
3695
3964
  msg: "getOrCreateWithKey: actor ready",
3696
3965
  actorId,
3697
3966
  name,
3698
3967
  key,
3699
- created: response.created
3968
+ created
3700
3969
  });
3701
3970
  return {
3702
3971
  actorId,
@@ -3734,24 +4003,26 @@ var RemoteManagerDriver = class {
3734
4003
  async sendRequest(actorId, actorRequest) {
3735
4004
  return await sendHttpRequestToActor(this.#config, actorId, actorRequest);
3736
4005
  }
3737
- async openWebSocket(path, actorId, encoding, params) {
4006
+ async openWebSocket(path, actorId, encoding, params, connId, connToken) {
3738
4007
  return await openWebSocketToActor(
3739
4008
  this.#config,
3740
4009
  path,
3741
4010
  actorId,
3742
4011
  encoding,
3743
- params
4012
+ params,
4013
+ connId,
4014
+ connToken
3744
4015
  );
3745
4016
  }
3746
4017
  async proxyRequest(_c, actorRequest, actorId) {
3747
4018
  return await sendHttpRequestToActor(this.#config, actorId, actorRequest);
3748
4019
  }
3749
- async proxyWebSocket(c, path, actorId, encoding, params, authData) {
4020
+ async proxyWebSocket(c, path, actorId, encoding, params, connId, connToken) {
3750
4021
  var _a, _b;
3751
4022
  const upgradeWebSocket = (_b = (_a = this.#config).getUpgradeWebSocket) == null ? void 0 : _b.call(_a);
3752
4023
  _invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
3753
4024
  const endpoint = getEndpoint(this.#config);
3754
- const guardUrl = _chunk5JBFVV4Ccjs.combineUrlPath.call(void 0, endpoint, path);
4025
+ const guardUrl = _chunk6EUWRXLTcjs.combineUrlPath.call(void 0, endpoint, path);
3755
4026
  const wsGuardUrl = guardUrl.replace("http://", "ws://");
3756
4027
  logger2().debug({
3757
4028
  msg: "forwarding websocket to actor via guard",
@@ -3759,18 +4030,23 @@ var RemoteManagerDriver = class {
3759
4030
  path,
3760
4031
  guardUrl
3761
4032
  });
3762
- const headers = buildGuardHeadersForWebSocket(
4033
+ const protocols = buildWebSocketProtocols(
4034
+ this.#config,
3763
4035
  actorId,
3764
4036
  encoding,
3765
4037
  params,
3766
- authData
4038
+ connId,
4039
+ connToken
3767
4040
  );
3768
- const args = await createWebSocketProxy(c, wsGuardUrl, headers);
3769
- return await upgradeWebSocket(() => args)(c, _chunk5JBFVV4Ccjs.noopNext.call(void 0, ));
4041
+ const args = await createWebSocketProxy(c, wsGuardUrl, protocols);
4042
+ return await upgradeWebSocket(() => args)(c, _chunk6EUWRXLTcjs.noopNext.call(void 0, ));
3770
4043
  }
3771
4044
  displayInformation() {
3772
4045
  return { name: "Remote", properties: {} };
3773
4046
  }
4047
+ getOrCreateInspectorAccessToken() {
4048
+ return _chunkSAZCNSVYcjs.generateRandomString.call(void 0, );
4049
+ }
3774
4050
  };
3775
4051
 
3776
4052
 
@@ -3791,6 +4067,5 @@ var RemoteManagerDriver = class {
3791
4067
 
3792
4068
 
3793
4069
 
3794
-
3795
- exports.generateConnId = generateConnId; exports.generateConnToken = generateConnToken; exports.CONNECTION_DRIVER_WEBSOCKET = CONNECTION_DRIVER_WEBSOCKET; exports.CONNECTION_DRIVER_SSE = CONNECTION_DRIVER_SSE; exports.CONNECTION_DRIVER_HTTP = CONNECTION_DRIVER_HTTP; exports.createActorInspectorRouter = createActorInspectorRouter; exports.deserializeActorKey = deserializeActorKey; exports.ActorDefinition = ActorDefinition; exports.lookupInRegistry = lookupInRegistry; exports.ActorClientError = ActorClientError; exports.InternalError = InternalError2; exports.ManagerError = ManagerError; exports.MalformedResponseMessage = MalformedResponseMessage; exports.ActorError = ActorError; exports.ActorConnRaw = ActorConnRaw; exports.ActorHandleRaw = ActorHandleRaw; exports.createClientWithDriver = createClientWithDriver; exports.RemoteManagerDriver = RemoteManagerDriver;
3796
- //# sourceMappingURL=chunk-UFWAK3X2.cjs.map
4070
+ exports.generateConnId = generateConnId; exports.generateConnToken = generateConnToken; exports.generateConnSocketId = generateConnSocketId; exports.createActorInspectorRouter = createActorInspectorRouter; exports.serializeActorKey = serializeActorKey; exports.deserializeActorKey = deserializeActorKey; exports.ActorDefinition = ActorDefinition; exports.lookupInRegistry = lookupInRegistry; exports.ActorClientError = ActorClientError; exports.InternalError = InternalError2; exports.ManagerError = ManagerError; exports.MalformedResponseMessage = MalformedResponseMessage; exports.ActorError = ActorError; exports.ActorConnRaw = ActorConnRaw; exports.ActorHandleRaw = ActorHandleRaw; exports.createClientWithDriver = createClientWithDriver; exports.RemoteManagerDriver = RemoteManagerDriver;
4071
+ //# sourceMappingURL=chunk-5ZOHIKWG.cjs.map