rivetkit 2.3.12-rc.1 → 2.3.12-rc.3

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 (114) hide show
  1. package/dist/browser/client.d.ts +4 -0
  2. package/dist/browser/client.js +116 -60
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +1 -1
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/actor/errors.cjs +2 -2
  7. package/dist/tsup/actor/errors.d.cts +1 -1
  8. package/dist/tsup/actor/errors.d.ts +1 -1
  9. package/dist/tsup/actor/errors.js +1 -1
  10. package/dist/tsup/agent-os/index.cjs +2 -2
  11. package/dist/tsup/agent-os/index.cjs.map +1 -1
  12. package/dist/tsup/agent-os/index.d.cts +4 -0
  13. package/dist/tsup/agent-os/index.d.ts +4 -0
  14. package/dist/tsup/agent-os/index.js +2 -2
  15. package/dist/tsup/agent-os/index.js.map +1 -1
  16. package/dist/tsup/{chunk-MT33DKU4.js → chunk-34Q4YVCX.js} +2 -2
  17. package/dist/tsup/{chunk-T4MKKCRF.cjs → chunk-4ESGNS3Z.cjs} +15 -10
  18. package/dist/tsup/chunk-4ESGNS3Z.cjs.map +1 -0
  19. package/dist/tsup/{chunk-VJ4KLJO5.cjs → chunk-EQKSWDIH.cjs} +3 -3
  20. package/dist/tsup/{chunk-VJ4KLJO5.cjs.map → chunk-EQKSWDIH.cjs.map} +1 -1
  21. package/dist/tsup/{chunk-BZX4LYYD.cjs → chunk-IJWTHKH6.cjs} +3 -3
  22. package/dist/tsup/{chunk-BZX4LYYD.cjs.map → chunk-IJWTHKH6.cjs.map} +1 -1
  23. package/dist/tsup/{chunk-ZZ3WBRPD.js → chunk-IXBD7BXC.js} +15 -4
  24. package/dist/tsup/chunk-IXBD7BXC.js.map +1 -0
  25. package/dist/tsup/{chunk-ZTPFJOBX.js → chunk-NHI5L7C7.js} +3 -3
  26. package/dist/tsup/{chunk-CMZBDX6Z.cjs → chunk-O6H3BUN4.cjs} +3 -3
  27. package/dist/tsup/{chunk-CMZBDX6Z.cjs.map → chunk-O6H3BUN4.cjs.map} +1 -1
  28. package/dist/tsup/{chunk-HVHDZDM2.js → chunk-OLGQYFUW.js} +8 -3
  29. package/dist/tsup/chunk-OLGQYFUW.js.map +1 -0
  30. package/dist/tsup/{chunk-BEPAAID2.cjs → chunk-OX6WVQE6.cjs} +10 -10
  31. package/dist/tsup/{chunk-BEPAAID2.cjs.map → chunk-OX6WVQE6.cjs.map} +1 -1
  32. package/dist/tsup/{chunk-KRPA4UOE.js → chunk-PSXMESQJ.js} +2 -2
  33. package/dist/tsup/{chunk-6ETWXXAZ.cjs → chunk-PZBWSCQR.cjs} +262 -213
  34. package/dist/tsup/chunk-PZBWSCQR.cjs.map +1 -0
  35. package/dist/tsup/{chunk-2D5PNV5A.cjs → chunk-QLOBB27M.cjs} +4 -4
  36. package/dist/tsup/{chunk-2D5PNV5A.cjs.map → chunk-QLOBB27M.cjs.map} +1 -1
  37. package/dist/tsup/{chunk-4FC7TVS6.cjs → chunk-SPJORZMM.cjs} +15 -4
  38. package/dist/tsup/chunk-SPJORZMM.cjs.map +1 -0
  39. package/dist/tsup/{chunk-DIHAXOB7.cjs → chunk-UBB32UOG.cjs} +7 -7
  40. package/dist/tsup/{chunk-DIHAXOB7.cjs.map → chunk-UBB32UOG.cjs.map} +1 -1
  41. package/dist/tsup/{chunk-OZWVDFCA.js → chunk-UN5JNDBT.js} +4 -4
  42. package/dist/tsup/{chunk-5UYNV4W6.js → chunk-WVFTFWJL.js} +2 -2
  43. package/dist/tsup/{chunk-JHHAMABO.js → chunk-XI4MEUUI.js} +2 -2
  44. package/dist/tsup/{chunk-A5BZEQOG.js → chunk-YYIDQBBM.js} +110 -61
  45. package/dist/tsup/chunk-YYIDQBBM.js.map +1 -0
  46. package/dist/tsup/client/mod.cjs +6 -6
  47. package/dist/tsup/client/mod.d.cts +5 -5
  48. package/dist/tsup/client/mod.d.ts +5 -5
  49. package/dist/tsup/client/mod.js +5 -5
  50. package/dist/tsup/common/log.cjs +3 -3
  51. package/dist/tsup/common/log.js +2 -2
  52. package/dist/tsup/common/websocket.cjs +4 -4
  53. package/dist/tsup/common/websocket.js +3 -3
  54. package/dist/tsup/{config-DTGoWdkG.d.cts → config-BXSV17G7.d.cts} +2 -2
  55. package/dist/tsup/{config-C4OSv0QP.d.ts → config-Bi1r6gI7.d.ts} +2 -2
  56. package/dist/tsup/{context-C6cvDNyk.d.cts → context-4fJemY0D.d.cts} +1 -1
  57. package/dist/tsup/{context-CMygeBxS.d.ts → context-D4sNYboo.d.ts} +1 -1
  58. package/dist/tsup/db/drizzle.cjs +3 -3
  59. package/dist/tsup/db/drizzle.js +2 -2
  60. package/dist/tsup/db/mod.cjs +4 -4
  61. package/dist/tsup/db/mod.js +3 -3
  62. package/dist/tsup/dynamic/mod.d.cts +3 -3
  63. package/dist/tsup/dynamic/mod.d.ts +3 -3
  64. package/dist/tsup/inspector/mod.cjs +6 -6
  65. package/dist/tsup/inspector/mod.js +5 -5
  66. package/dist/tsup/inspector/workflow.cjs +5 -5
  67. package/dist/tsup/inspector/workflow.js +4 -4
  68. package/dist/tsup/inspector-tab/mod.d.cts +4 -4
  69. package/dist/tsup/inspector-tab/mod.d.ts +4 -4
  70. package/dist/tsup/mod.cjs +111 -110
  71. package/dist/tsup/mod.cjs.map +1 -1
  72. package/dist/tsup/mod.d.cts +5 -5
  73. package/dist/tsup/mod.d.ts +5 -5
  74. package/dist/tsup/mod.js +8 -7
  75. package/dist/tsup/mod.js.map +1 -1
  76. package/dist/tsup/test/mod.cjs +7 -7
  77. package/dist/tsup/test/mod.d.cts +3 -3
  78. package/dist/tsup/test/mod.d.ts +3 -3
  79. package/dist/tsup/test/mod.js +5 -5
  80. package/dist/tsup/{utils-DQDCphrl.d.cts → utils-Bbz-3411.d.cts} +1 -1
  81. package/dist/tsup/{utils-CV0akuDD.d.ts → utils-BqdWVlzm.d.ts} +1 -1
  82. package/dist/tsup/{utils-CqDnC_PS.d.cts → utils-vvJQyygr.d.cts} +5 -0
  83. package/dist/tsup/{utils-CqDnC_PS.d.ts → utils-vvJQyygr.d.ts} +5 -0
  84. package/dist/tsup/utils.cjs +3 -3
  85. package/dist/tsup/utils.d.cts +2 -2
  86. package/dist/tsup/utils.d.ts +2 -2
  87. package/dist/tsup/utils.js +2 -2
  88. package/dist/tsup/workflow/mod.cjs +11 -11
  89. package/dist/tsup/workflow/mod.d.cts +5 -5
  90. package/dist/tsup/workflow/mod.d.ts +5 -5
  91. package/dist/tsup/workflow/mod.js +5 -5
  92. package/package.json +8 -8
  93. package/src/actor/errors.ts +29 -2
  94. package/src/client/actor-conn.ts +5 -4
  95. package/src/client/actor-handle.ts +47 -19
  96. package/src/client/actor-query.ts +8 -1
  97. package/src/client/errors.ts +2 -1
  98. package/src/client/raw-utils.ts +3 -5
  99. package/src/client/utils.ts +2 -0
  100. package/src/common/utils.ts +6 -0
  101. package/src/engine-client/mod.ts +51 -20
  102. package/src/registry/native.ts +1 -0
  103. package/dist/tsup/chunk-4FC7TVS6.cjs.map +0 -1
  104. package/dist/tsup/chunk-6ETWXXAZ.cjs.map +0 -1
  105. package/dist/tsup/chunk-A5BZEQOG.js.map +0 -1
  106. package/dist/tsup/chunk-HVHDZDM2.js.map +0 -1
  107. package/dist/tsup/chunk-T4MKKCRF.cjs.map +0 -1
  108. package/dist/tsup/chunk-ZZ3WBRPD.js.map +0 -1
  109. /package/dist/tsup/{chunk-MT33DKU4.js.map → chunk-34Q4YVCX.js.map} +0 -0
  110. /package/dist/tsup/{chunk-ZTPFJOBX.js.map → chunk-NHI5L7C7.js.map} +0 -0
  111. /package/dist/tsup/{chunk-KRPA4UOE.js.map → chunk-PSXMESQJ.js.map} +0 -0
  112. /package/dist/tsup/{chunk-OZWVDFCA.js.map → chunk-UN5JNDBT.js.map} +0 -0
  113. /package/dist/tsup/{chunk-5UYNV4W6.js.map → chunk-WVFTFWJL.js.map} +0 -0
  114. /package/dist/tsup/{chunk-JHHAMABO.js.map → chunk-XI4MEUUI.js.map} +0 -0
