agentfootprint 12.0.0 → 12.0.1

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 (68) hide show
  1. package/dist/answer-account/templates.js +12 -6
  2. package/dist/answer-account/templates.js.map +1 -1
  3. package/dist/answer-validation/types.js.map +1 -1
  4. package/dist/core/agent/assessment/assess.js +94 -32
  5. package/dist/core/agent/assessment/assess.js.map +1 -1
  6. package/dist/core/agent/assessment/reasons.js +2 -2
  7. package/dist/core/agent/assessment/reasons.js.map +1 -1
  8. package/dist/core/agent/assessment/sources.js +61 -23
  9. package/dist/core/agent/assessment/sources.js.map +1 -1
  10. package/dist/core/agent/negativeClaims/delivery.js +10 -1
  11. package/dist/core/agent/negativeClaims/delivery.js.map +1 -1
  12. package/dist/esm/answer-account/templates.d.ts +1 -1
  13. package/dist/esm/answer-account/templates.js +12 -6
  14. package/dist/esm/answer-account/templates.js.map +1 -1
  15. package/dist/esm/answer-validation/types.d.ts +10 -0
  16. package/dist/esm/answer-validation/types.js.map +1 -1
  17. package/dist/esm/core/agent/assessment/assess.d.ts +6 -3
  18. package/dist/esm/core/agent/assessment/assess.js +95 -33
  19. package/dist/esm/core/agent/assessment/assess.js.map +1 -1
  20. package/dist/esm/core/agent/assessment/reasons.js +2 -2
  21. package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
  22. package/dist/esm/core/agent/assessment/sources.d.ts +26 -1
  23. package/dist/esm/core/agent/assessment/sources.js +59 -22
  24. package/dist/esm/core/agent/assessment/sources.js.map +1 -1
  25. package/dist/esm/core/agent/assessment/types.d.ts +3 -1
  26. package/dist/esm/core/agent/negativeClaims/delivery.d.ts +9 -1
  27. package/dist/esm/core/agent/negativeClaims/delivery.js +10 -1
  28. package/dist/esm/core/agent/negativeClaims/delivery.js.map +1 -1
  29. package/dist/esm/identity/types.d.ts +12 -0
  30. package/dist/esm/identity/types.js.map +1 -1
  31. package/dist/esm/identity/withCredentialRetry.d.ts +5 -0
  32. package/dist/esm/identity/withCredentialRetry.js +16 -3
  33. package/dist/esm/identity/withCredentialRetry.js.map +1 -1
  34. package/dist/esm/lib/boundedJson.d.ts +27 -0
  35. package/dist/esm/lib/boundedJson.js +33 -0
  36. package/dist/esm/lib/boundedJson.js.map +1 -1
  37. package/dist/esm/mcp/gatewayTransport.d.ts +8 -0
  38. package/dist/esm/mcp/gatewayTransport.js +35 -2
  39. package/dist/esm/mcp/gatewayTransport.js.map +1 -1
  40. package/dist/identity/types.js.map +1 -1
  41. package/dist/identity/withCredentialRetry.js +16 -3
  42. package/dist/identity/withCredentialRetry.js.map +1 -1
  43. package/dist/lib/boundedJson.js +35 -1
  44. package/dist/lib/boundedJson.js.map +1 -1
  45. package/dist/mcp/gatewayTransport.js +35 -2
  46. package/dist/mcp/gatewayTransport.js.map +1 -1
  47. package/dist/types/answer-account/templates.d.ts +1 -1
  48. package/dist/types/answer-account/templates.d.ts.map +1 -1
  49. package/dist/types/answer-validation/types.d.ts +10 -0
  50. package/dist/types/answer-validation/types.d.ts.map +1 -1
  51. package/dist/types/core/agent/assessment/assess.d.ts +6 -3
  52. package/dist/types/core/agent/assessment/assess.d.ts.map +1 -1
  53. package/dist/types/core/agent/assessment/reasons.d.ts.map +1 -1
  54. package/dist/types/core/agent/assessment/sources.d.ts +26 -1
  55. package/dist/types/core/agent/assessment/sources.d.ts.map +1 -1
  56. package/dist/types/core/agent/assessment/types.d.ts +3 -1
  57. package/dist/types/core/agent/assessment/types.d.ts.map +1 -1
  58. package/dist/types/core/agent/negativeClaims/delivery.d.ts +9 -1
  59. package/dist/types/core/agent/negativeClaims/delivery.d.ts.map +1 -1
  60. package/dist/types/identity/types.d.ts +12 -0
  61. package/dist/types/identity/types.d.ts.map +1 -1
  62. package/dist/types/identity/withCredentialRetry.d.ts +5 -0
  63. package/dist/types/identity/withCredentialRetry.d.ts.map +1 -1
  64. package/dist/types/lib/boundedJson.d.ts +27 -0
  65. package/dist/types/lib/boundedJson.d.ts.map +1 -1
  66. package/dist/types/mcp/gatewayTransport.d.ts +8 -0
  67. package/dist/types/mcp/gatewayTransport.d.ts.map +1 -1
  68. package/package.json +1 -1
