@kya-os/mcp-i-core 1.2.2-canary.25 → 1.2.2-canary.26

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.
Files changed (147) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.turbo/turbo-test$colon$coverage.log +3756 -0
  4. package/.turbo/turbo-test.log +2398 -0
  5. package/COMPLIANCE_IMPROVEMENT_REPORT.md +483 -0
  6. package/Composer 3.md +615 -0
  7. package/GPT-5.md +1169 -0
  8. package/OPUS-plan.md +352 -0
  9. package/PHASE_3_AND_4.1_SUMMARY.md +585 -0
  10. package/PHASE_3_SUMMARY.md +317 -0
  11. package/PHASE_4.1.3_SUMMARY.md +428 -0
  12. package/PHASE_4.1_COMPLETE.md +525 -0
  13. package/PHASE_4_USER_DID_IDENTITY_LINKING_PLAN.md +1240 -0
  14. package/SCHEMA_COMPLIANCE_REPORT.md +275 -0
  15. package/TEST_PLAN.md +571 -0
  16. package/dist/services/authorization/authorization-registry.d.ts +29 -0
  17. package/dist/services/authorization/authorization-registry.d.ts.map +1 -0
  18. package/dist/services/authorization/authorization-registry.js +57 -0
  19. package/dist/services/authorization/authorization-registry.js.map +1 -0
  20. package/dist/services/authorization/types.d.ts +53 -0
  21. package/dist/services/authorization/types.d.ts.map +1 -0
  22. package/dist/services/authorization/types.js +10 -0
  23. package/dist/services/authorization/types.js.map +1 -0
  24. package/docs/API_REFERENCE.md +1362 -0
  25. package/docs/COMPLIANCE_MATRIX.md +691 -0
  26. package/docs/STATUSLIST2021_GUIDE.md +696 -0
  27. package/docs/W3C_VC_DELEGATION_GUIDE.md +710 -0
  28. package/package.json +20 -64
  29. package/scripts/audit-compliance.ts +724 -0
  30. package/src/__tests__/cache/tool-protection-cache.test.ts +640 -0
  31. package/src/__tests__/config/provider-runtime-config.test.ts +309 -0
  32. package/src/__tests__/delegation-e2e.test.ts +690 -0
  33. package/src/__tests__/identity/user-did-manager.test.ts +213 -0
  34. package/src/__tests__/index.test.ts +56 -0
  35. package/src/__tests__/integration/full-flow.test.ts +776 -0
  36. package/src/__tests__/integration.test.ts +281 -0
  37. package/src/__tests__/providers/base.test.ts +173 -0
  38. package/src/__tests__/providers/memory.test.ts +319 -0
  39. package/src/__tests__/regression/phase2-regression.test.ts +427 -0
  40. package/src/__tests__/runtime/audit-logger.test.ts +154 -0
  41. package/src/__tests__/runtime/base-extensions.test.ts +593 -0
  42. package/src/__tests__/runtime/base.test.ts +869 -0
  43. package/src/__tests__/runtime/delegation-flow.test.ts +164 -0
  44. package/src/__tests__/runtime/proof-client-did.test.ts +375 -0
  45. package/src/__tests__/runtime/route-interception.test.ts +686 -0
  46. package/src/__tests__/runtime/tool-protection-enforcement.test.ts +908 -0
  47. package/src/__tests__/services/agentshield-integration.test.ts +784 -0
  48. package/src/__tests__/services/provider-resolver-edge-cases.test.ts +487 -0
  49. package/src/__tests__/services/tool-protection-oauth-provider.test.ts +480 -0
  50. package/src/__tests__/services/tool-protection.service.test.ts +1366 -0
  51. package/src/__tests__/utils/mock-providers.ts +340 -0
  52. package/src/cache/oauth-config-cache.d.ts +69 -0
  53. package/src/cache/oauth-config-cache.d.ts.map +1 -0
  54. package/src/cache/oauth-config-cache.js +71 -0
  55. package/src/cache/oauth-config-cache.js.map +1 -0
  56. package/src/cache/oauth-config-cache.ts +123 -0
  57. package/src/cache/tool-protection-cache.ts +171 -0
  58. package/src/compliance/EXAMPLE.md +412 -0
  59. package/src/compliance/__tests__/schema-verifier.test.ts +797 -0
  60. package/src/compliance/index.ts +8 -0
  61. package/src/compliance/schema-registry.ts +460 -0
  62. package/src/compliance/schema-verifier.ts +708 -0
  63. package/src/config/__tests__/remote-config.spec.ts +268 -0
  64. package/src/config/remote-config.ts +174 -0
  65. package/src/config.ts +309 -0
  66. package/src/delegation/__tests__/audience-validator.test.ts +112 -0
  67. package/src/delegation/__tests__/bitstring.test.ts +346 -0
  68. package/src/delegation/__tests__/cascading-revocation.test.ts +628 -0
  69. package/src/delegation/__tests__/delegation-graph.test.ts +584 -0
  70. package/src/delegation/__tests__/utils.test.ts +152 -0
  71. package/src/delegation/__tests__/vc-issuer.test.ts +442 -0
  72. package/src/delegation/__tests__/vc-verifier.test.ts +922 -0
  73. package/src/delegation/audience-validator.ts +52 -0
  74. package/src/delegation/bitstring.ts +278 -0
  75. package/src/delegation/cascading-revocation.ts +370 -0
  76. package/src/delegation/delegation-graph.ts +299 -0
  77. package/src/delegation/index.ts +14 -0
  78. package/src/delegation/statuslist-manager.ts +353 -0
  79. package/src/delegation/storage/__tests__/memory-graph-storage.test.ts +366 -0
  80. package/src/delegation/storage/__tests__/memory-statuslist-storage.test.ts +228 -0
  81. package/src/delegation/storage/index.ts +9 -0
  82. package/src/delegation/storage/memory-graph-storage.ts +178 -0
  83. package/src/delegation/storage/memory-statuslist-storage.ts +77 -0
  84. package/src/delegation/utils.ts +42 -0
  85. package/src/delegation/vc-issuer.ts +232 -0
  86. package/src/delegation/vc-verifier.ts +568 -0
  87. package/src/identity/idp-token-resolver.ts +147 -0
  88. package/src/identity/idp-token-storage.interface.ts +59 -0
  89. package/src/identity/user-did-manager.ts +370 -0
  90. package/src/index.ts +260 -0
  91. package/src/providers/base.d.ts +91 -0
  92. package/src/providers/base.d.ts.map +1 -0
  93. package/src/providers/base.js +38 -0
  94. package/src/providers/base.js.map +1 -0
  95. package/src/providers/base.ts +96 -0
  96. package/src/providers/memory.ts +142 -0
  97. package/src/runtime/audit-logger.ts +39 -0
  98. package/src/runtime/base.ts +1329 -0
  99. package/src/services/__tests__/access-control.integration.test.ts +443 -0
  100. package/src/services/__tests__/access-control.service.test.ts +970 -0
  101. package/src/services/__tests__/batch-delegation.service.test.ts +351 -0
  102. package/src/services/__tests__/crypto.service.test.ts +531 -0
  103. package/src/services/__tests__/oauth-provider-registry.test.ts +142 -0
  104. package/src/services/__tests__/proof-verifier.integration.test.ts +485 -0
  105. package/src/services/__tests__/proof-verifier.test.ts +489 -0
  106. package/src/services/__tests__/provider-resolution.integration.test.ts +198 -0
  107. package/src/services/__tests__/provider-resolver.test.ts +217 -0
  108. package/src/services/__tests__/storage.service.test.ts +358 -0
  109. package/src/services/access-control.service.ts +877 -0
  110. package/src/services/authorization/authorization-registry.ts +66 -0
  111. package/src/services/authorization/types.ts +71 -0
  112. package/src/services/batch-delegation.service.ts +137 -0
  113. package/src/services/crypto.service.ts +302 -0
  114. package/src/services/errors.ts +76 -0
  115. package/src/services/index.ts +9 -0
  116. package/src/services/oauth-config.service.d.ts +53 -0
  117. package/src/services/oauth-config.service.d.ts.map +1 -0
  118. package/src/services/oauth-config.service.js +113 -0
  119. package/src/services/oauth-config.service.js.map +1 -0
  120. package/src/services/oauth-config.service.ts +166 -0
  121. package/src/services/oauth-provider-registry.d.ts +57 -0
  122. package/src/services/oauth-provider-registry.d.ts.map +1 -0
  123. package/src/services/oauth-provider-registry.js +73 -0
  124. package/src/services/oauth-provider-registry.js.map +1 -0
  125. package/src/services/oauth-provider-registry.ts +123 -0
  126. package/src/services/oauth-service.ts +510 -0
  127. package/src/services/oauth-token-retrieval.service.ts +245 -0
  128. package/src/services/proof-verifier.ts +478 -0
  129. package/src/services/provider-resolver.d.ts +48 -0
  130. package/src/services/provider-resolver.d.ts.map +1 -0
  131. package/src/services/provider-resolver.js +106 -0
  132. package/src/services/provider-resolver.js.map +1 -0
  133. package/src/services/provider-resolver.ts +144 -0
  134. package/src/services/provider-validator.ts +170 -0
  135. package/src/services/storage.service.ts +566 -0
  136. package/src/services/tool-context-builder.ts +172 -0
  137. package/src/services/tool-protection.service.ts +798 -0
  138. package/src/types/oauth-required-error.ts +63 -0
  139. package/src/types/tool-protection.ts +155 -0
  140. package/src/utils/__tests__/did-helpers.test.ts +101 -0
  141. package/src/utils/base64.ts +148 -0
  142. package/src/utils/cors.ts +83 -0
  143. package/src/utils/did-helpers.ts +150 -0
  144. package/src/utils/index.ts +8 -0
  145. package/src/utils/storage-keys.ts +278 -0
  146. package/tsconfig.json +21 -0
  147. package/vitest.config.ts +56 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Schema Compliance Module
