@1mcp/agent 0.29.2 → 0.30.0-beta1

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.
Files changed (127) hide show
  1. package/build/commands/serve/index.d.ts +58 -0
  2. package/build/commands/serve/index.d.ts.map +1 -1
  3. package/build/commands/serve/index.js +70 -0
  4. package/build/commands/serve/index.js.map +1 -1
  5. package/build/commands/serve/serve.d.ts +11 -0
  6. package/build/commands/serve/serve.d.ts.map +1 -1
  7. package/build/commands/serve/serve.js +73 -1
  8. package/build/commands/serve/serve.js.map +1 -1
  9. package/build/constants/mcp.d.ts +1 -1
  10. package/build/constants/mcp.d.ts.map +1 -1
  11. package/build/constants/mcp.js +1 -1
  12. package/build/constants/mcp.js.map +1 -1
  13. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -1
  14. package/build/core/capabilities/capabilityAggregator.js +42 -18
  15. package/build/core/capabilities/capabilityAggregator.js.map +1 -1
  16. package/build/core/capabilities/capabilityManager.d.ts +3 -2
  17. package/build/core/capabilities/capabilityManager.d.ts.map +1 -1
  18. package/build/core/capabilities/capabilityManager.js +3 -3
  19. package/build/core/capabilities/capabilityManager.js.map +1 -1
  20. package/build/core/capabilities/internal/installationTools.d.ts.map +1 -1
  21. package/build/core/capabilities/internal/installationTools.js +4 -0
  22. package/build/core/capabilities/internal/installationTools.js.map +1 -1
  23. package/build/core/capabilities/internal/lazyTools.d.ts +11 -0
  24. package/build/core/capabilities/internal/lazyTools.d.ts.map +1 -0
  25. package/build/core/capabilities/internal/lazyTools.js +48 -0
  26. package/build/core/capabilities/internal/lazyTools.js.map +1 -0
  27. package/build/core/capabilities/internal/managementTools.d.ts.map +1 -1
  28. package/build/core/capabilities/internal/managementTools.js +9 -0
  29. package/build/core/capabilities/internal/managementTools.js.map +1 -1
  30. package/build/core/capabilities/internalCapabilitiesProvider.d.ts +7 -1
  31. package/build/core/capabilities/internalCapabilitiesProvider.d.ts.map +1 -1
  32. package/build/core/capabilities/internalCapabilitiesProvider.js +31 -2
  33. package/build/core/capabilities/internalCapabilitiesProvider.js.map +1 -1
  34. package/build/core/capabilities/lazyLoadingOrchestrator.d.ts +175 -0
  35. package/build/core/capabilities/lazyLoadingOrchestrator.d.ts.map +1 -0
  36. package/build/core/capabilities/lazyLoadingOrchestrator.js +515 -0
  37. package/build/core/capabilities/lazyLoadingOrchestrator.js.map +1 -0
  38. package/build/core/capabilities/metaToolProvider.d.ts +118 -0
  39. package/build/core/capabilities/metaToolProvider.d.ts.map +1 -0
  40. package/build/core/capabilities/metaToolProvider.js +374 -0
  41. package/build/core/capabilities/metaToolProvider.js.map +1 -0
  42. package/build/core/capabilities/schemaCache.d.ts +124 -0
  43. package/build/core/capabilities/schemaCache.d.ts.map +1 -0
  44. package/build/core/capabilities/schemaCache.js +248 -0
  45. package/build/core/capabilities/schemaCache.js.map +1 -0
  46. package/build/core/capabilities/schemas/metaToolSchemas.d.ts +92 -0
  47. package/build/core/capabilities/schemas/metaToolSchemas.d.ts.map +1 -0
  48. package/build/core/capabilities/schemas/metaToolSchemas.js +68 -0
  49. package/build/core/capabilities/schemas/metaToolSchemas.js.map +1 -0
  50. package/build/core/capabilities/toolRegistry.d.ts +140 -0
  51. package/build/core/capabilities/toolRegistry.d.ts.map +1 -0
  52. package/build/core/capabilities/toolRegistry.js +284 -0
  53. package/build/core/capabilities/toolRegistry.js.map +1 -0
  54. package/build/core/client/clientManager.d.ts.map +1 -1
  55. package/build/core/client/clientManager.js +11 -5
  56. package/build/core/client/clientManager.js.map +1 -1
  57. package/build/core/flags/flagManager.d.ts.map +1 -1
  58. package/build/core/flags/flagManager.js +14 -1
  59. package/build/core/flags/flagManager.js.map +1 -1
  60. package/build/core/instructions/instructionAggregator.d.ts +21 -0
  61. package/build/core/instructions/instructionAggregator.d.ts.map +1 -1
  62. package/build/core/instructions/instructionAggregator.js +78 -3
  63. package/build/core/instructions/instructionAggregator.js.map +1 -1
  64. package/build/core/instructions/templateTypes.d.ts +40 -1
  65. package/build/core/instructions/templateTypes.d.ts.map +1 -1
  66. package/build/core/instructions/templateTypes.js +70 -0
  67. package/build/core/instructions/templateTypes.js.map +1 -1
  68. package/build/core/protocol/requestHandlers.d.ts +2 -1
  69. package/build/core/protocol/requestHandlers.d.ts.map +1 -1
  70. package/build/core/protocol/requestHandlers.js +112 -84
  71. package/build/core/protocol/requestHandlers.js.map +1 -1
  72. package/build/core/server/adapters/ExternalServerAdapter.d.ts +38 -0
  73. package/build/core/server/adapters/ExternalServerAdapter.d.ts.map +1 -0
  74. package/build/core/server/adapters/ExternalServerAdapter.js +50 -0
  75. package/build/core/server/adapters/ExternalServerAdapter.js.map +1 -0
  76. package/build/core/server/adapters/ServerRegistry.d.ts +63 -0
  77. package/build/core/server/adapters/ServerRegistry.d.ts.map +1 -0
  78. package/build/core/server/adapters/ServerRegistry.js +92 -0
  79. package/build/core/server/adapters/ServerRegistry.js.map +1 -0
  80. package/build/core/server/adapters/TemplateServerAdapter.d.ts +47 -0
  81. package/build/core/server/adapters/TemplateServerAdapter.d.ts.map +1 -0
  82. package/build/core/server/adapters/TemplateServerAdapter.js +99 -0
  83. package/build/core/server/adapters/TemplateServerAdapter.js.map +1 -0
  84. package/build/core/server/adapters/index.d.ts +5 -0
  85. package/build/core/server/adapters/index.d.ts.map +1 -0
  86. package/build/core/server/adapters/index.js +6 -0
  87. package/build/core/server/adapters/index.js.map +1 -0
  88. package/build/core/server/adapters/types.d.ts +122 -0
  89. package/build/core/server/adapters/types.d.ts.map +1 -0
  90. package/build/core/server/adapters/types.js +48 -0
  91. package/build/core/server/adapters/types.js.map +1 -0
  92. package/build/core/server/agentConfig.d.ts +19 -0
  93. package/build/core/server/agentConfig.d.ts.map +1 -1
  94. package/build/core/server/agentConfig.js +19 -0
  95. package/build/core/server/agentConfig.js.map +1 -1
  96. package/build/core/server/connectionManager.d.ts +17 -1
  97. package/build/core/server/connectionManager.d.ts.map +1 -1
  98. package/build/core/server/connectionManager.js +65 -5
  99. package/build/core/server/connectionManager.js.map +1 -1
  100. package/build/core/server/connectionResolver.d.ts +81 -0
  101. package/build/core/server/connectionResolver.d.ts.map +1 -0
  102. package/build/core/server/connectionResolver.js +140 -0
  103. package/build/core/server/connectionResolver.js.map +1 -0
  104. package/build/core/server/serverManager.d.ts +13 -0
  105. package/build/core/server/serverManager.d.ts.map +1 -1
  106. package/build/core/server/serverManager.js +49 -2
  107. package/build/core/server/serverManager.js.map +1 -1
  108. package/build/core/server/templateServerManager.d.ts +16 -0
  109. package/build/core/server/templateServerManager.d.ts.map +1 -1
  110. package/build/core/server/templateServerManager.js +45 -0
  111. package/build/core/server/templateServerManager.js.map +1 -1
  112. package/build/domains/preset/manager/presetManager.d.ts +5 -0
  113. package/build/domains/preset/manager/presetManager.d.ts.map +1 -1
  114. package/build/domains/preset/manager/presetManager.js +7 -0
  115. package/build/domains/preset/manager/presetManager.js.map +1 -1
  116. package/build/logger/logger.d.ts +13 -0
  117. package/build/logger/logger.d.ts.map +1 -1
  118. package/build/logger/logger.js +41 -0
  119. package/build/logger/logger.js.map +1 -1
  120. package/build/server.d.ts +3 -0
  121. package/build/server.d.ts.map +1 -1
  122. package/build/server.js +32 -0
  123. package/build/server.js.map +1 -1
  124. package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -1
  125. package/build/transport/http/middlewares/tagsExtractor.js +71 -1
  126. package/build/transport/http/middlewares/tagsExtractor.js.map +1 -1
  127. package/package.json +1 -1
