@kya-os/mcp-i-core 1.1.9 → 1.1.10
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/dist/runtime/base.d.ts +1 -0
- package/dist/runtime/base.d.ts.map +1 -1
- package/dist/runtime/base.js +3 -4
- package/dist/runtime/base.js.map +1 -1
- package/package.json +1 -1
- package/dist/compliance/schema-verifier-v2.d.ts +0 -110
- package/dist/compliance/schema-verifier-v2.d.ts.map +0 -1
- package/dist/compliance/schema-verifier-v2.js +0 -510
- package/dist/compliance/schema-verifier-v2.js.map +0 -1
- package/dist/did/resolver.d.ts +0 -92
- package/dist/did/resolver.d.ts.map +0 -1
- package/dist/did/resolver.js +0 -203
- package/dist/did/resolver.js.map +0 -1
- package/dist/proof/proof-engine.d.ts +0 -89
- package/dist/proof/proof-engine.d.ts.map +0 -1
- package/dist/proof/proof-engine.js +0 -249
- package/dist/proof/proof-engine.js.map +0 -1
- package/dist/runtime/base-v2.d.ts +0 -117
- package/dist/runtime/base-v2.d.ts.map +0 -1
- package/dist/runtime/base-v2.js +0 -328
- package/dist/runtime/base-v2.js.map +0 -1
- package/dist/types/providers.d.ts +0 -142
- package/dist/types/providers.d.ts.map +0 -1
- package/dist/types/providers.js +0 -43
- package/dist/types/providers.js.map +0 -1
- package/dist/verification/interfaces.d.ts +0 -125
- package/dist/verification/interfaces.d.ts.map +0 -1
- package/dist/verification/interfaces.js +0 -101
- package/dist/verification/interfaces.js.map +0 -1
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Credential and Delegation verification interfaces
|
|
3
|
-
*/
|
|
4
|
-
import { ProofEngine } from "../proof/proof-engine";
|
|
5
|
-
import { FetchProvider, ClockProvider } from "../types/providers";
|
|
6
|
-
/**
|
|
7
|
-
* Credential status
|
|
8
|
-
*/
|
|
9
|
-
export interface CredentialStatus {
|
|
10
|
-
revoked: boolean;
|
|
11
|
-
suspended?: boolean;
|
|
12
|
-
statusListIndex?: number;
|
|
13
|
-
statusListCredential?: string;
|
|
14
|
-
checkedAt: number;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Delegation chain entry
|
|
18
|
-
*/
|
|
19
|
-
export interface DelegationEntry {
|
|
20
|
-
id: string;
|
|
21
|
-
delegator: string;
|
|
22
|
-
delegate: string;
|
|
23
|
-
scope: string[];
|
|
24
|
-
constraints?: any;
|
|
25
|
-
credentialId?: string;
|
|
26
|
-
parentId?: string;
|
|
27
|
-
depth: number;
|
|
28
|
-
createdAt: number;
|
|
29
|
-
expiresAt?: number;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Verification options
|
|
33
|
-
*/
|
|
34
|
-
export interface VerificationOptions {
|
|
35
|
-
verifyCredential?: boolean;
|
|
36
|
-
checkRevocation?: boolean;
|
|
37
|
-
maxChainDepth?: number;
|
|
38
|
-
allowExpired?: boolean;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Verification result
|
|
42
|
-
*/
|
|
43
|
-
export interface VerificationResult {
|
|
44
|
-
valid: boolean;
|
|
45
|
-
errors?: string[];
|
|
46
|
-
warnings?: string[];
|
|
47
|
-
credentialStatus?: CredentialStatus;
|
|
48
|
-
delegationChain?: DelegationEntry[];
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Credential verifier interface
|
|
52
|
-
*/
|
|
53
|
-
export declare abstract class CredentialVerifier {
|
|
54
|
-
protected proofEngine: ProofEngine;
|
|
55
|
-
protected fetchProvider: FetchProvider;
|
|
56
|
-
protected clockProvider: ClockProvider;
|
|
57
|
-
constructor(proofEngine: ProofEngine, fetchProvider: FetchProvider, clockProvider: ClockProvider);
|
|
58
|
-
/**
|
|
59
|
-
* Verify a verifiable credential
|
|
60
|
-
*/
|
|
61
|
-
abstract verifyCredential(credential: any, options?: VerificationOptions): Promise<VerificationResult>;
|
|
62
|
-
/**
|
|
63
|
-
* Check credential status (revocation, suspension)
|
|
64
|
-
*/
|
|
65
|
-
abstract checkCredentialStatus(credentialId: string): Promise<CredentialStatus>;
|
|
66
|
-
/**
|
|
67
|
-
* Stage-1 verification (status/expiry - no network)
|
|
68
|
-
*/
|
|
69
|
-
abstract verifyOffline(credential: any): Promise<VerificationResult>;
|
|
70
|
-
/**
|
|
71
|
-
* Stage-2 verification (signature + credential - may use network)
|
|
72
|
-
*/
|
|
73
|
-
abstract verifyOnline(credential: any, options?: VerificationOptions): Promise<VerificationResult>;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Delegation registry interface
|
|
77
|
-
*/
|
|
78
|
-
export declare abstract class DelegationRegistry {
|
|
79
|
-
protected fetchProvider: FetchProvider;
|
|
80
|
-
protected clockProvider: ClockProvider;
|
|
81
|
-
constructor(fetchProvider: FetchProvider, clockProvider: ClockProvider);
|
|
82
|
-
/**
|
|
83
|
-
* Verify delegation with optional credential verification
|
|
84
|
-
*/
|
|
85
|
-
abstract verifyDelegation(delegationId: string, options?: VerificationOptions): Promise<VerificationResult>;
|
|
86
|
-
/**
|
|
87
|
-
* Get delegation chain
|
|
88
|
-
*/
|
|
89
|
-
abstract getDelegationChain(delegationId: string): Promise<DelegationEntry[]>;
|
|
90
|
-
/**
|
|
91
|
-
* Check if any link in chain is revoked
|
|
92
|
-
*/
|
|
93
|
-
abstract checkChainRevocation(chain: DelegationEntry[]): Promise<boolean>;
|
|
94
|
-
/**
|
|
95
|
-
* Validate chain depth
|
|
96
|
-
*/
|
|
97
|
-
abstract validateChainDepth(chain: DelegationEntry[], maxDepth: number): boolean;
|
|
98
|
-
/**
|
|
99
|
-
* Register new delegation
|
|
100
|
-
*/
|
|
101
|
-
abstract registerDelegation(delegation: DelegationEntry): Promise<string>;
|
|
102
|
-
/**
|
|
103
|
-
* Revoke delegation (and all descendants)
|
|
104
|
-
*/
|
|
105
|
-
abstract revokeDelegation(delegationId: string): Promise<void>;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Progressive verification helper
|
|
109
|
-
*/
|
|
110
|
-
export declare class ProgressiveVerifier {
|
|
111
|
-
private credentialVerifier;
|
|
112
|
-
private delegationRegistry;
|
|
113
|
-
constructor(credentialVerifier: CredentialVerifier, delegationRegistry: DelegationRegistry);
|
|
114
|
-
/**
|
|
115
|
-
* Perform progressive verification
|
|
116
|
-
* Stage-1: Offline checks (expiry, basic validation)
|
|
117
|
-
* Stage-2: Online checks (signature, credential, revocation)
|
|
118
|
-
*/
|
|
119
|
-
verifyProgressive(data: any, options?: VerificationOptions): Promise<VerificationResult>;
|
|
120
|
-
/**
|
|
121
|
-
* Get edge verification data for offline verification
|
|
122
|
-
*/
|
|
123
|
-
getEdgeVerificationData(id: string): Promise<any>;
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/verification/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Credential and Delegation verification interfaces
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ProgressiveVerifier = exports.DelegationRegistry = exports.CredentialVerifier = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Credential verifier interface
|
|
9
|
-
*/
|
|
10
|
-
class CredentialVerifier {
|
|
11
|
-
proofEngine;
|
|
12
|
-
fetchProvider;
|
|
13
|
-
clockProvider;
|
|
14
|
-
constructor(proofEngine, fetchProvider, clockProvider) {
|
|
15
|
-
this.proofEngine = proofEngine;
|
|
16
|
-
this.fetchProvider = fetchProvider;
|
|
17
|
-
this.clockProvider = clockProvider;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.CredentialVerifier = CredentialVerifier;
|
|
21
|
-
/**
|
|
22
|
-
* Delegation registry interface
|
|
23
|
-
*/
|
|
24
|
-
class DelegationRegistry {
|
|
25
|
-
fetchProvider;
|
|
26
|
-
clockProvider;
|
|
27
|
-
constructor(fetchProvider, clockProvider) {
|
|
28
|
-
this.fetchProvider = fetchProvider;
|
|
29
|
-
this.clockProvider = clockProvider;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.DelegationRegistry = DelegationRegistry;
|
|
33
|
-
/**
|
|
34
|
-
* Progressive verification helper
|
|
35
|
-
*/
|
|
36
|
-
class ProgressiveVerifier {
|
|
37
|
-
credentialVerifier;
|
|
38
|
-
delegationRegistry;
|
|
39
|
-
constructor(credentialVerifier, delegationRegistry) {
|
|
40
|
-
this.credentialVerifier = credentialVerifier;
|
|
41
|
-
this.delegationRegistry = delegationRegistry;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Perform progressive verification
|
|
45
|
-
* Stage-1: Offline checks (expiry, basic validation)
|
|
46
|
-
* Stage-2: Online checks (signature, credential, revocation)
|
|
47
|
-
*/
|
|
48
|
-
async verifyProgressive(data, options = {}) {
|
|
49
|
-
// Stage-1: Offline verification
|
|
50
|
-
const stage1 = await this.credentialVerifier.verifyOffline(data);
|
|
51
|
-
if (!stage1.valid && !options.allowExpired) {
|
|
52
|
-
return stage1; // Fail fast on basic validation
|
|
53
|
-
}
|
|
54
|
-
// Stage-2: Online verification (parallel)
|
|
55
|
-
const [credentialResult, delegationResult] = await Promise.all([
|
|
56
|
-
options.verifyCredential
|
|
57
|
-
? this.credentialVerifier.verifyOnline(data, options)
|
|
58
|
-
: Promise.resolve({ valid: true }),
|
|
59
|
-
data.delegationId
|
|
60
|
-
? this.delegationRegistry.verifyDelegation(data.delegationId, options)
|
|
61
|
-
: Promise.resolve({ valid: true })
|
|
62
|
-
]);
|
|
63
|
-
// Combine results
|
|
64
|
-
const errors = [
|
|
65
|
-
...(stage1.errors || []),
|
|
66
|
-
...(credentialResult.errors || []),
|
|
67
|
-
...(delegationResult.errors || [])
|
|
68
|
-
];
|
|
69
|
-
const warnings = [
|
|
70
|
-
...(stage1.warnings || []),
|
|
71
|
-
...(credentialResult.warnings || []),
|
|
72
|
-
...(delegationResult.warnings || [])
|
|
73
|
-
];
|
|
74
|
-
return {
|
|
75
|
-
valid: stage1.valid && credentialResult.valid && delegationResult.valid,
|
|
76
|
-
errors: errors.length > 0 ? errors : undefined,
|
|
77
|
-
warnings: warnings.length > 0 ? warnings : undefined,
|
|
78
|
-
credentialStatus: credentialResult.credentialStatus,
|
|
79
|
-
delegationChain: delegationResult.delegationChain
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Get edge verification data for offline verification
|
|
84
|
-
*/
|
|
85
|
-
async getEdgeVerificationData(id) {
|
|
86
|
-
// Fetch compact blob for edge verification
|
|
87
|
-
const [credential, delegation] = await Promise.all([
|
|
88
|
-
this.credentialVerifier.checkCredentialStatus(id),
|
|
89
|
-
this.delegationRegistry.getDelegationChain(id)
|
|
90
|
-
]);
|
|
91
|
-
return {
|
|
92
|
-
id,
|
|
93
|
-
credential,
|
|
94
|
-
delegation,
|
|
95
|
-
timestamp: Date.now(),
|
|
96
|
-
ttl: 300 // 5 minutes cache
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
exports.ProgressiveVerifier = ProgressiveVerifier;
|
|
101
|
-
//# sourceMappingURL=interfaces.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/verification/interfaces.ts"],"names":[],"mappings":"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"}
|