rivetkit 2.3.0-rc.12 → 2.3.0-rc.14

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 (112) hide show
  1. package/dist/browser/client.d.ts +50 -0
  2. package/dist/browser/client.js +98 -84
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +12 -2
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/actor/errors.d.cts +1 -1
  7. package/dist/tsup/actor/errors.d.ts +1 -1
  8. package/dist/tsup/agent-os/index.cjs +66 -3
  9. package/dist/tsup/agent-os/index.cjs.map +1 -1
  10. package/dist/tsup/agent-os/index.d.cts +50 -0
  11. package/dist/tsup/agent-os/index.d.ts +50 -0
  12. package/dist/tsup/agent-os/index.js +66 -3
  13. package/dist/tsup/agent-os/index.js.map +1 -1
  14. package/dist/tsup/{chunk-OLIJHKLL.js → chunk-2JVK6AFR.js} +6 -6
  15. package/dist/tsup/chunk-2JVK6AFR.js.map +1 -0
  16. package/dist/tsup/{chunk-7UZF56RS.js → chunk-4DGTEHMI.js} +7 -5
  17. package/dist/tsup/{chunk-7UZF56RS.js.map → chunk-4DGTEHMI.js.map} +1 -1
  18. package/dist/tsup/{chunk-OOB32JVG.js → chunk-5LHIXIMF.js} +2 -2
  19. package/dist/tsup/{chunk-EWVOWEMD.js → chunk-7URXZWTR.js} +4 -4
  20. package/dist/tsup/{chunk-QKSGGKGQ.js → chunk-CJYYFRLA.js} +2 -2
  21. package/dist/tsup/{chunk-WIMUFZVJ.js → chunk-DPIMKYNB.js} +61 -2
  22. package/dist/tsup/chunk-DPIMKYNB.js.map +1 -0
  23. package/dist/tsup/{chunk-VNMIAPPF.cjs → chunk-EHZQPH75.cjs} +21 -4
  24. package/dist/tsup/chunk-EHZQPH75.cjs.map +1 -0
  25. package/dist/tsup/{chunk-C7AAIILH.cjs → chunk-ICXZ74R5.cjs} +4 -4
  26. package/dist/tsup/{chunk-C7AAIILH.cjs.map → chunk-ICXZ74R5.cjs.map} +1 -1
  27. package/dist/tsup/{chunk-2U6RLFKX.cjs → chunk-LSLJJHHE.cjs} +142 -140
  28. package/dist/tsup/chunk-LSLJJHHE.cjs.map +1 -0
  29. package/dist/tsup/{chunk-WHYBAEWG.cjs → chunk-NIY3RSPX.cjs} +62 -3
  30. package/dist/tsup/chunk-NIY3RSPX.cjs.map +1 -0
  31. package/dist/tsup/{chunk-VLXRFJ7P.js → chunk-Q6R3ND6W.js} +2 -2
  32. package/dist/tsup/{chunk-2ZTBRZRS.cjs → chunk-QOIIPYGJ.cjs} +10 -10
  33. package/dist/tsup/{chunk-2ZTBRZRS.cjs.map → chunk-QOIIPYGJ.cjs.map} +1 -1
  34. package/dist/tsup/{chunk-UETC5RF7.cjs → chunk-T2LS2K7C.cjs} +3 -3
  35. package/dist/tsup/{chunk-UETC5RF7.cjs.map → chunk-T2LS2K7C.cjs.map} +1 -1
  36. package/dist/tsup/{chunk-3EVVOYFD.js → chunk-VD2BPZGJ.js} +20 -3
  37. package/dist/tsup/chunk-VD2BPZGJ.js.map +1 -0
  38. package/dist/tsup/{chunk-6KTMKPNU.cjs → chunk-W6WJZP5H.cjs} +10 -10
  39. package/dist/tsup/chunk-W6WJZP5H.cjs.map +1 -0
  40. package/dist/tsup/{chunk-SS56HFM2.cjs → chunk-ZDFGAXNV.cjs} +5 -5
  41. package/dist/tsup/{chunk-SS56HFM2.cjs.map → chunk-ZDFGAXNV.cjs.map} +1 -1
  42. package/dist/tsup/client/mod.cjs +6 -6
  43. package/dist/tsup/client/mod.d.cts +3 -3
  44. package/dist/tsup/client/mod.d.ts +3 -3
  45. package/dist/tsup/client/mod.js +5 -5
  46. package/dist/tsup/common/log.cjs +2 -2
  47. package/dist/tsup/common/log.js +1 -1
  48. package/dist/tsup/common/websocket.cjs +3 -3
  49. package/dist/tsup/common/websocket.js +2 -2
  50. package/dist/tsup/{config-DKgPGC0f.d.ts → config-BxWAw3iH.d.ts} +121 -2
  51. package/dist/tsup/{config-BtAh7oBu.d.cts → config-CZQQ-mso.d.cts} +121 -2
  52. package/dist/tsup/{context-Cfjl5pgz.d.cts → context-Bw7xq8w3.d.cts} +1 -1
  53. package/dist/tsup/{context-C-6dGebY.d.ts → context-D8QA76sV.d.ts} +1 -1
  54. package/dist/tsup/dynamic/mod.cjs +2 -2
  55. package/dist/tsup/dynamic/mod.d.cts +2 -2
  56. package/dist/tsup/dynamic/mod.d.ts +2 -2
  57. package/dist/tsup/dynamic/mod.js +1 -1
  58. package/dist/tsup/inspector/mod.cjs +5 -5
  59. package/dist/tsup/inspector/mod.js +4 -4
  60. package/dist/tsup/inspector-tab/mod.cjs +173 -0
  61. package/dist/tsup/inspector-tab/mod.cjs.map +1 -0
  62. package/dist/tsup/inspector-tab/mod.d.cts +250 -0
  63. package/dist/tsup/inspector-tab/mod.d.ts +250 -0
  64. package/dist/tsup/inspector-tab/mod.js +173 -0
  65. package/dist/tsup/inspector-tab/mod.js.map +1 -0
  66. package/dist/tsup/mod.cjs +189 -81
  67. package/dist/tsup/mod.cjs.map +1 -1
  68. package/dist/tsup/mod.d.cts +4 -4
  69. package/dist/tsup/mod.d.ts +4 -4
  70. package/dist/tsup/mod.js +124 -16
  71. package/dist/tsup/mod.js.map +1 -1
  72. package/dist/tsup/test/mod.cjs +9 -9
  73. package/dist/tsup/test/mod.d.cts +2 -2
  74. package/dist/tsup/test/mod.d.ts +2 -2
  75. package/dist/tsup/test/mod.js +5 -5
  76. package/dist/tsup/{utils-DVekpm4I.d.cts → utils-DQosb24I.d.cts} +1 -1
  77. package/dist/tsup/{utils-DVekpm4I.d.ts → utils-DQosb24I.d.ts} +1 -1
  78. package/dist/tsup/utils.cjs +2 -2
  79. package/dist/tsup/utils.d.cts +1 -1
  80. package/dist/tsup/utils.d.ts +1 -1
  81. package/dist/tsup/utils.js +1 -1
  82. package/dist/tsup/workflow/mod.cjs +11 -11
  83. package/dist/tsup/workflow/mod.cjs.map +1 -1
  84. package/dist/tsup/workflow/mod.d.cts +4 -4
  85. package/dist/tsup/workflow/mod.d.ts +4 -4
  86. package/dist/tsup/workflow/mod.js +5 -5
  87. package/package.json +19 -9
  88. package/src/actor/config.ts +91 -0
  89. package/src/actor/instance/mod.ts +4 -4
  90. package/src/actor/mod.ts +2 -0
  91. package/src/common/engine.ts +28 -1
  92. package/src/devtools-loader/index.ts +4 -7
  93. package/src/devtools-loader/serve-devtools.ts +26 -0
  94. package/src/engine-client/actor-http-client.ts +2 -2
  95. package/src/engine-client/ws-proxy.ts +5 -0
  96. package/src/inspector-tab/mod.ts +315 -0
  97. package/src/registry/config/index.ts +37 -7
  98. package/src/registry/index.ts +4 -2
  99. package/src/registry/native.ts +125 -8
  100. package/src/registry/runtime.ts +27 -1
  101. package/src/utils/env-vars.ts +6 -0
  102. package/dist/tsup/chunk-2U6RLFKX.cjs.map +0 -1
  103. package/dist/tsup/chunk-3EVVOYFD.js.map +0 -1
  104. package/dist/tsup/chunk-6KTMKPNU.cjs.map +0 -1
  105. package/dist/tsup/chunk-OLIJHKLL.js.map +0 -1
  106. package/dist/tsup/chunk-VNMIAPPF.cjs.map +0 -1
  107. package/dist/tsup/chunk-WHYBAEWG.cjs.map +0 -1
  108. package/dist/tsup/chunk-WIMUFZVJ.js.map +0 -1
  109. /package/dist/tsup/{chunk-OOB32JVG.js.map → chunk-5LHIXIMF.js.map} +0 -0
  110. /package/dist/tsup/{chunk-EWVOWEMD.js.map → chunk-7URXZWTR.js.map} +0 -0
  111. /package/dist/tsup/{chunk-QKSGGKGQ.js.map → chunk-CJYYFRLA.js.map} +0 -0
  112. /package/dist/tsup/{chunk-VLXRFJ7P.js.map → chunk-Q6R3ND6W.js.map} +0 -0
