@1mcp/agent 0.11.0 → 0.13.0

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 (200) hide show
  1. package/README.md +45 -50
  2. package/build/auth/clientSessionManager.d.ts +94 -0
  3. package/build/auth/clientSessionManager.d.ts.map +1 -0
  4. package/build/auth/clientSessionManager.js +220 -0
  5. package/build/auth/clientSessionManager.js.map +1 -0
  6. package/build/auth/sdkOAuthClientProvider.d.ts +93 -0
  7. package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -0
  8. package/build/auth/sdkOAuthClientProvider.js +199 -0
  9. package/build/auth/sdkOAuthClientProvider.js.map +1 -0
  10. package/build/auth/sdkOAuthServerProvider.d.ts +63 -0
  11. package/build/auth/sdkOAuthServerProvider.d.ts.map +1 -0
  12. package/build/auth/sdkOAuthServerProvider.js +428 -0
  13. package/build/auth/sdkOAuthServerProvider.js.map +1 -0
  14. package/build/{server/auth/sessionManager.d.ts → auth/serverSessionManager.d.ts} +26 -37
  15. package/build/auth/serverSessionManager.d.ts.map +1 -0
  16. package/build/{server/auth/sessionManager.js → auth/serverSessionManager.js} +104 -19
  17. package/build/auth/serverSessionManager.js.map +1 -0
  18. package/build/auth/sessionTypes.d.ts +24 -0
  19. package/build/auth/sessionTypes.d.ts.map +1 -0
  20. package/build/auth/sessionTypes.js +3 -0
  21. package/build/auth/sessionTypes.js.map +1 -0
  22. package/build/capabilities/capabilityManager.d.ts +2 -2
  23. package/build/capabilities/capabilityManager.d.ts.map +1 -1
  24. package/build/capabilities/capabilityManager.js +40 -7
  25. package/build/capabilities/capabilityManager.js.map +1 -1
  26. package/build/config/{configManager.d.ts → mcpConfigManager.d.ts} +18 -7
  27. package/build/config/mcpConfigManager.d.ts.map +1 -0
  28. package/build/config/{configManager.js → mcpConfigManager.js} +50 -10
  29. package/build/config/mcpConfigManager.js.map +1 -0
  30. package/build/constants.d.ts +36 -14
  31. package/build/constants.d.ts.map +1 -1
  32. package/build/constants.js +40 -17
  33. package/build/constants.js.map +1 -1
  34. package/build/{client.d.ts → core/client/clientFactory.d.ts} +1 -1
  35. package/build/core/client/clientFactory.d.ts.map +1 -0
  36. package/build/{client.js → core/client/clientFactory.js} +2 -2
  37. package/build/core/client/clientFactory.js.map +1 -0
  38. package/build/{clients → core/client}/clientManager.d.ts +14 -6
  39. package/build/core/client/clientManager.d.ts.map +1 -0
  40. package/build/core/client/clientManager.js +209 -0
  41. package/build/core/client/clientManager.js.map +1 -0
  42. package/build/{server/config/serverConfig.d.ts → core/server/agentConfig.d.ts} +50 -15
  43. package/build/core/server/agentConfig.d.ts.map +1 -0
  44. package/build/core/server/agentConfig.js +166 -0
  45. package/build/core/server/agentConfig.js.map +1 -0
  46. package/build/core/server/serverManager.d.ts +39 -0
  47. package/build/core/server/serverManager.d.ts.map +1 -0
  48. package/build/core/server/serverManager.js +169 -0
  49. package/build/core/server/serverManager.js.map +1 -0
  50. package/build/core/types/client.d.ts +51 -0
  51. package/build/core/types/client.d.ts.map +1 -0
  52. package/build/core/types/client.js +15 -0
  53. package/build/core/types/client.js.map +1 -0
  54. package/build/core/types/index.d.ts +4 -0
  55. package/build/core/types/index.d.ts.map +1 -0
  56. package/build/core/types/index.js +5 -0
  57. package/build/core/types/index.js.map +1 -0
  58. package/build/core/types/server.d.ts +14 -0
  59. package/build/core/types/server.d.ts.map +1 -0
  60. package/build/core/types/server.js +2 -0
  61. package/build/core/types/server.js.map +1 -0
  62. package/build/{types.d.ts → core/types/transport.d.ts} +59 -49
  63. package/build/core/types/transport.d.ts.map +1 -0
  64. package/build/{types.js → core/types/transport.js} +11 -13
  65. package/build/core/types/transport.js.map +1 -0
  66. package/build/handlers/notificationHandlers.d.ts +3 -3
  67. package/build/handlers/notificationHandlers.d.ts.map +1 -1
  68. package/build/handlers/notificationHandlers.js +13 -9
  69. package/build/handlers/notificationHandlers.js.map +1 -1
  70. package/build/handlers/requestHandlers.d.ts +2 -2
  71. package/build/handlers/requestHandlers.d.ts.map +1 -1
  72. package/build/handlers/requestHandlers.js +25 -3
  73. package/build/handlers/requestHandlers.js.map +1 -1
  74. package/build/index.js +48 -8
  75. package/build/index.js.map +1 -1
  76. package/build/logger/logger.js +1 -1
  77. package/build/logger/logger.js.map +1 -1
  78. package/build/{middleware/loggingMiddleware.d.ts → logger/mcpLoggingEnhancer.d.ts} +1 -1
  79. package/build/logger/mcpLoggingEnhancer.d.ts.map +1 -0
  80. package/build/{middleware/loggingMiddleware.js → logger/mcpLoggingEnhancer.js} +2 -2
  81. package/build/logger/mcpLoggingEnhancer.js.map +1 -0
  82. package/build/server.d.ts +1 -1
  83. package/build/server.d.ts.map +1 -1
  84. package/build/server.js +9 -6
  85. package/build/server.js.map +1 -1
  86. package/build/services/configReloadService.d.ts +15 -5
  87. package/build/services/configReloadService.d.ts.map +1 -1
  88. package/build/services/configReloadService.js +31 -14
  89. package/build/services/configReloadService.js.map +1 -1
  90. package/build/transport/http/middlewares/errorHandler.d.ts.map +1 -0
  91. package/build/{server → transport/http/middlewares}/errorHandler.js +1 -1
  92. package/build/transport/http/middlewares/errorHandler.js.map +1 -0
  93. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +42 -0
  94. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -0
  95. package/build/transport/http/middlewares/scopeAuthMiddleware.js +136 -0
  96. package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -0
  97. package/build/transport/http/middlewares/securityMiddleware.d.ts +30 -0
  98. package/build/transport/http/middlewares/securityMiddleware.d.ts.map +1 -0
  99. package/build/transport/http/middlewares/securityMiddleware.js +201 -0
  100. package/build/transport/http/middlewares/securityMiddleware.js.map +1 -0
  101. package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -0
  102. package/build/transport/http/middlewares/tagsExtractor.js.map +1 -0
  103. package/build/transport/http/routes/oauthRoutes.d.ts +4 -0
  104. package/build/transport/http/routes/oauthRoutes.d.ts.map +1 -0
  105. package/build/transport/http/routes/oauthRoutes.js +474 -0
  106. package/build/transport/http/routes/oauthRoutes.js.map +1 -0
  107. package/build/transport/http/routes/sseRoutes.d.ts +4 -0
  108. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -0
  109. package/build/{server → transport/http}/routes/sseRoutes.js +12 -10
  110. package/build/transport/http/routes/sseRoutes.js.map +1 -0
  111. package/build/transport/http/routes/streamableHttpRoutes.d.ts +4 -0
  112. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -0
  113. package/build/{server → transport/http}/routes/streamableHttpRoutes.js +46 -13
  114. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -0
  115. package/build/{server/expressServer.d.ts → transport/http/server.d.ts} +5 -4
  116. package/build/transport/http/server.d.ts.map +1 -0
  117. package/build/{server/expressServer.js → transport/http/server.js} +60 -23
  118. package/build/transport/http/server.js.map +1 -0
  119. package/build/transport/transportFactory.d.ts +9 -0
  120. package/build/transport/transportFactory.d.ts.map +1 -0
  121. package/build/transport/transportFactory.js +148 -0
  122. package/build/transport/transportFactory.js.map +1 -0
  123. package/build/utils/clientFiltering.d.ts +4 -4
  124. package/build/utils/clientFiltering.d.ts.map +1 -1
  125. package/build/utils/clientFiltering.js +14 -14
  126. package/build/utils/clientFiltering.js.map +1 -1
  127. package/build/utils/errorHandling.d.ts +0 -11
  128. package/build/utils/errorHandling.d.ts.map +1 -1
  129. package/build/utils/errorHandling.js +1 -18
  130. package/build/utils/errorHandling.js.map +1 -1
  131. package/build/utils/errorTypes.js +4 -4
  132. package/build/utils/errorTypes.js.map +1 -1
  133. package/build/utils/pagination.d.ts +2 -2
  134. package/build/utils/pagination.d.ts.map +1 -1
  135. package/build/utils/pagination.js +87 -8
  136. package/build/utils/pagination.js.map +1 -1
  137. package/build/utils/parsing.d.ts +13 -0
  138. package/build/utils/parsing.d.ts.map +1 -0
  139. package/build/utils/parsing.js +32 -0
  140. package/build/utils/parsing.js.map +1 -0
  141. package/build/utils/sanitization.d.ts +60 -0
  142. package/build/utils/sanitization.d.ts.map +1 -0
  143. package/build/utils/sanitization.js +149 -0
  144. package/build/utils/sanitization.js.map +1 -0
  145. package/build/utils/scopeValidation.d.ts +102 -0
  146. package/build/utils/scopeValidation.d.ts.map +1 -0
  147. package/build/utils/scopeValidation.js +244 -0
  148. package/build/utils/scopeValidation.js.map +1 -0
  149. package/package.json +23 -9
  150. package/build/client.d.ts.map +0 -1
  151. package/build/client.js.map +0 -1
  152. package/build/clients/clientManager.d.ts.map +0 -1
  153. package/build/clients/clientManager.js +0 -147
  154. package/build/clients/clientManager.js.map +0 -1
  155. package/build/config/configManager.d.ts.map +0 -1
  156. package/build/config/configManager.js.map +0 -1
  157. package/build/config/transportConfig.d.ts +0 -7
  158. package/build/config/transportConfig.d.ts.map +0 -1
  159. package/build/config/transportConfig.js +0 -90
  160. package/build/config/transportConfig.js.map +0 -1
  161. package/build/middleware/loggingMiddleware.d.ts.map +0 -1
  162. package/build/middleware/loggingMiddleware.js.map +0 -1
  163. package/build/server/auth/authManager.d.ts +0 -109
  164. package/build/server/auth/authManager.d.ts.map +0 -1
  165. package/build/server/auth/authManager.js +0 -173
  166. package/build/server/auth/authManager.js.map +0 -1
  167. package/build/server/auth/authMiddleware.d.ts +0 -16
  168. package/build/server/auth/authMiddleware.d.ts.map +0 -1
  169. package/build/server/auth/authMiddleware.js +0 -45
  170. package/build/server/auth/authMiddleware.js.map +0 -1
  171. package/build/server/auth/sessionManager.d.ts.map +0 -1
  172. package/build/server/auth/sessionManager.js.map +0 -1
  173. package/build/server/config/serverConfig.d.ts.map +0 -1
  174. package/build/server/config/serverConfig.js +0 -117
  175. package/build/server/config/serverConfig.js.map +0 -1
  176. package/build/server/errorHandler.d.ts.map +0 -1
  177. package/build/server/errorHandler.js.map +0 -1
  178. package/build/server/expressServer.d.ts.map +0 -1
  179. package/build/server/expressServer.js.map +0 -1
  180. package/build/server/routes/oauthRoutes.d.ts +0 -14
  181. package/build/server/routes/oauthRoutes.d.ts.map +0 -1
  182. package/build/server/routes/oauthRoutes.js +0 -132
  183. package/build/server/routes/oauthRoutes.js.map +0 -1
  184. package/build/server/routes/sseRoutes.d.ts +0 -4
  185. package/build/server/routes/sseRoutes.d.ts.map +0 -1
  186. package/build/server/routes/sseRoutes.js.map +0 -1
  187. package/build/server/routes/streamableHttpRoutes.d.ts +0 -4
  188. package/build/server/routes/streamableHttpRoutes.d.ts.map +0 -1
  189. package/build/server/routes/streamableHttpRoutes.js.map +0 -1
  190. package/build/server/tagsExtractor.d.ts.map +0 -1
  191. package/build/server/tagsExtractor.js.map +0 -1
  192. package/build/serverManager.d.ts +0 -27
  193. package/build/serverManager.d.ts.map +0 -1
  194. package/build/serverManager.js +0 -87
  195. package/build/serverManager.js.map +0 -1
  196. package/build/types.d.ts.map +0 -1
  197. package/build/types.js.map +0 -1
  198. /package/build/{server → transport/http/middlewares}/errorHandler.d.ts +0 -0
  199. /package/build/{server → transport/http/middlewares}/tagsExtractor.d.ts +0 -0
  200. /package/build/{server → transport/http/middlewares}/tagsExtractor.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeValidation.d.ts","sourceRoot":"","sources":["../../src/utils/scopeValidation.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC,gDAAgD;;IAEhD,2CAA2C;;IAE3C,oEAAoE;;IAEpE,sEAAsE;;IAEtE,8BAA8B;;IAE9B,8BAA8B;;CAEtB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAevD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAkBtD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOhE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAgB5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,CA8CtE;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,EAAE,MAAM,EAAE,GACtB,qBAAqB,CAqCvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CA6B3F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAMrD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAMvD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,IAAI,CAUN"}
