@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.
Files changed (37) hide show
  1. package/README.md +7 -8
  2. package/dist/cloudflare/worker.d.ts +18 -9
  3. package/dist/cloudflare/worker.d.ts.map +1 -1
  4. package/dist/cloudflare/worker.js +13 -3
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/internal/appSettings.d.ts +136 -81
  8. package/dist/internal/appSettings.d.ts.map +1 -1
  9. package/dist/internal/appSettings.js +263 -144
  10. package/dist/internal/capabilities.d.ts +12 -0
  11. package/dist/internal/capabilities.d.ts.map +1 -1
  12. package/dist/internal/gatewaySettings.d.ts +4 -14
  13. package/dist/internal/gatewaySettings.d.ts.map +1 -1
  14. package/dist/internal/gatewaySettings.js +5 -17
  15. package/dist/internal/index.d.ts +1 -0
  16. package/dist/internal/index.d.ts.map +1 -1
  17. package/dist/internal/index.js +1 -0
  18. package/dist/internal/mcpOAuth.d.ts +210 -0
  19. package/dist/internal/mcpOAuth.d.ts.map +1 -0
  20. package/dist/internal/mcpOAuth.js +735 -0
  21. package/dist/internal/oauthBuiltIns.d.ts +1 -1
  22. package/dist/internal/oauthBuiltIns.js +1 -1
  23. package/dist/internal/oauthSpec.d.ts +1 -1
  24. package/dist/internal/oauthSpec.d.ts.map +1 -1
  25. package/dist/internal/oauthSpec.js +51 -1
  26. package/dist/internal/providerRegistry.d.ts +4 -3
  27. package/dist/internal/providerRegistry.d.ts.map +1 -1
  28. package/dist/internal/providerRegistry.js +11 -3
  29. package/dist/internal/remoteMcp.d.ts +158 -41
  30. package/dist/internal/remoteMcp.d.ts.map +1 -1
  31. package/dist/internal/remoteMcp.js +254 -114
  32. package/dist/manifest.d.ts +49 -13
  33. package/dist/manifest.d.ts.map +1 -1
  34. package/dist/server/tools.d.ts +5 -2
  35. package/dist/server/tools.d.ts.map +1 -1
  36. package/dist/server/tools.js +5 -2
  37. 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. Each declaration carries a
12
- * need: required (the default; the app doesn't open until it is set),
13
- * optional (the app opens, and the feature says what is missing where it
14
- * is used), or a member of a named any-of group (the app opens once any
15
- * member is set; only for an app that picks among the set members at run
16
- * time). Each may say `why` it is needed and where it comes from
17
- * (`docs`, an https URL); for providers and capabilities the registries
18
- * here supply a default. An app's plain settings (`settings`: a host, a
19
- * project id, a region) are held like its secrets, on its Worker, but are
20
- * values rather than keys: each says what it takes (a URL, a number, one
21
- * of a list) and may give a default.
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 { remoteMcpAuthLabel, remoteMcpOf, remoteMcpSecretOf, } from "./remoteMcp.js";
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
- ...(typeof record["optional"] === "boolean"
51
- ? { optional: record["optional"] }
52
- : {}),
53
- ...(typeof record["setup"] === "string" ? { setup: record["setup"] } : {}),
54
- ...(typeof record["anyOf"] === "string" ? { anyOf: record["anyOf"] } : {}),
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
- /** The app's own secrets the manifest lists, each as an entry whatever form it took. */
73
- export function secretEntries(manifest) {
74
- return (manifest.secrets ?? []).flatMap((entry) => {
75
- if (typeof entry === "string")
76
- return [{ name: entry }];
77
- if (entry && typeof entry === "object" && typeof entry.name === "string") {
78
- return [{ name: entry.name, ...needFields(entry) }];
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
- return [];
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
- /** The app's plain settings the manifest lists, each as an entry. */
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 (manifest.settings ?? []).flatMap((entry) => {
90
- if (!entry || typeof entry !== "object" || typeof entry.name !== "string") {
91
- return [];
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: needOf(entry),
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 that needs only those is the
312
- // same row (one key, set once), so it isn't listed twice. A required
313
- // pin stays: it needs that provider's key even while another provider
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
- needOf(entry).kind === "optional" &&
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 remote = remoteMcpOf(manifest);
360
- if (remote) {
361
- const secret = remoteMcpSecretOf(remote.auth);
362
- if (secret) {
363
- const label = typeof manifest.name === "string" && manifest.name.trim()
364
- ? manifest.name.trim()
365
- : "the MCP server";
366
- settings.push({
367
- kind: "remote-mcp",
368
- id: secret,
369
- label: `${label} credential`,
370
- holder: "gateway",
371
- names: [secret],
372
- alsoReads: [],
373
- need: { kind: "required" },
374
- why: `What ${label} expects: ${remoteMcpAuthLabel(remote.auth)}. The Gateway sends it to ${remote.url} and nowhere else.`,
375
- setup: "setup/remote-mcp.md",
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
- // A setting with a default is never unset for long: the deploy writes it.
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
- }, need),
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. An any-of group is
437
- * met once any member is set; while none is and none is unknown, every
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
- return { ready: unmet.length === 0, settings: evaluated, groups, unmet };
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 (one member of an any-of group
481
- * is enough: it asks which) and sets them where they are held. Null when
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 (the first member of an
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
- if (setting.need.kind === "required")
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
- groups: report.groups.map((group) => ({
520
- group: group.group,
521
- met: group.met,
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"}