@@ -983,6 +983,10 @@ type ActorKvListOptions<T extends ActorKvValueType = "text", K extends ActorKvKe
983
983
  limit?: number;
984
984
  };
985
985
  type ActorClientFor<T> = T extends Registry<any> ? Client<T> : T;
986
+ /**
987
+ * @deprecated Actor KV is deprecated. Use embedded SQLite (`c.db` / `c.sql`)
988
+ * or actor state instead.
989
+ */
986
990
  interface ActorKv {
987
991
  get<T extends ActorKvValueType = "text">(key: Uint8Array | string, options?: ActorKvValueOptions<T>): Promise<ActorKvValueTypeMap[T] | null>;
988
992
  put<T extends ActorKvValueType = "text">(key: Uint8Array | string, value: Uint8Array | string | ArrayBuffer, options?: ActorKvValueOptions<T>): Promise<void>;
@@ -1074,6 +1078,10 @@ interface ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase
1074
1078
  [RAW_STATE_SYMBOL](): TState;
1075
1079
  state: TState;
1076
1080
  vars: TVars;
1081
+ /**
1082
+ * @deprecated Actor KV is deprecated. Use embedded SQLite (`db` / `sql`)
1083
+ * or actor state instead.
1084
+ */
1077
1085
  readonly kv: ActorKv;
1078
1086
  readonly db: InferDatabaseClient<TDatabase>;
1079
1087
  readonly schedule: ActorSchedule;
@@ -1198,6 +1206,25 @@ declare const ActorConfigSchema: z.ZodObject<{
1198
1206
  preloadMaxWorkflowBytes: z.ZodOptional<z.ZodNumber>;
1199
1207
  preloadMaxConnectionsBytes: z.ZodOptional<z.ZodNumber>;
1200
1208
  }, z.core.$strict>>;
1209
+ inspector: z.ZodOptional<z.ZodObject<{
1210
+ tabs: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1211
+ id: z.ZodString;
1212
+ label: z.ZodString;
1213
+ source: z.ZodString;
1214
+ icon: z.ZodOptional<z.ZodString>;
1215
+ hidden: z.ZodOptional<z.ZodLiteral<false>>;
1216
+ }, z.core.$strict>, z.ZodObject<{
1217
+ id: z.ZodEnum<{
1218
+ state: "state";
1219
+ queue: "queue";
1220
+ workflow: "workflow";
1221
+ database: "database";
1222
+ connections: "connections";
1223
+ console: "console";
1224
+ }>;
1225
+ hidden: z.ZodLiteral<true>;
1226
+ }, z.core.$strict>]>>>;
1227
+ }, z.core.$strict>>;
1201
1228
  }, z.core.$strict>;
