@apify/mcpc 0.1.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 (178) hide show
  1. package/.claude/settings.local.json +36 -0
  2. package/.eslintrc.json +44 -0
  3. package/.idea/codeStyles/Project.xml +60 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/inspectionProfiles/Project_Default.xml +11 -0
  6. package/.idea/prettier.xml +6 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/.idea/workspace.xml +572 -0
  9. package/LICENSE +201 -0
  10. package/PHASE1-SUMMARY.md +269 -0
  11. package/PUBLISHING.md +111 -0
  12. package/README.md +1056 -0
  13. package/TESTING.md +212 -0
  14. package/TODOs.md +94 -0
  15. package/bin/mcpc +9 -0
  16. package/bin/mcpc-bridge +9 -0
  17. package/dist/bridge/index.d.ts +3 -0
  18. package/dist/bridge/index.d.ts.map +1 -0
  19. package/dist/bridge/index.js +587 -0
  20. package/dist/bridge/index.js.map +1 -0
  21. package/dist/cli/commands/auth.d.ts +9 -0
  22. package/dist/cli/commands/auth.d.ts.map +1 -0
  23. package/dist/cli/commands/auth.js +81 -0
  24. package/dist/cli/commands/auth.js.map +1 -0
  25. package/dist/cli/commands/clean.d.ts +11 -0
  26. package/dist/cli/commands/clean.d.ts.map +1 -0
  27. package/dist/cli/commands/clean.js +224 -0
  28. package/dist/cli/commands/clean.js.map +1 -0
  29. package/dist/cli/commands/index.d.ts +8 -0
  30. package/dist/cli/commands/index.d.ts.map +1 -0
  31. package/dist/cli/commands/index.js +8 -0
  32. package/dist/cli/commands/index.js.map +1 -0
  33. package/dist/cli/commands/logging.d.ts +3 -0
  34. package/dist/cli/commands/logging.d.ts.map +1 -0
  35. package/dist/cli/commands/logging.js +22 -0
  36. package/dist/cli/commands/logging.js.map +1 -0
  37. package/dist/cli/commands/prompts.d.ts +6 -0
  38. package/dist/cli/commands/prompts.d.ts.map +1 -0
  39. package/dist/cli/commands/prompts.js +27 -0
  40. package/dist/cli/commands/prompts.js.map +1 -0
  41. package/dist/cli/commands/resources.d.ts +11 -0
  42. package/dist/cli/commands/resources.d.ts.map +1 -0
  43. package/dist/cli/commands/resources.js +70 -0
  44. package/dist/cli/commands/resources.js.map +1 -0
  45. package/dist/cli/commands/sessions.d.ts +28 -0
  46. package/dist/cli/commands/sessions.d.ts.map +1 -0
  47. package/dist/cli/commands/sessions.js +356 -0
  48. package/dist/cli/commands/sessions.js.map +1 -0
  49. package/dist/cli/commands/tools.d.ts +8 -0
  50. package/dist/cli/commands/tools.d.ts.map +1 -0
  51. package/dist/cli/commands/tools.js +54 -0
  52. package/dist/cli/commands/tools.js.map +1 -0
  53. package/dist/cli/commands/utilities.d.ts +3 -0
  54. package/dist/cli/commands/utilities.d.ts.map +1 -0
  55. package/dist/cli/commands/utilities.js +20 -0
  56. package/dist/cli/commands/utilities.js.map +1 -0
  57. package/dist/cli/helpers.d.ts +18 -0
  58. package/dist/cli/helpers.d.ts.map +1 -0
  59. package/dist/cli/helpers.js +165 -0
  60. package/dist/cli/helpers.js.map +1 -0
  61. package/dist/cli/index.d.ts +3 -0
  62. package/dist/cli/index.d.ts.map +1 -0
  63. package/dist/cli/index.js +326 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/cli/output.d.ts +18 -0
  66. package/dist/cli/output.d.ts.map +1 -0
  67. package/dist/cli/output.js +221 -0
  68. package/dist/cli/output.js.map +1 -0
  69. package/dist/cli/parser.d.ts +19 -0
  70. package/dist/cli/parser.d.ts.map +1 -0
  71. package/dist/cli/parser.js +168 -0
  72. package/dist/cli/parser.js.map +1 -0
  73. package/dist/cli/shell-parser.d.ts +5 -0
  74. package/dist/cli/shell-parser.d.ts.map +1 -0
  75. package/dist/cli/shell-parser.js +38 -0
  76. package/dist/cli/shell-parser.js.map +1 -0
  77. package/dist/cli/shell.d.ts +2 -0
  78. package/dist/cli/shell.d.ts.map +1 -0
  79. package/dist/cli/shell.js +277 -0
  80. package/dist/cli/shell.js.map +1 -0
  81. package/dist/cli/tool-result.d.ts +2 -0
  82. package/dist/cli/tool-result.d.ts.map +1 -0
  83. package/dist/cli/tool-result.js +19 -0
  84. package/dist/cli/tool-result.js.map +1 -0
  85. package/dist/core/factory.d.ts +19 -0
  86. package/dist/core/factory.d.ts.map +1 -0
  87. package/dist/core/factory.js +55 -0
  88. package/dist/core/factory.js.map +1 -0
  89. package/dist/core/index.d.ts +4 -0
  90. package/dist/core/index.d.ts.map +1 -0
  91. package/dist/core/index.js +4 -0
  92. package/dist/core/index.js.map +1 -0
  93. package/dist/core/mcp-client.d.ts +30 -0
  94. package/dist/core/mcp-client.d.ts.map +1 -0
  95. package/dist/core/mcp-client.js +215 -0
  96. package/dist/core/mcp-client.js.map +1 -0
  97. package/dist/core/transports.d.ts +12 -0
  98. package/dist/core/transports.d.ts.map +1 -0
  99. package/dist/core/transports.js +65 -0
  100. package/dist/core/transports.js.map +1 -0
  101. package/dist/lib/auth/auth-profiles.d.ts +7 -0
  102. package/dist/lib/auth/auth-profiles.d.ts.map +1 -0
  103. package/dist/lib/auth/auth-profiles.js +105 -0
  104. package/dist/lib/auth/auth-profiles.js.map +1 -0
  105. package/dist/lib/auth/keychain.d.ts +22 -0
  106. package/dist/lib/auth/keychain.d.ts.map +1 -0
  107. package/dist/lib/auth/keychain.js +92 -0
  108. package/dist/lib/auth/keychain.js.map +1 -0
  109. package/dist/lib/auth/oauth-flow.d.ts +7 -0
  110. package/dist/lib/auth/oauth-flow.d.ts.map +1 -0
  111. package/dist/lib/auth/oauth-flow.js +236 -0
  112. package/dist/lib/auth/oauth-flow.js.map +1 -0
  113. package/dist/lib/auth/oauth-provider.d.ts +24 -0
  114. package/dist/lib/auth/oauth-provider.d.ts.map +1 -0
  115. package/dist/lib/auth/oauth-provider.js +144 -0
  116. package/dist/lib/auth/oauth-provider.js.map +1 -0
  117. package/dist/lib/auth/oauth-token-manager.d.ts +25 -0
  118. package/dist/lib/auth/oauth-token-manager.d.ts.map +1 -0
  119. package/dist/lib/auth/oauth-token-manager.js +70 -0
  120. package/dist/lib/auth/oauth-token-manager.js.map +1 -0
  121. package/dist/lib/auth/oauth-utils.d.ts +14 -0
  122. package/dist/lib/auth/oauth-utils.d.ts.map +1 -0
  123. package/dist/lib/auth/oauth-utils.js +68 -0
  124. package/dist/lib/auth/oauth-utils.js.map +1 -0
  125. package/dist/lib/auth/token-refresh.d.ts +2 -0
  126. package/dist/lib/auth/token-refresh.d.ts.map +1 -0
  127. package/dist/lib/auth/token-refresh.js +70 -0
  128. package/dist/lib/auth/token-refresh.js.map +1 -0
  129. package/dist/lib/bridge-client.d.ts +23 -0
  130. package/dist/lib/bridge-client.d.ts.map +1 -0
  131. package/dist/lib/bridge-client.js +181 -0
  132. package/dist/lib/bridge-client.js.map +1 -0
  133. package/dist/lib/bridge-manager.d.ts +17 -0
  134. package/dist/lib/bridge-manager.d.ts.map +1 -0
  135. package/dist/lib/bridge-manager.js +240 -0
  136. package/dist/lib/bridge-manager.js.map +1 -0
  137. package/dist/lib/config.d.ts +6 -0
  138. package/dist/lib/config.d.ts.map +1 -0
  139. package/dist/lib/config.js +116 -0
  140. package/dist/lib/config.js.map +1 -0
  141. package/dist/lib/errors.d.ts +23 -0
  142. package/dist/lib/errors.d.ts.map +1 -0
  143. package/dist/lib/errors.js +81 -0
  144. package/dist/lib/errors.js.map +1 -0
  145. package/dist/lib/file-lock.d.ts +2 -0
  146. package/dist/lib/file-lock.d.ts.map +1 -0
  147. package/dist/lib/file-lock.js +46 -0
  148. package/dist/lib/file-lock.js.map +1 -0
  149. package/dist/lib/file-logger.d.ts +19 -0
  150. package/dist/lib/file-logger.d.ts.map +1 -0
  151. package/dist/lib/file-logger.js +126 -0
  152. package/dist/lib/file-logger.js.map +1 -0
  153. package/dist/lib/index.d.ts +6 -0
  154. package/dist/lib/index.d.ts.map +1 -0
  155. package/dist/lib/index.js +6 -0
  156. package/dist/lib/index.js.map +1 -0
  157. package/dist/lib/logger.d.ts +24 -0
  158. package/dist/lib/logger.d.ts.map +1 -0
  159. package/dist/lib/logger.js +189 -0
  160. package/dist/lib/logger.js.map +1 -0
  161. package/dist/lib/session-client.d.ts +28 -0
  162. package/dist/lib/session-client.d.ts.map +1 -0
  163. package/dist/lib/session-client.js +104 -0
  164. package/dist/lib/session-client.js.map +1 -0
  165. package/dist/lib/sessions.d.ts +9 -0
  166. package/dist/lib/sessions.d.ts.map +1 -0
  167. package/dist/lib/sessions.js +116 -0
  168. package/dist/lib/sessions.js.map +1 -0
  169. package/dist/lib/types.d.ts +117 -0
  170. package/dist/lib/types.d.ts.map +1 -0
  171. package/dist/lib/types.js +2 -0
  172. package/dist/lib/types.js.map +1 -0
  173. package/dist/lib/utils.d.ts +29 -0
  174. package/dist/lib/utils.d.ts.map +1 -0
  175. package/dist/lib/utils.js +173 -0
  176. package/dist/lib/utils.js.map +1 -0
  177. package/package.json +71 -0
  178. package/tsconfig.test.json +11 -0
