@intentic/extension-manifest 1.337.0 → 1.338.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.
package/README.md CHANGED
@@ -16,6 +16,10 @@ flowchart LR
16
16
  - The runtime parse is lenient and the authoring schema strict, since an unknown key in an author's file is a typo.
17
17
  The generated schema is committed twice, here and in the site's `public/` behind `MANIFEST_SCHEMA_URL`, and the
18
18
  editor's `manifest-schema.test.ts` fails when either copy is stale.
19
+ - A cli card whose credential is a delegated OAuth sign-in declares `refreshToken` (the secret field it lives in and
20
+ the fields it is bound to), so its own CLI and listener can store a new or rotated token through the daemon's
21
+ write-only oauth-token route instead of printing it for someone to paste, and `probe.oauth`, which trades the token
22
+ for an access token before the card's connection test (Microsoft's identity platform only, today).
19
23
  - `sandboxRouteAllowed` is the permission rule: an entry is `"<METHOD> <path-glob>"`, and each `*` stands alone
20
24
  between slashes and matches one whole path segment, never a `.` or `..` the URL would resolve away. A malformed entry
21
25
  (`**`, a `*` inside a segment, an unknown method, a relative path) fails the manifest parse rather than the first
@@ -35,6 +39,12 @@ flowchart LR
35
39
  - `HOST_PUBLISHED_SPECIFIERS` lists the only bare imports a published bundle may use: the modules the shell's import
36
40
  map provides. `bundleProblem` finds a bundle's imports with a small tokenizer rather than a line regex, since a
37
41
  minified bundle puts them all on one line and a string or comment may spell the word.
42
+ - The same reading names what each static import takes (`bundleImportedNames`: `RepoRail` of
43
+ `import { RepoRail as e }`, `default` of a default import). `missingImports` compares that with what a host's modules
44
+ export, which the caller hands in, and `bundleProblem` says it in words when given them. The editor's loader runs it
45
+ before linking a bundle, over only the imports at the bundle's head (`leading`), where a bundler puts them all. That
46
+ takes a fraction of a millisecond where reading a 700 KB bundle whole took about 20 (2026-10-15), and an import it
47
+ does not reach fails to link as it would have.
38
48
 
39
49
  ## Key files
40
50
 
package/dist/bundle.d.ts CHANGED
@@ -1,4 +1,15 @@
1
1
  export declare const HOST_PUBLISHED_SPECIFIERS: readonly ["vue", "@intentic/extension-api", "@intentic/extension-ui", "@tanstack/vue-query"];
2
2
  export declare const bundleSpecifiers: (source: string) => string[];
3
- export declare const bundleProblem: (source: string) => string | undefined;
3
+ export type HostExports = Readonly<Partial<Record<string, readonly string[]>>>;
4
+ export interface MissingImport {
5
+ readonly specifier: string;
6
+ readonly names: readonly string[];
7
+ }
8
+ export declare const bundleImportedNames: (source: string, options?: {
9
+ readonly leading?: boolean;
10
+ }) => Map<string, string[]>;
11
+ export declare const missingImports: (source: string, host: HostExports, options?: {
12
+ readonly leading?: boolean;
13
+ }) => MissingImport[];
14
+ export declare const bundleProblem: (source: string, host?: HostExports) => string | undefined;
4
15
  //# sourceMappingURL=bundle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,yBAAyB,YAAI,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,qBAAqB,CAAU,CAAC;AA6RtI,eAAO,MAAM,gBAAgB,WAAY,MAAM,KAAG,MAAM,EAIvD,CAAC;AAGF,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAAM,GAAG,SAYvD,CAAC"}
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,yBAAyB,YAAI,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,qBAAqB,CAAU,CAAC;AAmWtI,eAAO,MAAM,gBAAgB,WAAY,MAAM,KAAG,MAAM,EAAwC,CAAC;AAIjG,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAG/E,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAMD,eAAO,MAAM,mBAAmB,WAAY,MAAM,YAAW;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CACP,CAAC;AAIjH,eAAO,MAAM,cAAc,WAAY,MAAM,QAAQ,WAAW,YAAW;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAAQ,aAAa,EASxH,CAAC;AAIP,eAAO,MAAM,aAAa,WAAY,MAAM,SAAS,WAAW,KAAG,MAAM,GAAG,SAiB3E,CAAC"}
package/dist/bundle.js CHANGED
@@ -146,28 +146,71 @@ const tokenize = (source, emit) => {
146
146
  const lexer = { at: source.startsWith("#!") ? lineEnd(source, 0) : 0, last: undefined, braces: 0, holes: [] };
147
147
  for (skipTrivia(source, lexer); lexer.at < source.length; skipTrivia(source, lexer)) {
148
148
  lexer.last = readToken(source, lexer);
149
- emit(lexer.last);
149
+ if (!emit(lexer.last)) {
150
+ return;
151
+ }
150
152
  }
151
153
  };
152
154
  const isPunct = (token, text) => token.kind === "punct" && token.text === text;
153
155
  const IDLE = { at: "idle" };