@@ -0,0 +1,244 @@
1
+ import logger from '../logger/logger.js';
2
+ /**
3
+ * Security constants for scope validation
4
+ */
5
+ export const SCOPE_VALIDATION_CONFIG = {
6
+ /** Maximum allowed length for a single scope */
7
+ MAX_SCOPE_LENGTH: 100,
8
+ /** Maximum number of scopes per request */
9
+ MAX_SCOPES_COUNT: 50,
10
+ /** Valid tag name pattern: alphanumeric, underscore, hyphen only */
11
+ TAG_NAME_PATTERN: /^[a-zA-Z0-9_-]+$/,
12
+ /** Valid tag scope pattern: tag: prefix followed by valid tag name */
13
+ TAG_SCOPE_PATTERN: /^tag:[a-zA-Z0-9_-]+$/,
14
+ /** Minimum tag name length */
15
+ MIN_TAG_LENGTH: 1,
16
+ /** Maximum tag name length */
17
+ MAX_TAG_LENGTH: 50,
18
+ };
19
+ /**
20
+ * Validates if a string is a valid tag name
21
+ * @param tagName - The tag name to validate
22
+ * @returns True if valid, false otherwise
23
+ */
24
+ export function isValidTagName(tagName) {
25
+ if (!tagName || typeof tagName !== 'string') {
26
+ return false;
27
+ }
28
+ // Check length constraints
29
+ if (tagName.length < SCOPE_VALIDATION_CONFIG.MIN_TAG_LENGTH ||
30
+ tagName.length > SCOPE_VALIDATION_CONFIG.MAX_TAG_LENGTH) {
31
+ return false;
32
+ }
33
+ // Check pattern
34
+ return SCOPE_VALIDATION_CONFIG.TAG_NAME_PATTERN.test(tagName);
35
+ }
36
+ /**
37
+ * Validates if a string is a valid tag scope
38
+ * @param scope - The scope to validate
39
+ * @returns True if valid, false otherwise
40
+ */
41
+ export function isValidTagScope(scope) {
42
+ if (!scope || typeof scope !== 'string') {
43
+ return false;
44
+ }
45
+ // Check length constraints
46
+ if (scope.length > SCOPE_VALIDATION_CONFIG.MAX_SCOPE_LENGTH) {
47
+ return false;
48
+ }
49
+ // Check pattern
50
+ if (!SCOPE_VALIDATION_CONFIG.TAG_SCOPE_PATTERN.test(scope)) {
51
+ return false;
52
+ }
53
+ // Extract and validate tag name
54
+ const tagName = scope.slice(4); // Remove "tag:" prefix
55
+ return isValidTagName(tagName);
56
+ }
57
+ /**
58
+ * Safely extracts tag name from a tag scope
59
+ * @param scope - The scope string (e.g., "tag:web")
60
+ * @returns The tag name if valid, null otherwise
61
+ */
62
+ export function extractTagFromScope(scope) {
63
+ if (!isValidTagScope(scope)) {
64
+ logger.warn(`Invalid tag scope format: ${scope}`);
65
+ return null;
66
+ }
67
+ return scope.slice(4); // Remove "tag:" prefix
68
+ }
69
+ /**
70
+ * Parses a scope string into its components
71
+ * @param scope - The scope string to parse
72
+ * @returns Parsed scope object or null if invalid
73
+ */
74
+ export function parseScope(scope) {
75
+ if (!scope || typeof scope !== 'string') {
76
+ return null;
77
+ }
78
+ // Currently only supporting tag scopes
79
+ if (scope.startsWith('tag:')) {
80
+ const tagName = extractTagFromScope(scope);
81
+ if (!tagName) {
82
+ return null;
83
+ }
84
+ return { type: 'tag', value: tagName };
85
+ }
86
+ // Future: Add support for other scope types (capability:, resource:, etc.)
87
+ return null;
88
+ }
89
+ /**
90
+ * Validates an array of scopes for format and security
91
+ * @param scopes - Array of scope strings to validate
92
+ * @returns Validation result with details
93
+ */
94
+ export function validateScopes(scopes) {
95
+ const result = {
96
+ isValid: true,
97
+ errors: [],
98
+ validScopes: [],
99
+ invalidScopes: [],
100
+ };
101
+ // Check for null/undefined input
102
+ if (!scopes || !Array.isArray(scopes)) {
103
+ result.isValid = false;
104
+ result.errors.push('Scopes must be an array');
105
+ return result;
106
+ }
107
+ // Check count limits
108
+ if (scopes.length > SCOPE_VALIDATION_CONFIG.MAX_SCOPES_COUNT) {
109
+ result.isValid = false;
110
+ result.errors.push(`Too many scopes: ${scopes.length} > ${SCOPE_VALIDATION_CONFIG.MAX_SCOPES_COUNT}`);
111
+ return result;
112
+ }
113
+ // Validate each scope
114
+ const seenScopes = new Set();
115
+ for (const scope of scopes) {
116
+ // Check for duplicates
117
+ if (seenScopes.has(scope)) {
118
+ result.errors.push(`Duplicate scope: ${scope}`);
119
+ result.invalidScopes.push(scope);
120
+ continue;
121
+ }
122
+ seenScopes.add(scope);
123
+ // Validate scope format
124
+ if (isValidTagScope(scope)) {
125
+ result.validScopes.push(scope);
126
+ }
127
+ else {
128
+ result.errors.push(`Invalid scope format: ${scope}`);
129
+ result.invalidScopes.push(scope);
130
+ }
131
+ }
132
+ // Set overall validity
133
+ result.isValid = result.errors.length === 0;
134
+ return result;
135
+ }
136
+ /**
137
+ * Validates that requested scopes are available (allowlist approach)
138
+ * @param requestedScopes - Scopes requested by client
139
+ * @param availableTags - Tags available on the server
140
+ * @returns Validation result
141
+ */
142
+ export function validateScopesAgainstAvailableTags(requestedScopes, availableTags) {
143
+ const result = {
144
+ isValid: true,
145
+ errors: [],
146
+ validScopes: [],
147
+ invalidScopes: [],
148
+ };
149
+ // First validate scope formats
150
+ const formatValidation = validateScopes(requestedScopes);
151
+ if (!formatValidation.isValid) {
152
+ return formatValidation;
153
+ }
154
+ // Create set of available tags for fast lookup
155
+ const availableTagSet = new Set(availableTags);
156
+ // Check each scope against available tags
157
+ for (const scope of requestedScopes) {
158
+ const tagName = extractTagFromScope(scope);
159
+ if (!tagName) {
160
+ result.errors.push(`Invalid scope format: ${scope}`);
161
+ result.invalidScopes.push(scope);
162
+ continue;
163
+ }
164
+ if (availableTagSet.has(tagName)) {
165
+ result.validScopes.push(scope);
166
+ }
167
+ else {
168
+ result.errors.push(`Scope not available: ${scope} (tag: ${tagName})`);
169
+ result.invalidScopes.push(scope);
170
+ }
171
+ }
172
+ result.isValid = result.errors.length === 0;
173
+ return result;
174
+ }
175
+ /**
176
+ * Checks if granted scopes satisfy the requirements for requested tags
177
+ * @param grantedScopes - Scopes granted during OAuth flow
178
+ * @param requestedTags - Tags requested for current operation
179
+ * @returns True if all requested tags are covered by granted scopes
180
+ */
181
+ export function hasRequiredScopes(grantedScopes, requestedTags) {
182
+ // Fail-secure: deny if inputs are invalid
183
+ if (!grantedScopes || !Array.isArray(grantedScopes) || !requestedTags || !Array.isArray(requestedTags)) {
184
+ logger.warn('Invalid input to hasRequiredScopes', { grantedScopes, requestedTags });
185
+ return false;
186
+ }
187
+ // No tags requested means access is allowed
188
+ if (requestedTags.length === 0) {
189
+ return true;
190
+ }
191
+ // Extract tags from granted scopes
192
+ const grantedTags = grantedScopes
193
+ .map((scope) => extractTagFromScope(scope))
194
+ .filter((tag) => tag !== null);
195
+ // Check if all requested tags are in granted tags
196
+ const hasAllTags = requestedTags.every((tag) => grantedTags.includes(tag));
197
+ if (!hasAllTags) {
198
+ logger.warn('Insufficient scopes for requested tags', {
199
+ grantedTags,
200
+ requestedTags,
201
+ missing: requestedTags.filter((tag) => !grantedTags.includes(tag)),
202
+ });
203
+ }
204
+ return hasAllTags;
205
+ }
206
+ /**
207
+ * Converts tags to their corresponding scopes
208
+ * @param tags - Array of tag names
209
+ * @returns Array of tag scopes
210
+ */
211
+ export function tagsToScopes(tags) {
212
+ if (!tags || !Array.isArray(tags)) {
213
+ return [];
214
+ }
215
+ return tags.filter((tag) => isValidTagName(tag)).map((tag) => `tag:${tag}`);
216
+ }
217
+ /**
218
+ * Converts scopes to their corresponding tags
219
+ * @param scopes - Array of scope strings
220
+ * @returns Array of tag names
221
+ */
222
+ export function scopesToTags(scopes) {
223
+ if (!scopes || !Array.isArray(scopes)) {
224
+ return [];
225
+ }
226
+ return scopes.map((scope) => extractTagFromScope(scope)).filter((tag) => tag !== null);
227
+ }
228
+ /**
229
+ * Security utility to audit scope operations
230
+ * @param operation - The operation being performed
231
+ * @param context - Additional context for logging
232
+ */
233
+ export function auditScopeOperation(operation, context) {
234
+ logger.info(`Scope operation: ${operation}`, {
235
+ operation,
236
+ clientId: context.clientId,
237
+ requestedScopes: context.requestedScopes,
238
+ grantedScopes: context.grantedScopes,
239
+ success: context.success,
240
+ error: context.error,
241
+ timestamp: new Date().toISOString(),
242
+ });
243
+ }
244
+ //# sourceMappingURL=scopeValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeValidation.js","sourceRoot":"","sources":["../../src/utils/scopeValidation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1mcp/agent",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "One MCP server to aggregate them all - A unified Model Context Protocol server implementation",
5
5
  "keywords": [
6
6
  "mcp",
@@ -42,13 +42,19 @@
42
42
  }
