durable-actors 0.8.0 → 0.8.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 (143) hide show
  1. package/README.md +1 -1
  2. package/dist/actor/actor.d.ts +19 -11
  3. package/dist/actor/actor.d.ts.map +1 -1
  4. package/dist/actor/actor.js +41 -36
  5. package/dist/actor/actor.js.map +1 -1
  6. package/dist/actor/alarm.d.ts +19 -0
  7. package/dist/actor/alarm.d.ts.map +1 -0
  8. package/dist/actor/alarm.js +2 -0
  9. package/dist/actor/alarm.js.map +1 -0
  10. package/dist/actor/context.d.ts +25 -0
  11. package/dist/actor/context.d.ts.map +1 -0
  12. package/dist/actor/context.js +83 -0
  13. package/dist/actor/context.js.map +1 -0
  14. package/dist/actor/database.d.ts +5 -5
  15. package/dist/actor/database.d.ts.map +1 -1
  16. package/dist/actor/database.js +9 -37
  17. package/dist/actor/database.js.map +1 -1
  18. package/dist/actor/decorators.d.ts +7 -2
  19. package/dist/actor/decorators.d.ts.map +1 -1
  20. package/dist/actor/decorators.js +11 -2
  21. package/dist/actor/decorators.js.map +1 -1
  22. package/dist/actor/resource.d.ts +9 -0
  23. package/dist/actor/resource.d.ts.map +1 -0
  24. package/dist/actor/resource.js +2 -0
  25. package/dist/actor/resource.js.map +1 -0
  26. package/dist/actor/schema.d.ts +3 -1
  27. package/dist/actor/schema.d.ts.map +1 -1
  28. package/dist/actor/schema.js.map +1 -1
  29. package/dist/actor/unchecked.d.ts +12 -0
  30. package/dist/actor/unchecked.d.ts.map +1 -0
  31. package/dist/actor/unchecked.js +8 -0
  32. package/dist/actor/unchecked.js.map +1 -0
  33. package/dist/cli/inspect.d.ts +73 -0
  34. package/dist/cli/inspect.d.ts.map +1 -0
  35. package/dist/cli/inspect.js +132 -0
  36. package/dist/cli/inspect.js.map +1 -0
  37. package/dist/cli.js +2 -0
  38. package/dist/cli.js.map +1 -1
  39. package/dist/client-runtime/http.d.ts +1 -1
  40. package/dist/client-runtime/http.d.ts.map +1 -1
  41. package/dist/client-runtime/http.js +1 -1
  42. package/dist/client-runtime/http.js.map +1 -1
  43. package/dist/client-runtime/stub.d.ts.map +1 -1
  44. package/dist/client-runtime/stub.js +11 -1
  45. package/dist/client-runtime/stub.js.map +1 -1
  46. package/dist/compiler/actor-compiler.d.ts +4 -2
  47. package/dist/compiler/actor-compiler.d.ts.map +1 -1
  48. package/dist/compiler/actor-compiler.js +48 -13
  49. package/dist/compiler/actor-compiler.js.map +1 -1
  50. package/dist/compiler/declarations.d.ts.map +1 -1
  51. package/dist/compiler/declarations.js +31 -1
  52. package/dist/compiler/declarations.js.map +2 -2
  53. package/dist/compiler/features/atomicity.d.ts +9 -0
  54. package/dist/compiler/features/atomicity.d.ts.map +1 -0
  55. package/dist/compiler/features/atomicity.js +44 -0
  56. package/dist/compiler/features/atomicity.js.map +1 -0
  57. package/dist/compiler/features/interleave.d.ts +9 -0
  58. package/dist/compiler/features/{reentrancy.d.ts.map → interleave.d.ts.map} +1 -1
  59. package/dist/compiler/features/{reentrancy.js → interleave.js} +13 -13
  60. package/dist/compiler/features/{reentrancy.js.map → interleave.js.map} +1 -1
  61. package/dist/compiler/features/persistence.d.ts +2 -5
  62. package/dist/compiler/features/persistence.d.ts.map +1 -1
  63. package/dist/compiler/features/persistence.js +5 -83
  64. package/dist/compiler/features/persistence.js.map +1 -1
  65. package/dist/compiler/features/resource.d.ts +5 -0
  66. package/dist/compiler/features/resource.d.ts.map +1 -0
  67. package/dist/compiler/features/resource.js +18 -0
  68. package/dist/compiler/features/resource.js.map +1 -0
  69. package/dist/compiler/fieldParsing.d.ts +12 -0
  70. package/dist/compiler/fieldParsing.d.ts.map +1 -0
  71. package/dist/compiler/fieldParsing.js +106 -0
  72. package/dist/compiler/fieldParsing.js.map +1 -0
  73. package/dist/compiler/json-schema.d.ts +2 -2
  74. package/dist/compiler/json-schema.d.ts.map +1 -1
  75. package/dist/compiler/json-schema.js +22 -14
  76. package/dist/compiler/json-schema.js.map +1 -1
  77. package/dist/compiler/rpc-contract.d.ts +1 -1
  78. package/dist/compiler/rpc-contract.d.ts.map +1 -1
  79. package/dist/compiler/rpc-contract.js +21 -11
  80. package/dist/compiler/rpc-contract.js.map +1 -1
  81. package/dist/compiler/socket-contract.d.ts +1 -1
  82. package/dist/compiler/socket-contract.d.ts.map +1 -1
  83. package/dist/compiler/socket-contract.js +3 -3
  84. package/dist/compiler/socket-contract.js.map +1 -1
  85. package/dist/compiler/types.d.ts +13 -3
  86. package/dist/compiler/types.d.ts.map +1 -1
  87. package/dist/compiler/types.js +3 -1
  88. package/dist/compiler/types.js.map +1 -1
  89. package/dist/compiler/validate-public-contract.d.ts.map +1 -1
  90. package/dist/compiler/validate-public-contract.js +12 -1
  91. package/dist/compiler/validate-public-contract.js.map +1 -1
  92. package/dist/generated/client-runtime.d.ts.map +1 -1
  93. package/dist/generated/client-runtime.js +1 -1
  94. package/dist/generated/client-runtime.js.map +1 -1
  95. package/dist/host/actor-host.d.ts.map +1 -1
  96. package/dist/host/actor-host.js +44 -50
  97. package/dist/host/actor-host.js.map +1 -1
  98. package/dist/host/actor-runtime.d.ts +7 -8
  99. package/dist/host/actor-runtime.d.ts.map +1 -1
  100. package/dist/host/actor-runtime.js +80 -78
  101. package/dist/host/actor-runtime.js.map +1 -1
  102. package/dist/host/actor-worker.js +10 -27
  103. package/dist/host/actor-worker.js.map +1 -1
  104. package/dist/host/database-bridge.d.ts +16 -0
  105. package/dist/host/database-bridge.d.ts.map +1 -0
  106. package/dist/host/database-bridge.js +29 -0
  107. package/dist/host/database-bridge.js.map +1 -0
  108. package/dist/host/database.d.ts +86 -0
  109. package/dist/host/database.d.ts.map +1 -0
  110. package/dist/host/database.js +87 -0
  111. package/dist/host/database.js.map +1 -0
  112. package/dist/host/generic-host.js +1 -1
  113. package/dist/host/persisted-fields.d.ts +7 -0
  114. package/dist/host/persisted-fields.d.ts.map +1 -0
  115. package/dist/host/persisted-fields.js +29 -0
  116. package/dist/host/persisted-fields.js.map +1 -0
  117. package/dist/host/protocol.d.ts +55 -131
  118. package/dist/host/protocol.d.ts.map +1 -1
  119. package/dist/host/protocol.js +28 -28
  120. package/dist/host/protocol.js.map +1 -1
  121. package/dist/host/types.d.ts +8 -9
  122. package/dist/host/types.d.ts.map +1 -1
  123. package/dist/host/worker-supervisor.d.ts +32 -30
  124. package/dist/host/worker-supervisor.d.ts.map +1 -1
  125. package/dist/host/worker-supervisor.js +246 -230
  126. package/dist/host/worker-supervisor.js.map +1 -1
  127. package/dist/index.d.ts +5 -2
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +2 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/templates/actor/package.json +1 -1
  132. package/dist/templates/ai-chat/package.json +1 -1
  133. package/dist/templates/ai-chat/src/actors.ts +1 -1
  134. package/dist/templates/chat/package.json +1 -1
  135. package/dist/templates/chat/src/actors.ts +1 -1
  136. package/dist/templates/documents/package.json +1 -1
  137. package/dist/templates/documents/src/actors.ts +1 -1
  138. package/package.json +2 -2
  139. package/dist/compiler/features/reentrancy.d.ts +0 -9
  140. package/dist/host/sqlite.d.ts +0 -49
  141. package/dist/host/sqlite.d.ts.map +0 -1
  142. package/dist/host/sqlite.js +0 -161
  143. package/dist/host/sqlite.js.map +0 -1
