@kya-os/mcp-i-core 1.2.3-canary.3 → 1.2.3-canary.5
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.
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @package @kya-os/mcp-i-core
|
|
11
11
|
*/
|
|
12
|
-
import type { ToolProtection, ToolProtectionConfig, ToolProtectionServiceConfig } from
|
|
13
|
-
import type { ToolProtectionCache } from
|
|
12
|
+
import type { ToolProtection, ToolProtectionConfig, ToolProtectionServiceConfig } from "../types/tool-protection.js";
|
|
13
|
+
import type { ToolProtectionCache } from "../cache/tool-protection-cache.js";
|
|
14
14
|
/**
|
|
15
15
|
* Service for fetching and checking tool protection configurations
|
|
16
16
|
*/
|
|
@@ -58,6 +58,7 @@ export declare class ToolProtectionService {
|
|
|
58
58
|
* Uses projectId endpoint if available (preferred, project-scoped), otherwise falls back to agent_did query param
|
|
59
59
|
*
|
|
60
60
|
* @param agentDid DID of the agent to fetch config for
|
|
61
|
+
* @param bypassCache If true, adds Cache-Control header to bypass AgentShield's cache
|
|
61
62
|
*/
|
|
62
63
|
private fetchFromApi;
|
|
63
64
|
/**
|
|
@@ -69,5 +70,15 @@ export declare class ToolProtectionService {
|
|
|
69
70
|
* @param agentDid DID of the agent (used for fallback if projectId not available)
|
|
70
71
|
*/
|
|
71
72
|
clearCache(agentDid: string): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Refresh cache immediately from API, bypassing both local and AgentShield cache
|
|
75
|
+
*
|
|
76
|
+
* This method clears the local cache and fetches fresh config from the API
|
|
77
|
+
* with Cache-Control headers to bypass AgentShield's 5-minute cache.
|
|
78
|
+
*
|
|
79
|
+
* @param agentDid DID of the agent to refresh config for
|
|
80
|
+
* @returns Fresh tool protection config
|
|
81
|
+
*/
|
|
82
|
+
refreshCache(agentDid: string): Promise<ToolProtectionConfig>;
|
|
72
83
|
}
|
|
73
84
|
//# sourceMappingURL=tool-protection.service.d.ts.map
|
|
@@ -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;AAwD7E;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,KAAK,CAAsB;gBAEvB,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,mBAAmB;IAK3E;;;OAGG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;;;;;;;OAQG;YACW,aAAa;IA4C3B;;;;;;;;;;OAUG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAgRhC;;;;;;OAMG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA8BjC;;;;;;OAMG;YACW,YAAY;IA+H1B;;;;;;;OAOG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD;;;;;;;;OAQG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAuGpE"}
|
|
@@ -61,9 +61,9 @@ class ToolProtectionService {
|
|
|
61
61
|
const now = Date.now();
|
|
62
62
|
const maxStaleAge = this.config.maxStaleCacheAge ?? 86400000; // Default 24 hours
|
|
63
63
|
// Check if expired but within maxStaleCacheAge
|
|
64
|
-
if (now > expiresAt &&
|
|
64
|
+
if (now > expiresAt && now - expiresAt <= maxStaleAge) {
|
|
65
65
|
if (this.config.debug) {
|
|
66
|
-
console.log(
|
|
66
|
+
console.log("[ToolProtectionService] Using stale cache", {
|
|
67
67
|
cacheKey,
|
|
68
68
|
expiredAt: new Date(expiresAt).toISOString(),
|
|
69
69
|
staleAgeMs: now - expiresAt,
|
|
@@ -96,25 +96,25 @@ class ToolProtectionService {
|
|
|
96
96
|
const cached = await this.cache.get(cacheKey);
|
|
97
97
|
if (cached) {
|
|
98
98
|
if (this.config.debug) {
|
|
99
|
-
console.log(
|
|
99
|
+
console.log("[ToolProtectionService] Cache hit", {
|
|
100
100
|
cacheKey,
|
|
101
|
-
agentDid: agentDid.slice(0, 20) +
|
|
102
|
-
projectId: this.config.projectId ||
|
|
101
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
102
|
+
projectId: this.config.projectId || "none",
|
|
103
103
|
toolCount: Object.keys(cached.toolProtections).length,
|
|
104
104
|
});
|
|
105
105
|
}
|
|
106
106
|
return cached;
|
|
107
107
|
}
|
|
108
108
|
if (this.config.debug) {
|
|
109
|
-
console.log(
|
|
109
|
+
console.log("[ToolProtectionService] Cache miss, fetching from API", {
|
|
110
110
|
cacheKey,
|
|
111
|
-
agentDid: agentDid.slice(0, 20) +
|
|
112
|
-
projectId: this.config.projectId ||
|
|
111
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
112
|
+
projectId: this.config.projectId || "none",
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
|
-
// 3. Fetch from API
|
|
115
|
+
// 3. Fetch from API (bypass cache if stale cache was used)
|
|
116
116
|
try {
|
|
117
|
-
const response = await this.fetchFromApi(agentDid);
|
|
117
|
+
const response = await this.fetchFromApi(agentDid, false);
|
|
118
118
|
// Transform API response format to internal format
|
|
119
119
|
// Supports multiple response formats:
|
|
120
120
|
// 1. New endpoint: { data: { toolProtections: { greet: { requiresDelegation: true, ... } } } }
|
|
@@ -126,8 +126,13 @@ class ToolProtectionService {
|
|
|
126
126
|
// New endpoint format: object with tool names as keys
|
|
127
127
|
// Prefer camelCase over snake_case when both present
|
|
128
128
|
for (const [toolName, toolConfig] of Object.entries(response.data.toolProtections)) {
|
|
129
|
-
const requiresDelegation = toolConfig.requiresDelegation ??
|
|
130
|
-
|
|
129
|
+
const requiresDelegation = toolConfig.requiresDelegation ??
|
|
130
|
+
toolConfig.requires_delegation ??
|
|
131
|
+
false;
|
|
132
|
+
const requiredScopes = toolConfig.requiredScopes ??
|
|
133
|
+
toolConfig.required_scopes ??
|
|
134
|
+
toolConfig.scopes ??
|
|
135
|
+
[];
|
|
131
136
|
toolProtections[toolName] = {
|
|
132
137
|
requiresDelegation,
|
|
133
138
|
requiredScopes,
|
|
@@ -142,13 +147,18 @@ class ToolProtectionService {
|
|
|
142
147
|
const toolName = tool.name;
|
|
143
148
|
if (!toolName) {
|
|
144
149
|
if (this.config.debug) {
|
|
145
|
-
console.warn(
|
|
150
|
+
console.warn("[ToolProtectionService] Tool missing name in array format", tool);
|
|
146
151
|
}
|
|
147
152
|
continue;
|
|
148
153
|
}
|
|
149
154
|
// Prefer camelCase over snake_case when both present
|
|
150
|
-
const requiresDelegation = tool.requiresDelegation ??
|
|
151
|
-
|
|
155
|
+
const requiresDelegation = tool.requiresDelegation ??
|
|
156
|
+
tool.requires_delegation ??
|
|
157
|
+
false;
|
|
158
|
+
const requiredScopes = tool.requiredScopes ??
|
|
159
|
+
tool.required_scopes ??
|
|
160
|
+
tool.scopes ??
|
|
161
|
+
[];
|
|
152
162
|
toolProtections[toolName] = {
|
|
153
163
|
requiresDelegation,
|
|
154
164
|
requiredScopes,
|
|
@@ -159,8 +169,13 @@ class ToolProtectionService {
|
|
|
159
169
|
// Object format: { greet: { requiresDelegation: true, ... } }
|
|
160
170
|
for (const [toolName, toolConfig] of Object.entries(response.data.tools)) {
|
|
161
171
|
// Prefer camelCase over snake_case when both present
|
|
162
|
-
const requiresDelegation = toolConfig.requiresDelegation ??
|
|
163
|
-
|
|
172
|
+
const requiresDelegation = toolConfig.requiresDelegation ??
|
|
173
|
+
toolConfig.requires_delegation ??
|
|
174
|
+
false;
|
|
175
|
+
const requiredScopes = toolConfig.requiredScopes ??
|
|
176
|
+
toolConfig.required_scopes ??
|
|
177
|
+
toolConfig.scopes ??
|
|
178
|
+
[];
|
|
164
179
|
toolProtections[toolName] = {
|
|
165
180
|
requiresDelegation,
|
|
166
181
|
requiredScopes,
|
|
@@ -173,12 +188,12 @@ class ToolProtectionService {
|
|
|
173
188
|
const ttl = this.config.cacheTtl ?? 300000; // Default 5 minutes
|
|
174
189
|
await this.cache.set(cacheKey, config, ttl);
|
|
175
190
|
// Always log tool count and protection status (critical for debugging)
|
|
176
|
-
console.log(
|
|
191
|
+
console.log("[ToolProtectionService] Config loaded", {
|
|
177
192
|
toolCount: Object.keys(toolProtections).length,
|
|
178
193
|
protectedTools: Object.entries(toolProtections)
|
|
179
194
|
.filter(([_, config]) => config.requiresDelegation)
|
|
180
195
|
.map(([name]) => name),
|
|
181
|
-
agentDid: agentDid.slice(0, 20) +
|
|
196
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
182
197
|
toolDetails: Object.entries(toolProtections).map(([name, config]) => ({
|
|
183
198
|
name,
|
|
184
199
|
requiresDelegation: config.requiresDelegation,
|
|
@@ -186,13 +201,13 @@ class ToolProtectionService {
|
|
|
186
201
|
})),
|
|
187
202
|
});
|
|
188
203
|
if (this.config.debug) {
|
|
189
|
-
console.log(
|
|
190
|
-
agentDid: agentDid.slice(0, 20) +
|
|
204
|
+
console.log("[ToolProtectionService] API fetch successful, cached", {
|
|
205
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
191
206
|
cacheKey,
|
|
192
207
|
toolCount: Object.keys(toolProtections).length,
|
|
193
208
|
tools: Object.entries(toolProtections).map(([name, config]) => ({
|
|
194
209
|
name,
|
|
195
|
-
requiresDelegation: config.requiresDelegation
|
|
210
|
+
requiresDelegation: config.requiresDelegation,
|
|
196
211
|
})),
|
|
197
212
|
ttl,
|
|
198
213
|
});
|
|
@@ -202,12 +217,12 @@ class ToolProtectionService {
|
|
|
202
217
|
catch (error) {
|
|
203
218
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
204
219
|
// Re-throw API key validation errors (don't fallback)
|
|
205
|
-
if (errorMessage.includes(
|
|
220
|
+
if (errorMessage.includes("API key is missing or empty")) {
|
|
206
221
|
throw error;
|
|
207
222
|
}
|
|
208
223
|
// Re-throw HTTP errors (4xx, 5xx) - these indicate API issues, not network failures
|
|
209
224
|
// Exception: 429 (rate limit) should fallback if fallback config is available
|
|
210
|
-
if (errorMessage.includes(
|
|
225
|
+
if (errorMessage.includes("Failed to fetch bouncer config:")) {
|
|
211
226
|
const status = error.status;
|
|
212
227
|
// Allow 429 to fallback (rate limiting is temporary, fallback is acceptable)
|
|
213
228
|
if (status === 429 && this.config.fallbackConfig) {
|
|
@@ -218,24 +233,24 @@ class ToolProtectionService {
|
|
|
218
233
|
}
|
|
219
234
|
}
|
|
220
235
|
// Re-throw JSON parsing errors
|
|
221
|
-
if (errorMessage.includes(
|
|
236
|
+
if (errorMessage.includes("Failed to parse API response:")) {
|
|
222
237
|
throw error;
|
|
223
238
|
}
|
|
224
239
|
// Re-throw API success: false errors
|
|
225
|
-
if (errorMessage.includes(
|
|
240
|
+
if (errorMessage.includes("API returned success: false")) {
|
|
226
241
|
throw error;
|
|
227
242
|
}
|
|
228
243
|
if (this.config.debug) {
|
|
229
|
-
console.error(
|
|
230
|
-
agentDid: agentDid.slice(0, 20) +
|
|
244
|
+
console.error("[ToolProtectionService] API fetch failed", {
|
|
245
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
231
246
|
error: errorMessage,
|
|
232
247
|
});
|
|
233
248
|
}
|
|
234
249
|
// 4. Fallback to stale cache if available (before fallback config)
|
|
235
250
|
const staleCache = await this.getStaleCache(cacheKey);
|
|
236
251
|
if (staleCache) {
|
|
237
|
-
console.warn(
|
|
238
|
-
agentDid: agentDid.slice(0, 20) +
|
|
252
|
+
console.warn("[ToolProtectionService] API fetch failed, using stale cache", {
|
|
253
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
239
254
|
error: errorMessage,
|
|
240
255
|
cacheKey,
|
|
241
256
|
});
|
|
@@ -244,8 +259,8 @@ class ToolProtectionService {
|
|
|
244
259
|
// 5. Fallback to local config (only for network errors, not API errors)
|
|
245
260
|
if (this.config.fallbackConfig) {
|
|
246
261
|
// Always warn when using fallback (not just debug mode)
|
|
247
|
-
console.warn(
|
|
248
|
-
agentDid: agentDid.slice(0, 20) +
|
|
262
|
+
console.warn("[ToolProtectionService] API fetch failed, using fallback config", {
|
|
263
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
249
264
|
error: errorMessage,
|
|
250
265
|
});
|
|
251
266
|
// Cache the fallback config to avoid repeated API calls
|
|
@@ -254,17 +269,17 @@ class ToolProtectionService {
|
|
|
254
269
|
return this.config.fallbackConfig;
|
|
255
270
|
}
|
|
256
271
|
// 6. Fail-safe behavior: deny-all by default (secure)
|
|
257
|
-
const failSafeBehavior = this.config.failSafeBehavior ??
|
|
258
|
-
if (failSafeBehavior ===
|
|
259
|
-
console.error(
|
|
260
|
-
agentDid: agentDid.slice(0, 20) +
|
|
272
|
+
const failSafeBehavior = this.config.failSafeBehavior ?? "deny-all";
|
|
273
|
+
if (failSafeBehavior === "deny-all") {
|
|
274
|
+
console.error("[ToolProtectionService] API fetch failed, no fallback, failing closed (deny-all)", {
|
|
275
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
261
276
|
error: errorMessage,
|
|
262
277
|
cacheKey,
|
|
263
278
|
});
|
|
264
279
|
// Create deny-all config (wildcard requires delegation for all tools)
|
|
265
280
|
const denyAllConfig = {
|
|
266
281
|
toolProtections: {
|
|
267
|
-
|
|
282
|
+
"*": {
|
|
268
283
|
requiresDelegation: true,
|
|
269
284
|
requiredScopes: [],
|
|
270
285
|
},
|
|
@@ -277,8 +292,8 @@ class ToolProtectionService {
|
|
|
277
292
|
}
|
|
278
293
|
else {
|
|
279
294
|
// failSafeBehavior === 'allow-all' (insecure, not recommended)
|
|
280
|
-
console.warn(
|
|
281
|
-
agentDid: agentDid.slice(0, 20) +
|
|
295
|
+
console.warn("[ToolProtectionService] API fetch failed, no fallback, failing open (allow-all)", {
|
|
296
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
282
297
|
error: errorMessage,
|
|
283
298
|
cacheKey,
|
|
284
299
|
});
|
|
@@ -302,16 +317,16 @@ class ToolProtectionService {
|
|
|
302
317
|
// Check for specific tool protection first
|
|
303
318
|
let protection = config.toolProtections[toolName];
|
|
304
319
|
// If not found, check for wildcard protection (fail-safe deny-all)
|
|
305
|
-
if (!protection && config.toolProtections[
|
|
306
|
-
protection = config.toolProtections[
|
|
320
|
+
if (!protection && config.toolProtections["*"]) {
|
|
321
|
+
protection = config.toolProtections["*"];
|
|
307
322
|
}
|
|
308
323
|
// Always log the check result (critical for debugging)
|
|
309
324
|
if (this.config.debug || !protection || protection.requiresDelegation) {
|
|
310
|
-
console.log(
|
|
325
|
+
console.log("[ToolProtectionService] Protection check", {
|
|
311
326
|
tool: toolName,
|
|
312
|
-
agentDid: agentDid.slice(0, 20) +
|
|
327
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
313
328
|
found: !!protection,
|
|
314
|
-
isWildcard: protection === config.toolProtections[
|
|
329
|
+
isWildcard: protection === config.toolProtections["*"],
|
|
315
330
|
requiresDelegation: protection?.requiresDelegation ?? false,
|
|
316
331
|
availableTools: Object.keys(config.toolProtections),
|
|
317
332
|
});
|
|
@@ -326,8 +341,9 @@ class ToolProtectionService {
|
|
|
326
341
|
* Uses projectId endpoint if available (preferred, project-scoped), otherwise falls back to agent_did query param
|
|
327
342
|
*
|
|
328
343
|
* @param agentDid DID of the agent to fetch config for
|
|
344
|
+
* @param bypassCache If true, adds Cache-Control header to bypass AgentShield's cache
|
|
329
345
|
*/
|
|
330
|
-
async fetchFromApi(agentDid) {
|
|
346
|
+
async fetchFromApi(agentDid, bypassCache = false) {
|
|
331
347
|
// Prefer new project-scoped endpoint: /api/v1/bouncer/projects/{projectId}/tool-protections
|
|
332
348
|
// Falls back to old endpoint: /api/v1/bouncer/config?agent_did={did} for backward compatibility
|
|
333
349
|
let url;
|
|
@@ -345,28 +361,30 @@ class ToolProtectionService {
|
|
|
345
361
|
// Format: sk_live... (prefix up to first underscore after type, then ...)
|
|
346
362
|
const apiKeyMasked = this.config.apiKey
|
|
347
363
|
? (() => {
|
|
348
|
-
const parts = this.config.apiKey.split(
|
|
364
|
+
const parts = this.config.apiKey.split("_");
|
|
349
365
|
if (parts.length >= 2) {
|
|
350
366
|
return `${parts[0]}_${parts[1]}...`;
|
|
351
367
|
}
|
|
352
368
|
return `${this.config.apiKey.substring(0, 8)}...`;
|
|
353
369
|
})()
|
|
354
|
-
:
|
|
370
|
+
: "(empty)";
|
|
355
371
|
const apiKeyLength = this.config.apiKey?.length || 0;
|
|
356
372
|
if (this.config.debug) {
|
|
357
|
-
console.log(
|
|
358
|
-
method: useNewEndpoint
|
|
359
|
-
|
|
373
|
+
console.log("[ToolProtectionService] Fetching from API:", url, {
|
|
374
|
+
method: useNewEndpoint
|
|
375
|
+
? "projects/{projectId}/tool-protections (new)"
|
|
376
|
+
: "config?agent_did (old)",
|
|
377
|
+
projectId: this.config.projectId || "none",
|
|
360
378
|
apiKeyPresent: !!this.config.apiKey,
|
|
361
379
|
apiKeyLength,
|
|
362
380
|
apiKeyMasked,
|
|
363
381
|
});
|
|
364
382
|
}
|
|
365
383
|
// Validate API key is present
|
|
366
|
-
if (!this.config.apiKey || this.config.apiKey.trim() ===
|
|
367
|
-
const error =
|
|
384
|
+
if (!this.config.apiKey || this.config.apiKey.trim() === "") {
|
|
385
|
+
const error = "API key is missing or empty";
|
|
368
386
|
if (this.config.debug) {
|
|
369
|
-
console.error(
|
|
387
|
+
console.error("[ToolProtectionService]", error, {
|
|
370
388
|
apiKeyPresent: !!this.config.apiKey,
|
|
371
389
|
apiKeyLength,
|
|
372
390
|
});
|
|
@@ -375,25 +393,31 @@ class ToolProtectionService {
|
|
|
375
393
|
}
|
|
376
394
|
// Build headers - new endpoint uses X-API-Key, old endpoint uses Authorization Bearer
|
|
377
395
|
const headers = {
|
|
378
|
-
|
|
396
|
+
"Content-Type": "application/json",
|
|
379
397
|
};
|
|
398
|
+
// Add Cache-Control header to bypass AgentShield's cache if requested
|
|
399
|
+
// This is useful when cache is cleared and we want immediate fresh data
|
|
400
|
+
if (bypassCache) {
|
|
401
|
+
headers["Cache-Control"] = "no-cache, no-store, must-revalidate";
|
|
402
|
+
headers["Pragma"] = "no-cache";
|
|
403
|
+
}
|
|
380
404
|
if (useNewEndpoint) {
|
|
381
405
|
// ✅ New endpoint headers
|
|
382
|
-
headers[
|
|
406
|
+
headers["X-API-Key"] = this.config.apiKey;
|
|
383
407
|
if (this.config.projectId) {
|
|
384
|
-
headers[
|
|
408
|
+
headers["X-Project-Id"] = this.config.projectId;
|
|
385
409
|
}
|
|
386
410
|
}
|
|
387
411
|
else {
|
|
388
412
|
// ⚠️ Old endpoint headers (backward compatibility)
|
|
389
|
-
headers[
|
|
413
|
+
headers["Authorization"] = `Bearer ${this.config.apiKey}`;
|
|
390
414
|
}
|
|
391
415
|
const response = await fetch(url, {
|
|
392
|
-
method:
|
|
416
|
+
method: "GET",
|
|
393
417
|
headers,
|
|
394
418
|
});
|
|
395
419
|
if (!response.ok) {
|
|
396
|
-
const errorText = await response.text().catch(() =>
|
|
420
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
397
421
|
const error = new Error(`Failed to fetch bouncer config: ${response.status} ${response.statusText} - ${errorText}`);
|
|
398
422
|
error.status = response.status;
|
|
399
423
|
throw error;
|
|
@@ -401,24 +425,28 @@ class ToolProtectionService {
|
|
|
401
425
|
let data;
|
|
402
426
|
try {
|
|
403
427
|
data = (await response.json());
|
|
404
|
-
//
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
428
|
+
// Always log raw API response for troubleshooting (critical for debugging delegation issues)
|
|
429
|
+
console.log("[ToolProtectionService] Raw API response:", {
|
|
430
|
+
success: data.success,
|
|
431
|
+
hasData: !!data.data,
|
|
432
|
+
hasToolProtections: !!data.data?.toolProtections,
|
|
433
|
+
hasTools: !!data.data?.tools,
|
|
434
|
+
toolProtectionsKeys: data.data?.toolProtections
|
|
435
|
+
? Object.keys(data.data.toolProtections)
|
|
436
|
+
: [],
|
|
437
|
+
toolsType: data.data?.tools
|
|
438
|
+
? Array.isArray(data.data.tools)
|
|
439
|
+
? "array"
|
|
440
|
+
: "object"
|
|
441
|
+
: "none",
|
|
442
|
+
rawResponse: JSON.stringify(data).substring(0, 2000), // First 2000 chars for debugging
|
|
443
|
+
});
|
|
416
444
|
}
|
|
417
445
|
catch (jsonError) {
|
|
418
446
|
throw new Error(`Failed to parse API response: ${jsonError instanceof Error ? jsonError.message : String(jsonError)}`);
|
|
419
447
|
}
|
|
420
448
|
if (!data.success) {
|
|
421
|
-
throw new Error(
|
|
449
|
+
throw new Error("API returned success: false");
|
|
422
450
|
}
|
|
423
451
|
return data;
|
|
424
452
|
}
|
|
@@ -436,14 +464,106 @@ class ToolProtectionService {
|
|
|
436
464
|
? `config:tool-protections:${this.config.projectId}`
|
|
437
465
|
: `agent:${agentDid}`;
|
|
438
466
|
if (this.config.debug) {
|
|
439
|
-
console.log(
|
|
467
|
+
console.log("[ToolProtectionService] Clearing cache", {
|
|
440
468
|
cacheKey,
|
|
441
|
-
projectId: this.config.projectId ||
|
|
442
|
-
agentDid: agentDid.slice(0, 20) +
|
|
469
|
+
projectId: this.config.projectId || "none",
|
|
470
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
443
471
|
});
|
|
444
472
|
}
|
|
445
473
|
await this.cache.delete(cacheKey);
|
|
446
474
|
}
|
|
475
|
+
/**
|
|
476
|
+
* Refresh cache immediately from API, bypassing both local and AgentShield cache
|
|
477
|
+
*
|
|
478
|
+
* This method clears the local cache and fetches fresh config from the API
|
|
479
|
+
* with Cache-Control headers to bypass AgentShield's 5-minute cache.
|
|
480
|
+
*
|
|
481
|
+
* @param agentDid DID of the agent to refresh config for
|
|
482
|
+
* @returns Fresh tool protection config
|
|
483
|
+
*/
|
|
484
|
+
async refreshCache(agentDid) {
|
|
485
|
+
// Clear local cache first
|
|
486
|
+
await this.clearCache(agentDid);
|
|
487
|
+
// Fetch fresh config with cache bypass
|
|
488
|
+
const cacheKey = this.config.projectId
|
|
489
|
+
? `config:tool-protections:${this.config.projectId}`
|
|
490
|
+
: `agent:${agentDid}`;
|
|
491
|
+
if (this.config.debug) {
|
|
492
|
+
console.log("[ToolProtectionService] Refreshing cache from API (bypassing cache)", {
|
|
493
|
+
cacheKey,
|
|
494
|
+
projectId: this.config.projectId || "none",
|
|
495
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
// Fetch from API with cache bypass
|
|
499
|
+
const response = await this.fetchFromApi(agentDid, true);
|
|
500
|
+
// Transform API response format to internal format
|
|
501
|
+
const toolProtections = {};
|
|
502
|
+
// Check for new endpoint format first (toolProtections)
|
|
503
|
+
if (response.data.toolProtections) {
|
|
504
|
+
for (const [toolName, toolConfig] of Object.entries(response.data.toolProtections)) {
|
|
505
|
+
const requiresDelegation = toolConfig.requiresDelegation ??
|
|
506
|
+
toolConfig.requires_delegation ??
|
|
507
|
+
false;
|
|
508
|
+
const requiredScopes = toolConfig.requiredScopes ??
|
|
509
|
+
toolConfig.required_scopes ??
|
|
510
|
+
toolConfig.scopes ??
|
|
511
|
+
[];
|
|
512
|
+
toolProtections[toolName] = {
|
|
513
|
+
requiresDelegation,
|
|
514
|
+
requiredScopes,
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
else if (response.data.tools) {
|
|
519
|
+
// Old endpoint format: array or object
|
|
520
|
+
if (Array.isArray(response.data.tools)) {
|
|
521
|
+
for (const tool of response.data.tools) {
|
|
522
|
+
const toolName = tool.name;
|
|
523
|
+
if (!toolName)
|
|
524
|
+
continue;
|
|
525
|
+
const requiresDelegation = tool.requiresDelegation ??
|
|
526
|
+
tool.requires_delegation ??
|
|
527
|
+
false;
|
|
528
|
+
const requiredScopes = tool.requiredScopes ??
|
|
529
|
+
tool.required_scopes ??
|
|
530
|
+
tool.scopes ??
|
|
531
|
+
[];
|
|
532
|
+
toolProtections[toolName] = {
|
|
533
|
+
requiresDelegation,
|
|
534
|
+
requiredScopes,
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
else {
|
|
539
|
+
for (const [toolName, toolConfig] of Object.entries(response.data.tools)) {
|
|
540
|
+
const requiresDelegation = toolConfig.requiresDelegation ??
|
|
541
|
+
toolConfig.requires_delegation ??
|
|
542
|
+
false;
|
|
543
|
+
const requiredScopes = toolConfig.requiredScopes ??
|
|
544
|
+
toolConfig.required_scopes ??
|
|
545
|
+
toolConfig.scopes ??
|
|
546
|
+
[];
|
|
547
|
+
toolProtections[toolName] = {
|
|
548
|
+
requiresDelegation,
|
|
549
|
+
requiredScopes,
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
const config = { toolProtections };
|
|
555
|
+
// Cache the fresh config
|
|
556
|
+
const ttl = this.config.cacheTtl ?? 300000; // Default 5 minutes
|
|
557
|
+
await this.cache.set(cacheKey, config, ttl);
|
|
558
|
+
console.log("[ToolProtectionService] Cache refreshed successfully", {
|
|
559
|
+
toolCount: Object.keys(toolProtections).length,
|
|
560
|
+
protectedTools: Object.entries(toolProtections)
|
|
561
|
+
.filter(([_, config]) => config.requiresDelegation)
|
|
562
|
+
.map(([name]) => name),
|
|
563
|
+
agentDid: agentDid.slice(0, 20) + "...",
|
|
564
|
+
});
|
|
565
|
+
return config;
|
|
566
|
+
}
|
|
447
567
|
}
|
|
448
568
|
exports.ToolProtectionService = ToolProtectionService;
|
|
449
569
|
//# sourceMappingURL=tool-protection.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-protection.service.js","sourceRoot":"","sources":["../../src/services/tool-protection.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-protection.service.js","sourceRoot":"","sources":["../../src/services/tool-protection.service.ts"],"names":[],"mappings":"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"}
|