@mcpdesc/validator 0.10.0 → 0.10.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/CHANGELOG.md CHANGED
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this package follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
  Dates for published releases are the UTC publication dates recorded by npm.
8
8
 
9
+ ## [Unreleased]
10
+
11
+ ## [0.10.1] - 2026-09-07
12
+
13
+ ### Changed
14
+
15
+ - Narrowed active runtime support to RC.2 and RC.3 and marked RC.2 deprecated.
16
+ - Excluded retired runtime snapshots from generated bundles and package
17
+ contents while retaining their source and frozen fixtures in Git.
18
+ - Removed the retained snapshot-intake manifest; intake bundles are disposable
19
+ inputs and imported bytes remain protected by the snapshot integrity manifest.
20
+
9
21
  ## [0.10.0] - 2026-09-07
10
22
 
11
23
  ### Added
@@ -127,7 +139,9 @@ Dates for published releases are the UTC publication dates recorded by npm.
127
139
  - Added synchronous structural and semantic validation for parsed JavaScript values with deterministic diagnostics and exact selector dispatch.
128
140
  - Added ESM browser support, TypeScript declarations, embedded schema provenance, frozen fixtures, and package-content checks.
129
141
 
130
- [Unreleased]: https://github.com/mcpdesc/core/compare/validator-v0.9.0...HEAD
142
+ [Unreleased]: https://github.com/mcpdesc/core/compare/validator-v0.10.1...HEAD
143
+ [0.10.1]: https://github.com/mcpdesc/core/compare/validator-v0.10.0...validator-v0.10.1
144
+ [0.10.0]: https://github.com/mcpdesc/core/compare/validator-v0.9.0...validator-v0.10.0
131
145
  [0.9.0]: https://github.com/mcpdesc/core/compare/validator-v0.8.0...validator-v0.9.0
132
146
  [0.8.0]: https://github.com/mcpdesc/core/compare/validator-v0.7.1...validator-v0.8.0
133
147
  [0.7.1]: https://github.com/mcpdesc/core/compare/validator-v0.7.0...validator-v0.7.1
package/README.md CHANGED
@@ -44,20 +44,17 @@ a later draft is published.
44
44
 
45
45
  ## Supported snapshots
46
46
 
47
- The current workspace supports these immutable selectors, newest first:
47
+ The package supports these immutable selectors, newest first:
48
48
 
49
49
  | Selector | First validator release | Embedded schema SHA-256 |
50
50
  |---|---|---|
51
51
  | `0.8.0-rc.3` | `0.10.0` | `a9c3ff77ba37c72362909f538f6e957d055e6fdb372f8b3d529e3651af3fecf4` |
52
- | `0.8.0-rc.2` | `0.9.0` | `40f6775dde052224114e91d6aa484d826eecf56b77f7ac87b4cf707ffbcb6ce8` |
53
- | `0.8.0-rc.1` | `0.5.0` | `936a0f24ade501fcabf3d6498c0440c445daa672a575573a35954cee49430ac4` |
54
- | `0.8.0-draft.4` | `0.4.0` | `93ed03f74059b5b3ce7509a96b59161bdab2c3cf7734397a9bec5a7588d0b03b` |
55
- | `0.8.0-draft.3` | `0.3.0` | `8823c1f1946360b2a44d00920e2092e5e4acd139a1964befad4eb0bf3ce96002` |
56
- | `0.8.0-draft.2` | `0.2.0` | `ab692c1a5a0f7e5f29be1940aa8c64a56d4620be0a19d00cf0a64680b7e517fa` |
57
- | `0.8.0-draft.1` | `0.1.0` | `4ceb6042c3fd31703199cd3db869ec5c35c17d2fe9ab7b2f5b96a2a3af0cebe4` |
52
+ | `0.8.0-rc.2` (deprecated) | `0.9.0` | `40f6775dde052224114e91d6aa484d826eecf56b77f7ac87b4cf707ffbcb6ce8` |
58
53
 
59
54
  The validator package embeds the schema and executable behavior for each
60
- selector. npm integrity and trusted-publishing provenance identify released
55
+ selector. RC.2 remains available for migration compatibility; new integrations
56
+ should select RC.3. Earlier selectors remain available by pinning an older
57
+ immutable validator release. npm integrity and trusted-publishing provenance identify released
61
58
  package bytes; specification repository tags and commits are informational.
62
59
 
