rivetkit 2.3.0 → 2.3.1

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 (120) hide show
  1. package/dist/browser/client.d.ts +19 -6
  2. package/dist/browser/client.js +4 -4
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +4 -4
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/actor/errors.cjs +4 -2
  7. package/dist/tsup/actor/errors.cjs.map +1 -1
  8. package/dist/tsup/actor/errors.d.cts +1 -1
  9. package/dist/tsup/actor/errors.d.ts +1 -1
  10. package/dist/tsup/actor/errors.js +3 -1
  11. package/dist/tsup/agent-os/index.cjs +4 -4
  12. package/dist/tsup/agent-os/index.cjs.map +1 -1
  13. package/dist/tsup/agent-os/index.d.cts +18 -5
  14. package/dist/tsup/agent-os/index.d.ts +18 -5
  15. package/dist/tsup/agent-os/index.js +4 -4
  16. package/dist/tsup/agent-os/index.js.map +1 -1
  17. package/dist/tsup/{chunk-NIY3RSPX.cjs → chunk-3MHDOUD7.cjs} +11 -2
  18. package/dist/tsup/chunk-3MHDOUD7.cjs.map +1 -0
  19. package/dist/tsup/{chunk-KORQB2IR.cjs → chunk-4FC7TVS6.cjs} +6 -2
  20. package/dist/tsup/chunk-4FC7TVS6.cjs.map +1 -0
  21. package/dist/tsup/{chunk-47HHIEXH.cjs → chunk-4UUEB43Y.cjs} +4 -4
  22. package/dist/tsup/{chunk-47HHIEXH.cjs.map → chunk-4UUEB43Y.cjs.map} +1 -1
  23. package/dist/tsup/{chunk-7QKCIVAY.cjs → chunk-5IWLUJ6W.cjs} +167 -167
  24. package/dist/tsup/{chunk-7QKCIVAY.cjs.map → chunk-5IWLUJ6W.cjs.map} +1 -1
  25. package/dist/tsup/{chunk-P2GNQ4RN.js → chunk-H6VVZMWN.js} +4 -4
  26. package/dist/tsup/{chunk-MEHBWPLJ.js → chunk-I35VSLEM.js} +3 -3
  27. package/dist/tsup/{chunk-BEI24WTI.js → chunk-JBUZRPY5.js} +2 -2
  28. package/dist/tsup/{chunk-B6VUNZUD.cjs → chunk-JLJJZYCJ.cjs} +10 -10
  29. package/dist/tsup/{chunk-B6VUNZUD.cjs.map → chunk-JLJJZYCJ.cjs.map} +1 -1
  30. package/dist/tsup/{chunk-VTTFNQQI.js → chunk-L2X3YFER.js} +31 -6
  31. package/dist/tsup/chunk-L2X3YFER.js.map +1 -0
  32. package/dist/tsup/{chunk-DXXJPH55.cjs → chunk-MNHKOS6L.cjs} +39 -14
  33. package/dist/tsup/chunk-MNHKOS6L.cjs.map +1 -0
  34. package/dist/tsup/{chunk-UMZVD6DQ.js → chunk-NERUIBOT.js} +2 -2
  35. package/dist/tsup/{chunk-I4LN3FNT.cjs → chunk-OST76LRW.cjs} +7 -7
  36. package/dist/tsup/{chunk-I4LN3FNT.cjs.map → chunk-OST76LRW.cjs.map} +1 -1
  37. package/dist/tsup/{chunk-LVTBW2RE.cjs → chunk-OZBCXBVP.cjs} +3 -3
  38. package/dist/tsup/{chunk-LVTBW2RE.cjs.map → chunk-OZBCXBVP.cjs.map} +1 -1
  39. package/dist/tsup/{chunk-4JDSFJS5.js → chunk-PT6OIW5E.js} +5 -5
  40. package/dist/tsup/{chunk-2OTRTA3J.js → chunk-R6KPN5EW.js} +2 -2
  41. package/dist/tsup/{chunk-3677IIOV.cjs → chunk-V5KMAMX3.cjs} +5 -5
  42. package/dist/tsup/{chunk-3677IIOV.cjs.map → chunk-V5KMAMX3.cjs.map} +1 -1
  43. package/dist/tsup/{chunk-DPIMKYNB.js → chunk-XIX5DOZN.js} +10 -1
  44. package/dist/tsup/chunk-XIX5DOZN.js.map +1 -0
  45. package/dist/tsup/{chunk-BRP62GZC.js → chunk-ZZ3WBRPD.js} +5 -1
  46. package/dist/tsup/chunk-ZZ3WBRPD.js.map +1 -0
  47. package/dist/tsup/client/mod.cjs +7 -7
  48. package/dist/tsup/client/mod.d.cts +3 -3
  49. package/dist/tsup/client/mod.d.ts +3 -3
  50. package/dist/tsup/client/mod.js +6 -6
  51. package/dist/tsup/common/log.cjs +3 -3
  52. package/dist/tsup/common/log.js +2 -2
  53. package/dist/tsup/common/websocket.cjs +4 -4
  54. package/dist/tsup/common/websocket.js +3 -3
  55. package/dist/tsup/{config-CZQQ-mso.d.cts → config-CzvopP5m.d.cts} +22 -7
  56. package/dist/tsup/{config-BxWAw3iH.d.ts → config-DZuT7tcp.d.ts} +22 -7
  57. package/dist/tsup/context-CyAdY-aA.d.ts +128 -0
  58. package/dist/tsup/context-sNB28g0N.d.cts +128 -0
  59. package/dist/tsup/dynamic/mod.cjs +2 -2
  60. package/dist/tsup/dynamic/mod.d.cts +2 -2
  61. package/dist/tsup/dynamic/mod.d.ts +2 -2
  62. package/dist/tsup/dynamic/mod.js +1 -1
  63. package/dist/tsup/inspector/mod.cjs +6 -6
  64. package/dist/tsup/inspector/mod.js +5 -5
  65. package/dist/tsup/inspector-tab/mod.cjs +2 -2
  66. package/dist/tsup/inspector-tab/mod.cjs.map +1 -1
  67. package/dist/tsup/inspector-tab/mod.d.cts +3 -3
  68. package/dist/tsup/inspector-tab/mod.d.ts +3 -3
  69. package/dist/tsup/inspector-tab/mod.js +1 -1
  70. package/dist/tsup/inspector-tab/mod.js.map +1 -1
  71. package/dist/tsup/mod.cjs +292 -276
  72. package/dist/tsup/mod.cjs.map +1 -1
  73. package/dist/tsup/mod.d.cts +4 -4
  74. package/dist/tsup/mod.d.ts +4 -4
  75. package/dist/tsup/mod.js +202 -186
  76. package/dist/tsup/mod.js.map +1 -1
  77. package/dist/tsup/test/mod.cjs +10 -10
  78. package/dist/tsup/test/mod.d.cts +2 -2
  79. package/dist/tsup/test/mod.d.ts +2 -2
  80. package/dist/tsup/test/mod.js +6 -6
  81. package/dist/tsup/{utils-DQosb24I.d.ts → utils-CqDnC_PS.d.cts} +2 -1
  82. package/dist/tsup/{utils-DQosb24I.d.cts → utils-CqDnC_PS.d.ts} +2 -1
  83. package/dist/tsup/utils.cjs +3 -3
  84. package/dist/tsup/utils.d.cts +1 -1
  85. package/dist/tsup/utils.d.ts +1 -1
  86. package/dist/tsup/utils.js +2 -2
  87. package/dist/tsup/workflow/mod.cjs +184 -148
  88. package/dist/tsup/workflow/mod.cjs.map +1 -1
  89. package/dist/tsup/workflow/mod.d.cts +6 -6
  90. package/dist/tsup/workflow/mod.d.ts +6 -6
  91. package/dist/tsup/workflow/mod.js +177 -141
  92. package/dist/tsup/workflow/mod.js.map +1 -1
  93. package/package.json +11 -11
  94. package/src/actor/config.ts +14 -0
  95. package/src/actor/errors.ts +11 -0
  96. package/src/inspector-tab/mod.ts +1 -1
  97. package/src/registry/index.ts +74 -18
  98. package/src/registry/napi-runtime.ts +16 -0
  99. package/src/registry/native.ts +79 -30
  100. package/src/registry/runtime.ts +11 -0
  101. package/src/registry/wasm-runtime.ts +11 -0
  102. package/src/utils/env-vars.ts +31 -0
  103. package/src/workflow/context.ts +675 -244
  104. package/src/workflow/driver.ts +20 -7
  105. package/src/workflow/mod.ts +25 -9
  106. package/dist/tsup/chunk-BRP62GZC.js.map +0 -1
  107. package/dist/tsup/chunk-DPIMKYNB.js.map +0 -1
  108. package/dist/tsup/chunk-DXXJPH55.cjs.map +0 -1
  109. package/dist/tsup/chunk-KORQB2IR.cjs.map +0 -1
  110. package/dist/tsup/chunk-NIY3RSPX.cjs.map +0 -1
  111. package/dist/tsup/chunk-VTTFNQQI.js.map +0 -1
  112. package/dist/tsup/context-Bw7xq8w3.d.cts +0 -92
  113. package/dist/tsup/context-D8QA76sV.d.ts +0 -92
  114. package/src/utils/serve.ts +0 -216
  115. /package/dist/tsup/{chunk-P2GNQ4RN.js.map → chunk-H6VVZMWN.js.map} +0 -0
  116. /package/dist/tsup/{chunk-MEHBWPLJ.js.map → chunk-I35VSLEM.js.map} +0 -0
  117. /package/dist/tsup/{chunk-BEI24WTI.js.map → chunk-JBUZRPY5.js.map} +0 -0
  118. /package/dist/tsup/{chunk-UMZVD6DQ.js.map → chunk-NERUIBOT.js.map} +0 -0
  119. /package/dist/tsup/{chunk-4JDSFJS5.js.map → chunk-PT6OIW5E.js.map} +0 -0
  120. /package/dist/tsup/{chunk-2OTRTA3J.js.map → chunk-R6KPN5EW.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actor/config.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 { Registry } from \"@/registry\";\nimport type { BaseActorDefinition } from \"./definition\";\nimport type {\n\tEventSchemaConfig,\n\tInferQueueCompleteMap,\n\tInferSchemaMap,\n\tPrimitiveSchema,\n\tQueueSchemaConfig,\n} from \"./schema\";\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` / `c.sql`)\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(duration: number, action: string, ...args: unknown[]): Promise<void>;\n\tat(timestamp: number, action: string, ...args: unknown[]): Promise<void>;\n\t[key: string]: any;\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\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 (`db` / `sql`)\n\t * or actor state instead.\n\t */\n\treadonly kv: ActorKv;\n\treadonly db: InferDatabaseClient<TDatabase>;\n\treadonly schedule: ActorSchedule;\n\treadonly queue: ActorQueue<TQueues>;\n\treadonly actorId: string;\n\treadonly name: string;\n\treadonly key: string[];\n\treadonly region: 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\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\nexport type InspectorUnsubscribe = () => void;\n\nexport interface WorkflowInspectorConfig<THistory = unknown> {\n\tgetHistory: () => THistory | null;\n\tonHistoryUpdated?: (\n\t\tlistener: (history: THistory) => void,\n\t) => InspectorUnsubscribe;\n\treplayFromStep?: (entryId?: string) => Promise<THistory | null>;\n}\n\nexport interface RunInspectorConfig<THistory = unknown> {\n\tworkflow?: WorkflowInspectorConfig<THistory>;\n}\n\nconst WorkflowInspectorConfigSchema = z.object({\n\tgetHistory: zFunction<WorkflowInspectorConfig<unknown>[\"getHistory\"]>(),\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\"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\nexport const RUN_FUNCTION_CONFIG_SYMBOL = Symbol.for(\n\t\"rivetkit.run_function_config\",\n);\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}\n\ntype RunFunctionWithConfig = ((...args: any[]) => any) & {\n\t[RUN_FUNCTION_CONFIG_SYMBOL]?: RunFunctionConfig;\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/** 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/**\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\tmaxQueueMessageSize: z\n\t\t\t.number()\n\t\t\t.positive()\n\t\t\t.default(64 * 1024),\n\t\t/** Override RivetKit's workflow preload budget for this actor. Set to 0 to disable workflow preloading. */\n\t\tpreloadMaxWorkflowBytes: z.number().nonnegative().optional(),\n\t\t/** Override RivetKit's connections preload budget for this actor. Set to 0 to disable connections preloading. */\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\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: z.record(z.string(), zFunction()).default(() => ({})),\n\t\tactionInputSchemas: z.record(z.string(), z.any()).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\tc: ActionContext<\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\t...args: any[]\n\t) => any;\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 schema map for validating action argument tuples in native runtimes.\n\t */\n\tactionInputSchemas?: Record<string, PrimitiveSchema>;\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| \"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\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\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\tpreloadMaxWorkflowBytes: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Override RivetKit's workflow preload budget for this actor. Set to 0 to disable workflow preloading.\",\n\t\t\t),\n\t\tpreloadMaxConnectionsBytes: z\n\t\t\t.number()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"Override RivetKit's connections preload budget for this actor. Set to 0 to disable connections preloading.\",\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\"Map of action name to handler function. 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 schema map for validating action argument tuples in native runtimes.\",\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"],"mappings":"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","names":[]}
@@ -18,6 +18,9 @@ function errorMessage(error, fallback = String(error)) {
18
18
  function isRivetErrorLike(error) {
19
19
  return typeof error === "object" && error !== null && "group" in error && typeof error.group === "string" && "code" in error && typeof error.code === "string" && "message" in error && typeof error.message === "string" && (!("__type" in error) || isTypedErrorTag(error.__type));
20
20
  }
21
+ function isActorAbortedError(error) {
22
+ return isRivetErrorLike(error) && error.group === "actor" && error.code === "aborted";
23
+ }
21
24
  function isActorSpecifier(value) {
22
25
  return typeof value === "object" && value !== null && "actorId" in value && typeof value.actorId === "string" && "generation" in value && typeof value.generation === "number" && (!("key" in value) || value.key === void 0 || typeof value.key === "string");
23
26
  }
@@ -226,6 +229,7 @@ export {
226
229
  USER_ERROR_CODE,
227
230
  BRIDGE_RIVET_ERROR_PREFIX,
228
231
  isRivetErrorLike,
232
+ isActorAbortedError,
229
233
  RivetError,
230
234
  UserError,
231
235
  toRivetError,
@@ -242,4 +246,4 @@ export {
242
246
  forbiddenError,
243
247
  unsupportedFeature
244
248
  };
245
- //# sourceMappingURL=chunk-BRP62GZC.js.map
249
+ //# sourceMappingURL=chunk-ZZ3WBRPD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actor/errors.ts"],"sourcesContent":["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/** 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\tpublic?: boolean;\n\tstatusCode?: number;\n\tactor?: ActorSpecifier;\n}\n\nexport interface BridgeRivetErrorPayload extends RivetErrorLike {}\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\"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(!(\"__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 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.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\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\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\tpublic: error.public,\n\t\tstatusCode: error.statusCode,\n\t\tactor: error.actor,\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 payload = JSON.parse(\n\t\t\tvalue.slice(BRIDGE_RIVET_ERROR_PREFIX.length),\n\t\t) as BridgeRivetErrorPayload;\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\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\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"],"mappings":";AAEO,IAAM,sBAAsB;AAC5B,IAAM,6BAA6B;AAGnC,IAAM,kBAAkB;AACxB,IAAM,4BAA4B;AA8CzC,SAAS,2BACR,OAC6B;AAC7B,SACC,OAAO,UAAU,YACjB,UAAU,SACT,YAAY,SACZ,cAAc,SACd,gBAAgB,SAChB,WAAW,SACX,WAAW;AAEd;AAEA,SAAS,gBAAgB,OAAsD;AAC9E,SAAO,UAAU,gBAAgB,UAAU;AAC5C;AAEA,SAAS,aAAa,OAAgB,WAAW,OAAO,KAAK,GAAW;AACvE,MACC,SACA,OAAO,UAAU,YACjB,aAAa,SACb,OAAO,MAAM,YAAY,UACxB;AACD,WAAO,MAAM;AAAA,EACd;AAEA,SAAO;AACR;AAEO,SAAS,iBACf,OAC4D;AAC5D,SACC,OAAO,UAAU,YACjB,UAAU,QACV,WAAW,SACX,OAAO,MAAM,UAAU,YACvB,UAAU,SACV,OAAO,MAAM,SAAS,YACtB,aAAa,SACb,OAAO,MAAM,YAAY,aACxB,EAAE,YAAY,UAAU,gBAAgB,MAAM,MAAM;AAEvD;AAKO,SAAS,oBAAoB,OAAyB;AAC5D,SACC,iBAAiB,KAAK,KACtB,MAAM,UAAU,WAChB,MAAM,SAAS;AAEjB;AAEA,SAAS,iBAAiB,OAAyC;AAClE,SACC,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAO,MAAM,YAAY,YACzB,gBAAgB,SAChB,OAAO,MAAM,eAAe,aAC3B,EAAE,SAAS,UACX,MAAM,QAAQ,UACd,OAAO,MAAM,QAAQ;AAExB;AAEO,IAAM,aAAN,cAAyB,MAAM;AAAA,EACrC,SAAS;AAAA,EAEF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACS;AAAA,EACA;AAAA,EAEhB,OAAc,aACb,OAC2C;AAC3C,WAAO,iBAAiB,KAAK;AAAA,EAC9B;AAAA,EAEA,OAAc,aACb,OAC2C;AAC3C,WAAO,iBAAiB,KAAK;AAAA,EAC9B;AAAA,EAEA,YACC,OACA,MACA,SACA,SACC;AACD,UAAM,aAAa,2BAA2B,OAAO,IAClD,UACA,EAAE,UAAU,QAAQ;AAEvB,UAAM,SAAS,EAAE,OAAO,WAAW,MAAM,CAAC;AAC1C,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,OAAO;AACZ,SAAK,SAAS,WAAW,UAAU;AACnC,SAAK,WAAW,WAAW;AAC3B,SAAK,aAAa,WAAW,eAAe,KAAK,SAAS,MAAM;AAChE,SAAK,QAAQ,WAAW;AAAA,EACzB;AAAA,EAEA,WAAW;AACV,WAAO,KAAK;AAAA,EACb;AACD;AAIO,IAAM,YAAN,cAAwB,WAAW;AAAA,EACzC,YAAY,SAAiB,SAA4B;AACxD,UAAM,SAAQ,mCAAS,SAAQ,iBAAiB,SAAS;AAAA,MACxD,QAAQ;AAAA,MACR,UAAU,mCAAS;AAAA,MACnB,OAAO,mCAAS;AAAA,IACjB,CAAC;AAAA,EACF;AACD;AAEO,SAAS,aACf,OACA,UACa;AACb,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,UAAU,uBAAuB,KAAK;AAC5C,QAAI,SAAS;AACZ,aAAO;AAAA,IACR;AAAA,EACD;AAEA,MAAI,iBAAiB,OAAO;AAC3B,UAAM,UAAU,uBAAuB,MAAM,OAAO;AACpD,QAAI,SAAS;AACZ,aAAO;AAAA,IACR;AAAA,EACD;AAEA,MAAI,iBAAiB,KAAK,GAAG;AAC5B,WAAO,IAAI,WAAW,MAAM,OAAO,MAAM,MAAM,MAAM,SAAS;AAAA,MAC7D,QAAQ,MAAM;AAAA,MACd,YAAY,MAAM;AAAA,MAClB,UAAU,MAAM;AAAA,MAChB,OAAO,MAAM;AAAA,MACb,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,IAC/C,CAAC;AAAA,EACF;AAEA,SAAO,IAAI;AAAA,KACV,qCAAU,UAAS;AAAA,KACnB,qCAAU,SAAQ;AAAA,IAClB,aAAa,QAAO,qCAAU,YAAW,eAAe;AAAA,IACxD;AAAA,MACC,QAAQ,qCAAU;AAAA,MAClB,YAAY,qCAAU;AAAA,MACtB,UAAU,qCAAU;AAAA,MACpB,OAAO,qCAAU;AAAA,MACjB,OAAO,iBAAiB,QAAQ,QAAQ;AAAA,IACzC;AAAA,EACD;AACD;AAEO,SAAS,uBAAuB,OAA+B;AACrE,SAAO,GAAG,yBAAyB,GAAG,KAAK,UAAU;AAAA,IACpD,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,IACf,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM;AAAA,IACd,YAAY,MAAM;AAAA,IAClB,OAAO,MAAM;AAAA,EACd,CAAC,CAAC;AACH;AAEO,SAAS,8BACf,OACsC;AACtC,MAAI,CAAC,MAAM,WAAW,yBAAyB,GAAG;AACjD,WAAO;AAAA,EACR;AAEA,MAAI;AACH,UAAM,UAAU,KAAK;AAAA,MACpB,MAAM,MAAM,0BAA0B,MAAM;AAAA,IAC7C;AACA,QAAI,CAAC,iBAAiB,OAAO,GAAG;AAC/B,aAAO;AAAA,IACR;AACA,QACC,QAAQ,UAAU,UAClB,QAAQ,UAAU,QAClB,CAAC,iBAAiB,QAAQ,KAAK,GAC9B;AACD,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAEO,SAAS,uBAAuB,OAAuC;AAC7E,QAAM,UAAU,8BAA8B,KAAK;AACnD,MAAI,CAAC,SAAS;AACb,WAAO;AAAA,EACR;AAEA,SAAO,IAAI,WAAW,QAAQ,OAAO,QAAQ,MAAM,QAAQ,SAAS;AAAA,IACnE,UAAU,QAAQ;AAAA,IAClB,QAAQ,QAAQ;AAAA,IAChB,YAAY,QAAQ;AAAA,IACpB,OAAO,QAAQ,SAAS;AAAA,EACzB,CAAC;AACF;AAEO,SAAS,iBACf,OACA,OACA,MACsB;AACtB,SACC,iBAAiB,KAAK,KAAK,MAAM,UAAU,SAAS,MAAM,SAAS;AAErE;AAEO,SAAS,cACf,SACA,SAIa;AACb,SAAO,IAAI;AAAA,KACV,mCAAS,UAAS;AAAA,KAClB,mCAAS,SAAQ;AAAA,IACjB;AAAA,IACA;AAAA,MACC,QAAQ,mCAAS;AAAA,MACjB,YAAY,mCAAS;AAAA,MACrB,UAAU,mCAAS;AAAA,MACnB,OAAO,mCAAS;AAAA,MAChB,OAAO,mCAAS;AAAA,IACjB;AAAA,EACD;AACD;AAEO,SAAS,gBAAgB,QAA6B;AAC5D,SAAO,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA,sBAAsB,MAAM;AAAA,IAC5B;AAAA,MACC,QAAQ;AAAA,IACT;AAAA,EACD;AACD;AAEO,SAAS,eAAe,OAA6B;AAC3D,SAAO,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA,oBAAoB,aAAa,OAAO,OAAO,KAAK,CAAC,CAAC;AAAA,IACtD;AAAA,MACC,QAAQ;AAAA,MACR,OAAO,iBAAiB,QAAQ,QAAQ;AAAA,IACzC;AAAA,EACD;AACD;AAEO,SAAS,cAAc,YAAiC;AAC9D,SAAO,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA,aACG,oBAAoB,UAAU,qDAC9B;AAAA,IACH,EAAE,QAAQ,KAAK;AAAA,EAChB;AACD;AAEO,SAAS,cAAc,YAAiC;AAC9D,SAAO,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA,aAAa,mBAAmB,UAAU,KAAK;AAAA,IAC/C,EAAE,QAAQ,KAAK;AAAA,EAChB;AACD;AAOO,SAAS,gBAAgB,MAA2C;AAC1E,SAAO,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACC,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,UAAU;AAAA,QACT,WAAW;AAAA,QACX,IAAI,6BAAM,SAAQ,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA,QAC3C,IAAI,6BAAM,kBAAiB,SACxB,EAAE,cAAc,KAAK,aAAa,IAClC,CAAC;AAAA,MACL;AAAA,IACD;AAAA,EACD;AACD;AAEO,SAAS,iBAA6B;AAC5C,SAAO,IAAI,WAAW,QAAQ,aAAa,aAAa;AAAA,IACvD,QAAQ;AAAA,IACR,YAAY;AAAA,EACb,CAAC;AACF;AAEO,SAAS,mBAAmB,SAA6B;AAC/D,SAAO,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA,wBAAwB,OAAO;AAAA,EAChC;AACD;","names":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkI4LN3FNTcjs = require('../chunk-I4LN3FNT.cjs');
3
+ var _chunkOST76LRWcjs = require('../chunk-OST76LRW.cjs');
4
4
 
5
5
 
6
6
 
@@ -8,16 +8,16 @@ var _chunkI4LN3FNTcjs = require('../chunk-I4LN3FNT.cjs');
8
8
 
9
9
 
10
10
 
11
- var _chunk7QKCIVAYcjs = require('../chunk-7QKCIVAY.cjs');
11
+ var _chunk5IWLUJ6Wcjs = require('../chunk-5IWLUJ6W.cjs');
12
12
  require('../chunk-VE2X4KMG.cjs');
13
- require('../chunk-3677IIOV.cjs');
13
+ require('../chunk-V5KMAMX3.cjs');
14
14
  require('../chunk-ZA7FLHKH.cjs');
15
- require('../chunk-LVTBW2RE.cjs');
16
- require('../chunk-DXXJPH55.cjs');
15
+ require('../chunk-OZBCXBVP.cjs');
16
+ require('../chunk-MNHKOS6L.cjs');
17
17
 
18
18
 
19
19
 
20
- var _chunkKORQB2IRcjs = require('../chunk-KORQB2IR.cjs');
20
+ var _chunk4FC7TVS6cjs = require('../chunk-4FC7TVS6.cjs');
21
21
 
22
22
 
23
23
 
@@ -29,5 +29,5 @@ var _chunkKORQB2IRcjs = require('../chunk-KORQB2IR.cjs');
29
29
 
30
30
 
31
31
 
32
- exports.ActorClientError = _chunk7QKCIVAYcjs.ActorClientError; exports.ActorConnDisposed = _chunk7QKCIVAYcjs.ActorConnDisposed; exports.ActorConnRaw = _chunk7QKCIVAYcjs.ActorConnRaw; exports.ActorError = _chunkKORQB2IRcjs.RivetError; exports.ActorHandleRaw = _chunk7QKCIVAYcjs.ActorHandleRaw; exports.MalformedResponseMessage = _chunk7QKCIVAYcjs.MalformedResponseMessage; exports.ManagerError = _chunk7QKCIVAYcjs.ManagerError; exports.RivetError = _chunkKORQB2IRcjs.RivetError; exports.UserError = _chunkKORQB2IRcjs.UserError; exports.createClient = _chunkI4LN3FNTcjs.createClient;
32
+ exports.ActorClientError = _chunk5IWLUJ6Wcjs.ActorClientError; exports.ActorConnDisposed = _chunk5IWLUJ6Wcjs.ActorConnDisposed; exports.ActorConnRaw = _chunk5IWLUJ6Wcjs.ActorConnRaw; exports.ActorError = _chunk4FC7TVS6cjs.RivetError; exports.ActorHandleRaw = _chunk5IWLUJ6Wcjs.ActorHandleRaw; exports.MalformedResponseMessage = _chunk5IWLUJ6Wcjs.MalformedResponseMessage; exports.ManagerError = _chunk5IWLUJ6Wcjs.ManagerError; exports.RivetError = _chunk4FC7TVS6cjs.RivetError; exports.UserError = _chunk4FC7TVS6cjs.UserError; exports.createClient = _chunkOST76LRWcjs.createClient;
33
33
  //# sourceMappingURL=mod.cjs.map
@@ -1,8 +1,8 @@
1
- import { ax as Registry, _ as Client } from '../config-CZQQ-mso.cjs';
2
- export { b7 as ActorAccessor, b8 as ActorActionFunction, b9 as ActorActionOptions, ba as ActorConn, bb as ActorConnRaw, bc as ActorConnStatus, bd as ActorConnectOptions, r as ActorDefinition, be as ActorGatewayOptions, bf as ActorHandle, bg as ActorHandleRaw, A as AnyActorDefinition, bh as ClientRaw, bi as ConnectionStateCallback, bj as CreateOptions, bk as CreateRequest, a9 as Encoding, bl as EventUnsubscribe, bm as ExtractActorsFromRegistry, bn as ExtractRegistryFromClient, bo as GetOptions, bp as GetWithIdOptions, bq as QueryOptions, br as Region, bs as StatusChangeCallback } from '../config-CZQQ-mso.cjs';
1
+ import { ax as Registry, _ as Client } from '../config-CzvopP5m.cjs';
2
+ export { b8 as ActorAccessor, b9 as ActorActionFunction, ba as ActorActionOptions, bb as ActorConn, bc as ActorConnRaw, bd as ActorConnStatus, be as ActorConnectOptions, r as ActorDefinition, bf as ActorGatewayOptions, bg as ActorHandle, bh as ActorHandleRaw, A as AnyActorDefinition, bi as ClientRaw, bj as ConnectionStateCallback, bk as CreateOptions, bl as CreateRequest, a9 as Encoding, bm as EventUnsubscribe, bn as ExtractActorsFromRegistry, bo as ExtractRegistryFromClient, bp as GetOptions, bq as GetWithIdOptions, br as QueryOptions, bs as Region, bt as StatusChangeCallback } from '../config-CzvopP5m.cjs';
3
3
  import z from 'zod/v4';
4
4
  import { GetUpgradeWebSocket } from '../utils.cjs';
5
- export { R as ActorError, R as RivetError, U as UserError } from '../utils-DQosb24I.cjs';
5
+ export { R as ActorError, R as RivetError, U as UserError } from '../utils-CqDnC_PS.cjs';
6
6
  import '../config-D49x8NpL.cjs';
7
7
  import '@rivetkit/rivetkit-wasm';
8
8
  import 'zod';
@@ -1,8 +1,8 @@
1
- import { ax as Registry, _ as Client } from '../config-BxWAw3iH.js';
2
- export { b7 as ActorAccessor, b8 as ActorActionFunction, b9 as ActorActionOptions, ba as ActorConn, bb as ActorConnRaw, bc as ActorConnStatus, bd as ActorConnectOptions, r as ActorDefinition, be as ActorGatewayOptions, bf as ActorHandle, bg as ActorHandleRaw, A as AnyActorDefinition, bh as ClientRaw, bi as ConnectionStateCallback, bj as CreateOptions, bk as CreateRequest, a9 as Encoding, bl as EventUnsubscribe, bm as ExtractActorsFromRegistry, bn as ExtractRegistryFromClient, bo as GetOptions, bp as GetWithIdOptions, bq as QueryOptions, br as Region, bs as StatusChangeCallback } from '../config-BxWAw3iH.js';
1
+ import { ax as Registry, _ as Client } from '../config-DZuT7tcp.js';
2
+ export { b8 as ActorAccessor, b9 as ActorActionFunction, ba as ActorActionOptions, bb as ActorConn, bc as ActorConnRaw, bd as ActorConnStatus, be as ActorConnectOptions, r as ActorDefinition, bf as ActorGatewayOptions, bg as ActorHandle, bh as ActorHandleRaw, A as AnyActorDefinition, bi as ClientRaw, bj as ConnectionStateCallback, bk as CreateOptions, bl as CreateRequest, a9 as Encoding, bm as EventUnsubscribe, bn as ExtractActorsFromRegistry, bo as ExtractRegistryFromClient, bp as GetOptions, bq as GetWithIdOptions, br as QueryOptions, bs as Region, bt as StatusChangeCallback } from '../config-DZuT7tcp.js';
3
3
  import z from 'zod/v4';
4
4
  import { GetUpgradeWebSocket } from '../utils.js';
5
- export { R as ActorError, R as RivetError, U as UserError } from '../utils-DQosb24I.js';
5
+ export { R as ActorError, R as RivetError, U as UserError } from '../utils-CqDnC_PS.js';
6
6
  import '../config-D49x8NpL.js';
7
7
  import '@rivetkit/rivetkit-wasm';
8
8
  import 'zod';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createClient
3
- } from "../chunk-MEHBWPLJ.js";
3
+ } from "../chunk-I35VSLEM.js";
4
4
  import {
5
5
  ActorClientError,
6
6
  ActorConnDisposed,
@@ -8,16 +8,16 @@ import {
8
8
  ActorHandleRaw,
9
9
  MalformedResponseMessage,
10
10
  ManagerError
11
- } from "../chunk-4JDSFJS5.js";
11
+ } from "../chunk-PT6OIW5E.js";
12
12
  import "../chunk-HXUEHHJF.js";
13
- import "../chunk-2OTRTA3J.js";
13
+ import "../chunk-R6KPN5EW.js";
14
14
  import "../chunk-JZ7TWV65.js";
15
- import "../chunk-BEI24WTI.js";
16
- import "../chunk-VTTFNQQI.js";
15
+ import "../chunk-JBUZRPY5.js";
16
+ import "../chunk-L2X3YFER.js";
17
17
  import {
18
18
  RivetError,
19
19
  UserError
20
- } from "../chunk-BRP62GZC.js";
20
+ } from "../chunk-ZZ3WBRPD.js";
21
21
  export {
22
22
  ActorClientError,
23
23
  ActorConnDisposed,
@@ -6,8 +6,8 @@
6
6
 
7
7
 
8
8
 
9
- var _chunkDXXJPH55cjs = require('../chunk-DXXJPH55.cjs');
10
- require('../chunk-KORQB2IR.cjs');
9
+ var _chunkMNHKOS6Lcjs = require('../chunk-MNHKOS6L.cjs');
10
+ require('../chunk-4FC7TVS6.cjs');
11
11
 
12
12
 
13
13
 
@@ -16,5 +16,5 @@ require('../chunk-KORQB2IR.cjs');
16
16
 
17
17
 
18
18
 
19
- exports.LogLevelSchema = _chunkDXXJPH55cjs.LogLevelSchema; exports.configureBaseLogger = _chunkDXXJPH55cjs.configureBaseLogger; exports.configureDefaultLogger = _chunkDXXJPH55cjs.configureDefaultLogger; exports.getBaseLogger = _chunkDXXJPH55cjs.getBaseLogger; exports.getIncludeTarget = _chunkDXXJPH55cjs.getIncludeTarget; exports.getLogger = _chunkDXXJPH55cjs.getLogger; exports.getPinoLevel = _chunkDXXJPH55cjs.getPinoLevel;
19
+ exports.LogLevelSchema = _chunkMNHKOS6Lcjs.LogLevelSchema; exports.configureBaseLogger = _chunkMNHKOS6Lcjs.configureBaseLogger; exports.configureDefaultLogger = _chunkMNHKOS6Lcjs.configureDefaultLogger; exports.getBaseLogger = _chunkMNHKOS6Lcjs.getBaseLogger; exports.getIncludeTarget = _chunkMNHKOS6Lcjs.getIncludeTarget; exports.getLogger = _chunkMNHKOS6Lcjs.getLogger; exports.getPinoLevel = _chunkMNHKOS6Lcjs.getPinoLevel;
20
20
  //# sourceMappingURL=log.cjs.map
@@ -6,8 +6,8 @@ import {
6
6
  getIncludeTarget,
7
7
  getLogger,
8
8
  getPinoLevel
9
- } from "../chunk-VTTFNQQI.js";
10
- import "../chunk-BRP62GZC.js";
9
+ } from "../chunk-L2X3YFER.js";
10
+ import "../chunk-ZZ3WBRPD.js";
11
11
  export {
12
12
  LogLevelSchema,
13
13
  configureBaseLogger,
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkLVTBW2REcjs = require('../chunk-LVTBW2RE.cjs');
4
- require('../chunk-DXXJPH55.cjs');
5
- require('../chunk-KORQB2IR.cjs');
3
+ var _chunkOZBCXBVPcjs = require('../chunk-OZBCXBVP.cjs');
4
+ require('../chunk-MNHKOS6L.cjs');
5
+ require('../chunk-4FC7TVS6.cjs');
6
6
 
7
7
 
8
- exports.importWebSocket = _chunkLVTBW2REcjs.importWebSocket;
8
+ exports.importWebSocket = _chunkOZBCXBVPcjs.importWebSocket;
9
9
  //# sourceMappingURL=websocket.cjs.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  importWebSocket
3
- } from "../chunk-BEI24WTI.js";
4
- import "../chunk-VTTFNQQI.js";
5
- import "../chunk-BRP62GZC.js";
3
+ } from "../chunk-JBUZRPY5.js";
4
+ import "../chunk-L2X3YFER.js";
5
+ import "../chunk-ZZ3WBRPD.js";
6
6
  export {
7
7
  importWebSocket
8
8
  };