@@ -0,0 +1,116 @@
1
+ import { readFileSync } from 'fs';
2
+ import { resolve } from 'path';
3
+ import { ClientError } from './errors.js';
4
+ import { createLogger } from './logger.js';
5
+ import { normalizeServerUrl } from './utils.js';
6
+ const logger = createLogger('config');
7
+ export function loadConfig(configPath) {
8
+ const absolutePath = resolve(configPath);
9
+ try {
10
+ logger.debug(`Loading config from: ${absolutePath}`);
11
+ const content = readFileSync(absolutePath, 'utf-8');
12
+ const config = JSON.parse(content);
13
+ if (!config.mcpServers || typeof config.mcpServers !== 'object') {
14
+ throw new ClientError(`Invalid config file format: missing or invalid "mcpServers" field.\n` +
15
+ `Expected: { "mcpServers": { "server-name": {...} } }`);
16
+ }
17
+ logger.debug(`Loaded ${Object.keys(config.mcpServers).length} server(s) from config`);
18
+ return config;
19
+ }
20
+ catch (error) {
21
+ if (error.code === 'ENOENT') {
22
+ throw new ClientError(`Config file not found: ${absolutePath}`);
23
+ }
24
+ if (error instanceof SyntaxError) {
25
+ throw new ClientError(`Invalid JSON in config file: ${absolutePath}\n${error.message}`);
26
+ }
27
+ if (error instanceof ClientError) {
28
+ throw error;
29
+ }
30
+ throw new ClientError(`Failed to load config file: ${absolutePath}\n${error.message}`);
31
+ }
32
+ }
33
+ export function getServerConfig(config, serverName) {
34
+ const serverConfig = config.mcpServers[serverName];
35
+ if (!serverConfig) {
36
+ const availableServers = Object.keys(config.mcpServers);
37
+ throw new ClientError(`Server "${serverName}" not found in config file.\n` +
38
+ `Available servers: ${availableServers.join(', ')}`);
39
+ }
40
+ const substituted = substituteEnvVars(serverConfig);
41
+ logger.debug(`Retrieved config for server: ${serverName}`, substituted);
42
+ return substituted;
43
+ }
44
+ function substituteEnvVars(config) {
45
+ const result = {};
46
+ if (config.url !== undefined) {
47
+ const substituted = substituteString(config.url);
48
+ try {
49
+ result.url = normalizeServerUrl(substituted);
50
+ }
51
+ catch (error) {
52
+ throw new ClientError(`Invalid URL in server config: ${substituted}\n${error.message}`);
53
+ }
54
+ }
55
+ if (config.command !== undefined) {
56
+ result.command = substituteString(config.command);
57
+ }
58
+ if (config.args !== undefined) {
59
+ result.args = config.args.map(substituteString);
60
+ }
61
+ if (config.env !== undefined) {
62
+ result.env = substituteEnvObject(config.env);
63
+ }
64
+ if (config.headers !== undefined) {
65
+ result.headers = substituteEnvObject(config.headers);
66
+ }
67
+ if (config.timeout !== undefined) {
68
+ result.timeout = config.timeout;
69
+ }
70
+ return result;
71
+ }
72
+ function substituteString(str) {
73
+ return str.replace(/\$\{([^}]+)}/g, (_match, varName) => {
74
+ const value = process.env[varName];
75
+ if (value === undefined) {
76
+ logger.warn(`Environment variable not found: ${varName}, using empty string`);
77
+ return '';
78
+ }
79
+ return value;
80
+ });
81
+ }
82
+ function substituteEnvObject(obj) {
83
+ const result = {};
84
+ for (const [key, value] of Object.entries(obj)) {
85
+ result[key] = substituteString(value);
86
+ }
87
+ return result;
88
+ }
89
+ export function listServers(config) {
90
+ return Object.keys(config.mcpServers);
91
+ }
92
+ export function validateServerConfig(config) {
93
+ const hasUrl = config.url !== undefined;
94
+ const hasCommand = config.command !== undefined;
95
+ if (!hasUrl && !hasCommand) {
96
+ throw new ClientError('Invalid server config: must specify either "url" (for HTTP) or "command" (for stdio)');
97
+ }
98
+ if (hasUrl && hasCommand) {
99
+ throw new ClientError('Invalid server config: cannot specify both "url" and "command"');
100
+ }
101
+ if (config.url !== undefined) {
102
+ if (typeof config.url !== 'string' || config.url.trim() === '') {
103
+ throw new ClientError('Invalid server config: "url" must be a non-empty string');
104
+ }
105
+ if (!config.url.startsWith('http://') && !config.url.startsWith('https://')) {
106
+ throw new ClientError(`Invalid server config: "url" must start with http:// or https://, got: ${config.url}`);
107
+ }
108
+ }
109
+ if (config.command !== undefined) {
110
+ if (typeof config.command !== 'string' || config.command.trim() === '') {
111
+ throw new ClientError('Invalid server config: "command" must be a non-empty string');
112
+ }
113
+ }
114
+ return true;
115
+ }
116
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAStC,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAGpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,CAAC;QAGhD,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,IAAI,WAAW,CACnB,sEAAsE;gBACtE,sDAAsD,CACvD,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,wBAAwB,CAAC,CAAC;QAEtF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,WAAW,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,WAAW,CACnB,gCAAgC,YAAY,KAAK,KAAK,CAAC,OAAO,EAAE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,WAAW,CACnB,+BAA+B,YAAY,KAAM,KAAe,CAAC,OAAO,EAAE,CAC3E,CAAC;IACJ,CAAC;AACH,CAAC;AAUD,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,UAAkB;IACnE,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,IAAI,WAAW,CACnB,WAAW,UAAU,+BAA+B;YACpD,sBAAsB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpD,CAAC;IACJ,CAAC;IAGD,MAAM,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEpD,MAAM,CAAC,KAAK,CAAC,gCAAgC,UAAU,EAAE,EAAE,WAAW,CAAC,CAAC;IAExE,OAAO,WAAW,CAAC;AACrB,CAAC;AASD,SAAS,iBAAiB,CAAC,MAAuB;IAChD,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,WAAW,CACnB,iCAAiC,WAAW,KAAM,KAAe,CAAC,OAAO,EAAE,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AASD,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,OAAe,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,mCAAmC,OAAO,sBAAsB,CAAC,CAAC;YAC9E,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,SAAS,mBAAmB,CAAC,GAA2B;IACtD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,MAAiB;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AASD,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAE1D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;IAEhD,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,WAAW,CACnB,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAGD,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;QACzB,MAAM,IAAI,WAAW,CACnB,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAGD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/D,MAAM,IAAI,WAAW,CACnB,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,WAAW,CACnB,0EAA0E,MAAM,CAAC,GAAG,EAAE,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvE,MAAM,IAAI,WAAW,CACnB,6DAA6D,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,23 @@
1
+ export declare class McpError extends Error {
2
+ readonly code: number;
3
+ readonly details?: unknown;
4
+ constructor(message: string, code: number, details?: unknown);
5
+ toJSON(): Record<string, unknown>;
6
+ }
7
+ export declare class ClientError extends McpError {
8
+ constructor(message: string, details?: unknown);
9
+ }
10
+ export declare class ServerError extends McpError {
11
+ constructor(message: string, details?: unknown);
12
+ }
13
+ export declare class NetworkError extends McpError {
14
+ constructor(message: string, details?: unknown);
15
+ }
16
+ export declare class AuthError extends McpError {
17
+ constructor(message: string, details?: unknown);
18
+ }
19
+ export declare function isMcpError(error: unknown): error is McpError;
20
+ export declare function isAbortError(error: unknown): boolean;
21
+ export declare function toMcpError(error: unknown): McpError;
22
+ export declare function formatError(error: unknown, verbose?: boolean): string;
23
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAeA,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAe5D,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQlC;AAMD,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAG/C;AAMD,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAG/C;AAMD,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAG/C;AAMD,qBAAa,SAAU,SAAQ,QAAQ;gBACzB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAG/C;AAKD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAMD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBpD;AAMD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAUnD;AAKD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,UAAQ,GAAG,MAAM,CAcnE"}
@@ -0,0 +1,81 @@
1
+ export class McpError extends Error {
2
+ code;
3
+ details;
4
+ constructor(message, code, details) {
5
+ super(message);
6
+ this.name = this.constructor.name;
7
+ this.code = code;
8
+ this.details = details;
9
+ if (Error.captureStackTrace) {
10
+ Error.captureStackTrace(this, this.constructor);
11
+ }
12
+ }
13
+ toJSON() {
14
+ return {
15
+ error: this.name,
16
+ message: this.message,
17
+ code: this.code,
18
+ details: this.details,
19
+ };
20
+ }
21
+ }
22
+ export class ClientError extends McpError {
23
+ constructor(message, details) {
24
+ super(message, 1, details);
25
+ }
26
+ }
27
+ export class ServerError extends McpError {
28
+ constructor(message, details) {
29
+ super(message, 2, details);
30
+ }
31
+ }
32
+ export class NetworkError extends McpError {
33
+ constructor(message, details) {
34
+ super(message, 3, details);
35
+ }
36
+ }
37
+ export class AuthError extends McpError {
38
+ constructor(message, details) {
39
+ super(message, 4, details);
40
+ }
41
+ }
42
+ export function isMcpError(error) {
43
+ return error instanceof McpError;
44
+ }
45
+ export function isAbortError(error) {
46
+ if (!error)
47
+ return false;
48
+ if (error instanceof Error) {
49
+ if (error.name === 'AbortError')
50
+ return true;
51
+ if (error.message.includes('AbortError'))
52
+ return true;
53
+ if (error.message.includes('aborted'))
54
+ return true;
55
+ }
56
+ if (typeof error === 'object' && 'name' in error && error.name === 'AbortError') {
57
+ return true;
58
+ }
59
+ return false;
60
+ }
61
+ export function toMcpError(error) {
62
+ if (isMcpError(error)) {
63
+ return error;
64
+ }
65
+ if (error instanceof Error) {
66
+ return new ClientError(error.message, { originalError: error.name });
67
+ }
68
+ return new ClientError(String(error));
69
+ }
70
+ export function formatError(error, verbose = false) {
71
+ const mcpError = toMcpError(error);
72
+ let output = `Error: ${mcpError.message}`;
73
+ if (verbose && mcpError.details) {
74
+ output += `\n\nDetails:\n${JSON.stringify(mcpError.details, null, 2)}`;
75
+ }
76
+ if (verbose && mcpError.stack) {
77
+ output += `\n\nStack trace:\n${mcpError.stack}`;
78
+ }
79
+ return output;
80
+ }
81
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function withFileLock<T>(filePath: string, operation: () => Promise<T>, defaultContent?: string): Promise<T>;
2
+ //# sourceMappingURL=file-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-lock.d.ts","sourceRoot":"","sources":["../../src/lib/file-lock.ts"],"names":[],"mappings":"AAwBA,wBAAsB,YAAY,CAAC,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,cAAc,GAAE,MAAa,GAC5B,OAAO,CAAC,CAAC,CAAC,CA4CZ"}
@@ -0,0 +1,46 @@
1
+ import { writeFile } from 'fs/promises';
2
+ import { join } from 'path';
3
+ import * as lockfile from 'proper-lockfile';
4
+ import { ensureDir, fileExists } from './utils.js';
5
+ import { createLogger } from './logger.js';
6
+ import { ClientError } from './errors.js';
7
+ const logger = createLogger('file-lock');
8
+ const LOCK_TIMEOUT = 5000;
9
+ export async function withFileLock(filePath, operation, defaultContent = '{}') {
10
+ const dir = join(filePath, '..');
11
+ await ensureDir(dir);
12
+ if (!(await fileExists(filePath))) {
13
+ await writeFile(filePath, defaultContent, { encoding: 'utf-8', mode: 0o600 });
14
+ }
15
+ let release;
16
+ try {
17
+ logger.debug(`Acquiring file lock for ${filePath}`);
18
+ release = await lockfile.lock(filePath, {
19
+ retries: {
20
+ retries: 5,
21
+ minTimeout: 100,
22
+ maxTimeout: LOCK_TIMEOUT,
23
+ },
24
+ });
25
+ logger.debug('Lock acquired');
26
+ return await operation();
27
+ }
28
+ catch (error) {
29
+ if (error.message.includes('ELOCKED')) {
30
+ throw new ClientError(`File is locked by another process: ${filePath}. Please try again.`);
31
+ }
32
+ throw error;
33
+ }
34
+ finally {
35
+ if (release) {
36
+ try {
37
+ await release();
38
+ logger.debug('Lock released');
39
+ }
40
+ catch (error) {
41
+ logger.warn('Failed to release lock:', error);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=file-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../../src/lib/file-lock.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAGzC,MAAM,YAAY,GAAG,IAAI,CAAC;AAS1B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,SAA2B,EAC3B,iBAAyB,IAAI;IAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAGjC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,OAA0C,CAAC;IAE/C,IAAI,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;QACpD,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtC,OAAO,EAAE;gBACP,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,YAAY;aACzB;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAG9B,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,WAAW,CACnB,sCAAsC,QAAQ,qBAAqB,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QAET,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,OAAO,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface FileLoggerOptions {
2
+ filePath: string;
3
+ maxSize?: number;
4
+ maxFiles?: number;
5
+ }
6
+ export declare class FileLogger {
7
+ private filePath;
8
+ private maxSize;
9
+ private maxFiles;
10
+ private stream;
11
+ private writtenBytes;
12
+ constructor(options: FileLoggerOptions);
13
+ init(): Promise<void>;
14
+ write(message: string): void;
15
+ private rotateAsync;
16
+ private rotate;
17
+ close(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=file-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-logger.d.ts","sourceRoot":"","sources":["../../src/lib/file-logger.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAAK;gBAEb,OAAO,EAAE,iBAAiB;IAShC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;YAwBd,WAAW;YAaX,MAAM;IAwEd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
@@ -0,0 +1,126 @@
1
+ import { createWriteStream } from 'fs';
2
+ import { stat, readdir, unlink, rename } from 'fs/promises';
3
+ import { join, dirname } from 'path';
4
+ import { ensureDir } from './utils.js';
5
+ export class FileLogger {
6
+ filePath;
7
+ maxSize;
8
+ maxFiles;
9
+ stream = null;
10
+ writtenBytes = 0;
11
+ constructor(options) {
12
+ this.filePath = options.filePath;
13
+ this.maxSize = options.maxSize ?? 10 * 1024 * 1024;
14
+ this.maxFiles = options.maxFiles ?? 5;
15
+ }
16
+ async init() {
17
+ const dir = dirname(this.filePath);
18
+ await ensureDir(dir);
19
+ try {
20
+ const stats = await stat(this.filePath);
21
+ this.writtenBytes = stats.size;
22
+ if (this.writtenBytes >= this.maxSize) {
23
+ await this.rotate();
24
+ this.writtenBytes = 0;
25
+ }
26
+ }
27
+ catch {
28
+ this.writtenBytes = 0;
29
+ }
30
+ this.stream = createWriteStream(this.filePath, { flags: 'a' });
31
+ this.stream.on('error', (error) => {
32
+ console.error('[file-logger] Stream error:', error);
33
+ });
34
+ }
35
+ write(message) {
36
+ if (!this.stream) {
37
+ console.error('[file-logger] Logger not initialized');
38
+ return;
39
+ }
40
+ const line = message.endsWith('\n') ? message : `${message}\n`;
41
+ const bytes = Buffer.byteLength(line, 'utf8');
42
+ this.stream.write(line);
43
+ this.writtenBytes += bytes;
44
+ if (this.writtenBytes >= this.maxSize) {
45
+ void this.rotateAsync();
46
+ }
47
+ }
48
+ async rotateAsync() {
49
+ try {
50
+ await this.rotate();
51
+ this.writtenBytes = 0;
52
+ }
53
+ catch (error) {
54
+ console.error('[file-logger] Rotation error:', error);
55
+ }
56
+ }
57
+ async rotate() {
58
+ if (this.stream) {
59
+ this.stream.end();
60
+ this.stream = null;
61
+ }
62
+ const dir = dirname(this.filePath);
63
+ const basename = this.filePath;
64
+ const rotatedFiles = [];
65
+ try {
66
+ const files = await readdir(dir);
67
+ for (const file of files) {
68
+ const fullPath = join(dir, file);
69
+ if (fullPath.startsWith(basename + '.')) {
70
+ const numStr = fullPath.substring(basename.length + 1);
71
+ const num = parseInt(numStr, 10);
72
+ if (!isNaN(num)) {
73
+ rotatedFiles.push({ path: fullPath, num });
74
+ }
75
+ }
76
+ }
77
+ }
78
+ catch {
79
+ }
80
+ rotatedFiles.sort((a, b) => b.num - a.num);
81
+ for (const file of rotatedFiles) {
82
+ if (file.num >= this.maxFiles) {
83
+ try {
84
+ await unlink(file.path);
85
+ }
86
+ catch {
87
+ }
88
+ }
89
+ }
90
+ for (const file of rotatedFiles) {
91
+ if (file.num < this.maxFiles) {
92
+ const newPath = `${basename}.${file.num + 1}`;
93
+ try {
94
+ await rename(file.path, newPath);
95
+ }
96
+ catch {
97
+ }
98
+ }
99
+ }
100
+ try {
101
+ await rename(basename, `${basename}.1`);
102
+ }
103
+ catch {
104
+ }
105
+ this.stream = createWriteStream(this.filePath, { flags: 'a' });
106
+ this.stream.on('error', (error) => {
107
+ console.error('[file-logger] Stream error:', error);
108
+ });
109
+ }
110
+ async close() {
111
+ if (this.stream) {
112
+ return new Promise((resolve) => {
113
+ if (this.stream) {
114
+ this.stream.end(() => {
115
+ resolve();
116
+ });
117
+ this.stream = null;
118
+ }
119
+ else {
120
+ resolve();
121
+ }
122
+ });
123
+ }
124
+ }
125
+ }
126
+ //# sourceMappingURL=file-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-logger.js","sourceRoot":"","sources":["../../src/lib/file-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from './types.js';
2
+ export * from './errors.js';
3
+ export * from './logger.js';
4
+ export * from './utils.js';
5
+ export * from './file-logger.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAMA,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './types.js';
2
+ export * from './errors.js';
3
+ export * from './logger.js';
4
+ export * from './utils.js';
5
+ export * from './file-logger.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAMA,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { LogLevel } from './types.js';
2
+ export declare function setVerbose(verbose: boolean): void;
3
+ export declare function getVerbose(): boolean;
4
+ export declare function initFileLogger(logFileName: string): Promise<void>;
5
+ export declare function closeFileLogger(): Promise<void>;
6
+ export declare function setLogLevel(level: LogLevel): void;
7
+ export declare function debug(message: string, ...args: unknown[]): void;
8
+ export declare function info(message: string, ...args: unknown[]): void;
9
+ export declare function warn(message: string, ...args: unknown[]): void;
10
+ export declare function error(message: string, ...args: unknown[]): void;
11
+ export declare function log(level: LogLevel, message: string, ...args: unknown[]): void;
12
+ export declare class Logger {
13
+ private readonly context?;
14
+ constructor(context?: string | undefined);
15
+ private formatContext;
16
+ debug(message: string, ...args: unknown[]): void;
17
+ info(message: string, ...args: unknown[]): void;
18
+ warn(message: string, ...args: unknown[]): void;
19
+ error(message: string, ...args: unknown[]): void;
20
+ log(level: LogLevel, message: string, ...args: unknown[]): void;
21
+ }
22
+ export declare function createLogger(context: string): Logger;
23
+ export declare function createNoOpLogger(): Logger;
24
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmB3C,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAMjD;AAKD,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAMD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAevE;AAKD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AAoBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAmHD,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAM/D;AAMD,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAK9D;AAKD,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAK9D;AAKD,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAK/D;AAKD,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAe9E;AAKD,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,MAAM,YAAA;IAE7C,OAAO,CAAC,aAAa;IAIrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAGhE;AAKD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAoBD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}