@@ -0,0 +1,515 @@
1
+ import { EventEmitter } from 'events';
2
+ import { MCP_URI_SEPARATOR } from '../../constants.js';
3
+ import { ConnectionResolver } from '../../core/server/connectionResolver.js';
4
+ import { ClientStatus } from '../../core/types/index.js';
5
+ import logger, { debugIf, errorIf } from '../../logger/logger.js';
6
+ import { CapabilityAggregator } from './capabilityAggregator.js';
7
+ import { MetaToolProvider } from './metaToolProvider.js';
8
+ import { SchemaCache } from './schemaCache.js';
9
+ import { ToolRegistry } from './toolRegistry.js';
10
+ /**
11
+ * LazyLoadingOrchestrator coordinates lazy loading of tool schemas.
12
+ *
13
+ * Uses composition pattern to combine:
14
+ * - ToolRegistry for lightweight tool metadata
15
+ * - SchemaCache for on-demand schema loading
16
+ * - MetaToolProvider for meta-tool exposure
17
+ * - CapabilityAggregator for full capabilities
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const orchestrator = new LazyLoadingOrchestrator(
22
+ * outboundConnections,
23
+ * agentConfig
24
+ * );
25
+ * await orchestrator.initialize();
26
+ * const capabilities = await orchestrator.getCapabilities();
27
+ * ```
28
+ */
29
+ export class LazyLoadingOrchestrator extends EventEmitter {
30
+ outboundConnections;
31
+ config;
32
+ toolRegistry;
33
+ schemaCache;
34
+ metaToolProvider;
35
+ capabilityAggregator;
36
+ isInitialized = false;
37
+ asyncOrchestrator;
38
+ // Session-specific filters for allowed servers (keyed by sessionId)
39
+ sessionAllowedServers = new Map();
40
+ connectionResolver;
41
+ constructor(outboundConnections, config, asyncOrchestrator, templateHashProvider) {
42
+ super();
43
+ this.outboundConnections = outboundConnections;
44
+ this.config = config;
45
+ this.asyncOrchestrator = asyncOrchestrator;
46
+ this.connectionResolver = new ConnectionResolver(outboundConnections, templateHashProvider);
47
+ // Get lazy loading config
48
+ const lazyConfig = config.get('lazyLoading');
49
+ // Initialize schema cache
50
+ const cacheConfig = {
51
+ maxEntries: lazyConfig.cache.maxEntries,
52
+ ttlMs: lazyConfig.cache.ttlMs,
53
+ };
54
+ this.schemaCache = new SchemaCache(cacheConfig);
55
+ // Initialize tool registry (empty initially)
56
+ this.toolRegistry = ToolRegistry.empty();
57
+ // Initialize capability aggregator (for resources/prompts and full mode)
58
+ this.capabilityAggregator = new CapabilityAggregator(outboundConnections);
59
+ // Initialize meta-tool provider if lazy loading is enabled
60
+ if (lazyConfig.enabled) {
61
+ this.metaToolProvider = new MetaToolProvider(() => this.toolRegistry, this.schemaCache, outboundConnections, this.loadSchemaFromServer.bind(this), undefined, // allowedServers - set later per session
62
+ templateHashProvider);
63
+ }
64
+ // Listen to server-capabilities-updated events from async orchestrator
65
+ if (asyncOrchestrator) {
66
+ asyncOrchestrator.on('server-capabilities-updated', async (serverName) => {
67
+ try {
68
+ debugIf(() => ({ message: `Server ${serverName} capabilities updated, refreshing tool registry` }));
69
+ await this.refreshCapabilities();
70
+ }
71
+ catch (error) {
72
+ const errorMessage = error instanceof Error ? error.message : String(error);
73
+ errorIf(() => ({
74
+ message: 'Failed to refresh capabilities after server update',
75
+ meta: { serverName, error: errorMessage },
76
+ }));
77
+ }
78
+ });
79
+ }
80
+ this.setMaxListeners(50);
81
+ }
82
+ /**
83
+ * Initialize the orchestrator
84
+ */
85
+ async initialize() {
86
+ if (this.isInitialized) {
87
+ debugIf('LazyLoadingOrchestrator already initialized');
88
+ return;
89
+ }
90
+ const lazyConfig = this.config.get('lazyLoading');
91
+ // Update capabilities first
92
+ await this.capabilityAggregator.updateCapabilities();
93
+ if (lazyConfig.enabled) {
94
+ // Build tool registry from aggregated capabilities
95
+ await this.buildToolRegistry();
96
+ // Preload tools based on configuration
97
+ if (lazyConfig.preload.patterns.length > 0 || lazyConfig.preload.keywords.length > 0) {
98
+ await this.preloadTools();
99
+ }
100
+ logger.info(`LazyLoadingOrchestrator initialized with ${this.toolRegistry.size()} tools`);
101
+ }
102
+ else {
103
+ logger.info('LazyLoadingOrchestrator initialized in full mode (disabled)');
104
+ }
105
+ this.isInitialized = true;
106
+ }
107
+ /**
108
+ * Build tool registry from aggregated capabilities
109
+ */
110
+ async buildToolRegistry() {
111
+ // Build tools map for registry by fetching tools directly from each connection
112
+ const toolsMap = new Map();
113
+ const serverTags = new Map();
114
+ const failedServers = [];
115
+ for (const [serverName, connection] of this.outboundConnections.entries()) {
116
+ if (!connection.client || connection.status !== ClientStatus.Connected) {
117
+ continue;
118
+ }
119
+ try {
120
+ // Get tools directly from this server's client
121
+ const toolsResult = await connection.client.listTools();
122
+ const serverTools = toolsResult.tools || [];
123
+ if (serverTools.length > 0) {
124
+ // CRITICAL: Use connection.name instead of map key for server identification
125
+ // Map keys for template servers include hash suffix (e.g., "template-server:abc123")
126
+ // but connection.name is the clean name (e.g., "template-server")
127
+ // This ensures tool registry uses consistent server names
128
+ const effectiveServerName = connection.name || serverName;
129
+ toolsMap.set(effectiveServerName, serverTools);
130
+ // Get tags from transport
131
+ const tags = connection.transport.tags || [];
132
+ serverTags.set(effectiveServerName, tags);
133
+ }
134
+ }
135
+ catch (error) {
136
+ const errorMessage = error instanceof Error ? error.message : String(error);
137
+ errorIf(() => ({
138
+ message: 'Failed to list tools from server during registry build',
139
+ meta: { serverName, error: errorMessage },
140
+ }));
141
+ failedServers.push({ server: serverName, error: errorMessage });
142
+ }
143
+ }
144
+ // Warn if significant failures
145
+ if (failedServers.length > 0) {
146
+ const failureRate = failedServers.length / this.outboundConnections.size;
147
+ if (failureRate > 0.5) {
148
+ errorIf(() => ({
149
+ message: `Tool registry built with ${failedServers.length}/${this.outboundConnections.size} server failures`,
150
+ meta: { failedServers },
151
+ }));
152
+ }
153
+ }
154
+ this.toolRegistry = ToolRegistry.fromToolsMap(toolsMap, serverTags);
155
+ }
156
+ /**
157
+ * Preload tools based on configuration patterns
158
+ */
159
+ async preloadTools() {
160
+ const lazyConfig = this.config.get('lazyLoading');
161
+ const preload = lazyConfig.preload;
162
+ if (preload.patterns.length === 0 && preload.keywords.length === 0) {
163
+ return;
164
+ }
165
+ // Find tools to preload
166
+ const toolsToPreload = [];
167
+ const allTools = this.toolRegistry.listTools({}).tools;
168
+ for (const tool of allTools) {
169
+ // Check server pattern match
170
+ const serverMatch = preload.patterns.some((pattern) => {
171
+ try {
172
+ // Escape special regex chars and convert glob patterns: * -> .*, ? -> .
173
+ const escaped = pattern
174
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
175
+ .replace(/\*/g, '.*')
176
+ .replace(/\?/g, '.');
177
+ const regex = new RegExp(`^${escaped}$`);
178
+ return regex.test(tool.server);
179
+ }
180
+ catch (error) {
181
+ errorIf(() => ({
182
+ message: 'Invalid pattern in preload configuration',
183
+ meta: { pattern, error },
184
+ }));
185
+ return false;
186
+ }
187
+ });
188
+ // Check keyword match
189
+ const keywordMatch = preload.keywords.some((keyword) => tool.name.toLowerCase().includes(keyword.toLowerCase()));
190
+ if (serverMatch || keywordMatch) {
191
+ toolsToPreload.push({
192
+ server: tool.server,
193
+ toolName: tool.name,
194
+ });
195
+ }
196
+ }
197
+ if (toolsToPreload.length === 0) {
198
+ debugIf('No tools matched preload patterns');
199
+ return;
200
+ }
201
+ debugIf(() => ({ message: `Preloading ${toolsToPreload.length} tools` }));
202
+ // Preload schemas
203
+ await this.schemaCache.preload(toolsToPreload, async (server, toolName) => {
204
+ return this.loadSchemaFromServer(server, toolName);
205
+ });
206
+ logger.info(`Preloaded ${toolsToPreload.length} tool schemas`);
207
+ }
208
+ /**
209
+ * Load tool schema from upstream server
210
+ */
211
+ async loadSchemaFromServer(server, toolName) {
212
+ // Use ConnectionResolver to find the connection (handles template servers with hash-suffixed keys)
213
+ const result = this.connectionResolver.findByServerName(server);
214
+ if (!result || !result.connection.client) {
215
+ throw new Error(`Server not connected: ${server}`);
216
+ }
217
+ // Get the tool from server's listTools
218
+ const toolsResult = await result.connection.client.listTools();
219
+ const tool = toolsResult.tools.find((t) => t.name === toolName);
220
+ if (!tool) {
221
+ throw new Error(`Tool not found: ${server}:${toolName}`);
222
+ }
223
+ return tool;
224
+ }
225
+ /**
226
+ * Preload a specific list of tools (for internal management tool)
227
+ */
228
+ async preloadToolsList(tools) {
229
+ if (tools.length === 0) {
230
+ debugIf('No tools to preload');
231
+ return;
232
+ }
233
+ debugIf(() => ({ message: `Preloading ${tools.length} specific tools` }));
234
+ // Preload schemas
235
+ await this.schemaCache.preload(tools, async (server, toolName) => {
236
+ return this.loadSchemaFromServer(server, toolName);
237
+ });
238
+ logger.info(`Preloaded ${tools.length} tool schemas`);
239
+ }
240
+ /**
241
+ * Get aggregated capabilities based on lazy loading configuration
242
+ */
243
+ async getCapabilities() {
244
+ const lazyConfig = this.config.get('lazyLoading');
245
+ const baseCapabilities = this.capabilityAggregator.getCurrentCapabilities();
246
+ if (!lazyConfig.enabled) {
247
+ // Disabled: return all capabilities normally
248
+ return baseCapabilities;
249
+ }
250
+ // Meta-tool mode: only 3 meta-tools + all resources/prompts
251
+ const metaTools = this.metaToolProvider?.getMetaTools() || [];
252
+ return {
253
+ tools: metaTools,
254
+ resources: baseCapabilities.resources,
255
+ prompts: baseCapabilities.prompts,
256
+ readyServers: baseCapabilities.readyServers,
257
+ timestamp: new Date(),
258
+ };
259
+ }
260
+ /**
261
+ * Get aggregated capabilities for a filtered set of servers
262
+ *
263
+ * This method stores session-specific server filters that will be used by:
264
+ * - callMetaTool() to filter tool listings via MetaToolProvider
265
+ *
266
+ * The filter persists for the session and can be cleared by calling clearSessionFilter().
267
+ *
268
+ * @param filteredServerNames - Set of server names to include in capabilities
269
+ * @param sessionId - Optional session ID to associate the filter with
270
+ * @returns Aggregated capabilities filtered to only include specified servers
271
+ */
272
+ async getCapabilitiesForFilteredServers(filteredServerNames, sessionId) {
273
+ // Store the session-specific filter
274
+ this.sessionAllowedServers.set(sessionId, filteredServerNames);
275
+ // Get the base capabilities
276
+ const lazyConfig = this.config.get('lazyLoading');
277
+ const baseCapabilities = this.capabilityAggregator.getCurrentCapabilities();
278
+ if (!lazyConfig.enabled) {
279
+ // Disabled: return all capabilities normally (filtering not applied)
280
+ return baseCapabilities;
281
+ }
282
+ // Meta-tools are always included (they're gateway tools)
283
+ // The filter will be applied when tools are listed via meta-tools
284
+ const metaTools = this.metaToolProvider?.getMetaTools() || [];
285
+ // Filter resources to only include those from filtered servers
286
+ const filteredResources = baseCapabilities.resources.filter((resource) => {
287
+ const resourceName = resource.name;
288
+ // Resources are namespaced with server prefix (e.g., "server_1mcp_resource")
289
+ // Extract server name from resource URI
290
+ const parts = resourceName.split(MCP_URI_SEPARATOR);
291
+ const serverName = parts[0];
292
+ return filteredServerNames.has(serverName);
293
+ });
294
+ // Filter prompts to only include those from filtered servers
295
+ const filteredPrompts = baseCapabilities.prompts.filter((prompt) => {
296
+ const promptName = prompt.name;
297
+ // Prompts are namespaced with server prefix (e.g., "server_1mcp_prompt")
298
+ const parts = promptName.split(MCP_URI_SEPARATOR);
299
+ const serverName = parts[0];
300
+ return filteredServerNames.has(serverName);
301
+ });
302
+ // Filter ready servers
303
+ const filteredReadyServers = baseCapabilities.readyServers.filter((serverName) => filteredServerNames.has(serverName));
304
+ return {
305
+ tools: metaTools,
306
+ resources: filteredResources,
307
+ prompts: filteredPrompts,
308
+ readyServers: filteredReadyServers,
309
+ timestamp: new Date(),
310
+ };
311
+ }
312
+ /**
313
+ * Clear the session-specific filter
314
+ * @param sessionId - Optional session ID whose filter should be cleared
315
+ */
316
+ clearSessionFilter(sessionId) {
317
+ this.sessionAllowedServers.delete(sessionId);
318
+ }
319
+ /**
320
+ * Get the allowed servers for a specific session
321
+ * @param sessionId - Optional session ID
322
+ * @returns Set of allowed server names, or undefined if no filter is set
323
+ */
324
+ getSessionAllowedServers(sessionId) {
325
+ return this.sessionAllowedServers.get(sessionId);
326
+ }
327
+ /**
328
+ * Handle listChanged notifications based on lazy loading state
329
+ */
330
+ shouldNotifyListChanged() {
331
+ const lazyConfig = this.config.get('lazyLoading');
332
+ if (lazyConfig.enabled) {
333
+ // No listChanged in meta-tool mode (static tool list)
334
+ return false;
335
+ }
336
+ // Standard MCP behavior when disabled
337
+ return true;
338
+ }
339
+ /**
340
+ * Refresh capabilities from all servers
341
+ */
342
+ async refreshCapabilities() {
343
+ await this.capabilityAggregator.updateCapabilities();
344
+ if (this.config.get('lazyLoading').enabled) {
345
+ await this.buildToolRegistry();
346
+ }
347
+ return this.getCapabilities();
348
+ }
349
+ /**
350
+ * Get lazy loading statistics
351
+ */
352
+ getStatistics() {
353
+ const lazyConfig = this.config.get('lazyLoading');
354
+ const cacheStats = this.schemaCache.getStats();
355
+ const registeredCount = this.toolRegistry.size();
356
+ // Calculate token savings
357
+ const currentTokens = this.calculateCurrentTokens();
358
+ const fullLoadTokens = this.calculateFullLoadTokens();
359
+ const savedTokens = fullLoadTokens - currentTokens;
360
+ const savingsPercentage = fullLoadTokens > 0 ? (savedTokens / fullLoadTokens) * 100 : 0;
361
+ return {
362
+ enabled: lazyConfig.enabled,
363
+ registeredToolCount: registeredCount,
364
+ loadedToolCount: this.schemaCache.size(),
365
+ cachedToolCount: this.schemaCache.size(),
366
+ cacheHitRate: cacheStats.hitRate,
367
+ tokenSavings: {
368
+ currentTokens,
369
+ fullLoadTokens,
370
+ savedTokens,
371
+ savingsPercentage,
372
+ },
373
+ };
374
+ }
375
+ /**
376
+ * Calculate current token usage
377
+ */
378
+ calculateCurrentTokens() {
379
+ const lazyConfig = this.config.get('lazyLoading');
380
+ if (!lazyConfig.enabled) {
381
+ return this.calculateFullLoadTokens();
382
+ }
383
+ // Meta-tools: ~300 tokens
384
+ const metaToolTokens = 300;
385
+ // Tools in registry: names + descriptions only (~10 tokens per tool)
386
+ const registryTokens = this.toolRegistry.size() * 10;
387
+ // Resources and prompts: loaded fully
388
+ const capabilities = this.capabilityAggregator.getCurrentCapabilities();
389
+ const resourcesTokens = capabilities.resources.length * 50; // ~50 tokens per resource
390
+ const promptsTokens = capabilities.prompts.length * 50; // ~50 tokens per prompt
391
+ return metaToolTokens + registryTokens + resourcesTokens + promptsTokens;
392
+ }
393
+ /**
394
+ * Calculate full load token usage
395
+ */
396
+ calculateFullLoadTokens() {
397
+ const capabilities = this.capabilityAggregator.getCurrentCapabilities();
398
+ // Tools with schemas: ~300 tokens per tool (complex schemas)
399
+ const toolTokens = capabilities.tools.length * 300;
400
+ // Resources: ~50 tokens per resource
401
+ const resourcesTokens = capabilities.resources.length * 50;
402
+ // Prompts: ~50 tokens per prompt
403
+ const promptsTokens = capabilities.prompts.length * 50;
404
+ return toolTokens + resourcesTokens + promptsTokens;
405
+ }
406
+ /**
407
+ * Call a meta-tool if in meta-tool mode
408
+ * @param name - Meta-tool name
409
+ * @param args - Meta-tool arguments
410
+ * @param sessionId - Optional session ID to retrieve filter for
411
+ */
412
+ async callMetaTool(name, args, sessionId) {
413
+ if (!this.metaToolProvider) {
414
+ throw new Error('Meta-tool provider not initialized');
415
+ }
416
+ // Get the session-specific filter and apply it to the meta-tool provider
417
+ const allowedServers = this.sessionAllowedServers.get(sessionId);
418
+ if (allowedServers) {
419
+ this.metaToolProvider.setAllowedServers(allowedServers);
420
+ }
421
+ else {
422
+ this.metaToolProvider.setAllowedServers(undefined);
423
+ }
424
+ return this.metaToolProvider.callMetaTool(name, args);
425
+ }
426
+ /**
427
+ * Check if a tool call is a meta-tool
428
+ */
429
+ isMetaTool(name) {
430
+ return name === 'tool_list' || name === 'tool_schema' || name === 'tool_invoke';
431
+ }
432
+ /**
433
+ * Get the tool registry
434
+ */
435
+ getToolRegistry() {
436
+ return this.toolRegistry;
437
+ }
438
+ /**
439
+ * Get the schema cache
440
+ */
441
+ getSchemaCache() {
442
+ return this.schemaCache;
443
+ }
444
+ /**
445
+ * Check if lazy loading is enabled
446
+ */
447
+ isEnabled() {
448
+ return this.config.get('lazyLoading').enabled;
449
+ }
450
+ /**
451
+ * Health check for lazy loading subsystem
452
+ * @returns Health status with details
453
+ */
454
+ getHealthStatus() {
455
+ const lazyConfig = this.config.get('lazyLoading');
456
+ const cacheStats = this.schemaCache.getStats();
457
+ const cacheSize = this.schemaCache.size();
458
+ const issues = [];
459
+ // Check cache utilization (guard against division by zero)
460
+ const maxEntries = lazyConfig.cache.maxEntries;
461
+ const utilizationRate = maxEntries > 0 ? (cacheSize / maxEntries) * 100 : 0;
462
+ if (utilizationRate > 90) {
463
+ issues.push(`Cache utilization high: ${utilizationRate.toFixed(1)}%`);
464
+ }
465
+ // Check hit rate
466
+ const totalRequests = cacheStats.hits + cacheStats.misses;
467
+ const hitRate = totalRequests > 0 ? cacheStats.hitRate : 0;
468
+ // Only warn about low hit rate if we've had enough requests
469
+ if (totalRequests > 100 && hitRate < 50) {
470
+ issues.push(`Low cache hit rate: ${hitRate.toFixed(1)}%`);
471
+ }
472
+ // Check eviction rate
473
+ if (cacheStats.evictions > 100) {
474
+ issues.push(`High eviction count: ${cacheStats.evictions}`);
475
+ }
476
+ return {
477
+ healthy: issues.length === 0,
478
+ enabled: lazyConfig.enabled,
479
+ cache: {
480
+ size: cacheSize,
481
+ maxEntries: lazyConfig.cache.maxEntries,
482
+ utilizationRate,
483
+ },
484
+ stats: {
485
+ hitRate,
486
+ coalescedRequests: cacheStats.coalesced,
487
+ evictions: cacheStats.evictions,
488
+ },
489
+ issues,
490
+ };
491
+ }
492
+ /**
493
+ * Log periodic lazy loading statistics (for monitoring and observability)
494
+ * @param forceLog - Force logging even if debug mode is off
495
+ */
496
+ logStatistics(forceLog = false) {
497
+ const stats = this.getStatistics();
498
+ const health = this.getHealthStatus();
499
+ const message = `LazyLoading stats: ` +
500
+ `enabled=${stats.enabled}, ` +
501
+ `tools=${stats.registeredToolCount}, cached=${stats.cachedToolCount}, ` +
502
+ `tokenSavings=${stats.tokenSavings.savingsPercentage.toFixed(1)}%, ` +
503
+ `cacheHitRate=${stats.cacheHitRate.toFixed(1)}%, ` +
504
+ `coalesced=${health.stats.coalescedRequests}, ` +
505
+ `health=${health.healthy ? 'OK' : 'WARN'}` +
506
+ (health.issues.length > 0 ? ` [${health.issues.join(', ')}]` : '');
507
+ if (forceLog) {
508
+ logger.info(message);
509
+ }
510
+ else {
511
+ debugIf(message);
512
+ }
513
+ }
514
+ }
515
+ //# sourceMappingURL=lazyLoadingOrchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazyLoadingOrchestrator.js","sourceRoot":"","sources":["../../../src/core/capabilities/lazyLoadingOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAwB,MAAM,wCAAwC,CAAC;AAClG,OAAO,EAAE,YAAY,EAAuB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAA0B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAmBjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IAC/C,mBAAmB,CAAsB;IACzC,MAAM,CAAqB;IAC3B,YAAY,CAAe;IAC3B,WAAW,CAAc;IACzB,gBAAgB,CAAoB;IACpC,oBAAoB,CAAuB;IAC3C,aAAa,GAAY,KAAK,CAAC;IAC/B,iBAAiB,CAA4B;IACrD,oEAAoE;IAC5D,qBAAqB,GAAyC,IAAI,GAAG,EAAE,CAAC;IACxE,kBAAkB,CAAqB;IAE/C,YACE,mBAAwC,EACxC,MAA0B,EAC1B,iBAA4C,EAC5C,oBAA2C;QAE3C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QAE5F,0BAA0B;QAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAE7C,0BAA0B;QAC1B,MAAM,WAAW,GAAsB;YACrC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU;YACvC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK;SAC9B,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QAEhD,6CAA6C;QAC7C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QAEzC,yEAAyE;QACzE,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QAE1E,2DAA2D;QAC3D,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAC1C,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EACvB,IAAI,CAAC,WAAW,EAChB,mBAAmB,EACnB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EACpC,SAAS,EAAE,yCAAyC;YACpD,oBAAoB,CACrB,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,IAAI,iBAAiB,EAAE,CAAC;YACtB,iBAAiB,CAAC,EAAE,CAAC,6BAA6B,EAAE,KAAK,EAAE,UAAkB,EAAE,EAAE;gBAC/E,IAAI,CAAC;oBACH,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,UAAU,iDAAiD,EAAE,CAAC,CAAC,CAAC;oBACpG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACnC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;wBACb,OAAO,EAAE,oDAAoD;wBAC7D,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;qBAC1C,CAAC,CAAC,CAAC;gBACN,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,6CAA6C,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;QAErD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,mDAAmD;YACnD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE/B,uCAAuC;YACvC,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrF,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,4CAA4C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB;QAC7B,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC/C,MAAM,aAAa,GAA6C,EAAE,CAAC;QAEnE,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1E,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;gBACvE,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,+CAA+C;gBAC/C,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACxD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;gBAE5C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,6EAA6E;oBAC7E,qFAAqF;oBACrF,kEAAkE;oBAClE,0DAA0D;oBAC1D,MAAM,mBAAmB,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC;oBAC1D,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;oBAE/C,0BAA0B;oBAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC7C,UAAU,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBACb,OAAO,EAAE,wDAAwD;oBACjE,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;iBAC1C,CAAC,CAAC,CAAC;gBACJ,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACzE,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBACb,OAAO,EAAE,4BAA4B,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,kBAAkB;oBAC5G,IAAI,EAAE,EAAE,aAAa,EAAE;iBACxB,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAEnC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,cAAc,GAAgD,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;QAEvD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,6BAA6B;YAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpD,IAAI,CAAC;oBACH,wEAAwE;oBACxE,MAAM,OAAO,GAAG,OAAO;yBACpB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;yBACpC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;yBACpB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACvB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;oBACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;wBACb,OAAO,EAAE,0CAA0C;wBACnD,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;qBACzB,CAAC,CAAC,CAAC;oBACJ,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAEjH,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;gBAChC,cAAc,CAAC,IAAI,CAAC;oBAClB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,mCAAmC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,cAAc,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE1E,kBAAkB;QAClB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YACxE,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,aAAa,cAAc,CAAC,MAAM,eAAe,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,QAAgB;QACjE,mGAAmG;QACnG,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,uCAAuC;QACvC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAEhE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,KAAkD;QAC9E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,KAAK,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAE1E,kBAAkB;QAClB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YAC/D,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,MAAM,eAAe,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;QAE5E,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,6CAA6C;YAC7C,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,4DAA4D;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAE9D,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,gBAAgB,CAAC,SAAS;YACrC,OAAO,EAAE,gBAAgB,CAAC,OAAO;YACjC,YAAY,EAAE,gBAAgB,CAAC,YAAY;YAC3C,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,iCAAiC,CAC5C,mBAAgC,EAChC,SAAkB;QAElB,oCAAoC;QACpC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAE/D,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;QAE5E,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,qEAAqE;YACrE,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,yDAAyD;QACzD,kEAAkE;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAE9D,+DAA+D;QAC/D,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;YACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YACnC,6EAA6E;YAC7E,wCAAwC;YACxC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,6DAA6D;QAC7D,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACjE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;YAC/B,yEAAyE;YACzE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAC/E,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CACpC,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EAAE,eAAe;YACxB,YAAY,EAAE,oBAAoB;YAClC,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,kBAAkB,CAAC,SAAkB;QAC1C,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACI,wBAAwB,CAAC,SAAkB;QAChD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACI,uBAAuB;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAElD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,sDAAsD;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,sCAAsC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,mBAAmB;QAC9B,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;QAErD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAEjD,0BAA0B;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,cAAc,GAAG,aAAa,CAAC;QACnD,MAAM,iBAAiB,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAExF,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,mBAAmB,EAAE,eAAe;YACpC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACxC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACxC,YAAY,EAAE,UAAU,CAAC,OAAO;YAChC,YAAY,EAAE;gBACZ,aAAa;gBACb,cAAc;gBACd,WAAW;gBACX,iBAAiB;aAClB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAElD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACxC,CAAC;QAED,0BAA0B;QAC1B,MAAM,cAAc,GAAG,GAAG,CAAC;QAE3B,qEAAqE;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAErD,sCAAsC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;QACxE,MAAM,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,0BAA0B;QACtF,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,wBAAwB;QAEhF,OAAO,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,CAAC;IAC3E,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;QAExE,6DAA6D;QAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAEnD,qCAAqC;QACrC,MAAM,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;QAE3D,iCAAiC;QACjC,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;QAEvD,OAAO,UAAU,GAAG,eAAe,GAAG,aAAa,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,IAAa,EAAE,SAAkB;QACvE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,yEAAyE;QACzE,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEjE,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,IAAY;QAC5B,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,aAAa,CAAC;IAClF,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC;IAChD,CAAC;IAED;;;OAGG;IACI,eAAe;QAepB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,2DAA2D;QAC3D,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;QAC/C,MAAM,eAAe,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,eAAe,GAAG,EAAE,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,2BAA2B,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC;QAED,iBAAiB;QACjB,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;QAC1D,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,4DAA4D;QAC5D,IAAI,aAAa,GAAG,GAAG,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC;QAED,sBAAsB;QACtB,IAAI,UAAU,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU;gBACvC,eAAe;aAChB;YACD,KAAK,EAAE;gBACL,OAAO;gBACP,iBAAiB,EAAE,UAAU,CAAC,SAAS;gBACvC,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC;YACD,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,QAAQ,GAAG,KAAK;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEtC,MAAM,OAAO,GACX,qBAAqB;YACrB,WAAW,KAAK,CAAC,OAAO,IAAI;YAC5B,SAAS,KAAK,CAAC,mBAAmB,YAAY,KAAK,CAAC,eAAe,IAAI;YACvE,gBAAgB,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YACpE,gBAAgB,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAClD,aAAa,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI;YAC/C,UAAU,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;YAC1C,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAErE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,118 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { TemplateHashProvider } from '../../core/server/connectionResolver.js';
3
+ import { OutboundConnections } from '../../core/types/index.js';
4
+ import { SchemaCache } from './schemaCache.js';
5
+ import { ToolInvokeOutput, ToolListOutput, ToolSchemaOutput } from './schemas/metaToolSchemas.js';
6
+ import { ToolRegistry } from './toolRegistry.js';
7
+ /**
8
+ * Result types for meta-tools
9
+ */
10
+ export type ListToolsResult = ToolListOutput;
11
+ export type DescribeToolResult = ToolSchemaOutput;
12
+ export type CallToolResult = ToolInvokeOutput;
13
+ /**
14
+ * Function to load tool schema from upstream server
15
+ */
16
+ export type SchemaLoader = (server: string, toolName: string) => Promise<Tool>;
17
+ /**
18
+ * Arguments for tool_list
19
+ */
20
+ export interface ListAvailableToolsArgs {
21
+ server?: string;
22
+ pattern?: string;
23
+ tag?: string;
24
+ limit?: number;
25
+ cursor?: string;
26
+ }
27
+ /**
28
+ * Arguments for tool_schema
29
+ */
30
+ export interface DescribeToolArgs {
31
+ server: string;
32
+ toolName: string;
33
+ }
34
+ /**
35
+ * Arguments for tool_invoke
36
+ */
37
+ export interface CallToolArgs {
38
+ server: string;
39
+ toolName: string;
40
+ args: unknown;
41
+ }
42
+ /**
43
+ * Function to get the current tool registry
44
+ * This allows the provider to always have access to the latest registry
45
+ */
46
+ export type ToolRegistryProvider = () => ToolRegistry;
47
+ /**
48
+ * MetaToolProvider provides meta-tools for lazy loading:
49
+ * 1. tool_list - List all tools (names + descriptions only)
50
+ * 2. tool_schema - Get full tool schema on-demand
51
+ * 3. tool_invoke - Invoke any tool by server and name
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const provider = new MetaToolProvider(() => toolRegistry, schemaCache, outboundConnections, loadSchemaFn);
56
+ * const tools = provider.getMetaTools();
57
+ * const result = await provider.callMetaTool('tool_list', { server: 'filesystem' });
58
+ * ```
59
+ */
60
+ export declare class MetaToolProvider {
61
+ private getToolRegistry;
62
+ private schemaCache;
63
+ private outboundConnections;
64
+ private loadSchema?;
65
+ private allowedServers?;
66
+ private connectionResolver;
67
+ constructor(getToolRegistry: ToolRegistryProvider, schemaCache: SchemaCache, outboundConnections: OutboundConnections, loadSchema?: SchemaLoader, allowedServers?: Set<string>, templateHashProvider?: TemplateHashProvider);
68
+ /**
69
+ * Resolve a clean server name to the actual connection key.
70
+ * Delegates to ConnectionResolver.findByServerName for unified resolution logic.
71
+ *
72
+ * @param cleanServerName - The clean server name (without hash suffix)
73
+ * @returns The actual connection key, or the original name if not found
74
+ */
75
+ private resolveConnectionKey;
76
+ /**
77
+ * Set the allowed servers filter
78
+ * @param serverNames - Set of server names to allow, or undefined to allow all
79
+ */
80
+ setAllowedServers(serverNames?: Set<string>): void;
81
+ /**
82
+ * Get the current tool registry, optionally filtered by allowed servers
83
+ */
84
+ private toolRegistry;
85
+ /**
86
+ * Get all available meta-tools (3 discovery tools)
87
+ */
88
+ getMetaTools(): Tool[];
89
+ /**
90
+ * Call a meta-tool by name
91
+ */
92
+ callMetaTool(name: string, args: unknown): Promise<ListToolsResult | DescribeToolResult | CallToolResult>;
93
+ /**
94
+ * Create the tool_list meta-tool
95
+ */
96
+ private createListToolsMetaTool;
97
+ /**
98
+ * Implement tool_list
99
+ */
100
+ private listAvailableTools;
101
+ /**
102
+ * Create the tool_schema meta-tool
103
+ */
104
+ private createDescribeToolMetaTool;
105
+ /**
106
+ * Implement tool_schema
107
+ */
108
+ private describeTool;
109
+ /**
110
+ * Create the tool_invoke meta-tool
111
+ */
112
+ private createCallToolMetaTool;
113
+ /**
114
+ * Implement tool_invoke
115
+ */
116
+ private callTool;
117
+ }
118
+ //# sourceMappingURL=metaToolProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaToolProvider.d.ts","sourceRoot":"","sources":["../../../src/core/capabilities/metaToolProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAsB,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAEL,gBAAgB,EAGhB,cAAc,EAGd,gBAAgB,EAEjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAgB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAC7C,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAClD,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,UAAU,CAAC,CAAe;IAClC,OAAO,CAAC,cAAc,CAAC,CAAc;IACrC,OAAO,CAAC,kBAAkB,CAAqB;gBAG7C,eAAe,EAAE,oBAAoB,EACrC,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,CAAC,EAAE,YAAY,EACzB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,oBAAoB,CAAC,EAAE,oBAAoB;IAU7C;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;;OAGG;IACI,iBAAiB,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;IAIzD;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACI,YAAY,IAAI,IAAI,EAAE;IAI7B;;OAEG;IACU,YAAY,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,eAAe,GAAG,kBAAkB,GAAG,cAAc,CAAC;IA4DjE;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;OAEG;YACW,kBAAkB;IA8ChC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IASlC;;OAEG;YACW,YAAY;IA4F1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;OAEG;YACW,QAAQ;CAkFvB"}