sub-agents-mcp 0.1.2

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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +265 -0
  3. package/dist/agents/AgentManager.d.ts +58 -0
  4. package/dist/agents/AgentManager.d.ts.map +1 -0
  5. package/dist/agents/AgentManager.js +182 -0
  6. package/dist/agents/AgentManager.js.map +1 -0
  7. package/dist/config/ServerConfig.d.ts +34 -0
  8. package/dist/config/ServerConfig.d.ts.map +1 -0
  9. package/dist/config/ServerConfig.js +54 -0
  10. package/dist/config/ServerConfig.js.map +1 -0
  11. package/dist/execution/AgentExecutor.d.ts +114 -0
  12. package/dist/execution/AgentExecutor.d.ts.map +1 -0
  13. package/dist/execution/AgentExecutor.js +234 -0
  14. package/dist/execution/AgentExecutor.js.map +1 -0
  15. package/dist/execution/ExecutionLimits.d.ts +141 -0
  16. package/dist/execution/ExecutionLimits.d.ts.map +1 -0
  17. package/dist/execution/ExecutionLimits.js +231 -0
  18. package/dist/execution/ExecutionLimits.js.map +1 -0
  19. package/dist/execution/McpRequestTimeout.d.ts +166 -0
  20. package/dist/execution/McpRequestTimeout.d.ts.map +1 -0
  21. package/dist/execution/McpRequestTimeout.js +278 -0
  22. package/dist/execution/McpRequestTimeout.js.map +1 -0
  23. package/dist/execution/PromptController.d.ts +92 -0
  24. package/dist/execution/PromptController.d.ts.map +1 -0
  25. package/dist/execution/PromptController.js +130 -0
  26. package/dist/execution/PromptController.js.map +1 -0
  27. package/dist/execution/StreamProcessor.d.ts +23 -0
  28. package/dist/execution/StreamProcessor.d.ts.map +1 -0
  29. package/dist/execution/StreamProcessor.js +51 -0
  30. package/dist/execution/StreamProcessor.js.map +1 -0
  31. package/dist/execution/TimeoutManager.d.ts +159 -0
  32. package/dist/execution/TimeoutManager.d.ts.map +1 -0
  33. package/dist/execution/TimeoutManager.js +283 -0
  34. package/dist/execution/TimeoutManager.js.map +1 -0
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +51 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/resources/AgentResources.d.ts +104 -0
  40. package/dist/resources/AgentResources.d.ts.map +1 -0
  41. package/dist/resources/AgentResources.js +315 -0
  42. package/dist/resources/AgentResources.js.map +1 -0
  43. package/dist/server/McpServer.d.ts +138 -0
  44. package/dist/server/McpServer.d.ts.map +1 -0
  45. package/dist/server/McpServer.js +373 -0
  46. package/dist/server/McpServer.js.map +1 -0
  47. package/dist/tools/RunAgentTool.d.ts +140 -0
  48. package/dist/tools/RunAgentTool.d.ts.map +1 -0
  49. package/dist/tools/RunAgentTool.js +371 -0
  50. package/dist/tools/RunAgentTool.js.map +1 -0
  51. package/dist/types/AgentDefinition.d.ts +33 -0
  52. package/dist/types/AgentDefinition.d.ts.map +1 -0
  53. package/dist/types/AgentDefinition.js +3 -0
  54. package/dist/types/AgentDefinition.js.map +1 -0
  55. package/dist/types/ExecutionParams.d.ts +48 -0
  56. package/dist/types/ExecutionParams.d.ts.map +1 -0
  57. package/dist/types/ExecutionParams.js +3 -0
  58. package/dist/types/ExecutionParams.js.map +1 -0
  59. package/dist/types/ServerConfig.d.ts +39 -0
  60. package/dist/types/ServerConfig.d.ts.map +1 -0
  61. package/dist/types/ServerConfig.js +3 -0
  62. package/dist/types/ServerConfig.js.map +1 -0
  63. package/dist/types/index.d.ts +19 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +3 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/dist/utils/ErrorHandler.d.ts +86 -0
  68. package/dist/utils/ErrorHandler.d.ts.map +1 -0
  69. package/dist/utils/ErrorHandler.js +99 -0
  70. package/dist/utils/ErrorHandler.js.map +1 -0
  71. package/dist/utils/Logger.d.ts +99 -0
  72. package/dist/utils/Logger.d.ts.map +1 -0
  73. package/dist/utils/Logger.js +151 -0
  74. package/dist/utils/Logger.js.map +1 -0
  75. package/package.json +92 -0
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Server implementation using @modelcontextprotocol/sdk
4
+ *
5
+ * Provides the foundational MCP server functionality with StdioServerTransport
6
+ * for stdin/stdout communication. This class serves as the entry point for
7
+ * the MCP server and handles basic server lifecycle operations.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const config = await ServerConfig.fromEnvironment()
12
+ * const server = new McpServer(config)
13
+ * await server.start()
14
+ * ```
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.McpServer = void 0;
18
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
19
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
20
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
21
+ const AgentManager_1 = require("../agents/AgentManager");
22
+ const AgentExecutor_1 = require("../execution/AgentExecutor");
23
+ const AgentResources_1 = require("../resources/AgentResources");
24
+ const RunAgentTool_1 = require("../tools/RunAgentTool");
25
+ const ErrorHandler_1 = require("../utils/ErrorHandler");
26
+ const Logger_1 = require("../utils/Logger");
27
+ /**
28
+ * MCP Server class providing foundational server functionality
29
+ */
30
+ class McpServer {
31
+ /**
32
+ * Create a new MCP server instance
33
+ * @param config Server configuration object
34
+ * @throws {Error} When server name is empty
35
+ */
36
+ constructor(config) {
37
+ this.transport = null;
38
+ this.validateConfig(config);
39
+ this.config = config;
40
+ this.log('info', 'Initializing MCP server', {
41
+ name: config.serverName,
42
+ version: config.serverVersion,
43
+ });
44
+ // Initialize agent management components
45
+ this.agentManager = new AgentManager_1.AgentManager(config);
46
+ // Create ExecutionConfig with the agent type from server config
47
+ const executionConfig = (0, AgentExecutor_1.createExecutionConfig)(config.agentType, {
48
+ executionTimeout: config.executionTimeoutMs, // Use timeout from config (env var or 90s default)
49
+ });
50
+ // Create logger with log level from config
51
+ const executorLogger = new Logger_1.Logger(config.logLevel);
52
+ this.agentExecutor = new AgentExecutor_1.AgentExecutor(executionConfig, executorLogger);
53
+ this.runAgentTool = new RunAgentTool_1.RunAgentTool(this.agentExecutor, this.agentManager);
54
+ this.agentResources = new AgentResources_1.AgentResources(this.agentManager);
55
+ // Initialize MCP server with capabilities
56
+ this.server = new index_js_1.Server({
57
+ name: config.serverName,
58
+ version: config.serverVersion,
59
+ }, {
60
+ capabilities: {
61
+ tools: {},
62
+ resources: {},
63
+ },
64
+ });
65
+ // Setup StdioServerTransport for stdin/stdout communication
66
+ this.setupTransport();
67
+ // Setup MCP handlers
68
+ this.setupHandlers();
69
+ this.log('info', 'MCP server initialized successfully');
70
+ }
71
+ /**
72
+ * Validate server configuration
73
+ * @param config Configuration to validate
74
+ * @throws {Error} When configuration is invalid
75
+ */
76
+ validateConfig(config) {
77
+ if (!config.serverName || config.serverName.trim() === '') {
78
+ throw new Error('Server name cannot be empty');
79
+ }
80
+ if (!config.serverVersion || config.serverVersion.trim() === '') {
81
+ throw new Error('Server version cannot be empty');
82
+ }
83
+ }
84
+ /**
85
+ * Log message with structured format
86
+ * @param level Log level
87
+ * @param message Log message
88
+ * @param metadata Additional metadata
89
+ */
90
+ log(level, message, metadata) {
91
+ const logLevels = {
92
+ debug: 0,
93
+ info: 1,
94
+ warn: 2,
95
+ error: 3,
96
+ };
97
+ if (logLevels[level] >= logLevels[this.config.logLevel]) {
98
+ const timestamp = new Date().toISOString();
99
+ const logEntry = {
100
+ timestamp,
101
+ level,
102
+ message,
103
+ service: 'mcp-server',
104
+ ...metadata,
105
+ };
106
+ console.log(JSON.stringify(logEntry));
107
+ }
108
+ }
109
+ /**
110
+ * Setup StdioServerTransport for MCP communication
111
+ */
112
+ setupTransport() {
113
+ try {
114
+ this.transport = new stdio_js_1.StdioServerTransport();
115
+ this.log('debug', 'StdioServerTransport configured successfully');
116
+ }
117
+ catch (error) {
118
+ this.log('error', 'Failed to setup transport', { error: String(error) });
119
+ throw new ErrorHandler_1.AppError('Failed to setup MCP transport', 'TRANSPORT_SETUP_FAILED');
120
+ }
121
+ }
122
+ /**
123
+ * Setup MCP protocol handlers with performance monitoring
124
+ */
125
+ setupHandlers() {
126
+ try {
127
+ // List tools handler
128
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
129
+ const startTime = Date.now();
130
+ this.log('debug', 'Received list_tools request');
131
+ try {
132
+ const result = {
133
+ tools: [
134
+ {
135
+ name: this.runAgentTool.name,
136
+ description: this.runAgentTool.description,
137
+ inputSchema: this.runAgentTool.inputSchema,
138
+ },
139
+ ],
140
+ };
141
+ this.log('debug', 'List tools request completed', {
142
+ responseTime: Date.now() - startTime,
143
+ toolCount: result.tools.length,
144
+ });
145
+ return result;
146
+ }
147
+ catch (error) {
148
+ this.log('error', 'List tools request failed', {
149
+ responseTime: Date.now() - startTime,
150
+ error: error instanceof Error ? error.message : String(error),
151
+ });
152
+ throw error;
153
+ }
154
+ });
155
+ // Call tool handler
156
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
157
+ const startTime = Date.now();
158
+ const { params } = request;
159
+ this.log('debug', 'Received call_tool request', { tool: params.name });
160
+ try {
161
+ if (params.name === 'run_agent') {
162
+ const result = await this.runAgentTool.execute(params.arguments);
163
+ this.log('info', 'Tool execution completed', {
164
+ tool: params.name,
165
+ responseTime: Date.now() - startTime,
166
+ success: true,
167
+ });
168
+ return result;
169
+ }
170
+ throw new ErrorHandler_1.ValidationError(`Unknown tool: ${params.name}`, 'UNKNOWN_TOOL');
171
+ }
172
+ catch (error) {
173
+ this.log('error', 'Tool execution failed', {
174
+ tool: params.name,
175
+ responseTime: Date.now() - startTime,
176
+ error: error instanceof Error ? error.message : String(error),
177
+ });
178
+ throw error;
179
+ }
180
+ });
181
+ // List resources handler
182
+ this.server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
183
+ const startTime = Date.now();
184
+ this.log('debug', 'Received list_resources request');
185
+ try {
186
+ const resources = await this.agentResources.listResources();
187
+ this.log('debug', 'List resources request completed', {
188
+ responseTime: Date.now() - startTime,
189
+ resourceCount: resources.length,
190
+ });
191
+ return { resources };
192
+ }
193
+ catch (error) {
194
+ this.log('error', 'List resources request failed', {
195
+ responseTime: Date.now() - startTime,
196
+ error: error instanceof Error ? error.message : String(error),
197
+ });
198
+ throw error;
199
+ }
200
+ });
201
+ // Read resource handler
202
+ this.server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
203
+ const startTime = Date.now();
204
+ const { params } = request;
205
+ this.log('debug', 'Received read_resource request', { uri: params.uri });
206
+ try {
207
+ if (!this.agentResources.isValidResourceUri(params.uri)) {
208
+ throw new ErrorHandler_1.ValidationError(`Invalid resource URI: ${params.uri}`, 'INVALID_RESOURCE_URI');
209
+ }
210
+ const result = await this.agentResources.readResource(params.uri);
211
+ this.log('debug', 'Read resource request completed', {
212
+ uri: params.uri,
213
+ responseTime: Date.now() - startTime,
214
+ contentLength: result.contents[0]?.text?.length || 0,
215
+ });
216
+ return result;
217
+ }
218
+ catch (error) {
219
+ this.log('error', 'Read resource request failed', {
220
+ uri: params.uri,
221
+ responseTime: Date.now() - startTime,
222
+ error: error instanceof Error ? error.message : String(error),
223
+ });
224
+ throw error;
225
+ }
226
+ });
227
+ this.log('debug', 'MCP handlers configured successfully');
228
+ }
229
+ catch (error) {
230
+ this.log('error', 'Failed to setup MCP handlers', { error: String(error) });
231
+ throw new ErrorHandler_1.AppError('Failed to setup MCP handlers', 'HANDLERS_SETUP_FAILED');
232
+ }
233
+ }
234
+ /**
235
+ * Get server information
236
+ * @returns Server name and version
237
+ */
238
+ getServerInfo() {
239
+ return {
240
+ name: this.config.serverName,
241
+ version: this.config.serverVersion,
242
+ };
243
+ }
244
+ /**
245
+ * Check if transport is configured
246
+ * @returns True if transport is available
247
+ */
248
+ hasTransport() {
249
+ return this.transport !== null;
250
+ }
251
+ /**
252
+ * Check if server is ready to start
253
+ * @returns True if server is ready
254
+ */
255
+ isReady() {
256
+ return this.hasTransport() && this.server !== null;
257
+ }
258
+ /**
259
+ * Start the MCP server
260
+ * @throws {Error} When server is not ready or transport setup fails
261
+ */
262
+ async start() {
263
+ try {
264
+ if (!this.isReady()) {
265
+ throw new ErrorHandler_1.AppError('Server is not ready to start', 'SERVER_NOT_READY');
266
+ }
267
+ if (!this.transport) {
268
+ throw new ErrorHandler_1.AppError('Transport not configured', 'TRANSPORT_NOT_CONFIGURED');
269
+ }
270
+ this.log('info', 'Starting MCP server...');
271
+ // Connect server to transport
272
+ await this.server.connect(this.transport);
273
+ this.log('info', 'MCP server started successfully', {
274
+ serverName: this.config.serverName,
275
+ serverVersion: this.config.serverVersion,
276
+ });
277
+ }
278
+ catch (error) {
279
+ this.log('error', 'Failed to start MCP server', { error: String(error) });
280
+ throw error instanceof ErrorHandler_1.AppError
281
+ ? error
282
+ : new ErrorHandler_1.AppError('Failed to start MCP server', 'SERVER_START_FAILED');
283
+ }
284
+ }
285
+ /**
286
+ * List available tools (for testing)
287
+ * @returns Promise resolving to array of tool definitions
288
+ */
289
+ async listTools() {
290
+ return [
291
+ {
292
+ name: this.runAgentTool.name,
293
+ description: this.runAgentTool.description,
294
+ inputSchema: this.runAgentTool.inputSchema,
295
+ },
296
+ ];
297
+ }
298
+ /**
299
+ * List available resources (for testing)
300
+ * @returns Promise resolving to array of resource definitions
301
+ */
302
+ async listResources() {
303
+ const resources = await this.agentResources.listResources();
304
+ return resources.map((resource) => ({
305
+ uri: resource.uri,
306
+ name: resource.name,
307
+ description: resource.description,
308
+ }));
309
+ }
310
+ /**
311
+ * Call a tool (for testing)
312
+ * @param toolName - Name of the tool to call
313
+ * @param params - Tool parameters
314
+ * @returns Promise resolving to tool response
315
+ */
316
+ async callTool(toolName, params) {
317
+ if (toolName === 'run_agent') {
318
+ return await this.runAgentTool.execute(params);
319
+ }
320
+ throw new ErrorHandler_1.ValidationError(`Unknown tool: ${toolName}`, 'UNKNOWN_TOOL');
321
+ }
322
+ /**
323
+ * Read a resource (for testing)
324
+ * @param uri - Resource URI to read
325
+ * @returns Promise resolving to resource content
326
+ */
327
+ async readResource(uri) {
328
+ if (!this.agentResources.isValidResourceUri(uri)) {
329
+ throw new ErrorHandler_1.ValidationError(`Invalid resource URI: ${uri}`, 'INVALID_RESOURCE_URI');
330
+ }
331
+ return await this.agentResources.readResource(uri);
332
+ }
333
+ /**
334
+ * Get server performance statistics
335
+ *
336
+ * @returns Performance and usage statistics
337
+ */
338
+ getServerStats() {
339
+ return {
340
+ serverInfo: this.getServerInfo(),
341
+ executionStats: this.runAgentTool.getExecutionStats(),
342
+ };
343
+ }
344
+ /**
345
+ * Reset statistics
346
+ */
347
+ resetStats() {
348
+ this.log('info', 'Server statistics reset');
349
+ }
350
+ /**
351
+ * Close the server and cleanup resources
352
+ */
353
+ async close() {
354
+ try {
355
+ this.log('info', 'Shutting down MCP server...');
356
+ // Log final statistics before shutdown
357
+ const stats = this.getServerStats();
358
+ this.log('info', 'Final server statistics', {
359
+ executionCount: Array.from(stats.executionStats.values()).reduce((sum, stat) => sum + stat.count, 0),
360
+ });
361
+ if (this.server) {
362
+ await this.server.close();
363
+ }
364
+ this.log('info', 'MCP server shutdown completed');
365
+ }
366
+ catch (error) {
367
+ this.log('error', 'Error during server shutdown', { error: String(error) });
368
+ throw new ErrorHandler_1.AppError('Failed to shutdown MCP server gracefully', 'SERVER_SHUTDOWN_FAILED');
369
+ }
370
+ }
371
+ }
372
+ exports.McpServer = McpServer;
373
+ //# sourceMappingURL=McpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpServer.js","sourceRoot":"","sources":["../../src/server/McpServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * RunAgentTool implementation for executing Claude Code sub-agents via MCP
3
+ *
4
+ * Provides the run_agent tool that allows MCP clients to execute specific
5
+ * agents with parameters, integrating with AgentExecutor and AgentManager
6
+ * for complete agent execution workflow.
7
+ */
8
+ import type { AgentManager } from '../agents/AgentManager';
9
+ import type { AgentExecutor } from '../execution/AgentExecutor';
10
+ /**
11
+ * MCP tool content type for text responses
12
+ */
13
+ interface McpTextContent {
14
+ type: 'text';
15
+ text: string;
16
+ }
17
+ /**
18
+ * MCP tool response format
19
+ */
20
+ interface McpToolResponse {
21
+ content: McpTextContent[];
22
+ isError?: boolean;
23
+ structuredContent?: unknown;
24
+ }
25
+ /**
26
+ * Input schema for run_agent tool parameters
27
+ */
28
+ interface RunAgentInputSchema {
29
+ [x: string]: unknown;
30
+ type: 'object';
31
+ properties: {
32
+ [x: string]: unknown;
33
+ agent: {
34
+ type: 'string';
35
+ description: string;
36
+ };
37
+ prompt: {
38
+ type: 'string';
39
+ description: string;
40
+ };
41
+ cwd: {
42
+ type: 'string';
43
+ description: string;
44
+ };
45
+ extra_args: {
46
+ type: 'array';
47
+ items: {
48
+ type: 'string';
49
+ };
50
+ description: string;
51
+ };
52
+ };
53
+ required: string[];
54
+ }
55
+ /**
56
+ * RunAgentTool class implementing the run_agent MCP tool
57
+ *
58
+ * Provides execution of Claude Code sub-agents with parameter validation,
59
+ * error handling, and proper MCP response formatting.
60
+ */
61
+ export declare class RunAgentTool {
62
+ private agentExecutor?;
63
+ private agentManager?;
64
+ readonly name = "run_agent";
65
+ readonly description = "Execute a Claude Code sub-agent with specified parameters";
66
+ private logger;
67
+ private executionStats;
68
+ readonly inputSchema: RunAgentInputSchema;
69
+ constructor(agentExecutor?: AgentExecutor | undefined, agentManager?: AgentManager | undefined);
70
+ /**
71
+ * Execute the run_agent tool with the provided parameters
72
+ *
73
+ * @param params - Tool execution parameters
74
+ * @returns Promise resolving to MCP tool response
75
+ * @throws {Error} When parameters are invalid or execution fails
76
+ */
77
+ execute(params: unknown): Promise<McpToolResponse>;
78
+ /**
79
+ * Validate and type-check the input parameters with comprehensive validation
80
+ *
81
+ * @private
82
+ * @param params - Raw parameters to validate
83
+ * @returns Validated parameters
84
+ * @throws {Error} When parameters are invalid
85
+ */
86
+ private validateParams;
87
+ /**
88
+ * Format agent execution response
89
+ *
90
+ * @private
91
+ * @param result - Agent execution result
92
+ * @param agentName - Name of the executed agent
93
+ * @param requestId - Request tracking ID
94
+ * @returns Formatted MCP response
95
+ */
96
+ private formatExecutionResponse;
97
+ /**
98
+ * Create error response with optional available agents list
99
+ *
100
+ * @private
101
+ * @param errorMessage - Error message to display
102
+ * @param availableAgents - Optional list of available agents
103
+ * @returns Error response in MCP format
104
+ */
105
+ private createErrorResponse;
106
+ /**
107
+ * Generate unique request ID for tracking
108
+ *
109
+ * @private
110
+ * @returns Unique request identifier
111
+ */
112
+ private generateRequestId;
113
+ /**
114
+ * Update execution statistics
115
+ *
116
+ * @private
117
+ * @param agentName - Name of the executed agent
118
+ * @param executionTime - Time taken for execution
119
+ */
120
+ private updateExecutionStats;
121
+ /**
122
+ * Get execution statistics for monitoring
123
+ *
124
+ * @returns Map of agent execution statistics
125
+ */
126
+ getExecutionStats(): Map<string, {
127
+ count: number;
128
+ totalTime: number;
129
+ lastUsed: Date;
130
+ }>;
131
+ /**
132
+ * Get list of available agent names
133
+ *
134
+ * @private
135
+ * @returns Promise resolving to array of agent names
136
+ */
137
+ private getAvailableAgentsList;
138
+ }
139
+ export {};
140
+ //# sourceMappingURL=RunAgentTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunAgentTool.d.ts","sourceRoot":"","sources":["../../src/tools/RunAgentTool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAwB,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAItF;;GAEG;AACH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE;QACV,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;QACpB,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ,CAAA;YACd,WAAW,EAAE,MAAM,CAAA;SACpB,CAAA;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,CAAA;YACd,WAAW,EAAE,MAAM,CAAA;SACpB,CAAA;QACD,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ,CAAA;YACd,WAAW,EAAE,MAAM,CAAA;SACpB,CAAA;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO,CAAA;YACb,KAAK,EAAE;gBAAE,IAAI,EAAE,QAAQ,CAAA;aAAE,CAAA;YACzB,WAAW,EAAE,MAAM,CAAA;SACpB,CAAA;KACF,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAYD;;;;;GAKG;AACH,qBAAa,YAAY;IAgCrB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,YAAY,CAAC;IAhCvB,SAAgB,IAAI,eAAc;IAClC,SAAgB,WAAW,+DAA8D;IACzF,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,cAAc,CACX;IAEX,SAAgB,WAAW,EAAE,mBAAmB,CAsB/C;gBAGS,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,YAAY,CAAC,EAAE,YAAY,YAAA;IAOrC;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAmHxD;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAuFtB;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAwD/B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;;OAIG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAItF;;;;;OAKG;YACW,sBAAsB;CAerC"}