@cyanheads/mcp-ts-core 0.7.6 → 0.8.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/CLAUDE.md +22 -7
- package/README.md +2 -2
- package/changelog/0.8.x/0.8.0.md +33 -0
- package/changelog/0.8.x/0.8.1.md +17 -0
- package/changelog/template.md +13 -0
- package/dist/core/context.d.ts +67 -0
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +46 -1
- package/dist/core/context.js.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/linter/rules/error-contract-rules.d.ts +45 -0
- package/dist/linter/rules/error-contract-rules.d.ts.map +1 -0
- package/dist/linter/rules/error-contract-rules.js +321 -0
- package/dist/linter/rules/error-contract-rules.js.map +1 -0
- package/dist/linter/rules/handler-body-rules.d.ts +18 -0
- package/dist/linter/rules/handler-body-rules.d.ts.map +1 -0
- package/dist/linter/rules/handler-body-rules.js +134 -0
- package/dist/linter/rules/handler-body-rules.js.map +1 -0
- package/dist/linter/rules/index.d.ts +2 -0
- package/dist/linter/rules/index.d.ts.map +1 -1
- package/dist/linter/rules/index.js +2 -0
- package/dist/linter/rules/index.js.map +1 -1
- package/dist/linter/rules/resource-rules.d.ts.map +1 -1
- package/dist/linter/rules/resource-rules.js +9 -0
- package/dist/linter/rules/resource-rules.js.map +1 -1
- package/dist/linter/rules/source-text.d.ts +19 -0
- package/dist/linter/rules/source-text.d.ts.map +1 -0
- package/dist/linter/rules/source-text.js +96 -0
- package/dist/linter/rules/source-text.js.map +1 -0
- package/dist/linter/rules/tool-rules.d.ts.map +1 -1
- package/dist/linter/rules/tool-rules.js +9 -0
- package/dist/linter/rules/tool-rules.js.map +1 -1
- package/dist/logs/combined.log +4 -4
- package/dist/logs/error.log +4 -4
- package/dist/mcp-server/apps/appBuilders.d.ts +9 -4
- package/dist/mcp-server/apps/appBuilders.d.ts.map +1 -1
- package/dist/mcp-server/apps/appBuilders.js +4 -0
- package/dist/mcp-server/apps/appBuilders.js.map +1 -1
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.js +3 -2
- package/dist/mcp-server/resources/resource-registration.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +13 -5
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +5 -4
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +13 -7
- package/dist/mcp-server/tools/tool-registration.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts +64 -16
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolDefinition.js +25 -11
- package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +6 -4
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/testing/index.d.ts +8 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +5 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/types-global/errors.d.ts +82 -0
- package/dist/types-global/errors.d.ts.map +1 -1
- package/dist/types-global/errors.js +25 -0
- package/dist/types-global/errors.js.map +1 -1
- package/dist/utils/formatting/index.d.ts +1 -0
- package/dist/utils/formatting/index.d.ts.map +1 -1
- package/dist/utils/formatting/index.js +1 -0
- package/dist/utils/formatting/index.js.map +1 -1
- package/dist/utils/formatting/partialResult.d.ts +145 -0
- package/dist/utils/formatting/partialResult.d.ts.map +1 -0
- package/dist/utils/formatting/partialResult.js +145 -0
- package/dist/utils/formatting/partialResult.js.map +1 -0
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/network/httpError.d.ts +112 -0
- package/dist/utils/network/httpError.d.ts.map +1 -0
- package/dist/utils/network/httpError.js +153 -0
- package/dist/utils/network/httpError.js.map +1 -0
- package/dist/utils/network/retry.d.ts.map +1 -1
- package/dist/utils/network/retry.js +0 -1
- package/dist/utils/network/retry.js.map +1 -1
- package/package.json +5 -4
- package/scripts/split-changelog.ts +133 -0
- package/skills/add-app-tool/SKILL.md +12 -0
- package/skills/add-resource/SKILL.md +40 -0
- package/skills/add-service/SKILL.md +54 -1
- package/skills/add-test/SKILL.md +39 -0
- package/skills/add-tool/SKILL.md +42 -5
- package/skills/api-context/SKILL.md +75 -1
- package/skills/api-errors/SKILL.md +183 -5
- package/skills/api-linter/SKILL.md +223 -3
- package/skills/api-testing/SKILL.md +79 -4
- package/skills/api-utils/SKILL.md +4 -2
- package/skills/design-mcp-server/SKILL.md +13 -10
- package/skills/field-test/SKILL.md +81 -15
- package/skills/maintenance/SKILL.md +5 -2
- package/skills/report-issue-framework/SKILL.md +2 -2
- package/skills/security-pass/SKILL.md +6 -5
- package/templates/AGENTS.md +23 -8
- package/templates/CLAUDE.md +23 -8
- package/templates/changelog/template.md +18 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types-global/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAN,IAAY,gBAsBX;AAtBD,WAAY,gBAAgB;IAC1B,+BAA+B;IAC/B,wEAAmB,CAAA;IACnB,gFAAuB,CAAA;IACvB,gFAAuB,CAAA;IACvB,8EAAsB,CAAA;IACtB,8EAAsB,CAAA;IAEtB,0DAA0D;IAC1D,wFAA2B,CAAA;IAC3B,oEAAiB,CAAA;IACjB,oEAAiB,CAAA;IACjB,0EAAoB,CAAA;IACpB,kEAAgB,CAAA;IAChB,sEAAkB,CAAA;IAClB,4EAAqB,CAAA;IACrB,kFAAwB,CAAA;IACxB,wFAA2B,CAAA;IAC3B,4FAA6B,CAAA;IAC7B,8EAAsB,CAAA;IACtB,wFAA2B,CAAA;IAC3B,4EAAqB,CAAA;AACvB,CAAC,EAtBW,gBAAgB,KAAhB,gBAAgB,QAsB3B;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC;;OAEG;IACa,IAAI,CAAmB;IAEvC;;;;OAIG;IACa,IAAI,CAA2B;IAE/C;;;;;;OAMG;IACH,YACE,IAAsB,EACtB,OAAgB,EAChB,IAA8B,EAC9B,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QAEvB,qCAAqC;QACrC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEhD,iFAAiF;QACjF,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AASD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE1E,+CAA+C;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE3E,wCAAwC;AACxC,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAErE,yCAAyC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAEtE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAEzE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE5E,wCAAwC;AACxC,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAErE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAExE,uCAAuC;AACvC,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAEpE,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE/E,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAe,EACf,IAA8B,EAC9B,OAA6B,EAC7B,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,CAAC;IACN;;;OAGG;IACH,IAAI,EAAE,CAAC;SACJ,UAAU,CAAC,gBAAgB,CAAC;SAC5B,QAAQ,CAAC,oDAAoD,CAAC;IACjE;;;OAGG;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;SACxC,QAAQ,CAAC,uCAAuC,CAAC;IACpD;;;OAGG;IACH,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,iEAAiE,CAAC;CAC/E,CAAC;KACD,QAAQ,CACP,0FAA0F,CAC3F,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types-global/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
export { type DiffFormat, DiffFormatter, type DiffFormatterOptions, diffFormatter, } from './diffFormatter.js';
|
|
6
6
|
export { escapeHtml, type HtmlInterpolation, html, SafeHtml, unsafeRaw, } from './html.js';
|
|
7
7
|
export { MarkdownBuilder, markdown } from './markdownBuilder.js';
|
|
8
|
+
export { failureEntrySchema, partialResult, partialResultSchema } from './partialResult.js';
|
|
8
9
|
export { type Alignment, TableFormatter, type TableFormatterOptions, type TableStyle, tableFormatter, } from './tableFormatter.js';
|
|
9
10
|
export { TreeFormatter, type TreeFormatterOptions, type TreeNode, type TreeStyle, treeFormatter, } from './treeFormatter.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/formatting/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,KAAK,UAAU,EACf,aAAa,EACb,KAAK,oBAAoB,EACzB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,KAAK,SAAS,EACd,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/formatting/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,KAAK,UAAU,EACf,aAAa,EACb,KAAK,oBAAoB,EACzB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EACL,KAAK,SAAS,EACd,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
export { DiffFormatter, diffFormatter, } from './diffFormatter.js';
|
|
6
6
|
export { escapeHtml, html, SafeHtml, unsafeRaw, } from './html.js';
|
|
7
7
|
export { MarkdownBuilder, markdown } from './markdownBuilder.js';
|
|
8
|
+
export { failureEntrySchema, partialResult, partialResultSchema } from './partialResult.js';
|
|
8
9
|
export { TableFormatter, tableFormatter, } from './tableFormatter.js';
|
|
9
10
|
export { TreeFormatter, treeFormatter, } from './treeFormatter.js';
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/formatting/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,aAAa,EAEb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,UAAU,EAEV,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAEL,cAAc,EAGd,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EAIb,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/formatting/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,aAAa,EAEb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,UAAU,EAEV,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAEL,cAAc,EAGd,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EAIb,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Helpers for the "partial success" tool-output pattern: a tool
|
|
3
|
+
* that processes N items and returns the ones that succeeded plus a structured
|
|
4
|
+
* list of the ones that failed (each with a stable `reason` enum). Generalizes
|
|
5
|
+
* the pattern exemplified by pubmed-mcp-server's `unavailable[]` array.
|
|
6
|
+
* @module src/utils/formatting/partialResult
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
/**
|
|
10
|
+
* Builds a Zod schema for one entry in a partial-failure list.
|
|
11
|
+
*
|
|
12
|
+
* The shape is `{ [idKey]: string; reason: TReason; detail?: string }` —
|
|
13
|
+
* the `idKey` field identifies the input the failure pertains to, `reason`
|
|
14
|
+
* is a stable enum the caller can switch on, and `detail` is an optional
|
|
15
|
+
* human-readable supplement.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const UnavailableReason = z.enum([
|
|
20
|
+
* 'no_pmc_fallback_disabled',
|
|
21
|
+
* 'no_doi',
|
|
22
|
+
* 'no_oa',
|
|
23
|
+
* 'fetch_failed',
|
|
24
|
+
* 'parse_failed',
|
|
25
|
+
* 'service_error',
|
|
26
|
+
* ]).describe('Why the PMID could not be returned');
|
|
27
|
+
*
|
|
28
|
+
* const Unavailable = failureEntrySchema({
|
|
29
|
+
* idKey: 'pmid',
|
|
30
|
+
* idDescription: 'PMID full text could not be returned for',
|
|
31
|
+
* reason: UnavailableReason,
|
|
32
|
+
* description: 'A PMID that could not be returned, with an explanation',
|
|
33
|
+
* });
|
|
34
|
+
* // → ZodObject<{ pmid: ZodString; reason: typeof UnavailableReason; detail: ZodOptional<ZodString> }>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function failureEntrySchema<TIdKey extends string, TReason extends z.ZodTypeAny>(opts: {
|
|
38
|
+
/** Field name that identifies the failed input (e.g. `'pmid'`, `'id'`). */
|
|
39
|
+
idKey: TIdKey;
|
|
40
|
+
/** Description for the id field. Surfaced in the JSON Schema. */
|
|
41
|
+
idDescription?: string;
|
|
42
|
+
/** Zod enum describing the stable `reason` values. */
|
|
43
|
+
reason: TReason;
|
|
44
|
+
/** Description for the entry as a whole. */
|
|
45
|
+
description?: string;
|
|
46
|
+
/** Description for the optional `detail` field. Defaults to a generic value. */
|
|
47
|
+
detailDescription?: string;
|
|
48
|
+
}): z.ZodObject<{ [K in TIdKey]: z.ZodString; } & {
|
|
49
|
+
reason: TReason;
|
|
50
|
+
detail: z.ZodOptional<z.ZodString>;
|
|
51
|
+
} extends infer T ? { -readonly [P in keyof T]: T[P]; } : never, z.core.$strip>;
|
|
52
|
+
/**
|
|
53
|
+
* Standard tool-output shape for batch operations that may partially fail.
|
|
54
|
+
*
|
|
55
|
+
* Composes a typed succeeded list, totals, and an optional failures list with
|
|
56
|
+
* stable reason codes. Wraps `failureEntrySchema` so callers don't have to
|
|
57
|
+
* compose three things.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* const ArticleSchema = z.object({ pmid: z.string(), title: z.string() });
|
|
62
|
+
*
|
|
63
|
+
* export const fetchTool = tool('fetch_articles', {
|
|
64
|
+
* // ...
|
|
65
|
+
* output: partialResultSchema({
|
|
66
|
+
* succeededKey: 'articles',
|
|
67
|
+
* succeededSchema: ArticleSchema,
|
|
68
|
+
* failedKey: 'unavailable',
|
|
69
|
+
* idKey: 'pmid',
|
|
70
|
+
* reason: z.enum(['not_found', 'withdrawn']),
|
|
71
|
+
* }),
|
|
72
|
+
* // → { articles: ArticleSchema[], totalReturned: number,
|
|
73
|
+
* // unavailable?: [{pmid, reason, detail?}], totalFailed?: number }
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function partialResultSchema<TSuccKey extends string, TFailKey extends string, TIdKey extends string, TItem extends z.ZodTypeAny, TReason extends z.ZodTypeAny>(opts: {
|
|
78
|
+
/** Key for the array of successful items (e.g. `'articles'`, `'records'`). */
|
|
79
|
+
succeededKey: TSuccKey;
|
|
80
|
+
/** Schema for one successful item. */
|
|
81
|
+
succeededSchema: TItem;
|
|
82
|
+
/** Description for the succeeded array. Optional. */
|
|
83
|
+
succeededDescription?: string;
|
|
84
|
+
/** Key for the array of failed entries (e.g. `'unavailable'`, `'failed'`). */
|
|
85
|
+
failedKey: TFailKey;
|
|
86
|
+
/** Field name that identifies a failed input on each failure entry. */
|
|
87
|
+
idKey: TIdKey;
|
|
88
|
+
/** Description for the failure entry's id field. */
|
|
89
|
+
idDescription?: string;
|
|
90
|
+
/** Reason enum (typically `z.enum([...])`). */
|
|
91
|
+
reason: TReason;
|
|
92
|
+
/** Description for one failure entry. */
|
|
93
|
+
failureDescription?: string;
|
|
94
|
+
/** When `true`, includes a `totalFailed` count alongside `totalSucceeded`. */
|
|
95
|
+
includeTotalFailed?: boolean;
|
|
96
|
+
}): z.ZodObject<{ [K in TSuccKey]: z.ZodArray<TItem>; } & {
|
|
97
|
+
totalSucceeded: z.ZodNumber;
|
|
98
|
+
} & { [K in TFailKey]: z.ZodOptional<z.ZodArray<z.ZodObject<{ [K_1 in TIdKey]: z.ZodString; } & {
|
|
99
|
+
reason: TReason;
|
|
100
|
+
detail: z.ZodOptional<z.ZodString>;
|
|
101
|
+
} extends infer T ? { -readonly [P in keyof T]: T[P]; } : never, z.core.$strip>>>; }>;
|
|
102
|
+
/**
|
|
103
|
+
* Shape of the object returned by {@link partialResult}. Keys are derived from
|
|
104
|
+
* the type parameters so the return type aligns with what `partialResultSchema`
|
|
105
|
+
* produces — handlers can `return partialResult({...})` directly without
|
|
106
|
+
* casting against `z.infer<typeof Output>`.
|
|
107
|
+
*
|
|
108
|
+
* `failedKey` and `totalFailed` are optional because the runtime helper omits
|
|
109
|
+
* them when no failures occurred.
|
|
110
|
+
*/
|
|
111
|
+
export type PartialResultObject<TSuccKey extends string, TFailKey extends string, TItem, TFailEntry> = {
|
|
112
|
+
[K in TSuccKey]: TItem[];
|
|
113
|
+
} & {
|
|
114
|
+
totalSucceeded: number;
|
|
115
|
+
} & {
|
|
116
|
+
[K in TFailKey]?: TFailEntry[];
|
|
117
|
+
} & {
|
|
118
|
+
totalFailed?: number;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Constructs a partial-result object at runtime, conditionally including the
|
|
122
|
+
* failed array (omits it when empty so the structuredContent stays clean).
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* return partialResult({
|
|
127
|
+
* succeededKey: 'articles',
|
|
128
|
+
* succeeded: articles,
|
|
129
|
+
* failedKey: 'unavailable',
|
|
130
|
+
* failed: unavailable,
|
|
131
|
+
* });
|
|
132
|
+
* // → { articles: [...], totalSucceeded: 3, unavailable: [...] }
|
|
133
|
+
* // or, when unavailable is empty:
|
|
134
|
+
* // → { articles: [...], totalSucceeded: 3 }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export declare function partialResult<TSuccKey extends string, TFailKey extends string, TItem, TFailEntry>(opts: {
|
|
138
|
+
succeededKey: TSuccKey;
|
|
139
|
+
succeeded: readonly TItem[];
|
|
140
|
+
failedKey: TFailKey;
|
|
141
|
+
failed: readonly TFailEntry[];
|
|
142
|
+
/** When `true`, also includes `totalFailed`. */
|
|
143
|
+
includeTotalFailed?: boolean;
|
|
144
|
+
}): PartialResultObject<TSuccKey, TFailKey, TItem, TFailEntry>;
|
|
145
|
+
//# sourceMappingURL=partialResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partialResult.d.ts","sourceRoot":"","sources":["../../../src/utils/formatting/partialResult.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE;IAC5F,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,kBAaS,CAAC;YACC,OAAO;YACP,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;gFAKrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,SAAS,MAAM,EACvB,QAAQ,SAAS,MAAM,EACvB,MAAM,SAAS,MAAM,EACrB,KAAK,SAAS,CAAC,CAAC,UAAU,EAC1B,OAAO,SAAS,CAAC,CAAC,UAAU,EAC5B,IAAI,EAAE;IACN,8EAA8E;IAC9E,YAAY,EAAE,QAAQ,CAAC;IACvB,sCAAsC;IACtC,eAAe,EAAE,KAAK,CAAC;IACvB,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8EAA8E;IAC9E,SAAS,EAAE,QAAQ,CAAC;IACpB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAwC+B,CAAC,CAAC,SAAS,CACvC,GACG,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GACnC,GAAG;IACF,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC;CAC7B,GAAG,GACD,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;;YAvGnC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;gFAuG+B,CAAC,GACjE,CACF,CACF;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,CAC7B,QAAQ,SAAS,MAAM,EACvB,QAAQ,SAAS,MAAM,EACvB,KAAK,EACL,UAAU,IACR;KAAG,CAAC,IAAI,QAAQ,GAAG,KAAK,EAAE;CAAE,GAAG;IACjC,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG;KAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE;CAAE,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,SAAS,MAAM,EACvB,QAAQ,SAAS,MAAM,EACvB,KAAK,EACL,UAAU,EACV,IAAI,EAAE;IACN,YAAY,EAAE,QAAQ,CAAC;IACvB,SAAS,EAAE,SAAS,KAAK,EAAE,CAAC;IAC5B,SAAS,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAc7D"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Helpers for the "partial success" tool-output pattern: a tool
|
|
3
|
+
* that processes N items and returns the ones that succeeded plus a structured
|
|
4
|
+
* list of the ones that failed (each with a stable `reason` enum). Generalizes
|
|
5
|
+
* the pattern exemplified by pubmed-mcp-server's `unavailable[]` array.
|
|
6
|
+
* @module src/utils/formatting/partialResult
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
/**
|
|
10
|
+
* Builds a Zod schema for one entry in a partial-failure list.
|
|
11
|
+
*
|
|
12
|
+
* The shape is `{ [idKey]: string; reason: TReason; detail?: string }` —
|
|
13
|
+
* the `idKey` field identifies the input the failure pertains to, `reason`
|
|
14
|
+
* is a stable enum the caller can switch on, and `detail` is an optional
|
|
15
|
+
* human-readable supplement.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const UnavailableReason = z.enum([
|
|
20
|
+
* 'no_pmc_fallback_disabled',
|
|
21
|
+
* 'no_doi',
|
|
22
|
+
* 'no_oa',
|
|
23
|
+
* 'fetch_failed',
|
|
24
|
+
* 'parse_failed',
|
|
25
|
+
* 'service_error',
|
|
26
|
+
* ]).describe('Why the PMID could not be returned');
|
|
27
|
+
*
|
|
28
|
+
* const Unavailable = failureEntrySchema({
|
|
29
|
+
* idKey: 'pmid',
|
|
30
|
+
* idDescription: 'PMID full text could not be returned for',
|
|
31
|
+
* reason: UnavailableReason,
|
|
32
|
+
* description: 'A PMID that could not be returned, with an explanation',
|
|
33
|
+
* });
|
|
34
|
+
* // → ZodObject<{ pmid: ZodString; reason: typeof UnavailableReason; detail: ZodOptional<ZodString> }>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function failureEntrySchema(opts) {
|
|
38
|
+
const idField = z.string().describe(opts.idDescription ?? `Identifier (${opts.idKey})`);
|
|
39
|
+
const detailField = z
|
|
40
|
+
.string()
|
|
41
|
+
.optional()
|
|
42
|
+
.describe(opts.detailDescription ?? 'Additional human-readable context, when available');
|
|
43
|
+
// Build the shape with the dynamic id key. Cast through `unknown` because TS
|
|
44
|
+
// can't narrow the index signature to the literal `TIdKey` without help.
|
|
45
|
+
const shape = {
|
|
46
|
+
[opts.idKey]: idField,
|
|
47
|
+
reason: opts.reason,
|
|
48
|
+
detail: detailField,
|
|
49
|
+
};
|
|
50
|
+
const schema = z.object(shape);
|
|
51
|
+
return opts.description ? schema.describe(opts.description) : schema;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Standard tool-output shape for batch operations that may partially fail.
|
|
55
|
+
*
|
|
56
|
+
* Composes a typed succeeded list, totals, and an optional failures list with
|
|
57
|
+
* stable reason codes. Wraps `failureEntrySchema` so callers don't have to
|
|
58
|
+
* compose three things.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const ArticleSchema = z.object({ pmid: z.string(), title: z.string() });
|
|
63
|
+
*
|
|
64
|
+
* export const fetchTool = tool('fetch_articles', {
|
|
65
|
+
* // ...
|
|
66
|
+
* output: partialResultSchema({
|
|
67
|
+
* succeededKey: 'articles',
|
|
68
|
+
* succeededSchema: ArticleSchema,
|
|
69
|
+
* failedKey: 'unavailable',
|
|
70
|
+
* idKey: 'pmid',
|
|
71
|
+
* reason: z.enum(['not_found', 'withdrawn']),
|
|
72
|
+
* }),
|
|
73
|
+
* // → { articles: ArticleSchema[], totalReturned: number,
|
|
74
|
+
* // unavailable?: [{pmid, reason, detail?}], totalFailed?: number }
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function partialResultSchema(opts) {
|
|
79
|
+
const failureSchema = failureEntrySchema({
|
|
80
|
+
idKey: opts.idKey,
|
|
81
|
+
...(opts.idDescription !== undefined && { idDescription: opts.idDescription }),
|
|
82
|
+
reason: opts.reason,
|
|
83
|
+
...(opts.failureDescription !== undefined && { description: opts.failureDescription }),
|
|
84
|
+
});
|
|
85
|
+
const succeededField = z
|
|
86
|
+
.array(opts.succeededSchema)
|
|
87
|
+
.describe(opts.succeededDescription ?? `Successful items (${opts.succeededKey})`);
|
|
88
|
+
const totalSucceededField = z
|
|
89
|
+
.number()
|
|
90
|
+
.int()
|
|
91
|
+
.nonnegative()
|
|
92
|
+
.describe(`Number of successful items in '${opts.succeededKey}'`);
|
|
93
|
+
const failedField = z
|
|
94
|
+
.array(failureSchema)
|
|
95
|
+
.optional()
|
|
96
|
+
.describe(`Per-input explanations for inputs that could not be returned. Absent when nothing failed.`);
|
|
97
|
+
const baseShape = {
|
|
98
|
+
[opts.succeededKey]: succeededField,
|
|
99
|
+
totalSucceeded: totalSucceededField,
|
|
100
|
+
[opts.failedKey]: failedField,
|
|
101
|
+
};
|
|
102
|
+
if (opts.includeTotalFailed) {
|
|
103
|
+
baseShape.totalFailed = z
|
|
104
|
+
.number()
|
|
105
|
+
.int()
|
|
106
|
+
.nonnegative()
|
|
107
|
+
.optional()
|
|
108
|
+
.describe(`Number of failed inputs in '${opts.failedKey}'`);
|
|
109
|
+
}
|
|
110
|
+
return z.object(baseShape);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Constructs a partial-result object at runtime, conditionally including the
|
|
114
|
+
* failed array (omits it when empty so the structuredContent stays clean).
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* return partialResult({
|
|
119
|
+
* succeededKey: 'articles',
|
|
120
|
+
* succeeded: articles,
|
|
121
|
+
* failedKey: 'unavailable',
|
|
122
|
+
* failed: unavailable,
|
|
123
|
+
* });
|
|
124
|
+
* // → { articles: [...], totalSucceeded: 3, unavailable: [...] }
|
|
125
|
+
* // or, when unavailable is empty:
|
|
126
|
+
* // → { articles: [...], totalSucceeded: 3 }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export function partialResult(opts) {
|
|
130
|
+
const out = {
|
|
131
|
+
[opts.succeededKey]: opts.succeeded,
|
|
132
|
+
totalSucceeded: opts.succeeded.length,
|
|
133
|
+
};
|
|
134
|
+
if (opts.failed.length > 0) {
|
|
135
|
+
out[opts.failedKey] = opts.failed;
|
|
136
|
+
if (opts.includeTotalFailed) {
|
|
137
|
+
out.totalFailed = opts.failed.length;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (opts.includeTotalFailed) {
|
|
141
|
+
out.totalFailed = 0;
|
|
142
|
+
}
|
|
143
|
+
return out;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=partialResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partialResult.js","sourceRoot":"","sources":["../../../src/utils/formatting/partialResult.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileoverview Unified barrel export for all utility modules.
|
|
3
3
|
* @module utils
|
|
4
4
|
*/
|
|
5
|
-
export { type Alignment, type DiffFormat, DiffFormatter, type DiffFormatterOptions, diffFormatter, escapeHtml, type HtmlInterpolation, html, MarkdownBuilder, markdown, SafeHtml, TableFormatter, type TableFormatterOptions, type TableStyle, TreeFormatter, type TreeFormatterOptions, type TreeNode, type TreeStyle, tableFormatter, treeFormatter, unsafeRaw, } from './formatting/index.js';
|
|
5
|
+
export { type Alignment, type DiffFormat, DiffFormatter, type DiffFormatterOptions, diffFormatter, escapeHtml, failureEntrySchema, type HtmlInterpolation, html, MarkdownBuilder, markdown, partialResult, partialResultSchema, SafeHtml, TableFormatter, type TableFormatterOptions, type TableStyle, TreeFormatter, type TreeFormatterOptions, type TreeNode, type TreeStyle, tableFormatter, treeFormatter, unsafeRaw, } from './formatting/index.js';
|
|
6
6
|
export { arrayBufferToBase64, base64ToString, stringToBase64 } from './internal/encoding.js';
|
|
7
7
|
export { ErrorHandler } from './internal/error-handler/errorHandler.js';
|
|
8
8
|
export type { BaseErrorMapping, ErrorContext, ErrorHandlerOptions, ErrorMapping, } from './internal/error-handler/types.js';
|
|
@@ -11,6 +11,7 @@ export { type AuthContext, type CreateRequestContextParams, type RequestContext,
|
|
|
11
11
|
export { type RuntimeCapabilities, runtimeCaps } from './internal/runtime.js';
|
|
12
12
|
export { type ChatMessage, countChatTokens, countTokens, type ModelHeuristics, } from './metrics/tokenCounter.js';
|
|
13
13
|
export { type FetchWithTimeoutOptions, fetchWithTimeout } from './network/fetchWithTimeout.js';
|
|
14
|
+
export { type HttpErrorFromResponseOptions, httpErrorFromResponse, httpStatusToErrorCode, } from './network/httpError.js';
|
|
14
15
|
export { type RetryOptions, withRetry } from './network/retry.js';
|
|
15
16
|
export { DEFAULT_PAGINATION_CONFIG, decodeCursor, encodeCursor, extractCursor, type PaginatedResult, type PaginationState, paginateArray, } from './pagination/pagination.js';
|
|
16
17
|
export { type AddPageOptions, Allow, CsvParser, csvParser, type DrawImageOptions, type DrawTextOptions, dateParser, type EmbedImageOptions, type ExtractArticleOptions, type ExtractArticleResult, type ExtractTextOptions, type ExtractTextResult, type FillFormOptions, FrontmatterParser, type FrontmatterResult, frontmatterParser, HtmlExtractor, htmlExtractor, JsonParser, jsonParser, type PageRange, type PdfMetadata, PdfParser, parseDateString, parseDateStringDetailed, pdfParser, type SetMetadataOptions, thinkBlockRegex, XmlParser, xmlParser, YamlParser, yamlParser, } from './parsing/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,aAAa,EACb,KAAK,oBAAoB,EACzB,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,cAAc,EACd,aAAa,EACb,SAAS,GACV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,YAAY,GACb,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,KAAK,mBAAmB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EACL,KAAK,WAAW,EAChB,eAAe,EACf,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EACL,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,EACL,SAAS,EACT,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,EACV,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,KAAK,kBAAkB,EACvB,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAEzF,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,EACxB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,WAAW,EACX,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,WAAW,EACX,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,YAAY,EACZ,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,EAC9B,yBAAyB,EACzB,6BAA6B,EAC7B,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,uBAAuB,EACvB,GAAG,EACH,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,QAAQ,GACT,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,EACxB,YAAY,EACZ,KAAK,eAAe,EACpB,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module utils
|
|
4
4
|
*/
|
|
5
5
|
// Formatting
|
|
6
|
-
export { DiffFormatter, diffFormatter, escapeHtml, html, MarkdownBuilder, markdown, SafeHtml, TableFormatter, TreeFormatter, tableFormatter, treeFormatter, unsafeRaw, } from './formatting/index.js';
|
|
6
|
+
export { DiffFormatter, diffFormatter, escapeHtml, failureEntrySchema, html, MarkdownBuilder, markdown, partialResult, partialResultSchema, SafeHtml, TableFormatter, TreeFormatter, tableFormatter, treeFormatter, unsafeRaw, } from './formatting/index.js';
|
|
7
7
|
// Encoding
|
|
8
8
|
export { arrayBufferToBase64, base64ToString, stringToBase64 } from './internal/encoding.js';
|
|
9
9
|
// Error handler
|
|
@@ -18,6 +18,7 @@ export { runtimeCaps } from './internal/runtime.js';
|
|
|
18
18
|
export { countChatTokens, countTokens, } from './metrics/tokenCounter.js';
|
|
19
19
|
// Network
|
|
20
20
|
export { fetchWithTimeout } from './network/fetchWithTimeout.js';
|
|
21
|
+
export { httpErrorFromResponse, httpStatusToErrorCode, } from './network/httpError.js';
|
|
21
22
|
export { withRetry } from './network/retry.js';
|
|
22
23
|
// Pagination
|
|
23
24
|
export { DEFAULT_PAGINATION_CONFIG, decodeCursor, encodeCursor, extractCursor, paginateArray, } from './pagination/pagination.js';
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,aAAa;AACb,OAAO,EAGL,aAAa,EAEb,aAAa,EACb,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Helpers for converting HTTP `Response` objects into properly
|
|
3
|
+
* classified `McpError` instances. Replaces the hand-rolled status → code ladder
|
|
4
|
+
* that consumer servers tend to write (and get wrong, especially for 401/403/408).
|
|
5
|
+
* @module src/utils/network/httpError
|
|
6
|
+
*/
|
|
7
|
+
import { JsonRpcErrorCode, McpError } from '../../types-global/errors.js';
|
|
8
|
+
/**
|
|
9
|
+
* Maps an HTTP status code to a `JsonRpcErrorCode`. Covers the full client/server
|
|
10
|
+
* 4xx/5xx range, with specific mappings for the codes most upstream APIs use to
|
|
11
|
+
* signal authoritative outcomes (auth failures, conflicts, validation, rate limits).
|
|
12
|
+
*
|
|
13
|
+
* Returns `undefined` when the status is in the 1xx/2xx/3xx range — those are not
|
|
14
|
+
* errors and the caller should not be invoking error mapping on them.
|
|
15
|
+
*
|
|
16
|
+
* | Status | Code |
|
|
17
|
+
* |:-------|:-----|
|
|
18
|
+
* | 400 | `InvalidParams` |
|
|
19
|
+
* | 401 | `Unauthorized` |
|
|
20
|
+
* | 402 | `Forbidden` (payment-required, treated as access denial) |
|
|
21
|
+
* | 403 | `Forbidden` |
|
|
22
|
+
* | 404 | `NotFound` |
|
|
23
|
+
* | 405, 406, 410, 415 | `InvalidRequest` |
|
|
24
|
+
* | 408 | `Timeout` |
|
|
25
|
+
* | 409 | `Conflict` |
|
|
26
|
+
* | 412, 416, 417 | `InvalidRequest` |
|
|
27
|
+
* | 422 | `ValidationError` |
|
|
28
|
+
* | 423, 424 | `Conflict` |
|
|
29
|
+
* | 425 | `Timeout` |
|
|
30
|
+
* | 428 | `InvalidRequest` |
|
|
31
|
+
* | 429 | `RateLimited` |
|
|
32
|
+
* | 431, 451 | `InvalidRequest` |
|
|
33
|
+
* | 4xx (other) | `InvalidRequest` |
|
|
34
|
+
* | 500, 501 | `InternalError` |
|
|
35
|
+
* | 502, 503 | `ServiceUnavailable` |
|
|
36
|
+
* | 504 | `Timeout` |
|
|
37
|
+
* | 5xx (other) | `ServiceUnavailable` |
|
|
38
|
+
*/
|
|
39
|
+
export declare function httpStatusToErrorCode(status: number): JsonRpcErrorCode | undefined;
|
|
40
|
+
/** Configuration for {@link httpErrorFromResponse}. */
|
|
41
|
+
export interface HttpErrorFromResponseOptions {
|
|
42
|
+
/**
|
|
43
|
+
* Maximum number of bytes captured from the response body when `captureBody`
|
|
44
|
+
* is enabled. Larger bodies are truncated. Default: `500`.
|
|
45
|
+
*/
|
|
46
|
+
bodyLimit?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Read the response body and include it (truncated) in `error.data.body`.
|
|
49
|
+
* Default: `true`. Set `false` if the body has already been consumed elsewhere
|
|
50
|
+
* or for binary responses where text capture is not useful.
|
|
51
|
+
*/
|
|
52
|
+
captureBody?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Underlying cause for the `cause` chain. Useful when wrapping a fetch error
|
|
55
|
+
* that already has its own context.
|
|
56
|
+
*/
|
|
57
|
+
cause?: unknown;
|
|
58
|
+
/**
|
|
59
|
+
* Override the default status → code mapping for specific cases. Return
|
|
60
|
+
* `undefined` to fall through to the default mapping.
|
|
61
|
+
*/
|
|
62
|
+
codeOverride?: (status: number) => JsonRpcErrorCode | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Additional fields merged into `error.data`. Always includes
|
|
65
|
+
* `{ url, status, statusText, body? }` from the response itself.
|
|
66
|
+
*/
|
|
67
|
+
data?: Record<string, unknown>;
|
|
68
|
+
/**
|
|
69
|
+
* Logical service name included in the error message
|
|
70
|
+
* (e.g., `'NCBI'` → `"NCBI returned HTTP 429"`). When omitted, the message
|
|
71
|
+
* uses the response URL host.
|
|
72
|
+
*/
|
|
73
|
+
service?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Builds an `McpError` from an HTTP `Response`, with status-aware classification
|
|
77
|
+
* and optional body capture.
|
|
78
|
+
*
|
|
79
|
+
* Reads the response body (consuming it) when `captureBody` is true, so callers
|
|
80
|
+
* must `response.clone()` first if they intend to read the body elsewhere.
|
|
81
|
+
*
|
|
82
|
+
* Always returns an `McpError` even for 1xx/2xx/3xx — the caller is expected to
|
|
83
|
+
* have verified `!response.ok` first, but the helper falls back to a sensible
|
|
84
|
+
* code (`InternalError`) instead of silently producing nothing.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```ts
|
|
88
|
+
* const response = await fetch(url);
|
|
89
|
+
* if (!response.ok) {
|
|
90
|
+
* throw await httpErrorFromResponse(response, {
|
|
91
|
+
* service: 'NCBI',
|
|
92
|
+
* data: { endpoint: 'esearch' },
|
|
93
|
+
* });
|
|
94
|
+
* }
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @example Wrapping a network failure
|
|
98
|
+
* ```ts
|
|
99
|
+
* try {
|
|
100
|
+
* const response = await fetch(url);
|
|
101
|
+
* if (!response.ok) {
|
|
102
|
+
* throw await httpErrorFromResponse(response, { service: 'NCBI' });
|
|
103
|
+
* }
|
|
104
|
+
* return await response.text();
|
|
105
|
+
* } catch (error) {
|
|
106
|
+
* if (error instanceof McpError) throw error;
|
|
107
|
+
* throw new McpError(JsonRpcErrorCode.ServiceUnavailable, 'NCBI request failed', { url }, { cause: error });
|
|
108
|
+
* }
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare function httpErrorFromResponse(response: Response, options?: HttpErrorFromResponseOptions): Promise<McpError>;
|
|
112
|
+
//# sourceMappingURL=httpError.d.ts.map
|
|
@@ -0,0 +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;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAqClF;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;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,QAAQ,CAAC,CA6CnB"}
|