@@ -20,5 +20,13 @@ export declare function renderNegativeCandidate(candidate: unknown, config: Nega
20
20
  correction: boolean;
21
21
  allowed: boolean;
22
22
  };
23
- /** Merge negative verdicts without manufacturing a successful host comparison. */
23
+ /**
24
+ * Merge negative verdicts without manufacturing a successful host comparison.
25
+ *
26
+ * THE ONE PROJECTION of a negative row onto the report: its code becomes the
27
+ * check's `reason`, and the tools it names stay `tools` — the answer's fold
28
+ * reads both off this row (`assessment/assess.ts` · `readAnswerRows`,
29
+ * `assessment/sources.ts` · `callsOfCheck`), so a field it reads is never
30
+ * left behind here. A row that names no tool carries no `tools`.
31
+ */
24
32
  export declare function reportWithNegatives(report: AnswerValidationReport, answer: AnswerNegatives, allowed: boolean): AnswerValidationReport;
@@ -219,13 +219,22 @@ export function renderNegativeCandidate(candidate, config, record, trusted, inte
219
219
  };
220
220
  return { candidate: { ...source, [config.field]: claims }, answer, correction, allowed };
221
221
  }
222
- /** Merge negative verdicts without manufacturing a successful host comparison. */
222
+ /**
223
+ * Merge negative verdicts without manufacturing a successful host comparison.
224
+ *
225
+ * THE ONE PROJECTION of a negative row onto the report: its code becomes the
226
+ * check's `reason`, and the tools it names stay `tools` — the answer's fold
227
+ * reads both off this row (`assessment/assess.ts` · `readAnswerRows`,
228
+ * `assessment/sources.ts` · `callsOfCheck`), so a field it reads is never
229
+ * left behind here. A row that names no tool carries no `tools`.
230
+ */
223
231
  export function reportWithNegatives(report, answer, allowed) {
224
232
  const rows = answer.checks.map((row) => ({
225
233
  id: row.id,
226
234
  path: row.path,
227
235
  disposition: row.disposition,
228
236
  reason: row.code,
237
+ ...(row.tools.length > 0 && { tools: [...row.tools] }),
229
238
  }));
230
239
  const checks = [...report.checks, ...rows];
231
240
  const failed = checks.filter((row) => row.disposition === 'checked-fail').length;
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../../../src/core/agent/negativeClaims/delivery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../../../src/core/agent/negativeClaims/delivery.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,18 @@ export interface CredentialRequest {
79
79
  readonly request?: RequestContext;
80
80
  /** Force a fresh authorization, bypassing any cached/refresh token. */
81
81
  readonly forceReauth?: boolean;
82
+ /**
83
+ * The abort signal of the request this credential is for — present when the
84
+ * caller has one, as `gatewayTransport` does for every request it vends for.
85
+ *
86
+ * A provider that does work of its own (a token endpoint, a vault, an SDK
87
+ * call) should hand it on and stop when it fires: the request it would serve
88
+ * has been cancelled or ran out of time. Ignoring it is safe, never a leak:
89
+ * the caller stops waiting at the abort and never uses a credential that
90
+ * arrives after it. It is a live object, not data: never put it in a cache
91
+ * key, a log line or an error message.
92
+ */
93
+ readonly signal?: AbortSignal;
82
94
  }
83
95
  /**
84
96
  * A credential, ready to apply to a downstream request. It carries its `kind`
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/identity/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAgHH,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CAAC,CAAmB;IACpD,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAgBD;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,EAAE,EAAE,cAAc;QAClB,aAAa,CAAC,GAAsB;YAClC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,4DAA4D,GAAG,CAAC,OAAO,QAAQ;gBAC7E,wEAAwE;gBACxE,gEAAgE,CACnE,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/identity/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AA4HH,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CAAC,CAAmB;IACpD,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAgBD;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,EAAE,EAAE,cAAc;QAClB,aAAa,CAAC,GAAsB;YAClC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,4DAA4D,GAAG,CAAC,OAAO,QAAQ;gBAC7E,wEAAwE;gBACxE,gEAAgE,CACnE,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -25,6 +25,11 @@
25
25
  * `issued` is success; `authorization-required` is a HUMAN flow (3LO
26
26
  * consent), not a transient fault — retrying it would hammer the IdP
27
27
  * without the user having authorized anything.
28
+ * • The request's `signal` (`CredentialRequest.signal`) is passed through to
29
+ * the wrapped provider, ends the backoff wait, and is checked immediately
30
+ * before every attempt, the first included: a request whose signal has
31
+ * fired never asks the provider (again), and the call rejects with the
32
+ * abort. An attempt already running is the provider's to stop.
28
33
  * • After retries exhaust, the LAST error is rethrown — the call site
29
34
  * behaves byte-identically to an unwrapped provider (fail-closed:
30
35
  * `agentfootprint.credential.failed` emit + error tool result; the tool
@@ -25,6 +25,11 @@
25
25
  * `issued` is success; `authorization-required` is a HUMAN flow (3LO
26
26
  * consent), not a transient fault — retrying it would hammer the IdP
27
27
  * without the user having authorized anything.
28
+ * • The request's `signal` (`CredentialRequest.signal`) is passed through to
29
+ * the wrapped provider, ends the backoff wait, and is checked immediately
30
+ * before every attempt, the first included: a request whose signal has
31
+ * fired never asks the provider (again), and the call rejects with the
32
+ * abort. An attempt already running is the provider's to stop.
28
33
  * • After retries exhaust, the LAST error is rethrown — the call site
29
34
  * behaves byte-identically to an unwrapped provider (fail-closed:
30
35
  * `agentfootprint.credential.failed` emit + error tool result; the tool
@@ -45,6 +50,7 @@
45
50
  * });
46
51
  * const agent = Agent.create({ provider, model, credentials }).tools([...]).build();
47
52
  */
53
+ import { abortErrorOf, throwIfAborted } from '../lib/abort.js';
48
54
  import { sleep } from '../lib/sleep.js';
49
55
  import { defaultShouldRetry } from '../resilience/withRetry.js';
50
56
  /**
@@ -67,6 +73,11 @@ export function withCredentialRetry(provider, options = {}) {
67
73
  async getCredential(req) {
68
74
  let lastError;
69
75
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
76
+ // Immediately before EVERY attempt, the first included: a request whose
77
+ // signal has fired never asks the provider — not before the first
78
+ // attempt, and not after a wait or an `onRetry` that cancelled it (a
79
+ // zero wait never consults the signal).
80
+ throwIfAborted(req.signal);
70
81
  try {
71
82
  // Both result branches return as-is (same object — the wrapper never
72
83
  // clones or serializes the credential): `issued` is success;
@@ -75,14 +86,16 @@ export function withCredentialRetry(provider, options = {}) {
75
86
  }
76
87
  catch (err) {
77
88
  lastError = err;
89
+ // A failure that lands after the abort is the abort, whatever
90
+ // `shouldRetry` says: nobody is waiting for the credential (`lib/abort.ts`).
91
+ throwIfAborted(req.signal);
78
92
  if (attempt >= maxAttempts || !shouldRetry(err, attempt)) {
79
93
  throw err;
80
94
  }
81
95
  const delay = Math.min(maxDelayMs, initialDelayMs * Math.pow(backoffFactor, attempt - 1));
82
96
  onRetry?.(err, attempt + 1, delay);
83
- // `CredentialRequest` carries no AbortSignal (port contract), so the
84
- // wait has none to honour. If the port ever grows one, pass it here.
85
- await sleep(delay);
97
+ // The request's signal (`CredentialRequest.signal`) ends the wait too.
98
+ await sleep(delay, req.signal, abortErrorOf);
86
99
  }
87
100
  }
88
101
  // Unreachable — the last attempt either returned or threw above.
@@ -1 +1 @@
1
- {"version":3,"file":"withCredentialRetry.js","sourceRoot":"","sources":["../../../src/identity/withCredentialRetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAyB,MAAM,4BAA4B,CAAC;AAUvF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA4B,EAC5B,UAAsC,EAAE;IAExC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC;IACrD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,OAAO;QACL,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ;QAC1B,KAAK,CAAC,aAAa,CAAC,GAAsB;YACxC,IAAI,SAAkB,CAAC;YACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,qEAAqE;oBACrE,6DAA6D;oBAC7D,oEAAoE;oBACpE,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,CAAC;oBAChB,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBACzD,MAAM,GAAG,CAAC;oBACZ,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1F,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnC,qEAAqE;oBACrE,qEAAqE;oBACrE,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,iEAAiE;YACjE,MAAM,SAAS,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"withCredentialRetry.js","sourceRoot":"","sources":["../../../src/identity/withCredentialRetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAyB,MAAM,4BAA4B,CAAC;AAUvF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA4B,EAC5B,UAAsC,EAAE;IAExC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC;IACrD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,OAAO;QACL,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ;QAC1B,KAAK,CAAC,aAAa,CAAC,GAAsB;YACxC,IAAI,SAAkB,CAAC;YACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACxD,wEAAwE;gBACxE,kEAAkE;gBAClE,qEAAqE;gBACrE,wCAAwC;gBACxC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,CAAC;oBACH,qEAAqE;oBACrE,6DAA6D;oBAC7D,oEAAoE;oBACpE,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,CAAC;oBAChB,8DAA8D;oBAC9D,6EAA6E;oBAC7E,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC3B,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBACzD,MAAM,GAAG,CAAC;oBACZ,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1F,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnC,uEAAuE;oBACvE,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,iEAAiE;YACjE,MAAM,SAAS,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,30 @@
1
1
  export declare function ownData(value: unknown, allowed?: readonly string[]): Record<string, unknown>;
2
+ /** A list as {@link readOwnList} read it. */
3
+ export interface OwnList {
4
+ /** The entries read, in index order — a hole or an accessor entry is `undefined` (its getter never called). */
5
+ readonly entries: readonly unknown[];
6
+ /** How many entries the list holds past the bound — counted, never read. */
7
+ readonly unread: number;
8
+ }
9
+ /**
10
+ * Read a list the way {@link copyJson} reads an array — a plain array only
11
+ * (`Array.prototype`), its own `length`, the own DATA property at each index —
12
+ * as a READER that never refuses: at most `maxEntries` entries, a hole or an
13
+ * accessor entry read as `undefined` (the getter is never called), and the
14
+ * entries past the bound counted in `unread`, never walked. It never calls the
15
+ * list's iterator, a getter or a method, so a list from a record the library
16
+ * did not build cannot hide its entries or run code inside the reader.
17
+ * `undefined` when `value` is not a plain array: the caller says what that
18
+ * means for its own question, the conservative way.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const list = ['a'];
23
+ * list.length = 3; // a hole at 1 and 2
24
+ * Object.defineProperty(list, Symbol.iterator, { value: function* () {} }); // never called
25
+ * readOwnList(list, 2); // { entries: ['a', undefined], unread: 1 }
26
+ * ```
27
+ */
28
+ export declare function readOwnList(value: unknown, maxEntries: number): OwnList | undefined;
2
29
  /** JSON copy without invoking toJSON/getters or silently dropping data. */
3
30
  export declare function copyJson(value: unknown, maxBytes: number, freeze: boolean, maxDepth?: number): unknown;
@@ -17,6 +17,39 @@ export function ownData(value, allowed) {
17
17
  }
18
18
  return result;
19
19
  }
