rivetkit 2.3.0-rc.8 → 2.3.0

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 (221) hide show
  1. package/dist/browser/client.d.ts +481 -74
  2. package/dist/browser/client.js +174 -148
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +47 -18
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/actor/errors.cjs +2 -2
  7. package/dist/tsup/actor/errors.d.cts +1 -1
  8. package/dist/tsup/actor/errors.d.ts +1 -1
  9. package/dist/tsup/actor/errors.js +1 -1
  10. package/dist/tsup/agent-os/index.cjs +2160 -2086
  11. package/dist/tsup/agent-os/index.cjs.map +1 -1
  12. package/dist/tsup/agent-os/index.d.cts +479 -73
  13. package/dist/tsup/agent-os/index.d.ts +479 -73
  14. package/dist/tsup/agent-os/index.js +2160 -2086
  15. package/dist/tsup/agent-os/index.js.map +1 -1
  16. package/dist/tsup/{chunk-KY3CERZR.js → chunk-2OTRTA3J.js} +7 -21
  17. package/dist/tsup/chunk-2OTRTA3J.js.map +1 -0
  18. package/dist/tsup/{chunk-HGW6PBWR.cjs → chunk-3677IIOV.cjs} +11 -25
  19. package/dist/tsup/chunk-3677IIOV.cjs.map +1 -0
  20. package/dist/tsup/{chunk-OT7FF6GB.cjs → chunk-47HHIEXH.cjs} +24 -9
  21. package/dist/tsup/chunk-47HHIEXH.cjs.map +1 -0
  22. package/dist/tsup/{chunk-EMFKMVJR.js → chunk-4JDSFJS5.js} +69 -58
  23. package/dist/tsup/chunk-4JDSFJS5.js.map +1 -0
  24. package/dist/tsup/{chunk-7HLFSAJP.cjs → chunk-7QKCIVAY.cjs} +225 -214
  25. package/dist/tsup/chunk-7QKCIVAY.cjs.map +1 -0
  26. package/dist/tsup/{chunk-AWTPTUQ7.cjs → chunk-B6VUNZUD.cjs} +10 -10
  27. package/dist/tsup/{chunk-AWTPTUQ7.cjs.map → chunk-B6VUNZUD.cjs.map} +1 -1
  28. package/dist/tsup/{chunk-D3T3ZBSY.js → chunk-BEI24WTI.js} +2 -2
  29. package/dist/tsup/{chunk-TMLOKTRB.js → chunk-BRP62GZC.js} +1 -1
  30. package/dist/tsup/chunk-BRP62GZC.js.map +1 -0
  31. package/dist/tsup/{chunk-D5G75T7J.js → chunk-DPIMKYNB.js} +61 -2
  32. package/dist/tsup/chunk-DPIMKYNB.js.map +1 -0
  33. package/dist/tsup/{chunk-BATTOVHF.cjs → chunk-DXXJPH55.cjs} +40 -13
  34. package/dist/tsup/chunk-DXXJPH55.cjs.map +1 -0
  35. package/dist/tsup/{chunk-3YY5S6TV.js → chunk-HXUEHHJF.js} +2 -2
  36. package/dist/tsup/chunk-HXUEHHJF.js.map +1 -0
  37. package/dist/tsup/{chunk-4BPKKZJO.cjs → chunk-I4LN3FNT.cjs} +10 -10
  38. package/dist/tsup/chunk-I4LN3FNT.cjs.map +1 -0
  39. package/dist/tsup/{chunk-PCBNKI2J.js → chunk-JZ7TWV65.js} +1 -1
  40. package/dist/tsup/chunk-JZ7TWV65.js.map +1 -0
  41. package/dist/tsup/{chunk-63WNTDRC.cjs → chunk-KORQB2IR.cjs} +1 -1
  42. package/dist/tsup/{chunk-63WNTDRC.cjs.map → chunk-KORQB2IR.cjs.map} +1 -1
  43. package/dist/tsup/{chunk-6TQSSJ4F.cjs → chunk-LVTBW2RE.cjs} +3 -3
  44. package/dist/tsup/{chunk-6TQSSJ4F.cjs.map → chunk-LVTBW2RE.cjs.map} +1 -1
  45. package/dist/tsup/{chunk-4JU3IPG2.js → chunk-MEHBWPLJ.js} +6 -6
  46. package/dist/tsup/chunk-MEHBWPLJ.js.map +1 -0
  47. package/dist/tsup/{chunk-SRNOPUC6.cjs → chunk-NIY3RSPX.cjs} +62 -3
  48. package/dist/tsup/chunk-NIY3RSPX.cjs.map +1 -0
  49. package/dist/tsup/{chunk-UZXQEGVJ.js → chunk-P2GNQ4RN.js} +4 -4
  50. package/dist/tsup/{chunk-UZXQEGVJ.js.map → chunk-P2GNQ4RN.js.map} +1 -1
  51. package/dist/tsup/{chunk-VUGENVIK.js → chunk-UMZVD6DQ.js} +22 -7
  52. package/dist/tsup/chunk-UMZVD6DQ.js.map +1 -0
  53. package/dist/tsup/{chunk-LD5YASJU.cjs → chunk-VE2X4KMG.cjs} +2 -2
  54. package/dist/tsup/{chunk-LD5YASJU.cjs.map → chunk-VE2X4KMG.cjs.map} +1 -1
  55. package/dist/tsup/{chunk-GBG63SUG.js → chunk-VTTFNQQI.js} +32 -5
  56. package/dist/tsup/chunk-VTTFNQQI.js.map +1 -0
  57. package/dist/tsup/{chunk-2NDZ7JCR.cjs → chunk-ZA7FLHKH.cjs} +1 -1
  58. package/dist/tsup/chunk-ZA7FLHKH.cjs.map +1 -0
  59. package/dist/tsup/client/mod.cjs +9 -9
  60. package/dist/tsup/client/mod.d.cts +5 -5
  61. package/dist/tsup/client/mod.d.ts +5 -5
  62. package/dist/tsup/client/mod.js +8 -8
  63. package/dist/tsup/common/log.cjs +3 -3
  64. package/dist/tsup/common/log.js +2 -2
  65. package/dist/tsup/common/websocket.cjs +4 -4
  66. package/dist/tsup/common/websocket.js +3 -3
  67. package/dist/tsup/{config-Ak1lv4gF.d.ts → config-BxWAw3iH.d.ts} +512 -27
  68. package/dist/tsup/{config-DU_xj4qZ.d.cts → config-CZQQ-mso.d.cts} +512 -27
  69. package/dist/tsup/{config-CxjGYf4K.d.ts → config-D49x8NpL.d.cts} +1 -2
  70. package/dist/tsup/{config-CxjGYf4K.d.cts → config-D49x8NpL.d.ts} +1 -2
  71. package/dist/tsup/{context-DAAp4Lpg.d.ts → context-Bw7xq8w3.d.cts} +8 -8
  72. package/dist/tsup/{context-Dt_L55q8.d.cts → context-D8QA76sV.d.ts} +8 -8
  73. package/dist/tsup/db/drizzle.cjs +3 -3
  74. package/dist/tsup/db/drizzle.d.cts +1 -1
  75. package/dist/tsup/db/drizzle.d.ts +1 -1
  76. package/dist/tsup/db/drizzle.js +1 -1
  77. package/dist/tsup/db/mod.cjs +2 -2
  78. package/dist/tsup/db/mod.d.cts +2 -2
  79. package/dist/tsup/db/mod.d.ts +2 -2
  80. package/dist/tsup/db/mod.js +1 -1
  81. package/dist/tsup/dynamic/mod.cjs +24 -0
  82. package/dist/tsup/dynamic/mod.cjs.map +1 -0
  83. package/dist/tsup/dynamic/mod.d.cts +37 -0
  84. package/dist/tsup/dynamic/mod.d.ts +37 -0
  85. package/dist/tsup/dynamic/mod.js +24 -0
  86. package/dist/tsup/dynamic/mod.js.map +1 -0
  87. package/dist/tsup/inspector/mod.cjs +6 -6
  88. package/dist/tsup/inspector/mod.js +5 -5
  89. package/dist/tsup/inspector-tab/mod.cjs +173 -0
  90. package/dist/tsup/inspector-tab/mod.cjs.map +1 -0
  91. package/dist/tsup/inspector-tab/mod.d.cts +250 -0
  92. package/dist/tsup/inspector-tab/mod.d.ts +250 -0
  93. package/dist/tsup/inspector-tab/mod.js +173 -0
  94. package/dist/tsup/inspector-tab/mod.js.map +1 -0
  95. package/dist/tsup/mod.cjs +615 -348
  96. package/dist/tsup/mod.cjs.map +1 -1
  97. package/dist/tsup/mod.d.cts +5 -5
  98. package/dist/tsup/mod.d.ts +5 -5
  99. package/dist/tsup/mod.js +511 -244
  100. package/dist/tsup/mod.js.map +1 -1
  101. package/dist/tsup/test/mod.cjs +21 -18
  102. package/dist/tsup/test/mod.cjs.map +1 -1
  103. package/dist/tsup/test/mod.d.cts +4 -4
  104. package/dist/tsup/test/mod.d.ts +4 -4
  105. package/dist/tsup/test/mod.js +18 -15
  106. package/dist/tsup/test/mod.js.map +1 -1
  107. package/dist/tsup/{utils-DVekpm4I.d.cts → utils-DQosb24I.d.cts} +1 -1
  108. package/dist/tsup/{utils-DVekpm4I.d.ts → utils-DQosb24I.d.ts} +1 -1
  109. package/dist/tsup/utils.cjs +3 -3
  110. package/dist/tsup/utils.d.cts +1 -1
  111. package/dist/tsup/utils.d.ts +1 -1
  112. package/dist/tsup/utils.js +2 -2
  113. package/dist/tsup/workflow/mod.cjs +279 -279
  114. package/dist/tsup/workflow/mod.cjs.map +1 -1
  115. package/dist/tsup/workflow/mod.d.cts +6 -6
  116. package/dist/tsup/workflow/mod.d.ts +6 -6
  117. package/dist/tsup/workflow/mod.js +380 -380
  118. package/dist/tsup/workflow/mod.js.map +1 -1
  119. package/package.json +29 -9
  120. package/src/actor/config.ts +156 -51
  121. package/src/actor/contexts/index.ts +7 -2
  122. package/src/actor/definition.ts +17 -19
  123. package/src/actor/driver.ts +3 -3
  124. package/src/actor/errors.ts +8 -2
  125. package/src/actor/instance/mod.ts +26 -34
  126. package/src/actor/keys.ts +1 -1
  127. package/src/actor/mod.ts +22 -20
  128. package/src/actor/schema.ts +2 -2
  129. package/src/agent-os/actor/index.ts +38 -18
  130. package/src/agent-os/actor/preview.ts +1 -2
  131. package/src/agent-os/config.ts +1 -1
  132. package/src/agent-os/fs/database-vfs.ts +1 -1
  133. package/src/agent-os/index.ts +16 -15
  134. package/src/client/actor-common.ts +87 -54
  135. package/src/client/actor-conn.ts +11 -11
  136. package/src/client/actor-handle.ts +69 -52
  137. package/src/client/actor-query.ts +5 -5
  138. package/src/client/errors.ts +1 -1
  139. package/src/client/lifecycle-errors.ts +2 -4
  140. package/src/client/query.ts +1 -1
  141. package/src/client/queue.ts +8 -4
  142. package/src/client/raw-utils.ts +8 -6
  143. package/src/client/resolve-gateway-target.ts +1 -1
  144. package/src/client/utils.ts +2 -6
  145. package/src/common/actor-websocket.ts +3 -1
  146. package/src/common/bare/actor-persist/v1.ts +205 -163
  147. package/src/common/bare/actor-persist/v2.ts +265 -213
  148. package/src/common/bare/actor-persist/v3.ts +176 -172
  149. package/src/common/bare/actor-persist/v4.ts +254 -253
  150. package/src/common/bare/transport/v1.ts +659 -543
  151. package/src/common/client-protocol-versioned.ts +66 -64
  152. package/src/common/database/config.ts +2 -8
  153. package/src/common/database/native-database.ts +1 -1
  154. package/src/common/database/shared.ts +1 -0
  155. package/src/common/encoding.ts +13 -17
  156. package/src/common/engine.ts +28 -1
  157. package/src/common/eventsource.ts +1 -1
  158. package/src/common/inline-websocket-adapter.ts +3 -2
  159. package/src/common/router.ts +13 -17
  160. package/src/common/utils.ts +1 -2
  161. package/src/common/websocket-interface.ts +1 -1
  162. package/src/db/mod.ts +1 -1
  163. package/src/devtools-loader/index.ts +4 -7
  164. package/src/devtools-loader/serve-devtools.ts +26 -0
  165. package/src/drivers/engine/actor-driver.ts +48 -46
  166. package/src/dynamic/instance.ts +32 -0
  167. package/src/dynamic/internal.ts +50 -0
  168. package/src/dynamic/isolate-runtime.ts +66 -0
  169. package/src/dynamic/mod.ts +32 -0
  170. package/src/engine-client/actor-http-client.ts +3 -3
  171. package/src/engine-client/actor-websocket-client.ts +5 -5
  172. package/src/engine-client/api-endpoints.ts +51 -2
  173. package/src/engine-client/api-utils.ts +2 -2
  174. package/src/engine-client/driver.ts +1 -1
  175. package/src/engine-client/mod.ts +5 -3
  176. package/src/engine-client/ws-proxy.ts +9 -4
  177. package/src/inspector/client.browser.ts +5 -11
  178. package/src/inspector/mod.ts +1 -3
  179. package/src/inspector-tab/mod.ts +315 -0
  180. package/src/registry/config/envoy.ts +1 -2
  181. package/src/registry/config/index.ts +40 -16
  182. package/src/registry/index.ts +226 -83
  183. package/src/registry/napi-runtime.ts +46 -12
  184. package/src/registry/native-validation.ts +10 -12
  185. package/src/registry/native.ts +307 -164
  186. package/src/registry/process-metrics.ts +90 -23
  187. package/src/registry/runtime.ts +53 -6
  188. package/src/registry/wasm-runtime.ts +30 -3
  189. package/src/serde.ts +1 -1
  190. package/src/serverless/configure.ts +18 -7
  191. package/src/test/mod.ts +11 -8
  192. package/src/utils/endpoint-parser.ts +1 -1
  193. package/src/utils/env-vars.ts +6 -0
  194. package/src/utils/router.ts +1 -1
  195. package/src/utils/serve.ts +4 -5
  196. package/src/utils.ts +1 -2
  197. package/src/workflow/context.ts +30 -29
  198. package/src/workflow/driver.ts +4 -6
  199. package/src/workflow/inspector.ts +2 -2
  200. package/src/workflow/mod.ts +15 -17
  201. package/dist/tsup/chunk-2NDZ7JCR.cjs.map +0 -1
  202. package/dist/tsup/chunk-3YY5S6TV.js.map +0 -1
  203. package/dist/tsup/chunk-4BPKKZJO.cjs.map +0 -1
  204. package/dist/tsup/chunk-4JU3IPG2.js.map +0 -1
  205. package/dist/tsup/chunk-7HLFSAJP.cjs.map +0 -1
  206. package/dist/tsup/chunk-BATTOVHF.cjs.map +0 -1
  207. package/dist/tsup/chunk-D5G75T7J.js.map +0 -1
  208. package/dist/tsup/chunk-EMFKMVJR.js.map +0 -1
  209. package/dist/tsup/chunk-GBG63SUG.js.map +0 -1
  210. package/dist/tsup/chunk-HGW6PBWR.cjs.map +0 -1
  211. package/dist/tsup/chunk-KY3CERZR.js.map +0 -1
  212. package/dist/tsup/chunk-OT7FF6GB.cjs.map +0 -1
  213. package/dist/tsup/chunk-PCBNKI2J.js.map +0 -1
  214. package/dist/tsup/chunk-SRNOPUC6.cjs.map +0 -1
  215. package/dist/tsup/chunk-TMLOKTRB.js.map +0 -1
  216. package/dist/tsup/chunk-VUGENVIK.js.map +0 -1
  217. package/dist/tsup/process-metrics-NW754INA.js +0 -118
  218. package/dist/tsup/process-metrics-NW754INA.js.map +0 -1
  219. package/dist/tsup/process-metrics-TYAGKCEJ.cjs +0 -118
  220. package/dist/tsup/process-metrics-TYAGKCEJ.cjs.map +0 -1
  221. /package/dist/tsup/{chunk-D3T3ZBSY.js.map → chunk-BEI24WTI.js.map} +0 -0
