@emseepea/server 0.23.0 → 0.24.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.
@@ -0,0 +1,11 @@
1
+ import type { ExternalMcpEventInvocation } from './events-external.js';
2
+ type Owner = (invocation: ExternalMcpEventInvocation) => Promise<boolean>;
3
+ /** Private owner registry, always keyed by the root application, never by a child plugin. */
4
+ export declare function registerAppShutdownOwner(root: object, owner: Owner): () => void;
5
+ /** Establish before stopping request admission. Repeated calls cannot extend the deadline. */
6
+ export declare function prepareAppShutdown(root: object, timeoutMs?: number): void;
7
+ export declare function remainingAppShutdown(root: object): number;
8
+ /** Start every owner once, concurrently; observe raw results even after the bounded join expires. */
9
+ export declare function startAppShutdown(root: object): Promise<boolean>;
10
+ export {};
11
+ //# sourceMappingURL=app-shutdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-shutdown.d.ts","sourceRoot":"","sources":["../src/app-shutdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,sBAAsB,CAAC;AACrE,KAAK,KAAK,GAAC,CAAC,UAAU,EAAC,0BAA0B,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAKrE,6FAA6F;AAC7F,wBAAgB,wBAAwB,CAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,GAAE,MAAI,IAAI,CAGzE;AACD,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,IAAI,EAAC,MAAM,EAAC,SAAS,SAAM,GAAE,IAAI,CAInE;AACD,wBAAgB,oBAAoB,CAAC,IAAI,EAAC,MAAM,GAAE,MAAM,CAAyF;AACjJ,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,IAAI,EAAC,MAAM,GAAE,OAAO,CAAC,OAAO,CAAC,CAU7D"}
@@ -0,0 +1,46 @@
1
+ import { performance } from 'node:perf_hooks';
2
+ const scopes = new WeakMap();
3
+ function scope(root) { let value = scopes.get(root); if (!value) {
4
+ value = { owners: new Set() };
5
+ scopes.set(root, value);
6
+ } return value; }
7
+ /** Private owner registry, always keyed by the root application, never by a child plugin. */
8
+ export function registerAppShutdownOwner(root, owner) {
9
+ const value = scope(root);
10
+ if (value.budget)
11
+ throw new Error('APP_SHUTDOWN_ALREADY_STARTED');
12
+ value.owners.add(owner);
13
+ return () => { if (!value.budget)
14
+ value.owners.delete(owner); };
15
+ }
16
+ /** Establish before stopping request admission. Repeated calls cannot extend the deadline. */
17
+ export function prepareAppShutdown(root, timeoutMs = 10000) {
18
+ const value = scope(root);
19
+ if (value.budget)
20
+ return;
21
+ if (!Number.isFinite(timeoutMs) || timeoutMs < 0)
22
+ throw new Error('INVALID_SHUTDOWN_BUDGET');
23
+ value.budget = { end: performance.now() + timeoutMs, controller: new AbortController() };
24
+ }
25
+ export function remainingAppShutdown(root) { prepareAppShutdown(root); return Math.max(0, scope(root).budget.end - performance.now()); }
26
+ /** Start every owner once, concurrently; observe raw results even after the bounded join expires. */
27
+ export function startAppShutdown(root) {
28
+ const value = scope(root);
29
+ prepareAppShutdown(root);
30
+ if (value.result)
31
+ return value.result;
32
+ const budget = value.budget, remaining = Math.max(0, budget.end - performance.now());
33
+ if (remaining === 0)
34
+ budget.controller.abort();
35
+ const invocation = Object.freeze({ signal: budget.controller.signal, deadlineMs: Date.now() + remaining });
36
+ const actual = Promise.all([...value.owners].map(owner => Promise.resolve().then(() => owner(invocation)).then(answer => answer === true, () => false)));
37
+ let timer;
38
+ const expired = new Promise(resolve => { timer = setTimeout(() => { budget.controller.abort(); resolve(false); }, remaining); });
39
+ value.result = Promise.race([actual.then(answers => { if (performance.now() >= budget.end || !answers.every(Boolean)) {
40
+ budget.controller.abort();
41
+ return false;
42
+ } return true; }), expired]).finally(() => { if (timer)
43
+ clearTimeout(timer); });
44
+ return value.result;
45
+ }
46
+ //# sourceMappingURL=app-shutdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-shutdown.js","sourceRoot":"","sources":["../src/app-shutdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { type McpEventsOptions, type McpEventRuntime, type McpEventSubscription } from "./events.js";
2
+ import { postCheckedWebhook } from "./events-webhook.js";
3
+ export interface ExternalMcpEventInvocation {
4
+ readonly signal: AbortSignal;
5
+ readonly deadlineMs: number;
6
+ }
7
+ export interface ExternalMcpEventIdentity {
8
+ readonly id: string;
9
+ readonly ownerKey: string;
10
+ readonly name: string;
11
+ readonly arguments: Readonly<Record<string, unknown>>;
12
+ readonly url: string;
13
+ }
14
+ export interface ExternalMcpEventObservation {
15
+ readonly id: string;
16
+ readonly ownerKey: string;
17
+ readonly revision: string | null;
18
+ readonly generation: string | null;
19
+ readonly active: boolean;
20
+ readonly observedAt: number;
21
+ readonly subscription: Omit<McpEventSubscription, "secret" | "previousSecret" | "previousSecretUntil" | "verifiedUntil"> | null;
22
+ }
23
+ export interface ExternalMcpEventActivation {
24
+ readonly id: string;
25
+ readonly revision: string;
26
+ readonly generation: string;
27
+ readonly observedAt: number;
28
+ readonly expiresAt: number;
29
+ }
30
+ /** Durable implementations must qualify CAS, database-time expiry and tombstone fencing. */
31
+ export interface ExternalMcpEventLifecycle {
32
+ observe(identity: ExternalMcpEventIdentity, invocation: ExternalMcpEventInvocation): Promise<ExternalMcpEventObservation>;
33
+ activate(request: ExternalMcpEventIdentity & Readonly<{
34
+ expectedRevision: string | null;
35
+ intent: "renew" | "new";
36
+ secret: string;
37
+ ttlMs: number;
38
+ }>, invocation: ExternalMcpEventInvocation): Promise<ExternalMcpEventActivation>;
39
+ /** Join adapter-owned raw work within the shared shutdown budget. */
40
+ settle?(invocation: ExternalMcpEventInvocation): Promise<boolean>;
41
+ /** Fence stale activation even when observe previously returned revision:null. */
42
+ revoke(identity: ExternalMcpEventIdentity, invocation: ExternalMcpEventInvocation): Promise<void>;
43
+ }
44
+ export interface ExternalMcpEventsOptions extends Omit<McpEventsOptions, "store"> {
45
+ readonly mode: "external";
46
+ readonly lifecycle: ExternalMcpEventLifecycle;
47
+ readonly store?: never;
48
+ }
49
+ export type ExternalMcpEventErrorCode = "INVALID_INPUT" | "SUBSCRIPTION_CHANGED" | "UNAVAILABLE" | "ABORTED" | "DEADLINE" | "OUTCOME_UNKNOWN" | "EXTERNAL_PUBLICATION_REQUIRES_CAPTURE";
50
+ export declare class ExternalMcpEventError extends Error {
51
+ readonly code: ExternalMcpEventErrorCode;
52
+ constructor(code: ExternalMcpEventErrorCode);
53
+ }
54
+ type ProtocolRuntime = Omit<McpEventRuntime, "drain">;
55
+ export interface ExternalMcpEventRuntime extends ProtocolRuntime {
56
+ forInvocation(invocation: ExternalMcpEventInvocation): ProtocolRuntime;
57
+ settle(invocation?: ExternalMcpEventInvocation): Promise<boolean>;
58
+ }
59
+ /** No SQL/provider implementation and no legacy queue are created by this runtime. */
60
+ export declare function createExternalMcpEventRuntime(options: ExternalMcpEventsOptions, webhookPost?: typeof postCheckedWebhook): ExternalMcpEventRuntime;
61
+ export {};
62
+ //# sourceMappingURL=events-external.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-external.d.ts","sourceRoot":"","sources":["../src/events-external.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,289 @@
1
+ import { performance } from "node:perf_hooks";
2
+ import { checkedListWire, McpEventInputError, mcpEventSubscriptionIdentity, normalizeMcpEventDefinitions, validateMcpEventSubscription, validateMcpEventUnsubscribe, verifyMcpEventCallback, } from "./events.js";
3
+ import { postCheckedWebhook } from "./events-webhook.js";
4
+ export class ExternalMcpEventError extends Error {
5
+ code;
6
+ constructor(code) {
7
+ super(code);
8
+ this.code = code;
9
+ this.name = "ExternalMcpEventError";
10
+ }
11
+ }
12
+ function fail(code) { throw new ExternalMcpEventError(code); }
13
+ function text(value) { return typeof value === "string" && !!value && Buffer.byteLength(value) <= 8192; }
14
+ function token(value) { return text(value) && Buffer.byteLength(value) <= 240; }
15
+ function epoch(value) { return Number.isSafeInteger(value) && Number(value) > 0 && Number(value) < 8640000000000000; }
16
+ function copy(value, depth = 0) {
17
+ if (depth > 32)
18
+ fail("UNAVAILABLE");
19
+ if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value))
20
+ return value;
21
+ if (!value || typeof value !== "object" || ![Object.prototype, Array.prototype].includes(Object.getPrototypeOf(value)))
22
+ fail("UNAVAILABLE");
23
+ const descriptors = Object.getOwnPropertyDescriptors(value);
24
+ const array = Array.isArray(value);
25
+ const result = array ? [] : Object.create(null);
26
+ if (array && Reflect.ownKeys(descriptors).length !== value.length + 1)
27
+ fail("UNAVAILABLE");
28
+ for (const key of Reflect.ownKeys(descriptors)) {
29
+ if (typeof key !== "string")
30
+ fail("UNAVAILABLE");
31
+ const field = descriptors[key];
32
+ if (!("value" in field) || !field.enumerable && !(array && key === "length"))
33
+ fail("UNAVAILABLE");
34
+ if (array && key === "length")
35
+ continue;
36
+ if (array && !/^(0|[1-9][0-9]*)$/.test(key))
37
+ fail("UNAVAILABLE");
38
+ result[key] = copy(field.value, depth + 1);
39
+ }
40
+ return Object.freeze(result);
41
+ }
42
+ function makeClock(invocation) {
43
+ const signal = invocation?.signal ?? new AbortController().signal;
44
+ const deadlineMs = invocation?.deadlineMs ?? Date.now() + 30000;
45
+ if (!Number.isFinite(deadlineMs))
46
+ fail("INVALID_INPUT");
47
+ if (signal.aborted)
48
+ fail("ABORTED");
49
+ const remaining = Math.min(30000, deadlineMs - Date.now());
50
+ if (remaining <= 0)
51
+ fail("DEADLINE");
52
+ return { signal, end: performance.now() + remaining, deadlineMs: Date.now() + remaining };
53
+ }
54
+ function admit(time) {
55
+ if (time.signal.aborted)
56
+ fail("ABORTED");
57
+ if (performance.now() >= time.end)
58
+ fail("DEADLINE");
59
+ }
60
+ function observed(value, identity) {
61
+ const snapshot = copy(value);
62
+ if (!snapshot || snapshot.id !== identity.id || snapshot.ownerKey !== identity.ownerKey ||
63
+ !(snapshot.revision === null || token(snapshot.revision)) || !(snapshot.generation === null || token(snapshot.generation)) ||
64
+ typeof snapshot.active !== "boolean" || !epoch(snapshot.observedAt))
65
+ fail("UNAVAILABLE");
66
+ if (snapshot.revision === null && (snapshot.generation !== null || snapshot.active || snapshot.subscription !== null))
67
+ fail("UNAVAILABLE");
68
+ const prior = snapshot.subscription;
69
+ if (prior !== null) {
70
+ if (!snapshot.revision || !snapshot.generation || !epoch(prior.expiresAt) || prior.id !== identity.id ||
71
+ prior.ownerKey !== identity.ownerKey || prior.name !== identity.name || prior.url !== identity.url ||
72
+ mcpEventSubscriptionIdentity(prior.ownerKey, prior.name, prior.arguments, prior.url) !== identity.id)
73
+ fail("UNAVAILABLE");
74
+ }
75
+ if (snapshot.active && (!prior || prior.expiresAt <= snapshot.observedAt))
76
+ fail("UNAVAILABLE");
77
+ if (!snapshot.active && prior && prior.expiresAt > snapshot.observedAt)
78
+ fail("UNAVAILABLE");
79
+ return snapshot;
80
+ }
81
+ /** No SQL/provider implementation and no legacy queue are created by this runtime. */
82
+ export function createExternalMcpEventRuntime(options, webhookPost = postCheckedWebhook) {
83
+ if (!options || options.mode !== "external" || "store" in options || !Array.isArray(options.definitions) ||
84
+ !options.definitions.length || options.definitions.length > 100 || typeof options.ownerKey !== "function" ||
85
+ typeof options.authorize !== "function" || typeof options.health !== "function" || !options.lifecycle ||
86
+ ["observe", "activate", "revoke"].some((key) => typeof options.lifecycle[key] !== "function")) {
87
+ throw new TypeError("External Events require an explicit lifecycle and cannot include a legacy store");
88
+ }
89
+ const callbackMs = options.callbackTimeoutMs ?? 5000;
90
+ if (!Number.isSafeInteger(callbackMs) || callbackMs < 1 || callbackMs > 10000)
91
+ throw new TypeError("events.callbackTimeoutMs must be between 1 and 10000");
92
+ const definitions = normalizeMcpEventDefinitions(options.definitions);
93
+ const pendingOperations = new Set();
94
+ let closing = false;
95
+ function bound(time) {
96
+ async function step(work, effect = false) {
97
+ if (closing)
98
+ fail("ABORTED");
99
+ admit(time);
100
+ let started = false;
101
+ let timer;
102
+ let stop;
103
+ const deadline = new AbortController();
104
+ const signal = AbortSignal.any([time.signal, deadline.signal]);
105
+ const stageEnd = Math.min(time.end, performance.now() + callbackMs);
106
+ const stageDeadlineMs = Date.now() + Math.max(0, stageEnd - performance.now());
107
+ try {
108
+ const operation = Promise.resolve().then(() => {
109
+ if (closing)
110
+ fail("ABORTED");
111
+ admit(time);
112
+ started = true;
113
+ if (performance.now() >= stageEnd)
114
+ fail("DEADLINE");
115
+ return work({ signal, deadlineMs: stageDeadlineMs });
116
+ });
117
+ pendingOperations.add(operation);
118
+ void operation.then(() => pendingOperations.delete(operation), () => pendingOperations.delete(operation));
119
+ const result = await Promise.race([
120
+ operation,
121
+ new Promise((_resolve, reject) => {
122
+ timer = setTimeout(() => { deadline.abort(); reject(new ExternalMcpEventError("DEADLINE")); }, Math.max(1, stageEnd - performance.now()));
123
+ stop = () => reject(new ExternalMcpEventError("ABORTED"));
124
+ time.signal.addEventListener("abort", stop, { once: true });
125
+ if (time.signal.aborted)
126
+ stop();
127
+ }),
128
+ ]);
129
+ if (performance.now() >= stageEnd) {
130
+ deadline.abort();
131
+ fail("DEADLINE");
132
+ }
133
+ admit(time);
134
+ return result;
135
+ }
136
+ catch (error) {
137
+ if (error instanceof ExternalMcpEventError && error.code === "SUBSCRIPTION_CHANGED")
138
+ throw error;
139
+ if (effect && started)
140
+ fail("OUTCOME_UNKNOWN");
141
+ if (error instanceof ExternalMcpEventError || error instanceof McpEventInputError)
142
+ throw error;
143
+ return fail("UNAVAILABLE");
144
+ }
145
+ finally {
146
+ if (timer)
147
+ clearTimeout(timer);
148
+ if (stop)
149
+ time.signal.removeEventListener("abort", stop);
150
+ }
151
+ }
152
+ const runtime = {
153
+ definitions,
154
+ async ownerKey(auth) {
155
+ const owner = await step(() => options.ownerKey(auth));
156
+ if (typeof owner !== "string" || !owner.trim() || Buffer.byteLength(owner) > 256)
157
+ fail("UNAVAILABLE");
158
+ return owner;
159
+ },
160
+ async list(ownerKey) {
161
+ const allowed = [];
162
+ for (const definition of definitions) {
163
+ if (await step(() => options.authorize({ ownerKey, name: definition.name, arguments: {}, phase: "list" })) !== true)
164
+ continue;
165
+ if (definition.listWire) {
166
+ const wire = await step(() => definition.listWire(ownerKey, definition.wire));
167
+ if (wire)
168
+ allowed.push(checkedListWire(definition, wire));
169
+ }
170
+ else
171
+ allowed.push(definition.wire);
172
+ }
173
+ return allowed;
174
+ },
175
+ validateSubscription(params) { return validateMcpEventSubscription(definitions, params); },
176
+ async subscribe(ownerKey, params) {
177
+ admit(time);
178
+ const valid = runtime.validateSubscription(params);
179
+ const suppliedTtl = params.ttlMs;
180
+ if (suppliedTtl !== undefined && suppliedTtl !== null && (!Number.isSafeInteger(suppliedTtl) || Number(suppliedTtl) <= 0))
181
+ throw new McpEventInputError(-32602, "invalid_ttl");
182
+ const ttlMs = Math.min(typeof suppliedTtl === "number" ? suppliedTtl : 86400000, 86400000);
183
+ const arguments_ = copy(valid.arguments);
184
+ const id = mcpEventSubscriptionIdentity(ownerKey, valid.definition.name, arguments_, valid.url);
185
+ const identity = Object.freeze({ id, ownerKey, name: valid.definition.name, arguments: arguments_, url: valid.url });
186
+ const snapshot = observed(await step((context) => options.lifecycle.observe(identity, context)), identity);
187
+ const phase = snapshot.active ? "refresh" : "subscribe";
188
+ const authorize = async () => {
189
+ if (await step(() => options.authorize({ ownerKey, name: identity.name, arguments: arguments_, phase })) !== true)
190
+ throw new McpEventInputError(-32602, "capability_not_found");
191
+ };
192
+ await authorize(); // No outbound challenge precedes current business authority.
193
+ await step(() => verifyMcpEventCallback(valid.url, valid.secret, id, Date.now(), webhookPost));
194
+ await authorize();
195
+ const rawActivation = await step((context) => options.lifecycle.activate(Object.freeze({
196
+ ...identity, expectedRevision: snapshot.revision, intent: snapshot.active ? "renew" : "new", secret: valid.secret, ttlMs,
197
+ }), context), true);
198
+ let activation;
199
+ try {
200
+ activation = copy(rawActivation);
201
+ }
202
+ catch {
203
+ fail("OUTCOME_UNKNOWN");
204
+ }
205
+ if (!activation || activation.id !== id || !token(activation.revision) || !token(activation.generation) ||
206
+ !epoch(activation.observedAt) || activation.observedAt < snapshot.observedAt || !epoch(activation.expiresAt) || activation.expiresAt <= activation.observedAt ||
207
+ activation.expiresAt - activation.observedAt > ttlMs || activation.revision === snapshot.revision ||
208
+ (snapshot.active ? activation.generation !== snapshot.generation : activation.generation === snapshot.generation))
209
+ fail("OUTCOME_UNKNOWN");
210
+ return { id, refreshBefore: new Date(activation.expiresAt).toISOString(), cursor: null, truncated: false };
211
+ },
212
+ async unsubscribe(ownerKey, params) {
213
+ admit(time);
214
+ const valid = validateMcpEventUnsubscribe(definitions, params);
215
+ const arguments_ = copy(valid.arguments);
216
+ const id = mcpEventSubscriptionIdentity(ownerKey, valid.definition.name, arguments_, valid.url);
217
+ await step((context) => options.lifecycle.revoke(Object.freeze({ id, ownerKey, name: valid.definition.name, arguments: arguments_, url: valid.url }), context), true);
218
+ },
219
+ async publish() { fail("EXTERNAL_PUBLICATION_REQUIRES_CAPTURE"); },
220
+ async ready() { try {
221
+ return await step(() => options.health()) === true;
222
+ }
223
+ catch {
224
+ return false;
225
+ } },
226
+ };
227
+ return Object.freeze(runtime);
228
+ }
229
+ // Unbound calls are for bounded readiness/diagnostics. RPC uses one shared invocation clock.
230
+ const unbound = {
231
+ definitions,
232
+ ownerKey: (auth) => bound(makeClock()).ownerKey(auth),
233
+ list: (owner) => bound(makeClock()).list(owner),
234
+ validateSubscription: (params) => validateMcpEventSubscription(definitions, params),
235
+ subscribe: (owner, params) => bound(makeClock()).subscribe(owner, params),
236
+ unsubscribe: (owner, params) => bound(makeClock()).unsubscribe(owner, params),
237
+ publish: async () => fail("EXTERNAL_PUBLICATION_REQUIRES_CAPTURE"),
238
+ ready: () => bound(makeClock()).ready(),
239
+ };
240
+ return Object.freeze({ ...unbound,
241
+ forInvocation(invocation) {
242
+ if (closing)
243
+ fail("ABORTED");
244
+ return bound(makeClock(invocation));
245
+ },
246
+ async settle(input) {
247
+ closing = true;
248
+ const controller = new AbortController();
249
+ if (input && (!input.signal || !Number.isFinite(input.deadlineMs)))
250
+ return false;
251
+ const duration = Math.max(0, Math.min(10000, input ? input.deadlineMs - Date.now() : 10000));
252
+ const end = performance.now() + duration;
253
+ const invocation = { signal: controller.signal, deadlineMs: input ? Math.min(input.deadlineMs, Date.now() + duration) : Date.now() + duration };
254
+ const abort = () => controller.abort();
255
+ input?.signal.addEventListener('abort', abort, { once: true });
256
+ if (input?.signal.aborted || duration === 0)
257
+ controller.abort();
258
+ let timer, stopJoin;
259
+ try {
260
+ const settled = await Promise.race([
261
+ Promise.all([
262
+ Promise.allSettled(pendingOperations),
263
+ Promise.resolve().then(() => options.lifecycle.settle ? options.lifecycle.settle(invocation) : true),
264
+ ]).then(([, adapterSettled]) => adapterSettled === true, () => false),
265
+ new Promise((resolve) => {
266
+ stopJoin = () => resolve(false);
267
+ controller.signal.addEventListener('abort', stopJoin, { once: true });
268
+ timer = setTimeout(() => { controller.abort(); resolve(false); }, duration);
269
+ if (controller.signal.aborted)
270
+ stopJoin();
271
+ }),
272
+ ]);
273
+ if (!settled || controller.signal.aborted || performance.now() >= end) {
274
+ controller.abort();
275
+ return false;
276
+ }
277
+ return settled;
278
+ }
279
+ finally {
280
+ if (timer)
281
+ clearTimeout(timer);
282
+ input?.signal.removeEventListener('abort', abort);
283
+ if (stopJoin)
284
+ controller.signal.removeEventListener('abort', stopJoin);
285
+ }
286
+ },
287
+ });
288
+ }
289
+ //# sourceMappingURL=events-external.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-external.js","sourceRoot":"","sources":["../src/events-external.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,eAAe,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,4BAA4B,EAC/F,4BAA4B,EAAE,2BAA2B,EAAE,sBAAsB,GAElF,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAkCzD,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACzB;IAArB,YAAqB,IAA+B;QAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QAA/C,SAAI,GAAJ,IAAI,CAA2B;QAAiB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IAAC,CAAC;CAC5G;AAOD,SAAS,IAAI,CAAC,IAA+B,IAAW,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChG,SAAS,IAAI,CAAC,KAAc,IAAqB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AACnI,SAAS,KAAK,CAAC,KAAc,IAAqB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAC1G,SAAS,KAAK,CAAC,KAAc,IAAqB,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAChJ,SAAS,IAAI,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IACrC,IAAI,KAAK,GAAG,EAAE;QAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnJ,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5I,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAwC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrF,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3F,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAE,CAAC;QAChC,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,QAAQ,CAAC;YAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClG,IAAI,KAAK,IAAI,GAAG,KAAK,QAAQ;YAAE,SAAS;QACxC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAkC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,SAAS,CAAC,UAAuC;IACxD,MAAM,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;IAClE,MAAM,UAAU,GAAG,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,IAAI,SAAS,IAAI,CAAC;QAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;AAC5F,CAAC;AACD,SAAS,KAAK,CAAC,IAAW;IACxB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG;QAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACtD,CAAC;AACD,SAAS,QAAQ,CAAC,KAAc,EAAE,QAAkC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAgC,CAAC;IAC5D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;QACrF,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1H,OAAO,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3F,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC;QAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3I,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;IACpC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;YACnG,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;YAClG,4BAA4B,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,CAAC,IAAI,EAAC,KAAK,CAAC,SAAS,EAAC,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,EAAE;YAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3H,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;QAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/F,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,UAAU;QAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5F,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD,sFAAsF;AACtF,MAAM,UAAU,6BAA6B,CAAC,OAAiC,EAC7E,cAAyC,kBAAkB;IAC3D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QACtG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;QACzG,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS;QACrG,CAAC,SAAS,EAAC,UAAU,EAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAsC,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;QACjI,MAAM,IAAI,SAAS,CAAC,iFAAiF,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,KAAK;QAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC3J,MAAM,WAAW,GAAG,4BAA4B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,SAAS,KAAK,CAAC,IAAW;QACxB,KAAK,UAAU,IAAI,CAAI,IAAgE,EAAE,MAAM,GAAG,KAAK;YACrG,IAAI,OAAO;gBAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,KAAgD,CAAC;YACrD,IAAI,IAA8B,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAC,WAAW,CAAC,GAAG,EAAE,GAAC,UAAU,CAAC,CAAC;YACjE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,GAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC5C,IAAI,OAAO;wBAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;oBAAC,OAAO,GAAG,IAAI,CAAC;oBAC5B,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,QAAQ;wBAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oBACpD,OAAO,IAAI,CAAC,EAAC,MAAM,EAAC,UAAU,EAAC,eAAe,EAAC,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;gBACH,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACjC,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBAChC,SAAS;oBACT,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAC,MAAM,EAAE,EAAE;wBACrC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,GAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBACtI,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;wBAC1D,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAC,IAAI,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC;wBACvD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;4BAAE,IAAI,EAAE,CAAC;oBAClC,CAAC,CAAC;iBACH,CAAC,CAAC;gBACH,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;oBAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAAC,CAAC;gBAC1E,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,OAAO,MAAM,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,qBAAqB,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB;oBAAE,MAAM,KAAK,CAAC;gBACjG,IAAI,MAAM,IAAI,OAAO;oBAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC/C,IAAI,KAAK,YAAY,qBAAqB,IAAI,KAAK,YAAY,kBAAkB;oBAAE,MAAM,KAAK,CAAC;gBAC/F,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7B,CAAC;oBAAS,CAAC;gBACT,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,IAAI;oBAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAC,IAAI,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAoB;YAC/B,WAAW;YACX,KAAK,CAAC,QAAQ,CAAC,IAAc;gBAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG;oBAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtG,OAAO,KAAK,CAAC;YACf,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,QAAQ;gBACjB,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;oBACrC,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,UAAU,CAAC,IAAI,EAAC,SAAS,EAAC,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC,CAAC,CAAC,KAAK,IAAI;wBAAE,SAAS;oBACtH,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;wBACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,QAAS,CAAC,QAAQ,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC9E,IAAI,IAAI;4BAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAC,IAAI,CAAC,CAAC,CAAC;oBAC3D,CAAC;;wBAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,oBAAoB,CAAC,MAAM,IAAI,OAAO,4BAA4B,CAAC,WAAW,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzF,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAC,MAAM;gBAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;gBACZ,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAI,MAAiC,CAAC,KAAK,CAAC;gBAC7D,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAAE,MAAM,IAAI,kBAAkB,CAAC,CAAC,KAAK,EAAC,aAAa,CAAC,CAAC;gBAC9K,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAC,QAAQ,CAAC,CAAC;gBAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAqC,CAAC;gBAC7E,MAAM,EAAE,GAAG,4BAA4B,CAAC,QAAQ,EAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAC,UAAU,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7F,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAC,SAAS,EAAC,UAAU,EAAC,GAAG,EAAC,KAAK,CAAC,GAAG,EAAC,CAAC,CAAC;gBAC5G,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAC,OAAO,CAAC,CAAC,EAAC,QAAQ,CAAC,CAAC;gBACzG,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;gBACxD,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;oBAC3B,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,CAAC,IAAI,EAAC,SAAS,EAAC,UAAU,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,IAAI;wBAAE,MAAM,IAAI,kBAAkB,CAAC,CAAC,KAAK,EAAC,sBAAsB,CAAC,CAAC;gBAC1K,CAAC,CAAC;gBACF,MAAM,SAAS,EAAE,CAAC,CAAC,6DAA6D;gBAChF,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAC,KAAK,CAAC,MAAM,EAAC,EAAE,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,WAAW,CAAC,CAAC,CAAC;gBAC3F,MAAM,SAAS,EAAE,CAAC;gBAClB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;oBACrF,GAAG,QAAQ,EAAC,gBAAgB,EAAC,QAAQ,CAAC,QAAQ,EAAC,MAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,EAAC,KAAK;iBAClH,CAAC,EAAC,OAAO,CAAC,EAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,UAAsC,CAAC;gBAC3C,IAAI,CAAC;oBAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAA+B,CAAC;gBAAC,CAAC;gBACvE,MAAM,CAAC;oBAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAAC,CAAC;gBAClC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;oBACrG,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,UAAU;oBAC7J,UAAU,CAAC,SAAS,GAAC,UAAU,CAAC,UAAU,GAAG,KAAK,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;oBAC/F,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC;oBAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC7I,OAAO,EAAC,EAAE,EAAC,aAAa,EAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,CAAC;YACrG,CAAC;YACD,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAC,MAAM;gBAC/B,KAAK,CAAC,IAAI,CAAC,CAAC;gBACZ,MAAM,KAAK,GAAG,2BAA2B,CAAC,WAAW,EAAC,MAAM,CAAC,CAAC;gBAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAqC,CAAC;gBAC7E,MAAM,EAAE,GAAG,4BAA4B,CAAC,QAAQ,EAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAC,UAAU,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7F,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAC,SAAS,EAAC,UAAU,EAAC,GAAG,EAAC,KAAK,CAAC,GAAG,EAAC,CAAC,EAAC,OAAO,CAAC,EAAC,IAAI,CAAC,CAAC;YAC7J,CAAC;YACD,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC;YAClE,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;gBAAC,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,KAAK,CAAC;YAAC,CAAC,CAAC,CAAC;SACtG,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,6FAA6F;IAC7F,MAAM,OAAO,GAAoB;QAC/B,WAAW;QACX,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/C,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,4BAA4B,CAAC,WAAW,EAAC,MAAM,CAAC;QAClF,SAAS,EAAE,CAAC,KAAK,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAC,MAAM,CAAC;QACvE,WAAW,EAAE,CAAC,KAAK,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,EAAC,MAAM,CAAC;QAC3E,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,uCAAuC,CAAC;QAClE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE;KACxC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,OAAO;QAC9B,aAAa,CAAC,UAAqC;YACjD,IAAI,OAAO;gBAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,KAAiC;YAC5C,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,IAAG,KAAK,IAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAAC,OAAO,KAAK,CAAC;YAC3E,MAAM,QAAQ,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,KAAK,CAAA,CAAC,CAAA,KAAK,CAAC,UAAU,GAAC,IAAI,CAAC,GAAG,EAAE,CAAA,CAAC,CAAA,KAAK,CAAC,CAAC,CAAC;YACnF,MAAM,GAAG,GAAC,WAAW,CAAC,GAAG,EAAE,GAAC,QAAQ,CAAC;YACrC,MAAM,UAAU,GAAG,EAAC,MAAM,EAAC,UAAU,CAAC,MAAM,EAAC,UAAU,EAAC,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAC,IAAI,CAAC,GAAG,EAAE,GAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,GAAG,EAAE,GAAC,QAAQ,EAAC,CAAC;YAClI,MAAM,KAAK,GAAC,GAAE,EAAE,CAAA,UAAU,CAAC,KAAK,EAAE,CAAC;YAAA,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAC,KAAK,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC;YAC7F,IAAG,KAAK,EAAE,MAAM,CAAC,OAAO,IAAE,QAAQ,KAAG,CAAC;gBAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC1D,IAAI,KAAgD,EAAC,QAA6B,CAAC;YACnF,IAAI,CAAC;gBACH,MAAM,OAAO,GAAC,MAAM,OAAO,CAAC,IAAI,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC;wBACV,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC;wBACrC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBACrG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAE,EAAE,CAAC,cAAc,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;oBACpE,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,EAAE;wBAC7B,QAAQ,GAAC,GAAE,EAAE,CAAA,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAA,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC;wBAC7F,KAAK,GAAC,UAAU,CAAC,GAAE,EAAE,GAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA,CAAC,EAAC,QAAQ,CAAC,CAAC;wBACpE,IAAG,UAAU,CAAC,MAAM,CAAC,OAAO;4BAAC,QAAQ,EAAE,CAAC;oBAC1C,CAAC,CAAC;iBACH,CAAC,CAAC;gBACH,IAAG,CAAC,OAAO,IAAE,UAAU,CAAC,MAAM,CAAC,OAAO,IAAE,WAAW,CAAC,GAAG,EAAE,IAAE,GAAG,EAAC,CAAC;oBAAA,UAAU,CAAC,KAAK,EAAE,CAAC;oBAAA,OAAO,KAAK,CAAC;gBAAA,CAAC;gBACjG,OAAO,OAAO,CAAC;YACjB,CAAC;oBAAS,CAAC;gBAAC,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAAA,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAC,KAAK,CAAC,CAAC;gBAAA,IAAG,QAAQ;oBAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;QACpK,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
package/dist/events.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { AuthInfo } from "@modelcontextprotocol/server";
2
- import { type ZodType } from "zod";
2
+ import { z, type ZodType } from "zod";
3
3
  import { postCheckedWebhook } from "./events-webhook.js";
