@kya-os/mcp-i-core 1.1.4 → 1.1.7
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.
|
@@ -22,7 +22,7 @@ export declare class ToolProtectionService {
|
|
|
22
22
|
* Get tool protection configuration for the agent
|
|
23
23
|
*
|
|
24
24
|
* Flow:
|
|
25
|
-
* 1. Check cache
|
|
25
|
+
* 1. Check cache (project-scoped if projectId available)
|
|
26
26
|
* 2. If cache miss, fetch from API
|
|
27
27
|
* 3. If API fails, use fallback config
|
|
28
28
|
* 4. Cache successful API responses
|
|
@@ -46,9 +46,12 @@ export declare class ToolProtectionService {
|
|
|
46
46
|
*/
|
|
47
47
|
private fetchFromApi;
|
|
48
48
|
/**
|
|
49
|
-
* Clear the cache for a
|
|
49
|
+
* Clear the cache for a project or agent (useful for testing or manual refresh)
|
|
50
50
|
*
|
|
51
|
-
*
|
|
51
|
+
* If projectId is configured, clears project-scoped cache.
|
|
52
|
+
* Otherwise, clears agent-scoped cache.
|
|
53
|
+
*
|
|
54
|
+
* @param agentDid DID of the agent (used for fallback if projectId not available)
|
|
52
55
|
*/
|
|
53
56
|
clearCache(agentDid: string): Promise<void>;
|
|
54
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-protection.service.d.ts","sourceRoot":"","sources":["../../src/services/tool-protection.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAE5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-protection.service.d.ts","sourceRoot":"","sources":["../../src/services/tool-protection.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAE5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AA+C7E;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,KAAK,CAAsB;gBAGjC,MAAM,EAAE,2BAA2B,EACnC,KAAK,EAAE,mBAAmB;IAM5B;;;;;;;;;;OAUG;IACG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmJ9E;;;;;;OAMG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAsB7F;;;;;OAKG;YACW,YAAY;IA2D1B;;;;;;;OAOG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBlD"}
|
|
@@ -26,7 +26,7 @@ class ToolProtectionService {
|
|
|
26
26
|
* Get tool protection configuration for the agent
|
|
27
27
|
*
|
|
28
28
|
* Flow:
|
|
29
|
-
* 1. Check cache
|
|
29
|
+
* 1. Check cache (project-scoped if projectId available)
|
|
30
30
|
* 2. If cache miss, fetch from API
|
|
31
31
|
* 3. If API fails, use fallback config
|
|
32
32
|
* 4. Cache successful API responses
|
|
@@ -34,33 +34,57 @@ class ToolProtectionService {
|
|
|
34
34
|
* @param agentDid DID of the agent to fetch config for
|
|
35
35
|
*/
|
|
36
36
|
async getToolProtectionConfig(agentDid) {
|
|
37
|
-
// Use
|
|
37
|
+
// Use project-scoped cache key if projectId is available (preferred)
|
|
38
|
+
// Falls back to agent-scoped key for backward compatibility
|
|
38
39
|
// The cache implementation (KVToolProtectionCache) will add any necessary prefix
|
|
39
|
-
const cacheKey =
|
|
40
|
+
const cacheKey = this.config.projectId
|
|
41
|
+
? `config:tool-protections:${this.config.projectId}`
|
|
42
|
+
: `agent:${agentDid}`;
|
|
40
43
|
// 1. Check cache
|
|
41
44
|
const cached = await this.cache.get(cacheKey);
|
|
42
45
|
if (cached) {
|
|
43
46
|
if (this.config.debug) {
|
|
44
|
-
console.log('[ToolProtectionService] Cache hit', {
|
|
47
|
+
console.log('[ToolProtectionService] Cache hit', {
|
|
48
|
+
cacheKey,
|
|
49
|
+
agentDid: agentDid.slice(0, 20) + '...',
|
|
50
|
+
projectId: this.config.projectId || 'none',
|
|
51
|
+
toolCount: Object.keys(cached.toolProtections).length,
|
|
52
|
+
});
|
|
45
53
|
}
|
|
46
54
|
return cached;
|
|
47
55
|
}
|
|
48
56
|
if (this.config.debug) {
|
|
49
57
|
console.log('[ToolProtectionService] Cache miss, fetching from API', {
|
|
58
|
+
cacheKey,
|
|
50
59
|
agentDid: agentDid.slice(0, 20) + '...',
|
|
60
|
+
projectId: this.config.projectId || 'none',
|
|
51
61
|
});
|
|
52
62
|
}
|
|
53
63
|
// 2. Fetch from API
|
|
54
64
|
try {
|
|
55
65
|
const response = await this.fetchFromApi(agentDid);
|
|
56
66
|
// Transform API response format to internal format
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
//
|
|
67
|
+
// Supports multiple response formats:
|
|
68
|
+
// 1. New endpoint: { data: { toolProtections: { greet: { requiresDelegation: true, ... } } } }
|
|
69
|
+
// 2. Old endpoint (array): { data: { tools: [{ name: "greet", requiresDelegation: true, ... }] } }
|
|
70
|
+
// 3. Old endpoint (object): { data: { tools: { greet: { requiresDelegation: true, ... } } } }
|
|
60
71
|
const toolProtections = {};
|
|
61
|
-
|
|
62
|
-
|
|
72
|
+
// Check for new endpoint format first (toolProtections)
|
|
73
|
+
if (response.data.toolProtections) {
|
|
74
|
+
// New endpoint format: object with tool names as keys
|
|
75
|
+
for (const [toolName, toolConfig] of Object.entries(response.data.toolProtections)) {
|
|
76
|
+
const requiresDelegation = toolConfig.requires_delegation ?? toolConfig.requiresDelegation ?? false;
|
|
77
|
+
const requiredScopes = toolConfig.required_scopes ?? toolConfig.requiredScopes ?? toolConfig.scopes ?? [];
|
|
78
|
+
toolProtections[toolName] = {
|
|
79
|
+
requiresDelegation,
|
|
80
|
+
requiredScopes,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (response.data.tools) {
|
|
85
|
+
// Old endpoint format: array or object
|
|
63
86
|
if (Array.isArray(response.data.tools)) {
|
|
87
|
+
// Array format: [{ name: "greet", requiresDelegation: true, ... }]
|
|
64
88
|
for (const tool of response.data.tools) {
|
|
65
89
|
const toolName = tool.name;
|
|
66
90
|
if (!toolName) {
|
|
@@ -78,7 +102,7 @@ class ToolProtectionService {
|
|
|
78
102
|
}
|
|
79
103
|
}
|
|
80
104
|
else {
|
|
81
|
-
//
|
|
105
|
+
// Object format: { greet: { requiresDelegation: true, ... } }
|
|
82
106
|
for (const [toolName, toolConfig] of Object.entries(response.data.tools)) {
|
|
83
107
|
const requiresDelegation = toolConfig.requires_delegation ?? toolConfig.requiresDelegation ?? false;
|
|
84
108
|
const requiredScopes = toolConfig.required_scopes ?? toolConfig.scopes ?? [];
|
|
@@ -172,26 +196,43 @@ class ToolProtectionService {
|
|
|
172
196
|
* @param agentDid DID of the agent to fetch config for
|
|
173
197
|
*/
|
|
174
198
|
async fetchFromApi(agentDid) {
|
|
175
|
-
// Prefer
|
|
176
|
-
//
|
|
199
|
+
// Prefer new project-scoped endpoint: /api/v1/bouncer/projects/{projectId}/tool-protections
|
|
200
|
+
// Falls back to old endpoint: /api/v1/bouncer/config?agent_did={did} for backward compatibility
|
|
177
201
|
let url;
|
|
202
|
+
let useNewEndpoint = false;
|
|
178
203
|
if (this.config.projectId) {
|
|
179
|
-
|
|
204
|
+
// ✅ NEW ENDPOINT: Project-scoped, returns toolProtections object
|
|
205
|
+
url = `${this.config.apiUrl}/api/v1/bouncer/projects/${encodeURIComponent(this.config.projectId)}/tool-protections`;
|
|
206
|
+
useNewEndpoint = true;
|
|
180
207
|
}
|
|
181
208
|
else {
|
|
209
|
+
// ⚠️ OLD ENDPOINT: Agent-scoped, returns tools array (backward compatibility)
|
|
182
210
|
url = `${this.config.apiUrl}/api/v1/bouncer/config?agent_did=${encodeURIComponent(agentDid)}`;
|
|
183
211
|
}
|
|
184
212
|
if (this.config.debug) {
|
|
185
213
|
console.log('[ToolProtectionService] Fetching from API:', url, {
|
|
186
|
-
method:
|
|
214
|
+
method: useNewEndpoint ? 'projects/{projectId}/tool-protections (new)' : 'config?agent_did (old)',
|
|
215
|
+
projectId: this.config.projectId || 'none',
|
|
187
216
|
});
|
|
188
217
|
}
|
|
218
|
+
// Build headers - new endpoint uses X-API-Key, old endpoint uses Authorization Bearer
|
|
219
|
+
const headers = {
|
|
220
|
+
'Content-Type': 'application/json',
|
|
221
|
+
};
|
|
222
|
+
if (useNewEndpoint) {
|
|
223
|
+
// ✅ New endpoint headers
|
|
224
|
+
headers['X-API-Key'] = this.config.apiKey;
|
|
225
|
+
if (this.config.projectId) {
|
|
226
|
+
headers['X-Project-Id'] = this.config.projectId;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// ⚠️ Old endpoint headers (backward compatibility)
|
|
231
|
+
headers['Authorization'] = `Bearer ${this.config.apiKey}`;
|
|
232
|
+
}
|
|
189
233
|
const response = await fetch(url, {
|
|
190
234
|
method: 'GET',
|
|
191
|
-
headers
|
|
192
|
-
'Content-Type': 'application/json',
|
|
193
|
-
'Authorization': `Bearer ${this.config.apiKey}`,
|
|
194
|
-
},
|
|
235
|
+
headers,
|
|
195
236
|
});
|
|
196
237
|
if (!response.ok) {
|
|
197
238
|
const errorText = await response.text().catch(() => 'Unknown error');
|
|
@@ -204,13 +245,25 @@ class ToolProtectionService {
|
|
|
204
245
|
return data;
|
|
205
246
|
}
|
|
206
247
|
/**
|
|
207
|
-
* Clear the cache for a
|
|
248
|
+
* Clear the cache for a project or agent (useful for testing or manual refresh)
|
|
208
249
|
*
|
|
209
|
-
*
|
|
250
|
+
* If projectId is configured, clears project-scoped cache.
|
|
251
|
+
* Otherwise, clears agent-scoped cache.
|
|
252
|
+
*
|
|
253
|
+
* @param agentDid DID of the agent (used for fallback if projectId not available)
|
|
210
254
|
*/
|
|
211
255
|
async clearCache(agentDid) {
|
|
212
|
-
// Use
|
|
213
|
-
const cacheKey =
|
|
256
|
+
// Use same cache key strategy as getToolProtectionConfig
|
|
257
|
+
const cacheKey = this.config.projectId
|
|
258
|
+
? `config:tool-protections:${this.config.projectId}`
|
|
259
|
+
: `agent:${agentDid}`;
|
|
260
|
+
if (this.config.debug) {
|
|
261
|
+
console.log('[ToolProtectionService] Clearing cache', {
|
|
262
|
+
cacheKey,
|
|
263
|
+
projectId: this.config.projectId || 'none',
|
|
264
|
+
agentDid: agentDid.slice(0, 20) + '...',
|
|
265
|
+
});
|
|
266
|
+
}
|
|
214
267
|
await this.cache.delete(cacheKey);
|
|
215
268
|
}
|
|
216
269
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-protection.service.js","sourceRoot":"","sources":["../../src/services/tool-protection.service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;
|
|
1
|
+
{"version":3,"file":"tool-protection.service.js","sourceRoot":"","sources":["../../src/services/tool-protection.service.ts"],"names":[],"mappings":"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"}
|