@cyanheads/mcp-ts-core 0.13.11 → 0.13.13
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/AGENTS.md +9 -8
- package/CLAUDE.md +9 -8
- package/README.md +1 -1
- package/changelog/0.13.x/0.13.12.md +50 -0
- package/changelog/0.13.x/0.13.13.md +93 -0
- package/dist/core/context.d.ts +12 -0
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +59 -14
- package/dist/core/context.js.map +1 -1
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js +21 -8
- package/dist/core/worker.js.map +1 -1
- package/dist/mcp-server/handlerContext.d.ts +14 -8
- package/dist/mcp-server/handlerContext.d.ts.map +1 -1
- package/dist/mcp-server/handlerContext.js +16 -9
- package/dist/mcp-server/handlerContext.js.map +1 -1
- package/dist/mcp-server/inputRequired.d.ts +18 -9
- package/dist/mcp-server/inputRequired.d.ts.map +1 -1
- package/dist/mcp-server/inputRequired.js +29 -15
- package/dist/mcp-server/inputRequired.js.map +1 -1
- package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -1
- package/dist/mcp-server/prompts/prompt-registration.js +10 -7
- package/dist/mcp-server/prompts/prompt-registration.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +29 -19
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/tools/utils/inputPrevalidation.d.ts +8 -2
- package/dist/mcp-server/tools/utils/inputPrevalidation.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/inputPrevalidation.js +18 -7
- package/dist/mcp-server/tools/utils/inputPrevalidation.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +7 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +107 -21
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +22 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js +29 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -1
- package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/lib/checkScopes.js +2 -1
- package/dist/mcp-server/transports/auth/lib/checkScopes.js.map +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.js +4 -2
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
- package/dist/services/mirror/sqlite/handle.d.ts +13 -2
- package/dist/services/mirror/sqlite/handle.d.ts.map +1 -1
- package/dist/services/mirror/sqlite/handle.js +17 -6
- package/dist/services/mirror/sqlite/handle.js.map +1 -1
- package/dist/services/mirror/sqlite/sqliteMirrorStore.d.ts.map +1 -1
- package/dist/services/mirror/sqlite/sqliteMirrorStore.js +3 -2
- package/dist/services/mirror/sqlite/sqliteMirrorStore.js.map +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts.map +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.js +48 -21
- package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -1
- package/dist/types-global/errors.d.ts.map +1 -1
- package/dist/types-global/errors.js +31 -16
- package/dist/types-global/errors.js.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.d.ts +29 -11
- package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.js +204 -95
- package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
- package/dist/utils/internal/error-handler/helpers.d.ts +91 -9
- package/dist/utils/internal/error-handler/helpers.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/helpers.js +243 -39
- package/dist/utils/internal/error-handler/helpers.js.map +1 -1
- package/dist/utils/internal/error-handler/types.d.ts +21 -4
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
- package/dist/utils/internal/logValue.d.ts +33 -0
- package/dist/utils/internal/logValue.d.ts.map +1 -0
- package/dist/utils/internal/logValue.js +539 -0
- package/dist/utils/internal/logValue.js.map +1 -0
- package/dist/utils/internal/logger.d.ts +38 -9
- package/dist/utils/internal/logger.d.ts.map +1 -1
- package/dist/utils/internal/logger.js +228 -118
- package/dist/utils/internal/logger.js.map +1 -1
- package/dist/utils/internal/observabilityCap.d.ts +35 -0
- package/dist/utils/internal/observabilityCap.d.ts.map +1 -0
- package/dist/utils/internal/observabilityCap.js +43 -0
- package/dist/utils/internal/observabilityCap.js.map +1 -0
- package/dist/utils/internal/performance.d.ts.map +1 -1
- package/dist/utils/internal/performance.js +9 -11
- package/dist/utils/internal/performance.js.map +1 -1
- package/dist/utils/internal/requestContext.d.ts +3 -3
- package/dist/utils/internal/requestContext.js +1 -1
- package/dist/utils/network/fetchWithTimeout.d.ts +20 -10
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
- package/dist/utils/network/fetchWithTimeout.js +112 -30
- package/dist/utils/network/fetchWithTimeout.js.map +1 -1
- package/dist/utils/network/httpError.d.ts +8 -6
- package/dist/utils/network/httpError.d.ts.map +1 -1
- package/dist/utils/network/httpError.js +23 -7
- package/dist/utils/network/httpError.js.map +1 -1
- package/dist/utils/network/retry.d.ts +25 -2
- package/dist/utils/network/retry.d.ts.map +1 -1
- package/dist/utils/network/retry.js +47 -5
- package/dist/utils/network/retry.js.map +1 -1
- package/dist/utils/security/sanitization.d.ts +24 -28
- package/dist/utils/security/sanitization.d.ts.map +1 -1
- package/dist/utils/security/sanitization.js +25 -84
- package/dist/utils/security/sanitization.js.map +1 -1
- package/dist/utils/security/sensitiveFields.d.ts +32 -4
- package/dist/utils/security/sensitiveFields.d.ts.map +1 -1
- package/dist/utils/security/sensitiveFields.js +85 -4
- package/dist/utils/security/sensitiveFields.js.map +1 -1
- package/dist/utils/telemetry/trace.d.ts +3 -1
- package/dist/utils/telemetry/trace.d.ts.map +1 -1
- package/dist/utils/telemetry/trace.js +6 -6
- package/dist/utils/telemetry/trace.js.map +1 -1
- package/framework-skills/api-auth/SKILL.md +3 -1
- package/framework-skills/api-canvas/SKILL.md +2 -2
- package/framework-skills/api-config/SKILL.md +2 -1
- package/framework-skills/api-context/SKILL.md +6 -6
- package/framework-skills/api-errors/SKILL.md +19 -17
- package/framework-skills/api-linter/SKILL.md +11 -10
- package/framework-skills/api-mirror/SKILL.md +3 -1
- package/framework-skills/api-telemetry/SKILL.md +14 -8
- package/framework-skills/api-utils/SKILL.md +6 -6
- package/framework-skills/api-utils/references/security.md +4 -2
- package/framework-skills/field-test/SKILL.md +2 -2
- package/framework-skills/git-wrapup/SKILL.md +3 -3
- package/framework-skills/tool-defs-analysis/SKILL.md +2 -2
- package/package.json +10 -9
- package/scripts/check-framework-antipatterns.ts +3 -2
- package/templates/.env.example +2 -0
- package/templates/tests/tools/echo.tool.test.ts +19 -1
|
@@ -9,6 +9,7 @@ import { withExtra } from '../internal/requestContext.js';
|
|
|
9
9
|
import { runtimeCaps } from '../internal/runtime.js';
|
|
10
10
|
import { httpStatusRetryability, httpStatusToErrorCode, selectErrorHeaders, } from './httpError.js';
|
|
11
11
|
import { readBoundedResponseText } from './responseBody.js';
|
|
12
|
+
import { causeChainForLog } from './retry.js';
|
|
12
13
|
import { createHistogram } from '../telemetry/metrics.js';
|
|
13
14
|
/** Default captured bytes of an upstream error response body. Keeps tool errors from poisoning the agent's context. */
|
|
14
15
|
const ERROR_BODY_LIMIT = 500;
|
|
@@ -36,12 +37,15 @@ export function initHttpClientMetrics() {
|
|
|
36
37
|
getHttpClientMetrics();
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* `?
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
40
|
+
* Names a URL by its origin for error messages and logs:
|
|
41
|
+
* `https://host/sk-key/reverse?lat=1` reads `https://host/…?…`. Credentials
|
|
42
|
+
* ride the query (`?api-key=…`, `?key=…`) and the path alike (Telegram's
|
|
43
|
+
* `/bot<token>/…`, webhook URLs, `https://host/<KEY>/…`), so both are elided
|
|
44
|
+
* behind a marker that still says one was there; a root URL keeps its bare
|
|
45
|
+
* origin (`https://example.com`). The fragment and any `user:pass@` userinfo
|
|
46
|
+
* (`URL.origin` omits it) are dropped. A caller that needs to tell endpoints
|
|
47
|
+
* apart labels the call through its context —
|
|
48
|
+
* `withExtra(ctx, { endpoint: 'reverse' })` — which every record carries.
|
|
45
49
|
*
|
|
46
50
|
* Fail-closed: an unparseable URL returns a fixed placeholder rather than
|
|
47
51
|
* echoing the raw (possibly secret-bearing) string.
|
|
@@ -52,14 +56,49 @@ export function initHttpClientMetrics() {
|
|
|
52
56
|
function redactUrl(url) {
|
|
53
57
|
try {
|
|
54
58
|
const parsed = url instanceof URL ? url : new URL(String(url));
|
|
55
|
-
const path = parsed.pathname === '/' ? '' :
|
|
56
|
-
const
|
|
57
|
-
return `${parsed.origin}${path}${
|
|
59
|
+
const path = parsed.pathname === '/' ? '' : '/…';
|
|
60
|
+
const query = parsed.search ? '?…' : '';
|
|
61
|
+
return `${parsed.origin}${path}${query}`;
|
|
58
62
|
}
|
|
59
63
|
catch {
|
|
60
64
|
return '[unparseable URL]';
|
|
61
65
|
}
|
|
62
66
|
}
|
|
67
|
+
/** An absolute `http:`/`https:` URL inside free text, up to the first quote, bracket, or space. */
|
|
68
|
+
const EMBEDDED_URL = /https?:\/\/[^\s"'`<>]+/gi;
|
|
69
|
+
/**
|
|
70
|
+
* Applies {@link redactUrl} to every URL inside a runtime's rejection text. The
|
|
71
|
+
* runtime's message is the one part of a network-error record this helper does
|
|
72
|
+
* not compose, and it can quote the request whole — Bun 1.4 rejects a malformed
|
|
73
|
+
* response with `Malformed_HTTP_Response fetching "<full URL>"`.
|
|
74
|
+
*/
|
|
75
|
+
function redactEmbeddedUrls(text) {
|
|
76
|
+
return text.replace(EMBEDDED_URL, (match) => redactUrl(match));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* `error` with its `message` set to `message`, written in place so the
|
|
80
|
+
* runtime's identity and transport `code` survive. A rejection that refuses
|
|
81
|
+
* the write — frozen, a getter-only or non-writable `message`, a
|
|
82
|
+
* `DOMException` — is replaced by an `Error` carrying its `name`, `message`,
|
|
83
|
+
* `cause`, and string `code`, so the redaction holds and the failure still
|
|
84
|
+
* classifies as a network error.
|
|
85
|
+
*/
|
|
86
|
+
function withRedactedMessage(error, message) {
|
|
87
|
+
if (error.message === message)
|
|
88
|
+
return error;
|
|
89
|
+
try {
|
|
90
|
+
error.message = message;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// A read-only `message` throws in a module; the stand-in below takes over.
|
|
94
|
+
}
|
|
95
|
+
if (error.message === message)
|
|
96
|
+
return error;
|
|
97
|
+
const standIn = new Error(message, error.cause === undefined ? undefined : { cause: error.cause });
|
|
98
|
+
standIn.name = error.name;
|
|
99
|
+
const { code } = error;
|
|
100
|
+
return typeof code === 'string' ? Object.assign(standIn, { code }) : standIn;
|
|
101
|
+
}
|
|
63
102
|
/**
|
|
64
103
|
* Parse a dotted-decimal IPv4 address. URL parsing canonicalizes unusual IPv4
|
|
65
104
|
* spellings (integer, octal, hexadecimal) before this point; DNS answers are
|
|
@@ -394,8 +433,10 @@ function withBodyDeadline(response, body, deadline) {
|
|
|
394
433
|
* aborted at the deadline rather than held open.
|
|
395
434
|
*
|
|
396
435
|
* When `options.rejectPrivateIPs` is `true`, the target URL is validated before the
|
|
397
|
-
* request is sent, and
|
|
398
|
-
* (up to 5 hops). This mode forces `redirect: 'manual'` on the
|
|
436
|
+
* request is sent, and every 3xx carrying a `Location` is followed manually with
|
|
437
|
+
* per-hop SSRF checks (up to 5 hops). This mode forces `redirect: 'manual'` on the
|
|
438
|
+
* underlying fetch. A hop the guard rejects throws the `ValidationError` the initial
|
|
439
|
+
* URL would, with no record here.
|
|
399
440
|
*
|
|
400
441
|
* Non-2xx responses are treated as errors. The response body is captured under a
|
|
401
442
|
* byte budget (`options.errorBodyLimit`, default {@link ERROR_BODY_LIMIT}) to avoid
|
|
@@ -405,8 +446,9 @@ function withBodyDeadline(response, body, deadline) {
|
|
|
405
446
|
* 404 → `NotFound`, 429 → `RateLimited`, 5xx → `ServiceUnavailable`/`Timeout`).
|
|
406
447
|
* A 501 additionally carries `data.retryable: false`, so `withRetry` fails it
|
|
407
448
|
* fast instead of re-attempting a method the upstream does not implement. A 3xx
|
|
408
|
-
* reaches this path
|
|
409
|
-
*
|
|
449
|
+
* reaches this path when it is not followed — under `redirect: 'manual'`, or with
|
|
450
|
+
* no `Location` header (a 304 included) — and maps to `InvalidRequest`, which
|
|
451
|
+
* `withRetry` does not retry.
|
|
410
452
|
*
|
|
411
453
|
* @param url - The URL to fetch (string or `URL` instance).
|
|
412
454
|
* @param timeoutMs - Maximum duration in milliseconds before the exchange is aborted.
|
|
@@ -425,7 +467,9 @@ function withBodyDeadline(response, body, deadline) {
|
|
|
425
467
|
* headers, `url`, `redirected`, and `type` are preserved, and the body streams
|
|
426
468
|
* through unchanged under the deadline.
|
|
427
469
|
* @throws {McpError} `ValidationError` for a non-HTTP(S) URL, or if the URL targets
|
|
428
|
-
* a non-global/reserved address and `rejectPrivateIPs` is enabled.
|
|
470
|
+
* a non-global/reserved address and `rejectPrivateIPs` is enabled. Under
|
|
471
|
+
* `rejectPrivateIPs` the same holds for each redirect target, plus
|
|
472
|
+
* `too_many_redirects` past 5 hops. Thrown with no record here; the caller logs it.
|
|
429
473
|
* @throws {McpError} `Timeout` if the exchange exceeds `timeoutMs`. Raised from the
|
|
430
474
|
* call itself when the deadline expires before headers, and from the body read
|
|
431
475
|
* when it expires during the stream.
|
|
@@ -441,7 +485,10 @@ function withBodyDeadline(response, body, deadline) {
|
|
|
441
485
|
* plus the legacy aliases `statusCode` (= `status`) and `responseBody` (= `body`), kept
|
|
442
486
|
* for existing consumers and slated for consolidation in a future major. List a status in
|
|
443
487
|
* `options.expectedStatuses` to log it at `debug` rather than `error` (still thrown).
|
|
444
|
-
* @throws {McpError} `ServiceUnavailable` if a network-level error occurs
|
|
488
|
+
* @throws {McpError} `ServiceUnavailable` if a network-level error occurs — an
|
|
489
|
+
* unparseable redirect `Location` included — chaining
|
|
490
|
+
* the runtime's rejection as `cause` so its transport `code` (`ECONNREFUSED`,
|
|
491
|
+
* `ConnectionRefused`) survives; the failure record carries it as `causeChain`.
|
|
445
492
|
* @example
|
|
446
493
|
* ```ts
|
|
447
494
|
* // Basic GET with a 5-second timeout
|
|
@@ -537,6 +584,11 @@ export async function fetchWithTimeout(url, timeoutMs, context, options) {
|
|
|
537
584
|
const startTime = performance.now();
|
|
538
585
|
const method = (fetchInit.method ?? 'GET').toUpperCase();
|
|
539
586
|
let statusCode = 0;
|
|
587
|
+
/**
|
|
588
|
+
* The SSRF guard's rejection of a redirect hop, held so the catch below can
|
|
589
|
+
* tell it from a `fetch` rejection by identity rather than by type.
|
|
590
|
+
*/
|
|
591
|
+
let hopRejection;
|
|
540
592
|
try {
|
|
541
593
|
let currentUrl = url;
|
|
542
594
|
let redirectCount = 0;
|
|
@@ -545,26 +597,35 @@ export async function fetchWithTimeout(url, timeoutMs, context, options) {
|
|
|
545
597
|
...fetchInit,
|
|
546
598
|
signal: fetchSignal,
|
|
547
599
|
});
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
600
|
+
/**
|
|
601
|
+
* Under SSRF protection, follow a 3xx that names its target, validating
|
|
602
|
+
* each hop. A 3xx with no `Location` — a 304 included — is a final
|
|
603
|
+
* response, as the platform's own redirect following returns it, and fails
|
|
604
|
+
* below like any other non-2xx.
|
|
605
|
+
*/
|
|
606
|
+
const location = rejectPrivate && response.status >= 300 && response.status < 400
|
|
607
|
+
? response.headers.get('location')
|
|
608
|
+
: null;
|
|
609
|
+
if (location) {
|
|
554
610
|
redirectCount++;
|
|
555
611
|
if (redirectCount > MAX_SSRF_REDIRECTS) {
|
|
556
|
-
|
|
612
|
+
hopRejection = validationError(`Too many redirects (${MAX_SSRF_REDIRECTS}) — possible SSRF redirect loop`, {
|
|
557
613
|
maxRedirects: MAX_SSRF_REDIRECTS,
|
|
558
614
|
reason: 'too_many_redirects',
|
|
559
615
|
recovery: {
|
|
560
616
|
hint: `Request the final URL directly instead of one that redirects more than ${MAX_SSRF_REDIRECTS} times.`,
|
|
561
617
|
},
|
|
562
618
|
});
|
|
619
|
+
throw hopRejection;
|
|
563
620
|
}
|
|
564
|
-
// Resolve relative redirect URLs against the current URL
|
|
621
|
+
// Resolve relative redirect URLs against the current URL. An unparseable
|
|
622
|
+
// `Location` is a malformed response, not a guard rejection.
|
|
565
623
|
const redirectUrl = new URL(location, currentUrl.toString()).toString();
|
|
566
624
|
// Validate the redirect target against SSRF rules
|
|
567
|
-
await assertNotPrivateUrl(redirectUrl)
|
|
625
|
+
await assertNotPrivateUrl(redirectUrl).catch((rejection) => {
|
|
626
|
+
hopRejection = rejection;
|
|
627
|
+
throw rejection;
|
|
628
|
+
});
|
|
568
629
|
logger.debug(`Following validated redirect ${redirectCount}: ${redactUrl(redirectUrl)}`, context);
|
|
569
630
|
currentUrl = redirectUrl;
|
|
570
631
|
continue;
|
|
@@ -655,18 +716,39 @@ export async function fetchWithTimeout(url, timeoutMs, context, options) {
|
|
|
655
716
|
if (fetchSignal.aborted || (error instanceof Error && error.name === 'AbortError')) {
|
|
656
717
|
throw abortedFailure();
|
|
657
718
|
}
|
|
658
|
-
|
|
719
|
+
/**
|
|
720
|
+
* The SSRF guard's rejection of a redirect hop — a blocked target, a
|
|
721
|
+
* non-HTTP scheme, too many hops — is the same policy refusal the initial
|
|
722
|
+
* URL gets before any request, and leaves the same way: thrown, with no
|
|
723
|
+
* record here, so the caller logs it at the severity its own contract
|
|
724
|
+
* declares. A deadline that fired first still reports the deadline, above.
|
|
725
|
+
*/
|
|
726
|
+
if (hopRejection && error === hopRejection)
|
|
727
|
+
throw error;
|
|
728
|
+
const errorMessage = redactEmbeddedUrls(error instanceof Error ? error.message : String(error));
|
|
729
|
+
/**
|
|
730
|
+
* The runtime's rejection is chained as the wrapper's `cause`, where
|
|
731
|
+
* `handleError` reads its message into the logged `rootCause` and cause
|
|
732
|
+
* chain. A URL it quotes is redacted on the rejection itself first; its
|
|
733
|
+
* identity, `code`, and every other field stay as the runtime set them. A
|
|
734
|
+
* rejection whose `message` cannot be written is chained as a stand-in instead.
|
|
735
|
+
*/
|
|
736
|
+
const cause = error instanceof Error && !(error instanceof McpError)
|
|
737
|
+
? withRedactedMessage(error, errorMessage)
|
|
738
|
+
: error;
|
|
739
|
+
const originalErrorName = error instanceof Error ? error.name : 'UnknownError';
|
|
740
|
+
const causeChain = causeChainForLog(cause);
|
|
659
741
|
logger.error(`Network error during ${operationDescription}: ${errorMessage}`, withExtra(context, {
|
|
660
|
-
originalErrorName
|
|
742
|
+
originalErrorName,
|
|
661
743
|
errorSource: 'FetchNetworkError',
|
|
744
|
+
...(causeChain && { causeChain }),
|
|
662
745
|
}));
|
|
663
746
|
if (error instanceof McpError) {
|
|
664
747
|
throw error;
|
|
665
748
|
}
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
});
|
|
749
|
+
// A non-`Error` rejection carries no transport code, and chaining its raw
|
|
750
|
+
// text would put back the URL `errorMessage` redacted.
|
|
751
|
+
throw serviceUnavailable(`Network error during ${operationDescription}: ${errorMessage}`, { originalErrorName, errorSource: 'FetchNetworkErrorWrapper' }, cause instanceof Error ? { cause } : undefined);
|
|
670
752
|
}
|
|
671
753
|
finally {
|
|
672
754
|
if (!deadlineFollowsBody)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchWithTimeout.js","sourceRoot":"","sources":["../../../src/utils/network/fetchWithTimeout.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetchWithTimeout.js","sourceRoot":"","sources":["../../../src/utils/network/fetchWithTimeout.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,13 @@ import { JsonRpcErrorCode, McpError } from '../../types-global/errors.js';
|
|
|
13
13
|
* Returns `undefined` when the status is in the 1xx/2xx range — those are not
|
|
14
14
|
* errors and the caller should not be invoking error mapping on them.
|
|
15
15
|
*
|
|
16
|
-
* A 3xx does reach error mapping
|
|
17
|
-
* redirect
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
16
|
+
* A 3xx does reach error mapping whenever it is not followed: under
|
|
17
|
+
* `redirect: 'manual'` the caller gets the redirect back rather than the followed
|
|
18
|
+
* response, a 304 comes back under every redirect mode, and any other 3xx with no
|
|
19
|
+
* `Location` comes back under `follow` too (`redirect: 'error'` rejects it as a
|
|
20
|
+
* network error); `!response.ok` then throws. It maps like an unlisted 4xx — the
|
|
21
|
+
* request as sent cannot be served at this URL — which also keeps it out of
|
|
22
|
+
* `withRetry`'s transient set, since re-issuing it returns the same redirect.
|
|
21
23
|
*
|
|
22
24
|
* | Status | Code |
|
|
23
25
|
* |:-------|:-----|
|
|
@@ -179,7 +181,7 @@ export interface HttpErrorFromResponseOptions {
|
|
|
179
181
|
* return await response.text();
|
|
180
182
|
* } catch (error) {
|
|
181
183
|
* if (error instanceof McpError) throw error;
|
|
182
|
-
* throw
|
|
184
|
+
* throw serviceUnavailable('NCBI request failed', { endpoint: 'esearch' }, { cause: error });
|
|
183
185
|
* }
|
|
184
186
|
* ```
|
|
185
187
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../../src/utils/network/httpError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGtE
|
|
1
|
+
{"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../../src/utils/network/httpError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAgClF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GAAG,SAAS,CAEvF;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACtC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,SAAS,CAWjD;AAED,uDAAuD;AACvD,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,gBAAgB,GAAG,SAAS,CAAC;IAChE;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,QAAQ,CAAC,CAsEnB"}
|
|
@@ -14,11 +14,13 @@ import { readBoundedResponseText } from './responseBody.js';
|
|
|
14
14
|
* Returns `undefined` when the status is in the 1xx/2xx range — those are not
|
|
15
15
|
* errors and the caller should not be invoking error mapping on them.
|
|
16
16
|
*
|
|
17
|
-
* A 3xx does reach error mapping
|
|
18
|
-
* redirect
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* A 3xx does reach error mapping whenever it is not followed: under
|
|
18
|
+
* `redirect: 'manual'` the caller gets the redirect back rather than the followed
|
|
19
|
+
* response, a 304 comes back under every redirect mode, and any other 3xx with no
|
|
20
|
+
* `Location` comes back under `follow` too (`redirect: 'error'` rejects it as a
|
|
21
|
+
* network error); `!response.ok` then throws. It maps like an unlisted 4xx — the
|
|
22
|
+
* request as sent cannot be served at this URL — which also keeps it out of
|
|
23
|
+
* `withRetry`'s transient set, since re-issuing it returns the same redirect.
|
|
22
24
|
*
|
|
23
25
|
* | Status | Code |
|
|
24
26
|
* |:-------|:-----|
|
|
@@ -168,11 +170,19 @@ const DEFAULT_BODY_LIMIT = 500;
|
|
|
168
170
|
* return await response.text();
|
|
169
171
|
* } catch (error) {
|
|
170
172
|
* if (error instanceof McpError) throw error;
|
|
171
|
-
* throw
|
|
173
|
+
* throw serviceUnavailable('NCBI request failed', { endpoint: 'esearch' }, { cause: error });
|
|
172
174
|
* }
|
|
173
175
|
* ```
|
|
174
176
|
*/
|
|
175
177
|
export async function httpErrorFromResponse(response, options = {}) {
|
|
178
|
+
/**
|
|
179
|
+
* The caller's frames, taken before the body read: past that `await` the
|
|
180
|
+
* engine resumes this function from its task queue, with the caller no longer
|
|
181
|
+
* on the stack. The error's stack starts at the caller's line, as an error
|
|
182
|
+
* factory's does (#694).
|
|
183
|
+
*/
|
|
184
|
+
const callSite = {};
|
|
185
|
+
Error.captureStackTrace?.(callSite, httpErrorFromResponse);
|
|
176
186
|
const { captureBody = true, bodyLimit = DEFAULT_BODY_LIMIT, includeUrl = false, service, data: extraData, cause, codeOverride, errorHeaders, } = options;
|
|
177
187
|
const code = codeOverride?.(response.status) ??
|
|
178
188
|
httpStatusToErrorCode(response.status) ??
|
|
@@ -207,7 +217,13 @@ export async function httpErrorFromResponse(response, options = {}) {
|
|
|
207
217
|
...selectErrorHeaders(response.headers, errorHeaders),
|
|
208
218
|
...extraData,
|
|
209
219
|
};
|
|
210
|
-
|
|
220
|
+
const error = new McpError(code, `${subject} returned HTTP ${response.status}${statusText}.`, data, cause !== undefined ? { cause } : undefined);
|
|
221
|
+
// The call site's stack is a one-line header, then the caller's frames.
|
|
222
|
+
const { stack: siteStack = '' } = callSite;
|
|
223
|
+
const framesAt = siteStack.indexOf('\n');
|
|
224
|
+
if (framesAt !== -1)
|
|
225
|
+
error.stack = `${String(error)}${siteStack.slice(framesAt)}`;
|
|
226
|
+
return error;
|
|
211
227
|
}
|
|
212
228
|
/** Returns the hostname from a URL string, or `undefined` if it can't be parsed. */
|
|
213
229
|
function safeHost(url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../../src/utils/network/httpError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E
|
|
1
|
+
{"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../../src/utils/network/httpError.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type RequestContext } from '../internal/requestContext.js';
|
|
2
2
|
/**
|
|
3
3
|
* The per-attempt handle {@link withRetry} passes to its operation.
|
|
4
4
|
*
|
|
@@ -36,7 +36,9 @@ export interface RetryOptions {
|
|
|
36
36
|
* Log bindings for correlated logging. When provided, retry log entries
|
|
37
37
|
* include `requestId`, `traceId`, etc. Passing the handler `Context` is
|
|
38
38
|
* safe — the logger strips non-serializable fields (`signal`, `log`,
|
|
39
|
-
* `state`, protocol method handles) before pino sees them.
|
|
39
|
+
* `state`, protocol method handles) before pino sees them. A retried error
|
|
40
|
+
* with a cause or a string `code` adds `causeChain` to the entry's `extra`,
|
|
41
|
+
* with or without a context.
|
|
40
42
|
*/
|
|
41
43
|
context?: RequestContext;
|
|
42
44
|
/**
|
|
@@ -126,6 +128,27 @@ export interface RetryOptions {
|
|
|
126
128
|
* the same errors, and a second copy of the RFC 9110 forms would drift.
|
|
127
129
|
*/
|
|
128
130
|
export declare function parseRetryAfterMs(error: unknown): number | undefined;
|
|
131
|
+
/** One entry of the `causeChain` field a retry or network-error log record carries. */
|
|
132
|
+
export interface LoggedCauseNode {
|
|
133
|
+
readonly code?: string;
|
|
134
|
+
readonly message: string;
|
|
135
|
+
readonly name: string;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Projects an error's cause chain for a log record — `{ name, message, code? }`
|
|
139
|
+
* per node, the error itself first — or `undefined` when the error has neither
|
|
140
|
+
* a cause nor a string `code`, so its record stays exactly as it was.
|
|
141
|
+
*
|
|
142
|
+
* Projections only, `{ name, message, code? }` per node: a compact chain for
|
|
143
|
+
* triage, since a retry writes a record per attempt. The error in full — its
|
|
144
|
+
* stack, an `McpError`'s `data` — is the failure record's to write
|
|
145
|
+
* (`ErrorHandler.handleError`'s, once the error reaches a handler).
|
|
146
|
+
* Module-level, not public: `fetchWithTimeout`'s network-error record carries
|
|
147
|
+
* the same field. Every read is guarded, as `extractErrorCauseChain`'s are: a
|
|
148
|
+
* `cause` that cannot be read ends the chain as an `'[Unreadable]'` node, and
|
|
149
|
+
* a `code` that cannot be read counts as none.
|
|
150
|
+
*/
|
|
151
|
+
export declare function causeChainForLog(error: unknown): LoggedCauseNode[] | undefined;
|
|
129
152
|
/**
|
|
130
153
|
* Default transient check: `McpError` with a transient code, or any non-McpError
|
|
131
154
|
* (network failures, unexpected throws) which are assumed transient.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/utils/network/retry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/utils/network/retry.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,oCAAoC,CAAC;AAYpF;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAE1C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAuBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAoBpE;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,EAAE,GAAG,SAAS,CAU9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAuB1D;AAgGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EACzC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CA+HZ"}
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* @module src/utils/network/retry
|
|
6
6
|
*/
|
|
7
7
|
import { JsonRpcErrorCode, McpError, timeout } from '../../types-global/errors.js';
|
|
8
|
+
import { errorText, extractErrorCauseChain, getErrorMessage, isInstance, readField, UNREADABLE, } from '../internal/error-handler/helpers.js';
|
|
8
9
|
import { logger } from '../internal/logger.js';
|
|
10
|
+
import { withExtra } from '../internal/requestContext.js';
|
|
9
11
|
/**
|
|
10
12
|
* Error codes considered transient — eligible for retry.
|
|
11
13
|
* Matches the framework's error classification in `mappings.ts`.
|
|
@@ -71,6 +73,33 @@ export function parseRetryAfterMs(error) {
|
|
|
71
73
|
return;
|
|
72
74
|
return Math.max(0, dateMs - Date.now());
|
|
73
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Projects an error's cause chain for a log record — `{ name, message, code? }`
|
|
78
|
+
* per node, the error itself first — or `undefined` when the error has neither
|
|
79
|
+
* a cause nor a string `code`, so its record stays exactly as it was.
|
|
80
|
+
*
|
|
81
|
+
* Projections only, `{ name, message, code? }` per node: a compact chain for
|
|
82
|
+
* triage, since a retry writes a record per attempt. The error in full — its
|
|
83
|
+
* stack, an `McpError`'s `data` — is the failure record's to write
|
|
84
|
+
* (`ErrorHandler.handleError`'s, once the error reaches a handler).
|
|
85
|
+
* Module-level, not public: `fetchWithTimeout`'s network-error record carries
|
|
86
|
+
* the same field. Every read is guarded, as `extractErrorCauseChain`'s are: a
|
|
87
|
+
* `cause` that cannot be read ends the chain as an `'[Unreadable]'` node, and
|
|
88
|
+
* a `code` that cannot be read counts as none.
|
|
89
|
+
*/
|
|
90
|
+
export function causeChainForLog(error) {
|
|
91
|
+
if (!(error instanceof Error))
|
|
92
|
+
return;
|
|
93
|
+
const code = readField(error, 'code');
|
|
94
|
+
const hasCode = typeof code === 'string' && code !== UNREADABLE;
|
|
95
|
+
if (!readField(error, 'cause') && !hasCode)
|
|
96
|
+
return;
|
|
97
|
+
return extractErrorCauseChain(error).map(({ name, message, code }) => ({
|
|
98
|
+
name,
|
|
99
|
+
message,
|
|
100
|
+
...(code !== undefined && { code }),
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
74
103
|
/**
|
|
75
104
|
* Default transient check: `McpError` with a transient code, or any non-McpError
|
|
76
105
|
* (network failures, unexpected throws) which are assumed transient.
|
|
@@ -174,11 +203,14 @@ function createDeadlineClock(deadlineMs, operation) {
|
|
|
174
203
|
/**
|
|
175
204
|
* Enriches an error with retry exhaustion context.
|
|
176
205
|
* Appends attempt count to the message and to `data` for programmatic access.
|
|
206
|
+
* The error's `message` and `name` are read as text (`errorText`), so one that
|
|
207
|
+
* throws on read or is not a string never replaces the exhausted error.
|
|
177
208
|
*/
|
|
178
209
|
function enrichExhaustedError(error, totalAttempts, operation) {
|
|
179
210
|
if (error instanceof McpError) {
|
|
180
211
|
const suffix = `(failed after ${totalAttempts} attempt${totalAttempts > 1 ? 's' : ''})`;
|
|
181
|
-
const
|
|
212
|
+
const message = errorText(readField(error, 'message'));
|
|
213
|
+
const enrichedMessage = message ? `${message} ${suffix}` : suffix;
|
|
182
214
|
const enrichedData = {
|
|
183
215
|
...error.data,
|
|
184
216
|
retryAttempts: totalAttempts,
|
|
@@ -188,8 +220,10 @@ function enrichExhaustedError(error, totalAttempts, operation) {
|
|
|
188
220
|
}
|
|
189
221
|
if (error instanceof Error) {
|
|
190
222
|
const suffix = `(failed after ${totalAttempts} attempt${totalAttempts > 1 ? 's' : ''})`;
|
|
191
|
-
const wrapped = new Error(`${error
|
|
192
|
-
|
|
223
|
+
const wrapped = new Error(`${errorText(readField(error, 'message'))} ${suffix}`, {
|
|
224
|
+
cause: error,
|
|
225
|
+
});
|
|
226
|
+
wrapped.name = errorText(readField(error, 'name'));
|
|
193
227
|
return wrapped;
|
|
194
228
|
}
|
|
195
229
|
return error;
|
|
@@ -329,9 +363,17 @@ export async function withRetry(fn, options = {}) {
|
|
|
329
363
|
}
|
|
330
364
|
throw clock.exceeded(error, attempt + 1);
|
|
331
365
|
}
|
|
332
|
-
|
|
366
|
+
// As text, guarded: a `message` that throws on read or is not a string never fails the retry (#697),
|
|
367
|
+
// and any other thrown value is described as `getErrorMessage` describes it.
|
|
368
|
+
const errorMessage = isInstance(error, Error)
|
|
369
|
+
? errorText(readField(error, 'message'))
|
|
370
|
+
: getErrorMessage(error);
|
|
333
371
|
const delaySource = retryAfterMs === undefined ? '' : ' (Retry-After)';
|
|
334
|
-
|
|
372
|
+
// The transport code (`ECONNRESET`, `ConnectionRefused`) rides the
|
|
373
|
+
// cause chain, not the message — the only trace of why a retry that
|
|
374
|
+
// later succeeds was needed.
|
|
375
|
+
const causeChain = causeChainForLog(error);
|
|
376
|
+
logger.debug(`Retry ${attempt + 1}/${maxRetries} for ${operation ?? 'operation'}: ${errorMessage} — waiting ${Math.round(delay)}ms${delaySource}`, causeChain ? withExtra(context ?? {}, { causeChain }) : context);
|
|
335
377
|
try {
|
|
336
378
|
await sleep(delay, attemptSignal);
|
|
337
379
|
}
|