20
+ /**
21
+ * Read a list the way {@link copyJson} reads an array — a plain array only
22
+ * (`Array.prototype`), its own `length`, the own DATA property at each index —
23
+ * as a READER that never refuses: at most `maxEntries` entries, a hole or an
24
+ * accessor entry read as `undefined` (the getter is never called), and the
25
+ * entries past the bound counted in `unread`, never walked. It never calls the
26
+ * list's iterator, a getter or a method, so a list from a record the library
27
+ * did not build cannot hide its entries or run code inside the reader.
28
+ * `undefined` when `value` is not a plain array: the caller says what that
29
+ * means for its own question, the conservative way.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const list = ['a'];
34
+ * list.length = 3; // a hole at 1 and 2
35
+ * Object.defineProperty(list, Symbol.iterator, { value: function* () {} }); // never called
36
+ * readOwnList(list, 2); // { entries: ['a', undefined], unread: 1 }
37
+ * ```
38
+ */
39
+ export function readOwnList(value, maxEntries) {
40
+ if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype)
41
+ return undefined;
42
+ const length = Object.getOwnPropertyDescriptor(value, 'length')?.value;
43
+ if (typeof length !== 'number' || !Number.isSafeInteger(length) || length < 0)
44
+ return undefined;
45
+ const read = Math.min(length, maxEntries);
46
+ const entries = [];
47
+ for (let index = 0; index < read; index++) {
48
+ const slot = Object.getOwnPropertyDescriptor(value, String(index));
49
+ entries.push(slot !== undefined && 'value' in slot ? slot.value : undefined);
50
+ }
51
+ return { entries, unread: length - read };
52
+ }
20
53
  /** JSON copy without invoking toJSON/getters or silently dropping data. */
