@kya-os/mcp-i-core 1.0.0
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/README.md +302 -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/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- 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/providers/base.d.ts +76 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +43 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/memory.d.ts +42 -0
- package/dist/providers/memory.d.ts.map +1 -0
- package/dist/providers/memory.js +117 -0
- package/dist/providers/memory.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 +97 -0
- package/dist/runtime/base.d.ts.map +1 -0
- package/dist/runtime/base.js +316 -0
- package/dist/runtime/base.js.map +1 -0
- 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/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 +59 -0
|
@@ -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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"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base MCP-I Runtime V2 - Refactored with better separation of concerns
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MCPIRuntimeBaseV2 = void 0;
|
|
7
|
+
const interfaces_1 = require("../verification/interfaces");
|
|
8
|
+
const resolver_1 = require("../did/resolver");
|
|
9
|
+
/**
|
|
10
|
+
* Refactored MCP-I Runtime Base
|
|
11
|
+
* Accepts providers instead of implementing crypto directly
|
|
12
|
+
*/
|
|
13
|
+
class MCPIRuntimeBaseV2 {
|
|
14
|
+
// Core providers
|
|
15
|
+
crypto;
|
|
16
|
+
identity;
|
|
17
|
+
storage;
|
|
18
|
+
nonceCache;
|
|
19
|
+
clock;
|
|
20
|
+
fetch;
|
|
21
|
+
// Advanced components
|
|
22
|
+
proofEngine;
|
|
23
|
+
didResolver;
|
|
24
|
+
credentialVerifier;
|
|
25
|
+
delegationRegistry;
|
|
26
|
+
progressiveVerifier;
|
|
27
|
+
// Configuration
|
|
28
|
+
config;
|
|
29
|
+
// Runtime state
|
|
30
|
+
cachedIdentity;
|
|
31
|
+
sessions = new Map();
|
|
32
|
+
constructor(config) {
|
|
33
|
+
this.config = config;
|
|
34
|
+
// Set core providers
|
|
35
|
+
this.crypto = config.cryptoProvider;
|
|
36
|
+
this.identity = config.identityProvider;
|
|
37
|
+
this.storage = config.storageProvider;
|
|
38
|
+
this.nonceCache = config.nonceCacheProvider;
|
|
39
|
+
this.clock = config.clockProvider;
|
|
40
|
+
this.fetch = config.fetchProvider;
|
|
41
|
+
// Initialize advanced components
|
|
42
|
+
this.proofEngine = config.proofEngine || new (require('../proof/proof-engine').DefaultProofEngine)(this.crypto);
|
|
43
|
+
this.didResolver = config.didResolver || new resolver_1.UniversalDIDResolver(this.fetch);
|
|
44
|
+
// Set optional verification components
|
|
45
|
+
this.credentialVerifier = config.credentialVerifier;
|
|
46
|
+
this.delegationRegistry = config.delegationRegistry;
|
|
47
|
+
// Create progressive verifier if both components available
|
|
48
|
+
if (this.credentialVerifier && this.delegationRegistry) {
|
|
49
|
+
this.progressiveVerifier = new interfaces_1.ProgressiveVerifier(this.credentialVerifier, this.delegationRegistry);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Initialize runtime (load or generate identity)
|
|
54
|
+
*/
|
|
55
|
+
async initialize() {
|
|
56
|
+
// Try to load existing identity
|
|
57
|
+
this.cachedIdentity = await this.identity.loadIdentity() || undefined;
|
|
58
|
+
// Generate new identity if none exists
|
|
59
|
+
if (!this.cachedIdentity) {
|
|
60
|
+
await this.generateIdentity();
|
|
61
|
+
}
|
|
62
|
+
// Audit initialization
|
|
63
|
+
if (this.config.audit?.enabled) {
|
|
64
|
+
this.auditLog('runtime_initialized', {
|
|
65
|
+
did: this.cachedIdentity?.did,
|
|
66
|
+
timestamp: this.clock.now()
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get current agent identity
|
|
72
|
+
*/
|
|
73
|
+
async getIdentity() {
|
|
74
|
+
if (!this.cachedIdentity) {
|
|
75
|
+
await this.initialize();
|
|
76
|
+
}
|
|
77
|
+
if (!this.cachedIdentity) {
|
|
78
|
+
throw new Error("Identity not initialized");
|
|
79
|
+
}
|
|
80
|
+
return this.cachedIdentity;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate new identity using crypto provider
|
|
84
|
+
*/
|
|
85
|
+
async generateIdentity() {
|
|
86
|
+
const { privateKey, publicKey } = await this.crypto.generateKeyPair();
|
|
87
|
+
// Create DID from public key
|
|
88
|
+
const did = await this.createDID(publicKey);
|
|
89
|
+
const keyId = `${did}#key-1`;
|
|
90
|
+
const identity = {
|
|
91
|
+
did,
|
|
92
|
+
keyId,
|
|
93
|
+
privateKey,
|
|
94
|
+
publicKey,
|
|
95
|
+
createdAt: new Date(this.clock.now()).toISOString()
|
|
96
|
+
};
|
|
97
|
+
await this.identity.storeIdentity(identity);
|
|
98
|
+
this.cachedIdentity = identity;
|
|
99
|
+
// Audit identity generation
|
|
100
|
+
this.auditLog('identity_generated', { did, keyId });
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create DID from public key
|
|
104
|
+
*/
|
|
105
|
+
async createDID(publicKey) {
|
|
106
|
+
// Default: did:key format
|
|
107
|
+
const keyBytes = Buffer.from(publicKey, 'base64');
|
|
108
|
+
const multicodec = Buffer.concat([
|
|
109
|
+
Buffer.from([0xed, 0x01]), // Ed25519 public key multicodec
|
|
110
|
+
keyBytes
|
|
111
|
+
]);
|
|
112
|
+
const multibase = 'z' + multicodec.toString('base64url');
|
|
113
|
+
return `did:key:${multibase}`;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Handle handshake request with improved validation
|
|
117
|
+
*/
|
|
118
|
+
async handleHandshake(request) {
|
|
119
|
+
const identity = await this.getIdentity();
|
|
120
|
+
// Validate timestamp using clock provider
|
|
121
|
+
if (!this.clock.isWithinSkew(request.timestamp, this.config.session?.timestampSkewSeconds || 120)) {
|
|
122
|
+
throw new Error("Timestamp outside acceptable window");
|
|
123
|
+
}
|
|
124
|
+
// Check nonce with prefix
|
|
125
|
+
const nonceKey = `${this.nonceCache.getNoncePrefix()}${request.nonce}`;
|
|
126
|
+
if (await this.nonceCache.has(nonceKey)) {
|
|
127
|
+
throw new Error("Nonce already used");
|
|
128
|
+
}
|
|
129
|
+
// Add nonce to cache with TTL
|
|
130
|
+
const ttl = this.nonceCache.getDefaultTTL();
|
|
131
|
+
await this.nonceCache.add(nonceKey, ttl);
|
|
132
|
+
// Create session
|
|
133
|
+
const sessionId = await this.generateSessionId();
|
|
134
|
+
const now = this.clock.now();
|
|
135
|
+
const session = {
|
|
136
|
+
sessionId,
|
|
137
|
+
agentDid: identity.did,
|
|
138
|
+
keyId: identity.keyId,
|
|
139
|
+
establishedAt: now,
|
|
140
|
+
lastActivityAt: now,
|
|
141
|
+
nonce: request.nonce,
|
|
142
|
+
clientInfo: request.clientInfo
|
|
143
|
+
};
|
|
144
|
+
this.sessions.set(sessionId, session);
|
|
145
|
+
// Audit handshake
|
|
146
|
+
this.auditLog('handshake_completed', {
|
|
147
|
+
sessionId,
|
|
148
|
+
clientInfo: request.clientInfo
|
|
149
|
+
});
|
|
150
|
+
return {
|
|
151
|
+
sessionId,
|
|
152
|
+
agentDid: identity.did,
|
|
153
|
+
keyId: identity.keyId,
|
|
154
|
+
timestamp: now,
|
|
155
|
+
capabilities: await this.getCapabilities()
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create proof using ProofEngine
|
|
160
|
+
*/
|
|
161
|
+
async createProof(response, session, options) {
|
|
162
|
+
const identity = await this.getIdentity();
|
|
163
|
+
// Use configured proof format
|
|
164
|
+
const proofOptions = {
|
|
165
|
+
format: options?.format || this.config.proof?.defaultFormat || {
|
|
166
|
+
type: 'DetachedJWS',
|
|
167
|
+
algorithm: 'Ed25519'
|
|
168
|
+
},
|
|
169
|
+
canonicalize: options?.canonicalize ?? this.config.proof?.canonicalize ?? true,
|
|
170
|
+
includeMeta: options?.includeMeta ?? true
|
|
171
|
+
};
|
|
172
|
+
// Add session metadata
|
|
173
|
+
const dataWithMeta = {
|
|
174
|
+
...response,
|
|
175
|
+
_meta: {
|
|
176
|
+
agentDid: identity.did,
|
|
177
|
+
keyId: identity.keyId,
|
|
178
|
+
sessionId: session.sessionId,
|
|
179
|
+
timestamp: this.clock.now(),
|
|
180
|
+
nonce: await this.generateNonce()
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
// Create proof using engine
|
|
184
|
+
const proof = await this.proofEngine.createProof(dataWithMeta, identity.privateKey, proofOptions);
|
|
185
|
+
// Audit proof creation
|
|
186
|
+
this.auditLog('proof_created', {
|
|
187
|
+
sessionId: session.sessionId,
|
|
188
|
+
format: proofOptions.format.type
|
|
189
|
+
});
|
|
190
|
+
return proof;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Verify proof with optional credential/delegation verification
|
|
194
|
+
*/
|
|
195
|
+
async verifyProof(data, proof, options) {
|
|
196
|
+
// Extract public key if not provided
|
|
197
|
+
let publicKey = options?.publicKey;
|
|
198
|
+
if (!publicKey && data._meta?.agentDid) {
|
|
199
|
+
// Resolve DID to get public key
|
|
200
|
+
publicKey = await this.didResolver.getPublicKey(data._meta.agentDid, data._meta.keyId);
|
|
201
|
+
}
|
|
202
|
+
if (!publicKey) {
|
|
203
|
+
throw new Error('No public key available for verification');
|
|
204
|
+
}
|
|
205
|
+
// Verify proof using engine
|
|
206
|
+
const proofResult = await this.proofEngine.verifyProof(data, proof, publicKey, {
|
|
207
|
+
format: { type: 'DetachedJWS', algorithm: 'Ed25519' },
|
|
208
|
+
canonicalize: true
|
|
209
|
+
});
|
|
210
|
+
if (!proofResult.valid) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
// Progressive verification if enabled
|
|
214
|
+
if (this.progressiveVerifier && (options?.verifyCredential || options?.checkDelegation)) {
|
|
215
|
+
const verificationResult = await this.progressiveVerifier.verifyProgressive(data, {
|
|
216
|
+
verifyCredential: options.verifyCredential,
|
|
217
|
+
checkRevocation: true,
|
|
218
|
+
maxChainDepth: this.config.security?.maxDelegationDepth || 5
|
|
219
|
+
});
|
|
220
|
+
if (!verificationResult.valid) {
|
|
221
|
+
this.auditLog('verification_failed', {
|
|
222
|
+
errors: verificationResult.errors,
|
|
223
|
+
warnings: verificationResult.warnings
|
|
224
|
+
});
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Audit successful verification
|
|
229
|
+
this.auditLog('proof_verified', {
|
|
230
|
+
did: data._meta?.agentDid
|
|
231
|
+
});
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Process tool call with automatic proof generation
|
|
236
|
+
*/
|
|
237
|
+
async processToolCall(toolName, args, handler, session) {
|
|
238
|
+
// Check session validity
|
|
239
|
+
const sessionAge = this.clock.now() - session.establishedAt;
|
|
240
|
+
const maxAge = (this.config.session?.absoluteSessionLifetime || 86400) * 1000;
|
|
241
|
+
if (sessionAge > maxAge) {
|
|
242
|
+
throw new Error('Session expired');
|
|
243
|
+
}
|
|
244
|
+
// Update session activity
|
|
245
|
+
session.lastActivityAt = this.clock.now();
|
|
246
|
+
// Execute tool
|
|
247
|
+
const startTime = this.clock.now();
|
|
248
|
+
const result = await handler(args);
|
|
249
|
+
const executionTime = this.clock.now() - startTime;
|
|
250
|
+
// Create proof for response
|
|
251
|
+
const proofedResult = await this.createProof(result, session);
|
|
252
|
+
// Audit tool execution
|
|
253
|
+
this.auditLog('tool_executed', {
|
|
254
|
+
tool: toolName,
|
|
255
|
+
sessionId: session.sessionId,
|
|
256
|
+
executionTime,
|
|
257
|
+
hasProof: true
|
|
258
|
+
});
|
|
259
|
+
return proofedResult;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get edge verification data for offline verification
|
|
263
|
+
*/
|
|
264
|
+
async getEdgeVerificationData(id) {
|
|
265
|
+
if (!this.progressiveVerifier) {
|
|
266
|
+
throw new Error('Progressive verifier not configured');
|
|
267
|
+
}
|
|
268
|
+
return this.progressiveVerifier.getEdgeVerificationData(id);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Generate cryptographically secure session ID
|
|
272
|
+
*/
|
|
273
|
+
async generateSessionId() {
|
|
274
|
+
// To be implemented by platform-specific runtime
|
|
275
|
+
throw new Error('generateSessionId must be implemented by platform runtime');
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Generate cryptographically secure nonce
|
|
279
|
+
*/
|
|
280
|
+
async generateNonce() {
|
|
281
|
+
// To be implemented by platform-specific runtime
|
|
282
|
+
throw new Error('generateNonce must be implemented by platform runtime');
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Get runtime capabilities
|
|
286
|
+
*/
|
|
287
|
+
async getCapabilities() {
|
|
288
|
+
const capabilities = ['tools', 'identity', 'proof', 'session'];
|
|
289
|
+
if (this.credentialVerifier) {
|
|
290
|
+
capabilities.push('credential-verification');
|
|
291
|
+
}
|
|
292
|
+
if (this.delegationRegistry) {
|
|
293
|
+
capabilities.push('delegation');
|
|
294
|
+
}
|
|
295
|
+
if (this.progressiveVerifier) {
|
|
296
|
+
capabilities.push('progressive-verification');
|
|
297
|
+
}
|
|
298
|
+
// Add supported proof formats
|
|
299
|
+
const formats = this.proofEngine.getSupportedFormats();
|
|
300
|
+
formats.forEach(f => {
|
|
301
|
+
capabilities.push(`proof:${f.type.toLowerCase()}`);
|
|
302
|
+
});
|
|
303
|
+
return capabilities;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Audit logging
|
|
307
|
+
*/
|
|
308
|
+
auditLog(event, data) {
|
|
309
|
+
if (!this.config.audit?.enabled) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
const record = {
|
|
313
|
+
timestamp: this.clock.now(),
|
|
314
|
+
event,
|
|
315
|
+
data: this.config.audit.includePayloads ? data : undefined,
|
|
316
|
+
did: this.cachedIdentity?.did
|
|
317
|
+
};
|
|
318
|
+
const logLine = JSON.stringify(record);
|
|
319
|
+
if (this.config.audit.logFunction) {
|
|
320
|
+
this.config.audit.logFunction(logLine);
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
console.log('[AUDIT]', logLine);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
exports.MCPIRuntimeBaseV2 = MCPIRuntimeBaseV2;
|
|
328
|
+
//# sourceMappingURL=base-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-v2.js","sourceRoot":"","sources":["../../src/runtime/base-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPIRuntimeBase - Provider-based runtime
|
|
3
|
+
*
|
|
4
|
+
* Core runtime that accepts providers for all platform-specific operations.
|
|
5
|
+
* This enables the same runtime logic to work across Node.js, Cloudflare Workers,
|
|
6
|
+
* and other platforms.
|
|
7
|
+
*/
|
|
8
|
+
import { CryptoProvider, ClockProvider, FetchProvider, StorageProvider, NonceCacheProvider, IdentityProvider, AgentIdentity } from '../providers/base';
|
|
9
|
+
export interface MCPIRuntimeConfig {
|
|
10
|
+
cryptoProvider: CryptoProvider;
|
|
11
|
+
clockProvider: ClockProvider;
|
|
12
|
+
fetchProvider: FetchProvider;
|
|
13
|
+
storageProvider: StorageProvider;
|
|
14
|
+
nonceCacheProvider: NonceCacheProvider;
|
|
15
|
+
identityProvider: IdentityProvider;
|
|
16
|
+
environment?: 'development' | 'production';
|
|
17
|
+
timestampSkewSeconds?: number;
|
|
18
|
+
sessionTtlMinutes?: number;
|
|
19
|
+
audit?: {
|
|
20
|
+
enabled: boolean;
|
|
21
|
+
logFunction?: (record: string) => void;
|
|
22
|
+
includePayloads?: boolean;
|
|
23
|
+
};
|
|
24
|
+
wellKnown?: {
|
|
25
|
+
enabled: boolean;
|
|
26
|
+
serviceName?: string;
|
|
27
|
+
serviceEndpoint?: string;
|
|
28
|
+
};
|
|
29
|
+
showVerifyLink?: boolean;
|
|
30
|
+
identityBadge?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare class MCPIRuntimeBase {
|
|
33
|
+
protected crypto: CryptoProvider;
|
|
34
|
+
protected clock: ClockProvider;
|
|
35
|
+
protected fetch: FetchProvider;
|
|
36
|
+
protected storage: StorageProvider;
|
|
37
|
+
protected nonceCache: NonceCacheProvider;
|
|
38
|
+
protected identity: IdentityProvider;
|
|
39
|
+
protected config: MCPIRuntimeConfig;
|
|
40
|
+
private cachedIdentity?;
|
|
41
|
+
private sessions;
|
|
42
|
+
constructor(config: MCPIRuntimeConfig);
|
|
43
|
+
/**
|
|
44
|
+
* Initialize the runtime
|
|
45
|
+
*/
|
|
46
|
+
initialize(): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Get the current agent identity
|
|
49
|
+
*/
|
|
50
|
+
getIdentity(): Promise<AgentIdentity>;
|
|
51
|
+
/**
|
|
52
|
+
* Handle handshake request
|
|
53
|
+
*/
|
|
54
|
+
handleHandshake(request: any): Promise<any>;
|
|
55
|
+
/**
|
|
56
|
+
* Process tool call with automatic proof generation
|
|
57
|
+
*/
|
|
58
|
+
processToolCall(toolName: string, args: any, handler: (args: any) => Promise<any>, session?: any): Promise<any>;
|
|
59
|
+
/**
|
|
60
|
+
* Create cryptographic proof for data
|
|
61
|
+
*/
|
|
62
|
+
createProof(data: any, session?: any): Promise<any>;
|
|
63
|
+
/**
|
|
64
|
+
* Verify a proof
|
|
65
|
+
*/
|
|
66
|
+
verifyProof(data: any, proof: any): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Get current session
|
|
69
|
+
*/
|
|
70
|
+
getCurrentSession(): Promise<any>;
|
|
71
|
+
/**
|
|
72
|
+
* Create well-known handler for identity verification
|
|
73
|
+
*/
|
|
74
|
+
createWellKnownHandler(config?: any): any;
|
|
75
|
+
/**
|
|
76
|
+
* Create debug endpoint (development only)
|
|
77
|
+
*/
|
|
78
|
+
createDebugEndpoint(): any;
|
|
79
|
+
/**
|
|
80
|
+
* Get audit logger
|
|
81
|
+
*/
|
|
82
|
+
getAuditLogger(): any;
|
|
83
|
+
/**
|
|
84
|
+
* Rotate keys
|
|
85
|
+
*/
|
|
86
|
+
rotateKeys(): Promise<AgentIdentity>;
|
|
87
|
+
private signData;
|
|
88
|
+
private generateNonce;
|
|
89
|
+
private generateSessionId;
|
|
90
|
+
private logAudit;
|
|
91
|
+
private createDIDDocument;
|
|
92
|
+
private extractPublicKey;
|
|
93
|
+
private bytesToBase64;
|
|
94
|
+
private base64ToBytes;
|
|
95
|
+
private bytesToHex;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/runtime/base.ts"],"names":[],"mappings":"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"}
|