@elliotding/ai-agent-mcp 0.2.20 → 0.2.22

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 (66) hide show
  1. package/dist/client-adapters/codex-adapter.d.ts +48 -0
  2. package/dist/client-adapters/codex-adapter.d.ts.map +1 -0
  3. package/dist/client-adapters/codex-adapter.js +69 -0
  4. package/dist/client-adapters/codex-adapter.js.map +1 -0
  5. package/dist/client-adapters/cursor-adapter.d.ts +36 -0
  6. package/dist/client-adapters/cursor-adapter.d.ts.map +1 -0
  7. package/dist/client-adapters/cursor-adapter.js +65 -0
  8. package/dist/client-adapters/cursor-adapter.js.map +1 -0
  9. package/dist/client-adapters/index.d.ts +89 -0
  10. package/dist/client-adapters/index.d.ts.map +1 -0
  11. package/dist/client-adapters/index.js +49 -0
  12. package/dist/client-adapters/index.js.map +1 -0
  13. package/dist/config/index.d.ts +19 -1
  14. package/dist/config/index.d.ts.map +1 -1
  15. package/dist/config/index.js +12 -2
  16. package/dist/config/index.js.map +1 -1
  17. package/dist/prompts/manager.d.ts +18 -0
  18. package/dist/prompts/manager.d.ts.map +1 -1
  19. package/dist/prompts/manager.js +51 -5
  20. package/dist/prompts/manager.js.map +1 -1
  21. package/dist/server/http.d.ts +10 -6
  22. package/dist/server/http.d.ts.map +1 -1
  23. package/dist/server/http.js +83 -89
  24. package/dist/server/http.js.map +1 -1
  25. package/dist/server/streamable-http.d.ts +28 -0
  26. package/dist/server/streamable-http.d.ts.map +1 -0
  27. package/dist/server/streamable-http.js +126 -0
  28. package/dist/server/streamable-http.js.map +1 -0
  29. package/dist/server.d.ts +8 -1
  30. package/dist/server.d.ts.map +1 -1
  31. package/dist/server.js +60 -96
  32. package/dist/server.js.map +1 -1
  33. package/dist/telemetry/manager.d.ts +5 -0
  34. package/dist/telemetry/manager.d.ts.map +1 -1
  35. package/dist/telemetry/manager.js +5 -0
  36. package/dist/telemetry/manager.js.map +1 -1
  37. package/dist/tools/manage-subscription.d.ts.map +1 -1
  38. package/dist/tools/manage-subscription.js +33 -2
  39. package/dist/tools/manage-subscription.js.map +1 -1
  40. package/dist/tools/policy-generator.d.ts +31 -0
  41. package/dist/tools/policy-generator.d.ts.map +1 -0
  42. package/dist/tools/policy-generator.js +53 -0
  43. package/dist/tools/policy-generator.js.map +1 -0
  44. package/dist/tools/resolve-prompt-content.d.ts.map +1 -1
  45. package/dist/tools/resolve-prompt-content.js +14 -1
  46. package/dist/tools/resolve-prompt-content.js.map +1 -1
  47. package/dist/tools/search-resources.d.ts.map +1 -1
  48. package/dist/tools/search-resources.js +24 -0
  49. package/dist/tools/search-resources.js.map +1 -1
  50. package/dist/tools/sync-resources.d.ts.map +1 -1
  51. package/dist/tools/sync-resources.js +232 -58
  52. package/dist/tools/sync-resources.js.map +1 -1
  53. package/dist/tools/uninstall-resource.d.ts.map +1 -1
  54. package/dist/tools/uninstall-resource.js +21 -3
  55. package/dist/tools/uninstall-resource.js.map +1 -1
  56. package/dist/types/tools.d.ts +113 -4
  57. package/dist/types/tools.d.ts.map +1 -1
  58. package/dist/utils/codex-paths.d.ts +35 -0
  59. package/dist/utils/codex-paths.d.ts.map +1 -0
  60. package/dist/utils/codex-paths.js +49 -0
  61. package/dist/utils/codex-paths.js.map +1 -0
  62. package/package.json +1 -1
  63. package/dist/transport/sse.d.ts +0 -29
  64. package/dist/transport/sse.d.ts.map +0 -1
  65. package/dist/transport/sse.js +0 -271
  66. package/dist/transport/sse.js.map +0 -1