1202
1229
  type CreateState<TState, _TConnParams, _TConnState, _TVars, TInput, TDatabase extends AnyDatabaseProvider, TEvents extends EventSchemaConfig, TQueues extends QueueSchemaConfig> = {
1203
1230
  state: TState;
@@ -1469,6 +1496,8 @@ declare const RegistryConfigSchema: z$2.ZodPipe<z$2.ZodObject<{
1469
1496
  httpPort: z$2.ZodDefault<z$2.ZodOptional<z$2.ZodNumber>>;
1470
1497
  httpHost: z$2.ZodOptional<z$2.ZodString>;
1471
1498
  startEngine: z$2.ZodDefault<z$2.ZodBoolean>;
1499
+ engineHost: z$2.ZodDefault<z$2.ZodOptional<z$2.ZodString>>;
1500
+ enginePort: z$2.ZodDefault<z$2.ZodOptional<z$2.ZodNumber>>;
1472
1501
  engineVersion: z$2.ZodDefault<z$2.ZodOptional<z$2.ZodString>>;
1473
1502
  configurePool: z$2.ZodOptional<z$2.ZodOptional<z$2.ZodObject<{
1474
1503
  name: z$2.ZodOptional<z$2.ZodString>;
@@ -1534,6 +1563,8 @@ declare const RegistryConfigSchema: z$2.ZodPipe<z$2.ZodObject<{
1534
1563
  httpBasePath: string;
1535
1564
  httpPort: number;
1536
1565
  startEngine: boolean;
1566
+ engineHost: string;
1567
+ enginePort: number;
1537
1568
  engineVersion: string;
1538
1569
  envoy: {
1539
1570
  poolName: string;
@@ -1585,6 +1616,8 @@ declare const RegistryConfigSchema: z$2.ZodPipe<z$2.ZodObject<{
1585
1616
  httpBasePath: string;
1586
1617
  httpPort: number;
1587
1618
  startEngine: boolean;
1619
+ engineHost: string;
1620
+ enginePort: number;
1588
1621
  engineVersion: string;
1589
1622
  serverless: {
1590
1623
  basePath: string;
@@ -1780,6 +1813,21 @@ interface RuntimeActorConfig {
1780
1813
  actions?: Array<{
1781
1814
  name: string;
1782
1815
  }>;
1816
+ inspectorTabs?: Array<RuntimeInspectorTabEntry>;
1817
+ }
1818
+ interface RuntimeInspectorTabEntry {
1819
+ id: string;
1820
+ /** Required for custom entries; omitted for built-in hides. */
1821
+ label?: string;
1822
+ /**
1823
+ * Required for custom entries — absolute path to the source directory.
1824
+ * Resolved on the TS side before being handed to the runtime.
1825
+ */
1826
+ source?: string;
1827
+ /** Optional icon id for custom entries. */
1828
+ icon?: string;
1829
+ /** Set to true for built-in hide entries. */
1830
+ hidden?: boolean;
1783
1831
  }
1784
1832
  interface RuntimeServeConfig {
1785
1833
  version: number;
@@ -1788,6 +1836,8 @@ interface RuntimeServeConfig {
1788
1836
  namespace: string;
1789
1837
  poolName: string;
1790
1838
  engineBinaryPath?: string;
1839
+ engineHost?: string;
1840
+ enginePort?: number;
1791
1841
  handleInspectorHttpInRuntime?: boolean;
1792
1842
  inspectorTestToken?: string;
1793
1843
  serverlessBasePath?: string;
@@ -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}`);
@@ -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.12",
197
+ version: "2.3.0-rc.14",
204
198
  description: "Lightweight libraries for building stateful actors on edge platforms",
205
199
  license: "Apache-2.0",
206
200
  keywords: [
@@ -326,6 +320,16 @@ var package_default = {
326
320
  default: "./dist/tsup/inspector/mod.cjs"
327
321
  }
328
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
+ },
329
333
  "./inspector/client": {
330
334
  import: {
331
335
  types: "./dist/browser/inspector/client.d.ts",
@@ -361,7 +365,7 @@ var package_default = {
361
365
  "./dist/tsup/chunk-*.cjs"
362
366
  ],
363
367
  scripts: {
364
- 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 src/dynamic/mod.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",
365
369
  "build:browser": "tsup --config tsup.browser.config.ts",
366
370
  "check-types": "tsc --noEmit",
367
371
  lint: "biome check . && pnpm run check:test-skips && pnpm run check:wait-for-comments",
@@ -437,12 +441,81 @@ var package_default = {
437
441
  stableVersion: "0.8.0"
438
442
  };
439
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
+
440
518
  // src/common/log.ts
441
- import {
442
- pino,
443
- stdTimeFunctions
444
- } from "pino";
445
- import { z } from "zod/v4";
446
519
  var baseLogger;
447
520
  var configuredLogLevel;
448
521
  var loggerCache = /* @__PURE__ */ new Map();
@@ -587,74 +660,12 @@ function quoteLogfmtString(value) {
587
660
  return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n")}"`;
588
661
  }
589
662
 
590
- // src/utils.ts
591
- var VERSION = package_default.version;
592
- var _userAgent;
593
- function httpUserAgent() {
594
- if (_userAgent !== void 0) {
595
- return _userAgent;
596
- }
597
- let userAgent = `RivetKit/${VERSION}`;
598
- const navigatorObj = typeof navigator !== "undefined" ? navigator : void 0;
599
- if (navigatorObj?.userAgent) userAgent += ` ${navigatorObj.userAgent}`;
600
- _userAgent = userAgent;
601
- return userAgent;
602
- }
603
- function getEnvUniversal(key) {
604
- if (typeof Deno !== "undefined") {
605
- return Deno.env.get(key);
606
- } else if (typeof process !== "undefined") {
607
- return process.env[key];
608
- }
609
- }
610
- function promiseWithResolvers(onReject) {
611
- let resolve;
612
- let reject;
613
- const promise = new Promise((res, rej) => {
614
- resolve = res;
615
- reject = rej;
616
- });
617
- promise.catch(onReject);
618
- return { promise, resolve, reject };
619
- }
620
- function bufferToArrayBuffer(buf) {
621
- return buf.buffer.slice(
622
- buf.byteOffset,
623
- buf.byteOffset + buf.byteLength
624
- );
625
- }
626
- function combineUrlPath(endpoint, path, queryParams) {
627
- const baseUrl = new URL(endpoint);
628
- const pathParts = path.split("?");
629
- const pathOnly = pathParts[0];
630
- const existingQuery = pathParts[1] || "";
631
- const basePath = baseUrl.pathname.replace(/\/$/, "");
632
- const cleanPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
633
- const fullPath = (basePath + cleanPath).replace(/\/\//g, "/");
634
- const queryParts = [];
635
- if (existingQuery) {
636
- queryParts.push(existingQuery);
637
- }
638
- if (queryParams) {
639
- for (const [key, value] of Object.entries(queryParams)) {
640
- if (value !== void 0) {
641
- queryParts.push(
642
- `${encodeURIComponent(key)}=${encodeURIComponent(value)}`
643
- );
644
- }
645
- }
646
- }
647
- const fullQuery = queryParts.length > 0 ? `?${queryParts.join("&")}` : "";
648
- return `${baseUrl.protocol}//${baseUrl.host}${fullPath}${fullQuery}`;
649
- }
650
-
651
663
  // src/devtools-loader/log.ts
652
664
  function logger() {
653
665
  return getLogger("devtools");
654
666
  }
655
667
 
656
668
  // src/devtools-loader/index.ts
657
- var DEFAULT_DEVTOOLS_URL = (version = VERSION) => `https://releases.rivet.dev/rivet/latest/devtools/mod.js?v=${version}`;
658
669
  var scriptId = "rivetkit-devtools-script";
659
670
  function injectDevtools(config) {
660
671
  if (!window) {
@@ -662,9 +673,10 @@ function injectDevtools(config) {
662
673
  return;
663
674
  }
664
675
  if (!document.getElementById(scriptId)) {
676
+ const src = `${config.endpoint?.replace(/\/$/, "")}/devtools/mod.js`;
665
677
  const script = document.createElement("script");
666
678
  script.id = scriptId;
667
- script.src = DEFAULT_DEVTOOLS_URL();
679
+ script.src = src;
668
680
  script.async = true;
669
681
  document.head.appendChild(script);
670
682
  }
@@ -1110,7 +1122,7 @@ async function sendHttpRequestToGateway(runConfig, gatewayUrl, actorRequest, opt
1110
1122
  if (reqBody.byteLength !== 0) {
1111
1123
  bodyToSend = reqBody;
1112
1124
  guardHeaders.delete("transfer-encoding");
1113
- guardHeaders.set("content-length", String(bodyToSend.byteLength));
1125
+ guardHeaders.delete("content-length");
1114
1126
  }
1115
1127
  }
1116
1128
  const guardRequest = new Request(gatewayUrl, {
@@ -4004,6 +4016,8 @@ async function createWebSocketProxy(_c, targetUrl, protocols) {
4004
4016
  reject(error);
4005
4017
  });
4006
4018
  });
4019
+ state.connectPromise.catch(() => {
4020
+ });
4007
4021
  state.targetWs.addEventListener("message", (event) => {
4008
4022
  if (typeof event.data === "string" || event.data instanceof ArrayBuffer) {
4009
4023
  clientWs.send(event.data);