43
43
  },
44
44
  "lint-staged": {
45
+ "*.ts": [
46
+ "bash -c 'tsc --noEmit --project tsconfig.test.json'"
47
+ ],
45
48
  "*.{js,ts}": [
46
49
  "eslint --fix",
47
50
  "prettier --write"
51
+ ],
52
+ "*.{md,json,yml,yaml}": [
53
+ "prettier --write"
48
54
  ]
49
55
  },
50
56
  "dependencies": {
51
- "@modelcontextprotocol/sdk": "^1.13.0",
57
+ "@modelcontextprotocol/sdk": "^1.15.0",
52
58
  "body-parser": "^2.2.0",
53
59
  "cors": "^2.8.5",
54
60
  "express": "^5.1.0",
@@ -73,6 +79,7 @@
73
79
  "@typescript-eslint/eslint-plugin": "^8.27.0",
74
80
  "@typescript-eslint/parser": "^8.27.0",
75
81
  "@vitest/coverage-v8": "^1.4.0",
82
+ "axios": "^1.10.0",
76
83
  "eslint": "^9.22.0",
77
84
  "eslint-config-prettier": "^10.1.1",
78
85
  "eslint-plugin-prettier": "^5.2.3",
@@ -82,19 +89,26 @@
82
89
  "lint-staged": "^16.1.2",
83
90
  "prettier": "^3.5.3",
84
91
  "ts-node": "^10.9.2",
85
- "tsc-watch": "^6.2.1",
92
+ "tsc-watch": "^7.1.1",
86
93
  "typescript": "^5.3.3",
94
+ "vite-tsconfig-paths": "^5.1.4",
87
95
  "vitest": "^1.4.0"
88
96
  },