3
+ *
4
+ * Automated verification against canonical schemas from schemas.kya-os.ai
5
+ */
6
+
7
+ export * from './schema-verifier';
8
+ export * from './schema-registry';
@@ -0,0 +1,460 @@
1
+ /**
2
+ * Schema Registry
3
+ *
4
+ * Canonical list of all schemas from schemas.kya-os.ai
5
+ * Used for automated compliance verification.
6
+ *
7
+ * Auto-generated from https://schemas.kya-os.ai/schema-index.json
8
+ * Last updated: 2025-10-17
9
+ */
10
+
11
+ import type { SchemaMetadata } from './schema-verifier';
12
+
13
+ const SCHEMAS_BASE_URL = 'https://schemas.kya-os.ai/xmcp-i';
14
+
15
+ /**
16
+ * Complete registry of schemas from schemas.kya-os.ai
17
+ *
18
+ * As of 2025-10-17, there are 38 schemas covering:
19
+ * - W3C Verifiable Credentials
20
+ * - MCP-I Protocol (Handshake, Proof, Session)
21
+ * - Delegation System
22
+ * - Agent Registry
23
+ * - CLI & Runtime
24
+ * - TLKRC (Tool-Level Key Rotation)
25
+ */
26
+ export const SCHEMA_REGISTRY: SchemaMetadata[] = [
27
+ // ===================================================================
28
+ // W3C Verifiable Credentials
29
+ // ===================================================================
30
+ {
31
+ id: 'verifiable-credential',
32
+ url: `${SCHEMAS_BASE_URL}/vc/verifiable-credential.v1.0.0.json`,
33
+ version: '1.0.0',
34
+ type: 'VerifiableCredential',
35
+ description: 'W3C Verifiable Credential Data Model',
36
+ },
37
+ {
38
+ id: 'verifiable-presentation',
39
+ url: `${SCHEMAS_BASE_URL}/vc/verifiable-presentation.v1.0.0.json`,
40
+ version: '1.0.0',
41
+ type: 'VerifiablePresentation',
42
+ description: 'W3C Verifiable Presentation',
43
+ },
44
+ {
45
+ id: 'statuslist2021-credential',
46
+ url: `${SCHEMAS_BASE_URL}/vc/statuslist-2021-credential.v1.0.0.json`,
47
+ version: '1.0.0',
48
+ type: 'StatusList2021Credential',
49
+ description: 'StatusList2021 Credential for efficient revocation',
50
+ },
51
+ {
52
+ id: 'statuslist2021-credential-subject',
53
+ url: `${SCHEMAS_BASE_URL}/vc/statuslist-2021-credential-subject.v1.0.0.json`,
54
+ version: '1.0.0',
55
+ type: 'StatusList2021CredentialSubject',
56
+ description: 'StatusList2021 Credential Subject',
57
+ },
58
+
59
+ // ===================================================================
60
+ // Delegation Credentials
61
+ // ===================================================================
62
+ {
63
+ id: 'delegation-credential',
64
+ url: `${SCHEMAS_BASE_URL}/credentials/delegation/v1.0.0.json`,
65
+ version: '1.0.0',
66
+ type: 'DelegationCredential',
67
+ description: 'W3C VC-based delegation credential',
68
+ },
69
+
70
+ // ===================================================================
71
+ // Delegation System
72
+ // ===================================================================
73
+ {
74
+ id: 'delegation-record',
75
+ url: `${SCHEMAS_BASE_URL}/delegation/delegation-record.v1.0.0.json`,
76
+ version: '1.0.0',
77
+ type: 'DelegationRecord',
78
+ description: 'Internal delegation record',
79
+ },
80
+ {
81
+ id: 'delegation-constraints',
82
+ url: `${SCHEMAS_BASE_URL}/delegation/constraints.v1.0.0.json`,
83
+ version: '1.0.0',
84
+ type: 'DelegationConstraints',
85
+ description: 'CRISP constraints for delegations',
86
+ },
87
+ {
88
+ id: 'delegation-chain',
89
+ url: `${SCHEMAS_BASE_URL}/delegation/delegation-chain.v1.0.0.json`,
90
+ version: '1.0.0',
91
+ type: 'DelegationChain',
92
+ description: 'Delegation chain for hierarchy tracking',
93
+ },
94
+ {
95
+ id: 'delegation-creation-request',
96
+ url: `${SCHEMAS_BASE_URL}/delegation/delegation-creation-request.v1.0.0.json`,
97
+ version: '1.0.0',
98
+ type: 'DelegationCreationRequest',
99
+ description: 'Request to create a delegation',
100
+ },
101
+ {
102
+ id: 'delegation-verification-result',
103
+ url: `${SCHEMAS_BASE_URL}/delegation/delegation-verification-result.v1.0.0.json`,
104
+ version: '1.0.0',
105
+ type: 'DelegationVerificationResult',
106
+ description: 'Result of delegation verification',
107
+ },
108
+
109
+ // ===================================================================
110
+ // MCP-I Protocol - Handshake
111
+ // ===================================================================
112
+ {
113
+ id: 'handshake-request',
114
+ url: `${SCHEMAS_BASE_URL}/handshake/handshake-request.v1.0.0.json`,
115
+ version: '1.0.0',
116
+ type: 'HandshakeRequest',
117
+ description: 'MCP-I handshake request',
118
+ },
119
+ {
120
+ id: 'session-context',
121
+ url: `${SCHEMAS_BASE_URL}/handshake/session-context.v1.0.0.json`,
122
+ version: '1.0.0',
123
+ type: 'SessionContext',
124
+ description: 'MCP-I session context',
125
+ },
126
+ {
127
+ id: 'nonce-cache-config',
128
+ url: `${SCHEMAS_BASE_URL}/handshake/nonce-cache-config.v1.0.0.json`,
129
+ version: '1.0.0',
130
+ type: 'NonceCacheConfig',
131
+ description: 'Nonce cache configuration',
132
+ },
133
+ {
134
+ id: 'nonce-cache-entry',
135
+ url: `${SCHEMAS_BASE_URL}/handshake/nonce-cache-entry.v1.0.0.json`,
136
+ version: '1.0.0',
137
+ type: 'NonceCacheEntry',
138
+ description: 'Nonce cache entry for replay protection',
139
+ },
140
+
141
+ // ===================================================================
142
+ // MCP-I Protocol - Proof
143
+ // ===================================================================
144
+ {
145
+ id: 'detached-proof',
146
+ url: `${SCHEMAS_BASE_URL}/proof/detached-proof.v1.0.0.json`,
147
+ version: '1.0.0',
148
+ type: 'DetachedProof',
149
+ description: 'MCP-I detached proof with JWS',
150
+ },
151
+ {
152
+ id: 'proof-meta',
153
+ url: `${SCHEMAS_BASE_URL}/proof/proof-meta.v1.0.0.json`,
154
+ version: '1.0.0',
155
+ type: 'ProofMeta',
156
+ description: 'Metadata for MCP-I proofs',
157
+ },
158
+ {
159
+ id: 'proof',
160
+ url: `${SCHEMAS_BASE_URL}/proof/v1.0.0.json`,
161
+ version: '1.0.0',
162
+ type: 'Proof',
163
+ description: 'Generic proof structure',
164
+ },
165
+ {
166
+ id: 'proof-w3c',
167
+ url: `${SCHEMAS_BASE_URL}/proof/w3c/v1.0.0.json`,
168
+ version: '1.0.0',
169
+ type: 'W3CProof',
170
+ description: 'W3C-compliant proof',
171
+ },
172
+ {
173
+ id: 'audit-record',
174
+ url: `${SCHEMAS_BASE_URL}/proof/audit-record.v1.0.0.json`,
175
+ version: '1.0.0',
176
+ type: 'AuditRecord',
177
+ description: 'Audit trail record',
178
+ },
179
+ {
180
+ id: 'canonical-hashes',
181
+ url: `${SCHEMAS_BASE_URL}/proof/canonical-hashes.v1.0.0.json`,
182
+ version: '1.0.0',
183
+ type: 'CanonicalHashes',
184
+ description: 'Canonical hashes for proof generation',
185
+ },
186
+
187
+ // ===================================================================
188
+ // Agent Registry
189
+ // ===================================================================
190
+ {
191
+ id: 'registration-input',
192
+ url: `${SCHEMAS_BASE_URL}/registry/registration-input.v1.0.0.json`,
193
+ version: '1.0.0',
194
+ type: 'RegistrationInput',
195
+ description: 'Agent registration input',
196
+ },
197
+ {
198
+ id: 'registration-result',
199
+ url: `${SCHEMAS_BASE_URL}/registry/registration-result.v1.0.0.json`,
200
+ version: '1.0.0',
201
+ type: 'RegistrationResult',
202
+ description: 'Agent registration result',
203
+ },
204
+ {
205
+ id: 'agent-status',
206
+ url: `${SCHEMAS_BASE_URL}/registry/agent-status.v1.0.0.json`,
207
+ version: '1.0.0',
208
+ type: 'AgentStatus',
209
+ description: 'Agent status information',
210
+ },
211
+ {
212
+ id: 'claim-token',
213
+ url: `${SCHEMAS_BASE_URL}/registry/claim-token.v1.0.0.json`,
214
+ version: '1.0.0',
215
+ type: 'ClaimToken',
216
+ description: 'Token for claiming agent ownership',
217
+ },
218
+ {
219
+ id: 'delegation-request',
220
+ url: `${SCHEMAS_BASE_URL}/registry/delegation-request.v1.0.0.json`,
221
+ version: '1.0.0',
222
+ type: 'DelegationRequest',
223
+ description: 'Registry delegation request',
224
+ },
225
+ {
226
+ id: 'delegation-response',
227
+ url: `${SCHEMAS_BASE_URL}/registry/delegation-response.v1.0.0.json`,
228
+ version: '1.0.0',
229
+ type: 'DelegationResponse',
230
+ description: 'Registry delegation response',
231
+ },
232
+ {
233
+ id: 'registry-delegation',
234
+ url: `${SCHEMAS_BASE_URL}/registry/delegation.v1.0.0.json`,
235
+ version: '1.0.0',
236
+ type: 'RegistryDelegation',
237
+ description: 'Registry delegation object',
238
+ },
239
+ {
240
+ id: 'mirror-status',
241
+ url: `${SCHEMAS_BASE_URL}/registry/mirror-status.v1.0.0.json`,
242
+ version: '1.0.0',
243
+ type: 'MirrorStatus',
244
+ description: 'Registry mirror status',
245
+ },
246
+ {
247
+ id: 'receipt',
248
+ url: `${SCHEMAS_BASE_URL}/registry/receipt.v1.0.0.json`,
249
+ version: '1.0.0',
250
+ type: 'Receipt',
251
+ description: 'Registry receipt',
252
+ },
253
+
254
+ // ===================================================================
255
+ // Runtime
256
+ // ===================================================================
257
+ {
258
+ id: 'authorization-display',
259
+ url: `${SCHEMAS_BASE_URL}/runtime/authorization-display.v1.0.0.json`,
260
+ version: '1.0.0',
261
+ type: 'AuthorizationDisplay',
262
+ description: 'Authorization display information',
263
+ },
264
+ {
265
+ id: 'needs-authorization-error',
266
+ url: `${SCHEMAS_BASE_URL}/runtime/needs-authorization-error.v1.0.0.json`,
267
+ version: '1.0.0',
268
+ type: 'NeedsAuthorizationError',
269
+ description: 'Error indicating authorization is needed',
270
+ },
271
+ {
272
+ id: 'runtime-error',
273
+ url: `${SCHEMAS_BASE_URL}/runtime/runtime-error.v1.0.0.json`,
274
+ version: '1.0.0',
275
+ type: 'RuntimeError',
276
+ description: 'Generic runtime error',
277
+ },
278
+
279
+ // ===================================================================
280
+ // CLI
281
+ // ===================================================================
282
+ {
283
+ id: 'register-output',
284
+ url: `${SCHEMAS_BASE_URL}/cli/register-output/v1.0.0.json`,
285
+ version: '1.0.0',
286
+ type: 'RegisterOutput',
287
+ description: 'CLI registration output',
288
+ },
289
+
290
+ // ===================================================================
291
+ // TLKRC (Tool-Level Key Rotation)
292
+ // ===================================================================
293
+ {
294
+ id: 'rotation-chain',
295
+ url: `${SCHEMAS_BASE_URL}/tlkrc/rotation-chain.v1.0.0.json`,
296
+ version: '1.0.0',
297
+ type: 'RotationChain',
298
+ description: 'Key rotation chain',
299
+ },
300
+ {
301
+ id: 'rotation-event',
302
+ url: `${SCHEMAS_BASE_URL}/tlkrc/rotation-event.v1.0.0.json`,
303
+ version: '1.0.0',
304
+ type: 'RotationEvent',
305
+ description: 'Key rotation event',
306
+ },
307
+
308
+ // ===================================================================
309
+ // Verifier Service
310
+ // ===================================================================
311
+ {
312
+ id: 'verify-page',
313
+ url: `${SCHEMAS_BASE_URL}/verifier/verify-page/v1.0.0.json`,
314
+ version: '1.0.0',
315
+ type: 'VerifyPage',
316
+ description: 'Verifier page response',
317
+ },
318
+
319
+ // ===================================================================
320
+ // Well-Known
321
+ // ===================================================================
322
+ {
323
+ id: 'well-known-agent',
324
+ url: `${SCHEMAS_BASE_URL}/well-known/agent/v1.0.0.json`,
325
+ version: '1.0.0',
326
+ type: 'WellKnownAgent',
327
+ description: 'Agent well-known metadata',
328
+ },
329
+ ];
330
+
331
+ /**
332
+ * Get all schemas
333
+ */
334
+ export function getAllSchemas(): SchemaMetadata[] {
335
+ return SCHEMA_REGISTRY;
336
+ }
337
+
338
+ /**
339
+ * Get schemas by category
340
+ */
341
+ export function getSchemasByCategory(category: string): SchemaMetadata[] {
342
+ const categoryMap: Record<string, string[]> = {
343
+ 'vc': [
344
+ 'verifiable-credential',
345
+ 'verifiable-presentation',
346
+ 'statuslist2021-credential',
347
+ 'statuslist2021-credential-subject',
348
+ ],
349
+ 'delegation': [
350
+ 'delegation-credential',
351
+ 'delegation-record',
352
+ 'delegation-constraints',
353
+ 'delegation-chain',
354
+ 'delegation-creation-request',
355
+ 'delegation-verification-result',
356
+ ],
357
+ 'handshake': [
358
+ 'handshake-request',
359
+ 'session-context',
360
+ 'nonce-cache-config',
361
+ 'nonce-cache-entry',
362
+ ],
363
+ 'proof': [
364
+ 'detached-proof',
365
+ 'proof-meta',
366
+ 'proof',
367
+ 'proof-w3c',
368
+ 'audit-record',
369
+ 'canonical-hashes',
370
+ ],
371
+ 'registry': [
372
+ 'registration-input',
373
+ 'registration-result',
374
+ 'agent-status',
375
+ 'claim-token',
376
+ 'delegation-request',
377
+ 'delegation-response',
378
+ 'registry-delegation',
379
+ 'mirror-status',
380
+ 'receipt',
381
+ ],
382
+ 'runtime': [
383
+ 'authorization-display',
384
+ 'needs-authorization-error',
385
+ 'runtime-error',
386
+ ],
387
+ 'cli': ['register-output'],
388
+ 'tlkrc': ['rotation-chain', 'rotation-event'],
389
+ 'verifier': ['verify-page'],
390
+ 'well-known': ['well-known-agent'],
391
+ };
392
+
393
+ const ids = categoryMap[category] || [];
394
+ return SCHEMA_REGISTRY.filter((s) => ids.includes(s.id));
395
+ }
396
+
397
+ /**
398
+ * Get schema by ID
399
+ */
400
+ export function getSchemaById(id: string): SchemaMetadata | undefined {
401
+ return SCHEMA_REGISTRY.find((s) => s.id === id);
402
+ }
403
+
404
+ /**
405
+ * Get critical schemas (must be 100% compliant)
406
+ *
407
+ * These are the core schemas that power the MCP-I protocol and must
408
+ * be fully compliant for the system to function correctly.
409
+ */
410
+ export function getCriticalSchemas(): SchemaMetadata[] {
411
+ const criticalIds = [
412
+ // W3C VC Core
413
+ 'verifiable-credential',
414
+ 'statuslist2021-credential',
415
+
416
+ // Delegation System
417
+ 'delegation-credential',
418
+ 'delegation-record',
419
+ 'delegation-constraints',
420
+
421
+ // MCP-I Protocol
422
+ 'detached-proof',
423
+ 'proof-meta',
424
+ 'handshake-request',
425
+ 'session-context',
426
+
427
+ // Audit
428
+ 'audit-record',
429
+ ];
430
+
431
+ return SCHEMA_REGISTRY.filter((s) => criticalIds.includes(s.id));
432
+ }
433
+
434
+ /**
435
+ * Get schema statistics
436
+ */
437
+ export function getSchemaStats(): {
438
+ total: number;
439
+ byCategory: Record<string, number>;
440
+ byVersion: Record<string, number>;
441
+ } {
442
+ const byCategory: Record<string, number> = {};
443
+ const byVersion: Record<string, number> = {};
444
+
445
+ for (const schema of SCHEMA_REGISTRY) {
446
+ // Category stats (inferred from URL)
447
+ const urlParts = schema.url.replace(SCHEMAS_BASE_URL + '/', '').split('/');
448
+ const category = urlParts[0] || 'unknown';
449
+ byCategory[category] = (byCategory[category] || 0) + 1;
450
+
451
+ // Version stats
452
+ byVersion[schema.version] = (byVersion[schema.version] || 0) + 1;
453
+ }
454
+
455
+ return {
456
+ total: SCHEMA_REGISTRY.length,
457
+ byCategory,
458
+ byVersion,
459
+ };
460
+ }