@kya-os/mcp-i-core 1.3.2 → 1.3.4
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test$colon$coverage.log +2530 -2522
- package/.turbo/turbo-test.log +1635 -1635
- package/coverage/coverage-final.json +1 -1
- package/dist/services/oauth-config.service.d.ts.map +1 -1
- package/dist/services/oauth-config.service.js +27 -5
- package/dist/services/oauth-config.service.js.map +1 -1
- package/dist/services/tool-protection.service.d.ts +16 -12
- package/dist/services/tool-protection.service.d.ts.map +1 -1
- package/dist/services/tool-protection.service.js +134 -24
- package/dist/services/tool-protection.service.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/services/cache-busting.test.ts +125 -0
- package/src/services/oauth-config.service.ts +28 -5
- package/src/services/tool-protection.service.ts +160 -25
- package/src/__tests__/services/cache-no-warming.test.ts +0 -177
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-config.service.d.ts","sourceRoot":"","sources":["../../src/services/oauth-config.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,EAAE,aAAa,CAAC;IAE7B,mDAAmD;IACnD,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAGZ;gBAEU,MAAM,EAAE,wBAAwB;IAW5C;;;;;;;;OAQG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-config.service.d.ts","sourceRoot":"","sources":["../../src/services/oauth-config.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,EAAE,aAAa,CAAC;IAE7B,mDAAmD;IACnD,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAGZ;gBAEU,MAAM,EAAE,wBAAwB;IAW5C;;;;;;;;OAQG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA8G7D;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
|
|
@@ -66,17 +66,39 @@ class OAuthConfigService {
|
|
|
66
66
|
if (!result.success || !result.data) {
|
|
67
67
|
throw new Error("Invalid API response: missing success or data field");
|
|
68
68
|
}
|
|
69
|
-
// Parse providers object
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
// Parse providers object with snake_case → camelCase mapping
|
|
70
|
+
// AgentShield API may return snake_case fields, but OAuthProvider interface uses camelCase
|
|
71
|
+
const rawProviders = result.data.providers || {};
|
|
72
|
+
if (typeof rawProviders !== "object" || Array.isArray(rawProviders)) {
|
|
72
73
|
throw new Error("Invalid API response: providers must be an object, not an array");
|
|
73
74
|
}
|
|
75
|
+
// Map each provider's fields from snake_case to camelCase
|
|
76
|
+
const providers = {};
|
|
77
|
+
for (const [name, raw] of Object.entries(rawProviders)) {
|
|
78
|
+
const p = raw;
|
|
79
|
+
providers[name] = {
|
|
80
|
+
clientId: (p.clientId ?? p.client_id ?? ""),
|
|
81
|
+
clientSecret: (p.clientSecret ?? p.client_secret ?? null),
|
|
82
|
+
authorizationUrl: (p.authorizationUrl ?? p.authorization_url ?? ""),
|
|
83
|
+
tokenUrl: (p.tokenUrl ?? p.token_url ?? ""),
|
|
84
|
+
userInfoUrl: (p.userInfoUrl ?? p.user_info_url),
|
|
85
|
+
supportsPKCE: (p.supportsPKCE ?? p.supports_pkce ?? false),
|
|
86
|
+
requiresClientSecret: (p.requiresClientSecret ?? p.requires_client_secret ?? true),
|
|
87
|
+
scopes: (p.scopes ?? []),
|
|
88
|
+
defaultScopes: (p.defaultScopes ?? p.default_scopes),
|
|
89
|
+
proxyMode: (p.proxyMode ?? p.proxy_mode ?? false),
|
|
90
|
+
customParams: (p.customParams ?? p.custom_params),
|
|
91
|
+
tokenEndpointAuthMethod: (p.tokenEndpointAuthMethod ?? p.token_endpoint_auth_method),
|
|
92
|
+
responseType: (p.responseType ?? p.response_type),
|
|
93
|
+
grantType: (p.grantType ?? p.grant_type),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
74
96
|
// Build OAuthConfig object
|
|
75
97
|
// Extract configuredProvider from API response - this indicates which provider
|
|
76
98
|
// the user has actually configured in AgentShield dashboard
|
|
77
|
-
const configuredProvider = result.data.configuredProvider
|
|
99
|
+
const configuredProvider = result.data.configuredProvider ?? result.data.configured_provider ?? null;
|
|
78
100
|
const config = {
|
|
79
|
-
providers
|
|
101
|
+
providers,
|
|
80
102
|
configuredProvider,
|
|
81
103
|
};
|
|
82
104
|
// Cache config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-config.service.js","sourceRoot":"","sources":["../../src/services/oauth-config.service.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAKH,0EAA0E;AAsB1E;;GAEG;AACH,MAAa,kBAAkB;IACrB,MAAM,CAGZ;IAEF,YAAY,MAAgC;QAC1C,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,oBAAoB;YAChE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,gDAAwB,EAAE;SACtD,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,cAAc;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gCAAgC,EAAE;gBACnD,SAAS;aACV,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,6BAA6B;QAC7B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,4BAA4B,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC;QAExG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,+CAA+C,EAAE;YAClE,SAAS;YACT,GAAG;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC1D,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC7C,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;gBACrE,MAAM,IAAI,KAAK,CACb,iCAAiC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CACzF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAMjC,CAAC;YAEF,8BAA8B;YAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"oauth-config.service.js","sourceRoot":"","sources":["../../src/services/oauth-config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -126,6 +126,8 @@ export declare class ToolProtectionService {
|
|
|
126
126
|
* Uses projectId endpoint if available (preferred, project-scoped), otherwise falls back to agent_did query param
|
|
127
127
|
*
|
|
128
128
|
* @param agentDid DID of the agent to fetch config for
|
|
129
|
+
* @param options Optional fetch options
|
|
130
|
+
* @param options.bypassCDNCache When true, adds cache-busting to bypass CDN caches (used by clearAndRefresh)
|
|
129
131
|
*/
|
|
130
132
|
private fetchFromApi;
|
|
131
133
|
/**
|
|
@@ -138,27 +140,29 @@ export declare class ToolProtectionService {
|
|
|
138
140
|
*/
|
|
139
141
|
clearCache(agentDid: string): Promise<void>;
|
|
140
142
|
/**
|
|
141
|
-
* Clear cache
|
|
143
|
+
* Clear cache and immediately fetch fresh config from API
|
|
142
144
|
*
|
|
143
|
-
*
|
|
145
|
+
* This method is designed for Cloudflare Workers where KV has edge caching.
|
|
146
|
+
* After clearing the KV entry, it fetches fresh data from the API and writes
|
|
147
|
+
* it back to KV. This ensures:
|
|
148
|
+
* 1. The global KV entry is deleted
|
|
149
|
+
* 2. Fresh data is fetched from API (with CDN cache bypass!)
|
|
150
|
+
* 3. New data is written to KV (updating edge cache)
|
|
144
151
|
*
|
|
145
|
-
*
|
|
146
|
-
* - Upstream APIs (AgentShield) may have their own CDN/cache layers
|
|
147
|
-
* - Immediately fetching after clear would get stale CDN data
|
|
148
|
-
* - Storing stale data defeats the purpose of cache invalidation
|
|
149
|
-
* - The next actual tool call will fetch fresh data (with natural delay)
|
|
152
|
+
* The next request from the same edge location will get the fresh data.
|
|
150
153
|
*
|
|
151
|
-
* This
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
+
* IMPORTANT: This method uses bypassCDNCache to ensure we get fresh data
|
|
155
|
+
* from AgentShield's origin server, not stale CDN-cached data. This is
|
|
156
|
+
* critical for instant cache invalidation when tool protection settings
|
|
157
|
+
* are changed in the AgentShield dashboard.
|
|
154
158
|
*
|
|
155
159
|
* @param agentDid DID of the agent (used for cache key)
|
|
156
|
-
* @returns
|
|
160
|
+
* @returns The fresh tool protection config from API
|
|
157
161
|
*/
|
|
158
162
|
clearAndRefresh(agentDid: string): Promise<{
|
|
159
163
|
config: ToolProtectionConfig;
|
|
160
164
|
cacheKey: string;
|
|
161
|
-
source: '
|
|
165
|
+
source: 'api' | 'fallback';
|
|
162
166
|
}>;
|
|
163
167
|
}
|
|
164
168
|
//# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAE5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AA8D7E;;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;IAuYhC;;;;;;OAMG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA8BjC
|
|
1
|
+
{"version":3,"file":"tool-protection.service.d.ts","sourceRoot":"","sources":["../../src/services/tool-protection.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAE5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AA8D7E;;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;IAuYhC;;;;;;OAMG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA8BjC;;;;;;;OAOG;YACW,YAAY;IAsH1B;;;;;;;OAOG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,MAAM,EAAE,oBAAoB,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,KAAK,GAAG,UAAU,CAAC;KAC5B,CAAC;CA6IH"}
|
|
@@ -497,8 +497,10 @@ class ToolProtectionService {
|
|
|
497
497
|
* Uses projectId endpoint if available (preferred, project-scoped), otherwise falls back to agent_did query param
|
|
498
498
|
*
|
|
499
499
|
* @param agentDid DID of the agent to fetch config for
|
|
500
|
+
* @param options Optional fetch options
|
|
501
|
+
* @param options.bypassCDNCache When true, adds cache-busting to bypass CDN caches (used by clearAndRefresh)
|
|
500
502
|
*/
|
|
501
|
-
async fetchFromApi(agentDid) {
|
|
503
|
+
async fetchFromApi(agentDid, options) {
|
|
502
504
|
// Prefer new project-scoped endpoint: /api/v1/bouncer/projects/{projectId}/tool-protections
|
|
503
505
|
// Falls back to old endpoint: /api/v1/bouncer/config?agent_did={did} for backward compatibility
|
|
504
506
|
let url;
|
|
@@ -512,6 +514,13 @@ class ToolProtectionService {
|
|
|
512
514
|
// ⚠️ OLD ENDPOINT: Agent-scoped, returns tools array (backward compatibility)
|
|
513
515
|
url = `${this.config.apiUrl}/api/v1/bouncer/config?agent_did=${encodeURIComponent(agentDid)}`;
|
|
514
516
|
}
|
|
517
|
+
// Add cache-busting query param when bypassing CDN cache
|
|
518
|
+
// This is used during cache invalidation (clearAndRefresh) to ensure we get fresh data
|
|
519
|
+
// from the origin server, not stale CDN-cached data
|
|
520
|
+
if (options?.bypassCDNCache) {
|
|
521
|
+
const separator = url.includes("?") ? "&" : "?";
|
|
522
|
+
url = `${url}${separator}_t=${Date.now()}`;
|
|
523
|
+
}
|
|
515
524
|
// Debug: Log API key status (masked for security)
|
|
516
525
|
// Format: sk_live... (prefix up to first underscore after type, then ...)
|
|
517
526
|
const apiKeyMasked = this.config.apiKey
|
|
@@ -561,6 +570,12 @@ class ToolProtectionService {
|
|
|
561
570
|
// ⚠️ Old endpoint headers (backward compatibility)
|
|
562
571
|
headers["Authorization"] = `Bearer ${this.config.apiKey}`;
|
|
563
572
|
}
|
|
573
|
+
// Add cache-control header when bypassing CDN cache
|
|
574
|
+
// This tells any intermediate caches (CDN, proxies) not to serve cached content
|
|
575
|
+
if (options?.bypassCDNCache) {
|
|
576
|
+
headers["Cache-Control"] = "no-cache, no-store, must-revalidate";
|
|
577
|
+
headers["Pragma"] = "no-cache"; // HTTP/1.0 backward compatibility
|
|
578
|
+
}
|
|
564
579
|
const response = await fetch(url, {
|
|
565
580
|
method: "GET",
|
|
566
581
|
headers,
|
|
@@ -606,44 +621,139 @@ class ToolProtectionService {
|
|
|
606
621
|
await this.cache.delete(cacheKey);
|
|
607
622
|
}
|
|
608
623
|
/**
|
|
609
|
-
* Clear cache
|
|
624
|
+
* Clear cache and immediately fetch fresh config from API
|
|
610
625
|
*
|
|
611
|
-
*
|
|
626
|
+
* This method is designed for Cloudflare Workers where KV has edge caching.
|
|
627
|
+
* After clearing the KV entry, it fetches fresh data from the API and writes
|
|
628
|
+
* it back to KV. This ensures:
|
|
629
|
+
* 1. The global KV entry is deleted
|
|
630
|
+
* 2. Fresh data is fetched from API (with CDN cache bypass!)
|
|
631
|
+
* 3. New data is written to KV (updating edge cache)
|
|
612
632
|
*
|
|
613
|
-
*
|
|
614
|
-
* - Upstream APIs (AgentShield) may have their own CDN/cache layers
|
|
615
|
-
* - Immediately fetching after clear would get stale CDN data
|
|
616
|
-
* - Storing stale data defeats the purpose of cache invalidation
|
|
617
|
-
* - The next actual tool call will fetch fresh data (with natural delay)
|
|
633
|
+
* The next request from the same edge location will get the fresh data.
|
|
618
634
|
*
|
|
619
|
-
* This
|
|
620
|
-
*
|
|
621
|
-
*
|
|
635
|
+
* IMPORTANT: This method uses bypassCDNCache to ensure we get fresh data
|
|
636
|
+
* from AgentShield's origin server, not stale CDN-cached data. This is
|
|
637
|
+
* critical for instant cache invalidation when tool protection settings
|
|
638
|
+
* are changed in the AgentShield dashboard.
|
|
622
639
|
*
|
|
623
640
|
* @param agentDid DID of the agent (used for cache key)
|
|
624
|
-
* @returns
|
|
641
|
+
* @returns The fresh tool protection config from API
|
|
625
642
|
*/
|
|
626
643
|
async clearAndRefresh(agentDid) {
|
|
627
644
|
const cacheKey = this.config.projectId
|
|
628
645
|
? `config:tool-protections:${this.config.projectId}`
|
|
629
646
|
: `agent:${agentDid}`;
|
|
630
|
-
console.log("[ToolProtectionService]
|
|
647
|
+
console.log("[ToolProtectionService] clearAndRefresh starting", {
|
|
631
648
|
cacheKey,
|
|
632
649
|
projectId: this.config.projectId || "none",
|
|
633
650
|
agentDid: agentDid.slice(0, 20) + "...",
|
|
634
651
|
});
|
|
635
|
-
// Delete the cache entry
|
|
652
|
+
// 1. Delete the cache entry
|
|
636
653
|
await this.cache.delete(cacheKey);
|
|
637
|
-
console.log("[ToolProtectionService] Cache entry deleted
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
654
|
+
console.log("[ToolProtectionService] Cache entry deleted", { cacheKey });
|
|
655
|
+
// 2. Fetch fresh config from API with CDN cache bypass
|
|
656
|
+
// This ensures we get fresh data from origin, not stale CDN data
|
|
657
|
+
try {
|
|
658
|
+
const response = await this.fetchFromApi(agentDid, { bypassCDNCache: true });
|
|
659
|
+
// Transform API response to internal format (same logic as getToolProtectionConfig)
|
|
660
|
+
const toolProtections = {};
|
|
661
|
+
if (response.data.toolProtections) {
|
|
662
|
+
for (const [toolName, toolConfig] of Object.entries(response.data.toolProtections)) {
|
|
663
|
+
const requiresDelegation = toolConfig.requiresDelegation ??
|
|
664
|
+
toolConfig.requires_delegation ??
|
|
665
|
+
false;
|
|
666
|
+
const requiredScopes = toolConfig.requiredScopes ??
|
|
667
|
+
toolConfig.required_scopes ??
|
|
668
|
+
toolConfig.scopes ??
|
|
669
|
+
[];
|
|
670
|
+
const oauthProvider = toolConfig.oauthProvider ??
|
|
671
|
+
toolConfig.oauth_provider ??
|
|
672
|
+
undefined;
|
|
673
|
+
const riskLevel = toolConfig.riskLevel ??
|
|
674
|
+
toolConfig.risk_level ??
|
|
675
|
+
undefined;
|
|
676
|
+
toolProtections[toolName] = {
|
|
677
|
+
requiresDelegation,
|
|
678
|
+
requiredScopes,
|
|
679
|
+
...(oauthProvider && { oauthProvider }),
|
|
680
|
+
...(riskLevel && { riskLevel }),
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
else if (response.data.tools) {
|
|
685
|
+
if (Array.isArray(response.data.tools)) {
|
|
686
|
+
for (const tool of response.data.tools) {
|
|
687
|
+
const toolName = tool.name;
|
|
688
|
+
if (!toolName)
|
|
689
|
+
continue;
|
|
690
|
+
const requiresDelegation = tool.requiresDelegation ?? tool.requires_delegation ?? false;
|
|
691
|
+
const requiredScopes = tool.requiredScopes ??
|
|
692
|
+
tool.required_scopes ??
|
|
693
|
+
tool.scopes ??
|
|
694
|
+
[];
|
|
695
|
+
const oauthProvider = tool.oauthProvider ?? tool.oauth_provider ?? undefined;
|
|
696
|
+
const riskLevel = tool.riskLevel ?? tool.risk_level ?? undefined;
|
|
697
|
+
toolProtections[toolName] = {
|
|
698
|
+
requiresDelegation,
|
|
699
|
+
requiredScopes,
|
|
700
|
+
...(oauthProvider && { oauthProvider }),
|
|
701
|
+
...(riskLevel && { riskLevel }),
|
|
702
|
+
};
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
else {
|
|
706
|
+
for (const [toolName, toolConfig] of Object.entries(response.data.tools)) {
|
|
707
|
+
const requiresDelegation = toolConfig.requiresDelegation ??
|
|
708
|
+
toolConfig.requires_delegation ??
|
|
709
|
+
false;
|
|
710
|
+
const requiredScopes = toolConfig.requiredScopes ??
|
|
711
|
+
toolConfig.required_scopes ??
|
|
712
|
+
toolConfig.scopes ??
|
|
713
|
+
[];
|
|
714
|
+
const oauthProvider = toolConfig.oauthProvider ??
|
|
715
|
+
toolConfig.oauth_provider ??
|
|
716
|
+
undefined;
|
|
717
|
+
const riskLevel = toolConfig.riskLevel ??
|
|
718
|
+
toolConfig.risk_level ??
|
|
719
|
+
undefined;
|
|
720
|
+
toolProtections[toolName] = {
|
|
721
|
+
requiresDelegation,
|
|
722
|
+
requiredScopes,
|
|
723
|
+
...(oauthProvider && { oauthProvider }),
|
|
724
|
+
...(riskLevel && { riskLevel }),
|
|
725
|
+
};
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
// Construct fresh config (ToolProtectionConfig type)
|
|
730
|
+
const freshConfig = {
|
|
731
|
+
toolProtections,
|
|
732
|
+
};
|
|
733
|
+
// 3. Write fresh config to cache
|
|
734
|
+
const ttl = this.config.cacheTtl ?? 300000;
|
|
735
|
+
await this.cache.set(cacheKey, freshConfig, ttl);
|
|
736
|
+
console.log("[ToolProtectionService] Fresh config fetched and cached", {
|
|
737
|
+
cacheKey,
|
|
738
|
+
toolCount: Object.keys(toolProtections).length,
|
|
739
|
+
protectedTools: Object.entries(toolProtections)
|
|
740
|
+
.filter(([_, cfg]) => cfg.requiresDelegation)
|
|
741
|
+
.map(([name]) => name),
|
|
742
|
+
source: "api",
|
|
743
|
+
});
|
|
744
|
+
return { config: freshConfig, cacheKey, source: 'api' };
|
|
745
|
+
}
|
|
746
|
+
catch (error) {
|
|
747
|
+
console.warn("[ToolProtectionService] API fetch failed during refresh, using fallback", {
|
|
748
|
+
error: error instanceof Error ? error.message : String(error),
|
|
749
|
+
cacheKey,
|
|
750
|
+
});
|
|
751
|
+
// Use fallback config if API fails
|
|
752
|
+
const fallbackConfig = this.config.fallbackConfig || {
|
|
753
|
+
toolProtections: {},
|
|
754
|
+
};
|
|
755
|
+
return { config: fallbackConfig, cacheKey, source: 'fallback' };
|
|
756
|
+
}
|
|
647
757
|
}
|
|
648
758
|
}
|
|
649
759
|
exports.ToolProtectionService = ToolProtectionService;
|
|
@@ -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":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;;;AASH,gFAAgF;AA6DhF;;GAEG;AACH,MAAa,qBAAqB;IACxB,MAAM,CAA8B;IACpC,KAAK,CAAsB;IAEnC,YAAY,MAAmC,EAAE,KAA0B;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,aAAa,CACzB,QAAgB;QAEhB,oCAAoC;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,sDAA2B,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6CAA6C;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kDAAkD;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,CAAC,mBAAmB;QAEjF,+CAA+C;QAC/C,IAAI,GAAG,GAAG,SAAS,IAAI,GAAG,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;YACtD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE;oBACvD,QAAQ;oBACR,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;oBAC5C,UAAU,EAAE,GAAG,GAAG,SAAS;oBAC3B,aAAa,EAAE,WAAW;iBAC3B,CAAC,CAAC;YACL,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,uBAAuB,CAC3B,QAAgB;QAEhB,qEAAqE;QACrE,4DAA4D;QAC5D,iFAAiF;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YACpC,CAAC,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACpD,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC;QAExB,iBAAiB;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;YAC3C,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAE7D,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE;oBAC/C,MAAM,EAAE,OAAO;oBACf,QAAQ;oBACR,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM;oBAC1C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM;oBACrD,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;yBACnD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAA2B,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;yBAC5E,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;oBACxB,UAAU,EAAE,GAAG;oBACf,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,uDAAuD,EAAE;gBACnE,MAAM,EAAE,iBAAiB;gBACzB,QAAQ;gBACR,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;gBACvC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM;gBAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBAC7B,CAAC,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,SAAS,mBAAmB;oBACtE,CAAC,CAAC,oCAAoC,QAAQ,EAAE;aACnD,CAAC,CAAC;QACL,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE;oBAC3D,MAAM,EAAE,oBAAoB;oBAC5B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM;oBAC1C,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACnC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;oBACzD,kBAAkB,EAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,IAAI,IAAI;oBAC1D,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI;oBACtC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,sCAAsC;YACtC,+FAA+F;YAC/F,mGAAmG;YACnG,8FAA8F;YAC9F,MAAM,eAAe,GAAmC,EAAE,CAAC;YAE3D,wDAAwD;YACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClC,sDAAsD;gBACtD,qDAAqD;gBACrD,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CACjD,QAAQ,CAAC,IAAI,CAAC,eAAe,CAC9B,EAAE,CAAC;oBACF,MAAM,kBAAkB,GACrB,UAAkB,CAAC,kBAAkB;wBACrC,UAAkB,CAAC,mBAAmB;wBACvC,KAAK,CAAC;oBACR,MAAM,cAAc,GACjB,UAAkB,CAAC,cAAc;wBACjC,UAAkB,CAAC,eAAe;wBAClC,UAAkB,CAAC,MAAM;wBAC1B,EAAE,CAAC;oBAEL,8DAA8D;oBAC9D,MAAM,aAAa,GAChB,UAAkB,CAAC,aAAa;wBAChC,UAAkB,CAAC,cAAc;wBAClC,SAAS,CAAC;oBAEZ,MAAM,SAAS,GACZ,UAAkB,CAAC,SAAS;wBAC5B,UAAkB,CAAC,UAAU;wBAC9B,SAAS,CAAC;oBAEZ,eAAe,CAAC,QAAQ,CAAC,GAAG;wBAC1B,kBAAkB;wBAClB,cAAc;wBACd,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,0BAA0B;wBACnE,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,0BAA0B;qBAC5D,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC/B,uCAAuC;gBACvC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvC,mEAAmE;oBACnE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;wBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gCACtB,OAAO,CAAC,IAAI,CACV,2DAA2D,EAC3D,IAAI,CACL,CAAC;4BACJ,CAAC;4BACD,SAAS;wBACX,CAAC;wBAED,qDAAqD;wBACrD,MAAM,kBAAkB,GACrB,IAAY,CAAC,kBAAkB;4BAC/B,IAAY,CAAC,mBAAmB;4BACjC,KAAK,CAAC;wBACR,MAAM,cAAc,GACjB,IAAY,CAAC,cAAc;4BAC3B,IAAY,CAAC,eAAe;4BAC5B,IAAY,CAAC,MAAM;4BACpB,EAAE,CAAC;wBAEL,2BAA2B;wBAC3B,MAAM,aAAa,GAChB,IAAY,CAAC,aAAa;4BAC1B,IAAY,CAAC,cAAc;4BAC5B,SAAS,CAAC;wBAEZ,MAAM,SAAS,GACZ,IAAY,CAAC,SAAS;4BACtB,IAAY,CAAC,UAAU;4BACxB,SAAS,CAAC;wBAEZ,eAAe,CAAC,QAAQ,CAAC,GAAG;4BAC1B,kBAAkB;4BAClB,cAAc;4BACd,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;4BACvC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;yBAChC,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,8DAA8D;oBAC9D,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CACjD,QAAQ,CAAC,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC;wBACF,qDAAqD;wBACrD,MAAM,kBAAkB,GACrB,UAAkB,CAAC,kBAAkB;4BACrC,UAAkB,CAAC,mBAAmB;4BACvC,KAAK,CAAC;wBACR,MAAM,cAAc,GACjB,UAAkB,CAAC,cAAc;4BACjC,UAAkB,CAAC,eAAe;4BAClC,UAAkB,CAAC,MAAM;4BAC1B,EAAE,CAAC;wBAEL,2BAA2B;wBAC3B,MAAM,aAAa,GAChB,UAAkB,CAAC,aAAa;4BAChC,UAAkB,CAAC,cAAc;4BAClC,SAAS,CAAC;wBAEZ,MAAM,SAAS,GACZ,UAAkB,CAAC,SAAS;4BAC5B,UAAkB,CAAC,UAAU;4BAC9B,SAAS,CAAC;wBAEZ,eAAe,CAAC,QAAQ,CAAC,GAAG;4BAC1B,kBAAkB;4BAClB,cAAc;4BACd,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;4BACvC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;yBAChC,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oEAAoE;YACpE,uEAAuE;YACvE,8FAA8F;YAC9F,MAAM,qBAAqB,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,EAAE,CAAC;gBAChD,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAClD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAC3C,EAAE,CAAC;oBACF,oEAAoE;oBACpE,gEAAgE;oBAChE,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC7F,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;4BACtB,OAAO,CAAC,GAAG,CACT,sEAAsE,EACtE,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB,CAAC;wBACJ,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,mEAAmE;oBACnE,MAAM,WAAW,GAAmB;wBAClC,kBAAkB,EAAG,WAAmB,CAAC,kBAAkB,IAAI,KAAK;wBACpE,cAAc,EAAG,WAAmB,CAAC,cAAc,IAAI,EAAE;qBAC1D,CAAC;oBAEF,kDAAkD;oBAClD,qBAAqB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;oBAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;wBACtB,OAAO,CAAC,GAAG,CACT,iEAAiE,EACjE;4BACE,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,WAAW;yBACzB,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAyB;gBACnC,eAAe,EAAE,qBAAqB;aACvC,CAAC;YAEF,wBAAwB;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,oBAAoB;YAChE,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAEnD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAE5C,uEAAuE;YACvE,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE;gBAC5D,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM;gBAClD,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;qBACpD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAA2B,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;qBAC5E,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;gBACxB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;gBACvC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM;gBAC1C,UAAU,EAAE,GAAG;gBACf,cAAc,EAAE,eAAe,CAAC,WAAW,EAAE;aAC9C,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CACT,6DAA6D,EAC7D;oBACE,MAAM,EAAE,aAAa;oBACrB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvC,QAAQ;oBACR,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM;oBACpD,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAC9C,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;wBACnB,IAAI;wBACJ,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;wBAC7C,UAAU,EAAE,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc;qBACjE,CAAC,CACH;oBACD,KAAK,EAAE,GAAG;oBACV,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;oBACnC,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE;oBACxC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;iBACxC,CACF,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEzD,sDAAsD;YACtD,IAAI,YAAY,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;gBACzD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,oFAAoF;YACpF,8EAA8E;YAC9E,IAAI,YAAY,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC;gBAC7D,MAAM,MAAM,GAAI,KAAa,CAAC,MAAM,CAAC;gBACrC,6EAA6E;gBAC7E,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;oBACjD,4CAA4C;gBAC9C,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YAED,+BAA+B;YAC/B,IAAI,YAAY,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;gBAC3D,MAAM,KAAK,CAAC;YACd,CAAC;YAED,qCAAqC;YACrC,IAAI,YAAY,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;gBACzD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE;oBACxD,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvC,KAAK,EAAE,YAAY;iBACpB,CAAC,CAAC;YACL,CAAC;YAED,mEAAmE;YACnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CACV,6DAA6D,EAC7D;oBACE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvC,KAAK,EAAE,YAAY;oBACnB,QAAQ;iBACT,CACF,CAAC;gBACF,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,wEAAwE;YACxE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC/B,wDAAwD;gBACxD,OAAO,CAAC,IAAI,CACV,iEAAiE,EACjE;oBACE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvC,KAAK,EAAE,YAAY;iBACpB,CACF,CAAC;gBAEF,wDAAwD;gBACxD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,oBAAoB;gBAChE,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;gBAEhE,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YACpC,CAAC;YAED,sDAAsD;YACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,UAAU,CAAC;YAEpE,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CACX,kFAAkF,EAClF;oBACE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvC,KAAK,EAAE,YAAY;oBACnB,QAAQ;iBACT,CACF,CAAC;gBAEF,sEAAsE;gBACtE,MAAM,aAAa,GAAyB;oBAC1C,eAAe,EAAE;wBACf,GAAG,EAAE;4BACH,kBAAkB,EAAE,IAAI;4BACxB,cAAc,EAAE,EAAE;yBACnB;qBACF;iBACF,CAAC;gBAEF,oDAAoD;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,oBAAoB;gBAChE,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBAEnD,OAAO,aAAa,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,+DAA+D;gBAC/D,OAAO,CAAC,IAAI,CACV,iFAAiF,EACjF;oBACE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvC,KAAK,EAAE,YAAY;oBACnB,QAAQ;iBACT,CACF,CAAC;gBAEF,iDAAiD;gBACjD,MAAM,WAAW,GAAyB,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;gBAClE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,oBAAoB;gBAChE,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;gBAEjD,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB,CACvB,QAAgB,EAChB,QAAgB;QAEhB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAE5D,2CAA2C;QAC3C,IAAI,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAElD,mEAAmE;QACnE,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,uDAAuD;QACvD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE;gBACtD,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;gBACvC,KAAK,EAAE,CAAC,CAAC,UAAU;gBACnB,UAAU,EAAE,UAAU,KAAK,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC;gBACtD,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,IAAI,KAAK;gBAC3D,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;aACpD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,YAAY,CACxB,QAAgB,EAChB,OAAsC;QAEtC,4FAA4F;QAC5F,gGAAgG;QAChG,IAAI,GAAW,CAAC;QAChB,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,iEAAiE;YACjE,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,4BAA4B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;YACpH,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,8EAA8E;YAC9E,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,oCAAoC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChG,CAAC;QAED,yDAAyD;QACzD,uFAAuF;QACvF,oDAAoD;QACpD,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAChD,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7C,CAAC;QAED,kDAAkD;QAClD,0EAA0E;QAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YACrC,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBACtC,CAAC;gBACD,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;YACpD,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,GAAG,EAAE;gBAC7D,MAAM,EAAE,cAAc;oBACpB,CAAC,CAAC,6CAA6C;oBAC/C,CAAC,CAAC,wBAAwB;gBAC5B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM;gBAC1C,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;gBACnC,YAAY;gBACZ,YAAY;aACb,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,6BAA6B,CAAC;YAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,EAAE;oBAC9C,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;oBACnC,YAAY;iBACb,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,KAAK,CACb,0BAA0B,KAAK,kEAAkE,CAClG,CAAC;QACJ,CAAC;QAED,sFAAsF;QACtF,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACnB,yBAAyB;YACzB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAClD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,mDAAmD;YACnD,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5D,CAAC;QAED,oDAAoD;QACpD,gFAAgF;QAChF,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;YAC5B,OAAO,CAAC,eAAe,CAAC,GAAG,qCAAqC,CAAC;YACjE,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAC,kCAAkC;QACpE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,mCAAmC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CAC3F,CAAC;YACD,KAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,IAA8B,CAAC;QACnC,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6B,CAAC;QAC7D,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,iCAAiC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CACtG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,yDAAyD;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YACpC,CAAC,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACpD,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE;gBACpD,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM;gBAC1C,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;aACxC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB;QAKpC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YACpC,CAAC,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACpD,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE;YAC9D,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM;YAC1C,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;SACxC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEzE,uDAAuD;QACvD,iEAAiE;QACjE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YAE7E,oFAAoF;YACpF,MAAM,eAAe,GAAmC,EAAE,CAAC;YAE3D,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CACjD,QAAQ,CAAC,IAAI,CAAC,eAAe,CAC9B,EAAE,CAAC;oBACF,MAAM,kBAAkB,GACrB,UAAkB,CAAC,kBAAkB;wBACrC,UAAkB,CAAC,mBAAmB;wBACvC,KAAK,CAAC;oBACR,MAAM,cAAc,GACjB,UAAkB,CAAC,cAAc;wBACjC,UAAkB,CAAC,eAAe;wBAClC,UAAkB,CAAC,MAAM;wBAC1B,EAAE,CAAC;oBACL,MAAM,aAAa,GAChB,UAAkB,CAAC,aAAa;wBAChC,UAAkB,CAAC,cAAc;wBAClC,SAAS,CAAC;oBACZ,MAAM,SAAS,GACZ,UAAkB,CAAC,SAAS;wBAC5B,UAAkB,CAAC,UAAU;wBAC9B,SAAS,CAAC;oBAEZ,eAAe,CAAC,QAAQ,CAAC,GAAG;wBAC1B,kBAAkB;wBAClB,cAAc;wBACd,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;wBACvC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;qBAChC,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACvC,MAAM,QAAQ,GAAI,IAAY,CAAC,IAAI,CAAC;wBACpC,IAAI,CAAC,QAAQ;4BAAE,SAAS;wBACxB,MAAM,kBAAkB,GACrB,IAAY,CAAC,kBAAkB,IAAK,IAAY,CAAC,mBAAmB,IAAI,KAAK,CAAC;wBACjF,MAAM,cAAc,GACjB,IAAY,CAAC,cAAc;4BAC3B,IAAY,CAAC,eAAe;4BAC5B,IAAY,CAAC,MAAM;4BACpB,EAAE,CAAC;wBACL,MAAM,aAAa,GAChB,IAAY,CAAC,aAAa,IAAK,IAAY,CAAC,cAAc,IAAI,SAAS,CAAC;wBAC3E,MAAM,SAAS,GAAI,IAAY,CAAC,SAAS,IAAK,IAAY,CAAC,UAAU,IAAI,SAAS,CAAC;wBAEnF,eAAe,CAAC,QAAQ,CAAC,GAAG;4BAC1B,kBAAkB;4BAClB,cAAc;4BACd,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;4BACvC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;yBAChC,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CACjD,QAAQ,CAAC,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC;wBACF,MAAM,kBAAkB,GACrB,UAAkB,CAAC,kBAAkB;4BACrC,UAAkB,CAAC,mBAAmB;4BACvC,KAAK,CAAC;wBACR,MAAM,cAAc,GACjB,UAAkB,CAAC,cAAc;4BACjC,UAAkB,CAAC,eAAe;4BAClC,UAAkB,CAAC,MAAM;4BAC1B,EAAE,CAAC;wBACL,MAAM,aAAa,GAChB,UAAkB,CAAC,aAAa;4BAChC,UAAkB,CAAC,cAAc;4BAClC,SAAS,CAAC;wBACZ,MAAM,SAAS,GACZ,UAAkB,CAAC,SAAS;4BAC5B,UAAkB,CAAC,UAAU;4BAC9B,SAAS,CAAC;wBAEZ,eAAe,CAAC,QAAQ,CAAC,GAAG;4BAC1B,kBAAkB;4BAClB,cAAc;4BACd,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;4BACvC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;yBAChC,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,qDAAqD;YACrD,MAAM,WAAW,GAAyB;gBACxC,eAAe;aAChB,CAAC;YAEF,iCAAiC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;YAC3C,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YAEjD,OAAO,CAAC,GAAG,CAAC,yDAAyD,EAAE;gBACrE,QAAQ;gBACR,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM;gBAC9C,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;qBAC5C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;qBAC5C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;gBACxB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,yEAAyE,EAAE;gBACtF,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,QAAQ;aACT,CAAC,CAAC;YAEH,mCAAmC;YACnC,MAAM,cAAc,GAAyB,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI;gBACzE,eAAe,EAAE,EAAE;aACpB,CAAC;YAEF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;CACF;AA9zBD,sDA8zBC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { ToolProtectionService } from "../../services/tool-protection.service";
|
|
3
|
+
import { InMemoryToolProtectionCache } from "../../cache/tool-protection-cache";
|
|
4
|
+
|
|
5
|
+
describe("Cache Busting in clearAndRefresh", () => {
|
|
6
|
+
let cache: InMemoryToolProtectionCache;
|
|
7
|
+
let service: ToolProtectionService;
|
|
8
|
+
const agentDid = "did:key:test-agent";
|
|
9
|
+
const projectId = "test-project-123";
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
cache = new InMemoryToolProtectionCache();
|
|
13
|
+
service = new ToolProtectionService(
|
|
14
|
+
{
|
|
15
|
+
apiUrl: "https://test.agentshield.com",
|
|
16
|
+
apiKey: "test-api-key",
|
|
17
|
+
projectId,
|
|
18
|
+
cacheTtl: 300000,
|
|
19
|
+
debug: true,
|
|
20
|
+
},
|
|
21
|
+
cache
|
|
22
|
+
);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("clearAndRefresh should call fetchFromApi with bypassCDNCache: true", async () => {
|
|
26
|
+
// Spy on the private fetchFromApi method
|
|
27
|
+
const fetchSpy = vi.spyOn(service as any, "fetchFromApi").mockResolvedValue({
|
|
28
|
+
success: true,
|
|
29
|
+
data: {
|
|
30
|
+
toolProtections: {
|
|
31
|
+
greet: { requiresDelegation: true, requiredScopes: ["greet:execute"] },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
await service.clearAndRefresh(agentDid);
|
|
37
|
+
|
|
38
|
+
// Verify fetchFromApi was called with bypassCDNCache: true
|
|
39
|
+
expect(fetchSpy).toHaveBeenCalledTimes(1);
|
|
40
|
+
expect(fetchSpy).toHaveBeenCalledWith(agentDid, { bypassCDNCache: true });
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it("fetchFromApi should add cache-busting query param when bypassCDNCache is true", async () => {
|
|
44
|
+
// Mock global fetch
|
|
45
|
+
const fetchMock = vi.fn().mockResolvedValue({
|
|
46
|
+
ok: true,
|
|
47
|
+
json: () => Promise.resolve({ success: true, data: { toolProtections: {} } }),
|
|
48
|
+
});
|
|
49
|
+
global.fetch = fetchMock;
|
|
50
|
+
|
|
51
|
+
// Call fetchFromApi directly with bypassCDNCache: true
|
|
52
|
+
await (service as any).fetchFromApi(agentDid, { bypassCDNCache: true });
|
|
53
|
+
|
|
54
|
+
// Verify the URL contains cache-busting timestamp
|
|
55
|
+
const calledUrl = fetchMock.mock.calls[0][0] as string;
|
|
56
|
+
expect(calledUrl).toContain("?_t=");
|
|
57
|
+
expect(calledUrl).toMatch(/\?_t=\d+$/); // Ends with ?_t=<timestamp>
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("fetchFromApi should add Cache-Control headers when bypassCDNCache is true", async () => {
|
|
61
|
+
// Mock global fetch
|
|
62
|
+
const fetchMock = vi.fn().mockResolvedValue({
|
|
63
|
+
ok: true,
|
|
64
|
+
json: () => Promise.resolve({ success: true, data: { toolProtections: {} } }),
|
|
65
|
+
});
|
|
66
|
+
global.fetch = fetchMock;
|
|
67
|
+
|
|
68
|
+
// Call fetchFromApi directly with bypassCDNCache: true
|
|
69
|
+
await (service as any).fetchFromApi(agentDid, { bypassCDNCache: true });
|
|
70
|
+
|
|
71
|
+
// Verify the headers contain cache-control
|
|
72
|
+
const calledOptions = fetchMock.mock.calls[0][1] as RequestInit;
|
|
73
|
+
const headers = calledOptions.headers as Record<string, string>;
|
|
74
|
+
|
|
75
|
+
expect(headers["Cache-Control"]).toBe("no-cache, no-store, must-revalidate");
|
|
76
|
+
expect(headers["Pragma"]).toBe("no-cache");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("fetchFromApi should NOT add cache-busting when bypassCDNCache is false/undefined", async () => {
|
|
80
|
+
// Mock global fetch
|
|
81
|
+
const fetchMock = vi.fn().mockResolvedValue({
|
|
82
|
+
ok: true,
|
|
83
|
+
json: () => Promise.resolve({ success: true, data: { toolProtections: {} } }),
|
|
84
|
+
});
|
|
85
|
+
global.fetch = fetchMock;
|
|
86
|
+
|
|
87
|
+
// Call fetchFromApi without bypassCDNCache
|
|
88
|
+
await (service as any).fetchFromApi(agentDid);
|
|
89
|
+
|
|
90
|
+
// Verify the URL does NOT contain cache-busting timestamp
|
|
91
|
+
const calledUrl = fetchMock.mock.calls[0][0] as string;
|
|
92
|
+
expect(calledUrl).not.toContain("?_t=");
|
|
93
|
+
|
|
94
|
+
// Verify no cache-control header
|
|
95
|
+
const calledOptions = fetchMock.mock.calls[0][1] as RequestInit;
|
|
96
|
+
const headers = calledOptions.headers as Record<string, string>;
|
|
97
|
+
expect(headers["Cache-Control"]).toBeUndefined();
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("cache should be empty after clearAndRefresh deletes it", async () => {
|
|
101
|
+
const cacheKey = `config:tool-protections:${projectId}`;
|
|
102
|
+
|
|
103
|
+
// Pre-populate cache
|
|
104
|
+
await cache.set(cacheKey, { toolProtections: { old: { requiresDelegation: false, requiredScopes: [] } } }, 300000);
|
|
105
|
+
|
|
106
|
+
// Verify cache has data
|
|
107
|
+
const before = await cache.get(cacheKey);
|
|
108
|
+
expect(before).not.toBeNull();
|
|
109
|
+
|
|
110
|
+
// Mock fetchFromApi to avoid network call
|
|
111
|
+
vi.spyOn(service as any, "fetchFromApi").mockResolvedValue({
|
|
112
|
+
success: true,
|
|
113
|
+
data: { toolProtections: {} },
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Clear and refresh
|
|
117
|
+
await service.clearAndRefresh(agentDid);
|
|
118
|
+
|
|
119
|
+
// Note: clearAndRefresh deletes then re-populates with fresh data
|
|
120
|
+
// But since our mock returns empty toolProtections, cache should have empty config
|
|
121
|
+
const after = await cache.get(cacheKey);
|
|
122
|
+
expect(after).toBeDefined();
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
|
|
@@ -108,20 +108,43 @@ export class OAuthConfigService {
|
|
|
108
108
|
throw new Error("Invalid API response: missing success or data field");
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
// Parse providers object
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
// Parse providers object with snake_case → camelCase mapping
|
|
112
|
+
// AgentShield API may return snake_case fields, but OAuthProvider interface uses camelCase
|
|
113
|
+
const rawProviders = result.data.providers || {};
|
|
114
|
+
if (typeof rawProviders !== "object" || Array.isArray(rawProviders)) {
|
|
114
115
|
throw new Error(
|
|
115
116
|
"Invalid API response: providers must be an object, not an array"
|
|
116
117
|
);
|
|
117
118
|
}
|
|
118
119
|
|
|
120
|
+
// Map each provider's fields from snake_case to camelCase
|
|
121
|
+
const providers: Record<string, OAuthProvider> = {};
|
|
122
|
+
for (const [name, raw] of Object.entries(rawProviders)) {
|
|
123
|
+
const p = raw as Record<string, unknown>;
|
|
124
|
+
providers[name] = {
|
|
125
|
+
clientId: (p.clientId ?? p.client_id ?? "") as string,
|
|
126
|
+
clientSecret: (p.clientSecret ?? p.client_secret ?? null) as string | null,
|
|
127
|
+
authorizationUrl: (p.authorizationUrl ?? p.authorization_url ?? "") as string,
|
|
128
|
+
tokenUrl: (p.tokenUrl ?? p.token_url ?? "") as string,
|
|
129
|
+
userInfoUrl: (p.userInfoUrl ?? p.user_info_url) as string | undefined,
|
|
130
|
+
supportsPKCE: (p.supportsPKCE ?? p.supports_pkce ?? false) as boolean,
|
|
131
|
+
requiresClientSecret: (p.requiresClientSecret ?? p.requires_client_secret ?? true) as boolean,
|
|
132
|
+
scopes: (p.scopes ?? []) as string[],
|
|
133
|
+
defaultScopes: (p.defaultScopes ?? p.default_scopes) as string[] | undefined,
|
|
134
|
+
proxyMode: (p.proxyMode ?? p.proxy_mode ?? false) as boolean,
|
|
135
|
+
customParams: (p.customParams ?? p.custom_params) as Record<string, string> | undefined,
|
|
136
|
+
tokenEndpointAuthMethod: (p.tokenEndpointAuthMethod ?? p.token_endpoint_auth_method) as "client_secret_post" | "client_secret_basic" | undefined,
|
|
137
|
+
responseType: (p.responseType ?? p.response_type) as string | undefined,
|
|
138
|
+
grantType: (p.grantType ?? p.grant_type) as string | undefined,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
119
142
|
// Build OAuthConfig object
|
|
120
143
|
// Extract configuredProvider from API response - this indicates which provider
|
|
121
144
|
// the user has actually configured in AgentShield dashboard
|
|
122
|
-
const configuredProvider = result.data.configuredProvider
|
|
145
|
+
const configuredProvider = result.data.configuredProvider ?? (result.data as any).configured_provider ?? null;
|
|
123
146
|
const config: OAuthConfig = {
|
|
124
|
-
providers
|
|
147
|
+
providers,
|
|
125
148
|
configuredProvider,
|
|
126
149
|
};
|
|
127
150
|
|