@maiaos/protocol 0.1.0-canary.44938d4.manual.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 (246) hide show
  1. package/README.md +239 -0
  2. package/dist/aggregate/revision-effect-schema.d.ts +3 -0
  3. package/dist/aggregate/revision-effect-schema.d.ts.map +1 -0
  4. package/dist/aggregate/revision-effect-schema.js +4 -0
  5. package/dist/aggregate/revision-effect-schema.js.map +1 -0
  6. package/dist/capability.d.ts +12 -0
  7. package/dist/capability.d.ts.map +1 -0
  8. package/dist/capability.js +27 -0
  9. package/dist/capability.js.map +1 -0
  10. package/dist/command-receipt/contract.d.ts +85 -0
  11. package/dist/command-receipt/contract.d.ts.map +1 -0
  12. package/dist/command-receipt/contract.js +12 -0
  13. package/dist/command-receipt/contract.js.map +1 -0
  14. package/dist/command-receipt/effect-schema.d.ts +78 -0
  15. package/dist/command-receipt/effect-schema.d.ts.map +1 -0
  16. package/dist/command-receipt/effect-schema.js +72 -0
  17. package/dist/command-receipt/effect-schema.js.map +1 -0
  18. package/dist/command-receipt/policy.d.ts +16 -0
  19. package/dist/command-receipt/policy.d.ts.map +1 -0
  20. package/dist/command-receipt/policy.js +76 -0
  21. package/dist/command-receipt/policy.js.map +1 -0
  22. package/dist/command-receipt/version.d.ts +2 -0
  23. package/dist/command-receipt/version.d.ts.map +1 -0
  24. package/dist/command-receipt/version.js +2 -0
  25. package/dist/command-receipt/version.js.map +1 -0
  26. package/dist/configuration.d.ts +63 -0
  27. package/dist/configuration.d.ts.map +1 -0
  28. package/dist/configuration.js +93 -0
  29. package/dist/configuration.js.map +1 -0
  30. package/dist/envelope-effect-schema.d.ts +49 -0
  31. package/dist/envelope-effect-schema.d.ts.map +1 -0
  32. package/dist/envelope-effect-schema.js +50 -0
  33. package/dist/envelope-effect-schema.js.map +1 -0
  34. package/dist/envelope-policy.d.ts +4 -0
  35. package/dist/envelope-policy.d.ts.map +1 -0
  36. package/dist/envelope-policy.js +4 -0
  37. package/dist/envelope-policy.js.map +1 -0
  38. package/dist/envelope.d.ts +52 -0
  39. package/dist/envelope.d.ts.map +1 -0
  40. package/dist/envelope.js +41 -0
  41. package/dist/envelope.js.map +1 -0
  42. package/dist/execution/contract.d.ts +230 -0
  43. package/dist/execution/contract.d.ts.map +1 -0
  44. package/dist/execution/contract.js +16 -0
  45. package/dist/execution/contract.js.map +1 -0
  46. package/dist/execution/effect-schema.d.ts +370 -0
  47. package/dist/execution/effect-schema.d.ts.map +1 -0
  48. package/dist/execution/effect-schema.js +148 -0
  49. package/dist/execution/effect-schema.js.map +1 -0
  50. package/dist/execution/version.d.ts +5 -0
  51. package/dist/execution/version.d.ts.map +1 -0
  52. package/dist/execution/version.js +5 -0
  53. package/dist/execution/version.js.map +1 -0
  54. package/dist/harness/installed/contract.d.ts +144 -0
  55. package/dist/harness/installed/contract.d.ts.map +1 -0
  56. package/dist/harness/installed/contract.js +6 -0
  57. package/dist/harness/installed/contract.js.map +1 -0
  58. package/dist/harness/installed/effect-schema.d.ts +261 -0
  59. package/dist/harness/installed/effect-schema.d.ts.map +1 -0
  60. package/dist/harness/installed/effect-schema.js +63 -0
  61. package/dist/harness/installed/effect-schema.js.map +1 -0
  62. package/dist/harness/installed/version.d.ts +2 -0
  63. package/dist/harness/installed/version.d.ts.map +1 -0
  64. package/dist/harness/installed/version.js +2 -0
  65. package/dist/harness/installed/version.js.map +1 -0
  66. package/dist/index.d.ts +18 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +18 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/integration-authorization/contract.d.ts +3495 -0
  71. package/dist/integration-authorization/contract.d.ts.map +1 -0
  72. package/dist/integration-authorization/contract.js +25 -0
  73. package/dist/integration-authorization/contract.js.map +1 -0
  74. package/dist/integration-authorization/effect-schema.d.ts +4495 -0
  75. package/dist/integration-authorization/effect-schema.d.ts.map +1 -0
  76. package/dist/integration-authorization/effect-schema.js +293 -0
  77. package/dist/integration-authorization/effect-schema.js.map +1 -0
  78. package/dist/integration-authorization/policy.d.ts +5 -0
  79. package/dist/integration-authorization/policy.d.ts.map +1 -0
  80. package/dist/integration-authorization/policy.js +5 -0
  81. package/dist/integration-authorization/policy.js.map +1 -0
  82. package/dist/integration-authorization/version.d.ts +2 -0
  83. package/dist/integration-authorization/version.d.ts.map +1 -0
  84. package/dist/integration-authorization/version.js +2 -0
  85. package/dist/integration-authorization/version.js.map +1 -0
  86. package/dist/invocation-context/contract.d.ts +38 -0
  87. package/dist/invocation-context/contract.d.ts.map +1 -0
  88. package/dist/invocation-context/contract.js +7 -0
  89. package/dist/invocation-context/contract.js.map +1 -0
  90. package/dist/invocation-context/effect-schema.d.ts +63 -0
  91. package/dist/invocation-context/effect-schema.d.ts.map +1 -0
  92. package/dist/invocation-context/effect-schema.js +52 -0
  93. package/dist/invocation-context/effect-schema.js.map +1 -0
  94. package/dist/invocation-context/policy.d.ts +8 -0
  95. package/dist/invocation-context/policy.d.ts.map +1 -0
  96. package/dist/invocation-context/policy.js +8 -0
  97. package/dist/invocation-context/policy.js.map +1 -0
  98. package/dist/invocation-context/version.d.ts +2 -0
  99. package/dist/invocation-context/version.d.ts.map +1 -0
  100. package/dist/invocation-context/version.js +2 -0
  101. package/dist/invocation-context/version.js.map +1 -0
  102. package/dist/local-node/contract.d.ts +233 -0
  103. package/dist/local-node/contract.d.ts.map +1 -0
  104. package/dist/local-node/contract.js +43 -0
  105. package/dist/local-node/contract.js.map +1 -0
  106. package/dist/local-node/effect-schema.d.ts +58786 -0
  107. package/dist/local-node/effect-schema.d.ts.map +1 -0
  108. package/dist/local-node/effect-schema.js +279 -0
  109. package/dist/local-node/effect-schema.js.map +1 -0
  110. package/dist/local-node/methods.d.ts +4 -0
  111. package/dist/local-node/methods.d.ts.map +1 -0
  112. package/dist/local-node/methods.js +73 -0
  113. package/dist/local-node/methods.js.map +1 -0
  114. package/dist/local-node/policy.d.ts +11 -0
  115. package/dist/local-node/policy.d.ts.map +1 -0
  116. package/dist/local-node/policy.js +11 -0
  117. package/dist/local-node/policy.js.map +1 -0
  118. package/dist/local-node.d.ts +2 -0
  119. package/dist/local-node.d.ts.map +1 -0
  120. package/dist/local-node.js +2 -0
  121. package/dist/local-node.js.map +1 -0
  122. package/dist/orchestration/canonical.d.ts +12 -0
  123. package/dist/orchestration/canonical.d.ts.map +1 -0
  124. package/dist/orchestration/canonical.js +50 -0
  125. package/dist/orchestration/canonical.js.map +1 -0
  126. package/dist/orchestration/contract.d.ts +2867 -0
  127. package/dist/orchestration/contract.d.ts.map +1 -0
  128. package/dist/orchestration/contract.js +45 -0
  129. package/dist/orchestration/contract.js.map +1 -0
  130. package/dist/orchestration/effect-schema.d.ts +4933 -0
  131. package/dist/orchestration/effect-schema.d.ts.map +1 -0
  132. package/dist/orchestration/effect-schema.js +610 -0
  133. package/dist/orchestration/effect-schema.js.map +1 -0
  134. package/dist/orchestration/policy.d.ts +28 -0
  135. package/dist/orchestration/policy.d.ts.map +1 -0
  136. package/dist/orchestration/policy.js +28 -0
  137. package/dist/orchestration/policy.js.map +1 -0
  138. package/dist/orchestration/topology.d.ts +13 -0
  139. package/dist/orchestration/topology.d.ts.map +1 -0
  140. package/dist/orchestration/topology.js +109 -0
  141. package/dist/orchestration/topology.js.map +1 -0
  142. package/dist/orchestration/version.d.ts +3 -0
  143. package/dist/orchestration/version.d.ts.map +1 -0
  144. package/dist/orchestration/version.js +3 -0
  145. package/dist/orchestration/version.js.map +1 -0
  146. package/dist/project-workspace/contract.d.ts +346 -0
  147. package/dist/project-workspace/contract.d.ts.map +1 -0
  148. package/dist/project-workspace/contract.js +20 -0
  149. package/dist/project-workspace/contract.js.map +1 -0
  150. package/dist/project-workspace/effect-schema.d.ts +602 -0
  151. package/dist/project-workspace/effect-schema.d.ts.map +1 -0
  152. package/dist/project-workspace/effect-schema.js +185 -0
  153. package/dist/project-workspace/effect-schema.js.map +1 -0
  154. package/dist/project-workspace/version.d.ts +5 -0
  155. package/dist/project-workspace/version.d.ts.map +1 -0
  156. package/dist/project-workspace/version.js +5 -0
  157. package/dist/project-workspace/version.js.map +1 -0
  158. package/dist/runtime/contract.d.ts +172 -0
  159. package/dist/runtime/contract.d.ts.map +1 -0
  160. package/dist/runtime/contract.js +6 -0
  161. package/dist/runtime/contract.js.map +1 -0
  162. package/dist/runtime/effect-schema.d.ts +211 -0
  163. package/dist/runtime/effect-schema.d.ts.map +1 -0
  164. package/dist/runtime/effect-schema.js +137 -0
  165. package/dist/runtime/effect-schema.js.map +1 -0
  166. package/dist/runtime/version.d.ts +2 -0
  167. package/dist/runtime/version.d.ts.map +1 -0
  168. package/dist/runtime/version.js +2 -0
  169. package/dist/runtime/version.js.map +1 -0
  170. package/dist/runtime-schema-effect.d.ts +4 -0
  171. package/dist/runtime-schema-effect.d.ts.map +1 -0
  172. package/dist/runtime-schema-effect.js +25 -0
  173. package/dist/runtime-schema-effect.js.map +1 -0
  174. package/dist/runtime-schema.d.ts +23 -0
  175. package/dist/runtime-schema.d.ts.map +1 -0
  176. package/dist/runtime-schema.js +12 -0
  177. package/dist/runtime-schema.js.map +1 -0
  178. package/dist/session/contract.d.ts +666 -0
  179. package/dist/session/contract.d.ts.map +1 -0
  180. package/dist/session/contract.js +16 -0
  181. package/dist/session/contract.js.map +1 -0
  182. package/dist/session/effect-schema.d.ts +1176 -0
  183. package/dist/session/effect-schema.d.ts.map +1 -0
  184. package/dist/session/effect-schema.js +195 -0
  185. package/dist/session/effect-schema.js.map +1 -0
  186. package/dist/session/version.d.ts +4 -0
  187. package/dist/session/version.d.ts.map +1 -0
  188. package/dist/session/version.js +4 -0
  189. package/dist/session/version.js.map +1 -0
  190. package/dist/temporal/recorded-at.d.ts +3 -0
  191. package/dist/temporal/recorded-at.d.ts.map +1 -0
  192. package/dist/temporal/recorded-at.js +13 -0
  193. package/dist/temporal/recorded-at.js.map +1 -0
  194. package/dist/terminal/contract.d.ts +3502 -0
  195. package/dist/terminal/contract.d.ts.map +1 -0
  196. package/dist/terminal/contract.js +31 -0
  197. package/dist/terminal/contract.js.map +1 -0
  198. package/dist/terminal/effect-schema.d.ts +15745 -0
  199. package/dist/terminal/effect-schema.d.ts.map +1 -0
  200. package/dist/terminal/effect-schema.js +193 -0
  201. package/dist/terminal/effect-schema.js.map +1 -0
  202. package/dist/terminal/live-contract.d.ts +87 -0
  203. package/dist/terminal/live-contract.d.ts.map +1 -0
  204. package/dist/terminal/live-contract.js +52 -0
  205. package/dist/terminal/live-contract.js.map +1 -0
  206. package/dist/terminal/live-effect-schema.d.ts +24770 -0
  207. package/dist/terminal/live-effect-schema.d.ts.map +1 -0
  208. package/dist/terminal/live-effect-schema.js +987 -0
  209. package/dist/terminal/live-effect-schema.js.map +1 -0
  210. package/dist/terminal/live-policy.d.ts +79 -0
  211. package/dist/terminal/live-policy.d.ts.map +1 -0
  212. package/dist/terminal/live-policy.js +91 -0
  213. package/dist/terminal/live-policy.js.map +1 -0
  214. package/dist/terminal/live-types.d.ts +584 -0
  215. package/dist/terminal/live-types.d.ts.map +1 -0
  216. package/dist/terminal/live-types.js +2 -0
  217. package/dist/terminal/live-types.js.map +1 -0
  218. package/dist/terminal/live-version.d.ts +4 -0
  219. package/dist/terminal/live-version.d.ts.map +1 -0
  220. package/dist/terminal/live-version.js +4 -0
  221. package/dist/terminal/live-version.js.map +1 -0
  222. package/dist/terminal/policy.d.ts +5 -0
  223. package/dist/terminal/policy.d.ts.map +1 -0
  224. package/dist/terminal/policy.js +5 -0
  225. package/dist/terminal/policy.js.map +1 -0
  226. package/dist/terminal/version.d.ts +4 -0
  227. package/dist/terminal/version.d.ts.map +1 -0
  228. package/dist/terminal/version.js +4 -0
  229. package/dist/terminal/version.js.map +1 -0
  230. package/dist/turn/contract.d.ts +493 -0
  231. package/dist/turn/contract.d.ts.map +1 -0
  232. package/dist/turn/contract.js +14 -0
  233. package/dist/turn/contract.js.map +1 -0
  234. package/dist/turn/effect-schema.d.ts +1063 -0
  235. package/dist/turn/effect-schema.d.ts.map +1 -0
  236. package/dist/turn/effect-schema.js +215 -0
  237. package/dist/turn/effect-schema.js.map +1 -0
  238. package/dist/turn/policy.d.ts +3 -0
  239. package/dist/turn/policy.d.ts.map +1 -0
  240. package/dist/turn/policy.js +3 -0
  241. package/dist/turn/policy.js.map +1 -0
  242. package/dist/turn/version.d.ts +2 -0
  243. package/dist/turn/version.d.ts.map +1 -0
  244. package/dist/turn/version.js +2 -0
  245. package/dist/turn/version.js.map +1 -0
  246. package/package.json +40 -0