63
60
  ## Usage
@@ -100,17 +97,10 @@ if (resolution.status === 'resolved') {
100
97
 
101
98
  Resolution is pure and performs no network retrieval. It does not validate the
102
99
  document and never infers a draft snapshot from `mcpdesc: "0.8.0"` alone.
103
- Draft 4's format-qualified schema URI resolves uniquely. Drafts 1 through 3
104
- share the legacy `https://mcpdesc.org/schema/0.8.0.json` URI, so that URI is
105
- ambiguous unless the caller supplies a consistent exact selector:
100
+ Retired schema identities are reported as unknown by current releases. Pin an
101
+ older package release to resolve or validate a retired selector.
106
102
 
107
- ```js
108
- const resolution = resolveMcpDescriptionSpecification(parsedDocument, {
109
- specification: '0.8.0-draft.3'
110
- });
111
- ```
112
-
113
- Unresolved results distinguish missing, invalid, unknown, ambiguous, and
103
+ Unresolved results distinguish missing, invalid, unknown, and
114
104
  contradictory identity, as well as unsupported caller selectors. A supplied
115
105
  selector can resolve a document with no `$schema`; when `$schema` is present it
116
106
  must match the selected snapshot's recorded schema URI.
@@ -137,7 +127,7 @@ Structural paths start with AJV's instance path. A `required` error appends its
137
127
 
138
128
  ## Support metadata
139
129
 
140
- The package exports frozen `supportedSpecifications`, `supportedProtocolVersions`, and `specificationProvenance` values. Provenance records include the snapshot tag, recorded schema URI, and embedded schema SHA-256 digest. Public validation dispatches through a registry keyed by exact specification selectors. The current repository selector set is `0.8.0-draft.1`, `0.8.0-draft.2`, `0.8.0-draft.3`, `0.8.0-draft.4`, `0.8.0-rc.1`, `0.8.0-rc.2`, and `0.8.0-rc.3`; the protocol-version export is the deduplicated union supported by those snapshots.
130
+ The package exports frozen `supportedSpecifications`, `deprecatedSpecifications`, `supportedProtocolVersions`, and `specificationProvenance` values. Provenance records include the snapshot tag, recorded schema URI, and embedded schema SHA-256 digest. Public validation dispatches through a registry keyed by exact specification selectors. The active selector set is `0.8.0-rc.2` and `0.8.0-rc.3`; `deprecatedSpecifications` contains RC.2. The protocol-version export is the deduplicated union supported by active snapshots.
141
131
 
142
132
  RC.2 and RC.3 also export the frozen `mcpExtensionCatalogue` and
143
133
  `mcpExtensionMaturity` classifier. The catalogue pins its authoritative source,
@@ -147,7 +137,7 @@ extension-specific settings.
147
137
 
148
138
  npm package SemVer tracks implementation releases independently from specification snapshot identity. Adding a later snapshot is additive: it must use a sibling implementation and selector rather than changing an existing snapshot's schema, semantics, metadata, fixtures, or results.
149
139
 
150
- The RC.1, RC.2, and RC.3 component resolvers report authored and terminal target
140
+ The RC.2 and RC.3 component resolvers report authored and terminal target
151
141
  paths for successful substitutions. The additive tooling corrections do not
152
142
  change snapshot schemas, validation results, diagnostics, or fixtures and are
153
143
  recorded in the integrity manifest.
@@ -164,7 +154,7 @@ exact specification repository tag or commit and then:
164
154
  3. Add the exact selector to the runtime registry and update support metadata, TypeScript declarations, tests, the package changelog, and expected package contents. Unqualified versions, aliases, ranges, and not-yet-published selectors remain unsupported.
165
155
  4. Run the package and repository validation suites. The schema digest, immutable metadata, fixture behavior, browser bundle, declarations, and tarball contents must all pass.
166
156
 
167
- The test snapshots are repository-only development assets and are excluded from the npm tarball. Runtime snapshot implementations and embedded schemas do ship so installed packages remain self-contained.
157
+ The test snapshots are repository-only development assets and are excluded from the npm tarball. Historical runtime sources remain in Git for integrity history. Only active runtime snapshot implementations and embedded schemas ship, so installed packages remain self-contained without accumulating retired selectors.
168
158
 
169
159
  Specification approval and imported supporting code do not authorize package
170
160
  publication. During release review, a maintainer explicitly decides the
@@ -187,4 +177,4 @@ npm run test:browser --workspace @mcpdesc/validator
187
177
  npm run test:package --workspace @mcpdesc/validator
188
178
  ```
189
179
 
190
- The package test runs each immutable snapshot against its own frozen valid, invalid, and warning fixture corpus. YAML source fixtures are decoded by the test harness before validation; the public API continues to accept parsed JavaScript values only. The other checks compile the declarations, bundle the public browser entry with esbuild and Vite, reject runtime AJV compiler inputs and dynamic code generation in those bundles, and inspect `npm pack --dry-run --json` against the intended tarball contents and declared export targets.
180
+ The package test runs each active snapshot against its own frozen valid, invalid, and warning fixture corpus and verifies historical artifact integrity separately. YAML source fixtures are decoded by the test harness before validation; the public API continues to accept parsed JavaScript values only. The other checks compile the declarations, bundle the public browser entry with esbuild and Vite, reject runtime AJV compiler inputs and dynamic code generation in those bundles, and inspect `npm pack --dry-run --json` against the intended tarball contents and declared export targets.
package/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type McpDescriptionSpecification = '0.8.0-draft.1' | '0.8.0-draft.2' | '0.8.0-draft.3' | '0.8.0-draft.4' | '0.8.0-rc.1' | '0.8.0-rc.2' | '0.8.0-rc.3';
1
+ export type McpDescriptionSpecification = '0.8.0-rc.2' | '0.8.0-rc.3';
2
2
 
3
3
  export type SupportedProtocolVersion =
4
4
  | '2024-11-05'
@@ -38,7 +38,7 @@ export interface McpDescriptionComponentResolutionResult {
38
38
  }
39
39
 
40
40
  export interface ResolveMcpDescriptionComponentReferencesOptions {
41
- readonly specification: '0.8.0-rc.1' | '0.8.0-rc.2' | '0.8.0-rc.3';
41
+ readonly specification: '0.8.0-rc.2' | '0.8.0-rc.3';
42
42
  }
43
43
 
44
44
  export type McpExtensionMaturity = 'official' | 'experimental' | 'uncatalogued';
@@ -56,31 +56,6 @@ export interface McpExtensionCatalogue {
56
56
  }
57
57
 
58
58
  export interface SpecificationProvenance {
59
- readonly '0.8.0-draft.1': {
60
- readonly snapshotTag: 'v0.8.0-draft.1';
61
- readonly schemaUri: 'https://mcpdesc.org/schema/0.8.0.json';
62
- readonly schemaSha256: '4ceb6042c3fd31703199cd3db869ec5c35c17d2fe9ab7b2f5b96a2a3af0cebe4';
63
- };
64
- readonly '0.8.0-draft.2': {
65
- readonly snapshotTag: 'v0.8.0-draft.2';
66
- readonly schemaUri: 'https://mcpdesc.org/schema/0.8.0.json';
67
- readonly schemaSha256: 'ab692c1a5a0f7e5f29be1940aa8c64a56d4620be0a19d00cf0a64680b7e517fa';
68
- };
69
- readonly '0.8.0-draft.3': {
70
- readonly snapshotTag: 'v0.8.0-draft.3';
71
- readonly schemaUri: 'https://mcpdesc.org/schema/0.8.0.json';
72
- readonly schemaSha256: '8823c1f1946360b2a44d00920e2092e5e4acd139a1964befad4eb0bf3ce96002';
73
- };
74
- readonly '0.8.0-draft.4': {
75
- readonly snapshotTag: 'v0.8.0-draft.4';
76
- readonly schemaUri: 'https://mcpdesc.org/schema/mcp-description/0.8.0-draft.4.json';
77
- readonly schemaSha256: '93ed03f74059b5b3ce7509a96b59161bdab2c3cf7734397a9bec5a7588d0b03b';
78
- };
79
- readonly '0.8.0-rc.1': {
80
- readonly snapshotTag: 'v0.8.0-rc.1';
81
- readonly schemaUri: 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.1.json';
82
- readonly schemaSha256: '936a0f24ade501fcabf3d6498c0440c445daa672a575573a35954cee49430ac4';
83
- };
84
59
  readonly '0.8.0-rc.2': {
85
60
  readonly snapshotTag: 'v0.8.0-rc.2';
86
61
  readonly schemaUri: 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.2.json';
@@ -114,7 +89,8 @@ export type McpDescriptionSpecificationResolution =
114
89
  | ResolvedMcpDescriptionSpecification
115
90
  | UnresolvedMcpDescriptionSpecification;
116
91
 
117
- export declare const supportedSpecifications: readonly ['0.8.0-draft.1', '0.8.0-draft.2', '0.8.0-draft.3', '0.8.0-draft.4', '0.8.0-rc.1', '0.8.0-rc.2', '0.8.0-rc.3'];
92
+ export declare const supportedSpecifications: readonly ['0.8.0-rc.2', '0.8.0-rc.3'];
93
+ export declare const deprecatedSpecifications: readonly ['0.8.0-rc.2'];
118
94
 
119
95
  export declare const supportedProtocolVersions: readonly [
120
96
  '2024-11-05',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcpdesc/validator",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "Structural and semantic validation for MCP Description snapshots",
5
5
  "type": "module",
6
6
  "types": "./index.d.ts",
@@ -31,7 +31,8 @@
31
31
  },
32
32
  "files": [
33
33
  "src/index.js",
34
- "src/snapshots",
34
+ "src/snapshots/0.8.0-rc.2",
35
+ "src/snapshots/0.8.0-rc.3",
35
36
  "standalone.js",
36
37
  "index.d.ts",
37
38
  "CHANGELOG.md",
package/src/index.js CHANGED
@@ -1,11 +1,5 @@
1
- import * as draft1 from './snapshots/0.8.0-draft.1/index.js';
2
- import * as draft2 from './snapshots/0.8.0-draft.2/index.js';
3
- import * as draft3 from './snapshots/0.8.0-draft.3/index.js';
4
- import * as draft4 from './snapshots/0.8.0-draft.4/index.js';
5
- import * as rc1 from './snapshots/0.8.0-rc.1/index.js';
6
1
  import * as rc2 from './snapshots/0.8.0-rc.2/index.js';
7
2
  import * as rc3 from './snapshots/0.8.0-rc.3/index.js';
8
- import { resolveComponentReferences as resolveRc1ComponentReferences } from './snapshots/0.8.0-rc.1/semantic.js';
9
3
  import { resolveComponentReferences as resolveRc2ComponentReferences } from './snapshots/0.8.0-rc.2/semantic.js';
10
4
  import { resolveComponentReferences as resolveRc3ComponentReferences } from './snapshots/0.8.0-rc.3/semantic.js';
11
5
  import {
@@ -16,32 +10,22 @@ import {
16
10
  export { mcpExtensionCatalogue, mcpExtensionMaturity };
17
11
 
18
12
  const snapshots = Object.freeze({
19
- [draft1.specification]: draft1,
20
- [draft2.specification]: draft2,
21
- [draft3.specification]: draft3,
22
- [draft4.specification]: draft4,
23
- [rc1.specification]: rc1,
24
13
  [rc2.specification]: rc2,
25
14
  [rc3.specification]: rc3
26
15
  });
27
16
 
28
17
  const componentResolvers = Object.freeze({
29
- '0.8.0-rc.1': resolveRc1ComponentReferences,
30
18
  '0.8.0-rc.2': resolveRc2ComponentReferences,
31
19
  '0.8.0-rc.3': resolveRc3ComponentReferences
32
20
  });
33
21
 
34
22
  const schemaUris = Object.freeze({
35
- '0.8.0-draft.1': 'https://mcpdesc.org/schema/0.8.0.json',
36
- '0.8.0-draft.2': 'https://mcpdesc.org/schema/0.8.0.json',
37
- '0.8.0-draft.3': 'https://mcpdesc.org/schema/0.8.0.json',
38
- '0.8.0-draft.4': 'https://mcpdesc.org/schema/mcp-description/0.8.0-draft.4.json',
39
- '0.8.0-rc.1': 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.1.json',
40
23
  '0.8.0-rc.2': 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.2.json',
41
24
  '0.8.0-rc.3': 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.3.json'
42
25
  });
43
26
 
44
27
  export const supportedSpecifications = Object.freeze(Object.keys(snapshots));
28
+ export const deprecatedSpecifications = Object.freeze(['0.8.0-rc.2']);
45
29
  export const supportedProtocolVersions = Object.freeze([
46
30
  ...new Set(Object.values(snapshots).flatMap((snapshot) => snapshot.supportedProtocolVersions))
47
31
  ]);