rivetkit 2.3.0-rc.7 → 2.3.0-rc.9

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 (122) hide show
  1. package/dist/browser/client.d.ts +8 -37
  2. package/dist/browser/client.js +34 -64
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +3 -4
  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.js +1 -1
  8. package/dist/tsup/agent-os/index.cjs +5 -7
  9. package/dist/tsup/agent-os/index.cjs.map +1 -1
  10. package/dist/tsup/agent-os/index.d.cts +5 -26
  11. package/dist/tsup/agent-os/index.d.ts +5 -26
  12. package/dist/tsup/agent-os/index.js +5 -7
  13. package/dist/tsup/agent-os/index.js.map +1 -1
  14. package/dist/tsup/{chunk-55E7IR6D.cjs → chunk-4CGA6QJO.cjs} +4 -4
  15. package/dist/tsup/{chunk-55E7IR6D.cjs.map → chunk-4CGA6QJO.cjs.map} +1 -1
  16. package/dist/tsup/{chunk-G5HUSWP4.cjs → chunk-4WPEZBK4.cjs} +8 -8
  17. package/dist/tsup/{chunk-G5HUSWP4.cjs.map → chunk-4WPEZBK4.cjs.map} +1 -1
  18. package/dist/tsup/{chunk-2H4ISA4Y.cjs → chunk-CPA4Y3RG.cjs} +10 -10
  19. package/dist/tsup/chunk-CPA4Y3RG.cjs.map +1 -0
  20. package/dist/tsup/{chunk-VJ4Y4WBT.js → chunk-F3Q5BFQ6.js} +34 -10
  21. package/dist/tsup/chunk-F3Q5BFQ6.js.map +1 -0
  22. package/dist/tsup/{chunk-ZGPX6KAH.cjs → chunk-GVTOE34S.cjs} +193 -169
  23. package/dist/tsup/chunk-GVTOE34S.cjs.map +1 -0
  24. package/dist/tsup/{chunk-4DJMFOSU.js → chunk-H37XQU3I.js} +2 -2
  25. package/dist/tsup/{chunk-CMV6N5OX.js → chunk-H7P7WR2Y.js} +3 -3
  26. package/dist/tsup/{chunk-TMLOKTRB.js → chunk-KIWH5H3K.js} +3 -3
  27. package/dist/tsup/chunk-KIWH5H3K.js.map +1 -0
  28. package/dist/tsup/{chunk-52TPEKEC.js → chunk-KJTA3ATT.js} +2 -2
  29. package/dist/tsup/{chunk-SJLPZEA3.cjs → chunk-MALSPBAF.cjs} +3 -3
  30. package/dist/tsup/{chunk-SJLPZEA3.cjs.map → chunk-MALSPBAF.cjs.map} +1 -1
  31. package/dist/tsup/{chunk-VFIY6GWO.js → chunk-MMMEZM5J.js} +4 -4
  32. package/dist/tsup/chunk-MMMEZM5J.js.map +1 -0
  33. package/dist/tsup/{chunk-63WNTDRC.cjs → chunk-QAZLM4WT.cjs} +3 -3
  34. package/dist/tsup/{chunk-63WNTDRC.cjs.map → chunk-QAZLM4WT.cjs.map} +1 -1
  35. package/dist/tsup/{chunk-D5G75T7J.js → chunk-T6YVRM4K.js} +1 -3
  36. package/dist/tsup/chunk-T6YVRM4K.js.map +1 -0
  37. package/dist/tsup/{chunk-FEOG44WH.cjs → chunk-VJFRBJVQ.cjs} +9 -137
  38. package/dist/tsup/chunk-VJFRBJVQ.cjs.map +1 -0
  39. package/dist/tsup/{chunk-HERL2VQ2.js → chunk-VRCIXJRN.js} +5 -7
  40. package/dist/tsup/chunk-VRCIXJRN.js.map +1 -0
  41. package/dist/tsup/{chunk-4LTY5TOO.js → chunk-W7EYSYVI.js} +4 -132
  42. package/dist/tsup/chunk-W7EYSYVI.js.map +1 -0
  43. package/dist/tsup/{chunk-SRNOPUC6.cjs → chunk-WQ4HNA4W.cjs} +2 -4
  44. package/dist/tsup/chunk-WQ4HNA4W.cjs.map +1 -0
  45. package/dist/tsup/{chunk-X6HIFXNK.cjs → chunk-Y5NSCZA2.cjs} +12 -14
  46. package/dist/tsup/chunk-Y5NSCZA2.cjs.map +1 -0
  47. package/dist/tsup/client/mod.cjs +7 -7
  48. package/dist/tsup/client/mod.d.cts +2 -2
  49. package/dist/tsup/client/mod.d.ts +2 -2
  50. package/dist/tsup/client/mod.js +6 -6
  51. package/dist/tsup/common/log.cjs +3 -3
  52. package/dist/tsup/common/log.js +2 -2
  53. package/dist/tsup/common/websocket.cjs +4 -4
  54. package/dist/tsup/common/websocket.js +3 -3
  55. package/dist/tsup/{config-Ak1lv4gF.d.ts → config-0Ta55UV0.d.ts} +6 -27
  56. package/dist/tsup/{config-DU_xj4qZ.d.cts → config-Ca8dN4cS.d.cts} +6 -27
  57. package/dist/tsup/{context-DAAp4Lpg.d.ts → context-B_IWbWne.d.ts} +1 -1
  58. package/dist/tsup/{context-Dt_L55q8.d.cts → context-CUrQ9MHc.d.cts} +1 -1
  59. package/dist/tsup/inspector/mod.cjs +6 -6
  60. package/dist/tsup/inspector/mod.js +5 -5
  61. package/dist/tsup/mod.cjs +355 -482
  62. package/dist/tsup/mod.cjs.map +1 -1
  63. package/dist/tsup/mod.d.cts +3 -3
  64. package/dist/tsup/mod.d.ts +3 -3
  65. package/dist/tsup/mod.js +276 -403
  66. package/dist/tsup/mod.js.map +1 -1
  67. package/dist/tsup/test/mod.cjs +10 -10
  68. package/dist/tsup/test/mod.d.cts +1 -1
  69. package/dist/tsup/test/mod.d.ts +1 -1
  70. package/dist/tsup/test/mod.js +6 -6
  71. package/dist/tsup/utils.cjs +3 -3
  72. package/dist/tsup/utils.js +2 -2
  73. package/dist/tsup/workflow/mod.cjs +16 -41
  74. package/dist/tsup/workflow/mod.cjs.map +1 -1
  75. package/dist/tsup/workflow/mod.d.cts +3 -3
  76. package/dist/tsup/workflow/mod.d.ts +3 -3
  77. package/dist/tsup/workflow/mod.js +10 -35
  78. package/dist/tsup/workflow/mod.js.map +1 -1
  79. package/package.json +10 -11
  80. package/src/actor/config.ts +0 -3
  81. package/src/actor/errors.ts +2 -2
  82. package/src/agent-os/actor/session.ts +2 -2
  83. package/src/client/actor-conn.ts +34 -6
  84. package/src/client/actor-handle.ts +1 -2
  85. package/src/client/queue.ts +1 -2
  86. package/src/client/utils.ts +1 -0
  87. package/src/common/encoding.ts +5 -243
  88. package/src/common/inline-websocket-adapter.ts +12 -12
  89. package/src/common/log.ts +0 -1
  90. package/src/common/router.ts +2 -2
  91. package/src/common/utils.ts +148 -0
  92. package/src/drivers/engine/actor-driver.ts +11 -11
  93. package/src/engine-client/actor-websocket-client.ts +1 -2
  94. package/src/engine-client/mod.ts +2 -3
  95. package/src/registry/index.ts +109 -46
  96. package/src/registry/napi-runtime.ts +34 -11
  97. package/src/registry/native.ts +162 -205
  98. package/src/registry/runtime.ts +12 -5
  99. package/src/registry/wasm-runtime.ts +13 -2
  100. package/src/serde.ts +2 -2
  101. package/src/workflow/context.ts +5 -32
  102. package/src/workflow/inspector.ts +1 -2
  103. package/dist/tsup/chunk-2H4ISA4Y.cjs.map +0 -1
  104. package/dist/tsup/chunk-4LTY5TOO.js.map +0 -1
  105. package/dist/tsup/chunk-D5G75T7J.js.map +0 -1
  106. package/dist/tsup/chunk-FEOG44WH.cjs.map +0 -1
  107. package/dist/tsup/chunk-HERL2VQ2.js.map +0 -1
  108. package/dist/tsup/chunk-SRNOPUC6.cjs.map +0 -1
  109. package/dist/tsup/chunk-TMLOKTRB.js.map +0 -1
  110. package/dist/tsup/chunk-VFIY6GWO.js.map +0 -1
  111. package/dist/tsup/chunk-VJ4Y4WBT.js.map +0 -1
  112. package/dist/tsup/chunk-X6HIFXNK.cjs.map +0 -1
  113. package/dist/tsup/chunk-ZGPX6KAH.cjs.map +0 -1
  114. package/dist/tsup/process-metrics-NW754INA.js +0 -118
  115. package/dist/tsup/process-metrics-NW754INA.js.map +0 -1
  116. package/dist/tsup/process-metrics-TYAGKCEJ.cjs +0 -118
  117. package/dist/tsup/process-metrics-TYAGKCEJ.cjs.map +0 -1
  118. package/src/registry/process-metrics.ts +0 -183
  119. package/src/registry/write-through-proxy.ts +0 -40
  120. /package/dist/tsup/{chunk-4DJMFOSU.js.map → chunk-H37XQU3I.js.map} +0 -0
  121. /package/dist/tsup/{chunk-CMV6N5OX.js.map → chunk-H7P7WR2Y.js.map} +0 -0
  122. /package/dist/tsup/{chunk-52TPEKEC.js.map → chunk-KJTA3ATT.js.map} +0 -0
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkX6HIFXNKcjs = require('./chunk-X6HIFXNK.cjs');
3
+ var _chunkY5NSCZA2cjs = require('./chunk-Y5NSCZA2.cjs');
4
4
 
5
5
  // src/serde.ts
6
6
  var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx);
@@ -12,83 +12,6 @@ var JSON_COMPAT_BIGINT = "$BigInt";
12
12
  var JSON_COMPAT_ARRAY_BUFFER = "$ArrayBuffer";
