rivetkit 2.0.3 → 2.0.5

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 (237) hide show
  1. package/README.md +11 -0
  2. package/dist/schemas/actor-persist/v1.ts +21 -24
  3. package/dist/schemas/client-protocol/v1.ts +6 -0
  4. package/dist/tsup/actor/errors.cjs +10 -2
  5. package/dist/tsup/actor/errors.cjs.map +1 -1
  6. package/dist/tsup/actor/errors.d.cts +17 -4
  7. package/dist/tsup/actor/errors.d.ts +17 -4
  8. package/dist/tsup/actor/errors.js +11 -3
  9. package/dist/tsup/{chunk-4NSUQZ2H.js → chunk-2MD57QF4.js} +119 -115
  10. package/dist/tsup/chunk-2MD57QF4.js.map +1 -0
  11. package/dist/tsup/{chunk-GIR3AFFI.cjs → chunk-5QGQK44L.cjs} +103 -44
  12. package/dist/tsup/chunk-5QGQK44L.cjs.map +1 -0
  13. package/dist/tsup/chunk-5YTI25C3.cjs +250 -0
  14. package/dist/tsup/chunk-5YTI25C3.cjs.map +1 -0
  15. package/dist/tsup/chunk-B2QGJGZQ.js +338 -0
  16. package/dist/tsup/chunk-B2QGJGZQ.js.map +1 -0
  17. package/dist/tsup/{chunk-3H7O2A7I.js → chunk-CFFKMUYH.js} +61 -22
  18. package/dist/tsup/chunk-CFFKMUYH.js.map +1 -0
  19. package/dist/tsup/{chunk-FLMTTN27.js → chunk-CKA54YQN.js} +15 -8
  20. package/dist/tsup/chunk-CKA54YQN.js.map +1 -0
  21. package/dist/tsup/chunk-D7NWUCRK.cjs +20 -0
  22. package/dist/tsup/chunk-D7NWUCRK.cjs.map +1 -0
  23. package/dist/tsup/{chunk-FCCPJNMA.cjs → chunk-FGFT4FVX.cjs} +12 -27
  24. package/dist/tsup/chunk-FGFT4FVX.cjs.map +1 -0
  25. package/dist/tsup/chunk-I5VTWPHW.js +20 -0
  26. package/dist/tsup/chunk-I5VTWPHW.js.map +1 -0
  27. package/dist/tsup/{chunk-6WKQDDUD.cjs → chunk-IRMBWX36.cjs} +146 -142
  28. package/dist/tsup/chunk-IRMBWX36.cjs.map +1 -0
  29. package/dist/tsup/chunk-L7QRXNWP.js +6562 -0
  30. package/dist/tsup/chunk-L7QRXNWP.js.map +1 -0
  31. package/dist/tsup/{chunk-R2OPSKIV.cjs → chunk-LZIBTLEY.cjs} +20 -13
  32. package/dist/tsup/chunk-LZIBTLEY.cjs.map +1 -0
  33. package/dist/tsup/chunk-MRZS2J4X.cjs +6562 -0
  34. package/dist/tsup/chunk-MRZS2J4X.cjs.map +1 -0
  35. package/dist/tsup/{chunk-PO4VLDWA.js → chunk-PG3K2LI7.js} +3 -5
  36. package/dist/tsup/chunk-PG3K2LI7.js.map +1 -0
  37. package/dist/tsup/{chunk-TZJKSBUQ.cjs → chunk-PHSQJ6QI.cjs} +3 -5
  38. package/dist/tsup/chunk-PHSQJ6QI.cjs.map +1 -0
  39. package/dist/tsup/chunk-RM2SVURR.cjs +338 -0
  40. package/dist/tsup/chunk-RM2SVURR.cjs.map +1 -0
  41. package/dist/tsup/{chunk-OGAPU3UG.cjs → chunk-WADSS5X4.cjs} +66 -27
  42. package/dist/tsup/chunk-WADSS5X4.cjs.map +1 -0
  43. package/dist/tsup/chunk-WNGOBAA7.js +250 -0
  44. package/dist/tsup/chunk-WNGOBAA7.js.map +1 -0
  45. package/dist/tsup/{chunk-INGJP237.js → chunk-YPZFLUO6.js} +103 -44
  46. package/dist/tsup/chunk-YPZFLUO6.js.map +1 -0
  47. package/dist/tsup/{chunk-6PDXBYI5.js → chunk-YW6Y6VNE.js} +8 -23
  48. package/dist/tsup/chunk-YW6Y6VNE.js.map +1 -0
  49. package/dist/tsup/client/mod.cjs +10 -10
  50. package/dist/tsup/client/mod.d.cts +7 -13
  51. package/dist/tsup/client/mod.d.ts +7 -13
  52. package/dist/tsup/client/mod.js +9 -9
  53. package/dist/tsup/common/log.cjs +12 -4
  54. package/dist/tsup/common/log.cjs.map +1 -1
  55. package/dist/tsup/common/log.d.cts +23 -17
  56. package/dist/tsup/common/log.d.ts +23 -17
  57. package/dist/tsup/common/log.js +15 -7
  58. package/dist/tsup/common/websocket.cjs +5 -5
  59. package/dist/tsup/common/websocket.js +4 -4
  60. package/dist/tsup/{common-CpqORuCq.d.cts → common-CXCe7s6i.d.cts} +2 -2
  61. package/dist/tsup/{common-CpqORuCq.d.ts → common-CXCe7s6i.d.ts} +2 -2
  62. package/dist/tsup/{connection-BwUMoe6n.d.ts → connection-BvE-Oq7t.d.ts} +215 -234
  63. package/dist/tsup/{connection-BR_Ve4ku.d.cts → connection-DTzmWwU5.d.cts} +215 -234
  64. package/dist/tsup/driver-helpers/mod.cjs +6 -9
  65. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  66. package/dist/tsup/driver-helpers/mod.d.cts +5 -6
  67. package/dist/tsup/driver-helpers/mod.d.ts +5 -6
  68. package/dist/tsup/driver-helpers/mod.js +6 -9
  69. package/dist/tsup/driver-test-suite/mod.cjs +615 -1357
  70. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  71. package/dist/tsup/driver-test-suite/mod.d.cts +12 -6
  72. package/dist/tsup/driver-test-suite/mod.d.ts +12 -6
  73. package/dist/tsup/driver-test-suite/mod.js +1334 -2076
  74. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  75. package/dist/tsup/inspector/mod.cjs +6 -8
  76. package/dist/tsup/inspector/mod.cjs.map +1 -1
  77. package/dist/tsup/inspector/mod.d.cts +3 -3
  78. package/dist/tsup/inspector/mod.d.ts +3 -3
  79. package/dist/tsup/inspector/mod.js +8 -10
  80. package/dist/tsup/mod.cjs +9 -15
  81. package/dist/tsup/mod.cjs.map +1 -1
  82. package/dist/tsup/mod.d.cts +47 -42
  83. package/dist/tsup/mod.d.ts +47 -42
  84. package/dist/tsup/mod.js +10 -16
  85. package/dist/tsup/{router-endpoints-DAbqVFx2.d.ts → router-endpoints-CctffZNL.d.cts} +2 -3
  86. package/dist/tsup/{router-endpoints-AYkXG8Tl.d.cts → router-endpoints-DFm1BglJ.d.ts} +2 -3
  87. package/dist/tsup/test/mod.cjs +10 -14
  88. package/dist/tsup/test/mod.cjs.map +1 -1
  89. package/dist/tsup/test/mod.d.cts +4 -5
  90. package/dist/tsup/test/mod.d.ts +4 -5
  91. package/dist/tsup/test/mod.js +9 -13
  92. package/dist/tsup/{utils-CT0cv4jd.d.ts → utils-fwx3o3K9.d.cts} +1 -0
  93. package/dist/tsup/{utils-CT0cv4jd.d.cts → utils-fwx3o3K9.d.ts} +1 -0
  94. package/dist/tsup/utils.cjs +5 -3
  95. package/dist/tsup/utils.cjs.map +1 -1
  96. package/dist/tsup/utils.d.cts +19 -2
  97. package/dist/tsup/utils.d.ts +19 -2
  98. package/dist/tsup/utils.js +4 -2
  99. package/package.json +6 -6
  100. package/src/actor/action.ts +1 -5
  101. package/src/actor/config.ts +27 -295
  102. package/src/actor/connection.ts +9 -12
  103. package/src/actor/context.ts +1 -4
  104. package/src/actor/definition.ts +7 -11
  105. package/src/actor/errors.ts +98 -36
  106. package/src/actor/generic-conn-driver.ts +28 -16
  107. package/src/actor/instance.ts +177 -133
  108. package/src/actor/log.ts +4 -13
  109. package/src/actor/mod.ts +0 -5
  110. package/src/actor/protocol/old.ts +42 -26
  111. package/src/actor/protocol/serde.ts +1 -1
  112. package/src/actor/router-endpoints.ts +47 -39
  113. package/src/actor/router.ts +22 -19
  114. package/src/actor/unstable-react.ts +1 -1
  115. package/src/actor/utils.ts +6 -2
  116. package/src/client/actor-common.ts +1 -1
  117. package/src/client/actor-conn.ts +152 -91
  118. package/src/client/actor-handle.ts +85 -25
  119. package/src/client/actor-query.ts +65 -0
  120. package/src/client/client.ts +29 -98
  121. package/src/client/config.ts +44 -0
  122. package/src/client/errors.ts +1 -0
  123. package/src/client/log.ts +2 -4
  124. package/src/client/mod.ts +16 -12
  125. package/src/client/raw-utils.ts +82 -25
  126. package/src/client/utils.ts +5 -3
  127. package/src/common/fake-event-source.ts +10 -9
  128. package/src/common/inline-websocket-adapter2.ts +39 -30
  129. package/src/common/log.ts +176 -101
  130. package/src/common/logfmt.ts +21 -30
  131. package/src/common/router.ts +12 -19
  132. package/src/common/utils.ts +27 -13
  133. package/src/common/websocket.ts +0 -1
  134. package/src/driver-helpers/mod.ts +1 -1
  135. package/src/driver-test-suite/log.ts +1 -3
  136. package/src/driver-test-suite/mod.ts +87 -61
  137. package/src/driver-test-suite/test-inline-client-driver.ts +441 -255
  138. package/src/driver-test-suite/tests/actor-error-handling.ts +4 -12
  139. package/src/driver-test-suite/tests/actor-handle.ts +33 -0
  140. package/src/driver-test-suite/tests/actor-inspector.ts +2 -1
  141. package/src/driver-test-suite/tests/manager-driver.ts +5 -3
  142. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -226
  143. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -392
  144. package/src/driver-test-suite/tests/request-access.ts +112 -126
  145. package/src/driver-test-suite/utils.ts +10 -6
  146. package/src/drivers/default.ts +7 -4
  147. package/src/drivers/engine/actor-driver.ts +22 -13
  148. package/src/drivers/engine/config.ts +2 -10
  149. package/src/drivers/engine/kv.ts +1 -1
  150. package/src/drivers/engine/log.ts +1 -3
  151. package/src/drivers/engine/mod.ts +2 -3
  152. package/src/drivers/file-system/actor.ts +1 -1
  153. package/src/drivers/file-system/global-state.ts +36 -21
  154. package/src/drivers/file-system/log.ts +1 -3
  155. package/src/drivers/file-system/manager.ts +33 -15
  156. package/src/inspector/config.ts +9 -4
  157. package/src/inspector/log.ts +1 -1
  158. package/src/inspector/manager.ts +2 -2
  159. package/src/inspector/utils.ts +1 -1
  160. package/src/manager/driver.ts +10 -2
  161. package/src/manager/hono-websocket-adapter.ts +21 -12
  162. package/src/manager/log.ts +2 -4
  163. package/src/manager/mod.ts +1 -1
  164. package/src/manager/router.ts +378 -1390
  165. package/src/manager-api/routes/actors-create.ts +16 -0
  166. package/src/manager-api/routes/actors-delete.ts +4 -0
  167. package/src/manager-api/routes/actors-get-by-id.ts +7 -0
  168. package/src/manager-api/routes/actors-get-or-create-by-id.ts +29 -0
  169. package/src/manager-api/routes/actors-get.ts +7 -0
  170. package/src/manager-api/routes/common.ts +18 -0
  171. package/src/mod.ts +0 -2
  172. package/src/registry/config.ts +1 -1
  173. package/src/registry/log.ts +2 -4
  174. package/src/registry/mod.ts +63 -34
  175. package/src/registry/run-config.ts +39 -26
  176. package/src/registry/serve.ts +4 -5
  177. package/src/remote-manager-driver/actor-http-client.ts +74 -0
  178. package/src/remote-manager-driver/actor-websocket-client.ts +64 -0
  179. package/src/remote-manager-driver/api-endpoints.ts +79 -0
  180. package/src/remote-manager-driver/api-utils.ts +46 -0
  181. package/src/remote-manager-driver/log.ts +5 -0
  182. package/src/remote-manager-driver/mod.ts +275 -0
  183. package/src/{drivers/engine → remote-manager-driver}/ws-proxy.ts +24 -14
  184. package/src/serde.ts +8 -2
  185. package/src/test/log.ts +1 -3
  186. package/src/test/mod.ts +17 -16
  187. package/src/utils.ts +53 -0
  188. package/dist/tsup/chunk-2CRLFV6Z.cjs +0 -202
  189. package/dist/tsup/chunk-2CRLFV6Z.cjs.map +0 -1
  190. package/dist/tsup/chunk-3H7O2A7I.js.map +0 -1
  191. package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
  192. package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
  193. package/dist/tsup/chunk-4NSUQZ2H.js.map +0 -1
  194. package/dist/tsup/chunk-6PDXBYI5.js.map +0 -1
  195. package/dist/tsup/chunk-6WKQDDUD.cjs.map +0 -1
  196. package/dist/tsup/chunk-CTBOSFUH.cjs +0 -116
  197. package/dist/tsup/chunk-CTBOSFUH.cjs.map +0 -1
  198. package/dist/tsup/chunk-EGVZZFE2.js +0 -2857
  199. package/dist/tsup/chunk-EGVZZFE2.js.map +0 -1
  200. package/dist/tsup/chunk-FCCPJNMA.cjs.map +0 -1
  201. package/dist/tsup/chunk-FLMTTN27.js.map +0 -1
  202. package/dist/tsup/chunk-GIR3AFFI.cjs.map +0 -1
  203. package/dist/tsup/chunk-INGJP237.js.map +0 -1
  204. package/dist/tsup/chunk-KJCJLKRM.js +0 -116
  205. package/dist/tsup/chunk-KJCJLKRM.js.map +0 -1
  206. package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
  207. package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
  208. package/dist/tsup/chunk-O2MBYIXO.cjs +0 -2857
  209. package/dist/tsup/chunk-O2MBYIXO.cjs.map +0 -1
  210. package/dist/tsup/chunk-OGAPU3UG.cjs.map +0 -1
  211. package/dist/tsup/chunk-OV6AYD4S.js +0 -4406
  212. package/dist/tsup/chunk-OV6AYD4S.js.map +0 -1
  213. package/dist/tsup/chunk-PO4VLDWA.js.map +0 -1
  214. package/dist/tsup/chunk-R2OPSKIV.cjs.map +0 -1
  215. package/dist/tsup/chunk-TZJKSBUQ.cjs.map +0 -1
  216. package/dist/tsup/chunk-UBUC5C3G.cjs +0 -189
  217. package/dist/tsup/chunk-UBUC5C3G.cjs.map +0 -1
  218. package/dist/tsup/chunk-UIM22YJL.cjs +0 -4406
  219. package/dist/tsup/chunk-UIM22YJL.cjs.map +0 -1
  220. package/dist/tsup/chunk-URVFQMYI.cjs +0 -230
  221. package/dist/tsup/chunk-URVFQMYI.cjs.map +0 -1
  222. package/dist/tsup/chunk-UVUPOS46.js +0 -230
  223. package/dist/tsup/chunk-UVUPOS46.js.map +0 -1
  224. package/dist/tsup/chunk-VRRHBNJC.js +0 -189
  225. package/dist/tsup/chunk-VRRHBNJC.js.map +0 -1
  226. package/dist/tsup/chunk-XFSS33EQ.js +0 -202
  227. package/dist/tsup/chunk-XFSS33EQ.js.map +0 -1
  228. package/src/client/http-client-driver.ts +0 -326
  229. package/src/driver-test-suite/tests/actor-auth.ts +0 -591
  230. package/src/drivers/engine/api-endpoints.ts +0 -128
  231. package/src/drivers/engine/api-utils.ts +0 -70
  232. package/src/drivers/engine/manager-driver.ts +0 -391
  233. package/src/inline-client-driver/log.ts +0 -7
  234. package/src/inline-client-driver/mod.ts +0 -385
  235. package/src/manager/auth.ts +0 -121
  236. /package/src/{drivers/engine → actor}/keys.test.ts +0 -0
  237. /package/src/{drivers/engine → actor}/keys.ts +0 -0
