@yefengr/remote-pi 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +674 -0
  3. package/dist/actions/handlers.d.ts +122 -0
  4. package/dist/actions/handlers.js +160 -0
  5. package/dist/actions/handlers.js.map +1 -0
  6. package/dist/actions/registry.d.ts +39 -0
  7. package/dist/actions/registry.js +58 -0
  8. package/dist/actions/registry.js.map +1 -0
  9. package/dist/bin/supervisord.d.ts +2 -0
  10. package/dist/bin/supervisord.js +86 -0
  11. package/dist/bin/supervisord.js.map +1 -0
  12. package/dist/config.d.ts +55 -0
  13. package/dist/config.js +118 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/daemon/client.d.ts +20 -0
  16. package/dist/daemon/client.js +131 -0
  17. package/dist/daemon/client.js.map +1 -0
  18. package/dist/daemon/control_protocol.d.ts +176 -0
  19. package/dist/daemon/control_protocol.js +63 -0
  20. package/dist/daemon/control_protocol.js.map +1 -0
  21. package/dist/daemon/cron_log.d.ts +45 -0
  22. package/dist/daemon/cron_log.js +72 -0
  23. package/dist/daemon/cron_log.js.map +1 -0
  24. package/dist/daemon/cron_registry.d.ts +80 -0
  25. package/dist/daemon/cron_registry.js +194 -0
  26. package/dist/daemon/cron_registry.js.map +1 -0
  27. package/dist/daemon/id.d.ts +24 -0
  28. package/dist/daemon/id.js +36 -0
  29. package/dist/daemon/id.js.map +1 -0
  30. package/dist/daemon/install.d.ts +170 -0
  31. package/dist/daemon/install.js +547 -0
  32. package/dist/daemon/install.js.map +1 -0
  33. package/dist/daemon/registry.d.ts +63 -0
  34. package/dist/daemon/registry.js +153 -0
  35. package/dist/daemon/registry.js.map +1 -0
  36. package/dist/daemon/rpc_child.d.ts +194 -0
  37. package/dist/daemon/rpc_child.js +389 -0
  38. package/dist/daemon/rpc_child.js.map +1 -0
  39. package/dist/daemon/supervisor.d.ts +93 -0
  40. package/dist/daemon/supervisor.js +596 -0
  41. package/dist/daemon/supervisor.js.map +1 -0
  42. package/dist/extension_ui_bridge.d.ts +26 -0
  43. package/dist/extension_ui_bridge.js +341 -0
  44. package/dist/extension_ui_bridge.js.map +1 -0
  45. package/dist/index.d.ts +214 -0
  46. package/dist/index.js +5410 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/mcp/mesh_result.d.ts +10 -0
  49. package/dist/mcp/mesh_result.js +42 -0
  50. package/dist/mcp/mesh_result.js.map +1 -0
  51. package/dist/mcp/mesh_server.d.ts +16 -0
  52. package/dist/mcp/mesh_server.js +327 -0
  53. package/dist/mcp/mesh_server.js.map +1 -0
  54. package/dist/mesh/canonical.d.ts +30 -0
  55. package/dist/mesh/canonical.js +61 -0
  56. package/dist/mesh/canonical.js.map +1 -0
  57. package/dist/mesh/client.d.ts +18 -0
  58. package/dist/mesh/client.js +125 -0
  59. package/dist/mesh/client.js.map +1 -0
  60. package/dist/mesh/encoding.d.ts +38 -0
  61. package/dist/mesh/encoding.js +216 -0
  62. package/dist/mesh/encoding.js.map +1 -0
  63. package/dist/mesh/self_revoke.d.ts +73 -0
  64. package/dist/mesh/self_revoke.js +401 -0
  65. package/dist/mesh/self_revoke.js.map +1 -0
  66. package/dist/mesh/siblings.d.ts +49 -0
  67. package/dist/mesh/siblings.js +159 -0
  68. package/dist/mesh/siblings.js.map +1 -0
  69. package/dist/mesh/types.d.ts +34 -0
  70. package/dist/mesh/types.js +11 -0
  71. package/dist/mesh/types.js.map +1 -0
  72. package/dist/mesh/verify.d.ts +17 -0
  73. package/dist/mesh/verify.js +86 -0
  74. package/dist/mesh/verify.js.map +1 -0
  75. package/dist/pairing/crypto.d.ts +8 -0
  76. package/dist/pairing/crypto.js +22 -0
  77. package/dist/pairing/crypto.js.map +1 -0
  78. package/dist/pairing/qr.d.ts +59 -0
  79. package/dist/pairing/qr.js +125 -0
  80. package/dist/pairing/qr.js.map +1 -0
  81. package/dist/pairing/storage.d.ts +120 -0
  82. package/dist/pairing/storage.js +604 -0
  83. package/dist/pairing/storage.js.map +1 -0
  84. package/dist/protocol/codec.d.ts +7 -0
  85. package/dist/protocol/codec.js +49 -0
  86. package/dist/protocol/codec.js.map +1 -0
  87. package/dist/protocol/types.d.ts +393 -0
  88. package/dist/protocol/types.js +2 -0
  89. package/dist/protocol/types.js.map +1 -0
  90. package/dist/protocol/v2/codec.d.ts +26 -0
  91. package/dist/protocol/v2/codec.js +207 -0
  92. package/dist/protocol/v2/codec.js.map +1 -0
  93. package/dist/protocol/v2/index.d.ts +3 -0
  94. package/dist/protocol/v2/index.js +4 -0
  95. package/dist/protocol/v2/index.js.map +1 -0
  96. package/dist/protocol/v2/schemas.d.ts +1939 -0
  97. package/dist/protocol/v2/schemas.js +409 -0
  98. package/dist/protocol/v2/schemas.js.map +1 -0
  99. package/dist/protocol/v2/session_state.d.ts +75 -0
  100. package/dist/protocol/v2/session_state.js +176 -0
  101. package/dist/protocol/v2/session_state.js.map +1 -0
  102. package/dist/rooms.d.ts +29 -0
  103. package/dist/rooms.js +57 -0
  104. package/dist/rooms.js.map +1 -0
  105. package/dist/session/bridge.d.ts +37 -0
  106. package/dist/session/bridge.js +130 -0
  107. package/dist/session/bridge.js.map +1 -0
  108. package/dist/session/broker.d.ts +189 -0
  109. package/dist/session/broker.js +507 -0
  110. package/dist/session/broker.js.map +1 -0
  111. package/dist/session/broker_remote.d.ts +74 -0
  112. package/dist/session/broker_remote.js +583 -0
  113. package/dist/session/broker_remote.js.map +1 -0
  114. package/dist/session/cwd_lock.d.ts +33 -0
  115. package/dist/session/cwd_lock.js +126 -0
  116. package/dist/session/cwd_lock.js.map +1 -0
  117. package/dist/session/envelope.d.ts +33 -0
  118. package/dist/session/envelope.js +117 -0
  119. package/dist/session/envelope.js.map +1 -0
  120. package/dist/session/global_config.d.ts +33 -0
  121. package/dist/session/global_config.js +73 -0
  122. package/dist/session/global_config.js.map +1 -0
  123. package/dist/session/ipc.d.ts +27 -0
  124. package/dist/session/ipc.js +22 -0
  125. package/dist/session/ipc.js.map +1 -0
  126. package/dist/session/leader_election.d.ts +32 -0
  127. package/dist/session/leader_election.js +106 -0
  128. package/dist/session/leader_election.js.map +1 -0
  129. package/dist/session/local_config.d.ts +55 -0
  130. package/dist/session/local_config.js +157 -0
  131. package/dist/session/local_config.js.map +1 -0
  132. package/dist/session/mesh_node.d.ts +116 -0
  133. package/dist/session/mesh_node.js +573 -0
  134. package/dist/session/mesh_node.js.map +1 -0
  135. package/dist/session/peer.d.ts +139 -0
  136. package/dist/session/peer.js +451 -0
  137. package/dist/session/peer.js.map +1 -0
  138. package/dist/session/peer_inventory.d.ts +13 -0
  139. package/dist/session/peer_inventory.js +48 -0
  140. package/dist/session/peer_inventory.js.map +1 -0
  141. package/dist/session/peer_limits.d.ts +9 -0
  142. package/dist/session/peer_limits.js +21 -0
  143. package/dist/session/peer_limits.js.map +1 -0
  144. package/dist/session/setup_wizard.d.ts +39 -0
  145. package/dist/session/setup_wizard.js +63 -0
  146. package/dist/session/setup_wizard.js.map +1 -0
  147. package/dist/session/tools.d.ts +24 -0
  148. package/dist/session/tools.js +252 -0
  149. package/dist/session/tools.js.map +1 -0
  150. package/dist/session/wizard.d.ts +13 -0
  151. package/dist/session/wizard.js +20 -0
  152. package/dist/session/wizard.js.map +1 -0
  153. package/dist/timeline/history.d.ts +35 -0
  154. package/dist/timeline/history.js +381 -0
  155. package/dist/timeline/history.js.map +1 -0
  156. package/dist/timeline/runtime.d.ts +76 -0
  157. package/dist/timeline/runtime.js +428 -0
  158. package/dist/timeline/runtime.js.map +1 -0
  159. package/dist/timeline/v2_service.d.ts +54 -0
  160. package/dist/timeline/v2_service.js +351 -0
  161. package/dist/timeline/v2_service.js.map +1 -0
  162. package/dist/transport/peer_channel.d.ts +57 -0
  163. package/dist/transport/peer_channel.js +170 -0
  164. package/dist/transport/peer_channel.js.map +1 -0
  165. package/dist/transport/pi_forward_client.d.ts +29 -0
  166. package/dist/transport/pi_forward_client.js +62 -0
  167. package/dist/transport/pi_forward_client.js.map +1 -0
  168. package/dist/transport/relay_client.d.ts +91 -0
  169. package/dist/transport/relay_client.js +206 -0
  170. package/dist/transport/relay_client.js.map +1 -0
  171. package/dist/ui/footer.d.ts +32 -0
  172. package/dist/ui/footer.js +34 -0
  173. package/dist/ui/footer.js.map +1 -0
  174. package/docs/daemon.md +289 -0
  175. package/package.json +87 -0
  176. package/service-templates/launchd.plist.template +35 -0
  177. package/service-templates/systemd.service.template +19 -0
  178. package/service-templates/task-launcher.vbs.template +10 -0
  179. package/service-templates/task-scheduler.xml.template +38 -0
  180. package/skills/agent-network/SKILL.md +310 -0
