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.
- package/dist/answer-account/templates.js +12 -6
- package/dist/answer-account/templates.js.map +1 -1
- package/dist/answer-validation/types.js.map +1 -1
- package/dist/core/agent/assessment/assess.js +94 -32
- package/dist/core/agent/assessment/assess.js.map +1 -1
- package/dist/core/agent/assessment/reasons.js +2 -2
- package/dist/core/agent/assessment/reasons.js.map +1 -1
- package/dist/core/agent/assessment/sources.js +61 -23
- package/dist/core/agent/assessment/sources.js.map +1 -1
- package/dist/core/agent/negativeClaims/delivery.js +10 -1
- package/dist/core/agent/negativeClaims/delivery.js.map +1 -1
- package/dist/esm/answer-account/templates.d.ts +1 -1
- package/dist/esm/answer-account/templates.js +12 -6
- package/dist/esm/answer-account/templates.js.map +1 -1
- package/dist/esm/answer-validation/types.d.ts +10 -0
- package/dist/esm/answer-validation/types.js.map +1 -1
- package/dist/esm/core/agent/assessment/assess.d.ts +6 -3
- package/dist/esm/core/agent/assessment/assess.js +95 -33
- package/dist/esm/core/agent/assessment/assess.js.map +1 -1
- package/dist/esm/core/agent/assessment/reasons.js +2 -2
- package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
- package/dist/esm/core/agent/assessment/sources.d.ts +26 -1
- package/dist/esm/core/agent/assessment/sources.js +59 -22
- package/dist/esm/core/agent/assessment/sources.js.map +1 -1
- package/dist/esm/core/agent/assessment/types.d.ts +3 -1
- package/dist/esm/core/agent/negativeClaims/delivery.d.ts +9 -1
- package/dist/esm/core/agent/negativeClaims/delivery.js +10 -1
- package/dist/esm/core/agent/negativeClaims/delivery.js.map +1 -1
- package/dist/esm/identity/types.d.ts +12 -0
- package/dist/esm/identity/types.js.map +1 -1
- package/dist/esm/identity/withCredentialRetry.d.ts +5 -0
- package/dist/esm/identity/withCredentialRetry.js +16 -3
- package/dist/esm/identity/withCredentialRetry.js.map +1 -1
- package/dist/esm/lib/boundedJson.d.ts +27 -0
- package/dist/esm/lib/boundedJson.js +33 -0
- package/dist/esm/lib/boundedJson.js.map +1 -1
- package/dist/esm/mcp/gatewayTransport.d.ts +8 -0
- package/dist/esm/mcp/gatewayTransport.js +35 -2
- package/dist/esm/mcp/gatewayTransport.js.map +1 -1
- package/dist/identity/types.js.map +1 -1
- package/dist/identity/withCredentialRetry.js +16 -3
- package/dist/identity/withCredentialRetry.js.map +1 -1
- package/dist/lib/boundedJson.js +35 -1
- package/dist/lib/boundedJson.js.map +1 -1
- package/dist/mcp/gatewayTransport.js +35 -2
- package/dist/mcp/gatewayTransport.js.map +1 -1
- package/dist/types/answer-account/templates.d.ts +1 -1
- package/dist/types/answer-account/templates.d.ts.map +1 -1
- package/dist/types/answer-validation/types.d.ts +10 -0
- package/dist/types/answer-validation/types.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/assess.d.ts +6 -3
- package/dist/types/core/agent/assessment/assess.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/reasons.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/sources.d.ts +26 -1
- package/dist/types/core/agent/assessment/sources.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/types.d.ts +3 -1
- package/dist/types/core/agent/assessment/types.d.ts.map +1 -1
- package/dist/types/core/agent/negativeClaims/delivery.d.ts +9 -1
- package/dist/types/core/agent/negativeClaims/delivery.d.ts.map +1 -1
- package/dist/types/identity/types.d.ts +12 -0
- package/dist/types/identity/types.d.ts.map +1 -1
- package/dist/types/identity/withCredentialRetry.d.ts +5 -0
- package/dist/types/identity/withCredentialRetry.d.ts.map +1 -1
- package/dist/types/lib/boundedJson.d.ts +27 -0
- package/dist/types/lib/boundedJson.d.ts.map +1 -1
- package/dist/types/mcp/gatewayTransport.d.ts +8 -0
- package/dist/types/mcp/gatewayTransport.d.ts.map +1 -1
- 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
|
-
/**
|
|
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
|
-
/**
|
|
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":"AAAA;;mFAEmF;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AACpG,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,gDAAgD,CAAC;AAOxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAoBvD,MAAM,MAAM,GAAG,oBAAoB,CAAC;AACpC,MAAM,GAAG,GAAG,CAAC,CAAU,EAAgC,EAAE,CACvD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D;8EAC8E;AAC9E,SAAS,WAAW,CAAC,KAAe,EAAE,KAAe;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC3C,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,KAAK,KAAK,QAAQ;QACvB,IAAI,CAAC,IAAI,KAAK,MAAM;QACpB,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,IAAI,CAAC,QAAQ,KAAK,SAAS;QAC3B,IAAI,CAAC,KAAK,KAAK,SAAS,CAC3B,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACxB,OAAO,CAAC,IAAI,CACV,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAC5F,CACF,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,QAAQ,GAA0E;IACtF,sBAAsB,EAAE,kEAAkE;IAC1F,uBAAuB,EACrB,mFAAmF;IACrF,qBAAqB,EACnB,uHAAuH;IACzH,mBAAmB,EACjB,2FAA2F;IAC7F,qBAAqB,EACnB,6JAA6J;IAC/J,mBAAmB,EACjB,mHAAmH;IACrH,qBAAqB,EACnB,2EAA2E;IAC7E,uBAAuB,EACrB,oFAAoF;IACtF,qBAAqB,EACnB,4GAA4G;IAC9G,eAAe,EACb,oFAAoF;IACtF,kBAAkB,EAChB,mGAAmG;IACrG,4BAA4B,EAC1B,mFAAmF;IACrF,eAAe,EACb,6FAA6F;IAC/F,gBAAgB,EACd,yGAAyG;IAC3G,mBAAmB,EACjB,gGAAgG;IAClG,YAAY,EACV,iGAAiG;IACnG,iBAAiB,EACf,uGAAuG;IACzG,yBAAyB,EACvB,8EAA8E;CACjF,CAAC;AAEF,SAAS,UAAU,CAAC,GAAuB;IACzC,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,EAAE,CAAC;IAC1C,2EAA2E;IAC3E,gFAAgF;IAChF,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,CACL,mDAAmD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;QACxE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,wCAAwC,CACzC,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,KAAe,EAAE,KAAe,EAAW,EAAE,CACjE,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;IACjC,eAAe,CAAC,KAAK,CAAC;IACtB,KAAK,CAAC,SAAS,KAAK,WAAW;IAC/B,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;IACjC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;IACnC,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE7B,MAAM,UAAU,uBAAuB,CACrC,SAAkB,EAClB,MAA8B,EAC9B,MAAkB,EAClB,OAAoC,EACpC,iBAAiD,gBAAgB;IAEjE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC;IAClF,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,UAAU,GAAc,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,mBAAmB,CAAC;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,UAAU;QACrB,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,KAAK;QACrB,cAAc;KACf,CAAC,CAAC;IACH,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,UAAU,GACd,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;YAC7E,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,MAAM,UAAU,GACd,SAAS;YACT,GAAG,CAAC,GAAG,CAAC;YACR,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,UAAU,CAAC;YACzC,IAAI,CAAC,MAAM,GAAG,CAAC;YACf,IAAI,CAAC,MAAM,IAAI,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,MAAM,SAAS,GACb,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7F,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAyB,CAAC;QACjD,MAAM,IAAI,GAAG,CACX,IAAyB,EACzB,cAA8C,aAAa,EAC3D,EAAE;YACF,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACtC,CAAC,CAAC;QACF,IAAI,CAAC,SAAS;YACZ,IAAI,CACF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,mBAAmB;gBAC5D,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,qBAAqB,CAC1B,CAAC;aACC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;aAC7C,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,eAAe,CAAC,CAAC;aACtC,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;gBAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;iBAC5E,IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAClF;gBAED,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;QACD,6EAA6E;QAC7E,MAAM,WAAW,GACf,UAAU;YACV,KAAK,CAAC,MAAM,GAAG,CAAC;YAChB,KAAK,CAAC,KAAK,CACT,CAAC,IAAI,EAAE,EAAE,CACP,OAAO,CAAC,IAAI,CAAC;gBACb,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;gBACxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACpC,IAAI,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO;gBAC9B,IAAI,CAAC,OAAO,KAAK,IAAI,CACxB,CAAC;QACJ,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC;QAC/C,MAAM,QAAQ,GACZ,CAAC,WAAW,IAAI,WAAW;YACzB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;gBAC1B,OAAO,CAAC,KAAK,CAAC;gBACd,KAAK,CAAC,MAAM,KAAK,MAAM;gBACvB,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS;gBAC5B,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC;gBAC3D,KAAK,CAAC,OAAO,KAAK,IAAI;gBACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACrC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CACpD;YACH,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YACrB,GAAG,GAAG;gBACJ,GAAG,GAAG;gBACN,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAClF,CAAC;QACJ,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,SAAS,GAAG,WAAW;YACzB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI;YAC9B,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,wBAAwB,CACtB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,GAAG,KAAK,SAAS;oBACpB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CACjE,EACD,MAAM,CAAC,KAAK,EACZ;oBACE,OAAO;oBACP,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACrC,IAAI;wBACJ,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;qBAClC,CAAC,CAAC;iBACJ,CACF,CAAC,IAAI;gBACR,CAAC,CAAC,OAAO,CAAC;QACZ,0EAA0E;QAC1E,4EAA4E;QAC5E,IACE,KAAK,CAAC,IAAI,KAAK,UAAU;YACzB,GAAG,CAAC,IAAI,KAAK,mBAAmB;YAChC,WAAW;YACX,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAC,EAC3D,CAAC;YACD,MAAM,OAAO,GAAG,uBAAuB,CACrC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAChD,MAAM,EACN,MAAM,EACN,OAAO,EACP,cAAc,CACf,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;gBACrD,SAAS;oBACP,8EAA8E;wBAC9E,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvC,CAAC;QACH,CAAC;QACD,IACE,GAAG,CAAC,IAAI,KAAK,SAAS;YACtB,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;YACrD,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC;YACjD,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;YAEvB,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,UAAU,KAAK,GAAG,CAAC,IAAI,KAAK,qBAAqB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;QAC/E,MAAM,QAAQ,GAAG,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,EACL,WAAW,IAAI,WAAW;gBACxB,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CACzB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAC9E;gBACH,CAAC,CAAC,EAAE;YACR,SAAS,EAAE,SAAS,IAAI,uDAAuD;YAC/E,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,WAAW,IAAI,MAAM,CAAC,aAAa,KAAK,gBAAgB,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAC1B,CAAC,IAAI,EAAE,EAAE,CACP,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3B,IAAI,CAAC,QAAQ,KAAK,IAAI;YACtB,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;YACzB,eAAe,CAAC,IAAI,CAAC;YACrB,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO;gBAC7B,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;YACjF,IAAI,CAAC,OAAO,KAAK,IAAI;YACrB,OAAO,CAAC,IAAI,CAAC,CAChB,CAAC,MAAM;KACT,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAoB;QAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,OAAO;YACf,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC;gBAC5F,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,UAAU;YACd,CAAC,CAAC,UAAU;QACd,MAAM;QACN,MAAM;QACN,QAAQ;QACR,OAAO,EAAE,MAAM,CAAC,KAAK;aAClB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;aACxF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACnE,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3F,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CACjC,MAA8B,EAC9B,MAAuB,EACvB,OAAgB;IAEhB,MAAM,IAAI,GAAkB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,MAAM,EAAE,GAAG,CAAC,IAAI;KACjB,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,cAAc,CAAC,CAAC,MAAM,CAAC;IACjF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;IACrF,OAAO;QACL,GAAG,MAAM;QACT,MAAM;QACN,MAAM;QACN,WAAW;QACX,OAAO,EAAE,MAAM,CAAC,MAAM,CACpB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,cAAc,IAAI,GAAG,CAAC,WAAW,KAAK,cAAc,CAClF,CAAC,MAAM;QACR,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,gBAAgB,CAAC,CAAC,MAAM;QAClF,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;QAC9E,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;KACjD,CAAC;AACJ,CAAC"}
|
|
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;
|
|
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
|
-
//
|
|
84
|
-
|
|
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
|
|
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":"AAAA,kFAAkF;AAClF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,OAA2B;IACjE,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAEhE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,MAAM,MAAM,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAA4B,CAAC;IACvF,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAUD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,UAAkB;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAChG,MAAM,MAAM,GAAY,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;IAChF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CACtB,KAAc,EACd,QAAgB,EAChB,MAAe,EACf,QAAQ,GAAG,GAAG;IAEd,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,GAAG;QACnE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC;QAChB,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtD,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;QAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC9D,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,KAAa,EAAW,EAAE;QACrD,IAAI,KAAK,GAAG,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjE,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC/D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,CAAC,CAAC,CAAC;QACT,IAAI,MAAe,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,SAAS;gBACjD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACnF,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxE,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;oBACrD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC/C,IAAI,KAAK;oBAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,IAAI,KAAK,EAAE;oBAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,KAAK,CAAC,CAAC,CAAC,CAAC;gBACT,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;oBACjC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;oBACnC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,IAAI;oBACd,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjD,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,kBAAkB,EAA2B,MAAM,sBAAsB,CAAC;
|
|
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;;;
|
|
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
|
-
//
|
|
87
|
-
|
|
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
|
|
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"}
|
package/dist/lib/boundedJson.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"gatewayTransport.js","sourceRoot":"","sources":["../../src/mcp/gatewayTransport.ts"],"names":[],"mappings":"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"}
|