rivetkit 2.3.19 → 2.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/browser/client.d.ts +82 -5
  2. package/dist/browser/client.js +302 -60
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +2 -1
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/actor/errors.cjs.map +1 -1
  7. package/dist/tsup/agent-os/index.cjs +35 -1
  8. package/dist/tsup/agent-os/index.cjs.map +1 -1
  9. package/dist/tsup/agent-os/index.d.cts +71 -4
  10. package/dist/tsup/agent-os/index.d.ts +71 -4
  11. package/dist/tsup/agent-os/index.js +35 -1
  12. package/dist/tsup/agent-os/index.js.map +1 -1
  13. package/dist/tsup/{chunk-X7RMJQGY.js → chunk-2CI2IEVN.js} +2 -2
  14. package/dist/tsup/{chunk-WME6KOXW.js → chunk-5EGLHQJJ.js} +2 -2
  15. package/dist/tsup/{chunk-464WE4RF.js → chunk-5IBUZFLP.js} +2 -2
  16. package/dist/tsup/{chunk-PPEIPCW4.cjs → chunk-6LRPYB4Q.cjs} +4 -4
  17. package/dist/tsup/chunk-6LRPYB4Q.cjs.map +1 -0
  18. package/dist/tsup/{chunk-7BRRGBRY.cjs → chunk-APOANSDG.cjs} +10 -10
  19. package/dist/tsup/chunk-APOANSDG.cjs.map +1 -0
  20. package/dist/tsup/{chunk-G4U5L6AX.cjs → chunk-ARGNQGYG.cjs} +3 -3
  21. package/dist/tsup/chunk-ARGNQGYG.cjs.map +1 -0
  22. package/dist/tsup/{chunk-IJUXBWH4.cjs → chunk-B5SNXPSS.cjs} +448 -199
  23. package/dist/tsup/chunk-B5SNXPSS.cjs.map +1 -0
  24. package/dist/tsup/{chunk-4SC2NSAV.js → chunk-CJXBGTVT.js} +2 -2
  25. package/dist/tsup/{chunk-EB77NZL4.js → chunk-CSOHAAZK.js} +33 -1
  26. package/dist/tsup/chunk-CSOHAAZK.js.map +1 -0
  27. package/dist/tsup/{chunk-Z4RAXFSD.cjs → chunk-GHKQC4PD.cjs} +3 -3
  28. package/dist/tsup/chunk-GHKQC4PD.cjs.map +1 -0
  29. package/dist/tsup/chunk-JX2ITWAV.cjs.map +1 -1
  30. package/dist/tsup/chunk-KVFIONKQ.cjs.map +1 -1
  31. package/dist/tsup/{chunk-RJC5O2SD.cjs → chunk-KWGN2ZBJ.cjs} +3 -2
  32. package/dist/tsup/chunk-KWGN2ZBJ.cjs.map +1 -0
  33. package/dist/tsup/{chunk-OGPFN6BT.cjs → chunk-LWSLKKZ5.cjs} +3 -3
  34. package/dist/tsup/chunk-LWSLKKZ5.cjs.map +1 -0
  35. package/dist/tsup/chunk-MYWZCDML.cjs.map +1 -1
  36. package/dist/tsup/{chunk-7A5EIXJJ.cjs → chunk-NL2EIKK6.cjs} +7 -7
  37. package/dist/tsup/chunk-NL2EIKK6.cjs.map +1 -0
  38. package/dist/tsup/{chunk-EO5UOXXY.cjs → chunk-NWCAIWHL.cjs} +34 -2
  39. package/dist/tsup/chunk-NWCAIWHL.cjs.map +1 -0
  40. package/dist/tsup/{chunk-BKX7UDTA.js → chunk-PYRI75DL.js} +314 -65
  41. package/dist/tsup/chunk-PYRI75DL.js.map +1 -0
  42. package/dist/tsup/{chunk-7HTST3NX.js → chunk-RFN3BG6D.js} +3 -3
  43. package/dist/tsup/chunk-RFN3BG6D.js.map +1 -0
  44. package/dist/tsup/{chunk-DN6MD3KK.js → chunk-RGIZNZYO.js} +3 -2
  45. package/dist/tsup/chunk-RGIZNZYO.js.map +1 -0
  46. package/dist/tsup/{chunk-DK3L22R6.js → chunk-VMMXXVDO.js} +4 -4
  47. package/dist/tsup/client/mod.cjs +5 -5
  48. package/dist/tsup/client/mod.cjs.map +1 -1
  49. package/dist/tsup/client/mod.d.cts +12 -3
  50. package/dist/tsup/client/mod.d.ts +12 -3
  51. package/dist/tsup/client/mod.js +4 -4
  52. package/dist/tsup/common/log.cjs +2 -2
  53. package/dist/tsup/common/log.cjs.map +1 -1
  54. package/dist/tsup/common/log.js +1 -1
  55. package/dist/tsup/common/websocket.cjs +3 -3
  56. package/dist/tsup/common/websocket.cjs.map +1 -1
  57. package/dist/tsup/common/websocket.js +2 -2
  58. package/dist/tsup/{config-DEm0yIVV.d.ts → config-Bc1nnvUl.d.ts} +76 -6
  59. package/dist/tsup/{config-8n2AOhXK.d.cts → config-Do_0guSS.d.cts} +76 -6
  60. package/dist/tsup/{context-DwjOVvlE.d.cts → context-CgNkhjdY.d.cts} +1 -1
  61. package/dist/tsup/{context-DGg2-IOm.d.ts → context-oGQxZDPz.d.ts} +1 -1
  62. package/dist/tsup/db/drizzle.cjs +2 -2
  63. package/dist/tsup/db/drizzle.cjs.map +1 -1
  64. package/dist/tsup/db/drizzle.js +1 -1
  65. package/dist/tsup/db/mod.cjs +3 -3
  66. package/dist/tsup/db/mod.cjs.map +1 -1
  67. package/dist/tsup/db/mod.js +2 -2
  68. package/dist/tsup/dynamic/mod.cjs +2 -2
  69. package/dist/tsup/dynamic/mod.cjs.map +1 -1
  70. package/dist/tsup/dynamic/mod.d.cts +2 -1
  71. package/dist/tsup/dynamic/mod.d.ts +2 -1
  72. package/dist/tsup/dynamic/mod.js +1 -1
  73. package/dist/tsup/inspector/mod.cjs +5 -5
  74. package/dist/tsup/inspector/mod.cjs.map +1 -1
  75. package/dist/tsup/inspector/mod.js +4 -4
  76. package/dist/tsup/inspector/workflow.cjs +4 -4
  77. package/dist/tsup/inspector/workflow.cjs.map +1 -1
  78. package/dist/tsup/inspector/workflow.js +3 -3
  79. package/dist/tsup/inspector-tab/mod.cjs +2 -2
  80. package/dist/tsup/inspector-tab/mod.cjs.map +1 -1
  81. package/dist/tsup/inspector-tab/mod.d.cts +3 -2
  82. package/dist/tsup/inspector-tab/mod.d.ts +3 -2
  83. package/dist/tsup/inspector-tab/mod.js +1 -1
  84. package/dist/tsup/mod.cjs +140 -136
  85. package/dist/tsup/mod.cjs.map +1 -1
  86. package/dist/tsup/mod.d.cts +4 -3
  87. package/dist/tsup/mod.d.ts +4 -3
  88. package/dist/tsup/mod.js +44 -40
  89. package/dist/tsup/mod.js.map +1 -1
  90. package/dist/tsup/test/mod.cjs +6 -6
  91. package/dist/tsup/test/mod.cjs.map +1 -1
  92. package/dist/tsup/test/mod.d.cts +2 -1
  93. package/dist/tsup/test/mod.d.ts +2 -1
  94. package/dist/tsup/test/mod.js +4 -4
  95. package/dist/tsup/unstable/migrations.cjs.map +1 -1
  96. package/dist/tsup/utils.cjs +2 -2
  97. package/dist/tsup/utils.cjs.map +1 -1
  98. package/dist/tsup/utils.js +1 -1
  99. package/dist/tsup/workflow/mod.cjs +10 -10
  100. package/dist/tsup/workflow/mod.cjs.map +1 -1
  101. package/dist/tsup/workflow/mod.d.cts +4 -3
  102. package/dist/tsup/workflow/mod.d.ts +4 -3
  103. package/dist/tsup/workflow/mod.js +5 -5
  104. package/package.json +10 -9
  105. package/src/actor/actions.ts +36 -0
  106. package/src/actor/config.ts +27 -0
  107. package/src/actor/definition.ts +6 -1
  108. package/src/actor/mod.ts +5 -0
  109. package/src/actor/tracing.ts +28 -0
  110. package/src/client/actor-conn.ts +34 -1
  111. package/src/client/actor-handle.ts +29 -1
  112. package/src/client/auth.ts +37 -0
  113. package/src/client/client.ts +10 -2
  114. package/src/client/config.ts +12 -1
  115. package/src/client/mod.ts +9 -0
  116. package/src/client/token-provider.test.ts +86 -0
  117. package/src/client/token-provider.ts +93 -0
  118. package/src/client/utils.ts +1 -0
  119. package/src/engine-client/actor-websocket-client.ts +2 -1
  120. package/src/engine-client/api-endpoints.ts +28 -0
  121. package/src/engine-client/driver.ts +4 -0
  122. package/src/engine-client/mod.ts +201 -64
  123. package/src/registry/config/envoy.ts +1 -17
  124. package/src/registry/config/index.test.ts +2 -2
  125. package/src/registry/config/index.ts +7 -2
  126. package/src/registry/index.ts +28 -0
  127. package/src/registry/native.ts +18 -0
  128. package/src/registry/runtime.ts +8 -0
  129. package/dist/tsup/chunk-7A5EIXJJ.cjs.map +0 -1
  130. package/dist/tsup/chunk-7BRRGBRY.cjs.map +0 -1
  131. package/dist/tsup/chunk-7HTST3NX.js.map +0 -1
  132. package/dist/tsup/chunk-BKX7UDTA.js.map +0 -1
  133. package/dist/tsup/chunk-DN6MD3KK.js.map +0 -1
  134. package/dist/tsup/chunk-EB77NZL4.js.map +0 -1
  135. package/dist/tsup/chunk-EO5UOXXY.cjs.map +0 -1
  136. package/dist/tsup/chunk-G4U5L6AX.cjs.map +0 -1
  137. package/dist/tsup/chunk-IJUXBWH4.cjs.map +0 -1
  138. package/dist/tsup/chunk-OGPFN6BT.cjs.map +0 -1
  139. package/dist/tsup/chunk-PPEIPCW4.cjs.map +0 -1
  140. package/dist/tsup/chunk-RJC5O2SD.cjs.map +0 -1
  141. package/dist/tsup/chunk-Z4RAXFSD.cjs.map +0 -1
  142. /package/dist/tsup/{chunk-X7RMJQGY.js.map → chunk-2CI2IEVN.js.map} +0 -0
  143. /package/dist/tsup/{chunk-WME6KOXW.js.map → chunk-5EGLHQJJ.js.map} +0 -0
  144. /package/dist/tsup/{chunk-464WE4RF.js.map → chunk-5IBUZFLP.js.map} +0 -0
  145. /package/dist/tsup/{chunk-4SC2NSAV.js.map → chunk-CJXBGTVT.js.map} +0 -0
  146. /package/dist/tsup/{chunk-DK3L22R6.js.map → chunk-VMMXXVDO.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  bufferToArrayBuffer,
3
3
  toUint8Array
4
- } from "./chunk-DN6MD3KK.js";
4
+ } from "./chunk-RGIZNZYO.js";
5
5
 
6
6
  // src/common/bare/transport/v1.ts
7
7
  import * as bare from "@rivetkit/bare-ts";
@@ -593,4 +593,4 @@ export {
593
593
  encodeWorkflowHistoryTransport,
594
594
  decodeWorkflowHistoryTransport
595
595
  };
596
- //# sourceMappingURL=chunk-4SC2NSAV.js.map
596
+ //# sourceMappingURL=chunk-CJXBGTVT.js.map
@@ -30,6 +30,26 @@ function flattenActionInputSchemas(actions, schemas) {
30
30
  }
31
31
  return flattened;
32
32
  }