154
- const clauseNext = (depth, closed, token) => {
156
+ const clauseNames = (clause) => {
157
+ const names = [];
158
+ let depth = 0;
159
+ let entry = true;
160
+ for (const token of clause.tokens) {
161
+ if (isPunct(token, "{") || isPunct(token, ",")) {
162
+ depth += isPunct(token, "{") ? 1 : 0;
163
+ entry = true;
164
+ }
165
+ else if (isPunct(token, "}")) {
166
+ depth--;
167
+ entry = false;
168
+ }
169
+ else if (entry && (token.kind === "ident" || token.kind === "string")) {
170
+ entry = false;
171
+ if (depth > 0) {
172
+ names.push(token.kind === "string" ? token.value : token.text);
173
+ }
174
+ else if (clause.keyword === "import") {
175
+ names.push("default");
176
+ }
177
+ }
178
+ else {
179
+ entry = false;
180
+ }
181
+ }
182
+ return names;
183
+ };
184
+ const record = (found, specifier, clause) => {
185
+ found.specifiers.add(specifier);
186
+ if (clause === undefined) {
187
+ return;
188
+ }
189
+ const names = found.names.get(specifier) ?? new Set();
190
+ for (const name of clauseNames(clause)) {
191
+ names.add(name);
192
+ }
193
+ found.names.set(specifier, names);
194
+ };
195
+ const clauseNext = (depth, closed, clause, token) => {
155
196
  if (depth === 0 && token.kind === "ident" && token.text === "from") {
156
- return { at: "from" };
197
+ return { at: "from", clause };
157
198
  }
158
199
  if (closed) {
159
200
  return undefined;
160
201
  }
202
+ const next = { ...clause, tokens: [...clause.tokens, token] };
161
203
  if (isPunct(token, "{")) {
162
- return { at: "clause", depth: depth + 1, closed: false };
204
+ return { at: "clause", depth: depth + 1, closed: false, clause: next };
163
205
  }
164
206
  if (isPunct(token, "}") && depth > 0) {
165
- return { at: "clause", depth: depth - 1, closed: depth === 1 };
207
+ return { at: "clause", depth: depth - 1, closed: depth === 1, clause: next };
166
208
  }
167
209
  const bindingPart = token.kind === "ident" || token.kind === "string" || isPunct(token, ",") || isPunct(token, "*");
168
- return bindingPart ? { at: "clause", depth, closed } : undefined;
210
+ return bindingPart ? { at: "clause", depth, closed, clause: next } : undefined;
169
211
  };
170
212
  const literalOf = (token) => (token.kind === "string" || token.kind === "template" ? token.value : undefined);
213
+ const FROM = { kind: "ident", text: "from" };
171
214
  const transition = (state, token, found) => {
172
215
  switch (state.at) {
173
216
  case "idle":
@@ -177,48 +220,61 @@ const transition = (state, token, found) => {
177
220
  return { at: "dynamic" };
178
221
  }
179
222
  if (token.kind === "string") {
180
- found.add(token.value);
223
+ record(found, token.value);
181
224
  return IDLE;
182
225
  }
183
- return clauseNext(0, false, token);
226
+ return clauseNext(0, false, { keyword: "import", tokens: [] }, token);
184
227
  case "export":
185
- return isPunct(token, "*") || isPunct(token, "{") ? clauseNext(0, false, token) : undefined;
228
+ return isPunct(token, "*") || isPunct(token, "{") ? clauseNext(0, false, { keyword: "export", tokens: [] }, token) : undefined;
186
229
  case "dynamic": {
187
230
  const value = literalOf(token);
188
231
  return value === undefined ? undefined : { at: "argument", value };
189
232
  }
190
233
  case "argument":
191
234
  if (isPunct(token, ")") || isPunct(token, ",")) {
192
- found.add(state.value);
235
+ record(found, state.value);
193
236
  }
194
237
  return undefined;
195
238
  case "from":
196
239
  if (token.kind === "string") {
197
- found.add(token.value);
240
+ record(found, token.value, state.clause);
198
241
  return IDLE;
199
242
  }
200
- return clauseNext(0, false, token);
243
+ return clauseNext(0, false, { ...state.clause, tokens: [...state.clause.tokens, FROM] }, token);
201
244
  case "clause":
202
- return clauseNext(state.depth, state.closed, token);
245
+ return clauseNext(state.depth, state.closed, state.clause, token);
203
246
  }
204
247
  };
205
- const specifierReader = (found) => {
248
+ const specifierReader = (found, leading) => {
206
249
  let state = IDLE;
207
250
  let previous;
208
251
  return (token) => {
209
252
  const member = previous !== undefined && (isPunct(previous, ".") || isPunct(previous, "?."));
210
253
  previous = token;
211
- if (!member) {
212
- state = transition(state, token, found) ?? transition(IDLE, token, found) ?? IDLE;
254
+ if (member) {
255
+ return true;
213
256
  }
257
+ state = transition(state, token, found) ?? transition(IDLE, token, found) ?? IDLE;
258
+ return !leading || state.at !== "idle" || isPunct(token, ";") || token.kind === "string";
214
259
  };
215
260
  };
216
- export const bundleSpecifiers = (source) => {
217
- const found = new Set();
218
- tokenize(source, specifierReader(found));
219
- return [...found];
261
+ const readBundle = (source, leading = false) => {
262
+ const found = { specifiers: new Set(), names: new Map() };
263
+ tokenize(source, specifierReader(found, leading));
264
+ return found;
220
265
  };
221
- export const bundleProblem = (source) => {
266
+ export const bundleSpecifiers = (source) => [...readBundle(source).specifiers];
267
+ export const bundleImportedNames = (source, options = {}) => new Map([...readBundle(source, options.leading).names].map(([specifier, names]) => [specifier, [...names]]));
268
+ export const missingImports = (source, host, options = {}) => [...bundleImportedNames(source, options)].flatMap(([specifier, names]) => {
269
+ const exported = host[specifier];
270
+ if (exported === undefined) {
271
+ return [];
272
+ }
273
+ const has = new Set(exported);
274
+ const missing = names.filter((name) => !has.has(name));
275
+ return missing.length === 0 ? [] : [{ specifier, names: missing }];
276
+ });
277
+ export const bundleProblem = (source, host) => {
222
278
  const specifiers = bundleSpecifiers(source);
223
279
  const relative = specifiers.filter((specifier) => specifier.startsWith(".") || specifier.startsWith("/"));
224
280
  if (relative.length > 0) {
@@ -229,6 +285,11 @@ export const bundleProblem = (source) => {
229
285
  if (unpublished.length > 0) {
230
286
  return `imports ${unpublished.join(", ")}, which the host does not publish, bundle it in, or use one of: ${HOST_PUBLISHED_SPECIFIERS.join(", ")}`;
231
287
  }
288
+ const missing = host === undefined ? [] : missingImports(source, host);
289
+ if (missing.length > 0) {
290
+ const named = missing.map((entry) => `${entry.names.join(", ")} from ${entry.specifier}`).join("; ");
291
+ return `imports ${named}, which this version of the app does not export: it was built against a different version, and the extension needs updating`;
292
+ }
232
293
  return undefined;
233
294
  };
234
295
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,qBAAqB,CAAU,CAAC;AAUtI,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAKvK,MAAM,cAAc,GAAG,CAAC,IAAuB,EAAW,EAAE;IACxD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,wDAAwD,CAAC;AACvE,MAAM,MAAM,GAAG,cAAc,CAAC;AAC9B,MAAM,UAAU,GAAG,qBAAqB,CAAC;AACzC,MAAM,KAAK,GAAG,KAAK,CAAC;AAGpB,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,MAAc,EAAE,EAAU,EAAU,EAAE;IACrE,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;IACvB,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAU,EAAU,EAAE;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC;AACpD,CAAC,CAAC;AAQF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAU,EAAQ,EAAE;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC,EAAE,CAAC;QACR,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1D,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC;IACL,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC,CAAC;AAGF,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAU,EAAU,EAAE;IACpD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,CAAC;QACd,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC,EAAE,CAAC;QACR,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACtC,OAAO,GAAG,IAAI,KAAK,GAAG,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACd,CAAC,CAAC;AAUF,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,EAAU,EAAQ,EAAE;IACtD,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC,EAAE,CAAC;QACR,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACvC,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAU,EAAU,EAAE;IACnD,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,GAAG,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC,CAAC;AAWF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAY,EAAQ,EAAE;IACtD,SAAS,CAAC;QACN,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,EAAE,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjD,KAAK,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,OAAO;QACX,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAGF,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,KAAY,EAAE,IAAY,EAAE,IAAa,EAAS,EAAE;IACtF,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;IACpB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5F,CAAC,CAAC;AAGF,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,KAAY,EAAS,EAAE;IACtD,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IACrB,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACb,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9C,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACb,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACd,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,MAAM,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;IACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC,CAAC;AAIF,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,IAA+B,EAAQ,EAAE;IACvE,MAAM,KAAK,GAAU,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACrH,KAAK,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAClF,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,IAAY,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAiBvG,MAAM,IAAI,GAAU,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AAWnC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAY,EAAE;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7C,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,EAAE,CAAC;YACR,KAAK,GAAG,KAAK,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtE,KAAK,GAAG,KAAK,CAAC;YACd,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACZ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,KAAK,CAAC;QAClB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,SAAiB,EAAE,MAAe,EAAQ,EAAE;IACtE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;IACX,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC,CAAC;AAGF,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,MAAe,EAAE,MAAc,EAAE,KAAY,EAAqB,EAAE;IACnG,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9D,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjF,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpH,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,CAAC,CAAC;AAGF,MAAM,SAAS,GAAG,CAAC,KAAY,EAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEzI,MAAM,IAAI,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAIpD,MAAM,UAAU,GAAG,CAAC,KAAY,EAAE,KAAY,EAAE,KAAY,EAAqB,EAAE;IAC/E,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;QACf,KAAK,MAAM;YACP,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtH,KAAK,QAAQ;YACT,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3B,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1E,KAAK,QAAQ;YACT,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnI,KAAK,SAAS,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACvE,CAAC;QACD,KAAK,UAAU;YAEX,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,KAAK,MAAM;YACP,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,OAAO,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACpG,KAAK,QAAQ;YACT,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;AACL,CAAC,CAAC;AAKF,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,OAAgB,EAA+B,EAAE;IACpF,IAAI,KAAK,GAAU,IAAI,CAAC;IACxB,IAAI,QAA2B,CAAC;IAChC,OAAO,CAAC,KAAK,EAAE,EAAE;QAGb,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7F,QAAQ,GAAG,KAAK,CAAC;QACjB,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QAElF,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC7F,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,OAAO,GAAG,KAAK,EAAS,EAAE;IAC1D,MAAM,KAAK,GAAU,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAY,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;AAgBjG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,OAAO,GAAmC,EAAE,EAAyB,EAAE,CACvH,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAIjH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,IAAiB,EAAE,OAAO,GAAmC,EAAE,EAAmB,EAAE,CAC/H,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AAIP,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,IAAkB,EAAsB,EAAE;IACpF,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1G,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,0BAA0B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gFAAgF,CAAC;IACzI,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,yBAAyB,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAChF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,WAAW,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,mEAAmE,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrG,OAAO,WAAW,KAAK,6HAA6H,CAAC;IACzJ,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC"}
@@ -98,6 +98,10 @@ export declare const ExtensionManifestSchema: z.ZodObject<{
98
98
  fragment: z.ZodOptional<z.ZodString>;
99
99
  pack: z.ZodOptional<z.ZodString>;
100
100
  probe: z.ZodOptional<z.ZodObject<{
101
+ oauth: z.ZodOptional<z.ZodObject<{
102
+ tokenUrl: z.ZodString;
103
+ form: z.ZodRecord<z.ZodString, z.ZodString>;
104
+ }, z.core.$strip>>;
101
105
  url: z.ZodString;
102
106
  method: z.ZodOptional<z.ZodEnum<{
103
107
  GET: "GET";
@@ -108,6 +112,10 @@ export declare const ExtensionManifestSchema: z.ZodObject<{
108
112
  identity: z.ZodOptional<z.ZodString>;
109
113
  insecure: z.ZodOptional<z.ZodBoolean>;
110
114
  }, z.core.$strip>>;
115
+ refreshToken: z.ZodOptional<z.ZodObject<{
116
+ field: z.ZodString;
117
+ boundTo: z.ZodArray<z.ZodString>;
118
+ }, z.core.$strip>>;
111
119
  hosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
112
120
  broker: z.ZodOptional<z.ZodObject<{
113
121
  routes: z.ZodArray<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqHxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,eAAO,MAAM,aAAa,aAAc,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,MAAM,CAAC,KAAG,MAAkD,CAAC"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqHxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,eAAO,MAAM,aAAa,aAAc,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,MAAM,CAAC,KAAG,MAAkD,CAAC"}
@@ -116,6 +116,10 @@ export declare const CapabilityContributionSchema: z.ZodDiscriminatedUnion<[z.Zo
116
116
  fragment: z.ZodOptional<z.ZodString>;
117
117
  pack: z.ZodOptional<z.ZodString>;
118
118
  probe: z.ZodOptional<z.ZodObject<{
119
+ oauth: z.ZodOptional<z.ZodObject<{
120
+ tokenUrl: z.ZodString;
121
+ form: z.ZodRecord<z.ZodString, z.ZodString>;
122
+ }, z.core.$strip>>;
119
123
  url: z.ZodString;
120
124
  method: z.ZodOptional<z.ZodEnum<{
121
125
  GET: "GET";
@@ -126,6 +130,10 @@ export declare const CapabilityContributionSchema: z.ZodDiscriminatedUnion<[z.Zo
126
130
  identity: z.ZodOptional<z.ZodString>;
127
131
  insecure: z.ZodOptional<z.ZodBoolean>;
128
132
  }, z.core.$strip>>;
133
+ refreshToken: z.ZodOptional<z.ZodObject<{
134
+ field: z.ZodString;
135
+ boundTo: z.ZodArray<z.ZodString>;
136
+ }, z.core.$strip>>;
129
137
  hosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
130
138
  broker: z.ZodOptional<z.ZodObject<{
131
139
  routes: z.ZodArray<z.ZodObject<{
@@ -418,6 +426,10 @@ export declare const capabilitiesPoint: {
418
426
  fragment: z.ZodOptional<z.ZodString>;
419
427
  pack: z.ZodOptional<z.ZodString>;
420
428
  probe: z.ZodOptional<z.ZodObject<{
429
+ oauth: z.ZodOptional<z.ZodObject<{
430
+ tokenUrl: z.ZodString;
431
+ form: z.ZodRecord<z.ZodString, z.ZodString>;
432
+ }, z.core.$strip>>;
421
433
  url: z.ZodString;
422
434
  method: z.ZodOptional<z.ZodEnum<{
423
435
  GET: "GET";
@@ -428,6 +440,10 @@ export declare const capabilitiesPoint: {
428
440
  identity: z.ZodOptional<z.ZodString>;
429
441
  insecure: z.ZodOptional<z.ZodBoolean>;
430
442
  }, z.core.$strip>>;
443
+ refreshToken: z.ZodOptional<z.ZodObject<{
444
+ field: z.ZodString;
445
+ boundTo: z.ZodArray<z.ZodString>;
446
+ }, z.core.$strip>>;
431
447
  hosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
432
448
  broker: z.ZodOptional<z.ZodObject<{
433
449
  routes: z.ZodArray<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/points/capabilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,KAAK,aAAa,EAAgC,MAAM,eAAe,CAAC;AAIjF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;iBAkEhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAIpE,eAAO,MAAM,YAAY,UAAW,eAAe,UAAU,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAG,OACtB,CAAC;AA8B5E,QAAA,MAAM,iBAAiB;;;;;;;;;;;iBA6CrB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB;;;;;;;;;iBAa3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;iBAQvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AA8ClD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAyIiE,CAAC;AAC3G,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAYnF,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,MAAM,GAAG,SAA8D,CAAC;AAKjI,eAAO,MAAM,kBAAkB,kBACZ,SAAS,sBAAsB,EAAE,cACpC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,KAC1F,sBAAsB,GAAG,SAM3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;mBACpB,cAAc;0BAEhB,kYAAkY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEpW,CAAC;AAKvC,eAAO,MAAM,6BAA6B,QAAO,WAAW,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAiB1F,CAAC;AAIF,eAAO,MAAM,qBAAqB,iBAAkB,sBAAsB,KAAG,WAAW,CAAC,aAAa,CAarG,CAAC"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/points/capabilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,KAAK,aAAa,EAAgC,MAAM,eAAe,CAAC;AAIjF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;iBAkEhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAIpE,eAAO,MAAM,YAAY,UAAW,eAAe,UAAU,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAG,OACtB,CAAC;AA8C5E,QAAA,MAAM,iBAAiB;;;;;;;;;;;iBA6CrB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB;;;;;;;;;iBAa3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;iBAQvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AA8ClD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAkKiE,CAAC;AAC3G,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAYnF,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,MAAM,GAAG,SAA8D,CAAC;AAKjI,eAAO,MAAM,kBAAkB,kBACZ,SAAS,sBAAsB,EAAE,cACpC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,KAC1F,sBAAsB,GAAG,SAM3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;mBACpB,cAAc;0BAEhB,kYAAkY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEpW,CAAC;AAKvC,eAAO,MAAM,6BAA6B,QAAO,WAAW,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAiB1F,CAAC;AAIF,eAAO,MAAM,qBAAqB,iBAAkB,sBAAsB,KAAG,WAAW,CAAC,aAAa,CAarG,CAAC"}
@@ -47,6 +47,18 @@ export const CapabilityFieldSchema = z.object({
47
47
  });
48
48
  export const fieldApplies = (field, values) => field.when === undefined || evaluateWhen(parseWhen(field.when), values);
49
49
  const ProbeSchema = z.object({
50
+ oauth: z
51
+ .object({
52
+ tokenUrl: z
53
+ .string()
54
+ .min(1)
55
+ .describe("The token endpoint, templated like `url`. Only Microsoft identity platform hosts are served today."),
56
+ form: z
57
+ .record(z.string(), z.string())
58
+ .describe("The refresh-token grant's form fields, templated like `url`; a field that comes out empty is left out."),
59
+ })
60
+ .optional()
61
+ .describe("Trade the card's refresh token for an access token before the request, sent as `Authorization: Bearer`. For Microsoft's identity platform the request goes to the Graph cloud paired with the token endpoint's host, whatever host `url` names."),
50
62
  url: z
51
63
  .string()
52
64
  .min(1)
@@ -171,6 +183,15 @@ export const CapabilityContributionSchema = z
171
183
  .describe("A sandbox feature pack name (whisper, llamacpp, browser, …) supplying this tool. Preferred over `fragment`: an image that already bakes the pack needs no rebuild, and there is no copy to drift.")
172
184
  .meta({ effect: "image" }),
173
185
  probe: ProbeSchema.optional().describe("One authenticated request that tests this card's settings before they are saved, so a wrong token or an unreachable host is answered on the form rather than by a card that says 'not connected' afterwards."),
186
+ refreshToken: z
187
+ .object({
188
+ field: z.string().describe("The secret field the refresh token is kept in."),
189
+ boundTo: z
190
+ .array(z.string())
191
+ .describe("Fields a token is only good for as filled in at sign-in (tenant, client, cloud, access level); a token arriving after one of them changed is refused."),
192
+ })
193
+ .optional()
194
+ .describe("This card's credential is a delegated OAuth refresh token the extension's own CLI or process obtains and rotates. They store it through `POST /capabilities/{id}/oauth-token` (an extension process also needs that route in `permissions.daemon`) instead of printing it for someone to paste."),
174
195
  hosts: z
175
196
  .array(z.string().min(1))
176
197
  .optional()
@@ -235,6 +256,15 @@ export const CapabilityContributionSchema = z
235
256
  if (spec.kind !== "cli") {
236
257
  return;
237
258
  }
259
+ if (spec.refreshToken !== undefined) {
260
+ const declared = new Map(spec.fields.map((field) => [field.key, field]));
261
+ if (declared.get(spec.refreshToken.field)?.secret !== true) {
262
+ ctx.addIssue({ code: "custom", message: `refreshToken.field "${spec.refreshToken.field}" must name a secret field` });
263
+ }
264
+ for (const key of spec.refreshToken.boundTo.filter((candidate) => !declared.has(candidate) || candidate === spec.refreshToken?.field)) {
265
+ ctx.addIssue({ code: "custom", message: `refreshToken.boundTo names "${key}", which is not another field of this card` });
266
+ }
267
+ }
238
268
  for (const field of spec.fields.filter((candidate) => candidate.totp === true)) {
239
269
  if (Object.values(spec.env).some((template) => template.includes(`\${${field.key}}`) || template.includes(`\${${field.key}:uri}`))) {
240
270
  ctx.addIssue({
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/points/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAsB,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAIjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC3E,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAGjC,QAAQ,EAAE,CAAC;SACN,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACL,yOAAyO,CAC5O;IAGL,OAAO,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACL,2SAA2S,CAC9S;IAEL,IAAI,EAAE,CAAC;SACF,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACL,8MAA8M,CACjN;IAGL,OAAO,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACL,wQAAwQ,CAC3Q;IACL,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACzD,QAAQ,EAAE;SACV,QAAQ,CAAC,gCAAgC,CAAC;IAE/C,IAAI,EAAE,CAAC;SACF,MAAM,EAAE;SACR,MAAM,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;SACrE,QAAQ,EAAE;SACV,QAAQ,CACL,iMAAiM,CACpM;IAEL,KAAK,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACL,0JAA0J,CAC7J;IAGL,IAAI,EAAE,CAAC;SACF,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACL,6RAA6R,CAChS;CACR,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAsB,EAAE,MAAyC,EAAW,EAAE,CACvG,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAI5E,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,GAAG,EAAE,CAAC;SACD,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,iIAAiI,CAAC;IAChJ,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC/E,OAAO,EAAE,CAAC;SACL,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CAAC,sFAAsF,CAAC;IAErG,QAAQ,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gIAAgI,CAAC;IAC/I,QAAQ,EAAE,CAAC;SACN,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,4GAA4G,CAAC;CAC9H,CAAC,CAAC;AAOH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACL,8KAA8K,CACjL;IACL,GAAG,EAAE,CAAC;SACD,MAAM,EAAE;SACR,KAAK,CAAC,mBAAmB,CAAC;SAC1B,QAAQ,EAAE;SACV,QAAQ,CACL,+QAA+Q,CAClR;IACL,OAAO,EAAE,CAAC;SACL,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACL,kNAAkN,CACrN;IACL,KAAK,EAAE,CAAC;SACH,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;SACtD,QAAQ,EAAE;SACV,QAAQ,CACL,qIAAqI,CACxI;IACL,IAAI,EAAE,CAAC;SACF,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACL,qTAAqT,CACxT;IACL,UAAU,EAAE,CAAC;SACR,MAAM,EAAE;SACR,UAAU,CAAC,GAAG,CAAC;SACf,QAAQ,EAAE;SACV,QAAQ,CACL,6JAA6J,CAChK;IACL,GAAG,EAAE,CAAC;SACD,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACL,uLAAuL,CAC1L;CACR,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SACnC,QAAQ,EAAE;SACV,QAAQ,CAAC,2EAA2E,CAAC;IAC1F,KAAK,EAAE,CAAC;SACH,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACjC,QAAQ,EAAE;SACV,QAAQ,CACL,sJAAsJ,CACzJ;IACL,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,iFAAiF,CAAC;IACpI,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;CAClH,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,KAAK,EAAE,CAAC;SACH,KAAK,CAAC,gBAAgB,CAAC;SACvB,QAAQ,EAAE;SACV,QAAQ,CACL,uNAAuN,CAC1N;CACR,CAAC,CAAC;AAIH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,GAAG,WAAW;IAEd,WAAW,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACL,gMAAgM,CACnM;IACL,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAG3B,IAAI,EAAE,CAAC;SACF,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACL,oNAAoN,CACvN;IAEL,KAAK,EAAE,CAAC;SACH,MAAM,CAAC;QACJ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACxC,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,2FAA2F,CAAC;CAC7G,CAAC,CAAC;AAIH,MAAM,gBAAgB,GAAG;IACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC5C,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;CACzC,CAAC;AAIF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KACxC,kBAAkB,CAAC,MAAM,EAAE;IAGxB,CAAC,CAAC,MAAM,CAAC;QACL,GAAG,gBAAgB;QACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,GAAG,EAAE,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;aACzD,QAAQ,CACL,yKAAyK,CAC5K;QACL,KAAK,EAAE,CAAC;aACH,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,0HAA0H,CAAC;QACzI,QAAQ,EAAE,CAAC;aACN,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,yFAAyF,CAAC;aACnG,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAG9B,IAAI,EAAE,CAAC;aACF,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CACL,mMAAmM,CACtM;aACA,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC9B,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAClC,8MAA8M,CACjN;QAED,KAAK,EAAE,CAAC;aACH,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB,QAAQ,EAAE;aACV,QAAQ,CACL,mYAAmY,CACtY;QAEL,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpC,+XAA+X,CAClY;QAGD,GAAG,EAAE,CAAC;aACD,MAAM,EAAE;aACR,KAAK,CAAC,SAAS,CAAC;aAChB,QAAQ,EAAE;aACV,QAAQ,CACL,gVAAgV,CACnV;aACA,IAAI,CAAC;YACF,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,EAAE,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,+DAA+D,EAAE;SACtH,CAAC;KACT,CAAC;IAGF,CAAC,CAAC,MAAM,CAAC;QACL,GAAG,gBAAgB;QACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,QAAQ,EAAE,CAAC;aACN,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CACL,uQAAuQ,CAC1Q;QACL,OAAO,EAAE,CAAC;aACL,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CACL,4OAA4O,CAC/O;QACL,KAAK,EAAE,CAAC;aACH,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACL,wLAAwL,CAC3L;KACR,CAAC;IAGF,CAAC;SACI,MAAM,CAAC;QACJ,GAAG,gBAAgB;QACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qEAAqE,CAAC;KAC3G,CAAC;SACD,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAIhC,CAAC;SACI,MAAM,CAAC;QACJ,GAAG,gBAAgB;QACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,CAAC;aACL,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CAAC,oGAAoG,CAAC;QACnH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sEAAsE,CAAC;KAC5G,CAAC;SACD,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAGhC,CAAC;SACI,MAAM,CAAC;QACJ,GAAG,gBAAgB;QACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4FAA4F,CAAC;QAClI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sEAAsE,CAAC;KAC5G,CAAC;SACD,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAEhC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9D,CAAC;KACD,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAGvB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7E,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;YACjI,GAAG,CAAC,QAAQ,CAAC;gBACT,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,0CAA0C,KAAK,CAAC,GAAG,2CAA2C;aAC1G,CAAC,CAAC;QACP,CAAC;IACL,CAAC;AACL,CAAC,CAAC;KACD,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,6CAA6C,EAAE,EAAE,CAAC,CAAC;AAO3G,MAAM,aAAa,GAAG;IAClB,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,SAAS;CACkD,CAAC;AACvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAsB,EAAE,CAAC,aAAa,CAAC,IAAkC,CAAC,CAAC;AAKjI,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,aAAgD,EAChD,UAAyF,EACvD,EAAE;IACpC,MAAM,GAAG,GAAG,yBAAyB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7G,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,IAAI,EAAE,cAAc;IACpB,WAAW,EACP,kYAAkY;IACtY,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC;CACX,CAAC;AAKvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAgD,EAAE;IAC3F,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkC,CAAC;IACxD,KAAK,MAAM,MAAM,IAAI,4BAA4B,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAkC,CAAC;QACxD,MAAM,IAAI,GAAI,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAkD,EAAE,MAAM,EAAE,CAAC,CAAC,CAClD,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,SAAS;QACb,CAAC;QACD,IACI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;YAClD,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,EACrF,CAAC;YACC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAoC,EAA8B,EAAE;IACtG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IACzC,MAAM,MAAM,GAAG,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1H,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,MAAM,KAAK,GAAI,YAAwC,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/points/capabilities.ts"],"names":[],"mappings":"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"}
@@ -164,6 +164,10 @@ export declare const CONTRIBUTION_POINTS: readonly [{
164
164
  fragment: z.ZodOptional<z.ZodString>;
165
165
  pack: z.ZodOptional<z.ZodString>;
166
166
  probe: z.ZodOptional<z.ZodObject<{
167
+ oauth: z.ZodOptional<z.ZodObject<{
168
+ tokenUrl: z.ZodString;
169
+ form: z.ZodRecord<z.ZodString, z.ZodString>;
170
+ }, z.core.$strip>>;
167
171
  url: z.ZodString;
168
172
  method: z.ZodOptional<z.ZodEnum<{
169
173
  GET: "GET";
@@ -174,6 +178,10 @@ export declare const CONTRIBUTION_POINTS: readonly [{
174
178
  identity: z.ZodOptional<z.ZodString>;
175
179
  insecure: z.ZodOptional<z.ZodBoolean>;
176
180
  }, z.core.$strip>>;
181
+ refreshToken: z.ZodOptional<z.ZodObject<{
182
+ field: z.ZodString;
183
+ boundTo: z.ZodArray<z.ZodString>;
184
+ }, z.core.$strip>>;
177
185
  hosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
178
186
  broker: z.ZodOptional<z.ZodObject<{
179
187
  routes: z.ZodArray<z.ZodObject<{
@@ -572,6 +580,10 @@ export declare const contributesSchema: z.ZodObject<{
572
580
  fragment: z.ZodOptional<z.ZodString>;
573
581
  pack: z.ZodOptional<z.ZodString>;
574
582
  probe: z.ZodOptional<z.ZodObject<{
583
+ oauth: z.ZodOptional<z.ZodObject<{
584
+ tokenUrl: z.ZodString;
585
+ form: z.ZodRecord<z.ZodString, z.ZodString>;
586
+ }, z.core.$strip>>;
575
587
  url: z.ZodString;
576
588
  method: z.ZodOptional<z.ZodEnum<{
577
589
  GET: "GET";
@@ -582,6 +594,10 @@ export declare const contributesSchema: z.ZodObject<{
582
594
  identity: z.ZodOptional<z.ZodString>;
583
595
  insecure: z.ZodOptional<z.ZodBoolean>;
584
596
  }, z.core.$strip>>;
597
+ refreshToken: z.ZodOptional<z.ZodObject<{
598
+ field: z.ZodString;
599
+ boundTo: z.ZodArray<z.ZodString>;
600
+ }, z.core.$strip>>;
585
601
  hosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
586
602
  broker: z.ZodOptional<z.ZodObject<{
587
603
  routes: z.ZodArray<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/points/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAK3B,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBiB,CAAC;AAUlD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAE7B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/points/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAK3B,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBiB,CAAC;AAUlD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAE7B,CAAC"}
@@ -684,6 +684,32 @@
684
684
  "description": "One authenticated request that tests this card's settings before they are saved, so a wrong token or an unreachable host is answered on the form rather than by a card that says 'not connected' afterwards.",
685
685
  "type": "object",
686
686
  "properties": {
687
+ "oauth": {
688
+ "description": "Trade the card's refresh token for an access token before the request, sent as `Authorization: Bearer`. For Microsoft's identity platform the request goes to the Graph cloud paired with the token endpoint's host, whatever host `url` names.",
689
+ "type": "object",
690
+ "properties": {
691
+ "tokenUrl": {
692
+ "type": "string",
693
+ "minLength": 1,
694
+ "description": "The token endpoint, templated like `url`. Only Microsoft identity platform hosts are served today."
695
+ },
696
+ "form": {
697
+ "type": "object",
698
+ "propertyNames": {
699
+ "type": "string"
700
+ },
701
+ "additionalProperties": {
702
+ "type": "string"
703
+ },
704
+ "description": "The refresh-token grant's form fields, templated like `url`; a field that comes out empty is left out."
705
+ }
706
+ },
707
+ "required": [
708
+ "tokenUrl",
709
+ "form"
710
+ ],
711
+ "additionalProperties": false
712
+ },
687
713
  "url": {
688
714
  "type": "string",
689
715
  "minLength": 1,
@@ -722,6 +748,28 @@
722
748
  ],
723
749
  "additionalProperties": false
724
750
  },
751
+ "refreshToken": {
752
+ "description": "This card's credential is a delegated OAuth refresh token the extension's own CLI or process obtains and rotates. They store it through `POST /capabilities/{id}/oauth-token` (an extension process also needs that route in `permissions.daemon`) instead of printing it for someone to paste.",
753
+ "type": "object",
754
+ "properties": {
755
+ "field": {
756
+ "type": "string",
757
+ "description": "The secret field the refresh token is kept in."
758
+ },
759
+ "boundTo": {
760
+ "type": "array",
761
+ "items": {
762
+ "type": "string"
763
+ },
764
+ "description": "Fields a token is only good for as filled in at sign-in (tenant, client, cloud, access level); a token arriving after one of them changed is refused."
765
+ }
766
+ },
767
+ "required": [
768
+ "field",
769
+ "boundTo"
770
+ ],
771
+ "additionalProperties": false
772
+ },
725
773
  "hosts": {
726
774
  "description": "The hosts this card's credential is meant for, as templates over the fields like `env` (`api.github.com`, `*.githubusercontent.com`, `${url}`); a value that comes out as a URL counts as its host. The sandbox limits the credential's `{{secret:…}}` reference to them by default, so a use aimed anywhere else asks a person first. The owner can change or lift the list on the Secrets view.",
727
775
  "type": "array",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/extension-manifest",
3
- "version": "1.337.0",
3
+ "version": "1.338.0",
4
4
  "description": "What an intentic extension DECLARES, the intentic-extension.json schema and the sandbox-route allowlist rule",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -43,7 +43,7 @@
43
43
  }
44
44
  },
45
45
  "dependencies": {
46
- "@intentic/base": "1.337.0",
46
+ "@intentic/base": "1.338.0",
47
47
  "tslib": "2.8.1",
48
48
  "zod": "4.6.5"
49
49
  },
@@ -1,4 +1,4 @@
1
- import { bundleProblem, bundleSpecifiers, HOST_PUBLISHED_SPECIFIERS } from "./bundle.js";
1
+ import { bundleImportedNames, bundleProblem, bundleSpecifiers, HOST_PUBLISHED_SPECIFIERS, missingImports } from "./bundle.js";
2
2
 
3
3
  // Every case is a whole bundle and the specifiers it names, in source order. The minified ones are how a bundler
4
4
  // actually emits: no whitespace a line-anchored scan could lean on.
@@ -83,9 +83,68 @@ describe("bundleProblem", () => {
83
83
  );
84
84
  });
85
85
 
86
+ test("an import the host does not export is named, with what to do about it", () => {
87
+ const host = { "@intentic/extension-ui": ["RepoPicker"] };
88
+ expect(bundleProblem(`import{RepoRail as e,RepoPicker as t}from"@intentic/extension-ui";`, host)).toBe(
89
+ "imports RepoRail from @intentic/extension-ui, which this version of the app does not export: it was built against a different version, and the extension needs updating",
90
+ );
91
+ expect(bundleProblem(`import{RepoPicker as t}from"@intentic/extension-ui";`, host)).toBe(undefined);
92
+ });
93
+
86
94
  test("a published package's subpath is not the package", () => {
87
95
  expect(bundleProblem(`import{h}from"vue/dist/vue.esm-bundler.js"`)).toBe(
88
96
  "imports vue/dist/vue.esm-bundler.js, which the host does not publish, bundle it in, or use one of: vue, @intentic/extension-api, @intentic/extension-ui, @tanstack/vue-query",
89
97
  );
90
98
  });
91
99
  });
100
+
101
+ // A bundle links its static imports by name, so each name it asks of a host module is read off the clause: the
102
+ // module's own name, never the local alias a minifier gave it.
103
+ const NAMED: readonly (readonly [string, string, Record<string, string[]>])[] = [
104
+ [
105
+ "a minified named import",
106
+ `import{RepoRail as e,Button as t}from"@intentic/extension-ui";`,
107
+ { "@intentic/extension-ui": ["RepoRail", "Button"] },
108
+ ],
109
+ ["a default import beside named ones", `import d,{a as b}from"z";`, { z: ["default", "a"] }],
110
+ ["a default import named `default`", `import{default as d}from"z";`, { z: ["default"] }],
111
+ ["a namespace import names nothing", `import*as n from"z";import d,*as m from"y";`, { z: [], y: ["default"] }],
112
+ ["a quoted name", `import{"a-b"as c}from"q";`, { q: ["a-b"] }],
113
+ ["bindings called from", `import from from"f";import{from}from"g";`, { f: ["default"], g: ["from"] }],
114
+ ["a re-export names what it takes", `export{a as b,c}from"r";export*from"s";export*as t from"u";`, { r: ["a", "c"], s: [], u: [] }],
115
+ ["one module imported twice", `import{a}from"x";import{b,a as c}from"x";`, { x: ["a", "b"] }],
116
+ ["a side-effect or dynamic import names nothing", `import"x";const m=await import("y");`, {}],
117
+ ];
118
+
119
+ describe("bundleImportedNames", () => {
120
+ test.each(NAMED)("%s", (_name, source, expected) => {
121
+ expect(Object.fromEntries(bundleImportedNames(source))).toEqual(expected);
122
+ });
123
+
124
+ test("leading reads up to the first statement that is not an import, where a bundler has put them all", () => {
125
+ const source = `"use strict";import{a}from"x";\nimport{b}from"y";var e=1;import{c}from"z";`;
126
+ expect(Object.fromEntries(bundleImportedNames(source, { leading: true }))).toEqual({ x: ["a"], y: ["b"] });
127
+ expect(Object.fromEntries(bundleImportedNames(source))).toEqual({ x: ["a"], y: ["b"], z: ["c"] });
128
+ });
129
+ });
130
+
131
+ describe("missingImports", () => {
132
+ const host = { "@intentic/extension-ui": ["Button", "RepoPicker", "RepoRail"], "@intentic/extension-api": ["sandboxPoll"] };
133
+
134
+ test("names present on the host pass", () => {
135
+ const source = `import{sandboxPoll as n}from"@intentic/extension-api";import{RepoRail as a,RepoPicker as b}from"@intentic/extension-ui";`;
136
+ expect(missingImports(source, host)).toEqual([]);
137
+ });
138
+
139
+ test("a name the host lacks is named with its module", () => {
140
+ const source = `import{Button as a,Gone as b,AlsoGone as c}from"@intentic/extension-ui";import{sandboxPoll,retired}from"@intentic/extension-api";`;
141
+ expect(missingImports(source, host)).toEqual([
142
+ { specifier: "@intentic/extension-ui", names: ["Gone", "AlsoGone"] },
143
+ { specifier: "@intentic/extension-api", names: ["retired"] },
144
+ ]);
145
+ });
146
+
147
+ test("a module the host map leaves out is not judged", () => {
148
+ expect(missingImports(`import{whatever}from"vue";`, host)).toEqual([]);
149
+ });
150
+ });
package/src/bundle.ts CHANGED
@@ -190,50 +190,109 @@ const readToken = (source: string, lexer: Lexer): Token => {
190
190
  };
191
191
 
192
192
  // Tokenizes an ES module just far enough to see its imports: string, template, comment and regex contents are skipped
193
- // rather than read as code, and a template's `${}` holes are read as code again.
194
- const tokenize = (source: string, emit: (token: Token) => void): void => {
193
+ // rather than read as code, and a template's `${}` holes are read as code again. Stops early when `emit` answers false.
194
+ const tokenize = (source: string, emit: (token: Token) => boolean): void => {
195
195
  const lexer: Lexer = { at: source.startsWith("#!") ? lineEnd(source, 0) : 0, last: undefined, braces: 0, holes: [] };
196
196
  for (skipTrivia(source, lexer); lexer.at < source.length; skipTrivia(source, lexer)) {
197
197
  lexer.last = readToken(source, lexer);
198
- emit(lexer.last);
198
+ if (!emit(lexer.last)) {
199
+ return;
200
+ }
199
201
  }
200
202
  };
201
203
 
202
204
  const isPunct = (token: Token, text: string): boolean => token.kind === "punct" && token.text === text;
203
205
 
206
+ // What an import or re-export has read between its keyword and `from`, kept to name its bindings once the module is
207
+ // known.
208
+ interface Clause {
209
+ readonly keyword: "import" | "export";
210
+ readonly tokens: readonly Token[];
211
+ }
212
+
204
213
  // Where the reading of an import or re-export stands. A clause is what sits between `import`/`export` and `from`:
205
214
  // bindings, braces, `*`, `as`, commas, quoted names; `closed` once its braces have closed, when only `from` may follow.
206
215
  type State =
207
- | { readonly at: "idle" | "import" | "export" | "dynamic" | "from" }
216
+ | { readonly at: "idle" | "import" | "export" | "dynamic" }
217
+ | { readonly at: "from"; readonly clause: Clause }
208
218
  | { readonly at: "argument"; readonly value: string }
209
- | { readonly at: "clause"; readonly depth: number; readonly closed: boolean };
219
+ | { readonly at: "clause"; readonly depth: number; readonly closed: boolean; readonly clause: Clause };
210
220
 
211
221
  const IDLE: State = { at: "idle" };
212
222
 
223
+ // What a reading collects: every specifier, and the names each static import or re-export links by.
224
+ interface Found {
225
+ readonly specifiers: Set<string>;
226
+ readonly names: Map<string, Set<string>>;
227
+ }
228
+
229
+ // The names a clause links by, once read whole. Inside braces each entry's first word is the module's own name (`a` of
230
+ // `a as b`, `default` of `default as d`, a quoted `"a-b"`); a bare binding before them is the default export. A
231
+ // namespace (`* as n`, `export *`) takes whatever the module has, so it names nothing a module can lack.
232
+ const clauseNames = (clause: Clause): string[] => {
233
+ const names: string[] = [];
234
+ let depth = 0;
235
+ let entry = true;
236
+ for (const token of clause.tokens) {
237
+ if (isPunct(token, "{") || isPunct(token, ",")) {
238
+ depth += isPunct(token, "{") ? 1 : 0;
239
+ entry = true;
240
+ } else if (isPunct(token, "}")) {
241
+ depth--;
242
+ entry = false;
243
+ } else if (entry && (token.kind === "ident" || token.kind === "string")) {
244
+ entry = false;
245
+ if (depth > 0) {
246
+ names.push(token.kind === "string" ? token.value : token.text);
247
+ } else if (clause.keyword === "import") {
248
+ names.push("default");
249
+ }
250
+ } else {
251
+ entry = false;
252
+ }
253
+ }
254
+ return names;
255
+ };
256
+
257
+ const record = (found: Found, specifier: string, clause?: Clause): void => {
258
+ found.specifiers.add(specifier);
259
+ if (clause === undefined) {
260
+ return;
261
+ }
262
+ const names = found.names.get(specifier) ?? new Set<string>();
263
+ for (const name of clauseNames(clause)) {
264
+ names.add(name);
265
+ }
266
+ found.names.set(specifier, names);
267
+ };
268
+
213
269
  // The state a clause moves to on `token`, or undefined when the token cannot sit in the clause.
214
- const clauseNext = (depth: number, closed: boolean, token: Token): State | undefined => {
270
+ const clauseNext = (depth: number, closed: boolean, clause: Clause, token: Token): State | undefined => {
215
271
  if (depth === 0 && token.kind === "ident" && token.text === "from") {
216
- return { at: "from" };
272
+ return { at: "from", clause };
217
273
  }
218
274
  if (closed) {
219
275
  return undefined;
220
276
  }
277
+ const next = { ...clause, tokens: [...clause.tokens, token] };
221
278
  if (isPunct(token, "{")) {
222
- return { at: "clause", depth: depth + 1, closed: false };
279
+ return { at: "clause", depth: depth + 1, closed: false, clause: next };
223
280
  }
224
281
  if (isPunct(token, "}") && depth > 0) {
225
- return { at: "clause", depth: depth - 1, closed: depth === 1 };
282
+ return { at: "clause", depth: depth - 1, closed: depth === 1, clause: next };
226
283
  }
227
284
  const bindingPart = token.kind === "ident" || token.kind === "string" || isPunct(token, ",") || isPunct(token, "*");
228
- return bindingPart ? { at: "clause", depth, closed } : undefined;
285
+ return bindingPart ? { at: "clause", depth, closed, clause: next } : undefined;
229
286
  };
230
287
 
231
288
  // A literal module name: a string, or a template with no hole (which only `import()` accepts).
232
289
  const literalOf = (token: Token): string | undefined => (token.kind === "string" || token.kind === "template" ? token.value : undefined);
233
290
 
291
+ const FROM: Token = { kind: "ident", text: "from" };
292
+
234
293
  // The state after `token`, recording what it completes into `found`, or undefined when the token breaks the pattern
235
294
  // under way (and must be read again from idle, since it may start the next one).
236
- const transition = (state: State, token: Token, found: Set<string>): State | undefined => {
295
+ const transition = (state: State, token: Token, found: Found): State | undefined => {
237
296
  switch (state.at) {
238
297
  case "idle":
239
298
  return token.kind === "ident" && (token.text === "import" || token.text === "export") ? { at: token.text } : IDLE;
@@ -242,12 +301,12 @@ const transition = (state: State, token: Token, found: Set<string>): State | und
242
301
  return { at: "dynamic" };
243
302
  }
244
303
  if (token.kind === "string") {
245
- found.add(token.value);
304
+ record(found, token.value);
246
305
  return IDLE;
247
306
  }
248
- return clauseNext(0, false, token);
307
+ return clauseNext(0, false, { keyword: "import", tokens: [] }, token);
249
308
  case "export":
250
- return isPunct(token, "*") || isPunct(token, "{") ? clauseNext(0, false, token) : undefined;
309
+ return isPunct(token, "*") || isPunct(token, "{") ? clauseNext(0, false, { keyword: "export", tokens: [] }, token) : undefined;
251
310
  case "dynamic": {
252
311
  const value = literalOf(token);
253
312
  return value === undefined ? undefined : { at: "argument", value };
@@ -255,23 +314,25 @@ const transition = (state: State, token: Token, found: Set<string>): State | und
255
314
  case "argument":
256
315
  // `import("x")` or `import("x", { with: … })`; `import("x" + y)` names no one module.
257
316
  if (isPunct(token, ")") || isPunct(token, ",")) {
258
- found.add(state.value);
317
+ record(found, state.value);
259
318
  }
260
319
  return undefined;
261
320
  case "from":
262
321
  if (token.kind === "string") {
263
- found.add(token.value);
322
+ record(found, token.value, state.clause);
264
323
  return IDLE;
265
324
  }
266
325
  // `import from from "x"`: the first `from` was a binding.
267
- return clauseNext(0, false, token);
326
+ return clauseNext(0, false, { ...state.clause, tokens: [...state.clause.tokens, FROM] }, token);
268
327
  case "clause":
269
- return clauseNext(state.depth, state.closed, token);
328
+ return clauseNext(state.depth, state.closed, state.clause, token);
270
329
  }
271
330
  };
272
331
 
273
332
  // Reads the specifiers off a token stream: `import … from "x"`, `import "x"`, `export … from "x"` and `import("x")`.
274
- const specifierReader = (found: Set<string>): ((token: Token) => void) => {
333
+ // `leading` stops at the first statement that is none of these, which is where every bundler has put its static
334
+ // imports by then; answering false ends the scan.
335
+ const specifierReader = (found: Found, leading: boolean): ((token: Token) => boolean) => {
275
336
  let state: State = IDLE;
276
337
  let previous: Token | undefined;
277
338
  return (token) => {
@@ -279,23 +340,59 @@ const specifierReader = (found: Set<string>): ((token: Token) => void) => {
279
340
  // before this token has already left the reader idle.
280
341
  const member = previous !== undefined && (isPunct(previous, ".") || isPunct(previous, "?."));
281
342
  previous = token;
282
- if (!member) {
283
- state = transition(state, token, found) ?? transition(IDLE, token, found) ?? IDLE;
343
+ if (member) {
344
+ return true;
284
345
  }
346
+ state = transition(state, token, found) ?? transition(IDLE, token, found) ?? IDLE;
347
+ // Past the leading imports: anything but the start of another, a `;`, or a directive's string.
348
+ return !leading || state.at !== "idle" || isPunct(token, ";") || token.kind === "string";
285
349
  };
286
350
  };
287
351
 
352
+ const readBundle = (source: string, leading = false): Found => {
353
+ const found: Found = { specifiers: new Set(), names: new Map() };
354
+ tokenize(source, specifierReader(found, leading));
355
+ return found;
356
+ };
357
+
288
358
  // Every specifier a single-file ESM bundle names, in source order: static imports, re-exports, bare side-effect
289
359
  // imports and dynamic import() of a literal, wherever they sit (a minified bundle puts them all on one line), never
290
360
  // counting the word inside a string, a template, a comment or a regex.
291
- export const bundleSpecifiers = (source: string): string[] => {
292
- const found = new Set<string>();
293
- tokenize(source, specifierReader(found));
294
- return [...found];
295
- };
361
+ export const bundleSpecifiers = (source: string): string[] => [...readBundle(source).specifiers];
362
+
363
+ // What a host's published modules export, by specifier: the names the import map's shim for each re-exports. A
364
+ // specifier left out is not checked.
365
+ export type HostExports = Readonly<Partial<Record<string, readonly string[]>>>;
296
366
 
297
- // Why this bundle cannot load, or undefined when it can, naming the offending specifiers.
298
- export const bundleProblem = (source: string): string | undefined => {
367
+ // Names a bundle imports that a host module does not export, by specifier.
368
+ export interface MissingImport {
369
+ readonly specifier: string;
370
+ readonly names: readonly string[];
371
+ }
372
+
373
+ // The names a bundle links against, by specifier: `import { a, b as c } from "x"` and `export { a } from "x"` name `a`
374
+ // (and `b`), a default import names `default`. Only static imports link, so a dynamic import() names none.
375
+ // `leading` reads only the imports before the first other statement, which is where a bundler puts them all: cheap
376
+ // enough to run on every load, and a check built on it can only miss an import, never invent one.
377
+ export const bundleImportedNames = (source: string, options: { readonly leading?: boolean } = {}): Map<string, string[]> =>
378
+ new Map([...readBundle(source, options.leading).names].map(([specifier, names]) => [specifier, [...names]]));
379
+
380
+ // The imports in `source` that `host` cannot satisfy: each is a SyntaxError when the bundle links ("does not provide
381
+ // an export named …"), before a line of the extension runs and without naming the extension or what to do.
382
+ export const missingImports = (source: string, host: HostExports, options: { readonly leading?: boolean } = {}): MissingImport[] =>
383
+ [...bundleImportedNames(source, options)].flatMap(([specifier, names]) => {
384
+ const exported = host[specifier];
385
+ if (exported === undefined) {
386
+ return [];
387
+ }
388
+ const has = new Set(exported);
389
+ const missing = names.filter((name) => !has.has(name));
390
+ return missing.length === 0 ? [] : [{ specifier, names: missing }];
391
+ });
392
+
393
+ // Why this bundle cannot load, or undefined when it can, naming the offending specifiers. Given what the host exports,
394
+ // it also names each import the host lacks, which only a newer or older build of the extension would ask for.
395
+ export const bundleProblem = (source: string, host?: HostExports): string | undefined => {
299
396
  const specifiers = bundleSpecifiers(source);
300
397
  const relative = specifiers.filter((specifier) => specifier.startsWith(".") || specifier.startsWith("/"));
301
398
  if (relative.length > 0) {
@@ -306,5 +403,10 @@ export const bundleProblem = (source: string): string | undefined => {
306
403
  if (unpublished.length > 0) {
307
404
  return `imports ${unpublished.join(", ")}, which the host does not publish, bundle it in, or use one of: ${HOST_PUBLISHED_SPECIFIERS.join(", ")}`;
308
405
  }
406
+ const missing = host === undefined ? [] : missingImports(source, host);
407
+ if (missing.length > 0) {
408
+ const named = missing.map((entry) => `${entry.names.join(", ")} from ${entry.specifier}`).join("; ");
409
+ return `imports ${named}, which this version of the app does not export: it was built against a different version, and the extension needs updating`;
410
+ }
309
411
  return undefined;
310
412
  };
@@ -84,6 +84,22 @@ export const fieldApplies = (field: CapabilityField, values: Readonly<Record<str
84
84
  // One authenticated request the daemon makes on the form's behalf, declared as data since the check is per-service.
85
85
  // Worth declaring on any card whose failure is otherwise silent.
86
86
  const ProbeSchema = z.object({
87
+ // A delegated sign-in's card keeps only a refresh token, so its test first trades that for an access token. The
88
+ // trade is held in memory for this one request; neither token is stored or shown.
89
+ oauth: z
90
+ .object({
91
+ tokenUrl: z
92
+ .string()
93
+ .min(1)
94
+ .describe("The token endpoint, templated like `url`. Only Microsoft identity platform hosts are served today."),
95
+ form: z
96
+ .record(z.string(), z.string())
97
+ .describe("The refresh-token grant's form fields, templated like `url`; a field that comes out empty is left out."),
98
+ })
99
+ .optional()
100
+ .describe(
101
+ "Trade the card's refresh token for an access token before the request, sent as `Authorization: Bearer`. For Microsoft's identity platform the request goes to the Graph cloud paired with the token endpoint's host, whatever host `url` names.",
102
+ ),
87
103
  url: z
88
104
  .string()
89
105
  .min(1)
@@ -264,6 +280,22 @@ export const CapabilityContributionSchema = z
264
280
  probe: ProbeSchema.optional().describe(
265
281
  "One authenticated request that tests this card's settings before they are saved, so a wrong token or an unreachable host is answered on the form rather than by a card that says 'not connected' afterwards.",
266
282
  ),
283
+ // Lets a sign-in on the agent's side store what it got without printing it: the daemon's oauth-token route
284
+ // writes `field` and nothing else, for a caller holding the card's current token, while every `boundTo`
285
+ // field still holds what the sign-in was made against.
286
+ refreshToken: z
287
+ .object({
288
+ field: z.string().describe("The secret field the refresh token is kept in."),
289
+ boundTo: z
290
+ .array(z.string())
291
+ .describe(
292
+ "Fields a token is only good for as filled in at sign-in (tenant, client, cloud, access level); a token arriving after one of them changed is refused.",
293
+ ),
294
+ })
295
+ .optional()
296
+ .describe(
297
+ "This card's credential is a delegated OAuth refresh token the extension's own CLI or process obtains and rotates. They store it through `POST /capabilities/{id}/oauth-token` (an extension process also needs that route in `permissions.daemon`) instead of printing it for someone to paste.",
298
+ ),
267
299
  // Only narrows what the credential may do, so it carries no effect: nothing here grants the extension reach.
268
300
  hosts: z
269
301
  .array(z.string().min(1))
@@ -356,6 +388,15 @@ export const CapabilityContributionSchema = z
356
388
  if (spec.kind !== "cli") {
357
389
  return;
358
390
  }
391
+ if (spec.refreshToken !== undefined) {
392
+ const declared = new Map(spec.fields.map((field) => [field.key, field]));
393
+ if (declared.get(spec.refreshToken.field)?.secret !== true) {
394
+ ctx.addIssue({ code: "custom", message: `refreshToken.field "${spec.refreshToken.field}" must name a secret field` });
395
+ }
396
+ for (const key of spec.refreshToken.boundTo.filter((candidate) => !declared.has(candidate) || candidate === spec.refreshToken?.field)) {
397
+ ctx.addIssue({ code: "custom", message: `refreshToken.boundTo names "${key}", which is not another field of this card` });
398
+ }
399
+ }
359
400
  for (const field of spec.fields.filter((candidate) => candidate.totp === true)) {
360
401
  if (Object.values(spec.env).some((template) => template.includes(`\${${field.key}}`) || template.includes(`\${${field.key}:uri}`))) {
361
402
  ctx.addIssue({