@@ -286,6 +286,7 @@ interface DeconstructedError {
286
286
  code: string;
287
287
  message: string;
288
288
  metadata?: unknown;
289
+ rayId?: string;
289
290
  actor?: ActorSpecifier;
290
291
  }
291
292
 
@@ -294,6 +295,8 @@ interface RivetErrorOptions extends ErrorOptions {
294
295
  public?: boolean;
295
296
  /** Metadata associated with this error. */
296
297
  metadata?: unknown;
298
+ /** Request identifier used to correlate this error with engine logs. */
299
+ rayId?: string;
297
300
  /** Explicit HTTP status override for router responses. */
298
301
  statusCode?: number;
299
302
  /** Actor context associated with this error. */
@@ -321,6 +324,7 @@ declare class RivetError extends Error {
321
324
  __type: "RivetError";
322
325
  public: boolean;
323
326
  metadata?: unknown;
327
+ readonly rayId?: string;
324
328
  statusCode: number;
325
329
  actor?: ActorSpecifier;
326
330
  readonly group: string;
@@ -10,7 +10,7 @@ var INTERNAL_ERROR_CODE = "internal_error";
10
10
  var INTERNAL_ERROR_DESCRIPTION = "An internal error occurred";
11
11
  var USER_ERROR_CODE = "user_error";
12
12
  function looksLikeRivetErrorOptions(value) {
13
- return typeof value === "object" && value !== null && ("public" in value || "metadata" in value || "statusCode" in value || "actor" in value || "cause" in value);
13
+ return typeof value === "object" && value !== null && ("public" in value || "metadata" in value || "rayId" in value || "statusCode" in value || "actor" in value || "cause" in value);
14
14
  }
15
15
  function isTypedErrorTag(value) {
16
16
  return value === "ActorError" || value === "RivetError";
@@ -22,12 +22,13 @@ function errorMessage(error, fallback = String(error)) {
22
22
  return fallback;
23
23
  }
24
24
  function isRivetErrorLike(error) {
25
- return typeof error === "object" && error !== null && "group" in error && typeof error.group === "string" && "code" in error && typeof error.code === "string" && "message" in error && typeof error.message === "string" && (!("__type" in error) || isTypedErrorTag(error.__type));
25
+ return typeof error === "object" && error !== null && "group" in error && typeof error.group === "string" && "code" in error && typeof error.code === "string" && "message" in error && typeof error.message === "string" && (!("rayId" in error) || error.rayId === void 0 || typeof error.rayId === "string") && (!("__type" in error) || isTypedErrorTag(error.__type));
26
26
  }
27
27
  var RivetError = class extends Error {
28
28
  __type = "RivetError";
29
29
  public;
30
30
  metadata;
31
+ rayId;
31
32
  statusCode;
32
33
  actor;
33
34
  group;
@@ -46,6 +47,7 @@ var RivetError = class extends Error {
46
47
  this.code = code;
47
48
  this.public = normalized.public ?? false;
48
49
  this.metadata = normalized.metadata;
50
+ this.rayId = normalized.rayId ?? void 0;
49
51
  this.statusCode = normalized.statusCode ?? (this.public ? 400 : 500);
50
52
  this.actor = normalized.actor;
51
53
  }
@@ -96,6 +98,7 @@ function deconstructError(error, exposeInternalError = false) {
96
98
  let code;
97
99
  let message;
98
100
  let metadata;
101
+ let rayId;
99
102
  let actor;
100
103
  if (isCanonicalStructuredRivetError(error)) {
101
104
  statusCode = typeof error.statusCode === "number" ? error.statusCode : error.public ? 400 : 500;
@@ -104,6 +107,7 @@ function deconstructError(error, exposeInternalError = false) {
104
107
  code = error.code;
105
108
  message = error.message;
106
109
  metadata = error.metadata;
110
+ rayId = error.rayId;
107
111
  actor = error.actor;
108
112
  } else if (RivetError.isActorError(error) && error.public) {
109
113
  statusCode = "statusCode" in error && error.statusCode ? error.statusCode : 400;
@@ -112,6 +116,7 @@ function deconstructError(error, exposeInternalError = false) {
112
116
  code = error.code;
113
117
  message = getErrorMessage(error);
114
118
  metadata = error.metadata;
119
+ rayId = error.rayId;
115
120
  actor = error.actor;
116
121
  } else if (exposeInternalError) {
117
122
  if (RivetError.isActorError(error)) {
@@ -121,6 +126,7 @@ function deconstructError(error, exposeInternalError = false) {
121
126
  code = error.code;
122
127
  message = getErrorMessage(error);
123
128
  metadata = error.metadata;
129
+ rayId = error.rayId;
124
130
  actor = error.actor;
125
131
  } else {
126
132
  statusCode = 500;
@@ -150,6 +156,7 @@ function deconstructError(error, exposeInternalError = false) {
150
156
  code,
151
157
  message,
152
158
  metadata,
159
+ rayId,
153
160
  actor
154
161
  };
155
162
  }
@@ -194,7 +201,7 @@ function noopNext() {
194
201
  // package.json
195
202
  var package_default = {
196
203
  name: "rivetkit",
197
- version: "2.3.12-rc.1",
204
+ version: "2.3.12-rc.3",
198
205
  description: "Lightweight libraries for building stateful actors on edge platforms",
199
206
  license: "Apache-2.0",
200
207
  keywords: [
@@ -3689,12 +3696,12 @@ var ActorConnDisposed = class extends ActorClientError {
3689
3696
  function isSchedulingError(group, code) {
3690
3697
  return group === "guard" && (code === "actor_ready_timeout" || code === "actor_runner_failed");
3691
3698
  }
3692
- function actorSchedulingError(group, code, actorId, details) {
3699
+ function actorSchedulingError(group, code, actorId, details, rayId) {
3693
3700
  return new RivetError(
3694
3701
  group,
3695
3702
  code,
3696
3703
  `Actor failed to start (${actorId}): ${JSON.stringify(details)}`,
3697
- { metadata: { actorId, details } }
3704
+ { metadata: { actorId, details }, rayId }
3698
3705
  );
3699
3706
  }
3700
3707
  function internalClientError(message, opts) {
@@ -3813,6 +3820,7 @@ async function sendHttpRequest(opts) {
3813
3820
  code: responseData.code,
3814
3821
  message: responseData.message,
3815
3822
  metadata: responseData.metadata,
3823
+ rayId,
3816
3824
  actorId: responseData.actor?.actorId,
3817
3825
  generation: responseData.actor?.generation,
3818
3826
  actorKey: responseData.actor?.key
@@ -3823,6 +3831,7 @@ async function sendHttpRequest(opts) {
3823
3831
  responseData.message,
3824
3832
  {
3825
3833
  metadata: responseData.metadata,
3834
+ rayId: rayId ?? void 0,
3826
3835
  actor: responseData.actor
3827
3836
  }
3828
3837
  );
@@ -4235,24 +4244,45 @@ var RemoteEngineControlClient = class {
4235
4244
  name,
4236
4245
  key
4237
4246
  });
4238
- const { actor, created } = await getOrCreateActor(this.#config, {
4239
- datacenter: region,
4240
- name,
4241
- key: serializeActorKey(key),
4242
- runner_name_selector: poolName ?? this.#config.poolName,
4243
- input: actorInput ? uint8ArrayToBase64(
4244
- encodeCborCompat(actorInput)
4245
- ) : void 0,
4246
- crash_policy: crashPolicy ?? "sleep"
4247
- });
4248
- logger3().info({
4249
- msg: "getOrCreateWithKey: actor ready",
4250
- actorId: actor.actor_id,
4251
- name,
4252
- key,
4253
- created
4254
- });
4255
- return apiActorToOutput(actor);
4247
+ try {
4248
+ const { actor, created } = await getOrCreateActor(this.#config, {
4249
+ datacenter: region,
4250
+ name,
4251
+ key: serializeActorKey(key),
4252
+ runner_name_selector: poolName ?? this.#config.poolName,
4253
+ input: actorInput ? uint8ArrayToBase64(
4254
+ encodeCborCompat(actorInput)
4255
+ ) : void 0,
4256
+ crash_policy: crashPolicy ?? "sleep"
4257
+ });
4258
+ logger3().info({
4259
+ msg: "getOrCreateWithKey: actor ready",
4260
+ actorId: actor.actor_id,
4261
+ name,
4262
+ key,
4263
+ created
4264
+ });
4265
+ return apiActorToOutput(actor);
4266
+ } catch (error) {
4267
+ if (error instanceof RivetError && error.group === "actor" && error.code === "key_reserved_in_different_datacenter") {
4268
+ logger3().warn({
4269
+ msg: "getOrCreateWithKey: key reserved in different datacenter, retrying as get",
4270
+ name,
4271
+ key
4272
+ });
4273
+ const response = await getActorByKey(this.#config, name, key);
4274
+ const existing = response.actors[0];
4275
+ if (!existing) throw error;
4276
+ logger3().info({
4277
+ msg: "getOrCreateWithKey: resolved existing actor via get",
4278
+ actorId: existing.actor_id,
4279
+ name,
4280
+ key
4281
+ });
4282
+ return apiActorToOutput(existing);
4283
+ }
4284
+ throw error;
4285
+ }
4256
4286
  }
4257
4287
  async createActor({
4258
4288
  name,
@@ -4489,7 +4519,7 @@ function getGatewayTarget(state) {
4489
4519
  function isStaleResolvedActorError(group, code) {
4490
4520
  return group === "actor" && (code === "not_found" || code === "starting" || code === "stopping" || code === "not_configured" || code === "dropped_reply" || code.startsWith("destroyed_"));
4491
4521
  }
4492
- async function checkForSchedulingError(group, code, actorId, query, driver) {
4522
+ async function checkForSchedulingError(group, code, actorId, query, driver, rayId) {
4493
4523
  const name = getActorNameFromQuery(query);
4494
4524
  try {
4495
4525
  const actor = await driver.getForId({ name, actorId });
@@ -4499,7 +4529,13 @@ async function checkForSchedulingError(group, code, actorId, query, driver) {
4499
4529
  actorId,
4500
4530
  error: actor.error
4501
4531
  });
4502
- return actorSchedulingError(group, code, actorId, actor.error);
4532
+ return actorSchedulingError(
4533
+ group,
4534
+ code,
4535
+ actorId,
4536
+ actor.error,
4537
+ rayId
4538
+ );
4503
4539
  }
4504
4540
  } catch (err) {
4505
4541
  logger2().warn({
@@ -5328,7 +5364,7 @@ var ActorConnRaw = class {
5328
5364
  const reason = closeEvent.reason || "";
5329
5365
  const parsed = parseWebSocketCloseReason(reason);
5330
5366
  if (parsed) {
5331
- const { group, code } = parsed;
5367
+ const { group, code, rayId } = parsed;
5332
5368
  if (this.#shouldReconnectForStaleActor(group, code)) {
5333
5369
  this.#clearResolvedActorIdentity();
5334
5370
  this.#onOpenPromise?.reject(
@@ -5336,7 +5372,7 @@ var ActorConnRaw = class {
5336
5372
  group,
5337
5373
  code,
5338
5374
  `Connection closed: ${reason}`,
5339
- void 0
5375
+ { rayId }
5340
5376
  )
5341
5377
  );
5342
5378
  return;
@@ -5347,7 +5383,8 @@ var ActorConnRaw = class {
5347
5383
  code,
5348
5384
  this.#actorId,
5349
5385
  this.#actorResolutionState,
5350
- this.#driver
5386
+ this.#driver,
5387
+ rayId
5351
5388
  );
5352
5389
  if (schedulingError) {
5353
5390
  error = schedulingError;
@@ -5356,7 +5393,7 @@ var ActorConnRaw = class {
5356
5393
  group,
5357
5394
  code,
5358
5395
  `Connection closed: ${reason}`,
5359
- void 0
5396
+ { rayId }
5360
5397
  );
5361
5398
  }
5362
5399
  } else {
@@ -5364,7 +5401,7 @@ var ActorConnRaw = class {
5364
5401
  group,
5365
5402
  code,
5366
5403
  `Connection closed: ${reason}`,
5367
- void 0
5404
+ { rayId }
5368
5405
  );
5369
5406
  }
5370
5407
  this.#invalidateActorIfStale(group, code);
@@ -5946,11 +5983,8 @@ async function rawHttpFetch(driver, target, params, input, init, options = {}) {
5946
5983
  });
5947
5984
  return driver.sendRequest(target, proxyRequest, options);
5948
5985
  } catch (err) {
5949
- const { group, code, message, metadata, actor } = deconstructError(
5950
- err,
5951
- true
5952
- );
5953
- throw new RivetError(group, code, message, { metadata, actor });
5986
+ const { group, code, message, metadata, rayId, actor } = deconstructError(err, true);
5987
+ throw new RivetError(group, code, message, { metadata, rayId, actor });
5954
5988
  }
5955
5989
  }
5956
5990
  async function rawWebSocket(driver, target, params, path, _protocols, options = {}) {
@@ -6069,7 +6103,7 @@ var ActorHandleRaw = class {
6069
6103
  async #sendQueueMessage(name, body, options) {
6070
6104
  return await this.#queueSendMutex.run(async () => {
6071
6105
  const maxAttempts = this.#getDynamicQueryMaxAttempts();
6072
- let useQueryTarget = false;
6106
+ let useQueryTarget = isDynamicActorQuery(this.#actorResolutionState);
6073
6107
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
6074
6108
  let actorId;
6075
6109
  try {
@@ -6093,7 +6127,7 @@ var ActorHandleRaw = class {
6093
6127
  }
6094
6128
  }).send(name, body, options);
6095
6129
  } catch (err) {
6096
- const { group, code, message, metadata, actor } = deconstructError(err, true);
6130
+ const { group, code, message, metadata, rayId, actor } = deconstructError(err, true);
6097
6131
  if (this.#shouldRetryQueueDispatchOverload(
6098
6132
  group,
6099
6133
  code,
@@ -6109,7 +6143,8 @@ var ActorHandleRaw = class {
6109
6143
  code,
6110
6144
  actorId,
6111
6145
  attempt,
6112
- maxAttempts
6146
+ maxAttempts,
6147
+ rayId
6113
6148
  )) {
6114
6149
  useQueryTarget = true;
6115
6150
  await this.#waitForRetryWindow();
@@ -6131,14 +6166,16 @@ var ActorHandleRaw = class {
6131
6166
  code
6132
6167
  );
6133
6168
  if (invalidated && attempt < maxAttempts - 1) {
6134
- useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
6135
- if (useQueryTarget) {
6169
+ const waitForReady = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
6170
+ useQueryTarget = useQueryTarget || waitForReady;
6171
+ if (waitForReady) {
6136
6172
  await this.#waitForRetryWindow();
6137
6173
  }
6138
6174
  continue;
6139
6175
  }
6140
6176
  throw new RivetError(group, code, message, {
6141
6177
  metadata,
6178
+ rayId,
6142
6179
  actor
6143
6180
  });
6144
6181
  }
@@ -6167,7 +6204,7 @@ var ActorHandleRaw = class {
6167
6204
  }
6168
6205
  async #sendActionNow(opts) {
6169
6206
  const maxAttempts = this.#getDynamicQueryMaxAttempts();
6170
- let useQueryTarget = false;
6207
+ let useQueryTarget = isDynamicActorQuery(this.#actorResolutionState);
6171
6208
  const gatewayOptions = resolveActorGatewayOptions(
6172
6209
  this.#gatewayOptions,
6173
6210
  opts
@@ -6232,13 +6269,14 @@ var ActorHandleRaw = class {
6232
6269
  }
6233
6270
  return output;
6234
6271
  } catch (err) {
6235
- const { group, code, message, metadata, actor } = deconstructError(err, true);
6272
+ const { group, code, message, metadata, rayId, actor } = deconstructError(err, true);
6236
6273
  if (await this.#shouldRetrySchedulingError(
6237
6274
  group,
6238
6275
  code,
6239
6276
  actorId,
6240
6277
  attempt,
6241
- maxAttempts
6278
+ maxAttempts,
6279
+ rayId
6242
6280
  )) {
6243
6281
  useQueryTarget = true;
6244
6282
  await this.#waitForRetryWindow();
@@ -6260,7 +6298,7 @@ var ActorHandleRaw = class {
6260
6298
  "actor",
6261
6299
  "not_found",
6262
6300
  "The actor does not exist or was destroyed.",
6263
- { metadata, actor }
6301
+ { metadata, rayId, actor }
6264
6302
  );
6265
6303
  }
6266
6304
  const invalidated = this.#invalidateResolvedActorId(
@@ -6276,7 +6314,11 @@ var ActorHandleRaw = class {
6276
6314
  }
6277
6315
  continue;
6278
6316
  }
6279
- throw new RivetError(group, code, message, { metadata, actor });
6317
+ throw new RivetError(group, code, message, {
6318
+ metadata,
6319
+ rayId,
6320
+ actor
6321
+ });
6280
6322
  }
6281
6323
  }
6282
6324
  throw new Error("unreachable action retry state");
@@ -6318,7 +6360,7 @@ var ActorHandleRaw = class {
6318
6360
  this.#resolvedActorId = void 0;
6319
6361
  this.#resolvingActorId = void 0;
6320
6362
  }
6321
- async #shouldRetrySchedulingError(group, code, actorId, attempt, maxAttempts) {
6363
+ async #shouldRetrySchedulingError(group, code, actorId, attempt, maxAttempts, rayId) {
6322
6364
  if (!isDynamicActorQuery(this.#actorResolutionState) || !isSchedulingError(group, code) || attempt >= maxAttempts - 1) {
6323
6365
  return false;
6324
6366
  }
@@ -6328,7 +6370,8 @@ var ActorHandleRaw = class {
6328
6370
  code,
6329
6371
  actorId,
6330
6372
  this.#actorResolutionState,
6331
- this.#driver
6373
+ this.#driver,
6374
+ rayId
6332
6375
  );
6333
6376
  if (schedulingError) {
6334
6377
  throw schedulingError;
@@ -6410,7 +6453,7 @@ var ActorHandleRaw = class {
6410
6453
  }
6411
6454
  async #fetchWithResolvedActor(input, init) {
6412
6455
  const maxAttempts = this.#getDynamicQueryMaxAttempts();
6413
- let useQueryTarget = false;
6456
+ let useQueryTarget = isDynamicActorQuery(this.#actorResolutionState);
6414
6457
  const { skipReadyWait, ...requestInit } = init ?? {};
6415
6458
  const gatewayOptions = resolveActorGatewayOptions(
6416
6459
  this.#gatewayOptions,
@@ -6449,13 +6492,14 @@ var ActorHandleRaw = class {
6449
6492
  }
6450
6493
  return response;
6451
6494
  } catch (err) {
6452
- const { group, code, message, metadata, actor } = deconstructError(err, true);
6495
+ const { group, code, message, metadata, rayId, actor } = deconstructError(err, true);
6453
6496
  if (await this.#shouldRetrySchedulingError(
6454
6497
  group,
6455
6498
  code,
6456
6499
  actorId,
6457
6500
  attempt,
6458
- maxAttempts
6501
+ maxAttempts,
6502
+ rayId
6459
6503
  )) {
6460
6504
  useQueryTarget = true;
6461
6505
  await this.#waitForRetryWindow();
@@ -6477,13 +6521,18 @@ var ActorHandleRaw = class {
6477
6521
  code
6478
6522
  );
6479
6523
  if (invalidated && attempt < maxAttempts - 1) {
6480
- useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
6481
- if (useQueryTarget) {
6524
+ const waitForReady = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
6525
+ useQueryTarget = useQueryTarget || waitForReady;
6526
+ if (waitForReady) {
6482
6527
  await this.#waitForRetryWindow();
6483
6528
  }
6484
6529
  continue;
6485
6530
  }
6486
- throw new RivetError(group, code, message, { metadata, actor });
6531
+ throw new RivetError(group, code, message, {
6532
+ metadata,
6533
+ rayId,
6534
+ actor
6535
+ });
6487
6536
  }
6488
6537
  }
6489
6538
  throw new Error("unreachable fetch retry state");
@@ -6496,13 +6545,14 @@ var ActorHandleRaw = class {
6496
6545
  if (!error) {
6497
6546
  return null;
6498
6547
  }
6499
- const { group, code } = error;
6548
+ const { group, code, rayId } = error;
6500
6549
  if (await this.#shouldRetrySchedulingError(
6501
6550
  group,
6502
6551
  code,
6503
6552
  actorId,
6504
6553
  attempt,
6505
- maxAttempts
6554
+ maxAttempts,
6555
+ rayId
6506
6556
  )) {
6507
6557
  return {
6508
6558
  useQueryTarget: true,
@@ -6523,10 +6573,10 @@ var ActorHandleRaw = class {
6523
6573
  }
6524
6574
  const invalidated = this.#invalidateResolvedActorId(group, code);
6525
6575
  if (invalidated && attempt < maxAttempts - 1) {
6526
- const useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
6576
+ const waitForReady = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
6527
6577
  return {
6528
- useQueryTarget,
6529
- waitForRetryWindow: useQueryTarget
6578
+ useQueryTarget: true,
6579
+ waitForRetryWindow: waitForReady
6530
6580
  };
6531
6581
  }
6532
6582
  return null;
@@ -6538,7 +6588,7 @@ var ActorHandleRaw = class {
6538
6588
  const contentType = response.headers.get("content-type");
6539
6589
  const encoding = contentType?.includes("application/json") ? "json" : this.#encoding;
6540
6590
  try {
6541
- return deserializeWithEncoding(
6591
+ const error = deserializeWithEncoding(
6542
6592
  encoding,
6543
6593
  new Uint8Array(await response.clone().arrayBuffer()),
6544
6594
  HTTP_RESPONSE_ERROR_VERSIONED,
@@ -6562,6 +6612,10 @@ var ActorHandleRaw = class {
6562
6612
  } : void 0
6563
6613
  })
6564
6614
  );
6615
+ return {
6616
+ ...error,
6617
+ rayId: response.headers.get("x-rivet-ray-id") ?? void 0
6618
+ };
6565
6619
  } catch {
6566
6620
  return null;
6567
6621
  }
@@ -6625,7 +6679,9 @@ var ActorHandleRaw = class {
6625
6679
  "actor",
6626
6680
  "reload_failed",
6627
6681
  `reload failed with status ${response.status}: ${body}`,
6628
- {}
6682
+ {
6683
+ rayId: response.headers.get("x-rivet-ray-id") ?? void 0
6684
+ }
6629
6685
  );
6630
6686
  }
6631
6687
  }