durable-actors 0.7.4 → 0.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +1 -1
  2. package/dist/actor/actor.d.ts +3 -0
  3. package/dist/actor/actor.d.ts.map +1 -1
  4. package/dist/actor/actor.js +8 -1
  5. package/dist/actor/actor.js.map +1 -1
  6. package/dist/actor/database.d.ts +11 -0
  7. package/dist/actor/database.d.ts.map +1 -0
  8. package/dist/actor/database.js +31 -0
  9. package/dist/actor/database.js.map +1 -0
  10. package/dist/compiler/features/persistence.d.ts.map +1 -1
  11. package/dist/compiler/features/persistence.js +2 -0
  12. package/dist/compiler/features/persistence.js.map +1 -1
  13. package/dist/compiler/rpc-contract.js +1 -1
  14. package/dist/compiler/rpc-contract.js.map +1 -1
  15. package/dist/compiler/validate-public-contract.js +1 -1
  16. package/dist/compiler/validate-public-contract.js.map +1 -1
  17. package/dist/host/actor-host.js +1 -1
  18. package/dist/host/actor-runtime.d.ts +8 -1
  19. package/dist/host/actor-runtime.d.ts.map +1 -1
  20. package/dist/host/actor-runtime.js +73 -28
  21. package/dist/host/actor-runtime.js.map +1 -1
  22. package/dist/host/actor-worker.js +2 -1
  23. package/dist/host/actor-worker.js.map +1 -1
  24. package/dist/host/generic-host.js +1 -1
  25. package/dist/host/litestream.d.ts +8 -0
  26. package/dist/host/litestream.d.ts.map +1 -0
  27. package/dist/host/litestream.js +40 -0
  28. package/dist/host/litestream.js.map +1 -0
  29. package/dist/host/protocol.d.ts +51 -14
  30. package/dist/host/protocol.d.ts.map +1 -1
  31. package/dist/host/protocol.js +9 -4
  32. package/dist/host/protocol.js.map +1 -1
  33. package/dist/host/sqlite.d.ts +50 -0
  34. package/dist/host/sqlite.d.ts.map +1 -0
  35. package/dist/host/sqlite.js +160 -0
  36. package/dist/host/sqlite.js.map +1 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/runtimeInstaller.d.ts.map +1 -1
  41. package/dist/runtimeInstaller.js +5 -4
  42. package/dist/runtimeInstaller.js.map +1 -1
  43. package/dist/templates/actor/package.json +1 -1
  44. package/dist/templates/ai-chat/package.json +1 -1
  45. package/dist/templates/chat/package.json +1 -1
  46. package/dist/templates/documents/package.json +1 -1
  47. package/dist/templates/python/package.json +1 -1
  48. package/dist/templates/python/pyproject.toml +1 -1
  49. package/package.json +2 -2
@@ -9,9 +9,11 @@ const port = parentPort;
9
9
  if (port === null)
10
10
  throw new Error("actor Worker requires a parent message port");
11
11
  let exiting = false;
12
+ let runtime;
12
13
  // Bun 1.3 can drain microtasks after process.exit().
13
14
  process.once("exit", () => {
14
15
  exiting = true;
16
+ runtime?.close();
15
17
  });
16
18
  let assigned = false;
17
19
  const invocation = new AsyncLocalStorage();