89
97
  "scripts": {
90
- "dev": "tsc-watch --onSuccess \"node build/index.js --config ./mcp.json --port 3051 --auth\"",
91
- "build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"",
92
- "watch": "tsc --watch",
98
+ "dev": "LOG_LEVEL=debug tsc-watch --project tsconfig.build.json --onSuccess \"node build/index.js --config ./mcp.json --port 3051 --enable-auth\"",
99
+ "build": "tsc --project tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755')\"",
100
+ "watch": "tsc --watch --project tsconfig.build.json",
93
101
  "inspector": "npx -y @modelcontextprotocol/inspector",
94
102
  "lint": "eslint . --ext .ts",
95
103
  "lint:fix": "eslint . --ext .ts --fix",
96
- "test": "vitest run",
97
- "test:watch": "vitest",
98
- "test:coverage": "vitest run --coverage"
104
+ "format": "prettier --write \"src/**/*.{js,ts}\" \"test/**/*.{js,ts}\"",
105
+ "typecheck": "tsc --noEmit --project tsconfig.test.json",
106
+ "test": "pnpm test:unit && pnpm test:e2e",
107
+ "test:unit": "vitest run",
108
+ "test:unit:watch": "vitest",
109
+ "test:unit:coverage": "vitest run --coverage",
110
+ "test:e2e": "vitest run --config vitest.e2e.config.ts",
111
+ "test:e2e:watch": "vitest --config vitest.e2e.config.ts",
112
+ "test:e2e:coverage": "vitest run --config vitest.e2e.config.ts --coverage"
99
113
  }