@@ -7,7 +7,7 @@ import {
7
7
  } from "@/actor/router-endpoints";
8
8
  import { HttpResponseError } from "@/schemas/client-protocol/mod";
9
9
  import { HTTP_RESPONSE_ERROR_VERSIONED } from "@/schemas/client-protocol/versioned";
10
- import { serializeWithEncoding } from "@/serde";
10
+ import { encodingIsBinary, serializeWithEncoding } from "@/serde";
11
11
  import { bufferToArrayBuffer } from "@/utils";
12
12
  import { getLogger, type Logger } from "./log";
13
13
  import { deconstructError, stringifyError } from "./utils";
@@ -25,7 +25,8 @@ export function loggerMiddleware(logger: Logger) {
25
25
  await next();
26
26
 
27
27
  const duration = Date.now() - startTime;
28
- logger.debug("http request", {
28
+ logger.debug({
29
+ msg: "http request",
29
30
  method,
30
31
  path,
31
32
  status: c.res.status,
@@ -41,19 +42,10 @@ export function handleRouteNotFound(c: HonoContext) {
41
42
  return c.text("Not Found (RivetKit)", 404);
42
43
  }
43
44
 
44
- export interface HandleRouterErrorOpts {
45
- enableExposeInternalError?: boolean;
46
- }
47
-
48
- export function handleRouteError(
49
- opts: HandleRouterErrorOpts,
50
- error: unknown,
51
- c: HonoContext,
52
- ) {
53
- const exposeInternalError =
54
- opts.enableExposeInternalError && getRequestExposeInternalError(c.req.raw);
45
+ export function handleRouteError(error: unknown, c: HonoContext) {
46
+ const exposeInternalError = getRequestExposeInternalError(c.req.raw);
55
47
 
56
- const { statusCode, code, message, metadata } = deconstructError(
48
+ const { statusCode, group, code, message, metadata } = deconstructError(
57
49
  error,
58
50
  logger(),
59
51
  {
@@ -66,19 +58,20 @@ export function handleRouteError(
66
58
  let encoding: Encoding;
67
59
  try {
68
60
  encoding = getRequestEncoding(c.req);
69
- } catch (err) {
70
- logger().debug("failed to extract encoding", {
71
- error: stringifyError(err),
72
- });
61
+ } catch (_) {
73
62
  encoding = "json";
74
63
  }
75
64
 
76
65
  const output = serializeWithEncoding(
77
66
  encoding,
78
67
  {
68
+ group,
79
69
  code,
80
70
  message,
81
- metadata: bufferToArrayBuffer(cbor.encode(metadata)),
71
+ // TODO: Cannot serialize non-binary meta since it requires ArrayBuffer atm
72
+ metadata: encodingIsBinary(encoding)
73
+ ? bufferToArrayBuffer(cbor.encode(metadata))
74
+ : null,
82
75
  },
83
76
  HTTP_RESPONSE_ERROR_VERSIONED,
84
77
  );
@@ -186,6 +186,7 @@ export interface DeconstructedError {
186
186
  __type: "ActorError";
187
187
  statusCode: ContentfulStatusCode;
188
188
  public: boolean;
189
+ group: string;
189
190
  code: string;
190
191
  message: string;
191
192
  metadata?: unknown;
@@ -203,6 +204,7 @@ export function deconstructError(
203
204
  // We log the error here instead of after generating the code & message because we need to log the original error, not the masked internal error.
204
205
  let statusCode: ContentfulStatusCode;
205
206
  let public_: boolean;
207
+ let group: string;
206
208
  let code: string;
207
209
  let message: string;
208
210
  let metadata: unknown;
@@ -212,60 +214,71 @@ export function deconstructError(
212
214
  "statusCode" in error && error.statusCode ? error.statusCode : 400
213
215
  ) as ContentfulStatusCode;
214
216
  public_ = true;
217
+ group = error.group;
215
218
  code = error.code;
216
219
  message = getErrorMessage(error);
217
220
  metadata = error.metadata;
218
221
 
219
- logger.info("public error", {
222
+ logger.info({
223
+ msg: "public error",
224
+ group,
220
225
  code,
221
226
  message,
222
- issues: "https://github.com/rivet-gg/rivetkit/issues",
223
- support: "https://rivet.gg/discord",
227
+ issues: "https://github.com/rivet-dev/rivetkit/issues",
228
+ support: "https://rivet.dev/discord",
224
229
  ...extraLog,
225
230
  });
226
231
  } else if (exposeInternalError) {
227
232
  if (errors.ActorError.isActorError(error)) {
228
233
  statusCode = 500;
229
234
  public_ = false;
235
+ group = error.group;
230
236
  code = error.code;
231
237
  message = getErrorMessage(error);
232
238
  metadata = error.metadata;
233
239
 
234
- logger.info("internal error", {
240
+ logger.info({
241
+ msg: "internal error",
242
+ group,
235
243
  code,
236
244
  message,
237
- issues: "https://github.com/rivet-gg/rivetkit/issues",
238
- support: "https://rivet.gg/discord",
245
+ issues: "https://github.com/rivet-dev/rivetkit/issues",
246
+ support: "https://rivet.dev/discord",
239
247
  ...extraLog,
240
248
  });
241
249
  } else {
242
250
  statusCode = 500;
243
251
  public_ = false;
252
+ group = "internal";
244
253
  code = errors.INTERNAL_ERROR_CODE;
245
254
  message = getErrorMessage(error);
246
255
 
247
- logger.info("internal error", {
256
+ logger.info({
257
+ msg: "internal error",
258
+ group,
248
259
  code,
249
260
  message,
250
- issues: "https://github.com/rivet-gg/rivetkit/issues",
251
- support: "https://rivet.gg/discord",
261
+ issues: "https://github.com/rivet-dev/rivetkit/issues",
262
+ support: "https://rivet.dev/discord",
252
263
  ...extraLog,
253
264
  });
254
265
  }
255
266
  } else {
256
267
  statusCode = 500;
257
268
  public_ = false;
269
+ group = "internal";
258
270
  code = errors.INTERNAL_ERROR_CODE;
259
271
  message = errors.INTERNAL_ERROR_DESCRIPTION;
260
272
  metadata = {
261
- //url: `https://hub.rivet.gg/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`,
273
+ //url: `https://hub.rivet.dev/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`,
262
274
  } satisfies errors.InternalErrorMetadata;
263
275
 
264
- logger.warn("internal error", {
276
+ logger.warn({
277
+ msg: "internal error",
265
278
  error: getErrorMessage(error),
266
279
  stack: (error as Error)?.stack,
267
- issues: "https://github.com/rivet-gg/rivetkit/issues",
268
- support: "https://rivet.gg/discord",
280
+ issues: "https://github.com/rivet-dev/rivetkit/issues",
281
+ support: "https://rivet.dev/discord",
269
282
  ...extraLog,
270
283
  });
271
284
  }
@@ -274,6 +287,7 @@ export function deconstructError(
274
287
  __type: "ActorError",
275
288
  statusCode,
276
289
  public: public_,
290
+ group,
277
291
  code,
278
292
  message,
279
293
  metadata,
@@ -16,7 +16,6 @@ export async function importWebSocket(): Promise<typeof WebSocket> {
16
16
  if (typeof WebSocket !== "undefined") {
17
17
  // Browser environment
18
18
  _WebSocket = WebSocket as unknown as typeof WebSocket;
19
- logger().debug("using native websocket");
20
19
  } else {
21
20
  // Node.js environment
22
21
  try {
@@ -8,7 +8,6 @@ export {
8
8
  HEADER_CONN_PARAMS,
9
9
  HEADER_CONN_TOKEN,
10
10
  HEADER_ENCODING,
11
- HEADER_EXPOSE_INTERNAL_ERROR,
12
11
  } from "@/actor/router-endpoints";
13
12
  export type {
14
13
  ActorOutput,
@@ -16,6 +15,7 @@ export type {
16
15
  GetForIdInput,
17
16
  GetOrCreateWithKeyInput,
18
17
  GetWithKeyInput,
18
+ ManagerDisplayInformation,
19
19
  ManagerDriver,
20
20
  } from "@/manager/driver";
21
21
  export { DriverConfigSchema, RunConfigSchema } from "@/registry/run-config";
@@ -1,7 +1,5 @@
1
1
  import { getLogger } from "@/common/log";
2
2
 
3
- export const LOGGER_NAME = "test-suite";
4
-
5
3
  export function logger() {
6
- return getLogger(LOGGER_NAME);
4
+ return getLogger("test-suite");
7
5
  }
@@ -4,13 +4,12 @@ import { bundleRequire } from "bundle-require";
4
4
  import invariant from "invariant";
5
5
  import { describe } from "vitest";
6
6
  import type { Transport } from "@/client/mod";
7
- import { createInlineClientDriver } from "@/inline-client-driver/mod";
8
7
  import { createManagerRouter } from "@/manager/router";
9
8
  import type { DriverConfig, Registry, RunConfig } from "@/mod";
10
9
  import { RunConfigSchema } from "@/registry/run-config";
11
10
  import { getPort } from "@/test/mod";
11
+ import { logger } from "./log";
12
12
  import { runActionFeaturesTests } from "./tests/action-features";
13
- import { runActorAuthTests } from "./tests/actor-auth";
14
13
  import { runActorConnTests } from "./tests/actor-conn";
15
14
  import { runActorConnStateTests } from "./tests/actor-conn-state";
16
15
  import {
@@ -26,10 +25,8 @@ import { runActorOnStateChangeTests } from "./tests/actor-onstatechange";
26
25
  import { runActorVarsTests } from "./tests/actor-vars";
27
26
  import { runManagerDriverTests } from "./tests/manager-driver";
28
27
  import { runRawHttpTests } from "./tests/raw-http";
29
- import { runRawHttpDirectRegistryTests } from "./tests/raw-http-direct-registry";
30
28
  import { runRawHttpRequestPropertiesTests } from "./tests/raw-http-request-properties";
31
29
  import { runRawWebSocketTests } from "./tests/raw-websocket";
32
- import { runRawWebSocketDirectRegistryTests } from "./tests/raw-websocket-direct-registry";
33
30
  import { runRequestAccessTests } from "./tests/request-access";
34
31
 
35
32
  export interface SkipTests {
@@ -39,7 +36,7 @@ export interface SkipTests {
39
36
 
40
37
  export interface DriverTestConfig {
41
38
  /** Deploys an registry and returns the connection endpoint. */
42
- start(projectDir: string): Promise<DriverDeployOutput>;
39
+ start(): Promise<DriverDeployOutput>;
43
40
 
44
41
  /**
45
42
  * If we're testing with an external system, we should use real timers
@@ -68,6 +65,8 @@ type ClientType = "http" | "inline";
68
65
 
69
66
  export interface DriverDeployOutput {
70
67
  endpoint: string;
68
+ namespace: string;
69
+ runnerName: string;
71
70
 
72
71
  /** Cleans up the test. */
73
72
  cleanup(): Promise<void>;
@@ -114,8 +113,6 @@ export function runDriverTests(
114
113
 
115
114
  runActorErrorHandlingTests(driverTestConfig);
116
115
 
117
- runActorAuthTests(driverTestConfig);
118
-
119
116
  runActorInlineClientTests(driverTestConfig);
120
117
 
121
118
  runRawHttpTests(driverTestConfig);
@@ -124,9 +121,11 @@ export function runDriverTests(
124
121
 
125
122
  runRawWebSocketTests(driverTestConfig);
126
123
 
127
- runRawHttpDirectRegistryTests(driverTestConfig);
124
+ // TODO: re-expose this once we can have actor queries on the gateway
125
+ // runRawHttpDirectRegistryTests(driverTestConfig);
128
126
 
129
- runRawWebSocketDirectRegistryTests(driverTestConfig);
127
+ // TODO: re-expose this once we can have actor queries on the gateway
128
+ // runRawWebSocketDirectRegistryTests(driverTestConfig);
130
129
 
131
130
  runActorInspectorTests(driverTestConfig);
132
131
  });
@@ -141,6 +140,7 @@ export function runDriverTests(
141
140
  export async function createTestRuntime(
142
141
  registryPath: string,
143
142
  driverFactory: (registry: Registry<any>) => Promise<{
143
+ rivetEngine?: { endpoint: string; namespace: string; runnerName: string };
144
144
  driver: DriverConfig;
145
145
  cleanup?: () => Promise<void>;
146
146
  }>,
@@ -156,58 +156,84 @@ export async function createTestRuntime(
156
156
  registry.config.test.enabled = true;
157
157
 
158
158
  // Build drivers
159
- const { driver, cleanup: driverCleanup } = await driverFactory(registry);
160
-
161
- // Build driver config
162
- let injectWebSocket: NodeWebSocket["injectWebSocket"] | undefined;
163
- let upgradeWebSocket: any;
164
- const config: RunConfig = RunConfigSchema.parse({
159
+ const {
165
160
  driver,
166
- getUpgradeWebSocket: () => upgradeWebSocket!,
167
- inspector: {
168
- enabled: true,
169
- token: () => "token",
170
- },
171
- });
161
+ cleanup: driverCleanup,
162
+ rivetEngine,
163
+ } = await driverFactory(registry);
172
164
 
173
- // Create router
174
- const managerDriver = driver.manager(registry.config, config);
175
- const inlineDriver = createInlineClientDriver(managerDriver);
176
- const { router } = createManagerRouter(
177
- registry.config,
178
- config,
179
- inlineDriver,
180
- managerDriver,
181
- false,
182
- );
183
-
184
- // Inject WebSocket
185
- const nodeWebSocket = createNodeWebSocket({ app: router });
186
- upgradeWebSocket = nodeWebSocket.upgradeWebSocket;
187
- injectWebSocket = nodeWebSocket.injectWebSocket;
188
-
189
- // Start server
190
- const port = await getPort();
191
- const server = honoServe({
192
- fetch: router.fetch,
193
- hostname: "127.0.0.1",
194
- port,
195
- });
196
- invariant(injectWebSocket !== undefined, "should have injectWebSocket");
197
- injectWebSocket(server);
198
- const endpoint = `http://127.0.0.1:${port}`;
199
-
200
- // Cleanup
201
- const cleanup = async () => {
202
- // Stop server
203
- await new Promise((resolve) => server.close(() => resolve(undefined)));
204
-
205
- // Extra cleanup
206
- await driverCleanup?.();
207
- };
208
-
209
- return {
210
- endpoint,
211
- cleanup,
212
- };
165
+ if (rivetEngine) {
166
+ // TODO: We don't need createTestRuntime fort his
167
+ // Using external Rivet engine
168
+
169
+ const cleanup = async () => {
170
+ await driverCleanup?.();
171
+ };
172
+
173
+ return {
174
+ endpoint: rivetEngine.endpoint,
175
+ namespace: rivetEngine.namespace,
176
+ runnerName: rivetEngine.runnerName,
177
+ cleanup,
178
+ };
179
+ } else {
180
+ // Start server for Rivet engine
181
+
182
+ // Build driver config
183
+ // biome-ignore lint/style/useConst: Assigned later
184
+ let upgradeWebSocket: any;
185
+ const config: RunConfig = RunConfigSchema.parse({
186
+ driver,
187
+ getUpgradeWebSocket: () => upgradeWebSocket!,
188
+ inspector: {
189
+ enabled: true,
190
+ token: () => "token",
191
+ },
192
+ });
193
+
194
+ // Create router
195
+ const managerDriver = driver.manager(registry.config, config);
196
+ const { router } = createManagerRouter(
197
+ registry.config,
198
+ config,
199
+ managerDriver,
200
+ false,
201
+ );
202
+
203
+ // Inject WebSocket
204
+ const nodeWebSocket = createNodeWebSocket({ app: router });
205
+ upgradeWebSocket = nodeWebSocket.upgradeWebSocket;
206
+
207
+ // Start server
208
+ const port = await getPort();
209
+ const server = honoServe({
210
+ fetch: router.fetch,
211
+ hostname: "127.0.0.1",
212
+ port,
213
+ });
214
+ invariant(
215
+ nodeWebSocket.injectWebSocket !== undefined,
216
+ "should have injectWebSocket",
217
+ );
218
+ nodeWebSocket.injectWebSocket(server);
219
+ const serverEndpoint = `http://127.0.0.1:${port}`;
220
+
221
+ logger().info({ msg: "test serer listening", port });
222
+
223
+ // Cleanup
224
+ const cleanup = async () => {
225
+ // Stop server
226
+ await new Promise((resolve) => server.close(() => resolve(undefined)));
227
+
228
+ // Extra cleanup
229
+ await driverCleanup?.();
230
+ };
231
+
232
+ return {
233
+ endpoint: serverEndpoint,
234
+ namespace: "default",
235
+ runnerName: "rivetkit",
236
+ cleanup,
237
+ };
238
+ }
213
239
  }