@@ -34,7 +36,6 @@ async function initialize(data) {
34
36
  assigned = true;
35
37
  Object.assign(process.env, data.environment);
36
38
  const actorNames = await loadActorEntrypoint(data.moduleUrl);
37
- let runtime;
38
39
  port.on("message", (message) => {
39
40
  if (message.type === "load")
40
41
  throw new Error("customer code already assigned");
@@ -1 +1 @@
1
- {"version":3,"file":"actor-worker.js","sourceRoot":"","sources":["../../src/host/actor-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actor-worker.js","sourceRoot":"","sources":["../../src/host/actor-worker.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ async function runGenericHost() {
10
10
  const settings = parseHostSettings(process.env);
11
11
  const socket = await connectSocket(settings.socketPath);
12
12
  const assignment = readAssignment(socket);
13
- socket.write(`${JSON.stringify({ type: "warm", protocol: 18 })}\n`);
13
+ socket.write(`${JSON.stringify({ type: "warm", protocol: 21 })}\n`);
14
14
  const { entrypoint, environment } = await assignment;
15
15
  await access(entrypoint);
16
16
  let available = true;
@@ -0,0 +1,8 @@
1
+ interface LitestreamDatabase {
2
+ readonly path: string;
3
+ readonly socket: string;
4
+ }
5
+ declare function syncLitestream(database: LitestreamDatabase): Promise<number>;
6
+ export { syncLitestream };
7
+ export type { LitestreamDatabase };
8
+ //# sourceMappingURL=litestream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litestream.d.ts","sourceRoot":"","sources":["../../src/host/litestream.ts"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAC1B;AAED,iBAAe,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3E;AA+BD,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { request } from "node:http";
2
+ async function syncLitestream(database) {
3
+ const reply = JSON.parse(await sync(database));
4
+ if (reply.path !== database.path)
5
+ throw new Error("Litestream synced another database");
6
+ if (!Number.isSafeInteger(reply.txid) || Number(reply.txid) < 1)
7
+ throw new Error("Litestream returned an invalid position");
8
+ if (!Number.isSafeInteger(reply.replicated_txid) || Number(reply.replicated_txid) < Number(reply.txid))
9
+ throw new Error("Litestream has not replicated the commit");
10
+ return Number(reply.txid);
11
+ }
12
+ function sync(database) {
13
+ return new Promise((resolve, reject) => {
14
+ const body = JSON.stringify({ path: database.path, wait: true, timeout: 30 });
15
+ const operation = request({
16
+ socketPath: database.socket,
17
+ path: "/sync",
18
+ method: "POST",
19
+ signal: AbortSignal.timeout(35_000),
20
+ headers: { "content-type": "application/json", "content-length": Buffer.byteLength(body) }
21
+ }, response => {
22
+ let document = "";
23
+ response.setEncoding("utf8");
24
+ response.on("data", chunk => {
25
+ document += String(chunk);
26
+ });
27
+ response.on("error", reject);
28
+ response.on("end", () => {
29
+ if (response.statusCode !== 200)
30
+ reject(new Error(`Litestream sync failed: ${response.statusCode}`));
31
+ else
32
+ resolve(document);
33
+ });
34
+ });
35
+ operation.on("error", reject);
36
+ operation.end(body);
37
+ });
38
+ }
39
+ export { syncLitestream };
40
+ //# sourceMappingURL=litestream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litestream.js","sourceRoot":"","sources":["../../src/host/litestream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,KAAK,UAAU,cAAc,CAAC,QAA4B;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAA4B,CAAA;IACzE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,IAAI,CAAC,QAA4B;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7E,MAAM,SAAS,GAAG,OAAO,CACrB;YACI,UAAU,EAAE,QAAQ,CAAC,MAAM;YAC3B,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YACnC,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;SAC7F,EACD,QAAQ,CAAC,EAAE;YACP,IAAI,QAAQ,GAAG,EAAE,CAAA;YACjB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAC5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBACxB,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;YACF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG;oBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;;oBAC/F,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC1B,CAAC,CAAC,CAAA;QACN,CAAC,CACJ,CAAA;QACD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC7B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import type { ActorIdentity } from "../actor/identity.js";
3
3
  import type { SocketConnection, SocketEffect } from "../actor/socketProtocol.js";
4
- import type { JsonObject, JsonValue } from "../json.js";
4
+ import type { JsonValue } from "../json.js";
5
+ import type { SqliteState } from "./sqlite.js";
5
6
  declare function parseActorSessionServerMessage(document: string): ActorSessionServerMessage;
6
7
  declare function failedReply(code: string, message: string): FailedReply;
7
8
  declare const invokeCommandSchema: z.ZodObject<{
@@ -14,7 +15,11 @@ declare const invokeCommandSchema: z.ZodObject<{
14
15
  }, z.core.$strict>;
15
16
  method: z.ZodString;
16
17
  args: z.ZodArray<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
17
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
18
+ sqlite: z.ZodOptional<z.ZodObject<{
19
+ txid: z.ZodNumber;
20
+ path: z.ZodOptional<z.ZodString>;
21
+ socket: z.ZodOptional<z.ZodString>;
22
+ }, z.core.$strip>>;
18
23
  resident_only: z.ZodOptional<z.ZodBoolean>;
19
24
  }, z.core.$strip>;
20
25
  declare const websocketEventCommandSchema: z.ZodObject<{
@@ -58,7 +63,11 @@ declare const websocketEventCommandSchema: z.ZodObject<{
58
63
  metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
59
64
  tags: z.ZodArray<z.ZodString>;
60
65
  }, z.core.$strip>>;
61
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
66
+ sqlite: z.ZodOptional<z.ZodObject<{
67
+ txid: z.ZodNumber;
68
+ path: z.ZodOptional<z.ZodString>;
69
+ socket: z.ZodOptional<z.ZodString>;
70
+ }, z.core.$strip>>;
62
71
  resident_only: z.ZodOptional<z.ZodBoolean>;
63
72
  }, z.core.$strip>;
64
73
  declare const evictCommandSchema: z.ZodObject<{
@@ -76,7 +85,11 @@ declare const hydrateCommandSchema: z.ZodObject<{
76
85
  actor_name: z.ZodString;
77
86
  actor_id: z.ZodString;
78
87
  }, z.core.$strict>;
79
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
88
+ sqlite: z.ZodOptional<z.ZodObject<{
89
+ txid: z.ZodNumber;
90
+ path: z.ZodOptional<z.ZodString>;
91
+ socket: z.ZodOptional<z.ZodString>;
92
+ }, z.core.$strip>>;
80
93
  resident_only: z.ZodOptional<z.ZodBoolean>;
81
94
  }, z.core.$strip>;
82
95
  declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -89,7 +102,11 @@ declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
89
102
  }, z.core.$strict>;
90
103
  method: z.ZodString;
91
104
  args: z.ZodArray<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
92
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
105
+ sqlite: z.ZodOptional<z.ZodObject<{
106
+ txid: z.ZodNumber;
107
+ path: z.ZodOptional<z.ZodString>;
108
+ socket: z.ZodOptional<z.ZodString>;
109
+ }, z.core.$strip>>;
93
110
  resident_only: z.ZodOptional<z.ZodBoolean>;
94
111
  }, z.core.$strip>, z.ZodObject<{
95
112
  type: z.ZodLiteral<"websocket_event">;
@@ -132,7 +149,11 @@ declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
132
149
  metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
133
150
  tags: z.ZodArray<z.ZodString>;
134
151
  }, z.core.$strip>>;
135
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
152
+ sqlite: z.ZodOptional<z.ZodObject<{
153
+ txid: z.ZodNumber;
154
+ path: z.ZodOptional<z.ZodString>;
155
+ socket: z.ZodOptional<z.ZodString>;
156
+ }, z.core.$strip>>;
136
157
  resident_only: z.ZodOptional<z.ZodBoolean>;
137
158
  }, z.core.$strip>, z.ZodObject<{
138
159
  type: z.ZodLiteral<"evict">;
@@ -148,12 +169,16 @@ declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
148
169
  actor_name: z.ZodString;
149
170
  actor_id: z.ZodString;
150
171
  }, z.core.$strict>;
151
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
172
+ sqlite: z.ZodOptional<z.ZodObject<{
173
+ txid: z.ZodNumber;
174
+ path: z.ZodOptional<z.ZodString>;
175
+ socket: z.ZodOptional<z.ZodString>;
176
+ }, z.core.$strip>>;
152
177
  resident_only: z.ZodOptional<z.ZodBoolean>;
153
178
  }, z.core.$strip>], "type">;
154
179
  declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
155
180
  type: z.ZodLiteral<"attached">;
156
- protocol: z.ZodLiteral<18>;
181
+ protocol: z.ZodLiteral<21>;
157
182
  supports_residency: z.ZodOptional<z.ZodBoolean>;
158
183
  }, z.core.$strip>, z.ZodObject<{
159
184
  type: z.ZodLiteral<"socket_connections">;
@@ -181,7 +206,11 @@ declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObj
181
206
  }, z.core.$strict>;