100
114
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,wBAA8B,YAAY;;;;;;;;;;;;;;;;;;;;;;IAYzC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9F,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY;IACxC,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,kBAAkB;KAC5B,EACD;QACE,YAAY,EAAE,uBAAuB;KACtC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clientManager.d.ts","sourceRoot":"","sources":["../../src/clients/clientManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAM1E,OAAO,EAAgB,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhH;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAqC3F;AAoCD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAM1E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,OAAO,GAAE,gBAAqB,EAC9B,kBAAkB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EAC7C,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAEZ"}
@@ -1,147 +0,0 @@
1
- import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
2
- import createClient from '../client.js';
3
- import logger from '../logger/logger.js';
4
- import { CONNECTION_RETRY, MCP_SERVER_NAME } from '../constants.js';
5
- import { ClientConnectionError, ClientNotFoundError, MCPError, CapabilityError } from '../utils/errorTypes.js';
6
- import { ClientStatus } from '../types.js';
7
- /**
8
- * Creates client instances for all transports with retry logic
9
- * @param transports Record of transport instances
10
- * @returns Record of client instances
11
- */
12
- export async function createClients(transports) {
13
- const clients = {};
14
- for (const [name, transport] of Object.entries(transports)) {
15
- logger.info(`Creating client for ${name}`);
16
- try {
17
- const client = await createClient();
18
- // Connect with retry logic
19
- await connectWithRetry(client, transport, name);
20
- clients[name] = {
21
- name,
22
- transport,
23
- client,
24
- status: ClientStatus.Connected,
25
- lastConnected: new Date(),
26
- };
27
- logger.info(`Client created for ${name}`);
28
- client.onclose = () => {
29
- clients[name].status = ClientStatus.Disconnected;
30
- logger.info(`Client ${name} disconnected`);
31
- };
32
- }
33
- catch (error) {
34
- logger.error(`Failed to create client for ${name}: ${error}`);
35
- clients[name] = {
36
- name,
37
- transport,
38
- client: await createClient(),
39
- status: ClientStatus.Error,
40
- lastError: error instanceof Error ? error : new Error(String(error)),
41
- };
42
- }
43
- }
44
- return Object.freeze(clients);
45
- }
46
- /**
47
- * Connects a client to its transport with retry logic
48
- * @param client The client to connect
49
- * @param transport The transport to connect to
50
- * @param name The name of the client for logging
51
- */
52
- async function connectWithRetry(client, transport, name) {
53
- let retryDelay = CONNECTION_RETRY.INITIAL_DELAY_MS;
54
- for (let i = 0; i < CONNECTION_RETRY.MAX_ATTEMPTS; i++) {
55
- try {
56
- await client.connect(transport);
57
- const sv = await client.getServerVersion();
58
- if (sv?.name === MCP_SERVER_NAME) {
59
- throw new ClientConnectionError(name, new Error('Aborted to prevent circular dependency'));
60
- }
61
- logger.info(`Successfully connected to ${name} with server ${sv?.name} version ${sv?.version}`);
62
- return;
63
- }
64
- catch (error) {
65
- logger.error(`Failed to connect to ${name}: ${error}`);
66
- if (i < CONNECTION_RETRY.MAX_ATTEMPTS - 1) {
67
- logger.info(`Retrying in ${retryDelay}ms...`);
68
- await new Promise((resolve) => setTimeout(resolve, retryDelay));
69
- retryDelay *= 2; // Exponential backoff
70
- }
71
- else {
72
- throw new ClientConnectionError(name, error instanceof Error ? error : new Error(String(error)));
73
- }
74
- }
75
- }
76
- }
77
- /**
78
- * Gets a client by name with error handling
79
- * @param clients Record of client instances
80
- * @param clientName The name of the client to get
81
- * @returns The client instance
82
- * @throws ClientNotFoundError if the client is not found
83
- */
84
- export function getClient(clients, clientName) {
85
- const client = clients[clientName];
86
- if (!client) {
87
- throw new ClientNotFoundError(clientName);
88
- }
89
- return client;
90
- }
91
- /**
92
- * Executes an operation with error handling and retry logic
93
- * @param operation The operation to execute
94
- * @param context The execution context (client info or server info)
95
- * @param options Operation options including timeout and retry settings
96
- * @returns The result of the operation
97
- */
98
- export async function executeOperation(operation, contextName, options = {}) {
99
- const { retryCount = 0, retryDelay = 1000 } = options;
100
- let lastError;
101
- for (let i = 0; i <= retryCount; i++) {
102
- try {
103
- return await operation();
104
- }
105
- catch (error) {
106
- lastError = error instanceof Error ? error : new Error(String(error));
107
- if (i < retryCount) {
108
- logger.info(`Retrying operation ${operation.name} on ${contextName} after ${retryDelay}ms`);
109
- await new Promise((resolve) => setTimeout(resolve, retryDelay));
110
- }
111
- }
112
- }
113
- // If we get here, we've exhausted all retries
114
- logger.error(`Operation failed on ${contextName} after ${retryCount + 1} attempts: ${lastError}`);
115
- if (lastError instanceof MCPError) {
116
- throw lastError;
117
- }
118
- const mcpError = new MCPError(`Error executing operation on ${contextName}`, ErrorCode.InternalError, {
119
- originalError: lastError,
120
- });
121
- throw mcpError;
122
- }
123
- /**
124
- * Executes a client operation with error handling and retry logic
125
- * @param clients Record of client instances
126
- * @param clientName The name of the client to use
127
- * @param operation The operation to execute
128
- * @param options Operation options including timeout and retry settings
129
- * @param requiredCapability The capability required for this operation
130
- */
131
- export async function executeClientOperation(clients, clientName, operation, options = {}, requiredCapability) {
132
- const clientInfo = getClient(clients, clientName);
133
- if (requiredCapability && !clientInfo.capabilities?.[requiredCapability]) {
134
- throw new CapabilityError(clientName, String(requiredCapability));
135
- }
136
- return executeOperation(() => operation(clientInfo), `client ${clientName}`, options);
137
- }
138
- /**
139
- * Executes a server operation with error handling and retry logic
140
- * @param server The server to execute the operation on
141
- * @param operation The operation to execute
142
- * @param options Operation options including timeout and retry settings
143
- */
144
- export async function executeServerOperation(server, operation, options = {}) {
145
- return executeOperation(() => operation(server), 'server', options);
146
- }
147
- //# sourceMappingURL=clientManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clientManager.js","sourceRoot":"","sources":["../../src/clients/clientManager.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configManager.d.ts","sourceRoot":"","sources":["../../src/config/configManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,wBAAwB,2BAA2B;CACpD;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,cAAc,CAAS;IAE/B;;;OAGG;IACH,OAAO;IAOP;;;OAGG;WACW,WAAW,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa;IAOjE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACI,aAAa,IAAI,IAAI;IAkB5B;;OAEG;IACI,YAAY,IAAI,IAAI;IAQ3B;;OAEG;IACI,YAAY,IAAI,IAAI;IAgB3B;;;OAGG;IACI,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;CAG7D;AAED,eAAe,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../src/config/configManager.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { MCPServerParams, EnhancedTransport } from '../types.js';
2
- /**
3
- * Creates transport instances from configuration
4
- * @returns Record of transport instances
5
- */
6
- export declare function createTransports(config: Record<string, MCPServerParams>): Record<string, EnhancedTransport>;
7
- //# sourceMappingURL=transportConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transportConfig.d.ts","sourceRoot":"","sources":["../../src/config/transportConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAkF3G"}
@@ -1,90 +0,0 @@
1
- import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
2
- import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
3
- import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
4
- import { ZodError } from 'zod';
5
- import logger from '../logger/logger.js';
6
- import { transportConfigSchema } from '../types.js';
7
- /**
8
- * Creates transport instances from configuration
9
- * @returns Record of transport instances
10
- */
11
- export function createTransports(config) {
12
- const transports = {};
13
- const assignTransport = (name, transport, validatedTransport) => {
14
- transport.timeout = validatedTransport.timeout;
15
- transport.tags = validatedTransport.tags;
16
- transports[name] = transport;
17
- };
18
- for (const [name, params] of Object.entries(config)) {
19
- if (params.disabled) {
20
- logger.debug(`Skipping disabled transport: ${name}`);
21
- continue;
22
- }
23
- // Infer type if missing
24
- let inferredParams = { ...params };
25
- if (!inferredParams.type) {
26
- logger.warn(`Transport type is missing for ${name}, inferring type...`);
27
- if (inferredParams.command) {
28
- inferredParams.type = 'stdio';
29
- logger.info(`Inferred transport type for ${name} as stdio`);
30
- }
31
- else if (inferredParams.url) {
32
- inferredParams.type = 'http';
33
- logger.info(`Inferred transport type for ${name} as http/streamableHttp`);
34
- }
35
- }
36
- try {
37
- const validatedTransport = transportConfigSchema.parse(inferredParams);
38
- let transport;
39
- switch (validatedTransport.type) {
40
- case 'sse': {
41
- if (!validatedTransport.url) {
42
- throw new Error(`URL is required for ${validatedTransport.type} transport: ${name}`);
43
- }
44
- transport = new SSEClientTransport(new URL(validatedTransport.url), {
45
- requestInit: {
46
- headers: validatedTransport.headers,
47
- },
48
- });
49
- assignTransport(name, transport, validatedTransport);
50
- break;
51
- }
52
- case 'http': // Since sse is deprecated, we can use http as a alias for streamableHttp
53
- case 'streamableHttp': {
54
- if (!validatedTransport.url) {
55
- throw new Error(`URL is required for streamableHttp transport: ${name}`);
56
- }
57
- transport = new StreamableHTTPClientTransport(new URL(validatedTransport.url), {
58
- requestInit: {
59
- headers: validatedTransport.headers,
60
- },
61
- });
62
- assignTransport(name, transport, validatedTransport);
63
- break;
64
- }
65
- case 'stdio': {
66
- if (!validatedTransport.command) {
67
- throw new Error(`Command is required for stdio transport: ${name}`);
68
- }
69
- transport = new StdioClientTransport(validatedTransport);
70
- assignTransport(name, transport, validatedTransport);
71
- break;
72
- }
73
- default:
74
- throw new Error(`Invalid transport type: ${validatedTransport.type}`);
75
- }
76
- logger.debug(`Created transport: ${name}`);
77
- }
78
- catch (error) {
79
- if (error instanceof ZodError) {
80
- logger.error(`Invalid transport configuration for ${name}:`, error.errors);
81
- }
82
- else {
83
- logger.error(`Error creating transport ${name}:`, error);
84
- }
85
- throw error;
86
- }
87
- }
88
- return transports;
89
- }
90
- //# sourceMappingURL=transportConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transportConfig.js","sourceRoot":"","sources":["../../src/config/transportConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"loggingMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/loggingMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAiJnE;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAqC7D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"loggingMiddleware.js","sourceRoot":"","sources":["../../src/middleware/loggingMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,MAAM,MAAM,qBAAqB,CAAC;AA2BzC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;AAErD;;GAEG;AACH,SAAS,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAe;IACpE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;QACzB,SAAS;QACT,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,SAAiB,EAAE,MAAe,EAAE,QAAgB;IACvE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;QAC1B,SAAS;QACT,QAAQ;QACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,SAAiB,EAAE,KAAc,EAAE,QAAgB;IACnE,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;QACxB,SAAS;QACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACrE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACvD,QAAQ;QACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAc,EAAE,MAAe;IACtD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;QAC9B,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,eAAkC,EAClC,MAAc;IAEd,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,wBAAwB;QACxB,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;YAC5B,SAAS;YACT,MAAM;YACN,SAAS;SACV,CAAC,CAAC;QAEH,cAAc;QACd,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,0DAA0D;YAC1D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE;gBAC5C,GAAG,KAAK;gBACR,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;oBACvC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;oBACjE,OAAO,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAC9C,CAAC;gBACD,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE;oBACpD,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;oBACvD,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;gBAC3D,CAAC;aACF,CAAC,CAAC;YAEH,eAAe;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAEzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrC,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,2BAA2B;YAC3B,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,eAAuC,EACvC,MAAc;IAEd,OAAO,KAAK,EAAE,YAAY,EAAE,EAAE;QAC5B,mBAAmB;QACnB,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAE7C,2BAA2B;QAC3B,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,yBAAyB;IACzB,MAAM,yBAAyB,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,8BAA8B,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClF,MAAM,oBAAoB,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE9D,wCAAwC;IACxC,MAAM,CAAC,iBAAiB,GAAG,CAA0B,MAAS,EAAE,OAA0B,EAAE,EAAE;QAC5F,OAAO,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/G,CAAC,CAAC;IAEF,6CAA6C;IAC7C,MAAM,CAAC,sBAAsB,GAAG,CAA+B,MAAS,EAAE,OAA+B,EAAE,EAAE;QAC3G,OAAO,8BAA8B,CACnC,MAAM,EACN,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CACxE,CAAC;IACJ,CAAC,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,YAAY,GAAG,CAAC,YAGtB,EAAE,EAAE;QACH,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1D,+DAA+D;QAC/D,IAAI,CAAC;YACH,OAAO,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACtE,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;gBACxE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}