rivetkit 2.3.20 → 2.3.21

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 (130) hide show
  1. package/dist/browser/client.d.ts +43 -5
  2. package/dist/browser/client.js +302 -60
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +2 -1
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/actor/errors.cjs.map +1 -1
  7. package/dist/tsup/agent-os/index.cjs +2 -1
  8. package/dist/tsup/agent-os/index.cjs.map +1 -1
  9. package/dist/tsup/agent-os/index.d.cts +32 -4
  10. package/dist/tsup/agent-os/index.d.ts +32 -4
  11. package/dist/tsup/agent-os/index.js +2 -1
  12. package/dist/tsup/agent-os/index.js.map +1 -1
  13. package/dist/tsup/{chunk-553CIQJY.js → chunk-2CI2IEVN.js} +2 -2
  14. package/dist/tsup/{chunk-W2PXGWMR.js → chunk-5EGLHQJJ.js} +2 -2
  15. package/dist/tsup/{chunk-DMQUERRN.js → chunk-5IBUZFLP.js} +2 -2
  16. package/dist/tsup/{chunk-76YTS32R.cjs → chunk-6LRPYB4Q.cjs} +4 -4
  17. package/dist/tsup/chunk-6LRPYB4Q.cjs.map +1 -0
  18. package/dist/tsup/{chunk-WAISW7KR.cjs → chunk-APOANSDG.cjs} +10 -10
  19. package/dist/tsup/chunk-APOANSDG.cjs.map +1 -0
  20. package/dist/tsup/{chunk-IHKDFKM4.cjs → chunk-ARGNQGYG.cjs} +3 -3
  21. package/dist/tsup/chunk-ARGNQGYG.cjs.map +1 -0
  22. package/dist/tsup/{chunk-A36FMKOV.cjs → chunk-B5SNXPSS.cjs} +448 -199
  23. package/dist/tsup/chunk-B5SNXPSS.cjs.map +1 -0
  24. package/dist/tsup/{chunk-SNNVRHLX.js → chunk-CJXBGTVT.js} +2 -2
  25. package/dist/tsup/{chunk-CVLNRT7O.cjs → chunk-GHKQC4PD.cjs} +3 -3
  26. package/dist/tsup/chunk-GHKQC4PD.cjs.map +1 -0
  27. package/dist/tsup/chunk-JX2ITWAV.cjs.map +1 -1
  28. package/dist/tsup/chunk-KVFIONKQ.cjs.map +1 -1
  29. package/dist/tsup/{chunk-2CE5UNWK.cjs → chunk-KWGN2ZBJ.cjs} +3 -2
  30. package/dist/tsup/chunk-KWGN2ZBJ.cjs.map +1 -0
  31. package/dist/tsup/{chunk-3WS7Z64U.cjs → chunk-LWSLKKZ5.cjs} +3 -3
  32. package/dist/tsup/chunk-LWSLKKZ5.cjs.map +1 -0
  33. package/dist/tsup/chunk-MYWZCDML.cjs.map +1 -1
  34. package/dist/tsup/{chunk-RSIOGT2U.cjs → chunk-NL2EIKK6.cjs} +7 -7
  35. package/dist/tsup/chunk-NL2EIKK6.cjs.map +1 -0
  36. package/dist/tsup/chunk-NWCAIWHL.cjs.map +1 -1
  37. package/dist/tsup/{chunk-5G2J26VM.js → chunk-PYRI75DL.js} +314 -65
  38. package/dist/tsup/chunk-PYRI75DL.js.map +1 -0
  39. package/dist/tsup/{chunk-2NXLTFWI.js → chunk-RFN3BG6D.js} +3 -3
  40. package/dist/tsup/chunk-RFN3BG6D.js.map +1 -0
  41. package/dist/tsup/{chunk-DHWZTUKA.js → chunk-RGIZNZYO.js} +3 -2
  42. package/dist/tsup/chunk-RGIZNZYO.js.map +1 -0
  43. package/dist/tsup/{chunk-TZVAVPGJ.js → chunk-VMMXXVDO.js} +4 -4
  44. package/dist/tsup/client/mod.cjs +5 -5
  45. package/dist/tsup/client/mod.cjs.map +1 -1
  46. package/dist/tsup/client/mod.d.cts +12 -3
  47. package/dist/tsup/client/mod.d.ts +12 -3
  48. package/dist/tsup/client/mod.js +4 -4
  49. package/dist/tsup/common/log.cjs +2 -2
  50. package/dist/tsup/common/log.cjs.map +1 -1
  51. package/dist/tsup/common/log.js +1 -1
  52. package/dist/tsup/common/websocket.cjs +3 -3
  53. package/dist/tsup/common/websocket.cjs.map +1 -1
  54. package/dist/tsup/common/websocket.js +2 -2
  55. package/dist/tsup/{config-Be-VOHaX.d.ts → config-Bc1nnvUl.d.ts} +35 -5
  56. package/dist/tsup/{config-Ct5uXxXk.d.cts → config-Do_0guSS.d.cts} +35 -5
  57. package/dist/tsup/{context-Cw-11Q-B.d.cts → context-CgNkhjdY.d.cts} +1 -1
  58. package/dist/tsup/{context-CXLa0BIM.d.ts → context-oGQxZDPz.d.ts} +1 -1
  59. package/dist/tsup/db/drizzle.cjs +2 -2
  60. package/dist/tsup/db/drizzle.cjs.map +1 -1
  61. package/dist/tsup/db/drizzle.js +1 -1
  62. package/dist/tsup/db/mod.cjs +3 -3
  63. package/dist/tsup/db/mod.cjs.map +1 -1
  64. package/dist/tsup/db/mod.js +2 -2
  65. package/dist/tsup/dynamic/mod.cjs.map +1 -1
  66. package/dist/tsup/dynamic/mod.d.cts +2 -1
  67. package/dist/tsup/dynamic/mod.d.ts +2 -1
  68. package/dist/tsup/inspector/mod.cjs +5 -5
  69. package/dist/tsup/inspector/mod.cjs.map +1 -1
  70. package/dist/tsup/inspector/mod.js +4 -4
  71. package/dist/tsup/inspector/workflow.cjs +4 -4
  72. package/dist/tsup/inspector/workflow.cjs.map +1 -1
  73. package/dist/tsup/inspector/workflow.js +3 -3
  74. package/dist/tsup/inspector-tab/mod.cjs.map +1 -1
  75. package/dist/tsup/inspector-tab/mod.d.cts +3 -2
  76. package/dist/tsup/inspector-tab/mod.d.ts +3 -2
  77. package/dist/tsup/mod.cjs +105 -115
  78. package/dist/tsup/mod.cjs.map +1 -1
  79. package/dist/tsup/mod.d.cts +4 -3
  80. package/dist/tsup/mod.d.ts +4 -3
  81. package/dist/tsup/mod.js +29 -39
  82. package/dist/tsup/mod.js.map +1 -1
  83. package/dist/tsup/test/mod.cjs +6 -6
  84. package/dist/tsup/test/mod.cjs.map +1 -1
  85. package/dist/tsup/test/mod.d.cts +2 -1
  86. package/dist/tsup/test/mod.d.ts +2 -1
  87. package/dist/tsup/test/mod.js +4 -4
  88. package/dist/tsup/unstable/migrations.cjs.map +1 -1
  89. package/dist/tsup/utils.cjs +2 -2
  90. package/dist/tsup/utils.cjs.map +1 -1
  91. package/dist/tsup/utils.js +1 -1
  92. package/dist/tsup/workflow/mod.cjs +7 -7
  93. package/dist/tsup/workflow/mod.cjs.map +1 -1
  94. package/dist/tsup/workflow/mod.d.cts +4 -3
  95. package/dist/tsup/workflow/mod.d.ts +4 -3
  96. package/dist/tsup/workflow/mod.js +4 -4
  97. package/package.json +10 -9
  98. package/src/client/actor-conn.ts +34 -1
  99. package/src/client/actor-handle.ts +29 -1
  100. package/src/client/auth.ts +37 -0
  101. package/src/client/client.ts +10 -2
  102. package/src/client/config.ts +12 -1
  103. package/src/client/mod.ts +9 -0
  104. package/src/client/token-provider.test.ts +86 -0
  105. package/src/client/token-provider.ts +93 -0
  106. package/src/client/utils.ts +1 -0
  107. package/src/engine-client/actor-websocket-client.ts +2 -1
  108. package/src/engine-client/api-endpoints.ts +28 -0
  109. package/src/engine-client/driver.ts +4 -0
  110. package/src/engine-client/mod.ts +201 -64
  111. package/src/registry/config/envoy.ts +1 -17
  112. package/src/registry/config/index.test.ts +2 -2
  113. package/src/registry/config/index.ts +7 -2
  114. package/src/registry/index.ts +28 -0
  115. package/dist/tsup/chunk-2CE5UNWK.cjs.map +0 -1
  116. package/dist/tsup/chunk-2NXLTFWI.js.map +0 -1
  117. package/dist/tsup/chunk-3WS7Z64U.cjs.map +0 -1
  118. package/dist/tsup/chunk-5G2J26VM.js.map +0 -1
  119. package/dist/tsup/chunk-76YTS32R.cjs.map +0 -1
  120. package/dist/tsup/chunk-A36FMKOV.cjs.map +0 -1
  121. package/dist/tsup/chunk-CVLNRT7O.cjs.map +0 -1
  122. package/dist/tsup/chunk-DHWZTUKA.js.map +0 -1
  123. package/dist/tsup/chunk-IHKDFKM4.cjs.map +0 -1
  124. package/dist/tsup/chunk-RSIOGT2U.cjs.map +0 -1
  125. package/dist/tsup/chunk-WAISW7KR.cjs.map +0 -1
  126. /package/dist/tsup/{chunk-553CIQJY.js.map → chunk-2CI2IEVN.js.map} +0 -0
  127. /package/dist/tsup/{chunk-W2PXGWMR.js.map → chunk-5EGLHQJJ.js.map} +0 -0
  128. /package/dist/tsup/{chunk-DMQUERRN.js.map → chunk-5IBUZFLP.js.map} +0 -0
  129. /package/dist/tsup/{chunk-SNNVRHLX.js.map → chunk-CJXBGTVT.js.map} +0 -0
  130. /package/dist/tsup/{chunk-TZVAVPGJ.js.map → chunk-VMMXXVDO.js.map} +0 -0
