@cyanheads/mcp-ts-core 0.13.7 → 0.13.9
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 +19 -15
- package/CLAUDE.md +19 -15
- package/README.md +4 -2
- package/changelog/0.13.x/0.13.8.md +101 -0
- package/changelog/0.13.x/0.13.9.md +113 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +39 -9
- package/dist/config/index.js.map +1 -1
- package/dist/core/app.d.ts +6 -3
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +20 -6
- package/dist/core/app.js.map +1 -1
- package/dist/core/context.d.ts +25 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +13 -3
- package/dist/core/context.js.map +1 -1
- package/dist/core/serverManifest.d.ts +6 -0
- package/dist/core/serverManifest.d.ts.map +1 -1
- package/dist/core/serverManifest.js +6 -0
- package/dist/core/serverManifest.js.map +1 -1
- package/dist/core/worker.d.ts +2 -0
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js +2 -0
- package/dist/core/worker.js.map +1 -1
- package/dist/linter/rules/enrichment-rules.d.ts +3 -2
- package/dist/linter/rules/enrichment-rules.d.ts.map +1 -1
- package/dist/linter/rules/enrichment-rules.js +9 -2
- package/dist/linter/rules/enrichment-rules.js.map +1 -1
- package/dist/linter/rules/handler-body-rules.d.ts.map +1 -1
- package/dist/linter/rules/handler-body-rules.js +10 -4
- package/dist/linter/rules/handler-body-rules.js.map +1 -1
- package/dist/linter/rules/schema-rules.d.ts +5 -0
- package/dist/linter/rules/schema-rules.d.ts.map +1 -1
- package/dist/linter/rules/schema-rules.js +44 -17
- package/dist/linter/rules/schema-rules.js.map +1 -1
- package/dist/linter/rules/tool-rules.d.ts +2 -1
- package/dist/linter/rules/tool-rules.d.ts.map +1 -1
- package/dist/linter/rules/tool-rules.js +36 -1
- package/dist/linter/rules/tool-rules.js.map +1 -1
- package/dist/mcp-server/inputRequired.d.ts +14 -5
- package/dist/mcp-server/inputRequired.d.ts.map +1 -1
- package/dist/mcp-server/inputRequired.js +15 -8
- package/dist/mcp-server/inputRequired.js.map +1 -1
- package/dist/mcp-server/outputContract.d.ts +33 -0
- package/dist/mcp-server/outputContract.d.ts.map +1 -0
- package/dist/mcp-server/outputContract.js +43 -0
- package/dist/mcp-server/outputContract.js.map +1 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +10 -2
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/tools/utils/inputPrevalidation.d.ts +163 -40
- package/dist/mcp-server/tools/utils/inputPrevalidation.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/inputPrevalidation.js +330 -114
- package/dist/mcp-server/tools/utils/inputPrevalidation.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +39 -15
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +361 -93
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js +4 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +2 -5
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.js +65 -9
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.js +2 -2
- package/dist/mcp-server/transports/http/sessionStore.js.map +1 -1
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +9 -5
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/stdio/stdioTransport.js +9 -5
- package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts +6 -2
- package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +8 -4
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/core/DataCanvas.d.ts.map +1 -1
- package/dist/services/canvas/core/DataCanvas.js +7 -5
- package/dist/services/canvas/core/DataCanvas.js.map +1 -1
- package/dist/services/canvas/core/canvasFactory.d.ts.map +1 -1
- package/dist/services/canvas/core/canvasFactory.js +2 -2
- package/dist/services/canvas/core/canvasFactory.js.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +82 -18
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +645 -344
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
- package/dist/services/canvas/providers/duckdb/exportWriter.d.ts +11 -7
- package/dist/services/canvas/providers/duckdb/exportWriter.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/exportWriter.js +19 -16
- package/dist/services/canvas/providers/duckdb/exportWriter.js.map +1 -1
- package/dist/services/llm/providers/openrouter.provider.js +1 -1
- package/dist/services/llm/providers/openrouter.provider.js.map +1 -1
- package/dist/services/mirror/core/defineMirror.d.ts +1 -0
- package/dist/services/mirror/core/defineMirror.d.ts.map +1 -1
- package/dist/services/mirror/core/defineMirror.js +1 -0
- package/dist/services/mirror/core/defineMirror.js.map +1 -1
- package/dist/services/speech/providers/elevenlabs.provider.js +3 -3
- package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -1
- package/dist/services/speech/providers/whisper.provider.d.ts.map +1 -1
- package/dist/services/speech/providers/whisper.provider.js +5 -5
- package/dist/services/speech/providers/whisper.provider.js.map +1 -1
- package/dist/storage/core/StorageService.d.ts.map +1 -1
- package/dist/storage/core/StorageService.js +3 -6
- package/dist/storage/core/StorageService.js.map +1 -1
- package/dist/storage/core/storageFactory.d.ts.map +1 -1
- package/dist/storage/core/storageFactory.js +12 -15
- package/dist/storage/core/storageFactory.js.map +1 -1
- package/dist/storage/core/storageValidation.d.ts +13 -13
- package/dist/storage/core/storageValidation.d.ts.map +1 -1
- package/dist/storage/core/storageValidation.js +49 -125
- package/dist/storage/core/storageValidation.js.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.js +5 -3
- package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.js +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.js +3 -3
- package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.js +4 -4
- package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.js +6 -5
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
- package/dist/testing/fuzz.d.ts.map +1 -1
- package/dist/testing/fuzz.js +7 -1
- package/dist/testing/fuzz.js.map +1 -1
- package/dist/testing/index.d.ts +15 -2
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +51 -6
- package/dist/testing/index.js.map +1 -1
- package/dist/types-global/errors.d.ts +7 -4
- package/dist/types-global/errors.d.ts.map +1 -1
- package/dist/types-global/errors.js.map +1 -1
- package/dist/utils/formatting/codeSpan.d.ts +27 -0
- package/dist/utils/formatting/codeSpan.d.ts.map +1 -0
- package/dist/utils/formatting/codeSpan.js +42 -0
- package/dist/utils/formatting/codeSpan.js.map +1 -0
- package/dist/utils/formatting/diffFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/diffFormatter.js +7 -15
- package/dist/utils/formatting/diffFormatter.js.map +1 -1
- package/dist/utils/formatting/markdownBuilder.d.ts +12 -5
- package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -1
- package/dist/utils/formatting/markdownBuilder.js +14 -2
- package/dist/utils/formatting/markdownBuilder.js.map +1 -1
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/tableFormatter.js +5 -9
- package/dist/utils/formatting/tableFormatter.js.map +1 -1
- package/dist/utils/formatting/treeFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/treeFormatter.js +5 -9
- package/dist/utils/formatting/treeFormatter.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.d.ts +17 -10
- package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.js +47 -26
- package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
- package/dist/utils/internal/error-handler/mappings.d.ts +17 -1
- package/dist/utils/internal/error-handler/mappings.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/mappings.js +22 -1
- package/dist/utils/internal/error-handler/mappings.js.map +1 -1
- package/dist/utils/internal/error-handler/types.d.ts +2 -0
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
- package/dist/utils/internal/logger.d.ts +75 -3
- package/dist/utils/internal/logger.d.ts.map +1 -1
- package/dist/utils/internal/logger.js +181 -52
- package/dist/utils/internal/logger.js.map +1 -1
- package/dist/utils/internal/performance.d.ts +11 -0
- package/dist/utils/internal/performance.d.ts.map +1 -1
- package/dist/utils/internal/performance.js +46 -12
- package/dist/utils/internal/performance.js.map +1 -1
- package/dist/utils/network/fetchWithTimeout.d.ts +11 -5
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
- package/dist/utils/network/fetchWithTimeout.js +50 -23
- package/dist/utils/network/fetchWithTimeout.js.map +1 -1
- package/dist/utils/network/pacer.d.ts +38 -5
- package/dist/utils/network/pacer.d.ts.map +1 -1
- package/dist/utils/network/pacer.js +87 -25
- package/dist/utils/network/pacer.js.map +1 -1
- package/dist/utils/network/retry.d.ts +16 -8
- package/dist/utils/network/retry.d.ts.map +1 -1
- package/dist/utils/network/retry.js +19 -8
- package/dist/utils/network/retry.js.map +1 -1
- package/dist/utils/overflow/outlineOnOverflow.d.ts +18 -2
- package/dist/utils/overflow/outlineOnOverflow.d.ts.map +1 -1
- package/dist/utils/overflow/outlineOnOverflow.js +28 -3
- package/dist/utils/overflow/outlineOnOverflow.js.map +1 -1
- package/dist/utils/pagination/pagination.d.ts +3 -1
- package/dist/utils/pagination/pagination.d.ts.map +1 -1
- package/dist/utils/pagination/pagination.js +10 -2
- package/dist/utils/pagination/pagination.js.map +1 -1
- package/dist/utils/parsing/csvParser.d.ts.map +1 -1
- package/dist/utils/parsing/csvParser.js +4 -2
- package/dist/utils/parsing/csvParser.js.map +1 -1
- package/dist/utils/parsing/htmlExtractor.js +1 -1
- package/dist/utils/parsing/htmlExtractor.js.map +1 -1
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -1
- package/dist/utils/parsing/jsonParser.js +3 -1
- package/dist/utils/parsing/jsonParser.js.map +1 -1
- package/dist/utils/parsing/xmlParser.d.ts.map +1 -1
- package/dist/utils/parsing/xmlParser.js +3 -1
- package/dist/utils/parsing/xmlParser.js.map +1 -1
- package/dist/utils/parsing/yamlParser.d.ts.map +1 -1
- package/dist/utils/parsing/yamlParser.js +3 -1
- package/dist/utils/parsing/yamlParser.js.map +1 -1
- package/dist/utils/security/idGenerator.d.ts.map +1 -1
- package/dist/utils/security/idGenerator.js +20 -4
- package/dist/utils/security/idGenerator.js.map +1 -1
- package/dist/utils/security/sanitization.d.ts +31 -0
- package/dist/utils/security/sanitization.d.ts.map +1 -1
- package/dist/utils/security/sanitization.js +98 -11
- package/dist/utils/security/sanitization.js.map +1 -1
- package/dist/utils/telemetry/attributes.d.ts +21 -2
- package/dist/utils/telemetry/attributes.d.ts.map +1 -1
- package/dist/utils/telemetry/attributes.js +21 -2
- package/dist/utils/telemetry/attributes.js.map +1 -1
- package/dist/utils/telemetry/instrumentation.d.ts +9 -3
- package/dist/utils/telemetry/instrumentation.d.ts.map +1 -1
- package/dist/utils/telemetry/instrumentation.js +85 -13
- package/dist/utils/telemetry/instrumentation.js.map +1 -1
- package/framework-skills/add-app-tool/SKILL.md +3 -3
- package/framework-skills/add-export/SKILL.md +5 -16
- package/framework-skills/add-prompt/SKILL.md +7 -3
- package/framework-skills/add-resource/SKILL.md +7 -5
- package/framework-skills/add-tool/SKILL.md +12 -10
- package/framework-skills/api-auth/SKILL.md +4 -2
- package/framework-skills/api-canvas/SKILL.md +19 -10
- package/framework-skills/api-config/SKILL.md +9 -6
- package/framework-skills/api-context/SKILL.md +16 -5
- package/framework-skills/api-errors/SKILL.md +23 -17
- package/framework-skills/api-linter/SKILL.md +32 -9
- package/framework-skills/api-mirror/SKILL.md +2 -1
- package/framework-skills/api-telemetry/SKILL.md +34 -14
- package/framework-skills/api-testing/SKILL.md +5 -3
- package/framework-skills/api-utils/SKILL.md +10 -10
- package/framework-skills/api-utils/references/formatting.md +1 -1
- package/framework-skills/api-utils/references/parsing.md +2 -2
- package/framework-skills/api-utils/references/security.md +6 -4
- package/framework-skills/design-mcp-server/SKILL.md +2 -2
- package/framework-skills/field-test/SKILL.md +4 -4
- package/framework-skills/git-wrapup/SKILL.md +12 -7
- package/framework-skills/maintenance/SKILL.md +2 -2
- package/framework-skills/orchestrations/SKILL.md +7 -6
- package/framework-skills/orchestrations/workflows/field-test-fix.md +9 -19
- package/framework-skills/orchestrations/workflows/fix-wrapup-release.md +7 -7
- package/framework-skills/orchestrations/workflows/greenfield-build.md +8 -5
- package/framework-skills/orchestrations/workflows/maintenance-release.md +8 -8
- package/framework-skills/polish-docs-meta/SKILL.md +4 -4
- package/framework-skills/polish-docs-meta/references/readme.md +1 -0
- package/framework-skills/release-and-publish/SKILL.md +7 -5
- package/framework-skills/release-pr-review/SKILL.md +37 -23
- package/framework-skills/report-issue-framework/SKILL.md +7 -5
- package/framework-skills/report-issue-local/SKILL.md +8 -6
- package/framework-skills/security-pass/SKILL.md +8 -8
- package/framework-skills/techniques/SKILL.md +1 -1
- package/framework-skills/techniques/references/outline-on-overflow.md +12 -7
- package/package.json +20 -5
- package/scripts/check-skill-versions.ts +103 -22
- package/scripts/devcheck.ts +11 -9
- package/scripts/lint-mcp.ts +87 -27
- package/scripts/lint-packaging.ts +99 -1
- package/scripts/release-github.ts +117 -5
- package/templates/.env.example +4 -0
- package/templates/Dockerfile +26 -6
- package/templates/_.mcpbignore +2 -0
- package/templates/package.json +1 -0
|
@@ -14,25 +14,43 @@
|
|
|
14
14
|
* in another case style (`max_results` for `maxResults`). Rewritten to the
|
|
15
15
|
* canonical key before parsing. A one-to-one mapping fixed ahead of time, not
|
|
16
16
|
* the nearest-key guess #232 rejected.
|
|
17
|
-
* 3. **Representation repair (#234)** — a JSON-stringified array
|
|
18
|
-
* was declared
|
|
19
|
-
* only
|
|
20
|
-
*
|
|
21
|
-
* valid.
|
|
17
|
+
* 3. **Representation repair (#234, #479, #487)** — a JSON-stringified array or
|
|
18
|
+
* object where one was declared, or an integer where a string was. Applied
|
|
19
|
+
* only *after* the parse has already failed, and kept only when it flips the
|
|
20
|
+
* arguments from invalid to valid: the author's schema is the sole arbiter,
|
|
21
|
+
* so a repair can never touch input that was already valid.
|
|
22
|
+
*
|
|
23
|
+
* The drop runs first, so it also discards a key the alias stage would have
|
|
24
|
+
* resolved: an underscore spelling of a declared key (`_query`), a declared
|
|
25
|
+
* `_q` alias, an ignore-listed key a declared alias names. When the arguments
|
|
26
|
+
* then fail, repair included, the two stages run once more with the alias
|
|
27
|
+
* stage first, and that retry — with its own repair — is kept only if it
|
|
28
|
+
* validates (#563). A call the first order validates never reaches the retry,
|
|
29
|
+
* so the retry never changes which calls validate. A call neither order
|
|
30
|
+
* validates carries the retry's rejection, where the discarded keys reached
|
|
31
|
+
* their targets: a declared `_q` alias with a bad value is reported as
|
|
32
|
+
* validated under `query`, with the value's own failure, not as a dropped key
|
|
33
|
+
* beside a missing field.
|
|
22
34
|
*
|
|
23
35
|
* All three are on by default and each has a server-level switch on
|
|
24
36
|
* `createApp({ input })` / `createWorkerHandler({ input })`. None of them
|
|
25
|
-
* changes what `tools/list` advertises
|
|
26
|
-
* a rewrite, and a repair each emit one
|
|
27
|
-
* instead
|
|
37
|
+
* changes what `tools/list` advertises. A call they rescue carries nothing
|
|
38
|
+
* about them in its response: a drop, a rewrite, and a repair each emit one
|
|
39
|
+
* debug log and one counter increment instead — for the attempt whose
|
|
40
|
+
* arguments the handler receives, never one the parse discarded. A call they
|
|
41
|
+
* cannot rescue is rejected with the rewrites and underscore-rule drops of the
|
|
42
|
+
* attempt whose rejection it carries reported (#468), since without them the caller cannot
|
|
43
|
+
* tell a bad value from a key that was moved or discarded; a repair the
|
|
44
|
+
* re-parse discarded leaves no trace there.
|
|
28
45
|
*
|
|
29
|
-
* The split between
|
|
30
|
-
* author- or framework-defined — the ignore-list entry that
|
|
31
|
-
* declared key a rewrite resolved to — because a metric label
|
|
32
|
-
* caller's own key text mints a permanent time series per spelling
|
|
33
|
-
* invents (#114). The raw key and alias go to the debug log, which is
|
|
34
|
-
* operator looks when a counter shows a new client artifact and where
|
|
35
|
-
* cardinality costs nothing
|
|
46
|
+
* The split between log and counter is deliberate. Counter attributes are
|
|
47
|
+
* bounded and author- or framework-defined — the ignore-list entry that
|
|
48
|
+
* matched, the declared key a rewrite resolved to — because a metric label
|
|
49
|
+
* carrying the caller's own key text mints a permanent time series per spelling
|
|
50
|
+
* a client invents (#114). The raw key and alias go to the debug log, which is
|
|
51
|
+
* where an operator looks when a counter shows a new client artifact and where
|
|
52
|
+
* cardinality costs nothing — and, on a rejection, back to the caller who sent
|
|
53
|
+
* them, since an error payload is per call rather than a permanent series.
|
|
36
54
|
*
|
|
37
55
|
* @module src/mcp-server/tools/utils/inputPrevalidation
|
|
38
56
|
*/
|
|
@@ -48,8 +66,16 @@ import { inputVariants, isDiscriminatedUnionSchema, zodDef } from './schemaShape
|
|
|
48
66
|
* on `params`, not inside `arguments`; the other two are call bookkeeping.
|
|
49
67
|
*/
|
|
50
68
|
const BUILT_IN_IGNORED_KEYS = ['_meta', 'tool_call_description', 'toolCallId'];
|
|
51
|
-
/**
|
|
52
|
-
|
|
69
|
+
/**
|
|
70
|
+
* The repairs {@link repairRepresentations} performs, as `mcp.input.coercion`
|
|
71
|
+
* labels them, in the order a call's debug log names them — paired with how
|
|
72
|
+
* that log reads each one.
|
|
73
|
+
*/
|
|
74
|
+
const COERCION_KINDS = {
|
|
75
|
+
stringified_array: 'a stringified array',
|
|
76
|
+
stringified_object: 'a stringified object',
|
|
77
|
+
integer_as_string: 'an integer sent for a string',
|
|
78
|
+
};
|
|
53
79
|
/**
|
|
54
80
|
* What the ignored-key counter reports for a key the underscore heuristic
|
|
55
81
|
* dropped. The key itself is caller-supplied and stays in the debug log.
|
|
@@ -90,19 +116,63 @@ function countAliased(toolName, target, kind) {
|
|
|
90
116
|
[ATTR_MCP_INPUT_ALIAS_KIND]: kind,
|
|
91
117
|
});
|
|
92
118
|
}
|
|
93
|
-
/**
|
|
94
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Emits one counter increment and one debug log per change an attempt made, in
|
|
121
|
+
* the order its stages made them. {@link parseToolArguments} calls it once per
|
|
122
|
+
* call, for the attempt whose arguments the handler receives — or, on a
|
|
123
|
+
* rejection, the first attempt, the one the rejection reports — so a key the
|
|
124
|
+
* alias-first retry rewrote never also counts as dropped (#563).
|
|
125
|
+
*/
|
|
126
|
+
export function recordPrevalidation(def, attempt, context) {
|
|
127
|
+
for (const change of attempt.changes) {
|
|
128
|
+
if (change.kind === 'aliased') {
|
|
129
|
+
const { alias, aliasKind, target } = change;
|
|
130
|
+
countAliased(def.name, target, aliasKind);
|
|
131
|
+
debugLog(`Tool '${def.name}': rewrote argument key '${alias}' to '${target}'.`, context, {
|
|
132
|
+
toolName: def.name,
|
|
133
|
+
alias,
|
|
134
|
+
target,
|
|
135
|
+
aliasKind,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
countIgnoredKey(def.name, change.rule);
|
|
140
|
+
debugLog(`Tool '${def.name}': dropped client-added argument key '${change.key}'.`, context, {
|
|
141
|
+
toolName: def.name,
|
|
142
|
+
ignoredKey: change.key,
|
|
143
|
+
ignoreRule: change.rule,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* One increment per repaired call and kind — a call repairing an array and an
|
|
150
|
+
* object adds one to each series, and one repairing three arrays adds one — and
|
|
151
|
+
* one debug log per call naming every kind that fired.
|
|
152
|
+
*/
|
|
153
|
+
export function countCoerced(toolName, kinds, context) {
|
|
95
154
|
coercedCounter ??= createCounter('mcp.input.coerced', 'Tool calls that validated only after a representation repair', '{calls}');
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
155
|
+
for (const kind of kinds) {
|
|
156
|
+
coercedCounter.add(1, {
|
|
157
|
+
[ATTR_MCP_TOOL_NAME]: toolName,
|
|
158
|
+
[ATTR_MCP_INPUT_COERCION]: kind,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
const phrases = kinds.map((kind) => COERCION_KINDS[kind]);
|
|
162
|
+
const named = phrases.length < 2
|
|
163
|
+
? phrases.join('')
|
|
164
|
+
: `${phrases.slice(0, -1).join(', ')} and ${phrases.at(-1)}`;
|
|
165
|
+
debugLog(`Tool '${toolName}': arguments validated after repairing ${named}.`, context, {
|
|
166
|
+
toolName,
|
|
167
|
+
coercions: kinds,
|
|
99
168
|
});
|
|
100
|
-
debugLog(`Tool '${toolName}': arguments validated after repairing a stringified array.`, context, { toolName, coercion: COERCION_KIND_STRINGIFIED_ARRAY });
|
|
101
169
|
}
|
|
102
170
|
/**
|
|
103
|
-
* The step's own debug channel. A
|
|
104
|
-
*
|
|
105
|
-
*
|
|
171
|
+
* The step's own debug channel. A call the step rescues carries nothing about
|
|
172
|
+
* it in its response, so the log is where a server operator sees which key was
|
|
173
|
+
* dropped or moved; the counters say only that one was. A rejected call also
|
|
174
|
+
* reports its rewrites and underscore-rule drops to the caller (#468); an
|
|
175
|
+
* ignore-list drop never reaches the caller at all.
|
|
106
176
|
*/
|
|
107
177
|
function debugLog(message, context, extra) {
|
|
108
178
|
const base = context ?? requestContextService.createRequestContext({ operation: 'ToolInputPrevalidation' });
|
|
@@ -199,51 +269,18 @@ function selectVariant(plan, args) {
|
|
|
199
269
|
}
|
|
200
270
|
return undefined;
|
|
201
271
|
}
|
|
202
|
-
// ---------------------------------------------------------------------------
|
|
203
|
-
// Stage 1 — drop client-added keys (#453)
|
|
204
|
-
// ---------------------------------------------------------------------------
|
|
205
272
|
/**
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
* - **A declared key is never dropped**, including a declared underscore-prefixed
|
|
210
|
-
* one. On a union root "declared" is every variant's root keys, since the
|
|
211
|
-
* matching variant is unknown until the discriminator is read.
|
|
212
|
-
* - **An author-opened root is untouched** — its extra keys reach the handler
|
|
213
|
-
* today, and dropping them would delete data the author accepts on purpose.
|
|
214
|
-
* - **The underscore rule is off for a tool declaring any underscore-prefixed
|
|
215
|
-
* key.** Otherwise a misspelled `_cursor` would be silently dropped instead of
|
|
216
|
-
* rejected by name, which is the failure #232 removed. The ignore list still
|
|
217
|
-
* applies there.
|
|
273
|
+
* The keys the drop stage discards whenever the tool does not declare them: the
|
|
274
|
+
* built-in client artifacts plus the server's own `input.ignoreKeys`. Empty
|
|
275
|
+
* when the stage is off, since nothing is then treated as a client artifact.
|
|
218
276
|
*/
|
|
219
|
-
function
|
|
220
|
-
if (options?.ignoreKeys === false
|
|
221
|
-
return
|
|
222
|
-
|
|
223
|
-
const underscoreRule = !plan.underscoreDeclared;
|
|
224
|
-
let kept;
|
|
225
|
-
for (const key of Object.keys(args)) {
|
|
226
|
-
if (plan.allKeys.has(key))
|
|
227
|
-
continue;
|
|
228
|
-
const listed = ignored.has(key);
|
|
229
|
-
if (!listed && !(underscoreRule && key.startsWith('_')))
|
|
230
|
-
continue;
|
|
231
|
-
// Spread copies own properties by definition, so a caller's own `__proto__`
|
|
232
|
-
// survives as a key instead of re-prototyping the copy; `delete` on that own
|
|
233
|
-
// property is equally safe.
|
|
234
|
-
kept ??= { ...args };
|
|
235
|
-
delete kept[key];
|
|
236
|
-
countIgnoredKey(def.name, listed ? key : UNDERSCORE_RULE);
|
|
237
|
-
debugLog(`Tool '${def.name}': dropped client-added argument key '${key}'.`, context, {
|
|
238
|
-
toolName: def.name,
|
|
239
|
-
ignoredKey: key,
|
|
240
|
-
ignoreRule: listed ? key : UNDERSCORE_RULE,
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
return kept ?? args;
|
|
277
|
+
function ignoreListFor(options) {
|
|
278
|
+
if (options?.ignoreKeys === false)
|
|
279
|
+
return new Set();
|
|
280
|
+
return new Set([...BUILT_IN_IGNORED_KEYS, ...(options?.ignoreKeys ?? [])]);
|
|
244
281
|
}
|
|
245
282
|
// ---------------------------------------------------------------------------
|
|
246
|
-
// Stage
|
|
283
|
+
// Stage — key aliases (#452)
|
|
247
284
|
// ---------------------------------------------------------------------------
|
|
248
285
|
/**
|
|
249
286
|
* Rewrites root keys to their canonical spelling in two passes: the definition's
|
|
@@ -257,17 +294,28 @@ function dropIgnoredKeys(def, args, plan, options, context) {
|
|
|
257
294
|
* *to*: the SDK cross-checks the `Mcp-Param-<Name>` header against the raw body
|
|
258
295
|
* before dispatch, so a later rewrite would hand the handler a value no
|
|
259
296
|
* intermediary attested.
|
|
297
|
+
*
|
|
298
|
+
* `unfolded` names keys the case-style pass never folds. The alias-first retry
|
|
299
|
+
* passes the ignore list, since there the drop has not yet removed a client
|
|
300
|
+
* artifact: `_meta` stays the client's, whatever a tool declares as `meta`. A
|
|
301
|
+
* declared alias still fires for one — naming it is the author's call, as
|
|
302
|
+
* declaring the key itself is (#563).
|
|
303
|
+
*
|
|
304
|
+
* Returns the rewrites in the order they were made, and again in argument order
|
|
305
|
+
* for the rejection report.
|
|
260
306
|
*/
|
|
261
|
-
function applyAliases(def, args, plan, options,
|
|
307
|
+
function applyAliases(def, args, plan, options, unfolded) {
|
|
308
|
+
const changes = [];
|
|
262
309
|
const declared = def.inputAliases;
|
|
263
310
|
const caseStyle = options?.caseStyleAliases !== false;
|
|
264
311
|
if (plan.anyOpen || (!declared && !caseStyle))
|
|
265
|
-
return args;
|
|
312
|
+
return { args, aliased: [], changes };
|
|
266
313
|
const variant = selectVariant(plan, args);
|
|
267
314
|
if (!variant)
|
|
268
|
-
return args;
|
|
315
|
+
return { args, aliased: [], changes };
|
|
269
316
|
let rewritten;
|
|
270
317
|
const current = () => rewritten ?? args;
|
|
318
|
+
const moved = new Map();
|
|
271
319
|
const rewritable = (alias, target) => Object.hasOwn(current(), alias) &&
|
|
272
320
|
!variant.keys.has(alias) &&
|
|
273
321
|
variant.keys.has(target) &&
|
|
@@ -283,13 +331,8 @@ function applyAliases(def, args, plan, options, context) {
|
|
|
283
331
|
rewritten ??= { ...args };
|
|
284
332
|
rewritten[target] = rewritten[alias];
|
|
285
333
|
delete rewritten[alias];
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
toolName: def.name,
|
|
289
|
-
alias,
|
|
290
|
-
target,
|
|
291
|
-
aliasKind: kind,
|
|
292
|
-
});
|
|
334
|
+
moved.set(alias, target);
|
|
335
|
+
changes.push({ kind: 'aliased', alias, target, aliasKind: kind });
|
|
293
336
|
};
|
|
294
337
|
for (const [alias, target] of Object.entries(declared ?? {})) {
|
|
295
338
|
if (rewritable(alias, target))
|
|
@@ -299,39 +342,151 @@ function applyAliases(def, args, plan, options, context) {
|
|
|
299
342
|
// Snapshot first: `move` only ever removes an undeclared key and adds a
|
|
300
343
|
// declared one, so the remaining candidates are unaffected.
|
|
301
344
|
for (const key of Object.keys(current())) {
|
|
302
|
-
if (variant.keys.has(key))
|
|
345
|
+
if (variant.keys.has(key) || unfolded.has(key))
|
|
303
346
|
continue;
|
|
304
347
|
const target = variant.folded.get(foldArgumentKey(key));
|
|
305
348
|
if (target && rewritable(key, target))
|
|
306
349
|
move(key, target, 'case_style');
|
|
307
350
|
}
|
|
308
351
|
}
|
|
309
|
-
|
|
352
|
+
const aliased = Object.keys(args).flatMap((alias) => {
|
|
353
|
+
const target = moved.get(alias);
|
|
354
|
+
return target === undefined ? [] : [{ alias, target }];
|
|
355
|
+
});
|
|
356
|
+
return { args: rewritten ?? args, aliased, changes };
|
|
310
357
|
}
|
|
311
358
|
// ---------------------------------------------------------------------------
|
|
312
|
-
//
|
|
359
|
+
// Stage — drop client-added keys (#453)
|
|
313
360
|
// ---------------------------------------------------------------------------
|
|
314
361
|
/**
|
|
315
|
-
*
|
|
316
|
-
*
|
|
362
|
+
* Drops a root key the tool does not declare when it is either underscore-
|
|
363
|
+
* prefixed or on the ignore list. Three boundaries:
|
|
317
364
|
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
365
|
+
* - **A declared key is never dropped**, including a declared underscore-prefixed
|
|
366
|
+
* one. On a union root "declared" is every variant's root keys, since the
|
|
367
|
+
* matching variant is unknown until the discriminator is read.
|
|
368
|
+
* - **An author-opened root is untouched** — its extra keys reach the handler
|
|
369
|
+
* today, and dropping them would delete data the author accepts on purpose.
|
|
370
|
+
* - **The underscore rule is off for a tool declaring any underscore-prefixed
|
|
371
|
+
* key.** Otherwise a misspelled `_cursor` would be silently dropped instead of
|
|
372
|
+
* rejected by name, which is the failure #232 removed. The ignore list still
|
|
373
|
+
* applies there.
|
|
374
|
+
*
|
|
375
|
+
* A key the alias stage would have rewritten is dropped here like any other on
|
|
376
|
+
* the first attempt; the alias-first retry is what reaches it (#563).
|
|
377
|
+
*
|
|
378
|
+
* Returns every drop in argument order, and the underscore-rule drops again for
|
|
379
|
+
* the rejection report — an ignore-list drop is a client artifact and is never
|
|
380
|
+
* reported.
|
|
321
381
|
*/
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
382
|
+
function dropIgnoredKeys(args, plan, options, ignoreList) {
|
|
383
|
+
const changes = [];
|
|
384
|
+
const ignored = [];
|
|
385
|
+
if (options?.ignoreKeys === false || plan.anyOpen)
|
|
386
|
+
return { args, changes, ignored };
|
|
387
|
+
const underscoreRule = !plan.underscoreDeclared;
|
|
388
|
+
let kept;
|
|
389
|
+
for (const key of Object.keys(args)) {
|
|
390
|
+
if (plan.allKeys.has(key))
|
|
391
|
+
continue;
|
|
392
|
+
const listed = ignoreList.has(key);
|
|
393
|
+
if (!listed && !(underscoreRule && key.startsWith('_')))
|
|
394
|
+
continue;
|
|
395
|
+
// Spread copies own properties by definition, so a caller's own `__proto__`
|
|
396
|
+
// survives as a key instead of re-prototyping the copy; `delete` on that own
|
|
397
|
+
// property is equally safe.
|
|
398
|
+
kept ??= { ...args };
|
|
399
|
+
delete kept[key];
|
|
400
|
+
if (!listed)
|
|
401
|
+
ignored.push(key);
|
|
402
|
+
changes.push({ kind: 'dropped', key, rule: listed ? key : UNDERSCORE_RULE });
|
|
403
|
+
}
|
|
404
|
+
return { args: kept ?? args, changes, ignored };
|
|
405
|
+
}
|
|
406
|
+
// ---------------------------------------------------------------------------
|
|
407
|
+
// Public entry points
|
|
408
|
+
// ---------------------------------------------------------------------------
|
|
409
|
+
/** No key the case-style pass declines to fold. */
|
|
410
|
+
const NO_KEYS = new Set();
|
|
411
|
+
/**
|
|
412
|
+
* Runs both pre-parse stages in one order and collects what they changed.
|
|
413
|
+
* Emits nothing: the parse has not yet decided which attempt the handler
|
|
414
|
+
* receives.
|
|
415
|
+
*/
|
|
416
|
+
function runStages(def, args, options, order) {
|
|
417
|
+
if (args === null || typeof args !== 'object' || Array.isArray(args)) {
|
|
418
|
+
return { args, changes: [] };
|
|
419
|
+
}
|
|
325
420
|
const plan = planFor(def.input);
|
|
326
421
|
if (plan.variants.length === 0)
|
|
327
|
-
return args;
|
|
422
|
+
return { args, changes: [] };
|
|
423
|
+
const ignoreList = ignoreListFor(options);
|
|
328
424
|
const record = args;
|
|
329
|
-
|
|
425
|
+
if (order === 'drop-first') {
|
|
426
|
+
// The drop has already removed every undeclared ignore-listed key, so the
|
|
427
|
+
// case-style pass folds whatever is left, exactly as it always has.
|
|
428
|
+
const drop = dropIgnoredKeys(record, plan, options, ignoreList);
|
|
429
|
+
const rewrite = applyAliases(def, drop.args, plan, options, NO_KEYS);
|
|
430
|
+
const changes = [...drop.changes, ...rewrite.changes];
|
|
431
|
+
return attempt(rewrite.args, changes, rewrite.aliased, drop.ignored);
|
|
432
|
+
}
|
|
433
|
+
const rewrite = applyAliases(def, record, plan, options, ignoreList);
|
|
434
|
+
const drop = dropIgnoredKeys(rewrite.args, plan, options, ignoreList);
|
|
435
|
+
return attempt(drop.args, [...rewrite.changes, ...drop.changes], rewrite.aliased, drop.ignored);
|
|
436
|
+
}
|
|
437
|
+
/** One attempt, carrying a report only when a rewrite or an underscore-rule drop happened. */
|
|
438
|
+
function attempt(args, changes, aliased, ignored) {
|
|
439
|
+
if (aliased.length === 0 && ignored.length === 0)
|
|
440
|
+
return { args, changes };
|
|
441
|
+
return { args, changes, report: { aliased, ignored } };
|
|
330
442
|
}
|
|
331
443
|
/**
|
|
332
|
-
*
|
|
333
|
-
*
|
|
334
|
-
*
|
|
444
|
+
* Runs the pre-parse half of the step in its first order — drop client-added
|
|
445
|
+
* keys, then rewrite key aliases — and returns the arguments to parse, with
|
|
446
|
+
* what the two stages changed that the caller wrote.
|
|
447
|
+
*
|
|
448
|
+
* `args` is the caller's own object when nothing applied. Non-object arguments
|
|
449
|
+
* are handed straight back: the schema's own rejection already says what
|
|
450
|
+
* arrived.
|
|
451
|
+
*/
|
|
452
|
+
export function prevalidateToolArguments(def, args, options) {
|
|
453
|
+
return runStages(def, args, options, 'drop-first');
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* The retry for a call whose first attempt failed (#563): the same stages with
|
|
457
|
+
* the alias stage first, so a key the drop discarded — an underscore spelling
|
|
458
|
+
* of a declared key, a declared `_q` alias, an ignore-listed key a declared
|
|
459
|
+
* alias names — reaches the rewrite. An underscore-prefixed key the alias stage
|
|
460
|
+
* cannot resolve is still dropped after it.
|
|
461
|
+
*
|
|
462
|
+
* `undefined` when there is nothing to retry: the first attempt dropped no key,
|
|
463
|
+
* or this order hands the parse the same arguments, which would only repeat
|
|
464
|
+
* the first attempt's failure.
|
|
465
|
+
*/
|
|
466
|
+
export function prevalidateAliasFirst(def, args, first, options) {
|
|
467
|
+
if (!first.changes.some((change) => change.kind === 'dropped'))
|
|
468
|
+
return undefined;
|
|
469
|
+
const retry = runStages(def, args, options, 'alias-first');
|
|
470
|
+
// A drop means the arguments were an object, and both orders hand back one.
|
|
471
|
+
const same = sameArguments(retry.args, first.args);
|
|
472
|
+
return same ? undefined : retry;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Whether two orderings of the stages produced the same arguments. Both only
|
|
476
|
+
* move and delete keys of one caller object, never touching a value, so the
|
|
477
|
+
* same key set holding the same values is the same parse.
|
|
478
|
+
*/
|
|
479
|
+
function sameArguments(a, b) {
|
|
480
|
+
const keys = Object.keys(a);
|
|
481
|
+
return (keys.length === Object.keys(b).length &&
|
|
482
|
+
keys.every((key) => Object.hasOwn(b, key) && Object.is(a[key], b[key])));
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Undoes a representation slip at each path the failed parse's issues named:
|
|
486
|
+
* a string whose trimmed form is a JSON array or object is parsed back into
|
|
487
|
+
* what it encodes (#234, #479), and a safe integer where a string was expected
|
|
488
|
+
* becomes its decimal string (#487). Keys are never added, dropped, or renamed,
|
|
489
|
+
* and a value no issue points at is returned untouched.
|
|
335
490
|
*
|
|
336
491
|
* **Targeted, not a full walk.** A rejection names exactly the values the schema
|
|
337
492
|
* could not accept, and repairing anything else loses repairs that should have
|
|
@@ -339,43 +494,104 @@ export function prevalidateToolArguments(def, args, options, context) {
|
|
|
339
494
|
* free-text field legitimately holding `"[1,2]"` would have both rewritten, the
|
|
340
495
|
* re-parse would fail on the free-text field, and the whole call would be
|
|
341
496
|
* rejected over a value that was valid all along. An `invalid_union` issue's
|
|
342
|
-
* outer path counts like any other — that is the value the union rejected
|
|
497
|
+
* outer path counts like any other — that is the value the union rejected, and
|
|
498
|
+
* the only one read: a number inside one branch of a union field stays as sent.
|
|
343
499
|
*
|
|
344
|
-
*
|
|
345
|
-
*
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
* runs this only after validation has already failed and keeps the result only
|
|
349
|
-
* when it then passes.
|
|
500
|
+
* **One pass, no stacking.** Only a value the first parse rejected is repaired,
|
|
501
|
+
* and at most once, so a value one repair produced is never repaired again — an
|
|
502
|
+
* integer inside a stringified array, a stringified field inside a stringified
|
|
503
|
+
* object. The caller re-parses once.
|
|
350
504
|
*
|
|
351
|
-
*
|
|
352
|
-
*
|
|
505
|
+
* `JSON.parse` is the exact inverse of the `JSON.stringify` that produced a
|
|
506
|
+
* string, and `String(n)` of a safe integer is the digits the caller sent, so
|
|
507
|
+
* each repair undoes a known encoding rather than matching a nearest candidate —
|
|
508
|
+
* the distinction that makes it safe where nearest-key matching is not (#232).
|
|
509
|
+
* Safety does not rest on that alone: {@link parseToolArguments} runs this only
|
|
510
|
+
* after validation has already failed and keeps the result only when it then
|
|
511
|
+
* passes.
|
|
512
|
+
*
|
|
513
|
+
* `args` is the argument itself when nothing was repairable, which is the
|
|
514
|
+
* signal the caller uses to skip the second parse.
|
|
353
515
|
*/
|
|
354
516
|
export function repairRepresentations(args, issues) {
|
|
355
517
|
let repaired = args;
|
|
518
|
+
const fired = new Set();
|
|
356
519
|
for (const issue of issues) {
|
|
357
520
|
if (issue.path.length === 0)
|
|
358
521
|
continue;
|
|
359
522
|
const current = readAt(repaired, issue.path);
|
|
360
|
-
const
|
|
361
|
-
if (
|
|
362
|
-
repaired = writeAt(repaired, issue.path,
|
|
523
|
+
const repair = repairValue(current, issue);
|
|
524
|
+
if (repair) {
|
|
525
|
+
repaired = writeAt(repaired, issue.path, repair.value);
|
|
526
|
+
fired.add(repair.kind);
|
|
527
|
+
}
|
|
363
528
|
}
|
|
364
|
-
return
|
|
529
|
+
return {
|
|
530
|
+
args: repaired,
|
|
531
|
+
kinds: Object.keys(COERCION_KINDS).filter((kind) => fired.has(kind)),
|
|
532
|
+
};
|
|
365
533
|
}
|
|
366
|
-
/**
|
|
367
|
-
|
|
534
|
+
/**
|
|
535
|
+
* The repair for one value the parse rejected, or `undefined` when none applies.
|
|
536
|
+
*
|
|
537
|
+
* A string is decoded only when its trimmed form opens a JSON array or object —
|
|
538
|
+
* the grammar then guarantees the decoded kind. A number becomes a string only
|
|
539
|
+
* when it is a safe integer other than `-0` (`String(-0)` is `"0"`, and an
|
|
540
|
+
* unsafe integer already lost digits in `JSON.parse`), and only when the issue
|
|
541
|
+
* says it failed for being a number ({@link failedAsNumber}).
|
|
542
|
+
*/
|
|
543
|
+
function repairValue(value, issue) {
|
|
544
|
+
if (typeof value === 'number') {
|
|
545
|
+
return Number.isSafeInteger(value) && !Object.is(value, -0) && failedAsNumber(issue)
|
|
546
|
+
? { kind: 'integer_as_string', value: String(value) }
|
|
547
|
+
: undefined;
|
|
548
|
+
}
|
|
368
549
|
if (typeof value !== 'string')
|
|
369
|
-
return
|
|
550
|
+
return undefined;
|
|
370
551
|
const trimmed = value.trim();
|
|
371
|
-
|
|
372
|
-
|
|
552
|
+
const kind = trimmed.startsWith('[')
|
|
553
|
+
? 'stringified_array'
|
|
554
|
+
: trimmed.startsWith('{')
|
|
555
|
+
? 'stringified_object'
|
|
556
|
+
: undefined;
|
|
557
|
+
if (!kind)
|
|
558
|
+
return undefined;
|
|
373
559
|
try {
|
|
374
|
-
|
|
375
|
-
return Array.isArray(parsed) ? parsed : value;
|
|
560
|
+
return { kind, value: JSON.parse(trimmed) };
|
|
376
561
|
}
|
|
377
562
|
catch {
|
|
378
|
-
return
|
|
563
|
+
return undefined;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Whether an issue says its value failed for being a number, rather than for
|
|
568
|
+
* failing a number's own check — the gate that keeps the integer repair from
|
|
569
|
+
* laundering a number into a string branch (#487).
|
|
570
|
+
*
|
|
571
|
+
* - `invalid_type` — the value's type is what the schema there refused.
|
|
572
|
+
* - `invalid_value` listing only strings — a `z.enum` or string literal.
|
|
573
|
+
* - `invalid_union` whose every branch failed one of those two ways at its own
|
|
574
|
+
* root.
|
|
575
|
+
*
|
|
576
|
+
* Anything else keeps its rejection. `-1` against
|
|
577
|
+
* `z.union([z.number().int().positive(), z.string()])` arrives as the number
|
|
578
|
+
* branch's own `too_small` — that union takes numbers, and `"-1"` would slip
|
|
579
|
+
* past the author's constraint through the string branch — and `6` against
|
|
580
|
+
* `z.union([z.literal(5), z.string()])` fails a branch that lists a number. A
|
|
581
|
+
* discriminator mismatch reports no branches and never passes.
|
|
582
|
+
*/
|
|
583
|
+
function failedAsNumber(issue) {
|
|
584
|
+
switch (issue.code) {
|
|
585
|
+
case 'invalid_type':
|
|
586
|
+
return true;
|
|
587
|
+
case 'invalid_value':
|
|
588
|
+
return issue.values.length > 0 && issue.values.every((value) => typeof value === 'string');
|
|
589
|
+
case 'invalid_union':
|
|
590
|
+
return (issue.errors.length > 0 &&
|
|
591
|
+
issue.errors.every((branch) => branch.length > 0 &&
|
|
592
|
+
branch.every((branchIssue) => branchIssue.path.length === 0 && failedAsNumber(branchIssue))));
|
|
593
|
+
default:
|
|
594
|
+
return false;
|
|
379
595
|
}
|
|
380
596
|
}
|
|
381
597
|
/** The value at `path`, or `undefined` when nothing owns one there. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputPrevalidation.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/inputPrevalidation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inputPrevalidation.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/inputPrevalidation.ts"],"names":[],"mappings":"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"}
|