13
13
  var JSON_COMPAT_UINT8_ARRAY = "$Uint8Array";
14
14
  var JSON_COMPAT_UNDEFINED = "$Undefined";
15
- var JSON_COMPAT_SET = "$Set";
16
- function isTypedArray(value) {
17
- return value instanceof Uint8ClampedArray || value instanceof Uint16Array || value instanceof Uint32Array || value instanceof BigUint64Array || value instanceof Int8Array || value instanceof Int16Array || value instanceof Int32Array || value instanceof BigInt64Array || value instanceof Float32Array || value instanceof Float64Array;
18
- }
19
- function assertJsonCompatValue(value, path = "") {
20
- var _a;
21
- if (value === null || value === void 0 || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
22
- return;
23
- }
24
- if (typeof value === "function") {
25
- throw new TypeError(
26
- `Value at ${path || "root"} is a function and is not CBOR serializable`
27
- );
28
- }
29
- if (typeof value === "symbol") {
30
- throw new TypeError(
31
- `Value at ${path || "root"} is a symbol and is not CBOR serializable`
32
- );
33
- }
34
- if (value instanceof Date || value instanceof RegExp || value instanceof Error || value instanceof ArrayBuffer || value instanceof Uint8Array || isTypedArray(value)) {
35
- return;
36
- }
37
- if (value instanceof WeakMap) {
38
- throw new TypeError(
39
- `Value at ${path || "root"} is a WeakMap and is not CBOR serializable`
40
- );
41
- }
42
- if (value instanceof WeakSet) {
43
- throw new TypeError(
44
- `Value at ${path || "root"} is a WeakSet and is not CBOR serializable`
45
- );
46
- }
47
- if (value instanceof WeakRef) {
48
- throw new TypeError(
49
- `Value at ${path || "root"} is a WeakRef and is not CBOR serializable`
50
- );
51
- }
52
- if (value instanceof Promise) {
53
- throw new TypeError(
54
- `Value at ${path || "root"} is a Promise and is not CBOR serializable`
55
- );
56
- }
57
- if (value instanceof Map) {
58
- for (const [k, v] of value.entries()) {
59
- assertJsonCompatValue(k, `${path || "root"}.key(${String(k)})`);
60
- assertJsonCompatValue(v, `${path || "root"}.value(${String(k)})`);
61
- }
62
- return;
63
- }
64
- if (value instanceof Set) {
65
- let index = 0;
66
- for (const item of value.values()) {
67
- assertJsonCompatValue(item, `${path || "root"}.set[${index}]`);
68
- index++;
69
- }
70
- return;
71
- }
72
- if (Array.isArray(value)) {
73
- for (let i = 0; i < value.length; i++) {
74
- assertJsonCompatValue(value[i], `${path || "root"}[${i}]`);
75
- }
76
- return;
77
- }
78
- if (isPlainObject(value)) {
79
- for (const key in value) {
80
- assertJsonCompatValue(
81
- value[key],
82
- path ? `${path}.${key}` : key
83
- );
84
- }
85
- return;
86
- }
87
- const typeName = typeof value === "object" && value !== null ? _nullishCoalesce(((_a = value.constructor) == null ? void 0 : _a.name), () => ( typeof value)) : typeof value;
88
- throw new TypeError(
89
- `Value at ${path || "root"} of type "${typeName}" is not CBOR serializable`
90
- );
91
- }
92
15
  var EncodingSchema = _v4.z.enum(["json", "cbor", "bare"]);
