agent-embassy 1.7.1 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/CONTRIBUTING.md +51 -47
  3. package/README.md +26 -9
  4. package/README.zh-CN.md +22 -9
  5. package/SECURITY.md +48 -35
  6. package/dist/src/gateway/acp-client.d.ts +12 -19
  7. package/dist/src/gateway/acp-client.js +90 -65
  8. package/dist/src/gateway/acp-client.js.map +1 -1
  9. package/dist/src/gateway/acp-provider.d.ts +11 -10
  10. package/dist/src/gateway/acp-provider.js +165 -53
  11. package/dist/src/gateway/acp-provider.js.map +1 -1
  12. package/dist/src/gateway/claude-helper-client.d.ts +2 -43
  13. package/dist/src/gateway/claude-helper-client.js +1 -211
  14. package/dist/src/gateway/claude-helper-client.js.map +1 -1
  15. package/dist/src/gateway/claude-helper-protocol.d.ts +16 -74
  16. package/dist/src/gateway/claude-helper-protocol.js +99 -378
  17. package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
  18. package/dist/src/gateway/claude-helper-supervisor.d.ts +56 -44
  19. package/dist/src/gateway/claude-helper-supervisor.js +265 -456
  20. package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
  21. package/dist/src/gateway/claude-helper.js +184 -210
  22. package/dist/src/gateway/claude-helper.js.map +1 -1
  23. package/dist/src/gateway/claude-peer.d.ts +20 -87
  24. package/dist/src/gateway/claude-peer.js +310 -1009
  25. package/dist/src/gateway/claude-peer.js.map +1 -1
  26. package/dist/src/gateway/claude-runtime.d.ts +13 -15
  27. package/dist/src/gateway/claude-runtime.js +14 -168
  28. package/dist/src/gateway/claude-runtime.js.map +1 -1
  29. package/dist/src/gateway/cli-copy.d.ts +1 -1
  30. package/dist/src/gateway/cli-copy.en.d.ts +2 -4
  31. package/dist/src/gateway/cli-copy.en.js +3 -4
  32. package/dist/src/gateway/cli-copy.en.js.map +1 -1
  33. package/dist/src/gateway/cli-copy.js +0 -2
  34. package/dist/src/gateway/cli-copy.js.map +1 -1
  35. package/dist/src/gateway/cli-copy.zh-CN.d.ts +2 -4
  36. package/dist/src/gateway/cli-copy.zh-CN.js +3 -4
  37. package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -1
  38. package/dist/src/gateway/cli.d.ts +7 -2
  39. package/dist/src/gateway/cli.js +273 -617
  40. package/dist/src/gateway/cli.js.map +1 -1
  41. package/dist/src/gateway/codex-app-server.d.ts +5 -227
  42. package/dist/src/gateway/codex-app-server.js +18 -1463
  43. package/dist/src/gateway/codex-app-server.js.map +1 -1
  44. package/dist/src/gateway/codex-doctor.d.ts +6 -3
  45. package/dist/src/gateway/codex-doctor.js +77 -98
  46. package/dist/src/gateway/codex-doctor.js.map +1 -1
  47. package/dist/src/gateway/codex-local-transport.d.ts +1 -6
  48. package/dist/src/gateway/codex-local-transport.js +8 -10
  49. package/dist/src/gateway/codex-local-transport.js.map +1 -1
  50. package/dist/src/gateway/codex-stateless-transport.d.ts +114 -0
  51. package/dist/src/gateway/codex-stateless-transport.js +1108 -0
  52. package/dist/src/gateway/codex-stateless-transport.js.map +1 -0
  53. package/dist/src/gateway/config.d.ts +2 -9
  54. package/dist/src/gateway/config.js +62 -100
  55. package/dist/src/gateway/config.js.map +1 -1
  56. package/dist/src/gateway/control.d.ts +36 -90
  57. package/dist/src/gateway/control.js +464 -1159
  58. package/dist/src/gateway/control.js.map +1 -1
  59. package/dist/src/gateway/dashboard-copy.d.ts +1 -1
  60. package/dist/src/gateway/dashboard-copy.en.d.ts +3 -26
  61. package/dist/src/gateway/dashboard-copy.en.js +14 -37
  62. package/dist/src/gateway/dashboard-copy.en.js.map +1 -1
  63. package/dist/src/gateway/dashboard-copy.js +3 -26
  64. package/dist/src/gateway/dashboard-copy.js.map +1 -1
  65. package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +3 -26
  66. package/dist/src/gateway/dashboard-copy.zh-CN.js +14 -37
  67. package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -1
  68. package/dist/src/gateway/dashboard-model.d.ts +6 -23
  69. package/dist/src/gateway/dashboard-model.js +37 -131
  70. package/dist/src/gateway/dashboard-model.js.map +1 -1
  71. package/dist/src/gateway/dashboard.d.ts +0 -6
  72. package/dist/src/gateway/dashboard.js +0 -6
  73. package/dist/src/gateway/dashboard.js.map +1 -1
  74. package/dist/src/gateway/live-dashboard-app/app.js +9 -32
  75. package/dist/src/gateway/live-dashboard-command.js +2 -2
  76. package/dist/src/gateway/live-dashboard-command.js.map +1 -1
  77. package/dist/src/gateway/live-dashboard-http.d.ts +1 -1
  78. package/dist/src/gateway/live-dashboard-http.js +2 -2
  79. package/dist/src/gateway/live-dashboard-http.js.map +1 -1
  80. package/dist/src/gateway/progress-watch-machine.d.ts +1 -37
  81. package/dist/src/gateway/progress-watch-machine.js +4 -15
  82. package/dist/src/gateway/progress-watch-machine.js.map +1 -1
  83. package/dist/src/gateway/providers.d.ts +55 -195
  84. package/dist/src/gateway/providers.js +608 -2465
  85. package/dist/src/gateway/providers.js.map +1 -1
  86. package/dist/src/gateway/server.d.ts +16 -25
  87. package/dist/src/gateway/server.js +164 -251
  88. package/dist/src/gateway/server.js.map +1 -1
  89. package/dist/src/gateway/service.d.ts +146 -448
  90. package/dist/src/gateway/service.js +1670 -6142
  91. package/dist/src/gateway/service.js.map +1 -1
  92. package/dist/src/gateway/state-v2-to-v3.d.ts +23 -0
  93. package/dist/src/gateway/state-v2-to-v3.js +994 -0
  94. package/dist/src/gateway/state-v2-to-v3.js.map +1 -0
  95. package/dist/src/gateway/store.d.ts +54 -309
  96. package/dist/src/gateway/store.js +1563 -3519
  97. package/dist/src/gateway/store.js.map +1 -1
  98. package/dist/src/gateway/types.d.ts +175 -228
  99. package/dist/src/gateway/types.js +114 -252
  100. package/dist/src/gateway/types.js.map +1 -1
  101. package/docs/CONFIGURATION.md +22 -9
  102. package/docs/CONFIGURATION.zh-CN.md +21 -9
  103. package/docs/DASHBOARD.md +10 -10
  104. package/docs/DASHBOARD.zh-CN.md +3 -3
  105. package/docs/DELIVERY.md +4 -4
  106. package/docs/DELIVERY.zh-CN.md +4 -4
  107. package/docs/GATEWAY-ARCHITECTURE.md +158 -187
  108. package/package.json +1 -1
  109. package/skills/embassy-peer/SKILL.md +28 -22
  110. package/dist/src/gateway/codex-registration-generation.d.ts +0 -5
  111. package/dist/src/gateway/codex-registration-generation.js +0 -19
  112. package/dist/src/gateway/codex-registration-generation.js.map +0 -1
  113. package/dist/src/gateway/codex-registration-succession.d.ts +0 -209
  114. package/dist/src/gateway/codex-registration-succession.js +0 -588
  115. package/dist/src/gateway/codex-registration-succession.js.map +0 -1
  116. package/dist/src/gateway/compatibility.d.ts +0 -22
  117. package/dist/src/gateway/compatibility.js +0 -23
  118. package/dist/src/gateway/compatibility.js.map +0 -1
  119. package/dist/src/gateway/delivery-machine.d.ts +0 -235
  120. package/dist/src/gateway/delivery-machine.js +0 -540
  121. package/dist/src/gateway/delivery-machine.js.map +0 -1
