rivetkit 2.3.0-rc.5 → 2.3.0-rc.6

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 (113) hide show
  1. package/dist/browser/client.d.ts +21 -18
  2. package/dist/browser/client.js +735 -170
  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 +4 -2
  7. package/dist/tsup/actor/errors.cjs.map +1 -1
  8. package/dist/tsup/actor/errors.d.cts +1 -74
  9. package/dist/tsup/actor/errors.d.ts +1 -74
  10. package/dist/tsup/actor/errors.js +3 -1
  11. package/dist/tsup/agent-os/index.cjs +1 -1
  12. package/dist/tsup/agent-os/index.cjs.map +1 -1
  13. package/dist/tsup/agent-os/index.d.cts +18 -7
  14. package/dist/tsup/agent-os/index.d.ts +18 -7
  15. package/dist/tsup/agent-os/index.js +1 -1
  16. package/dist/tsup/agent-os/index.js.map +1 -1
  17. package/dist/tsup/{chunk-2GANBXVP.cjs → chunk-2G64KSZQ.cjs} +10 -10
  18. package/dist/tsup/{chunk-2GANBXVP.cjs.map → chunk-2G64KSZQ.cjs.map} +1 -1
  19. package/dist/tsup/{chunk-N2DQSJIW.js → chunk-6S25NVAP.js} +13 -46
  20. package/dist/tsup/chunk-6S25NVAP.js.map +1 -0
  21. package/dist/tsup/{chunk-NATOT3ET.js → chunk-CAF6JDJE.js} +4 -4
  22. package/dist/tsup/{chunk-PGYEMIOE.js → chunk-DEO7MMWQ.js} +2 -2
  23. package/dist/tsup/{chunk-SULB574D.js → chunk-EMO6E3PJ.js} +3 -3
  24. package/dist/tsup/{chunk-FTZIZ3JG.cjs → chunk-ENK7C66G.cjs} +838 -236
  25. package/dist/tsup/chunk-ENK7C66G.cjs.map +1 -0
  26. package/dist/tsup/{chunk-JY73X7VU.js → chunk-FLODVLYW.js} +690 -88
  27. package/dist/tsup/chunk-FLODVLYW.js.map +1 -0
  28. package/dist/tsup/{chunk-OVJX4IFY.cjs → chunk-HTR4YLNT.cjs} +4 -4
  29. package/dist/tsup/{chunk-OVJX4IFY.cjs.map → chunk-HTR4YLNT.cjs.map} +1 -1
  30. package/dist/tsup/{chunk-LELRJK66.cjs → chunk-JALSAX7Z.cjs} +3 -3
  31. package/dist/tsup/{chunk-LELRJK66.cjs.map → chunk-JALSAX7Z.cjs.map} +1 -1
  32. package/dist/tsup/{chunk-JRCZDHXT.cjs → chunk-K5BA2LEO.cjs} +19 -52
  33. package/dist/tsup/chunk-K5BA2LEO.cjs.map +1 -0
  34. package/dist/tsup/{chunk-K34B3OVG.js → chunk-KIWH5H3K.js} +30 -9
  35. package/dist/tsup/chunk-KIWH5H3K.js.map +1 -0
  36. package/dist/tsup/{chunk-NW2J4SOL.cjs → chunk-LIXXFXVR.cjs} +5 -5
  37. package/dist/tsup/{chunk-NW2J4SOL.cjs.map → chunk-LIXXFXVR.cjs.map} +1 -1
  38. package/dist/tsup/{chunk-HR547GVH.cjs → chunk-M5C7YNI5.cjs} +8 -8
  39. package/dist/tsup/{chunk-HR547GVH.cjs.map → chunk-M5C7YNI5.cjs.map} +1 -1
  40. package/dist/tsup/{chunk-V3QNBJ7N.cjs → chunk-QAZLM4WT.cjs} +31 -10
  41. package/dist/tsup/chunk-QAZLM4WT.cjs.map +1 -0
  42. package/dist/tsup/{chunk-LDTT6WKJ.js → chunk-RTC2AZGB.js} +2 -2
  43. package/dist/tsup/{chunk-UXTP4EBU.js → chunk-ZI5QJMKO.js} +2 -2
  44. package/dist/tsup/client/mod.cjs +7 -7
  45. package/dist/tsup/client/mod.d.cts +3 -4
  46. package/dist/tsup/client/mod.d.ts +3 -4
  47. package/dist/tsup/client/mod.js +6 -6
  48. package/dist/tsup/common/log.cjs +3 -3
  49. package/dist/tsup/common/log.js +2 -2
  50. package/dist/tsup/common/websocket.cjs +4 -4
  51. package/dist/tsup/common/websocket.js +3 -3
  52. package/dist/tsup/{config-CvQUtDp9.d.ts → config-0Ta55UV0.d.ts} +10 -9
  53. package/dist/tsup/{config-C-a9vrke.d.cts → config-Ca8dN4cS.d.cts} +10 -9
  54. package/dist/tsup/{context-A7R0bsZL.d.ts → context-B_IWbWne.d.ts} +1 -1
  55. package/dist/tsup/{context-CA3r-pf2.d.cts → context-CUrQ9MHc.d.cts} +1 -1
  56. package/dist/tsup/inspector/mod.cjs +6 -6
  57. package/dist/tsup/inspector/mod.js +5 -5
  58. package/dist/tsup/mod.cjs +252 -207
  59. package/dist/tsup/mod.cjs.map +1 -1
  60. package/dist/tsup/mod.d.cts +4 -5
  61. package/dist/tsup/mod.d.ts +4 -5
  62. package/dist/tsup/mod.js +183 -138
  63. package/dist/tsup/mod.js.map +1 -1
  64. package/dist/tsup/test/mod.cjs +10 -10
  65. package/dist/tsup/test/mod.d.cts +2 -3
  66. package/dist/tsup/test/mod.d.ts +2 -3
  67. package/dist/tsup/test/mod.js +6 -6
  68. package/dist/tsup/utils-DVekpm4I.d.cts +103 -0
  69. package/dist/tsup/utils-DVekpm4I.d.ts +103 -0
  70. package/dist/tsup/utils.cjs +3 -3
  71. package/dist/tsup/utils.d.cts +1 -1
  72. package/dist/tsup/utils.d.ts +1 -1
  73. package/dist/tsup/utils.js +2 -2
  74. package/dist/tsup/workflow/mod.cjs +9 -9
  75. package/dist/tsup/workflow/mod.d.cts +4 -5
  76. package/dist/tsup/workflow/mod.d.ts +4 -5
  77. package/dist/tsup/workflow/mod.js +5 -5
  78. package/package.json +8 -8
  79. package/src/actor/errors.ts +53 -7
  80. package/src/client/actor-conn.ts +52 -29
  81. package/src/client/actor-handle.ts +57 -23
  82. package/src/client/errors.ts +2 -1
  83. package/src/client/raw-utils.ts +2 -4
  84. package/src/client/utils.ts +32 -3
  85. package/src/common/actor-router-consts.ts +4 -0
  86. package/src/common/bare/generated/client-protocol/v4.ts +599 -0
  87. package/src/common/client-protocol-versioned.ts +125 -18
  88. package/src/common/client-protocol-zod.ts +7 -0
  89. package/src/common/client-protocol.ts +1 -1
  90. package/src/common/database/native-database.test.ts +35 -0
  91. package/src/common/database/native-database.ts +8 -4
  92. package/src/common/router.ts +38 -8
  93. package/src/common/utils.ts +9 -52
  94. package/src/drivers/engine/actor-driver.ts +18 -17
  95. package/src/registry/config/index.ts +3 -5
  96. package/src/registry/index.ts +156 -19
  97. package/src/registry/napi-runtime.ts +44 -6
  98. package/src/registry/native.ts +5 -152
  99. package/src/registry/runtime.ts +16 -5
  100. package/src/registry/wasm-runtime.ts +22 -2
  101. package/dist/tsup/chunk-FTZIZ3JG.cjs.map +0 -1
  102. package/dist/tsup/chunk-JRCZDHXT.cjs.map +0 -1
  103. package/dist/tsup/chunk-JY73X7VU.js.map +0 -1
  104. package/dist/tsup/chunk-K34B3OVG.js.map +0 -1
  105. package/dist/tsup/chunk-N2DQSJIW.js.map +0 -1
  106. package/dist/tsup/chunk-V3QNBJ7N.cjs.map +0 -1
  107. package/dist/tsup/utils-fwx3o3K9.d.cts +0 -18
  108. package/dist/tsup/utils-fwx3o3K9.d.ts +0 -18
  109. /package/dist/tsup/{chunk-NATOT3ET.js.map → chunk-CAF6JDJE.js.map} +0 -0
  110. /package/dist/tsup/{chunk-PGYEMIOE.js.map → chunk-DEO7MMWQ.js.map} +0 -0
  111. /package/dist/tsup/{chunk-SULB574D.js.map → chunk-EMO6E3PJ.js.map} +0 -0
  112. /package/dist/tsup/{chunk-LDTT6WKJ.js.map → chunk-RTC2AZGB.js.map} +0 -0
  113. /package/dist/tsup/{chunk-UXTP4EBU.js.map → chunk-ZI5QJMKO.js.map} +0 -0
