@kya-os/mcp-i-core 1.1.0 → 1.1.1-canary.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/dist/__tests__/utils/mock-providers.d.ts +102 -0
- package/dist/__tests__/utils/mock-providers.d.ts.map +1 -0
- package/dist/__tests__/utils/mock-providers.js +270 -0
- package/dist/__tests__/utils/mock-providers.js.map +1 -0
- package/dist/cache/tool-protection-cache.d.ts +73 -0
- package/dist/cache/tool-protection-cache.d.ts.map +1 -0
- package/dist/cache/tool-protection-cache.js +83 -0
- package/dist/cache/tool-protection-cache.js.map +1 -0
- package/dist/compliance/index.d.ts +8 -0
- package/dist/compliance/index.d.ts.map +1 -0
- package/dist/compliance/index.js +24 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/schema-registry.d.ts +50 -0
- package/dist/compliance/schema-registry.d.ts.map +1 -0
- package/dist/compliance/schema-registry.js +438 -0
- package/dist/compliance/schema-registry.js.map +1 -0
- 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/compliance/schema-verifier.d.ts +110 -0
- package/dist/compliance/schema-verifier.d.ts.map +1 -0
- package/dist/compliance/schema-verifier.js +518 -0
- package/dist/compliance/schema-verifier.js.map +1 -0
- package/dist/delegation/bitstring.d.ts +139 -0
- package/dist/delegation/bitstring.d.ts.map +1 -0
- package/dist/delegation/bitstring.js +213 -0
- package/dist/delegation/bitstring.js.map +1 -0
- package/dist/delegation/cascading-revocation.d.ts +162 -0
- package/dist/delegation/cascading-revocation.d.ts.map +1 -0
- package/dist/delegation/cascading-revocation.js +263 -0
- package/dist/delegation/cascading-revocation.js.map +1 -0
- package/dist/delegation/delegation-graph.d.ts +178 -0
- package/dist/delegation/delegation-graph.d.ts.map +1 -0
- package/dist/delegation/delegation-graph.js +209 -0
- package/dist/delegation/delegation-graph.js.map +1 -0
- package/dist/delegation/index.d.ts +14 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +30 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation/statuslist-manager.d.ts +148 -0
- package/dist/delegation/statuslist-manager.d.ts.map +1 -0
- package/dist/delegation/statuslist-manager.js +221 -0
- package/dist/delegation/statuslist-manager.js.map +1 -0
- package/dist/delegation/storage/index.d.ts +9 -0
- package/dist/delegation/storage/index.d.ts.map +1 -0
- package/dist/delegation/storage/index.js +25 -0
- package/dist/delegation/storage/index.js.map +1 -0
- package/dist/delegation/storage/memory-graph-storage.d.ts +70 -0
- package/dist/delegation/storage/memory-graph-storage.d.ts.map +1 -0
- package/dist/delegation/storage/memory-graph-storage.js +149 -0
- package/dist/delegation/storage/memory-graph-storage.js.map +1 -0
- package/dist/delegation/storage/memory-statuslist-storage.d.ts +49 -0
- package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +1 -0
- package/dist/delegation/storage/memory-statuslist-storage.js +67 -0
- package/dist/delegation/storage/memory-statuslist-storage.js.map +1 -0
- package/dist/delegation/utils.d.ts +19 -0
- package/dist/delegation/utils.d.ts.map +1 -0
- package/dist/delegation/utils.js +48 -0
- package/dist/delegation/utils.js.map +1 -0
- package/dist/delegation/vc-issuer.d.ts +135 -0
- package/dist/delegation/vc-issuer.d.ts.map +1 -0
- package/dist/delegation/vc-issuer.js +140 -0
- package/dist/delegation/vc-issuer.js.map +1 -0
- package/dist/delegation/vc-verifier.d.ts +213 -0
- package/dist/delegation/vc-verifier.d.ts.map +1 -0
- package/dist/delegation/vc-verifier.js +354 -0
- package/dist/delegation/vc-verifier.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +64 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/base.d.ts +1 -1
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/memory.js +2 -2
- package/dist/providers/memory.js.map +1 -1
- package/dist/runtime/base.d.ts +12 -0
- package/dist/runtime/base.d.ts.map +1 -1
- package/dist/runtime/base.js +96 -2
- package/dist/runtime/base.js.map +1 -1
- package/dist/services/tool-protection.service.d.ts +55 -0
- package/dist/services/tool-protection.service.d.ts.map +1 -0
- package/dist/services/tool-protection.service.js +158 -0
- package/dist/services/tool-protection.service.js.map +1 -0
- package/dist/types/tool-protection.d.ts +103 -0
- package/dist/types/tool-protection.d.ts.map +1 -0
- package/dist/types/tool-protection.js +41 -0
- package/dist/types/tool-protection.js.map +1 -0
- package/dist/utils/cors.d.ts +44 -0
- package/dist/utils/cors.d.ts.map +1 -0
- package/dist/utils/cors.js +71 -0
- package/dist/utils/cors.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +9 -6
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock Providers for Testing
|
|
3
|
+
*
|
|
4
|
+
* These mock implementations allow controlled testing of the runtime
|
|
5
|
+
* and other components that depend on providers.
|
|
6
|
+
*/
|
|
7
|
+
import { CryptoProvider, ClockProvider, FetchProvider, StorageProvider, NonceCacheProvider, IdentityProvider, AgentIdentity } from '../../providers/base';
|
|
8
|
+
/**
|
|
9
|
+
* Mock Crypto Provider
|
|
10
|
+
*/
|
|
11
|
+
export declare class MockCryptoProvider extends CryptoProvider {
|
|
12
|
+
sign(data: Uint8Array, privateKey: string): Promise<Uint8Array>;
|
|
13
|
+
verify(data: Uint8Array, signature: Uint8Array, publicKey: string): Promise<boolean>;
|
|
14
|
+
generateKeyPair(): Promise<{
|
|
15
|
+
privateKey: string;
|
|
16
|
+
publicKey: string;
|
|
17
|
+
}>;
|
|
18
|
+
hash(data: Uint8Array): Promise<Uint8Array>;
|
|
19
|
+
randomBytes(length: number): Promise<Uint8Array>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Mock Clock Provider
|
|
23
|
+
*/
|
|
24
|
+
export declare class MockClockProvider extends ClockProvider {
|
|
25
|
+
private currentTime;
|
|
26
|
+
setTime(timestamp: number): void;
|
|
27
|
+
now(): number;
|
|
28
|
+
isWithinSkew(timestamp: number, skewSeconds: number): boolean;
|
|
29
|
+
hasExpired(expiresAt: number): boolean;
|
|
30
|
+
calculateExpiry(ttlSeconds: number): number;
|
|
31
|
+
format(timestamp: number): string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Mock Fetch Provider
|
|
35
|
+
*/
|
|
36
|
+
export declare class MockFetchProvider extends FetchProvider {
|
|
37
|
+
private didDocuments;
|
|
38
|
+
private statusLists;
|
|
39
|
+
private delegationChains;
|
|
40
|
+
setDIDDocument(did: string, doc: any): void;
|
|
41
|
+
setStatusList(url: string, list: any): void;
|
|
42
|
+
setDelegationChain(id: string, chain: any[]): void;
|
|
43
|
+
resolveDID(did: string): Promise<any>;
|
|
44
|
+
fetchStatusList(url: string): Promise<any>;
|
|
45
|
+
fetchDelegationChain(id: string): Promise<any[]>;
|
|
46
|
+
fetch(url: string, options?: any): Promise<Response>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Mock Storage Provider
|
|
50
|
+
*/
|
|
51
|
+
export declare class MockStorageProvider extends StorageProvider {
|
|
52
|
+
private store;
|
|
53
|
+
get(key: string): Promise<string | null>;
|
|
54
|
+
set(key: string, value: string): Promise<void>;
|
|
55
|
+
delete(key: string): Promise<void>;
|
|
56
|
+
exists(key: string): Promise<boolean>;
|
|
57
|
+
list(prefix?: string): Promise<string[]>;
|
|
58
|
+
clear(): void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Mock Nonce Cache Provider
|
|
62
|
+
*/
|
|
63
|
+
export declare class MockNonceCacheProvider extends NonceCacheProvider {
|
|
64
|
+
private nonces;
|
|
65
|
+
cleanupCalled: boolean;
|
|
66
|
+
destroyCalled: boolean;
|
|
67
|
+
private clock?;
|
|
68
|
+
setClock(clock: ClockProvider): void;
|
|
69
|
+
has(nonce: string): Promise<boolean>;
|
|
70
|
+
add(nonce: string, expiresAt: number): Promise<void>;
|
|
71
|
+
cleanup(): Promise<void>;
|
|
72
|
+
destroy(): Promise<void>;
|
|
73
|
+
clear(): void;
|
|
74
|
+
size(): number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Mock Identity Provider
|
|
78
|
+
*/
|
|
79
|
+
export declare class MockIdentityProvider extends IdentityProvider {
|
|
80
|
+
private identity?;
|
|
81
|
+
rotateKeysCalled: boolean;
|
|
82
|
+
deleteIdentityCalled: boolean;
|
|
83
|
+
private rotateCount;
|
|
84
|
+
constructor(identity?: AgentIdentity);
|
|
85
|
+
getIdentity(): Promise<AgentIdentity>;
|
|
86
|
+
saveIdentity(identity: AgentIdentity): Promise<void>;
|
|
87
|
+
rotateKeys(): Promise<AgentIdentity>;
|
|
88
|
+
deleteIdentity(): Promise<void>;
|
|
89
|
+
setIdentity(identity: AgentIdentity): void;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create a full set of mock providers for testing
|
|
93
|
+
*/
|
|
94
|
+
export declare function createMockProviders(): {
|
|
95
|
+
cryptoProvider: MockCryptoProvider;
|
|
96
|
+
clockProvider: MockClockProvider;
|
|
97
|
+
fetchProvider: MockFetchProvider;
|
|
98
|
+
storageProvider: MockStorageProvider;
|
|
99
|
+
nonceCacheProvider: MockNonceCacheProvider;
|
|
100
|
+
identityProvider: MockIdentityProvider;
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=mock-providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-providers.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/mock-providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mock Providers for Testing
|
|
4
|
+
*
|
|
5
|
+
* These mock implementations allow controlled testing of the runtime
|
|
6
|
+
* and other components that depend on providers.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MockIdentityProvider = exports.MockNonceCacheProvider = exports.MockStorageProvider = exports.MockFetchProvider = exports.MockClockProvider = exports.MockCryptoProvider = void 0;
|
|
10
|
+
exports.createMockProviders = createMockProviders;
|
|
11
|
+
const base_1 = require("../../providers/base");
|
|
12
|
+
/**
|
|
13
|
+
* Mock Crypto Provider
|
|
14
|
+
*/
|
|
15
|
+
class MockCryptoProvider extends base_1.CryptoProvider {
|
|
16
|
+
async sign(data, privateKey) {
|
|
17
|
+
// Simple mock signature
|
|
18
|
+
return new Uint8Array([1, 2, 3, 4, 5]);
|
|
19
|
+
}
|
|
20
|
+
async verify(data, signature, publicKey) {
|
|
21
|
+
// Simple verification - check signature matches expected pattern
|
|
22
|
+
// In real implementation, this would verify cryptographic signature
|
|
23
|
+
return signature.length === 5 && signature[0] === 1 && signature[1] === 2;
|
|
24
|
+
}
|
|
25
|
+
async generateKeyPair() {
|
|
26
|
+
// Generate unique keys for testing
|
|
27
|
+
const random = Math.random().toString(36).substring(7);
|
|
28
|
+
return {
|
|
29
|
+
privateKey: `mock-private-key-${random}`,
|
|
30
|
+
publicKey: `mock-public-key-${random}`
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async hash(data) {
|
|
34
|
+
// Simple mock hash
|
|
35
|
+
return new Uint8Array([9, 8, 7, 6, 5]);
|
|
36
|
+
}
|
|
37
|
+
async randomBytes(length) {
|
|
38
|
+
const bytes = new Uint8Array(length);
|
|
39
|
+
for (let i = 0; i < length; i++) {
|
|
40
|
+
bytes[i] = Math.floor(Math.random() * 256);
|
|
41
|
+
}
|
|
42
|
+
return bytes;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.MockCryptoProvider = MockCryptoProvider;
|
|
46
|
+
/**
|
|
47
|
+
* Mock Clock Provider
|
|
48
|
+
*/
|
|
49
|
+
class MockClockProvider extends base_1.ClockProvider {
|
|
50
|
+
currentTime = Date.now();
|
|
51
|
+
setTime(timestamp) {
|
|
52
|
+
this.currentTime = timestamp;
|
|
53
|
+
}
|
|
54
|
+
now() {
|
|
55
|
+
return this.currentTime;
|
|
56
|
+
}
|
|
57
|
+
isWithinSkew(timestamp, skewSeconds) {
|
|
58
|
+
const diff = Math.abs(this.currentTime - timestamp);
|
|
59
|
+
return diff <= skewSeconds * 1000;
|
|
60
|
+
}
|
|
61
|
+
hasExpired(expiresAt) {
|
|
62
|
+
return this.currentTime > expiresAt;
|
|
63
|
+
}
|
|
64
|
+
calculateExpiry(ttlSeconds) {
|
|
65
|
+
return this.currentTime + (ttlSeconds * 1000);
|
|
66
|
+
}
|
|
67
|
+
format(timestamp) {
|
|
68
|
+
return new Date(timestamp).toISOString();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.MockClockProvider = MockClockProvider;
|
|
72
|
+
/**
|
|
73
|
+
* Mock Fetch Provider
|
|
74
|
+
*/
|
|
75
|
+
class MockFetchProvider extends base_1.FetchProvider {
|
|
76
|
+
didDocuments = new Map();
|
|
77
|
+
statusLists = new Map();
|
|
78
|
+
delegationChains = new Map();
|
|
79
|
+
// Test helpers
|
|
80
|
+
setDIDDocument(did, doc) {
|
|
81
|
+
this.didDocuments.set(did, doc);
|
|
82
|
+
}
|
|
83
|
+
setStatusList(url, list) {
|
|
84
|
+
this.statusLists.set(url, list);
|
|
85
|
+
}
|
|
86
|
+
setDelegationChain(id, chain) {
|
|
87
|
+
this.delegationChains.set(id, chain);
|
|
88
|
+
}
|
|
89
|
+
async resolveDID(did) {
|
|
90
|
+
const doc = this.didDocuments.get(did);
|
|
91
|
+
if (!doc) {
|
|
92
|
+
throw new Error(`DID ${did} not found`);
|
|
93
|
+
}
|
|
94
|
+
return doc;
|
|
95
|
+
}
|
|
96
|
+
async fetchStatusList(url) {
|
|
97
|
+
const list = this.statusLists.get(url);
|
|
98
|
+
if (!list) {
|
|
99
|
+
throw new Error(`Status list ${url} not found`);
|
|
100
|
+
}
|
|
101
|
+
return list;
|
|
102
|
+
}
|
|
103
|
+
async fetchDelegationChain(id) {
|
|
104
|
+
const chain = this.delegationChains.get(id);
|
|
105
|
+
if (!chain) {
|
|
106
|
+
throw new Error(`Delegation chain ${id} not found`);
|
|
107
|
+
}
|
|
108
|
+
return chain;
|
|
109
|
+
}
|
|
110
|
+
async fetch(url, options) {
|
|
111
|
+
// Simple mock Response
|
|
112
|
+
return new Response(JSON.stringify({ url, options }), {
|
|
113
|
+
status: 200,
|
|
114
|
+
headers: { 'Content-Type': 'application/json' }
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.MockFetchProvider = MockFetchProvider;
|
|
119
|
+
/**
|
|
120
|
+
* Mock Storage Provider
|
|
121
|
+
*/
|
|
122
|
+
class MockStorageProvider extends base_1.StorageProvider {
|
|
123
|
+
store = new Map();
|
|
124
|
+
async get(key) {
|
|
125
|
+
return this.store.get(key) || null;
|
|
126
|
+
}
|
|
127
|
+
async set(key, value) {
|
|
128
|
+
this.store.set(key, value);
|
|
129
|
+
}
|
|
130
|
+
async delete(key) {
|
|
131
|
+
this.store.delete(key);
|
|
132
|
+
}
|
|
133
|
+
async exists(key) {
|
|
134
|
+
return this.store.has(key);
|
|
135
|
+
}
|
|
136
|
+
async list(prefix) {
|
|
137
|
+
const keys = Array.from(this.store.keys());
|
|
138
|
+
if (prefix) {
|
|
139
|
+
return keys.filter(k => k.startsWith(prefix));
|
|
140
|
+
}
|
|
141
|
+
return keys;
|
|
142
|
+
}
|
|
143
|
+
// Test helper
|
|
144
|
+
clear() {
|
|
145
|
+
this.store.clear();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
exports.MockStorageProvider = MockStorageProvider;
|
|
149
|
+
/**
|
|
150
|
+
* Mock Nonce Cache Provider
|
|
151
|
+
*/
|
|
152
|
+
class MockNonceCacheProvider extends base_1.NonceCacheProvider {
|
|
153
|
+
nonces = new Map();
|
|
154
|
+
cleanupCalled = false;
|
|
155
|
+
destroyCalled = false;
|
|
156
|
+
clock;
|
|
157
|
+
setClock(clock) {
|
|
158
|
+
this.clock = clock;
|
|
159
|
+
}
|
|
160
|
+
async has(nonce) {
|
|
161
|
+
const expiry = this.nonces.get(nonce);
|
|
162
|
+
if (!expiry)
|
|
163
|
+
return false;
|
|
164
|
+
const now = this.clock ? this.clock.now() : Date.now();
|
|
165
|
+
if (now > expiry) {
|
|
166
|
+
this.nonces.delete(nonce);
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
async add(nonce, expiresAt) {
|
|
172
|
+
this.nonces.set(nonce, expiresAt);
|
|
173
|
+
}
|
|
174
|
+
async cleanup() {
|
|
175
|
+
this.cleanupCalled = true;
|
|
176
|
+
const now = this.clock ? this.clock.now() : Date.now();
|
|
177
|
+
for (const [nonce, expiry] of this.nonces) {
|
|
178
|
+
if (now > expiry) {
|
|
179
|
+
this.nonces.delete(nonce);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async destroy() {
|
|
184
|
+
this.destroyCalled = true;
|
|
185
|
+
this.nonces.clear();
|
|
186
|
+
}
|
|
187
|
+
// Test helper
|
|
188
|
+
clear() {
|
|
189
|
+
this.nonces.clear();
|
|
190
|
+
}
|
|
191
|
+
size() {
|
|
192
|
+
return this.nonces.size;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.MockNonceCacheProvider = MockNonceCacheProvider;
|
|
196
|
+
/**
|
|
197
|
+
* Mock Identity Provider
|
|
198
|
+
*/
|
|
199
|
+
class MockIdentityProvider extends base_1.IdentityProvider {
|
|
200
|
+
identity;
|
|
201
|
+
rotateKeysCalled = false;
|
|
202
|
+
deleteIdentityCalled = false;
|
|
203
|
+
rotateCount = 0;
|
|
204
|
+
constructor(identity) {
|
|
205
|
+
super();
|
|
206
|
+
this.identity = identity;
|
|
207
|
+
}
|
|
208
|
+
async getIdentity() {
|
|
209
|
+
if (!this.identity) {
|
|
210
|
+
this.identity = {
|
|
211
|
+
did: 'did:key:zmock123',
|
|
212
|
+
kid: 'did:key:zmock123#key-1',
|
|
213
|
+
privateKey: 'mock-private-key',
|
|
214
|
+
publicKey: 'mock-public-key',
|
|
215
|
+
createdAt: new Date().toISOString(),
|
|
216
|
+
type: 'development',
|
|
217
|
+
metadata: { mock: true }
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
return this.identity;
|
|
221
|
+
}
|
|
222
|
+
async saveIdentity(identity) {
|
|
223
|
+
this.identity = identity;
|
|
224
|
+
}
|
|
225
|
+
async rotateKeys() {
|
|
226
|
+
this.rotateKeysCalled = true;
|
|
227
|
+
this.rotateCount++;
|
|
228
|
+
this.identity = {
|
|
229
|
+
did: `did:key:zmock456-${this.rotateCount}`,
|
|
230
|
+
kid: `did:key:zmock456-${this.rotateCount}#key-1`,
|
|
231
|
+
privateKey: `mock-private-key-rotated-${this.rotateCount}`,
|
|
232
|
+
publicKey: `mock-public-key-rotated-${this.rotateCount}`,
|
|
233
|
+
createdAt: new Date().toISOString(),
|
|
234
|
+
type: 'development',
|
|
235
|
+
metadata: { mock: true, rotated: true, rotateCount: this.rotateCount }
|
|
236
|
+
};
|
|
237
|
+
return this.identity;
|
|
238
|
+
}
|
|
239
|
+
async deleteIdentity() {
|
|
240
|
+
this.deleteIdentityCalled = true;
|
|
241
|
+
this.identity = undefined;
|
|
242
|
+
}
|
|
243
|
+
// Test helper
|
|
244
|
+
setIdentity(identity) {
|
|
245
|
+
this.identity = identity;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.MockIdentityProvider = MockIdentityProvider;
|
|
249
|
+
/**
|
|
250
|
+
* Create a full set of mock providers for testing
|
|
251
|
+
*/
|
|
252
|
+
function createMockProviders() {
|
|
253
|
+
const cryptoProvider = new MockCryptoProvider();
|
|
254
|
+
const clockProvider = new MockClockProvider();
|
|
255
|
+
const fetchProvider = new MockFetchProvider();
|
|
256
|
+
const storageProvider = new MockStorageProvider();
|
|
257
|
+
const nonceCacheProvider = new MockNonceCacheProvider();
|
|
258
|
+
const identityProvider = new MockIdentityProvider();
|
|
259
|
+
// Connect nonce cache to clock for consistent time
|
|
260
|
+
nonceCacheProvider.setClock(clockProvider);
|
|
261
|
+
return {
|
|
262
|
+
cryptoProvider,
|
|
263
|
+
clockProvider,
|
|
264
|
+
fetchProvider,
|
|
265
|
+
storageProvider,
|
|
266
|
+
nonceCacheProvider,
|
|
267
|
+
identityProvider
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=mock-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-providers.js","sourceRoot":"","sources":["../../../src/__tests__/utils/mock-providers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiSH,kDAmBC;AAlTD,+CAQ8B;AAE9B;;GAEG;AACH,MAAa,kBAAmB,SAAQ,qBAAc;IACpD,KAAK,CAAC,IAAI,CAAC,IAAgB,EAAE,UAAkB;QAC7C,wBAAwB;QACxB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAgB,EAAE,SAAqB,EAAE,SAAiB;QACrE,iEAAiE;QACjE,oEAAoE;QACpE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,mCAAmC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO;YACL,UAAU,EAAE,oBAAoB,MAAM,EAAE;YACxC,SAAS,EAAE,mBAAmB,MAAM,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,mBAAmB;QACnB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAjCD,gDAiCC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,oBAAa;IAC1C,WAAW,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzC,OAAO,CAAC,SAAiB;QACvB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,SAAiB,EAAE,WAAmB;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;QACpD,OAAO,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,UAAkB;QAChC,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;CACF;AA3BD,8CA2BC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,oBAAa;IAC1C,YAAY,GAAqB,IAAI,GAAG,EAAE,CAAC;IAC3C,WAAW,GAAqB,IAAI,GAAG,EAAE,CAAC;IAC1C,gBAAgB,GAAuB,IAAI,GAAG,EAAE,CAAC;IAEzD,eAAe;IACf,cAAc,CAAC,GAAW,EAAE,GAAQ;QAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,IAAS;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,EAAU,EAAE,KAAY;QACzC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAW;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,EAAU;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,OAAa;QACpC,uBAAuB;QACvB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE;YACpD,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAC;IACL,CAAC;CACF;AAjDD,8CAiDC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,sBAAe;IAC9C,KAAK,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/C,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc;IACd,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AA/BD,kDA+BC;AAED;;GAEG;AACH,MAAa,sBAAuB,SAAQ,yBAAkB;IACpD,MAAM,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzC,aAAa,GAAG,KAAK,CAAC;IACtB,aAAa,GAAG,KAAK,CAAC;IACrB,KAAK,CAAiB;IAE9B,QAAQ,CAAC,KAAoB;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACvD,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,SAAiB;QACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,cAAc;IACd,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAlDD,wDAkDC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,uBAAgB;IAChD,QAAQ,CAAiB;IAC1B,gBAAgB,GAAG,KAAK,CAAC;IACzB,oBAAoB,GAAG,KAAK,CAAC;IAC5B,WAAW,GAAG,CAAC,CAAC;IAExB,YAAY,QAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG;gBACd,GAAG,EAAE,kBAAkB;gBACvB,GAAG,EAAE,wBAAwB;gBAC7B,UAAU,EAAE,kBAAkB;gBAC9B,SAAS,EAAE,iBAAiB;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;aACzB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAuB;QACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG;YACd,GAAG,EAAE,oBAAoB,IAAI,CAAC,WAAW,EAAE;YAC3C,GAAG,EAAE,oBAAoB,IAAI,CAAC,WAAW,QAAQ;YACjD,UAAU,EAAE,4BAA4B,IAAI,CAAC,WAAW,EAAE;YAC1D,SAAS,EAAE,2BAA2B,IAAI,CAAC,WAAW,EAAE;YACxD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;SACvE,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,cAAc;IACd,WAAW,CAAC,QAAuB;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAtDD,oDAsDC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,MAAM,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC9C,MAAM,eAAe,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAClD,MAAM,kBAAkB,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAEpD,mDAAmD;IACnD,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE3C,OAAO;QACL,cAAc;QACd,aAAa;QACb,aAAa;QACb,eAAe;QACf,kBAAkB;QAClB,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-agnostic cache interface for tool protection configurations
|
|
3
|
+
*
|
|
4
|
+
* This interface allows different runtime adapters to provide their own
|
|
5
|
+
* caching implementations (e.g., in-memory for Node.js, KV for CloudFlare)
|
|
6
|
+
*
|
|
7
|
+
* @package @kya-os/mcp-i-core
|
|
8
|
+
*/
|
|
9
|
+
import type { ToolProtectionConfig } from '../types/tool-protection.js';
|
|
10
|
+
/**
|
|
11
|
+
* Cache interface for storing and retrieving tool protection configurations
|
|
12
|
+
*/
|
|
13
|
+
export interface ToolProtectionCache {
|
|
14
|
+
/**
|
|
15
|
+
* Retrieve a cached tool protection configuration
|
|
16
|
+
* @param key Cache key (typically projectId)
|
|
17
|
+
* @returns Cached config or null if not found/expired
|
|
18
|
+
*/
|
|
19
|
+
get(key: string): Promise<ToolProtectionConfig | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Store a tool protection configuration in cache
|
|
22
|
+
* @param key Cache key (typically projectId)
|
|
23
|
+
* @param value Tool protection configuration to cache
|
|
24
|
+
* @param ttl Time-to-live in milliseconds
|
|
25
|
+
*/
|
|
26
|
+
set(key: string, value: ToolProtectionConfig, ttl: number): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Clear all cached entries
|
|
29
|
+
*/
|
|
30
|
+
clear(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Remove a specific cache entry
|
|
33
|
+
* @param key Cache key to remove
|
|
34
|
+
*/
|
|
35
|
+
delete(key: string): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* In-memory cache implementation
|
|
39
|
+
*
|
|
40
|
+
* Suitable for:
|
|
41
|
+
* - Node.js runtimes
|
|
42
|
+
* - Development/testing
|
|
43
|
+
* - Single-instance deployments
|
|
44
|
+
*
|
|
45
|
+
* NOT suitable for:
|
|
46
|
+
* - Multi-instance deployments (cache not shared)
|
|
47
|
+
* - Serverless environments (state not persisted)
|
|
48
|
+
*/
|
|
49
|
+
export declare class InMemoryToolProtectionCache implements ToolProtectionCache {
|
|
50
|
+
private cache;
|
|
51
|
+
get(key: string): Promise<ToolProtectionConfig | null>;
|
|
52
|
+
set(key: string, value: ToolProtectionConfig, ttl: number): Promise<void>;
|
|
53
|
+
clear(): Promise<void>;
|
|
54
|
+
delete(key: string): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Clean up expired entries (call periodically)
|
|
57
|
+
*/
|
|
58
|
+
cleanup(): void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* No-op cache implementation (disables caching)
|
|
62
|
+
*
|
|
63
|
+
* Use when:
|
|
64
|
+
* - You want to disable caching entirely
|
|
65
|
+
* - Testing scenarios that require fresh data
|
|
66
|
+
*/
|
|
67
|
+
export declare class NoOpToolProtectionCache implements ToolProtectionCache {
|
|
68
|
+
get(_key: string): Promise<ToolProtectionConfig | null>;
|
|
69
|
+
set(_key: string, _value: ToolProtectionConfig, _ttl: number): Promise<void>;
|
|
70
|
+
clear(): Promise<void>;
|
|
71
|
+
delete(_key: string): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=tool-protection-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-protection-cache.d.ts","sourceRoot":"","sources":["../../src/cache/tool-protection-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAEvD;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,2BAA4B,YAAW,mBAAmB;IACrE,OAAO,CAAC,KAAK,CAGT;IAEE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAgBtD,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,oBAAoB,EAC3B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC;IAKV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAC3D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAIvD,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC;IAIV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1C"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Platform-agnostic cache interface for tool protection configurations
|
|
4
|
+
*
|
|
5
|
+
* This interface allows different runtime adapters to provide their own
|
|
6
|
+
* caching implementations (e.g., in-memory for Node.js, KV for CloudFlare)
|
|
7
|
+
*
|
|
8
|
+
* @package @kya-os/mcp-i-core
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.NoOpToolProtectionCache = exports.InMemoryToolProtectionCache = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* In-memory cache implementation
|
|
14
|
+
*
|
|
15
|
+
* Suitable for:
|
|
16
|
+
* - Node.js runtimes
|
|
17
|
+
* - Development/testing
|
|
18
|
+
* - Single-instance deployments
|
|
19
|
+
*
|
|
20
|
+
* NOT suitable for:
|
|
21
|
+
* - Multi-instance deployments (cache not shared)
|
|
22
|
+
* - Serverless environments (state not persisted)
|
|
23
|
+
*/
|
|
24
|
+
class InMemoryToolProtectionCache {
|
|
25
|
+
cache = new Map();
|
|
26
|
+
async get(key) {
|
|
27
|
+
const entry = this.cache.get(key);
|
|
28
|
+
if (!entry) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
// Check if expired
|
|
32
|
+
if (Date.now() > entry.expiresAt) {
|
|
33
|
+
this.cache.delete(key);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return entry.value;
|
|
37
|
+
}
|
|
38
|
+
async set(key, value, ttl) {
|
|
39
|
+
const expiresAt = Date.now() + ttl;
|
|
40
|
+
this.cache.set(key, { value, expiresAt });
|
|
41
|
+
}
|
|
42
|
+
async clear() {
|
|
43
|
+
this.cache.clear();
|
|
44
|
+
}
|
|
45
|
+
async delete(key) {
|
|
46
|
+
this.cache.delete(key);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Clean up expired entries (call periodically)
|
|
50
|
+
*/
|
|
51
|
+
cleanup() {
|
|
52
|
+
const now = Date.now();
|
|
53
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
54
|
+
if (now > entry.expiresAt) {
|
|
55
|
+
this.cache.delete(key);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.InMemoryToolProtectionCache = InMemoryToolProtectionCache;
|
|
61
|
+
/**
|
|
62
|
+
* No-op cache implementation (disables caching)
|
|
63
|
+
*
|
|
64
|
+
* Use when:
|
|
65
|
+
* - You want to disable caching entirely
|
|
66
|
+
* - Testing scenarios that require fresh data
|
|
67
|
+
*/
|
|
68
|
+
class NoOpToolProtectionCache {
|
|
69
|
+
async get(_key) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
async set(_key, _value, _ttl) {
|
|
73
|
+
// No-op
|
|
74
|
+
}
|
|
75
|
+
async clear() {
|
|
76
|
+
// No-op
|
|
77
|
+
}
|
|
78
|
+
async delete(_key) {
|
|
79
|
+
// No-op
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.NoOpToolProtectionCache = NoOpToolProtectionCache;
|
|
83
|
+
//# sourceMappingURL=tool-protection-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-protection-cache.js","sourceRoot":"","sources":["../../src/cache/tool-protection-cache.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAmCH;;;;;;;;;;;GAWG;AACH,MAAa,2BAA2B;IAC9B,KAAK,GAAG,IAAI,GAAG,EAGpB,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CACP,GAAW,EACX,KAA2B,EAC3B,GAAW;QAEX,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAlDD,kEAkDC;AAED;;;;;;GAMG;AACH,MAAa,uBAAuB;IAClC,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,MAA4B,EAC5B,IAAY;QAEZ,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,KAAK;QACT,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,QAAQ;IACV,CAAC;CACF;AApBD,0DAoBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compliance/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Schema Compliance Module
|
|
4
|
+
*
|
|
5
|
+
* Automated verification against canonical schemas from schemas.kya-os.ai
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./schema-verifier"), exports);
|
|
23
|
+
__exportStar(require("./schema-registry"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compliance/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,oDAAkC;AAClC,oDAAkC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Registry
|
|
3
|
+
*
|
|
4
|
+
* Canonical list of all schemas from schemas.kya-os.ai
|
|
5
|
+
* Used for automated compliance verification.
|
|
6
|
+
*
|
|
7
|
+
* Auto-generated from https://schemas.kya-os.ai/schema-index.json
|
|
8
|
+
* Last updated: 2025-10-17
|
|
9
|
+
*/
|
|
10
|
+
import type { SchemaMetadata } from './schema-verifier';
|
|
11
|
+
/**
|
|
12
|
+
* Complete registry of schemas from schemas.kya-os.ai
|
|
13
|
+
*
|
|
14
|
+
* As of 2025-10-17, there are 38 schemas covering:
|
|
15
|
+
* - W3C Verifiable Credentials
|
|
16
|
+
* - MCP-I Protocol (Handshake, Proof, Session)
|
|
17
|
+
* - Delegation System
|
|
18
|
+
* - Agent Registry
|
|
19
|
+
* - CLI & Runtime
|
|
20
|
+
* - TLKRC (Tool-Level Key Rotation)
|
|
21
|
+
*/
|
|
22
|
+
export declare const SCHEMA_REGISTRY: SchemaMetadata[];
|
|
23
|
+
/**
|
|
24
|
+
* Get all schemas
|
|
25
|
+
*/
|
|
26
|
+
export declare function getAllSchemas(): SchemaMetadata[];
|
|
27
|
+
/**
|
|
28
|
+
* Get schemas by category
|
|
29
|
+
*/
|
|
30
|
+
export declare function getSchemasByCategory(category: string): SchemaMetadata[];
|
|
31
|
+
/**
|
|
32
|
+
* Get schema by ID
|
|
33
|
+
*/
|
|
34
|
+
export declare function getSchemaById(id: string): SchemaMetadata | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Get critical schemas (must be 100% compliant)
|
|
37
|
+
*
|
|
38
|
+
* These are the core schemas that power the MCP-I protocol and must
|
|
39
|
+
* be fully compliant for the system to function correctly.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getCriticalSchemas(): SchemaMetadata[];
|
|
42
|
+
/**
|
|
43
|
+
* Get schema statistics
|
|
44
|
+
*/
|
|
45
|
+
export declare function getSchemaStats(): {
|
|
46
|
+
total: number;
|
|
47
|
+
byCategory: Record<string, number>;
|
|
48
|
+
byVersion: Record<string, number>;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=schema-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-registry.d.ts","sourceRoot":"","sources":["../../src/compliance/schema-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,cAAc,EA+S3C,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAsDvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAsBrD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAmBA"}
|