@kya-os/mcp-i-core 1.1.9 → 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/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/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/runtime/base.d.ts +26 -30
- package/dist/runtime/base.d.ts.map +1 -1
- package/dist/runtime/base.js +202 -66
- 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/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/package.json +10 -3
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User DID Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles ephemeral user DID generation for MCP-I sessions.
|
|
5
|
+
* Generates did:key DIDs for users when they join a chat session.
|
|
6
|
+
*
|
|
7
|
+
* This enables tracking which client/user initiated tool calls without
|
|
8
|
+
* requiring user registration or persistent identity.
|
|
9
|
+
*/
|
|
10
|
+
import { CryptoProvider } from '../providers/base';
|
|
11
|
+
/**
|
|
12
|
+
* User DID storage interface
|
|
13
|
+
*/
|
|
14
|
+
export interface UserDidStorage {
|
|
15
|
+
/**
|
|
16
|
+
* Get user DID for a session
|
|
17
|
+
*/
|
|
18
|
+
get(sessionId: string): Promise<string | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Store user DID for a session
|
|
21
|
+
*/
|
|
22
|
+
set(sessionId: string, did: string, ttl?: number): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Delete user DID for a session
|
|
25
|
+
*/
|
|
26
|
+
delete(sessionId: string): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* User DID Manager configuration
|
|
30
|
+
*/
|
|
31
|
+
export interface UserDidManagerConfig {
|
|
32
|
+
/**
|
|
33
|
+
* Storage provider for user DIDs (optional)
|
|
34
|
+
* If not provided, user DIDs are ephemeral (not persisted)
|
|
35
|
+
*/
|
|
36
|
+
storage?: UserDidStorage;
|
|
37
|
+
/**
|
|
38
|
+
* Crypto provider for DID generation
|
|
39
|
+
*/
|
|
40
|
+
crypto: CryptoProvider;
|
|
41
|
+
/**
|
|
42
|
+
* Generate did:web format instead of did:key (requires additional setup)
|
|
43
|
+
*/
|
|
44
|
+
useDidWeb?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Base URL for did:web (required if useDidWeb is true)
|
|
47
|
+
*/
|
|
48
|
+
didWebBaseUrl?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* User DID Manager
|
|
52
|
+
*
|
|
53
|
+
* Generates and manages user DIDs for MCP-I sessions.
|
|
54
|
+
* Supports both ephemeral (did:key) and persistent (did:web) formats.
|
|
55
|
+
*/
|
|
56
|
+
export declare class UserDidManager {
|
|
57
|
+
private config;
|
|
58
|
+
private sessionDidCache;
|
|
59
|
+
constructor(config: UserDidManagerConfig);
|
|
60
|
+
/**
|
|
61
|
+
* Generate or retrieve user DID for a session
|
|
62
|
+
*
|
|
63
|
+
* If a user DID already exists for the session, it is returned.
|
|
64
|
+
* Otherwise, a new ephemeral did:key is generated.
|
|
65
|
+
*
|
|
66
|
+
* @param sessionId - MCP session ID
|
|
67
|
+
* @returns User DID (did:key format)
|
|
68
|
+
*/
|
|
69
|
+
getOrCreateUserDid(sessionId: string): Promise<string>;
|
|
70
|
+
/**
|
|
71
|
+
* Generate a new ephemeral user DID
|
|
72
|
+
*
|
|
73
|
+
* Uses did:key format by default for simplicity.
|
|
74
|
+
* did:web can be used if configured, but requires additional setup.
|
|
75
|
+
*/
|
|
76
|
+
private generateUserDid;
|
|
77
|
+
/**
|
|
78
|
+
* Generate did:key from Ed25519 public key bytes
|
|
79
|
+
* Following spec: https://w3c-ccg.github.io/did-method-key/
|
|
80
|
+
*
|
|
81
|
+
* Format: did:key:z<multibase-base58btc(<multicodec-ed25519-pub><publicKey>)>
|
|
82
|
+
*/
|
|
83
|
+
private generateDidKeyFromPublicKey;
|
|
84
|
+
/**
|
|
85
|
+
* Base58 encode (Bitcoin alphabet)
|
|
86
|
+
* Simple implementation for did:key generation
|
|
87
|
+
*/
|
|
88
|
+
private base58Encode;
|
|
89
|
+
/**
|
|
90
|
+
* Convert base64 string to Uint8Array
|
|
91
|
+
*/
|
|
92
|
+
private base64ToBytes;
|
|
93
|
+
/**
|
|
94
|
+
* Get user DID for a session without creating one
|
|
95
|
+
*/
|
|
96
|
+
getUserDid(sessionId: string): Promise<string | null>;
|
|
97
|
+
/**
|
|
98
|
+
* Clear user DID for a session
|
|
99
|
+
*/
|
|
100
|
+
clearUserDid(sessionId: string): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Clear all cached user DIDs (useful for testing)
|
|
103
|
+
*/
|
|
104
|
+
clearCache(): void;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=user-did-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-did-manager.d.ts","sourceRoot":"","sources":["../../src/identity/user-did-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,eAAe,CAA6B;gBAExC,MAAM,EAAE,oBAAoB;IAIxC;;;;;;;;OAQG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuC5D;;;;;OAKG;YACW,eAAe;IAkB7B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAiBnC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkB3D;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapD;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* User DID Manager
|
|
4
|
+
*
|
|
5
|
+
* Handles ephemeral user DID generation for MCP-I sessions.
|
|
6
|
+
* Generates did:key DIDs for users when they join a chat session.
|
|
7
|
+
*
|
|
8
|
+
* This enables tracking which client/user initiated tool calls without
|
|
9
|
+
* requiring user registration or persistent identity.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UserDidManager = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* User DID Manager
|
|
15
|
+
*
|
|
16
|
+
* Generates and manages user DIDs for MCP-I sessions.
|
|
17
|
+
* Supports both ephemeral (did:key) and persistent (did:web) formats.
|
|
18
|
+
*/
|
|
19
|
+
class UserDidManager {
|
|
20
|
+
config;
|
|
21
|
+
sessionDidCache = new Map();
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.config = config;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generate or retrieve user DID for a session
|
|
27
|
+
*
|
|
28
|
+
* If a user DID already exists for the session, it is returned.
|
|
29
|
+
* Otherwise, a new ephemeral did:key is generated.
|
|
30
|
+
*
|
|
31
|
+
* @param sessionId - MCP session ID
|
|
32
|
+
* @returns User DID (did:key format)
|
|
33
|
+
*/
|
|
34
|
+
async getOrCreateUserDid(sessionId) {
|
|
35
|
+
// Check cache first
|
|
36
|
+
if (this.sessionDidCache.has(sessionId)) {
|
|
37
|
+
return this.sessionDidCache.get(sessionId);
|
|
38
|
+
}
|
|
39
|
+
// Check storage if available
|
|
40
|
+
if (this.config.storage) {
|
|
41
|
+
try {
|
|
42
|
+
const storedDid = await this.config.storage.get(sessionId);
|
|
43
|
+
if (storedDid) {
|
|
44
|
+
this.sessionDidCache.set(sessionId, storedDid);
|
|
45
|
+
return storedDid;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
// Log but continue - will generate new DID
|
|
50
|
+
console.warn('[UserDidManager] Storage.get failed, generating new DID:', error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Generate new user DID
|
|
54
|
+
const userDid = await this.generateUserDid();
|
|
55
|
+
// Cache it
|
|
56
|
+
this.sessionDidCache.set(sessionId, userDid);
|
|
57
|
+
// Store it if storage is available
|
|
58
|
+
if (this.config.storage) {
|
|
59
|
+
try {
|
|
60
|
+
await this.config.storage.set(sessionId, userDid, 1800); // 30 minutes TTL
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
// Log but continue - DID is cached and will be returned
|
|
64
|
+
console.warn('[UserDidManager] Storage.set failed, continuing with cached DID:', error);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return userDid;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Generate a new ephemeral user DID
|
|
71
|
+
*
|
|
72
|
+
* Uses did:key format by default for simplicity.
|
|
73
|
+
* did:web can be used if configured, but requires additional setup.
|
|
74
|
+
*/
|
|
75
|
+
async generateUserDid() {
|
|
76
|
+
if (this.config.useDidWeb && this.config.didWebBaseUrl) {
|
|
77
|
+
// Generate did:web (requires web server setup)
|
|
78
|
+
// For now, fall back to did:key
|
|
79
|
+
// TODO: Implement did:web generation if needed
|
|
80
|
+
console.warn('[UserDidManager] did:web not yet implemented, using did:key');
|
|
81
|
+
}
|
|
82
|
+
// Generate Ed25519 keypair for user DID
|
|
83
|
+
const keyPair = await this.config.crypto.generateKeyPair();
|
|
84
|
+
// Extract public key bytes (32 bytes for Ed25519)
|
|
85
|
+
const publicKeyBytes = this.base64ToBytes(keyPair.publicKey);
|
|
86
|
+
// Generate did:key from public key
|
|
87
|
+
return this.generateDidKeyFromPublicKey(publicKeyBytes);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Generate did:key from Ed25519 public key bytes
|
|
91
|
+
* Following spec: https://w3c-ccg.github.io/did-method-key/
|
|
92
|
+
*
|
|
93
|
+
* Format: did:key:z<multibase-base58btc(<multicodec-ed25519-pub><publicKey>)>
|
|
94
|
+
*/
|
|
95
|
+
generateDidKeyFromPublicKey(publicKeyBytes) {
|
|
96
|
+
// Ed25519 multicodec prefix (0xed 0x01)
|
|
97
|
+
const multicodecPrefix = new Uint8Array([0xed, 0x01]);
|
|
98
|
+
// Combine prefix + public key
|
|
99
|
+
const multicodecKey = new Uint8Array(multicodecPrefix.length + publicKeyBytes.length);
|
|
100
|
+
multicodecKey.set(multicodecPrefix);
|
|
101
|
+
multicodecKey.set(publicKeyBytes, multicodecPrefix.length);
|
|
102
|
+
// Base58 encode (using a simple implementation)
|
|
103
|
+
// Note: For production, consider using base-x library
|
|
104
|
+
const base58Encoded = this.base58Encode(multicodecKey);
|
|
105
|
+
// Add multibase prefix 'z' for base58-btc
|
|
106
|
+
return `did:key:z${base58Encoded}`;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Base58 encode (Bitcoin alphabet)
|
|
110
|
+
* Simple implementation for did:key generation
|
|
111
|
+
*/
|
|
112
|
+
base58Encode(bytes) {
|
|
113
|
+
const alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
114
|
+
let num = BigInt(0);
|
|
115
|
+
// Convert bytes to big integer
|
|
116
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
117
|
+
num = num * BigInt(256) + BigInt(bytes[i]);
|
|
118
|
+
}
|
|
119
|
+
// Convert to base58
|
|
120
|
+
let result = '';
|
|
121
|
+
while (num > 0) {
|
|
122
|
+
result = alphabet[Number(num % BigInt(58))] + result;
|
|
123
|
+
num = num / BigInt(58);
|
|
124
|
+
}
|
|
125
|
+
// Add leading zeros
|
|
126
|
+
for (let i = 0; i < bytes.length && bytes[i] === 0; i++) {
|
|
127
|
+
result = '1' + result;
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Convert base64 string to Uint8Array
|
|
133
|
+
*/
|
|
134
|
+
base64ToBytes(base64) {
|
|
135
|
+
if (typeof Buffer !== 'undefined') {
|
|
136
|
+
// Node.js environment
|
|
137
|
+
return new Uint8Array(Buffer.from(base64, 'base64'));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// Browser/Workers environment
|
|
141
|
+
const binaryString = atob(base64);
|
|
142
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
143
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
144
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
145
|
+
}
|
|
146
|
+
return bytes;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get user DID for a session without creating one
|
|
151
|
+
*/
|
|
152
|
+
async getUserDid(sessionId) {
|
|
153
|
+
// Check cache
|
|
154
|
+
if (this.sessionDidCache.has(sessionId)) {
|
|
155
|
+
return this.sessionDidCache.get(sessionId);
|
|
156
|
+
}
|
|
157
|
+
// Check storage
|
|
158
|
+
if (this.config.storage) {
|
|
159
|
+
const storedDid = await this.config.storage.get(sessionId);
|
|
160
|
+
if (storedDid) {
|
|
161
|
+
this.sessionDidCache.set(sessionId, storedDid);
|
|
162
|
+
return storedDid;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Clear user DID for a session
|
|
169
|
+
*/
|
|
170
|
+
async clearUserDid(sessionId) {
|
|
171
|
+
this.sessionDidCache.delete(sessionId);
|
|
172
|
+
if (this.config.storage) {
|
|
173
|
+
try {
|
|
174
|
+
await this.config.storage.delete(sessionId);
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
// Log but continue - cache is already cleared
|
|
178
|
+
console.warn('[UserDidManager] Storage.delete failed, continuing:', error);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Clear all cached user DIDs (useful for testing)
|
|
184
|
+
*/
|
|
185
|
+
clearCache() {
|
|
186
|
+
this.sessionDidCache.clear();
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.UserDidManager = UserDidManager;
|
|
190
|
+
//# sourceMappingURL=user-did-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-did-manager.js","sourceRoot":"","sources":["../../src/identity/user-did-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export { CryptoProvider, ClockProvider, FetchProvider, StorageProvider, NonceCacheProvider, IdentityProvider, type AgentIdentity } from './providers/base';
|
|
8
8
|
export { MemoryStorageProvider, MemoryNonceCacheProvider, MemoryIdentityProvider } from './providers/memory';
|
|
9
|
-
export { MCPIRuntimeBase
|
|
9
|
+
export { MCPIRuntimeBase } from './runtime/base';
|
|
10
10
|
export * from './utils';
|
|
11
11
|
export { ToolProtectionService } from './services/tool-protection.service';
|
|
12
12
|
export { ToolProtectionCache, InMemoryToolProtectionCache, NoOpToolProtectionCache } from './cache/tool-protection-cache';
|
|
@@ -25,4 +25,5 @@ export { SCHEMA_REGISTRY, getAllSchemas, getSchemasByCategory, getSchemaById, ge
|
|
|
25
25
|
export { canonicalizeJSON } from './delegation/utils';
|
|
26
26
|
import type { HandshakeRequest, SessionContext, NonceCache, NonceCacheEntry, NonceCacheConfig, ProofMeta, DetachedProof, CanonicalHashes, AuditRecord } from '@kya-os/contracts';
|
|
27
27
|
export type { HandshakeRequest, SessionContext, NonceCache, NonceCacheEntry, NonceCacheConfig, ProofMeta, DetachedProof, CanonicalHashes, AuditRecord };
|
|
28
|
+
export * from './config';
|
|
28
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,OAAO,EACL,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,IAAI,0BAA0B,EACpD,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,8BAA8B,EACpC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAChC,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,uBAAuB,EACxB,MAAM,gDAAgD,CAAC;AAExD,OAAO,EACL,4BAA4B,EAC7B,MAAM,2CAA2C,CAAC;AAGnD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACf,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,EACZ,CAAC;AAGF,cAAc,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -86,4 +86,6 @@ Object.defineProperty(exports, "getCriticalSchemas", { enumerable: true, get: fu
|
|
|
86
86
|
Object.defineProperty(exports, "getSchemaStats", { enumerable: true, get: function () { return schema_registry_1.getSchemaStats; } });
|
|
87
87
|
var utils_1 = require("./delegation/utils");
|
|
88
88
|
Object.defineProperty(exports, "canonicalizeJSON", { enumerable: true, get: function () { return utils_1.canonicalizeJSON; } });
|
|
89
|
+
// Configuration types and utilities
|
|
90
|
+
__exportStar(require("./config"), exports);
|
|
89
91
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,iBAAiB;AACjB,yCAQ0B;AAPxB,sGAAA,cAAc,OAAA;AACd,qGAAA,aAAa,OAAA;AACb,qGAAA,aAAa,OAAA;AACb,uGAAA,eAAe,OAAA;AACf,0GAAA,kBAAkB,OAAA;AAClB,wGAAA,gBAAgB,OAAA;AAIlB,mBAAmB;AACnB,6CAI4B;AAH1B,+GAAA,qBAAqB,OAAA;AACrB,kHAAA,wBAAwB,OAAA;AACxB,gHAAA,sBAAsB,OAAA;AAGxB,UAAU;AACV,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,iBAAiB;AACjB,yCAQ0B;AAPxB,sGAAA,cAAc,OAAA;AACd,qGAAA,aAAa,OAAA;AACb,qGAAA,aAAa,OAAA;AACb,uGAAA,eAAe,OAAA;AACf,0GAAA,kBAAkB,OAAA;AAClB,wGAAA,gBAAgB,OAAA;AAIlB,mBAAmB;AACnB,6CAI4B;AAH1B,+GAAA,qBAAqB,OAAA;AACrB,kHAAA,wBAAwB,OAAA;AACxB,gHAAA,sBAAsB,OAAA;AAGxB,UAAU;AACV,uCAEwB;AADtB,uGAAA,eAAe,OAAA;AAGjB,YAAY;AACZ,0CAAwB;AACxB,kBAAkB;AAClB,8EAE4C;AAD1C,gIAAA,qBAAqB,OAAA;AAGvB,uEAIuC;AAFrC,oIAAA,2BAA2B,OAAA;AAC3B,gIAAA,uBAAuB,OAAA;AASzB,2DAEiC;AAD/B,0HAAA,uBAAuB,OAAA;AAGzB,4BAA4B;AAC5B,oDAMgC;AAL9B,uHAAA,0BAA0B,OAAA;AAC1B,mHAAA,sBAAsB,OAAA;AAMxB,wDAUkC;AAThC,2HAAA,4BAA4B,OAAA;AAC5B,uHAAA,wBAAwB,OAAA;AAU1B,iBAAiB;AACjB,sEAKyC;AAJvC,2HAAA,qBAAqB,OAAA;AACrB,6HAAA,uBAAuB,OAAA;AAKzB,oDAKgC;AAJ9B,6GAAA,gBAAgB,OAAA;AAChB,uGAAA,UAAU,OAAA;AAKZ,0CAA0C;AAC1C,kEAKuC;AAJrC,0HAAA,sBAAsB,OAAA;AACtB,yHAAA,qBAAqB,OAAA;AAKvB,0EAM2C;AALzC,kIAAA,0BAA0B,OAAA;AAC1B,wIAAA,gCAAgC,OAAA;AAMlC,qDAAqD;AACrD,4FAEwD;AADtD,oIAAA,uBAAuB,OAAA;AAGzB,kFAEmD;AADjD,oIAAA,4BAA4B,OAAA;AAG9B,8DAA8D;AAC9D,gEAOsC;AANpC,iHAAA,cAAc,OAAA;AACd,uHAAA,oBAAoB,OAAA;AAOtB,gEAOsC;AANpC,kHAAA,eAAe,OAAA;AACf,gHAAA,aAAa,OAAA;AACb,uHAAA,oBAAoB,OAAA;AACpB,gHAAA,aAAa,OAAA;AACb,qHAAA,kBAAkB,OAAA;AAClB,iHAAA,cAAc,OAAA;AAGhB,4CAAsD;AAA7C,yGAAA,gBAAgB,OAAA;AA4BzB,oCAAoC;AACpC,2CAAyB"}
|
package/dist/runtime/base.d.ts
CHANGED
|
@@ -5,32 +5,9 @@
|
|
|
5
5
|
* This enables the same runtime logic to work across Node.js, Cloudflare Workers,
|
|
6
6
|
* and other platforms.
|
|
7
7
|
*/
|
|
8
|
-
import { CryptoProvider, ClockProvider, FetchProvider, StorageProvider, NonceCacheProvider, IdentityProvider, AgentIdentity } from
|
|
9
|
-
import type {
|
|
10
|
-
|
|
11
|
-
cryptoProvider: CryptoProvider;
|
|
12
|
-
clockProvider: ClockProvider;
|
|
13
|
-
fetchProvider: FetchProvider;
|
|
14
|
-
storageProvider: StorageProvider;
|
|
15
|
-
nonceCacheProvider: NonceCacheProvider;
|
|
16
|
-
identityProvider: IdentityProvider;
|
|
17
|
-
environment?: 'development' | 'production';
|
|
18
|
-
timestampSkewSeconds?: number;
|
|
19
|
-
sessionTtlMinutes?: number;
|
|
20
|
-
audit?: {
|
|
21
|
-
enabled: boolean;
|
|
22
|
-
logFunction?: (record: string) => void;
|
|
23
|
-
includePayloads?: boolean;
|
|
24
|
-
};
|
|
25
|
-
wellKnown?: {
|
|
26
|
-
enabled: boolean;
|
|
27
|
-
serviceName?: string;
|
|
28
|
-
serviceEndpoint?: string;
|
|
29
|
-
};
|
|
30
|
-
showVerifyLink?: boolean;
|
|
31
|
-
identityBadge?: boolean;
|
|
32
|
-
toolProtectionService?: ToolProtectionService;
|
|
33
|
-
}
|
|
8
|
+
import { CryptoProvider, ClockProvider, FetchProvider, StorageProvider, NonceCacheProvider, IdentityProvider, AgentIdentity } from "../providers/base";
|
|
9
|
+
import type { MCPIdentity, WellKnownConfig, WellKnownResponse } from "@kya-os/contracts/well-known";
|
|
10
|
+
import type { ProviderRuntimeConfig } from "../config";
|
|
34
11
|
export declare class MCPIRuntimeBase {
|
|
35
12
|
protected crypto: CryptoProvider;
|
|
36
13
|
protected clock: ClockProvider;
|
|
@@ -38,11 +15,13 @@ export declare class MCPIRuntimeBase {
|
|
|
38
15
|
protected storage: StorageProvider;
|
|
39
16
|
protected nonceCache: NonceCacheProvider;
|
|
40
17
|
protected identity: IdentityProvider;
|
|
41
|
-
protected config:
|
|
18
|
+
protected config: ProviderRuntimeConfig;
|
|
42
19
|
private cachedIdentity?;
|
|
43
20
|
private sessions;
|
|
44
21
|
private lastProof?;
|
|
45
|
-
|
|
22
|
+
private userDidManager?;
|
|
23
|
+
private interceptedCalls;
|
|
24
|
+
constructor(config: ProviderRuntimeConfig);
|
|
46
25
|
/**
|
|
47
26
|
* Initialize the runtime
|
|
48
27
|
*/
|
|
@@ -65,11 +44,28 @@ export declare class MCPIRuntimeBase {
|
|
|
65
44
|
* @param session - Session context (expected fields: id, audience, nonce?, delegationToken?, consentProof?)
|
|
66
45
|
*/
|
|
67
46
|
processToolCall(toolName: string, args: any, handler: (args: any) => Promise<any>, session?: any): Promise<any>;
|
|
47
|
+
/**
|
|
48
|
+
* Resume a tool call after authorization
|
|
49
|
+
*
|
|
50
|
+
* @param resumeToken - Token from DelegationRequiredError
|
|
51
|
+
* @param handler - Tool execution handler
|
|
52
|
+
* @param delegationToken - Delegation token from authorization
|
|
53
|
+
* @returns Tool execution result
|
|
54
|
+
*/
|
|
55
|
+
resumeToolCall(resumeToken: string, handler: (args: any) => Promise<any>, delegationToken?: string): Promise<any>;
|
|
56
|
+
/**
|
|
57
|
+
* Generate a resume token for intercepted tool call
|
|
58
|
+
*/
|
|
59
|
+
private generateResumeToken;
|
|
60
|
+
/**
|
|
61
|
+
* Clean up expired intercepted calls
|
|
62
|
+
*/
|
|
63
|
+
private cleanupExpiredInterceptedCalls;
|
|
68
64
|
/**
|
|
69
65
|
* Build consent URL for delegation flow
|
|
70
66
|
* Override this method in subclasses to customize the consent URL
|
|
71
67
|
*/
|
|
72
|
-
protected buildConsentUrl(toolName: string, scopes: string[], session?: any): string;
|
|
68
|
+
protected buildConsentUrl(toolName: string, scopes: string[], session?: any, resumeToken?: string): string;
|
|
73
69
|
/**
|
|
74
70
|
* Issue a new nonce and register it in the cache
|
|
75
71
|
* Use this to get a nonce for the session context before calling processToolCall
|
|
@@ -94,7 +90,7 @@ export declare class MCPIRuntimeBase {
|
|
|
94
90
|
/**
|
|
95
91
|
* Create well-known handler for identity verification
|
|
96
92
|
*/
|
|
97
|
-
createWellKnownHandler(config?:
|
|
93
|
+
createWellKnownHandler(config?: WellKnownConfig): (path: string) => Promise<WellKnownResponse | MCPIdentity | null>;
|
|
98
94
|
/**
|
|
99
95
|
* Create debug endpoint (development only)
|
|
100
96
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/runtime/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACd,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/runtime/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAGV,WAAW,EACX,eAAe,EACf,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAIvD,qBAAa,eAAe;IAC1B,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;IACnC,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACzC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACxC,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,SAAS,CAAC,CAAM;IACxB,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,gBAAgB,CAA+B;gBAE3C,MAAM,EAAE,qBAAqB;IAUzC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;IAO3C;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAoDjD;;;;;;;;OAQG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EACpC,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,GAAG,CAAC;IA6Hf;;;;;;;OAOG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EACpC,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,GAAG,CAAC;IAuCf;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAStC;;;OAGG;IACH,SAAS,CAAC,eAAe,CACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,CAAC,EAAE,GAAG,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM;IAmBT;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASpD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAuCzD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC1D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC;IAUvC;;OAEG;IACH,YAAY,IAAI,GAAG;IAInB;;OAEG;IACH,sBAAsB,CACpB,MAAM,CAAC,EAAE,eAAe,GACvB,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,GAAG,WAAW,GAAG,IAAI,CAAC;IA+DpE;;OAEG;IACH,mBAAmB,IAAI,GAAG;IAyB1B;;OAEG;IACH,cAAc,IAAI,GAAG;IAMrB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;YAkB5B,QAAQ;YAOR,aAAa;YAKb,iBAAiB;IAK/B,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,UAAU;CAGnB"}
|