@@ -5,7 +5,7 @@ var _chunkMYWZCDMLcjs = require('./chunk-MYWZCDML.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunk3WS7Z64Ucjs = require('./chunk-3WS7Z64U.cjs');
8
+ var _chunkLWSLKKZ5cjs = require('./chunk-LWSLKKZ5.cjs');
9
9
 
10
10
 
11
11
  var _chunkKVFIONKQcjs = require('./chunk-KVFIONKQ.cjs');
@@ -35,7 +35,7 @@ var _chunkKVFIONKQcjs = require('./chunk-KVFIONKQ.cjs');
35
35
 
36
36
 
37
37
 
38
- var _chunk2CE5UNWKcjs = require('./chunk-2CE5UNWK.cjs');
38
+ var _chunkKWGN2ZBJcjs = require('./chunk-KWGN2ZBJ.cjs');
39
39
 
40
40
 
41
41
 
@@ -2131,7 +2131,7 @@ async function checkForSchedulingError(group, code, actorId, query, driver, rayI
2131
2131
  try {
2132
2132
  const actor = await driver.getForId({ name, actorId });
2133
2133
  if (actor == null ? void 0 : actor.error) {
2134
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).info({
2134
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).info({
2135
2135
  msg: "found actor scheduling error",
2136
2136
  actorId,
2137
2137
  error: actor.error
@@ -2145,10 +2145,10 @@ async function checkForSchedulingError(group, code, actorId, query, driver, rayI
2145
2145
  );
2146
2146
  }
2147
2147
  } catch (err) {
2148
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
2148
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
2149
2149
  msg: "failed to fetch actor details for scheduling error check",
2150
2150
  actorId,
2151
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
2151
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
2152
2152
  });
2153
2153
  }
2154
2154
  return null;
@@ -2456,7 +2456,7 @@ function parseWebSocketCloseReason(reason) {
2456
2456
  const [mainPart, rayId] = reason.split("#");
2457
2457
  const [group, code] = mainPart.split(".");
2458
2458
  if (!group || !code) {
2459
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({ msg: "failed to parse close reason", reason });
2459
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({ msg: "failed to parse close reason", reason });
2460
2460
  return void 0;
2461
2461
  }
2462
2462
  return {
@@ -2478,11 +2478,11 @@ function messageLength(message) {
2478
2478
  if (typeof message === "string") {
2479
2479
  return message.length;
2480
2480
  }
2481
- _chunk2CE5UNWKcjs.assertUnreachable.call(void 0, message);
2481
+ _chunkKWGN2ZBJcjs.assertUnreachable.call(void 0, message);
2482
2482
  }
2483
2483
  async function sendHttpRequest(opts) {
2484
2484
  var _a, _b, _c;
2485
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
2485
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
2486
2486
  msg: "sending http request",
2487
2487
  url: opts.url,
2488
2488
  encoding: opts.encoding
@@ -2491,8 +2491,8 @@ async function sendHttpRequest(opts) {
2491
2491
  let bodyData;
2492
2492
  if (opts.method === "POST" || opts.method === "PUT") {
2493
2493
  _invariant2.default.call(void 0, opts.body !== void 0, "missing body");
2494
- contentType = _chunk2CE5UNWKcjs.contentTypeForEncoding.call(void 0, opts.encoding);
2495
- bodyData = _chunk2CE5UNWKcjs.serializeWithEncoding.call(void 0,
2494
+ contentType = _chunkKWGN2ZBJcjs.contentTypeForEncoding.call(void 0, opts.encoding);
2495
+ bodyData = _chunkKWGN2ZBJcjs.serializeWithEncoding.call(void 0,
2496
2496
  opts.encoding,
2497
2497
  opts.body,
2498
2498
  opts.requestVersionedDataHandler,
@@ -2512,7 +2512,7 @@ async function sendHttpRequest(opts) {
2512
2512
  ...contentType ? {
2513
2513
  "Content-Type": contentType
2514
2514
  } : {},
2515
- "User-Agent": _chunk2CE5UNWKcjs.httpUserAgent.call(void 0, )
2515
+ "User-Agent": _chunkKWGN2ZBJcjs.httpUserAgent.call(void 0, )
2516
2516
  },
2517
2517
  body: bodyData,
2518
2518
  credentials: "include",
@@ -2530,7 +2530,7 @@ async function sendHttpRequest(opts) {
2530
2530
  const rayId = response.headers.get("x-rivet-ray-id");
2531
2531
  const encoding = (contentType2 == null ? void 0 : contentType2.includes("application/json")) ? "json" : opts.encoding;
2532
2532
  try {
2533
- const responseData = _chunk2CE5UNWKcjs.deserializeWithEncoding.call(void 0,
2533
+ const responseData = _chunkKWGN2ZBJcjs.deserializeWithEncoding.call(void 0,
2534
2534
  encoding,
2535
2535
  new Uint8Array(bufferResponse),
2536
2536
  HTTP_RESPONSE_ERROR_VERSIONED,
@@ -2548,7 +2548,7 @@ async function sendHttpRequest(opts) {
2548
2548
  group: bare5.group,
2549
2549
  code: bare5.code,
2550
2550
  message: bare5.message,
2551
- metadata: bare5.metadata ? _chunk2CE5UNWKcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.metadata)) : void 0,
2551
+ metadata: bare5.metadata ? _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.metadata)) : void 0,
2552
2552
  actor: bare5.actor ? {
2553
2553
  actorId: bare5.actor.actorId,
2554
2554
  generation: Number(bare5.actor.generation),
@@ -2556,7 +2556,7 @@ async function sendHttpRequest(opts) {
2556
2556
  } : void 0
2557
2557
  })
2558
2558
  );
2559
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
2559
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
2560
2560
  msg: "http error response",
2561
2561
  group: responseData.group,
2562
2562
  code: responseData.code,
@@ -2574,7 +2574,8 @@ async function sendHttpRequest(opts) {
2574
2574
  {
2575
2575
  metadata: responseData.metadata,
2576
2576
  rayId: _nullishCoalesce(rayId, () => ( void 0)),
2577
- actor: responseData.actor
2577
+ actor: responseData.actor,
2578
+ statusCode: response.status
2578
2579
  }
2579
2580
  );
2580
2581
  } catch (error) {
@@ -2602,7 +2603,7 @@ ${textResponse}`
2602
2603
  }
2603
2604
  try {
2604
2605
  const buffer = new Uint8Array(await response.arrayBuffer());
2605
- return _chunk2CE5UNWKcjs.deserializeWithEncoding.call(void 0,
2606
+ return _chunkKWGN2ZBJcjs.deserializeWithEncoding.call(void 0,
2606
2607
  opts.encoding,
2607
2608
  buffer,
2608
2609
  opts.responseVersionedDataHandler,
@@ -2650,8 +2651,8 @@ function createQueueSender(senderOptions) {
2650
2651
  }),
2651
2652
  requestToBare: (value) => ({
2652
2653
  name: _nullishCoalesce(value.name, () => ( name)),
2653
- body: _chunk2CE5UNWKcjs.bufferToArrayBuffer.call(void 0,
2654
- _chunk2CE5UNWKcjs.encodeCborCompat.call(void 0, value.body)
2654
+ body: _chunkKWGN2ZBJcjs.bufferToArrayBuffer.call(void 0,
2655
+ _chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, value.body)
2655
2656
  ),
2656
2657
  wait: _nullishCoalesce(value.wait, () => ( false)),
2657
2658
  timeout: value.timeout !== void 0 ? BigInt(value.timeout) : null
@@ -2671,7 +2672,7 @@ function createQueueSender(senderOptions) {
2671
2672
  }
2672
2673
  return {
2673
2674
  status: bare5.status,
2674
- response: _chunk2CE5UNWKcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.response))
2675
+ response: _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.response))
2675
2676
  };
2676
2677
  }
2677
2678
  });
@@ -2737,7 +2738,7 @@ async function rawHttpFetch(driver, target, params, input, init, options = {}, t
2737
2738
  throw new TypeError("Invalid input type for fetch");
2738
2739
  }
2739
2740
  try {
2740
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug(
2741
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug(
2741
2742
  "directId" in target ? {
2742
2743
  msg: "sending raw http request to actor",
2743
2744
  actorId: target.directId
@@ -2763,7 +2764,7 @@ async function rawHttpFetch(driver, target, params, input, init, options = {}, t
2763
2764
  });
2764
2765
  return driver.sendRequest(target, proxyRequest, options);
2765
2766
  } catch (err) {
2766
- const { group, code, message, metadata, rayId, actor } = _chunk2CE5UNWKcjs.deconstructError.call(void 0, err, true);
2767
+ const { group, code, message, metadata, rayId, actor } = _chunkKWGN2ZBJcjs.deconstructError.call(void 0, err, true);
2767
2768
  throw new (0, _chunkJX2ITWAVcjs.RivetError)(group, code, message, { metadata, rayId, actor });
2768
2769
  }
2769
2770
  }
@@ -2784,7 +2785,7 @@ async function rawWebSocket(driver, target, params, path, _protocols, options =
2784
2785
  }
2785
2786
  }
2786
2787
  const fullPath = `${PATH_WEBSOCKET_PREFIX}${pathPortion}${queryPortion}`;
2787
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
2788
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
2788
2789
  msg: "opening websocket",
2789
2790
  target,
2790
2791
  encoding,
@@ -2921,7 +2922,7 @@ var ActorHandleRaw = class {
2921
2922
  }
2922
2923
  }).send(name, body, options);
2923
2924
  } catch (err) {
2924
- const { group, code, message, metadata, rayId, actor } = _chunk2CE5UNWKcjs.deconstructError.call(void 0, err, true);
2925
+ const { group, code, message, metadata, rayId, actor } = _chunkKWGN2ZBJcjs.deconstructError.call(void 0, err, true);
2925
2926
  if (this.#shouldRetryQueueDispatchOverload(
2926
2927
  group,
2927
2928
  code,
@@ -3036,13 +3037,13 @@ var ActorHandleRaw = class {
3036
3037
  gatewayOptions
3037
3038
  );
3038
3039
  actorId = "directId" in target ? target.directId : void 0;
3039
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug(
3040
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug(
3040
3041
  actorId ? { msg: "using direct actor gateway target", actorId } : {
3041
3042
  msg: "using query gateway target for action",
3042
3043
  query: this.#actorResolutionState
3043
3044
  }
3044
3045
  );
3045
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
3046
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
3046
3047
  msg: "handling action",
3047
3048
  name: opts.name,
3048
3049
  encoding: this.#encoding
@@ -3079,19 +3080,19 @@ var ActorHandleRaw = class {
3079
3080
  args
3080
3081
  }),
3081
3082
  requestToBare: (args) => ({
3082
- args: _chunk2CE5UNWKcjs.bufferToArrayBuffer.call(void 0,
3083
- _chunk2CE5UNWKcjs.encodeCborCompat.call(void 0, args)
3083
+ args: _chunkKWGN2ZBJcjs.bufferToArrayBuffer.call(void 0,
3084
+ _chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, args)
3084
3085
  )
3085
3086
  }),
3086
3087
  responseFromJson: (json) => json.output,
3087
- responseFromBare: (bare5) => _chunk2CE5UNWKcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.output))
3088
+ responseFromBare: (bare5) => _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.output))
3088
3089
  });
3089
3090
  if (opts.name === "destroy" && actorId) {
3090
3091
  await this.#waitForDestroyActionToSettle(actorId);
3091
3092
  }
3092
3093
  return output;
3093
3094
  } catch (err) {
3094
- const { group, code, message, metadata, rayId, actor } = _chunk2CE5UNWKcjs.deconstructError.call(void 0, err, true);
3095
+ const { group, code, message, metadata, rayId, actor } = _chunkKWGN2ZBJcjs.deconstructError.call(void 0, err, true);
3095
3096
  if (await this.#shouldRetrySchedulingError(
3096
3097
  group,
3097
3098
  code,
@@ -3247,7 +3248,7 @@ var ActorHandleRaw = class {
3247
3248
  * @returns {ActorConn<AD>} A connection to the actor.
3248
3249
  */
3249
3250
  connect(params, options = {}) {
3250
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
3251
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
3251
3252
  msg: "establishing connection from handle",
3252
3253
  query: this.#actorResolutionState
3253
3254
  });
@@ -3324,7 +3325,7 @@ var ActorHandleRaw = class {
3324
3325
  }
3325
3326
  return response;
3326
3327
  } catch (err) {
3327
- const { group, code, message, metadata, rayId, actor } = _chunk2CE5UNWKcjs.deconstructError.call(void 0, err, true);
3328
+ const { group, code, message, metadata, rayId, actor } = _chunkKWGN2ZBJcjs.deconstructError.call(void 0, err, true);
3328
3329
  if (await this.#shouldRetrySchedulingError(
3329
3330
  group,
3330
3331
  code,
@@ -3420,7 +3421,7 @@ var ActorHandleRaw = class {
3420
3421
  const contentType = response.headers.get("content-type");
3421
3422
  const encoding = (contentType == null ? void 0 : contentType.includes("application/json")) ? "json" : this.#encoding;
3422
3423
  try {
3423
- const error = _chunk2CE5UNWKcjs.deserializeWithEncoding.call(void 0,
3424
+ const error = _chunkKWGN2ZBJcjs.deserializeWithEncoding.call(void 0,
3424
3425
  encoding,
3425
3426
  new Uint8Array(await response.clone().arrayBuffer()),
3426
3427
  HTTP_RESPONSE_ERROR_VERSIONED,
@@ -3436,7 +3437,7 @@ var ActorHandleRaw = class {
3436
3437
  group: bare5.group,
3437
3438
  code: bare5.code,
3438
3439
  message: bare5.message,
3439
- metadata: bare5.metadata ? _chunk2CE5UNWKcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.metadata)) : void 0,
3440
+ metadata: bare5.metadata ? _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.metadata)) : void 0,
3440
3441
  actor: bare5.actor ? {
3441
3442
  actorId: bare5.actor.actorId,
3442
3443
  generation: Number(bare5.actor.generation),
@@ -3490,6 +3491,22 @@ var ActorHandleRaw = class {
3490
3491
  "dynamic actor resolution did not produce a direct actor id"
3491
3492
  );
3492
3493
  }
3494
+ /** Issue a token scoped to this actor. Defaults to actor gateway read access. */
3495
+ async issueToken(options = {}) {
3496
+ const actorId = await this.resolve();
3497
+ const permissions = _nullishCoalesce(options.permissions, () => ( {
3498
+ actor_gateway: ["read"]
3499
+ }));
3500
+ const grants = Object.keys(permissions).flatMap((resource) => {
3501
+ const operations = permissions[resource];
3502
+ return operations ? [{ resource, target: { id: actorId }, operations }] : [];
3503
+ });
3504
+ return this.#driver.issueToken({
3505
+ subject: options.subject,
3506
+ expiresIn: options.expiresIn,
3507
+ grants
3508
+ });
3509
+ }
3493
3510
  /**
3494
3511
  * Returns the raw URL for routing traffic to the actor.
3495
3512
  */
@@ -3524,6 +3541,8 @@ var ACTOR_CONNS_SYMBOL = /* @__PURE__ */ Symbol("actorConns");
3524
3541
  var CREATE_ACTOR_CONN_PROXY = /* @__PURE__ */ Symbol("createActorConnProxy");
3525
3542
  var ClientRaw = (_class = class {
3526
3543
  #disposed = false;
3544
+ /** Issue namespace-scoped tokens with an explicit grant list. */
3545
+
3527
3546
  __init() {this[ACTOR_CONNS_SYMBOL] = /* @__PURE__ */ new Set()}
3528
3547
  #driver;
3529
3548
  #encodingKind;
@@ -3535,6 +3554,9 @@ var ClientRaw = (_class = class {
3535
3554
  */
3536
3555
  constructor(driver, options = {}) {;_class.prototype.__init.call(this);
3537
3556
  this.#driver = driver;
3557
+ this.auth = {
3558
+ issueToken: (issueOptions) => this.#driver.issueToken(issueOptions)
3559
+ };
3538
3560
  this.#encodingKind = _nullishCoalesce(options.encoding, () => ( "bare"));
3539
3561
  this.#gatewayOptions = _nullishCoalesce(options.gateway, () => ( {}));
3540
3562
  this.#currentActorInvocation = options.currentActorInvocation;
@@ -3550,7 +3572,7 @@ var ClientRaw = (_class = class {
3550
3572
  * @returns {ActorHandle<AD>} - A handle to the actor.
3551
3573
  */
3552
3574
  getForId(name, actorId, opts) {
3553
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
3575
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
3554
3576
  msg: "get handle to actor with id",
3555
3577
  name,
3556
3578
  actorId,
@@ -3581,7 +3603,7 @@ var ClientRaw = (_class = class {
3581
3603
  */
3582
3604
  get(name, key, opts) {
3583
3605
  const keyArray = typeof key === "string" ? [key] : key || [];
3584
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
3606
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
3585
3607
  msg: "get handle to actor",
3586
3608
  name,
3587
3609
  key: keyArray,
@@ -3612,7 +3634,7 @@ var ClientRaw = (_class = class {
3612
3634
  */
3613
3635
  getOrCreate(name, key, opts) {
3614
3636
  const keyArray = typeof key === "string" ? [key] : key || [];
3615
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
3637
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
3616
3638
  msg: "get or create handle to actor",
3617
3639
  name,
3618
3640
  key: keyArray,
@@ -3656,7 +3678,7 @@ var ClientRaw = (_class = class {
3656
3678
  key: keyArray
3657
3679
  }
3658
3680
  };
3659
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
3681
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
3660
3682
  msg: "create actor handle",
3661
3683
  name,
3662
3684
  key: keyArray,
@@ -3664,7 +3686,7 @@ var ClientRaw = (_class = class {
3664
3686
  create: createQuery.create
3665
3687
  });
3666
3688
  const actorId = await resolveGatewayTarget(this.#driver, createQuery);
3667
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
3689
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
3668
3690
  msg: "created actor with ID",
3669
3691
  name,
3670
3692
  key: keyArray,
@@ -3711,11 +3733,11 @@ var ClientRaw = (_class = class {
3711
3733
  */
3712
3734
  async dispose() {
3713
3735
  if (this.#disposed) {
3714
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({ msg: "client already disconnected" });
3736
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({ msg: "client already disconnected" });
3715
3737
  return;
3716
3738
  }
3717
3739
  this.#disposed = true;
3718
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({ msg: "disposing client" });
3740
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({ msg: "disposing client" });
3719
3741
  const disposePromises = [];
3720
3742
  for (const conn of this[ACTOR_CONNS_SYMBOL].values()) {
3721
3743
  disposePromises.push(conn.dispose());
@@ -3827,6 +3849,74 @@ function createActorProxy(handle) {
3827
3849
  });
3828
3850
  }
3829
3851
 
3852
+ // src/client/token-provider.ts
3853
+ function isInvalidToken(group, code) {
3854
+ return group === "auth" && (code === "invalid_token" || code === "token_expired");
3855
+ }
3856
+ function isInvalidTokenResponse(response) {
3857
+ if (response.status !== 401) return false;
3858
+ const error = response.headers.get("x-rivet-error");
3859
+ if (!error) return false;
3860
+ const separator = error.indexOf(".");
3861
+ return separator > 0 && isInvalidToken(error.slice(0, separator), error.slice(separator + 1));
3862
+ }
3863
+ var TokenProvider = class {
3864
+ constructor(getToken) {
3865
+ this.getToken = getToken;
3866
+ }
3867
+ #cached;
3868
+ #pending;
3869
+ #pendingForce = false;
3870
+ async current() {
3871
+ if (this.#cached && (this.#cached.expiresAt === void 0 || Date.now() < this.#cached.expiresAt - 5e3)) {
3872
+ return this.#cached.token;
3873
+ }
3874
+ return this.#load(false);
3875
+ }
3876
+ /** A late rejection for an older token must never erase a newer credential. */
3877
+ async refreshIfCurrent(failedToken) {
3878
+ var _a;
3879
+ if (this.#pending !== void 0) {
3880
+ const wasForced = this.#pendingForce;
3881
+ const refreshed = await this.#pending;
3882
+ if (wasForced || refreshed !== failedToken) return refreshed;
3883
+ }
3884
+ if (((_a = this.#cached) == null ? void 0 : _a.token) !== failedToken) {
3885
+ return this.current();
3886
+ }
3887
+ return this.#load(true);
3888
+ }
3889
+ #load(forceRefresh) {
3890
+ if (this.#pending !== void 0) return this.#pending;
3891
+ const pending = Promise.resolve().then(() => this.getToken({ forceRefresh })).then((token) => {
3892
+ if (typeof token !== "string" || token.length === 0) {
3893
+ throw new Error(
3894
+ "getToken must resolve to a nonempty string"
3895
+ );
3896
+ }
3897
+ this.#cached = { token, expiresAt: jwtExpiration(token) };
3898
+ return token;
3899
+ }).finally(() => {
3900
+ if (this.#pending === pending) this.#pending = void 0;
3901
+ });
3902
+ this.#pending = pending;
3903
+ this.#pendingForce = forceRefresh;
3904
+ return pending;
3905
+ }
3906
+ };
3907
+ function jwtExpiration(token) {
3908
+ try {
3909
+ const payload = token.split(".")[1];
3910
+ if (!payload) return void 0;
3911
+ const claims = JSON.parse(
3912
+ atob(payload.replace(/-/g, "+").replace(/_/g, "/"))
3913
+ );
3914
+ return typeof claims.exp === "number" && Number.isSafeInteger(claims.exp) ? claims.exp * 1e3 : void 0;
3915
+ } catch (e3) {
3916
+ return void 0;
3917
+ }
3918
+ }
3919
+
3830
3920
  // src/client/actor-conn.ts
3831
3921
  var CONNECT_SYMBOL = /* @__PURE__ */ Symbol("connect");
3832
3922
  var ActorConnRaw = class {
@@ -3856,6 +3946,7 @@ var ActorConnRaw = class {
3856
3946
  /** Promise used to indicate the socket has connected successfully. This will be rejected if the connection fails. */
3857
3947
  #onOpenPromise;
3858
3948
  #websocket;
3949
+ #authRetryAvailable = true;
3859
3950
  #client;
3860
3951
  #driver;
3861
3952
  #currentActorInvocation;
@@ -3884,8 +3975,8 @@ var ActorConnRaw = class {
3884
3975
  if ("getForId" in actorResolutionState) {
3885
3976
  this.#actorId = actorResolutionState.getForId.actorId;
3886
3977
  }
3887
- this.#readyPromise = _chunk2CE5UNWKcjs.promiseWithResolvers.call(void 0,
3888
- (reason) => _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
3978
+ this.#readyPromise = _chunkKWGN2ZBJcjs.promiseWithResolvers.call(void 0,
3979
+ (reason) => _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
3889
3980
  msg: "unhandled ready promise rejection",
3890
3981
  reason
3891
3982
  })
@@ -3952,11 +4043,11 @@ var ActorConnRaw = class {
3952
4043
  `Invalid action call: expected an options object { name, args }, got ${typeof opts}. Use conn.actionName(...args) for the shorthand API.`
3953
4044
  );
3954
4045
  }
3955
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({ msg: "action", name: opts.name, args: opts.args });
4046
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({ msg: "action", name: opts.name, args: opts.args });
3956
4047
  const actionId = this.#actionIdCounter;
3957
4048
  this.#actionIdCounter += 1;
3958
- const { promise, resolve, reject } = _chunk2CE5UNWKcjs.promiseWithResolvers.call(void 0,
3959
- (reason) => _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
4049
+ const { promise, resolve, reject } = _chunkKWGN2ZBJcjs.promiseWithResolvers.call(void 0,
4050
+ (reason) => _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
3960
4051
  msg: "unhandled action promise rejection",
3961
4052
  reason
3962
4053
  })
@@ -3966,7 +4057,7 @@ var ActorConnRaw = class {
3966
4057
  resolve,
3967
4058
  reject
3968
4059
  });
3969
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4060
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
3970
4061
  msg: "added action to in-flight map",
3971
4062
  actionId,
3972
4063
  actionName: opts.name,
@@ -4006,9 +4097,9 @@ var ActorConnRaw = class {
4006
4097
  try {
4007
4098
  handler(status);
4008
4099
  } catch (err) {
4009
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4100
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4010
4101
  msg: "error in status change handler",
4011
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4102
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4012
4103
  });
4013
4104
  }
4014
4105
  }
@@ -4018,9 +4109,9 @@ var ActorConnRaw = class {
4018
4109
  try {
4019
4110
  handler();
4020
4111
  } catch (err) {
4021
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4112
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4022
4113
  msg: "error in open handler",
4023
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4114
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4024
4115
  });
4025
4116
  }
4026
4117
  }
@@ -4030,9 +4121,9 @@ var ActorConnRaw = class {
4030
4121
  try {
4031
4122
  handler();
4032
4123
  } catch (err) {
4033
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4124
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4034
4125
  msg: "error in close handler",
4035
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4126
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4036
4127
  });
4037
4128
  }
4038
4129
  }
@@ -4045,21 +4136,21 @@ var ActorConnRaw = class {
4045
4136
  minTimeout: 250,
4046
4137
  maxTimeout: 3e4,
4047
4138
  onFailedAttempt: (error) => {
4048
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
4139
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
4049
4140
  msg: "failed to reconnect",
4050
4141
  attempt: error.attemptNumber,
4051
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, error)
4142
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, error)
4052
4143
  });
4053
4144
  },
4054
4145
  // Cancel retry if aborted
4055
4146
  signal: this.#abortController.signal
4056
4147
  }).catch((err) => {
4057
4148
  if (err instanceof _pretry.AbortError || err.name === "AbortError" || !this.#shouldRetryConnectionOpenError(err)) {
4058
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).info({ msg: "connection retry aborted" });
4149
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).info({ msg: "connection retry aborted" });
4059
4150
  } else {
4060
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4151
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4061
4152
  msg: "unexpected error in connection retry",
4062
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4153
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4063
4154
  });
4064
4155
  }
4065
4156
  });
@@ -4068,8 +4159,8 @@ var ActorConnRaw = class {
4068
4159
  try {
4069
4160
  if (this.#onOpenPromise)
4070
4161
  throw new Error("#onOpenPromise already defined");
4071
- this.#onOpenPromise = _chunk2CE5UNWKcjs.promiseWithResolvers.call(void 0,
4072
- (reason) => _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
4162
+ this.#onOpenPromise = _chunkKWGN2ZBJcjs.promiseWithResolvers.call(void 0,
4163
+ (reason) => _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
4073
4164
  msg: "unhandled open promise rejection",
4074
4165
  reason
4075
4166
  })
@@ -4083,15 +4174,15 @@ var ActorConnRaw = class {
4083
4174
  const actorError = error instanceof _chunkJX2ITWAVcjs.RivetError ? error : new (0, _chunkJX2ITWAVcjs.RivetError)(
4084
4175
  "client",
4085
4176
  "connection_open_failed",
4086
- `Failed to open connection: ${_chunk2CE5UNWKcjs.stringifyError.call(void 0, error)}`,
4087
- { error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, error) }
4177
+ `Failed to open connection: ${_chunkKWGN2ZBJcjs.stringifyError.call(void 0, error)}`,
4178
+ { error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, error) }
4088
4179
  );
4089
4180
  this.#clearQueuedMessages();
4090
4181
  this.#rejectPendingPromises(actorError, false);
4091
4182
  this.#dispatchActorError(actorError);
4092
4183
  this.#setConnStatus("idle");
4093
4184
  throw new (0, _pretry.AbortError)(
4094
- error instanceof Error ? error : new Error(_chunk2CE5UNWKcjs.stringifyError.call(void 0, error))
4185
+ error instanceof Error ? error : new Error(_chunkKWGN2ZBJcjs.stringifyError.call(void 0, error))
4095
4186
  );
4096
4187
  } finally {
4097
4188
  this.#onOpenPromise = void 0;
@@ -4101,6 +4192,10 @@ var ActorConnRaw = class {
4101
4192
  if (error instanceof ActorConnDisposed) {
4102
4193
  return false;
4103
4194
  }
4195
+ if (error instanceof _chunkJX2ITWAVcjs.RivetError && isInvalidToken(error.group, error.code) && this.#driver.refreshAuthToken && this.#authRetryAvailable) {
4196
+ this.#authRetryAvailable = false;
4197
+ return true;
4198
+ }
4104
4199
  if (error instanceof _chunkJX2ITWAVcjs.RivetError && this.#shouldReconnectForStaleActor(error.group, error.code)) {
4105
4200
  return true;
4106
4201
  }
@@ -4111,7 +4206,7 @@ var ActorConnRaw = class {
4111
4206
  }
4112
4207
  #clearQueuedMessages() {
4113
4208
  if (this.#messageQueue.length === 0) return;
4114
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4209
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4115
4210
  msg: "clearing queued connection messages",
4116
4211
  queueLength: this.#messageQueue.length
4117
4212
  });
@@ -4124,7 +4219,7 @@ var ActorConnRaw = class {
4124
4219
  try {
4125
4220
  return await this.#getParams();
4126
4221
  } catch (err) {
4127
- const errorMessage = _chunk2CE5UNWKcjs.stringifyError.call(void 0, err);
4222
+ const errorMessage = _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err);
4128
4223
  const error = new (0, _chunkJX2ITWAVcjs.RivetError)(
4129
4224
  "client",
4130
4225
  "get_params_failed",
@@ -4148,7 +4243,7 @@ var ActorConnRaw = class {
4148
4243
  this.#gatewayOptions
4149
4244
  );
4150
4245
  _invariant2.default.call(void 0, ws, "websocket should have been created");
4151
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4246
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4152
4247
  msg: "opened websocket",
4153
4248
  connId: this.#connId,
4154
4249
  readyState: ws.readyState,
@@ -4156,7 +4251,7 @@ var ActorConnRaw = class {
4156
4251
  });
4157
4252
  this.#websocket = ws;
4158
4253
  ws.addEventListener("open", () => {
4159
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4254
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4160
4255
  msg: "client websocket open",
4161
4256
  connId: this.#connId
4162
4257
  });
@@ -4165,9 +4260,9 @@ var ActorConnRaw = class {
4165
4260
  try {
4166
4261
  await this.#handleOnMessage(ev.data);
4167
4262
  } catch (err) {
4168
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4263
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4169
4264
  msg: "error in websocket message handler",
4170
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4265
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4171
4266
  });
4172
4267
  }
4173
4268
  });
@@ -4175,9 +4270,9 @@ var ActorConnRaw = class {
4175
4270
  try {
4176
4271
  await this.#handleOnClose(ev);
4177
4272
  } catch (err) {
4178
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4273
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4179
4274
  msg: "error in websocket close handler",
4180
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4275
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4181
4276
  });
4182
4277
  }
4183
4278
  });
@@ -4185,9 +4280,9 @@ var ActorConnRaw = class {
4185
4280
  try {
4186
4281
  this.#handleOnError();
4187
4282
  } catch (err) {
4188
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4283
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4189
4284
  msg: "error in websocket error handler",
4190
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4285
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4191
4286
  });
4192
4287
  }
4193
4288
  });
@@ -4195,7 +4290,7 @@ var ActorConnRaw = class {
4195
4290
  /** Called by the onopen event from drivers. */
4196
4291
  #handleOnOpen() {
4197
4292
  if (this.#disposed) {
4198
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4293
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4199
4294
  msg: "handleOnOpen called after dispose, closing websocket"
4200
4295
  });
4201
4296
  if (this.#websocket) {
@@ -4211,7 +4306,7 @@ var ActorConnRaw = class {
4211
4306
  queueMicrotask(() => {
4212
4307
  this.#openScheduled = false;
4213
4308
  if (this.#disposed) {
4214
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4309
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4215
4310
  msg: "handleOnOpen scheduled after dispose, closing websocket"
4216
4311
  });
4217
4312
  if (this.#websocket) {
@@ -4220,23 +4315,24 @@ var ActorConnRaw = class {
4220
4315
  }
4221
4316
  return;
4222
4317
  }
4223
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4318
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4224
4319
  msg: "socket open",
4225
4320
  messageQueueLength: this.#messageQueue.length,
4226
4321
  connId: this.#connId
4227
4322
  });
4323
+ this.#authRetryAvailable = true;
4228
4324
  this.#setConnStatus("connected");
4229
4325
  if (this.#onOpenPromise) {
4230
4326
  this.#onOpenPromise.resolve(void 0);
4231
4327
  } else {
4232
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({ msg: "#onOpenPromise is undefined" });
4328
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({ msg: "#onOpenPromise is undefined" });
4233
4329
  }
4234
4330
  for (const eventName of this.#eventSubscriptions.keys()) {
4235
4331
  this.#sendSubscription(eventName, true);
4236
4332
  }
4237
4333
  const queue = this.#messageQueue;
4238
4334
  this.#messageQueue = [];
4239
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4335
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4240
4336
  msg: "flushing message queue",
4241
4337
  queueLength: queue.length
4242
4338
  });
@@ -4248,23 +4344,23 @@ var ActorConnRaw = class {
4248
4344
  /** Called by the onmessage event from drivers. */
4249
4345
  async #handleOnMessage(data) {
4250
4346
  var _a;
4251
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).trace({
4347
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
4252
4348
  msg: "received message",
4253
4349
  dataType: typeof data,
4254
4350
  isBlob: data instanceof Blob,
4255
4351
  isArrayBuffer: data instanceof ArrayBuffer
4256
4352
  });
4257
4353
  const response = await this.#parseMessage(data);
4258
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).trace(
4259
- _chunk2CE5UNWKcjs.getLogMessage.call(void 0, ) ? {
4354
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).trace(
4355
+ _chunkKWGN2ZBJcjs.getLogMessage.call(void 0, ) ? {
4260
4356
  msg: "parsed message",
4261
- message: _chunk2CE5UNWKcjs.jsonStringifyCompat.call(void 0, response).substring(0, 100) + "..."
4357
+ message: _chunkKWGN2ZBJcjs.jsonStringifyCompat.call(void 0, response).substring(0, 100) + "..."
4262
4358
  } : { msg: "parsed message" }
4263
4359
  );
4264
4360
  if (response.body.tag === "Init") {
4265
4361
  this.#actorId = response.body.val.actorId;
4266
4362
  this.#connId = response.body.val.connectionId;
4267
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).trace({
4363
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
4268
4364
  msg: "received init message",
4269
4365
  actorId: this.#actorId,
4270
4366
  connId: this.#connId
@@ -4275,7 +4371,7 @@ var ActorConnRaw = class {
4275
4371
  if (actionId !== null) {
4276
4372
  const inFlight = this.#takeActionInFlight(Number(actionId));
4277
4373
  this.#invalidateActorIfStale(group, code);
4278
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
4374
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
4279
4375
  msg: "action error",
4280
4376
  actionId,
4281
4377
  actionName: inFlight == null ? void 0 : inFlight.name,
@@ -4294,7 +4390,7 @@ var ActorConnRaw = class {
4294
4390
  })
4295
4391
  );
4296
4392
  } else {
4297
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
4393
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
4298
4394
  msg: "connection error",
4299
4395
  group,
4300
4396
  code,
@@ -4342,36 +4438,37 @@ var ActorConnRaw = class {
4342
4438
  }
4343
4439
  } else if (response.body.tag === "ActionResponse") {
4344
4440
  const { id: actionId } = response.body.val;
4345
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4441
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4346
4442
  msg: "received action response",
4347
4443
  actionId: Number(actionId),
4348
4444
  inFlightCount: this.#actionsInFlight.size,
4349
4445
  inFlightIds: Array.from(this.#actionsInFlight.keys())
4350
4446
  });
4351
4447
  const inFlight = this.#takeActionInFlight(Number(actionId));
4352
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).trace({
4448
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
4353
4449
  msg: "resolving action promise",
4354
4450
  actionId,
4355
4451
  actionName: inFlight == null ? void 0 : inFlight.name
4356
4452
  });
4357
4453
  inFlight.resolve(response.body.val);
4358
4454
  } else if (response.body.tag === "Event") {
4359
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).trace({
4455
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
4360
4456
  msg: "received event",
4361
4457
  name: response.body.val.name
4362
4458
  });
4363
4459
  this.#dispatchEvent(response.body.val);
4364
4460
  } else {
4365
- _chunk2CE5UNWKcjs.assertUnreachable.call(void 0, response.body);
4461
+ _chunkKWGN2ZBJcjs.assertUnreachable.call(void 0, response.body);
4366
4462
  }
4367
4463
  }
4368
4464
  /** Called by the onclose event from drivers. */
4369
4465
  async #handleOnClose(event) {
4370
- var _a;
4466
+ var _a, _b, _c;
4467
+ const failedSocket = this.#websocket;
4371
4468
  const closeEvent = event;
4372
4469
  const wasClean = closeEvent.wasClean;
4373
4470
  const wasConnected = this.#connStatus === "connected";
4374
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).info({
4471
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).info({
4375
4472
  msg: "socket closed",
4376
4473
  code: closeEvent.code,
4377
4474
  reason: closeEvent.reason,
@@ -4389,9 +4486,24 @@ var ActorConnRaw = class {
4389
4486
  const parsed = parseWebSocketCloseReason(reason);
4390
4487
  if (parsed) {
4391
4488
  const { group, code, rayId } = parsed;
4489
+ if (isInvalidToken(group, code) && closeEvent.code === 1008 && failedSocket) {
4490
+ try {
4491
+ if (!await ((_b = (_a = this.#driver).refreshAuthToken) == null ? void 0 : _b.call(
4492
+ _a,
4493
+ failedSocket
4494
+ ))) {
4495
+ this.#authRetryAvailable = false;
4496
+ }
4497
+ } catch (e4) {
4498
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn("token renewal failed");
4499
+ this.#authRetryAvailable = false;
4500
+ }
4501
+ } else if (isInvalidToken(group, code)) {
4502
+ this.#authRetryAvailable = false;
4503
+ }
4392
4504
  if (this.#shouldReconnectForStaleActor(group, code)) {
4393
4505
  this.#clearResolvedActorIdentity();
4394
- (_a = this.#onOpenPromise) == null ? void 0 : _a.reject(
4506
+ (_c = this.#onOpenPromise) == null ? void 0 : _c.reject(
4395
4507
  new (0, _chunkJX2ITWAVcjs.RivetError)(
4396
4508
  group,
4397
4509
  code,
@@ -4438,8 +4550,8 @@ var ActorConnRaw = class {
4438
4550
  if (error instanceof _chunkJX2ITWAVcjs.RivetError) {
4439
4551
  this.#dispatchActorError(error);
4440
4552
  }
4441
- if (wasConnected) {
4442
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4553
+ if (wasConnected && this.#authRetryAvailable) {
4554
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4443
4555
  msg: "triggering reconnect",
4444
4556
  connId: this.#connId
4445
4557
  });
@@ -4463,12 +4575,12 @@ var ActorConnRaw = class {
4463
4575
  /** Called by the onerror event from drivers. */
4464
4576
  #handleOnError() {
4465
4577
  if (this.#disposed) return;
4466
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn("socket error");
4578
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn("socket error");
4467
4579
  }
4468
4580
  #takeActionInFlight(id) {
4469
4581
  const inFlight = this.#actionsInFlight.get(id);
4470
4582
  if (!inFlight) {
4471
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4583
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4472
4584
  msg: "action not found in in-flight map",
4473
4585
  lookupId: id,
4474
4586
  inFlightCount: this.#actionsInFlight.size,
@@ -4483,7 +4595,7 @@ var ActorConnRaw = class {
4483
4595
  throw internalClientError(`No in flight response for ${id}`);
4484
4596
  }
4485
4597
  this.#actionsInFlight.delete(id);
4486
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4598
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4487
4599
  msg: "removed action from in-flight map",
4488
4600
  actionId: id,
4489
4601
  actionName: inFlight.name,
@@ -4510,9 +4622,9 @@ var ActorConnRaw = class {
4510
4622
  try {
4511
4623
  handler(error);
4512
4624
  } catch (err) {
4513
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4625
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4514
4626
  msg: "error in connection error handler",
4515
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4627
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4516
4628
  });
4517
4629
  }
4518
4630
  }
@@ -4617,9 +4729,9 @@ var ActorConnRaw = class {
4617
4729
  try {
4618
4730
  callback();
4619
4731
  } catch (err) {
4620
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).error({
4732
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
4621
4733
  msg: "error in open handler",
4622
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, err)
4734
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
4623
4735
  });
4624
4736
  }
4625
4737
  });
@@ -4669,7 +4781,7 @@ var ActorConnRaw = class {
4669
4781
  let queueMessage = false;
4670
4782
  if (this.#websocket) {
4671
4783
  const readyState = this.#websocket.readyState;
4672
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4784
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4673
4785
  msg: "websocket send attempt",
4674
4786
  readyState,
4675
4787
  readyStateString: readyState === 0 ? "CONNECTING" : readyState === 1 ? "OPEN" : readyState === 2 ? "CLOSING" : "CLOSED",
@@ -4678,7 +4790,7 @@ var ActorConnRaw = class {
4678
4790
  actionName: (_a = message.body.val) == null ? void 0 : _a.name
4679
4791
  });
4680
4792
  if (this.#connStatus !== "connected") {
4681
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4793
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4682
4794
  msg: "websocket init pending, queueing message",
4683
4795
  connStatus: this.#connStatus,
4684
4796
  messageType: message.body.tag
@@ -4686,7 +4798,7 @@ var ActorConnRaw = class {
4686
4798
  queueMessage = true;
4687
4799
  } else if (readyState === 1) {
4688
4800
  try {
4689
- const messageSerialized = _chunk2CE5UNWKcjs.serializeWithEncoding.call(void 0,
4801
+ const messageSerialized = _chunkKWGN2ZBJcjs.serializeWithEncoding.call(void 0,
4690
4802
  this.#encoding,
4691
4803
  message,
4692
4804
  CLIENT_PROTOCOL_TO_SERVER,
@@ -4703,8 +4815,8 @@ var ActorConnRaw = class {
4703
4815
  val: {
4704
4816
  id: msg.body.val.id,
4705
4817
  name: msg.body.val.name,
4706
- args: _chunk2CE5UNWKcjs.bufferToArrayBuffer.call(void 0,
4707
- _chunk2CE5UNWKcjs.encodeCborCompat.call(void 0,
4818
+ args: _chunkKWGN2ZBJcjs.bufferToArrayBuffer.call(void 0,
4819
+ _chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0,
4708
4820
  msg.body.val.args
4709
4821
  )
4710
4822
  )
@@ -4718,12 +4830,12 @@ var ActorConnRaw = class {
4718
4830
  );
4719
4831
  this.#websocket.send(messageSerialized);
4720
4832
  const serializedLength = messageLength(messageSerialized);
4721
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).trace({
4833
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
4722
4834
  msg: "sent websocket message",
4723
4835
  len: serializedLength
4724
4836
  });
4725
4837
  } catch (error) {
4726
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
4838
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
4727
4839
  msg: "failed to send message, added to queue",
4728
4840
  error,
4729
4841
  connId: this.#connId
@@ -4731,19 +4843,19 @@ var ActorConnRaw = class {
4731
4843
  queueMessage = true;
4732
4844
  }
4733
4845
  } else {
4734
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4846
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4735
4847
  msg: "websocket not open, queueing message",
4736
4848
  readyState
4737
4849
  });
4738
4850
  queueMessage = true;
4739
4851
  }
4740
4852
  } else {
4741
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({ msg: "no websocket, queueing message" });
4853
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({ msg: "no websocket, queueing message" });
4742
4854
  queueMessage = true;
4743
4855
  }
4744
4856
  if (!(opts == null ? void 0 : opts.ephemeral) && queueMessage) {
4745
4857
  this.#messageQueue.push(message);
4746
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({
4858
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
4747
4859
  msg: "queued connection message",
4748
4860
  queueLength: this.#messageQueue.length,
4749
4861
  connId: this.#connId,
@@ -4754,8 +4866,8 @@ var ActorConnRaw = class {
4754
4866
  }
4755
4867
  async #parseMessage(data) {
4756
4868
  _invariant2.default.call(void 0, this.#websocket, "websocket must be defined");
4757
- const buffer = await _chunk2CE5UNWKcjs.inputDataToBuffer.call(void 0, data);
4758
- return _chunk2CE5UNWKcjs.deserializeWithEncoding.call(void 0,
4869
+ const buffer = await _chunkKWGN2ZBJcjs.inputDataToBuffer.call(void 0, data);
4870
+ return _chunkKWGN2ZBJcjs.deserializeWithEncoding.call(void 0,
4759
4871
  this.#encoding,
4760
4872
  buffer,
4761
4873
  CLIENT_PROTOCOL_TO_CLIENT,
@@ -4790,7 +4902,7 @@ var ActorConnRaw = class {
4790
4902
  group: msg.body.val.group,
4791
4903
  code: msg.body.val.code,
4792
4904
  message: msg.body.val.message,
4793
- metadata: msg.body.val.metadata ? _chunk2CE5UNWKcjs.decodeCborCompat.call(void 0,
4905
+ metadata: msg.body.val.metadata ? _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0,
4794
4906
  new Uint8Array(
4795
4907
  msg.body.val.metadata
4796
4908
  )
@@ -4812,7 +4924,7 @@ var ActorConnRaw = class {
4812
4924
  tag: "ActionResponse",
4813
4925
  val: {
4814
4926
  id: msg.body.val.id,
4815
- output: _chunk2CE5UNWKcjs.decodeCborCompat.call(void 0,
4927
+ output: _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0,
4816
4928
  new Uint8Array(msg.body.val.output)
4817
4929
  )
4818
4930
  }
@@ -4824,7 +4936,7 @@ var ActorConnRaw = class {
4824
4936
  tag: "Event",
4825
4937
  val: {
4826
4938
  name: msg.body.val.name,
4827
- args: _chunk2CE5UNWKcjs.decodeCborCompat.call(void 0,
4939
+ args: _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0,
4828
4940
  new Uint8Array(msg.body.val.args)
4829
4941
  )
4830
4942
  }
@@ -4865,11 +4977,11 @@ var ActorConnRaw = class {
4865
4977
  */
4866
4978
  async dispose() {
4867
4979
  if (this.#disposed) {
4868
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({ msg: "connection already disconnected" });
4980
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({ msg: "connection already disconnected" });
4869
4981
  return;
4870
4982
  }
4871
4983
  this.#disposed = true;
4872
- _chunk3WS7Z64Ucjs.logger.call(void 0, ).debug({ msg: "disposing actor conn" });
4984
+ _chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({ msg: "disposing actor conn" });
4873
4985
  this.#setConnStatus("idle");
4874
4986
  clearInterval(this.#keepNodeAliveInterval);
4875
4987
  this.#abortController.abort();
@@ -4877,8 +4989,8 @@ var ActorConnRaw = class {
4877
4989
  if (this.#websocket) {
4878
4990
  const ws = this.#websocket;
4879
4991
  if (ws.readyState !== 2 && ws.readyState !== 3) {
4880
- const { promise, resolve } = _chunk2CE5UNWKcjs.promiseWithResolvers.call(void 0,
4881
- (reason) => _chunk3WS7Z64Ucjs.logger.call(void 0, ).warn({
4992
+ const { promise, resolve } = _chunkKWGN2ZBJcjs.promiseWithResolvers.call(void 0,
4993
+ (reason) => _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
4882
4994
  msg: "unhandled websocket close promise rejection",
4883
4995
  reason
4884
4996
  })
@@ -4911,6 +5023,25 @@ var ActorConnRaw = class {
4911
5023
  // src/client/config.ts
4912
5024
 
4913
5025
 
5026
+ // src/common/engine.ts
5027
+ var ENGINE_HOST = "127.0.0.1";
5028
+ var ENGINE_PORT = 6420;
5029
+ var ENGINE_ENDPOINT = buildEngineEndpoint(ENGINE_HOST, ENGINE_PORT);
5030
+ function buildEngineEndpoint(host, port) {
5031
+ const urlHost = host.includes(":") && !host.startsWith("[") ? `[${host}]` : host;
5032
+ return `http://${urlHost}:${port}`;
5033
+ }
5034
+ function isLocalEngineEndpoint(endpoint) {
5035
+ let url;
5036
+ try {
5037
+ url = new URL(endpoint);
5038
+ } catch (e5) {
5039
+ return false;
5040
+ }
5041
+ const hostname = url.hostname.toLowerCase();
5042
+ return hostname === "localhost" || hostname === "0.0.0.0" || hostname === "::" || hostname === "[::]" || hostname === "::1" || hostname === "[::1]" || /^127(?:\.\d{1,3}){0,3}$/.test(hostname);
5043
+ }
5044
+
4914
5045
  // src/utils/endpoint-parser.ts
4915
5046
  function tryParseEndpoint(ctx, options) {
4916
5047
  const {
@@ -4922,7 +5053,7 @@ function tryParseEndpoint(ctx, options) {
4922
5053
  let url;
4923
5054
  try {
4924
5055
  url = new URL(endpoint);
4925
- } catch (e3) {
5056
+ } catch (e6) {
4926
5057
  ctx.addIssue({
4927
5058
  code: "custom",
4928
5059
  message: `invalid URL: ${endpoint}`,
@@ -4997,7 +5128,7 @@ var ClientConfigSchemaBase = _v42.default.object({
4997
5128
  * Defaults to http://localhost:6420.
4998
5129
  */
4999
5130
  endpoint: _v42.default.string().optional().transform((val) => {
5000
- const resolved = _nullishCoalesce(_nullishCoalesce(val, () => ( _chunk2CE5UNWKcjs.getRivetEngine.call(void 0, ))), () => ( _chunk2CE5UNWKcjs.getRivetEndpoint.call(void 0, )));
5131
+ const resolved = _nullishCoalesce(_nullishCoalesce(val, () => ( _chunkKWGN2ZBJcjs.getRivetEngine.call(void 0, ))), () => ( _chunkKWGN2ZBJcjs.getRivetEndpoint.call(void 0, )));
5001
5132
  if (!resolved && !hasWarnedMissingEndpoint) {
5002
5133
  hasWarnedMissingEndpoint = true;
5003
5134
  console.warn(
@@ -5007,12 +5138,14 @@ var ClientConfigSchemaBase = _v42.default.object({
5007
5138
  return _nullishCoalesce(resolved, () => ( DEFAULT_ENDPOINT));
5008
5139
  }),
5009
5140
  /** Token to use to authenticate with the API. */
5010
- token: _v42.default.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunk2CE5UNWKcjs.getRivetToken.call(void 0, )))),
5141
+ token: _v42.default.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkKWGN2ZBJcjs.getRivetToken.call(void 0, )))),
5142
+ /** Issue and renew a client token on demand. Overrides the static token when provided. */
5143
+ getToken: _v42.default.custom().optional(),
5011
5144
  /** Namespace to connect to. */
5012
- namespace: _v42.default.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunk2CE5UNWKcjs.getRivetNamespace.call(void 0, )))),
5145
+ namespace: _v42.default.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkKWGN2ZBJcjs.getRivetNamespace.call(void 0, )))),
5013
5146
  /** Name of the envoy pool. This is used to group together envoys in to different pools. */
5014
- poolName: _v42.default.string().default(() => _nullishCoalesce(_chunk2CE5UNWKcjs.getRivetPool.call(void 0, ), () => ( "default"))),
5015
- encoding: _chunk2CE5UNWKcjs.EncodingSchema.default("bare"),
5147
+ poolName: _v42.default.string().default(() => _nullishCoalesce(_chunkKWGN2ZBJcjs.getRivetPool.call(void 0, ), () => ( "default"))),
5148
+ encoding: _chunkKWGN2ZBJcjs.EncodingSchema.default("bare"),
5016
5149
  headers: _v42.default.record(_v42.default.string(), _v42.default.string()).optional().default(() => ({})),
5017
5150
  gateway: _v42.default.object({
5018
5151
  skipReadyWait: _v42.default.boolean().optional().default(false)
@@ -5052,7 +5185,7 @@ function transformClientConfig(config, ctx) {
5052
5185
  ...config,
5053
5186
  endpoint: parsedEndpoint == null ? void 0 : parsedEndpoint.endpoint,
5054
5187
  namespace: _nullishCoalesce(_nullishCoalesce((parsedEndpoint == null ? void 0 : parsedEndpoint.namespace), () => ( config.namespace)), () => ( "default")),
5055
- token: _nullishCoalesce((parsedEndpoint == null ? void 0 : parsedEndpoint.token), () => ( config.token))
5188
+ token: _nullishCoalesce(_nullishCoalesce((parsedEndpoint == null ? void 0 : parsedEndpoint.token), () => ( config.token)), () => ( (config.endpoint && isLocalEngineEndpoint(config.endpoint) ? "default" : void 0)))
5056
5189
  };
5057
5190
  }
5058
5191
  function convertRegistryConfigToClientConfig(config) {
@@ -5060,6 +5193,7 @@ function convertRegistryConfigToClientConfig(config) {
5060
5193
  return {
5061
5194
  endpoint: config.endpoint,
5062
5195
  token: config.token,
5196
+ getToken: void 0,
5063
5197
  namespace: config.namespace,
5064
5198
  poolName: config.envoy.poolName,
5065
5199
  headers: config.headers,
@@ -5178,7 +5312,7 @@ function setRemoteHibernatableWebSocketAckTestHooks(websocket, token, enabled) {
5178
5312
 
5179
5313
  // src/engine-client/log.ts
5180
5314
  function logger2() {
5181
- return _chunk2CE5UNWKcjs.getLogger.call(void 0, "engine-client");
5315
+ return _chunkKWGN2ZBJcjs.getLogger.call(void 0, "engine-client");
5182
5316
  }
5183
5317
 
5184
5318
  // src/engine-client/actor-websocket-client.ts
@@ -5311,7 +5445,7 @@ var BufferedRemoteWebSocket = (_class2 = class {
5311
5445
  function buildActorGatewayUrl(endpoint, actorId, token, path = "") {
5312
5446
  const tokenSegment = token !== void 0 ? `@${encodeURIComponent(token)}` : "";
5313
5447
  const gatewayPath = `/gateway/${encodeURIComponent(actorId)}${tokenSegment}${path}`;
5314
- return _chunk2CE5UNWKcjs.combineUrlPath.call(void 0, endpoint, gatewayPath);
5448
+ return _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, gatewayPath);
5315
5449
  }
5316
5450
  function buildActorQueryGatewayUrl(endpoint, namespace, query, token, path = "", maxInputSize = DEFAULT_MAX_QUERY_INPUT_SIZE, crashPolicy = void 0, runnerName, options = {}) {
5317
5451
  if (namespace.length === 0) {
@@ -5377,7 +5511,7 @@ function buildActorQueryGatewayUrl(endpoint, namespace, query, token, path = "",
5377
5511
  separator = "?";
5378
5512
  }
5379
5513
  const gatewayPath = `/gateway/${encodeURIComponent(name)}${path}${separator}${queryString}`;
5380
- return _chunk2CE5UNWKcjs.combineUrlPath.call(void 0, endpoint, gatewayPath);
5514
+ return _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, gatewayPath);
5381
5515
  }
5382
5516
  function pushKeyQueryParams(params, key) {
5383
5517
  if (key.length > 0) {
@@ -5388,7 +5522,7 @@ function pushInputQueryParam(params, input, maxInputSize) {
5388
5522
  if (input === void 0) {
5389
5523
  return;
5390
5524
  }
5391
- const encodedInput = _chunk2CE5UNWKcjs.encodeCborCompat.call(void 0, input);
5525
+ const encodedInput = _chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, input);
5392
5526
  if (encodedInput.byteLength > maxInputSize) {
5393
5527
  throw new Error(
5394
5528
  `Actor query input exceeds maxInputSize (${encodedInput.byteLength} > ${maxInputSize} bytes). Increase client maxInputSize to allow larger query payloads.`
@@ -5397,14 +5531,15 @@ function pushInputQueryParam(params, input, maxInputSize) {
5397
5531
  params.append("rvt-input", uint8ArrayToBase64Url(encodedInput));
5398
5532
  }
5399
5533
  function uint8ArrayToBase64Url(value) {
5400
- return _chunk2CE5UNWKcjs.uint8ArrayToBase64.call(void 0, value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
5534
+ return _chunkKWGN2ZBJcjs.uint8ArrayToBase64.call(void 0, value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
5401
5535
  }
5402
5536
  async function openWebSocketToGateway(runConfig, gatewayUrl, encoding, params, options = {}) {
5403
- const WebSocket2 = await _chunk3WS7Z64Ucjs.importWebSocket.call(void 0, );
5537
+ const WebSocket2 = await _chunkLWSLKKZ5cjs.importWebSocket.call(void 0, );
5404
5538
  const ackHookToken = typeof process !== "undefined" && process.env.VITEST ? crypto.randomUUID() : void 0;
5405
5539
  logger2().debug({
5406
5540
  msg: "opening websocket to actor via guard",
5407
- gatewayUrl
5541
+ // Gateway URLs can embed credentials; never include the path or query in logs.
5542
+ origin: new URL(gatewayUrl).origin
5408
5543
  });
5409
5544
  const ws = new WebSocket2(
5410
5545
  gatewayUrl,
@@ -5467,7 +5602,7 @@ function getEndpoint(config) {
5467
5602
  }
5468
5603
  async function apiCall(config, method, path, body) {
5469
5604
  const endpoint = getEndpoint(config);
5470
- const url = _chunk2CE5UNWKcjs.combineUrlPath.call(void 0, endpoint, path, {
5605
+ const url = _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, path, {
5471
5606
  namespace: config.namespace
5472
5607
  });
5473
5608
  logger2().debug({ msg: "making api call", method, url });
@@ -5499,6 +5634,14 @@ async function apiCall(config, method, path, body) {
5499
5634
  }
5500
5635
 
5501
5636
  // src/engine-client/api-endpoints.ts
5637
+ async function issueToken(config, options) {
5638
+ return apiCall(config, "POST", "/auth/tokens", {
5639
+ namespace: config.namespace,
5640
+ subject: options.subject,
5641
+ duration: options.expiresIn,
5642
+ grants: options.grants
5643
+ });
5644
+ }
5502
5645
  async function getActor(config, _, actorId) {
5503
5646
  return apiCall(
5504
5647
  config,
@@ -5592,7 +5735,7 @@ async function lookupMetadataCached(config) {
5592
5735
  msg: "failed to fetch metadata, retrying",
5593
5736
  endpoint,
5594
5737
  attempt: error.attemptNumber,
5595
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, error)
5738
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, error)
5596
5739
  });
5597
5740
  }
5598
5741
  }
@@ -5604,7 +5747,7 @@ async function lookupMetadataCached(config) {
5604
5747
 
5605
5748
  // src/engine-client/ws-proxy.ts
5606
5749
  async function createWebSocketProxy(_c, targetUrl, protocols) {
5607
- const WebSocket2 = await _chunk3WS7Z64Ucjs.importWebSocket.call(void 0, );
5750
+ const WebSocket2 = await _chunkLWSLKKZ5cjs.importWebSocket.call(void 0, );
5608
5751
  const state = {};
5609
5752
  return {
5610
5753
  onOpen: async (_event, clientWs) => {
@@ -5669,7 +5812,7 @@ async function createWebSocketProxy(_c, targetUrl, protocols) {
5669
5812
  logger2().error({
5670
5813
  msg: "target websocket error",
5671
5814
  targetUrl,
5672
- error: _chunk2CE5UNWKcjs.stringifyError.call(void 0, error)
5815
+ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, error)
5673
5816
  });
5674
5817
  closeWebSocketIfOpen(clientWs, 1011, "Target WebSocket error");
5675
5818
  });
@@ -5747,14 +5890,18 @@ function closeWebSocketIfOpen(ws, code, reason) {
5747
5890
  var RemoteEngineControlClient = class {
5748
5891
  #config;
5749
5892
  #metadataPromise;
5893
+ #tokenProvider;
5894
+ #webSocketTokens = /* @__PURE__ */ new WeakMap();
5750
5895
  constructor(runConfig) {
5751
- if (_chunk2CE5UNWKcjs.getNextPhase.call(void 0, ) === "phase-production-build") {
5896
+ if (_chunkKWGN2ZBJcjs.getNextPhase.call(void 0, ) === "phase-production-build") {
5752
5897
  logger2().info(
5753
5898
  "detected next.js build phase, disabling health check"
5754
5899
  );
5755
5900
  runConfig.disableMetadataLookup = true;
5756
5901
  }
5757
5902
  this.#config = { ...runConfig };
5903
+ if (runConfig.getToken)
5904
+ this.#tokenProvider = new TokenProvider(runConfig.getToken);
5758
5905
  if (!runConfig.disableMetadataLookup) {
5759
5906
  this.#metadataPromise = lookupMetadataCached(this.#config).then(
5760
5907
  (metadataData) => {
@@ -5763,14 +5910,13 @@ var RemoteEngineControlClient = class {
5763
5910
  if (metadataData.clientNamespace) {
5764
5911
  this.#config.namespace = metadataData.clientNamespace;
5765
5912
  }
5766
- if (metadataData.clientToken) {
5913
+ if (metadataData.clientToken && !this.#tokenProvider) {
5767
5914
  this.#config.token = metadataData.clientToken;
5768
5915
  }
5769
5916
  logger2().info({
5770
5917
  msg: "overriding client endpoint",
5771
5918
  endpoint: metadataData.clientEndpoint,
5772
- namespace: metadataData.clientNamespace,
5773
- token: metadataData.clientToken
5919
+ namespace: metadataData.clientNamespace
5774
5920
  });
5775
5921
  }
5776
5922
  logger2().info({
@@ -5783,12 +5929,47 @@ var RemoteEngineControlClient = class {
5783
5929
  );
5784
5930
  }
5785
5931
  }
5932
+ async #authorizedConfig() {
5933
+ if (!this.#tokenProvider) return this.#config;
5934
+ return { ...this.#config, token: await this.#tokenProvider.current() };
5935
+ }
5936
+ async #withCredential(request, readOnly = false) {
5937
+ const config = await this.#authorizedConfig();
5938
+ try {
5939
+ return await request(config);
5940
+ } catch (error) {
5941
+ if (this.#tokenProvider && config.token && error instanceof _chunkJX2ITWAVcjs.RivetError && error.statusCode === 401 && isInvalidToken(error.group, error.code)) {
5942
+ if (readOnly) {
5943
+ const token = await this.#tokenProvider.refreshIfCurrent(
5944
+ config.token
5945
+ );
5946
+ return request({ ...this.#config, token });
5947
+ }
5948
+ await this.#tokenProvider.refreshIfCurrent(config.token);
5949
+ }
5950
+ throw error;
5951
+ }
5952
+ }
5953
+ async issueToken(options) {
5954
+ await this.#metadataPromise;
5955
+ const response = await this.#withCredential(
5956
+ (config) => issueToken(config, options)
5957
+ );
5958
+ return {
5959
+ token: response.token,
5960
+ issuedAt: response.issued_ts,
5961
+ expiresAt: response.expires_ts
5962
+ };
5963
+ }
5786
5964
  async getForId({
5787
5965
  name,
5788
5966
  actorId
5789
5967
  }) {
5790
5968
  await this.#metadataPromise;
5791
- const response = await getActor(this.#config, name, actorId);
5969
+ const response = await this.#withCredential(
5970
+ (config) => getActor(config, name, actorId),
5971
+ true
5972
+ );
5792
5973
  const actor = response.actors[0];
5793
5974
  if (!actor) return void 0;
5794
5975
  if (actor.name !== name) {
@@ -5809,7 +5990,10 @@ var RemoteEngineControlClient = class {
5809
5990
  await this.#metadataPromise;
5810
5991
  logger2().debug({ msg: "getWithKey: searching for actor", name, key });
5811
5992
  try {
5812
- const response = await getActorByKey(this.#config, name, key);
5993
+ const response = await this.#withCredential(
5994
+ (config) => getActorByKey(config, name, key),
5995
+ true
5996
+ );
5813
5997
  const actor = response.actors[0];
5814
5998
  if (!actor) return void 0;
5815
5999
  logger2().debug({
@@ -5842,16 +6026,18 @@ var RemoteEngineControlClient = class {
5842
6026
  key
5843
6027
  });
5844
6028
  try {
5845
- const { actor, created } = await getOrCreateActor(this.#config, {
5846
- datacenter: region,
5847
- name,
5848
- key: _chunkMYWZCDMLcjs.serializeActorKey.call(void 0, key),
5849
- runner_name_selector: _nullishCoalesce(poolName, () => ( this.#config.poolName)),
5850
- input: actorInput ? _chunk2CE5UNWKcjs.uint8ArrayToBase64.call(void 0,
5851
- _chunk2CE5UNWKcjs.encodeCborCompat.call(void 0, actorInput)
5852
- ) : void 0,
5853
- crash_policy: _nullishCoalesce(crashPolicy, () => ( "sleep"))
5854
- });
6029
+ const { actor, created } = await this.#withCredential(
6030
+ (config) => getOrCreateActor(config, {
6031
+ datacenter: region,
6032
+ name,
6033
+ key: _chunkMYWZCDMLcjs.serializeActorKey.call(void 0, key),
6034
+ runner_name_selector: _nullishCoalesce(poolName, () => ( this.#config.poolName)),
6035
+ input: actorInput ? _chunkKWGN2ZBJcjs.uint8ArrayToBase64.call(void 0,
6036
+ _chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, actorInput)
6037
+ ) : void 0,
6038
+ crash_policy: _nullishCoalesce(crashPolicy, () => ( "sleep"))
6039
+ })
6040
+ );
5855
6041
  logger2().info({
5856
6042
  msg: "getOrCreateWithKey: actor ready",
5857
6043
  actorId: actor.actor_id,
@@ -5867,7 +6053,10 @@ var RemoteEngineControlClient = class {
5867
6053
  name,
5868
6054
  key
5869
6055
  });
5870
- const response = await getActorByKey(this.#config, name, key);
6056
+ const response = await this.#withCredential(
6057
+ (config) => getActorByKey(config, name, key),
6058
+ true
6059
+ );
5871
6060
  const existing = response.actors[0];
5872
6061
  if (!existing) throw error;
5873
6062
  logger2().info({
@@ -5891,14 +6080,18 @@ var RemoteEngineControlClient = class {
5891
6080
  }) {
5892
6081
  await this.#metadataPromise;
5893
6082
  logger2().info({ msg: "creating actor via engine api", name, key });
5894
- const result = await createActor(this.#config, {
5895
- datacenter: region,
5896
- name,
5897
- runner_name_selector: _nullishCoalesce(poolName, () => ( this.#config.poolName)),
5898
- key: _chunkMYWZCDMLcjs.serializeActorKey.call(void 0, key),
5899
- input: input ? _chunk2CE5UNWKcjs.uint8ArrayToBase64.call(void 0, _chunk2CE5UNWKcjs.encodeCborCompat.call(void 0, input)) : void 0,
5900
- crash_policy: _nullishCoalesce(crashPolicy, () => ( "sleep"))
5901
- });
6083
+ const result = await this.#withCredential(
6084
+ (config) => createActor(config, {
6085
+ datacenter: region,
6086
+ name,
6087
+ runner_name_selector: _nullishCoalesce(poolName, () => ( this.#config.poolName)),
6088
+ key: _chunkMYWZCDMLcjs.serializeActorKey.call(void 0, key),
6089
+ input: input ? _chunkKWGN2ZBJcjs.uint8ArrayToBase64.call(void 0,
6090
+ _chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, input)
6091
+ ) : void 0,
6092
+ crash_policy: _nullishCoalesce(crashPolicy, () => ( "sleep"))
6093
+ })
6094
+ );
5902
6095
  logger2().info({
5903
6096
  msg: "actor created",
5904
6097
  actorId: result.actor.actor_id,
@@ -5910,43 +6103,61 @@ var RemoteEngineControlClient = class {
5910
6103
  async listActors({ name }) {
5911
6104
  await this.#metadataPromise;
5912
6105
  logger2().debug({ msg: "listing actors via engine api", name });
5913
- const response = await listActorsByName(this.#config, name);
6106
+ const response = await this.#withCredential(
6107
+ (config) => listActorsByName(config, name),
6108
+ true
6109
+ );
5914
6110
  return response.actors.map(apiActorToOutput);
5915
6111
  }
5916
6112
  async destroyActor(actorId) {
5917
6113
  await this.#metadataPromise;
5918
6114
  logger2().info({ msg: "destroying actor via engine api", actorId });
5919
- await destroyActor(this.#config, actorId);
6115
+ await this.#withCredential((config) => destroyActor(config, actorId));
5920
6116
  logger2().info({ msg: "actor destroyed", actorId });
5921
6117
  }
5922
6118
  async sendRequest(target, actorRequest, options = {}) {
6119
+ var _a;
5923
6120
  await this.#metadataPromise;
5924
- const path = requestPath(actorRequest);
5925
- const gatewayUrl = this.#buildGatewayUrlForTarget(
5926
- target,
5927
- path,
5928
- options
5929
- );
6121
+ const config = await this.#authorizedConfig();
5930
6122
  const httpOptions = {
5931
6123
  ...options,
5932
6124
  directActorId: shouldSkipReadyWait(options) ? directActorIdFromTarget(target) : void 0
5933
6125
  };
5934
- return sendHttpRequestToGateway(
5935
- this.#config,
5936
- gatewayUrl,
6126
+ const send = (current) => sendHttpRequestToGateway(
6127
+ current,
6128
+ this.#buildGatewayUrlForTarget(
6129
+ current,
6130
+ target,
6131
+ requestPath(actorRequest),
6132
+ options
6133
+ ),
5937
6134
  actorRequest,
5938
6135
  httpOptions
5939
6136
  );
6137
+ const response = await send(config);
6138
+ if (!this.#tokenProvider || !config.token || !isInvalidTokenResponse(response))
6139
+ return response;
6140
+ if ((actorRequest.method === "GET" || actorRequest.method === "HEAD") && !("getOrCreateForKey" in target)) {
6141
+ const token = await this.#tokenProvider.refreshIfCurrent(
6142
+ config.token
6143
+ );
6144
+ await ((_a = response.body) == null ? void 0 : _a.cancel());
6145
+ return send({ ...this.#config, token });
6146
+ }
6147
+ await this.#tokenProvider.refreshIfCurrent(config.token);
6148
+ return response;
5940
6149
  }
5941
6150
  async openWebSocket(path, target, encoding, params, options = {}) {
5942
6151
  await this.#metadataPromise;
6152
+ const config = await this.#authorizedConfig();
5943
6153
  const gatewayUrl = this.#buildGatewayUrlForTarget(
6154
+ config,
5944
6155
  target,
5945
6156
  path,
5946
6157
  options
5947
6158
  );
5948
- return openWebSocketToGateway(
5949
- this.#config,
6159
+ const ws = await openWebSocketToGateway(
6160
+ config,
5950
6161
  gatewayUrl,
5951
6162
  encoding,
5952
6163
  params,
@@ -5955,26 +6166,60 @@ var RemoteEngineControlClient = class {
5955
6166
  directActorId: shouldSkipReadyWait(options) ? directActorIdFromTarget(target) : void 0
5956
6167
  }
5957
6168
  );
6169
+ this.#watchWebSocketAuth(ws, config.token);
6170
+ return ws;
6171
+ }
6172
+ async refreshAuthToken(ws) {
6173
+ const context2 = this.#webSocketTokens.get(ws);
6174
+ if (!(context2 == null ? void 0 : context2.refresh)) return false;
6175
+ await context2.refresh;
6176
+ return true;
6177
+ }
6178
+ #watchWebSocketAuth(ws, token) {
6179
+ const tokenProvider = this.#tokenProvider;
6180
+ if (!tokenProvider || !token) return;
6181
+ const context2 = {};
6182
+ this.#webSocketTokens.set(ws, context2);
6183
+ ws.addEventListener(
6184
+ "close",
6185
+ (event) => {
6186
+ if (event.code !== 1008 || !event.reason) return;
6187
+ const separator = event.reason.indexOf(".");
6188
+ if (separator < 0) return;
6189
+ const code = event.reason.slice(separator + 1).split(/[\s:#]/, 1)[0];
6190
+ if (isInvalidToken(event.reason.slice(0, separator), code)) {
6191
+ context2.refresh = tokenProvider.refreshIfCurrent(token).catch((error) => {
6192
+ logger2().warn(
6193
+ "failed to renew authentication token"
6194
+ );
6195
+ throw error;
6196
+ });
6197
+ context2.refresh.catch(() => {
6198
+ });
6199
+ }
6200
+ }
6201
+ );
5958
6202
  }
5959
6203
  async buildGatewayUrl(target, options = {}) {
5960
6204
  await this.#metadataPromise;
5961
- return this.#buildGatewayUrlForTarget(target, "", options);
6205
+ return this.#buildGatewayUrlForTarget(
6206
+ await this.#authorizedConfig(),
6207
+ target,
6208
+ "",
6209
+ options
6210
+ );
5962
6211
  }
5963
6212
  async proxyRequest(_c, actorRequest, actorId) {
5964
- await this.#metadataPromise;
5965
- const gatewayUrl = this.#buildGatewayUrlForTarget(
5966
- { directId: actorId },
5967
- requestPath(actorRequest)
5968
- );
5969
- return sendHttpRequestToGateway(this.#config, gatewayUrl, actorRequest);
6213
+ return this.sendRequest({ directId: actorId }, actorRequest);
5970
6214
  }
5971
6215
  async proxyWebSocket(c, path, actorId, encoding, params) {
5972
- var _a, _b;
6216
+ var _a;
5973
6217
  await this.#metadataPromise;
5974
- const upgradeWebSocket = (_b = (_a = this.#config).getUpgradeWebSocket) == null ? void 0 : _b.call(_a);
6218
+ const config = await this.#authorizedConfig();
6219
+ const upgradeWebSocket = (_a = config.getUpgradeWebSocket) == null ? void 0 : _a.call(config);
5975
6220
  _invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
5976
- const endpoint = getEndpoint(this.#config);
5977
- const guardUrl = _chunk2CE5UNWKcjs.combineUrlPath.call(void 0, endpoint, path);
6221
+ const endpoint = getEndpoint(config);
6222
+ const guardUrl = _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, path);
5978
6223
  const wsGuardUrl = guardUrl.replace("http://", "ws://");
5979
6224
  logger2().debug({
5980
6225
  msg: "forwarding websocket to actor via guard",
@@ -5983,7 +6228,7 @@ var RemoteEngineControlClient = class {
5983
6228
  guardUrl
5984
6229
  });
5985
6230
  const protocols = buildWebSocketProtocols(
5986
- this.#config,
6231
+ config,
5987
6232
  encoding,
5988
6233
  params,
5989
6234
  void 0,
@@ -5993,7 +6238,7 @@ var RemoteEngineControlClient = class {
5993
6238
  }
5994
6239
  );
5995
6240
  const args = await createWebSocketProxy(c, wsGuardUrl, protocols);
5996
- return await upgradeWebSocket(() => args)(c, _chunk2CE5UNWKcjs.noopNext.call(void 0, ));
6241
+ return await upgradeWebSocket(() => args)(c, _chunkKWGN2ZBJcjs.noopNext.call(void 0, ));
5997
6242
  }
5998
6243
  displayInformation() {
5999
6244
  return { properties: {} };
@@ -6001,16 +6246,16 @@ var RemoteEngineControlClient = class {
6001
6246
  setGetUpgradeWebSocket(getUpgradeWebSocket) {
6002
6247
  this.#config.getUpgradeWebSocket = getUpgradeWebSocket;
6003
6248
  }
6004
- #buildGatewayUrlForTarget(target, path, options = {}) {
6005
- const endpoint = getEndpoint(this.#config);
6249
+ #buildGatewayUrlForTarget(config, target, path, options = {}) {
6250
+ const endpoint = getEndpoint(config);
6006
6251
  if (shouldSkipReadyWait(options) && directActorIdFromTarget(target) && canUseDirectSkipReadyWaitPath(path)) {
6007
- return _chunk2CE5UNWKcjs.combineUrlPath.call(void 0, endpoint, path);
6252
+ return _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, path);
6008
6253
  }
6009
6254
  if ("directId" in target) {
6010
6255
  return buildActorGatewayUrl(
6011
6256
  endpoint,
6012
6257
  target.directId,
6013
- this.#config.token,
6258
+ config.token,
6014
6259
  path
6015
6260
  );
6016
6261
  }
@@ -6018,20 +6263,20 @@ var RemoteEngineControlClient = class {
6018
6263
  return buildActorGatewayUrl(
6019
6264
  endpoint,
6020
6265
  target.getForId.actorId,
6021
- this.#config.token,
6266
+ config.token,
6022
6267
  path
6023
6268
  );
6024
6269
  }
6025
6270
  if ("getForKey" in target || "getOrCreateForKey" in target) {
6026
6271
  return buildActorQueryGatewayUrl(
6027
6272
  endpoint,
6028
- this.#config.namespace,
6273
+ config.namespace,
6029
6274
  target,
6030
- this.#config.token,
6275
+ config.token,
6031
6276
  path,
6032
- this.#config.maxInputSize,
6277
+ config.maxInputSize,
6033
6278
  void 0,
6034
- "getOrCreateForKey" in target ? _nullishCoalesce(target.getOrCreateForKey.poolName, () => ( this.#config.poolName)) : void 0,
6279
+ "getOrCreateForKey" in target ? _nullishCoalesce(target.getOrCreateForKey.poolName, () => ( config.poolName)) : void 0,
6035
6280
  options
6036
6281
  );
6037
6282
  }
@@ -6100,5 +6345,9 @@ function apiActorToOutput(actor) {
6100
6345
 
6101
6346
 
6102
6347
 
6103
- exports.HEADER_CONN_PARAMS = HEADER_CONN_PARAMS; exports.HEADER_ORIGINAL_REQUEST_URL = HEADER_ORIGINAL_REQUEST_URL; exports.ALLOWED_PUBLIC_HEADERS = ALLOWED_PUBLIC_HEADERS; exports.ActorClientError = ActorClientError; exports.ManagerError = ManagerError; exports.MalformedResponseMessage = MalformedResponseMessage; exports.ActorConnDisposed = ActorConnDisposed; exports.readActiveTraceHeaders = readActiveTraceHeaders; exports.runWithActorInvocationSpan = runWithActorInvocationSpan; exports.ActorConnRaw = ActorConnRaw; exports.isResponseLike = isResponseLike; exports.ActorHandleRaw = ActorHandleRaw; exports.createClientWithDriver = createClientWithDriver; exports.tryParseEndpoint = tryParseEndpoint; exports.ClientConfigSchema = ClientConfigSchema; exports.convertRegistryConfigToClientConfig = convertRegistryConfigToClientConfig; exports.getDatacenters = getDatacenters; exports.updateRunnerConfig = updateRunnerConfig; exports.RemoteEngineControlClient = RemoteEngineControlClient;
6104
- //# sourceMappingURL=chunk-A36FMKOV.cjs.map
6348
+
6349
+
6350
+
6351
+
6352
+ exports.HEADER_CONN_PARAMS = HEADER_CONN_PARAMS; exports.HEADER_ORIGINAL_REQUEST_URL = HEADER_ORIGINAL_REQUEST_URL; exports.ALLOWED_PUBLIC_HEADERS = ALLOWED_PUBLIC_HEADERS; exports.ActorClientError = ActorClientError; exports.ManagerError = ManagerError; exports.MalformedResponseMessage = MalformedResponseMessage; exports.ActorConnDisposed = ActorConnDisposed; exports.readActiveTraceHeaders = readActiveTraceHeaders; exports.runWithActorInvocationSpan = runWithActorInvocationSpan; exports.ActorConnRaw = ActorConnRaw; exports.isResponseLike = isResponseLike; exports.ActorHandleRaw = ActorHandleRaw; exports.createClientWithDriver = createClientWithDriver; exports.ENGINE_HOST = ENGINE_HOST; exports.ENGINE_PORT = ENGINE_PORT; exports.buildEngineEndpoint = buildEngineEndpoint; exports.isLocalEngineEndpoint = isLocalEngineEndpoint; exports.tryParseEndpoint = tryParseEndpoint; exports.ClientConfigSchema = ClientConfigSchema; exports.convertRegistryConfigToClientConfig = convertRegistryConfigToClientConfig; exports.getDatacenters = getDatacenters; exports.updateRunnerConfig = updateRunnerConfig; exports.RemoteEngineControlClient = RemoteEngineControlClient;
6353
+ //# sourceMappingURL=chunk-B5SNXPSS.cjs.map