21
54
  export function copyJson(value, maxBytes, freeze, maxDepth = 100) {
22
55
  if (!Number.isSafeInteger(maxDepth) || maxDepth < 0 || maxDepth > 256)
@@ -1 +1 @@
1
- {"version":3,"file":"boundedJson.js","sourceRoot":"","sources":["../../../src/lib/boundedJson.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boundedJson.js","sourceRoot":"","sources":["../../../src/lib/boundedJson.ts"],"names":[],"mappings":"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"}
@@ -146,6 +146,14 @@ export type FetchLike = (input: string | URL | Request, init?: RequestInit) => P
146
146
  * Build the `fetch` the MCP SDK will use: one that vends a credential, applies
147
147
  * it to this one request, and keeps nothing.
148
148
  *
149
+ * The vend is a wait, and it honours the request's abort signal — resolved as
150
+ * fetch resolves it (`init.signal`, else a Request input's own): the provider
151
+ * is handed it (`CredentialRequest.signal`), the wait ends at the abort with the
152
+ * abort, and the signal is checked again once the credential arrives. So an
153
+ * aborted or timed-out request is never sent: the gateway stops waiting and
154
+ * never uses a late credential. A provider that ignores cancellation may still
155
+ * finish its own work.
156
+ *
149
157
  * Exported for tests — the secrecy invariant is asserted against this function
150
158
  * directly, because that is where a leak would happen and driving a whole SDK
151
159
  * to reach it would test less while looking like it tested more.
@@ -34,6 +34,7 @@
34
34
  * Pattern: Adapter + Decorator over `fetch`. Role: Layer-3 tool integration.
35
35
  */
36
36
  import { isCredentialIssued } from '../identity/types.js';
37
+ import { throwIfAborted, untilAborted } from '../lib/abort.js';
37
38
  const DEFAULT_SERVICE = 'gateway';
38
39
  /**
39
40
  * Describe an MCP connection whose auth headers are vended per request.
@@ -88,10 +89,29 @@ export class GatewayAuthorizationRequiredError extends Error {
88
89
  this.authorizationUrl = authorizationUrl;
89
90
  }
90
91
  }
92
+ /**
93
+ * The signal `fetch(input, init)` would honour — fetch's own rule, as
94
+ * `new Request(input, init)` applies it: an `init` that names a `signal`
95
+ * replaces the Request's, and `null` there means no signal at all; otherwise a
96
+ * Request input keeps its own.
97
+ */
98
+ function effectiveSignal(input, init) {
99
+ if (init?.signal !== undefined)
100
+ return init.signal ?? undefined;
101
+ return typeof Request !== 'undefined' && input instanceof Request ? input.signal : undefined;
102
+ }
91
103
  /**
92
104
  * Build the `fetch` the MCP SDK will use: one that vends a credential, applies
93
105
  * it to this one request, and keeps nothing.
94
106
  *
107
+ * The vend is a wait, and it honours the request's abort signal — resolved as
108
+ * fetch resolves it (`init.signal`, else a Request input's own): the provider
109
+ * is handed it (`CredentialRequest.signal`), the wait ends at the abort with the
110
+ * abort, and the signal is checked again once the credential arrives. So an
111
+ * aborted or timed-out request is never sent: the gateway stops waiting and
112
+ * never uses a late credential. A provider that ignores cancellation may still
113
+ * finish its own work.
114
+ *
95
115
  * Exported for tests — the secrecy invariant is asserted against this function
96
116
  * directly, because that is where a leak would happen and driving a whole SDK
97
117
  * to reach it would test less while looking like it tested more.
@@ -100,11 +120,24 @@ export class GatewayAuthorizationRequiredError extends Error {
100
120
  */
101
121
  export function createVendingFetch(transport, baseFetch = globalThis.fetch.bind(globalThis)) {
102
122
  return async (input, init) => {
103
- const result = await transport.credentials.getCredential({
123
+ // The request's own signal, as fetch itself resolves it: the transport's,
124
+ // plus — for a dispatched call or under a deadline — the cancellation the
125
+ // retry series links in; or a Request input's own.
126
+ const signal = effectiveSignal(input, init);
127
+ // An aborted request asks no provider and sends nothing (`lib/abort.ts`).
128
+ throwIfAborted(signal);
129
+ // The provider gets the signal, to stop its own work. The wait is raced
130
+ // against it, so a provider that ignores it cannot hold the request open.
131
+ const result = await untilAborted(transport.credentials.getCredential({
104
132
  service: transport.service,
105
133
  ...(transport.scopes !== undefined && { scopes: transport.scopes }),
106
134
  ...(transport.mode !== undefined && { mode: transport.mode }),
107
- });
135
+ ...(signal !== undefined && { signal }),
136
+ }), signal);
137
+ // Checked again once the credential is here, before the request is handed
138
+ // on: a credential that lands after the abort is never used, so an aborted
139
+ // or timed-out request is never sent, however late the provider answers.
140
+ throwIfAborted(signal);
108
141
  if (!isCredentialIssued(result)) {
109
142
  throw new GatewayAuthorizationRequiredError(transport.service, result.authorizationUrl);
110
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gatewayTransport.js","sourceRoot":"","sources":["../../../src/mcp/gatewayTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gatewayTransport.js","sourceRoot":"","sources":["../../../src/mcp/gatewayTransport.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/identity/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAgHH,yEAAyE;AACzE,SAAgB,kBAAkB,CAAC,CAAmB;IACpD,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAFD,gDAEC;AAgBD;;;;;;GAMG;AACH,SAAgB,8BAA8B;IAC5C,OAAO;QACL,EAAE,EAAE,cAAc;QAClB,aAAa,CAAC,GAAsB;YAClC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,4DAA4D,GAAG,CAAC,OAAO,QAAQ;gBAC7E,wEAAwE;gBACxE,gEAAgE,CACnE,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAbD,wEAaC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/identity/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AA4HH,yEAAyE;AACzE,SAAgB,kBAAkB,CAAC,CAAmB;IACpD,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAFD,gDAEC;AAgBD;;;;;;GAMG;AACH,SAAgB,8BAA8B;IAC5C,OAAO;QACL,EAAE,EAAE,cAAc;QAClB,aAAa,CAAC,GAAsB;YAClC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,4DAA4D,GAAG,CAAC,OAAO,QAAQ;gBAC7E,wEAAwE;gBACxE,gEAAgE,CACnE,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAbD,wEAaC"}
@@ -26,6 +26,11 @@
26
26
  * `issued` is success; `authorization-required` is a HUMAN flow (3LO
27
27
  * consent), not a transient fault — retrying it would hammer the IdP
28
28
  * without the user having authorized anything.
29
+ * • The request's `signal` (`CredentialRequest.signal`) is passed through to
30
+ * the wrapped provider, ends the backoff wait, and is checked immediately
31
+ * before every attempt, the first included: a request whose signal has
32
+ * fired never asks the provider (again), and the call rejects with the
33
+ * abort. An attempt already running is the provider's to stop.
29
34
  * • After retries exhaust, the LAST error is rethrown — the call site
30
35
  * behaves byte-identically to an unwrapped provider (fail-closed:
31
36
  * `agentfootprint.credential.failed` emit + error tool result; the tool
@@ -48,6 +53,7 @@
48
53
  */
49
54
  Object.defineProperty(exports, "__esModule", { value: true });
50
55
  exports.withCredentialRetry = void 0;
56
+ const abort_js_1 = require("../lib/abort.js");
51
57
  const sleep_js_1 = require("../lib/sleep.js");
52
58
  const withRetry_js_1 = require("../resilience/withRetry.js");
53
59
  /**
@@ -70,6 +76,11 @@ function withCredentialRetry(provider, options = {}) {
70
76
  async getCredential(req) {
71
77
  let lastError;
72
78
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
79
+ // Immediately before EVERY attempt, the first included: a request whose
80
+ // signal has fired never asks the provider — not before the first
81
+ // attempt, and not after a wait or an `onRetry` that cancelled it (a
82
+ // zero wait never consults the signal).
83
+ (0, abort_js_1.throwIfAborted)(req.signal);
73
84
  try {
74
85
  // Both result branches return as-is (same object — the wrapper never
75
86
  // clones or serializes the credential): `issued` is success;
@@ -78,14 +89,16 @@ function withCredentialRetry(provider, options = {}) {
78
89
  }
79
90
  catch (err) {
80
91
  lastError = err;
92
+ // A failure that lands after the abort is the abort, whatever
93
+ // `shouldRetry` says: nobody is waiting for the credential (`lib/abort.ts`).
94
+ (0, abort_js_1.throwIfAborted)(req.signal);
81
95
  if (attempt >= maxAttempts || !shouldRetry(err, attempt)) {
82
96
  throw err;
83
97
  }
84
98
  const delay = Math.min(maxDelayMs, initialDelayMs * Math.pow(backoffFactor, attempt - 1));
85
99
  onRetry?.(err, attempt + 1, delay);
86
- // `CredentialRequest` carries no AbortSignal (port contract), so the
87
- // wait has none to honour. If the port ever grows one, pass it here.
88
- await (0, sleep_js_1.sleep)(delay);
100
+ // The request's signal (`CredentialRequest.signal`) ends the wait too.
101
+ await (0, sleep_js_1.sleep)(delay, req.signal, abort_js_1.abortErrorOf);
89
102
  }
90
103
  }
91
104
  // Unreachable — the last attempt either returned or threw above.
@@ -1 +1 @@
1
- {"version":3,"file":"withCredentialRetry.js","sourceRoot":"","sources":["../../src/identity/withCredentialRetry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;;;AAEH,8CAAwC;AACxC,6DAAuF;AAUvF;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,QAA4B,EAC5B,UAAsC,EAAE;IAExC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC;IACrD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iCAAkB,CAAC;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,OAAO;QACL,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ;QAC1B,KAAK,CAAC,aAAa,CAAC,GAAsB;YACxC,IAAI,SAAkB,CAAC;YACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,qEAAqE;oBACrE,6DAA6D;oBAC7D,oEAAoE;oBACpE,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,CAAC;oBAChB,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBACzD,MAAM,GAAG,CAAC;oBACZ,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1F,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnC,qEAAqE;oBACrE,qEAAqE;oBACrE,MAAM,IAAA,gBAAK,EAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,iEAAiE;YACjE,MAAM,SAAS,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AArCD,kDAqCC"}
1
+ {"version":3,"file":"withCredentialRetry.js","sourceRoot":"","sources":["../../src/identity/withCredentialRetry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;;;AAEH,8CAA+D;AAC/D,8CAAwC;AACxC,6DAAuF;AAUvF;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,QAA4B,EAC5B,UAAsC,EAAE;IAExC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC;IACrD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iCAAkB,CAAC;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,OAAO;QACL,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ;QAC1B,KAAK,CAAC,aAAa,CAAC,GAAsB;YACxC,IAAI,SAAkB,CAAC;YACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACxD,wEAAwE;gBACxE,kEAAkE;gBAClE,qEAAqE;gBACrE,wCAAwC;gBACxC,IAAA,yBAAc,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,CAAC;oBACH,qEAAqE;oBACrE,6DAA6D;oBAC7D,oEAAoE;oBACpE,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,CAAC;oBAChB,8DAA8D;oBAC9D,6EAA6E;oBAC7E,IAAA,yBAAc,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC3B,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBACzD,MAAM,GAAG,CAAC;oBACZ,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1F,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnC,uEAAuE;oBACvE,MAAM,IAAA,gBAAK,EAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAY,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,iEAAiE;YACjE,MAAM,SAAS,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AA5CD,kDA4CC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.copyJson = exports.ownData = void 0;
3
+ exports.copyJson = exports.readOwnList = exports.ownData = void 0;
4
4
  /** Strict, bounded JSON data helpers shared by internal validation boundaries. */
5
5
  const encoder = new TextEncoder();
6
6
  function ownData(value, allowed) {
@@ -21,6 +21,40 @@ function ownData(value, allowed) {
21
21
  return result;
22
22
  }
23
23
  exports.ownData = ownData;
24
+ /**
25
+ * Read a list the way {@link copyJson} reads an array — a plain array only
26
+ * (`Array.prototype`), its own `length`, the own DATA property at each index —
27
+ * as a READER that never refuses: at most `maxEntries` entries, a hole or an
28
+ * accessor entry read as `undefined` (the getter is never called), and the
29
+ * entries past the bound counted in `unread`, never walked. It never calls the
30
+ * list's iterator, a getter or a method, so a list from a record the library
31
+ * did not build cannot hide its entries or run code inside the reader.
32
+ * `undefined` when `value` is not a plain array: the caller says what that
33
+ * means for its own question, the conservative way.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * const list = ['a'];
38
+ * list.length = 3; // a hole at 1 and 2
39
+ * Object.defineProperty(list, Symbol.iterator, { value: function* () {} }); // never called
40
+ * readOwnList(list, 2); // { entries: ['a', undefined], unread: 1 }
41
+ * ```
42
+ */
43
+ function readOwnList(value, maxEntries) {
44
+ if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype)
45
+ return undefined;
46
+ const length = Object.getOwnPropertyDescriptor(value, 'length')?.value;
47
+ if (typeof length !== 'number' || !Number.isSafeInteger(length) || length < 0)
48
+ return undefined;
49
+ const read = Math.min(length, maxEntries);
50
+ const entries = [];
51
+ for (let index = 0; index < read; index++) {
52
+ const slot = Object.getOwnPropertyDescriptor(value, String(index));
53
+ entries.push(slot !== undefined && 'value' in slot ? slot.value : undefined);
54
+ }
55
+ return { entries, unread: length - read };
56
+ }
57
+ exports.readOwnList = readOwnList;
24
58
  /** JSON copy without invoking toJSON/getters or silently dropping data. */
25
59
  function copyJson(value, maxBytes, freeze, maxDepth = 100) {
26
60
  if (!Number.isSafeInteger(maxDepth) || maxDepth < 0 || maxDepth > 256)
@@ -1 +1 @@
1
- {"version":3,"file":"boundedJson.js","sourceRoot":"","sources":["../../src/lib/boundedJson.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boundedJson.js","sourceRoot":"","sources":["../../src/lib/boundedJson.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.createVendingFetch = exports.GatewayAuthorizationRequiredError = exports.gatewayTransport = void 0;
39
39
  const types_js_1 = require("../identity/types.js");
40
+ const abort_js_1 = require("../lib/abort.js");
40
41
  const DEFAULT_SERVICE = 'gateway';
41
42
  /**
42
43
  * Describe an MCP connection whose auth headers are vended per request.
@@ -93,10 +94,29 @@ class GatewayAuthorizationRequiredError extends Error {
93
94
  }
94
95
  }
95
96
  exports.GatewayAuthorizationRequiredError = GatewayAuthorizationRequiredError;
97
+ /**
98
+ * The signal `fetch(input, init)` would honour — fetch's own rule, as
99
+ * `new Request(input, init)` applies it: an `init` that names a `signal`
100
+ * replaces the Request's, and `null` there means no signal at all; otherwise a
101
+ * Request input keeps its own.
102
+ */
103
+ function effectiveSignal(input, init) {
104
+ if (init?.signal !== undefined)
105
+ return init.signal ?? undefined;
106
+ return typeof Request !== 'undefined' && input instanceof Request ? input.signal : undefined;
107
+ }
96
108
  /**
97
109
  * Build the `fetch` the MCP SDK will use: one that vends a credential, applies
98
110
  * it to this one request, and keeps nothing.
99
111
  *
112
+ * The vend is a wait, and it honours the request's abort signal — resolved as
113
+ * fetch resolves it (`init.signal`, else a Request input's own): the provider
114
+ * is handed it (`CredentialRequest.signal`), the wait ends at the abort with the
115
+ * abort, and the signal is checked again once the credential arrives. So an
116
+ * aborted or timed-out request is never sent: the gateway stops waiting and
117
+ * never uses a late credential. A provider that ignores cancellation may still
118
+ * finish its own work.
119
+ *
100
120
  * Exported for tests — the secrecy invariant is asserted against this function
101
121
  * directly, because that is where a leak would happen and driving a whole SDK
102
122
  * to reach it would test less while looking like it tested more.
@@ -105,11 +125,24 @@ exports.GatewayAuthorizationRequiredError = GatewayAuthorizationRequiredError;
105
125
  */
106
126
  function createVendingFetch(transport, baseFetch = globalThis.fetch.bind(globalThis)) {
107
127
  return async (input, init) => {
108
- const result = await transport.credentials.getCredential({
128
+ // The request's own signal, as fetch itself resolves it: the transport's,
129
+ // plus — for a dispatched call or under a deadline — the cancellation the
130
+ // retry series links in; or a Request input's own.
131
+ const signal = effectiveSignal(input, init);
132
+ // An aborted request asks no provider and sends nothing (`lib/abort.ts`).
133
+ (0, abort_js_1.throwIfAborted)(signal);
134
+ // The provider gets the signal, to stop its own work. The wait is raced
135
+ // against it, so a provider that ignores it cannot hold the request open.
136
+ const result = await (0, abort_js_1.untilAborted)(transport.credentials.getCredential({
109
137
  service: transport.service,
110
138
  ...(transport.scopes !== undefined && { scopes: transport.scopes }),
111
139
  ...(transport.mode !== undefined && { mode: transport.mode }),
112
- });
140
+ ...(signal !== undefined && { signal }),
141
+ }), signal);
142
+ // Checked again once the credential is here, before the request is handed
143
+ // on: a credential that lands after the abort is never used, so an aborted
144
+ // or timed-out request is never sent, however late the provider answers.
145
+ (0, abort_js_1.throwIfAborted)(signal);
113
146
  if (!(0, types_js_1.isCredentialIssued)(result)) {
114
147
  throw new GatewayAuthorizationRequiredError(transport.service, result.authorizationUrl);
115
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gatewayTransport.js","sourceRoot":"","sources":["../../src/mcp/gatewayTransport.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;;;AAEH,mDAAmF;AA8EnF,MAAM,eAAe,GAAG,SAAS,CAAC;AAElC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,gBAAgB,CAAC,OAAgC;IAC/D,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACtF,OAAO;QACL,SAAS,EAAE,SAAS;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,eAAe;QAC3C,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/D,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACzD,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QAClE,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAbD,4CAaC;AAED;;;;;;GAMG;AACH,MAAa,iCAAkC,SAAQ,KAAK;IACjD,IAAI,GAAG,oCAA6C,CAAC;IAC9D,sCAAsC;IAC7B,gBAAgB,CAAS;IAElC,YAAY,OAAe,EAAE,gBAAwB;QACnD,KAAK,CACH,8DAA8D,OAAO,kBAAkB;YACrF,qFAAqF;YACrF,sFAAsF;YACtF,4BAA4B,CAC/B,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF;AAfD,8EAeC;AAKD;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAChC,SAA8B,EAC9B,YAAuB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IAExD,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC;YACvD,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;YACnE,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;SAC9D,CAAC,CAAC;QACH,IAAI,CAAC,IAAA,6BAAkB,EAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,iCAAiC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC1F,CAAC;QAED,4EAA4E;QAC5E,sEAAsE;QACtE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5F,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,yEAAyE;QACzE,kEAAkE;QAClE,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AA1BD,gDA0BC"}
1
+ {"version":3,"file":"gatewayTransport.js","sourceRoot":"","sources":["../../src/mcp/gatewayTransport.ts"],"names":[],"mappings":"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"}