4
4
  export interface McpEventDefinition {
5
5
  readonly name: string;
@@ -97,4 +97,33 @@ export declare class McpEventInputError extends Error {
97
97
  constructor(code: number, reason: string);
98
98
  }
99
99
  export declare function createMcpEventRuntime(options: McpEventsOptions, webhookPost?: typeof postCheckedWebhook): McpEventRuntime;
100
+ export declare function checkedListWire(definition: NormalizedEventDefinition, wire: NormalizedEventDefinition["wire"]): NormalizedEventDefinition["wire"];
101
+ export declare function normalizeMcpEventDefinitions(inputs: readonly McpEventDefinition[]): readonly Readonly<{
102
+ wire: Readonly<{
103
+ name: string;
104
+ description: string;
105
+ delivery: readonly ["webhook"];
106
+ inputSchema: z.core.ZodStandardJSONSchemaPayload<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
107
+ payloadSchema: z.core.ZodStandardJSONSchemaPayload<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
108
+ }>;
109
+ name: string;
110
+ description: string;
111
+ inputSchema: ZodType;
112
+ payloadSchema: ZodType;
113
+ listWire?: (ownerKey: string, wire: NormalizedEventDefinition["wire"]) => NormalizedEventDefinition["wire"] | undefined | Promise<NormalizedEventDefinition["wire"] | undefined>;
114
+ matches: (arguments_: Readonly<Record<string, unknown>>, data: Readonly<Record<string, unknown>>, ownerKey: string) => boolean;
115
+ }>[];
116
+ export declare function mcpEventSubscriptionIdentity(ownerKey: string, name: string, args: Readonly<Record<string, unknown>>, url: string): string;
117
+ export declare function validateMcpEventUnsubscribe(definitions: readonly NormalizedEventDefinition[], params: unknown): {
118
+ definition: NormalizedEventDefinition;
119
+ arguments: Record<string, unknown>;
120
+ url: string;
121
+ };
122
+ export declare function validateMcpEventSubscription(definitions: readonly NormalizedEventDefinition[], params: unknown): {
123
+ definition: NormalizedEventDefinition;
124
+ arguments: Record<string, unknown>;
125
+ url: string;
126
+ secret: string;
127
+ };
128
+ export declare function verifyMcpEventCallback(url: string, secret: string, id: string, now: number, webhookPost: typeof postCheckedWebhook): Promise<void>;
100
129
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}