@@ -7,7 +7,7 @@ import { UniversalWebSocket } from '@rivetkit/virtual-websocket';
7
7
  import { StandardSchemaV1 } from '@standard-schema/spec';
8
8
  import { Context, Hono } from 'hono';
9
9
  import { GetUpgradeWebSocket } from './utils.cjs';
10
- import { R as RivetError } from './utils-DQosb24I.cjs';
10
+ import { R as RivetError } from './utils-CqDnC_PS.cjs';
11
11
 
12
12
  declare const ActorKeySchema: z.ZodArray<z.ZodString>;
13
13
  type ActorKey = z.infer<typeof ActorKeySchema>;
@@ -760,6 +760,11 @@ interface RuntimeServeConfig {
760
760
  serverlessValidateEndpoint: boolean;
761
761
  serverlessMaxStartPayloadBytes: number;
762
762
  }
763
+ interface RuntimeListenerConfig {
764
+ port: number;
765
+ host?: string;
766
+ publicDir?: string;
767
+ }
763
768
  interface RuntimeServerlessRequest {
764
769
  method: string;
765
770
  url: string;
@@ -806,6 +811,7 @@ interface CoreRuntime {
806
811
  shutdownRegistry(registry: RegistryHandle): Promise<void>;
807
812
  registryActorStopThresholdMs?(registry: RegistryHandle): Promise<number | undefined>;
808
813
  handleServerlessRequest(registry: RegistryHandle, req: RuntimeServerlessRequest, onStreamEvent: RuntimeServerlessStreamCallback, cancelToken: CancellationTokenHandle, config: RuntimeServeConfig): Promise<RuntimeServerlessResponseHead>;
814
+ serveListener(registry: RegistryHandle, listener: RuntimeListenerConfig, config: RuntimeServeConfig): Promise<void>;
809
815
  registryHealth?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
810
816
  registryMetadata?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
811
817
  registryMetrics?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
@@ -938,13 +944,15 @@ declare class Registry<A extends RegistryActors> {
938
944
  */
939
945
  serve(): ServerlessHandler;
940
946
  /**
941
- * Starts an HTTP server that dispatches every request through the
942
- * serverless handler. Uses `crossPlatformServe` to pick the right
943
- * runtime (Node, Bun, Deno).
947
+ * Bind an HTTP listener provided by the native (Rust) runtime and serve
948
+ * the registry's serverless endpoints over it. Resolves only after the
949
+ * registry is shut down (SIGINT/SIGTERM or `nativeRegistry.shutdown()`).
944
950
  *
945
- * @param opts.port Port to listen on. Defaults to 3000.
951
+ * @param opts.port Port to listen on. Defaults to `process.env.RIVET_PORT`
952
+ * if set, otherwise 3000.
953
+ * @param opts.host Address to bind. Defaults to `0.0.0.0`.
946
954
  * @param opts.publicDir If set, serves static files from this directory
947
- * before falling through to the registry handler.
955
+ * as a fallback below the framework routes.
948
956
  *
949
957
  * @example
950
958
  * ```ts
@@ -954,6 +962,7 @@ declare class Registry<A extends RegistryActors> {
954
962
  */
955
963
  listen(opts?: {
956
964
  port?: number;
965
+ host?: string;
957
966
  publicDir?: string;
958
967
  }): Promise<void>;
959
968
  /**
@@ -981,6 +990,10 @@ declare class Registry<A extends RegistryActors> {
981
990
  /**
982
991
  * Starts the actor envoy for standalone server deployments.
983
992
  *
993
+ * Set `RIVETKIT_RUNTIME_MODE=serverless` to instead bind an HTTP listener
994
+ * via `listen()` (Mode B). Mode A (envoy) and Mode B (listener) are
995
+ * mutually exclusive per registry instance.
996
+ *
984
997
  * @example
985
998
  * ```ts
986
999
  * const registry = setup({ use: { counter } });
@@ -1829,6 +1842,8 @@ declare function getRunMetadata(run: ((...args: any[]) => any) | AnyRunConfig |
1829
1842
  };
1830
1843
  /** Extract run inspector configuration if provided. */
1831
1844
  declare function getRunInspectorConfig(run: ((...args: any[]) => any) | AnyRunConfig | undefined, actor?: unknown): RunInspectorConfig | undefined;
1845
+ /** Release per-actor inspector state for a destroyed actor, if the run handler registered a disposer. */
1846
+ declare function disposeRunInspector(run: ((...args: any[]) => any) | AnyRunConfig | undefined, actorId: string): void;
1832
1847
  declare const GlobalActorOptionsSchema: z.ZodPrefault<z.ZodObject<{
1833
1848
  name: z.ZodOptional<z.ZodString>;
1834
1849
  icon: z.ZodOptional<z.ZodString>;
@@ -2245,4 +2260,4 @@ declare const DocActorConfigSchema: z.ZodObject<{
2245
2260
  }, z.core.$strip>>;
2246
2261
  }, z.core.$strip>;
2247
2262
 
2248
- export { type Conn as $, type AnyActorDefinition as A, type BaseActorDefinition as B, type ConnectContext as C, type DestroyContext as D, type EventSchemaConfig as E, type ActorQuery as F, type ActorQueue as G, type ActorSchedule as H, type ActorTypes as I, ActorsSchema as J, type AnyActorInstance as K, type AnyClient as L, type MigrateContext as M, type AnyConn as N, type AnyStaticActorDefinition as O, type AnyStaticActorInstance as P, type QueueSchemaConfig as Q, type RequestContext as R, type SleepContext as S, type AuthIntent as T, BUILTIN_INSPECTOR_TAB_IDS as U, type BaseActorInstance as V, type WakeContext as W, BuiltinInspectorTabIdSchema as X, CONN_DRIVER_SYMBOL as Y, CONN_STATE_MANAGER_SYMBOL as Z, type Client as _, type ActionContext as a, getRunInspectorConfig as a$, CustomInspectorTabEntrySchema as a0, DEFAULT_SLEEP_GRACE_PERIOD as a1, DocActorConfigSchema as a2, DocActorOptionsSchema as a3, DocConfigurePoolSchema as a4, DocEnvoyConfigSchema as a5, DocRegistryConfigSchema as a6, DocServerlessConfigSchema as a7, DocSqliteConfigSchema as a8, type Encoding as a9, type RegistryConfigInput as aA, RegistryConfigSchema as aB, type RegistryDeps as aC, type RegistryRoutes as aD, type RunConfig as aE, RunConfigSchema as aF, type RunInspectorConfig as aG, type RuntimeKind as aH, RuntimeKindSchema as aI, type ServerlessHandler as aJ, type SqliteBackend as aK, SqliteBackendSchema as aL, type SqliteConfig as aM, SqliteConfigSchema as aN, type TestConfig as aO, TestConfigSchema as aP, type Type as aQ, type WasmRuntimeBindings as aR, type WasmRuntimeConfig as aS, WasmRuntimeConfigSchema as aT, type WasmRuntimeInitInput as aU, type WorkflowInspectorConfig as aV, actor as aW, buildActorNames as aX, createClientWithDriver as aY, event as aZ, getRunFunction as a_, type FetchHandler as aa, type GlobalActorOptions as ab, type GlobalActorOptionsInput as ac, GlobalActorOptionsSchema as ad, HideInspectorTabEntrySchema as ae, InspectorTabEntrySchema as af, type InspectorUnsubscribe as ag, type InstanceActorOptions as ah, type InstanceActorOptionsInput as ai, InstanceActorOptionsSchema as aj, type QueueEnqueueAndWaitOptions as ak, type QueueFilterName as al, type QueueIterOptions as am, type QueueMessageOf as an, type QueueName as ao, type QueueNextBatchOptions as ap, type QueueNextOptions as aq, type QueueResultMessageForName as ar, type QueueTryNextBatchOptions as as, type QueueTryNextOptions as at, type QueueWaitOptions as au, RAW_STATE_SYMBOL as av, RUN_FUNCTION_CONFIG_SYMBOL as aw, Registry as ax, type RegistryActors as ay, type RegistryConfig as az, type BeforeActionResponseContext as b, getRunMetadata as b0, isStaticActorDefinition as b1, isStaticActorInstance as b2, lookupInRegistry as b3, queue as b4, setup as b5, test as b6, type ActorAccessor as b7, type ActorActionFunction as b8, type ActorActionOptions as b9, type ActorConn as ba, ActorConnRaw as bb, type ActorConnStatus as bc, type ActorConnectOptions as bd, type ActorGatewayOptions as be, type ActorHandle as bf, ActorHandleRaw as bg, ClientRaw as bh, type ConnectionStateCallback as bi, type CreateOptions as bj, type CreateRequest as bk, type EventUnsubscribe as bl, type ExtractActorsFromRegistry as bm, type ExtractRegistryFromClient as bn, type GetOptions as bo, type GetWithIdOptions as bp, type QueryOptions as bq, type Region as br, type StatusChangeCallback as bs, type InferSchemaMap as bt, type InferEventArgs as bu, type BeforeConnectContext as c, type CreateConnStateContext as d, type CreateContext as e, type CreateVarsContext as f, type DisconnectContext as g, type RunContext as h, type StateChangeContext as i, type WebSocketContext as j, ACTOR_CONTEXT_INTERNAL_SYMBOL as k, type Actions as l, type ActorConfig as m, type ActorConfigInput as n, ActorConfigSchema as o, type ActorContext as p, type ActorContextOf as q, ActorDefinition as r, type ActorInspectorConfig as s, ActorInspectorConfigSchema as t, type ActorKey as u, type ActorKv as v, type ActorLogger as w, type ActorOptions as x, type ActorOptionsInput as y, ActorOptionsSchema as z };
2263
+ export { type Conn as $, type AnyActorDefinition as A, type BaseActorDefinition as B, type ConnectContext as C, type DestroyContext as D, type EventSchemaConfig as E, type ActorQuery as F, type ActorQueue as G, type ActorSchedule as H, type ActorTypes as I, ActorsSchema as J, type AnyActorInstance as K, type AnyClient as L, type MigrateContext as M, type AnyConn as N, type AnyStaticActorDefinition as O, type AnyStaticActorInstance as P, type QueueSchemaConfig as Q, type RequestContext as R, type SleepContext as S, type AuthIntent as T, BUILTIN_INSPECTOR_TAB_IDS as U, type BaseActorInstance as V, type WakeContext as W, BuiltinInspectorTabIdSchema as X, CONN_DRIVER_SYMBOL as Y, CONN_STATE_MANAGER_SYMBOL as Z, type Client as _, type ActionContext as a, getRunFunction as a$, CustomInspectorTabEntrySchema as a0, DEFAULT_SLEEP_GRACE_PERIOD as a1, DocActorConfigSchema as a2, DocActorOptionsSchema as a3, DocConfigurePoolSchema as a4, DocEnvoyConfigSchema as a5, DocRegistryConfigSchema as a6, DocServerlessConfigSchema as a7, DocSqliteConfigSchema as a8, type Encoding as a9, type RegistryConfigInput as aA, RegistryConfigSchema as aB, type RegistryDeps as aC, type RegistryRoutes as aD, type RunConfig as aE, RunConfigSchema as aF, type RunInspectorConfig as aG, type RuntimeKind as aH, RuntimeKindSchema as aI, type ServerlessHandler as aJ, type SqliteBackend as aK, SqliteBackendSchema as aL, type SqliteConfig as aM, SqliteConfigSchema as aN, type TestConfig as aO, TestConfigSchema as aP, type Type as aQ, type WasmRuntimeBindings as aR, type WasmRuntimeConfig as aS, WasmRuntimeConfigSchema as aT, type WasmRuntimeInitInput as aU, type WorkflowInspectorConfig as aV, actor as aW, buildActorNames as aX, createClientWithDriver as aY, disposeRunInspector as aZ, event as a_, type FetchHandler as aa, type GlobalActorOptions as ab, type GlobalActorOptionsInput as ac, GlobalActorOptionsSchema as ad, HideInspectorTabEntrySchema as ae, InspectorTabEntrySchema as af, type InspectorUnsubscribe as ag, type InstanceActorOptions as ah, type InstanceActorOptionsInput as ai, InstanceActorOptionsSchema as aj, type QueueEnqueueAndWaitOptions as ak, type QueueFilterName as al, type QueueIterOptions as am, type QueueMessageOf as an, type QueueName as ao, type QueueNextBatchOptions as ap, type QueueNextOptions as aq, type QueueResultMessageForName as ar, type QueueTryNextBatchOptions as as, type QueueTryNextOptions as at, type QueueWaitOptions as au, RAW_STATE_SYMBOL as av, RUN_FUNCTION_CONFIG_SYMBOL as aw, Registry as ax, type RegistryActors as ay, type RegistryConfig as az, type BeforeActionResponseContext as b, getRunInspectorConfig as b0, getRunMetadata as b1, isStaticActorDefinition as b2, isStaticActorInstance as b3, lookupInRegistry as b4, queue as b5, setup as b6, test as b7, type ActorAccessor as b8, type ActorActionFunction as b9, type ActorActionOptions as ba, type ActorConn as bb, ActorConnRaw as bc, type ActorConnStatus as bd, type ActorConnectOptions as be, type ActorGatewayOptions as bf, type ActorHandle as bg, ActorHandleRaw as bh, ClientRaw as bi, type ConnectionStateCallback as bj, type CreateOptions as bk, type CreateRequest as bl, type EventUnsubscribe as bm, type ExtractActorsFromRegistry as bn, type ExtractRegistryFromClient as bo, type GetOptions as bp, type GetWithIdOptions as bq, type QueryOptions as br, type Region as bs, type StatusChangeCallback as bt, type InferEventArgs as bu, type InferSchemaMap as bv, type BeforeConnectContext as c, type CreateConnStateContext as d, type CreateContext as e, type CreateVarsContext as f, type DisconnectContext as g, type RunContext as h, type StateChangeContext as i, type WebSocketContext as j, ACTOR_CONTEXT_INTERNAL_SYMBOL as k, type Actions as l, type ActorConfig as m, type ActorConfigInput as n, ActorConfigSchema as o, type ActorContext as p, type ActorContextOf as q, ActorDefinition as r, type ActorInspectorConfig as s, ActorInspectorConfigSchema as t, type ActorKey as u, type ActorKv as v, type ActorLogger as w, type ActorOptions as x, type ActorOptionsInput as y, ActorOptionsSchema as z };
@@ -7,7 +7,7 @@ import { UniversalWebSocket } from '@rivetkit/virtual-websocket';
7
7
  import { StandardSchemaV1 } from '@standard-schema/spec';
8
8
  import { Context, Hono } from 'hono';
9
9
  import { GetUpgradeWebSocket } from './utils.js';
10
- import { R as RivetError } from './utils-DQosb24I.js';
10
+ import { R as RivetError } from './utils-CqDnC_PS.js';
11
11
 
12
12
  declare const ActorKeySchema: z.ZodArray<z.ZodString>;
13
13
  type ActorKey = z.infer<typeof ActorKeySchema>;
@@ -760,6 +760,11 @@ interface RuntimeServeConfig {
760
760
  serverlessValidateEndpoint: boolean;
761
761
  serverlessMaxStartPayloadBytes: number;
762
762
  }
763
+ interface RuntimeListenerConfig {
764
+ port: number;
765
+ host?: string;
766
+ publicDir?: string;
767
+ }
763
768
  interface RuntimeServerlessRequest {
764
769
  method: string;
765
770
  url: string;
@@ -806,6 +811,7 @@ interface CoreRuntime {
806
811
  shutdownRegistry(registry: RegistryHandle): Promise<void>;
807
812
  registryActorStopThresholdMs?(registry: RegistryHandle): Promise<number | undefined>;
808
813
  handleServerlessRequest(registry: RegistryHandle, req: RuntimeServerlessRequest, onStreamEvent: RuntimeServerlessStreamCallback, cancelToken: CancellationTokenHandle, config: RuntimeServeConfig): Promise<RuntimeServerlessResponseHead>;
814
+ serveListener(registry: RegistryHandle, listener: RuntimeListenerConfig, config: RuntimeServeConfig): Promise<void>;
809
815
  registryHealth?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
810
816
  registryMetadata?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
811
817
  registryMetrics?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
@@ -938,13 +944,15 @@ declare class Registry<A extends RegistryActors> {
938
944
  */
939
945
  serve(): ServerlessHandler;
940
946
  /**
941
- * Starts an HTTP server that dispatches every request through the
942
- * serverless handler. Uses `crossPlatformServe` to pick the right
943
- * runtime (Node, Bun, Deno).
947
+ * Bind an HTTP listener provided by the native (Rust) runtime and serve
948
+ * the registry's serverless endpoints over it. Resolves only after the
949
+ * registry is shut down (SIGINT/SIGTERM or `nativeRegistry.shutdown()`).
944
950
  *
945
- * @param opts.port Port to listen on. Defaults to 3000.
951
+ * @param opts.port Port to listen on. Defaults to `process.env.RIVET_PORT`
952
+ * if set, otherwise 3000.
953
+ * @param opts.host Address to bind. Defaults to `0.0.0.0`.
946
954
  * @param opts.publicDir If set, serves static files from this directory
947
- * before falling through to the registry handler.
955
+ * as a fallback below the framework routes.
948
956
  *
949
957
  * @example
950
958
  * ```ts
@@ -954,6 +962,7 @@ declare class Registry<A extends RegistryActors> {
954
962
  */
955
963
  listen(opts?: {
956
964
  port?: number;
965
+ host?: string;
957
966
  publicDir?: string;
958
967
  }): Promise<void>;
959
968
  /**
@@ -981,6 +990,10 @@ declare class Registry<A extends RegistryActors> {
981
990
  /**
982
991
  * Starts the actor envoy for standalone server deployments.
983
992
  *
993
+ * Set `RIVETKIT_RUNTIME_MODE=serverless` to instead bind an HTTP listener
994
+ * via `listen()` (Mode B). Mode A (envoy) and Mode B (listener) are
995
+ * mutually exclusive per registry instance.
996
+ *
984
997
  * @example
985
998
  * ```ts
986
999
  * const registry = setup({ use: { counter } });
@@ -1829,6 +1842,8 @@ declare function getRunMetadata(run: ((...args: any[]) => any) | AnyRunConfig |
1829
1842
  };
1830
1843
  /** Extract run inspector configuration if provided. */
1831
1844
  declare function getRunInspectorConfig(run: ((...args: any[]) => any) | AnyRunConfig | undefined, actor?: unknown): RunInspectorConfig | undefined;
1845
+ /** Release per-actor inspector state for a destroyed actor, if the run handler registered a disposer. */
1846
+ declare function disposeRunInspector(run: ((...args: any[]) => any) | AnyRunConfig | undefined, actorId: string): void;
1832
1847
  declare const GlobalActorOptionsSchema: z.ZodPrefault<z.ZodObject<{
1833
1848
  name: z.ZodOptional<z.ZodString>;
1834
1849
  icon: z.ZodOptional<z.ZodString>;
@@ -2245,4 +2260,4 @@ declare const DocActorConfigSchema: z.ZodObject<{
2245
2260
  }, z.core.$strip>>;
2246
2261
  }, z.core.$strip>;
2247
2262
 
2248
- export { type Conn as $, type AnyActorDefinition as A, type BaseActorDefinition as B, type ConnectContext as C, type DestroyContext as D, type EventSchemaConfig as E, type ActorQuery as F, type ActorQueue as G, type ActorSchedule as H, type ActorTypes as I, ActorsSchema as J, type AnyActorInstance as K, type AnyClient as L, type MigrateContext as M, type AnyConn as N, type AnyStaticActorDefinition as O, type AnyStaticActorInstance as P, type QueueSchemaConfig as Q, type RequestContext as R, type SleepContext as S, type AuthIntent as T, BUILTIN_INSPECTOR_TAB_IDS as U, type BaseActorInstance as V, type WakeContext as W, BuiltinInspectorTabIdSchema as X, CONN_DRIVER_SYMBOL as Y, CONN_STATE_MANAGER_SYMBOL as Z, type Client as _, type ActionContext as a, getRunInspectorConfig as a$, CustomInspectorTabEntrySchema as a0, DEFAULT_SLEEP_GRACE_PERIOD as a1, DocActorConfigSchema as a2, DocActorOptionsSchema as a3, DocConfigurePoolSchema as a4, DocEnvoyConfigSchema as a5, DocRegistryConfigSchema as a6, DocServerlessConfigSchema as a7, DocSqliteConfigSchema as a8, type Encoding as a9, type RegistryConfigInput as aA, RegistryConfigSchema as aB, type RegistryDeps as aC, type RegistryRoutes as aD, type RunConfig as aE, RunConfigSchema as aF, type RunInspectorConfig as aG, type RuntimeKind as aH, RuntimeKindSchema as aI, type ServerlessHandler as aJ, type SqliteBackend as aK, SqliteBackendSchema as aL, type SqliteConfig as aM, SqliteConfigSchema as aN, type TestConfig as aO, TestConfigSchema as aP, type Type as aQ, type WasmRuntimeBindings as aR, type WasmRuntimeConfig as aS, WasmRuntimeConfigSchema as aT, type WasmRuntimeInitInput as aU, type WorkflowInspectorConfig as aV, actor as aW, buildActorNames as aX, createClientWithDriver as aY, event as aZ, getRunFunction as a_, type FetchHandler as aa, type GlobalActorOptions as ab, type GlobalActorOptionsInput as ac, GlobalActorOptionsSchema as ad, HideInspectorTabEntrySchema as ae, InspectorTabEntrySchema as af, type InspectorUnsubscribe as ag, type InstanceActorOptions as ah, type InstanceActorOptionsInput as ai, InstanceActorOptionsSchema as aj, type QueueEnqueueAndWaitOptions as ak, type QueueFilterName as al, type QueueIterOptions as am, type QueueMessageOf as an, type QueueName as ao, type QueueNextBatchOptions as ap, type QueueNextOptions as aq, type QueueResultMessageForName as ar, type QueueTryNextBatchOptions as as, type QueueTryNextOptions as at, type QueueWaitOptions as au, RAW_STATE_SYMBOL as av, RUN_FUNCTION_CONFIG_SYMBOL as aw, Registry as ax, type RegistryActors as ay, type RegistryConfig as az, type BeforeActionResponseContext as b, getRunMetadata as b0, isStaticActorDefinition as b1, isStaticActorInstance as b2, lookupInRegistry as b3, queue as b4, setup as b5, test as b6, type ActorAccessor as b7, type ActorActionFunction as b8, type ActorActionOptions as b9, type ActorConn as ba, ActorConnRaw as bb, type ActorConnStatus as bc, type ActorConnectOptions as bd, type ActorGatewayOptions as be, type ActorHandle as bf, ActorHandleRaw as bg, ClientRaw as bh, type ConnectionStateCallback as bi, type CreateOptions as bj, type CreateRequest as bk, type EventUnsubscribe as bl, type ExtractActorsFromRegistry as bm, type ExtractRegistryFromClient as bn, type GetOptions as bo, type GetWithIdOptions as bp, type QueryOptions as bq, type Region as br, type StatusChangeCallback as bs, type InferSchemaMap as bt, type InferEventArgs as bu, type BeforeConnectContext as c, type CreateConnStateContext as d, type CreateContext as e, type CreateVarsContext as f, type DisconnectContext as g, type RunContext as h, type StateChangeContext as i, type WebSocketContext as j, ACTOR_CONTEXT_INTERNAL_SYMBOL as k, type Actions as l, type ActorConfig as m, type ActorConfigInput as n, ActorConfigSchema as o, type ActorContext as p, type ActorContextOf as q, ActorDefinition as r, type ActorInspectorConfig as s, ActorInspectorConfigSchema as t, type ActorKey as u, type ActorKv as v, type ActorLogger as w, type ActorOptions as x, type ActorOptionsInput as y, ActorOptionsSchema as z };
2263
+ export { type Conn as $, type AnyActorDefinition as A, type BaseActorDefinition as B, type ConnectContext as C, type DestroyContext as D, type EventSchemaConfig as E, type ActorQuery as F, type ActorQueue as G, type ActorSchedule as H, type ActorTypes as I, ActorsSchema as J, type AnyActorInstance as K, type AnyClient as L, type MigrateContext as M, type AnyConn as N, type AnyStaticActorDefinition as O, type AnyStaticActorInstance as P, type QueueSchemaConfig as Q, type RequestContext as R, type SleepContext as S, type AuthIntent as T, BUILTIN_INSPECTOR_TAB_IDS as U, type BaseActorInstance as V, type WakeContext as W, BuiltinInspectorTabIdSchema as X, CONN_DRIVER_SYMBOL as Y, CONN_STATE_MANAGER_SYMBOL as Z, type Client as _, type ActionContext as a, getRunFunction as a$, CustomInspectorTabEntrySchema as a0, DEFAULT_SLEEP_GRACE_PERIOD as a1, DocActorConfigSchema as a2, DocActorOptionsSchema as a3, DocConfigurePoolSchema as a4, DocEnvoyConfigSchema as a5, DocRegistryConfigSchema as a6, DocServerlessConfigSchema as a7, DocSqliteConfigSchema as a8, type Encoding as a9, type RegistryConfigInput as aA, RegistryConfigSchema as aB, type RegistryDeps as aC, type RegistryRoutes as aD, type RunConfig as aE, RunConfigSchema as aF, type RunInspectorConfig as aG, type RuntimeKind as aH, RuntimeKindSchema as aI, type ServerlessHandler as aJ, type SqliteBackend as aK, SqliteBackendSchema as aL, type SqliteConfig as aM, SqliteConfigSchema as aN, type TestConfig as aO, TestConfigSchema as aP, type Type as aQ, type WasmRuntimeBindings as aR, type WasmRuntimeConfig as aS, WasmRuntimeConfigSchema as aT, type WasmRuntimeInitInput as aU, type WorkflowInspectorConfig as aV, actor as aW, buildActorNames as aX, createClientWithDriver as aY, disposeRunInspector as aZ, event as a_, type FetchHandler as aa, type GlobalActorOptions as ab, type GlobalActorOptionsInput as ac, GlobalActorOptionsSchema as ad, HideInspectorTabEntrySchema as ae, InspectorTabEntrySchema as af, type InspectorUnsubscribe as ag, type InstanceActorOptions as ah, type InstanceActorOptionsInput as ai, InstanceActorOptionsSchema as aj, type QueueEnqueueAndWaitOptions as ak, type QueueFilterName as al, type QueueIterOptions as am, type QueueMessageOf as an, type QueueName as ao, type QueueNextBatchOptions as ap, type QueueNextOptions as aq, type QueueResultMessageForName as ar, type QueueTryNextBatchOptions as as, type QueueTryNextOptions as at, type QueueWaitOptions as au, RAW_STATE_SYMBOL as av, RUN_FUNCTION_CONFIG_SYMBOL as aw, Registry as ax, type RegistryActors as ay, type RegistryConfig as az, type BeforeActionResponseContext as b, getRunInspectorConfig as b0, getRunMetadata as b1, isStaticActorDefinition as b2, isStaticActorInstance as b3, lookupInRegistry as b4, queue as b5, setup as b6, test as b7, type ActorAccessor as b8, type ActorActionFunction as b9, type ActorActionOptions as ba, type ActorConn as bb, ActorConnRaw as bc, type ActorConnStatus as bd, type ActorConnectOptions as be, type ActorGatewayOptions as bf, type ActorHandle as bg, ActorHandleRaw as bh, ClientRaw as bi, type ConnectionStateCallback as bj, type CreateOptions as bk, type CreateRequest as bl, type EventUnsubscribe as bm, type ExtractActorsFromRegistry as bn, type ExtractRegistryFromClient as bo, type GetOptions as bp, type GetWithIdOptions as bq, type QueryOptions as br, type Region as bs, type StatusChangeCallback as bt, type InferEventArgs as bu, type InferSchemaMap as bv, type BeforeConnectContext as c, type CreateConnStateContext as d, type CreateContext as e, type CreateVarsContext as f, type DisconnectContext as g, type RunContext as h, type StateChangeContext as i, type WebSocketContext as j, ACTOR_CONTEXT_INTERNAL_SYMBOL as k, type Actions as l, type ActorConfig as m, type ActorConfigInput as n, ActorConfigSchema as o, type ActorContext as p, type ActorContextOf as q, ActorDefinition as r, type ActorInspectorConfig as s, ActorInspectorConfigSchema as t, type ActorKey as u, type ActorKv as v, type ActorLogger as w, type ActorOptions as x, type ActorOptionsInput as y, ActorOptionsSchema as z };