@@ -1,3 +1,10 @@
1
+ // src/common/log.ts
2
+ import {
3
+ pino,
4
+ stdTimeFunctions
5
+ } from "pino";
6
+ import { z } from "zod/v4";
7
+
1
8
  // src/actor/errors.ts
2
9
  var INTERNAL_ERROR_CODE = "internal_error";
3
10
  var INTERNAL_ERROR_DESCRIPTION = "An internal error occurred";
@@ -75,19 +82,6 @@ function actorNotFound(identifier) {
75
82
  );
76
83
  }
77
84
 
78
- // src/utils/env-vars.ts
79
- var getRivetEngine = () => getEnvUniversal("RIVET_ENGINE");
80
- var getRivetEndpoint = () => getEnvUniversal("RIVET_ENDPOINT");
81
- var getRivetToken = () => getEnvUniversal("RIVET_TOKEN");
82
- var getRivetNamespace = () => getEnvUniversal("RIVET_NAMESPACE");
83
- var getRivetPool = () => getEnvUniversal("RIVET_POOL");
84
- var getLogLevel = () => getEnvUniversal("RIVET_LOG_LEVEL") ?? getEnvUniversal("LOG_LEVEL");
85
- var getLogTarget = () => getEnvUniversal("RIVET_LOG_TARGET") === "1";
86
- var getLogTimestamp = () => getEnvUniversal("RIVET_LOG_TIMESTAMP") === "1";
87
- var getLogMessage = () => getEnvUniversal("RIVET_LOG_MESSAGE") === "1";
88
- var getLogErrorStack = () => getEnvUniversal("RIVET_LOG_ERROR_STACK") === "1";
89
- var getNextPhase = () => getEnvUniversal("NEXT_PHASE");
90
-
91
85
  // src/common/utils.ts
