@kya-os/mcp-i-core 1.1.0 → 1.1.1-canary.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.
Files changed (97) hide show
  1. package/dist/__tests__/utils/mock-providers.d.ts +102 -0
  2. package/dist/__tests__/utils/mock-providers.d.ts.map +1 -0
  3. package/dist/__tests__/utils/mock-providers.js +270 -0
  4. package/dist/__tests__/utils/mock-providers.js.map +1 -0
  5. package/dist/cache/tool-protection-cache.d.ts +73 -0
  6. package/dist/cache/tool-protection-cache.d.ts.map +1 -0
  7. package/dist/cache/tool-protection-cache.js +83 -0
  8. package/dist/cache/tool-protection-cache.js.map +1 -0
  9. package/dist/compliance/index.d.ts +8 -0
  10. package/dist/compliance/index.d.ts.map +1 -0
  11. package/dist/compliance/index.js +24 -0
  12. package/dist/compliance/index.js.map +1 -0
  13. package/dist/compliance/schema-registry.d.ts +50 -0
  14. package/dist/compliance/schema-registry.d.ts.map +1 -0
  15. package/dist/compliance/schema-registry.js +438 -0
  16. package/dist/compliance/schema-registry.js.map +1 -0
  17. package/dist/compliance/schema-verifier-v2.d.ts +110 -0
  18. package/dist/compliance/schema-verifier-v2.d.ts.map +1 -0
  19. package/dist/compliance/schema-verifier-v2.js +510 -0
  20. package/dist/compliance/schema-verifier-v2.js.map +1 -0
  21. package/dist/compliance/schema-verifier.d.ts +110 -0
  22. package/dist/compliance/schema-verifier.d.ts.map +1 -0
  23. package/dist/compliance/schema-verifier.js +518 -0
  24. package/dist/compliance/schema-verifier.js.map +1 -0
  25. package/dist/delegation/bitstring.d.ts +139 -0
  26. package/dist/delegation/bitstring.d.ts.map +1 -0
  27. package/dist/delegation/bitstring.js +213 -0
  28. package/dist/delegation/bitstring.js.map +1 -0
  29. package/dist/delegation/cascading-revocation.d.ts +162 -0
  30. package/dist/delegation/cascading-revocation.d.ts.map +1 -0
  31. package/dist/delegation/cascading-revocation.js +263 -0
  32. package/dist/delegation/cascading-revocation.js.map +1 -0
  33. package/dist/delegation/delegation-graph.d.ts +178 -0
  34. package/dist/delegation/delegation-graph.d.ts.map +1 -0
  35. package/dist/delegation/delegation-graph.js +209 -0
  36. package/dist/delegation/delegation-graph.js.map +1 -0
  37. package/dist/delegation/index.d.ts +14 -0
  38. package/dist/delegation/index.d.ts.map +1 -0
  39. package/dist/delegation/index.js +30 -0
  40. package/dist/delegation/index.js.map +1 -0
  41. package/dist/delegation/statuslist-manager.d.ts +148 -0
  42. package/dist/delegation/statuslist-manager.d.ts.map +1 -0
  43. package/dist/delegation/statuslist-manager.js +221 -0
  44. package/dist/delegation/statuslist-manager.js.map +1 -0
  45. package/dist/delegation/storage/index.d.ts +9 -0
  46. package/dist/delegation/storage/index.d.ts.map +1 -0
  47. package/dist/delegation/storage/index.js +25 -0
  48. package/dist/delegation/storage/index.js.map +1 -0
  49. package/dist/delegation/storage/memory-graph-storage.d.ts +70 -0
  50. package/dist/delegation/storage/memory-graph-storage.d.ts.map +1 -0
  51. package/dist/delegation/storage/memory-graph-storage.js +149 -0
  52. package/dist/delegation/storage/memory-graph-storage.js.map +1 -0
  53. package/dist/delegation/storage/memory-statuslist-storage.d.ts +49 -0
  54. package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +1 -0
  55. package/dist/delegation/storage/memory-statuslist-storage.js +67 -0
  56. package/dist/delegation/storage/memory-statuslist-storage.js.map +1 -0
  57. package/dist/delegation/utils.d.ts +19 -0
  58. package/dist/delegation/utils.d.ts.map +1 -0
  59. package/dist/delegation/utils.js +48 -0
  60. package/dist/delegation/utils.js.map +1 -0
  61. package/dist/delegation/vc-issuer.d.ts +135 -0
  62. package/dist/delegation/vc-issuer.d.ts.map +1 -0
  63. package/dist/delegation/vc-issuer.js +140 -0
  64. package/dist/delegation/vc-issuer.js.map +1 -0
  65. package/dist/delegation/vc-verifier.d.ts +213 -0
  66. package/dist/delegation/vc-verifier.d.ts.map +1 -0
  67. package/dist/delegation/vc-verifier.js +354 -0
  68. package/dist/delegation/vc-verifier.js.map +1 -0
  69. package/dist/index.d.ts +16 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +64 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/providers/base.d.ts +1 -1
  74. package/dist/providers/base.d.ts.map +1 -1
  75. package/dist/providers/memory.js +2 -2
  76. package/dist/providers/memory.js.map +1 -1
  77. package/dist/runtime/base.d.ts +12 -0
  78. package/dist/runtime/base.d.ts.map +1 -1
  79. package/dist/runtime/base.js +96 -2
  80. package/dist/runtime/base.js.map +1 -1
  81. package/dist/services/tool-protection.service.d.ts +55 -0
  82. package/dist/services/tool-protection.service.d.ts.map +1 -0
  83. package/dist/services/tool-protection.service.js +158 -0
  84. package/dist/services/tool-protection.service.js.map +1 -0
  85. package/dist/types/tool-protection.d.ts +103 -0
  86. package/dist/types/tool-protection.d.ts.map +1 -0
  87. package/dist/types/tool-protection.js +41 -0
  88. package/dist/types/tool-protection.js.map +1 -0
  89. package/dist/utils/cors.d.ts +44 -0
  90. package/dist/utils/cors.d.ts.map +1 -0
  91. package/dist/utils/cors.js +71 -0
  92. package/dist/utils/cors.js.map +1 -0
  93. package/dist/utils/index.d.ts +5 -0
  94. package/dist/utils/index.d.ts.map +1 -0
  95. package/dist/utils/index.js +21 -0
  96. package/dist/utils/index.js.map +1 -0
  97. package/package.json +9 -6
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+ /**
3
+ * Schema Registry
4
+ *
5
+ * Canonical list of all schemas from schemas.kya-os.ai
6
+ * Used for automated compliance verification.
7
+ *
8
+ * Auto-generated from https://schemas.kya-os.ai/schema-index.json
9
+ * Last updated: 2025-10-17
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SCHEMA_REGISTRY = void 0;
13
+ exports.getAllSchemas = getAllSchemas;
14
+ exports.getSchemasByCategory = getSchemasByCategory;
15
+ exports.getSchemaById = getSchemaById;
16
+ exports.getCriticalSchemas = getCriticalSchemas;
17
+ exports.getSchemaStats = getSchemaStats;
18
+ const SCHEMAS_BASE_URL = 'https://schemas.kya-os.ai/xmcp-i';
19
+ /**
20
+ * Complete registry of schemas from schemas.kya-os.ai
21
+ *
22
+ * As of 2025-10-17, there are 38 schemas covering:
23
+ * - W3C Verifiable Credentials
24
+ * - MCP-I Protocol (Handshake, Proof, Session)
25
+ * - Delegation System
26
+ * - Agent Registry
27
+ * - CLI & Runtime
28
+ * - TLKRC (Tool-Level Key Rotation)
29
+ */
30
+ exports.SCHEMA_REGISTRY = [
31
+ // ===================================================================
32
+ // W3C Verifiable Credentials
33
+ // ===================================================================
34
+ {
35
+ id: 'verifiable-credential',
36
+ url: `${SCHEMAS_BASE_URL}/vc/verifiable-credential.v1.0.0.json`,
37
+ version: '1.0.0',
38
+ type: 'VerifiableCredential',
39
+ description: 'W3C Verifiable Credential Data Model',
40
+ },
41
+ {
42
+ id: 'verifiable-presentation',
43
+ url: `${SCHEMAS_BASE_URL}/vc/verifiable-presentation.v1.0.0.json`,
44
+ version: '1.0.0',
45
+ type: 'VerifiablePresentation',
46
+ description: 'W3C Verifiable Presentation',
47
+ },
48
+ {
49
+ id: 'statuslist2021-credential',
50
+ url: `${SCHEMAS_BASE_URL}/vc/statuslist-2021-credential.v1.0.0.json`,
51
+ version: '1.0.0',
52
+ type: 'StatusList2021Credential',
53
+ description: 'StatusList2021 Credential for efficient revocation',
54
+ },
55
+ {
56
+ id: 'statuslist2021-credential-subject',
57
+ url: `${SCHEMAS_BASE_URL}/vc/statuslist-2021-credential-subject.v1.0.0.json`,
58
+ version: '1.0.0',
59
+ type: 'StatusList2021CredentialSubject',
60
+ description: 'StatusList2021 Credential Subject',
61
+ },
62
+ // ===================================================================
63
+ // Delegation Credentials
64
+ // ===================================================================
65
+ {
66
+ id: 'delegation-credential',
67
+ url: `${SCHEMAS_BASE_URL}/credentials/delegation/v1.0.0.json`,
68
+ version: '1.0.0',
69
+ type: 'DelegationCredential',
70
+ description: 'W3C VC-based delegation credential',
71
+ },
72
+ // ===================================================================
73
+ // Delegation System
74
+ // ===================================================================
75
+ {
76
+ id: 'delegation-record',
77
+ url: `${SCHEMAS_BASE_URL}/delegation/delegation-record.v1.0.0.json`,
78
+ version: '1.0.0',
79
+ type: 'DelegationRecord',
80
+ description: 'Internal delegation record',
81
+ },
82
+ {
83
+ id: 'delegation-constraints',
84
+ url: `${SCHEMAS_BASE_URL}/delegation/constraints.v1.0.0.json`,
85
+ version: '1.0.0',
86
+ type: 'DelegationConstraints',
87
+ description: 'CRISP constraints for delegations',
88
+ },
89
+ {
90
+ id: 'delegation-chain',
91
+ url: `${SCHEMAS_BASE_URL}/delegation/delegation-chain.v1.0.0.json`,
92
+ version: '1.0.0',
93
+ type: 'DelegationChain',
94
+ description: 'Delegation chain for hierarchy tracking',
95
+ },
96
+ {
97
+ id: 'delegation-creation-request',
98
+ url: `${SCHEMAS_BASE_URL}/delegation/delegation-creation-request.v1.0.0.json`,
99
+ version: '1.0.0',
100
+ type: 'DelegationCreationRequest',
101
+ description: 'Request to create a delegation',
102
+ },
103
+ {
104
+ id: 'delegation-verification-result',
105
+ url: `${SCHEMAS_BASE_URL}/delegation/delegation-verification-result.v1.0.0.json`,
106
+ version: '1.0.0',
107
+ type: 'DelegationVerificationResult',
108
+ description: 'Result of delegation verification',
109
+ },
110
+ // ===================================================================
111
+ // MCP-I Protocol - Handshake
112
+ // ===================================================================
113
+ {
114
+ id: 'handshake-request',
115
+ url: `${SCHEMAS_BASE_URL}/handshake/handshake-request.v1.0.0.json`,
116
+ version: '1.0.0',
117
+ type: 'HandshakeRequest',
118
+ description: 'MCP-I handshake request',
119
+ },
120
+ {
121
+ id: 'session-context',
122
+ url: `${SCHEMAS_BASE_URL}/handshake/session-context.v1.0.0.json`,
123
+ version: '1.0.0',
124
+ type: 'SessionContext',
125
+ description: 'MCP-I session context',
126
+ },
127
+ {
128
+ id: 'nonce-cache-config',
129
+ url: `${SCHEMAS_BASE_URL}/handshake/nonce-cache-config.v1.0.0.json`,
130
+ version: '1.0.0',
131
+ type: 'NonceCacheConfig',
132
+ description: 'Nonce cache configuration',
133
+ },
134
+ {
135
+ id: 'nonce-cache-entry',
136
+ url: `${SCHEMAS_BASE_URL}/handshake/nonce-cache-entry.v1.0.0.json`,
137
+ version: '1.0.0',
138
+ type: 'NonceCacheEntry',
139
+ description: 'Nonce cache entry for replay protection',
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
+ // Agent Registry
188
+ // ===================================================================
189
+ {
190
+ id: 'registration-input',
191
+ url: `${SCHEMAS_BASE_URL}/registry/registration-input.v1.0.0.json`,
192
+ version: '1.0.0',
193
+ type: 'RegistrationInput',
194
+ description: 'Agent registration input',
195
+ },
196
+ {
197
+ id: 'registration-result',
198
+ url: `${SCHEMAS_BASE_URL}/registry/registration-result.v1.0.0.json`,
199
+ version: '1.0.0',
200
+ type: 'RegistrationResult',
201
+ description: 'Agent registration result',
202
+ },
203
+ {
204
+ id: 'agent-status',
205
+ url: `${SCHEMAS_BASE_URL}/registry/agent-status.v1.0.0.json`,
206
+ version: '1.0.0',
207
+ type: 'AgentStatus',
208
+ description: 'Agent status information',
209
+ },
210
+ {
211
+ id: 'claim-token',
212
+ url: `${SCHEMAS_BASE_URL}/registry/claim-token.v1.0.0.json`,
213
+ version: '1.0.0',
214
+ type: 'ClaimToken',
215
+ description: 'Token for claiming agent ownership',
216
+ },
217
+ {
218
+ id: 'delegation-request',
219
+ url: `${SCHEMAS_BASE_URL}/registry/delegation-request.v1.0.0.json`,
220
+ version: '1.0.0',
221
+ type: 'DelegationRequest',
222
+ description: 'Registry delegation request',
223
+ },
224
+ {
225
+ id: 'delegation-response',
226
+ url: `${SCHEMAS_BASE_URL}/registry/delegation-response.v1.0.0.json`,
227
+ version: '1.0.0',
228
+ type: 'DelegationResponse',
229
+ description: 'Registry delegation response',
230
+ },
231
+ {
232
+ id: 'registry-delegation',
233
+ url: `${SCHEMAS_BASE_URL}/registry/delegation.v1.0.0.json`,
234
+ version: '1.0.0',
235
+ type: 'RegistryDelegation',
236
+ description: 'Registry delegation object',
237
+ },
238
+ {
239
+ id: 'mirror-status',
240
+ url: `${SCHEMAS_BASE_URL}/registry/mirror-status.v1.0.0.json`,
241
+ version: '1.0.0',
242
+ type: 'MirrorStatus',
243
+ description: 'Registry mirror status',
244
+ },
245
+ {
246
+ id: 'receipt',
247
+ url: `${SCHEMAS_BASE_URL}/registry/receipt.v1.0.0.json`,
248
+ version: '1.0.0',
249
+ type: 'Receipt',
250
+ description: 'Registry receipt',
251
+ },
252
+ // ===================================================================
253
+ // Runtime
254
+ // ===================================================================
255
+ {
256
+ id: 'authorization-display',
257
+ url: `${SCHEMAS_BASE_URL}/runtime/authorization-display.v1.0.0.json`,
258
+ version: '1.0.0',
259
+ type: 'AuthorizationDisplay',
260
+ description: 'Authorization display information',
261
+ },
262
+ {
263
+ id: 'needs-authorization-error',
264
+ url: `${SCHEMAS_BASE_URL}/runtime/needs-authorization-error.v1.0.0.json`,
265
+ version: '1.0.0',
266
+ type: 'NeedsAuthorizationError',
267
+ description: 'Error indicating authorization is needed',
268
+ },
269
+ {
270
+ id: 'runtime-error',
271
+ url: `${SCHEMAS_BASE_URL}/runtime/runtime-error.v1.0.0.json`,
272
+ version: '1.0.0',
273
+ type: 'RuntimeError',
274
+ description: 'Generic runtime error',
275
+ },
276
+ // ===================================================================
277
+ // CLI
278
+ // ===================================================================
279
+ {
280
+ id: 'register-output',
281
+ url: `${SCHEMAS_BASE_URL}/cli/register-output/v1.0.0.json`,
282
+ version: '1.0.0',
283
+ type: 'RegisterOutput',
284
+ description: 'CLI registration output',
285
+ },
286
+ // ===================================================================
287
+ // TLKRC (Tool-Level Key Rotation)
288
+ // ===================================================================
289
+ {
290
+ id: 'rotation-chain',
291
+ url: `${SCHEMAS_BASE_URL}/tlkrc/rotation-chain.v1.0.0.json`,
292
+ version: '1.0.0',
293
+ type: 'RotationChain',
294
+ description: 'Key rotation chain',
295
+ },
296
+ {
297
+ id: 'rotation-event',
298
+ url: `${SCHEMAS_BASE_URL}/tlkrc/rotation-event.v1.0.0.json`,
299
+ version: '1.0.0',
300
+ type: 'RotationEvent',
301
+ description: 'Key rotation event',
302
+ },
303
+ // ===================================================================
304
+ // Verifier Service
305
+ // ===================================================================
306
+ {
307
+ id: 'verify-page',
308
+ url: `${SCHEMAS_BASE_URL}/verifier/verify-page/v1.0.0.json`,
309
+ version: '1.0.0',
310
+ type: 'VerifyPage',
311
+ description: 'Verifier page response',
312
+ },
313
+ // ===================================================================
314
+ // Well-Known
315
+ // ===================================================================
316
+ {
317
+ id: 'well-known-agent',
318
+ url: `${SCHEMAS_BASE_URL}/well-known/agent/v1.0.0.json`,
319
+ version: '1.0.0',
320
+ type: 'WellKnownAgent',
321
+ description: 'Agent well-known metadata',
322
+ },
323
+ ];
324
+ /**
325
+ * Get all schemas
326
+ */
327
+ function getAllSchemas() {
328
+ return exports.SCHEMA_REGISTRY;
329
+ }
330
+ /**
331
+ * Get schemas by category
332
+ */
333
+ function getSchemasByCategory(category) {
334
+ const categoryMap = {
335
+ 'vc': [
336
+ 'verifiable-credential',
337
+ 'verifiable-presentation',
338
+ 'statuslist2021-credential',
339
+ 'statuslist2021-credential-subject',
340
+ ],
341
+ 'delegation': [
342
+ 'delegation-credential',
343
+ 'delegation-record',
344
+ 'delegation-constraints',
345
+ 'delegation-chain',
346
+ 'delegation-creation-request',
347
+ 'delegation-verification-result',
348
+ ],
349
+ 'handshake': [
350
+ 'handshake-request',
351
+ 'session-context',
352
+ 'nonce-cache-config',
353
+ 'nonce-cache-entry',
354
+ ],
355
+ 'proof': [
356
+ 'detached-proof',
357
+ 'proof-meta',
358
+ 'proof',
359
+ 'proof-w3c',
360
+ 'audit-record',
361
+ 'canonical-hashes',
362
+ ],
363
+ 'registry': [
364
+ 'registration-input',
365
+ 'registration-result',
366
+ 'agent-status',
367
+ 'claim-token',
368
+ 'delegation-request',
369
+ 'delegation-response',
370
+ 'registry-delegation',
371
+ 'mirror-status',
372
+ 'receipt',
373
+ ],
374
+ 'runtime': [
375
+ 'authorization-display',
376
+ 'needs-authorization-error',
377
+ 'runtime-error',
378
+ ],
379
+ 'cli': ['register-output'],
380
+ 'tlkrc': ['rotation-chain', 'rotation-event'],
381
+ 'verifier': ['verify-page'],
382
+ 'well-known': ['well-known-agent'],
383
+ };
384
+ const ids = categoryMap[category] || [];
385
+ return exports.SCHEMA_REGISTRY.filter((s) => ids.includes(s.id));
386
+ }
387
+ /**
388
+ * Get schema by ID
389
+ */
390
+ function getSchemaById(id) {
391
+ return exports.SCHEMA_REGISTRY.find((s) => s.id === id);
392
+ }
393
+ /**
394
+ * Get critical schemas (must be 100% compliant)
395
+ *
396
+ * These are the core schemas that power the MCP-I protocol and must
397
+ * be fully compliant for the system to function correctly.
398
+ */
399
+ function getCriticalSchemas() {
400
+ const criticalIds = [
401
+ // W3C VC Core
402
+ 'verifiable-credential',
403
+ 'statuslist2021-credential',
404
+ // Delegation System
405
+ 'delegation-credential',
406
+ 'delegation-record',
407
+ 'delegation-constraints',
408
+ // MCP-I Protocol
409
+ 'detached-proof',
410
+ 'proof-meta',
411
+ 'handshake-request',
412
+ 'session-context',
413
+ // Audit
414
+ 'audit-record',
415
+ ];
416
+ return exports.SCHEMA_REGISTRY.filter((s) => criticalIds.includes(s.id));
417
+ }
418
+ /**
419
+ * Get schema statistics
420
+ */
421
+ function getSchemaStats() {
422
+ const byCategory = {};
423
+ const byVersion = {};
424
+ for (const schema of exports.SCHEMA_REGISTRY) {
425
+ // Category stats (inferred from URL)
426
+ const urlParts = schema.url.replace(SCHEMAS_BASE_URL + '/', '').split('/');
427
+ const category = urlParts[0] || 'unknown';
428
+ byCategory[category] = (byCategory[category] || 0) + 1;
429
+ // Version stats
430
+ byVersion[schema.version] = (byVersion[schema.version] || 0) + 1;
431
+ }
432
+ return {
433
+ total: exports.SCHEMA_REGISTRY.length,
434
+ byCategory,
435
+ byVersion,
436
+ };
437
+ }
438
+ //# sourceMappingURL=schema-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../../src/compliance/schema-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Enhanced Schema Compliance Verification Tool v2
3
+ *
4
+ * Supports JSON Schema draft-07 features:
5
+ * - $ref resolution
6
+ * - oneOf, anyOf, allOf
7
+ * - Nested required fields
8
+ * - Array tuple validation
9
+ * - Format, pattern, enum, const
10
+ * - Recursive object validation
11
+ */
12
+ export interface SchemaMetadata {
13
+ id: string;
14
+ url: string;
15
+ version: string;
16
+ type: string;
17
+ description?: string;
18
+ }
19
+ export interface FieldComplianceResult {
20
+ fieldPath: string;
21
+ present: boolean;
22
+ expectedType: string;
23
+ actualType?: string;
24
+ typeMatches: boolean;
25
+ required: boolean;
26
+ status: 'pass' | 'fail' | 'warning';
27
+ reason?: string;
28
+ }
29
+ export interface SchemaComplianceReport {
30
+ schema: SchemaMetadata;
31
+ compliant: boolean;
32
+ compliancePercentage: number;
33
+ fields: FieldComplianceResult[];
34
+ issues: string[];
35
+ warnings: string[];
36
+ timestamp: number;
37
+ }
38
+ export interface FullComplianceReport {
39
+ totalSchemas: number;
40
+ compliantSchemas: number;
41
+ overallCompliance: number;
42
+ schemaReports: SchemaComplianceReport[];
43
+ criticalIssues: string[];
44
+ timestamp: number;
45
+ }
46
+ /**
47
+ * Enhanced Schema Verifier with JSON Schema draft-07 support
48
+ */
49
+ export declare class SchemaVerifierV2 {
50
+ private schemasBaseUrl;
51
+ private schemaCache;
52
+ constructor(options?: {
53
+ schemasBaseUrl?: string;
54
+ });
55
+ /**
56
+ * Verify a single schema against implementation
57
+ */
58
+ verifySchema(schema: SchemaMetadata, implementation: any): Promise<SchemaComplianceReport>;
59
+ /**
60
+ * Verify all schemas
61
+ */
62
+ verifyAll(schemas: SchemaMetadata[], implementations: Map<string, any>): Promise<FullComplianceReport>;
63
+ /**
64
+ * Validate implementation against schema recursively
65
+ */
66
+ private validateAgainstSchema;
67
+ /**
68
+ * Validate against oneOf, anyOf, allOf
69
+ */
70
+ private validateUnion;
71
+ /**
72
+ * Check if value matches schema (lightweight check)
73
+ */
74
+ private matchesSchema;
75
+ /**
76
+ * Validate array against schema
77
+ */
78
+ private validateArray;
79
+ /**
80
+ * Check a single field
81
+ */
82
+ private checkField;
83
+ /**
84
+ * Get actual JavaScript type
85
+ */
86
+ private getActualType;
87
+ /**
88
+ * Resolve $ref reference
89
+ */
90
+ private resolveRef;
91
+ /**
92
+ * Fetch a schema from URL
93
+ */
94
+ private fetchSchema;
95
+ /**
96
+ * Generate a formatted report
97
+ */
98
+ generateReport(report: SchemaComplianceReport): string;
99
+ /**
100
+ * Generate full report
101
+ */
102
+ generateFullReport(report: FullComplianceReport): string;
103
+ }
104
+ /**
105
+ * Create an enhanced schema verifier
106
+ */
107
+ export declare function createSchemaVerifierV2(options?: {
108
+ schemasBaseUrl?: string;
109
+ }): SchemaVerifierV2;
110
+ //# sourceMappingURL=schema-verifier-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-verifier-v2.d.ts","sourceRoot":"","sources":["../../src/compliance/schema-verifier-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,WAAW,CAA0B;gBAEjC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE;IAMjD;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,GAAG,GAClB,OAAO,CAAC,sBAAsB,CAAC;IAqElC;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,cAAc,EAAE,EACzB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC,OAAO,CAAC,oBAAoB,CAAC;IAiChC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2D7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAoErB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyCrB;;OAEG;IACH,OAAO,CAAC,aAAa;IA+FrB;;OAEG;IACH,OAAO,CAAC,UAAU;IA+ElB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAgClB;;OAEG;YACW,WAAW;IAwBzB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM;IA4CtD;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM;CAqCzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,gBAAgB,CAEnB"}