@stratusagent/gateway 0.11.6 → 0.11.7
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.
- package/README.md +3 -2
- package/dist/index.d.ts +163 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +848 -60
- package/dist/index.js.map +1 -1
- package/dist/lock.d.ts +8 -21
- package/dist/lock.d.ts.map +1 -1
- package/dist/lock.js +16 -99
- package/dist/lock.js.map +1 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@ One gateway owns:
|
|
|
10
10
|
- **Approval recovery** — a turn parked on a human is a durable checkpoint, not a lost turn. The runner records the parked call and the calls queued behind it *before* asking, and clears it before the tool runs, so the record covers exactly the window in which nothing has happened. On start the gateway sweeps for `pending_approval` sessions and finishes them: the parked call is re-asked (or refused, if its window ran out while the process was down), and the queue behind it drains, so every `tool_use` still ends with a `tool_result`. Earlier calls are never replayed — their results were already durable, and a re-asked request keeps the remainder of its original window rather than starting a new one. Calls made through a provider that drives its own inner loop are deliberately excluded: recovery re-enters the *kernel* loop and cannot rebuild that provider's, so those fail cleanly instead (see [04](../../docs/roadmap/04-agent-sdk-bridge.md)).
|
|
11
11
|
- **An activity watchdog** — progress-based, not wall-clock: any event from the session resets it, and an idle turn is aborted cleanly (the abort cancels the underlying provider request and kills tool subprocesses).
|
|
12
12
|
- **Single-flight per session** — a second message to a busy session queues behind the in-flight turn; different sessions run concurrently.
|
|
13
|
+
- **Idempotent dispatch** — a dispatch may carry an `idempotencyKey` (a channel passes the platform's message id), stored on the user message in the write that accepts it. A repeat never starts a second turn: it resolves with the live turn, or with the finished session, running nothing — which may have moved on since, so the repeated message's own outcome is read by its key: `turnReplyFor`, `turnFilesFor`, and `turnFailureFor` from `@stratusagent/core`. `onRepeat` says which repeat it was: `live` (another dispatch in this process is still waiting on the turn and posts its outcome, so a channel posts nothing) or `finished` (the outcome may never have been posted before a crash, so the caller posts it from the session). A failed turn's error is kept on its own user message (`Message.turnError`), so a later turn replacing the session's `lastError` does not lose it. A repeat naming another agent is refused like any dispatch, before anything is returned, and one arriving within an hour of a rollover is found in the archived transcript rather than run again. A keyed turn left `running` by a crash is continued from its transcript at the next start, once, instead of failed — except on a harness (`codex`, or a Claude subscription), whose own tool loop may already have acted on the prompt. Every other abandoned turn is failed as `ABANDONED_TURN_ERROR` says.
|
|
13
14
|
- **Live-refresh** — souls are re-read on each dispatch, so an edited persona or allowlist reaches existing conversations on their next turn. Sessions pin an agent *id* and never cross identities.
|
|
14
15
|
|
|
15
16
|
```ts
|
|
@@ -18,8 +19,8 @@ import { createGateway } from '@stratusagent/gateway';
|
|
|
18
19
|
const gateway = createGateway();
|
|
19
20
|
await gateway.start();
|
|
20
21
|
const session = await gateway.dispatch({
|
|
21
|
-
sessionId: 'slack:
|
|
22
|
-
agentId: '
|
|
22
|
+
sessionId: 'slack:blair:T1:C1:171234.5678', // stable → resumable
|
|
23
|
+
agentId: 'blair',
|
|
23
24
|
userMessage: 'morning!',
|
|
24
25
|
});
|
|
25
26
|
await gateway.stop(); // drains in-flight turns first
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventBus, type AgentDefinition, type AlwaysMeans, type ApprovalAnswer, type ApprovalOutcome, type ApprovalPolicy, type ImageAttachment, type JsonObject, type Session, type ToolRisk } from '@stratusagent/core';
|
|
1
|
+
import { EventBus, type AgentDefinition, type CredentialScope, type AlwaysMeans, type ApprovalAnswer, type ApprovalOutcome, type ApprovalPolicy, type ImageAttachment, type JsonObject, type Session, type ToolRisk } from '@stratusagent/core';
|
|
2
2
|
import { type ParsedSoul, type ScheduleRecord } from '@stratusagent/agents';
|
|
3
3
|
import { type SchedulerLimits } from './schedules.ts';
|
|
4
4
|
import { ShardedSessionStore } from './sessions.ts';
|
|
@@ -57,6 +57,48 @@ export interface GatewayChannelAdapter {
|
|
|
57
57
|
}): Promise<{
|
|
58
58
|
post(text: string): Promise<unknown>;
|
|
59
59
|
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Shows a person a form for a credential an agent asked for, mirroring
|
|
62
|
+
* `@stratusagent/channels`' `ChannelAdapter.requestCredential`. Optional:
|
|
63
|
+
* a channel without it cannot take credentials, and a request made in
|
|
64
|
+
* its conversations is refused instead of announced. Implementations
|
|
65
|
+
* MUST reject when the form reached nobody who can answer it, with a
|
|
66
|
+
* sentence for the agent.
|
|
67
|
+
*/
|
|
68
|
+
requestCredential?(request: {
|
|
69
|
+
sessionId: string;
|
|
70
|
+
agentId: string;
|
|
71
|
+
requestId: string;
|
|
72
|
+
name: string;
|
|
73
|
+
scope: CredentialScope;
|
|
74
|
+
reason?: string;
|
|
75
|
+
metadata: JsonObject;
|
|
76
|
+
}): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Issues a one-time link to a form for a credential request, for the
|
|
79
|
+
* agent to pass on: what a request falls back to when its conversation
|
|
80
|
+
* cannot show a form, and what an agent asking `via: 'link'` gets. The
|
|
81
|
+
* control API implements it. Optional: a host with no adapter carrying it
|
|
82
|
+
* refuses such requests with the machine-side command instead.
|
|
83
|
+
*
|
|
84
|
+
* The link is the whole credential: whoever opens it can answer the
|
|
85
|
+
* request once, through `provideCredential`, which stays add-only and
|
|
86
|
+
* grants only the agent that asked.
|
|
87
|
+
*/
|
|
88
|
+
requestCredentialLink?(request: {
|
|
89
|
+
sessionId: string;
|
|
90
|
+
agentId: string;
|
|
91
|
+
agentName: string;
|
|
92
|
+
requestId: string;
|
|
93
|
+
name: string;
|
|
94
|
+
scope: CredentialScope;
|
|
95
|
+
reason?: string;
|
|
96
|
+
}): Promise<{
|
|
97
|
+
url: string;
|
|
98
|
+
expiresAt: string;
|
|
99
|
+
/** The link is on an address only the machine itself can open (no `api.publicUrl`). */
|
|
100
|
+
localOnly?: boolean;
|
|
101
|
+
}>;
|
|
60
102
|
}
|
|
61
103
|
/**
|
|
62
104
|
* Where a session came from, as the gateway reports it. Structural for the
|
|
@@ -232,6 +274,8 @@ export interface GatewaySkill {
|
|
|
232
274
|
package?: string;
|
|
233
275
|
/** Where the SKILL.md lives. */
|
|
234
276
|
path?: string;
|
|
277
|
+
/** Ships with Stratus and is enabled for every agent, whatever its soul's `skills:` says. */
|
|
278
|
+
builtin?: boolean;
|
|
235
279
|
}
|
|
236
280
|
/** What a turn cut short by an announced restart records as its failure. */
|
|
237
281
|
export declare const RESTARTING_TURN_ERROR = "Run aborted: stratusd is restarting";
|
|
@@ -413,6 +457,16 @@ export interface GatewayOptions {
|
|
|
413
457
|
* up `restart()`, which then throws `RestartUnsupportedError`.
|
|
414
458
|
*/
|
|
415
459
|
onRestart?: (outcome: RestartOutcome) => void | Promise<void>;
|
|
460
|
+
/**
|
|
461
|
+
* Asked by {@link Gateway.checkRestart} before a restart is announced,
|
|
462
|
+
* while this daemon still serves: a throw refuses the restart with its
|
|
463
|
+
* message and leaves the daemon up. `stratus serve` checks here that the
|
|
464
|
+
* trusted config will load, because the replacement refuses to start on
|
|
465
|
+
* one that will not (#214) — and a restart that drained first would turn
|
|
466
|
+
* a half-saved file into an outage. A host that omits this restarts
|
|
467
|
+
* unchecked.
|
|
468
|
+
*/
|
|
469
|
+
restartPreflight?: () => Promise<void>;
|
|
416
470
|
/** The drain window a `restart()` uses when the request names none. Default 30s. */
|
|
417
471
|
restartDrainTimeoutMs?: number;
|
|
418
472
|
log?: (line: string) => void;
|
|
@@ -448,6 +502,52 @@ export interface DispatchInput {
|
|
|
448
502
|
* whatever arrives for the conversation it is watching.
|
|
449
503
|
*/
|
|
450
504
|
turnId?: string;
|
|
505
|
+
/**
|
|
506
|
+
* The caller's name for this message, unique within the session — for a
|
|
507
|
+
* channel, the platform's own message id. A repeat never starts a second
|
|
508
|
+
* turn: while the first is queued or running the repeat resolves with it;
|
|
509
|
+
* once it has finished the repeat resolves with the session as it stands,
|
|
510
|
+
* running nothing and emitting nothing — which may have moved on since,
|
|
511
|
+
* so the repeated message's own reply is `turnReplyFor(session, key)`,
|
|
512
|
+
* not `latestTurnReply`; and a turn whose process died
|
|
513
|
+
* mid-run is continued, once (`AgentRunner.continueTurn`), by whichever
|
|
514
|
+
* comes first — the repeat or the next start's sweep. Not on a harness
|
|
515
|
+
* (`runsOnHarness`), whose own tool loop may already have acted on the
|
|
516
|
+
* prompt: that turn is failed, as an unkeyed one is.
|
|
517
|
+
*
|
|
518
|
+
* Stored on the user message in the write that accepts it
|
|
519
|
+
* (`Message.idempotencyKey`), so it lasts as long as the transcript does.
|
|
520
|
+
* A repeat's other fields are not compared, and its `signal` does not
|
|
521
|
+
* reach a turn it attaches to; a failed turn stays failed, and retrying
|
|
522
|
+
* it takes a new key.
|
|
523
|
+
*
|
|
524
|
+
* Optional, and a host that omits it gives up crash-safe dedupe: a
|
|
525
|
+
* channel that delivers at least once can only dedupe in memory, which a
|
|
526
|
+
* restart erases, and a turn that was running when the process died is
|
|
527
|
+
* failed at the next start instead of finished.
|
|
528
|
+
*/
|
|
529
|
+
idempotencyKey?: string;
|
|
530
|
+
/**
|
|
531
|
+
* Called, before the dispatch resolves, when it repeats a turn rather
|
|
532
|
+
* than starting or continuing one, and says which kind of repeat:
|
|
533
|
+
*
|
|
534
|
+
* - `live` — it attached to a turn another dispatch with the same key
|
|
535
|
+
* started in this process and is still waiting on. That dispatch is
|
|
536
|
+
* alive to render the outcome, so a caller with a reply of its own in
|
|
537
|
+
* progress takes it down and posts nothing.
|
|
538
|
+
* - `finished` — the turn is over and nothing ran. Its outcome may never
|
|
539
|
+
* have been posted — the process can die between the turn's last write
|
|
540
|
+
* and the channel's — and nothing durable says whether it was, so the
|
|
541
|
+
* caller posts it from the session: `turnReplyFor`, `turnFilesFor`, and
|
|
542
|
+
* `turnFailureFor` from `@stratusagent/core`, since the session may
|
|
543
|
+
* have moved on and no event will carry any of it. Said twice beats
|
|
544
|
+
* never said.
|
|
545
|
+
*
|
|
546
|
+
* Not called for a repeat that continues a turn a crash left unfinished:
|
|
547
|
+
* that turn runs, its events are this caller's, and nobody else is
|
|
548
|
+
* rendering it.
|
|
549
|
+
*/
|
|
550
|
+
onRepeat?: (repeat: 'live' | 'finished') => void;
|
|
451
551
|
}
|
|
452
552
|
export interface ObserveInput {
|
|
453
553
|
sessionId: string;
|
|
@@ -527,6 +627,14 @@ export interface Gateway {
|
|
|
527
627
|
* close it.
|
|
528
628
|
*/
|
|
529
629
|
restart(request?: RestartRequest): RestartStatus;
|
|
630
|
+
/**
|
|
631
|
+
* Whether a `restart()` now would bring the daemon back, as the host
|
|
632
|
+
* judges it (`restartPreflight`): rejects with the host's refusal,
|
|
633
|
+
* resolves when there is none. Separate from `restart()`, which stays
|
|
634
|
+
* synchronous and idempotent, so a caller asks this first — `POST
|
|
635
|
+
* /restart` does.
|
|
636
|
+
*/
|
|
637
|
+
checkRestart(): Promise<void>;
|
|
530
638
|
/**
|
|
531
639
|
* The turn currently running on a session, if the caller that started it
|
|
532
640
|
* named one. Single-flight per session is what makes this exact: at most
|
|
@@ -615,6 +723,16 @@ export interface Gateway {
|
|
|
615
723
|
* lines would make them one.
|
|
616
724
|
*/
|
|
617
725
|
sessionRouting(sessionId: string): Promise<SessionRouting | undefined>;
|
|
726
|
+
/**
|
|
727
|
+
* Whether a session already accepted the message an idempotency key names,
|
|
728
|
+
* as addressed to it: a turn was started for it, finished, running or
|
|
729
|
+
* still queued, here or in the transcript a recent rollover archived
|
|
730
|
+
* (`settleRepeat` reads the same). A turn nobody asked for
|
|
731
|
+
* (`addressed: false`) does not count — that agent heard the message, it
|
|
732
|
+
* did not take it. Lets a channel route a redelivered message to the agent
|
|
733
|
+
* that accepted it rather than to whoever its routing rule picks now.
|
|
734
|
+
*/
|
|
735
|
+
holdsMessage(sessionId: string, idempotencyKey: string): Promise<boolean>;
|
|
618
736
|
/**
|
|
619
737
|
* Start a conversation over under the same id, leaving its transcript so
|
|
620
738
|
* far behind as an archived session.
|
|
@@ -648,7 +766,45 @@ export interface Gateway {
|
|
|
648
766
|
* it as "try again".
|
|
649
767
|
*/
|
|
650
768
|
resolveApproval(input: ResolveApprovalInput): boolean;
|
|
769
|
+
/**
|
|
770
|
+
* Answers a `credential.requested` with the value an approver entered:
|
|
771
|
+
* stores it add-only (`addNamedCredential`), under the agent or the fleet
|
|
772
|
+
* as the request asked, and adds the name to the requesting agent's soul.
|
|
773
|
+
* The value goes to the credential store and nowhere else — not onto the
|
|
774
|
+
* bus, the log, or the session.
|
|
775
|
+
*
|
|
776
|
+
* Who may answer is the channel's question, as it is for approvals.
|
|
777
|
+
*/
|
|
778
|
+
provideCredential(input: ProvideCredentialInput): Promise<ProvideCredentialResult>;
|
|
779
|
+
}
|
|
780
|
+
export interface ProvideCredentialInput {
|
|
781
|
+
requestId: string;
|
|
782
|
+
value: string;
|
|
783
|
+
/** Who provided it. Channel-native id (a Slack user). */
|
|
784
|
+
actor?: string;
|
|
651
785
|
}
|
|
786
|
+
/**
|
|
787
|
+
* `ok: false` carries a sentence for the person who entered the value: the
|
|
788
|
+
* request is gone, the name is already stored, or the value is empty.
|
|
789
|
+
* `granted: false` on success means the soul already listed the name.
|
|
790
|
+
*
|
|
791
|
+
* `retired: true` means the request is no longer pending and no answer
|
|
792
|
+
* can change that, so a channel should take its form down: the name was
|
|
793
|
+
* stored since (add-only means no retry can land), the soul went to another
|
|
794
|
+
* agent, or the request was already answered. Without it the refusal is
|
|
795
|
+
* one a corrected value can clear, like an empty one, and the form stays.
|
|
796
|
+
*/
|
|
797
|
+
export type ProvideCredentialResult = {
|
|
798
|
+
ok: true;
|
|
799
|
+
name: string;
|
|
800
|
+
scope: CredentialScope;
|
|
801
|
+
agentId: string;
|
|
802
|
+
granted: boolean;
|
|
803
|
+
} | {
|
|
804
|
+
ok: false;
|
|
805
|
+
message: string;
|
|
806
|
+
retired?: boolean;
|
|
807
|
+
};
|
|
652
808
|
/**
|
|
653
809
|
* Recorded on a turn the previous process was still running when it died.
|
|
654
810
|
*
|
|
@@ -659,12 +815,17 @@ export interface Gateway {
|
|
|
659
815
|
* its own guess at the wording.
|
|
660
816
|
*/
|
|
661
817
|
export declare const ABANDONED_TURN_ERROR = "stratusd stopped while this turn was still running; it was not resumed. Send the message again.";
|
|
818
|
+
/**
|
|
819
|
+
* The longest `DispatchInput.idempotencyKey` accepted. A platform message id
|
|
820
|
+
* is far shorter; the bound is so a key cannot be used to grow every row it
|
|
821
|
+
* is stored on.
|
|
822
|
+
*/
|
|
662
823
|
/**
|
|
663
824
|
* Recorded on a delegated sub-session that was parked on a human when the
|
|
664
825
|
* previous process died.
|
|
665
826
|
*
|
|
666
827
|
* Its parent — the turn whose `agent.delegate` call was awaiting the reply
|
|
667
|
-
* — was running, so the restart
|
|
828
|
+
* — was running, so the restart settles it as abandoned (above). Recovering
|
|
668
829
|
* the child anyway would re-ask a person to approve a call whose result no
|
|
669
830
|
* turn will ever read, and then run it: a command executed, tokens spent,
|
|
670
831
|
* and a reply delivered to nobody. Distinguishable from the parent's error
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAeL,QAAQ,EAiBR,KAAK,eAAe,EAGpB,KAAK,eAAe,EAEpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EAInB,KAAK,eAAe,EACpB,KAAK,UAAU,EAGf,KAAK,OAAO,EAEZ,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAkBL,KAAK,UAAU,EAEf,KAAK,cAAc,EAGpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,KAAK,SAAS,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EA4CL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAgB7B;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAClE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACtC,CAAC,CAAC;IACH;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,eAAe,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,UAAU,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,CAAC,OAAO,EAAE;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,eAAe,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,uFAAuF;QACvF,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;CACJ;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,QAAQ,EAAE,UAAU,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6GAA6G;IAC7G,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uGAAuG;IACvG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uHAAuH;IACvH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,iBAAiB,CAAC;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpD;;;;;;OAMG;IACH,YAAY,EAAE;QACZ,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;KACjE,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;IAC1D,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9F;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;IAC1D,IAAI,EAAE,QAAQ,CAAC;IACf,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC;CACtC;AAED,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,8FAA8F;IAC9F,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6FAA6F;IAC7F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;OASG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;;CAQjD;AAED,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrD,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACnC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACvE;;;;;OAKG;IACH,SAAS,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,SAAS,EAAE,iBAAiB,KAAK,cAAc,CAAC,CAAC;IAChF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC3D,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,kDAAkD;IAClD,MAAM,IAAI,eAAe,EAAE,CAAC;IAC5B;;;;;OAKG;IACH,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3C;;;;;;;;;;;;;;;OAeG;IACH,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACxC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC;IACjD;;;;;;OAMG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpD,4DAA4D;IAC5D,gBAAgB,IAAI,eAAe,EAAE,CAAC;IACtC;;;;;OAKG;IACH,SAAS,IAAI,cAAc,EAAE,CAAC;IAC9B;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C;;;;;;;;;OASG;IACH,KAAK,IAAI,WAAW,EAAE,CAAC;IACvB;;;;OAIG;IACH,MAAM,IAAI,YAAY,EAAE,CAAC;IACzB;;;;OAIG;IACH,OAAO,IAAI,mBAAmB,EAAE,CAAC;IACjC;;;;;OAKG;IACH,SAAS,IAAI,qBAAqB,EAAE,CAAC;IACrC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC,CAAC;IACjE;;;;;;;OAOG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACvE;;;;;;;;OAQG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvF;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC;IACtD;;;;;;;;OAQG;IACH,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACrF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAUtD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,oGACkE,CAAC;AAEpG;;;;GAIG;AAEH;;;;;;;;;;;GAWG;AACH;;;;;;;;;;;;;;GAcG;AACH;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,mBAAmB,CAAC;AAC9D,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAC1D,sEAAsE;AACtE,eAAO,MAAM,6BAA6B,iBAAiB,CAAC;AA6B5D,wGAAwG;AACxG,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD,eAAO,MAAM,8BAA8B,EAAE,SAAS,MAAM,EAyB3D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GAAI,UAAU,UAAU,GAAG,SAAS,KAAG,MAAM,GAAG,SAGgB,CAAC;AAExG,eAAO,MAAM,yBAAyB,gJACyG,CAAC;AAEhJ;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,UAAS,cAAmB,KAAG,OAw3G5D,CAAC"}
|