@@ -0,0 +1,86 @@
1
+ import type { ActorAlarmState, ActorAlarmStorage } from "../actor/alarm.js";
2
+ import type { ActorDatabase, SqliteValue } from "../actor/database.js";
3
+ import type { JsonObject, JsonValue } from "../json.js";
4
+ type DatabaseValue = {
5
+ readonly type: "null";
6
+ } | {
7
+ readonly type: "integer";
8
+ readonly value: string;
9
+ } | {
10
+ readonly type: "real";
11
+ readonly value: number;
12
+ } | {
13
+ readonly type: "text";
14
+ readonly value: string;
15
+ } | {
16
+ readonly type: "blob";
17
+ readonly value: string;
18
+ };
19
+ type DatabaseCall = {
20
+ readonly op: "exec";
21
+ readonly sql: string;
22
+ readonly bindings: DatabaseValue[];
23
+ readonly immediate: boolean;
24
+ } | {
25
+ readonly op: "fields";
26
+ } | {
27
+ readonly op: "initialize_fields";
28
+ readonly fields: JsonObject;
29
+ } | {
30
+ readonly op: "persist_field";
31
+ readonly name: string;
32
+ readonly value: JsonValue;
33
+ readonly immediate: boolean;
34
+ } | {
35
+ readonly op: "delete_field";
36
+ readonly name: string;
37
+ readonly immediate: boolean;
38
+ } | {
39
+ readonly op: "replace_fields";
40
+ readonly fields: JsonObject;
41
+ } | {
42
+ readonly op: "alarm";
43
+ } | {
44
+ readonly op: "set_alarm";
45
+ readonly timestamp_ms: number;
46
+ readonly immediate: boolean;
47
+ } | {
48
+ readonly op: "delete_alarm";
49
+ readonly immediate: boolean;
50
+ } | {
51
+ readonly op: "commit";
52
+ } | {
53
+ readonly op: "rollback";
54
+ };
55
+ type DatabaseResult = {
56
+ readonly type: "rows";
57
+ readonly columns: string[];
58
+ readonly rows: DatabaseValue[][];
59
+ } | {
60
+ readonly type: "fields";
61
+ readonly fields: JsonObject;
62
+ } | {
63
+ readonly type: "alarm";
64
+ readonly timestamp_ms: number | null;
65
+ } | {
66
+ readonly type: "done";
67
+ };
68
+ type DatabaseTransport = (call: DatabaseCall) => DatabaseResult;
69
+ declare class DatabaseCommitError extends Error {
70
+ }
71
+ declare class DatabaseProxy implements ActorDatabase, ActorAlarmStorage {
72
+ private readonly transport;
73
+ constructor(transport: DatabaseTransport);
74
+ exec<Row extends object>(sql: string, ...bindings: SqliteValue[]): Row[];
75
+ fields(): JsonObject;
76
+ getAlarmState(): ActorAlarmState;
77
+ setAlarm(timestampMs: number): void;
78
+ deleteAlarm(): void;
79
+ initializeFields(fields: JsonObject): void;
80
+ persistField(name: string, value: JsonValue | undefined): void;
81
+ commit(): void;
82
+ rollback(): void;
83
+ }
84
+ export { DatabaseCommitError, DatabaseProxy };
85
+ export type { DatabaseCall, DatabaseResult, DatabaseTransport, DatabaseValue };
86
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/host/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { actorDatabaseMode } from "../actor/database.js";
2
+ import { errorMessage } from "../errors.js";
3
+ class DatabaseCommitError extends Error {
4
+ }
5
+ class DatabaseProxy {
6
+ transport;
7
+ constructor(transport) {
8
+ this.transport = transport;
9
+ }
10
+ exec(sql, ...bindings) {
11
+ const result = this.transport({ op: "exec", sql, bindings: bindings.map(encode), immediate: immediate() });
12
+ if (result.type !== "rows")
13
+ throw unexpected(result);
14
+ return result.rows.map(row => Object.fromEntries(row.map((value, index) => [result.columns[index], decode(value)])));
15
+ }
16
+ fields() {
17
+ const result = this.transport({ op: "fields" });
18
+ if (result.type !== "fields")
19
+ throw unexpected(result);
20
+ return result.fields;
21
+ }
22
+ getAlarmState() {
23
+ const result = this.transport({ op: "alarm" });
24
+ if (result.type !== "alarm")
25
+ throw unexpected(result);
26
+ return { timestampMs: result.timestamp_ms };
27
+ }
28
+ setAlarm(timestampMs) {
29
+ this.transport({ op: "set_alarm", timestamp_ms: timestampMs, immediate: immediate() });
30
+ }
31
+ deleteAlarm() {
32
+ this.transport({ op: "delete_alarm", immediate: immediate() });
33
+ }
34
+ initializeFields(fields) {
35
+ this.transport({ op: "initialize_fields", fields });
36
+ }
37
+ persistField(name, value) {
38
+ this.transport(value === undefined
39
+ ? { op: "delete_field", name, immediate: immediate() }
40
+ : { op: "persist_field", name, value, immediate: immediate() });
41
+ }
42
+ commit() {
43
+ try {
44
+ this.transport({ op: "commit" });
45
+ }
46
+ catch (cause) {
47
+ throw new DatabaseCommitError(`failed to replicate actor SQLite commit: ${errorMessage(cause)}`, { cause });
48
+ }
49
+ }
50
+ rollback() {
51
+ this.transport({ op: "rollback" });
52
+ }
53
+ }
54
+ function immediate() {
55
+ return actorDatabaseMode() === "immediate";
56
+ }
57
+ function encode(value) {
58
+ if (value === null)
59
+ return { type: "null" };
60
+ if (typeof value === "bigint")
61
+ return { type: "integer", value: value.toString() };
62
+ if (typeof value === "number")
63
+ return Number.isInteger(value) ? { type: "integer", value: value.toString() } : { type: "real", value };
64
+ if (typeof value === "string")
65
+ return { type: "text", value };
66
+ return { type: "blob", value: Buffer.from(value.buffer, value.byteOffset, value.byteLength).toString("base64") };
67
+ }
68
+ function decode(value) {
69
+ switch (value.type) {
70
+ case "null":
71
+ return null;
72
+ case "integer": {
73
+ const integer = BigInt(value.value);
74
+ return Number.isSafeInteger(Number(integer)) ? Number(integer) : integer;
75
+ }
76
+ case "real":
77
+ case "text":
78
+ return value.value;
79
+ case "blob":
80
+ return new Uint8Array(Buffer.from(value.value, "base64"));
81
+ }
82
+ }
83
+ function unexpected(result) {
84
+ return new Error(`unexpected actor database result ${result.type}`);
85
+ }
86
+ export { DatabaseCommitError, DatabaseProxy };
87
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/host/database.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: 24 })}\n`);
13
+ socket.write(`${JSON.stringify({ type: "warm", protocol: 28 })}\n`);
14
14
  const { entrypoint, environment } = await assignment;
15
15
  await access(entrypoint);
16
16
  let available = true;
@@ -0,0 +1,7 @@
1
+ import type { RuntimeActorContext } from "../actor/context.js";
2
+ import type { ActorSchema } from "../actor/schema.js";
3
+ import type { DatabaseProxy } from "./database.js";
4
+ declare function bindPersistedFields(instance: object, context: RuntimeActorContext, schema: ActorSchema, database: DatabaseProxy): void;
5
+ declare function isPersistedField(instance: object, name: string, descriptor: PropertyDescriptor): boolean;
6
+ export { bindPersistedFields, isPersistedField };
7
+ //# sourceMappingURL=persisted-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persisted-fields.d.ts","sourceRoot":"","sources":["../../src/host/persisted-fields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,iBAAS,mBAAmB,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,aAAa,GACxB,IAAI,CAkBN;AAED,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAGjG;AAED,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { actorContext } from "../actor/actor.js";
2
+ import { Persistence } from "../actor/schema.js";
3
+ import { cloneJsonObject } from "../json.js";
4
+ function bindPersistedFields(instance, context, schema, database) {
5
+ for (const field of schema.fields) {
6
+ if (field.persistence !== Persistence.Persisted || !Object.hasOwn(instance, field.name))
7
+ continue;
8
+ let value = Reflect.get(instance, field.name);
9
+ const descriptor = {
10
+ configurable: true,
11
+ enumerable: true,
12
+ get: () => value,
13
+ set: next => {
14
+ context.assertAccess();
15
+ const state = cloneJsonObject({ [field.name]: next }, "actor state");
16
+ database.persistField(field.name, state[field.name]);
17
+ value = next;
18
+ }
19
+ };
20
+ Object.defineProperty(instance, field.name, descriptor);
21
+ context.persistedFields.set(field.name, descriptor);
22
+ }
23
+ }
24
+ function isPersistedField(instance, name, descriptor) {
25
+ const bound = actorContext(instance)?.persistedFields.get(name);
26
+ return bound !== undefined && bound.get === descriptor.get && bound.set === descriptor.set;
27
+ }
28
+ export { bindPersistedFields, isPersistedField };
29
+ //# sourceMappingURL=persisted-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persisted-fields.js","sourceRoot":"","sources":["../../src/host/persisted-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAI5C,SAAS,mBAAmB,CACxB,QAAgB,EAChB,OAA4B,EAC5B,MAAmB,EACnB,QAAuB;IAEvB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;YAAE,SAAQ;QACjG,IAAI,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,UAAU,GAAuB;YACnC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;YAChB,GAAG,EAAE,IAAI,CAAC,EAAE;gBACR,OAAO,CAAC,YAAY,EAAE,CAAA;gBACtB,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,CAAA;gBACpE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;gBACpD,KAAK,GAAG,IAAI,CAAA;YAChB,CAAC;SACJ,CAAA;QACD,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACvD,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACvD,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,IAAY,EAAE,UAA8B;IACpF,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/D,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAA;AAC9F,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -2,33 +2,19 @@ import { z } from "zod";
2
2
  import type { ActorIdentity } from "../actor/identity.js";
3
3
  import type { SocketEffect, SocketLookup, SocketQuery } from "../actor/socketProtocol.js";
4
4
  import type { JsonValue } from "../json.js";
5
- import type { SqliteState } from "./sqlite.js";
5
+ import type { DatabaseRequest } from "./database-bridge.js";
6
+ import type { DatabaseCall } from "./database.js";
6
7
  declare function parseActorSessionServerMessage(document: string): ActorSessionServerMessage;
7
8
  declare function failedReply(code: string, message: string): FailedReply;
8
9
  declare const invokeCommandSchema: z.ZodObject<{
9
10
  type: z.ZodLiteral<"invoke">;
10
11
  request_id: z.ZodString;
11
- actor: z.ZodObject<{
12
- project_id: z.ZodString;
13
- actor_name: z.ZodString;
14
- actor_id: z.ZodString;
15
- }, z.core.$strict>;
16
12
  method: z.ZodString;
17
13
  args: z.ZodArray<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
- }, z.core.$strip>>;
22
- resident_only: z.ZodOptional<z.ZodBoolean>;
23
14
  }, z.core.$strip>;
24
15
  declare const websocketEventCommandSchema: z.ZodObject<{
25
16
  type: z.ZodLiteral<"websocket_event">;
26
17
  request_id: z.ZodString;
27
- actor: z.ZodObject<{
28
- project_id: z.ZodString;
29
- actor_name: z.ZodString;
30
- actor_id: z.ZodString;
31
- }, z.core.$strict>;
32
18
  event: z.ZodDiscriminatedUnion<[z.ZodObject<{
33
19
  type: z.ZodLiteral<"connect">;
34
20
  connection: z.ZodObject<{
@@ -62,56 +48,19 @@ declare const websocketEventCommandSchema: z.ZodObject<{
62
48
  metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
63
49
  tags: z.ZodArray<z.ZodString>;
64
50
  }, z.core.$strip>>;
65
- sqlite: z.ZodOptional<z.ZodObject<{
66
- txid: z.ZodNumber;
67
- path: z.ZodOptional<z.ZodString>;
68
- }, z.core.$strip>>;
69
- resident_only: z.ZodOptional<z.ZodBoolean>;
70
51
  }, z.core.$strip>;
71
52
  declare const evictCommandSchema: z.ZodObject<{
72
53
  type: z.ZodLiteral<"evict">;
73
- actor: z.ZodObject<{
74
- project_id: z.ZodString;
75
- actor_name: z.ZodString;
76
- actor_id: z.ZodString;
77
- }, z.core.$strict>;
78
- }, z.core.$strip>;
79
- declare const hydrateCommandSchema: z.ZodObject<{
80
- type: z.ZodLiteral<"hydrate">;
81
- actor: z.ZodObject<{
82
- project_id: z.ZodString;
83
- actor_name: z.ZodString;
84
- actor_id: z.ZodString;
85
- }, z.core.$strict>;
86
- sqlite: z.ZodOptional<z.ZodObject<{
87
- txid: z.ZodNumber;
88
- path: z.ZodOptional<z.ZodString>;
89
- }, z.core.$strip>>;
90
- resident_only: z.ZodOptional<z.ZodBoolean>;
54
+ graceful: z.ZodBoolean;
91
55
  }, z.core.$strip>;
92
56
  declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
93
57
  type: z.ZodLiteral<"invoke">;
94
58
  request_id: z.ZodString;
95
- actor: z.ZodObject<{
96
- project_id: z.ZodString;
97
- actor_name: z.ZodString;
98
- actor_id: z.ZodString;
99
- }, z.core.$strict>;
100
59
  method: z.ZodString;
101
60
  args: z.ZodArray<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
102
- sqlite: z.ZodOptional<z.ZodObject<{
103
- txid: z.ZodNumber;
104
- path: z.ZodOptional<z.ZodString>;
105
- }, z.core.$strip>>;
106
- resident_only: z.ZodOptional<z.ZodBoolean>;
107
61
  }, z.core.$strip>, z.ZodObject<{
108
62
  type: z.ZodLiteral<"websocket_event">;
109
63
  request_id: z.ZodString;
110
- actor: z.ZodObject<{
111
- project_id: z.ZodString;
112
- actor_name: z.ZodString;
113
- actor_id: z.ZodString;
114
- }, z.core.$strict>;
115
64
  event: z.ZodDiscriminatedUnion<[z.ZodObject<{
116
65
  type: z.ZodLiteral<"connect">;
117
66
  connection: z.ZodObject<{
@@ -145,40 +94,51 @@ declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
145
94
  metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
146
95
  tags: z.ZodArray<z.ZodString>;
147
96
  }, z.core.$strip>>;
148
- sqlite: z.ZodOptional<z.ZodObject<{
149
- txid: z.ZodNumber;
150
- path: z.ZodOptional<z.ZodString>;
151
- }, z.core.$strip>>;
152
- resident_only: z.ZodOptional<z.ZodBoolean>;
153
97
  }, z.core.$strip>, z.ZodObject<{
154
98
  type: z.ZodLiteral<"evict">;
155
- actor: z.ZodObject<{
156
- project_id: z.ZodString;
157
- actor_name: z.ZodString;
158
- actor_id: z.ZodString;
159
- }, z.core.$strict>;
99
+ graceful: z.ZodBoolean;
160
100
  }, z.core.$strip>, z.ZodObject<{
161
101
  type: z.ZodLiteral<"hydrate">;
162
- actor: z.ZodObject<{
163
- project_id: z.ZodString;
164
- actor_name: z.ZodString;
165
- actor_id: z.ZodString;
166
- }, z.core.$strict>;
167
- sqlite: z.ZodOptional<z.ZodObject<{
168
- txid: z.ZodNumber;
169
- path: z.ZodOptional<z.ZodString>;
170
- }, z.core.$strip>>;
171
- resident_only: z.ZodOptional<z.ZodBoolean>;
172
102
  }, z.core.$strip>], "type">;
173
103
  declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
174
- type: z.ZodLiteral<"sqlite_committed">;
104
+ type: z.ZodLiteral<"database_result">;
175
105
  message_id: z.ZodNumber;
176
- txid: z.ZodOptional<z.ZodNumber>;
106
+ result: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
107
+ type: z.ZodLiteral<"rows">;
108
+ columns: z.ZodArray<z.ZodString>;
109
+ rows: z.ZodArray<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
110
+ type: z.ZodLiteral<"null">;
111
+ }, z.core.$strip>, z.ZodObject<{
112
+ type: z.ZodLiteral<"integer">;
113
+ value: z.ZodString;
114
+ }, z.core.$strip>, z.ZodObject<{
115
+ type: z.ZodLiteral<"real">;
116
+ value: z.ZodNumber;
117
+ }, z.core.$strip>, z.ZodObject<{
118
+ type: z.ZodLiteral<"text">;
119
+ value: z.ZodString;
120
+ }, z.core.$strip>, z.ZodObject<{
121
+ type: z.ZodLiteral<"blob">;
122
+ value: z.ZodBase64;
123
+ }, z.core.$strip>], "type">>>;
124
+ }, z.core.$strip>, z.ZodObject<{
125
+ type: z.ZodLiteral<"fields">;
126
+ fields: z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
127
+ }, z.core.$strip>, z.ZodObject<{
128
+ type: z.ZodLiteral<"alarm">;
129
+ timestamp_ms: z.ZodNullable<z.ZodNumber>;
130
+ }, z.core.$strip>, z.ZodObject<{
131
+ type: z.ZodLiteral<"done">;
132
+ }, z.core.$strip>], "type">>;
177
133
  error: z.ZodOptional<z.ZodString>;
178
134
  }, z.core.$strip>, z.ZodObject<{
179
135
  type: z.ZodLiteral<"attached">;
180
- protocol: z.ZodLiteral<24>;
181
- supports_residency: z.ZodOptional<z.ZodBoolean>;
136
+ protocol: z.ZodLiteral<28>;
137
+ actor: z.ZodObject<{
138
+ project_id: z.ZodString;
139
+ actor_name: z.ZodString;
140
+ actor_id: z.ZodString;
141
+ }, z.core.$strict>;
182
142
  }, z.core.$strip>, z.ZodObject<{
183
143
  type: z.ZodLiteral<"socket_connections">;
184
144
  message_id: z.ZodNumber;
@@ -198,26 +158,11 @@ declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObj
198
158
  command: z.ZodDiscriminatedUnion<[z.ZodObject<{
199
159
  type: z.ZodLiteral<"invoke">;
200
160
  request_id: z.ZodString;
201
- actor: z.ZodObject<{
202
- project_id: z.ZodString;
203
- actor_name: z.ZodString;
204
- actor_id: z.ZodString;
205
- }, z.core.$strict>;
206
161
  method: z.ZodString;
207
162
  args: z.ZodArray<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
208
- sqlite: z.ZodOptional<z.ZodObject<{
209
- txid: z.ZodNumber;
210
- path: z.ZodOptional<z.ZodString>;
211
- }, z.core.$strip>>;
212
- resident_only: z.ZodOptional<z.ZodBoolean>;
213
163
  }, z.core.$strip>, z.ZodObject<{
214
164
  type: z.ZodLiteral<"websocket_event">;
215
165
  request_id: z.ZodString;
216
- actor: z.ZodObject<{
217
- project_id: z.ZodString;
218
- actor_name: z.ZodString;
219
- actor_id: z.ZodString;
220
- }, z.core.$strict>;
221
166
  event: z.ZodDiscriminatedUnion<[z.ZodObject<{
222
167
  type: z.ZodLiteral<"connect">;
223
168
  connection: z.ZodObject<{
@@ -251,48 +196,29 @@ declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObj
251
196
  metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
252
197
  tags: z.ZodArray<z.ZodString>;
253
198
  }, z.core.$strip>>;
254
- sqlite: z.ZodOptional<z.ZodObject<{
255
- txid: z.ZodNumber;
256
- path: z.ZodOptional<z.ZodString>;
257
- }, z.core.$strip>>;
258
- resident_only: z.ZodOptional<z.ZodBoolean>;
259
199
  }, z.core.$strip>, z.ZodObject<{
260
200
  type: z.ZodLiteral<"evict">;
261
- actor: z.ZodObject<{
262
- project_id: z.ZodString;
263
- actor_name: z.ZodString;
264
- actor_id: z.ZodString;
265
- }, z.core.$strict>;
201
+ graceful: z.ZodBoolean;
266
202
  }, z.core.$strip>, z.ZodObject<{
267
203
  type: z.ZodLiteral<"hydrate">;
268
- actor: z.ZodObject<{
269
- project_id: z.ZodString;
270
- actor_name: z.ZodString;
271
- actor_id: z.ZodString;
272
- }, z.core.$strict>;
273
- sqlite: z.ZodOptional<z.ZodObject<{
274
- txid: z.ZodNumber;
275
- path: z.ZodOptional<z.ZodString>;
276
- }, z.core.$strip>>;
277
- resident_only: z.ZodOptional<z.ZodBoolean>;
278
204
  }, z.core.$strip>], "type">;
279
205
  }, z.core.$strip>], "type">;
280
- type HydrateCommand = z.infer<typeof hydrateCommandSchema>;
281
- type InvokeCommand = z.infer<typeof invokeCommandSchema>;
206
+ type InvokeCommand = z.infer<typeof invokeCommandSchema> & AssignedActor;
282
207
  type EvictCommand = z.infer<typeof evictCommandSchema>;
283
208
  type ActorExecutorCommand = z.infer<typeof executorCommandSchema>;
209
+ type ActorExecutionCommand = Exclude<ActorExecutorCommand, EvictCommand>;
210
+ type ActorWorkerCommand = ActorExecutorCommand & AssignedActor;
284
211
  type ActorSessionServerMessage = z.infer<typeof actorSessionServerMessageSchema>;
285
212
  type ActorExecutorReply = InvokedReply | WebSocketHandledReply | FailedReply | EvictedReply | {
286
213
  readonly type: "hydrated";
287
- } | {
288
- readonly type: "state_required";
289
214
  };
290
215
  type ActorSessionClientMessage = {
291
- readonly type: "commit_sqlite";
216
+ readonly type: "database_call";
292
217
  readonly message_id: number;
218
+ readonly call: DatabaseCall;
293
219
  } | {
294
220
  readonly type: "residency";
295
- readonly actors: readonly ActorIdentity[];
221
+ readonly resident: boolean;
296
222
  } | AttachMessage | {
297
223
  readonly type: "ready_for_invocation";
298
224
  readonly message_id: number;
@@ -307,9 +233,12 @@ type ActorSessionClientMessage = {
307
233
  };
308
234
  interface AttachMessage {
309
235
  readonly type: "attach";
310
- readonly protocol: 24;
236
+ readonly protocol: 28;
311
237
  readonly actor_names: readonly string[];
312
238
  }
239
+ interface AssignedActor {
240
+ readonly actor: ActorIdentity;
241
+ }
313
242
  interface ReplyMessage {
314
243
  readonly type: "reply";
315
244
  readonly message_id: number;
@@ -319,13 +248,11 @@ interface InvokedReply {
319
248
  readonly type: "invoked";
320
249
  readonly sequence?: number;
321
250
  readonly result: JsonValue;
322
- readonly sqlite: SqliteState;
323
251
  readonly effects?: readonly SocketEffect[];
324
252
  }
325
253
  interface WebSocketHandledReply {
326
254
  readonly type: "websocket_handled";
327
255
  readonly sequence?: number;
328
- readonly sqlite: SqliteState;
329
256
  readonly effects: readonly SocketEffect[];
330
257
  }
331
258
  interface FailedReply {
@@ -341,17 +268,12 @@ interface ActorWorkerData {
341
268
  readonly environment?: Readonly<Record<string, string>>;
342
269
  }
343
270
  type ActorWorkerRequest = {
344
- readonly type: "sqlite_committed";
345
- readonly messageId: number;
346
- readonly txid?: number;
347
- readonly error?: string;
348
- } | {
349
271
  readonly type: "load";
350
272
  readonly data: ActorWorkerData;
351
273
  } | {
352
274
  readonly type: "execute";
353
275
  readonly messageId: number;
354
- readonly command: InvokeCommand | WebSocketEventCommand | HydrateCommand;
276
+ readonly command: ActorWorkerCommand;
355
277
  } | {
356
278
  readonly type: "socket_effects_published";
357
279
  readonly messageId: number;
@@ -363,8 +285,10 @@ type ActorWorkerRequest = {
363
285
  readonly error?: string;
364
286
  };
365
287
  type ActorWorkerMessage = {
366
- readonly type: "commit_sqlite";
288
+ readonly type: "database_call";
367
289
  readonly messageId: number;
290
+ readonly call: DatabaseCall;
291
+ readonly request: DatabaseRequest;
368
292
  } | {
369
293
  readonly type: "warm";
370
294
  } | {
@@ -386,7 +310,7 @@ type ActorWorkerMessage = {
386
310
  readonly messageId: number;
387
311
  readonly query?: SocketQuery;
388
312
  };
389
- type WebSocketEventCommand = z.infer<typeof websocketEventCommandSchema>;
313
+ type WebSocketEventCommand = z.infer<typeof websocketEventCommandSchema> & AssignedActor;
390
314
  export { failedReply, parseActorSessionServerMessage };
391
- export type { ActorExecutorCommand, ActorExecutorReply, ActorSessionClientMessage, ActorSessionServerMessage, ActorWorkerData, ActorWorkerMessage, ActorWorkerRequest, EvictCommand, InvokeCommand, HydrateCommand, WebSocketEventCommand };
315
+ export type { ActorExecutionCommand, ActorExecutorCommand, ActorExecutorReply, ActorSessionClientMessage, ActorSessionServerMessage, ActorWorkerData, ActorWorkerCommand, ActorWorkerMessage, ActorWorkerRequest, EvictCommand, InvokeCommand, WebSocketEventCommand };
392
316
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGzF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,iBAAS,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB,CAUnF;AAED,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAE/D;AAOD,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;iBAQvB,CAAA;AAEF,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ/B,CAAA;AAEF,QAAA,MAAM,kBAAkB;;;;;;;iBAGtB,CAAA;AAEF,QAAA,MAAM,oBAAoB;;;;;;;;;;;;iBAKxB,CAAA;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAKzB,CAAA;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAwBnC,CAAA;AAEF,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAC1D,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACxD,KAAK,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACtD,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACjE,KAAK,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAChF,KAAK,kBAAkB,GACjB,YAAY,GACZ,qBAAqB,GACrB,WAAW,GACX,YAAY,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAA;AACzC,KAAK,yBAAyB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GACzE,aAAa,GACb;IAAE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtE,YAAY,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,GAC/F;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,CAAA;AAEjH,UAAU,aAAa;IACnB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1C;AAED,UAAU,YAAY;IAClB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;CACrC;AAED,UAAU,YAAY;IAClB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;CAC7C;AAED,UAAU,qBAAqB;IAC3B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;CAC5C;AAED,UAAU,WAAW;IACjB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAC3B;AAED,UAAU,YAAY;IAClB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAC3B;AAED,UAAU,eAAe;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC1D;AAED,KAAK,kBAAkB,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAClH;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GACzD;IACI,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,qBAAqB,GAAG,cAAc,CAAA;CAC3E,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAClG;IACI,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AACP,KAAK,kBAAkB,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IACI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,GAC1F,WAAW,GACX;IAAE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,GAC1G;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AAEpG,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAA;AACtD,YAAY,EACR,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,qBAAqB,EACxB,CAAA"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"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"}