33
+ function flattenActionTraceSamplers(actions, rates = {}) {
34
+ const handlers = flattenActionHandlers(actions);
35
+ const flattened = Object.fromEntries(flattenSampleRates(rates, []));
36
+ for (const name of Object.keys(flattened)) {
37
+ if (!Object.hasOwn(handlers, name)) {
38
+ throw new TypeError(
39
+ `tracing.actions.${name} does not name an action`
40
+ );
41
+ }
42
+ }
43
+ return flattened;
44
+ }
45
+ function flattenSampleRates(rates, path) {
46
+ return Object.entries(rates).flatMap(
47
+ ([segment, rate]) => {
48
+ const childPath = [...path, segment];
49
+ return typeof rate === "number" ? [[childPath.join("."), rate]] : flattenSampleRates(rate, childPath);
50
+ }
51
+ );
52
+ }
33
53
  function collectActionEntries(actions) {
34
54
  const entries = [];
35
55
  const names = /* @__PURE__ */ new Set();
@@ -296,6 +316,10 @@ var InstanceActorOptionsSchema = InstanceActorOptionsBaseSchema.prefault(() => (
296
316
  var ActorOptionsSchema = GlobalActorOptionsBaseSchema.extend(
297
317
  InstanceActorOptionsBaseSchema.shape
298
318
  ).strict().prefault(() => ({}));
319
+ var zSampleRate = z.number().min(0).max(1);
320
+ var zActionSampleRates = z.lazy(
321
+ () => z.record(z.string(), z.union([zSampleRate, zActionSampleRates]))
322
+ );
299
323
  var ActorConfigSchema = z.object({
300
324
  onCreate: zFunction().optional(),
301
325
  onDestroy: zFunction().optional(),
@@ -312,6 +336,10 @@ var ActorConfigSchema = z.object({
312
336
  onWebSocket: zFunction().optional(),
313
337
  actions: zActionTree.default(() => ({})),
314
338
  actionInputSchemas: z.record(z.string(), z.any()).optional(),
339
+ tracing: z.object({
340
+ sampler: zSampleRate.optional(),
341
+ actions: zActionSampleRates.optional()
342
+ }).strict().optional(),
315
343
  connParamsSchema: z.any().optional(),
316
344
  events: z.record(z.string(), z.any()).optional(),
317
345
  queues: z.record(z.string(), z.any()).optional(),
@@ -459,6 +487,9 @@ var DocActorConfigSchema = z.object({
459
487
  actionInputSchemas: z.record(z.string(), z.unknown()).optional().describe(
460
488
  "Optional schemas for validating action argument tuples in native runtimes. May mirror nested action groups or use dot-separated low-level action names."
461
489
  ),
490
+ tracing: z.unknown().optional().describe(
491
+ "Trace sampling for this actor: `sampler` is the share of its invocations that are recorded, from 0 to 1, with optional per-action rates under `actions`. A rate lowers what is recorded and never raises it. Defaults to the process sampler from OTEL_TRACES_SAMPLER."
492
+ ),
462
493
  connParamsSchema: z.unknown().optional().describe(
463
494
  "Optional schema for validating connection params in native runtimes."
464
495
  ),
@@ -470,6 +501,7 @@ var DocActorConfigSchema = z.object({
470
501
  export {
471
502
  flattenActionHandlers,
472
503
  flattenActionInputSchemas,
504
+ flattenActionTraceSamplers,
473
505
  ACTOR_CONTEXT_INTERNAL_SYMBOL,
474
506
  RAW_STATE_SYMBOL,
475
507
  CONN_STATE_MANAGER_SYMBOL,
@@ -489,4 +521,4 @@ export {
489
521
  disposeRunInspector,
490
522
  ActorConfigSchema
491
523
  };
492
- //# sourceMappingURL=chunk-EB77NZL4.js.map
524
+ //# sourceMappingURL=chunk-CSOHAAZK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actor/config.ts","../../src/actor/actions.ts"],"sourcesContent":["import { z } from \"zod/v4\";\nimport type { Client } from \"@/client/client\";\nimport type {\n\tAnyDatabaseProvider,\n\tInferDatabaseClient,\n} from \"@/common/database/config\";\nimport type { UniversalWebSocket } from \"@/common/websocket-interface\";\nimport type { WorkflowState } from \"@/inspector/workflow\";\nimport type { Registry } from \"@/registry\";\nimport { flattenActionHandlers } from \"./actions\";\nimport type { BaseActorDefinition } from \"./definition\";\nimport type {\n\tEventSchemaConfig,\n\tInferQueueCompleteMap,\n\tInferSchemaMap,\n\tPrimitiveSchema,\n\tQueueSchemaConfig,\n} from \"./schema\";\nimport type { ActionSampleRates, ActorTracingOptions } from \"./tracing\";\n\nexport const DEFAULT_SLEEP_GRACE_PERIOD = 15_000;\n\nexport const ACTOR_CONTEXT_INTERNAL_SYMBOL = Symbol(\n\t\"rivetkit.actor_context_internal\",\n);\nexport const RAW_STATE_SYMBOL = Symbol(\"rivetkit.raw_state\");\nexport const CONN_DRIVER_SYMBOL = Symbol(\"rivetkit.conn_driver\");\nexport const CONN_STATE_MANAGER_SYMBOL = Symbol(\"rivetkit.conn_state_manager\");\n\nexport interface ActorLogger {\n\tlevel: any;\n\tfatal: any;\n\ttrace: any;\n\tsilent: any;\n\tmsgPrefix: any;\n\tdebug: any;\n\tinfo: any;\n\twarn: any;\n\terror: any;\n\t[key: string]: any;\n}\n\ntype ActorKvValueType = \"text\" | \"arrayBuffer\" | \"binary\";\ntype ActorKvKeyType = \"text\" | \"binary\";\ntype ActorKvValueTypeMap = {\n\ttext: string;\n\tarrayBuffer: ArrayBuffer;\n\tbinary: Uint8Array;\n};\ntype ActorKvKeyTypeMap = {\n\ttext: string;\n\tbinary: Uint8Array;\n};\ntype ActorKvValueOptions<T extends ActorKvValueType = \"text\"> = {\n\ttype?: T;\n};\ntype ActorKvListOptions<\n\tT extends ActorKvValueType = \"text\",\n\tK extends ActorKvKeyType = \"text\",\n> = ActorKvValueOptions<T> & {\n\tkeyType?: K;\n\treverse?: boolean;\n\tlimit?: number;\n};\n\ntype ActorClientFor<T> = T extends Registry<any> ? Client<T> : T;\n\n/**\n * @deprecated Actor KV is deprecated. Use embedded SQLite (`c.db`)\n * or actor state instead.\n */\nexport interface ActorKv {\n\tget<T extends ActorKvValueType = \"text\">(\n\t\tkey: Uint8Array | string,\n\t\toptions?: ActorKvValueOptions<T>,\n\t): Promise<ActorKvValueTypeMap[T] | null>;\n\tput<T extends ActorKvValueType = \"text\">(\n\t\tkey: Uint8Array | string,\n\t\tvalue: Uint8Array | string | ArrayBuffer,\n\t\toptions?: ActorKvValueOptions<T>,\n\t): Promise<void>;\n\tdelete(key: Uint8Array | string): Promise<void>;\n\tbatchPut(entries: [Uint8Array, Uint8Array][]): Promise<void>;\n\tbatchGet(keys: Uint8Array[]): Promise<(Uint8Array | null)[]>;\n\tbatchDelete(keys: Uint8Array[]): Promise<void>;\n\tdeleteRange(start: Uint8Array, end: Uint8Array): Promise<void>;\n\tlistPrefix<\n\t\tT extends ActorKvValueType = \"text\",\n\t\tK extends ActorKvKeyType = \"text\",\n\t>(\n\t\tprefix: Uint8Array | string,\n\t\toptions?: ActorKvListOptions<T, K>,\n\t): Promise<Array<[ActorKvKeyTypeMap[K], ActorKvValueTypeMap[T]]>>;\n\tlistRange<\n\t\tT extends ActorKvValueType = \"text\",\n\t\tK extends ActorKvKeyType = \"text\",\n\t>(\n\t\tstart: Uint8Array | string,\n\t\tend: Uint8Array | string,\n\t\toptions?: ActorKvListOptions<T, K>,\n\t): Promise<Array<[ActorKvKeyTypeMap[K], ActorKvValueTypeMap[T]]>>;\n\tlist<\n\t\tT extends ActorKvValueType = \"text\",\n\t\tK extends ActorKvKeyType = \"text\",\n\t>(\n\t\tprefix: Uint8Array | string,\n\t\toptions?: ActorKvListOptions<T, K>,\n\t): Promise<Array<[ActorKvKeyTypeMap[K], ActorKvValueTypeMap[T]]>>;\n\t[key: string]: any;\n}\n\nexport interface ActorSchedule {\n\tafter(\n\t\tduration: number,\n\t\taction: string,\n\t\t...args: unknown[]\n\t): Promise<string>;\n\tat(timestamp: number, action: string, ...args: unknown[]): Promise<string>;\n\tcancel(id: string): Promise<boolean>;\n\tget(id: string): Promise<ScheduledEventInfo | undefined>;\n\tlist(): Promise<ScheduledEventInfo[]>;\n\t[key: string]: any;\n}\n\nexport interface ActorCronSetOptions {\n\tname: string;\n\texpression: string;\n\taction: string;\n\targs?: unknown[];\n\ttimezone?: string;\n\t/** Defaults to 100. Set to 0 to disable and clear history. Maximum 1,000. */\n\tmaxHistory?: number;\n}\n\nexport interface ActorCronEveryOptions {\n\tname: string;\n\t/** Fixed interval in milliseconds. Minimum 5,000. */\n\tinterval: number;\n\taction: string;\n\targs?: unknown[];\n\t/** Defaults to 100. Set to 0 to disable and clear history. Maximum 1,000. */\n\tmaxHistory?: number;\n}\n\nexport interface ActorCron {\n\tset(options: ActorCronSetOptions): Promise<void>;\n\tevery(options: ActorCronEveryOptions): Promise<void>;\n\tget(name: string): Promise<CronJobInfo | undefined>;\n\tlist(): Promise<CronJobInfo[]>;\n\tdelete(name: string): Promise<boolean>;\n\thistory(name: string, options?: { limit?: number }): Promise<CronFire[]>;\n\t[key: string]: any;\n}\n\nexport interface ScheduledEventInfo {\n\tid: string;\n\taction: string;\n\targs: unknown[];\n\trunAt: number;\n}\n\nexport type CronJobInfo = {\n\tname: string;\n\taction: string;\n\targs: unknown[];\n\tnextRunAt: number;\n\tlastRunAt?: number;\n\tmaxHistory: number;\n} & (\n\t| { kind: \"cron\"; expression: string; timezone: string }\n\t| { kind: \"every\"; interval: number }\n);\n\nexport interface ScheduledFireInfo {\n\tkind: \"at\" | \"cron\" | \"every\";\n\tid: string;\n\tname?: string;\n\tscheduledAt: number;\n\tfiredAt: number;\n}\n\nexport interface CronFire {\n\taction: string;\n\tscheduledAt: number;\n\tfiredAt: number;\n\tfinishedAt?: number;\n\tresult: \"running\" | \"ok\" | \"error\" | \"skipped\";\n\terror?: {\n\t\tgroup: string;\n\t\tcode: string;\n\t\tmessage: string;\n\t\tmetadata?: unknown;\n\t};\n}\n\nexport type QueueMessageOf<Name extends string, Body> = {\n\tid: number | bigint;\n\tname: Name;\n\tbody: Body;\n\tcreatedAt: number;\n\t[key: string]: unknown;\n};\n\nexport type QueueName<TQueues extends QueueSchemaConfig> = keyof TQueues &\n\tstring;\nexport type QueueFilterName<TQueues extends QueueSchemaConfig> =\n\tkeyof TQueues extends never ? string : QueueName<TQueues>;\n\ntype QueueMessageForName<\n\tTQueues extends QueueSchemaConfig,\n\tTName extends QueueFilterName<TQueues>,\n> = keyof TQueues extends never\n\t? QueueMessageOf<string, unknown>\n\t: TName extends QueueName<TQueues>\n\t\t? QueueMessageOf<TName, InferSchemaMap<TQueues>[TName]>\n\t\t: never;\n\ntype QueueCompleteArgs<T> = undefined extends T\n\t? [response?: T]\n\t: [response: T];\n\ntype QueueCompleteArgsForName<\n\tTQueues extends QueueSchemaConfig,\n\tTName extends QueueFilterName<TQueues>,\n> = keyof TQueues extends never\n\t? [response?: unknown]\n\t: TName extends QueueName<TQueues>\n\t\t? [InferQueueCompleteMap<TQueues>[TName]] extends [never]\n\t\t\t? [response?: unknown]\n\t\t\t: QueueCompleteArgs<InferQueueCompleteMap<TQueues>[TName]>\n\t\t: [response?: unknown];\n\ntype QueueCompletableMessageForName<\n\tTQueues extends QueueSchemaConfig,\n\tTName extends QueueFilterName<TQueues>,\n> = QueueMessageForName<TQueues, TName> & {\n\tcomplete(...args: QueueCompleteArgsForName<TQueues, TName>): Promise<void>;\n};\n\ntype QueueCompletionResultForName<\n\tTQueues extends QueueSchemaConfig,\n\tTName extends QueueFilterName<TQueues>,\n> = keyof TQueues extends never\n\t? unknown | undefined\n\t: TName extends QueueName<TQueues>\n\t\t? InferQueueCompleteMap<TQueues>[TName] | undefined\n\t\t: unknown | undefined;\n\nexport type QueueResultMessageForName<\n\tTQueues extends QueueSchemaConfig,\n\tTName extends QueueFilterName<TQueues>,\n\tTCompletable extends boolean,\n> = TCompletable extends true\n\t? QueueCompletableMessageForName<TQueues, TName>\n\t: QueueMessageForName<TQueues, TName>;\n\nexport interface QueueNextOptions<\n\tTName extends string = string,\n\tTCompletable extends boolean = boolean,\n> {\n\tnames?: readonly TName[];\n\ttimeout?: number;\n\tsignal?: AbortSignal;\n\tcompletable?: TCompletable;\n}\n\nexport interface QueueNextBatchOptions<\n\tTName extends string = string,\n\tTCompletable extends boolean = boolean,\n> {\n\tnames?: readonly TName[];\n\tcount?: number;\n\ttimeout?: number;\n\tsignal?: AbortSignal;\n\tcompletable?: TCompletable;\n}\n\nexport interface QueueWaitOptions<TCompletable extends boolean = boolean> {\n\ttimeout?: number;\n\tsignal?: AbortSignal;\n\tcompletable?: TCompletable;\n}\n\nexport interface QueueEnqueueAndWaitOptions {\n\ttimeout?: number;\n\tsignal?: AbortSignal;\n}\n\nexport interface QueueTryNextOptions<\n\tTName extends string = string,\n\tTCompletable extends boolean = boolean,\n> {\n\tnames?: readonly TName[];\n\tcompletable?: TCompletable;\n}\n\nexport interface QueueTryNextBatchOptions<\n\tTName extends string = string,\n\tTCompletable extends boolean = boolean,\n> {\n\tnames?: readonly TName[];\n\tcount?: number;\n\tcompletable?: TCompletable;\n}\n\nexport interface QueueIterOptions<\n\tTName extends string = string,\n\tTCompletable extends boolean = boolean,\n> {\n\tnames?: readonly TName[];\n\tsignal?: AbortSignal;\n\tcompletable?: TCompletable;\n}\n\nexport interface ActorQueue<\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> {\n\tsend<TName extends QueueFilterName<TQueues>>(\n\t\tname: TName,\n\t\tbody: QueueMessageForName<TQueues, TName>[\"body\"],\n\t): Promise<any>;\n\tnext<\n\t\tconst TName extends QueueFilterName<TQueues>,\n\t\tconst TCompletable extends boolean = false,\n\t>(opts?: QueueNextOptions<TName, TCompletable>): Promise<any>;\n\tnextBatch<\n\t\tconst TName extends QueueFilterName<TQueues>,\n\t\tconst TCompletable extends boolean = false,\n\t>(opts?: QueueNextBatchOptions<TName, TCompletable>): Promise<any[]>;\n\twaitForNames<\n\t\tconst TName extends QueueFilterName<TQueues>,\n\t\tconst TCompletable extends boolean = false,\n\t>(\n\t\tnames: readonly TName[],\n\t\topts?: QueueWaitOptions<TCompletable>,\n\t): Promise<any>;\n\t/** @experimental */\n\twaitForAvailable<const TName extends QueueFilterName<TQueues>>(\n\t\tnames?: readonly TName[],\n\t\topts?: Omit<QueueWaitOptions<false>, \"completable\">,\n\t): Promise<void>;\n\t/** @experimental */\n\tcomplete<const TName extends QueueFilterName<TQueues>>(\n\t\tmessage: { id: number | bigint; name: TName },\n\t\t...args: QueueCompleteArgsForName<TQueues, TName>\n\t): Promise<void>;\n\tenqueueAndWait<const TName extends QueueFilterName<TQueues>>(\n\t\tname: TName,\n\t\tbody: QueueMessageForName<TQueues, TName>[\"body\"],\n\t\topts?: QueueEnqueueAndWaitOptions,\n\t): Promise<QueueCompletionResultForName<TQueues, TName>>;\n\ttryNext<\n\t\tconst TName extends QueueFilterName<TQueues>,\n\t\tconst TCompletable extends boolean = false,\n\t>(opts?: QueueTryNextOptions<TName, TCompletable>): Promise<any>;\n\ttryNextBatch<\n\t\tconst TName extends QueueFilterName<TQueues>,\n\t\tconst TCompletable extends boolean = false,\n\t>(opts?: QueueTryNextBatchOptions<TName, TCompletable>): Promise<any[]>;\n\titer<\n\t\tconst TName extends QueueFilterName<TQueues>,\n\t\tconst TCompletable extends boolean = false,\n\t>(opts?: QueueIterOptions<TName, TCompletable>): AsyncIterable<any>;\n\t[key: string]: any;\n}\n\nexport interface Conn<\n\t_TState = unknown,\n\tTConnParams = unknown,\n\tTConnState = unknown,\n\t_TVars = unknown,\n\t_TInput = unknown,\n\t_TDatabase extends AnyDatabaseProvider = AnyDatabaseProvider,\n\t_TEvents extends EventSchemaConfig = Record<never, never>,\n\t_TQueues extends QueueSchemaConfig = Record<never, never>,\n> {\n\tid: string;\n\tparams: TConnParams;\n\tstate: TConnState;\n\tisHibernatable: boolean;\n\tsend(name: string, ...args: any[]): void;\n\tdisconnect(reason?: string): Promise<void>;\n\t[key: string]: any;\n}\n\nexport type AnyConn = Conn<any, any, any, any, any, any, any, any>;\n\nexport interface ActorContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> {\n\t[ACTOR_CONTEXT_INTERNAL_SYMBOL]?: unknown;\n\t/** Returns the raw unwrapped state without the write-through proxy. */\n\t[RAW_STATE_SYMBOL](): TState;\n\tstate: TState;\n\tvars: TVars;\n\t/**\n\t * @deprecated Actor KV is deprecated. Use embedded SQLite (`c.db`)\n\t * or actor state instead.\n\t */\n\treadonly kv: ActorKv;\n\treadonly db: InferDatabaseClient<TDatabase>;\n\treadonly schedule: ActorSchedule;\n\treadonly cron: ActorCron;\n\treadonly queue: ActorQueue<TQueues>;\n\t/** @experimental */\n\treadonly run: ActorRun;\n\treadonly actorId: string;\n\treadonly name: string;\n\treadonly key: string[];\n\treadonly region: string;\n\t/** Provisions the experimental Actor Runtime Socket for this actor generation. */\n\tactorRuntimeSocket(): Promise<{ path: string }>;\n\treadonly conns: Map<\n\t\tstring,\n\t\tConn<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>\n\t>;\n\treadonly log: ActorLogger;\n\treadonly abortSignal: AbortSignal;\n\treadonly aborted: boolean;\n\treadonly request?: Request;\n\t/** @deprecated No-op. Always returns `false`. Use `keepAwake(promise)` or `waitUntil(promise)` instead. Will be removed in 2.2.0. */\n\treadonly preventSleep: boolean;\n\tbroadcast(name: string, ...args: any[]): void;\n\tsaveState(opts?: { immediate?: boolean; maxWait?: number }): Promise<void>;\n\tkeepAwake<T>(promise: Promise<T>): Promise<T>;\n\twaitUntil(promise: Promise<unknown>): void;\n\t/** @deprecated No-op. Use `keepAwake(promise)` to hold the actor awake for a specific promise. Will be removed in 2.2.0. */\n\tsetPreventSleep(preventSleep: boolean): void;\n\tsleep(): void;\n\tdestroy(): void;\n\tclient<T = any>(): ActorClientFor<T>;\n\t[key: string]: any;\n}\n\n/** @experimental How one run of a workflow function ended. */\nexport type WorkflowOutcome =\n\t| \"completed\"\n\t| \"sleeping\"\n\t| \"evicted\"\n\t| \"failed\"\n\t| \"cancelled\";\n\n/** @experimental How one workflow step attempt ended. `retry` will be tried again, `failed` will not. */\nexport type WorkflowStepOutcome = \"ok\" | \"retry\" | \"failed\";\n\n/** @experimental One open run of a workflow function, traced as its own invocation. */\nexport interface WorkflowSpan {\n\t/** Runs `body` attributed to this run. */\n\trun<T>(body: () => Promise<T>): Promise<T>;\n\t/**\n\t * Called by a workflow engine before each attempt at a step. Returns\n\t * nothing when tracing is off.\n\t */\n\tstartStep(name: string, attempt: number): WorkflowStepSpan | undefined;\n\tfinish(outcome: WorkflowOutcome): Promise<void>;\n}\n\n/** @experimental One open attempt at one workflow step. */\nexport interface WorkflowStepSpan {\n\t/** Runs `body` attributed to this attempt. */\n\trun<T>(body: () => Promise<T>): Promise<T>;\n\t/** `error` is what the step callback threw. */\n\tfinish(outcome: WorkflowStepOutcome, error?: unknown): void;\n}\n\n/** @experimental */\nexport interface ActorRun {\n\t/**\n\t * @experimental Sets or clears the durable Unix-millisecond deadline that\n\t * ensures this actor's run handler is active, starting it if inactive.\n\t */\n\tsetWakeAt(timestamp: number | null): Promise<void>;\n\t/** @experimental Called by a workflow engine each time it runs the workflow function. */\n\tstartWorkflowSpan(): Promise<WorkflowSpan>;\n\t/**\n\t * @experimental Runs `body` outside the current workflow run, so a workflow\n\t * engine's own history storage stays out of the trace.\n\t */\n\trunOutsideWorkflowSpan<T>(body: () => T): T;\n}\n\nexport type ActionContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActorContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n> & {\n\tconn: Conn<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>;\n};\n\nexport type BeforeActionResponseContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActionContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type BeforeConnectContext<\n\tTState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActorContext<\n\tTState,\n\tunknown,\n\tunknown,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type ConnectContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActionContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type CreateConnStateContext<\n\tTState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActorContext<\n\tTState,\n\tunknown,\n\tunknown,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type CreateContext<\n\tTState,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActorContext<\n\tTState,\n\tunknown,\n\tunknown,\n\tunknown,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type CreateVarsContext<\n\tTState,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = CreateContext<TState, TInput, TDatabase, TEvents, TQueues>;\n\nexport type DestroyContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActorContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type DisconnectContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActionContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type RequestContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActionContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type RunContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActorContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type SleepContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = RunContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type StateChangeContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = RunContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type WakeContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = RunContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type MigrateContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = WakeContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type WebSocketContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = ActionContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n>;\n\nexport type ActorContextOf<\n\tAD extends BaseActorDefinition<any, any, any, any, any, any, any, any, any>,\n> =\n\tAD extends BaseActorDefinition<\n\t\tinfer TState,\n\t\tinfer TConnParams,\n\t\tinfer TConnState,\n\t\tinfer TVars,\n\t\tinfer TInput,\n\t\tinfer TDatabase,\n\t\tinfer TEvents,\n\t\tinfer TQueues,\n\t\tany\n\t>\n\t\t? ActorContext<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>\n\t\t: never;\n\nexport interface ActorTypes<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n> {\n\tstate?: TState;\n\tconnParams?: TConnParams;\n\tconnState?: TConnState;\n\tvars?: TVars;\n\tinput?: TInput;\n\tdatabase?: TDatabase;\n}\n\n// Helper for validating function types - accepts generic for specific function signatures\nconst zFunction = <\n\tT extends (...args: any[]) => any = (...args: unknown[]) => unknown,\n>() => z.custom<T>((val) => typeof val === \"function\");\n\nconst zActionTree = z\n\t.custom<Record<string, unknown>>((value) => {\n\t\tif (\n\t\t\ttypeof value !== \"object\" ||\n\t\t\tvalue === null ||\n\t\t\tArray.isArray(value)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tconst prototype = Object.getPrototypeOf(value);\n\t\treturn prototype === Object.prototype || prototype === null;\n\t})\n\t.superRefine((actions, ctx) => {\n\t\ttry {\n\t\t\tflattenActionHandlers(actions);\n\t\t} catch (error) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tmessage:\n\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: \"Invalid action definition\",\n\t\t\t});\n\t\t}\n\t});\n\nexport type InspectorUnsubscribe = () => void;\n\n/** @experimental */\nexport interface WorkflowInspectorConfig<THistory = unknown> {\n\tgetHistory: () => THistory | null;\n\tgetState?: () => Promise<WorkflowState | null>;\n\tonHistoryUpdated?: (\n\t\tlistener: (history: THistory) => void,\n\t) => InspectorUnsubscribe;\n\treplayFromStep?: (entryId?: string) => Promise<THistory | null>;\n}\n\n/** @experimental */\nexport interface RunInspectorConfig<THistory = unknown> {\n\tworkflow?: WorkflowInspectorConfig<THistory>;\n}\n\nconst WorkflowInspectorConfigSchema = z.object({\n\tgetHistory: zFunction<WorkflowInspectorConfig<unknown>[\"getHistory\"]>(),\n\tgetState:\n\t\tzFunction<\n\t\t\tNonNullable<WorkflowInspectorConfig<unknown>[\"getState\"]>\n\t\t>().optional(),\n\tonHistoryUpdated:\n\t\tzFunction<\n\t\t\tNonNullable<WorkflowInspectorConfig<unknown>[\"onHistoryUpdated\"]>\n\t\t>().optional(),\n\treplayFromStep:\n\t\tzFunction<\n\t\t\tNonNullable<WorkflowInspectorConfig<unknown>[\"replayFromStep\"]>\n\t\t>().optional(),\n});\n\nconst RunInspectorConfigSchema = z\n\t.object({\n\t\tworkflow: WorkflowInspectorConfigSchema.optional(),\n\t})\n\t.optional();\n\n/**\n * Built-in inspector tabs the dashboard ships. Used to validate\n * `hidden: true` entries and reject custom-tab ids that collide with\n * a built-in.\n */\nexport const BUILTIN_INSPECTOR_TAB_IDS = [\n\t\"workflow\",\n\t\"database\",\n\t\"state\",\n\t\"queue\",\n\t\"schedules\",\n\t\"connections\",\n\t\"console\",\n] as const;\n\nexport const BuiltinInspectorTabIdSchema = z.enum(BUILTIN_INSPECTOR_TAB_IDS);\n\n// Custom tab id grammar — mirrored in Rust at\n// `rivetkit-rust/packages/rivetkit-core/src/inspector/tabs.rs`. Slashes are\n// forbidden because the runtime splits `/inspector/custom-tabs/<id>/<rest>`\n// on the first `/`.\nconst CUSTOM_INSPECTOR_TAB_ID_RE = /^[A-Za-z0-9_-]+$/;\n\nexport const CustomInspectorTabEntrySchema = z\n\t.object({\n\t\tid: z\n\t\t\t.string()\n\t\t\t.regex(\n\t\t\t\tCUSTOM_INSPECTOR_TAB_ID_RE,\n\t\t\t\t\"inspector.tabs[].id must contain only letters, digits, underscore, or dash\",\n\t\t\t),\n\t\tlabel: z.string().min(1),\n\t\tsource: z.string().min(1),\n\t\t/**\n\t\t * Optional icon id. The dashboard maps strings to glyphs (see its\n\t\t * icon registry); unknown ids fall back to a generic icon.\n\t\t */\n\t\ticon: z.string().min(1).optional(),\n\t\thidden: z.literal(false).optional(),\n\t})\n\t.strict();\n\nexport const HideInspectorTabEntrySchema = z\n\t.object({\n\t\tid: BuiltinInspectorTabIdSchema,\n\t\thidden: z.literal(true),\n\t})\n\t.strict();\n\nexport const InspectorTabEntrySchema = z.union([\n\tCustomInspectorTabEntrySchema,\n\tHideInspectorTabEntrySchema,\n]);\n\nexport const ActorInspectorConfigSchema = z\n\t.object({\n\t\ttabs: z.array(InspectorTabEntrySchema).default(() => []),\n\t})\n\t.strict()\n\t.refine(\n\t\t(data) => {\n\t\t\tconst ids = data.tabs.map((t) => t.id);\n\t\t\treturn new Set(ids).size === ids.length;\n\t\t},\n\t\t{ message: \"Duplicate id in inspector.tabs\", path: [\"tabs\"] },\n\t)\n\t.refine(\n\t\t(data) => {\n\t\t\t// A custom entry's id must not collide with a built-in id.\n\t\t\tconst builtinSet = new Set(BUILTIN_INSPECTOR_TAB_IDS);\n\t\t\treturn data.tabs.every(\n\t\t\t\t(t) => t.hidden === true || !builtinSet.has(t.id as any),\n\t\t\t);\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t\"Custom inspector tab id collides with a built-in (use hidden: true to hide a built-in)\",\n\t\t\tpath: [\"tabs\"],\n\t\t},\n\t);\n\nexport type ActorInspectorConfig = z.input<typeof ActorInspectorConfigSchema>;\n\n// Schema for run handler with metadata\nexport const RunConfigSchema = z.object({\n\t/** Display name for the actor in the Inspector UI. */\n\tname: z.string().optional(),\n\t/** Icon for the actor in the Inspector UI. Can be an emoji or FontAwesome icon name. */\n\ticon: z.string().optional(),\n\t/** The run handler function. */\n\trun: zFunction(),\n\t/** Inspector integration for long-running run handlers. */\n\tinspector: RunInspectorConfigSchema.optional(),\n});\ntype RunConfigRuntime = z.infer<typeof RunConfigSchema>;\nexport type RunConfig<\n\tTState = unknown,\n\tTConnParams = unknown,\n\tTConnState = unknown,\n\tTVars = unknown,\n\tTInput = unknown,\n\tTDatabase extends AnyDatabaseProvider = AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> = Omit<RunConfigRuntime, \"run\"> & {\n\trun: (\n\t\tc: RunContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => void | Promise<void>;\n};\n\ntype AnyRunConfig = RunConfig<\n\tany,\n\tany,\n\tany,\n\tany,\n\tany,\n\tAnyDatabaseProvider,\n\tany,\n\tany\n>;\n\nconst RUN_FUNCTION_CONFIG_SYMBOL = Symbol.for(\"rivetkit.run_function_config\");\n\n/** @experimental */\nexport type RunInspectorKind = \"workflow\";\n\n/** @experimental */\nexport interface RunWithInactiveOptions {\n\t/** Restart the run handler before releasing the exclusive gate on success. */\n\trestartOnSuccess?: boolean;\n}\n\n/** @experimental */\nexport interface RunControl {\n\trun: {\n\t\t/**\n\t\t * Executes only while no run handler is active or waiting to start.\n\t\t *\n\t\t * This is a non-blocking acquisition: concurrent replay/control requests\n\t\t * fail instead of waiting behind an active run.\n\t\t */\n\t\twithInactive<T>(\n\t\t\toptions: RunWithInactiveOptions,\n\t\t\tcallback: () => T | Promise<T>,\n\t\t): Promise<T>;\n\t};\n}\n\n/** @experimental */\nexport interface RunInspectorFactoryContext {\n\tactorId: string;\n\tcontrol: RunControl;\n}\n\n/** @experimental */\nexport interface RunInspectorFactoryResult<THistory = unknown> {\n\tinspector: {\n\t\tworkflow: Required<WorkflowInspectorConfig<THistory>> & {\n\t\t\tgetState: () => Promise<WorkflowState | null>;\n\t\t};\n\t};\n\t/** Releases actor-specific listeners and encoded history. */\n\tdispose?: () => void;\n}\n\ninterface RunHandlerDisplayOptions {\n\tname?: string;\n\ticon?: string;\n}\n\n/** @experimental */\nexport type DefineRunHandlerOptions<THistory = unknown> =\n\tRunHandlerDisplayOptions &\n\t\t(\n\t\t\t| {\n\t\t\t\t\tinspectorKind?: never;\n\t\t\t\t\tcreateInspector?: never;\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\t/** Static metadata used to install Inspector callbacks at registry build time. */\n\t\t\t\t\tinspectorKind: RunInspectorKind;\n\t\t\t\t\t/** Creates one Inspector adapter for each live actor. */\n\t\t\t\t\tcreateInspector: (\n\t\t\t\t\t\tcontext: RunInspectorFactoryContext,\n\t\t\t\t\t) => RunInspectorFactoryResult<THistory>;\n\t\t\t }\n\t\t);\n\ninterface RunFunctionConfig {\n\tname?: string;\n\ticon?: string;\n\tinspector?: RunInspectorConfig;\n\tinspectorFactory?: (actor: unknown) => RunInspectorConfig | undefined;\n\t/** Release any per-actor inspector state held for this actor id. */\n\tdisposeInspector?: (actorId: string) => void;\n\tinspectorKind?: RunInspectorKind;\n\tcreateInspector?: (\n\t\tcontext: RunInspectorFactoryContext,\n\t) => RunInspectorFactoryResult;\n}\n\ntype RunFunctionWithConfig = ((...args: any[]) => any) & {\n\t[RUN_FUNCTION_CONFIG_SYMBOL]?: RunFunctionConfig;\n};\n\n/**\n * @experimental Adds supported RivetKit run metadata while preserving the function's exact\n * callable type.\n */\nexport function defineRunHandler<\n\tTRun extends (...args: any[]) => any,\n\tTHistory = unknown,\n>(run: TRun, options: DefineRunHandlerOptions<THistory>): TRun {\n\tif (\n\t\t(options.inspectorKind === undefined) !==\n\t\t(options.createInspector === undefined)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t\"defineRunHandler requires inspectorKind and createInspector together\",\n\t\t);\n\t}\n\n\tObject.defineProperty(run, RUN_FUNCTION_CONFIG_SYMBOL, {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tvalue: {\n\t\t\tname: options.name,\n\t\t\ticon: options.icon,\n\t\t\tinspectorKind: options.inspectorKind,\n\t\t\tcreateInspector:\n\t\t\t\toptions.createInspector as RunFunctionConfig[\"createInspector\"],\n\t\t} satisfies RunFunctionConfig,\n\t});\n\n\treturn run;\n}\n\n/** @internal */\nexport function getRunInspectorKind(\n\trun: ((...args: any[]) => any) | AnyRunConfig | undefined,\n): RunInspectorKind | undefined {\n\tif (!run || typeof run !== \"function\") return undefined;\n\treturn (run as RunFunctionWithConfig)[RUN_FUNCTION_CONFIG_SYMBOL]\n\t\t?.inspectorKind;\n}\n\n/** @internal */\nexport function createRunInspector(\n\trun: ((...args: any[]) => any) | AnyRunConfig | undefined,\n\tcontext: RunInspectorFactoryContext,\n): RunInspectorFactoryResult | undefined {\n\tif (!run || typeof run !== \"function\") return undefined;\n\treturn (run as RunFunctionWithConfig)[\n\t\tRUN_FUNCTION_CONFIG_SYMBOL\n\t]?.createInspector?.(context);\n}\n\n// Run can be either a function or an object with name/icon/run\nconst zRunHandler = z.union([zFunction(), RunConfigSchema]).optional();\n\n/** Extract the run function from either a function or RunConfig object. */\nexport function getRunFunction(\n\trun: ((...args: any[]) => any) | AnyRunConfig | undefined,\n): ((...args: any[]) => any) | undefined {\n\tif (!run) return undefined;\n\tif (typeof run === \"function\") return run;\n\treturn run.run;\n}\n\n/** Extract run metadata (name/icon) from RunConfig if provided. */\nexport function getRunMetadata(\n\trun: ((...args: any[]) => any) | AnyRunConfig | undefined,\n): { name?: string; icon?: string } {\n\tif (!run) return {};\n\tif (typeof run === \"function\") {\n\t\tconst config = (run as RunFunctionWithConfig)[\n\t\t\tRUN_FUNCTION_CONFIG_SYMBOL\n\t\t];\n\t\tif (!config) return {};\n\t\treturn { name: config.name, icon: config.icon };\n\t}\n\treturn { name: run.name, icon: run.icon };\n}\n\n/** Extract run inspector configuration if provided. */\nexport function getRunInspectorConfig(\n\trun: ((...args: any[]) => any) | AnyRunConfig | undefined,\n\tactor?: unknown,\n): RunInspectorConfig | undefined {\n\tif (!run) return undefined;\n\tif (typeof run === \"function\") {\n\t\tconst config = (run as RunFunctionWithConfig)[\n\t\t\tRUN_FUNCTION_CONFIG_SYMBOL\n\t\t];\n\t\treturn config?.inspectorFactory\n\t\t\t? config.inspectorFactory(actor)\n\t\t\t: config?.inspector;\n\t}\n\treturn run.inspector;\n}\n\n/** @internal */\nexport function hasRunInspectorConfig(\n\trun: ((...args: any[]) => any) | AnyRunConfig | undefined,\n): boolean {\n\tif (!run) return false;\n\tif (typeof run !== \"function\") return run.inspector !== undefined;\n\tconst config = (run as RunFunctionWithConfig)[RUN_FUNCTION_CONFIG_SYMBOL];\n\treturn (\n\t\tconfig?.inspectorKind !== undefined ||\n\t\tconfig?.createInspector !== undefined ||\n\t\tconfig?.inspector !== undefined ||\n\t\tconfig?.inspectorFactory !== undefined\n\t);\n}\n\n/** Release per-actor inspector state for a destroyed actor, if the run handler registered a disposer. */\nexport function disposeRunInspector(\n\trun: ((...args: any[]) => any) | AnyRunConfig | undefined,\n\tactorId: string,\n): void {\n\tif (!run || typeof run !== \"function\") {\n\t\treturn;\n\t}\n\tconst config = (run as RunFunctionWithConfig)[RUN_FUNCTION_CONFIG_SYMBOL];\n\tconfig?.disposeInspector?.(actorId);\n}\n\n// This schema is used to validate the input at runtime. The generic types are defined below in `ActorConfig`.\n//\n// We don't use Zod generics with `z.custom` because:\n// (a) there seems to be a weird bug in either Zod, tsup, or TSC that causese external packages to have different types from `z.infer` than from within the same package and\n// (b) it makes the type definitions incredibly difficult to read as opposed to vanilla TypeScript.\nconst GlobalActorOptionsBaseSchema = z\n\t.object({\n\t\t/** Display name for the actor in the Inspector UI. */\n\t\tname: z.string().optional(),\n\t\t/** Icon for the actor in the Inspector UI. Can be an emoji or FontAwesome icon name. */\n\t\ticon: z.string().optional(),\n\t\t/** Enables the experimental Actor Runtime Socket for this actor. */\n\t\tenableActorRuntimeSocket: z.boolean().default(false),\n\t\t/**\n\t\t * Can hibernate WebSockets for onWebSocket.\n\t\t *\n\t\t * WebSockets using actions/events are hibernatable by default.\n\t\t *\n\t\t * @experimental\n\t\t **/\n\t\tcanHibernateWebSocket: z\n\t\t\t.union([z.boolean(), zFunction<(request: Request) => boolean>()])\n\t\t\t.default(false),\n\t})\n\t.strict();\n\nexport const GlobalActorOptionsSchema = GlobalActorOptionsBaseSchema.prefault(\n\t() => ({}),\n);\n\nexport type GlobalActorOptions = z.infer<typeof GlobalActorOptionsSchema>;\nexport type GlobalActorOptionsInput = z.input<typeof GlobalActorOptionsSchema>;\n\nconst InstanceActorOptionsBaseSchema = z\n\t.object({\n\t\tcreateVarsTimeout: z.number().positive().default(5000),\n\t\tcreateConnStateTimeout: z.number().positive().default(5000),\n\t\tonBeforeConnectTimeout: z.number().positive().default(5000),\n\t\tonConnectTimeout: z.number().positive().default(5000),\n\t\tonMigrateTimeout: z.number().positive().default(30_000),\n\t\tsleepGracePeriod: z\n\t\t\t.number()\n\t\t\t.positive()\n\t\t\t.default(DEFAULT_SLEEP_GRACE_PERIOD),\n\t\t/** @deprecated `onDestroyTimeout` is folded into `sleepGracePeriod`, which now bounds the entire graceful shutdown window for both sleep and destroy. Will be removed in 2.2.0. */\n\t\tonDestroyTimeout: z.number().positive().optional(),\n\t\t/** @deprecated `waitUntilTimeout` is folded into `sleepGracePeriod`, which now bounds the entire graceful shutdown window for both sleep and destroy. Will be removed in 2.2.0. */\n\t\twaitUntilTimeout: z.number().positive().optional(),\n\t\tstateSaveInterval: z.number().positive().default(1_000),\n\t\tactionTimeout: z.number().positive().default(60_000),\n\t\tconnectionLivenessTimeout: z.number().positive().default(2500),\n\t\tconnectionLivenessInterval: z.number().positive().default(5000),\n\t\t/** @deprecated Use `c.keepAwake(promise)` to scope keep-awake to a specific operation, or keep `noSleep` for actors that must stay awake indefinitely. Will be removed in 2.2.0. */\n\t\tnoSleep: z.boolean().default(false),\n\t\tsleepTimeout: z.number().positive().default(30_000),\n\t\tmaxQueueSize: z.number().positive().default(1000),\n\t\t/** Maximum pending one-shot and recurring schedules. */\n\t\tmaxSchedules: z.number().int().nonnegative().default(1000),\n\t\tmaxQueueMessageSize: z\n\t\t\t.number()\n\t\t\t.positive()\n\t\t\t.default(64 * 1024),\n\t\t/** @deprecated Internal storage moved to SQLite and no longer uses KV preloading, so this option is ignored. Will be removed in 2.2.0. */\n\t\tpreloadMaxWorkflowBytes: z.number().nonnegative().optional(),\n\t\t/** @deprecated Internal storage moved to SQLite and no longer uses KV preloading, so this option is ignored. Will be removed in 2.2.0. */\n\t\tpreloadMaxConnectionsBytes: z.number().nonnegative().optional(),\n\t})\n\t.strict();\n\nexport const InstanceActorOptionsSchema =\n\tInstanceActorOptionsBaseSchema.prefault(() => ({}));\n\nexport type InstanceActorOptions = z.infer<typeof InstanceActorOptionsSchema>;\nexport type InstanceActorOptionsInput = z.input<\n\ttypeof InstanceActorOptionsSchema\n>;\n\nexport const ActorOptionsSchema = GlobalActorOptionsBaseSchema.extend(\n\tInstanceActorOptionsBaseSchema.shape,\n)\n\t.strict()\n\t.prefault(() => ({}));\n\nexport type ActorOptions = z.infer<typeof ActorOptionsSchema>;\nexport type ActorOptionsInput = z.input<typeof ActorOptionsSchema>;\n\nconst zSampleRate = z.number().min(0).max(1);\n\nconst zActionSampleRates: z.ZodType<ActionSampleRates> = z.lazy(() =>\n\tz.record(z.string(), z.union([zSampleRate, zActionSampleRates])),\n);\n\nexport const ActorConfigSchema = z\n\t.object({\n\t\tonCreate: zFunction().optional(),\n\t\tonDestroy: zFunction().optional(),\n\t\tonMigrate: zFunction().optional(),\n\t\tonWake: zFunction().optional(),\n\t\tonSleep: zFunction().optional(),\n\t\trun: zRunHandler,\n\t\tonStateChange: zFunction().optional(),\n\t\tonBeforeConnect: zFunction().optional(),\n\t\tonConnect: zFunction().optional(),\n\t\tonDisconnect: zFunction().optional(),\n\t\tonBeforeActionResponse: zFunction().optional(),\n\t\tonRequest: zFunction().optional(),\n\t\tonWebSocket: zFunction().optional(),\n\t\tactions: zActionTree.default(() => ({})),\n\t\tactionInputSchemas: z.record(z.string(), z.any()).optional(),\n\t\ttracing: z\n\t\t\t.object({\n\t\t\t\tsampler: zSampleRate.optional(),\n\t\t\t\tactions: zActionSampleRates.optional(),\n\t\t\t})\n\t\t\t.strict()\n\t\t\t.optional(),\n\t\tconnParamsSchema: z.any().optional(),\n\t\tevents: z.record(z.string(), z.any()).optional(),\n\t\tqueues: z.record(z.string(), z.any()).optional(),\n\t\tstate: z.any().optional(),\n\t\tcreateState: zFunction().optional(),\n\t\tconnState: z.any().optional(),\n\t\tcreateConnState: zFunction().optional(),\n\t\tvars: z.any().optional(),\n\t\tdb: z.any().optional(),\n\t\tcreateVars: zFunction().optional(),\n\t\toptions: ActorOptionsSchema,\n\t\tinspector: ActorInspectorConfigSchema.optional(),\n\t})\n\t.strict()\n\t.refine(\n\t\t(data) => !(data.state !== undefined && data.createState !== undefined),\n\t\t{\n\t\t\tmessage: \"Cannot define both 'state' and 'createState'\",\n\t\t\tpath: [\"state\"],\n\t\t},\n\t)\n\t.refine(\n\t\t(data) =>\n\t\t\t!(\n\t\t\t\tdata.connState !== undefined &&\n\t\t\t\tdata.createConnState !== undefined\n\t\t\t),\n\t\t{\n\t\t\tmessage: \"Cannot define both 'connState' and 'createConnState'\",\n\t\t\tpath: [\"connState\"],\n\t\t},\n\t)\n\t.refine(\n\t\t(data) => !(data.vars !== undefined && data.createVars !== undefined),\n\t\t{\n\t\t\tmessage: \"Cannot define both 'vars' and 'createVars'\",\n\t\t\tpath: [\"vars\"],\n\t\t},\n\t);\n\n// Creates state config\n//\n// This must have only one or the other or else TState will not be able to be inferred\n//\n// Data returned from this handler will be available on `c.state`.\ntype CreateState<\n\tTState,\n\t_TConnParams,\n\t_TConnState,\n\t_TVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n> =\n\t| { state: TState }\n\t| {\n\t\t\tcreateState: (\n\t\t\t\tc: CreateContext<TState, TInput, TDatabase, TEvents, TQueues>,\n\t\t\t\tinput: TInput,\n\t\t\t) => TState | Promise<TState>;\n\t }\n\t| Record<never, never>;\n\n// Creates connection state config\n//\n// This must have only one or the other or else TState will not be able to be inferred\n//\n// Data returned from this handler will be available on `c.conn.state`.\n// The pending connection is not visible in `c.conns` until this succeeds.\ntype CreateConnState<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n> =\n\t| { connState: TConnState }\n\t| {\n\t\t\tcreateConnState: (\n\t\t\t\tc: CreateConnStateContext<\n\t\t\t\t\tTState,\n\t\t\t\t\tTVars,\n\t\t\t\t\tTInput,\n\t\t\t\t\tTDatabase,\n\t\t\t\t\tTEvents,\n\t\t\t\t\tTQueues\n\t\t\t\t>,\n\t\t\t\tparams: TConnParams,\n\t\t\t) => TConnState | Promise<TConnState>;\n\t }\n\t| Record<never, never>;\n\n// Creates vars config\n//\n// This must have only one or the other or else TState will not be able to be inferred\n/**\n * @experimental\n */\ntype CreateVars<\n\tTState,\n\t_TConnParams,\n\t_TConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n> =\n\t| {\n\t\t\t/**\n\t\t\t * @experimental\n\t\t\t */\n\t\t\tvars: TVars;\n\t }\n\t| {\n\t\t\t/**\n\t\t\t * @experimental\n\t\t\t */\n\t\t\tcreateVars: (\n\t\t\t\tc: CreateVarsContext<\n\t\t\t\t\tTState,\n\t\t\t\t\tTInput,\n\t\t\t\t\tTDatabase,\n\t\t\t\t\tTEvents,\n\t\t\t\t\tTQueues\n\t\t\t\t>,\n\t\t\t\tdriverCtx: any,\n\t\t\t) => TVars | Promise<TVars>;\n\t }\n\t| Record<never, never>;\n\nexport interface Actions<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> {\n\t[Action: string]:\n\t\t| ((\n\t\t\t\tc: ActionContext<\n\t\t\t\t\tTState,\n\t\t\t\t\tTConnParams,\n\t\t\t\t\tTConnState,\n\t\t\t\t\tTVars,\n\t\t\t\t\tTInput,\n\t\t\t\t\tTDatabase,\n\t\t\t\t\tTEvents,\n\t\t\t\t\tTQueues\n\t\t\t\t>,\n\t\t\t\t...args: any[]\n\t\t ) => any)\n\t\t| Actions<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t >;\n}\n\nexport interface ActionInputSchemas {\n\t[Action: string]: PrimitiveSchema | ActionInputSchemas;\n}\n\n//export type ActorConfig<TState, TConnParams, TConnState, TVars, TInput, TAuthData> = BaseActorConfig<TState, TConnParams, TConnState, TVars, TInput, TAuthData> &\n//\tActorConfigLifecycle<TState, TConnParams, TConnState, TVars, TInput, TAuthData> &\n//\tCreateState<TState, TConnParams, TConnState, TVars, TInput, TAuthData> &\n//\tCreateConnState<TState, TConnParams, TConnState, TVars, TInput, TAuthData>;\n\n/**\n * @experimental\n */\nexport type AuthIntent = \"get\" | \"create\" | \"connect\" | \"action\" | \"message\";\n\ninterface BaseActorConfig<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n\tTActions extends Actions<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>,\n> {\n\t/**\n\t * Called when the actor is first initialized.\n\t *\n\t * Use this hook to initialize your actor's state.\n\t * This is called before any other lifecycle hooks.\n\t */\n\tonCreate?: (\n\t\tc: CreateContext<TState, TInput, TDatabase, TEvents, TQueues>,\n\t\tinput: TInput,\n\t) => void | Promise<void>;\n\n\t/**\n\t * Called when the actor is destroyed.\n\t */\n\tonDestroy?: (\n\t\tc: DestroyContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => void | Promise<void>;\n\n\t/**\n\t * Called on every actor start after persisted state loads and before onWake.\n\t *\n\t * Use this hook for repeatable schema migrations or other startup work that\n\t * must run on both first boot and wake.\n\t */\n\tonMigrate?: (\n\t\tc: MigrateContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tisNew: boolean,\n\t) => void | Promise<void>;\n\n\t/**\n\t * Called when the actor is started and ready to receive connections and action.\n\t *\n\t * Use this hook to initialize resources needed for the actor's operation\n\t * (timers, external connections, etc.)\n\t *\n\t * @returns Void or a Promise that resolves when startup is complete\n\t */\n\tonWake?: (\n\t\tc: WakeContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => void | Promise<void>;\n\n\t/**\n\t * Called when the actor is stopping or sleeping.\n\t *\n\t * Use this hook to clean up resources, save state, or perform\n\t * any shutdown operations before the actor sleeps or stops.\n\t *\n\t * Not supported on all platforms.\n\t *\n\t * @returns Void or a Promise that resolves when shutdown is complete\n\t */\n\tonSleep?: (\n\t\tc: SleepContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => void | Promise<void>;\n\n\t/**\n\t * Called after the actor starts up. Does not block actor startup.\n\t *\n\t * Use this for background tasks like:\n\t * - Reading from queues in a loop\n\t * - Tick loops for periodic work\n\t * - Custom workflow logic\n\t *\n\t * **Important:** The actor may go to sleep at any time during the `run`\n\t * handler. Wrap work that must keep the actor awake with\n\t * `c.keepAwake(promise)` to block idle sleep and shutdown finalize until\n\t * the promise settles, or use `c.waitUntil(promise)` to let the graceful\n\t * shutdown window (`sleepGracePeriod`) cover deferred work.\n\t *\n\t * The handler receives an abort signal via `c.abortSignal` and a\n\t * `c.aborted` alias. Use these to gracefully exit when shutdown starts.\n\t *\n\t * If this handler exits, the actor will follow the normal idle sleep timeout\n\t * once it becomes idle.\n\t * If this handler throws, the actor logs the error and then sleeps once it\n\t * becomes idle.\n\t * Call `c.destroy()` explicitly if a run handler should destroy the actor.\n\t *\n\t * Can be either a function or a RunConfig object with optional name/icon metadata.\n\t *\n\t * @returns Void or a Promise.\n\t */\n\trun?:\n\t\t| ((\n\t\t\t\tc: RunContext<\n\t\t\t\t\tTState,\n\t\t\t\t\tTConnParams,\n\t\t\t\t\tTConnState,\n\t\t\t\t\tTVars,\n\t\t\t\t\tTInput,\n\t\t\t\t\tTDatabase,\n\t\t\t\t\tTEvents,\n\t\t\t\t\tTQueues\n\t\t\t\t>,\n\t\t ) => void | Promise<void>)\n\t\t| RunConfig<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t >;\n\n\t/**\n\t * Called when the actor's state changes.\n\t *\n\t * Use this hook to react to state changes, such as updating\n\t * external systems or triggering events.\n\t *\n\t * State changes made within this hook will NOT trigger\n\t * another onStateChange call, preventing infinite recursion.\n\t *\n\t * @param newState The updated state\n\t */\n\tonStateChange?: (\n\t\tc: StateChangeContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tnewState: TState,\n\t) => void;\n\n\t/**\n\t * Called before a client connects to the actor.\n\t *\n\t * Use this hook to determine if a connection should be accepted\n\t * and to validate client-provided parameters. The pending connection\n\t * is not visible in `c.conns` while this hook runs.\n\t *\n\t * @param opts Connection parameters including client-provided data\n\t * @returns Void or a Promise.\n\t * @throws Throw an error to reject the connection\n\t */\n\tonBeforeConnect?: (\n\t\tc: BeforeConnectContext<\n\t\t\tTState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tparams: TConnParams,\n\t) => void | Promise<void>;\n\n\t/**\n\t * Called when a client successfully connects to the actor.\n\t *\n\t * Use this hook to perform actions when a connection is established,\n\t * such as sending initial data or updating the actor's state. The\n\t * connection is visible in `c.conns` before this hook runs.\n\t *\n\t * @param conn The connection object\n\t * @returns Void or a Promise that resolves when connection handling is complete\n\t */\n\tonConnect?: (\n\t\tc: ConnectContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tconn: Conn<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => void | Promise<void>;\n\n\t/**\n\t * Called when a client disconnects from the actor.\n\t *\n\t * Use this hook to clean up resources associated with the connection\n\t * or update the actor's state.\n\t *\n\t * @param conn The connection that is being closed\n\t * @returns Void or a Promise that resolves when disconnect handling is complete\n\t */\n\tonDisconnect?: (\n\t\tc: DisconnectContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tconn: Conn<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => void | Promise<void>;\n\n\t/**\n\t * Called before sending an action response to the client.\n\t *\n\t * Use this hook to modify or transform the output of an action before it's sent\n\t * to the client. This is useful for formatting responses, adding metadata,\n\t * or applying transformations to the output.\n\t *\n\t * @param name The name of the action that was called\n\t * @param args The arguments that were passed to the action\n\t * @param output The output that will be sent to the client\n\t * @returns The modified output to send to the client\n\t */\n\tonBeforeActionResponse?: <Out>(\n\t\tc: BeforeActionResponseContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tname: string,\n\t\targs: unknown[],\n\t\toutput: Out,\n\t) => Out | Promise<Out>;\n\n\t/**\n\t * Called when a raw HTTP request is made to the actor.\n\t *\n\t * This handler receives raw HTTP requests made to `/actors/{actorName}/http/*` endpoints.\n\t * Use this hook to handle custom HTTP patterns, REST APIs, or other HTTP-based protocols.\n\t *\n\t * @param c The request context with access to the connection\n\t * @param request The raw HTTP request object\n\t * @param opts Additional options\n\t * @returns A Response object to send back, or void to continue with default routing\n\t */\n\tonRequest?: (\n\t\tc: RequestContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\trequest: Request,\n\t) => Response | Promise<Response>;\n\n\t/**\n\t * Called when a raw WebSocket connection is established to the actor.\n\t *\n\t * This handler receives WebSocket connections made to `/actors/{actorName}/websocket/*` endpoints.\n\t * Use this hook to handle custom WebSocket protocols, binary streams, or other WebSocket-based communication.\n\t *\n\t * @param c The WebSocket context with access to the connection\n\t * @param websocket The actor-facing raw WebSocket connection\n\t * @param opts Additional options including the original HTTP upgrade request\n\t */\n\tonWebSocket?: (\n\t\tc: WebSocketContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\twebsocket: UniversalWebSocket,\n\t) => void | Promise<void>;\n\n\tactions?: TActions;\n\n\t/**\n\t * Optional schemas for validating action argument tuples in native runtimes.\n\t * May mirror nested action groups or use dot-separated low-level action names.\n\t */\n\tactionInputSchemas?: ActionInputSchemas;\n\n\t/**\n\t * How much of this actor's work is recorded in traces. Defaults to the\n\t * process sampler from `OTEL_TRACES_SAMPLER`.\n\t */\n\ttracing?: ActorTracingOptions<TActions>;\n\n\t/**\n\t * Optional schema for validating connection params in native runtimes.\n\t */\n\tconnParamsSchema?: PrimitiveSchema;\n\n\t/**\n\t * Schema map for events broadcasted by this actor.\n\t */\n\tevents?: TEvents;\n\n\t/**\n\t * Schema map for queue payloads sent by this actor.\n\t */\n\tqueues?: TQueues;\n}\n\ntype ActorDatabaseConfig<TDatabase extends AnyDatabaseProvider> =\n\t| {\n\t\t\t/**\n\t\t\t * @experimental\n\t\t\t */\n\t\t\tdb: TDatabase;\n\t }\n\t| Record<never, never>;\n\n// 1. Infer schema\n// 2. Omit keys that we'll manually define (because of generics)\n// 3. Define our own types that have generic constraints\nexport type ActorConfig<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n\tTActions extends Actions<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> = Actions<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>,\n> = Omit<\n\tz.infer<typeof ActorConfigSchema>,\n\t| \"actions\"\n\t| \"events\"\n\t| \"queues\"\n\t| \"onCreate\"\n\t| \"onDestroy\"\n\t| \"onMigrate\"\n\t| \"onWake\"\n\t| \"onSleep\"\n\t| \"run\"\n\t| \"onStateChange\"\n\t| \"onBeforeConnect\"\n\t| \"onConnect\"\n\t| \"onDisconnect\"\n\t| \"onBeforeActionResponse\"\n\t| \"onRequest\"\n\t| \"onWebSocket\"\n\t| \"state\"\n\t| \"createState\"\n\t| \"connState\"\n\t| \"createConnState\"\n\t| \"vars\"\n\t| \"createVars\"\n\t| \"db\"\n> &\n\tBaseActorConfig<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues,\n\t\tTActions\n\t> &\n\tCreateState<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> &\n\tCreateConnState<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> &\n\tCreateVars<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> &\n\tActorDatabaseConfig<TDatabase>;\n\n// See description on `ActorConfig`\nexport type ActorConfigInput<\n\tTState = undefined,\n\tTConnParams = undefined,\n\tTConnState = undefined,\n\tTVars = undefined,\n\tTInput = undefined,\n\tTDatabase extends AnyDatabaseProvider = undefined,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n\tTActions extends Actions<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> = Record<never, never>,\n> = {\n\ttypes?: ActorTypes<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase\n\t>;\n} & Omit<\n\tz.input<typeof ActorConfigSchema>,\n\t| \"actions\"\n\t| \"tracing\"\n\t| \"events\"\n\t| \"queues\"\n\t| \"onCreate\"\n\t| \"onDestroy\"\n\t| \"onMigrate\"\n\t| \"onWake\"\n\t| \"onSleep\"\n\t| \"run\"\n\t| \"onStateChange\"\n\t| \"onBeforeConnect\"\n\t| \"onConnect\"\n\t| \"onDisconnect\"\n\t| \"onBeforeActionResponse\"\n\t| \"onRequest\"\n\t| \"onWebSocket\"\n\t| \"state\"\n\t| \"createState\"\n\t| \"connState\"\n\t| \"createConnState\"\n\t| \"vars\"\n\t| \"createVars\"\n\t| \"db\"\n> &\n\tBaseActorConfig<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues,\n\t\tTActions\n\t> &\n\tCreateState<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> &\n\tCreateConnState<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> &\n\tCreateVars<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> &\n\tActorDatabaseConfig<TDatabase>;\n\n// For testing type definitions:\nexport function test<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n\tTActions extends Actions<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>,\n>(\n\tinput: ActorConfigInput<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues,\n\t\tTActions\n\t>,\n): ActorConfig<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase,\n\tTEvents,\n\tTQueues\n> {\n\tconst config = ActorConfigSchema.parse(input) as ActorConfig<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>;\n\treturn config;\n}\n\n// MARK: Documentation Schema\n// This schema is JSON-serializable for documentation generation.\n// It excludes function types and focuses on the configurable options.\n\nexport const DocActorOptionsSchema = z\n\t.object({\n\t\tname: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"Display name for the actor in the Inspector UI.\"),\n\t\ticon: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Icon for the actor in the Inspector UI. Can be an emoji (e.g., '🚀') or FontAwesome icon name (e.g., 'rocket').\",\n\t\t\t),\n\t\tenableActorRuntimeSocket: z\n\t\t\t.boolean()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Enables the experimental Actor Runtime Socket for this actor. Default: false\",\n\t\t\t),\n\t\tcreateVarsTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\"Timeout in ms for createVars handler. Default: 5000\"),\n\t\tcreateConnStateTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Timeout in ms for createConnState handler. Default: 5000\",\n\t\t\t),\n\t\tonMigrateTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\"Timeout in ms for onMigrate handler. Default: 30000\"),\n\t\tonBeforeConnectTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Timeout in ms for onBeforeConnect handler. Default: 5000\",\n\t\t\t),\n\t\tonConnectTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\"Timeout in ms for onConnect handler. Default: 5000\"),\n\t\tsleepGracePeriod: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t`Max time in ms for the graceful shutdown window. Covers lifecycle hooks (onSleep, onDestroy), the run handler wait, async raw WebSocket handlers, disconnect callbacks, and final state serialization. Default: ${DEFAULT_SLEEP_GRACE_PERIOD}.`,\n\t\t\t),\n\t\tonDestroyTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Deprecated. Folded into sleepGracePeriod, which now bounds the entire graceful shutdown window for both sleep and destroy. Will be removed in 2.2.0.\",\n\t\t\t),\n\t\twaitUntilTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Deprecated. Folded into sleepGracePeriod, which now bounds the entire graceful shutdown window for both sleep and destroy. Will be removed in 2.2.0.\",\n\t\t\t),\n\t\tstateSaveInterval: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Interval in ms between automatic state saves. Default: 1000\",\n\t\t\t),\n\t\tactionTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\"Timeout in ms for action handlers. Default: 60000\"),\n\t\tconnectionLivenessTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Timeout in ms for connection liveness checks. Default: 2500\",\n\t\t\t),\n\t\tconnectionLivenessInterval: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Interval in ms between connection liveness checks. Default: 5000\",\n\t\t\t),\n\t\tnoSleep: z\n\t\t\t.boolean()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Deprecated. If true, the actor will never sleep. Use c.keepAwake(promise) to scope keep-awake to a specific operation instead. Default: false\",\n\t\t\t),\n\t\tsleepTimeout: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Time in ms of inactivity before the actor sleeps. Default: 30000\",\n\t\t\t),\n\t\tmaxQueueSize: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Maximum number of queue messages before rejecting new messages. Default: 1000\",\n\t\t\t),\n\t\tmaxSchedules: z\n\t\t\t.number()\n\t\t\t.int()\n\t\t\t.nonnegative()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Maximum pending one-shot and recurring schedules before rejecting new schedules. Default: 1000\",\n\t\t\t),\n\t\tmaxQueueMessageSize: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Maximum size of each queue message in bytes. Default: 65536\",\n\t\t\t),\n\t\tcanHibernateWebSocket: z\n\t\t\t.boolean()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Whether WebSockets using onWebSocket can be hibernated. WebSockets using actions/events are hibernatable by default. Default: false\",\n\t\t\t),\n\t})\n\t.describe(\"Actor options for timeouts and behavior configuration.\");\n\nexport const DocActorConfigSchema = z\n\t.object({\n\t\tstate: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Initial state value for the actor. Cannot be used with createState.\",\n\t\t\t),\n\t\tcreateState: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Function to create initial state. Receives context and input. Cannot be used with state.\",\n\t\t\t),\n\t\tconnState: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Initial connection state value. Cannot be used with createConnState.\",\n\t\t\t),\n\t\tcreateConnState: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Function to create connection state. Receives context and connection params. The pending connection is not visible in c.conns until this succeeds. Cannot be used with connState.\",\n\t\t\t),\n\t\tvars: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Initial ephemeral variables value. Cannot be used with createVars.\",\n\t\t\t),\n\t\tcreateVars: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Function to create ephemeral variables. Receives context and driver context. Cannot be used with vars.\",\n\t\t\t),\n\t\tdb: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\"Database provider instance for the actor.\"),\n\t\tonCreate: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called when the actor is first initialized. Use to initialize state.\",\n\t\t\t),\n\t\tonDestroy: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\"Called when the actor is destroyed.\"),\n\t\tonMigrate: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called on every actor start after persisted state loads and before onWake. Use for repeatable schema migrations.\",\n\t\t\t),\n\t\tonWake: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called when the actor wakes up and is ready to receive connections and actions.\",\n\t\t\t),\n\t\tonSleep: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called when the actor is stopping or sleeping. Use to clean up resources.\",\n\t\t\t),\n\t\trun: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called after actor starts. Does not block startup. Use for background tasks like queue processing or tick loops. If it exits, the actor follows the normal idle sleep timeout once idle. If it throws, the actor logs the error and then follows the normal idle sleep timeout once idle.\",\n\t\t\t),\n\t\tonStateChange: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called when the actor's state changes. State changes within this hook won't trigger recursion.\",\n\t\t\t),\n\t\tonBeforeConnect: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called before a client connects. Throw an error to reject the connection. The pending connection is not visible in c.conns while this runs.\",\n\t\t\t),\n\t\tonConnect: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called when a client successfully connects. The connection is visible in c.conns before this runs.\",\n\t\t\t),\n\t\tonDisconnect: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\"Called when a client disconnects.\"),\n\t\tonBeforeActionResponse: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called before sending an action response. Use to transform output.\",\n\t\t\t),\n\t\tonRequest: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called for raw HTTP requests to /actors/{name}/http/* endpoints.\",\n\t\t\t),\n\t\tonWebSocket: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Called for raw WebSocket connections to /actors/{name}/websocket/* endpoints.\",\n\t\t\t),\n\t\tactions: z\n\t\t\t.record(z.string(), z.unknown())\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Tree of action names or nested groups to handler functions. Nested paths use dot-separated low-level action names. Defaults to an empty object.\",\n\t\t\t),\n\t\tactionInputSchemas: z\n\t\t\t.record(z.string(), z.unknown())\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Optional schemas for validating action argument tuples in native runtimes. May mirror nested action groups or use dot-separated low-level action names.\",\n\t\t\t),\n\t\ttracing: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Trace sampling for this actor: `sampler` is the share of its invocations that are recorded, from 0 to 1, with optional per-action rates under `actions`. A rate lowers what is recorded and never raises it. Defaults to the process sampler from OTEL_TRACES_SAMPLER.\",\n\t\t\t),\n\t\tconnParamsSchema: z\n\t\t\t.unknown()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Optional schema for validating connection params in native runtimes.\",\n\t\t\t),\n\t\tevents: z\n\t\t\t.record(z.string(), z.unknown())\n\t\t\t.optional()\n\t\t\t.describe(\"Map of event names to schemas.\"),\n\t\tqueues: z\n\t\t\t.record(z.string(), z.unknown())\n\t\t\t.optional()\n\t\t\t.describe(\"Map of queue names to schemas.\"),\n\t\toptions: DocActorOptionsSchema.optional(),\n\t})\n\t.describe(\"Actor configuration passed to the actor() function.\");\n","import type { PrimitiveSchema } from \"./schema\";\nimport type { ActionSampleRates } from \"./tracing\";\n\nexport type RuntimeActionHandler = (...args: any[]) => any;\n\nexport function flattenActionHandlers(\n\tactions: unknown,\n): Record<string, RuntimeActionHandler> {\n\tconst flattened = Object.create(null) as Record<\n\t\tstring,\n\t\tRuntimeActionHandler\n\t>;\n\tfor (const { name, handler } of collectActionEntries(actions)) {\n\t\tflattened[name] = handler;\n\t}\n\treturn flattened;\n}\n\nexport function flattenActionInputSchemas(\n\tactions: unknown,\n\tschemas: unknown,\n): Record<string, PrimitiveSchema> | undefined {\n\tif (schemas === undefined) return undefined;\n\tif (!isRecord(schemas)) {\n\t\tthrow new TypeError(\"actionInputSchemas must be an object\");\n\t}\n\n\tconst flattened = Object.create(null) as Record<string, PrimitiveSchema>;\n\tfor (const { name, path } of collectActionEntries(actions)) {\n\t\tconst nestedSchema = lookupNestedSchema(schemas, path);\n\t\tconst flatSchema = schemas[name];\n\t\tif (\n\t\t\tnestedSchema !== undefined &&\n\t\t\tflatSchema !== undefined &&\n\t\t\tnestedSchema !== flatSchema\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Action input schema \\`${name}\\` is defined by both a nested path and a dotted key`,\n\t\t\t);\n\t\t}\n\n\t\tconst schema = nestedSchema ?? flatSchema;\n\t\tif (schema !== undefined) {\n\t\t\tflattened[name] = schema as PrimitiveSchema;\n\t\t}\n\t}\n\treturn flattened;\n}\n\n/**\n * Flatten per-action sample rates into dot-separated action names.\n *\n * @throws TypeError when a rate names something that is not an action.\n */\nexport function flattenActionTraceSamplers(\n\tactions: unknown,\n\trates: ActionSampleRates = {},\n): Record<string, number> {\n\tconst handlers = flattenActionHandlers(actions);\n\tconst flattened = Object.fromEntries(flattenSampleRates(rates, []));\n\tfor (const name of Object.keys(flattened)) {\n\t\tif (!Object.hasOwn(handlers, name)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`tracing.actions.${name} does not name an action`,\n\t\t\t);\n\t\t}\n\t}\n\treturn flattened;\n}\n\nfunction flattenSampleRates(\n\trates: ActionSampleRates,\n\tpath: readonly string[],\n): Array<[name: string, rate: number]> {\n\treturn Object.entries(rates).flatMap(\n\t\t([segment, rate]): Array<[name: string, rate: number]> => {\n\t\t\tconst childPath = [...path, segment];\n\t\t\treturn typeof rate === \"number\"\n\t\t\t\t? [[childPath.join(\".\"), rate]]\n\t\t\t\t: flattenSampleRates(rate, childPath);\n\t\t},\n\t);\n}\n\ninterface ActionEntry {\n\tname: string;\n\tpath: string[];\n\thandler: RuntimeActionHandler;\n}\n\nfunction collectActionEntries(actions: unknown): ActionEntry[] {\n\tconst entries: ActionEntry[] = [];\n\tconst names = new Set<string>();\n\tvisitActionGroup(actions ?? {}, [], entries, names);\n\treturn entries;\n}\n\nfunction visitActionGroup(\n\tvalue: unknown,\n\tpath: string[],\n\tentries: ActionEntry[],\n\tnames: Set<string>,\n) {\n\tif (!isRecord(value)) {\n\t\tthrow new TypeError(\n\t\t\t`${formatActionPath(path)} must be an action handler or group`,\n\t\t);\n\t}\n\n\tfor (const [segment, child] of Object.entries(value)) {\n\t\tconst childPath = [...path, segment];\n\t\tif (typeof child === \"function\") {\n\t\t\tconst name = childPath.join(\".\");\n\t\t\tif (names.has(name)) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Multiple action definitions flatten to \\`${name}\\``,\n\t\t\t\t);\n\t\t\t}\n\t\t\tnames.add(name);\n\t\t\tentries.push({\n\t\t\t\tname,\n\t\t\t\tpath: childPath,\n\t\t\t\thandler: child as RuntimeActionHandler,\n\t\t\t});\n\t\t} else {\n\t\t\tvisitActionGroup(child, childPath, entries, names);\n\t\t}\n\t}\n}\n\nfunction lookupNestedSchema(\n\tschemas: Record<string, unknown>,\n\tpath: string[],\n): unknown {\n\tlet value: unknown = schemas;\n\tfor (const segment of path) {\n\t\tif (!isRecord(value) || !Object.hasOwn(value, segment)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tvalue = value[segment];\n\t}\n\treturn value;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === Object.prototype || prototype === null;\n}\n\nfunction formatActionPath(path: string[]): string {\n\treturn path.length === 0 ? \"actions\" : `Action \\`${path.join(\".\")}\\``;\n}\n"],"mappings":"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","names":[]}
@@ -8,7 +8,7 @@
8
8
  var _chunkKVFIONKQcjs = require('./chunk-KVFIONKQ.cjs');
9
9
 
10
10
 
11
- var _chunkRJC5O2SDcjs = require('./chunk-RJC5O2SD.cjs');
11
+ var _chunkKWGN2ZBJcjs = require('./chunk-KWGN2ZBJ.cjs');
12
12
 
13
13
  // src/common/database/mod.ts
14
14
  var nativeStateTransactionOpeners = /* @__PURE__ */ new WeakMap();
@@ -59,7 +59,7 @@ function db({
59
59
  ensureOpen();
60
60
  if (!transactionScoped && warnOnManualTransactions && !manualTransactionWarned && !hasMultipleStatements(query) && _chunkKVFIONKQcjs.isManualTransactionControl.call(void 0, query)) {
61
61
  manualTransactionWarned = true;
62
- _chunkRJC5O2SDcjs.getLogger.call(void 0, "database").warn(
62
+ _chunkKWGN2ZBJcjs.getLogger.call(void 0, "database").warn(
63
63
  { actorId: ctx.actorId },
64
64
  "Manual cross-call SQLite transactions can interleave with other actor work. Use db.transaction() for coordinated transactions. Set warnOnManualTransactions: false in your db(...) configuration to disable this warning."
65
65
  );
@@ -240,4 +240,4 @@ async function withMigrationSavepoint(client, callback) {
240
240
 
241
241
 
242
242
  exports.registerNativeStateTransactionOpener = registerNativeStateTransactionOpener; exports.bindNativeStateTransactionContext = bindNativeStateTransactionContext; exports.db = db;
243
- //# sourceMappingURL=chunk-Z4RAXFSD.cjs.map
243
+ //# sourceMappingURL=chunk-GHKQC4PD.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-GHKQC4PD.cjs","../../src/common/database/mod.ts"],"names":["db","client"],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-GHKQC4PD.cjs","sourcesContent":[null,"import { getLogger } from \"@/common/log\";\nimport type {\n\tDatabaseProvider,\n\tNativeDatabaseProvider,\n\tRawAccess,\n\tSqliteDatabase,\n\tSqliteProfilingOptions,\n\tSqliteTransactionDatabase,\n\tSqliteTransactionOptions,\n} from \"./config\";\nimport {\n\tisManualTransactionControl,\n\tisSqliteBindingObject,\n\tMIGRATION_TRANSACTION_TIMEOUT_MS,\n\ttoSqliteBindings,\n\tvalidateTransactionName,\n\tvalidateTransactionTimeout,\n} from \"./shared\";\n\nexport type { RawAccess } from \"./config\";\n\nexport interface DatabaseFactoryConfig {\n\tonMigrate?: (db: RawAccess) => Promise<void> | void;\n\twarnOnManualTransactions?: boolean;\n\t/**\n\t * SQLite profiling configuration.\n\t *\n\t * @experimental This entire configuration surface is experimental and\n\t * subject to change without notice.\n\t */\n\tprofiling?: SqliteProfilingOptions;\n}\nconst nativeStateTransactionOpeners = new WeakMap<\n\tNativeDatabaseProvider,\n\t(\n\t\ttimeoutMs?: number,\n\t\tcontext?: unknown,\n\t) => Promise<SqliteTransactionDatabase>\n>();\ntype NativeStateTransactionContext = {\n\tenter(): Promise<unknown>;\n\texit(scope: unknown): void;\n};\nconst nativeStateTransactionClientBinders = new WeakMap<\n\tobject,\n\t(context: NativeStateTransactionContext) => object\n>();\n\n/** @internal */\nexport function registerNativeStateTransactionOpener<\n\tT extends NativeDatabaseProvider,\n>(\n\tprovider: T,\n\topener: (\n\t\ttimeoutMs?: number,\n\t\tcontext?: unknown,\n\t) => Promise<SqliteTransactionDatabase>,\n): T {\n\tnativeStateTransactionOpeners.set(provider, opener);\n\treturn provider;\n}\n\n/** @internal */\nexport function bindNativeStateTransactionContext<T>(\n\tclient: T,\n\tcontext: NativeStateTransactionContext,\n): T {\n\tif (\n\t\t(typeof client !== \"object\" || client === null) &&\n\t\ttypeof client !== \"function\"\n\t) {\n\t\treturn client;\n\t}\n\tconst bind = nativeStateTransactionClientBinders.get(client as object);\n\treturn (bind?.(context) ?? client) as T;\n}\n\nfunction hasMultipleStatements(query: string): boolean {\n\tconst trimmed = query.trim().replace(/;+$/, \"\").trimEnd();\n\treturn trimmed.includes(\";\");\n}\n\nexport function db({\n\tonMigrate,\n\twarnOnManualTransactions = true,\n\tprofiling,\n}: DatabaseFactoryConfig = {}): DatabaseProvider<RawAccess> {\n\tconst provider: DatabaseProvider<RawAccess> = {\n\t\tsqliteProfiling: profiling,\n\t\tcreateClient: async (ctx) => {\n\t\t\tconst nativeDatabaseProvider = ctx.nativeDatabaseProvider;\n\t\t\tif (!nativeDatabaseProvider) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"native SQLite is required, but the current runtime did not provide a native database provider\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst db = await nativeDatabaseProvider.open(ctx.actorId);\n\t\t\tlet closed = false;\n\t\t\tlet manualTransactionWarned = false;\n\t\t\tconst ensureOpen = () => {\n\t\t\t\tif (closed) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"Database is closed. This usually means a background timer (setInterval, setTimeout) or a stray promise is still running after the actor stopped. Use c.abortSignal to clean up timers before the actor shuts down.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst createClient = (\n\t\t\t\ttarget: SqliteDatabase | SqliteTransactionDatabase,\n\t\t\t\ttransactionScoped = false,\n\t\t\t\tstateTransactionContext?: NativeStateTransactionContext,\n\t\t\t): RawAccess => {\n\t\t\t\tconst client: RawAccess = {\n\t\t\t\t\texecute: async <\n\t\t\t\t\t\tTRow extends Record<string, unknown> = Record<\n\t\t\t\t\t\t\tstring,\n\t\t\t\t\t\t\tunknown\n\t\t\t\t\t\t>,\n\t\t\t\t\t>(\n\t\t\t\t\t\tquery: string,\n\t\t\t\t\t\t...args: unknown[]\n\t\t\t\t\t): Promise<TRow[]> => {\n\t\t\t\t\t\tensureOpen();\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!transactionScoped &&\n\t\t\t\t\t\t\twarnOnManualTransactions &&\n\t\t\t\t\t\t\t!manualTransactionWarned &&\n\t\t\t\t\t\t\t!hasMultipleStatements(query) &&\n\t\t\t\t\t\t\tisManualTransactionControl(query)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmanualTransactionWarned = true;\n\t\t\t\t\t\t\tgetLogger(\"database\").warn(\n\t\t\t\t\t\t\t\t{ actorId: ctx.actorId },\n\t\t\t\t\t\t\t\t\"Manual cross-call SQLite transactions can interleave with other actor work. Use db.transaction() for coordinated transactions. Set warnOnManualTransactions: false in your db(...) configuration to disable this warning.\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst kvReadsBefore = ctx.metrics?.totalKvReads ?? 0;\n\t\t\t\t\t\tconst kvWritesBefore = ctx.metrics?.totalKvWrites ?? 0;\n\t\t\t\t\t\tconst start = performance.now();\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (args.length > 0) {\n\t\t\t\t\t\t\t\tconst bindings =\n\t\t\t\t\t\t\t\t\targs.length === 1 &&\n\t\t\t\t\t\t\t\t\tisSqliteBindingObject(args[0])\n\t\t\t\t\t\t\t\t\t\t? toSqliteBindings(args[0])\n\t\t\t\t\t\t\t\t\t\t: toSqliteBindings(args);\n\t\t\t\t\t\t\t\tconst { rows, columns } = await target.execute(\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn rows.map((row) =>\n\t\t\t\t\t\t\t\t\trowToObject<TRow>(row, columns),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!hasMultipleStatements(query)) {\n\t\t\t\t\t\t\t\tconst { rows, columns } = await target.execute(\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn rows.map((row) =>\n\t\t\t\t\t\t\t\t\trowToObject<TRow>(row, columns),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn await execMultiStatement<TRow>(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tconst durationMs = performance.now() - start;\n\t\t\t\t\t\t\tctx.metrics?.trackSql(query, durationMs);\n\t\t\t\t\t\t\tif (ctx.metrics) {\n\t\t\t\t\t\t\t\tconst kvReads =\n\t\t\t\t\t\t\t\t\tctx.metrics.totalKvReads - kvReadsBefore;\n\t\t\t\t\t\t\t\tconst kvWrites =\n\t\t\t\t\t\t\t\t\tctx.metrics.totalKvWrites - kvWritesBefore;\n\t\t\t\t\t\t\t\tctx.log?.debug({\n\t\t\t\t\t\t\t\t\tmsg: \"sql query\",\n\t\t\t\t\t\t\t\t\tquery: query.slice(0, 120),\n\t\t\t\t\t\t\t\t\tdurationMs,\n\t\t\t\t\t\t\t\t\tkvReads,\n\t\t\t\t\t\t\t\t\tkvWrites,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\ttransaction: async <T>(\n\t\t\t\t\t\tcallback: (tx: RawAccess) => Promise<T> | T,\n\t\t\t\t\t\toptions?: SqliteTransactionOptions,\n\t\t\t\t\t): Promise<T> => {\n\t\t\t\t\t\tvalidateTransactionTimeout(options?.timeout);\n\t\t\t\t\t\tvalidateTransactionName(options?.name);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttransactionScoped &&\n\t\t\t\t\t\t\toptions?.experimental?.includeState\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\"experimental.includeState is not supported for nested transactions\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst includeState =\n\t\t\t\t\t\t\toptions?.experimental?.includeState === true;\n\t\t\t\t\t\tconst stateScope =\n\t\t\t\t\t\t\tincludeState && stateTransactionContext\n\t\t\t\t\t\t\t\t? await stateTransactionContext.enter()\n\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst transaction = includeState\n\t\t\t\t\t\t\t\t? await (() => {\n\t\t\t\t\t\t\t\t\t\tconst beginStateTransaction =\n\t\t\t\t\t\t\t\t\t\t\tctx.nativeDatabaseProvider &&\n\t\t\t\t\t\t\t\t\t\t\tnativeStateTransactionOpeners.get(\n\t\t\t\t\t\t\t\t\t\t\t\tctx.nativeDatabaseProvider,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tif (!beginStateTransaction) {\n\t\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t\t\"experimental.includeState is only supported by RivetKit's embedded database provider\",\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn beginStateTransaction(\n\t\t\t\t\t\t\t\t\t\t\toptions?.timeout,\n\t\t\t\t\t\t\t\t\t\t\tstateScope,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})()\n\t\t\t\t\t\t\t\t: await db.beginTransaction(\n\t\t\t\t\t\t\t\t\t\toptions?.timeout,\n\t\t\t\t\t\t\t\t\t\toptions?.name,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst tx = createClient(transaction, true);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst result = await callback(tx);\n\t\t\t\t\t\t\t\tawait transaction.commit();\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait transaction.rollback();\n\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t// Preserve the callback or commit error after expiry cleanup.\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tif (stateScope !== undefined) {\n\t\t\t\t\t\t\t\tstateTransactionContext?.exit(stateScope);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tclose: async () => {\n\t\t\t\t\t\tif (!closed) {\n\t\t\t\t\t\t\tclosed = true;\n\t\t\t\t\t\t\tawait db.close();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tnativeMetrics: () => db.nativeMetrics?.() ?? null,\n\t\t\t\t};\n\t\t\t\tif (!transactionScoped) {\n\t\t\t\t\tnativeStateTransactionClientBinders.set(client, (context) =>\n\t\t\t\t\t\tcreateClient(target, false, context),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn client;\n\t\t\t};\n\t\t\tconst client = createClient(db);\n\t\t\treturn client;\n\t\t},\n\t\tonMigrate: async (client) => {\n\t\t\tif (onMigrate) {\n\t\t\t\tawait withMigrationSavepoint(client, (leased) =>\n\t\t\t\t\tonMigrate(leased),\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t};\n\treturn provider;\n}\n\nfunction rowToObject<TRow extends Record<string, unknown>>(\n\trow: unknown[],\n\tcolumns: string[],\n): TRow {\n\tconst rowObj: Record<string, unknown> = {};\n\tfor (let i = 0; i < columns.length; i++) {\n\t\trowObj[columns[i]] = row[i];\n\t}\n\treturn rowObj as TRow;\n}\n\nasync function execMultiStatement<TRow extends Record<string, unknown>>(\n\tdb: Pick<SqliteDatabase, \"exec\">,\n\tquery: string,\n): Promise<TRow[]> {\n\tconst results: Record<string, unknown>[] = [];\n\tlet columnNames: string[] | null = null;\n\tawait db.exec(query, (row: unknown[], columns: string[]) => {\n\t\tif (!columnNames) {\n\t\t\tcolumnNames = columns;\n\t\t}\n\t\tresults.push(rowToObject(row, columnNames));\n\t});\n\treturn results as TRow[];\n}\n\nasync function withMigrationSavepoint<T>(\n\tclient: RawAccess,\n\tcallback: (leased: RawAccess) => Promise<T> | T,\n): Promise<T> {\n\treturn await client.transaction(\n\t\tasync (transaction) => {\n\t\t\tawait transaction.execute(\"SAVEPOINT __rivet_on_migrate\");\n\t\t\ttry {\n\t\t\t\tconst result = await callback(transaction);\n\t\t\t\tawait transaction.execute(\n\t\t\t\t\t\"RELEASE SAVEPOINT __rivet_on_migrate\",\n\t\t\t\t);\n\t\t\t\treturn result;\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tawait transaction.execute(\n\t\t\t\t\t\t\"ROLLBACK TO SAVEPOINT __rivet_on_migrate\",\n\t\t\t\t\t);\n\t\t\t\t} finally {\n\t\t\t\t\tawait transaction.execute(\n\t\t\t\t\t\t\"RELEASE SAVEPOINT __rivet_on_migrate\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: \"rivetkit-migration\",\n\t\t\ttimeout: MIGRATION_TRANSACTION_TIMEOUT_MS,\n\t\t},\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/actors/actors/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-JX2ITWAV.cjs","../../src/actor/errors.ts"],"names":[],"mappings":"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AGV,EAAA;AACJ,IAAA;AACD,EAAA;AAEI,EAAA;AACG,IAAA;AACL,MAAA;AACD,IAAA;AAEM,IAAA;AACF,MAAA;AACH,MAAA;AACD,IAAA;AACK,IAAA;AACJ,MAAA;AACD,IAAA;AAEC,IAAA;AAIA,MAAA;AACD,IAAA;AAEA,IAAA;AACO,EAAA;AACP,IAAA;AACD,EAAA;AACD;AAEgB;AACT,EAAA;AACD,EAAA;AACJ,IAAA;AACD,EAAA;AAEO,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACF;AAEgB;AAMd,EAAA;AAEF;AAEgB;AAOR,EAAA;AACN,qBAAA;AACA,qBAAA;AACA,IAAA;AACA,IAAA;AACC,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACD,IAAA;AACD,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACC,MAAA;AACD,IAAA;AACD,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACC,MAAA;AACA,MAAA;AACD,IAAA;AACD,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AAGE,IAAA;AACH,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACE,IAAA;AACH,EAAA;AACD;AAOgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACC,MAAA;AACA,MAAA;AACA,MAAA;AACC,QAAA;AACA,QAAA;AACA,QAAA;AAGD,MAAA;AACD,IAAA;AACD,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,EAAA;AACF;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACD,EAAA;AACD;AD9MU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/actors/actors/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-JX2ITWAV.cjs","sourcesContent":[null,"import type { DeconstructedError } from \"@/common/utils\";\n\nexport const INTERNAL_ERROR_CODE = \"internal_error\";\nexport const INTERNAL_ERROR_DESCRIPTION = \"An internal error occurred\";\nexport type InternalErrorMetadata = Record<string, never>;\n\nexport const USER_ERROR_CODE = \"user_error\";\nexport const BRIDGE_RIVET_ERROR_PREFIX = \"__RIVET_ERROR_JSON__:\";\n\nexport interface RivetErrorOptions extends ErrorOptions {\n\t/** Error data can safely be serialized in a response to the client. */\n\tpublic?: boolean;\n\t/** Metadata associated with this error. */\n\tmetadata?: unknown;\n\t/** Request identifier used to correlate this error with engine logs. */\n\trayId?: string;\n\t/** Explicit HTTP status override for router responses. */\n\tstatusCode?: number;\n\t/** Actor context associated with this error. */\n\tactor?: ActorSpecifier;\n}\n\n/** Identifies the actor that was handling work when an error was produced. */\nexport interface ActorSpecifier {\n\tactorId: string;\n\tgeneration: number;\n\tkey?: string;\n}\n\nexport interface RivetErrorLike {\n\t__type?: \"ActorError\" | \"RivetError\";\n\tgroup: string;\n\tcode: string;\n\tmessage: string;\n\tmetadata?: unknown;\n\trayId?: string;\n\tpublic?: boolean;\n\tstatusCode?: number;\n\tactor?: ActorSpecifier;\n}\n\nexport interface BridgeRivetErrorPayload extends RivetErrorLike {}\n\n/**\n * Shape as it arrives from the native bridge, where an absent ray ID serializes\n * to null. Normalized to a BridgeRivetErrorPayload before validation.\n */\ninterface NativeBridgeErrorPayload\n\textends Omit<BridgeRivetErrorPayload, \"rayId\"> {\n\trayId?: string | null;\n}\n\nexport interface UserErrorOptions extends ErrorOptions {\n\t/**\n\t * Machine readable code for this error. Useful for catching different types of\n\t * errors in try-catch.\n\t */\n\tcode?: string;\n\t/**\n\t * Additional metadata related to the error. Useful for understanding context\n\t * about the error.\n\t */\n\tmetadata?: unknown;\n}\n\nfunction looksLikeRivetErrorOptions(\n\tvalue: unknown,\n): value is RivetErrorOptions {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t(\"public\" in value ||\n\t\t\t\"metadata\" in value ||\n\t\t\t\"rayId\" in value ||\n\t\t\t\"statusCode\" in value ||\n\t\t\t\"actor\" in value ||\n\t\t\t\"cause\" in value)\n\t);\n}\n\nfunction isTypedErrorTag(value: unknown): value is \"ActorError\" | \"RivetError\" {\n\treturn value === \"ActorError\" || value === \"RivetError\";\n}\n\nfunction errorMessage(error: unknown, fallback = String(error)): string {\n\tif (\n\t\terror &&\n\t\ttypeof error === \"object\" &&\n\t\t\"message\" in error &&\n\t\ttypeof error.message === \"string\"\n\t) {\n\t\treturn error.message;\n\t}\n\n\treturn fallback;\n}\n\nexport function isRivetErrorLike(\n\terror: unknown,\n): error is RivetError | DeconstructedError | RivetErrorLike {\n\treturn (\n\t\ttypeof error === \"object\" &&\n\t\terror !== null &&\n\t\t\"group\" in error &&\n\t\ttypeof error.group === \"string\" &&\n\t\t\"code\" in error &&\n\t\ttypeof error.code === \"string\" &&\n\t\t\"message\" in error &&\n\t\ttypeof error.message === \"string\" &&\n\t\t(!(\"rayId\" in error) ||\n\t\t\terror.rayId === undefined ||\n\t\t\ttypeof error.rayId === \"string\") &&\n\t\t(!(\"__type\" in error) || isTypedErrorTag(error.__type))\n\t);\n}\n\n// Matches the `actor`/`aborted` error that core raises when an in-flight queue\n// wait is interrupted because the actor is going to sleep. This is the expected\n// way a parked `run` handler unwinds during sleep, not a failure.\nexport function isActorAbortedError(error: unknown): boolean {\n\treturn (\n\t\tisRivetErrorLike(error) &&\n\t\terror.group === \"actor\" &&\n\t\terror.code === \"aborted\"\n\t);\n}\n\nfunction isActorSpecifier(value: unknown): value is ActorSpecifier {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"actorId\" in value &&\n\t\ttypeof value.actorId === \"string\" &&\n\t\t\"generation\" in value &&\n\t\ttypeof value.generation === \"number\" &&\n\t\t(!(\"key\" in value) ||\n\t\t\tvalue.key === undefined ||\n\t\t\ttypeof value.key === \"string\")\n\t);\n}\n\nexport class RivetError extends Error {\n\t__type = \"RivetError\" as const;\n\n\tpublic public: boolean;\n\tpublic metadata?: unknown;\n\tpublic readonly rayId?: string;\n\tpublic statusCode: number;\n\tpublic actor?: ActorSpecifier;\n\tpublic readonly group: string;\n\tpublic readonly code: string;\n\n\tpublic static isRivetError(\n\t\terror: unknown,\n\t): error is RivetError | DeconstructedError {\n\t\treturn isRivetErrorLike(error);\n\t}\n\n\tpublic static isActorError(\n\t\terror: unknown,\n\t): error is RivetError | DeconstructedError {\n\t\treturn isRivetErrorLike(error);\n\t}\n\n\tconstructor(\n\t\tgroup: string,\n\t\tcode: string,\n\t\tmessage: string,\n\t\toptions?: RivetErrorOptions | unknown,\n\t) {\n\t\tconst normalized = looksLikeRivetErrorOptions(options)\n\t\t\t? options\n\t\t\t: { metadata: options };\n\n\t\tsuper(message, { cause: normalized.cause });\n\t\tthis.name = \"RivetError\";\n\t\tthis.group = group;\n\t\tthis.code = code;\n\t\tthis.public = normalized.public ?? false;\n\t\tthis.metadata = normalized.metadata;\n\t\tthis.rayId = normalized.rayId ?? undefined;\n\t\tthis.statusCode = normalized.statusCode ?? (this.public ? 400 : 500);\n\t\tthis.actor = normalized.actor;\n\t}\n\n\ttoString() {\n\t\treturn this.message;\n\t}\n}\n\nexport { RivetError as ActorError };\n\nexport class UserError extends RivetError {\n\tconstructor(message: string, options?: UserErrorOptions) {\n\t\tsuper(\"user\", options?.code ?? USER_ERROR_CODE, message, {\n\t\t\tpublic: true,\n\t\t\tmetadata: options?.metadata,\n\t\t\tcause: options?.cause,\n\t\t});\n\t}\n}\n\nexport function toRivetError(\n\terror: unknown,\n\tfallback?: Partial<RivetErrorLike>,\n): RivetError {\n\tif (typeof error === \"string\") {\n\t\tconst bridged = decodeBridgeRivetError(error);\n\t\tif (bridged) {\n\t\t\treturn bridged;\n\t\t}\n\t}\n\n\tif (error instanceof Error) {\n\t\tconst bridged = decodeBridgeRivetError(error.message);\n\t\tif (bridged) {\n\t\t\treturn bridged;\n\t\t}\n\t}\n\n\tif (isRivetErrorLike(error)) {\n\t\treturn new RivetError(error.group, error.code, error.message, {\n\t\t\tpublic: error.public,\n\t\t\tstatusCode: error.statusCode,\n\t\t\tmetadata: error.metadata,\n\t\t\trayId: error.rayId,\n\t\t\tactor: error.actor,\n\t\t\tcause: error instanceof Error ? error.cause : undefined,\n\t\t});\n\t}\n\n\treturn new RivetError(\n\t\tfallback?.group ?? \"actor\",\n\t\tfallback?.code ?? INTERNAL_ERROR_CODE,\n\t\terrorMessage(error, fallback?.message ?? \"Unknown error\"),\n\t\t{\n\t\t\tpublic: fallback?.public,\n\t\t\tstatusCode: fallback?.statusCode,\n\t\t\tmetadata: fallback?.metadata,\n\t\t\trayId: fallback?.rayId,\n\t\t\tactor: fallback?.actor,\n\t\t\tcause: error instanceof Error ? error : undefined,\n\t\t},\n\t);\n}\n\nexport function encodeBridgeRivetError(error: RivetErrorLike): string {\n\treturn `${BRIDGE_RIVET_ERROR_PREFIX}${JSON.stringify({\n\t\tgroup: error.group,\n\t\tcode: error.code,\n\t\tmessage: error.message,\n\t\tmetadata: error.metadata,\n\t\trayId: error.rayId,\n\t\tpublic: error.public,\n\t\tstatusCode: error.statusCode,\n\t\tactor: error.actor,\n\t})}`;\n}\n\n/**\n * Encodes an error for the telemetry bridge. A structured error crosses with\n * its group and code. Anything else crosses as text so Core classifies it,\n * which is the same rule that keeps raw messages out of every span.\n */\nexport function encodeErrorForBridge(error: unknown): string {\n\tif (isCanonicalStructuredRivetError(error)) {\n\t\treturn encodeBridgeRivetError(error);\n\t}\n\treturn String(error);\n}\n\n/** A `RivetError` instance, or a plain object carrying its full tagged shape. */\nexport function isCanonicalStructuredRivetError(\n\terror: unknown,\n): error is RivetErrorLike {\n\treturn (\n\t\terror instanceof 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\nexport function decodeBridgeRivetErrorPayload(\n\tvalue: string,\n): BridgeRivetErrorPayload | undefined {\n\tif (!value.startsWith(BRIDGE_RIVET_ERROR_PREFIX)) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst raw = JSON.parse(\n\t\t\tvalue.slice(BRIDGE_RIVET_ERROR_PREFIX.length),\n\t\t) as NativeBridgeErrorPayload;\n\t\t// Coerce the native bridge's null ray ID to undefined before validation.\n\t\tconst payload: BridgeRivetErrorPayload = {\n\t\t\t...raw,\n\t\t\trayId: raw.rayId ?? undefined,\n\t\t};\n\t\tif (!isRivetErrorLike(payload)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (\n\t\t\tpayload.actor !== undefined &&\n\t\t\tpayload.actor !== null &&\n\t\t\t!isActorSpecifier(payload.actor)\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn payload;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function decodeBridgeRivetError(value: string): RivetError | undefined {\n\tconst payload = decodeBridgeRivetErrorPayload(value);\n\tif (!payload) {\n\t\treturn undefined;\n\t}\n\n\treturn new RivetError(payload.group, payload.code, payload.message, {\n\t\tmetadata: payload.metadata,\n\t\trayId: payload.rayId,\n\t\tpublic: payload.public,\n\t\tstatusCode: payload.statusCode,\n\t\tactor: payload.actor ?? undefined,\n\t});\n}\n\nexport function isRivetErrorCode(\n\terror: unknown,\n\tgroup: string,\n\tcode: string,\n): error is RivetError {\n\treturn (\n\t\tisRivetErrorLike(error) && error.group === group && error.code === code\n\t);\n}\n\nexport function internalError(\n\tmessage: string,\n\toptions?: Partial<RivetErrorOptions> & {\n\t\tgroup?: string;\n\t\tcode?: string;\n\t},\n): RivetError {\n\treturn new RivetError(\n\t\toptions?.group ?? \"actor\",\n\t\toptions?.code ?? INTERNAL_ERROR_CODE,\n\t\tmessage,\n\t\t{\n\t\t\tpublic: options?.public,\n\t\t\tstatusCode: options?.statusCode,\n\t\t\tmetadata: options?.metadata,\n\t\t\trayId: options?.rayId,\n\t\t\tactor: options?.actor,\n\t\t\tcause: options?.cause,\n\t\t},\n\t);\n}\n\nexport function invalidEncoding(format?: string): RivetError {\n\treturn new RivetError(\n\t\t\"encoding\",\n\t\t\"invalid\",\n\t\t`Invalid encoding \\`${format}\\`. (https://www.rivet.dev/docs/clients/javascript)`,\n\t\t{\n\t\t\tpublic: true,\n\t\t},\n\t);\n}\n\nexport function invalidRequest(error?: unknown): RivetError {\n\treturn new RivetError(\n\t\t\"request\",\n\t\t\"invalid\",\n\t\t`Invalid request: ${errorMessage(error, String(error))}`,\n\t\t{\n\t\t\tpublic: true,\n\t\t\tcause: error instanceof Error ? error : undefined,\n\t\t},\n\t);\n}\n\nexport function actorNotFound(identifier?: string): RivetError {\n\treturn new RivetError(\n\t\t\"actor\",\n\t\t\"not_found\",\n\t\tidentifier\n\t\t\t? `Actor not found: ${identifier} (https://www.rivet.dev/docs/clients/javascript)`\n\t\t\t: \"Actor not found (https://www.rivet.dev/docs/clients/javascript)\",\n\t\t{ public: true },\n\t);\n}\n\nexport function actorStopping(identifier?: string): RivetError {\n\treturn new RivetError(\n\t\t\"actor\",\n\t\t\"stopping\",\n\t\tidentifier ? `Actor stopping: ${identifier}` : \"Actor stopping\",\n\t\t{ public: true },\n\t);\n}\n\nexport interface ActorRestartingOptions {\n\tphase?: \"stopping\" | \"sleeping\" | \"waking\" | \"runner_shutdown\";\n\tretryAfterMs?: number;\n}\n\nexport function actorRestarting(opts?: ActorRestartingOptions): RivetError {\n\treturn new RivetError(\n\t\t\"actor\",\n\t\t\"restarting\",\n\t\t\"Actor is restarting. Retry the request.\",\n\t\t{\n\t\t\tpublic: true,\n\t\t\tstatusCode: 503,\n\t\t\tmetadata: {\n\t\t\t\tretryable: true,\n\t\t\t\t...(opts?.phase ? { phase: opts.phase } : {}),\n\t\t\t\t...(opts?.retryAfterMs !== undefined\n\t\t\t\t\t? { retryAfterMs: opts.retryAfterMs }\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t},\n\t);\n}\n\nexport function forbiddenError(): RivetError {\n\treturn new RivetError(\"auth\", \"forbidden\", \"Forbidden\", {\n\t\tpublic: true,\n\t\tstatusCode: 403,\n\t});\n}\n\nexport function unsupportedFeature(feature: string): RivetError {\n\treturn new RivetError(\n\t\t\"feature\",\n\t\t\"unsupported\",\n\t\t`Unsupported feature: ${feature}`,\n\t);\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-JX2ITWAV.cjs","../../src/actor/errors.ts"],"names":[],"mappings":"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AGV,EAAA;AACJ,IAAA;AACD,EAAA;AAEI,EAAA;AACG,IAAA;AACL,MAAA;AACD,IAAA;AAEM,IAAA;AACF,MAAA;AACH,MAAA;AACD,IAAA;AACK,IAAA;AACJ,MAAA;AACD,IAAA;AAEC,IAAA;AAIA,MAAA;AACD,IAAA;AAEA,IAAA;AACO,EAAA;AACP,IAAA;AACD,EAAA;AACD;AAEgB;AACT,EAAA;AACD,EAAA;AACJ,IAAA;AACD,EAAA;AAEO,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACF;AAEgB;AAMd,EAAA;AAEF;AAEgB;AAOR,EAAA;AACN,qBAAA;AACA,qBAAA;AACA,IAAA;AACA,IAAA;AACC,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACD,IAAA;AACD,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACC,MAAA;AACD,IAAA;AACD,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACC,MAAA;AACA,MAAA;AACD,IAAA;AACD,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AAGE,IAAA;AACH,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACE,IAAA;AACH,EAAA;AACD;AAOgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACC,MAAA;AACA,MAAA;AACA,MAAA;AACC,QAAA;AACA,QAAA;AACA,QAAA;AAGD,MAAA;AACD,IAAA;AACD,EAAA;AACD;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,EAAA;AACF;AAEgB;AACR,EAAA;AACN,IAAA;AACA,IAAA;AACA,IAAA;AACD,EAAA;AACD;AD9MU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-JX2ITWAV.cjs","sourcesContent":[null,"import type { DeconstructedError } from \"@/common/utils\";\n\nexport const INTERNAL_ERROR_CODE = \"internal_error\";\nexport const INTERNAL_ERROR_DESCRIPTION = \"An internal error occurred\";\nexport type InternalErrorMetadata = Record<string, never>;\n\nexport const USER_ERROR_CODE = \"user_error\";\nexport const BRIDGE_RIVET_ERROR_PREFIX = \"__RIVET_ERROR_JSON__:\";\n\nexport interface RivetErrorOptions extends ErrorOptions {\n\t/** Error data can safely be serialized in a response to the client. */\n\tpublic?: boolean;\n\t/** Metadata associated with this error. */\n\tmetadata?: unknown;\n\t/** Request identifier used to correlate this error with engine logs. */\n\trayId?: string;\n\t/** Explicit HTTP status override for router responses. */\n\tstatusCode?: number;\n\t/** Actor context associated with this error. */\n\tactor?: ActorSpecifier;\n}\n\n/** Identifies the actor that was handling work when an error was produced. */\nexport interface ActorSpecifier {\n\tactorId: string;\n\tgeneration: number;\n\tkey?: string;\n}\n\nexport interface RivetErrorLike {\n\t__type?: \"ActorError\" | \"RivetError\";\n\tgroup: string;\n\tcode: string;\n\tmessage: string;\n\tmetadata?: unknown;\n\trayId?: string;\n\tpublic?: boolean;\n\tstatusCode?: number;\n\tactor?: ActorSpecifier;\n}\n\nexport interface BridgeRivetErrorPayload extends RivetErrorLike {}\n\n/**\n * Shape as it arrives from the native bridge, where an absent ray ID serializes\n * to null. Normalized to a BridgeRivetErrorPayload before validation.\n */\ninterface NativeBridgeErrorPayload\n\textends Omit<BridgeRivetErrorPayload, \"rayId\"> {\n\trayId?: string | null;\n}\n\nexport interface UserErrorOptions extends ErrorOptions {\n\t/**\n\t * Machine readable code for this error. Useful for catching different types of\n\t * errors in try-catch.\n\t */\n\tcode?: string;\n\t/**\n\t * Additional metadata related to the error. Useful for understanding context\n\t * about the error.\n\t */\n\tmetadata?: unknown;\n}\n\nfunction looksLikeRivetErrorOptions(\n\tvalue: unknown,\n): value is RivetErrorOptions {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t(\"public\" in value ||\n\t\t\t\"metadata\" in value ||\n\t\t\t\"rayId\" in value ||\n\t\t\t\"statusCode\" in value ||\n\t\t\t\"actor\" in value ||\n\t\t\t\"cause\" in value)\n\t);\n}\n\nfunction isTypedErrorTag(value: unknown): value is \"ActorError\" | \"RivetError\" {\n\treturn value === \"ActorError\" || value === \"RivetError\";\n}\n\nfunction errorMessage(error: unknown, fallback = String(error)): string {\n\tif (\n\t\terror &&\n\t\ttypeof error === \"object\" &&\n\t\t\"message\" in error &&\n\t\ttypeof error.message === \"string\"\n\t) {\n\t\treturn error.message;\n\t}\n\n\treturn fallback;\n}\n\nexport function isRivetErrorLike(\n\terror: unknown,\n): error is RivetError | DeconstructedError | RivetErrorLike {\n\treturn (\n\t\ttypeof error === \"object\" &&\n\t\terror !== null &&\n\t\t\"group\" in error &&\n\t\ttypeof error.group === \"string\" &&\n\t\t\"code\" in error &&\n\t\ttypeof error.code === \"string\" &&\n\t\t\"message\" in error &&\n\t\ttypeof error.message === \"string\" &&\n\t\t(!(\"rayId\" in error) ||\n\t\t\terror.rayId === undefined ||\n\t\t\ttypeof error.rayId === \"string\") &&\n\t\t(!(\"__type\" in error) || isTypedErrorTag(error.__type))\n\t);\n}\n\n// Matches the `actor`/`aborted` error that core raises when an in-flight queue\n// wait is interrupted because the actor is going to sleep. This is the expected\n// way a parked `run` handler unwinds during sleep, not a failure.\nexport function isActorAbortedError(error: unknown): boolean {\n\treturn (\n\t\tisRivetErrorLike(error) &&\n\t\terror.group === \"actor\" &&\n\t\terror.code === \"aborted\"\n\t);\n}\n\nfunction isActorSpecifier(value: unknown): value is ActorSpecifier {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"actorId\" in value &&\n\t\ttypeof value.actorId === \"string\" &&\n\t\t\"generation\" in value &&\n\t\ttypeof value.generation === \"number\" &&\n\t\t(!(\"key\" in value) ||\n\t\t\tvalue.key === undefined ||\n\t\t\ttypeof value.key === \"string\")\n\t);\n}\n\nexport class RivetError extends Error {\n\t__type = \"RivetError\" as const;\n\n\tpublic public: boolean;\n\tpublic metadata?: unknown;\n\tpublic readonly rayId?: string;\n\tpublic statusCode: number;\n\tpublic actor?: ActorSpecifier;\n\tpublic readonly group: string;\n\tpublic readonly code: string;\n\n\tpublic static isRivetError(\n\t\terror: unknown,\n\t): error is RivetError | DeconstructedError {\n\t\treturn isRivetErrorLike(error);\n\t}\n\n\tpublic static isActorError(\n\t\terror: unknown,\n\t): error is RivetError | DeconstructedError {\n\t\treturn isRivetErrorLike(error);\n\t}\n\n\tconstructor(\n\t\tgroup: string,\n\t\tcode: string,\n\t\tmessage: string,\n\t\toptions?: RivetErrorOptions | unknown,\n\t) {\n\t\tconst normalized = looksLikeRivetErrorOptions(options)\n\t\t\t? options\n\t\t\t: { metadata: options };\n\n\t\tsuper(message, { cause: normalized.cause });\n\t\tthis.name = \"RivetError\";\n\t\tthis.group = group;\n\t\tthis.code = code;\n\t\tthis.public = normalized.public ?? false;\n\t\tthis.metadata = normalized.metadata;\n\t\tthis.rayId = normalized.rayId ?? undefined;\n\t\tthis.statusCode = normalized.statusCode ?? (this.public ? 400 : 500);\n\t\tthis.actor = normalized.actor;\n\t}\n\n\ttoString() {\n\t\treturn this.message;\n\t}\n}\n\nexport { RivetError as ActorError };\n\nexport class UserError extends RivetError {\n\tconstructor(message: string, options?: UserErrorOptions) {\n\t\tsuper(\"user\", options?.code ?? USER_ERROR_CODE, message, {\n\t\t\tpublic: true,\n\t\t\tmetadata: options?.metadata,\n\t\t\tcause: options?.cause,\n\t\t});\n\t}\n}\n\nexport function toRivetError(\n\terror: unknown,\n\tfallback?: Partial<RivetErrorLike>,\n): RivetError {\n\tif (typeof error === \"string\") {\n\t\tconst bridged = decodeBridgeRivetError(error);\n\t\tif (bridged) {\n\t\t\treturn bridged;\n\t\t}\n\t}\n\n\tif (error instanceof Error) {\n\t\tconst bridged = decodeBridgeRivetError(error.message);\n\t\tif (bridged) {\n\t\t\treturn bridged;\n\t\t}\n\t}\n\n\tif (isRivetErrorLike(error)) {\n\t\treturn new RivetError(error.group, error.code, error.message, {\n\t\t\tpublic: error.public,\n\t\t\tstatusCode: error.statusCode,\n\t\t\tmetadata: error.metadata,\n\t\t\trayId: error.rayId,\n\t\t\tactor: error.actor,\n\t\t\tcause: error instanceof Error ? error.cause : undefined,\n\t\t});\n\t}\n\n\treturn new RivetError(\n\t\tfallback?.group ?? \"actor\",\n\t\tfallback?.code ?? INTERNAL_ERROR_CODE,\n\t\terrorMessage(error, fallback?.message ?? \"Unknown error\"),\n\t\t{\n\t\t\tpublic: fallback?.public,\n\t\t\tstatusCode: fallback?.statusCode,\n\t\t\tmetadata: fallback?.metadata,\n\t\t\trayId: fallback?.rayId,\n\t\t\tactor: fallback?.actor,\n\t\t\tcause: error instanceof Error ? error : undefined,\n\t\t},\n\t);\n}\n\nexport function encodeBridgeRivetError(error: RivetErrorLike): string {\n\treturn `${BRIDGE_RIVET_ERROR_PREFIX}${JSON.stringify({\n\t\tgroup: error.group,\n\t\tcode: error.code,\n\t\tmessage: error.message,\n\t\tmetadata: error.metadata,\n\t\trayId: error.rayId,\n\t\tpublic: error.public,\n\t\tstatusCode: error.statusCode,\n\t\tactor: error.actor,\n\t})}`;\n}\n\n/**\n * Encodes an error for the telemetry bridge. A structured error crosses with\n * its group and code. Anything else crosses as text so Core classifies it,\n * which is the same rule that keeps raw messages out of every span.\n */\nexport function encodeErrorForBridge(error: unknown): string {\n\tif (isCanonicalStructuredRivetError(error)) {\n\t\treturn encodeBridgeRivetError(error);\n\t}\n\treturn String(error);\n}\n\n/** A `RivetError` instance, or a plain object carrying its full tagged shape. */\nexport function isCanonicalStructuredRivetError(\n\terror: unknown,\n): error is RivetErrorLike {\n\treturn (\n\t\terror instanceof 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\nexport function decodeBridgeRivetErrorPayload(\n\tvalue: string,\n): BridgeRivetErrorPayload | undefined {\n\tif (!value.startsWith(BRIDGE_RIVET_ERROR_PREFIX)) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst raw = JSON.parse(\n\t\t\tvalue.slice(BRIDGE_RIVET_ERROR_PREFIX.length),\n\t\t) as NativeBridgeErrorPayload;\n\t\t// Coerce the native bridge's null ray ID to undefined before validation.\n\t\tconst payload: BridgeRivetErrorPayload = {\n\t\t\t...raw,\n\t\t\trayId: raw.rayId ?? undefined,\n\t\t};\n\t\tif (!isRivetErrorLike(payload)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (\n\t\t\tpayload.actor !== undefined &&\n\t\t\tpayload.actor !== null &&\n\t\t\t!isActorSpecifier(payload.actor)\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn payload;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function decodeBridgeRivetError(value: string): RivetError | undefined {\n\tconst payload = decodeBridgeRivetErrorPayload(value);\n\tif (!payload) {\n\t\treturn undefined;\n\t}\n\n\treturn new RivetError(payload.group, payload.code, payload.message, {\n\t\tmetadata: payload.metadata,\n\t\trayId: payload.rayId,\n\t\tpublic: payload.public,\n\t\tstatusCode: payload.statusCode,\n\t\tactor: payload.actor ?? undefined,\n\t});\n}\n\nexport function isRivetErrorCode(\n\terror: unknown,\n\tgroup: string,\n\tcode: string,\n): error is RivetError {\n\treturn (\n\t\tisRivetErrorLike(error) && error.group === group && error.code === code\n\t);\n}\n\nexport function internalError(\n\tmessage: string,\n\toptions?: Partial<RivetErrorOptions> & {\n\t\tgroup?: string;\n\t\tcode?: string;\n\t},\n): RivetError {\n\treturn new RivetError(\n\t\toptions?.group ?? \"actor\",\n\t\toptions?.code ?? INTERNAL_ERROR_CODE,\n\t\tmessage,\n\t\t{\n\t\t\tpublic: options?.public,\n\t\t\tstatusCode: options?.statusCode,\n\t\t\tmetadata: options?.metadata,\n\t\t\trayId: options?.rayId,\n\t\t\tactor: options?.actor,\n\t\t\tcause: options?.cause,\n\t\t},\n\t);\n}\n\nexport function invalidEncoding(format?: string): RivetError {\n\treturn new RivetError(\n\t\t\"encoding\",\n\t\t\"invalid\",\n\t\t`Invalid encoding \\`${format}\\`. (https://www.rivet.dev/docs/clients/javascript)`,\n\t\t{\n\t\t\tpublic: true,\n\t\t},\n\t);\n}\n\nexport function invalidRequest(error?: unknown): RivetError {\n\treturn new RivetError(\n\t\t\"request\",\n\t\t\"invalid\",\n\t\t`Invalid request: ${errorMessage(error, String(error))}`,\n\t\t{\n\t\t\tpublic: true,\n\t\t\tcause: error instanceof Error ? error : undefined,\n\t\t},\n\t);\n}\n\nexport function actorNotFound(identifier?: string): RivetError {\n\treturn new RivetError(\n\t\t\"actor\",\n\t\t\"not_found\",\n\t\tidentifier\n\t\t\t? `Actor not found: ${identifier} (https://www.rivet.dev/docs/clients/javascript)`\n\t\t\t: \"Actor not found (https://www.rivet.dev/docs/clients/javascript)\",\n\t\t{ public: true },\n\t);\n}\n\nexport function actorStopping(identifier?: string): RivetError {\n\treturn new RivetError(\n\t\t\"actor\",\n\t\t\"stopping\",\n\t\tidentifier ? `Actor stopping: ${identifier}` : \"Actor stopping\",\n\t\t{ public: true },\n\t);\n}\n\nexport interface ActorRestartingOptions {\n\tphase?: \"stopping\" | \"sleeping\" | \"waking\" | \"runner_shutdown\";\n\tretryAfterMs?: number;\n}\n\nexport function actorRestarting(opts?: ActorRestartingOptions): RivetError {\n\treturn new RivetError(\n\t\t\"actor\",\n\t\t\"restarting\",\n\t\t\"Actor is restarting. Retry the request.\",\n\t\t{\n\t\t\tpublic: true,\n\t\t\tstatusCode: 503,\n\t\t\tmetadata: {\n\t\t\t\tretryable: true,\n\t\t\t\t...(opts?.phase ? { phase: opts.phase } : {}),\n\t\t\t\t...(opts?.retryAfterMs !== undefined\n\t\t\t\t\t? { retryAfterMs: opts.retryAfterMs }\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t},\n\t);\n}\n\nexport function forbiddenError(): RivetError {\n\treturn new RivetError(\"auth\", \"forbidden\", \"Forbidden\", {\n\t\tpublic: true,\n\t\tstatusCode: 403,\n\t});\n}\n\nexport function unsupportedFeature(feature: string): RivetError {\n\treturn new RivetError(\n\t\t\"feature\",\n\t\t\"unsupported\",\n\t\t`Unsupported feature: ${feature}`,\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/actors/actors/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-KVFIONKQ.cjs","../../src/common/database/shared.ts"],"names":[],"mappings":"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","file":"/home/runner/work/actors/actors/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-KVFIONKQ.cjs","sourcesContent":[null,"import type { SqliteBindings } from \"./config\";\n\n/** Migrations may legitimately do substantially more work than request transactions. */\nexport const MIGRATION_TRANSACTION_TIMEOUT_MS = 5 * 60_000;\n\nexport function isManualTransactionControl(query: string): boolean {\n\treturn /^\\s*(?:BEGIN|SAVEPOINT|COMMIT|END|ROLLBACK)\\b/i.test(query);\n}\n\nexport function validateTransactionTimeout(timeout: number | undefined): void {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout <= 0)) {\n\t\tthrow new Error(\n\t\t\t\"db.transaction() timeout must be a positive finite number of milliseconds\",\n\t\t);\n\t}\n}\n\nexport function validateTransactionName(name: string | undefined): void {\n\tif (name === undefined) {\n\t\treturn;\n\t}\n\tif (name.length === 0) {\n\t\tthrow new Error(\"db.transaction() name must not be empty\");\n\t}\n}\n\ntype SqliteBindingObject = Record<string, unknown>;\n\nfunction isSqliteBindingValue(value: unknown): boolean {\n\tif (\n\t\tvalue === null ||\n\t\ttypeof value === \"number\" ||\n\t\ttypeof value === \"string\" ||\n\t\ttypeof value === \"bigint\" ||\n\t\tvalue instanceof Uint8Array\n\t) {\n\t\treturn true;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value.every((item) => typeof item === \"number\");\n\t}\n\n\treturn false;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\treturn Object.getPrototypeOf(value) === Object.prototype;\n}\n\nexport function isSqliteBindingObject(\n\tvalue: unknown,\n): value is SqliteBindingObject {\n\tif (!isPlainObject(value)) {\n\t\treturn false;\n\t}\n\n\treturn Object.values(value).every((entry) => isSqliteBindingValue(entry));\n}\n\nexport function isSqliteBindingArray(value: unknown): value is unknown[] {\n\treturn (\n\t\tArray.isArray(value) &&\n\t\tvalue.every((entry) => isSqliteBindingValue(entry))\n\t);\n}\n\nexport function toSqliteBindings(\n\tinput: unknown[] | SqliteBindingObject,\n): SqliteBindings {\n\tif (Array.isArray(input)) {\n\t\tfor (const value of input) {\n\t\t\tif (!isSqliteBindingValue(value)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`unsupported sqlite binding type: ${typeof value}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn input as SqliteBindings;\n\t}\n\n\tif (isSqliteBindingObject(input)) {\n\t\treturn input as SqliteBindings;\n\t}\n\n\tthrow new Error(\"unsupported sqlite binding collection\");\n}\n\n/**\n * Serialize async operations on a shared non-reentrant resource.\n */\nexport class AsyncMutex {\n\t#locked = false;\n\t#waiting: (() => void)[] = [];\n\n\tasync acquire(): Promise<void> {\n\t\twhile (this.#locked) {\n\t\t\tawait new Promise<void>((resolve) => this.#waiting.push(resolve));\n\t\t}\n\t\tthis.#locked = true;\n\t}\n\n\trelease(): void {\n\t\tthis.#locked = false;\n\t\tconst next = this.#waiting.shift();\n\t\tif (next) {\n\t\t\tnext();\n\t\t}\n\t}\n\n\tasync run<T>(fn: () => Promise<T>): Promise<T> {\n\t\tawait this.acquire();\n\t\ttry {\n\t\t\treturn await fn();\n\t\t} finally {\n\t\t\tthis.release();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-KVFIONKQ.cjs","../../src/common/database/shared.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-KVFIONKQ.cjs","sourcesContent":[null,"import type { SqliteBindings } from \"./config\";\n\n/** Migrations may legitimately do substantially more work than request transactions. */\nexport const MIGRATION_TRANSACTION_TIMEOUT_MS = 5 * 60_000;\n\nexport function isManualTransactionControl(query: string): boolean {\n\treturn /^\\s*(?:BEGIN|SAVEPOINT|COMMIT|END|ROLLBACK)\\b/i.test(query);\n}\n\nexport function validateTransactionTimeout(timeout: number | undefined): void {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout <= 0)) {\n\t\tthrow new Error(\n\t\t\t\"db.transaction() timeout must be a positive finite number of milliseconds\",\n\t\t);\n\t}\n}\n\nexport function validateTransactionName(name: string | undefined): void {\n\tif (name === undefined) {\n\t\treturn;\n\t}\n\tif (name.length === 0) {\n\t\tthrow new Error(\"db.transaction() name must not be empty\");\n\t}\n}\n\ntype SqliteBindingObject = Record<string, unknown>;\n\nfunction isSqliteBindingValue(value: unknown): boolean {\n\tif (\n\t\tvalue === null ||\n\t\ttypeof value === \"number\" ||\n\t\ttypeof value === \"string\" ||\n\t\ttypeof value === \"bigint\" ||\n\t\tvalue instanceof Uint8Array\n\t) {\n\t\treturn true;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value.every((item) => typeof item === \"number\");\n\t}\n\n\treturn false;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\treturn Object.getPrototypeOf(value) === Object.prototype;\n}\n\nexport function isSqliteBindingObject(\n\tvalue: unknown,\n): value is SqliteBindingObject {\n\tif (!isPlainObject(value)) {\n\t\treturn false;\n\t}\n\n\treturn Object.values(value).every((entry) => isSqliteBindingValue(entry));\n}\n\nexport function isSqliteBindingArray(value: unknown): value is unknown[] {\n\treturn (\n\t\tArray.isArray(value) &&\n\t\tvalue.every((entry) => isSqliteBindingValue(entry))\n\t);\n}\n\nexport function toSqliteBindings(\n\tinput: unknown[] | SqliteBindingObject,\n): SqliteBindings {\n\tif (Array.isArray(input)) {\n\t\tfor (const value of input) {\n\t\t\tif (!isSqliteBindingValue(value)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`unsupported sqlite binding type: ${typeof value}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn input as SqliteBindings;\n\t}\n\n\tif (isSqliteBindingObject(input)) {\n\t\treturn input as SqliteBindings;\n\t}\n\n\tthrow new Error(\"unsupported sqlite binding collection\");\n}\n\n/**\n * Serialize async operations on a shared non-reentrant resource.\n */\nexport class AsyncMutex {\n\t#locked = false;\n\t#waiting: (() => void)[] = [];\n\n\tasync acquire(): Promise<void> {\n\t\twhile (this.#locked) {\n\t\t\tawait new Promise<void>((resolve) => this.#waiting.push(resolve));\n\t\t}\n\t\tthis.#locked = true;\n\t}\n\n\trelease(): void {\n\t\tthis.#locked = false;\n\t\tconst next = this.#waiting.shift();\n\t\tif (next) {\n\t\t\tnext();\n\t\t}\n\t}\n\n\tasync run<T>(fn: () => Promise<T>): Promise<T> {\n\t\tawait this.acquire();\n\t\ttry {\n\t\t\treturn await fn();\n\t\t} finally {\n\t\t\tthis.release();\n\t\t}\n\t}\n}\n"]}
@@ -178,7 +178,7 @@ function noopNext() {
178
178
  // package.json
179
179
  var package_default = {
180
180
  name: "rivetkit",
181
- version: "2.3.19",
181
+ version: "2.3.21",
182
182
  description: "Lightweight libraries for building stateful actors on edge platforms",
183
183
  license: "Apache-2.0",
184
184
  keywords: [
@@ -391,6 +391,7 @@ var package_default = {
391
391
  "@rivet-dev/agent-os-core": "^0.1.1",
392
392
  "@rivet-dev/services": "^0.1.5",
393
393
  "@rivetkit/bare-ts": "^0.6.2",
394
+ "@rivetkit/engine-api-full": "workspace:*",
394
395
  "@rivetkit/engine-cli": "workspace:*",
395
396
  "@rivetkit/engine-envoy-protocol": "workspace:*",
396
397
  "@rivetkit/on-change": "6.0.1",
@@ -1260,4 +1261,4 @@ function detectRuntime() {
1260
1261
 
1261
1262
 
1262
1263
  exports.assertUnreachable = assertUnreachable; exports.deconstructError = deconstructError; exports.stringifyError = stringifyError; exports.noopNext = noopNext; exports.uint8ArrayToBase64 = uint8ArrayToBase64; exports.contentTypeForEncoding = contentTypeForEncoding; exports.encodeCborCompat = encodeCborCompat; exports.decodeCborCompat = decodeCborCompat; exports.serializeWithEncoding = serializeWithEncoding; exports.deserializeWithEncoding = deserializeWithEncoding; exports.assertJsonCompatValue = assertJsonCompatValue; exports.EncodingSchema = EncodingSchema; exports.inputDataToBuffer = inputDataToBuffer; exports.jsonStringifyCompat = jsonStringifyCompat; exports.jsonParseCompat = jsonParseCompat; exports.joinSignals = joinSignals; exports.sleep = sleep; exports.interval = interval; exports.VERSION = VERSION; exports.httpUserAgent = httpUserAgent; exports.getEnvUniversal = getEnvUniversal; exports.dbg = dbg; exports.toUint8Array = toUint8Array; exports.promiseWithResolvers = promiseWithResolvers; exports.setLongTimeout = setLongTimeout; exports.SinglePromiseQueue = SinglePromiseQueue; exports.bufferToArrayBuffer = bufferToArrayBuffer; exports.combineUrlPath = combineUrlPath; exports.arrayBuffersEqual = arrayBuffersEqual; exports.EXTRA_ERROR_LOG = EXTRA_ERROR_LOG; exports.detectRuntime = detectRuntime; exports.getRivetEngine = getRivetEngine; exports.getRivetEndpoint = getRivetEndpoint; exports.getRivetToken = getRivetToken; exports.getRivetNamespace = getRivetNamespace; exports.getRivetPool = getRivetPool; exports.getRivetTotalSlots = getRivetTotalSlots; exports.getRivetRunEngine = getRivetRunEngine; exports.getRivetRunEngineHost = getRivetRunEngineHost; exports.getRivetRunEnginePort = getRivetRunEnginePort; exports.getRivetRunEngineVersion = getRivetRunEngineVersion; exports.getRivetRunServices = getRivetRunServices; exports.getRivetEnvoyVersion = getRivetEnvoyVersion; exports.getRivetPublicEndpoint = getRivetPublicEndpoint; exports.getRivetPublicToken = getRivetPublicToken; exports.getRivetkitRuntime = getRivetkitRuntime; exports.getRivetkitRuntimeMode = getRivetkitRuntimeMode; exports.getRivetkitPublicDir = getRivetkitPublicDir; exports.parsePortEnv = parsePortEnv; exports.getLogMessage = getLogMessage; exports.getNodeEnv = getNodeEnv; exports.getNextPhase = getNextPhase; exports.isDev = isDev; exports.LogLevelSchema = LogLevelSchema; exports.getPinoLevel = getPinoLevel; exports.getIncludeTarget = getIncludeTarget; exports.configureBaseLogger = configureBaseLogger; exports.makeDefaultLogger = makeDefaultLogger; exports.configureDefaultLogger = configureDefaultLogger; exports.getBaseLogger = getBaseLogger; exports.getLogger = getLogger;
1263
- //# sourceMappingURL=chunk-RJC5O2SD.cjs.map
1264
+ //# sourceMappingURL=chunk-KWGN2ZBJ.cjs.map