@every-app/sdk 0.3.0-rc.12 → 0.3.0-rc.14
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 +7 -8
- package/dist/cloudflare/worker.d.ts +18 -9
- package/dist/cloudflare/worker.d.ts.map +1 -1
- package/dist/cloudflare/worker.js +13 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/internal/appSettings.d.ts +136 -81
- package/dist/internal/appSettings.d.ts.map +1 -1
- package/dist/internal/appSettings.js +263 -144
- package/dist/internal/capabilities.d.ts +12 -0
- package/dist/internal/capabilities.d.ts.map +1 -1
- package/dist/internal/gatewaySettings.d.ts +4 -14
- package/dist/internal/gatewaySettings.d.ts.map +1 -1
- package/dist/internal/gatewaySettings.js +5 -17
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +1 -0
- package/dist/internal/mcpOAuth.d.ts +210 -0
- package/dist/internal/mcpOAuth.d.ts.map +1 -0
- package/dist/internal/mcpOAuth.js +735 -0
- package/dist/internal/oauthBuiltIns.d.ts +1 -1
- package/dist/internal/oauthBuiltIns.js +1 -1
- package/dist/internal/oauthSpec.d.ts +1 -1
- package/dist/internal/oauthSpec.d.ts.map +1 -1
- package/dist/internal/oauthSpec.js +51 -1
- package/dist/internal/providerRegistry.d.ts +4 -3
- package/dist/internal/providerRegistry.d.ts.map +1 -1
- package/dist/internal/providerRegistry.js +11 -3
- package/dist/internal/remoteMcp.d.ts +158 -41
- package/dist/internal/remoteMcp.d.ts.map +1 -1
- package/dist/internal/remoteMcp.js +254 -114
- package/dist/manifest.d.ts +49 -13
- package/dist/manifest.d.ts.map +1 -1
- package/dist/server/tools.d.ts +5 -2
- package/dist/server/tools.d.ts.map +1 -1
- package/dist/server/tools.js +5 -2
- package/package.json +1 -1
|
@@ -8,17 +8,20 @@
|
|
|
8
8
|
* (`providers`) and a capability (`capabilities`) are the Gateway's: their
|
|
9
9
|
* keys and clients live on the Gateway Worker, set once for every app
|
|
10
10
|
* with `everyapp secret set <NAME>`. The app's own secrets (`secrets`)
|
|
11
|
-
* live on its Worker, set from its directory.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
11
|
+
* live on its Worker, set from its directory. Everything the manifest
|
|
12
|
+
* lists at its top level is required: the app doesn't open until it is
|
|
13
|
+
* set. The rest is grouped into features (`features`): each a named set of
|
|
14
|
+
* secrets, settings and the Gateway capabilities and providers it needs,
|
|
15
|
+
* with numbered setup steps. A required feature's values are required; an
|
|
16
|
+
* optional feature is all or nothing, never blocking: off while none of
|
|
17
|
+
* its own values is set, incomplete while some are, ready once all are.
|
|
18
|
+
* Each declaration may say `why` it is needed, where it comes from
|
|
19
|
+
* (`docs`, an https URL) and, for an app's own value, `how` to get it;
|
|
20
|
+
* for providers and capabilities the registries here supply a default. An
|
|
21
|
+
* app's plain settings (`settings`: a host, a project id, a region) are
|
|
22
|
+
* held like its secrets, on its Worker, but are values rather than keys:
|
|
23
|
+
* each says what it takes (a URL, a number, one of a list) and may give a
|
|
24
|
+
* default.
|
|
22
25
|
*
|
|
23
26
|
* Everything in this module is pure and tenant-neutral: a manifest ships
|
|
24
27
|
* in a release, and what is set is asked of the caller (`isSet`), which
|
|
@@ -28,18 +31,7 @@
|
|
|
28
31
|
import { CATALOG, capabilitySettings, } from "./capabilities.js";
|
|
29
32
|
import { aiDefaultSetupHint, aiRequiredSettings, resolveAiDefault, } from "./aiDefault.js";
|
|
30
33
|
import { isInstallOwnedGatewaySetting, isSettableGatewaySetting, } from "./gatewaySettings.js";
|
|
31
|
-
import {
|
|
32
|
-
/** The need an entry declares; required unless it says otherwise. */
|
|
33
|
-
export function needOf(entry) {
|
|
34
|
-
if (!entry)
|
|
35
|
-
return { kind: "required" };
|
|
36
|
-
if (typeof entry.anyOf === "string" && entry.anyOf.trim()) {
|
|
37
|
-
return { kind: "anyOf", group: entry.anyOf.trim() };
|
|
38
|
-
}
|
|
39
|
-
if (entry.optional === true)
|
|
40
|
-
return { kind: "optional" };
|
|
41
|
-
return { kind: "required" };
|
|
42
|
-
}
|
|
34
|
+
import { hasRemoteMcpBlock, remoteMcpBlockProblem } from "./remoteMcp.js";
|
|
43
35
|
function needFields(entry) {
|
|
44
36
|
if (!entry || typeof entry !== "object")
|
|
45
37
|
return {};
|
|
@@ -47,11 +39,66 @@ function needFields(entry) {
|
|
|
47
39
|
return {
|
|
48
40
|
...(typeof record["why"] === "string" ? { why: record["why"] } : {}),
|
|
49
41
|
...(typeof record["docs"] === "string" ? { docs: record["docs"] } : {}),
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** `how`, `generate` and `file` as a stored entry has them. */
|
|
45
|
+
function ownValueFields(entry) {
|
|
46
|
+
if (!entry || typeof entry !== "object")
|
|
47
|
+
return {};
|
|
48
|
+
const record = entry;
|
|
49
|
+
return {
|
|
50
|
+
...(typeof record["how"] === "string" ? { how: record["how"] } : {}),
|
|
51
|
+
...(record["generate"] === true ? { generate: true } : {}),
|
|
52
|
+
...(record["file"] === true ? { file: true } : {}),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const stringList = (value) => Array.isArray(value)
|
|
56
|
+
? value.filter((each) => typeof each === "string")
|
|
57
|
+
: [];
|
|
58
|
+
/** The features the manifest declares, in order, each read whatever a stored row holds. */
|
|
59
|
+
export function featureEntries(manifest) {
|
|
60
|
+
const features = manifest.features;
|
|
61
|
+
if (!features || typeof features !== "object")
|
|
62
|
+
return [];
|
|
63
|
+
return Object.entries(features).flatMap(([id, raw]) => {
|
|
64
|
+
if (!raw || typeof raw !== "object")
|
|
65
|
+
return [];
|
|
66
|
+
const record = raw;
|
|
67
|
+
return [
|
|
68
|
+
{
|
|
69
|
+
id,
|
|
70
|
+
name: typeof record["name"] === "string" && record["name"].trim()
|
|
71
|
+
? record["name"]
|
|
72
|
+
: id,
|
|
73
|
+
required: record["required"] === true,
|
|
74
|
+
...(typeof record["why"] === "string" ? { why: record["why"] } : {}),
|
|
75
|
+
steps: stringList(record["steps"]),
|
|
76
|
+
capabilities: stringList(record["capabilities"]),
|
|
77
|
+
providers: stringList(record["providers"]),
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/** One feature's raw `secrets` or `settings` list, with the feature id. */
|
|
83
|
+
function featureLists(manifest, key) {
|
|
84
|
+
const features = manifest.features;
|
|
85
|
+
if (!features || typeof features !== "object")
|
|
86
|
+
return [];
|
|
87
|
+
return Object.entries(features).flatMap(([feature, raw]) => {
|
|
88
|
+
const list = raw && typeof raw === "object"
|
|
89
|
+
? raw[key]
|
|
90
|
+
: undefined;
|
|
91
|
+
return Array.isArray(list) ? [{ feature, list }] : [];
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** The need of a capability or provider: optional when an optional feature lists it, else required. */
|
|
95
|
+
function gatewayNeedOf(features, kind, id) {
|
|
96
|
+
const owner = features.find((feature) => feature[kind].includes(id));
|
|
97
|
+
if (!owner)
|
|
98
|
+
return { need: { kind: "required" } };
|
|
99
|
+
return {
|
|
100
|
+
need: { kind: owner.required ? "required" : "optional" },
|
|
101
|
+
feature: owner.id,
|
|
55
102
|
};
|
|
56
103
|
}
|
|
57
104
|
/** The providers the manifest lists, each as an entry whatever form it took. */
|
|
@@ -69,50 +116,68 @@ export function providerEntries(manifest) {
|
|
|
69
116
|
export function providerIds(manifest) {
|
|
70
117
|
return providerEntries(manifest).map((entry) => entry.id);
|
|
71
118
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
119
|
+
function secretEntryOf(entry, feature) {
|
|
120
|
+
const tag = feature === undefined ? {} : { feature };
|
|
121
|
+
if (typeof entry === "string")
|
|
122
|
+
return [{ name: entry, ...tag }];
|
|
123
|
+
if (entry && typeof entry === "object") {
|
|
124
|
+
const name = entry.name;
|
|
125
|
+
if (typeof name === "string") {
|
|
126
|
+
return [{ name, ...needFields(entry), ...ownValueFields(entry), ...tag }];
|
|
79
127
|
}
|
|
80
|
-
|
|
81
|
-
|
|
128
|
+
}
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The app's own secrets the manifest lists, each as an entry whatever form
|
|
133
|
+
* it took: the top-level ones, then each feature's (tagged with it).
|
|
134
|
+
*/
|
|
135
|
+
export function secretEntries(manifest) {
|
|
136
|
+
return [
|
|
137
|
+
...(manifest.secrets ?? []).flatMap((entry) => secretEntryOf(entry)),
|
|
138
|
+
...featureLists(manifest, "secrets").flatMap(({ feature, list }) => list.flatMap((entry) => secretEntryOf(entry, feature))),
|
|
139
|
+
];
|
|
82
140
|
}
|
|
83
141
|
/** The names of the app's own secrets, in order. */
|
|
84
142
|
export function secretNames(manifest) {
|
|
85
143
|
return secretEntries(manifest).map((entry) => entry.name);
|
|
86
144
|
}
|
|
87
|
-
|
|
145
|
+
function settingEntryOf(entry, feature) {
|
|
146
|
+
if (!entry || typeof entry !== "object")
|
|
147
|
+
return [];
|
|
148
|
+
const record = entry;
|
|
149
|
+
if (typeof record["name"] !== "string")
|
|
150
|
+
return [];
|
|
151
|
+
const type = record["type"];
|
|
152
|
+
const values = record["values"];
|
|
153
|
+
return [
|
|
154
|
+
{
|
|
155
|
+
name: record["name"],
|
|
156
|
+
...needFields(entry),
|
|
157
|
+
...(typeof record["how"] === "string" ? { how: record["how"] } : {}),
|
|
158
|
+
...(type === "url" ||
|
|
159
|
+
type === "number" ||
|
|
160
|
+
type === "boolean" ||
|
|
161
|
+
type === "text"
|
|
162
|
+
? { type }
|
|
163
|
+
: {}),
|
|
164
|
+
...(Array.isArray(values) &&
|
|
165
|
+
values.every((value) => typeof value === "string")
|
|
166
|
+
? { values: values }
|
|
167
|
+
: {}),
|
|
168
|
+
...(typeof record["default"] === "string"
|
|
169
|
+
? { default: record["default"] }
|
|
170
|
+
: {}),
|
|
171
|
+
...(feature === undefined ? {} : { feature }),
|
|
172
|
+
},
|
|
173
|
+
];
|
|
174
|
+
}
|
|
175
|
+
/** The app's plain settings the manifest lists, each as an entry: the top-level ones, then each feature's. */
|
|
88
176
|
export function settingEntries(manifest) {
|
|
89
|
-
return
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const record = entry;
|
|
94
|
-
const type = record["type"];
|
|
95
|
-
const values = record["values"];
|
|
96
|
-
return [
|
|
97
|
-
{
|
|
98
|
-
name: entry.name,
|
|
99
|
-
...needFields(entry),
|
|
100
|
-
...(type === "url" ||
|
|
101
|
-
type === "number" ||
|
|
102
|
-
type === "boolean" ||
|
|
103
|
-
type === "text"
|
|
104
|
-
? { type }
|
|
105
|
-
: {}),
|
|
106
|
-
...(Array.isArray(values) &&
|
|
107
|
-
values.every((value) => typeof value === "string")
|
|
108
|
-
? { values: values }
|
|
109
|
-
: {}),
|
|
110
|
-
...(typeof record["default"] === "string"
|
|
111
|
-
? { default: record["default"] }
|
|
112
|
-
: {}),
|
|
113
|
-
},
|
|
114
|
-
];
|
|
115
|
-
});
|
|
177
|
+
return [
|
|
178
|
+
...(manifest.settings ?? []).flatMap((entry) => settingEntryOf(entry)),
|
|
179
|
+
...featureLists(manifest, "settings").flatMap(({ feature, list }) => list.flatMap((entry) => settingEntryOf(entry, feature))),
|
|
180
|
+
];
|
|
116
181
|
}
|
|
117
182
|
/** The names of the app's plain settings, in order. */
|
|
118
183
|
export function settingNames(manifest) {
|
|
@@ -256,19 +321,59 @@ function providerHint(capability, names) {
|
|
|
256
321
|
];
|
|
257
322
|
return lines.length > 0 ? { hint: lines.join(" ") } : {};
|
|
258
323
|
}
|
|
259
|
-
function withNeed(setting, entry, defaults = {}) {
|
|
324
|
+
function withNeed(setting, entry, need, defaults = {}) {
|
|
260
325
|
const docs = entry?.docs ?? defaults.docs;
|
|
261
|
-
// The registry's guide for a Gateway setting; the manifest's for the app's own secret.
|
|
262
|
-
const setup = setting.holder === "gateway" ? defaults.setup : entry?.setup;
|
|
263
326
|
return {
|
|
264
327
|
...setting,
|
|
265
|
-
need:
|
|
328
|
+
need: need.need,
|
|
329
|
+
...(need.feature === undefined ? {} : { feature: need.feature }),
|
|
266
330
|
...(entry?.why ? { why: entry.why } : {}),
|
|
267
331
|
...(docs ? { docs } : {}),
|
|
268
|
-
...(setup ? { setup } : {}),
|
|
332
|
+
...(defaults.setup ? { setup: defaults.setup } : {}),
|
|
269
333
|
...(defaults.hint ? { hint: defaults.hint } : {}),
|
|
270
334
|
};
|
|
271
335
|
}
|
|
336
|
+
/**
|
|
337
|
+
* A stored manifest from before features (deployed before 0.3.0-rc.14) marks a
|
|
338
|
+
* value `optional: true`. The strict schema refuses that key now, but a stored
|
|
339
|
+
* row keeps it until the app is redeployed, so it still reads as optional:
|
|
340
|
+
* updating the Gateway never puts a working app into Needs setup.
|
|
341
|
+
*/
|
|
342
|
+
function storedOptional(need, raw) {
|
|
343
|
+
if (need.feature !== undefined || need.need.kind === "optional")
|
|
344
|
+
return need;
|
|
345
|
+
const optional = raw !== null &&
|
|
346
|
+
typeof raw === "object" &&
|
|
347
|
+
raw["optional"] === true;
|
|
348
|
+
return optional ? { need: { kind: "optional" } } : need;
|
|
349
|
+
}
|
|
350
|
+
/** The raw entry named `name` in a stored list (`secrets`, `settings`, `providers`). */
|
|
351
|
+
function rawEntry(list, name, key) {
|
|
352
|
+
if (!Array.isArray(list))
|
|
353
|
+
return undefined;
|
|
354
|
+
return list.find((entry) => entry !== null &&
|
|
355
|
+
typeof entry === "object" &&
|
|
356
|
+
entry[key] === name);
|
|
357
|
+
}
|
|
358
|
+
/** An app's own value's need: its feature's (required, or optional), or required at the top level. */
|
|
359
|
+
function ownNeedOf(features, feature) {
|
|
360
|
+
if (feature === undefined)
|
|
361
|
+
return { need: { kind: "required" } };
|
|
362
|
+
const owner = features.find((each) => each.id === feature);
|
|
363
|
+
return {
|
|
364
|
+
need: { kind: owner?.required ? "required" : "optional" },
|
|
365
|
+
feature,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
/** `how`, `generate` and `file` onto an app's own setting, when its entry says them. */
|
|
369
|
+
function withOwnValue(setting, entry) {
|
|
370
|
+
return {
|
|
371
|
+
...setting,
|
|
372
|
+
...(entry.how ? { how: entry.how } : {}),
|
|
373
|
+
...(entry.generate ? { generate: true } : {}),
|
|
374
|
+
...(entry.file ? { file: true } : {}),
|
|
375
|
+
};
|
|
376
|
+
}
|
|
272
377
|
/**
|
|
273
378
|
* Every setting the manifest declares, in manifest order: its AI
|
|
274
379
|
* providers, its capabilities, then the app's own secrets. A provider or capability the
|
|
@@ -279,6 +384,7 @@ function withNeed(setting, entry, defaults = {}) {
|
|
|
279
384
|
*/
|
|
280
385
|
export function appSettings(manifest, lookup = CATALOG, options = {}) {
|
|
281
386
|
const settings = [];
|
|
387
|
+
const features = featureEntries(manifest);
|
|
282
388
|
const chat = manifest.ai?.chat;
|
|
283
389
|
if (chat === true || (chat && typeof chat === "object")) {
|
|
284
390
|
// The default resolves on what is set: with nothing set, the first of
|
|
@@ -302,24 +408,25 @@ export function appSettings(manifest, lookup = CATALOG, options = {}) {
|
|
|
302
408
|
alternatives: resolution.candidates
|
|
303
409
|
.map((candidate) => settable(candidate.settings))
|
|
304
410
|
.filter((names) => names.length > 0),
|
|
305
|
-
}, chat === true ? undefined : chat, {
|
|
411
|
+
}, chat === true ? undefined : needFields(chat), storedOptional({ need: { kind: "required" } }, chat), {
|
|
306
412
|
...(provider?.mode === "ai" ? { docs: provider.docs } : {}),
|
|
307
413
|
setup: "setup/ai.md",
|
|
308
414
|
hint: aiDefaultSetupHint(resolution),
|
|
309
415
|
}));
|
|
310
416
|
}
|
|
311
|
-
// The default's settings: an optional pin
|
|
312
|
-
//
|
|
313
|
-
//
|
|
314
|
-
// serves the default.
|
|
417
|
+
// The default's settings: an optional pin (a provider an optional
|
|
418
|
+
// feature lists) that needs only those is the same row (one key, set
|
|
419
|
+
// once), so it isn't listed twice. A required pin stays: it needs that
|
|
420
|
+
// provider's key even while another provider serves the default.
|
|
315
421
|
const defaultNames = settings.find((setting) => setting.kind === "ai-default")?.names;
|
|
316
422
|
for (const entry of providerEntries(manifest)) {
|
|
317
423
|
const capability = lookup.get(entry.id);
|
|
318
424
|
if (capability?.mode !== "ai")
|
|
319
425
|
continue;
|
|
320
426
|
const names = providerNames(capability);
|
|
427
|
+
const need = storedOptional(gatewayNeedOf(features, "providers", entry.id), rawEntry(manifest.providers, entry.id, "id"));
|
|
321
428
|
if (defaultNames &&
|
|
322
|
-
|
|
429
|
+
need.need.kind === "optional" &&
|
|
323
430
|
names.length > 0 &&
|
|
324
431
|
names.every((name) => defaultNames.includes(name))) {
|
|
325
432
|
continue;
|
|
@@ -331,7 +438,7 @@ export function appSettings(manifest, lookup = CATALOG, options = {}) {
|
|
|
331
438
|
holder: "gateway",
|
|
332
439
|
names,
|
|
333
440
|
alsoReads: [],
|
|
334
|
-
}, entry, {
|
|
441
|
+
}, entry, need, {
|
|
335
442
|
docs: capability.docs,
|
|
336
443
|
setup: capability.setup,
|
|
337
444
|
...providerHint(capability, names),
|
|
@@ -350,54 +457,56 @@ export function appSettings(manifest, lookup = CATALOG, options = {}) {
|
|
|
350
457
|
holder: "gateway",
|
|
351
458
|
names,
|
|
352
459
|
alsoReads,
|
|
353
|
-
}, needFields(entry), {
|
|
460
|
+
}, needFields(entry), storedOptional(gatewayNeedOf(features, "capabilities", id), entry), {
|
|
354
461
|
docs: capabilityDocs(capability),
|
|
355
462
|
setup: capability.setup,
|
|
356
463
|
...providerHint(capability, names),
|
|
357
464
|
}));
|
|
358
465
|
}
|
|
359
|
-
const
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
}
|
|
466
|
+
const remoteProblem = hasRemoteMcpBlock(manifest)
|
|
467
|
+
? remoteMcpBlockProblem(manifest)
|
|
468
|
+
: null;
|
|
469
|
+
if (remoteProblem) {
|
|
470
|
+
const label = typeof manifest.name === "string" && manifest.name.trim()
|
|
471
|
+
? manifest.name.trim()
|
|
472
|
+
: "the MCP server";
|
|
473
|
+
settings.push({
|
|
474
|
+
kind: "remote-mcp",
|
|
475
|
+
id: "remote",
|
|
476
|
+
label: `${label} registration`,
|
|
477
|
+
holder: "gateway",
|
|
478
|
+
names: [],
|
|
479
|
+
alsoReads: [],
|
|
480
|
+
need: { kind: "required" },
|
|
481
|
+
why: `${label}'s registration can't be read: ${remoteProblem}.`,
|
|
482
|
+
setup: "setup/remote-mcp.md",
|
|
483
|
+
});
|
|
378
484
|
}
|
|
379
485
|
for (const entry of secretEntries(manifest)) {
|
|
380
|
-
settings.push(withNeed({
|
|
486
|
+
settings.push(withOwnValue(withNeed({
|
|
381
487
|
kind: "secret",
|
|
382
488
|
id: entry.name,
|
|
383
489
|
label: entry.name,
|
|
384
490
|
holder: "app",
|
|
385
491
|
names: [entry.name],
|
|
386
492
|
alsoReads: [],
|
|
387
|
-
}, entry));
|
|
493
|
+
}, entry, storedOptional(ownNeedOf(features, entry.feature), rawEntry(manifest.secrets, entry.name, "name"))), entry));
|
|
388
494
|
}
|
|
389
495
|
for (const entry of settingEntries(manifest)) {
|
|
390
|
-
|
|
391
|
-
const need = entry.default !== undefined ? { ...entry, optional: true } : entry;
|
|
496
|
+
const own = storedOptional(ownNeedOf(features, entry.feature), rawEntry(manifest.settings, entry.name, "name"));
|
|
392
497
|
settings.push({
|
|
393
|
-
...withNeed({
|
|
498
|
+
...withOwnValue(withNeed({
|
|
394
499
|
kind: "setting",
|
|
395
500
|
id: entry.name,
|
|
396
501
|
label: entry.name,
|
|
397
502
|
holder: "app",
|
|
398
503
|
names: [entry.name],
|
|
399
504
|
alsoReads: [],
|
|
400
|
-
},
|
|
505
|
+
}, entry,
|
|
506
|
+
// A setting with a default is never unset for long: the deploy writes it.
|
|
507
|
+
entry.default !== undefined
|
|
508
|
+
? { ...own, need: { kind: "optional" } }
|
|
509
|
+
: own), entry),
|
|
401
510
|
value: settingValueRule(entry),
|
|
402
511
|
});
|
|
403
512
|
}
|
|
@@ -405,6 +514,10 @@ export function appSettings(manifest, lookup = CATALOG, options = {}) {
|
|
|
405
514
|
}
|
|
406
515
|
/** Whether each name of `setting` is set: all → true, one unset → false, else unknown. */
|
|
407
516
|
function settingIsSet(setting, isSet) {
|
|
517
|
+
// An unreadable remote registration has nothing to set: it is fixed by
|
|
518
|
+
// adding the app again, never by a value.
|
|
519
|
+
if (setting.kind === "remote-mcp")
|
|
520
|
+
return false;
|
|
408
521
|
const groupIsSet = (names) => {
|
|
409
522
|
let unknown = false;
|
|
410
523
|
for (const name of names) {
|
|
@@ -430,12 +543,24 @@ function settingIsSet(setting, isSet) {
|
|
|
430
543
|
}
|
|
431
544
|
return unknown ? null : false;
|
|
432
545
|
}
|
|
546
|
+
/**
|
|
547
|
+
* A feature's state from its settings (see {@link FeatureState}). Whether
|
|
548
|
+
* it is started is read from its own values that have no default (a
|
|
549
|
+
* default is written by the deploy, so it says nothing), or, for a
|
|
550
|
+
* feature of Gateway settings alone, from those.
|
|
551
|
+
*/
|
|
552
|
+
function featureState(settings) {
|
|
553
|
+
if (settings.every((setting) => setting.set !== false))
|
|
554
|
+
return "ready";
|
|
555
|
+
const own = settings.filter((setting) => setting.holder === "app" && setting.value?.default === undefined);
|
|
556
|
+
const started = (own.length > 0 ? own : settings).some((setting) => setting.set === true);
|
|
557
|
+
return started ? "incomplete" : "off";
|
|
558
|
+
}
|
|
433
559
|
/**
|
|
434
560
|
* Every setting against what is set. `isSet` answers per holder and name:
|
|
435
561
|
* true, false, or null when it can't tell (the registry never recorded
|
|
436
|
-
* the app Worker's secret names), which never blocks.
|
|
437
|
-
*
|
|
438
|
-
* member blocks.
|
|
562
|
+
* the app Worker's secret names), which never blocks. A required setting
|
|
563
|
+
* that is unset blocks; an optional one (an optional feature's) never does.
|
|
439
564
|
*/
|
|
440
565
|
export function evaluateAppSettings(settings, isSet, options = {}) {
|
|
441
566
|
const evaluated = settings.map((setting) => {
|
|
@@ -446,51 +571,38 @@ export function evaluateAppSettings(settings, isSet, options = {}) {
|
|
|
446
571
|
blocking: false,
|
|
447
572
|
};
|
|
448
573
|
});
|
|
449
|
-
const groups = [];
|
|
450
|
-
for (const setting of evaluated) {
|
|
451
|
-
if (setting.need.kind !== "anyOf")
|
|
452
|
-
continue;
|
|
453
|
-
const group = setting.need.group;
|
|
454
|
-
let found = groups.find((each) => each.group === group);
|
|
455
|
-
if (!found) {
|
|
456
|
-
found = { group, members: [], met: false };
|
|
457
|
-
groups.push(found);
|
|
458
|
-
}
|
|
459
|
-
found.members.push(setting);
|
|
460
|
-
}
|
|
461
|
-
for (const group of groups) {
|
|
462
|
-
group.met = group.members.some((member) => member.set === true);
|
|
463
|
-
const unknown = group.members.some((member) => member.set === null);
|
|
464
|
-
if (!group.met && !unknown) {
|
|
465
|
-
for (const member of group.members)
|
|
466
|
-
member.blocking = true;
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
574
|
for (const setting of evaluated) {
|
|
470
575
|
if (setting.need.kind === "required" && setting.set === false) {
|
|
471
576
|
setting.blocking = true;
|
|
472
577
|
}
|
|
473
578
|
}
|
|
474
579
|
const unmet = evaluated.filter((setting) => setting.blocking);
|
|
475
|
-
|
|
580
|
+
const features = (options.features ?? []).map((feature) => {
|
|
581
|
+
const own = evaluated.filter((setting) => setting.feature === feature.id);
|
|
582
|
+
return { ...feature, settings: own, state: featureState(own) };
|
|
583
|
+
});
|
|
584
|
+
return { ready: unmet.length === 0, settings: evaluated, unmet, features };
|
|
476
585
|
}
|
|
477
586
|
/**
|
|
478
587
|
* What to run for an app that needs setup: `everyapp configure <app>`,
|
|
479
588
|
* which reads the app's manifest (from the registry, so it runs from
|
|
480
|
-
* anywhere), prompts for each unmet setting
|
|
481
|
-
*
|
|
589
|
+
* anywhere), prompts for each unmet setting, feature by feature, and sets
|
|
590
|
+
* them where they are held. Null when
|
|
482
591
|
* the app is ready. `cli` is how the operator runs everyapp (`pnpm
|
|
483
592
|
* everyapp` from a checkout). Scripts that set one name at a time use
|
|
484
593
|
* `everyapp secret set NAME [--app <id>]` instead.
|
|
485
594
|
*
|
|
486
595
|
* A provider app (`provider`: the gateway's own, with no Worker and no
|
|
487
596
|
* directory; `everyapp mcp on <id>`, an MCP app) has nothing to configure: its
|
|
488
|
-
* command is the `secret set` of its Gateway key
|
|
489
|
-
* unmet any-of group), as `mcp list` says it.
|
|
597
|
+
* command is the `secret set` of its Gateway key, as `mcp list` says it.
|
|
490
598
|
*/
|
|
491
599
|
export function setupCommand(report, { cli, appId, provider = false, }) {
|
|
492
600
|
if (report.unmet.length === 0)
|
|
493
601
|
return null;
|
|
602
|
+
if (report.unmet.some((setting) => setting.kind === "remote-mcp")) {
|
|
603
|
+
// Nothing to set: the registration predates provider credentials.
|
|
604
|
+
return { command: `${cli} mcp remove ${appId}` };
|
|
605
|
+
}
|
|
494
606
|
if (!provider)
|
|
495
607
|
return { command: `${cli} configure ${appId}` };
|
|
496
608
|
const names = [];
|
|
@@ -499,15 +611,8 @@ export function setupCommand(report, { cli, appId, provider = false, }) {
|
|
|
499
611
|
if (!names.includes(name))
|
|
500
612
|
names.push(name);
|
|
501
613
|
};
|
|
502
|
-
for (const setting of report.unmet)
|
|
503
|
-
|
|
504
|
-
add(setting);
|
|
505
|
-
}
|
|
506
|
-
for (const group of report.groups) {
|
|
507
|
-
const first = group.members.find((member) => member.blocking);
|
|
508
|
-
if (first)
|
|
509
|
-
add(first);
|
|
510
|
-
}
|
|
614
|
+
for (const setting of report.unmet)
|
|
615
|
+
add(setting);
|
|
511
616
|
return { command: `${cli} secret set ${names.join(" ")}` };
|
|
512
617
|
}
|
|
513
618
|
export function appSetupOf(report, options) {
|
|
@@ -516,10 +621,9 @@ export function appSetupOf(report, options) {
|
|
|
516
621
|
ready: report.ready,
|
|
517
622
|
settings: report.settings.map(strip),
|
|
518
623
|
unmet: report.unmet.map(strip),
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
members: group.members.map((member) => member.id),
|
|
624
|
+
features: report.features.map((feature) => ({
|
|
625
|
+
...feature,
|
|
626
|
+
settings: feature.settings.map((setting) => setting.id),
|
|
523
627
|
})),
|
|
524
628
|
command: options.withCommand === false ? null : setupCommand(report, options),
|
|
525
629
|
};
|
|
@@ -533,3 +637,18 @@ export function apiKeyCapabilityOf(id, lookup = CATALOG) {
|
|
|
533
637
|
const capability = lookup.get(id);
|
|
534
638
|
return capability?.mode === "api_key" ? capability : undefined;
|
|
535
639
|
}
|
|
640
|
+
/**
|
|
641
|
+
* A fresh value for a secret the manifest marks `generate: true`: 32
|
|
642
|
+
* bytes from the platform's cryptographic random source, base64url
|
|
643
|
+
* without padding (43 characters).
|
|
644
|
+
*/
|
|
645
|
+
export function generatedSecret() {
|
|
646
|
+
const bytes = crypto.getRandomValues(new Uint8Array(32));
|
|
647
|
+
let binary = "";
|
|
648
|
+
for (const byte of bytes)
|
|
649
|
+
binary += String.fromCharCode(byte);
|
|
650
|
+
return btoa(binary)
|
|
651
|
+
.replace(/\+/g, "-")
|
|
652
|
+
.replace(/\//g, "_")
|
|
653
|
+
.replace(/=+$/, "");
|
|
654
|
+
}
|
|
@@ -365,6 +365,18 @@ export interface OAuthFlow {
|
|
|
365
365
|
identityScopes: readonly string[];
|
|
366
366
|
/** Scopes a token may carry beyond what was asked without refusal (another spelling of an identity scope). Never a data scope. */
|
|
367
367
|
tolerated: readonly string[];
|
|
368
|
+
/**
|
|
369
|
+
* The resource the tokens are for (RFC 8707), an https URL: sent as
|
|
370
|
+
* `resource` on the authorize URL, the code exchange and every refresh.
|
|
371
|
+
* An MCP server's row carries its URL here (./mcpOAuth.ts).
|
|
372
|
+
*/
|
|
373
|
+
resource?: string;
|
|
374
|
+
/**
|
|
375
|
+
* The authorization server's issuer (RFC 8414), an https URL: when the
|
|
376
|
+
* callback carries `iss` it must equal this (RFC 9207, the mix-up
|
|
377
|
+
* defense).
|
|
378
|
+
*/
|
|
379
|
+
issuer?: string;
|
|
368
380
|
}
|
|
369
381
|
/**
|
|
370
382
|
* An OAuth provider the Gateway holds a client for and runs the flow for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/internal/capabilities.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/internal/capabilities.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyQsB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,YAAY,CAAC;AAErD,KAAK,cAAc,CAAC,IAAI,SAAS,UAAU,CAAC,MAAM,CAAC,IAAI;KACpD,CAAC,IAAI,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,GAC9D,CAAC,GACD,KAAK;CACV,CAAC,YAAY,CAAC,CAAC;AAEhB,kGAAkG;AAClG,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAE3D,6FAA6F;AAC7F,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAEhD,0EAA0E;AAC1E,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAE5D,oFAAoF;AACpF,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAErE,mGAAmG;AACnG,KAAK,cAAc,CAAC,CAAC,IACjB,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAC1D,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAEzE,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS;IAC7B,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC;IAC9C,gBAAgB,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC;CACvD,GACG,CAAC,GAAG,CAAC,GACL,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC3C,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,GACnB,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC,CAAA;CAAE,GAErB,cAAc,CAAC,CAAC,CAAC,GACjB,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,EAAE,CAAA;CAAE,GACzD,CAAC,GACD,KAAK,CAAC,GACd,KAAK,CAAC;AAEd,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAE/E,6HAA6H;AAC7H,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAU3D;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAwB5E;AAED,eAAO,MAAM,cAAc,EAAgC,YAAY,EAAE,CAAC;AAE1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACxC,gEAAgE;IAChE,GAAG,IAAI,SAAS,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,2FAA2F;AAC3F,eAAO,MAAM,OAAO,EAAE,gBAGrB,CAAC;AAEF,gHAAgH;AAChH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAElE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,gBAAgB,GAAG,oBAAoB,EACnD,QAAQ,EAAE,kBAAkB,GAC3B,aAAa,GAAG,IAAI,CAQtB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,iHAAiH;AACjH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,kBAAkB,GAC3B,aAAa,GAAG,IAAI,CA+BtB;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAqB9D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,MAAM,EAAE,CAKV;AAED,gDAAgD;AAChD,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,kBAAkB,GAAG,uBAAuB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EAChE,QAAQ,EAAE,GAAG,GACZ,MAAM,CAER;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,mBAAmB,EACvB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED,gDAAgD;AAChD,MAAM,MAAM,qBAAqB;AAC/B,6EAA6E;AAC3E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE;AAC9E,+FAA+F;GAC7F;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,qBAAqB,CAAC;IAClC,QAAQ,EAAE,GAAG,CAAC;CACf;AACH,iEAAiE;GAC/D;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,mBAAmB,CAAC;IACxB,UAAU,EAAE,wBAAwB,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,0EAA0E;AAC1E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,MAAM,GAAE,gBAA0B,GACjC,qBAAqB,GAAG,IAAI,CAiC9B;AAWD;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,qBAAqB,GAChC,MAAM,CAER;AAaD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAqBT;AA6BD,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C"}
|