93
16
  async function inputDataToBuffer(data) {
94
17
  if (typeof data === "string") {
@@ -123,16 +46,9 @@ function isPlainObject(value) {
123
46
  return proto === Object.prototype || proto === null;
124
47
  }
125
48
  function encodeJsonCompatValue(input) {
126
- var _a;
127
- if (input === null) {
128
- return input;
129
- }
130
49
  if (input === void 0) {
131
50
  return [JSON_COMPAT_UNDEFINED, 0];
132
51
  }
133
- if (typeof input === "string" || typeof input === "number" || typeof input === "boolean") {
134
- return input;
135
- }
136
52
  if (typeof input === "bigint") {
137
53
  return [JSON_COMPAT_BIGINT, input.toString()];
138
54
  }
@@ -142,32 +58,8 @@ function encodeJsonCompatValue(input) {
142
58
  if (input instanceof Uint8Array) {
143
59
  return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(input)];
144
60
  }
145
- if (isTypedArray(input)) {
146
- return input;
147
- }
148
- if (input instanceof Date || input instanceof RegExp || input instanceof Error) {
149
- return input;
150
- }
151
- if (input instanceof Set) {
152
- const encoded = [...input.values()].map(
153
- (v) => encodeJsonCompatValue(v)
154
- );
155
- return [JSON_COMPAT_SET, encoded];
156
- }
157
- if (input instanceof Map) {
158
- const encoded = /* @__PURE__ */ new Map();
159
- for (const [k, v] of input.entries()) {
160
- encoded.set(
161
- encodeJsonCompatValue(k),
162
- encodeJsonCompatValue(v)
163
- );
164
- }
165
- return encoded;
166
- }
167
61
  if (Array.isArray(input)) {
168
- const encoded = input.map(
169
- (value) => encodeJsonCompatValue(value)
170
- );
62
+ const encoded = input.map((value) => encodeJsonCompatValue(value));
171
63
  if (encoded.length === 2 && typeof encoded[0] === "string" && encoded[0].startsWith("$")) {
172
64
  return ["$" + encoded[0], encoded[1]];
173
65
  }
@@ -180,10 +72,7 @@ function encodeJsonCompatValue(input) {
180
72
  }
181
73
  return encoded;
182
74
  }
183
- const typeName = typeof input === "object" && input !== null ? _nullishCoalesce(((_a = input.constructor) == null ? void 0 : _a.name), () => ( typeof input)) : typeof input;
184
- throw new TypeError(
185
- `Value of type "${typeName}" is not CBOR serializable`
186
- );
75
+ return input;
187
76
  }
188
77
  function reviveJsonCompatValue(input, options = {}) {
189
78
  if (typeof input === "bigint") {
@@ -192,16 +81,6 @@ function reviveJsonCompatValue(input, options = {}) {
192
81
  }
193
82
  return input;
194
83
  }
195
- if (input instanceof Map) {
196
- const revived = /* @__PURE__ */ new Map();
197
- for (const [k, v] of input.entries()) {
198
- revived.set(
199
- reviveJsonCompatValue(k, options),
200
- reviveJsonCompatValue(v, options)
201
- );
202
- }
203
- return revived;
204
- }
205
84
  if (Array.isArray(input)) {
206
85
  if (input.length === 2 && typeof input[0] === "string" && input[0].startsWith("$")) {
207
86
  if (input[0] === JSON_COMPAT_BIGINT) {
@@ -216,12 +95,6 @@ function reviveJsonCompatValue(input, options = {}) {
216
95
  if (input[0] === JSON_COMPAT_UNDEFINED) {
217
96
  return void 0;
218
97
  }
219
- if (input[0] === JSON_COMPAT_SET) {
220
- const items = input[1].map(
221
- (v) => reviveJsonCompatValue(v, options)
222
- );
223
- return new Set(items);
224
- }
225
98
  if (input[0].startsWith("$$")) {
226
99
  return [
227
100
  input[0].substring(1),
@@ -302,7 +175,7 @@ function contentTypeForEncoding(encoding) {
302
175
  } else if (encoding === "cbor" || encoding === "bare") {
303
176
  return "application/octet-stream";
304
177
  } else {
305
- _chunkX6HIFXNKcjs.assertUnreachable.call(void 0, encoding);
178
+ _chunkY5NSCZA2cjs.assertUnreachable.call(void 0, encoding);
306
179
  }
307
180
  }
308
181
  function encodeCborCompat(value) {
@@ -340,7 +213,7 @@ function serializeWithEncoding(encoding, value, versionedDataHandler, version, z
340
213
  version
341
214
  );
342
215
  } else {
343
- _chunkX6HIFXNKcjs.assertUnreachable.call(void 0, encoding);
216
+ _chunkY5NSCZA2cjs.assertUnreachable.call(void 0, encoding);
344
217
  }
345
218
  }
346
219
  function deserializeWithEncoding(encoding, buffer, versionedDataHandler, zodSchema, fromJson, fromBare) {
@@ -376,7 +249,7 @@ function deserializeWithEncoding(encoding, buffer, versionedDataHandler, zodSche
376
249
  const bareValue = versionedDataHandler.deserializeWithEmbeddedVersion(buffer);
377
250
  return fromBare(bareValue);
378
251
  } else {
379
- _chunkX6HIFXNKcjs.assertUnreachable.call(void 0, encoding);
252
+ _chunkY5NSCZA2cjs.assertUnreachable.call(void 0, encoding);
380
253
  }
381
254
  }
382
255
 
@@ -391,6 +264,5 @@ function deserializeWithEncoding(encoding, buffer, versionedDataHandler, zodSche
391
264
 
392
265
 
393
266
 
394
-
395
- exports.uint8ArrayToBase64 = uint8ArrayToBase64; exports.contentTypeForEncoding = contentTypeForEncoding; exports.encodeCborCompat = encodeCborCompat; exports.decodeCborCompat = decodeCborCompat; exports.decodeCborJsonCompat = decodeCborJsonCompat; exports.serializeWithEncoding = serializeWithEncoding; exports.deserializeWithEncoding = deserializeWithEncoding; exports.assertJsonCompatValue = assertJsonCompatValue; exports.EncodingSchema = EncodingSchema; exports.inputDataToBuffer = inputDataToBuffer; exports.jsonStringifyCompat = jsonStringifyCompat;
396
- //# sourceMappingURL=chunk-FEOG44WH.cjs.map
267
+ exports.uint8ArrayToBase64 = uint8ArrayToBase64; exports.contentTypeForEncoding = contentTypeForEncoding; exports.encodeCborCompat = encodeCborCompat; exports.decodeCborCompat = decodeCborCompat; exports.decodeCborJsonCompat = decodeCborJsonCompat; exports.serializeWithEncoding = serializeWithEncoding; exports.deserializeWithEncoding = deserializeWithEncoding; exports.EncodingSchema = EncodingSchema; exports.inputDataToBuffer = inputDataToBuffer; exports.jsonStringifyCompat = jsonStringifyCompat;
268
+ //# sourceMappingURL=chunk-VJFRBJVQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-VJFRBJVQ.cjs","../../src/serde.ts","../../src/common/encoding.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-VJFRBJVQ.cjs","sourcesContent":[null,"import * as cbor from \"cbor-x\";\nimport invariant from \"invariant\";\nimport type { VersionedDataHandler } from \"vbare\";\nimport type { z } from \"zod/v4\";\nimport { assertUnreachable } from \"@/common/utils\";\nimport type { Encoding } from \"@/common/encoding\";\nimport {\n\tencodeJsonCompatValue,\n\tjsonParseCompat,\n\tjsonStringifyCompat,\n\treviveJsonCompatValue,\n} from \"./common/encoding\";\n\nexport function uint8ArrayToBase64(uint8Array: Uint8Array): string {\n\t// Check if Buffer is available (Node.js)\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn Buffer.from(uint8Array).toString(\"base64\");\n\t}\n\n\t// Browser environment - use btoa\n\tlet binary = \"\";\n\tconst len = uint8Array.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary += String.fromCharCode(uint8Array[i]);\n\t}\n\treturn btoa(binary);\n}\n\nexport function encodingIsBinary(encoding: Encoding): boolean {\n\tif (encoding === \"json\") {\n\t\treturn false;\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn true;\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function contentTypeForEncoding(encoding: Encoding): string {\n\tif (encoding === \"json\") {\n\t\treturn \"application/json\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"application/octet-stream\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function encodeCborCompat(value: unknown): Uint8Array {\n\treturn cbor.encode(encodeJsonCompatValue(value));\n}\n\nexport function decodeCborCompat<T>(buffer: Uint8Array): T {\n\treturn reviveJsonCompatValue(cbor.decode(buffer)) as T;\n}\n\nexport function decodeCborJsonCompat<T>(buffer: Uint8Array): T {\n\treturn reviveJsonCompatValue(cbor.decode(buffer), {\n\t\tcoerceSafeIntegerBigInts: true,\n\t}) as T;\n}\n\nexport function wsBinaryTypeForEncoding(\n\tencoding: Encoding,\n): \"arraybuffer\" | \"blob\" {\n\tif (encoding === \"json\") {\n\t\treturn \"blob\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"arraybuffer\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function serializeWithEncoding<TBare, TJson, T = TBare>(\n\tencoding: Encoding,\n\tvalue: T,\n\tversionedDataHandler: VersionedDataHandler<TBare> | undefined,\n\tversion: number | undefined,\n\tzodSchema: z.ZodType<TJson>,\n\ttoJson: (value: T) => TJson,\n\ttoBare: (value: T) => TBare,\n): Uint8Array | string {\n\tif (encoding === \"json\") {\n\t\tconst jsonValue = toJson(value);\n\t\tconst validated = zodSchema.parse(jsonValue);\n\t\treturn jsonStringifyCompat(validated);\n\t} else if (encoding === \"cbor\") {\n\t\tconst jsonValue = toJson(value);\n\t\tconst validated = zodSchema.parse(jsonValue);\n\t\treturn cbor.encode(validated);\n\t} else if (encoding === \"bare\") {\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t\"VersionedDataHandler is required for 'bare' encoding\",\n\t\t\t);\n\t\t}\n\t\tif (version === undefined) {\n\t\t\tthrow new Error(\"version is required for 'bare' encoding\");\n\t\t}\n\t\tconst bareValue = toBare(value);\n\t\treturn versionedDataHandler.serializeWithEmbeddedVersion(\n\t\t\tbareValue,\n\t\t\tversion,\n\t\t);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function deserializeWithEncoding<TBare, TJson, T = TBare>(\n\tencoding: Encoding,\n\tbuffer: Uint8Array | string,\n\tversionedDataHandler: VersionedDataHandler<TBare> | undefined,\n\tzodSchema: z.ZodType<TJson>,\n\tfromJson: (value: TJson) => T,\n\tfromBare: (value: TBare) => T,\n): T {\n\tif (encoding === \"json\") {\n\t\tlet parsed: unknown;\n\t\tif (typeof buffer === \"string\") {\n\t\t\tparsed = jsonParseCompat(buffer);\n\t\t} else {\n\t\t\tconst decoder = new TextDecoder(\"utf-8\");\n\t\t\tconst jsonString = decoder.decode(buffer);\n\t\t\tparsed = jsonParseCompat(jsonString);\n\t\t}\n\t\tconst validated = zodSchema.parse(parsed);\n\t\treturn fromJson(validated);\n\t} else if (encoding === \"cbor\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for cbor encoding\",\n\t\t);\n\t\t// Decode CBOR to get JavaScript values (similar to JSON.parse)\n\t\tconst decoded = decodeCborCompat(buffer);\n\t\t// Validate with Zod schema (CBOR produces same structure as JSON)\n\t\tconst validated = zodSchema.parse(decoded);\n\t\t// CBOR decoding produces JS objects, use fromJson\n\t\treturn fromJson(validated);\n\t} else if (encoding === \"bare\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for bare encoding\",\n\t\t);\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t\"VersionedDataHandler is required for 'bare' encoding\",\n\t\t\t);\n\t\t}\n\t\tconst bareValue =\n\t\t\tversionedDataHandler.deserializeWithEmbeddedVersion(buffer);\n\t\treturn fromBare(bareValue);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n","import { z } from \"zod/v4\";\nimport type { VersionedDataHandler } from \"vbare\";\nimport { serializeWithEncoding } from \"@/serde\";\nimport { assertUnreachable } from \"./utils\";\n\n/** Data that can be deserialized. */\nexport type InputData = string | Buffer | Blob | ArrayBufferLike | Uint8Array;\n\n/** Data that's been serialized. */\nexport type OutputData = string | Uint8Array;\n\nconst JSON_COMPAT_BIGINT = \"$BigInt\";\nconst JSON_COMPAT_ARRAY_BUFFER = \"$ArrayBuffer\";\nconst JSON_COMPAT_UINT8_ARRAY = \"$Uint8Array\";\nconst JSON_COMPAT_UNDEFINED = \"$Undefined\";\n\nexport const EncodingSchema = z.enum([\"json\", \"cbor\", \"bare\"]);\n\n/**\n * Encoding used to communicate between the client & actor.\n */\nexport type Encoding = z.infer<typeof EncodingSchema>;\n\n/**\n * Helper class that helps serialize data without re-serializing for the same encoding.\n */\nexport class CachedSerializer<TBare, TJson, T = TBare> {\n\t#data: T;\n\t#cache = new Map<Encoding, OutputData>();\n\t#versionedDataHandler: VersionedDataHandler<TBare>;\n\t#version: number;\n\t#zodSchema: z.ZodType<TJson>;\n\t#toJson: (value: T) => TJson;\n\t#toBare: (value: T) => TBare;\n\n\tconstructor(\n\t\tdata: T,\n\t\tversionedDataHandler: VersionedDataHandler<TBare>,\n\t\tversion: number,\n\t\tzodSchema: z.ZodType<TJson>,\n\t\ttoJson: (value: T) => TJson,\n\t\ttoBare: (value: T) => TBare,\n\t) {\n\t\tthis.#data = data;\n\t\tthis.#versionedDataHandler = versionedDataHandler;\n\t\tthis.#version = version;\n\t\tthis.#zodSchema = zodSchema;\n\t\tthis.#toJson = toJson;\n\t\tthis.#toBare = toBare;\n\t}\n\n\tpublic get rawData(): T {\n\t\treturn this.#data;\n\t}\n\n\tpublic serialize(encoding: Encoding): OutputData {\n\t\tconst cached = this.#cache.get(encoding);\n\t\tif (cached) {\n\t\t\treturn cached;\n\t\t}\n\n\t\tconst serialized = serializeWithEncoding(\n\t\t\tencoding,\n\t\t\tthis.#data,\n\t\t\tthis.#versionedDataHandler,\n\t\t\tthis.#version,\n\t\t\tthis.#zodSchema,\n\t\t\tthis.#toJson,\n\t\t\tthis.#toBare,\n\t\t);\n\t\tthis.#cache.set(encoding, serialized);\n\t\treturn serialized;\n\t}\n}\n\nexport async function inputDataToBuffer(\n\tdata: InputData,\n): Promise<Uint8Array | string> {\n\tif (typeof data === \"string\") {\n\t\treturn data;\n\t}\n\tif (data instanceof Blob) {\n\t\treturn new Uint8Array(await data.arrayBuffer());\n\t}\n\tif (data instanceof Uint8Array) {\n\t\treturn data;\n\t}\n\tif (data instanceof ArrayBuffer || data instanceof SharedArrayBuffer) {\n\t\treturn new Uint8Array(data);\n\t}\n\tthrow new Error(\"Malformed message\");\n}\n\nfunction base64EncodeUint8Array(uint8Array: Uint8Array): string {\n\tlet binary = \"\";\n\tfor (const value of uint8Array) {\n\t\tbinary += String.fromCharCode(value);\n\t}\n\treturn btoa(binary);\n}\n\nfunction base64EncodeArrayBuffer(arrayBuffer: ArrayBuffer): string {\n\treturn base64EncodeUint8Array(new Uint8Array(arrayBuffer));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\tif (value === null || typeof value !== \"object\") {\n\t\treturn false;\n\t}\n\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n\nexport function encodeJsonCompatValue(input: any): any {\n\tif (input === undefined) {\n\t\treturn [JSON_COMPAT_UNDEFINED, 0];\n\t}\n\tif (typeof input === \"bigint\") {\n\t\treturn [JSON_COMPAT_BIGINT, input.toString()];\n\t}\n\tif (input instanceof ArrayBuffer) {\n\t\treturn [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(input)];\n\t}\n\tif (input instanceof Uint8Array) {\n\t\treturn [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(input)];\n\t}\n\tif (Array.isArray(input)) {\n\t\tconst encoded = input.map((value) => encodeJsonCompatValue(value));\n\t\tif (\n\t\t\tencoded.length === 2 &&\n\t\t\ttypeof encoded[0] === \"string\" &&\n\t\t\tencoded[0].startsWith(\"$\")\n\t\t) {\n\t\t\treturn [\"$\" + encoded[0], encoded[1]];\n\t\t}\n\t\treturn encoded;\n\t}\n\tif (isPlainObject(input)) {\n\t\tconst encoded: Record<string, unknown> = {};\n\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\tencoded[key] = encodeJsonCompatValue(value);\n\t\t}\n\t\treturn encoded;\n\t}\n\treturn input;\n}\n\nexport interface JsonCompatReviveOptions {\n\tcoerceSafeIntegerBigInts?: boolean;\n}\n\nexport function reviveJsonCompatValue(\n\tinput: any,\n\toptions: JsonCompatReviveOptions = {},\n): any {\n\tif (typeof input === \"bigint\") {\n\t\tif (\n\t\t\toptions.coerceSafeIntegerBigInts &&\n\t\t\tinput >= BigInt(Number.MIN_SAFE_INTEGER) &&\n\t\t\tinput <= BigInt(Number.MAX_SAFE_INTEGER)\n\t\t) {\n\t\t\treturn Number(input);\n\t\t}\n\t\treturn input;\n\t}\n\tif (Array.isArray(input)) {\n\t\tif (\n\t\t\tinput.length === 2 &&\n\t\t\ttypeof input[0] === \"string\" &&\n\t\t\tinput[0].startsWith(\"$\")\n\t\t) {\n\t\t\tif (input[0] === JSON_COMPAT_BIGINT) {\n\t\t\t\treturn BigInt(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_ARRAY_BUFFER) {\n\t\t\t\treturn base64DecodeToArrayBuffer(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_UINT8_ARRAY) {\n\t\t\t\treturn base64DecodeToUint8Array(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_UNDEFINED) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (input[0].startsWith(\"$$\")) {\n\t\t\t\treturn [\n\t\t\t\t\tinput[0].substring(1),\n\t\t\t\t\treviveJsonCompatValue(input[1], options),\n\t\t\t\t];\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown JSON encoding type: ${input[0]}. This may indicate corrupted data or a version mismatch.`,\n\t\t\t);\n\t\t}\n\t\treturn input.map((value) => reviveJsonCompatValue(value, options));\n\t}\n\tif (isPlainObject(input)) {\n\t\tconst decoded: Record<string, unknown> = {};\n\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\tdecoded[key] = reviveJsonCompatValue(value, options);\n\t\t}\n\t\treturn decoded;\n\t}\n\treturn input;\n}\n\n/** Converts data that was encoded to a string. Some formats do not support raw binary data. */\nexport function encodeDataToString(message: OutputData): string {\n\tif (typeof message === \"string\") {\n\t\treturn message;\n\t}\n\tif (message instanceof Uint8Array) {\n\t\treturn base64EncodeUint8Array(message);\n\t}\n\tassertUnreachable(message);\n}\n\nfunction base64DecodeToUint8Array(base64: string): Uint8Array {\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn new Uint8Array(Buffer.from(base64, \"base64\"));\n\t}\n\n\tconst binary = atob(base64);\n\tconst bytes = new Uint8Array(binary.length);\n\tfor (let i = 0; i < binary.length; i++) {\n\t\tbytes[i] = binary.charCodeAt(i);\n\t}\n\treturn bytes;\n}\n\nfunction base64DecodeToArrayBuffer(base64: string): ArrayBuffer {\n\treturn base64DecodeToUint8Array(base64).buffer as ArrayBuffer;\n}\n\n/** Stringifies with compat for values that BARE & CBOR supports. */\nexport function jsonStringifyCompat(input: any): string {\n\treturn JSON.stringify(input, (_key, value) => {\n\t\tif (typeof value === \"bigint\") {\n\t\t\treturn [JSON_COMPAT_BIGINT, value.toString()];\n\t\t}\n\t\tif (value instanceof ArrayBuffer) {\n\t\t\treturn [\n\t\t\t\tJSON_COMPAT_ARRAY_BUFFER,\n\t\t\t\tbase64EncodeArrayBuffer(value),\n\t\t\t];\n\t\t}\n\t\tif (value instanceof Uint8Array) {\n\t\t\treturn [\n\t\t\t\tJSON_COMPAT_UINT8_ARRAY,\n\t\t\t\tbase64EncodeUint8Array(value),\n\t\t\t];\n\t\t}\n\t\tif (\n\t\t\tArray.isArray(value) &&\n\t\t\tvalue.length === 2 &&\n\t\t\ttypeof value[0] === \"string\" &&\n\t\t\tvalue[0].startsWith(\"$\")\n\t\t) {\n\t\t\treturn [\"$\" + value[0], value[1]];\n\t\t}\n\t\treturn value;\n\t});\n}\n\n/** Parses JSON with compat for values that BARE & CBOR supports. */\nexport function jsonParseCompat(input: string): any {\n\treturn reviveJsonCompatValue(JSON.parse(input));\n}\n"]}
@@ -2,7 +2,7 @@ import {
2
2
  INTERNAL_ERROR_CODE,
3
3
  INTERNAL_ERROR_DESCRIPTION,
4
4
  RivetError
5
- } from "./chunk-TMLOKTRB.js";
5
+ } from "./chunk-KIWH5H3K.js";
6
6
 
7
7
  // src/utils/env-vars.ts
8
8
  var getRivetEngine = () => getEnvUniversal("RIVET_ENGINE");
@@ -144,7 +144,7 @@ function noopNext() {
144
144
  // package.json
145
145
  var package_default = {
146
146
  name: "rivetkit",
147
- version: "2.3.0-rc.7",
147
+ version: "2.3.0-rc.9",
148
148
  description: "Lightweight libraries for building stateful actors on edge platforms",
149
149
  license: "Apache-2.0",
150
150
  keywords: [
@@ -312,14 +312,13 @@ var package_default = {
312
312
  "actor-config-schema-gen": "tsx scripts/actor-config-schema-gen.ts"
313
313
  },
314
314
  dependencies: {
315
+ "@rivet-dev/agent-os-core": "^0.1.1",
315
316
  "@hono/node-server": "^1.18.2",
316
317
  "@hono/node-ws": "^1.1.1",
317
318
  "@hono/zod-openapi": "^1.1.5",
318
- "@rivet-dev/agent-os-core": "^0.1.1",
319
319
  "@rivetkit/bare-ts": "^0.6.2",
320
320
  "@rivetkit/engine-cli": "workspace:*",
321
321
  "@rivetkit/engine-envoy-protocol": "workspace:*",
322
- "@rivetkit/on-change": "6.0.1",
323
322
  "@rivetkit/rivetkit-napi": "workspace:*",
324
323
  "@rivetkit/rivetkit-wasm": "workspace:*",
325
324
  "@rivetkit/traces": "workspace:*",
@@ -337,10 +336,10 @@ var package_default = {
337
336
  zod: "^4.1.0"
338
337
  },
339
338
  devDependencies: {
340
- "@biomejs/biome": "^2.3",
341
339
  "@copilotkit/llmock": "^1.6.0",
342
340
  "@rivet-dev/agent-os-common": "*",
343
341
  "@rivet-dev/agent-os-pi": "^0.1.1",
342
+ "@biomejs/biome": "^2.3",
344
343
  "@standard-schema/spec": "^1.0.0",
345
344
  "@types/invariant": "^2",
346
345
  "@types/node": "^22.13.1",
@@ -420,7 +419,6 @@ function configureDefaultLogger(logLevel) {
420
419
  messageKey: "msg",
421
420
  // Do not include pid/hostname in output
422
421
  base: {},
423
- errorKey: "error",
424
422
  // Keep the numeric level so the logfmt sink can match Pino's levels.
425
423
  formatters: {
426
424
  level(_label, number) {
@@ -790,4 +788,4 @@ export {
790
788
  getBaseLogger,
791
789
  getLogger
792
790
  };
793
- //# sourceMappingURL=chunk-HERL2VQ2.js.map
791
+ //# sourceMappingURL=chunk-VRCIXJRN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/env-vars.ts","../../src/common/utils.ts","../../package.json","../../src/common/log.ts","../../src/utils.ts"],"sourcesContent":["// This file consolidates all environment variables that affect RivetKit's behavior.\n//\n// IMPORTANT: When adding or modifying environment variables here, also update the\n// documentation at: website/src/content/docs/general/environment-variables.mdx\n\nimport { getEnvUniversal } from \"@/utils\";\n\n// Rivet configuration\nexport const getRivetEngine = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_ENGINE\");\nexport const getRivetEndpoint = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_ENDPOINT\");\nexport const getRivetToken = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_TOKEN\");\nexport const getRivetNamespace = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_NAMESPACE\");\nexport const getRivetPool = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_POOL\");\nexport const getRivetTotalSlots = (): number | undefined => {\n\tconst value = getEnvUniversal(\"RIVET_TOTAL_SLOTS\");\n\treturn value !== undefined ? parseInt(value, 10) : undefined;\n};\nexport const getRivetRunEngine = (): boolean =>\n\tgetEnvUniversal(\"RIVET_RUN_ENGINE\") === \"1\";\nexport const getRivetRunEngineVersion = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_RUN_ENGINE_VERSION\");\nexport const getRivetEnvoyKind = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_ENVOY_KIND\");\nexport const getRivetEnvoyVersion = (): number | undefined => {\n\tconst value = getEnvUniversal(\"RIVET_ENVOY_VERSION\");\n\treturn value !== undefined ? parseInt(value, 10) : undefined;\n};\nexport const getRivetPublicEndpoint = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_PUBLIC_ENDPOINT\");\nexport const getRivetPublicToken = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_PUBLIC_TOKEN\");\n// There is no RIVET_PUBLIC_NAMESPACE because the frontend and backend cannot\n// use different namespaces\n\n// RivetKit configuration\nexport const getRivetkitInspectorDisable = (): boolean =>\n\tgetEnvUniversal(\"RIVET_INSPECTOR_DISABLE\") === \"1\";\nexport const getRivetkitStoragePath = (): string | undefined =>\n\tgetEnvUniversal(\"RIVETKIT_STORAGE_PATH\");\nexport const getRivetkitRuntime = (): string | undefined =>\n\tgetEnvUniversal(\"RIVETKIT_RUNTIME\");\n\n// Logging configuration\n// DEPRECATED: LOG_LEVEL will be removed in a future version\nexport const getLogLevel = (): string | undefined =>\n\tgetEnvUniversal(\"RIVET_LOG_LEVEL\") ?? getEnvUniversal(\"LOG_LEVEL\");\nexport const getLogTarget = (): boolean =>\n\tgetEnvUniversal(\"RIVET_LOG_TARGET\") === \"1\";\nexport const getLogTimestamp = (): boolean =>\n\tgetEnvUniversal(\"RIVET_LOG_TIMESTAMP\") === \"1\";\nexport const getLogMessage = (): boolean =>\n\tgetEnvUniversal(\"RIVET_LOG_MESSAGE\") === \"1\";\nexport const getLogErrorStack = (): boolean =>\n\tgetEnvUniversal(\"RIVET_LOG_ERROR_STACK\") === \"1\";\nexport const getLogHeaders = (): boolean =>\n\tgetEnvUniversal(\"RIVET_LOG_HEADERS\") === \"1\";\n\n// Environment configuration\nexport const getNodeEnv = (): string | undefined => getEnvUniversal(\"NODE_ENV\");\nexport const getNextPhase = (): string | undefined =>\n\tgetEnvUniversal(\"NEXT_PHASE\");\nexport const isDev = (): boolean => getNodeEnv() !== \"production\";\n\n// Experimental\n/**\n * Enables experimental OTel tracing for Rivet Actors.\n *\n * When disabled, actors use an in-memory no-op traces implementation.\n */\nexport const getRivetExperimentalOtel = (): boolean =>\n\tgetEnvUniversal(\"RIVET_EXPERIMENTAL_OTEL\") === \"1\";\n","import type { Next } from \"hono\";\nimport type { ContentfulStatusCode } from \"hono/utils/http-status\";\nimport * as errors from \"@/actor/errors\";\nimport { getLogErrorStack } from \"@/utils/env-vars\";\n\nexport function assertUnreachable(x: never): never {\n\tthrow new Error(`Unreachable case: ${x}`);\n}\n\n/**\n * Safely stringifies an object, ensuring that the stringified object is under a certain size.\n * @param obj any object to stringify\n * @param maxSize maximum size of the stringified object in bytes\n * @returns stringified object\n */\nexport function safeStringify(obj: unknown, maxSize: number) {\n\tlet size = 0;\n\n\tfunction replacer(key: string, value: unknown) {\n\t\tif (value === null || value === undefined) return value;\n\t\tconst valueSize =\n\t\t\ttypeof value === \"string\"\n\t\t\t\t? value.length\n\t\t\t\t: JSON.stringify(value).length;\n\t\tsize += key.length + valueSize;\n\n\t\tif (size > maxSize) {\n\t\t\tthrow new Error(\n\t\t\t\t`JSON object exceeds size limit of ${maxSize} bytes.`,\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\treturn JSON.stringify(obj, replacer);\n}\n\n// TODO: Instead of doing this, use a temp var for state and attempt to write\n// it. Roll back state if fails to serialize.\n\n/**\n * Check if a value is CBOR serializable.\n * Optionally pass an onInvalid callback to receive the path to invalid values.\n *\n * For a complete list of supported CBOR tags, see:\n * https://github.com/kriszyp/cbor-x/blob/cc1cf9df8ba72288c7842af1dd374d73e34cdbc1/README.md#list-of-supported-tags-for-decoding\n */\nexport function isCborSerializable(\n\tvalue: unknown,\n\tonInvalid?: (path: string) => void,\n\tcurrentPath = \"\",\n): boolean {\n\t// Handle primitive types directly\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isFinite(value)) {\n\t\t\tonInvalid?.(currentPath);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (typeof value === \"boolean\" || typeof value === \"string\") {\n\t\treturn true;\n\t}\n\n\t// Handle BigInt (CBOR tags 2 and 3)\n\tif (typeof value === \"bigint\") {\n\t\treturn true;\n\t}\n\n\t// Handle Date objects (CBOR tags 0 and 1)\n\tif (value instanceof Date) {\n\t\treturn true;\n\t}\n\n\t// Handle typed arrays (CBOR tags 64-82)\n\tif (\n\t\tvalue instanceof Uint8Array ||\n\t\tvalue instanceof Uint8ClampedArray ||\n\t\tvalue instanceof Uint16Array ||\n\t\tvalue instanceof Uint32Array ||\n\t\tvalue instanceof BigUint64Array ||\n\t\tvalue instanceof Int8Array ||\n\t\tvalue instanceof Int16Array ||\n\t\tvalue instanceof Int32Array ||\n\t\tvalue instanceof BigInt64Array ||\n\t\tvalue instanceof Float32Array ||\n\t\tvalue instanceof Float64Array\n\t) {\n\t\treturn true;\n\t}\n\n\t// Handle Map (CBOR tag 259)\n\tif (value instanceof Map) {\n\t\tfor (const [key, val] of value.entries()) {\n\t\t\tconst keyPath = currentPath\n\t\t\t\t? `${currentPath}.key(${String(key)})`\n\t\t\t\t: `key(${String(key)})`;\n\t\t\tconst valPath = currentPath\n\t\t\t\t? `${currentPath}.value(${String(key)})`\n\t\t\t\t: `value(${String(key)})`;\n\t\t\tif (\n\t\t\t\t!isCborSerializable(key, onInvalid, keyPath) ||\n\t\t\t\t!isCborSerializable(val, onInvalid, valPath)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Handle Set (CBOR tag 258)\n\tif (value instanceof Set) {\n\t\tlet index = 0;\n\t\tfor (const item of value.values()) {\n\t\t\tconst itemPath = currentPath\n\t\t\t\t? `${currentPath}.set[${index}]`\n\t\t\t\t: `set[${index}]`;\n\t\t\tif (!isCborSerializable(item, onInvalid, itemPath)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tindex++;\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Handle RegExp (CBOR tag 27)\n\tif (value instanceof RegExp) {\n\t\treturn true;\n\t}\n\n\t// Handle Error objects (CBOR tag 27)\n\tif (value instanceof Error) {\n\t\treturn true;\n\t}\n\n\t// Handle arrays\n\tif (Array.isArray(value)) {\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tconst itemPath = currentPath ? `${currentPath}[${i}]` : `[${i}]`;\n\t\t\tif (!isCborSerializable(value[i], onInvalid, itemPath)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Handle plain objects and records (CBOR tags 105, 51, 57344-57599)\n\tif (typeof value === \"object\") {\n\t\t// Allow plain objects and objects with prototypes (for records and named objects)\n\t\tconst proto = Object.getPrototypeOf(value);\n\t\tif (proto !== null && proto !== Object.prototype) {\n\t\t\t// Check if it's a known serializable object type\n\t\t\tconst protoConstructor = value.constructor;\n\t\t\tif (protoConstructor && typeof protoConstructor.name === \"string\") {\n\t\t\t\t// Allow objects with named constructors (records, named objects)\n\t\t\t\t// This includes user-defined classes and built-in objects\n\t\t\t\t// that CBOR can serialize with tag 27 or record tags\n\t\t\t}\n\t\t}\n\n\t\t// Check all properties recursively\n\t\tfor (const key in value) {\n\t\t\tconst propPath = currentPath ? `${currentPath}.${key}` : key;\n\t\t\tif (\n\t\t\t\t!isCborSerializable(\n\t\t\t\t\tvalue[key as keyof typeof value],\n\t\t\t\t\tonInvalid,\n\t\t\t\t\tpropPath,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Not serializable\n\tonInvalid?.(currentPath);\n\treturn false;\n}\n\nexport interface DeconstructedError {\n\t__type: \"ActorError\";\n\tstatusCode: ContentfulStatusCode;\n\tpublic: boolean;\n\tgroup: string;\n\tcode: string;\n\tmessage: string;\n\tmetadata?: unknown;\n\tactor?: errors.ActorSpecifier;\n}\n\nfunction isCanonicalStructuredRivetError(\n\terror: unknown,\n): error is errors.RivetErrorLike {\n\treturn (\n\t\terror instanceof errors.RivetError ||\n\t\t(typeof error === \"object\" &&\n\t\t\terror !== null &&\n\t\t\t\"__type\" in error &&\n\t\t\terror.__type === \"RivetError\" &&\n\t\t\t\"group\" in error &&\n\t\t\ttypeof error.group === \"string\" &&\n\t\t\t\"code\" in error &&\n\t\t\ttypeof error.code === \"string\" &&\n\t\t\t\"message\" in error &&\n\t\t\ttypeof error.message === \"string\")\n\t);\n}\n\n/**\n * Deconstructs errors into response fields. Bridge callback errors that cross\n * into rivetkit-core are sanitized there; this only classifies JS-local errors.\n */\nexport function deconstructError(\n\terror: unknown,\n\texposeInternalError = false,\n): DeconstructedError {\n\t// Build response error information. Only return errors if flagged as public in order to prevent leaking internal behavior.\n\tlet statusCode: ContentfulStatusCode;\n\tlet public_: boolean;\n\tlet group: string;\n\tlet code: string;\n\tlet message: string;\n\tlet metadata: unknown;\n\tlet actor: errors.ActorSpecifier | undefined;\n\t// Structured errors from core or from pre-built `RivetError` instances are canonical.\n\t// Only unstructured errors go through the classifier below.\n\tif (isCanonicalStructuredRivetError(error)) {\n\t\tstatusCode = (\n\t\t\ttypeof error.statusCode === \"number\"\n\t\t\t\t? error.statusCode\n\t\t\t\t: error.public\n\t\t\t\t\t? 400\n\t\t\t\t\t: 500\n\t\t) as ContentfulStatusCode;\n\t\tpublic_ = error.public ?? false;\n\t\tgroup = error.group;\n\t\tcode = error.code;\n\t\tmessage = error.message;\n\t\tmetadata = error.metadata;\n\t\tactor = error.actor;\n\t} else if (errors.ActorError.isActorError(error) && error.public) {\n\t\t// Check if error has statusCode (could be ActorError instance or DeconstructedError)\n\t\tstatusCode = (\n\t\t\t\"statusCode\" in error && error.statusCode ? error.statusCode : 400\n\t\t) as ContentfulStatusCode;\n\t\tpublic_ = true;\n\t\tgroup = error.group;\n\t\tcode = error.code;\n\t\tmessage = getErrorMessage(error);\n\t\tmetadata = error.metadata;\n\t\tactor = error.actor;\n\t} else if (exposeInternalError) {\n\t\tif (errors.ActorError.isActorError(error)) {\n\t\t\tstatusCode = 500;\n\t\t\tpublic_ = false;\n\t\t\tgroup = error.group;\n\t\t\tcode = error.code;\n\t\t\tmessage = getErrorMessage(error);\n\t\t\tmetadata = error.metadata;\n\t\t\tactor = error.actor;\n\t\t} else {\n\t\t\tstatusCode = 500;\n\t\t\tpublic_ = false;\n\t\t\tgroup = \"rivetkit\";\n\t\t\tcode = errors.INTERNAL_ERROR_CODE;\n\t\t\tmessage = getErrorMessage(error);\n\t\t}\n\t} else {\n\t\tstatusCode = 500;\n\t\tpublic_ = false;\n\t\tgroup = \"rivetkit\";\n\t\tcode = errors.INTERNAL_ERROR_CODE;\n\t\tmessage = errors.INTERNAL_ERROR_DESCRIPTION;\n\t\tif (errors.ActorError.isActorError(error)) {\n\t\t\tactor = error.actor;\n\t\t}\n\t\tmetadata = {\n\t\t\t//url: `https://hub.rivet.dev/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`,\n\t\t} satisfies errors.InternalErrorMetadata;\n\t}\n\n\treturn {\n\t\t__type: \"ActorError\",\n\t\tstatusCode,\n\t\tpublic: public_,\n\t\tgroup,\n\t\tcode,\n\t\tmessage,\n\t\tmetadata,\n\t\tactor,\n\t};\n}\n\nexport function stringifyError(error: unknown): string {\n\tif (error instanceof Error) {\n\t\tif (typeof process !== \"undefined\" && getLogErrorStack()) {\n\t\t\tlet stack: string | undefined;\n\t\t\ttry {\n\t\t\t\tstack = error.stack;\n\t\t\t} catch {\n\t\t\t\tstack = undefined;\n\t\t\t}\n\t\t\treturn `${error.name}: ${error.message}${stack ? `\\n${stack}` : \"\"}`;\n\t\t} else {\n\t\t\treturn `${error.name}: ${error.message}`;\n\t\t}\n\t} else if (typeof error === \"string\") {\n\t\treturn error;\n\t} else if (typeof error === \"object\" && error !== null) {\n\t\ttry {\n\t\t\treturn `${JSON.stringify(error)}`;\n\t\t} catch {\n\t\t\treturn \"[cannot stringify error]\";\n\t\t}\n\t} else {\n\t\treturn `Unknown error: ${getErrorMessage(error)}`;\n\t}\n}\n\nfunction getErrorMessage(err: unknown): string {\n\tif (\n\t\terr &&\n\t\ttypeof err === \"object\" &&\n\t\t\"message\" in err &&\n\t\ttypeof err.message === \"string\"\n\t) {\n\t\treturn err.message;\n\t} else {\n\t\treturn String(err);\n\t}\n}\n\n/** Generates a `Next` handler to pass to middleware in order to be able to call arbitrary middleware. */\nexport function noopNext(): Next {\n\treturn async () => {};\n}\n","{\n\t\"name\": \"rivetkit\",\n\t\"version\": \"2.3.0-rc.9\",\n\t\"description\": \"Lightweight libraries for building stateful actors on edge platforms\",\n\t\"license\": \"Apache-2.0\",\n\t\"keywords\": [\n\t\t\"rivetkit\",\n\t\t\"stateful\",\n\t\t\"serverless\",\n\t\t\"actors\",\n\t\t\"agents\",\n\t\t\"realtime\",\n\t\t\"websocket\",\n\t\t\"actors\",\n\t\t\"framework\"\n\t],\n\t\"files\": [\n\t\t\"dist\",\n\t\t\"schemas\",\n\t\t\"src\",\n\t\t\"package.json\"\n\t],\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/mod.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/mod.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/mod.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/mod.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./workflow\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/workflow/mod.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/workflow/mod.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/workflow/mod.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/workflow/mod.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./test\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/test/mod.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/test/mod.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/test/mod.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/test/mod.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./db\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/db/mod.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/db/mod.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/db/mod.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/db/mod.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./db/drizzle\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/db/drizzle.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/db/drizzle.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/db/drizzle.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/db/drizzle.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./client\": {\n\t\t\t\"import\": {\n\t\t\t\t\"browser\": {\n\t\t\t\t\t\"types\": \"./dist/browser/client.d.ts\",\n\t\t\t\t\t\"default\": \"./dist/browser/client.js\"\n\t\t\t\t},\n\t\t\t\t\"types\": \"./dist/tsup/client/mod.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/client/mod.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/client/mod.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/client/mod.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./log\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/common/log.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/common/log.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/common/log.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/common/log.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./errors\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/actor/errors.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/actor/errors.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/actor/errors.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/actor/errors.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./inspector\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/inspector/mod.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/inspector/mod.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/inspector/mod.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/inspector/mod.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./inspector/client\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/browser/inspector/client.d.ts\",\n\t\t\t\t\"default\": \"./dist/browser/inspector/client.js\"\n\t\t\t}\n\t\t},\n\t\t\"./utils\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/utils.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/utils.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/utils.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/utils.cjs\"\n\t\t\t}\n\t\t},\n\t\t\"./agent-os\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./dist/tsup/agent-os/index.d.ts\",\n\t\t\t\t\"default\": \"./dist/tsup/agent-os/index.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./dist/tsup/agent-os/index.d.cts\",\n\t\t\t\t\"default\": \"./dist/tsup/agent-os/index.cjs\"\n\t\t\t}\n\t\t}\n\t},\n\t\"engines\": {\n\t\t\"node\": \">=22.0.0\"\n\t},\n\t\"sideEffects\": [\n\t\t\"./dist/tsup/chunk-*.js\",\n\t\t\"./dist/tsup/chunk-*.cjs\"\n\t],\n\t\"scripts\": {\n\t\t\"build\": \"tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/utils.ts src/workflow/mod.ts src/test/mod.ts src/inspector/mod.ts src/db/mod.ts src/db/drizzle.ts && tsup src/agent-os/index.ts --no-clean --out-dir dist/tsup/agent-os\",\n\t\t\"build:browser\": \"tsup --config tsup.browser.config.ts\",\n\t\t\"check-types\": \"tsc --noEmit\",\n\t\t\"lint\": \"biome check . && pnpm run check:test-skips && pnpm run check:wait-for-comments\",\n\t\t\"lint:fix\": \"biome check --write .\",\n\t\t\"check:test-skips\": \"tsx scripts/check-annotated-skips.ts\",\n\t\t\"check:wait-for-comments\": \"tsx scripts/check-wait-for-comments.ts\",\n\t\t\"format\": \"biome format .\",\n\t\t\"format:write\": \"biome format --write .\",\n\t\t\"test\": \"vitest run\",\n\t\t\"test:platforms\": \"pnpm run build && RIVETKIT_INCLUDE_PLATFORM_TESTS=1 vitest run tests/platforms --passWithNoTests\",\n\t\t\"test:watch\": \"vitest\",\n\t\t\"dump-asyncapi\": \"tsx scripts/dump-asyncapi.ts\",\n\t\t\"registry-config-schema-gen\": \"tsx scripts/registry-config-schema-gen.ts\",\n\t\t\"actor-config-schema-gen\": \"tsx scripts/actor-config-schema-gen.ts\"\n\t},\n\t\"dependencies\": {\n\t\t\"@rivet-dev/agent-os-core\": \"^0.1.1\",\n\t\t\"@hono/node-server\": \"^1.18.2\",\n\t\t\"@hono/node-ws\": \"^1.1.1\",\n\t\t\"@hono/zod-openapi\": \"^1.1.5\",\n\t\t\"@rivetkit/bare-ts\": \"^0.6.2\",\n\t\t\"@rivetkit/engine-cli\": \"workspace:*\",\n\t\t\"@rivetkit/engine-envoy-protocol\": \"workspace:*\",\n\t\t\"@rivetkit/rivetkit-napi\": \"workspace:*\",\n\t\t\"@rivetkit/rivetkit-wasm\": \"workspace:*\",\n\t\t\"@rivetkit/traces\": \"workspace:*\",\n\t\t\"@rivetkit/virtual-websocket\": \"workspace:*\",\n\t\t\"@rivetkit/workflow-engine\": \"workspace:*\",\n\t\t\"cbor-x\": \"^1.6.0\",\n\t\t\"drizzle-orm\": \"^0.44.2\",\n\t\t\"get-port\": \"^7.1.0\",\n\t\t\"hono\": \"^4.7.0\",\n\t\t\"invariant\": \"^2.2.4\",\n\t\t\"p-retry\": \"^6.2.1\",\n\t\t\"pino\": \"^9.5.0\",\n\t\t\"uuid\": \"^12.0.0\",\n\t\t\"vbare\": \"^0.0.4\",\n\t\t\"zod\": \"^4.1.0\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@copilotkit/llmock\": \"^1.6.0\",\n\t\t\"@rivet-dev/agent-os-common\": \"*\",\n\t\t\"@rivet-dev/agent-os-pi\": \"^0.1.1\",\n\t\t\"@biomejs/biome\": \"^2.3\",\n\t\t\"@standard-schema/spec\": \"^1.0.0\",\n\t\t\"@types/invariant\": \"^2\",\n\t\t\"@types/node\": \"^22.13.1\",\n\t\t\"eventsource\": \"^4.0.0\",\n\t\t\"tsup\": \"^8.4.0\",\n\t\t\"tsx\": \"^4.19.4\",\n\t\t\"typescript\": \"^5.7.3\",\n\t\t\"vite-tsconfig-paths\": \"^5.1.4\",\n\t\t\"vitest\": \"^3.1.1\",\n\t\t\"ws\": \"^8.18.1\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"drizzle-kit\": \"^0.31.2\",\n\t\t\"eventsource\": \"^4.0.0\",\n\t\t\"ws\": \"^8.0.0\"\n\t},\n\t\"peerDependenciesMeta\": {\n\t\t\"drizzle-kit\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eventsource\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"ws\": {\n\t\t\t\"optional\": true\n\t\t}\n\t},\n\t\"stableVersion\": \"0.8.0\"\n}\n","import {\n\ttype DestinationStream,\n\ttype LevelWithSilent,\n\ttype Logger,\n\tpino,\n\tstdTimeFunctions,\n} from \"pino\";\nimport { z } from \"zod/v4\";\nimport { getLogLevel, getLogTarget, getLogTimestamp } from \"@/utils/env-vars\";\n\nexport type { Logger } from \"pino\";\n\nlet baseLogger: Logger | undefined;\nlet configuredLogLevel: LogLevel | undefined;\n\n/** Cache of child loggers by logger name. */\nconst loggerCache = new Map<string, Logger>();\n\nexport const LogLevelSchema = z.enum([\n\t\"trace\",\n\t\"debug\",\n\t\"info\",\n\t\"warn\",\n\t\"error\",\n\t\"fatal\",\n\t\"silent\",\n]);\n\nexport type LogLevel = z.infer<typeof LogLevelSchema>;\n\nexport function getPinoLevel(logLevel?: LogLevel): LevelWithSilent {\n\t// Priority: provided > configured > env > default\n\tif (logLevel) {\n\t\treturn logLevel;\n\t}\n\n\tif (configuredLogLevel) {\n\t\treturn configuredLogLevel;\n\t}\n\n\tconst raw = (getLogLevel() || \"warn\").toString().toLowerCase();\n\n\tconst parsed = LogLevelSchema.safeParse(raw);\n\tif (parsed.success) {\n\t\treturn parsed.data;\n\t}\n\n\t// Default to info if invalid\n\treturn \"info\";\n}\n\nexport function getIncludeTarget(): boolean {\n\treturn getLogTarget();\n}\n\n/**\n * Configure a custom base logger.\n */\nexport function configureBaseLogger(logger: Logger): void {\n\tbaseLogger = logger;\n\tloggerCache.clear();\n}\n\n/**\n * Configure the default logger with optional log level.\n */\nexport function configureDefaultLogger(logLevel?: LogLevel) {\n\t// Store the configured log level\n\tif (logLevel) {\n\t\tconfiguredLogLevel = logLevel;\n\t}\n\n\tbaseLogger = pino(\n\t\t{\n\t\t\tlevel: getPinoLevel(logLevel),\n\t\t\tmessageKey: \"msg\",\n\t\t\t// Do not include pid/hostname in output\n\t\t\tbase: {},\n\t\t\t// Keep the numeric level so the logfmt sink can match Pino's levels.\n\t\t\tformatters: {\n\t\t\t\tlevel(_label: string, number: number) {\n\t\t\t\t\treturn { level: number };\n\t\t\t\t},\n\t\t\t},\n\t\t\ttimestamp: getLogTimestamp() ? stdTimeFunctions.epochTime : false,\n\t\t},\n\t\tcreateLogfmtDestination(),\n\t);\n\n\tloggerCache.clear();\n}\n\n/**\n * Get or initialize the base logger.\n */\nexport function getBaseLogger(): Logger {\n\tif (!baseLogger) {\n\t\tconfigureDefaultLogger();\n\t}\n\treturn baseLogger!;\n}\n\n/**\n * Returns a child logger with `target` bound for the given name.\n */\nexport function getLogger(name = \"default\"): Logger {\n\t// Check cache first\n\tconst cached = loggerCache.get(name);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\t// Create\n\tconst base = getBaseLogger();\n\n\t// Add target to log if enabled\n\tconst child = getIncludeTarget() ? base.child({ target: name }) : base;\n\n\t// Cache the logger\n\tloggerCache.set(name, child);\n\n\treturn child;\n}\n\nconst PINO_LEVEL_LABELS: Record<number, string> = {\n\t10: \"trace\",\n\t20: \"debug\",\n\t30: \"info\",\n\t40: \"warn\",\n\t50: \"error\",\n\t60: \"fatal\",\n};\n\nfunction createLogfmtDestination(): DestinationStream {\n\treturn {\n\t\twrite(msg: string): void {\n\t\t\tconst line = formatLogfmtLine(msg);\n\t\t\tif (typeof process !== \"undefined\" && process.stdout?.write) {\n\t\t\t\tprocess.stdout.write(`${line}\\n`);\n\t\t\t} else {\n\t\t\t\tconsole.log(line);\n\t\t\t}\n\t\t},\n\t};\n}\n\nfunction formatLogfmtLine(raw: string): string {\n\tlet data: Record<string, unknown>;\n\ttry {\n\t\tdata = JSON.parse(raw);\n\t} catch {\n\t\treturn raw.trimEnd();\n\t}\n\n\tconst parts: string[] = [];\n\tappendLogfmtEntry(parts, \"level\", formatPinoLevel(data.level));\n\n\tif (data.time !== undefined) {\n\t\tappendLogfmtEntry(parts, \"ts\", data.time);\n\t}\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tif (key === \"level\" || key === \"time\") {\n\t\t\tcontinue;\n\t\t}\n\t\tappendLogfmtEntry(parts, key, value);\n\t}\n\n\treturn parts.join(\" \");\n}\n\nfunction formatPinoLevel(level: unknown): string {\n\tif (typeof level === \"number\") {\n\t\treturn PINO_LEVEL_LABELS[level] ?? level.toString();\n\t}\n\n\tif (typeof level === \"string\") {\n\t\treturn level.toLowerCase();\n\t}\n\n\treturn \"info\";\n}\n\nfunction appendLogfmtEntry(parts: string[], key: string, value: unknown): void {\n\tconst safeKey = key.replace(/[\\s=\"]/g, \"\");\n\tif (safeKey.length === 0) {\n\t\treturn;\n\t}\n\n\tparts.push(`${safeKey}=${formatLogfmtValue(value)}`);\n}\n\nfunction formatLogfmtValue(value: unknown): string {\n\tif (typeof value === \"number\" || typeof value === \"boolean\") {\n\t\treturn String(value);\n\t}\n\n\tif (value === null || value === undefined) {\n\t\treturn \"null\";\n\t}\n\n\tif (typeof value === \"string\") {\n\t\treturn quoteLogfmtString(value);\n\t}\n\n\treturn quoteLogfmtString(JSON.stringify(value));\n}\n\nfunction quoteLogfmtString(value: string): string {\n\tif (!/[\\s=\"]/.test(value)) {\n\t\treturn value;\n\t}\n\n\treturn `\"${value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\")}\"`;\n}\n","import { stringifyError } from \"@/common/utils\";\nimport type { Context as HonoContext, Handler as HonoHandler } from \"hono\";\nimport { stringify as uuidstringify } from \"uuid\";\nimport pkgJson from \"../package.json\" with { type: \"json\" };\nimport { getLogger } from \"./common/log\";\nimport { assertUnreachable } from \"./common/utils\";\n\n/** @experimental */\nexport { stringifyError };\n\n/** @experimental */\nexport { assertUnreachable };\n\n/**\n * Joins multiple abort signals into one.\n *\n * The returned signal aborts when the first input signal aborts.\n * Uses `AbortSignal.any(...)` when available, with a runtime fallback.\n *\n * @experimental\n */\nexport function joinSignals(\n\t...signals: Array<AbortSignal | undefined | null>\n): AbortSignal {\n\tconst validSignals = signals.filter(\n\t\t(signal): signal is AbortSignal => signal != null,\n\t);\n\n\tif (validSignals.length === 0) {\n\t\treturn new AbortController().signal;\n\t}\n\n\tif (validSignals.length === 1) {\n\t\treturn validSignals[0];\n\t}\n\n\tconst signalAny = (\n\t\tAbortSignal as typeof AbortSignal & {\n\t\t\tany?: (signals: AbortSignal[]) => AbortSignal;\n\t\t}\n\t).any;\n\tif (typeof signalAny === \"function\") {\n\t\treturn signalAny(validSignals);\n\t}\n\n\tconst controller = new AbortController();\n\tconst cleanups: Array<() => void> = [];\n\n\tconst abortWithSignal = (signal: AbortSignal) => {\n\t\tif (controller.signal.aborted) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const cleanup of cleanups) {\n\t\t\tcleanup();\n\t\t}\n\n\t\tconst reason = (signal as AbortSignal & { reason?: unknown }).reason;\n\t\tcontroller.abort(reason);\n\t};\n\n\tfor (const signal of validSignals) {\n\t\tif (signal.aborted) {\n\t\t\tabortWithSignal(signal);\n\t\t\tbreak;\n\t\t}\n\n\t\tconst onAbort = () => abortWithSignal(signal);\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\tcleanups.push(() => signal.removeEventListener(\"abort\", onAbort));\n\t}\n\n\treturn controller.signal;\n}\n\n/**\n * Returns a promise that resolves after the given number of milliseconds.\n *\n * @experimental\n */\nexport function sleep(ms: number): Promise<void> {\n\treturn new Promise<void>((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Creates a fixed-rate interval tick function that can be awaited in a loop.\n *\n * @example\n * const tick = interval(100);\n * while (!c.aborted) {\n * await tick();\n * if (c.aborted) break;\n * // ... game logic\n * }\n *\n * @experimental\n */\nexport function interval(ms: number): () => Promise<void> {\n\treturn () => sleep(ms);\n}\n\nexport const VERSION = pkgJson.version;\n\nlet _userAgent: string | undefined;\n\nfunction logger() {\n\treturn getLogger(\"utils\");\n}\n\n/**\n * Builds the HTTP user agent used by this library.\n *\n * @experimental\n */\nexport function httpUserAgent(): string {\n\t// Return cached value if already initialized\n\tif (_userAgent !== undefined) {\n\t\treturn _userAgent;\n\t}\n\n\t// Library\n\tlet userAgent = `RivetKit/${VERSION}`;\n\n\t// Navigator\n\tconst navigatorObj =\n\t\ttypeof navigator !== \"undefined\" ? navigator : undefined;\n\tif (navigatorObj?.userAgent) userAgent += ` ${navigatorObj.userAgent}`;\n\n\t_userAgent = userAgent;\n\n\treturn userAgent;\n}\n\nexport type UpgradeWebSocket = (\n\tcreateEvents: (c: HonoContext) => any,\n) => HonoHandler;\n\nexport type GetUpgradeWebSocket = () => UpgradeWebSocket;\n\n/**\n * Reads an environment variable from Deno or Node runtimes.\n *\n * @experimental\n */\nexport function getEnvUniversal(key: string): string | undefined {\n\tif (typeof Deno !== \"undefined\") {\n\t\treturn Deno.env.get(key);\n\t} else if (typeof process !== \"undefined\") {\n\t\t// Do this after Deno since `process` is sometimes polyfilled\n\t\treturn process.env[key];\n\t}\n}\n\n/**\n * Traces a debug value and returns it.\n *\n * @experimental\n */\nexport function dbg<T>(x: T): T {\n\tconsole.trace(`=== DEBUG ===\\n${x}`);\n\treturn x;\n}\n\n/**\n * Converts various ArrayBuffer-like types to Uint8Array.\n * Handles ArrayBuffer, ArrayBufferView (including typed arrays), and passes through existing Uint8Array.\n *\n * @param data - The ArrayBuffer or ArrayBufferView to convert\n * @returns A Uint8Array view of the data\n *\n * @experimental\n */\nexport function toUint8Array(data: ArrayBuffer | ArrayBufferView): Uint8Array {\n\tif (data instanceof Uint8Array) {\n\t\treturn data;\n\t} else if (data instanceof ArrayBuffer) {\n\t\treturn new Uint8Array(data);\n\t} else if (ArrayBuffer.isView(data)) {\n\t\t// Handle other ArrayBufferView types (Int8Array, Uint16Array, DataView, etc.)\n\t\treturn new Uint8Array(\n\t\t\tdata.buffer.slice(\n\t\t\t\tdata.byteOffset,\n\t\t\t\tdata.byteOffset + data.byteLength,\n\t\t\t),\n\t\t);\n\t} else {\n\t\tthrow new TypeError(\"Input must be ArrayBuffer or ArrayBufferView\");\n\t}\n}\n\n// Long timeouts\n//\n// JavaScript timers use a signed 32-bit integer for delays, so values above 2^31-1 (~24.8 days)\n// are not reliable and may fire immediately or overflow.\n//\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#maximum_delay_value\nconst TIMEOUT_MAX = 2147483647; // 2^31-1\n\nexport type LongTimeoutHandle = { abort: () => void };\n\n/**\n * Polyfill for Promise.withResolvers().\n *\n * This is specifically for Cloudflare Workers. Their implementation of Promise.withResolvers does not work correctly.\n *\n * @experimental\n */\nexport function promiseWithResolvers<T>(onReject: (reason?: any) => void): {\n\tpromise: Promise<T>;\n\tresolve: (value: T | PromiseLike<T>) => void;\n\treject: (reason?: any) => void;\n} {\n\tlet resolve!: (value: T | PromiseLike<T>) => void;\n\tlet reject!: (reason?: any) => void;\n\tconst promise = new Promise<T>((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\tpromise.catch(onReject);\n\treturn { promise, resolve, reject };\n}\n\n/**\n * Sets a timeout that supports delays larger than the JavaScript timer limit.\n *\n * @experimental\n */\nexport function setLongTimeout(\n\tlistener: () => void,\n\tafter: number,\n): LongTimeoutHandle {\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\n\tfunction start(remaining: number) {\n\t\tif (remaining <= TIMEOUT_MAX) {\n\t\t\ttimeout = setTimeout(listener, remaining);\n\t\t} else {\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\tstart(remaining - TIMEOUT_MAX);\n\t\t\t}, TIMEOUT_MAX);\n\t\t}\n\t}\n\n\tstart(after);\n\n\treturn {\n\t\tabort: () => {\n\t\t\tif (timeout !== undefined) clearTimeout(timeout);\n\t\t},\n\t};\n}\n\n/**\n * A tiny utility that coalesces/enqueues async operations so only the latest\n * queued task runs per cycle, while callers receive a promise that resolves\n * when the task for the cycle they joined has completed.\n */\nexport class SinglePromiseQueue {\n\t/** Next operation to execute in the queue. If attempting to enqueue another op, it will override the existing op. */\n\t#queuedOp?: () => Promise<void>;\n\n\t/** The currently running promise of #drainLoop. Do not await this, instead await `pending` to await the current cycle. */\n\trunningDrainLoop?: Promise<void>;\n\n\t/** Pending resolver fro the currently queued entry. */\n\t#pending?: ReturnType<typeof promiseWithResolvers<void>>;\n\n\t/** Queue the next operation and return a promise that resolves when it flushes. */\n\tenqueue(op: () => Promise<void>): Promise<void> {\n\t\t// Replace any previously queued operation with the latest one\n\t\tthis.#queuedOp = op;\n\n\t\t// Ensure a shared resolver exists for all callers in this cycle\n\t\tif (!this.#pending) {\n\t\t\tthis.#pending = promiseWithResolvers<void>((reason) =>\n\t\t\t\tlogger().warn({\n\t\t\t\t\tmsg: \"unhandled single promise queue rejection\",\n\t\t\t\t\treason,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst waitForThisCycle = this.#pending.promise;\n\n\t\t// Start runner if not already running\n\t\tif (!this.runningDrainLoop) {\n\t\t\tthis.runningDrainLoop = this.#drainLoop();\n\t\t}\n\n\t\treturn waitForThisCycle;\n\t}\n\n\t/** Drain queued operations sequentially until there is nothing left. */\n\tasync #drainLoop(): Promise<void> {\n\t\ttry {\n\t\t\twhile (this.#queuedOp) {\n\t\t\t\t// Capture current cycle resolver then reset for the next cycle\n\t\t\t\tconst resolver = this.#pending;\n\t\t\t\tthis.#pending = undefined;\n\n\t\t\t\t// Capture and clear the currently queued operation\n\t\t\t\tconst op = this.#queuedOp;\n\t\t\t\tthis.#queuedOp = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tawait op();\n\t\t\t\t\t// Notify all waiters for this cycle\n\t\t\t\t\tresolver?.resolve();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlogger().error({\n\t\t\t\t\t\tmsg: \"error in SinglePromiseQueue drain loop\",\n\t\t\t\t\t\terror: stringifyError(err),\n\t\t\t\t\t});\n\t\t\t\t\t// Reject all waiters for this cycle\n\t\t\t\t\tresolver?.reject(err);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.runningDrainLoop = undefined;\n\t\t}\n\t}\n}\n\n/**\n * Converts a Buffer or Uint8Array into an ArrayBuffer view.\n *\n * @experimental\n */\nexport function bufferToArrayBuffer(buf: Buffer | Uint8Array): ArrayBuffer {\n\treturn buf.buffer.slice(\n\t\tbuf.byteOffset,\n\t\tbuf.byteOffset + buf.byteLength,\n\t) as ArrayBuffer;\n}\n\n/**\n * Properly combines a base URL endpoint with a path, preserving any base path in the endpoint.\n *\n * @example\n * combineUrlPath(\"http://localhost:8787/rivet\", \"/actors/action\")\n * // Returns: \"http://localhost:8787/rivet/actors/action\"\n *\n * @example\n * combineUrlPath(\"http://localhost:8787/rivet\", \"/actors?type=foo\", { namespace: \"test\" })\n * // Returns: \"http://localhost:8787/rivet/actors?type=foo&namespace=test\"\n *\n * @param endpoint The base URL endpoint that may contain a path component\n * @param path The path to append to the endpoint (may include query parameters)\n * @param queryParams Optional additional query parameters to append\n * @returns The properly combined URL string\n *\n * @experimental\n */\nexport function combineUrlPath(\n\tendpoint: string,\n\tpath: string,\n\tqueryParams?: Record<string, string | undefined>,\n): string {\n\tconst baseUrl = new URL(endpoint);\n\n\t// Extract path and query from the provided path\n\tconst pathParts = path.split(\"?\");\n\tconst pathOnly = pathParts[0];\n\tconst existingQuery = pathParts[1] || \"\";\n\n\t// Remove trailing slash from base path and ensure path starts with /\n\tconst basePath = baseUrl.pathname.replace(/\\/$/, \"\");\n\tconst cleanPath = pathOnly.startsWith(\"/\") ? pathOnly : `/${pathOnly}`;\n\t// Combine paths and remove any double slashes\n\tconst fullPath = (basePath + cleanPath).replace(/\\/\\//g, \"/\");\n\n\t// Build query string\n\tconst queryParts: string[] = [];\n\tif (existingQuery) {\n\t\tqueryParts.push(existingQuery);\n\t}\n\tif (queryParams) {\n\t\tfor (const [key, value] of Object.entries(queryParams)) {\n\t\t\tif (value !== undefined) {\n\t\t\t\tqueryParts.push(\n\t\t\t\t\t`${encodeURIComponent(key)}=${encodeURIComponent(value)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst fullQuery = queryParts.length > 0 ? `?${queryParts.join(\"&\")}` : \"\";\n\treturn `${baseUrl.protocol}//${baseUrl.host}${fullPath}${fullQuery}`;\n}\n\n/**\n * Compares two ArrayBuffer values by byte content.\n *\n * @experimental\n */\nexport function arrayBuffersEqual(\n\tbuf1: ArrayBuffer,\n\tbuf2: ArrayBuffer,\n): boolean {\n\tif (buf1.byteLength !== buf2.byteLength) return false;\n\n\tconst view1 = new Uint8Array(buf1);\n\tconst view2 = new Uint8Array(buf2);\n\n\tfor (let i = 0; i < view1.length; i++) {\n\t\tif (view1[i] !== view2[i]) return false;\n\t}\n\treturn true;\n}\n\nexport const EXTRA_ERROR_LOG = {\n\tissues: \"https://github.com/rivet-dev/rivet/issues\",\n\tsupport: \"https://rivet.dev/discord\",\n\tversion: VERSION,\n};\n\nexport type Runtime = \"deno\" | \"bun\" | \"node\";\n\n/**\n * Detects the current JavaScript runtime from the user agent.\n *\n * @experimental\n */\nexport function detectRuntime(): Runtime {\n\tconst userAgent =\n\t\ttypeof navigator !== \"undefined\" ? navigator.userAgent : \"\";\n\tif (userAgent.includes(\"Deno\")) {\n\t\treturn \"deno\";\n\t}\n\tif (userAgent.includes(\"Bun\")) {\n\t\treturn \"bun\";\n\t}\n\treturn \"node\";\n}\n\nexport type DeepReadonly<T> = {\n\treadonly [K in keyof T]: T[K] extends object ? DeepReadonly<T[K]> : T[K];\n};\n\nexport type DeepMutable<T> = {\n\t-readonly [K in keyof T]: T[K] extends object ? DeepMutable<T[K]> : T[K];\n};\n"],"mappings":"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","names":["logger"]}