@kya-os/mcp-i-core 1.1.10 → 1.1.11
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/__tests__/utils/mock-providers.d.ts.map +1 -1
- package/dist/__tests__/utils/mock-providers.js +16 -4
- package/dist/__tests__/utils/mock-providers.js.map +1 -1
- package/dist/cache/tool-protection-cache.d.ts.map +1 -1
- package/dist/cache/tool-protection-cache.js +4 -0
- package/dist/cache/tool-protection-cache.js.map +1 -1
- package/dist/compliance/schema-verifier-v2.d.ts +110 -0
- package/dist/compliance/schema-verifier-v2.d.ts.map +1 -0
- package/dist/compliance/schema-verifier-v2.js +510 -0
- package/dist/compliance/schema-verifier-v2.js.map +1 -0
- package/dist/config/remote-config.d.ts +69 -0
- package/dist/config/remote-config.d.ts.map +1 -0
- package/dist/config/remote-config.js +107 -0
- package/dist/config/remote-config.js.map +1 -0
- package/dist/config.d.ts +182 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +145 -0
- package/dist/config.js.map +1 -0
- package/dist/did/resolver.d.ts +92 -0
- package/dist/did/resolver.d.ts.map +1 -0
- package/dist/did/resolver.js +203 -0
- package/dist/did/resolver.js.map +1 -0
- package/dist/identity/user-did-manager.d.ts +106 -0
- package/dist/identity/user-did-manager.d.ts.map +1 -0
- package/dist/identity/user-did-manager.js +190 -0
- package/dist/identity/user-did-manager.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/proof/proof-engine.d.ts +89 -0
- package/dist/proof/proof-engine.d.ts.map +1 -0
- package/dist/proof/proof-engine.js +249 -0
- package/dist/proof/proof-engine.js.map +1 -0
- package/dist/runtime/base-v2.d.ts +117 -0
- package/dist/runtime/base-v2.d.ts.map +1 -0
- package/dist/runtime/base-v2.js +328 -0
- package/dist/runtime/base-v2.js.map +1 -0
- package/dist/runtime/base.d.ts +26 -31
- package/dist/runtime/base.d.ts.map +1 -1
- package/dist/runtime/base.js +206 -69
- package/dist/runtime/base.js.map +1 -1
- package/dist/services/tool-protection.service.d.ts.map +1 -1
- package/dist/services/tool-protection.service.js +60 -11
- package/dist/services/tool-protection.service.js.map +1 -1
- package/dist/types/providers.d.ts +142 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +43 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/tool-protection.d.ts +22 -22
- package/dist/types/tool-protection.d.ts.map +1 -1
- package/dist/types/tool-protection.js +12 -5
- package/dist/types/tool-protection.js.map +1 -1
- package/dist/verification/interfaces.d.ts +125 -0
- package/dist/verification/interfaces.d.ts.map +1 -0
- package/dist/verification/interfaces.js +101 -0
- package/dist/verification/interfaces.js.map +1 -0
- package/package.json +10 -3
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ProofEngine abstraction for multiple proof formats
|
|
4
|
+
* Supports JWT-VC, Data Integrity (Ed25519Signature2020), and JWS
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DefaultProofEngine = exports.ProofEngine = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Abstract proof engine for creating and verifying proofs
|
|
10
|
+
*/
|
|
11
|
+
class ProofEngine {
|
|
12
|
+
crypto;
|
|
13
|
+
constructor(crypto) {
|
|
14
|
+
this.crypto = crypto;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ProofEngine = ProofEngine;
|
|
18
|
+
/**
|
|
19
|
+
* Default proof engine implementation
|
|
20
|
+
*/
|
|
21
|
+
class DefaultProofEngine extends ProofEngine {
|
|
22
|
+
/**
|
|
23
|
+
* Create a proof based on format
|
|
24
|
+
*/
|
|
25
|
+
async createProof(data, privateKey, options) {
|
|
26
|
+
const canonical = options.canonicalize ? this.canonicalize(data) : JSON.stringify(data);
|
|
27
|
+
const dataBytes = new TextEncoder().encode(canonical);
|
|
28
|
+
switch (options.format.type) {
|
|
29
|
+
case 'DetachedJWS':
|
|
30
|
+
return this.createDetachedJWS(dataBytes, privateKey, options);
|
|
31
|
+
case 'DataIntegrity':
|
|
32
|
+
return this.createDataIntegrityProof(data, privateKey, options);
|
|
33
|
+
case 'JWT-VC':
|
|
34
|
+
return this.createJWTVC(data, privateKey, options);
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unsupported proof format: ${options.format.type}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Verify a proof based on format
|
|
41
|
+
*/
|
|
42
|
+
async verifyProof(data, proof, publicKey, options) {
|
|
43
|
+
try {
|
|
44
|
+
switch (options.format.type) {
|
|
45
|
+
case 'DetachedJWS':
|
|
46
|
+
return this.verifyDetachedJWS(data, proof, publicKey, options);
|
|
47
|
+
case 'DataIntegrity':
|
|
48
|
+
return this.verifyDataIntegrityProof(data, proof, publicKey, options);
|
|
49
|
+
case 'JWT-VC':
|
|
50
|
+
return this.verifyJWTVC(proof, publicKey, options);
|
|
51
|
+
default:
|
|
52
|
+
return {
|
|
53
|
+
valid: false,
|
|
54
|
+
format: options.format,
|
|
55
|
+
errors: [`Unsupported proof format: ${options.format.type}`]
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return {
|
|
61
|
+
valid: false,
|
|
62
|
+
format: options.format,
|
|
63
|
+
errors: [error instanceof Error ? error.message : String(error)]
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create detached JWS proof
|
|
69
|
+
*/
|
|
70
|
+
async createDetachedJWS(data, privateKey, options) {
|
|
71
|
+
// Create signature
|
|
72
|
+
const signature = await this.crypto.sign(data, privateKey);
|
|
73
|
+
// Create hash for reference
|
|
74
|
+
const hash = await this.crypto.hash(data);
|
|
75
|
+
return {
|
|
76
|
+
format: 'DetachedJWS',
|
|
77
|
+
signature: Buffer.from(signature).toString('base64url'),
|
|
78
|
+
hash: Buffer.from(hash).toString('base64'),
|
|
79
|
+
algorithm: options.format.algorithm || 'Ed25519'
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Verify detached JWS proof
|
|
84
|
+
*/
|
|
85
|
+
async verifyDetachedJWS(data, proof, publicKey, options) {
|
|
86
|
+
const canonical = options.canonicalize ? this.canonicalize(data) : JSON.stringify(data);
|
|
87
|
+
const dataBytes = new TextEncoder().encode(canonical);
|
|
88
|
+
// Verify hash matches
|
|
89
|
+
const hash = await this.crypto.hash(dataBytes);
|
|
90
|
+
const hashBase64 = Buffer.from(hash).toString('base64');
|
|
91
|
+
if (hashBase64 !== proof.hash) {
|
|
92
|
+
return {
|
|
93
|
+
valid: false,
|
|
94
|
+
format: options.format,
|
|
95
|
+
errors: ['Hash mismatch']
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// Verify signature
|
|
99
|
+
const signatureBytes = Buffer.from(proof.signature, 'base64url');
|
|
100
|
+
const valid = await this.crypto.verify(dataBytes, signatureBytes, publicKey);
|
|
101
|
+
return {
|
|
102
|
+
valid,
|
|
103
|
+
format: options.format,
|
|
104
|
+
metadata: { hash: hashBase64 }
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Create Data Integrity proof (Ed25519Signature2020)
|
|
109
|
+
*/
|
|
110
|
+
async createDataIntegrityProof(data, privateKey, options) {
|
|
111
|
+
const proof = {
|
|
112
|
+
type: 'Ed25519Signature2020',
|
|
113
|
+
created: new Date().toISOString(),
|
|
114
|
+
verificationMethod: '', // Will be set by runtime
|
|
115
|
+
proofPurpose: 'assertionMethod'
|
|
116
|
+
};
|
|
117
|
+
// Canonicalize document + proof
|
|
118
|
+
const docWithProof = { ...data, proof };
|
|
119
|
+
const canonical = this.canonicalize(docWithProof);
|
|
120
|
+
const dataBytes = new TextEncoder().encode(canonical);
|
|
121
|
+
// Sign
|
|
122
|
+
const signature = await this.crypto.sign(dataBytes, privateKey);
|
|
123
|
+
return {
|
|
124
|
+
...proof,
|
|
125
|
+
proofValue: Buffer.from(signature).toString('base64')
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Verify Data Integrity proof
|
|
130
|
+
*/
|
|
131
|
+
async verifyDataIntegrityProof(data, proof, publicKey, options) {
|
|
132
|
+
// Remove proofValue for verification
|
|
133
|
+
const { proofValue, ...proofWithoutValue } = proof;
|
|
134
|
+
const docWithProof = { ...data, proof: proofWithoutValue };
|
|
135
|
+
// Canonicalize
|
|
136
|
+
const canonical = this.canonicalize(docWithProof);
|
|
137
|
+
const dataBytes = new TextEncoder().encode(canonical);
|
|
138
|
+
// Verify signature
|
|
139
|
+
const signatureBytes = Buffer.from(proofValue, 'base64');
|
|
140
|
+
const valid = await this.crypto.verify(dataBytes, signatureBytes, publicKey);
|
|
141
|
+
return {
|
|
142
|
+
valid,
|
|
143
|
+
format: options.format,
|
|
144
|
+
metadata: {
|
|
145
|
+
created: proof.created,
|
|
146
|
+
type: proof.type
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Create JWT-VC
|
|
152
|
+
*/
|
|
153
|
+
async createJWTVC(data, privateKey, options) {
|
|
154
|
+
// Create JWT header
|
|
155
|
+
const header = {
|
|
156
|
+
alg: 'EdDSA',
|
|
157
|
+
typ: 'JWT'
|
|
158
|
+
};
|
|
159
|
+
// Create payload
|
|
160
|
+
const payload = {
|
|
161
|
+
vc: data,
|
|
162
|
+
iat: Math.floor(Date.now() / 1000),
|
|
163
|
+
exp: Math.floor(Date.now() / 1000) + 3600 // 1 hour
|
|
164
|
+
};
|
|
165
|
+
// Encode parts
|
|
166
|
+
const headerB64 = Buffer.from(JSON.stringify(header)).toString('base64url');
|
|
167
|
+
const payloadB64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
|
|
168
|
+
// Sign
|
|
169
|
+
const message = `${headerB64}.${payloadB64}`;
|
|
170
|
+
const signature = await this.crypto.sign(new TextEncoder().encode(message), privateKey);
|
|
171
|
+
return `${message}.${Buffer.from(signature).toString('base64url')}`;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Verify JWT-VC
|
|
175
|
+
*/
|
|
176
|
+
async verifyJWTVC(jwt, publicKey, options) {
|
|
177
|
+
const parts = jwt.split('.');
|
|
178
|
+
if (parts.length !== 3) {
|
|
179
|
+
return {
|
|
180
|
+
valid: false,
|
|
181
|
+
format: options.format,
|
|
182
|
+
errors: ['Invalid JWT format']
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
const [headerB64, payloadB64, signatureB64] = parts;
|
|
186
|
+
// Verify signature
|
|
187
|
+
const message = `${headerB64}.${payloadB64}`;
|
|
188
|
+
const signature = Buffer.from(signatureB64, 'base64url');
|
|
189
|
+
const valid = await this.crypto.verify(new TextEncoder().encode(message), signature, publicKey);
|
|
190
|
+
if (!valid) {
|
|
191
|
+
return {
|
|
192
|
+
valid: false,
|
|
193
|
+
format: options.format,
|
|
194
|
+
errors: ['Invalid signature']
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
// Decode and check expiry
|
|
198
|
+
const payload = JSON.parse(Buffer.from(payloadB64, 'base64url').toString());
|
|
199
|
+
const now = Math.floor(Date.now() / 1000);
|
|
200
|
+
if (payload.exp && payload.exp < now) {
|
|
201
|
+
return {
|
|
202
|
+
valid: false,
|
|
203
|
+
format: options.format,
|
|
204
|
+
errors: ['JWT expired']
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
valid: true,
|
|
209
|
+
format: options.format,
|
|
210
|
+
metadata: payload
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Canonicalize JSON (JCS - RFC 8785)
|
|
215
|
+
*/
|
|
216
|
+
canonicalize(obj) {
|
|
217
|
+
if (obj === null)
|
|
218
|
+
return 'null';
|
|
219
|
+
if (typeof obj === 'boolean')
|
|
220
|
+
return obj.toString();
|
|
221
|
+
if (typeof obj === 'number')
|
|
222
|
+
return JSON.stringify(obj);
|
|
223
|
+
if (typeof obj === 'string')
|
|
224
|
+
return JSON.stringify(obj);
|
|
225
|
+
if (Array.isArray(obj)) {
|
|
226
|
+
return '[' + obj.map(item => this.canonicalize(item)).join(',') + ']';
|
|
227
|
+
}
|
|
228
|
+
if (typeof obj === 'object') {
|
|
229
|
+
const keys = Object.keys(obj).sort();
|
|
230
|
+
const pairs = keys.map(key => {
|
|
231
|
+
return JSON.stringify(key) + ':' + this.canonicalize(obj[key]);
|
|
232
|
+
});
|
|
233
|
+
return '{' + pairs.join(',') + '}';
|
|
234
|
+
}
|
|
235
|
+
throw new Error('Unsupported type for canonicalization');
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get supported formats
|
|
239
|
+
*/
|
|
240
|
+
getSupportedFormats() {
|
|
241
|
+
return [
|
|
242
|
+
{ type: 'DetachedJWS', algorithm: 'Ed25519' },
|
|
243
|
+
{ type: 'DataIntegrity', algorithm: 'Ed25519Signature2020' },
|
|
244
|
+
{ type: 'JWT-VC', algorithm: 'EdDSA' }
|
|
245
|
+
];
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.DefaultProofEngine = DefaultProofEngine;
|
|
249
|
+
//# sourceMappingURL=proof-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof-engine.js","sourceRoot":"","sources":["../../src/proof/proof-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base MCP-I Runtime V2 - Refactored with better separation of concerns
|
|
3
|
+
*/
|
|
4
|
+
import { CryptoProvider, IdentityProvider, StorageProvider, NonceCacheProvider, ClockProvider, FetchProvider } from "../types/providers";
|
|
5
|
+
import { AgentIdentity, SessionContext, HandshakeRequest, HandshakeResponse } from "@kya-os/contracts/handshake";
|
|
6
|
+
import { ProofEngine, ProofFormat, ProofOptions } from "../proof/proof-engine";
|
|
7
|
+
import { CredentialVerifier, DelegationRegistry, ProgressiveVerifier } from "../verification/interfaces";
|
|
8
|
+
import { UniversalDIDResolver } from "../did/resolver";
|
|
9
|
+
export interface MCPIRuntimeConfigV2 {
|
|
10
|
+
cryptoProvider: CryptoProvider;
|
|
11
|
+
identityProvider: IdentityProvider;
|
|
12
|
+
storageProvider: StorageProvider;
|
|
13
|
+
nonceCacheProvider: NonceCacheProvider;
|
|
14
|
+
clockProvider: ClockProvider;
|
|
15
|
+
fetchProvider: FetchProvider;
|
|
16
|
+
proofEngine?: ProofEngine;
|
|
17
|
+
didResolver?: UniversalDIDResolver;
|
|
18
|
+
credentialVerifier?: CredentialVerifier;
|
|
19
|
+
delegationRegistry?: DelegationRegistry;
|
|
20
|
+
session?: {
|
|
21
|
+
timestampSkewSeconds?: number;
|
|
22
|
+
sessionTtlMinutes?: number;
|
|
23
|
+
absoluteSessionLifetime?: number;
|
|
24
|
+
};
|
|
25
|
+
audit?: {
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
includePayloads?: boolean;
|
|
28
|
+
logFunction?: (record: string) => void;
|
|
29
|
+
};
|
|
30
|
+
proof?: {
|
|
31
|
+
defaultFormat?: ProofFormat;
|
|
32
|
+
canonicalize?: boolean;
|
|
33
|
+
};
|
|
34
|
+
security?: {
|
|
35
|
+
requireCredentialVerification?: boolean;
|
|
36
|
+
maxDelegationDepth?: number;
|
|
37
|
+
allowExpiredCredentials?: boolean;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Refactored MCP-I Runtime Base
|
|
42
|
+
* Accepts providers instead of implementing crypto directly
|
|
43
|
+
*/
|
|
44
|
+
export declare class MCPIRuntimeBaseV2 {
|
|
45
|
+
protected crypto: CryptoProvider;
|
|
46
|
+
protected identity: IdentityProvider;
|
|
47
|
+
protected storage: StorageProvider;
|
|
48
|
+
protected nonceCache: NonceCacheProvider;
|
|
49
|
+
protected clock: ClockProvider;
|
|
50
|
+
protected fetch: FetchProvider;
|
|
51
|
+
protected proofEngine: ProofEngine;
|
|
52
|
+
protected didResolver: UniversalDIDResolver;
|
|
53
|
+
protected credentialVerifier?: CredentialVerifier;
|
|
54
|
+
protected delegationRegistry?: DelegationRegistry;
|
|
55
|
+
protected progressiveVerifier?: ProgressiveVerifier;
|
|
56
|
+
protected config: MCPIRuntimeConfigV2;
|
|
57
|
+
private cachedIdentity?;
|
|
58
|
+
private sessions;
|
|
59
|
+
constructor(config: MCPIRuntimeConfigV2);
|
|
60
|
+
/**
|
|
61
|
+
* Initialize runtime (load or generate identity)
|
|
62
|
+
*/
|
|
63
|
+
initialize(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Get current agent identity
|
|
66
|
+
*/
|
|
67
|
+
getIdentity(): Promise<AgentIdentity>;
|
|
68
|
+
/**
|
|
69
|
+
* Generate new identity using crypto provider
|
|
70
|
+
*/
|
|
71
|
+
protected generateIdentity(): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Create DID from public key
|
|
74
|
+
*/
|
|
75
|
+
protected createDID(publicKey: string): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* Handle handshake request with improved validation
|
|
78
|
+
*/
|
|
79
|
+
handleHandshake(request: HandshakeRequest): Promise<HandshakeResponse>;
|
|
80
|
+
/**
|
|
81
|
+
* Create proof using ProofEngine
|
|
82
|
+
*/
|
|
83
|
+
createProof(response: any, session: SessionContext, options?: Partial<ProofOptions>): Promise<any>;
|
|
84
|
+
/**
|
|
85
|
+
* Verify proof with optional credential/delegation verification
|
|
86
|
+
*/
|
|
87
|
+
verifyProof(data: any, proof: any, options?: {
|
|
88
|
+
verifyCredential?: boolean;
|
|
89
|
+
checkDelegation?: boolean;
|
|
90
|
+
publicKey?: string;
|
|
91
|
+
}): Promise<boolean>;
|
|
92
|
+
/**
|
|
93
|
+
* Process tool call with automatic proof generation
|
|
94
|
+
*/
|
|
95
|
+
processToolCall(toolName: string, args: any, handler: (args: any) => Promise<any>, session: SessionContext): Promise<any>;
|
|
96
|
+
/**
|
|
97
|
+
* Get edge verification data for offline verification
|
|
98
|
+
*/
|
|
99
|
+
getEdgeVerificationData(id: string): Promise<any>;
|
|
100
|
+
/**
|
|
101
|
+
* Generate cryptographically secure session ID
|
|
102
|
+
*/
|
|
103
|
+
protected generateSessionId(): Promise<string>;
|
|
104
|
+
/**
|
|
105
|
+
* Generate cryptographically secure nonce
|
|
106
|
+
*/
|
|
107
|
+
protected generateNonce(): Promise<string>;
|
|
108
|
+
/**
|
|
109
|
+
* Get runtime capabilities
|
|
110
|
+
*/
|
|
111
|
+
protected getCapabilities(): Promise<string[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Audit logging
|
|
114
|
+
*/
|
|
115
|
+
protected auditLog(event: string, data?: any): void;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=base-v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-v2.d.ts","sourceRoot":"","sources":["../../src/runtime/base-v2.ts"],"names":[],"mappings":"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"}
|