182
207
  method: z.ZodString;
183
208
  args: z.ZodArray<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
184
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
209
+ sqlite: z.ZodOptional<z.ZodObject<{
210
+ txid: z.ZodNumber;
211
+ path: z.ZodOptional<z.ZodString>;
212
+ socket: z.ZodOptional<z.ZodString>;
213
+ }, z.core.$strip>>;
185
214
  resident_only: z.ZodOptional<z.ZodBoolean>;
186
215
  }, z.core.$strip>, z.ZodObject<{
187
216
  type: z.ZodLiteral<"websocket_event">;
@@ -224,7 +253,11 @@ declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObj
224
253
  metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
225
254
  tags: z.ZodArray<z.ZodString>;
226
255
  }, z.core.$strip>>;
227
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
256
+ sqlite: z.ZodOptional<z.ZodObject<{
257
+ txid: z.ZodNumber;
258
+ path: z.ZodOptional<z.ZodString>;
259
+ socket: z.ZodOptional<z.ZodString>;
260
+ }, z.core.$strip>>;
228
261
  resident_only: z.ZodOptional<z.ZodBoolean>;
229
262
  }, z.core.$strip>, z.ZodObject<{
230
263
  type: z.ZodLiteral<"evict">;
@@ -240,7 +273,11 @@ declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObj
240
273
  actor_name: z.ZodString;
241
274
  actor_id: z.ZodString;
242
275
  }, z.core.$strict>;