@@ -1,271 +0,0 @@
1
- "use strict";
2
- /**
3
- * SSE Transport Implementation
4
- * MCP protocol over Server-Sent Events
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.sseTransport = exports.SSETransport = void 0;
8
- const logger_1 = require("../utils/logger");
9
- const manager_1 = require("../session/manager");
10
- const registry_1 = require("../tools/registry");
11
- const middleware_1 = require("../auth/middleware");
12
- class SSETransport {
13
- constructor() {
14
- logger_1.logger.info('SSE transport initialized');
15
- }
16
- /**
17
- * Handle incoming message from client
18
- */
19
- async handleMessage(sessionId, message) {
20
- const messageStartTime = Date.now();
21
- logger_1.logger.info({
22
- type: 'sse_message_received',
23
- sessionId,
24
- method: message.method,
25
- messageId: message.id,
26
- hasParams: !!message.params,
27
- timestamp: new Date().toISOString()
28
- }, `SSE message received: ${message.method}`);
29
- try {
30
- // Validate session
31
- (0, logger_1.logToolStep)('sse', 'Validating session', { sessionId });
32
- const session = manager_1.sessionManager.getSession(sessionId);
33
- if (!session) {
34
- logger_1.logger.error({
35
- type: 'sse_error',
36
- sessionId,
37
- method: message.method,
38
- error: 'session_not_found',
39
- timestamp: new Date().toISOString()
40
- }, 'Session not found or expired');
41
- throw new Error('Session not found or expired');
42
- }
43
- logger_1.logger.debug({
44
- type: 'sse_session_validated',
45
- sessionId,
46
- userId: session.userId,
47
- email: session.email,
48
- groups: session.groups,
49
- timestamp: new Date().toISOString()
50
- }, 'Session validated');
51
- // Update session activity
52
- manager_1.sessionManager.updateActivity(sessionId);
53
- (0, logger_1.logToolStep)('sse', 'Session activity updated', { sessionId });
54
- // Handle MCP message
55
- if (message.method === 'tools/list') {
56
- (0, logger_1.logToolStep)('sse', 'Handling tools/list request', { sessionId });
57
- const tools = registry_1.toolRegistry.getMCPToolDefinitions();
58
- logger_1.logger.info({
59
- type: 'sse_tools_list',
60
- sessionId,
61
- toolCount: tools.length,
62
- toolNames: tools.map(t => t.name),
63
- timestamp: new Date().toISOString()
64
- }, `Returning ${tools.length} tool definitions`);
65
- const response = {
66
- jsonrpc: '2.0',
67
- id: message.id,
68
- result: { tools },
69
- };
70
- this.sendMessage(sessionId, response);
71
- }
72
- else if (message.method === 'tools/call') {
73
- const params = message.params;
74
- const toolName = params.name;
75
- const args = params.arguments || {};
76
- logger_1.logger.info({
77
- type: 'sse_tool_call',
78
- sessionId,
79
- toolName,
80
- userId: session.userId,
81
- email: session.email,
82
- argsPreview: JSON.stringify(args).substring(0, 200),
83
- timestamp: new Date().toISOString()
84
- }, `Executing tool: ${toolName}`);
85
- (0, logger_1.logToolStep)(toolName, 'Tool call initiated via SSE', {
86
- sessionId,
87
- userId: session.userId,
88
- email: session.email
89
- });
90
- try {
91
- // Check permissions if user is authenticated
92
- if (session.userId && session.groups && session.groups.length > 0) {
93
- (0, logger_1.logToolStep)(toolName, 'Checking tool permissions', {
94
- userId: session.userId,
95
- email: session.email,
96
- groups: session.groups
97
- });
98
- const permissionStartTime = Date.now();
99
- const permissionCheck = (0, middleware_1.checkToolCallPermission)(toolName, {
100
- userId: session.userId,
101
- email: session.email,
102
- groups: session.groups,
103
- });
104
- const permissionDuration = Date.now() - permissionStartTime;
105
- if (!permissionCheck.allowed) {
106
- logger_1.logger.warn({
107
- type: 'sse_permission_denied',
108
- sessionId,
109
- userId: session.userId,
110
- email: session.email,
111
- groups: session.groups,
112
- toolName,
113
- reason: permissionCheck.reason,
114
- duration: permissionDuration,
115
- timestamp: new Date().toISOString()
116
- }, `Tool call permission denied for ${toolName}`);
117
- const errorResponse = {
118
- jsonrpc: '2.0',
119
- id: message.id,
120
- error: {
121
- code: -32600, // Invalid Request
122
- message: permissionCheck.reason || 'Permission denied',
123
- },
124
- };
125
- this.sendMessage(sessionId, errorResponse);
126
- return;
127
- }
128
- logger_1.logger.debug({
129
- type: 'sse_permission_granted',
130
- sessionId,
131
- userId: session.userId,
132
- toolName,
133
- duration: permissionDuration,
134
- timestamp: new Date().toISOString()
135
- }, `Permission granted for ${toolName}`);
136
- }
137
- (0, logger_1.logToolStep)(toolName, 'Executing tool handler', { args });
138
- const toolStartTime = Date.now();
139
- const result = await registry_1.toolRegistry.callTool(toolName, args);
140
- const toolDuration = Date.now() - toolStartTime;
141
- // Log complete result
142
- logger_1.logger.info({
143
- type: 'sse_tool_success',
144
- sessionId,
145
- toolName,
146
- userId: session.userId,
147
- resultType: typeof result,
148
- resultPreview: JSON.stringify(result).substring(0, 500),
149
- duration: toolDuration,
150
- timestamp: new Date().toISOString()
151
- }, `Tool ${toolName} executed successfully`);
152
- (0, logger_1.logToolStep)(toolName, 'Tool execution completed', {
153
- duration: toolDuration,
154
- resultSize: JSON.stringify(result).length
155
- });
156
- const response = {
157
- jsonrpc: '2.0',
158
- id: message.id,
159
- result,
160
- };
161
- this.sendMessage(sessionId, response);
162
- }
163
- catch (error) {
164
- const toolDuration = Date.now() - messageStartTime;
165
- logger_1.logger.error({
166
- type: 'sse_tool_error',
167
- sessionId,
168
- toolName,
169
- userId: session.userId,
170
- error: error instanceof Error ? {
171
- message: error.message,
172
- stack: error.stack,
173
- name: error.name
174
- } : String(error),
175
- duration: toolDuration,
176
- timestamp: new Date().toISOString()
177
- }, `Tool ${toolName} execution failed`);
178
- const errorResponse = {
179
- jsonrpc: '2.0',
180
- id: message.id,
181
- error: {
182
- code: -32603,
183
- message: error instanceof Error ? error.message : 'Tool execution failed',
184
- data: error,
185
- },
186
- };
187
- this.sendMessage(sessionId, errorResponse);
188
- }
189
- }
190
- else if (message.method === 'initialize') {
191
- logger_1.logger.info({
192
- type: 'sse_initialize',
193
- sessionId,
194
- timestamp: new Date().toISOString()
195
- }, 'Client initialization request');
196
- const response = {
197
- jsonrpc: '2.0',
198
- id: message.id,
199
- result: {
200
- protocolVersion: '2024-11-05',
201
- capabilities: {
202
- tools: {},
203
- },
204
- serverInfo: {
205
- name: 'csp-ai-agent-mcp',
206
- version: '0.2.0',
207
- },
208
- },
209
- };
210
- this.sendMessage(sessionId, response);
211
- }
212
- else if (message.method === 'ping') {
213
- // Keepalive ping
214
- logger_1.logger.debug({
215
- type: 'sse_ping',
216
- sessionId,
217
- timestamp: new Date().toISOString()
218
- }, 'Keepalive ping received');
219
- const response = {
220
- jsonrpc: '2.0',
221
- id: message.id,
222
- result: { type: 'pong' },
223
- };
224
- this.sendMessage(sessionId, response);
225
- }
226
- else {
227
- // Unknown method
228
- logger_1.logger.warn({
229
- type: 'sse_unknown_method',
230
- sessionId,
231
- method: message.method,
232
- timestamp: new Date().toISOString()
233
- }, `Unknown method: ${message.method}`);
234
- const errorResponse = {
235
- jsonrpc: '2.0',
236
- id: message.id,
237
- error: {
238
- code: -32601,
239
- message: `Method not found: ${message.method}`,
240
- },
241
- };
242
- this.sendMessage(sessionId, errorResponse);
243
- }
244
- }
245
- catch (error) {
246
- logger_1.logger.error({ error, sessionId }, 'Error handling message');
247
- const errorResponse = {
248
- jsonrpc: '2.0',
249
- id: message.id,
250
- error: {
251
- code: -32603,
252
- message: error instanceof Error ? error.message : 'Internal error',
253
- },
254
- };
255
- this.sendMessage(sessionId, errorResponse);
256
- }
257
- }
258
- /**
259
- * Send message to client via SSE
260
- */
261
- sendMessage(sessionId, message) {
262
- const sent = manager_1.sessionManager.sendMessage(sessionId, message);
263
- if (!sent) {
264
- logger_1.logger.warn({ sessionId, messageId: message.id }, 'Failed to send message to client');
265
- }
266
- }
267
- }
268
- exports.SSETransport = SSETransport;
269
- // Singleton instance
270
- exports.sseTransport = new SSETransport();
271
- //# sourceMappingURL=sse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/transport/sse.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,4CAAsD;AACtD,gDAAoD;AACpD,gDAAiD;AACjD,mDAA6D;AAe7D,MAAa,YAAY;IACvB;QACE,eAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,OAAmB;QACxD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEpC,eAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,sBAAsB;YAC5B,SAAS;YACT,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,EAAE,yBAAyB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,mBAAmB;YACnB,IAAA,oBAAW,EAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAExD,MAAM,OAAO,GAAG,wBAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,eAAM,CAAC,KAAK,CAAC;oBACX,IAAI,EAAE,WAAW;oBACjB,SAAS;oBACT,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,EAAE,8BAA8B,CAAC,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YAED,eAAM,CAAC,KAAK,CAAC;gBACX,IAAI,EAAE,uBAAuB;gBAC7B,SAAS;gBACT,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,EAAE,mBAAmB,CAAC,CAAC;YAExB,0BAA0B;YAC1B,wBAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,IAAA,oBAAW,EAAC,KAAK,EAAE,0BAA0B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAE9D,qBAAqB;YACrB,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACpC,IAAA,oBAAW,EAAC,KAAK,EAAE,6BAA6B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBAEjE,MAAM,KAAK,GAAG,uBAAY,CAAC,qBAAqB,EAAE,CAAC;gBAEnD,eAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,gBAAgB;oBACtB,SAAS;oBACT,SAAS,EAAE,KAAK,CAAC,MAAM;oBACvB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;oBACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,EAAE,aAAa,KAAK,CAAC,MAAM,mBAAmB,CAAC,CAAC;gBAEjD,MAAM,QAAQ,GAAe;oBAC3B,OAAO,EAAE,KAAK;oBACd,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,MAAM,EAAE,EAAE,KAAK,EAAE;iBAClB,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAA+D,CAAC;gBACvF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;gBAEpC,eAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,eAAe;oBACrB,SAAS;oBACT,QAAQ;oBACR,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBACnD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,EAAE,mBAAmB,QAAQ,EAAE,CAAC,CAAC;gBAElC,IAAA,oBAAW,EAAC,QAAQ,EAAE,6BAA6B,EAAE;oBACnD,SAAS;oBACT,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;gBAEH,IAAI,CAAC;oBACH,6CAA6C;oBAC7C,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClE,IAAA,oBAAW,EAAC,QAAQ,EAAE,2BAA2B,EAAE;4BACjD,MAAM,EAAE,OAAO,CAAC,MAAM;4BACtB,KAAK,EAAE,OAAO,CAAC,KAAK;4BACpB,MAAM,EAAE,OAAO,CAAC,MAAM;yBACvB,CAAC,CAAC;wBAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACvC,MAAM,eAAe,GAAG,IAAA,oCAAuB,EAAC,QAAQ,EAAE;4BACxD,MAAM,EAAE,OAAO,CAAC,MAAM;4BACtB,KAAK,EAAE,OAAO,CAAC,KAAK;4BACpB,MAAM,EAAE,OAAO,CAAC,MAAM;yBACvB,CAAC,CAAC;wBACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAAC;wBAE5D,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;4BAC7B,eAAM,CAAC,IAAI,CACT;gCACE,IAAI,EAAE,uBAAuB;gCAC7B,SAAS;gCACT,MAAM,EAAE,OAAO,CAAC,MAAM;gCACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gCACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gCACtB,QAAQ;gCACR,MAAM,EAAE,eAAe,CAAC,MAAM;gCAC9B,QAAQ,EAAE,kBAAkB;gCAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;6BACpC,EACD,mCAAmC,QAAQ,EAAE,CAC9C,CAAC;4BAEF,MAAM,aAAa,GAAe;gCAChC,OAAO,EAAE,KAAK;gCACd,EAAE,EAAE,OAAO,CAAC,EAAE;gCACd,KAAK,EAAE;oCACL,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB;oCAChC,OAAO,EAAE,eAAe,CAAC,MAAM,IAAI,mBAAmB;iCACvD;6BACF,CAAC;4BACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;4BAC3C,OAAO;wBACT,CAAC;wBAED,eAAM,CAAC,KAAK,CAAC;4BACX,IAAI,EAAE,wBAAwB;4BAC9B,SAAS;4BACT,MAAM,EAAE,OAAO,CAAC,MAAM;4BACtB,QAAQ;4BACR,QAAQ,EAAE,kBAAkB;4BAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACpC,EAAE,0BAA0B,QAAQ,EAAE,CAAC,CAAC;oBAC3C,CAAC;oBAED,IAAA,oBAAW,EAAC,QAAQ,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAEjC,MAAM,MAAM,GAAG,MAAM,uBAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAE3D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;oBAEhD,sBAAsB;oBACtB,eAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,kBAAkB;wBACxB,SAAS;wBACT,QAAQ;wBACR,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,UAAU,EAAE,OAAO,MAAM;wBACzB,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;wBACvD,QAAQ,EAAE,YAAY;wBACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACpC,EAAE,QAAQ,QAAQ,wBAAwB,CAAC,CAAC;oBAE7C,IAAA,oBAAW,EAAC,QAAQ,EAAE,0BAA0B,EAAE;wBAChD,QAAQ,EAAE,YAAY;wBACtB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM;qBAC1C,CAAC,CAAC;oBAEH,MAAM,QAAQ,GAAe;wBAC3B,OAAO,EAAE,KAAK;wBACd,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,MAAM;qBACP,CAAC;oBACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACxC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;oBAEnD,eAAM,CAAC,KAAK,CAAC;wBACX,IAAI,EAAE,gBAAgB;wBACtB,SAAS;wBACT,QAAQ;wBACR,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC;4BAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,IAAI,EAAE,KAAK,CAAC,IAAI;yBACjB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;wBACjB,QAAQ,EAAE,YAAY;wBACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACpC,EAAE,QAAQ,QAAQ,mBAAmB,CAAC,CAAC;oBAExC,MAAM,aAAa,GAAe;wBAChC,OAAO,EAAE,KAAK;wBACd,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,KAAK,EAAE;4BACL,IAAI,EAAE,CAAC,KAAK;4BACZ,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB;4BACzE,IAAI,EAAE,KAAK;yBACZ;qBACF,CAAC;oBACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC3C,eAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,gBAAgB;oBACtB,SAAS;oBACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,EAAE,+BAA+B,CAAC,CAAC;gBAEpC,MAAM,QAAQ,GAAe;oBAC3B,OAAO,EAAE,KAAK;oBACd,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,MAAM,EAAE;wBACN,eAAe,EAAE,YAAY;wBAC7B,YAAY,EAAE;4BACZ,KAAK,EAAE,EAAE;yBACV;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,kBAAkB;4BACxB,OAAO,EAAE,OAAO;yBACjB;qBACF;iBACF,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACrC,iBAAiB;gBACjB,eAAM,CAAC,KAAK,CAAC;oBACX,IAAI,EAAE,UAAU;oBAChB,SAAS;oBACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,EAAE,yBAAyB,CAAC,CAAC;gBAE9B,MAAM,QAAQ,GAAe;oBAC3B,OAAO,EAAE,KAAK;oBACd,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;iBACzB,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,iBAAiB;gBACjB,eAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,SAAS;oBACT,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,EAAE,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAExC,MAAM,aAAa,GAAe;oBAChC,OAAO,EAAE,KAAK;oBACd,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,CAAC,KAAK;wBACZ,OAAO,EAAE,qBAAqB,OAAO,CAAC,MAAM,EAAE;qBAC/C;iBACF,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,wBAAwB,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAe;gBAChC,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;iBACnE;aACF,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,SAAiB,EAAE,OAAmB;QACxD,MAAM,IAAI,GAAG,wBAAc,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,eAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,kCAAkC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;CACF;AAzRD,oCAyRC;AAED,qBAAqB;AACR,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}