@@ -3,7 +3,7 @@ var INTERNAL_ERROR_CODE = "internal_error";
3
3
  var INTERNAL_ERROR_DESCRIPTION = "An internal error occurred";
4
4
  var USER_ERROR_CODE = "user_error";
5
5
  function looksLikeRivetErrorOptions(value) {
6
- return typeof value === "object" && value !== null && ("public" in value || "metadata" in value || "statusCode" in value || "cause" in value);
6
+ return typeof value === "object" && value !== null && ("public" in value || "metadata" in value || "statusCode" in value || "actor" in value || "cause" in value);
7
7
  }
8
8
  function isTypedErrorTag(value) {
9
9
  return value === "ActorError" || value === "RivetError";
@@ -22,6 +22,7 @@ var RivetError = class extends Error {
22
22
  public;
23
23
  metadata;
24
24
  statusCode;
25
+ actor;
25
26
  group;
26
27
  code;
27
28
  static isRivetError(error) {
@@ -39,6 +40,7 @@ var RivetError = class extends Error {
39
40
  this.public = normalized.public ?? false;
40
41
  this.metadata = normalized.metadata;
41
42
  this.statusCode = normalized.statusCode ?? (this.public ? 400 : 500);
43
+ this.actor = normalized.actor;
42
44
  }
43
45
  toString() {
44
46
  return this.message;
@@ -93,13 +95,14 @@ function assertUnreachable(x) {
93
95
  function isCanonicalStructuredRivetError(error) {
94
96
  return error instanceof RivetError || typeof error === "object" && error !== null && "__type" in error && error.__type === "RivetError" && "group" in error && typeof error.group === "string" && "code" in error && typeof error.code === "string" && "message" in error && typeof error.message === "string";
95
97
  }
96
- function deconstructError(error, logger4, extraLog, exposeInternalError = false) {
98
+ function deconstructError(error, exposeInternalError = false) {
97
99
  let statusCode;
98
100
  let public_;
99
101
  let group;
100
102
  let code;
101
103
  let message;
102
104
  let metadata;
105
+ let actor;
103
106
  if (isCanonicalStructuredRivetError(error)) {
104
107
  statusCode = typeof error.statusCode === "number" ? error.statusCode : error.public ? 400 : 500;
105
108
  public_ = error.public ?? false;
@@ -107,14 +110,7 @@ function deconstructError(error, logger4, extraLog, exposeInternalError = false)
107
110
  code = error.code;
108
111
  message = error.message;
109
112
  metadata = error.metadata;
110
- logger4.info({
111
- msg: "structured error passthrough",
112
- group,
113
- code,
114
- message,
115
- ...EXTRA_ERROR_LOG,
116
- ...extraLog
117
- });
113
+ actor = error.actor;
118
114
  } else if (RivetError.isActorError(error) && error.public) {
119
115
  statusCode = "statusCode" in error && error.statusCode ? error.statusCode : 400;
120
116
  public_ = true;
@@ -122,14 +118,7 @@ function deconstructError(error, logger4, extraLog, exposeInternalError = false)
122
118
  code = error.code;
123
119
  message = getErrorMessage(error);
124
120
  metadata = error.metadata;
125
- logger4.info({
126
- msg: "public error",
127
- group,
128
- code,
129
- message,
130
- ...EXTRA_ERROR_LOG,
131
- ...extraLog
132
- });
121
+ actor = error.actor;
133
122
  } else if (exposeInternalError) {
134
123
  if (RivetError.isActorError(error)) {
135
124
  statusCode = 500;
@@ -138,30 +127,13 @@ function deconstructError(error, logger4, extraLog, exposeInternalError = false)
138
127
  code = error.code;
139
128
  message = getErrorMessage(error);
140
129
  metadata = error.metadata;
141
- logger4.info({
142
- msg: "internal error",
143
- group,
144
- code,
145
- message,
146
- stack: error?.stack,
147
- ...EXTRA_ERROR_LOG,
148
- ...extraLog
149
- });
130
+ actor = error.actor;
150
131
  } else {
151
132
  statusCode = 500;
152
133
  public_ = false;
153
134
  group = "rivetkit";
154
135
  code = INTERNAL_ERROR_CODE;
155
136
  message = getErrorMessage(error);
156
- logger4.info({
157
- msg: "internal error",
158
- group,
159
- code,
160
- message,
161
- stack: error?.stack,
162
- ...EXTRA_ERROR_LOG,
163
- ...extraLog
164
- });
165
137
  }
166
138
  } else {
167
139
  statusCode = 500;
@@ -169,16 +141,12 @@ function deconstructError(error, logger4, extraLog, exposeInternalError = false)
169
141
  group = "rivetkit";
170
142
  code = INTERNAL_ERROR_CODE;
171
143
  message = INTERNAL_ERROR_DESCRIPTION;
144
+ if (RivetError.isActorError(error)) {
145
+ actor = error.actor;
146
+ }
172
147
  metadata = {
173
148
  //url: `https://hub.rivet.dev/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`,
174
149
  };
175
- logger4.warn({
176
- msg: "internal error",
177
- error: getErrorMessage(error),
178
- stack: error?.stack,
179
- ...EXTRA_ERROR_LOG,
180
- ...extraLog
181
- });
182
150
  }
183
151
  return {
184
152
  __type: "ActorError",
@@ -187,7 +155,8 @@ function deconstructError(error, logger4, extraLog, exposeInternalError = false)
187
155
  group,
188
156
  code,
189
157
  message,
190
- metadata
158
+ metadata,
159
+ actor
191
160
  };
192
161
  }
193
162
  function stringifyError(error) {
@@ -231,7 +200,7 @@ function noopNext() {
231
200
  // package.json
232
201
  var package_default = {
233
202
  name: "rivetkit",
234
- version: "2.3.0-rc.5",
203
+ version: "2.3.0-rc.6",
235
204
  description: "Lightweight libraries for building stateful actors on edge platforms",
236
205
  license: "Apache-2.0",
237
206
  keywords: [
@@ -666,11 +635,6 @@ function combineUrlPath(endpoint, path, queryParams) {
666
635
  const fullQuery = queryParts.length > 0 ? `?${queryParts.join("&")}` : "";
667
636
  return `${baseUrl.protocol}//${baseUrl.host}${fullPath}${fullQuery}`;
668
637
  }
669
- var EXTRA_ERROR_LOG = {
670
- issues: "https://github.com/rivet-dev/rivet/issues",
671
- support: "https://rivet.dev/discord",
672
- version: VERSION
673
- };
674
638
 
675
639
  // src/devtools-loader/log.ts
676
640
  function logger() {
@@ -2694,8 +2658,440 @@ function decodeHttpResolveResponse3(bytes) {
2694
2658
  return result;
2695
2659
  }
2696
2660
 
2661
+ // src/common/bare/generated/client-protocol/v4.ts
2662
+ import * as bare4 from "@rivetkit/bare-ts";
2663
+ var DEFAULT_CONFIG4 = /* @__PURE__ */ bare4.Config({});
2664
+ function readCbor4(bc) {
2665
+ return bare4.readData(bc);
2666
+ }
2667
+ function writeCbor4(bc, x) {
2668
+ bare4.writeData(bc, x);
2669
+ }
2670
+ function read04(bc) {
2671
+ return bare4.readBool(bc) ? bare4.readString(bc) : null;
2672
+ }
2673
+ function write04(bc, x) {
2674
+ bare4.writeBool(bc, x != null);
2675
+ if (x != null) {
2676
+ bare4.writeString(bc, x);
2677
+ }
2678
+ }
2679
+ function readActorSpecifier(bc) {
2680
+ return {
2681
+ actorId: bare4.readString(bc),
2682
+ generation: bare4.readUint(bc),
2683
+ key: read04(bc)
2684
+ };
2685
+ }
2686
+ function writeActorSpecifier(bc, x) {
2687
+ bare4.writeString(bc, x.actorId);
2688
+ bare4.writeUint(bc, x.generation);
2689
+ write04(bc, x.key);
2690
+ }
2691
+ function readInit4(bc) {
2692
+ return {
2693
+ actorId: bare4.readString(bc),
2694
+ connectionId: bare4.readString(bc)
2695
+ };
2696
+ }
2697
+ function writeInit4(bc, x) {
2698
+ bare4.writeString(bc, x.actorId);
2699
+ bare4.writeString(bc, x.connectionId);
2700
+ }
2701
+ function read14(bc) {
2702
+ return bare4.readBool(bc) ? readCbor4(bc) : null;
2703
+ }
2704
+ function write14(bc, x) {
2705
+ bare4.writeBool(bc, x != null);
2706
+ if (x != null) {
2707
+ writeCbor4(bc, x);
2708
+ }
2709
+ }
2710
+ function read22(bc) {
2711
+ return bare4.readBool(bc) ? bare4.readUint(bc) : null;
2712
+ }
2713
+ function write22(bc, x) {
2714
+ bare4.writeBool(bc, x != null);
2715
+ if (x != null) {
2716
+ bare4.writeUint(bc, x);
2717
+ }
2718
+ }
2719
+ function read32(bc) {
2720
+ return bare4.readBool(bc) ? readActorSpecifier(bc) : null;
2721
+ }
2722
+ function write32(bc, x) {
2723
+ bare4.writeBool(bc, x != null);
2724
+ if (x != null) {
2725
+ writeActorSpecifier(bc, x);
2726
+ }
2727
+ }
2728
+ function readError4(bc) {
2729
+ return {
2730
+ group: bare4.readString(bc),
2731
+ code: bare4.readString(bc),
2732
+ message: bare4.readString(bc),
2733
+ metadata: read14(bc),
2734
+ actionId: read22(bc),
2735
+ actor: read32(bc)
2736
+ };
2737
+ }
2738
+ function writeError4(bc, x) {
2739
+ bare4.writeString(bc, x.group);
2740
+ bare4.writeString(bc, x.code);
2741
+ bare4.writeString(bc, x.message);
2742
+ write14(bc, x.metadata);
2743
+ write22(bc, x.actionId);
2744
+ write32(bc, x.actor);
2745
+ }
2746
+ function readActionResponse4(bc) {
2747
+ return {
2748
+ id: bare4.readUint(bc),
2749
+ output: readCbor4(bc)
2750
+ };
2751
+ }
2752
+ function writeActionResponse4(bc, x) {
2753
+ bare4.writeUint(bc, x.id);
2754
+ writeCbor4(bc, x.output);
2755
+ }
2756
+ function readEvent4(bc) {
2757
+ return {
2758
+ name: bare4.readString(bc),
2759
+ args: readCbor4(bc)
2760
+ };
2761
+ }
2762
+ function writeEvent4(bc, x) {
2763
+ bare4.writeString(bc, x.name);
2764
+ writeCbor4(bc, x.args);
2765
+ }
2766
+ function readToClientBody4(bc) {
2767
+ const offset = bc.offset;
2768
+ const tag = bare4.readU8(bc);
2769
+ switch (tag) {
2770
+ case 0:
2771
+ return { tag: "Init", val: readInit4(bc) };
2772
+ case 1:
2773
+ return { tag: "Error", val: readError4(bc) };
2774
+ case 2:
2775
+ return { tag: "ActionResponse", val: readActionResponse4(bc) };
2776
+ case 3:
2777
+ return { tag: "Event", val: readEvent4(bc) };
2778
+ default: {
2779
+ bc.offset = offset;
2780
+ throw new bare4.BareError(offset, "invalid tag");
2781
+ }
2782
+ }
2783
+ }
2784
+ function writeToClientBody4(bc, x) {
2785
+ switch (x.tag) {
2786
+ case "Init": {
2787
+ bare4.writeU8(bc, 0);
2788
+ writeInit4(bc, x.val);
2789
+ break;
2790
+ }
2791
+ case "Error": {
2792
+ bare4.writeU8(bc, 1);
2793
+ writeError4(bc, x.val);
2794
+ break;
2795
+ }
2796
+ case "ActionResponse": {
2797
+ bare4.writeU8(bc, 2);
2798
+ writeActionResponse4(bc, x.val);
2799
+ break;
2800
+ }
2801
+ case "Event": {
2802
+ bare4.writeU8(bc, 3);
2803
+ writeEvent4(bc, x.val);
2804
+ break;
2805
+ }
2806
+ }
2807
+ }
2808
+ function readToClient4(bc) {
2809
+ return {
2810
+ body: readToClientBody4(bc)
2811
+ };
2812
+ }
2813
+ function writeToClient4(bc, x) {
2814
+ writeToClientBody4(bc, x.body);
2815
+ }
2816
+ function encodeToClient4(x, config) {
2817
+ const fullConfig = config != null ? bare4.Config(config) : DEFAULT_CONFIG4;
2818
+ const bc = new bare4.ByteCursor(
2819
+ new Uint8Array(fullConfig.initialBufferLength),
2820
+ fullConfig
2821
+ );
2822
+ writeToClient4(bc, x);
2823
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
2824
+ }
2825
+ function decodeToClient4(bytes) {
2826
+ const bc = new bare4.ByteCursor(bytes, DEFAULT_CONFIG4);
2827
+ const result = readToClient4(bc);
2828
+ if (bc.offset < bc.view.byteLength) {
2829
+ throw new bare4.BareError(bc.offset, "remaining bytes");
2830
+ }
2831
+ return result;
2832
+ }
2833
+ function readActionRequest4(bc) {
2834
+ return {
2835
+ id: bare4.readUint(bc),
2836
+ name: bare4.readString(bc),
2837
+ args: readCbor4(bc)
2838
+ };
2839
+ }
2840
+ function writeActionRequest4(bc, x) {
2841
+ bare4.writeUint(bc, x.id);
2842
+ bare4.writeString(bc, x.name);
2843
+ writeCbor4(bc, x.args);
2844
+ }
2845
+ function readSubscriptionRequest4(bc) {
2846
+ return {
2847
+ eventName: bare4.readString(bc),
2848
+ subscribe: bare4.readBool(bc)
2849
+ };
2850
+ }
2851
+ function writeSubscriptionRequest4(bc, x) {
2852
+ bare4.writeString(bc, x.eventName);
2853
+ bare4.writeBool(bc, x.subscribe);
2854
+ }
2855
+ function readToServerBody4(bc) {
2856
+ const offset = bc.offset;
2857
+ const tag = bare4.readU8(bc);
2858
+ switch (tag) {
2859
+ case 0:
2860
+ return { tag: "ActionRequest", val: readActionRequest4(bc) };
2861
+ case 1:
2862
+ return { tag: "SubscriptionRequest", val: readSubscriptionRequest4(bc) };
2863
+ default: {
2864
+ bc.offset = offset;
2865
+ throw new bare4.BareError(offset, "invalid tag");
2866
+ }
2867
+ }
2868
+ }
2869
+ function writeToServerBody4(bc, x) {
2870
+ switch (x.tag) {
2871
+ case "ActionRequest": {
2872
+ bare4.writeU8(bc, 0);
2873
+ writeActionRequest4(bc, x.val);
2874
+ break;
2875
+ }
2876
+ case "SubscriptionRequest": {
2877
+ bare4.writeU8(bc, 1);
2878
+ writeSubscriptionRequest4(bc, x.val);
2879
+ break;
2880
+ }
2881
+ }
2882
+ }
2883
+ function readToServer4(bc) {
2884
+ return {
2885
+ body: readToServerBody4(bc)
2886
+ };
2887
+ }
2888
+ function writeToServer4(bc, x) {
2889
+ writeToServerBody4(bc, x.body);
2890
+ }
2891
+ function encodeToServer4(x, config) {
2892
+ const fullConfig = config != null ? bare4.Config(config) : DEFAULT_CONFIG4;
2893
+ const bc = new bare4.ByteCursor(
2894
+ new Uint8Array(fullConfig.initialBufferLength),
2895
+ fullConfig
2896
+ );
2897
+ writeToServer4(bc, x);
2898
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
2899
+ }
2900
+ function decodeToServer4(bytes) {
2901
+ const bc = new bare4.ByteCursor(bytes, DEFAULT_CONFIG4);
2902
+ const result = readToServer4(bc);
2903
+ if (bc.offset < bc.view.byteLength) {
2904
+ throw new bare4.BareError(bc.offset, "remaining bytes");
2905
+ }
2906
+ return result;
2907
+ }
2908
+ function readHttpActionRequest4(bc) {
2909
+ return {
2910
+ args: readCbor4(bc)
2911
+ };
2912
+ }
2913
+ function writeHttpActionRequest4(bc, x) {
2914
+ writeCbor4(bc, x.args);
2915
+ }
2916
+ function encodeHttpActionRequest4(x, config) {
2917
+ const fullConfig = config != null ? bare4.Config(config) : DEFAULT_CONFIG4;
2918
+ const bc = new bare4.ByteCursor(
2919
+ new Uint8Array(fullConfig.initialBufferLength),
2920
+ fullConfig
2921
+ );
2922
+ writeHttpActionRequest4(bc, x);
2923
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
2924
+ }
2925
+ function decodeHttpActionRequest4(bytes) {
2926
+ const bc = new bare4.ByteCursor(bytes, DEFAULT_CONFIG4);
2927
+ const result = readHttpActionRequest4(bc);
2928
+ if (bc.offset < bc.view.byteLength) {
2929
+ throw new bare4.BareError(bc.offset, "remaining bytes");
2930
+ }
2931
+ return result;
2932
+ }
2933
+ function readHttpActionResponse4(bc) {
2934
+ return {
2935
+ output: readCbor4(bc)
2936
+ };
2937
+ }
2938
+ function writeHttpActionResponse4(bc, x) {
2939
+ writeCbor4(bc, x.output);
2940
+ }
2941
+ function encodeHttpActionResponse4(x, config) {
2942
+ const fullConfig = config != null ? bare4.Config(config) : DEFAULT_CONFIG4;
2943
+ const bc = new bare4.ByteCursor(
2944
+ new Uint8Array(fullConfig.initialBufferLength),
2945
+ fullConfig
2946
+ );
2947
+ writeHttpActionResponse4(bc, x);
2948
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
2949
+ }
2950
+ function decodeHttpActionResponse4(bytes) {
2951
+ const bc = new bare4.ByteCursor(bytes, DEFAULT_CONFIG4);
2952
+ const result = readHttpActionResponse4(bc);
2953
+ if (bc.offset < bc.view.byteLength) {
2954
+ throw new bare4.BareError(bc.offset, "remaining bytes");
2955
+ }
2956
+ return result;
2957
+ }
2958
+ function read42(bc) {
2959
+ return bare4.readBool(bc) ? bare4.readBool(bc) : null;
2960
+ }
2961
+ function write42(bc, x) {
2962
+ bare4.writeBool(bc, x != null);
2963
+ if (x != null) {
2964
+ bare4.writeBool(bc, x);
2965
+ }
2966
+ }
2967
+ function read5(bc) {
2968
+ return bare4.readBool(bc) ? bare4.readU64(bc) : null;
2969
+ }
2970
+ function write5(bc, x) {
2971
+ bare4.writeBool(bc, x != null);
2972
+ if (x != null) {
2973
+ bare4.writeU64(bc, x);
2974
+ }
2975
+ }
2976
+ function readHttpQueueSendRequest2(bc) {
2977
+ return {
2978
+ body: readCbor4(bc),
2979
+ name: read04(bc),
2980
+ wait: read42(bc),
2981
+ timeout: read5(bc)
2982
+ };
2983
+ }
2984
+ function writeHttpQueueSendRequest2(bc, x) {
2985
+ writeCbor4(bc, x.body);
2986
+ write04(bc, x.name);
2987
+ write42(bc, x.wait);
2988
+ write5(bc, x.timeout);
2989
+ }
2990
+ function encodeHttpQueueSendRequest2(x, config) {
2991
+ const fullConfig = config != null ? bare4.Config(config) : DEFAULT_CONFIG4;
2992
+ const bc = new bare4.ByteCursor(
2993
+ new Uint8Array(fullConfig.initialBufferLength),
2994
+ fullConfig
2995
+ );
2996
+ writeHttpQueueSendRequest2(bc, x);
2997
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
2998
+ }
2999
+ function decodeHttpQueueSendRequest2(bytes) {
3000
+ const bc = new bare4.ByteCursor(bytes, DEFAULT_CONFIG4);
3001
+ const result = readHttpQueueSendRequest2(bc);
3002
+ if (bc.offset < bc.view.byteLength) {
3003
+ throw new bare4.BareError(bc.offset, "remaining bytes");
3004
+ }
3005
+ return result;
3006
+ }
3007
+ function readHttpQueueSendResponse2(bc) {
3008
+ return {
3009
+ status: bare4.readString(bc),
3010
+ response: read14(bc)
3011
+ };
3012
+ }
3013
+ function writeHttpQueueSendResponse2(bc, x) {
3014
+ bare4.writeString(bc, x.status);
3015
+ write14(bc, x.response);
3016
+ }
3017
+ function encodeHttpQueueSendResponse2(x, config) {
3018
+ const fullConfig = config != null ? bare4.Config(config) : DEFAULT_CONFIG4;
3019
+ const bc = new bare4.ByteCursor(
3020
+ new Uint8Array(fullConfig.initialBufferLength),
3021
+ fullConfig
3022
+ );
3023
+ writeHttpQueueSendResponse2(bc, x);
3024
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
3025
+ }
3026
+ function decodeHttpQueueSendResponse2(bytes) {
3027
+ const bc = new bare4.ByteCursor(bytes, DEFAULT_CONFIG4);
3028
+ const result = readHttpQueueSendResponse2(bc);
3029
+ if (bc.offset < bc.view.byteLength) {
3030
+ throw new bare4.BareError(bc.offset, "remaining bytes");
3031
+ }
3032
+ return result;
3033
+ }
3034
+ function readHttpResponseError4(bc) {
3035
+ return {
3036
+ group: bare4.readString(bc),
3037
+ code: bare4.readString(bc),
3038
+ message: bare4.readString(bc),
3039
+ metadata: read14(bc),
3040
+ actor: read32(bc)
3041
+ };
3042
+ }
3043
+ function writeHttpResponseError4(bc, x) {
3044
+ bare4.writeString(bc, x.group);
3045
+ bare4.writeString(bc, x.code);
3046
+ bare4.writeString(bc, x.message);
3047
+ write14(bc, x.metadata);
3048
+ write32(bc, x.actor);
3049
+ }
3050
+ function encodeHttpResponseError4(x, config) {
3051
+ const fullConfig = config != null ? bare4.Config(config) : DEFAULT_CONFIG4;
3052
+ const bc = new bare4.ByteCursor(
3053
+ new Uint8Array(fullConfig.initialBufferLength),
3054
+ fullConfig
3055
+ );
3056
+ writeHttpResponseError4(bc, x);
3057
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
3058
+ }
3059
+ function decodeHttpResponseError4(bytes) {
3060
+ const bc = new bare4.ByteCursor(bytes, DEFAULT_CONFIG4);
3061
+ const result = readHttpResponseError4(bc);
3062
+ if (bc.offset < bc.view.byteLength) {
3063
+ throw new bare4.BareError(bc.offset, "remaining bytes");
3064
+ }
3065
+ return result;
3066
+ }
3067
+ function readHttpResolveResponse4(bc) {
3068
+ return {
3069
+ actorId: bare4.readString(bc)
3070
+ };
3071
+ }
3072
+ function writeHttpResolveResponse4(bc, x) {
3073
+ bare4.writeString(bc, x.actorId);
3074
+ }
3075
+ function encodeHttpResolveResponse4(x, config) {
3076
+ const fullConfig = config != null ? bare4.Config(config) : DEFAULT_CONFIG4;
3077
+ const bc = new bare4.ByteCursor(
3078
+ new Uint8Array(fullConfig.initialBufferLength),
3079
+ fullConfig
3080
+ );
3081
+ writeHttpResolveResponse4(bc, x);
3082
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
3083
+ }
3084
+ function decodeHttpResolveResponse4(bytes) {
3085
+ const bc = new bare4.ByteCursor(bytes, DEFAULT_CONFIG4);
3086
+ const result = readHttpResolveResponse4(bc);
3087
+ if (bc.offset < bc.view.byteLength) {
3088
+ throw new bare4.BareError(bc.offset, "remaining bytes");
3089
+ }
3090
+ return result;
3091
+ }
3092
+
2697
3093
  // src/common/client-protocol-versioned.ts
2698
- var CURRENT_VERSION = 3;
3094
+ var CURRENT_VERSION = 4;
2699
3095
  var v1ToV2 = (v1Data) => {
2700
3096
  if (v1Data.body.tag === "Init") {
2701
3097
  const { actorId, connectionId } = v1Data.body.val;
@@ -2731,6 +3127,32 @@ var v2ToV1 = (v2Data) => {
2731
3127
  var v2ToV3 = (v2Data) => {
2732
3128
  return v2Data;
2733
3129
  };
3130
+ var v3ToV4 = (v3Data) => {
3131
+ if (v3Data.body.tag === "Error") {
3132
+ return {
3133
+ body: {
3134
+ tag: "Error",
3135
+ val: {
3136
+ ...v3Data.body.val,
3137
+ actor: null
3138
+ }
3139
+ }
3140
+ };
3141
+ }
3142
+ return v3Data;
3143
+ };
3144
+ var v4ToV3 = (v4Data) => {
3145
+ if (v4Data.body.tag === "Error") {
3146
+ const { actor: _, ...val } = v4Data.body.val;
3147
+ return {
3148
+ body: {
3149
+ tag: "Error",
3150
+ val
3151
+ }
3152
+ };
3153
+ }
3154
+ return v4Data;
3155
+ };
2734
3156
  var v3ToV2 = (v3Data) => {
2735
3157
  return v3Data;
2736
3158
  };
@@ -2740,12 +3162,26 @@ var v1ToServerV2 = (v1Data) => {
2740
3162
  var v2ToServerV3 = (v2Data) => {
2741
3163
  return v2Data;
2742
3164
  };
3165
+ var v3ToServerV4 = (v3Data) => {
3166
+ return v3Data;
3167
+ };
3168
+ var v4ToServerV3 = (v4Data) => {
3169
+ return v4Data;
3170
+ };
2743
3171
  var v3ToServerV2 = (v3Data) => {
2744
3172
  return v3Data;
2745
3173
  };
2746
3174
  var v2ToServerV1 = (v2Data) => {
2747
3175
  return v2Data;
2748
3176
  };
3177
+ var v3HttpResponseErrorToV4 = (v3Data) => ({
3178
+ ...v3Data,
3179
+ actor: null
3180
+ });
3181
+ var v4HttpResponseErrorToV3 = (v4Data) => {
3182
+ const { actor: _, ...rest } = v4Data;
3183
+ return rest;
3184
+ };
2749
3185
  var CLIENT_PROTOCOL_TO_SERVER = createVersionedDataHandler({
2750
3186
  deserializeVersion: (bytes, version) => {
2751
3187
  switch (version) {
@@ -2755,6 +3191,8 @@ var CLIENT_PROTOCOL_TO_SERVER = createVersionedDataHandler({
2755
3191
  return decodeToServer2(bytes);
2756
3192
  case 3:
2757
3193
  return decodeToServer3(bytes);
3194
+ case 4:
3195
+ return decodeToServer4(bytes);
2758
3196
  default:
2759
3197
  throw new Error(`Unknown version ${version}`);
2760
3198
  }
@@ -2767,12 +3205,14 @@ var CLIENT_PROTOCOL_TO_SERVER = createVersionedDataHandler({
2767
3205
  return encodeToServer2(data);
2768
3206
  case 3:
2769
3207
  return encodeToServer3(data);
3208
+ case 4:
3209
+ return encodeToServer4(data);
2770
3210
  default:
2771
3211
  throw new Error(`Unknown version ${version}`);
2772
3212
  }
2773
3213
  },
2774
- deserializeConverters: () => [v1ToServerV2, v2ToServerV3],
2775
- serializeConverters: () => [v3ToServerV2, v2ToServerV1]
3214
+ deserializeConverters: () => [v1ToServerV2, v2ToServerV3, v3ToServerV4],
3215
+ serializeConverters: () => [v4ToServerV3, v3ToServerV2, v2ToServerV1]
2776
3216
  });
2777
3217
  var CLIENT_PROTOCOL_TO_CLIENT = createVersionedDataHandler({
2778
3218
  deserializeVersion: (bytes, version) => {
@@ -2783,6 +3223,8 @@ var CLIENT_PROTOCOL_TO_CLIENT = createVersionedDataHandler({
2783
3223
  return decodeToClient2(bytes);
2784
3224
  case 3:
2785
3225
  return decodeToClient3(bytes);
3226
+ case 4:
3227
+ return decodeToClient4(bytes);
2786
3228
  default:
2787
3229
  throw new Error(`Unknown version ${version}`);
2788
3230
  }
@@ -2795,12 +3237,14 @@ var CLIENT_PROTOCOL_TO_CLIENT = createVersionedDataHandler({
2795
3237
  return encodeToClient2(data);
2796
3238
  case 3:
2797
3239
  return encodeToClient3(data);
3240
+ case 4:
3241
+ return encodeToClient4(data);
2798
3242
  default:
2799
3243
  throw new Error(`Unknown version ${version}`);
2800
3244
  }
2801
3245
  },
2802
- deserializeConverters: () => [v1ToV2, v2ToV3],
2803
- serializeConverters: () => [v3ToV2, v2ToV1]
3246
+ deserializeConverters: () => [v1ToV2, v2ToV3, v3ToV4],
3247
+ serializeConverters: () => [v4ToV3, v3ToV2, v2ToV1]
2804
3248
  });
2805
3249
  var HTTP_ACTION_REQUEST_VERSIONED = createVersionedDataHandler({
2806
3250
  deserializeVersion: (bytes, version) => {
@@ -2811,6 +3255,8 @@ var HTTP_ACTION_REQUEST_VERSIONED = createVersionedDataHandler({
2811
3255
  return decodeHttpActionRequest2(bytes);
2812
3256
  case 3:
2813
3257
  return decodeHttpActionRequest3(bytes);
3258
+ case 4:
3259
+ return decodeHttpActionRequest4(bytes);
2814
3260
  default:
2815
3261
  throw new Error(`Unknown version ${version}`);
2816
3262
  }
@@ -2829,6 +3275,10 @@ var HTTP_ACTION_REQUEST_VERSIONED = createVersionedDataHandler({
2829
3275
  return encodeHttpActionRequest3(
2830
3276
  data
2831
3277
  );
3278
+ case 4:
3279
+ return encodeHttpActionRequest4(
3280
+ data
3281
+ );
2832
3282
  default:
2833
3283
  throw new Error(`Unknown version ${version}`);
2834
3284
  }
@@ -2845,6 +3295,8 @@ var HTTP_ACTION_RESPONSE_VERSIONED = createVersionedDataHandler({
2845
3295
  return decodeHttpActionResponse2(bytes);
2846
3296
  case 3:
2847
3297
  return decodeHttpActionResponse3(bytes);
3298
+ case 4:
3299
+ return decodeHttpActionResponse4(bytes);
2848
3300
  default:
2849
3301
  throw new Error(`Unknown version ${version}`);
2850
3302
  }
@@ -2863,6 +3315,10 @@ var HTTP_ACTION_RESPONSE_VERSIONED = createVersionedDataHandler({
2863
3315
  return encodeHttpActionResponse3(
2864
3316
  data
2865
3317
  );
3318
+ case 4:
3319
+ return encodeHttpActionResponse4(
3320
+ data
3321
+ );
2866
3322
  default:
2867
3323
  throw new Error(`Unknown version ${version}`);
2868
3324
  }
@@ -2875,6 +3331,8 @@ var HTTP_QUEUE_SEND_REQUEST_VERSIONED = createVersionedDataHandler({
2875
3331
  switch (version) {
2876
3332
  case 3:
2877
3333
  return decodeHttpQueueSendRequest(bytes);
3334
+ case 4:
3335
+ return decodeHttpQueueSendRequest2(bytes);
2878
3336
  default:
2879
3337
  throw new Error(
2880
3338
  `HttpQueueSendRequest only exists in version 3+, got version ${version}`
@@ -2887,6 +3345,10 @@ var HTTP_QUEUE_SEND_REQUEST_VERSIONED = createVersionedDataHandler({
2887
3345
  return encodeHttpQueueSendRequest(
2888
3346
  data
2889
3347
  );
3348
+ case 4:
3349
+ return encodeHttpQueueSendRequest2(
3350
+ data
3351
+ );
2890
3352
  default:
2891
3353
  throw new Error(
2892
3354
  `HttpQueueSendRequest only exists in version 3+, got version ${version}`
@@ -2901,6 +3363,8 @@ var HTTP_QUEUE_SEND_RESPONSE_VERSIONED = createVersionedDataHandler({
2901
3363
  switch (version) {
2902
3364
  case 3:
2903
3365
  return decodeHttpQueueSendResponse(bytes);
3366
+ case 4:
3367
+ return decodeHttpQueueSendResponse2(bytes);
2904
3368
  default:
2905
3369
  throw new Error(
2906
3370
  `HttpQueueSendResponse only exists in version 3+, got version ${version}`
@@ -2913,6 +3377,10 @@ var HTTP_QUEUE_SEND_RESPONSE_VERSIONED = createVersionedDataHandler({
2913
3377
  return encodeHttpQueueSendResponse(
2914
3378
  data
2915
3379
  );
3380
+ case 4:
3381
+ return encodeHttpQueueSendResponse2(
3382
+ data
3383
+ );
2916
3384
  default:
2917
3385
  throw new Error(
2918
3386
  `HttpQueueSendResponse only exists in version 3+, got version ${version}`
@@ -2931,6 +3399,8 @@ var HTTP_RESPONSE_ERROR_VERSIONED = createVersionedDataHandler({
2931
3399
  return decodeHttpResponseError2(bytes);
2932
3400
  case 3:
2933
3401
  return decodeHttpResponseError3(bytes);
3402
+ case 4:
3403
+ return decodeHttpResponseError4(bytes);
2934
3404
  default:
2935
3405
  throw new Error(`Unknown version ${version}`);
2936
3406
  }
@@ -2949,12 +3419,24 @@ var HTTP_RESPONSE_ERROR_VERSIONED = createVersionedDataHandler({
2949
3419
  return encodeHttpResponseError3(
2950
3420
  data
2951
3421
  );
3422
+ case 4:
3423
+ return encodeHttpResponseError4(
3424
+ data
3425
+ );
2952
3426
  default:
2953
3427
  throw new Error(`Unknown version ${version}`);
2954
3428
  }
2955
3429
  },
2956
- deserializeConverters: () => [],
2957
- serializeConverters: () => []
3430
+ deserializeConverters: () => [
3431
+ (data) => data,
3432
+ (data) => data,
3433
+ v3HttpResponseErrorToV4
3434
+ ],
3435
+ serializeConverters: () => [
3436
+ v4HttpResponseErrorToV3,
3437
+ (data) => data,
3438
+ (data) => data
3439
+ ]
2958
3440
  });
2959
3441
  var HTTP_RESOLVE_RESPONSE_VERSIONED = createVersionedDataHandler({
2960
3442
  deserializeVersion: (bytes, version) => {
@@ -2965,6 +3447,8 @@ var HTTP_RESOLVE_RESPONSE_VERSIONED = createVersionedDataHandler({
2965
3447
  return decodeHttpResolveResponse2(bytes);
2966
3448
  case 3:
2967
3449
  return decodeHttpResolveResponse3(bytes);
3450
+ case 4:
3451
+ return decodeHttpResolveResponse4(bytes);
2968
3452
  default:
2969
3453
  throw new Error(`Unknown version ${version}`);
2970
3454
  }
@@ -2983,6 +3467,10 @@ var HTTP_RESOLVE_RESPONSE_VERSIONED = createVersionedDataHandler({
2983
3467
  return encodeHttpResolveResponse3(
2984
3468
  data
2985
3469
  );
3470
+ case 4:
3471
+ return encodeHttpResolveResponse4(
3472
+ data
3473
+ );
2986
3474
  default:
2987
3475
  throw new Error(`Unknown version ${version}`);
2988
3476
  }
@@ -2995,6 +3483,11 @@ var HTTP_RESOLVE_RESPONSE_VERSIONED = createVersionedDataHandler({
2995
3483
  import { z as z4 } from "zod/v4";
2996
3484
  var UintSchema = z4.bigint();
2997
3485
  var OptionalUintSchema = UintSchema.nullable();
3486
+ var ActorSpecifierSchema = z4.object({
3487
+ actorId: z4.string(),
3488
+ generation: z4.union([z4.number(), z4.bigint()]),
3489
+ key: z4.string().optional()
3490
+ });
2998
3491
  var InitSchema = z4.object({
2999
3492
  actorId: z4.string(),
3000
3493
  connectionId: z4.string()
@@ -3004,7 +3497,8 @@ var ErrorSchema = z4.object({
3004
3497
  code: z4.string(),
3005
3498
  message: z4.string(),
3006
3499
  metadata: z4.unknown().optional(),
3007
- actionId: OptionalUintSchema
3500
+ actionId: OptionalUintSchema,
3501
+ actor: ActorSpecifierSchema.optional()
3008
3502
  });
3009
3503
  var ActionResponseSchema = z4.object({
3010
3504
  id: UintSchema,
@@ -3062,7 +3556,8 @@ var HttpResponseErrorSchema = z4.object({
3062
3556
  group: z4.string(),
3063
3557
  code: z4.string(),
3064
3558
  message: z4.string(),
3065
- metadata: z4.unknown().optional()
3559
+ metadata: z4.unknown().optional(),
3560
+ actor: ActorSpecifierSchema.optional()
3066
3561
  });
3067
3562
  var HttpResolveRequestSchema = z4.null();
3068
3563
  var HttpResolveResponseSchema = z4.object({
@@ -3192,21 +3687,45 @@ async function sendHttpRequest(opts) {
3192
3687
  new Uint8Array(bufferResponse),
3193
3688
  HTTP_RESPONSE_ERROR_VERSIONED,
3194
3689
  HttpResponseErrorSchema,
3195
- // JSON: metadata is already unknown
3196
- (json) => json,
3690
+ // JSON/CBOR: normalize actor generation to the public number shape.
3691
+ (json) => ({
3692
+ ...json,
3693
+ actor: json.actor ? {
3694
+ ...json.actor,
3695
+ generation: Number(json.actor.generation)
3696
+ } : void 0
3697
+ }),
3197
3698
  // BARE: decode ArrayBuffer metadata to unknown
3198
- (bare4) => ({
3199
- group: bare4.group,
3200
- code: bare4.code,
3201
- message: bare4.message,
3202
- metadata: bare4.metadata ? decodeCborCompat(new Uint8Array(bare4.metadata)) : void 0
3699
+ (bare5) => ({
3700
+ group: bare5.group,
3701
+ code: bare5.code,
3702
+ message: bare5.message,
3703
+ metadata: bare5.metadata ? decodeCborCompat(new Uint8Array(bare5.metadata)) : void 0,
3704
+ actor: bare5.actor ? {
3705
+ actorId: bare5.actor.actorId,
3706
+ generation: Number(bare5.actor.generation),
3707
+ key: bare5.actor.key ?? void 0
3708
+ } : void 0
3203
3709
  })
3204
3710
  );
3711
+ logger2().warn({
3712
+ msg: "http error response",
3713
+ group: responseData.group,
3714
+ code: responseData.code,
3715
+ message: responseData.message,
3716
+ metadata: responseData.metadata,
3717
+ actorId: responseData.actor?.actorId,
3718
+ generation: responseData.actor?.generation,
3719
+ actorKey: responseData.actor?.key
3720
+ });
3205
3721
  throw new RivetError(
3206
3722
  responseData.group,
3207
3723
  responseData.code,
3208
3724
  responseData.message,
3209
- responseData.metadata
3725
+ {
3726
+ metadata: responseData.metadata,
3727
+ actor: responseData.actor
3728
+ }
3210
3729
  );
3211
3730
  } catch (error) {
3212
3731
  if (error instanceof RivetError) {
@@ -4155,13 +4674,13 @@ function createQueueSender(senderOptions) {
4155
4674
  response: json.response
4156
4675
  };
4157
4676
  },
4158
- responseFromBare: (bare4) => {
4159
- if (bare4.response === null || bare4.response === void 0) {
4160
- return { status: bare4.status };
4677
+ responseFromBare: (bare5) => {
4678
+ if (bare5.response === null || bare5.response === void 0) {
4679
+ return { status: bare5.status };
4161
4680
  }
4162
4681
  return {
4163
- status: bare4.status,
4164
- response: decodeCborCompat(new Uint8Array(bare4.response))
4682
+ status: bare5.status,
4683
+ response: decodeCborCompat(new Uint8Array(bare5.response))
4165
4684
  };
4166
4685
  }
4167
4686
  });
@@ -4175,47 +4694,6 @@ function createQueueSender(senderOptions) {
4175
4694
  };
4176
4695
  }
4177
4696
 
4178
- // src/client/resolve-gateway-target.ts
4179
- async function resolveGatewayTarget(driver, target) {
4180
- if ("directId" in target) {
4181
- return target.directId;
4182
- }
4183
- if ("getForId" in target) {
4184
- return target.getForId.actorId;
4185
- }
4186
- if ("getForKey" in target) {
4187
- const output = await driver.getWithKey({
4188
- name: target.getForKey.name,
4189
- key: target.getForKey.key
4190
- });
4191
- if (!output) {
4192
- throw actorNotFound(
4193
- `${target.getForKey.name}:${JSON.stringify(target.getForKey.key)}`
4194
- );
4195
- }
4196
- return output.actorId;
4197
- }
4198
- if ("getOrCreateForKey" in target) {
4199
- const output = await driver.getOrCreateWithKey({
4200
- name: target.getOrCreateForKey.name,
4201
- key: target.getOrCreateForKey.key,
4202
- input: target.getOrCreateForKey.input,
4203
- region: target.getOrCreateForKey.region
4204
- });
4205
- return output.actorId;
4206
- }
4207
- if ("create" in target) {
4208
- const output = await driver.createActor({
4209
- name: target.create.name,
4210
- key: target.create.key,
4211
- input: target.create.input,
4212
- region: target.create.region
4213
- });
4214
- return output.actorId;
4215
- }
4216
- throw invalidRequest("Invalid query format");
4217
- }
4218
-
4219
4697
  // src/client/actor-conn.ts
4220
4698
  var DEFAULT_MAX_INCOMING_MESSAGE_SIZE = 65536;
4221
4699
  var CONNECT_SYMBOL = /* @__PURE__ */ Symbol("connect");
@@ -4269,6 +4747,9 @@ var ActorConnRaw = class {
4269
4747
  this.#encoding = encoding;
4270
4748
  this.#actorResolutionState = actorResolutionState;
4271
4749
  this.#gatewayOptions = resolveActorGatewayOptions(gatewayOptions);
4750
+ if ("getForId" in actorResolutionState) {
4751
+ this.#actorId = actorResolutionState.getForId.actorId;
4752
+ }
4272
4753
  this.#readyPromise = promiseWithResolvers(
4273
4754
  (reason) => logger2().warn({
4274
4755
  msg: "unhandled ready promise rejection",
@@ -4519,7 +5000,7 @@ var ActorConnRaw = class {
4519
5000
  }
4520
5001
  async #connectWebSocket() {
4521
5002
  const params = await this.#resolveConnectionParams();
4522
- const target = this.#gatewayOptions.skipReadyWait ? await this.#resolveGatewayTargetForSkipReadyWait() : getGatewayTarget(this.#actorResolutionState);
5003
+ const target = getGatewayTarget(this.#actorResolutionState);
4523
5004
  const ws = await this.#driver.openWebSocket(
4524
5005
  PATH_CONNECT,
4525
5006
  target,
@@ -4572,22 +5053,6 @@ var ActorConnRaw = class {
4572
5053
  }
4573
5054
  });
4574
5055
  }
4575
- async #resolveGatewayTargetForSkipReadyWait() {
4576
- if ("getForId" in this.#actorResolutionState) {
4577
- return {
4578
- directId: this.#actorResolutionState.getForId.actorId
4579
- };
4580
- }
4581
- if (this.#actorId) {
4582
- return { directId: this.#actorId };
4583
- }
4584
- return {
4585
- directId: await resolveGatewayTarget(
4586
- this.#driver,
4587
- this.#actorResolutionState
4588
- )
4589
- };
4590
- }
4591
5056
  /** Called by the onopen event from drivers. */
4592
5057
  #handleOnOpen() {
4593
5058
  if (this.#disposed) {
@@ -4666,7 +5131,7 @@ var ActorConnRaw = class {
4666
5131
  });
4667
5132
  this.#handleOnOpen();
4668
5133
  } else if (response.body.tag === "Error") {
4669
- const { group, code, message, metadata, actionId } = response.body.val;
5134
+ const { group, code, message, metadata, actionId, actor } = response.body.val;
4670
5135
  if (actionId !== null) {
4671
5136
  const inFlight = this.#takeActionInFlight(Number(actionId));
4672
5137
  this.#invalidateActorIfStale(group, code);
@@ -4677,10 +5142,16 @@ var ActorConnRaw = class {
4677
5142
  group,
4678
5143
  code,
4679
5144
  message,
4680
- metadata
5145
+ metadata,
5146
+ actorId: actor?.actorId,
5147
+ generation: actor?.generation,
5148
+ actorKey: actor?.key
4681
5149
  });
4682
5150
  inFlight.reject(
4683
- new RivetError(group, code, message, metadata)
5151
+ new RivetError(group, code, message, {
5152
+ metadata,
5153
+ actor
5154
+ })
4684
5155
  );
4685
5156
  } else {
4686
5157
  logger2().warn({
@@ -4688,12 +5159,18 @@ var ActorConnRaw = class {
4688
5159
  group,
4689
5160
  code,
4690
5161
  message,
4691
- metadata
5162
+ metadata,
5163
+ actorId: actor?.actorId,
5164
+ generation: actor?.generation,
5165
+ actorKey: actor?.key
4692
5166
  });
4693
5167
  if (this.#shouldReconnectForStaleActor(group, code)) {
4694
5168
  this.#clearResolvedActorIdentity();
4695
5169
  this.#onOpenPromise?.reject(
4696
- new RivetError(group, code, message, metadata)
5170
+ new RivetError(group, code, message, {
5171
+ metadata,
5172
+ actor
5173
+ })
4697
5174
  );
4698
5175
  return;
4699
5176
  }
@@ -4701,7 +5178,7 @@ var ActorConnRaw = class {
4701
5178
  group,
4702
5179
  code,
4703
5180
  message,
4704
- metadata
5181
+ { metadata, actor }
4705
5182
  );
4706
5183
  if (isSchedulingError(group, code) && this.#actorId) {
4707
5184
  const schedulingError = await checkForSchedulingError(
@@ -5165,8 +5642,26 @@ var ActorConnRaw = class {
5165
5642
  buffer,
5166
5643
  CLIENT_PROTOCOL_TO_CLIENT,
5167
5644
  ToClientSchema,
5168
- // JSON: values are already the correct type
5169
- (msg) => msg,
5645
+ // JSON/CBOR: normalize actor generation to the public number shape.
5646
+ (msg) => {
5647
+ if (msg.body.tag !== "Error" || !msg.body.val.actor) {
5648
+ return msg;
5649
+ }
5650
+ return {
5651
+ body: {
5652
+ tag: "Error",
5653
+ val: {
5654
+ ...msg.body.val,
5655
+ actor: {
5656
+ ...msg.body.val.actor,
5657
+ generation: Number(
5658
+ msg.body.val.actor.generation
5659
+ )
5660
+ }
5661
+ }
5662
+ }
5663
+ };
5664
+ },
5170
5665
  // BARE: need to decode ArrayBuffer fields back to unknown
5171
5666
  (msg) => {
5172
5667
  if (msg.body.tag === "Error") {
@@ -5182,7 +5677,14 @@ var ActorConnRaw = class {
5182
5677
  msg.body.val.metadata
5183
5678
  )
5184
5679
  ) : null,
5185
- actionId: msg.body.val.actionId
5680
+ actionId: msg.body.val.actionId,
5681
+ actor: msg.body.val.actor ? {
5682
+ actorId: msg.body.val.actor.actorId,
5683
+ generation: Number(
5684
+ msg.body.val.actor.generation
5685
+ ),
5686
+ key: msg.body.val.actor.key ?? void 0
5687
+ } : void 0
5186
5688
  }
5187
5689
  }
5188
5690
  };
@@ -5376,13 +5878,11 @@ async function rawHttpFetch(driver, target, params, input, init, options = {}) {
5376
5878
  });
5377
5879
  return driver.sendRequest(target, proxyRequest, options);
5378
5880
  } catch (err) {
5379
- const { group, code, message, metadata } = deconstructError(
5881
+ const { group, code, message, metadata, actor } = deconstructError(
5380
5882
  err,
5381
- logger2(),
5382
- {},
5383
5883
  true
5384
5884
  );
5385
- throw new RivetError(group, code, message, metadata);
5885
+ throw new RivetError(group, code, message, { metadata, actor });
5386
5886
  }
5387
5887
  }
5388
5888
  async function rawWebSocket(driver, target, params, path, _protocols, options = {}) {
@@ -5418,6 +5918,47 @@ async function rawWebSocket(driver, target, params, path, _protocols, options =
5418
5918
  return ws;
5419
5919
  }
5420
5920
 
5921
+ // src/client/resolve-gateway-target.ts
5922
+ async function resolveGatewayTarget(driver, target) {
5923
+ if ("directId" in target) {
5924
+ return target.directId;
5925
+ }
5926
+ if ("getForId" in target) {
5927
+ return target.getForId.actorId;
5928
+ }
5929
+ if ("getForKey" in target) {
5930
+ const output = await driver.getWithKey({
5931
+ name: target.getForKey.name,
5932
+ key: target.getForKey.key
5933
+ });
5934
+ if (!output) {
5935
+ throw actorNotFound(
5936
+ `${target.getForKey.name}:${JSON.stringify(target.getForKey.key)}`
5937
+ );
5938
+ }
5939
+ return output.actorId;
5940
+ }
5941
+ if ("getOrCreateForKey" in target) {
5942
+ const output = await driver.getOrCreateWithKey({
5943
+ name: target.getOrCreateForKey.name,
5944
+ key: target.getOrCreateForKey.key,
5945
+ input: target.getOrCreateForKey.input,
5946
+ region: target.getOrCreateForKey.region
5947
+ });
5948
+ return output.actorId;
5949
+ }
5950
+ if ("create" in target) {
5951
+ const output = await driver.createActor({
5952
+ name: target.create.name,
5953
+ key: target.create.key,
5954
+ input: target.create.input,
5955
+ region: target.create.region
5956
+ });
5957
+ return output.actorId;
5958
+ }
5959
+ throw invalidRequest("Invalid query format");
5960
+ }
5961
+
5421
5962
  // src/client/actor-handle.ts
5422
5963
  var ActorHandleRaw = class {
5423
5964
  #client;
@@ -5462,7 +6003,13 @@ var ActorHandleRaw = class {
5462
6003
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
5463
6004
  let actorId;
5464
6005
  try {
5465
- const target = await this.#resolveActionTarget(useQueryTarget);
6006
+ const gatewayOptions = resolveActorGatewayOptions(
6007
+ this.#gatewayOptions
6008
+ );
6009
+ const target = await this.#resolveGatewayRequestTarget(
6010
+ useQueryTarget,
6011
+ gatewayOptions
6012
+ );
5466
6013
  actorId = "directId" in target ? target.directId : void 0;
5467
6014
  return await createQueueSender({
5468
6015
  encoding: this.#encoding,
@@ -5471,17 +6018,13 @@ var ActorHandleRaw = class {
5471
6018
  return await this.#driver.sendRequest(
5472
6019
  target,
5473
6020
  request,
5474
- resolveActorGatewayOptions(
5475
- this.#gatewayOptions
5476
- )
6021
+ gatewayOptions
5477
6022
  );
5478
6023
  }
5479
6024
  }).send(name, body, options);
5480
6025
  } catch (err) {
5481
- const { group, code, message, metadata } = deconstructError(
6026
+ const { group, code, message, metadata, actor } = deconstructError(
5482
6027
  err,
5483
- logger2(),
5484
- {},
5485
6028
  true
5486
6029
  );
5487
6030
  if (this.#shouldRetryQueueDispatchOverload(
@@ -5524,7 +6067,7 @@ var ActorHandleRaw = class {
5524
6067
  }
5525
6068
  continue;
5526
6069
  }
5527
- throw new RivetError(group, code, message, metadata);
6070
+ throw new RivetError(group, code, message, { metadata, actor });
5528
6071
  }
5529
6072
  }
5530
6073
  throw new Error("unreachable queue retry state");
@@ -5559,7 +6102,10 @@ var ActorHandleRaw = class {
5559
6102
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
5560
6103
  let actorId;
5561
6104
  try {
5562
- const target = await this.#resolveActionTarget(useQueryTarget);
6105
+ const target = await this.#resolveGatewayRequestTarget(
6106
+ useQueryTarget,
6107
+ gatewayOptions
6108
+ );
5563
6109
  actorId = "directId" in target ? target.directId : void 0;
5564
6110
  logger2().debug(
5565
6111
  actorId ? { msg: "using direct actor gateway target", actorId } : {
@@ -5604,17 +6150,15 @@ var ActorHandleRaw = class {
5604
6150
  args: bufferToArrayBuffer(encodeCborCompat(args))
5605
6151
  }),
5606
6152
  responseFromJson: (json) => json.output,
5607
- responseFromBare: (bare4) => decodeCborCompat(new Uint8Array(bare4.output))
6153
+ responseFromBare: (bare5) => decodeCborCompat(new Uint8Array(bare5.output))
5608
6154
  });
5609
6155
  if (opts.name === "destroy" && actorId) {
5610
6156
  await this.#waitForDestroyActionToSettle(actorId);
5611
6157
  }
5612
6158
  return output;
5613
6159
  } catch (err) {
5614
- const { group, code, message, metadata } = deconstructError(
6160
+ const { group, code, message, metadata, actor } = deconstructError(
5615
6161
  err,
5616
- logger2(),
5617
- {},
5618
6162
  true
5619
6163
  );
5620
6164
  if (await this.#shouldRetrySchedulingError(
@@ -5644,7 +6188,7 @@ var ActorHandleRaw = class {
5644
6188
  "actor",
5645
6189
  "not_found",
5646
6190
  "The actor does not exist or was destroyed.",
5647
- metadata
6191
+ { metadata, actor }
5648
6192
  );
5649
6193
  }
5650
6194
  const invalidated = this.#invalidateResolvedActorId(group, code);
@@ -5655,7 +6199,7 @@ var ActorHandleRaw = class {
5655
6199
  }
5656
6200
  continue;
5657
6201
  }
5658
- throw new RivetError(group, code, message, metadata);
6202
+ throw new RivetError(group, code, message, { metadata, actor });
5659
6203
  }
5660
6204
  }
5661
6205
  throw new Error("unreachable action retry state");
@@ -5748,6 +6292,12 @@ var ActorHandleRaw = class {
5748
6292
  this.#resolvingActorId = void 0;
5749
6293
  }
5750
6294
  }
6295
+ async #resolveGatewayRequestTarget(useQueryTarget, gatewayOptions) {
6296
+ if (gatewayOptions.skipReadyWait) {
6297
+ return getGatewayTarget(this.#actorResolutionState);
6298
+ }
6299
+ return await this.#resolveActionTarget(useQueryTarget);
6300
+ }
5751
6301
  /**
5752
6302
  * Establishes a persistent connection to the actor.
5753
6303
  *
@@ -5794,7 +6344,10 @@ var ActorHandleRaw = class {
5794
6344
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
5795
6345
  let actorId;
5796
6346
  try {
5797
- const target = await this.#resolveActionTarget(useQueryTarget);
6347
+ const target = await this.#resolveGatewayRequestTarget(
6348
+ useQueryTarget,
6349
+ gatewayOptions
6350
+ );
5798
6351
  actorId = "directId" in target ? target.directId : void 0;
5799
6352
  const response = await rawHttpFetch(
5800
6353
  this.#driver,
@@ -5819,10 +6372,8 @@ var ActorHandleRaw = class {
5819
6372
  }
5820
6373
  return response;
5821
6374
  } catch (err) {
5822
- const { group, code, message, metadata } = deconstructError(
6375
+ const { group, code, message, metadata, actor } = deconstructError(
5823
6376
  err,
5824
- logger2(),
5825
- {},
5826
6377
  true
5827
6378
  );
5828
6379
  if (await this.#shouldRetrySchedulingError(
@@ -5855,7 +6406,7 @@ var ActorHandleRaw = class {
5855
6406
  }
5856
6407
  continue;
5857
6408
  }
5858
- throw new RivetError(group, code, message, metadata);
6409
+ throw new RivetError(group, code, message, { metadata, actor });
5859
6410
  }
5860
6411
  }
5861
6412
  throw new Error("unreachable fetch retry state");
@@ -5915,12 +6466,23 @@ var ActorHandleRaw = class {
5915
6466
  new Uint8Array(await response.clone().arrayBuffer()),
5916
6467
  HTTP_RESPONSE_ERROR_VERSIONED,
5917
6468
  HttpResponseErrorSchema,
5918
- (json) => json,
5919
- (bare4) => ({
5920
- group: bare4.group,
5921
- code: bare4.code,
5922
- message: bare4.message,
5923
- metadata: bare4.metadata ? decodeCborCompat(new Uint8Array(bare4.metadata)) : void 0
6469
+ (json) => ({
6470
+ ...json,
6471
+ actor: json.actor ? {
6472
+ ...json.actor,
6473
+ generation: Number(json.actor.generation)
6474
+ } : void 0
6475
+ }),
6476
+ (bare5) => ({
6477
+ group: bare5.group,
6478
+ code: bare5.code,
6479
+ message: bare5.message,
6480
+ metadata: bare5.metadata ? decodeCborCompat(new Uint8Array(bare5.metadata)) : void 0,
6481
+ actor: bare5.actor ? {
6482
+ actorId: bare5.actor.actorId,
6483
+ generation: Number(bare5.actor.generation),
6484
+ key: bare5.actor.key ?? void 0
6485
+ } : void 0
5924
6486
  })
5925
6487
  );
5926
6488
  } catch {
@@ -5936,7 +6498,10 @@ var ActorHandleRaw = class {
5936
6498
  this.#gatewayOptions,
5937
6499
  options
5938
6500
  );
5939
- const target = gatewayOptions.skipReadyWait ? await this.#resolveActionTarget(false) : getGatewayTarget(this.#actorResolutionState);
6501
+ const target = await this.#resolveGatewayRequestTarget(
6502
+ false,
6503
+ gatewayOptions
6504
+ );
5940
6505
  return await rawWebSocket(
5941
6506
  this.#driver,
5942
6507
  target,