243
- state: z.ZodOptional<z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
276
+ sqlite: z.ZodOptional<z.ZodObject<{
277
+ txid: z.ZodNumber;
278
+ path: z.ZodOptional<z.ZodString>;
279
+ socket: z.ZodOptional<z.ZodString>;
280
+ }, z.core.$strip>>;
244
281
  resident_only: z.ZodOptional<z.ZodBoolean>;
245
282
  }, z.core.$strip>], "type">;
246
283
  }, z.core.$strip>], "type">;
@@ -270,7 +307,7 @@ type ActorSessionClientMessage = {
270
307
  };
271
308
  interface AttachMessage {
272
309
  readonly type: "attach";
273
- readonly protocol: 18;
310
+ readonly protocol: 21;
274
311
  readonly actor_names: readonly string[];
275
312
  }
276
313
  interface ReplyMessage {
@@ -282,13 +319,13 @@ interface InvokedReply {
282
319
  readonly type: "invoked";
283
320
  readonly sequence?: number;
284
321
  readonly result: JsonValue;
285
- readonly state: JsonObject;
322
+ readonly sqlite: SqliteState;
286
323
  readonly effects?: readonly SocketEffect[];
287
324
  }
288
325
  interface WebSocketHandledReply {
289
326
  readonly type: "websocket_handled";
290
327
  readonly sequence?: number;
291
- readonly state: JsonObject;
328
+ readonly sqlite: SqliteState;
292
329
  readonly effects: readonly SocketEffect[];
293
330
  }
294
331
  interface FailedReply {
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"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"}
@@ -19,13 +19,18 @@ function parseActorSessionServerMessage(document) {
19
19
  function failedReply(code, message) {
20
20
  return { type: "failed", code, message };
21
21
  }
22
+ const sqliteStateSchema = z.object({
23
+ txid: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),
24
+ path: z.string().optional(),
25
+ socket: z.string().optional()
26
+ });
22
27
  const invokeCommandSchema = z.object({
23
28
  type: z.literal("invoke"),
24
29
  request_id: actorComponentSchema,
25
30
  actor: actorIdentitySchema,
26
31
  method: actorComponentSchema,
27
32
  args: z.array(jsonValueSchema),
28
- state: jsonValueSchema.nullable().optional(),
33
+ sqlite: sqliteStateSchema.optional(),
29
34
  resident_only: z.boolean().optional()
30
35
  });
31
36
  const websocketEventCommandSchema = z.object({
@@ -34,7 +39,7 @@ const websocketEventCommandSchema = z.object({
34
39
  actor: actorIdentitySchema,
35
40
  event: socketEventSchema,
36
41
  connections: z.array(socketConnectionSchema),
37
- state: jsonValueSchema.nullable().optional(),
42
+ sqlite: sqliteStateSchema.optional(),
38
43
  resident_only: z.boolean().optional()
39
44
  });
40
45
  const evictCommandSchema = z.object({
@@ -44,7 +49,7 @@ const evictCommandSchema = z.object({
44
49
  const hydrateCommandSchema = z.object({
45
50
  type: z.literal("hydrate"),
46
51
  actor: actorIdentitySchema,
47
- state: jsonValueSchema.nullable().optional(),
52
+ sqlite: sqliteStateSchema.optional(),
48
53
  resident_only: z.boolean().optional()
49
54
  });
50
55
  const executorCommandSchema = z.discriminatedUnion("type", [
@@ -54,7 +59,7 @@ const executorCommandSchema = z.discriminatedUnion("type", [
54
59
  hydrateCommandSchema
55
60
  ]);
56
61
  const actorSessionServerMessageSchema = z.discriminatedUnion("type", [
57
- z.object({ type: z.literal("attached"), protocol: z.literal(18), supports_residency: z.boolean().optional() }),
62
+ z.object({ type: z.literal("attached"), protocol: z.literal(21), supports_residency: z.boolean().optional() }),
58
63
  z.object({
59
64
  type: z.literal("socket_connections"),
60
65
  message_id: z.number().int().nonnegative(),
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { ActorDatabase, SqliteValue } from "../actor/database.js";
2
+ import type { JsonObject } from "../json.js";
3
+ import type { LitestreamDatabase } from "./litestream.js";
4
+ interface SqliteState {
5
+ readonly txid: number;
6
+ readonly path?: string;
7
+ readonly socket?: string;
8
+ }
9
+ declare class SqliteCaptureError extends Error {
10
+ }
11
+ interface ActorDatabaseStorage extends ActorDatabase {
12
+ fields(): JsonObject;
13
+ persistFields(fields: JsonObject): void;
14
+ restore(state: SqliteState | undefined): void;
15
+ snapshot(): Promise<SqliteState>;
16
+ rollback(): void;
17
+ close(): void;
18
+ }
19
+ declare class SqliteActorDatabase implements ActorDatabaseStorage {
20
+ private readonly connect;
21
+ private readonly sync;
22
+ private connection;
23
+ private seed;
24
+ private txid;
25
+ private version;
26
+ private failure;
27
+ constructor(connect?: (path: string) => SqliteConnection, sync?: (database: LitestreamDatabase) => Promise<number>);
28
+ exec<Row extends object>(sql: string, ...bindings: SqliteValue[]): Row[];
29
+ fields(): JsonObject;
30
+ persistFields(fields: JsonObject): void;
31
+ restore(state: SqliteState | undefined): void;
32
+ snapshot(): Promise<SqliteState>;
33
+ rollback(): void;
34
+ close(): void;
35
+ private changeToken;
36
+ private fieldDatabase;
37
+ private open;
38
+ }
39
+ interface SqliteConnection {
40
+ readonly isTransaction: boolean;
41
+ exec(sql: string): void;
42
+ prepare(sql: string): {
43
+ all(...bindings: SqliteValue[]): object[];
44
+ get(): Record<string, SqliteValue> | undefined;
45
+ };
46
+ close(): void;
47
+ }
48
+ export { SqliteActorDatabase, SqliteCaptureError };
49
+ export type { ActorDatabaseStorage, SqliteState };
50
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/host/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAA;AAGvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,UAAU,WAAW;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,cAAM,kBAAmB,SAAQ,KAAK;CAAG;AAEzC,UAAU,oBAAqB,SAAQ,aAAa;IAChD,MAAM,IAAI,UAAU,CAAA;IACpB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACvC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAA;IAC7C,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IAChC,QAAQ,IAAI,IAAI,CAAA;IAChB,KAAK,IAAI,IAAI,CAAA;CAChB;AAED,cAAM,mBAAoB,YAAW,oBAAoB;IAQjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARzB,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAgC;gBAG1B,OAAO,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAA6B,EACxD,IAAI,GAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAkB;IAG7F,IAAI,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,GAAG,EAAE;IASxE,MAAM,IAAI,UAAU;IAQpB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAWvC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;IASvC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IAkBtC,QAAQ,IAAI,IAAI;IAKhB,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,IAAI;CAYf;AAED,UAAU,gBAAgB;IACtB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QAClB,GAAG,CAAC,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAAA;QACzC,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,CAAA;KACjD,CAAA;IACD,KAAK,IAAI,IAAI,CAAA;CAChB;AA8DD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;AAClD,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,160 @@
1
+ import { createRequire } from "node:module";
2
+ import { syncLitestream } from "./litestream.js";
3
+ class SqliteCaptureError extends Error {
4
+ }
5
+ class SqliteActorDatabase {
6
+ connect;
7
+ sync;
8
+ connection;
9
+ seed;
10
+ txid = 0;
11
+ version = "";
12
+ failure;
13
+ constructor(connect = openSqlite, sync = syncLitestream) {
14
+ this.connect = connect;
15
+ this.sync = sync;
16
+ }
17
+ exec(sql, ...bindings) {
18
+ validateStatement(sql);
19
+ const database = this.open();
20
+ validateSingleStatement(database, sql);
21
+ const statement = database.prepare(sql);
22
+ if (!database.isTransaction)
23
+ database.exec("BEGIN");
24
+ return statement.all(...bindings);
25
+ }
26
+ fields() {
27
+ const rows = this.fieldDatabase().prepare("SELECT name, value FROM __terse_fields").all();
28
+ return Object.fromEntries(rows.map(row => [row.name, JSON.parse(row.value)]));
29
+ }
30
+ persistFields(fields) {
31
+ const database = this.fieldDatabase();
32
+ const put = database.prepare("INSERT INTO __terse_fields (name, value) VALUES (?, ?) ON CONFLICT(name) DO UPDATE SET value = excluded.value WHERE value <> excluded.value");
33
+ for (const [name, value] of Object.entries(fields))
34
+ put.all(name, JSON.stringify(value));
35
+ database
36
+ .prepare("DELETE FROM __terse_fields WHERE name NOT IN (SELECT value FROM json_each(?))")
37
+ .all(JSON.stringify(Object.keys(fields)));
38
+ }
39
+ restore(state) {
40
+ this.close();
41
+ if (state === undefined || !Number.isSafeInteger(state.txid) || state.txid < 1 || !state.path || !state.socket)
42
+ throw new Error("invalid actor SQLite recovery state");
43
+ this.seed = { path: state.path, socket: state.socket };
44
+ this.txid = state.txid;
45
+ this.version = this.changeToken();
46
+ }
47
+ async snapshot() {
48
+ try {
49
+ const database = this.open();
50
+ const version = this.changeToken();
51
+ if (database.isTransaction)
52
+ database.exec("COMMIT");
53
+ if (version !== this.version) {
54
+ const txid = await this.sync(this.seed);
55
+ if (!Number.isSafeInteger(txid) || txid < this.txid)
56
+ throw new Error("invalid Litestream transaction");
57
+ this.txid = txid;
58
+ this.version = version;
59
+ }
60
+ return { txid: this.txid };
61
+ }
62
+ catch (cause) {
63
+ this.failure = new SqliteCaptureError("failed to replicate actor SQLite commit", { cause });
64
+ throw this.failure;
65
+ }
66
+ }
67
+ rollback() {
68
+ if (this.connection?.isTransaction)
69
+ this.connection.exec("ROLLBACK");
70
+ if (this.connection !== undefined)
71
+ this.version = this.changeToken();
72
+ }
73
+ close() {
74
+ try {
75
+ this.connection?.close();
76
+ }
77
+ finally {
78
+ this.connection = undefined;
79
+ this.seed = undefined;
80
+ this.failure = undefined;
81
+ }
82
+ }
83
+ changeToken() {
84
+ const database = this.open();
85
+ return JSON.stringify([
86
+ database.prepare("SELECT total_changes() AS changes").get(),
87
+ database.prepare("PRAGMA schema_version").get(),
88
+ database.prepare("PRAGMA user_version").get()
89
+ ]);
90
+ }
91
+ fieldDatabase() {
92
+ const database = this.open();
93
+ if (!database.isTransaction)
94
+ database.exec("BEGIN");
95
+ database.exec("CREATE TABLE IF NOT EXISTS __terse_fields (name TEXT PRIMARY KEY, value TEXT NOT NULL CHECK(json_valid(value)))");
96
+ return database;
97
+ }
98
+ open() {
99
+ if (this.failure !== undefined)
100
+ throw this.failure;
101
+ if (this.connection !== undefined)
102
+ return this.connection;
103
+ if (this.seed === undefined)
104
+ throw new Error("actor SQLite database has not been restored");
105
+ const database = (this.connection = this.connect(this.seed.path));
106
+ database.exec("PRAGMA foreign_keys = ON; PRAGMA journal_mode = WAL; PRAGMA wal_autocheckpoint = 0; PRAGMA synchronous = FULL");
107
+ if (database.prepare("PRAGMA quick_check").get().quick_check !== "ok")
108
+ throw new Error("invalid actor SQLite database");
109
+ return database;
110
+ }
111
+ }
112
+ function openSqlite(path) {
113
+ const require = createRequire(import.meta.url);
114
+ if (!process.versions.bun) {
115
+ const { DatabaseSync } = require("node:sqlite");
116
+ return new DatabaseSync(path);
117
+ }
118
+ const { Database } = require("bun:sqlite");
119
+ const database = new Database(path, { strict: true });
120
+ return {
121
+ get isTransaction() {
122
+ return database.inTransaction;
123
+ },
124
+ exec: sql => database.exec(sql),
125
+ prepare: sql => database.prepare(sql),
126
+ close: () => database.close()
127
+ };
128
+ }
129
+ function validateStatement(sql) {
130
+ const statement = withoutComments(sql);
131
+ if (/(?:__terse_|_litestream_)/i.test(statement))
132
+ throw new Error("SQLite runtime table names are reserved");
133
+ if (/^(?:BEGIN|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE|ATTACH|DETACH|VACUUM)\b/i.test(statement))
134
+ throw new Error("actor invocations own SQLite transactions and database files");
135
+ if (/^PRAGMA\b/i.test(statement) &&
136
+ !/^PRAGMA\s+(?:main\.)?(?:table_info|table_xinfo|index_info|index_xinfo|index_list|foreign_key_list|foreign_key_check|integrity_check|quick_check|user_version)\b/i.test(statement))
137
+ throw new Error("this SQLite pragma is managed by the actor runtime");
138
+ }
139
+ function validateSingleStatement(database, sql) {
140
+ const tokens = sql.matchAll(/--[^\n]*(?:\n|$)|\/\*[\s\S]*?\*\/|'(?:''|[^'])*'|"(?:""|[^"])*"|`(?:``|[^`])*`|\[[^\]]*\]|;/g);
141
+ for (const token of tokens) {
142
+ if (token[0] !== ";" || !withoutComments(sql.slice(token.index + 1)))
143
+ continue;
144
+ try {
145
+ // SQLite distinguishes a statement boundary from a semicolon inside a trigger body.
146
+ database.prepare(sql.slice(0, token.index + 1));
147
+ }
148
+ catch (error) {
149
+ if (!(error instanceof Error) || !error.message.includes("incomplete input"))
150
+ throw error;
151
+ continue;
152
+ }
153
+ throw new Error("actor database exec accepts one SQL statement");
154
+ }
155
+ }
156
+ function withoutComments(sql) {
157
+ return sql.replace(/^(?:\s|;|--[^\n]*(?:\n|$)|\/\*[\s\S]*?\*\/)*/, "").trim();
158
+ }
159
+ export { SqliteActorDatabase, SqliteCaptureError };
160
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/host/sqlite.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /** @module durable-actors */
2
2
  export { Actor } from "./actor/actor.js";
3
+ export type { ActorDatabase, SqliteValue } from "./actor/database.js";
3
4
  export { Sandbox } from "./actor/sandbox.js";
4
5
  export type { SandboxOptions, SandboxRegion } from "./actor/sandbox.js";
5
6
  export { Emittable, Ephemeral, Persisted, Reentrant } from "./actor/decorators.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAClF,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EACR,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAClF,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EACR,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeInstaller.d.ts","sourceRoot":"","sources":["../src/runtimeInstaller.ts"],"names":[],"mappings":"AAWA,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAUlE;AAED,UAAU,cAAc;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;CACzB;AAED,qBAAa,gBAAgB;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,OAAO,EAAE,cAAc,EACvB,QAAQ,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAmB;IAG3E,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YAuBlB,MAAM;CAqBvB"}
1
+ {"version":3,"file":"runtimeInstaller.d.ts","sourceRoot":"","sources":["../src/runtimeInstaller.ts"],"names":[],"mappings":"AAYA,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAUlE;AAED,UAAU,cAAc;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;CACzB;AAED,qBAAa,gBAAgB;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,OAAO,EAAE,cAAc,EACvB,QAAQ,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAmB;IAG3E,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YAuBlB,MAAM;CAsBvB"}