@@ -0,0 +1,987 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { aggregateRevisionEffectSchema } from "../aggregate/revision-effect-schema.js";
3
+ import { protocolIdentifierEffectSchema } from "../envelope-effect-schema.js";
4
+ import { recordedAtEffectSchema } from "../temporal/recorded-at.js";
5
+ import { LIVE_TERMINAL_CREATE_FAILURE_CLEANUP_POLICY, LIVE_TERMINAL_RESTART_POLICY, LIVE_TERMINAL_STATE_CHANGED_EDGES, MAX_TERMINAL_COLUMNS, MAX_TERMINAL_CONTROLLER_LEASE_MS, MAX_TERMINAL_CONTROLLER_REQUESTS_PER_TERMINAL, MAX_TERMINAL_GENERATION, MAX_TERMINAL_INPUT_CHUNK_BYTES, MAX_TERMINAL_INPUT_SEQUENCE, MAX_TERMINAL_MUTATION_SEQUENCE, MAX_TERMINAL_NATIVE_OPERATION_SEQUENCE, MAX_TERMINAL_OBSERVER_CHECK_EVENTS, MAX_TERMINAL_OBSERVER_CHECK_RESPONSE_BYTES, MAX_TERMINAL_OBSERVER_LEASE_MS, MAX_TERMINAL_OBSERVER_WAIT_MS, MAX_TERMINAL_OUTPUT_CHUNK_BYTES, MAX_TERMINAL_ROWS, MAX_TERMINAL_SCROLLBACK_BYTES, MAX_TERMINAL_SCROLLBACK_LINES, MAX_TERMINAL_SNAPSHOT_CHUNKS, MAX_TERMINAL_SNAPSHOT_RESPONSE_BYTES, MIN_TERMINAL_COLUMNS, MIN_TERMINAL_CONTROLLER_LEASE_MS, MIN_TERMINAL_OBSERVER_LEASE_MS, MIN_TERMINAL_ROWS, TERMINAL_REVOCATION_POLICY_REVISION, } from "./live-policy.js";
6
+ import { LIVE_TERMINAL_EVENT_SCHEMA_VERSION, LIVE_TERMINAL_MUTATION_SCHEMA_VERSION, LIVE_TERMINAL_SCHEMA_VERSION, } from "./live-version.js";
7
+ const boundedInt = (minimum, maximum) => Schema.Int.check(Schema.isGreaterThanOrEqualTo(minimum), Schema.isLessThanOrEqualTo(maximum));
8
+ const viewportFields = {
9
+ columns: boundedInt(MIN_TERMINAL_COLUMNS, MAX_TERMINAL_COLUMNS),
10
+ rows: boundedInt(MIN_TERMINAL_ROWS, MAX_TERMINAL_ROWS),
11
+ };
12
+ const nativeSequenceFields = {
13
+ nativeOperationSequence: boundedInt(1, MAX_TERMINAL_NATIVE_OPERATION_SEQUENCE),
14
+ };
15
+ export const liveTerminalViewportEffectSchema = Schema.Struct(viewportFields);
16
+ export const liveTerminalExecutionCapabilityEffectSchema = Schema.Struct({
17
+ assumption: Schema.Literal("cooperative_unsandboxed_local_user_code_may_include_automation"),
18
+ hardContainment: Schema.Literal(false),
19
+ limits: Schema.Struct({
20
+ cpuTime: Schema.Literal("unavailable"),
21
+ memory: Schema.Literal("unavailable"),
22
+ processCount: Schema.Literal("unavailable"),
23
+ survivorCleanup: Schema.Literal("unavailable"),
24
+ wallTime: Schema.Literal("cooperative"),
25
+ }),
26
+ measurementSources: Schema.Struct({
27
+ host: Schema.Literal("process_host"),
28
+ knownMembers: Schema.Literal("darwin_descendant_snapshot"),
29
+ }),
30
+ releaseQualified: Schema.Literal(false),
31
+ revocationPolicyRevision: Schema.Literal(TERMINAL_REVOCATION_POLICY_REVISION),
32
+ sourceCandidate: Schema.Literal(true),
33
+ tier: Schema.Literal("local_user_interactive_terminal"),
34
+ });
35
+ const pendingCleanupEffectSchema = Schema.Struct({
36
+ semantic: Schema.Literal("known_identity_members"),
37
+ state: Schema.Literal("pending"),
38
+ });
39
+ const completeCleanupEffectSchema = Schema.Struct({
40
+ semantic: Schema.Literal("known_identity_members_complete"),
41
+ state: Schema.Literal("known_identity_members_complete"),
42
+ unknownSurvivorExclusion: Schema.Literal("unavailable"),
43
+ });
44
+ const unknownCleanupEffectSchema = Schema.Struct({
45
+ reason: Schema.Literals([
46
+ "cleanup_deadline",
47
+ "containment_lost",
48
+ "host_failed",
49
+ "identity_observation_lost",
50
+ "native_acknowledgement_lost",
51
+ "node_restarted",
52
+ ]),
53
+ semantic: Schema.Literal("known_identity_members"),
54
+ state: Schema.Literal("unknown"),
55
+ });
56
+ export const liveTerminalCleanupEffectSchema = Schema.Union([
57
+ pendingCleanupEffectSchema,
58
+ completeCleanupEffectSchema,
59
+ unknownCleanupEffectSchema,
60
+ ]);
61
+ const terminalExitEffectSchema = Schema.Struct({
62
+ code: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(255))),
63
+ observedAt: recordedAtEffectSchema,
64
+ signal: Schema.optional(Schema.Literals(["hangup", "interrupt", "kill", "terminate", "unknown"])),
65
+ });
66
+ const sessionBaseFields = {
67
+ capability: liveTerminalExecutionCapabilityEffectSchema,
68
+ chunkHead: aggregateRevisionEffectSchema,
69
+ createdAt: recordedAtEffectSchema,
70
+ eventHead: aggregateRevisionEffectSchema,
71
+ generation: boundedInt(1, MAX_TERMINAL_GENERATION),
72
+ id: protocolIdentifierEffectSchema,
73
+ mutationHead: aggregateRevisionEffectSchema,
74
+ projectId: protocolIdentifierEffectSchema,
75
+ revision: aggregateRevisionEffectSchema,
76
+ schemaVersion: Schema.Literal(LIVE_TERMINAL_SCHEMA_VERSION),
77
+ updatedAt: recordedAtEffectSchema,
78
+ viewport: liveTerminalViewportEffectSchema,
79
+ workspaceId: protocolIdentifierEffectSchema,
80
+ workspaceRevision: aggregateRevisionEffectSchema,
81
+ };
82
+ const activeSessionEffectSchema = (state) => Schema.Struct({
83
+ ...sessionBaseFields,
84
+ cleanup: pendingCleanupEffectSchema,
85
+ state: Schema.Literal(state),
86
+ });
87
+ const closingSessionEffectSchema = Schema.Struct({
88
+ ...sessionBaseFields,
89
+ cleanup: pendingCleanupEffectSchema,
90
+ state: Schema.Literal("closing"),
91
+ });
92
+ const restartingSessionEffectSchema = Schema.Struct({
93
+ ...sessionBaseFields,
94
+ cleanup: Schema.Union([
95
+ pendingCleanupEffectSchema,
96
+ completeCleanupEffectSchema,
97
+ ]),
98
+ state: Schema.Literal("restarting"),
99
+ });
100
+ const exitedSessionEffectSchema = Schema.Struct({
101
+ ...sessionBaseFields,
102
+ cleanup: liveTerminalCleanupEffectSchema,
103
+ exit: terminalExitEffectSchema,
104
+ state: Schema.Literal("exited"),
105
+ });
106
+ const disconnectedSessionEffectSchema = Schema.Struct({
107
+ ...sessionBaseFields,
108
+ cleanup: unknownCleanupEffectSchema,
109
+ exit: Schema.optional(terminalExitEffectSchema),
110
+ state: Schema.Literal("disconnected"),
111
+ });
112
+ export const liveTerminalSessionEffectSchema = Schema.Union([
113
+ activeSessionEffectSchema("creating"),
114
+ activeSessionEffectSchema("running"),
115
+ closingSessionEffectSchema,
116
+ restartingSessionEffectSchema,
117
+ exitedSessionEffectSchema,
118
+ disconnectedSessionEffectSchema,
119
+ ]);
120
+ const decodedBase64Bytes = (value) => {
121
+ let padding = 0;
122
+ if (value.endsWith("=="))
123
+ padding = 2;
124
+ else if (value.endsWith("="))
125
+ padding = 1;
126
+ return (value.length / 4) * 3 - padding;
127
+ };
128
+ const encodedJsonBytes = (value) => new TextEncoder().encode(JSON.stringify(value)).byteLength;
129
+ const base64Bytes = (maximumBytes, expected) => Schema.String.check(Schema.makeFilter((value) => {
130
+ if (value.length === 0 ||
131
+ !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u.test(value)) {
132
+ return false;
133
+ }
134
+ return decodedBase64Bytes(value) <= maximumBytes;
135
+ }, { expected }));
136
+ const outputBytesEffectSchema = base64Bytes(MAX_TERMINAL_OUTPUT_CHUNK_BYTES, "base64 terminal output encoded from at most 32768 bytes");
137
+ const inputBytesEffectSchema = base64Bytes(MAX_TERMINAL_INPUT_CHUNK_BYTES, "base64 terminal input encoded from at most 32768 bytes");
138
+ export const liveTerminalOutputChunkEffectSchema = Schema.Struct({
139
+ bytesBase64: outputBytesEffectSchema,
140
+ capability: liveTerminalExecutionCapabilityEffectSchema,
141
+ cursor: aggregateRevisionEffectSchema,
142
+ generation: boundedInt(1, MAX_TERMINAL_GENERATION),
143
+ recordedAt: recordedAtEffectSchema,
144
+ schemaVersion: Schema.Literal(LIVE_TERMINAL_EVENT_SCHEMA_VERSION),
145
+ terminalId: protocolIdentifierEffectSchema,
146
+ });
147
+ const observerEventFields = {
148
+ capability: liveTerminalExecutionCapabilityEffectSchema,
149
+ cursor: aggregateRevisionEffectSchema,
150
+ recordedAt: recordedAtEffectSchema,
151
+ schemaVersion: Schema.Literal(LIVE_TERMINAL_EVENT_SCHEMA_VERSION),
152
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
153
+ terminalId: protocolIdentifierEffectSchema,
154
+ };
155
+ const terminalStateChangedEdges = new Set([
156
+ ...LIVE_TERMINAL_STATE_CHANGED_EDGES.map(([from, to]) => `${from}:${to}`),
157
+ ...LIVE_TERMINAL_RESTART_POLICY.stateChanged.map(({ from, to }) => `${from}:${to}`),
158
+ ]);
159
+ const restartStateChangedIsAdmitted = (value) => LIVE_TERMINAL_RESTART_POLICY.stateChanged.some((policy) => value.previousState === policy.from &&
160
+ value.terminal.state === policy.to &&
161
+ value.previousCleanup.state === policy.previousCleanup &&
162
+ value.terminal.cleanup.state === policy.resultingCleanup);
163
+ const generationTransitionMatches = (value, policy) => value.previousState === policy.from &&
164
+ value.terminal.state === policy.to &&
165
+ value.previousCleanup.state === policy.previousCleanup &&
166
+ value.terminal.cleanup.state === policy.resultingCleanup &&
167
+ value.previousGeneration < MAX_TERMINAL_GENERATION &&
168
+ value.terminalGeneration === value.previousGeneration + 1;
169
+ const lifecycleIdentityMatches = (value) => value.terminal.id === value.terminalId &&
170
+ value.terminal.generation === value.terminalGeneration &&
171
+ value.terminal.capability.revocationPolicyRevision ===
172
+ value.capability.revocationPolicyRevision &&
173
+ value.terminal.eventHead === value.cursor &&
174
+ BigInt(value.terminal.revision) === BigInt(value.previousRevision) + 1n;
175
+ const createFailureCleanupMatches = (value) => value.transition === "create-failure-cleanup" &&
176
+ value.previousState === LIVE_TERMINAL_CREATE_FAILURE_CLEANUP_POLICY.from &&
177
+ value.terminal.state === LIVE_TERMINAL_CREATE_FAILURE_CLEANUP_POLICY.to &&
178
+ value.terminalGeneration === value.previousGeneration &&
179
+ value.previousCleanup.state ===
180
+ LIVE_TERMINAL_CREATE_FAILURE_CLEANUP_POLICY.previousCleanup &&
181
+ value.terminal.cleanup.state ===
182
+ LIVE_TERMINAL_CREATE_FAILURE_CLEANUP_POLICY.resultingCleanup;
183
+ const stateChangeMatches = (value) => value.transition === "state-changed" &&
184
+ value.terminalGeneration === value.previousGeneration &&
185
+ terminalStateChangedEdges.has(`${value.previousState}:${value.terminal.state}`) &&
186
+ (value.terminal.state !== "restarting" ||
187
+ restartStateChangedIsAdmitted(value));
188
+ const lifecycleTransitionIsAdmitted = (value) => {
189
+ if (!lifecycleIdentityMatches(value))
190
+ return false;
191
+ if (value.transition === "generation-started") {
192
+ return generationTransitionMatches(value, LIVE_TERMINAL_RESTART_POLICY.generationStarted);
193
+ }
194
+ if (value.transition === "generation-outcome-unknown") {
195
+ return (generationTransitionMatches(value, LIVE_TERMINAL_RESTART_POLICY.generationOutcomeUnknown) && value.terminal.cleanup.reason === "native_acknowledgement_lost");
196
+ }
197
+ return createFailureCleanupMatches(value) || stateChangeMatches(value);
198
+ };
199
+ const liveTerminalLifecycleTransitionEventEffectSchema = Schema.Struct({
200
+ ...observerEventFields,
201
+ previousCleanup: liveTerminalCleanupEffectSchema,
202
+ previousGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
203
+ previousRevision: aggregateRevisionEffectSchema,
204
+ previousState: Schema.Literals([
205
+ "closing",
206
+ "creating",
207
+ "disconnected",
208
+ "exited",
209
+ "restarting",
210
+ "running",
211
+ ]),
212
+ terminal: liveTerminalSessionEffectSchema,
213
+ transition: Schema.Literals([
214
+ "create-failure-cleanup",
215
+ "generation-outcome-unknown",
216
+ "generation-started",
217
+ "state-changed",
218
+ ]),
219
+ type: Schema.Literal("lifecycle-transition"),
220
+ }).check(Schema.makeFilter(lifecycleTransitionIsAdmitted, {
221
+ expected: "a lifecycle transition matching its terminal, generation, and prior cleanup",
222
+ }));
223
+ export const liveTerminalObserverEventEffectSchema = Schema.Union([
224
+ Schema.Struct({
225
+ ...observerEventFields,
226
+ bytesBase64: outputBytesEffectSchema,
227
+ type: Schema.Literal("output"),
228
+ }),
229
+ Schema.Struct({
230
+ ...observerEventFields,
231
+ exit: terminalExitEffectSchema,
232
+ type: Schema.Literal("exit"),
233
+ }),
234
+ Schema.Struct({
235
+ ...observerEventFields,
236
+ cleanup: liveTerminalCleanupEffectSchema,
237
+ type: Schema.Literal("cleanup"),
238
+ }),
239
+ Schema.Struct({
240
+ ...observerEventFields,
241
+ leaseId: protocolIdentifierEffectSchema,
242
+ reason: Schema.Literals(["expired", "policy", "released", "superseded"]),
243
+ type: Schema.Literal("controller-revoked"),
244
+ }),
245
+ Schema.Struct({
246
+ ...observerEventFields,
247
+ headCursor: aggregateRevisionEffectSchema,
248
+ oldestAvailableCursor: aggregateRevisionEffectSchema,
249
+ reason: Schema.Literals(["backpressure", "cursor_expired"]),
250
+ recovery: Schema.Literal("resync-required"),
251
+ requestedAfterCursor: Schema.optional(aggregateRevisionEffectSchema),
252
+ type: Schema.Literal("gap"),
253
+ }),
254
+ liveTerminalLifecycleTransitionEventEffectSchema,
255
+ ]);
256
+ export const liveTerminalObserverSnapshotEffectSchema = Schema.Struct({
257
+ headCursor: aggregateRevisionEffectSchema,
258
+ oldestAvailableCursor: aggregateRevisionEffectSchema,
259
+ retainedBytes: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(MAX_TERMINAL_SCROLLBACK_BYTES)),
260
+ retainedLines: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(MAX_TERMINAL_SCROLLBACK_LINES)),
261
+ tail: Schema.Array(liveTerminalOutputChunkEffectSchema).check(Schema.isMaxLength(MAX_TERMINAL_SNAPSHOT_CHUNKS)),
262
+ terminal: liveTerminalSessionEffectSchema,
263
+ }).check(Schema.makeFilter((value) => value.tail.every((chunk) => chunk.terminalId === value.terminal.id) &&
264
+ value.tail.reduce((total, chunk) => total + decodedBase64Bytes(chunk.bytesBase64), 0) <= MAX_TERMINAL_SNAPSHOT_RESPONSE_BYTES &&
265
+ encodedJsonBytes(value) <= MAX_TERMINAL_SNAPSHOT_RESPONSE_BYTES, { expected: "a terminal observer snapshot within its response byte cap" }));
266
+ const controllerRequestFields = {
267
+ capability: liveTerminalExecutionCapabilityEffectSchema,
268
+ expiresAt: recordedAtEffectSchema,
269
+ id: protocolIdentifierEffectSchema,
270
+ requestedAt: recordedAtEffectSchema,
271
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
272
+ terminalId: protocolIdentifierEffectSchema,
273
+ };
274
+ export const liveTerminalControllerRequestEffectSchema = Schema.Union([
275
+ Schema.Struct({
276
+ ...controllerRequestFields,
277
+ position: boundedInt(1, MAX_TERMINAL_CONTROLLER_REQUESTS_PER_TERMINAL),
278
+ state: Schema.Literal("pending"),
279
+ }),
280
+ Schema.Struct({
281
+ ...controllerRequestFields,
282
+ state: Schema.Literal("ready"),
283
+ }),
284
+ Schema.Struct({
285
+ ...controllerRequestFields,
286
+ reason: Schema.Literals(["expired", "policy", "queue_saturated"]),
287
+ state: Schema.Literal("denied"),
288
+ }),
289
+ ]);
290
+ const controllerLeaseFields = {
291
+ capability: liveTerminalExecutionCapabilityEffectSchema,
292
+ epoch: aggregateRevisionEffectSchema,
293
+ expiresAt: recordedAtEffectSchema,
294
+ id: protocolIdentifierEffectSchema,
295
+ revision: aggregateRevisionEffectSchema,
296
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
297
+ terminalId: protocolIdentifierEffectSchema,
298
+ };
299
+ export const liveTerminalControllerLeaseEffectSchema = Schema.Union([
300
+ Schema.Struct({
301
+ ...controllerLeaseFields,
302
+ state: Schema.Literal("active"),
303
+ }),
304
+ Schema.Struct({
305
+ ...controllerLeaseFields,
306
+ state: Schema.Literals(["expired", "released", "revoked"]),
307
+ }),
308
+ ]);
309
+ const commandFields = {
310
+ commandId: protocolIdentifierEffectSchema,
311
+ };
312
+ const terminalFields = {
313
+ terminalId: protocolIdentifierEffectSchema,
314
+ };
315
+ const expectedRevisionFields = {
316
+ expectedTerminalRevision: aggregateRevisionEffectSchema,
317
+ };
318
+ const controllerFenceFields = {
319
+ controller: Schema.Struct({
320
+ epoch: aggregateRevisionEffectSchema,
321
+ expiresAt: recordedAtEffectSchema,
322
+ id: protocolIdentifierEffectSchema,
323
+ revision: aggregateRevisionEffectSchema,
324
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
325
+ terminalId: protocolIdentifierEffectSchema,
326
+ }),
327
+ };
328
+ export const liveTerminalCreateParametersEffectSchema = Schema.Struct({
329
+ ...commandFields,
330
+ ...viewportFields,
331
+ expectedRevision: Schema.Literal("0"),
332
+ mode: Schema.Literal("interactive"),
333
+ workspaceId: protocolIdentifierEffectSchema,
334
+ });
335
+ export const liveTerminalObserverAttachParametersEffectSchema = Schema.Struct({
336
+ afterCursor: Schema.optional(aggregateRevisionEffectSchema),
337
+ attachId: protocolIdentifierEffectSchema,
338
+ commandId: protocolIdentifierEffectSchema,
339
+ requestedLeaseDurationMs: boundedInt(MIN_TERMINAL_OBSERVER_LEASE_MS, MAX_TERMINAL_OBSERVER_LEASE_MS),
340
+ terminalId: protocolIdentifierEffectSchema,
341
+ });
342
+ export const liveTerminalObserverCheckParametersEffectSchema = Schema.Struct({
343
+ afterCursor: aggregateRevisionEffectSchema,
344
+ limit: boundedInt(1, MAX_TERMINAL_OBSERVER_CHECK_EVENTS),
345
+ observerId: protocolIdentifierEffectSchema,
346
+ terminalId: protocolIdentifierEffectSchema,
347
+ waitMilliseconds: boundedInt(0, MAX_TERMINAL_OBSERVER_WAIT_MS),
348
+ });
349
+ export const liveTerminalObserverDetachParametersEffectSchema = Schema.Struct({
350
+ observerId: protocolIdentifierEffectSchema,
351
+ terminalId: protocolIdentifierEffectSchema,
352
+ });
353
+ export const liveTerminalObserverResyncParametersEffectSchema = Schema.Struct({
354
+ terminalId: protocolIdentifierEffectSchema,
355
+ });
356
+ export const liveTerminalControllerRequestShowParametersEffectSchema = Schema.Struct({
357
+ controllerRequestId: protocolIdentifierEffectSchema,
358
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
359
+ terminalId: protocolIdentifierEffectSchema,
360
+ });
361
+ export const liveTerminalControllerRequestParametersEffectSchema = Schema.Struct({
362
+ ...commandFields,
363
+ ...terminalFields,
364
+ requestedLeaseDurationMs: boundedInt(MIN_TERMINAL_CONTROLLER_LEASE_MS, MAX_TERMINAL_CONTROLLER_LEASE_MS),
365
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
366
+ });
367
+ export const liveTerminalControllerAcquireParametersEffectSchema = Schema.Struct({
368
+ ...commandFields,
369
+ ...expectedRevisionFields,
370
+ ...terminalFields,
371
+ controllerRequestId: protocolIdentifierEffectSchema,
372
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
373
+ });
374
+ const fencedMutationFields = {
375
+ ...commandFields,
376
+ ...controllerFenceFields,
377
+ ...expectedRevisionFields,
378
+ ...terminalFields,
379
+ };
380
+ export const liveTerminalControllerRenewParametersEffectSchema = Schema.Struct({
381
+ ...fencedMutationFields,
382
+ requestedLeaseDurationMs: boundedInt(MIN_TERMINAL_CONTROLLER_LEASE_MS, MAX_TERMINAL_CONTROLLER_LEASE_MS),
383
+ });
384
+ export const liveTerminalControllerReleaseParametersEffectSchema = Schema.Struct(fencedMutationFields);
385
+ export const liveTerminalWriteParametersEffectSchema = Schema.Struct({
386
+ ...fencedMutationFields,
387
+ bytesBase64: inputBytesEffectSchema,
388
+ inputId: protocolIdentifierEffectSchema,
389
+ inputSequence: boundedInt(1, MAX_TERMINAL_INPUT_SEQUENCE),
390
+ });
391
+ export const liveTerminalResizeParametersEffectSchema = Schema.Struct({
392
+ ...fencedMutationFields,
393
+ ...viewportFields,
394
+ });
395
+ export const liveTerminalSignalParametersEffectSchema = Schema.Struct({
396
+ ...fencedMutationFields,
397
+ signal: Schema.Literals(["hangup", "interrupt", "terminate"]),
398
+ });
399
+ export const liveTerminalCloseParametersEffectSchema = Schema.Struct(fencedMutationFields);
400
+ export const liveTerminalRestartParametersEffectSchema = Schema.Struct(fencedMutationFields);
401
+ export const liveTerminalDeleteParametersEffectSchema = Schema.Struct({
402
+ ...commandFields,
403
+ ...expectedRevisionFields,
404
+ ...terminalFields,
405
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
406
+ });
407
+ export const liveTerminalReconcileParametersEffectSchema = Schema.Union([
408
+ Schema.Struct({
409
+ ...commandFields,
410
+ mutationSequence: boundedInt(1, MAX_TERMINAL_MUTATION_SEQUENCE),
411
+ operation: Schema.Literals([
412
+ "close",
413
+ "controller.acquire",
414
+ "controller.release",
415
+ "controller.renew",
416
+ "controller.request",
417
+ "create",
418
+ "delete",
419
+ "resize",
420
+ "signal",
421
+ "write",
422
+ ]),
423
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
424
+ ...terminalFields,
425
+ }),
426
+ Schema.Struct({
427
+ ...commandFields,
428
+ mutationSequence: boundedInt(1, MAX_TERMINAL_MUTATION_SEQUENCE),
429
+ operation: Schema.Literal("restart"),
430
+ plannedTargetTerminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
431
+ sourceTerminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
432
+ ...terminalFields,
433
+ }).check(Schema.makeFilter((value) => value.sourceTerminalGeneration < MAX_TERMINAL_GENERATION &&
434
+ value.plannedTargetTerminalGeneration ===
435
+ value.sourceTerminalGeneration + 1, { expected: "a restart reconciliation for the planned next generation" })),
436
+ ]);
437
+ const sha256EffectSchema = Schema.String.check(Schema.isLengthBetween(64, 64), Schema.isPattern(/^[a-f0-9]{64}$/u));
438
+ const mutationReceiptFields = {
439
+ actorId: Schema.Literal("actor_local_user"),
440
+ capability: liveTerminalExecutionCapabilityEffectSchema,
441
+ commandId: protocolIdentifierEffectSchema,
442
+ delivery: Schema.Literals(["duplicate", "new"]),
443
+ mutationSequence: boundedInt(1, MAX_TERMINAL_MUTATION_SEQUENCE),
444
+ receiptId: protocolIdentifierEffectSchema,
445
+ recordedAt: recordedAtEffectSchema,
446
+ schemaVersion: Schema.Literal(LIVE_TERMINAL_MUTATION_SCHEMA_VERSION),
447
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
448
+ terminalId: protocolIdentifierEffectSchema,
449
+ terminalRevision: aggregateRevisionEffectSchema,
450
+ };
451
+ const nonNativeReceipt = (method, operation) => Schema.Struct({
452
+ ...mutationReceiptFields,
453
+ method: Schema.Literal(method),
454
+ nativeAcknowledgement: Schema.Struct({
455
+ fact: Schema.Literal("not_applicable"),
456
+ }),
457
+ operation: Schema.Literal(operation),
458
+ });
459
+ const restartMutationReceiptEffectSchema = Schema.Struct({
460
+ ...mutationReceiptFields,
461
+ method: Schema.Literal("terminal.session.restart"),
462
+ nativeAcknowledgement: Schema.Struct({
463
+ fact: Schema.Literal("generation_started"),
464
+ previousCleanup: Schema.Literal("known_identity_members_complete"),
465
+ }),
466
+ operation: Schema.Literal("restart"),
467
+ sourceTerminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
468
+ }).check(Schema.makeFilter((value) => value.sourceTerminalGeneration < MAX_TERMINAL_GENERATION &&
469
+ value.terminalGeneration === value.sourceTerminalGeneration + 1, { expected: "a restart receipt for the exact next generation" }));
470
+ export const liveTerminalMutationReceiptEffectSchema = Schema.Union([
471
+ Schema.Struct({
472
+ ...mutationReceiptFields,
473
+ ...nativeSequenceFields,
474
+ method: Schema.Literal("terminal.create"),
475
+ nativeAcknowledgement: Schema.Struct({
476
+ fact: Schema.Literal("generation_started"),
477
+ }),
478
+ operation: Schema.Literal("create"),
479
+ }),
480
+ nonNativeReceipt("terminal.controller.request", "controller.request"),
481
+ nonNativeReceipt("terminal.controller.acquire", "controller.acquire"),
482
+ nonNativeReceipt("terminal.controller.renew", "controller.renew"),
483
+ nonNativeReceipt("terminal.controller.release", "controller.release"),
484
+ Schema.Struct({
485
+ ...mutationReceiptFields,
486
+ ...nativeSequenceFields,
487
+ method: Schema.Literal("terminal.input.write"),
488
+ nativeAcknowledgement: Schema.Struct({
489
+ acceptedBytes: boundedInt(1, MAX_TERMINAL_INPUT_CHUNK_BYTES),
490
+ byteLength: boundedInt(1, MAX_TERMINAL_INPUT_CHUNK_BYTES),
491
+ fact: Schema.Literal("pty_master_all_bytes_accepted"),
492
+ inputId: protocolIdentifierEffectSchema,
493
+ inputSequence: boundedInt(1, MAX_TERMINAL_INPUT_SEQUENCE),
494
+ sha256: sha256EffectSchema,
495
+ }),
496
+ operation: Schema.Literal("write"),
497
+ }),
498
+ Schema.Struct({
499
+ ...mutationReceiptFields,
500
+ ...nativeSequenceFields,
501
+ method: Schema.Literal("terminal.session.resize"),
502
+ nativeAcknowledgement: Schema.Struct({
503
+ ...viewportFields,
504
+ fact: Schema.Literal("tiocswinsz_succeeded"),
505
+ }),
506
+ operation: Schema.Literal("resize"),
507
+ }),
508
+ Schema.Struct({
509
+ ...mutationReceiptFields,
510
+ ...nativeSequenceFields,
511
+ method: Schema.Literal("terminal.session.signal"),
512
+ nativeAcknowledgement: Schema.Struct({
513
+ fact: Schema.Literal("tiocsig_succeeded"),
514
+ signal: Schema.Literals(["hangup", "interrupt", "terminate"]),
515
+ }),
516
+ operation: Schema.Literal("signal"),
517
+ }),
518
+ Schema.Struct({
519
+ ...mutationReceiptFields,
520
+ ...nativeSequenceFields,
521
+ method: Schema.Literal("terminal.session.close"),
522
+ nativeAcknowledgement: Schema.Struct({
523
+ fact: Schema.Literal("known_identity_members_complete"),
524
+ unknownSurvivorExclusion: Schema.Literal("unavailable"),
525
+ }),
526
+ operation: Schema.Literal("close"),
527
+ }),
528
+ restartMutationReceiptEffectSchema,
529
+ nonNativeReceipt("terminal.session.delete", "delete"),
530
+ ]);
531
+ const outcomeUnknownFields = {
532
+ capability: liveTerminalExecutionCapabilityEffectSchema,
533
+ commandId: protocolIdentifierEffectSchema,
534
+ mutationSequence: boundedInt(1, MAX_TERMINAL_MUTATION_SEQUENCE),
535
+ outcome: Schema.Literal("outcome_unknown"),
536
+ reconciliation: Schema.Literal("terminal.mutation.reconcile-required"),
537
+ replay: Schema.Literal("forbidden"),
538
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
539
+ terminalId: protocolIdentifierEffectSchema,
540
+ };
541
+ const unknownMutation = (method, operation) => Schema.Struct({
542
+ ...outcomeUnknownFields,
543
+ method: Schema.Literal(method),
544
+ operation: Schema.Literal(operation),
545
+ });
546
+ const nativeUnknownMutation = (method, operation) => Schema.Struct({
547
+ ...outcomeUnknownFields,
548
+ ...nativeSequenceFields,
549
+ method: Schema.Literal(method),
550
+ operation: Schema.Literal(operation),
551
+ });
552
+ const unknownWriteEffectSchema = Schema.Struct({
553
+ ...outcomeUnknownFields,
554
+ ...nativeSequenceFields,
555
+ byteLength: boundedInt(1, MAX_TERMINAL_INPUT_CHUNK_BYTES),
556
+ inputId: protocolIdentifierEffectSchema,
557
+ inputSequence: boundedInt(1, MAX_TERMINAL_INPUT_SEQUENCE),
558
+ method: Schema.Literal("terminal.input.write"),
559
+ operation: Schema.Literal("write"),
560
+ sha256: sha256EffectSchema,
561
+ });
562
+ const restartUnknownBaseFields = {
563
+ capability: liveTerminalExecutionCapabilityEffectSchema,
564
+ commandId: protocolIdentifierEffectSchema,
565
+ method: Schema.Literal("terminal.session.restart"),
566
+ mutationSequence: boundedInt(1, MAX_TERMINAL_MUTATION_SEQUENCE),
567
+ operation: Schema.Literal("restart"),
568
+ outcome: Schema.Literal("outcome_unknown"),
569
+ plannedTargetTerminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
570
+ reconciliation: Schema.Literal("terminal.mutation.reconcile-required"),
571
+ replay: Schema.Literal("forbidden"),
572
+ sourceTerminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
573
+ terminal: liveTerminalSessionEffectSchema,
574
+ terminalId: protocolIdentifierEffectSchema,
575
+ };
576
+ const liveTerminalRestartOutcomeUnknownEffectSchema = Schema.Union([
577
+ Schema.Struct({
578
+ ...restartUnknownBaseFields,
579
+ effectPhase: Schema.Literal("source-cleanup"),
580
+ targetAttempt: Schema.Literal("not-attempted"),
581
+ }),
582
+ Schema.Struct({
583
+ ...restartUnknownBaseFields,
584
+ effectPhase: Schema.Literal("target-start"),
585
+ targetAttempt: Schema.Literals(["attempted", "may-have-been-attempted"]),
586
+ }),
587
+ ]).check(Schema.makeFilter((value) => value.sourceTerminalGeneration < MAX_TERMINAL_GENERATION &&
588
+ value.plannedTargetTerminalGeneration ===
589
+ value.sourceTerminalGeneration + 1 &&
590
+ value.terminal.id === value.terminalId &&
591
+ value.terminal.state === "disconnected" &&
592
+ value.terminal.cleanup.state === "unknown" &&
593
+ (value.effectPhase === "source-cleanup"
594
+ ? value.terminal.generation === value.sourceTerminalGeneration
595
+ : value.terminal.generation === value.plannedTargetTerminalGeneration &&
596
+ value.terminal.cleanup.reason === "native_acknowledgement_lost"), { expected: "a phase-exact unknown restart generation projection" }));
597
+ export const liveTerminalMutationOutcomeUnknownEffectSchema = Schema.Union([
598
+ nativeUnknownMutation("terminal.create", "create"),
599
+ unknownMutation("terminal.controller.request", "controller.request"),
600
+ unknownMutation("terminal.controller.acquire", "controller.acquire"),
601
+ unknownMutation("terminal.controller.renew", "controller.renew"),
602
+ unknownMutation("terminal.controller.release", "controller.release"),
603
+ unknownWriteEffectSchema,
604
+ nativeUnknownMutation("terminal.session.resize", "resize"),
605
+ nativeUnknownMutation("terminal.session.signal", "signal"),
606
+ nativeUnknownMutation("terminal.session.close", "close"),
607
+ liveTerminalRestartOutcomeUnknownEffectSchema,
608
+ unknownMutation("terminal.session.delete", "delete"),
609
+ ]);
610
+ const acknowledged = (fields) => Schema.Struct({
611
+ ...fields,
612
+ outcome: Schema.Literal("acknowledged"),
613
+ receipt: liveTerminalMutationReceiptEffectSchema,
614
+ });
615
+ const liveTerminalCreateAcknowledgedResultEffectSchema = acknowledged({
616
+ accepted: Schema.Literal(true),
617
+ delivery: Schema.Literals(["duplicate", "new"]),
618
+ method: Schema.Literal("terminal.create"),
619
+ terminal: liveTerminalSessionEffectSchema,
620
+ }).check(Schema.makeFilter((value) => value.delivery === value.receipt.delivery &&
621
+ value.receipt.method === value.method &&
622
+ value.receipt.operation === "create" &&
623
+ value.receipt.terminalGeneration === value.terminal.generation &&
624
+ value.receipt.terminalId === value.terminal.id &&
625
+ value.receipt.terminalRevision === value.terminal.revision, { expected: "an acknowledged terminal creation matching its receipt" }));
626
+ export const liveTerminalCreateResultEffectSchema = Schema.Union([
627
+ liveTerminalCreateAcknowledgedResultEffectSchema,
628
+ nativeUnknownMutation("terminal.create", "create"),
629
+ ]);
630
+ const liveTerminalControllerRequestAcknowledgedResultEffectSchema = acknowledged({
631
+ controllerRequest: liveTerminalControllerRequestEffectSchema,
632
+ method: Schema.Literal("terminal.controller.request"),
633
+ }).check(Schema.makeFilter((value) => value.receipt.method === value.method &&
634
+ value.receipt.operation === "controller.request" &&
635
+ value.receipt.terminalGeneration ===
636
+ value.controllerRequest.terminalGeneration &&
637
+ value.receipt.terminalId === value.controllerRequest.terminalId, { expected: "a controller request matching its mutation receipt" }));
638
+ export const liveTerminalControllerRequestResultEffectSchema = Schema.Union([
639
+ liveTerminalControllerRequestAcknowledgedResultEffectSchema,
640
+ unknownMutation("terminal.controller.request", "controller.request"),
641
+ ]);
642
+ const controllerLeaseResult = (method, operation) => Schema.Union([
643
+ acknowledged({
644
+ lease: liveTerminalControllerLeaseEffectSchema,
645
+ method: Schema.Literal(method),
646
+ }).check(Schema.makeFilter((value) => value.receipt.method === value.method &&
647
+ value.receipt.operation === operation &&
648
+ value.receipt.terminalGeneration === value.lease.terminalGeneration &&
649
+ value.receipt.terminalId === value.lease.terminalId, { expected: `a ${operation} lease matching its mutation receipt` })),
650
+ unknownMutation(method, operation),
651
+ ]);
652
+ export const liveTerminalControllerAcquireResultEffectSchema = controllerLeaseResult("terminal.controller.acquire", "controller.acquire");
653
+ export const liveTerminalControllerRenewResultEffectSchema = controllerLeaseResult("terminal.controller.renew", "controller.renew");
654
+ export const liveTerminalControllerReleaseResultEffectSchema = controllerLeaseResult("terminal.controller.release", "controller.release");
655
+ const liveTerminalWriteAcknowledgedResultEffectSchema = acknowledged({
656
+ acceptedBytes: boundedInt(1, MAX_TERMINAL_INPUT_CHUNK_BYTES),
657
+ inputId: protocolIdentifierEffectSchema,
658
+ inputSequence: boundedInt(1, MAX_TERMINAL_INPUT_SEQUENCE),
659
+ method: Schema.Literal("terminal.input.write"),
660
+ terminal: liveTerminalSessionEffectSchema,
661
+ }).check(Schema.makeFilter((value) => value.receipt.method === value.method &&
662
+ value.receipt.operation === "write" &&
663
+ value.receipt.terminalGeneration === value.terminal.generation &&
664
+ value.receipt.terminalId === value.terminal.id &&
665
+ value.receipt.terminalRevision === value.terminal.revision &&
666
+ value.receipt.nativeAcknowledgement.fact ===
667
+ "pty_master_all_bytes_accepted" &&
668
+ value.receipt.nativeAcknowledgement.acceptedBytes ===
669
+ value.acceptedBytes &&
670
+ value.receipt.nativeAcknowledgement.byteLength === value.acceptedBytes &&
671
+ value.receipt.nativeAcknowledgement.inputId === value.inputId &&
672
+ value.receipt.nativeAcknowledgement.inputSequence === value.inputSequence, { expected: "a terminal write matching its native acknowledgement" }));
673
+ export const liveTerminalWriteResultEffectSchema = Schema.Union([
674
+ liveTerminalWriteAcknowledgedResultEffectSchema,
675
+ unknownWriteEffectSchema,
676
+ ]);
677
+ const sessionMutationResult = (method, operation) => Schema.Union([
678
+ acknowledged({
679
+ method: Schema.Literal(method),
680
+ terminal: liveTerminalSessionEffectSchema,
681
+ }).check(Schema.makeFilter((value) => value.receipt.method === value.method &&
682
+ value.receipt.operation === operation &&
683
+ value.receipt.terminalGeneration === value.terminal.generation &&
684
+ value.receipt.terminalId === value.terminal.id &&
685
+ value.receipt.terminalRevision === value.terminal.revision, { expected: `a ${operation} terminal matching its mutation receipt` })),
686
+ nativeUnknownMutation(method, operation),
687
+ ]);
688
+ export const liveTerminalResizeResultEffectSchema = sessionMutationResult("terminal.session.resize", "resize");
689
+ export const liveTerminalSignalResultEffectSchema = sessionMutationResult("terminal.session.signal", "signal");
690
+ export const liveTerminalCloseResultEffectSchema = sessionMutationResult("terminal.session.close", "close");
691
+ const liveTerminalRestartAcknowledgedResultEffectSchema = acknowledged({
692
+ method: Schema.Literal("terminal.session.restart"),
693
+ terminal: liveTerminalSessionEffectSchema,
694
+ }).check(Schema.makeFilter((value) => value.receipt.method === value.method &&
695
+ value.receipt.operation === "restart" &&
696
+ value.receipt.terminalGeneration === value.terminal.generation &&
697
+ value.receipt.terminalId === value.terminal.id &&
698
+ value.receipt.terminalRevision === value.terminal.revision &&
699
+ value.receipt.sourceTerminalGeneration < MAX_TERMINAL_GENERATION &&
700
+ value.terminal.generation === value.receipt.sourceTerminalGeneration + 1, { expected: "a restart terminal matching its source and target receipt" }));
701
+ export const liveTerminalRestartResultEffectSchema = Schema.Union([
702
+ liveTerminalRestartAcknowledgedResultEffectSchema,
703
+ liveTerminalRestartOutcomeUnknownEffectSchema,
704
+ ]);
705
+ export const liveTerminalDeleteResultEffectSchema = Schema.Union([
706
+ acknowledged({
707
+ capability: liveTerminalExecutionCapabilityEffectSchema,
708
+ deletedAt: recordedAtEffectSchema,
709
+ method: Schema.Literal("terminal.session.delete"),
710
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
711
+ terminalId: protocolIdentifierEffectSchema,
712
+ }).check(Schema.makeFilter((value) => value.receipt.method === value.method &&
713
+ value.receipt.operation === "delete" &&
714
+ value.receipt.terminalGeneration === value.terminalGeneration &&
715
+ value.receipt.terminalId === value.terminalId, { expected: "a terminal deletion matching its mutation receipt" })),
716
+ unknownMutation("terminal.session.delete", "delete"),
717
+ ]);
718
+ export const liveTerminalObserverAttachResultEffectSchema = Schema.Struct({
719
+ attachId: protocolIdentifierEffectSchema,
720
+ capability: liveTerminalExecutionCapabilityEffectSchema,
721
+ delivery: Schema.Literals(["duplicate", "new"]),
722
+ expiresAt: recordedAtEffectSchema,
723
+ method: Schema.Literal("terminal.observer.attach"),
724
+ observerId: protocolIdentifierEffectSchema,
725
+ renewal: Schema.Literal("successful-check-renews"),
726
+ snapshot: liveTerminalObserverSnapshotEffectSchema,
727
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
728
+ }).check(Schema.makeFilter((value) => value.attachId === value.observerId &&
729
+ value.terminalGeneration === value.snapshot.terminal.generation, {
730
+ expected: "an idempotent observer attachment matching its terminal generation",
731
+ }));
732
+ export const liveTerminalObserverCheckResultEffectSchema = Schema.Struct({
733
+ capability: liveTerminalExecutionCapabilityEffectSchema,
734
+ events: Schema.Array(liveTerminalObserverEventEffectSchema).check(Schema.isMaxLength(MAX_TERMINAL_OBSERVER_CHECK_EVENTS)),
735
+ headCursor: aggregateRevisionEffectSchema,
736
+ leaseExpiresAt: recordedAtEffectSchema,
737
+ method: Schema.Literal("terminal.observer.check"),
738
+ observerId: protocolIdentifierEffectSchema,
739
+ renewal: Schema.Literal("successful-check-renewed"),
740
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
741
+ terminalId: protocolIdentifierEffectSchema,
742
+ timedOut: Schema.Boolean,
743
+ }).check(Schema.makeFilter((value) => value.events.every((event) => event.terminalId === value.terminalId &&
744
+ event.capability.revocationPolicyRevision ===
745
+ value.capability.revocationPolicyRevision) &&
746
+ !(value.timedOut && value.events.length > 0) &&
747
+ encodedJsonBytes(value) <= MAX_TERMINAL_OBSERVER_CHECK_RESPONSE_BYTES, { expected: "a terminal observer check within its response byte cap" }));
748
+ export const liveTerminalObserverDetachResultEffectSchema = Schema.Struct({
749
+ capability: liveTerminalExecutionCapabilityEffectSchema,
750
+ detached: Schema.Literal(true),
751
+ method: Schema.Literal("terminal.observer.detach"),
752
+ observerId: protocolIdentifierEffectSchema,
753
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
754
+ terminalId: protocolIdentifierEffectSchema,
755
+ });
756
+ export const liveTerminalObserverResyncResultEffectSchema = Schema.Struct({
757
+ method: Schema.Literal("terminal.observer.resync"),
758
+ snapshot: liveTerminalObserverSnapshotEffectSchema,
759
+ });
760
+ export const liveTerminalControllerRequestShowResultEffectSchema = Schema.Struct({
761
+ controllerRequest: liveTerminalControllerRequestEffectSchema,
762
+ method: Schema.Literal("terminal.controller.request.show"),
763
+ });
764
+ const reconciliationIdentityFields = {
765
+ commandId: protocolIdentifierEffectSchema,
766
+ mutationSequence: boundedInt(1, MAX_TERMINAL_MUTATION_SEQUENCE),
767
+ operation: Schema.Literals([
768
+ "close",
769
+ "controller.acquire",
770
+ "controller.release",
771
+ "controller.renew",
772
+ "controller.request",
773
+ "create",
774
+ "delete",
775
+ "resize",
776
+ "signal",
777
+ "write",
778
+ ]),
779
+ originalReplay: Schema.Literal("forbidden"),
780
+ terminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
781
+ terminalId: protocolIdentifierEffectSchema,
782
+ };
783
+ const liveTerminalOrdinaryReconcileResultEffectSchema = Schema.Union([
784
+ Schema.Struct({
785
+ checkedAt: recordedAtEffectSchema,
786
+ ...reconciliationIdentityFields,
787
+ method: Schema.Literal("terminal.mutation.reconcile"),
788
+ next: Schema.Literal("new-mutation-only"),
789
+ receipt: liveTerminalMutationReceiptEffectSchema,
790
+ state: Schema.Literal("acknowledged"),
791
+ terminal: liveTerminalSessionEffectSchema,
792
+ }),
793
+ Schema.Struct({
794
+ checkedAt: recordedAtEffectSchema,
795
+ ...reconciliationIdentityFields,
796
+ method: Schema.Literal("terminal.mutation.reconcile"),
797
+ next: Schema.Literal("new-mutation-only"),
798
+ receipt: Schema.Literal("not_found"),
799
+ state: Schema.Literal("not_found"),
800
+ terminal: liveTerminalSessionEffectSchema,
801
+ }),
802
+ Schema.Struct({
803
+ checkedAt: recordedAtEffectSchema,
804
+ ...reconciliationIdentityFields,
805
+ method: Schema.Literal("terminal.mutation.reconcile"),
806
+ next: Schema.Literal("reconcile-again"),
807
+ receipt: Schema.Literal("unknown"),
808
+ state: Schema.Literal("still_unknown"),
809
+ terminal: liveTerminalSessionEffectSchema,
810
+ }),
811
+ ]).check(Schema.makeFilter((value) => value.terminal.id === value.terminalId &&
812
+ value.terminal.generation >= value.terminalGeneration &&
813
+ (value.state !== "acknowledged" ||
814
+ (value.receipt.commandId === value.commandId &&
815
+ value.receipt.operation === value.operation &&
816
+ value.receipt.mutationSequence === value.mutationSequence &&
817
+ value.receipt.terminalGeneration === value.terminalGeneration &&
818
+ value.receipt.terminalId === value.terminalId)), { expected: "an exact terminal mutation reconciliation identity" }));
819
+ const restartReconciliationIdentityFields = {
820
+ checkedAt: recordedAtEffectSchema,
821
+ commandId: protocolIdentifierEffectSchema,
822
+ method: Schema.Literal("terminal.mutation.reconcile"),
823
+ mutationSequence: boundedInt(1, MAX_TERMINAL_MUTATION_SEQUENCE),
824
+ operation: Schema.Literal("restart"),
825
+ originalReplay: Schema.Literal("forbidden"),
826
+ plannedTargetTerminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
827
+ sourceTerminalGeneration: boundedInt(1, MAX_TERMINAL_GENERATION),
828
+ terminal: liveTerminalSessionEffectSchema,
829
+ terminalId: protocolIdentifierEffectSchema,
830
+ };
831
+ const liveTerminalRestartReconcileResultStructEffectSchema = Schema.Union([
832
+ Schema.Struct({
833
+ ...restartReconciliationIdentityFields,
834
+ effectPhase: Schema.Literal("not-found"),
835
+ next: Schema.Literal("new-mutation-only"),
836
+ receipt: Schema.Literal("not_found"),
837
+ state: Schema.Literal("not_found"),
838
+ targetAttempt: Schema.Literal("unknown"),
839
+ }),
840
+ Schema.Struct({
841
+ ...restartReconciliationIdentityFields,
842
+ effectPhase: Schema.Literal("target-start"),
843
+ next: Schema.Literal("new-mutation-only"),
844
+ receipt: restartMutationReceiptEffectSchema,
845
+ state: Schema.Literal("acknowledged"),
846
+ targetAttempt: Schema.Literal("attempted"),
847
+ }),
848
+ Schema.Struct({
849
+ ...restartReconciliationIdentityFields,
850
+ effectPhase: Schema.Literal("source-cleanup"),
851
+ next: Schema.Literal("reconcile-again"),
852
+ receipt: Schema.Literal("unknown"),
853
+ state: Schema.Literal("still_unknown"),
854
+ targetAttempt: Schema.Literal("not-attempted"),
855
+ }),
856
+ Schema.Struct({
857
+ ...restartReconciliationIdentityFields,
858
+ effectPhase: Schema.Literal("target-start"),
859
+ next: Schema.Literal("reconcile-again"),
860
+ receipt: Schema.Literal("unknown"),
861
+ state: Schema.Literal("still_unknown"),
862
+ targetAttempt: Schema.Literals(["attempted", "may-have-been-attempted"]),
863
+ }),
864
+ ]);
865
+ const restartAcknowledgementMatches = (value) => value.receipt.commandId === value.commandId &&
866
+ value.receipt.mutationSequence === value.mutationSequence &&
867
+ value.receipt.sourceTerminalGeneration === value.sourceTerminalGeneration &&
868
+ value.receipt.terminalGeneration === value.plannedTargetTerminalGeneration &&
869
+ value.receipt.terminalId === value.terminalId &&
870
+ value.terminal.generation >= value.plannedTargetTerminalGeneration;
871
+ const restartUnknownProjectionMatches = (value) => {
872
+ if (value.terminal.state !== "disconnected")
873
+ return false;
874
+ if (value.effectPhase === "source-cleanup") {
875
+ return value.terminal.generation === value.sourceTerminalGeneration;
876
+ }
877
+ return (value.terminal.generation === value.plannedTargetTerminalGeneration &&
878
+ value.terminal.cleanup.reason === "native_acknowledgement_lost");
879
+ };
880
+ const restartReconciliationIsAdmitted = (value) => {
881
+ if (value.sourceTerminalGeneration >= MAX_TERMINAL_GENERATION ||
882
+ value.plannedTargetTerminalGeneration !==
883
+ value.sourceTerminalGeneration + 1 ||
884
+ value.terminal.id !== value.terminalId) {
885
+ return false;
886
+ }
887
+ if (value.state === "acknowledged") {
888
+ return restartAcknowledgementMatches(value);
889
+ }
890
+ if (value.state === "not_found") {
891
+ return value.terminal.generation >= value.sourceTerminalGeneration;
892
+ }
893
+ return restartUnknownProjectionMatches(value);
894
+ };
895
+ const liveTerminalRestartReconcileResultEffectSchema = liveTerminalRestartReconcileResultStructEffectSchema.check(Schema.makeFilter(restartReconciliationIsAdmitted, {
896
+ expected: "a phase-exact restart reconciliation identity",
897
+ }));
898
+ export const liveTerminalReconcileResultEffectSchema = Schema.Union([
899
+ liveTerminalOrdinaryReconcileResultEffectSchema,
900
+ liveTerminalRestartReconcileResultEffectSchema,
901
+ ]);
902
+ export const liveTerminalRequestPayloadEffectSchema = Schema.Union([
903
+ Schema.Struct({
904
+ method: Schema.Literal("terminal.observer.attach"),
905
+ parameters: liveTerminalObserverAttachParametersEffectSchema,
906
+ }),
907
+ Schema.Struct({
908
+ method: Schema.Literal("terminal.observer.check"),
909
+ parameters: liveTerminalObserverCheckParametersEffectSchema,
910
+ }),
911
+ Schema.Struct({
912
+ method: Schema.Literal("terminal.observer.detach"),
913
+ parameters: liveTerminalObserverDetachParametersEffectSchema,
914
+ }),
915
+ Schema.Struct({
916
+ method: Schema.Literal("terminal.observer.resync"),
917
+ parameters: liveTerminalObserverResyncParametersEffectSchema,
918
+ }),
919
+ Schema.Struct({
920
+ method: Schema.Literal("terminal.controller.request"),
921
+ parameters: liveTerminalControllerRequestParametersEffectSchema,
922
+ }),
923
+ Schema.Struct({
924
+ method: Schema.Literal("terminal.controller.request.show"),
925
+ parameters: liveTerminalControllerRequestShowParametersEffectSchema,
926
+ }),
927
+ Schema.Struct({
928
+ method: Schema.Literal("terminal.controller.acquire"),
929
+ parameters: liveTerminalControllerAcquireParametersEffectSchema,
930
+ }),
931
+ Schema.Struct({
932
+ method: Schema.Literal("terminal.controller.renew"),
933
+ parameters: liveTerminalControllerRenewParametersEffectSchema,
934
+ }),
935
+ Schema.Struct({
936
+ method: Schema.Literal("terminal.controller.release"),
937
+ parameters: liveTerminalControllerReleaseParametersEffectSchema,
938
+ }),
939
+ Schema.Struct({
940
+ method: Schema.Literal("terminal.input.write"),
941
+ parameters: liveTerminalWriteParametersEffectSchema,
942
+ }),
943
+ Schema.Struct({
944
+ method: Schema.Literal("terminal.session.resize"),
945
+ parameters: liveTerminalResizeParametersEffectSchema,
946
+ }),
947
+ Schema.Struct({
948
+ method: Schema.Literal("terminal.session.signal"),
949
+ parameters: liveTerminalSignalParametersEffectSchema,
950
+ }),
951
+ Schema.Struct({
952
+ method: Schema.Literal("terminal.session.close"),
953
+ parameters: liveTerminalCloseParametersEffectSchema,
954
+ }),
955
+ Schema.Struct({
956
+ method: Schema.Literal("terminal.session.restart"),
957
+ parameters: liveTerminalRestartParametersEffectSchema,
958
+ }),
959
+ Schema.Struct({
960
+ method: Schema.Literal("terminal.session.delete"),
961
+ parameters: liveTerminalDeleteParametersEffectSchema,
962
+ }),
963
+ Schema.Struct({
964
+ method: Schema.Literal("terminal.mutation.reconcile"),
965
+ parameters: liveTerminalReconcileParametersEffectSchema,
966
+ }),
967
+ ]);
968
+ export const liveTerminalSuccessResultEffectSchema = Schema.Union([
969
+ liveTerminalCreateResultEffectSchema,
970
+ liveTerminalObserverAttachResultEffectSchema,
971
+ liveTerminalObserverCheckResultEffectSchema,
972
+ liveTerminalObserverDetachResultEffectSchema,
973
+ liveTerminalObserverResyncResultEffectSchema,
974
+ liveTerminalControllerRequestResultEffectSchema,
975
+ liveTerminalControllerRequestShowResultEffectSchema,
976
+ liveTerminalControllerAcquireResultEffectSchema,
977
+ liveTerminalControllerRenewResultEffectSchema,
978
+ liveTerminalControllerReleaseResultEffectSchema,
979
+ liveTerminalWriteResultEffectSchema,
980
+ liveTerminalResizeResultEffectSchema,
981
+ liveTerminalSignalResultEffectSchema,
982
+ liveTerminalCloseResultEffectSchema,
983
+ liveTerminalRestartResultEffectSchema,
984
+ liveTerminalDeleteResultEffectSchema,
985
+ liveTerminalReconcileResultEffectSchema,
986
+ ]);
987
+ //# sourceMappingURL=live-effect-schema.js.map