@@ -0,0 +1,409 @@
1
+ import { z } from "zod";
2
+ export const PROTOCOL_VERSION_V2 = 2;
3
+ export const TIMELINE_MARKER_NAME = "remote-pi:timeline-v2";
4
+ export const MAX_FRAME_BYTES = 512 * 1024;
5
+ export const MAX_HISTORY_CHUNK_BYTES = 512 * 1024;
6
+ export const MAX_WINDOW_DECODE_BYTES = 32 * 1024 * 1024;
7
+ export const MAX_FRAGMENT_DECODE_BYTES = 50 * 1024;
8
+ export const MAX_ID_CHARS = 256;
9
+ export const MAX_TEXT_CHARS = 1024 * 1024;
10
+ export const MAX_ARRAY_ITEMS = 4096;
11
+ const id = z.string().min(1).max(MAX_ID_CHARS);
12
+ const boundedText = z.string().max(MAX_TEXT_CHARS);
13
+ const nonEmptyText = boundedText.min(1);
14
+ const nonNegativeInt = z.number().int().nonnegative().finite();
15
+ const finiteNumber = z.number().finite();
16
+ const timestamp = finiteNumber.nonnegative();
17
+ const base64 = z.string()
18
+ .min(4)
19
+ .max(Math.ceil((MAX_FRAGMENT_DECODE_BYTES * 4) / 3) + 4)
20
+ .regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/);
21
+ export const JsonValueSchema = z.lazy(() => z.union([
22
+ z.null(),
23
+ z.boolean(),
24
+ finiteNumber,
25
+ z.string().max(MAX_TEXT_CHARS),
26
+ z.array(JsonValueSchema).max(MAX_ARRAY_ITEMS),
27
+ z.record(z.string().max(MAX_ID_CHARS), JsonValueSchema),
28
+ ]));
29
+ const textBlock = z.strictObject({
30
+ type: z.literal("text"),
31
+ text: boundedText,
32
+ truncated: z.literal(true).optional(),
33
+ });
34
+ const thinkingBlock = z.strictObject({
35
+ type: z.literal("thinking"),
36
+ text: boundedText,
37
+ truncated: z.literal(true).optional(),
38
+ });
39
+ const imageMime = z.string().min(1).max(128).regex(/^[\w.+-]+\/[\w.+-]+$/);
40
+ const imageByteLength = nonNegativeInt.max(MAX_WINDOW_DECODE_BYTES);
41
+ const imageBlock = z.union([
42
+ z.strictObject({
43
+ type: z.literal("image"),
44
+ mime_type: imageMime,
45
+ data: z.string().min(1).max(MAX_WINDOW_DECODE_BYTES),
46
+ byte_length: imageByteLength,
47
+ }),
48
+ z.strictObject({
49
+ type: z.literal("image"),
50
+ mime_type: imageMime,
51
+ byte_length: imageByteLength,
52
+ omitted: z.literal(true),
53
+ }),
54
+ ]);
55
+ const userBlock = z.union([textBlock, imageBlock]);
56
+ const assistantBlock = z.union([textBlock, thinkingBlock]);
57
+ export const TimelineUserBlockSchema = userBlock;
58
+ export const TimelineAssistantBlockSchema = assistantBlock;
59
+ export const TimelineTextBlockSchema = textBlock;
60
+ export const TimelineThinkingBlockSchema = thinkingBlock;
61
+ export const TimelineImageBlockSchema = imageBlock;
62
+ const eventBase = {
63
+ event_id: id,
64
+ session_id: id,
65
+ history_generation: id,
66
+ timestamp,
67
+ };
68
+ const groupedEventBase = { ...eventBase, group_id: id };
69
+ const timelineUserEvent = z.strictObject({
70
+ ...groupedEventBase,
71
+ kind: z.literal("user"),
72
+ message_id: id,
73
+ blocks: z.array(userBlock).max(MAX_ARRAY_ITEMS),
74
+ origin: z.enum(["pwa", "extension", "unknown"]),
75
+ sender_ref: id.optional(),
76
+ delivery: z.enum(["normal", "queued", "unknown"]),
77
+ status: z.literal("committed"),
78
+ }).superRefine((value, ctx) => {
79
+ if (value.event_id !== value.message_id) {
80
+ ctx.addIssue({ code: "custom", path: ["message_id"], message: "event_id must equal message_id" });
81
+ }
82
+ if (value.origin === "pwa" && value.sender_ref === undefined) {
83
+ ctx.addIssue({ code: "custom", path: ["sender_ref"], message: "pwa user events require sender_ref" });
84
+ }
85
+ if (value.origin !== "pwa" && value.sender_ref !== undefined) {
86
+ ctx.addIssue({ code: "custom", path: ["sender_ref"], message: "non-pwa user events must not include sender_ref" });
87
+ }
88
+ });
89
+ const timelineAssistantEvent = z.strictObject({
90
+ ...groupedEventBase,
91
+ kind: z.literal("assistant"),
92
+ blocks: z.array(assistantBlock).max(MAX_ARRAY_ITEMS),
93
+ status: z.enum(["complete", "interrupted"]),
94
+ });
95
+ const timelineToolEvent = z.union([
96
+ z.strictObject({
97
+ ...groupedEventBase,
98
+ kind: z.literal("tool"),
99
+ tool_call_id: id,
100
+ tool: nonEmptyText,
101
+ args: JsonValueSchema,
102
+ truncated: z.boolean(),
103
+ status: z.literal("complete"),
104
+ result: JsonValueSchema,
105
+ error: z.never().optional(),
106
+ }),
107
+ z.strictObject({
108
+ ...groupedEventBase,
109
+ kind: z.literal("tool"),
110
+ tool_call_id: id,
111
+ tool: nonEmptyText,
112
+ args: JsonValueSchema,
113
+ truncated: z.boolean(),
114
+ status: z.literal("error"),
115
+ result: JsonValueSchema.optional(),
116
+ error: nonEmptyText,
117
+ }),
118
+ z.strictObject({
119
+ ...groupedEventBase,
120
+ kind: z.literal("tool"),
121
+ tool_call_id: id,
122
+ tool: nonEmptyText,
123
+ args: JsonValueSchema,
124
+ truncated: z.boolean(),
125
+ status: z.literal("interrupted"),
126
+ result: z.never().optional(),
127
+ error: z.never().optional(),
128
+ }),
129
+ ]);
130
+ const systemEvent = z.strictObject({
131
+ ...eventBase,
132
+ kind: z.enum(["compaction", "branch_summary", "custom"]),
133
+ group_id: id.optional(),
134
+ payload: JsonValueSchema,
135
+ truncated: z.boolean(),
136
+ });
137
+ const providerErrorEvent = z.strictObject({
138
+ ...groupedEventBase,
139
+ kind: z.literal("provider_error"),
140
+ message: nonEmptyText,
141
+ });
142
+ export const TimelineEventSchema = z.union([
143
+ timelineUserEvent,
144
+ timelineAssistantEvent,
145
+ timelineToolEvent,
146
+ systemEvent,
147
+ providerErrorEvent,
148
+ ]);
149
+ const partialBase = {
150
+ protocol_version: z.literal(PROTOCOL_VERSION_V2),
151
+ session_id: id,
152
+ history_generation: id,
153
+ group_id: id,
154
+ partial_id: id,
155
+ status: z.enum(["running", "delta"]),
156
+ };
157
+ const partialTextFields = {
158
+ delta: boundedText.optional(),
159
+ };
160
+ const assistantPartial = z.strictObject({
161
+ type: z.literal("timeline_partial"),
162
+ ...partialBase,
163
+ kind: z.literal("assistant"),
164
+ blocks: z.array(assistantBlock).max(MAX_ARRAY_ITEMS).optional(),
165
+ ...partialTextFields,
166
+ });
167
+ const thinkingPartial = z.strictObject({
168
+ type: z.literal("timeline_partial"),
169
+ ...partialBase,
170
+ kind: z.literal("thinking"),
171
+ blocks: z.array(thinkingBlock).max(MAX_ARRAY_ITEMS).optional(),
172
+ ...partialTextFields,
173
+ });
174
+ const toolPartial = z.strictObject({
175
+ type: z.literal("timeline_partial"),
176
+ ...partialBase,
177
+ kind: z.literal("tool"),
178
+ tool_call_id: id,
179
+ tool: nonEmptyText,
180
+ args: JsonValueSchema.optional(),
181
+ blocks: z.array(assistantBlock).max(MAX_ARRAY_ITEMS).optional(),
182
+ ...partialTextFields,
183
+ });
184
+ export const TimelinePartialSchema = z.union([assistantPartial, thinkingPartial, toolPartial]);
185
+ const frameBase = { protocol_version: z.literal(PROTOCOL_VERSION_V2) };
186
+ const clientDirect = { channel_id: id, history_generation: id };
187
+ const responseDirect = { target_channel_id: id };
188
+ const broadcastBase = { session_id: id, history_generation: id };
189
+ const wireImage = z.strictObject({
190
+ data: z.string().min(1).max(MAX_WINDOW_DECODE_BYTES),
191
+ mime: imageMime,
192
+ });
193
+ const harness = z.strictObject({ name: id, version: id });
194
+ const wireModel = z.strictObject({
195
+ id,
196
+ name: boundedText,
197
+ provider: id,
198
+ reasoning: z.boolean(),
199
+ context_window: nonNegativeInt,
200
+ vision: z.boolean(),
201
+ });
202
+ const actionName = z.enum(["session_new", "session_compact", "model_set", "thinking_set"]);
203
+ const thinkingLevel = z.enum(["off", "minimal", "low", "medium", "high", "xhigh"]);
204
+ const askOption = z.strictObject({
205
+ value: boundedText,
206
+ label: boundedText,
207
+ description: boundedText.optional(),
208
+ preview: boundedText.optional(),
209
+ freeform: z.boolean().optional(),
210
+ });
211
+ const askQuestion = z.strictObject({
212
+ id,
213
+ label: boundedText,
214
+ prompt: boundedText,
215
+ type: z.enum(["single", "multi", "preview"]),
216
+ required: z.boolean(),
217
+ presentedType: z.enum(["single", "multi", "preview"]).optional(),
218
+ requestedType: z.enum(["single", "multi", "preview"]).optional(),
219
+ options: z.array(askOption).max(MAX_ARRAY_ITEMS),
220
+ });
221
+ const askEnrichment = z.strictObject({
222
+ flow_id: id,
223
+ tool_call_id: id.nullable(),
224
+ source: id,
225
+ title: boundedText.nullable(),
226
+ questions: z.array(askQuestion).max(MAX_ARRAY_ITEMS),
227
+ });
228
+ const askAnswer = z.strictObject({
229
+ values: z.array(boundedText).max(MAX_ARRAY_ITEMS).optional(),
230
+ customText: boundedText.optional(),
231
+ note: boundedText.optional(),
232
+ optionNotes: z.record(id, boundedText).optional(),
233
+ });
234
+ const askResponse = z.union([
235
+ z.strictObject({
236
+ flow_id: id,
237
+ kind: z.literal("answer"),
238
+ mode: z.enum(["submit", "elaborate"]).optional(),
239
+ answers: z.record(id, askAnswer),
240
+ }),
241
+ z.strictObject({ flow_id: id, kind: z.literal("cancel") }),
242
+ ]);
243
+ const extensionUiResponse = z.union([
244
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_response"), id, ...clientDirect, value: boundedText, ask: askResponse.optional() }),
245
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_response"), id, ...clientDirect, confirmed: z.boolean(), ask: askResponse.optional() }),
246
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_response"), id, ...clientDirect, cancelled: z.literal(true), ask: askResponse.optional() }),
247
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_response"), id, ...clientDirect, ask: askResponse }),
248
+ ]);
249
+ const pairRequest = z.strictObject({ ...frameBase, type: z.literal("pair_request"), id, token: id, device_name: boundedText });
250
+ const sessionHello = z.strictObject({ ...frameBase, type: z.literal("session_hello"), id, channel_id: id });
251
+ const userMessage = z.strictObject({
252
+ ...frameBase, type: z.literal("user_message"), id, ...clientDirect,
253
+ client_request_id: id, text: boundedText, images: z.array(wireImage).max(MAX_ARRAY_ITEMS).optional(),
254
+ streaming_behavior: z.literal("steer").optional(),
255
+ });
256
+ const userMessageObserved = z.strictObject({
257
+ ...frameBase, type: z.literal("user_message_observed"), id, ...clientDirect,
258
+ client_request_id: id, message_id: id, status: z.literal("committed"),
259
+ });
260
+ const sessionSync = z.strictObject({
261
+ ...frameBase, type: z.literal("session_sync"), id, ...clientDirect,
262
+ before: id.nullable(), limit: nonNegativeInt.max(100).optional(),
263
+ });
264
+ const ping = z.strictObject({ ...frameBase, type: z.literal("ping"), id, ...clientDirect });
265
+ const cancel = z.strictObject({ ...frameBase, type: z.literal("cancel"), id, ...clientDirect, target_id: id });
266
+ const actionCommon = { ...frameBase, id, ...clientDirect };
267
+ const sessionNew = z.strictObject({ ...actionCommon, type: z.literal("session_new") });
268
+ const sessionCompact = z.strictObject({ ...actionCommon, type: z.literal("session_compact") });
269
+ const modelSet = z.strictObject({ ...actionCommon, type: z.literal("model_set"), provider: id, model_id: id });
270
+ const thinkingSet = z.strictObject({ ...actionCommon, type: z.literal("thinking_set"), level: thinkingLevel });
271
+ const listModels = z.strictObject({ ...actionCommon, type: z.literal("list_models") });
272
+ const queuedSet = z.strictObject({ ...frameBase, type: z.literal("queued_message_set"), id, ...clientDirect, text: boundedText });
273
+ const queuedClear = z.strictObject({ ...frameBase, type: z.literal("queued_message_clear"), id, ...clientDirect, target_id: id.optional() });
274
+ const approveTool = z.strictObject({ ...frameBase, type: z.literal("approve_tool"), id, ...clientDirect, tool_call_id: id, decision: z.enum(["allow", "deny"]) });
275
+ export const ClientFrameSchema = z.union([
276
+ pairRequest, sessionHello, userMessage, userMessageObserved, sessionSync, ping, cancel,
277
+ sessionNew, sessionCompact, modelSet, thinkingSet, listModels, queuedSet, queuedClear,
278
+ approveTool, extensionUiResponse,
279
+ ]);
280
+ const pairOk = z.strictObject({
281
+ ...frameBase, type: z.literal("pair_ok"), in_reply_to: id,
282
+ session_name: boundedText, session_started_at: timestamp, room_id: id,
283
+ harness: harness.optional(), hostname: boundedText.optional(),
284
+ });
285
+ const pairError = z.strictObject({
286
+ ...frameBase, type: z.literal("pair_error"), in_reply_to: id,
287
+ code: z.enum(["token_expired", "token_consumed", "token_unknown", "internal_error"]), message: nonEmptyText,
288
+ });
289
+ const sessionReady = z.strictObject({
290
+ ...frameBase, type: z.literal("session_ready"), in_reply_to: id, ...responseDirect,
291
+ session_id: id, history_generation: id, self_sender_ref: id,
292
+ });
293
+ const startedMessage = z.strictObject({
294
+ id, group_id: id, blocks: z.array(userBlock).max(MAX_ARRAY_ITEMS),
295
+ origin: z.enum(["pwa", "extension", "unknown"]), sender_ref: id.optional(), delivery: z.enum(["normal", "queued", "unknown"]),
296
+ }).superRefine((value, ctx) => {
297
+ if (value.origin === "pwa" && value.sender_ref === undefined) {
298
+ ctx.addIssue({ code: "custom", path: ["sender_ref"], message: "pwa user messages require sender_ref" });
299
+ }
300
+ if (value.origin !== "pwa" && value.sender_ref !== undefined) {
301
+ ctx.addIssue({ code: "custom", path: ["sender_ref"], message: "non-pwa user messages must not include sender_ref" });
302
+ }
303
+ });
304
+ const userMessageStarted = z.strictObject({
305
+ ...frameBase, type: z.literal("user_message_started"), ...responseDirect, in_reply_to: id,
306
+ session_id: id, history_generation: id, message: startedMessage,
307
+ });
308
+ const userMessageStatus = z.union([
309
+ z.strictObject({ ...frameBase, type: z.literal("user_message_status"), ...responseDirect, in_reply_to: id, session_id: id, history_generation: id, client_request_id: id, status: z.literal("received") }),
310
+ z.strictObject({ ...frameBase, type: z.literal("user_message_status"), ...responseDirect, in_reply_to: id, session_id: id, history_generation: id, client_request_id: id, status: z.literal("accepted"), message_id: id.optional(), group_id: id.optional() }),
311
+ z.strictObject({ ...frameBase, type: z.literal("user_message_status"), ...responseDirect, in_reply_to: id, session_id: id, history_generation: id, client_request_id: id, status: z.literal("committed"), message_id: id, group_id: id.optional() }),
312
+ z.strictObject({ ...frameBase, type: z.literal("user_message_status"), ...responseDirect, in_reply_to: id, session_id: id, history_generation: id, client_request_id: id, status: z.literal("unknown_delivery") }),
313
+ ]);
314
+ const timelineEventFrame = z.strictObject({ ...frameBase, type: z.literal("timeline_event"), ...broadcastBase, event: TimelineEventSchema });
315
+ export const TimelineEventFragmentSchema = z.strictObject({
316
+ ...frameBase, type: z.literal("timeline_event_fragment"), ...broadcastBase,
317
+ event_id: id, index: nonNegativeInt, data_base64: base64, final: z.boolean(),
318
+ });
319
+ export const HistoryFragmentSchema = z.strictObject({ event_id: id, index: nonNegativeInt, data_base64: base64, final: z.boolean() });
320
+ const historyFragment = HistoryFragmentSchema;
321
+ const historyChunkBase = {
322
+ ...frameBase, type: z.literal("session_history_chunk"), ...responseDirect,
323
+ in_reply_to: id, session_id: id, history_generation: id, snapshot_head: id,
324
+ chunk_index: nonNegativeInt, events: z.array(TimelineEventSchema).max(MAX_ARRAY_ITEMS),
325
+ fragments: z.array(historyFragment).max(MAX_ARRAY_ITEMS),
326
+ };
327
+ const historyChunkTail = {
328
+ final_chunk: z.literal(false), next_before: z.never().optional(), eos: z.never().optional(),
329
+ };
330
+ const historyChunkEos = {
331
+ final_chunk: z.literal(true), eos: z.literal(true), next_before: z.never().optional(),
332
+ };
333
+ const historyChunkNext = {
334
+ final_chunk: z.literal(true), eos: z.literal(false), next_before: id,
335
+ };
336
+ function validateHistoryChunk(value, ctx) {
337
+ const eventIds = new Set(value.events.map((event) => event.event_id));
338
+ const fragmentIds = new Set(value.fragments.map((fragment) => fragment.event_id));
339
+ for (const eventId of eventIds) {
340
+ if (fragmentIds.has(eventId))
341
+ ctx.addIssue({ code: "custom", path: ["fragments"], message: "an event cannot be both complete and fragmented" });
342
+ }
343
+ if (fragmentIds.size !== value.fragments.length)
344
+ ctx.addIssue({ code: "custom", path: ["fragments"], message: "fragment event ids must be unique per chunk" });
345
+ }
346
+ export const SessionHistoryChunkSchema = z.union([
347
+ z.strictObject({ ...historyChunkBase, ...historyChunkTail }),
348
+ z.strictObject({ ...historyChunkBase, ...historyChunkEos }),
349
+ z.strictObject({ ...historyChunkBase, ...historyChunkNext }),
350
+ ]).superRefine(validateHistoryChunk);
351
+ const protocolErrorFields = {
352
+ type: z.literal("protocol_error"),
353
+ in_reply_to: id.optional(),
354
+ code: z.enum(["protocol_upgrade_required", "invalid_message", "unsupported_type", "invalid_channel", "invalid_generation", "invalid_cursor", "reset_required", "too_large", "internal_error"]),
355
+ message: nonEmptyText,
356
+ };
357
+ const protocolError = z.union([
358
+ z.strictObject({ ...frameBase, ...protocolErrorFields, ...responseDirect }),
359
+ z.strictObject({ ...frameBase, ...protocolErrorFields }),
360
+ ]);
361
+ const reset = z.strictObject({
362
+ ...frameBase, type: z.literal("reset"), ...responseDirect,
363
+ session_id: id, history_generation: id, reason: z.enum(["generation_changed", "branch_changed", "session_replaced", "conflict", "invalid_cursor"]),
364
+ });
365
+ const pong = z.strictObject({ ...frameBase, type: z.literal("pong"), ...responseDirect, in_reply_to: id });
366
+ const cancelled = z.strictObject({ ...frameBase, type: z.literal("cancelled"), ...responseDirect, in_reply_to: id, target_id: id });
367
+ const actionOk = z.strictObject({ ...frameBase, type: z.literal("action_ok"), ...responseDirect, in_reply_to: id, action: actionName });
368
+ const actionError = z.strictObject({ ...frameBase, type: z.literal("action_error"), ...responseDirect, in_reply_to: id, action: actionName, error: nonEmptyText });
369
+ const modelsList = z.strictObject({ ...frameBase, type: z.literal("models_list"), ...responseDirect, in_reply_to: id, models: z.array(wireModel).max(MAX_ARRAY_ITEMS), current: wireModel.optional() });
370
+ const extensionUiRequest = z.union([
371
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_request"), ...responseDirect, id, method: z.literal("select"), title: boundedText, options: z.array(boundedText).max(MAX_ARRAY_ITEMS), ask: askEnrichment.optional() }),
372
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_request"), ...responseDirect, id, method: z.literal("confirm"), title: boundedText, message: boundedText, ask: askEnrichment.optional() }),
373
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_request"), ...responseDirect, id, method: z.literal("input"), title: boundedText, placeholder: boundedText.optional(), ask: askEnrichment.optional() }),
374
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_request"), ...responseDirect, id, method: z.literal("editor"), title: boundedText, prefill: boundedText.optional(), ask: askEnrichment.optional() }),
375
+ z.strictObject({ ...frameBase, type: z.literal("extension_ui_request"), ...responseDirect, id, method: z.literal("notify"), message: boundedText, notify_type: z.enum(["info", "warning", "error"]).optional() }),
376
+ ]);
377
+ const bye = z.strictObject({ ...frameBase, type: z.literal("bye"), ...broadcastBase, reason: z.enum(["peer_stop", "session_replaced", "shutdown"]) });
378
+ export const ServerFrameSchema = z.union([
379
+ pairOk, pairError, sessionReady, userMessageStarted, userMessageStatus,
380
+ timelineEventFrame, TimelinePartialSchema, TimelineEventFragmentSchema, SessionHistoryChunkSchema,
381
+ protocolError, reset, pong, cancelled, actionOk, actionError, modelsList, extensionUiRequest, bye,
382
+ ]);
383
+ export const ClientFrameTypes = new Set([
384
+ "pair_request", "session_hello", "user_message", "user_message_observed", "session_sync", "ping", "cancel",
385
+ "session_new", "session_compact", "model_set", "thinking_set", "list_models", "queued_message_set", "queued_message_clear", "approve_tool", "extension_ui_response",
386
+ ]);
387
+ export const ServerFrameTypes = new Set([
388
+ "pair_ok", "pair_error", "session_ready", "user_message_started", "user_message_status", "timeline_event", "timeline_partial", "timeline_event_fragment", "session_history_chunk", "protocol_error", "reset", "pong", "cancelled", "action_ok", "action_error", "models_list", "extension_ui_request", "bye",
389
+ ]);
390
+ const markerSystemKind = z.enum(["compaction", "branch_summary", "custom"]);
391
+ const markerGroupedBase = { version: z.literal(2), event_id: id, group_id: id };
392
+ const markerUser = z.strictObject({
393
+ ...markerGroupedBase, kind: z.literal("user"), message_id: id.optional(),
394
+ origin: z.enum(["pwa", "extension", "unknown"]), delivery: z.enum(["normal", "queued", "unknown"]), sender_ref: id.optional(),
395
+ }).superRefine((value, ctx) => {
396
+ if (value.message_id !== undefined && value.message_id !== value.event_id) {
397
+ ctx.addIssue({ code: "custom", path: ["message_id"], message: "message_id must equal event_id" });
398
+ }
399
+ if (value.origin === "pwa" && value.sender_ref === undefined) {
400
+ ctx.addIssue({ code: "custom", path: ["sender_ref"], message: "pwa marker users require sender_ref" });
401
+ }
402
+ if (value.origin !== "pwa" && value.sender_ref !== undefined) {
403
+ ctx.addIssue({ code: "custom", path: ["sender_ref"], message: "non-pwa marker users must not include sender_ref" });
404
+ }
405
+ });
406
+ const markerGrouped = z.strictObject({ ...markerGroupedBase, kind: z.enum(["assistant", "tool", "provider_error"]) });
407
+ const markerSystem = z.strictObject({ version: z.literal(2), event_id: id, kind: markerSystemKind, group_id: id.optional() });
408
+ export const MarkerSchemaV2 = z.union([markerUser, markerGrouped, markerSystem]);
409
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/protocol/v2/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAgC,CAAC;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,GAAG,IAAI,CAAC;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACnD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC;AAC/D,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACzC,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;AAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE;KACtB,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,yBAAyB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACvD,KAAK,CAAC,kEAAkE,CAAC,CAAC;AAI7E,MAAM,CAAC,MAAM,eAAe,GAAyB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAC/D,CAAC,CAAC,KAAK,CAAC;IACN,CAAC,CAAC,IAAI,EAAE;IACR,CAAC,CAAC,OAAO,EAAE;IACX,YAAY;IACZ,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;IAC9B,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;IAC7C,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;CACxD,CAAC,CACqB,CAAC;AAE1B,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AACH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC3E,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACpE,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC;IACzB,CAAC,CAAC,YAAY,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,SAAS,EAAE,SAAS;QACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACpD,WAAW,EAAE,eAAe;KAC7B,CAAC;IACF,CAAC,CAAC,YAAY,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,eAAe;QAC5B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KACzB,CAAC;CACH,CAAC,CAAC;AACH,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AACnD,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AACjD,MAAM,CAAC,MAAM,4BAA4B,GAAG,cAAc,CAAC;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAa,CAAC;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC;AAEnD,MAAM,SAAS,GAAG;IAChB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,kBAAkB,EAAE,EAAE;IACtB,SAAS;CACV,CAAC;AACF,MAAM,gBAAgB,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAExD,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IACvC,GAAG,gBAAgB;IACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC/C,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE;IACzB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;CAC/B,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5B,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;QACxC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC;IACrH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC5C,GAAG,gBAAgB;IACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,YAAY,CAAC;QACb,GAAG,gBAAgB;QACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,YAAY,EAAE,EAAE;QAChB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;QACtB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC7B,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC;IACF,CAAC,CAAC,YAAY,CAAC;QACb,GAAG,gBAAgB;QACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,YAAY,EAAE,EAAE;QAChB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;QACtB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1B,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE;QAClC,KAAK,EAAE,YAAY;KACpB,CAAC;IACF,CAAC,CAAC,YAAY,CAAC;QACb,GAAG,gBAAgB;QACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,YAAY,EAAE,EAAE;QAChB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;QACtB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,GAAG,SAAS;IACZ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACxD,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;IACvB,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,YAAY,CAAC;IACxC,GAAG,gBAAgB;IACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC;IACzC,iBAAiB;IACjB,sBAAsB;IACtB,iBAAiB;IACjB,WAAW;IACX,kBAAkB;CACnB,CAAC,CAAC;AAGH,MAAM,WAAW,GAAG;IAClB,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAChD,UAAU,EAAE,EAAE;IACd,kBAAkB,EAAE,EAAE;IACtB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AACF,MAAM,iBAAiB,GAAG;IACxB,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;CAC9B,CAAC;AACF,MAAM,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACnC,GAAG,WAAW;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IAC/D,GAAG,iBAAiB;CACrB,CAAC,CAAC;AACH,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACnC,GAAG,WAAW;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IAC9D,GAAG,iBAAiB;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACnC,GAAG,WAAW;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,YAAY,EAAE,EAAE;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IAC/D,GAAG,iBAAiB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC;AAG/F,MAAM,SAAS,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;AACvE,MAAM,YAAY,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAChE,MAAM,cAAc,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;AACjD,MAAM,aAAa,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAEjE,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACpD,IAAI,EAAE,SAAS;CAChB,CAAC,CAAC;AACH,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/B,EAAE;IACF,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,cAAc,EAAE,cAAc;IAC9B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;AAC3F,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnF,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/B,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,EAAE;IACF,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChE,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;CACjD,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC;IACnC,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;CACrD,CAAC,CAAC;AACH,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IAC5D,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1B,CAAC,CAAC,YAAY,CAAC;QACb,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;QAChD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;KACjC,CAAC;IACF,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC;IAClC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;IAChJ,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpJ,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;IACxJ,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;CAClH,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AAC/H,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5G,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY;IAClE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IACpG,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC,YAAY,CAAC;IACzC,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY;IAC3E,iBAAiB,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;CACtE,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY;IAClE,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACjE,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;AAC5F,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/G,MAAM,YAAY,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC;AAC3D,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACvF,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAC/F,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/G,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;AAC/G,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACvF,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAClI,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC7I,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAElK,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IACtF,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW;IACrF,WAAW,EAAE,mBAAmB;CACjC,CAAC,CAAC;AAGH,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC;IAC5B,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,EAAE;IACzD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IACrE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AACH,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/B,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,EAAE;IAC5D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY;CAC5G,CAAC,CAAC;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IAClC,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,cAAc;IAClF,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE;CAC5D,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC;IACpC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CAC9H,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC,CAAC;IACvH,CAAC;AACH,CAAC,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,YAAY,CAAC;IACxC,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE;IACzF,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc;CAChE,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1M,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC9P,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpP,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;CACnN,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,GAAG,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC7I,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,YAAY,CAAC;IACxD,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,GAAG,aAAa;IAC1E,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;CAC7E,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACtI,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,gBAAgB,GAAG;IACvB,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,GAAG,cAAc;IACzE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE;IAC1E,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;IACtF,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;CACzD,CAAC;AACF,MAAM,gBAAgB,GAAG;IACvB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CAC5F,CAAC;AACF,MAAM,eAAe,GAAG;IACtB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CACtF,CAAC;AACF,MAAM,gBAAgB,GAAG;IACvB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE;CACrE,CAAC;AACF,SAAS,oBAAoB,CAC3B,KAAsF,EACtF,GAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC;IAClJ,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM;QAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAAC;AACjK,CAAC;AACD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC/C,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC5D,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,eAAe,EAAE,CAAC;IAC3D,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAAC;CAC7D,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;AACrC,MAAM,mBAAmB,GAAG;IAC1B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,WAAW,EAAE,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC9L,OAAO,EAAE,YAAY;CACtB,CAAC;AACF,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5B,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,mBAAmB,EAAE,GAAG,cAAc,EAAE,CAAC;IAC3E,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,mBAAmB,EAAE,CAAC;CACzD,CAAC,CAAC;AACH,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC;IAC3B,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,cAAc;IACzD,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;CACnJ,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3G,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AACpI,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AACxI,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AACnK,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAExM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC;IACjC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpO,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvM,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpN,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;IACjN,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;CAClN,CAAC,CAAC;AACH,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AAEtJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB;IACtE,kBAAkB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,yBAAyB;IACjG,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG;CAClG,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAsB;IAC3D,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ;IAC1G,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,cAAc,EAAE,uBAAuB;CACpK,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAsB;IAC3D,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,sBAAsB,EAAE,KAAK;CAC7S,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5E,MAAM,iBAAiB,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAChF,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC;IAChC,GAAG,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE;IACxE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE;CAC9H,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5B,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1E,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC,CAAC;IACtH,CAAC;AACH,CAAC,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;AACtH,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC9H,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC"}
@@ -0,0 +1,75 @@
1
+ export type V2IdempotencyStatus = "received" | "accepted" | "committed" | "unknown_delivery";
2
+ export type V2ChannelState = {
3
+ readonly senderRef: string;
4
+ readonly channelId: string;
5
+ readonly ready: true;
6
+ readonly lastSeen: number;
7
+ };
8
+ export type V2IdempotencyRequest = {
9
+ senderRef: string;
10
+ clientRequestId: string;
11
+ payload: unknown;
12
+ };
13
+ export type V2IdempotencyRecord = {
14
+ readonly key: string;
15
+ readonly generation: string;
16
+ readonly senderRef: string;
17
+ readonly clientRequestId: string;
18
+ readonly fingerprint: string;
19
+ status: V2IdempotencyStatus;
20
+ messageId?: string;
21
+ groupId?: string;
22
+ touchedAt: number;
23
+ };
24
+ type Clock = () => number;
25
+ export type V2SessionStateOptions = {
26
+ generation: string;
27
+ maxEntries?: number;
28
+ ttlMs?: number;
29
+ clock?: Clock;
30
+ };
31
+ type BeginResult = {
32
+ kind: "new";
33
+ record: V2IdempotencyRecord;
34
+ } | {
35
+ kind: "replay";
36
+ record: V2IdempotencyRecord;
37
+ } | {
38
+ kind: "conflict";
39
+ record: V2IdempotencyRecord;
40
+ };
41
+ export declare class V2SessionState {
42
+ private generationValue;
43
+ private readonly maxEntries;
44
+ private readonly ttlMs;
45
+ private readonly clock;
46
+ private readonly channels;
47
+ private readonly records;
48
+ constructor(options: V2SessionStateOptions);
49
+ get generation(): string;
50
+ setGeneration(generation: string): void;
51
+ hello(senderRef: string, channelId: string): V2ChannelState;
52
+ touch(senderRef: string, channelId: string): V2ChannelState | undefined;
53
+ get(senderRef: string, channelId: string): V2ChannelState | undefined;
54
+ removeChannel(senderRef: string, channelId: string): void;
55
+ removeOwner(senderRef: string): void;
56
+ begin(request: V2IdempotencyRequest): BeginResult;
57
+ update(key: string, status: V2IdempotencyStatus, details?: {
58
+ messageId?: string;
59
+ groupId?: string;
60
+ }): V2IdempotencyRecord | undefined;
61
+ rememberUnknownDelivery(key: string): V2IdempotencyRecord | undefined;
62
+ getRecord(key: string): V2IdempotencyRecord | undefined;
63
+ forget(key: string): boolean;
64
+ snapshot(): {
65
+ channels: V2ChannelState[];
66
+ records: V2IdempotencyRecord[];
67
+ };
68
+ private prune;
69
+ private pruneCapacity;
70
+ private recordKey;
71
+ private channelKey;
72
+ private assertId;
73
+ }
74
+ export declare function fingerprintV2Payload(value: unknown): string;
75
+ export {};