@@ -1,540 +0,0 @@
1
- /**
2
- * Pure delivery lifecycle for one accepted Embassy message.
3
- *
4
- * This module deliberately owns no timers, I/O, message bodies, provider
5
- * handles, or reply correlation. Callers feed it observed events and execute
6
- * the returned effects. That keeps the terminal decision independently
7
- * testable while the service remains responsible for serialization.
8
- * Event timestamps are trusted, normalized controller inputs; untrusted wire
9
- * values must be validated before they reach this reducer.
10
- */
11
- export const deliveryPhases = [
12
- "queued",
13
- "dispatching",
14
- "transport_written",
15
- "awaiting_terminal",
16
- "terminal",
17
- ];
18
- export const deliveryTerminalOutcomes = [
19
- "delivered",
20
- "unconfirmed",
21
- "expired",
22
- "failed",
23
- "ambiguous",
24
- "cancelled",
25
- ];
26
- export const deliveryEventTypes = [
27
- "dispatch_requested",
28
- "dispatch_retry_due",
29
- "dispatch_clean_prewrite_failed",
30
- "dispatch_ambiguous",
31
- "transport_written",
32
- "await_terminal",
33
- "provider_held",
34
- "provider_released",
35
- "provider_denied",
36
- "provider_expired",
37
- "provider_failed",
38
- "provider_unconfirmed",
39
- "route_terminated",
40
- "external_settlement",
41
- "stall_due",
42
- "deadline_due",
43
- "cancel",
44
- "shutdown",
45
- "native_receipt_confirmed",
46
- "native_receipt_clean_prewrite_failed",
47
- "native_receipt_retry_due",
48
- "native_receipt_ambiguous",
49
- ];
50
- /** Provider terminal evidence must be observed strictly before the deadline. */
51
- export function arbitrateDeliveryDeadline(observedAt, deadlineAt) {
52
- return observedAt < deadlineAt
53
- ? "provider_terminal_wins"
54
- : "deadline_wins";
55
- }
56
- export function createDeliveryMachine(input) {
57
- assertFiniteTime(input.enqueuedAt, "enqueuedAt");
58
- assertFiniteTime(input.stallAt, "stallAt");
59
- assertFiniteTime(input.deadlineAt, "deadlineAt");
60
- if (!(input.enqueuedAt <= input.stallAt && input.stallAt < input.deadlineAt)) {
61
- throw new RangeError("Delivery times must satisfy enqueuedAt <= stallAt < deadlineAt.");
62
- }
63
- const maxCleanPrewriteRetries = nonnegativeInteger(input.maxCleanPrewriteRetries ?? 0, "maxCleanPrewriteRetries");
64
- const maxNativeReceiptCleanPrewriteRetries = nonnegativeInteger(input.maxNativeReceiptCleanPrewriteRetries ?? 0, "maxNativeReceiptCleanPrewriteRetries");
65
- return {
66
- phase: "queued",
67
- enqueuedAt: input.enqueuedAt,
68
- stallAt: input.stallAt,
69
- deadlineAt: input.deadlineAt,
70
- maxCleanPrewriteRetries,
71
- dispatchAttempt: 0,
72
- dispatchRetryAt: null,
73
- writeEvidence: "none",
74
- uncertaintyCode: null,
75
- approvalProgress: "none",
76
- stall: "pending",
77
- nativeReceipt: input.nativeReceipt === true
78
- ? {
79
- phase: "open",
80
- maxCleanPrewriteRetries: maxNativeReceiptCleanPrewriteRetries,
81
- }
82
- : { phase: "absent" },
83
- };
84
- }
85
- export function isTerminalDeliveryMachine(state) {
86
- return state.phase === "terminal";
87
- }
88
- export function projectDelivery(state, now) {
89
- assertFiniteTime(now, "now");
90
- if (state.phase === "terminal") {
91
- return {
92
- phase: state.phase,
93
- publicState: state.outcome,
94
- terminal: true,
95
- stalled: state.stall === "emitted",
96
- outcome: state.outcome,
97
- approvalProgress: state.approvalProgress,
98
- writeEvidence: state.writeEvidence,
99
- nativeReceiptPhase: state.nativeReceipt.phase,
100
- };
101
- }
102
- return {
103
- phase: state.phase,
104
- publicState: state.stall === "emitted" ? "stalled" : state.phase,
105
- terminal: false,
106
- stalled: state.stall === "emitted",
107
- pendingForMs: Math.max(0, now - state.enqueuedAt),
108
- approvalProgress: state.approvalProgress,
109
- writeEvidence: state.writeEvidence,
110
- nativeReceiptPhase: state.nativeReceipt.phase,
111
- };
112
- }
113
- /** Timer projection; scheduling remains a controller responsibility. */
114
- export function projectDeliveryWakeups(state) {
115
- const nativeReceiptRetryAt = state.nativeReceipt.phase === "retry_wait"
116
- ? state.nativeReceipt.retryAt
117
- : undefined;
118
- if (state.phase === "terminal") {
119
- return nativeReceiptRetryAt === undefined
120
- ? {}
121
- : { nativeReceiptRetryAt };
122
- }
123
- return {
124
- ...(state.stall === "pending" ? { stallAt: state.stallAt } : {}),
125
- deadlineAt: state.deadlineAt,
126
- ...(state.dispatchRetryAt === null
127
- ? {}
128
- : { dispatchRetryAt: state.dispatchRetryAt }),
129
- ...(nativeReceiptRetryAt === undefined ? {} : { nativeReceiptRetryAt }),
130
- };
131
- }
132
- export function transitionDelivery(state, event) {
133
- if (isNativeReceiptEvent(event)) {
134
- return transitionDeliveryNativeReceipt(state, event);
135
- }
136
- if (state.phase === "terminal")
137
- return unchanged(state);
138
- switch (event.type) {
139
- case "dispatch_requested":
140
- if (state.phase !== "queued" ||
141
- state.dispatchAttempt !== 0 ||
142
- state.dispatchRetryAt !== null ||
143
- event.at >= state.deadlineAt) {
144
- return event.at >= state.deadlineAt
145
- ? settleAtDeadline(state, event.at)
146
- : unchanged(state);
147
- }
148
- return {
149
- state: {
150
- ...state,
151
- phase: "dispatching",
152
- dispatchAttempt: 1,
153
- },
154
- effects: [{ type: "dispatch", attempt: 1 }],
155
- };
156
- case "dispatch_retry_due":
157
- if (state.phase !== "queued" ||
158
- state.dispatchRetryAt === null ||
159
- event.at < state.dispatchRetryAt) {
160
- return event.at >= state.deadlineAt
161
- ? settleAtDeadline(state, event.at)
162
- : unchanged(state);
163
- }
164
- if (event.at >= state.deadlineAt)
165
- return settleAtDeadline(state, event.at);
166
- return {
167
- state: {
168
- ...state,
169
- phase: "dispatching",
170
- dispatchAttempt: state.dispatchAttempt + 1,
171
- dispatchRetryAt: null,
172
- },
173
- effects: [
174
- { type: "dispatch", attempt: state.dispatchAttempt + 1 },
175
- ],
176
- };
177
- case "dispatch_clean_prewrite_failed": {
178
- if (state.phase !== "dispatching")
179
- return unchanged(state);
180
- if (event.at >= state.deadlineAt)
181
- return settleAtDeadline(state, event.at);
182
- const canRetry = state.writeEvidence === "none" &&
183
- state.dispatchAttempt <= state.maxCleanPrewriteRetries &&
184
- event.retryAt > event.at &&
185
- event.retryAt < state.deadlineAt;
186
- if (!canRetry) {
187
- return terminalize(state, "failed", event.at, event.safeErrorCode);
188
- }
189
- return {
190
- state: {
191
- ...state,
192
- phase: "queued",
193
- dispatchRetryAt: event.retryAt,
194
- },
195
- effects: [
196
- {
197
- type: "schedule_dispatch_retry",
198
- attempt: state.dispatchAttempt + 1,
199
- retryAt: event.retryAt,
200
- },
201
- ],
202
- };
203
- }
204
- case "dispatch_ambiguous": {
205
- if (!hasDispatchStarted(state))
206
- return unchanged(state);
207
- if (state.writeEvidence === "transport_written") {
208
- return event.at >= state.deadlineAt
209
- ? settleAtDeadline(state, event.at)
210
- : unchanged(state);
211
- }
212
- if (state.writeEvidence === "transport_uncertain" &&
213
- event.at < state.deadlineAt) {
214
- return unchanged(state);
215
- }
216
- const uncertain = {
217
- ...state,
218
- phase: "awaiting_terminal",
219
- writeEvidence: "transport_uncertain",
220
- uncertaintyCode: event.safeErrorCode,
221
- };
222
- if (event.at >= state.deadlineAt) {
223
- return settleAtDeadline(uncertain, event.at);
224
- }
225
- return {
226
- state: uncertain,
227
- effects: [
228
- { type: "record_progress", progress: "transport_uncertain" },
229
- ],
230
- };
231
- }
232
- case "transport_written":
233
- if (!hasDispatchStarted(state))
234
- return unchanged(state);
235
- if (arbitrateDeliveryDeadline(event.observedAt, state.deadlineAt) ===
236
- "deadline_wins") {
237
- return settleAtDeadline(state, event.observedAt);
238
- }
239
- return {
240
- state: {
241
- ...state,
242
- phase: state.phase === "awaiting_terminal"
243
- ? "awaiting_terminal"
244
- : "transport_written",
245
- writeEvidence: "transport_written",
246
- uncertaintyCode: null,
247
- },
248
- effects: [
249
- { type: "record_progress", progress: "transport_written" },
250
- ],
251
- };
252
- case "await_terminal":
253
- if (!hasDispatchStarted(state))
254
- return unchanged(state);
255
- if (event.at >= state.deadlineAt)
256
- return settleAtDeadline(state, event.at);
257
- if (state.phase !== "dispatching" &&
258
- state.phase !== "transport_written") {
259
- return unchanged(state);
260
- }
261
- return {
262
- state: { ...state, phase: "awaiting_terminal" },
263
- effects: [],
264
- };
265
- case "provider_held":
266
- if (!hasDispatchStarted(state))
267
- return unchanged(state);
268
- if (arbitrateDeliveryDeadline(event.observedAt, state.deadlineAt) ===
269
- "deadline_wins") {
270
- return settleAtDeadline(state, event.observedAt);
271
- }
272
- return {
273
- state: {
274
- ...state,
275
- phase: "awaiting_terminal",
276
- writeEvidence: "transport_written",
277
- uncertaintyCode: null,
278
- approvalProgress: "held",
279
- },
280
- effects: [{ type: "record_progress", progress: "held" }],
281
- };
282
- case "provider_released":
283
- return providerTerminal(state, event.observedAt, "delivered");
284
- case "provider_denied":
285
- return providerTerminal(state, event.observedAt, "failed", event.safeErrorCode);
286
- case "provider_expired":
287
- return providerTerminal(state, event.observedAt, "expired", event.safeErrorCode);
288
- case "provider_failed":
289
- return providerTerminal(state, event.observedAt, "failed", event.safeErrorCode);
290
- case "provider_unconfirmed":
291
- if (!hasDispatchStarted(state))
292
- return unchanged(state);
293
- if (event.observedAt >= state.deadlineAt) {
294
- return settleAtDeadline(state, event.observedAt);
295
- }
296
- return terminalize({
297
- ...state,
298
- writeEvidence: "transport_written",
299
- uncertaintyCode: null,
300
- }, "unconfirmed", event.observedAt, event.safeErrorCode);
301
- case "route_terminated":
302
- if (event.at >= state.deadlineAt) {
303
- return settleAtDeadline(state, event.at);
304
- }
305
- if (state.writeEvidence === "transport_written") {
306
- return terminalize(state, "unconfirmed", event.at, "DELIVERY_UNCONFIRMED");
307
- }
308
- if (state.writeEvidence === "transport_uncertain") {
309
- return terminalize(state, "ambiguous", event.at, state.uncertaintyCode ?? "DISPATCH_OUTCOME_AMBIGUOUS");
310
- }
311
- return terminalize(state, event.unwrittenOutcome, event.at, event.safeErrorCode);
312
- case "external_settlement":
313
- return terminalize(state, event.outcome, event.at, event.safeErrorCode);
314
- case "stall_due":
315
- if (event.at >= state.deadlineAt)
316
- return settleAtDeadline(state, event.at);
317
- if (state.stall === "emitted" || event.at < state.stallAt) {
318
- return unchanged(state);
319
- }
320
- return {
321
- state: { ...state, stall: "emitted" },
322
- effects: [
323
- {
324
- type: "publish_stall",
325
- pendingForMs: Math.max(0, event.at - state.enqueuedAt),
326
- },
327
- ],
328
- };
329
- case "deadline_due":
330
- return event.at < state.deadlineAt
331
- ? unchanged(state)
332
- : settleAtDeadline(state, event.at);
333
- case "cancel":
334
- if (event.at >= state.deadlineAt)
335
- return settleAtDeadline(state, event.at);
336
- return terminalize(state, "cancelled", event.at, event.safeErrorCode);
337
- case "shutdown":
338
- if (event.at >= state.deadlineAt)
339
- return settleAtDeadline(state, event.at);
340
- if (state.writeEvidence === "transport_written") {
341
- return terminalize(state, "unconfirmed", event.at, "DELIVERY_UNCONFIRMED");
342
- }
343
- if (state.writeEvidence === "transport_uncertain") {
344
- return terminalize(state, "ambiguous", event.at, state.uncertaintyCode ?? "DISPATCH_OUTCOME_AMBIGUOUS");
345
- }
346
- return terminalize(state, "cancelled", event.at, "GATEWAY_SHUTDOWN");
347
- default:
348
- return assertNever(event);
349
- }
350
- }
351
- function transitionDeliveryNativeReceipt(state, event) {
352
- if (state.phase !== "terminal")
353
- return unchanged(state);
354
- const transition = transitionNativeReceipt(state.nativeReceipt, event);
355
- if (transition.state === state.nativeReceipt)
356
- return unchanged(state);
357
- return {
358
- state: { ...state, nativeReceipt: transition.state },
359
- effects: transition.effects,
360
- };
361
- }
362
- /**
363
- * Child lifecycle for notifying a native sender about the already-decided
364
- * delivery outcome. It cannot alter the parent's terminal outcome.
365
- */
366
- export function transitionNativeReceipt(state, event) {
367
- switch (event.type) {
368
- case "native_receipt_confirmed":
369
- if (state.phase !== "sending")
370
- return unchangedNative(state);
371
- return {
372
- state: {
373
- phase: "confirmed",
374
- notification: state.notification,
375
- attempts: state.attempt,
376
- },
377
- effects: [],
378
- };
379
- case "native_receipt_clean_prewrite_failed":
380
- if (state.phase !== "sending")
381
- return unchangedNative(state);
382
- if (state.attempt <= state.maxCleanPrewriteRetries &&
383
- event.retryAt > event.at) {
384
- return {
385
- state: {
386
- phase: "retry_wait",
387
- notification: state.notification,
388
- attempt: state.attempt,
389
- retryAt: event.retryAt,
390
- maxCleanPrewriteRetries: state.maxCleanPrewriteRetries,
391
- },
392
- effects: [
393
- {
394
- type: "schedule_native_receipt_retry",
395
- attempt: state.attempt + 1,
396
- retryAt: event.retryAt,
397
- },
398
- ],
399
- };
400
- }
401
- return abandonNativeReceipt(state.notification, state.attempt, "clean_prewrite_retries_exhausted");
402
- case "native_receipt_retry_due":
403
- if (state.phase !== "retry_wait" ||
404
- event.at < state.retryAt) {
405
- return unchangedNative(state);
406
- }
407
- return {
408
- state: {
409
- phase: "sending",
410
- notification: state.notification,
411
- attempt: state.attempt + 1,
412
- maxCleanPrewriteRetries: state.maxCleanPrewriteRetries,
413
- },
414
- effects: [
415
- {
416
- type: "send_native_receipt",
417
- notification: state.notification,
418
- attempt: state.attempt + 1,
419
- },
420
- ],
421
- };
422
- case "native_receipt_ambiguous":
423
- if (state.phase !== "sending")
424
- return unchangedNative(state);
425
- return abandonNativeReceipt(state.notification, state.attempt, "ambiguous_write");
426
- default:
427
- return assertNever(event);
428
- }
429
- }
430
- function providerTerminal(state, observedAt, outcome, safeErrorCode) {
431
- if (!hasDispatchStarted(state))
432
- return unchanged(state);
433
- if (arbitrateDeliveryDeadline(observedAt, state.deadlineAt) === "deadline_wins") {
434
- return settleAtDeadline(state, observedAt);
435
- }
436
- return terminalize(state, outcome, observedAt, safeErrorCode);
437
- }
438
- function settleAtDeadline(state, observedAt) {
439
- const outcome = state.writeEvidence === "transport_written"
440
- ? "unconfirmed"
441
- : state.writeEvidence === "transport_uncertain"
442
- ? "ambiguous"
443
- : "expired";
444
- const safeErrorCode = outcome === "unconfirmed"
445
- ? "DELIVERY_UNCONFIRMED"
446
- : outcome === "ambiguous"
447
- ? (state.uncertaintyCode ?? "DISPATCH_OUTCOME_AMBIGUOUS")
448
- : "DELIVERY_DEADLINE_EXPIRED";
449
- return terminalize(state, outcome, state.deadlineAt, safeErrorCode);
450
- }
451
- function terminalize(state, outcome, terminalAt, safeErrorCode) {
452
- const notification = nativeNotification(outcome, safeErrorCode);
453
- const armed = armNativeReceipt(state.nativeReceipt, notification);
454
- const terminal = {
455
- ...state,
456
- phase: "terminal",
457
- outcome,
458
- terminalAt,
459
- dispatchRetryAt: null,
460
- nativeReceipt: armed.state,
461
- ...(safeErrorCode === undefined ? {} : { safeErrorCode }),
462
- };
463
- return {
464
- state: terminal,
465
- effects: [
466
- {
467
- type: "settle_delivery",
468
- outcome,
469
- terminalAt,
470
- ...(safeErrorCode === undefined ? {} : { safeErrorCode }),
471
- },
472
- ...armed.effects,
473
- ],
474
- };
475
- }
476
- function armNativeReceipt(state, notification) {
477
- if (state.phase !== "open")
478
- return unchangedNative(state);
479
- const sending = {
480
- phase: "sending",
481
- notification,
482
- attempt: 1,
483
- maxCleanPrewriteRetries: state.maxCleanPrewriteRetries,
484
- };
485
- return {
486
- state: sending,
487
- effects: [
488
- { type: "send_native_receipt", notification, attempt: 1 },
489
- ],
490
- };
491
- }
492
- function nativeNotification(outcome, safeErrorCode) {
493
- return outcome === "delivered"
494
- ? { status: "delivered" }
495
- : {
496
- status: "expired",
497
- diagnosticCode: safeErrorCode ??
498
- (outcome === "unconfirmed"
499
- ? "DELIVERY_UNCONFIRMED"
500
- : `DELIVERY_${outcome.toUpperCase()}`),
501
- };
502
- }
503
- function abandonNativeReceipt(notification, attempts, reason) {
504
- return {
505
- state: {
506
- phase: "write_unconfirmed",
507
- notification,
508
- attempts,
509
- reason,
510
- },
511
- effects: [{ type: "release_native_receipt", reason }],
512
- };
513
- }
514
- function hasDispatchStarted(state) {
515
- return state.dispatchAttempt > 0 && state.dispatchRetryAt === null;
516
- }
517
- function isNativeReceiptEvent(event) {
518
- return event.type.startsWith("native_receipt_");
519
- }
520
- function unchanged(state) {
521
- return { state, effects: [] };
522
- }
523
- function unchangedNative(state) {
524
- return { state, effects: [] };
525
- }
526
- function assertFiniteTime(value, label) {
527
- if (!Number.isFinite(value)) {
528
- throw new RangeError(`${label} must be a finite number.`);
529
- }
530
- }
531
- function nonnegativeInteger(value, label) {
532
- if (!Number.isSafeInteger(value) || value < 0) {
533
- throw new RangeError(`${label} must be a non-negative safe integer.`);
534
- }
535
- return value;
536
- }
537
- function assertNever(value) {
538
- throw new Error(`Unreachable delivery event: ${JSON.stringify(value)}`);
539
- }
540
- //# sourceMappingURL=delivery-machine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery-machine.js","sourceRoot":"","sources":["../../../src/gateway/delivery-machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ;IACR,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,UAAU;CACF,CAAC;AAIX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,WAAW;IACX,aAAa;IACb,SAAS;IACT,QAAQ;IACR,WAAW;IACX,WAAW;CACH,CAAC;AAoFX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,oBAAoB;IACpB,oBAAoB;IACpB,gCAAgC;IAChC,oBAAoB;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;IACjB,sBAAsB;IACtB,kBAAkB;IAClB,qBAAqB;IACrB,WAAW;IACX,cAAc;IACd,QAAQ;IACR,UAAU;IACV,0BAA0B;IAC1B,sCAAsC;IACtC,0BAA0B;IAC1B,0BAA0B;CAClB,CAAC;AAmGX,gFAAgF;AAChF,MAAM,UAAU,yBAAyB,CACvC,UAAkB,EAClB,UAAkB;IAElB,OAAO,UAAU,GAAG,UAAU;QAC5B,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,eAAe,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAiC;IAEjC,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACjD,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3C,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,UAAU,CAClB,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,uBAAuB,GAAG,kBAAkB,CAChD,KAAK,CAAC,uBAAuB,IAAI,CAAC,EAClC,yBAAyB,CAC1B,CAAC;IACF,MAAM,oCAAoC,GAAG,kBAAkB,CAC7D,KAAK,CAAC,oCAAoC,IAAI,CAAC,EAC/C,sCAAsC,CACvC,CAAC;IACF,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,uBAAuB;QACvB,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,MAAM;QACrB,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,MAAM;QACxB,KAAK,EAAE,SAAS;QAChB,aAAa,EACX,KAAK,CAAC,aAAa,KAAK,IAAI;YAC1B,CAAC,CAAC;gBACE,KAAK,EAAE,MAAM;gBACb,uBAAuB,EACrB,oCAAoC;aACvC;YACH,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAsB;IAEtB,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC;AACpC,CAAC;AAiBD,MAAM,UAAU,eAAe,CAC7B,KAAsB,EACtB,GAAW;IAEX,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,OAAO;YAC1B,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,kBAAkB,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK;SAC9C,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;QAChE,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;QAClC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;QACjD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,kBAAkB,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK;KAC9C,CAAC;AACJ,CAAC;AASD,wEAAwE;AACxE,MAAM,UAAU,sBAAsB,CACpC,KAAsB;IAEtB,MAAM,oBAAoB,GACxB,KAAK,CAAC,aAAa,CAAC,KAAK,KAAK,YAAY;QACxC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO;QAC7B,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,oBAAoB,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI;YAChC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;QAC/C,GAAG,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,KAAoB;IAEpB,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAExD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,oBAAoB;YACvB,IACE,KAAK,CAAC,KAAK,KAAK,QAAQ;gBACxB,KAAK,CAAC,eAAe,KAAK,CAAC;gBAC3B,KAAK,CAAC,eAAe,KAAK,IAAI;gBAC9B,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU,EAC5B,CAAC;gBACD,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;oBACjC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;oBACnC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,OAAO;gBACL,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,KAAK,EAAE,aAAa;oBACpB,eAAe,EAAE,CAAC;iBACnB;gBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;aAC5C,CAAC;QAEJ,KAAK,oBAAoB;YACvB,IACE,KAAK,CAAC,KAAK,KAAK,QAAQ;gBACxB,KAAK,CAAC,eAAe,KAAK,IAAI;gBAC9B,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,eAAe,EAChC,CAAC;gBACD,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;oBACjC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;oBACnC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;gBAAE,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO;gBACL,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,KAAK,EAAE,aAAa;oBACpB,eAAe,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC;oBAC1C,eAAe,EAAE,IAAI;iBACtB;gBACD,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE;iBACzD;aACF,CAAC;QAEJ,KAAK,gCAAgC,CAAC,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;gBAAE,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3E,MAAM,QAAQ,GACZ,KAAK,CAAC,aAAa,KAAK,MAAM;gBAC9B,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,uBAAuB;gBACtD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;YACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,WAAW,CAChB,KAAK,EACL,QAAQ,EACR,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,aAAa,CACpB,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,KAAK,EAAE,QAAQ;oBACf,eAAe,EAAE,KAAK,CAAC,OAAO;iBAC/B;gBACD,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,yBAAyB;wBAC/B,OAAO,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC;wBAClC,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,aAAa,KAAK,mBAAmB,EAAE,CAAC;gBAChD,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;oBACjC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;oBACnC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,IACE,KAAK,CAAC,aAAa,KAAK,qBAAqB;gBAC7C,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,EAC3B,CAAC;gBACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,MAAM,SAAS,GAA0B;gBACvC,GAAG,KAAK;gBACR,KAAK,EAAE,mBAAmB;gBAC1B,aAAa,EAAE,qBAAqB;gBACpC,eAAe,EAAE,KAAK,CAAC,aAAa;aACrC,CAAC;YACF,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACjC,OAAO,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;iBAC7D;aACF,CAAC;QACJ,CAAC;QAED,KAAK,mBAAmB;YACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YACxD,IACE,yBAAyB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC7D,eAAe,EACf,CAAC;gBACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,CAAC;YACD,OAAO;gBACL,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,KAAK,EACH,KAAK,CAAC,KAAK,KAAK,mBAAmB;wBACjC,CAAC,CAAC,mBAAmB;wBACrB,CAAC,CAAC,mBAAmB;oBACzB,aAAa,EAAE,mBAAmB;oBAClC,eAAe,EAAE,IAAI;iBACtB;gBACD,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;iBAC3D;aACF,CAAC;QAEJ,KAAK,gBAAgB;YACnB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;gBAAE,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3E,IACE,KAAK,CAAC,KAAK,KAAK,aAAa;gBAC7B,KAAK,CAAC,KAAK,KAAK,mBAAmB,EACnC,CAAC;gBACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBAC/C,OAAO,EAAE,EAAE;aACZ,CAAC;QAEJ,KAAK,eAAe;YAClB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YACxD,IACE,yBAAyB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC7D,eAAe,EACf,CAAC;gBACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,CAAC;YACD,OAAO;gBACL,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,KAAK,EAAE,mBAAmB;oBAC1B,aAAa,EAAE,mBAAmB;oBAClC,eAAe,EAAE,IAAI;oBACrB,gBAAgB,EAAE,MAAM;iBACzB;gBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;aACzD,CAAC;QAEJ,KAAK,mBAAmB;YACtB,OAAO,gBAAgB,CACrB,KAAK,EACL,KAAK,CAAC,UAAU,EAChB,WAAW,CACZ,CAAC;QAEJ,KAAK,iBAAiB;YACpB,OAAO,gBAAgB,CACrB,KAAK,EACL,KAAK,CAAC,UAAU,EAChB,QAAQ,EACR,KAAK,CAAC,aAAa,CACpB,CAAC;QAEJ,KAAK,kBAAkB;YACrB,OAAO,gBAAgB,CACrB,KAAK,EACL,KAAK,CAAC,UAAU,EAChB,SAAS,EACT,KAAK,CAAC,aAAa,CACpB,CAAC;QAEJ,KAAK,iBAAiB;YACpB,OAAO,gBAAgB,CACrB,KAAK,EACL,KAAK,CAAC,UAAU,EAChB,QAAQ,EACR,KAAK,CAAC,aAAa,CACpB,CAAC;QAEJ,KAAK,sBAAsB;YACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACzC,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,WAAW,CAChB;gBACE,GAAG,KAAK;gBACR,aAAa,EAAE,mBAAmB;gBAClC,eAAe,EAAE,IAAI;aACtB,EACD,aAAa,EACb,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,aAAa,CACpB,CAAC;QAEJ,KAAK,kBAAkB;YACrB,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACjC,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,KAAK,CAAC,aAAa,KAAK,mBAAmB,EAAE,CAAC;gBAChD,OAAO,WAAW,CAChB,KAAK,EACL,aAAa,EACb,KAAK,CAAC,EAAE,EACR,sBAAsB,CACvB,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,aAAa,KAAK,qBAAqB,EAAE,CAAC;gBAClD,OAAO,WAAW,CAChB,KAAK,EACL,WAAW,EACX,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,eAAe,IAAI,4BAA4B,CACtD,CAAC;YACJ,CAAC;YACD,OAAO,WAAW,CAChB,KAAK,EACL,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,aAAa,CACpB,CAAC;QAEJ,KAAK,qBAAqB;YACxB,OAAO,WAAW,CAChB,KAAK,EACL,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,aAAa,CACpB,CAAC;QAEJ,KAAK,WAAW;YACd,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;gBAAE,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3E,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC1D,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;gBACrC,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,eAAe;wBACrB,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;qBACvD;iBACF;aACF,CAAC;QAEJ,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU;gBAChC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;gBAClB,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAExC,KAAK,QAAQ;YACX,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;gBAAE,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO,WAAW,CAChB,KAAK,EACL,WAAW,EACX,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,aAAa,CACpB,CAAC;QAEJ,KAAK,UAAU;YACb,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU;gBAAE,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3E,IAAI,KAAK,CAAC,aAAa,KAAK,mBAAmB,EAAE,CAAC;gBAChD,OAAO,WAAW,CAChB,KAAK,EACL,aAAa,EACb,KAAK,CAAC,EAAE,EACR,sBAAsB,CACvB,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,aAAa,KAAK,qBAAqB,EAAE,CAAC;gBAClD,OAAO,WAAW,CAChB,KAAK,EACL,WAAW,EACX,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,eAAe,IAAI,4BAA4B,CACtD,CAAC;YACJ,CAAC;YACD,OAAO,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAEvE;YACE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAaD,SAAS,+BAA+B,CACtC,KAAsB,EACtB,KAAyB;IAEzB,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACvE,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IACtE,OAAO;QACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,KAAK,EAAE;QACpD,OAAO,EAAE,UAAU,CAAC,OAAO;KAC5B,CAAC;AACJ,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAA2B,EAC3B,KAAyB;IAEzB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,0BAA0B;YAC7B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7D,OAAO;gBACL,KAAK,EAAE;oBACL,KAAK,EAAE,WAAW;oBAClB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,QAAQ,EAAE,KAAK,CAAC,OAAO;iBACxB;gBACD,OAAO,EAAE,EAAE;aACZ,CAAC;QAEJ,KAAK,sCAAsC;YACzC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7D,IACE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,uBAAuB;gBAC9C,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,EACxB,CAAC;gBACD,OAAO;oBACL,KAAK,EAAE;wBACL,KAAK,EAAE,YAAY;wBACnB,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;qBACvD;oBACD,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,+BAA+B;4BACrC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC;4BAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,oBAAoB,CACzB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,OAAO,EACb,kCAAkC,CACnC,CAAC;QAEJ,KAAK,0BAA0B;YAC7B,IACE,KAAK,CAAC,KAAK,KAAK,YAAY;gBAC5B,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EACxB,CAAC;gBACD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,OAAO;gBACL,KAAK,EAAE;oBACL,KAAK,EAAE,SAAS;oBAChB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC;oBAC1B,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;iBACvD;gBACD,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,qBAAqB;wBAC3B,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC;qBAC3B;iBACF;aACF,CAAC;QAEJ,KAAK,0BAA0B;YAC7B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7D,OAAO,oBAAoB,CACzB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,OAAO,EACb,iBAAiB,CAClB,CAAC;QAEJ;YACE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,KAA4B,EAC5B,UAAkB,EAClB,OAA6E,EAC7E,aAAsB;IAEtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IACxD,IACE,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,eAAe,EAC3E,CAAC;QACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CACvB,KAA4B,EAC5B,UAAkB;IAElB,MAAM,OAAO,GACX,KAAK,CAAC,aAAa,KAAK,mBAAmB;QACzC,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,qBAAqB;YAC7C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,aAAa,GACjB,OAAO,KAAK,aAAa;QACvB,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,OAAO,KAAK,WAAW;YACvB,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,4BAA4B,CAAC;YACzD,CAAC,CAAC,2BAA2B,CAAC;IACpC,OAAO,WAAW,CAChB,KAAK,EACL,OAAO,EACP,KAAK,CAAC,UAAU,EAChB,aAAa,CACd,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,KAA4B,EAC5B,OAAgC,EAChC,UAAkB,EAClB,aAAsB;IAEtB,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAClE,MAAM,QAAQ,GAA4B;QACxC,GAAG,KAAK;QACR,KAAK,EAAE,UAAU;QACjB,OAAO;QACP,UAAU;QACV,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,KAAK;QAC1B,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;KAC1D,CAAC;IACF,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,iBAAiB;gBACvB,OAAO;gBACP,UAAU;gBACV,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;aAC1D;YACD,GAAG,KAAK,CAAC,OAAO;SACjB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAA2B,EAC3B,YAAuC;IAEvC,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAyB;QACpC,KAAK,EAAE,SAAS;QAChB,YAAY;QACZ,OAAO,EAAE,CAAC;QACV,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;KACvD,CAAC;IACF,OAAO;QACL,KAAK,EAAE,OAAO;QACd,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE;SAC1D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAgC,EAChC,aAAsB;IAEtB,OAAO,OAAO,KAAK,WAAW;QAC5B,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;QACzB,CAAC,CAAC;YACE,MAAM,EAAE,SAAS;YACjB,cAAc,EACZ,aAAa;gBACb,CAAC,OAAO,KAAK,aAAa;oBACxB,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,YAAY,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SAC3C,CAAC;AACR,CAAC;AAED,SAAS,oBAAoB,CAC3B,YAAuC,EACvC,QAAgB,EAChB,MAA8D;IAE9D,OAAO;QACL,KAAK,EAAE;YACL,KAAK,EAAE,mBAAmB;YAC1B,YAAY;YACZ,QAAQ;YACR,MAAM;SACP;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA4B;IACtD,OAAO,KAAK,CAAC,eAAe,GAAG,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAoB;IAEpB,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,KAAsB;IACvC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,KAA2B;IAClD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAa;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAa;IACtD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,uCAAuC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC"}