92
86
  function assertUnreachable(x) {
93
87
  throw new Error(`Unreachable case: ${x}`);
@@ -145,7 +139,7 @@ function deconstructError(error, exposeInternalError = false) {
145
139
  actor = error.actor;
146
140
  }
147
141
  metadata = {
148
- //url: `https://hub.rivet.dev/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`,
142
+ //url: `https://dashboard.rivet.dev/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`,
149
143
  };
150
144
  }
151
145
  return {
@@ -200,7 +194,7 @@ function noopNext() {
200
194
  // package.json
201
195
  var package_default = {
202
196
  name: "rivetkit",
203
- version: "2.3.0-rc.8",
197
+ version: "2.3.0",
204
198
  description: "Lightweight libraries for building stateful actors on edge platforms",
205
199
  license: "Apache-2.0",
206
200
  keywords: [
@@ -272,6 +266,16 @@ var package_default = {
272
266
  default: "./dist/tsup/db/drizzle.cjs"
273
267
  }
274
268
  },
269
+ "./dynamic": {
270
+ import: {
271
+ types: "./dist/tsup/dynamic/mod.d.ts",
272
+ default: "./dist/tsup/dynamic/mod.js"
273
+ },
274
+ require: {
275
+ types: "./dist/tsup/dynamic/mod.d.cts",
276
+ default: "./dist/tsup/dynamic/mod.cjs"
277
+ }
278
+ },
275
279
  "./client": {
276
280
  import: {
277
281
  browser: {
@@ -316,6 +320,16 @@ var package_default = {
316
320
  default: "./dist/tsup/inspector/mod.cjs"
317
321
  }
318
322
  },
323
+ "./inspector-tab": {
324
+ import: {
325
+ types: "./dist/tsup/inspector-tab/mod.d.ts",
326
+ default: "./dist/tsup/inspector-tab/mod.js"
327
+ },
328
+ require: {
329
+ types: "./dist/tsup/inspector-tab/mod.d.cts",
330
+ default: "./dist/tsup/inspector-tab/mod.cjs"
331
+ }
332
+ },
319
333
  "./inspector/client": {
320
334
  import: {
321
335
  types: "./dist/browser/inspector/client.d.ts",
@@ -351,7 +365,7 @@ var package_default = {
351
365
  "./dist/tsup/chunk-*.cjs"
352
366
  ],
353
367
  scripts: {
354
- build: "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/utils.ts src/workflow/mod.ts src/test/mod.ts src/inspector/mod.ts src/db/mod.ts src/db/drizzle.ts && tsup src/agent-os/index.ts --no-clean --out-dir dist/tsup/agent-os",
368
+ build: "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/utils.ts src/workflow/mod.ts src/test/mod.ts src/inspector/mod.ts src/inspector-tab/mod.ts src/db/mod.ts src/db/drizzle.ts src/dynamic/mod.ts && tsup src/agent-os/index.ts --no-clean --out-dir dist/tsup/agent-os",
355
369
  "build:browser": "tsup --config tsup.browser.config.ts",
356
370
  "check-types": "tsc --noEmit",
357
371
  lint: "biome check . && pnpm run check:test-skips && pnpm run check:wait-for-comments",
@@ -427,12 +441,81 @@ var package_default = {
427
441
  stableVersion: "0.8.0"
428
442
  };
429
443
 
444
+ // src/utils.ts
445
+ var VERSION = package_default.version;
446
+ var _userAgent;
447
+ function httpUserAgent() {
448
+ if (_userAgent !== void 0) {
449
+ return _userAgent;
450
+ }
451
+ let userAgent = `RivetKit/${VERSION}`;
452
+ const navigatorObj = typeof navigator !== "undefined" ? navigator : void 0;
453
+ if (navigatorObj?.userAgent) userAgent += ` ${navigatorObj.userAgent}`;
454
+ _userAgent = userAgent;
455
+ return userAgent;
456
+ }
457
+ function getEnvUniversal(key) {
458
+ if (typeof Deno !== "undefined") {
459
+ return Deno.env.get(key);
460
+ } else if (typeof process !== "undefined") {
461
+ return process.env[key];
462
+ }
463
+ }
464
+ function promiseWithResolvers(onReject) {
465
+ let resolve;
466
+ let reject;
467
+ const promise = new Promise((res, rej) => {
468
+ resolve = res;
469
+ reject = rej;
470
+ });
471
+ promise.catch(onReject);
472
+ return { promise, resolve, reject };
473
+ }
474
+ function bufferToArrayBuffer(buf) {
475
+ return buf.buffer.slice(
476
+ buf.byteOffset,
477
+ buf.byteOffset + buf.byteLength
478
+ );
479
+ }
480
+ function combineUrlPath(endpoint, path, queryParams) {
481
+ const baseUrl = new URL(endpoint);
482
+ const pathParts = path.split("?");
483
+ const pathOnly = pathParts[0];
484
+ const existingQuery = pathParts[1] || "";
485
+ const basePath = baseUrl.pathname.replace(/\/$/, "");
486
+ const cleanPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
487
+ const fullPath = (basePath + cleanPath).replace(/\/\//g, "/");
488
+ const queryParts = [];
489
+ if (existingQuery) {
490
+ queryParts.push(existingQuery);
491
+ }
492
+ if (queryParams) {
493
+ for (const [key, value] of Object.entries(queryParams)) {
494
+ if (value !== void 0) {
495
+ queryParts.push(
496
+ `${encodeURIComponent(key)}=${encodeURIComponent(value)}`
497
+ );
498
+ }
499
+ }
500
+ }
501
+ const fullQuery = queryParts.length > 0 ? `?${queryParts.join("&")}` : "";
502
+ return `${baseUrl.protocol}//${baseUrl.host}${fullPath}${fullQuery}`;
503
+ }
504
+
505
+ // src/utils/env-vars.ts
506
+ var getRivetEngine = () => getEnvUniversal("RIVET_ENGINE");
507
+ var getRivetEndpoint = () => getEnvUniversal("RIVET_ENDPOINT");
508
+ var getRivetToken = () => getEnvUniversal("RIVET_TOKEN");
509
+ var getRivetNamespace = () => getEnvUniversal("RIVET_NAMESPACE");
510
+ var getRivetPool = () => getEnvUniversal("RIVET_POOL");
511
+ var getLogLevel = () => getEnvUniversal("RIVET_LOG_LEVEL") ?? getEnvUniversal("LOG_LEVEL");
512
+ var getLogTarget = () => getEnvUniversal("RIVET_LOG_TARGET") === "1";
513
+ var getLogTimestamp = () => getEnvUniversal("RIVET_LOG_TIMESTAMP") === "1";
514
+ var getLogMessage = () => getEnvUniversal("RIVET_LOG_MESSAGE") === "1";
515
+ var getLogErrorStack = () => getEnvUniversal("RIVET_LOG_ERROR_STACK") === "1";
516
+ var getNextPhase = () => getEnvUniversal("NEXT_PHASE");
517
+
430
518
  // src/common/log.ts
431
- import {
432
- pino,
433
- stdTimeFunctions
434
- } from "pino";
435
- import { z } from "zod/v4";
436
519
  var baseLogger;
437
520
  var configuredLogLevel;
438
521
  var loggerCache = /* @__PURE__ */ new Map();
@@ -577,74 +660,12 @@ function quoteLogfmtString(value) {
577
660
  return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n")}"`;
578
661
  }
579
662
 
580
- // src/utils.ts
581
- var VERSION = package_default.version;
582
- var _userAgent;
583
- function httpUserAgent() {
584
- if (_userAgent !== void 0) {
585
- return _userAgent;
586
- }
587
- let userAgent = `RivetKit/${VERSION}`;
588
- const navigatorObj = typeof navigator !== "undefined" ? navigator : void 0;
589
- if (navigatorObj?.userAgent) userAgent += ` ${navigatorObj.userAgent}`;
590
- _userAgent = userAgent;
591
- return userAgent;
592
- }
593
- function getEnvUniversal(key) {
594
- if (typeof Deno !== "undefined") {
595
- return Deno.env.get(key);
596
- } else if (typeof process !== "undefined") {
597
- return process.env[key];
598
- }
599
- }
600
- function promiseWithResolvers(onReject) {
601
- let resolve;
602
- let reject;
603
- const promise = new Promise((res, rej) => {
604
- resolve = res;
605
- reject = rej;
606
- });
607
- promise.catch(onReject);
608
- return { promise, resolve, reject };
609
- }
610
- function bufferToArrayBuffer(buf) {
611
- return buf.buffer.slice(
612
- buf.byteOffset,
613
- buf.byteOffset + buf.byteLength
614
- );
615
- }
616
- function combineUrlPath(endpoint, path, queryParams) {
617
- const baseUrl = new URL(endpoint);
618
- const pathParts = path.split("?");
619
- const pathOnly = pathParts[0];
620
- const existingQuery = pathParts[1] || "";
621
- const basePath = baseUrl.pathname.replace(/\/$/, "");
622
- const cleanPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
623
- const fullPath = (basePath + cleanPath).replace(/\/\//g, "/");
624
- const queryParts = [];
625
- if (existingQuery) {
626
- queryParts.push(existingQuery);
627
- }
628
- if (queryParams) {
629
- for (const [key, value] of Object.entries(queryParams)) {
630
- if (value !== void 0) {
631
- queryParts.push(
632
- `${encodeURIComponent(key)}=${encodeURIComponent(value)}`
633
- );
634
- }
635
- }
636
- }
637
- const fullQuery = queryParts.length > 0 ? `?${queryParts.join("&")}` : "";
638
- return `${baseUrl.protocol}//${baseUrl.host}${fullPath}${fullQuery}`;
639
- }
640
-
641
663
  // src/devtools-loader/log.ts
642
664
  function logger() {
643
665
  return getLogger("devtools");
644
666
  }
645
667
 
646
668
  // src/devtools-loader/index.ts
647
- var DEFAULT_DEVTOOLS_URL = (version = VERSION) => `https://releases.rivet.dev/rivet/latest/devtools/mod.js?v=${version}`;
648
669
  var scriptId = "rivetkit-devtools-script";
649
670
  function injectDevtools(config) {
650
671
  if (!window) {
@@ -652,9 +673,10 @@ function injectDevtools(config) {
652
673
  return;
653
674
  }
654
675
  if (!document.getElementById(scriptId)) {
676
+ const src = `${config.endpoint?.replace(/\/$/, "")}/devtools/mod.js`;
655
677
  const script = document.createElement("script");
656
678
  script.id = scriptId;
657
- script.src = DEFAULT_DEVTOOLS_URL();
679
+ script.src = src;
658
680
  script.async = true;
659
681
  document.head.appendChild(script);
660
682
  }
@@ -764,7 +786,7 @@ function deserializeActorKey(keyString) {
764
786
  }
765
787
  }
766
788
  if (escaping) {
767
- parts.push(currentPart + "\\");
789
+ parts.push(`${currentPart}\\`);
768
790
  } else if (isEmptyStringMarker) {
769
791
  parts.push("");
770
792
  } else if (currentPart !== "" || parts.length > 0) {
@@ -890,7 +912,7 @@ function encodeJsonCompatValue(input) {
890
912
  (value) => encodeJsonCompatValue(value)
891
913
  );
892
914
  if (encoded.length === 2 && typeof encoded[0] === "string" && encoded[0].startsWith("$")) {
893
- return ["$" + encoded[0], encoded[1]];
915
+ return [`$${encoded[0]}`, encoded[1]];
894
916
  }
895
917
  return encoded;
896
918
  }
@@ -902,9 +924,7 @@ function encodeJsonCompatValue(input) {
902
924
  return encoded;
903
925
  }
904
926
  const typeName = typeof input === "object" && input !== null ? input.constructor?.name ?? typeof input : typeof input;
905
- throw new TypeError(
906
- `Value of type "${typeName}" is not CBOR serializable`
907
- );
927
+ throw new TypeError(`Value of type "${typeName}" is not CBOR serializable`);
908
928
  }
909
929
  function reviveJsonCompatValue(input, options = {}) {
910
930
  if (typeof input === "bigint") {
@@ -984,19 +1004,13 @@ function jsonStringifyCompat(input) {
984
1004
  return [JSON_COMPAT_BIGINT, value.toString()];
985
1005
  }
986
1006
  if (value instanceof ArrayBuffer) {
987
- return [
988
- JSON_COMPAT_ARRAY_BUFFER,
989
- base64EncodeArrayBuffer(value)
990
- ];
1007
+ return [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(value)];
991
1008
  }
992
1009
  if (value instanceof Uint8Array) {
993
- return [
994
- JSON_COMPAT_UINT8_ARRAY,
995
- base64EncodeUint8Array(value)
996
- ];
1010
+ return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(value)];
997
1011
  }
998
1012
  if (Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && value[0].startsWith("$")) {
999
- return ["$" + value[0], value[1]];
1013
+ return [`$${value[0]}`, value[1]];
1000
1014
  }
1001
1015
  return value;
1002
1016
  });
@@ -1108,7 +1122,7 @@ async function sendHttpRequestToGateway(runConfig, gatewayUrl, actorRequest, opt
1108
1122
  if (reqBody.byteLength !== 0) {
1109
1123
  bodyToSend = reqBody;
1110
1124
  guardHeaders.delete("transfer-encoding");
1111
- guardHeaders.set("content-length", String(bodyToSend.byteLength));
1125
+ guardHeaders.delete("content-length");
1112
1126
  }
1113
1127
  }
1114
1128
  const guardRequest = new Request(gatewayUrl, {
@@ -3960,11 +3974,11 @@ async function lookupMetadataCached(config) {
3960
3974
  }
3961
3975
 
3962
3976
  // src/engine-client/ws-proxy.ts
3963
- async function createWebSocketProxy(c, targetUrl, protocols) {
3977
+ async function createWebSocketProxy(_c, targetUrl, protocols) {
3964
3978
  const WebSocket2 = await importWebSocket();
3965
3979
  const state = {};
3966
3980
  return {
3967
- onOpen: async (event, clientWs) => {
3981
+ onOpen: async (_event, clientWs) => {
3968
3982
  logger3().debug({ msg: "client websocket connected", targetUrl });
3969
3983
  if (clientWs.readyState !== 1) {
3970
3984
  logger3().warn({
@@ -4002,23 +4016,25 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
4002
4016
  reject(error);
4003
4017
  });
4004
4018
  });
4005
- state.targetWs.addEventListener("message", (event2) => {
4006
- if (typeof event2.data === "string" || event2.data instanceof ArrayBuffer) {
4007
- clientWs.send(event2.data);
4008
- } else if (event2.data instanceof Blob) {
4009
- event2.data.arrayBuffer().then((buffer) => {
4019
+ state.connectPromise.catch(() => {
4020
+ });
4021
+ state.targetWs.addEventListener("message", (event) => {
4022
+ if (typeof event.data === "string" || event.data instanceof ArrayBuffer) {
4023
+ clientWs.send(event.data);
4024
+ } else if (event.data instanceof Blob) {
4025
+ event.data.arrayBuffer().then((buffer) => {
4010
4026
  clientWs.send(buffer);
4011
4027
  });
4012
4028
  }
4013
4029
  });
4014
- state.targetWs.addEventListener("close", (event2) => {
4030
+ state.targetWs.addEventListener("close", (event) => {
4015
4031
  logger3().debug({
4016
4032
  msg: "target websocket closed",
4017
4033
  targetUrl,
4018
- code: event2.code,
4019
- reason: event2.reason
4034
+ code: event.code,
4035
+ reason: event.reason
4020
4036
  });
4021
- closeWebSocketIfOpen(clientWs, event2.code, event2.reason);
4037
+ closeWebSocketIfOpen(clientWs, event.code, event.reason);
4022
4038
  });
4023
4039
  state.targetWs.addEventListener("error", (error) => {
4024
4040
  logger3().error({
@@ -4061,7 +4077,7 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
4061
4077
  );
4062
4078
  }
4063
4079
  },
4064
- onClose: (event, clientWs) => {
4080
+ onClose: (event, _clientWs) => {
4065
4081
  logger3().debug({
4066
4082
  msg: "client websocket closed",
4067
4083
  targetUrl,
@@ -4078,7 +4094,7 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
4078
4094
  }
4079
4095
  }
4080
4096
  },
4081
- onError: (event, clientWs) => {
4097
+ onError: (event, _clientWs) => {
4082
4098
  logger3().error({ msg: "client websocket error", targetUrl, event });
4083
4099
  if (state.targetWs) {
4084
4100
  if (state.targetWs.readyState === WebSocket2.OPEN) {
@@ -4194,7 +4210,9 @@ var RemoteEngineControlClient = class {
4194
4210
  name,
4195
4211
  key: serializeActorKey(key),
4196
4212
  runner_name_selector: this.#config.poolName,
4197
- input: actorInput ? uint8ArrayToBase64(encodeCborCompat(actorInput)) : void 0,
4213
+ input: actorInput ? uint8ArrayToBase64(
4214
+ encodeCborCompat(actorInput)
4215
+ ) : void 0,
4198
4216
  crash_policy: crashPolicy ?? "sleep"
4199
4217
  });
4200
4218
  logger3().info({
@@ -4585,7 +4603,7 @@ function classifyActorError(error) {
4585
4603
  return void 0;
4586
4604
  }
4587
4605
  function isRetryableGuardGatewayHttpError(code) {
4588
- return code === "service_unavailable" || code === "actor_stopped_while_waiting" || code === "tunnel_request_aborted" || code === "tunnel_message_timeout" || code === "tunnel_response_closed" || code === "gateway_response_start_timeout";
4606
+ return code === "service_unavailable" || code === "actor_wake_retries_exceeded" || code === "actor_stopped_while_waiting" || code === "tunnel_request_aborted" || code === "tunnel_message_timeout" || code === "tunnel_response_closed" || code === "gateway_response_start_timeout";
4589
4607
  }
4590
4608
  function classifyTransportError(error) {
4591
4609
  if (error.message.includes("database accessed after actor stopped")) {
@@ -4674,10 +4692,7 @@ async function retryOnLifecycleBoundary(run, opts) {
4674
4692
  if (attempt === maxAttempts - 1) {
4675
4693
  break;
4676
4694
  }
4677
- const delayMs = Math.min(
4678
- initialDelayMs * 2 ** attempt,
4679
- maxDelayMs
4680
- );
4695
+ const delayMs = Math.min(initialDelayMs * 2 ** attempt, maxDelayMs);
4681
4696
  await waitWithSignal(delayMs, opts?.signal);
4682
4697
  }
4683
4698
  }
@@ -4716,7 +4731,9 @@ function createQueueSender(senderOptions) {
4716
4731
  }),
4717
4732
  requestToBare: (value) => ({
4718
4733
  name: value.name ?? name,
4719
- body: bufferToArrayBuffer(encodeCborCompat(value.body)),
4734
+ body: bufferToArrayBuffer(
4735
+ encodeCborCompat(value.body)
4736
+ ),
4720
4737
  wait: value.wait ?? false,
4721
4738
  timeout: value.timeout !== void 0 ? BigInt(value.timeout) : null
4722
4739
  }),
@@ -4801,6 +4818,9 @@ var ActorConnRaw = class {
4801
4818
  this.#encoding = encoding;
4802
4819
  this.#actorResolutionState = actorResolutionState;
4803
4820
  this.#gatewayOptions = resolveActorGatewayOptions(gatewayOptions);
4821
+ if ("getForId" in actorResolutionState) {
4822
+ this.#actorId = actorResolutionState.getForId.actorId;
4823
+ }
4804
4824
  this.#readyPromise = promiseWithResolvers(
4805
4825
  (reason) => logger2().warn({
4806
4826
  msg: "unhandled ready promise rejection",
@@ -4818,9 +4838,7 @@ var ActorConnRaw = class {
4818
4838
  );
4819
4839
  }
4820
4840
  });
4821
- this.#keepNodeAliveInterval = setInterval(() => {
4822
- }, 6e4);
4823
- this.#keepNodeAliveInterval.unref?.();
4841
+ this.#keepNodeAliveInterval = setInterval(() => 6e4);
4824
4842
  }
4825
4843
  #clearResolvedActorIdentity() {
4826
4844
  this.#actorId = void 0;
@@ -5227,12 +5245,10 @@ var ActorConnRaw = class {
5227
5245
  );
5228
5246
  return;
5229
5247
  }
5230
- let errorToThrow = new RivetError(
5231
- group,
5232
- code,
5233
- message,
5234
- { metadata, actor }
5235
- );
5248
+ let errorToThrow = new RivetError(group, code, message, {
5249
+ metadata,
5250
+ actor
5251
+ });
5236
5252
  if (isSchedulingError(group, code) && this.#actorId) {
5237
5253
  const schedulingError = await checkForSchedulingError(
5238
5254
  group,
@@ -6053,10 +6069,7 @@ var ActorHandleRaw = class {
6053
6069
  }
6054
6070
  }).send(name, body, options);
6055
6071
  } catch (err) {
6056
- const { group, code, message, metadata, actor } = deconstructError(
6057
- err,
6058
- true
6059
- );
6072
+ const { group, code, message, metadata, actor } = deconstructError(err, true);
6060
6073
  if (this.#shouldRetryQueueDispatchOverload(
6061
6074
  group,
6062
6075
  code,
@@ -6089,7 +6102,10 @@ var ActorHandleRaw = class {
6089
6102
  await this.#waitForRetryWindow();
6090
6103
  continue;
6091
6104
  }
6092
- const invalidated = this.#invalidateResolvedActorId(group, code);
6105
+ const invalidated = this.#invalidateResolvedActorId(
6106
+ group,
6107
+ code
6108
+ );
6093
6109
  if (invalidated && attempt < maxAttempts - 1) {
6094
6110
  useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
6095
6111
  if (useQueryTarget) {
@@ -6097,7 +6113,10 @@ var ActorHandleRaw = class {
6097
6113
  }
6098
6114
  continue;
6099
6115
  }
6100
- throw new RivetError(group, code, message, { metadata, actor });
6116
+ throw new RivetError(group, code, message, {
6117
+ metadata,
6118
+ actor
6119
+ });
6101
6120
  }
6102
6121
  }
6103
6122
  throw new Error("unreachable queue retry state");
@@ -6177,7 +6196,9 @@ var ActorHandleRaw = class {
6177
6196
  args
6178
6197
  }),
6179
6198
  requestToBare: (args) => ({
6180
- args: bufferToArrayBuffer(encodeCborCompat(args))
6199
+ args: bufferToArrayBuffer(
6200
+ encodeCborCompat(args)
6201
+ )
6181
6202
  }),
6182
6203
  responseFromJson: (json) => json.output,
6183
6204
  responseFromBare: (bare5) => decodeCborCompat(new Uint8Array(bare5.output))
@@ -6187,10 +6208,7 @@ var ActorHandleRaw = class {
6187
6208
  }
6188
6209
  return output;
6189
6210
  } catch (err) {
6190
- const { group, code, message, metadata, actor } = deconstructError(
6191
- err,
6192
- true
6193
- );
6211
+ const { group, code, message, metadata, actor } = deconstructError(err, true);
6194
6212
  if (await this.#shouldRetrySchedulingError(
6195
6213
  group,
6196
6214
  code,
@@ -6221,11 +6239,16 @@ var ActorHandleRaw = class {
6221
6239
  { metadata, actor }
6222
6240
  );
6223
6241
  }
6224
- const invalidated = this.#invalidateResolvedActorId(group, code);
6242
+ const invalidated = this.#invalidateResolvedActorId(
6243
+ group,
6244
+ code
6245
+ );
6225
6246
  if (invalidated && attempt < maxAttempts - 1) {
6226
6247
  if (group === "actor" && (code === "starting" || code === "stopping")) {
6227
6248
  useQueryTarget = true;
6228
- await new Promise((resolve) => setTimeout(resolve, 100));
6249
+ await new Promise(
6250
+ (resolve) => setTimeout(resolve, 100)
6251
+ );
6229
6252
  }
6230
6253
  continue;
6231
6254
  }
@@ -6402,10 +6425,7 @@ var ActorHandleRaw = class {
6402
6425
  }
6403
6426
  return response;
6404
6427
  } catch (err) {
6405
- const { group, code, message, metadata, actor } = deconstructError(
6406
- err,
6407
- true
6408
- );
6428
+ const { group, code, message, metadata, actor } = deconstructError(err, true);
6409
6429
  if (await this.#shouldRetrySchedulingError(
6410
6430
  group,
6411
6431
  code,
@@ -6428,7 +6448,10 @@ var ActorHandleRaw = class {
6428
6448
  await this.#waitForRetryWindow();
6429
6449
  continue;
6430
6450
  }
6431
- const invalidated = this.#invalidateResolvedActorId(group, code);
6451
+ const invalidated = this.#invalidateResolvedActorId(
6452
+ group,
6453
+ code
6454
+ );
6432
6455
  if (invalidated && attempt < maxAttempts - 1) {
6433
6456
  useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
6434
6457
  if (useQueryTarget) {
@@ -6528,8 +6551,9 @@ var ActorHandleRaw = class {
6528
6551
  this.#gatewayOptions,
6529
6552
  options
6530
6553
  );
6554
+ const useQueryTarget = isDynamicActorQuery(this.#actorResolutionState);
6531
6555
  const target = await this.#resolveGatewayRequestTarget(
6532
- false,
6556
+ useQueryTarget,
6533
6557
  gatewayOptions
6534
6558
  );
6535
6559
  return await rawWebSocket(
@@ -6552,7 +6576,9 @@ var ActorHandleRaw = class {
6552
6576
  if ("directId" in target) {
6553
6577
  return target.directId;
6554
6578
  }
6555
- throw new Error("dynamic actor resolution did not produce a direct actor id");
6579
+ throw new Error(
6580
+ "dynamic actor resolution did not produce a direct actor id"
6581
+ );
6556
6582
  }
6557
6583
  /**
6558
6584
  * Returns the raw URL for routing traffic to the actor.