rivetkit 2.3.0-rc.8 → 2.3.0

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 (221) hide show
  1. package/dist/browser/client.d.ts +481 -74
  2. package/dist/browser/client.js +174 -148
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +47 -18
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/actor/errors.cjs +2 -2
  7. package/dist/tsup/actor/errors.d.cts +1 -1
  8. package/dist/tsup/actor/errors.d.ts +1 -1
  9. package/dist/tsup/actor/errors.js +1 -1
  10. package/dist/tsup/agent-os/index.cjs +2160 -2086
  11. package/dist/tsup/agent-os/index.cjs.map +1 -1
  12. package/dist/tsup/agent-os/index.d.cts +479 -73
  13. package/dist/tsup/agent-os/index.d.ts +479 -73
  14. package/dist/tsup/agent-os/index.js +2160 -2086
  15. package/dist/tsup/agent-os/index.js.map +1 -1
  16. package/dist/tsup/{chunk-KY3CERZR.js → chunk-2OTRTA3J.js} +7 -21
  17. package/dist/tsup/chunk-2OTRTA3J.js.map +1 -0
  18. package/dist/tsup/{chunk-HGW6PBWR.cjs → chunk-3677IIOV.cjs} +11 -25
  19. package/dist/tsup/chunk-3677IIOV.cjs.map +1 -0
  20. package/dist/tsup/{chunk-OT7FF6GB.cjs → chunk-47HHIEXH.cjs} +24 -9
  21. package/dist/tsup/chunk-47HHIEXH.cjs.map +1 -0
  22. package/dist/tsup/{chunk-EMFKMVJR.js → chunk-4JDSFJS5.js} +69 -58
  23. package/dist/tsup/chunk-4JDSFJS5.js.map +1 -0
  24. package/dist/tsup/{chunk-7HLFSAJP.cjs → chunk-7QKCIVAY.cjs} +225 -214
  25. package/dist/tsup/chunk-7QKCIVAY.cjs.map +1 -0
  26. package/dist/tsup/{chunk-AWTPTUQ7.cjs → chunk-B6VUNZUD.cjs} +10 -10
  27. package/dist/tsup/{chunk-AWTPTUQ7.cjs.map → chunk-B6VUNZUD.cjs.map} +1 -1
  28. package/dist/tsup/{chunk-D3T3ZBSY.js → chunk-BEI24WTI.js} +2 -2
  29. package/dist/tsup/{chunk-TMLOKTRB.js → chunk-BRP62GZC.js} +1 -1
  30. package/dist/tsup/chunk-BRP62GZC.js.map +1 -0
  31. package/dist/tsup/{chunk-D5G75T7J.js → chunk-DPIMKYNB.js} +61 -2
  32. package/dist/tsup/chunk-DPIMKYNB.js.map +1 -0
  33. package/dist/tsup/{chunk-BATTOVHF.cjs → chunk-DXXJPH55.cjs} +40 -13
  34. package/dist/tsup/chunk-DXXJPH55.cjs.map +1 -0
  35. package/dist/tsup/{chunk-3YY5S6TV.js → chunk-HXUEHHJF.js} +2 -2
  36. package/dist/tsup/chunk-HXUEHHJF.js.map +1 -0
  37. package/dist/tsup/{chunk-4BPKKZJO.cjs → chunk-I4LN3FNT.cjs} +10 -10
  38. package/dist/tsup/chunk-I4LN3FNT.cjs.map +1 -0
  39. package/dist/tsup/{chunk-PCBNKI2J.js → chunk-JZ7TWV65.js} +1 -1
  40. package/dist/tsup/chunk-JZ7TWV65.js.map +1 -0
  41. package/dist/tsup/{chunk-63WNTDRC.cjs → chunk-KORQB2IR.cjs} +1 -1
  42. package/dist/tsup/{chunk-63WNTDRC.cjs.map → chunk-KORQB2IR.cjs.map} +1 -1
  43. package/dist/tsup/{chunk-6TQSSJ4F.cjs → chunk-LVTBW2RE.cjs} +3 -3
  44. package/dist/tsup/{chunk-6TQSSJ4F.cjs.map → chunk-LVTBW2RE.cjs.map} +1 -1
  45. package/dist/tsup/{chunk-4JU3IPG2.js → chunk-MEHBWPLJ.js} +6 -6
  46. package/dist/tsup/chunk-MEHBWPLJ.js.map +1 -0
  47. package/dist/tsup/{chunk-SRNOPUC6.cjs → chunk-NIY3RSPX.cjs} +62 -3
  48. package/dist/tsup/chunk-NIY3RSPX.cjs.map +1 -0
  49. package/dist/tsup/{chunk-UZXQEGVJ.js → chunk-P2GNQ4RN.js} +4 -4
  50. package/dist/tsup/{chunk-UZXQEGVJ.js.map → chunk-P2GNQ4RN.js.map} +1 -1
  51. package/dist/tsup/{chunk-VUGENVIK.js → chunk-UMZVD6DQ.js} +22 -7
  52. package/dist/tsup/chunk-UMZVD6DQ.js.map +1 -0
  53. package/dist/tsup/{chunk-LD5YASJU.cjs → chunk-VE2X4KMG.cjs} +2 -2
  54. package/dist/tsup/{chunk-LD5YASJU.cjs.map → chunk-VE2X4KMG.cjs.map} +1 -1
  55. package/dist/tsup/{chunk-GBG63SUG.js → chunk-VTTFNQQI.js} +32 -5
  56. package/dist/tsup/chunk-VTTFNQQI.js.map +1 -0
  57. package/dist/tsup/{chunk-2NDZ7JCR.cjs → chunk-ZA7FLHKH.cjs} +1 -1
  58. package/dist/tsup/chunk-ZA7FLHKH.cjs.map +1 -0
  59. package/dist/tsup/client/mod.cjs +9 -9
  60. package/dist/tsup/client/mod.d.cts +5 -5
  61. package/dist/tsup/client/mod.d.ts +5 -5
  62. package/dist/tsup/client/mod.js +8 -8
  63. package/dist/tsup/common/log.cjs +3 -3
  64. package/dist/tsup/common/log.js +2 -2
  65. package/dist/tsup/common/websocket.cjs +4 -4
  66. package/dist/tsup/common/websocket.js +3 -3
  67. package/dist/tsup/{config-Ak1lv4gF.d.ts → config-BxWAw3iH.d.ts} +512 -27
  68. package/dist/tsup/{config-DU_xj4qZ.d.cts → config-CZQQ-mso.d.cts} +512 -27
  69. package/dist/tsup/{config-CxjGYf4K.d.ts → config-D49x8NpL.d.cts} +1 -2
  70. package/dist/tsup/{config-CxjGYf4K.d.cts → config-D49x8NpL.d.ts} +1 -2
  71. package/dist/tsup/{context-DAAp4Lpg.d.ts → context-Bw7xq8w3.d.cts} +8 -8
  72. package/dist/tsup/{context-Dt_L55q8.d.cts → context-D8QA76sV.d.ts} +8 -8
  73. package/dist/tsup/db/drizzle.cjs +3 -3
  74. package/dist/tsup/db/drizzle.d.cts +1 -1
  75. package/dist/tsup/db/drizzle.d.ts +1 -1
  76. package/dist/tsup/db/drizzle.js +1 -1
  77. package/dist/tsup/db/mod.cjs +2 -2
  78. package/dist/tsup/db/mod.d.cts +2 -2
  79. package/dist/tsup/db/mod.d.ts +2 -2
  80. package/dist/tsup/db/mod.js +1 -1
  81. package/dist/tsup/dynamic/mod.cjs +24 -0
  82. package/dist/tsup/dynamic/mod.cjs.map +1 -0
  83. package/dist/tsup/dynamic/mod.d.cts +37 -0
  84. package/dist/tsup/dynamic/mod.d.ts +37 -0
  85. package/dist/tsup/dynamic/mod.js +24 -0
  86. package/dist/tsup/dynamic/mod.js.map +1 -0
  87. package/dist/tsup/inspector/mod.cjs +6 -6
  88. package/dist/tsup/inspector/mod.js +5 -5
  89. package/dist/tsup/inspector-tab/mod.cjs +173 -0
  90. package/dist/tsup/inspector-tab/mod.cjs.map +1 -0
  91. package/dist/tsup/inspector-tab/mod.d.cts +250 -0
  92. package/dist/tsup/inspector-tab/mod.d.ts +250 -0
  93. package/dist/tsup/inspector-tab/mod.js +173 -0
  94. package/dist/tsup/inspector-tab/mod.js.map +1 -0
  95. package/dist/tsup/mod.cjs +615 -348
  96. package/dist/tsup/mod.cjs.map +1 -1
  97. package/dist/tsup/mod.d.cts +5 -5
  98. package/dist/tsup/mod.d.ts +5 -5
  99. package/dist/tsup/mod.js +511 -244
  100. package/dist/tsup/mod.js.map +1 -1
  101. package/dist/tsup/test/mod.cjs +21 -18
  102. package/dist/tsup/test/mod.cjs.map +1 -1
  103. package/dist/tsup/test/mod.d.cts +4 -4
  104. package/dist/tsup/test/mod.d.ts +4 -4
  105. package/dist/tsup/test/mod.js +18 -15
  106. package/dist/tsup/test/mod.js.map +1 -1
  107. package/dist/tsup/{utils-DVekpm4I.d.cts → utils-DQosb24I.d.cts} +1 -1
  108. package/dist/tsup/{utils-DVekpm4I.d.ts → utils-DQosb24I.d.ts} +1 -1
  109. package/dist/tsup/utils.cjs +3 -3
  110. package/dist/tsup/utils.d.cts +1 -1
  111. package/dist/tsup/utils.d.ts +1 -1
  112. package/dist/tsup/utils.js +2 -2
  113. package/dist/tsup/workflow/mod.cjs +279 -279
  114. package/dist/tsup/workflow/mod.cjs.map +1 -1
  115. package/dist/tsup/workflow/mod.d.cts +6 -6
  116. package/dist/tsup/workflow/mod.d.ts +6 -6
  117. package/dist/tsup/workflow/mod.js +380 -380
  118. package/dist/tsup/workflow/mod.js.map +1 -1
  119. package/package.json +29 -9
  120. package/src/actor/config.ts +156 -51
  121. package/src/actor/contexts/index.ts +7 -2
  122. package/src/actor/definition.ts +17 -19
  123. package/src/actor/driver.ts +3 -3
  124. package/src/actor/errors.ts +8 -2
  125. package/src/actor/instance/mod.ts +26 -34
  126. package/src/actor/keys.ts +1 -1
  127. package/src/actor/mod.ts +22 -20
  128. package/src/actor/schema.ts +2 -2
  129. package/src/agent-os/actor/index.ts +38 -18
  130. package/src/agent-os/actor/preview.ts +1 -2
  131. package/src/agent-os/config.ts +1 -1
  132. package/src/agent-os/fs/database-vfs.ts +1 -1
  133. package/src/agent-os/index.ts +16 -15
  134. package/src/client/actor-common.ts +87 -54
  135. package/src/client/actor-conn.ts +11 -11
  136. package/src/client/actor-handle.ts +69 -52
  137. package/src/client/actor-query.ts +5 -5
  138. package/src/client/errors.ts +1 -1
  139. package/src/client/lifecycle-errors.ts +2 -4
  140. package/src/client/query.ts +1 -1
  141. package/src/client/queue.ts +8 -4
  142. package/src/client/raw-utils.ts +8 -6
  143. package/src/client/resolve-gateway-target.ts +1 -1
  144. package/src/client/utils.ts +2 -6
  145. package/src/common/actor-websocket.ts +3 -1
  146. package/src/common/bare/actor-persist/v1.ts +205 -163
  147. package/src/common/bare/actor-persist/v2.ts +265 -213
  148. package/src/common/bare/actor-persist/v3.ts +176 -172
  149. package/src/common/bare/actor-persist/v4.ts +254 -253
  150. package/src/common/bare/transport/v1.ts +659 -543
  151. package/src/common/client-protocol-versioned.ts +66 -64
  152. package/src/common/database/config.ts +2 -8
  153. package/src/common/database/native-database.ts +1 -1
  154. package/src/common/database/shared.ts +1 -0
  155. package/src/common/encoding.ts +13 -17
  156. package/src/common/engine.ts +28 -1
  157. package/src/common/eventsource.ts +1 -1
  158. package/src/common/inline-websocket-adapter.ts +3 -2
  159. package/src/common/router.ts +13 -17
  160. package/src/common/utils.ts +1 -2
  161. package/src/common/websocket-interface.ts +1 -1
  162. package/src/db/mod.ts +1 -1
  163. package/src/devtools-loader/index.ts +4 -7
  164. package/src/devtools-loader/serve-devtools.ts +26 -0
  165. package/src/drivers/engine/actor-driver.ts +48 -46
  166. package/src/dynamic/instance.ts +32 -0
  167. package/src/dynamic/internal.ts +50 -0
  168. package/src/dynamic/isolate-runtime.ts +66 -0
  169. package/src/dynamic/mod.ts +32 -0
  170. package/src/engine-client/actor-http-client.ts +3 -3
  171. package/src/engine-client/actor-websocket-client.ts +5 -5
  172. package/src/engine-client/api-endpoints.ts +51 -2
  173. package/src/engine-client/api-utils.ts +2 -2
  174. package/src/engine-client/driver.ts +1 -1
  175. package/src/engine-client/mod.ts +5 -3
  176. package/src/engine-client/ws-proxy.ts +9 -4
  177. package/src/inspector/client.browser.ts +5 -11
  178. package/src/inspector/mod.ts +1 -3
  179. package/src/inspector-tab/mod.ts +315 -0
  180. package/src/registry/config/envoy.ts +1 -2
  181. package/src/registry/config/index.ts +40 -16
  182. package/src/registry/index.ts +226 -83
  183. package/src/registry/napi-runtime.ts +46 -12
  184. package/src/registry/native-validation.ts +10 -12
  185. package/src/registry/native.ts +307 -164
  186. package/src/registry/process-metrics.ts +90 -23
  187. package/src/registry/runtime.ts +53 -6
  188. package/src/registry/wasm-runtime.ts +30 -3
  189. package/src/serde.ts +1 -1
  190. package/src/serverless/configure.ts +18 -7
  191. package/src/test/mod.ts +11 -8
  192. package/src/utils/endpoint-parser.ts +1 -1
  193. package/src/utils/env-vars.ts +6 -0
  194. package/src/utils/router.ts +1 -1
  195. package/src/utils/serve.ts +4 -5
  196. package/src/utils.ts +1 -2
  197. package/src/workflow/context.ts +30 -29
  198. package/src/workflow/driver.ts +4 -6
  199. package/src/workflow/inspector.ts +2 -2
  200. package/src/workflow/mod.ts +15 -17
  201. package/dist/tsup/chunk-2NDZ7JCR.cjs.map +0 -1
  202. package/dist/tsup/chunk-3YY5S6TV.js.map +0 -1
  203. package/dist/tsup/chunk-4BPKKZJO.cjs.map +0 -1
  204. package/dist/tsup/chunk-4JU3IPG2.js.map +0 -1
  205. package/dist/tsup/chunk-7HLFSAJP.cjs.map +0 -1
  206. package/dist/tsup/chunk-BATTOVHF.cjs.map +0 -1
  207. package/dist/tsup/chunk-D5G75T7J.js.map +0 -1
  208. package/dist/tsup/chunk-EMFKMVJR.js.map +0 -1
  209. package/dist/tsup/chunk-GBG63SUG.js.map +0 -1
  210. package/dist/tsup/chunk-HGW6PBWR.cjs.map +0 -1
  211. package/dist/tsup/chunk-KY3CERZR.js.map +0 -1
  212. package/dist/tsup/chunk-OT7FF6GB.cjs.map +0 -1
  213. package/dist/tsup/chunk-PCBNKI2J.js.map +0 -1
  214. package/dist/tsup/chunk-SRNOPUC6.cjs.map +0 -1
  215. package/dist/tsup/chunk-TMLOKTRB.js.map +0 -1
  216. package/dist/tsup/chunk-VUGENVIK.js.map +0 -1
  217. package/dist/tsup/process-metrics-NW754INA.js +0 -118
  218. package/dist/tsup/process-metrics-NW754INA.js.map +0 -1
  219. package/dist/tsup/process-metrics-TYAGKCEJ.cjs +0 -118
  220. package/dist/tsup/process-metrics-TYAGKCEJ.cjs.map +0 -1
  221. /package/dist/tsup/{chunk-D3T3ZBSY.js.map → chunk-BEI24WTI.js.map} +0 -0
package/src/actor/mod.ts CHANGED
@@ -14,6 +14,26 @@ export type {
14
14
  UniversalWebSocket,
15
15
  } from "@/common/websocket-interface";
16
16
  export type * from "./config";
17
+ export type {
18
+ ActionContextOf,
19
+ BeforeActionResponseContextOf,
20
+ BeforeConnectContextOf,
21
+ ConnContextOf,
22
+ ConnectContextOf,
23
+ ConnInitContextOf,
24
+ CreateConnStateContextOf,
25
+ CreateContextOf,
26
+ CreateVarsContextOf,
27
+ DestroyContextOf,
28
+ DisconnectContextOf,
29
+ MigrateContextOf,
30
+ RequestContextOf,
31
+ RunContextOf,
32
+ SleepContextOf,
33
+ StateChangeContextOf,
34
+ WakeContextOf,
35
+ WebSocketContextOf,
36
+ } from "./contexts";
17
37
  export type {
18
38
  AnyActorDefinition,
19
39
  AnyActorInstance,
@@ -32,27 +52,9 @@ export {
32
52
  export {
33
53
  ActorError,
34
54
  RivetError,
55
+ type RivetErrorLike,
56
+ type RivetErrorOptions,
35
57
  UserError,
36
58
  type UserErrorOptions,
37
59
  } from "./errors";
38
- export type {
39
- ActionContextOf,
40
- BeforeActionResponseContextOf,
41
- BeforeConnectContextOf,
42
- ConnectContextOf,
43
- ConnContextOf,
44
- ConnInitContextOf,
45
- CreateConnStateContextOf,
46
- CreateContextOf,
47
- CreateVarsContextOf,
48
- DestroyContextOf,
49
- DisconnectContextOf,
50
- MigrateContextOf,
51
- RequestContextOf,
52
- RunContextOf,
53
- SleepContextOf,
54
- StateChangeContextOf,
55
- WakeContextOf,
56
- WebSocketContextOf,
57
- } from "./contexts";
58
60
  export { event, queue, type Type } from "./schema";
@@ -69,7 +69,7 @@ export type EventSchemaConfig<TContext = any> = Record<
69
69
  string,
70
70
  EventSchema<TContext>
71
71
  >;
72
- export type QueueSchemaConfig<TContext = any> = Record<string, QueueSchema>;
72
+ export type QueueSchemaConfig<_TContext = any> = Record<string, QueueSchema>;
73
73
  export type AnySchemaConfig = EventSchemaConfig | QueueSchemaConfig;
74
74
 
75
75
  /** @deprecated Use `EventSchema` or `QueueSchema`. */
@@ -155,7 +155,7 @@ export function hasSchemaConfigKey<T extends AnySchemaConfig>(
155
155
  if (!schemas) {
156
156
  return false;
157
157
  }
158
- return Object.prototype.hasOwnProperty.call(schemas, key);
158
+ return Object.hasOwn(schemas, key);
159
159
  }
160
160
 
161
161
  export function getEventCanSubscribe<TContext = any>(
@@ -1,8 +1,7 @@
1
- import { AgentOs, createInMemoryFileSystem } from "@rivet-dev/agent-os-core";
2
1
  import type { AgentOsOptions, MountConfig } from "@rivet-dev/agent-os-core";
3
- import type { DatabaseProvider } from "@/common/database/config";
4
- import { actor, event } from "@/actor/mod";
5
- import type { RawAccess } from "@/common/database/config";
2
+ import { AgentOs, createInMemoryFileSystem } from "@rivet-dev/agent-os-core";
3
+ import { actor, event, type ActorDefinition } from "@/actor/mod";
4
+ import type { DatabaseProvider, RawAccess } from "@/common/database/config";
6
5
  import { db } from "@/common/database/mod";
7
6
  import {
8
7
  type AgentOsActorConfig,
@@ -141,10 +140,41 @@ function runHook<TConnParams>(
141
140
 
142
141
  export function agentOs<TConnParams = undefined>(
143
142
  config: AgentOsActorConfigInput<TConnParams>,
144
- ) {
143
+ ): ActorDefinition<
144
+ AgentOsActorState,
145
+ TConnParams,
146
+ undefined,
147
+ AgentOsActorVars,
148
+ undefined,
149
+ DatabaseProvider<RawAccess>,
150
+ {
151
+ sessionEvent: typeof sessionEventToken;
152
+ permissionRequest: typeof permissionRequestToken;
153
+ vmBooted: typeof vmBootedToken;
154
+ vmShutdown: typeof vmShutdownToken;
155
+ processOutput: typeof processOutputToken;
156
+ processExit: typeof processExitToken;
157
+ shellData: typeof shellDataToken;
158
+ cronEvent: typeof cronEventToken;
159
+ },
160
+ Record<never, never>,
161
+ any
162
+ > {
145
163
  const parsedConfig = agentOsActorConfigSchema.parse(
146
164
  config,
147
165
  ) as AgentOsActorConfig<TConnParams>;
166
+ const actions = {
167
+ ...buildSessionActions(parsedConfig),
168
+ ...buildPromptActions(parsedConfig),
169
+ ...buildConfigActions(parsedConfig),
170
+ ...buildSessionPersistenceActions(parsedConfig),
171
+ ...buildProcessActions(parsedConfig),
172
+ ...buildFilesystemActions(parsedConfig),
173
+ ...buildPreviewActions(parsedConfig),
174
+ ...buildShellActions(parsedConfig),
175
+ ...buildCronActions(parsedConfig),
176
+ ...buildNetworkActions(parsedConfig),
177
+ };
148
178
 
149
179
  return actor<
150
180
  AgentOsActorState,
@@ -163,7 +193,8 @@ export function agentOs<TConnParams = undefined>(
163
193
  shellData: typeof shellDataToken;
164
194
  cronEvent: typeof cronEventToken;
165
195
  },
166
- Record<never, never>
196
+ Record<never, never>,
197
+ typeof actions
167
198
  >({
168
199
  options: {
169
200
  sleepGracePeriod: 900_000,
@@ -236,18 +267,7 @@ export function agentOs<TConnParams = undefined>(
236
267
 
237
268
  c.broadcast("vmShutdown", { reason: "destroy" as const });
238
269
  },
239
- actions: {
240
- ...buildSessionActions(parsedConfig),
241
- ...buildPromptActions(parsedConfig),
242
- ...buildConfigActions(parsedConfig),
243
- ...buildSessionPersistenceActions(parsedConfig),
244
- ...buildProcessActions(parsedConfig),
245
- ...buildFilesystemActions(parsedConfig),
246
- ...buildPreviewActions(parsedConfig),
247
- ...buildShellActions(parsedConfig),
248
- ...buildCronActions(parsedConfig),
249
- ...buildNetworkActions(parsedConfig),
250
- },
270
+ actions,
251
271
  });
252
272
  }
253
273
 
@@ -1,7 +1,6 @@
1
1
  import crypto from "node:crypto";
2
- import type { DatabaseProvider } from "@/common/database/config";
3
2
  import type { RequestContext } from "@/actor/config";
4
- import type { RawAccess } from "@/common/database/config";
3
+ import type { DatabaseProvider, RawAccess } from "@/common/database/config";
5
4
  import type { AgentOsActorConfig } from "../config";
6
5
  import type {
7
6
  AgentOsActionContext,
@@ -3,8 +3,8 @@ import type {
3
3
  JsonRpcNotification,
4
4
  PermissionRequest,
5
5
  } from "@rivet-dev/agent-os-core";
6
- import type { ActorContext, BeforeConnectContext } from "@/actor/config";
7
6
  import { z } from "zod/v4";
7
+ import type { ActorContext, BeforeConnectContext } from "@/actor/config";
8
8
  import type { AgentOsActorState, AgentOsActorVars } from "./types";
9
9
 
10
10
  const zFunction = <
@@ -497,7 +497,7 @@ export function createDatabaseVfs(
497
497
  return backend.stat(p);
498
498
  },
499
499
 
500
- async link(oldPath: string, newPath: string): Promise<void> {
500
+ async link(_oldPath: string, _newPath: string): Promise<void> {
501
501
  throwENOSYS("link");
502
502
  },
503
503
 
@@ -1,14 +1,18 @@
1
1
  // Database migration
2
+
3
+ // Cron actions
4
+ export { buildCronActions } from "./actor/cron";
2
5
  export { migrateAgentOsTables } from "./actor/db";
3
- // Database-backed VFS
4
- export {
5
- createDatabaseVfs,
6
- type DatabaseVfsOptions,
7
- } from "./fs/database-vfs";
8
6
  // Filesystem actions
9
7
  export { buildFilesystemActions } from "./actor/filesystem";
10
8
  // Actor factory and VM lifecycle helpers
11
9
  export { agentOs, ensureVm, runHook, syncPreventSleep } from "./actor/index";
10
+ // Network actions
11
+ export {
12
+ buildNetworkActions,
13
+ type VmFetchOptions,
14
+ type VmFetchResult,
15
+ } from "./actor/network";
12
16
  // Preview actions
13
17
  export {
14
18
  buildOnRequestHandler,
@@ -27,20 +31,17 @@ export {
27
31
  } from "./actor/session";
28
32
  // Shell actions
29
33
  export { buildShellActions } from "./actor/shell";
30
- // Cron actions
31
- export { buildCronActions } from "./actor/cron";
32
- // Network actions
33
- export {
34
- buildNetworkActions,
35
- type VmFetchOptions,
36
- type VmFetchResult,
37
- } from "./actor/network";
38
34
  // Config schema and types
39
35
  export {
40
36
  type AgentOsActorConfig,
41
37
  type AgentOsActorConfigInput,
42
38
  agentOsActorConfigSchema,
43
39
  } from "./config";
40
+ // Database-backed VFS
41
+ export {
42
+ createDatabaseVfs,
43
+ type DatabaseVfsOptions,
44
+ } from "./fs/database-vfs";
44
45
  // Domain types and event payloads
45
46
  export type {
46
47
  AgentOsActionContext,
@@ -48,12 +49,12 @@ export type {
48
49
  AgentOsActorVars,
49
50
  AgentOsEvents,
50
51
  CronEventPayload,
52
+ PermissionRequestPayload,
51
53
  PersistedSessionEvent,
52
54
  PersistedSessionRecord,
53
- PermissionRequestPayload,
54
- PromptResult,
55
55
  ProcessExitPayload,
56
56
  ProcessOutputPayload,
57
+ PromptResult,
57
58
  SerializableCronAction,
58
59
  SerializableCronJobOptions,
59
60
  SessionEventPayload,
@@ -1,6 +1,6 @@
1
1
  import type {
2
- BaseActorDefinition,
3
2
  AnyActorDefinition,
3
+ BaseActorDefinition,
4
4
  } from "@/actor/definition";
5
5
  import type {
6
6
  EventSchemaConfig,
@@ -31,6 +31,36 @@ export type ActorActionFunction<
31
31
  ...args: Args extends [unknown, ...infer Rest] ? Rest : Args
32
32
  ) => Promise<Response>;
33
33
 
34
+ type IsAny<T> = 0 extends 1 & T ? true : false;
35
+
36
+ type LooseEventSubscribe = (
37
+ eventName: string,
38
+ callback: (...args: any[]) => void,
39
+ ) => () => void;
40
+
41
+ type ActorActionMap<R> = {
42
+ [K in keyof NonNullable<R>]: NonNullable<R>[K] extends (
43
+ ...args: infer Args
44
+ ) => infer Return
45
+ ? ActorActionFunction<Args, Awaited<Return>>
46
+ : never;
47
+ };
48
+
49
+ type ActionsOf<AD extends AnyActorDefinition> =
50
+ AD extends BaseActorDefinition<
51
+ any,
52
+ any,
53
+ any,
54
+ any,
55
+ any,
56
+ any,
57
+ any,
58
+ any,
59
+ infer R
60
+ >
61
+ ? R
62
+ : never;
63
+
34
64
  export interface ActorGatewayOptions {
35
65
  skipReadyWait?: boolean;
36
66
  }
@@ -41,7 +71,8 @@ export function resolveActorGatewayOptions(
41
71
  defaults: ActorGatewayOptions = {},
42
72
  overrides?: ActorGatewayOptions,
43
73
  ): ResolvedActorGatewayOptions {
44
- const skipReadyWait = overrides?.skipReadyWait ?? defaults.skipReadyWait ?? false;
74
+ const skipReadyWait =
75
+ overrides?.skipReadyWait ?? defaults.skipReadyWait ?? false;
45
76
 
46
77
  return {
47
78
  skipReadyWait,
@@ -63,25 +94,9 @@ export type ActorWebSocketOptions = ActorGatewayOptions;
63
94
  */
64
95
  export type ActorDefinitionActions<AD extends AnyActorDefinition> =
65
96
  // biome-ignore lint/suspicious/noExplicitAny: safe to use any here
66
- AD extends BaseActorDefinition<
67
- any,
68
- any,
69
- any,
70
- any,
71
- any,
72
- any,
73
- any,
74
- any,
75
- infer R
76
- >
77
- ? {
78
- [K in keyof R]: R[K] extends (
79
- ...args: infer Args
80
- ) => infer Return
81
- ? ActorActionFunction<Args, Return>
82
- : never;
83
- }
84
- : never;
97
+ IsAny<AD> extends true
98
+ ? Record<string, ActorActionFunction<any[], any>>
99
+ : ActorActionMap<ActionsOf<AD>>;
85
100
 
86
101
  type ActorQueueSend<TQueues extends QueueSchemaConfig> = {
87
102
  <K extends keyof TQueues & string>(
@@ -119,39 +134,57 @@ type ActorEventSubscribe<TEvents extends EventSchemaConfig> = {
119
134
 
120
135
  export type ActorDefinitionQueueSend<AD extends AnyActorDefinition> =
121
136
  // biome-ignore lint/suspicious/noExplicitAny: safe to use any here
122
- AD extends BaseActorDefinition<
123
- any,
124
- any,
125
- any,
126
- any,
127
- any,
128
- any,
129
- any,
130
- infer Q,
131
- any
132
- >
133
- ? Q extends QueueSchemaConfig
134
- ? { send: ActorQueueSend<Q> }
135
- : never
136
- : never;
137
+ IsAny<AD> extends true
138
+ ? { send: ActorQueueSend<Record<string, any>> }
139
+ : AD extends { config: { queues?: infer Q } }
140
+ ? Q extends QueueSchemaConfig
141
+ ? { send: ActorQueueSend<Q> }
142
+ : {}
143
+ : AD extends BaseActorDefinition<
144
+ any,
145
+ any,
146
+ any,
147
+ any,
148
+ any,
149
+ any,
150
+ any,
151
+ infer Q,
152
+ any
153
+ >
154
+ ? Q extends QueueSchemaConfig
155
+ ? { send: ActorQueueSend<Q> }
156
+ : {}
157
+ : {};
137
158
 
138
159
  export type ActorDefinitionEventSubscriptions<AD extends AnyActorDefinition> =
139
160
  // biome-ignore lint/suspicious/noExplicitAny: safe to use any here
140
- AD extends BaseActorDefinition<
141
- any,
142
- any,
143
- any,
144
- any,
145
- any,
146
- any,
147
- infer E,
148
- any,
149
- any
150
- >
151
- ? E extends EventSchemaConfig
152
- ? {
153
- on: ActorEventSubscribe<E>;
154
- once: ActorEventSubscribe<E>;
155
- }
156
- : never
157
- : never;
161
+ IsAny<AD> extends true
162
+ ? {
163
+ on: LooseEventSubscribe;
164
+ once: LooseEventSubscribe;
165
+ }
166
+ : AD extends { config: { events?: infer E } }
167
+ ? E extends EventSchemaConfig
168
+ ? {
169
+ on: ActorEventSubscribe<E>;
170
+ once: ActorEventSubscribe<E>;
171
+ }
172
+ : {}
173
+ : AD extends BaseActorDefinition<
174
+ any,
175
+ any,
176
+ any,
177
+ any,
178
+ any,
179
+ any,
180
+ infer E,
181
+ any,
182
+ any
183
+ >
184
+ ? E extends EventSchemaConfig
185
+ ? {
186
+ on: ActorEventSubscribe<E>;
187
+ once: ActorEventSubscribe<E>;
188
+ }
189
+ : {}
190
+ : {};
@@ -14,6 +14,7 @@ import {
14
14
  type ToServer as ToServerJson,
15
15
  ToServerSchema,
16
16
  } from "@/common/client-protocol-zod";
17
+ import type { JsonCompatValue } from "@/common/encoding";
17
18
  import {
18
19
  type Encoding,
19
20
  inputDataToBuffer,
@@ -22,7 +23,6 @@ import {
22
23
  import { assertUnreachable, stringifyError } from "@/common/utils";
23
24
  import type { UniversalWebSocket } from "@/common/websocket-interface";
24
25
  import type { EngineControlClient } from "@/engine-client/driver";
25
- import type { JsonCompatValue } from "@/common/encoding";
26
26
  import {
27
27
  decodeCborCompat,
28
28
  deserializeWithEncoding,
@@ -215,6 +215,9 @@ export class ActorConnRaw {
215
215
  this.#encoding = encoding;
216
216
  this.#actorResolutionState = actorResolutionState;
217
217
  this.#gatewayOptions = resolveActorGatewayOptions(gatewayOptions);
218
+ if ("getForId" in actorResolutionState) {
219
+ this.#actorId = actorResolutionState.getForId.actorId;
220
+ }
218
221
  this.#readyPromise = promiseWithResolvers((reason) =>
219
222
  logger().warn({
220
223
  msg: "unhandled ready promise rejection",
@@ -235,9 +238,7 @@ export class ActorConnRaw {
235
238
  },
236
239
  });
237
240
 
238
- // Keep the Node event loop alive while this connection is active without blocking exit.
239
- this.#keepNodeAliveInterval = setInterval(() => {}, 60_000);
240
- this.#keepNodeAliveInterval.unref?.();
241
+ this.#keepNodeAliveInterval = setInterval(() => 60_000);
241
242
  }
242
243
 
243
244
  #clearResolvedActorIdentity() {
@@ -783,12 +784,10 @@ export class ActorConnRaw {
783
784
  }
784
785
 
785
786
  // Check if this is an actor scheduling error and try to get more details
786
- let errorToThrow = new errors.ActorError(
787
- group,
788
- code,
789
- message,
790
- { metadata, actor },
791
- );
787
+ let errorToThrow = new errors.ActorError(group, code, message, {
788
+ metadata,
789
+ actor,
790
+ });
792
791
  if (errors.isSchedulingError(group, code) && this.#actorId) {
793
792
  const schedulingError = await checkForSchedulingError(
794
793
  group,
@@ -1270,7 +1269,8 @@ export class ActorConnRaw {
1270
1269
  name: msg.body.val.name,
1271
1270
  args: bufferToArrayBuffer(
1272
1271
  encodeCborCompat(
1273
- msg.body.val.args as JsonCompatValue,
1272
+ msg.body.val
1273
+ .args as JsonCompatValue,
1274
1274
  ),
1275
1275
  ),
1276
1276
  },