@defai.digital/ax-cli 3.7.2 → 3.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/README.md +148 -53
  2. package/dist/agent/context-manager.d.ts +15 -1
  3. package/dist/agent/context-manager.js +50 -19
  4. package/dist/agent/context-manager.js.map +1 -1
  5. package/dist/agent/dependency-resolver.js +13 -7
  6. package/dist/agent/dependency-resolver.js.map +1 -1
  7. package/dist/agent/llm-agent.d.ts +37 -0
  8. package/dist/agent/llm-agent.js +318 -98
  9. package/dist/agent/llm-agent.js.map +1 -1
  10. package/dist/agent/status-reporter.d.ts +114 -0
  11. package/dist/agent/status-reporter.js +335 -0
  12. package/dist/agent/status-reporter.js.map +1 -0
  13. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +8 -2
  14. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -1
  15. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +3 -1
  16. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -1
  17. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +3 -1
  18. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -1
  19. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +3 -1
  20. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -1
  21. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +9 -3
  22. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +1 -1
  23. package/dist/analyzers/git/churn-calculator.d.ts +2 -0
  24. package/dist/analyzers/git/churn-calculator.js +42 -8
  25. package/dist/analyzers/git/churn-calculator.js.map +1 -1
  26. package/dist/analyzers/git/hotspot-detector.js +2 -2
  27. package/dist/analyzers/git/hotspot-detector.js.map +1 -1
  28. package/dist/analyzers/metrics/metrics-analyzer.js +1 -1
  29. package/dist/analyzers/metrics/metrics-analyzer.js.map +1 -1
  30. package/dist/analyzers/security/security-analyzer.js +1 -1
  31. package/dist/analyzers/security/security-analyzer.js.map +1 -1
  32. package/dist/checkpoint/manager.d.ts +1 -0
  33. package/dist/checkpoint/manager.js +49 -9
  34. package/dist/checkpoint/manager.js.map +1 -1
  35. package/dist/checkpoint/storage.js +2 -2
  36. package/dist/checkpoint/storage.js.map +1 -1
  37. package/dist/commands/mcp-migrate.d.ts +9 -0
  38. package/dist/commands/mcp-migrate.js +172 -0
  39. package/dist/commands/mcp-migrate.js.map +1 -0
  40. package/dist/commands/status.d.ts +7 -0
  41. package/dist/commands/status.js +211 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/commands/vscode.d.ts +7 -0
  44. package/dist/commands/vscode.js +363 -0
  45. package/dist/commands/vscode.js.map +1 -0
  46. package/dist/index.js +79 -30
  47. package/dist/index.js.map +1 -1
  48. package/dist/llm/client.js +33 -4
  49. package/dist/llm/client.js.map +1 -1
  50. package/dist/mcp/automatosx-loader.d.ts +84 -0
  51. package/dist/mcp/automatosx-loader.js +238 -0
  52. package/dist/mcp/automatosx-loader.js.map +1 -0
  53. package/dist/mcp/client-mutex-patch.d.ts +36 -0
  54. package/dist/mcp/client-mutex-patch.js +75 -0
  55. package/dist/mcp/client-mutex-patch.js.map +1 -0
  56. package/dist/mcp/client-v2.d.ts +229 -0
  57. package/dist/mcp/client-v2.js +740 -0
  58. package/dist/mcp/client-v2.js.map +1 -0
  59. package/dist/mcp/client.d.ts +111 -13
  60. package/dist/mcp/client.js +168 -253
  61. package/dist/mcp/client.js.map +1 -1
  62. package/dist/mcp/config-detector-v2.d.ts +83 -0
  63. package/dist/mcp/config-detector-v2.js +328 -0
  64. package/dist/mcp/config-detector-v2.js.map +1 -0
  65. package/dist/mcp/config-detector.d.ts +90 -0
  66. package/dist/mcp/config-detector.js +242 -0
  67. package/dist/mcp/config-detector.js.map +1 -0
  68. package/dist/mcp/config-migrator-v2.d.ts +89 -0
  69. package/dist/mcp/config-migrator-v2.js +288 -0
  70. package/dist/mcp/config-migrator-v2.js.map +1 -0
  71. package/dist/mcp/config-migrator.d.ts +63 -0
  72. package/dist/mcp/config-migrator.js +269 -0
  73. package/dist/mcp/config-migrator.js.map +1 -0
  74. package/dist/mcp/config-v2.d.ts +106 -0
  75. package/dist/mcp/config-v2.js +417 -0
  76. package/dist/mcp/config-v2.js.map +1 -0
  77. package/dist/mcp/config.d.ts +12 -1
  78. package/dist/mcp/config.js +95 -10
  79. package/dist/mcp/config.js.map +1 -1
  80. package/dist/mcp/error-formatter.d.ts +46 -0
  81. package/dist/mcp/error-formatter.js +244 -0
  82. package/dist/mcp/error-formatter.js.map +1 -0
  83. package/dist/mcp/health.d.ts +5 -0
  84. package/dist/mcp/health.js +22 -2
  85. package/dist/mcp/health.js.map +1 -1
  86. package/dist/mcp/invariants.d.ts +141 -0
  87. package/dist/mcp/invariants.js +243 -0
  88. package/dist/mcp/invariants.js.map +1 -0
  89. package/dist/mcp/mutex-safe.d.ts +153 -0
  90. package/dist/mcp/mutex-safe.js +260 -0
  91. package/dist/mcp/mutex-safe.js.map +1 -0
  92. package/dist/mcp/mutex.d.ts +73 -0
  93. package/dist/mcp/mutex.js +137 -0
  94. package/dist/mcp/mutex.js.map +1 -0
  95. package/dist/mcp/reconnection.d.ts +4 -0
  96. package/dist/mcp/reconnection.js +25 -1
  97. package/dist/mcp/reconnection.js.map +1 -1
  98. package/dist/mcp/transports-v2.d.ts +152 -0
  99. package/dist/mcp/transports-v2.js +481 -0
  100. package/dist/mcp/transports-v2.js.map +1 -0
  101. package/dist/mcp/type-safety.d.ts +231 -0
  102. package/dist/mcp/type-safety.js +273 -0
  103. package/dist/mcp/type-safety.js.map +1 -0
  104. package/dist/planner/task-planner.js +13 -0
  105. package/dist/planner/task-planner.js.map +1 -1
  106. package/dist/planner/types.d.ts +6 -6
  107. package/dist/schemas/confirmation-schemas.d.ts +2 -2
  108. package/dist/schemas/settings-schemas.d.ts +196 -0
  109. package/dist/schemas/settings-schemas.js +146 -5
  110. package/dist/schemas/settings-schemas.js.map +1 -1
  111. package/dist/sdk/index.d.ts +118 -2
  112. package/dist/sdk/index.js +146 -4
  113. package/dist/sdk/index.js.map +1 -1
  114. package/dist/sdk/testing.d.ts +182 -0
  115. package/dist/sdk/testing.js +231 -0
  116. package/dist/sdk/testing.js.map +1 -1
  117. package/dist/sdk/version.d.ts +114 -15
  118. package/dist/sdk/version.js +137 -15
  119. package/dist/sdk/version.js.map +1 -1
  120. package/dist/tools/bash.js +54 -9
  121. package/dist/tools/bash.js.map +1 -1
  122. package/dist/tools/registry.d.ts +146 -0
  123. package/dist/tools/registry.js +170 -0
  124. package/dist/tools/registry.js.map +1 -0
  125. package/dist/tools/search.js +12 -2
  126. package/dist/tools/search.js.map +1 -1
  127. package/dist/tools/text-editor.js +84 -26
  128. package/dist/tools/text-editor.js.map +1 -1
  129. package/dist/ui/components/chat-history.js +6 -1
  130. package/dist/ui/components/chat-history.js.map +1 -1
  131. package/dist/ui/components/chat-input.d.ts +2 -1
  132. package/dist/ui/components/chat-input.js +5 -2
  133. package/dist/ui/components/chat-input.js.map +1 -1
  134. package/dist/ui/components/chat-interface.js +187 -5
  135. package/dist/ui/components/chat-interface.js.map +1 -1
  136. package/dist/ui/components/context-breakdown.d.ts +23 -0
  137. package/dist/ui/components/context-breakdown.js +124 -0
  138. package/dist/ui/components/context-breakdown.js.map +1 -0
  139. package/dist/ui/components/keyboard-help.d.ts +17 -0
  140. package/dist/ui/components/keyboard-help.js +116 -0
  141. package/dist/ui/components/keyboard-help.js.map +1 -0
  142. package/dist/ui/components/keyboard-hints.js +2 -2
  143. package/dist/ui/components/keyboard-hints.js.map +1 -1
  144. package/dist/ui/components/quick-actions.js +43 -7
  145. package/dist/ui/components/quick-actions.js.map +1 -1
  146. package/dist/ui/components/status-bar.d.ts +3 -0
  147. package/dist/ui/components/status-bar.js +25 -16
  148. package/dist/ui/components/status-bar.js.map +1 -1
  149. package/dist/ui/components/toast-notification.d.ts +42 -0
  150. package/dist/ui/components/toast-notification.js +30 -2
  151. package/dist/ui/components/toast-notification.js.map +1 -1
  152. package/dist/ui/components/tool-group-display.js +34 -4
  153. package/dist/ui/components/tool-group-display.js.map +1 -1
  154. package/dist/ui/components/welcome-panel.js +2 -2
  155. package/dist/ui/components/welcome-panel.js.map +1 -1
  156. package/dist/ui/hooks/use-enhanced-input.d.ts +9 -1
  157. package/dist/ui/hooks/use-enhanced-input.js +901 -90
  158. package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
  159. package/dist/ui/hooks/use-input-handler.d.ts +11 -1
  160. package/dist/ui/hooks/use-input-handler.js +67 -3
  161. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  162. package/dist/ui/hooks/use-input-history.d.ts +1 -1
  163. package/dist/ui/hooks/use-input-history.js +50 -14
  164. package/dist/ui/hooks/use-input-history.js.map +1 -1
  165. package/dist/ui/utils/bracketed-paste-handler.d.ts +97 -0
  166. package/dist/ui/utils/bracketed-paste-handler.js +322 -0
  167. package/dist/ui/utils/bracketed-paste-handler.js.map +1 -0
  168. package/dist/ui/utils/change-summarizer.js +16 -6
  169. package/dist/ui/utils/change-summarizer.js.map +1 -1
  170. package/dist/ui/utils/tool-grouper.d.ts +10 -1
  171. package/dist/ui/utils/tool-grouper.js +143 -30
  172. package/dist/ui/utils/tool-grouper.js.map +1 -1
  173. package/dist/utils/auto-accept-logger.d.ts +173 -0
  174. package/dist/utils/auto-accept-logger.js +420 -0
  175. package/dist/utils/auto-accept-logger.js.map +1 -0
  176. package/dist/utils/background-task-manager.d.ts +11 -0
  177. package/dist/utils/background-task-manager.js +124 -38
  178. package/dist/utils/background-task-manager.js.map +1 -1
  179. package/dist/utils/confirmation-service.d.ts +1 -0
  180. package/dist/utils/confirmation-service.js +6 -1
  181. package/dist/utils/confirmation-service.js.map +1 -1
  182. package/dist/utils/encryption.d.ts +8 -0
  183. package/dist/utils/encryption.js +44 -27
  184. package/dist/utils/encryption.js.map +1 -1
  185. package/dist/utils/enhanced-error-messages.d.ts +33 -0
  186. package/dist/utils/enhanced-error-messages.js +420 -0
  187. package/dist/utils/enhanced-error-messages.js.map +1 -0
  188. package/dist/utils/error-handler.d.ts +13 -3
  189. package/dist/utils/error-handler.js +16 -4
  190. package/dist/utils/error-handler.js.map +1 -1
  191. package/dist/utils/external-editor.d.ts +47 -0
  192. package/dist/utils/external-editor.js +179 -0
  193. package/dist/utils/external-editor.js.map +1 -0
  194. package/dist/utils/history-migration.d.ts +9 -0
  195. package/dist/utils/history-migration.js +36 -0
  196. package/dist/utils/history-migration.js.map +1 -0
  197. package/dist/utils/paste-utils.js +12 -11
  198. package/dist/utils/paste-utils.js.map +1 -1
  199. package/dist/utils/rate-limiter.js +20 -1
  200. package/dist/utils/rate-limiter.js.map +1 -1
  201. package/dist/utils/safety-rules.d.ts +64 -0
  202. package/dist/utils/safety-rules.js +225 -0
  203. package/dist/utils/safety-rules.js.map +1 -0
  204. package/dist/utils/settings-manager.d.ts +89 -1
  205. package/dist/utils/settings-manager.js +359 -3
  206. package/dist/utils/settings-manager.js.map +1 -1
  207. package/dist/utils/token-counter.d.ts +2 -0
  208. package/dist/utils/token-counter.js +32 -9
  209. package/dist/utils/token-counter.js.map +1 -1
  210. package/dist/utils/version.d.ts +11 -2
  211. package/dist/utils/version.js +54 -21
  212. package/dist/utils/version.js.map +1 -1
  213. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-v2.js","sourceRoot":"","sources":["../../src/mcp/client-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAA+B,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAU,EAAE,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAGL,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAiFzB;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAuB;IAC7D,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,IAAI,EAAO,WAAW;IACtC,UAAU,EAAE,KAAK,EAAU,aAAa;IACxC,iBAAiB,EAAE,CAAC,CAAO,8CAA8C;CAC1E,CAAC;AAaF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAsB;IAC5D,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,KAAK,CAAE,aAAa;CACjC,CAAC;AAYF;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,YAAY;IAC5C,2CAA2C;IACnC,WAAW,GAAqC,IAAI,GAAG,EAAE,CAAC;IAC1D,KAAK,GAA2B,IAAI,GAAG,EAAE,CAAC;IAElD,2DAA2D;IACnD,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;IAEvC,qBAAqB,GAAwC,IAAI,CAAC;IAClE,YAAY,GAAG,eAAe,EAAE,CAAC;IACjC,QAAQ,GAAG,KAAK,CAAC;IAEzB,mCAAmC;IAC3B,kBAAkB,CAAqB;IACvC,iBAAiB,CAAoB;IACrC,oBAAoB,GAA4B,IAAI,GAAG,EAAE,CAAC;IAC1D,kBAAkB,GAAoC,IAAI,GAAG,EAAE,CAAC;IAChE,aAAa,GAAqC,IAAI,GAAG,EAAE,CAAC;IAC5D,gBAAgB,GAA0B,IAAI,CAAC;IAEvD,YACE,qBAAkD,EAAE,EACpD,oBAAgD,EAAE;QAElD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,kBAAkB,GAAG;YACxB,GAAG,2BAA2B;YAC9B,GAAG,kBAAkB;SACtB,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG;YACvB,GAAG,2BAA2B;YAC9B,GAAG,iBAAiB;SACrB,CAAC;QAEF,iCAAiC;QACjC,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CAAC,MAAuB;QACrC,6BAA6B;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,wDAAwD;QACxD,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC5B,KAAK,WAAW;oBACd,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB;gBAE5C,KAAK,YAAY;oBACf,uCAAuC;oBACvC,OAAO,MAAM,YAAY,CAAC,OAAO,CAAC;gBAEpC,KAAK,eAAe;oBAClB,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,UAAU,mBAAmB,CAAC,CAAC,CAAC;gBAEjE,KAAK,QAAQ;oBACX,0BAA0B;oBAC1B,MAAM;gBAER,KAAK,MAAM;oBACT,cAAc;oBACd,MAAM;YACV,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACzD,UAAU,EACV,KAAK,IAAI,EAAE;YACT,kCAAkC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC,CACF,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,WAAW,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,UAAsB,EACtB,MAAuB;QAEvB,2BAA2B;QAC3B,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,6BAA6B;YAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,UAAU;gBACV,KAAK,EAAE,IAAI,KAAK,CAAC,mBAAmB,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACrE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,8BAA8B,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAE9C,yDAAyD;QACzD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAEpD,yCAAyC;QACzC,IAAI,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC;QAChD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAChD,eAAe,GAAG;gBAChB,IAAI,EAAE,OAAgB;gBACtB,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,GAAG,EAAE,eAAe,CAAC,GAAG;aACzB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,UAAU;gBACV,KAAK;gBACL,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,CAAC,KAAK,IAAkC,EAAE;gBAClE,IAAI,CAAC;oBACH,mBAAmB;oBACnB,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;oBAEnD,gBAAgB;oBAChB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;wBACE,IAAI,EAAE,UAAU,CAAC,WAAW;wBAC5B,OAAO,EAAE,UAAU,CAAC,cAAc;qBACnC,EACD;wBACE,YAAY,EAAE;4BACZ,KAAK,EAAE,EAAE;yBACV;qBACF,CACF,CAAC;oBAEF,UAAU;oBACV,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC/C,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAEnC,aAAa;oBACb,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;oBAE7C,oCAAoC;oBACpC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;wBACrC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;wBACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,OAAO,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;4BAChD,SAAS;wBACX,CAAC;wBAED,MAAM,OAAO,GAAY;4BACvB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,aAAa,UAAU,SAAS;4BACjE,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC7B,UAAU;yBACX,CAAC;wBACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACpC,CAAC;oBAED,gCAAgC;oBAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE;wBAC/B,MAAM,EAAE,WAAW;wBACnB,UAAU;wBACV,MAAM;wBACN,SAAS;wBACT,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;qBACxB,CAAC,CAAC;oBAEH,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/D,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;gBAEvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,6BAA6B;oBAC7B,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE;wBAC/B,MAAM,EAAE,QAAQ;wBAChB,UAAU;wBACV,KAAK,EAAE,GAAG;wBACV,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;qBACrB,CAAC,CAAC;oBAEH,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;oBAE1C,4CAA4C;oBAC5C,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACtD,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;oBACzD,CAAC;oBAED,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC/B,MAAM,EAAE,YAAY;gBACpB,UAAU;gBACV,SAAS;gBACT,OAAO,EAAE,iBAAiB;aAC3B,CAAC,CAAC;YAEH,OAAO,MAAM,iBAAiB,CAAC;QAEjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,UAAU;gBACV,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;YAEH,4CAA4C;YAC5C,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtD,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,UAAsB;QACvC,6BAA6B;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,gCAAgC;QAChC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAElC,oDAAoD;QACpD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtC,oEAAoE;QACpE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACzD,UAAU,EACV,KAAK,IAAI,EAAE;YACT,wDAAwD;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC,CAAC;YAC1D,CAAC;YAED,gDAAgD;YAChD,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAClC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,UAAU,sBAAsB,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;gBACrC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,UAAU,2BAA2B,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACjC,mCAAmC;gBACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACpC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC,CACF,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,WAAW,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CACjC,UAAsB,EACtB,KAAwD;QAExD,oCAAoC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE;YAC/B,MAAM,EAAE,eAAe;YACvB,UAAU;YACV,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,eAAe;YACf,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpD,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAEtE,uBAAuB;YACvB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEpF,mBAAmB;YACnB,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,CAAC,eAAe,CAAC,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEjE,2BAA2B;YAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAEpC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAEvC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,8BAA8B,UAAU,EAAE,CAAC,CAAC,CAAC;YACrF,CAAC;YAED,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QAEvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mCAAmC;YACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACpC,OAAO,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CACvB,MAAc,EACd,UAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,4BAA4B,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC/B,SAAuB,EACvB,UAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,qCAAqC,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;YACtE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAkB,EAClB,UAAsD;QAEtD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,QAAQ,YAAY,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,sFAAsF;QACtF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACzD,IAAI,CAAC,UAAU,EACf,KAAK,IAAI,EAAE;YACT,8BAA8B;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,UAAU,YAAY,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACjC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,UAAU,2BAA2B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7F,CAAC;YAED,0FAA0F;YAC1F,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;QAElC,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC;YAC3C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnC,CAAC,CAAC,QAAQ,CAAC;YAEb,qBAAqB;YACrB,MAAM,QAAQ,GAAG,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3F,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,EAAE,CAAC;YAEP,kEAAkE;YAClE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;gBACnC,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YAEH,uBAAuB;YACvB,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAE7D,IAAI,UAAU,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;oBAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;oBAEzF,MAAM,CAAC,OAAO,GAAG;wBACf,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;wBACrC;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,6BAA6B,UAAU,CAAC,cAAc,EAAE,6BAA6B,UAAU,CAAC,gBAAgB,CAAC,cAAc,EAAE,SAAS;yBACjJ;qBACF,CAAC;oBAEF,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;wBAChC,QAAQ;wBACR,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,cAAc,EAAE,UAAU;wBAC1B,eAAe,EAAE,UAAU,CAAC,gBAAgB;qBAC7C,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,UAAU,GAAG,UAAU,CAAC,uBAAuB,EAAE,CAAC;oBAC3D,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;wBACzB,QAAQ;wBACR,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,UAAU;wBACV,SAAS,EAAE,UAAU,CAAC,uBAAuB;qBAC9C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,EAAE,CAAC,MAAwB,CAAC,CAAC;QAEtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,IAAY,EAAE,SAAiB;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAExD,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;gBACxB,MAAM,GAAG,SAAS,CAAC;gBACnB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,SAAS,GAAiB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACjC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,UAAsB;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,UAAsB;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,UAAU,gBAAgB,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACK,oBAAoB,CAAC,UAAsB,EAAE,MAAuB;QAC1E,yCAAyC;QACzC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAEpC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEhE,sCAAsC;QACtC,IAAI,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QAED,sCAAsC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QACjF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAC9B,SAAS,GAAG,UAAU,EACtB,IAAI,CAAC,kBAAkB,CAAC,UAAU,CACnC,CAAC;QAEF,oCAAoC;QACpC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,QAAQ,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;QAE/E,gCAAgC;QAChC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YAClC,0BAA0B;YAC1B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YAExD,uBAAuB;YACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,iCAAiC;gBACjC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,2CAA2C;YAC7C,CAAC;QACH,CAAC,EAAE,eAAe,CAAC,CAAC;QAEpB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,UAAsB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,UAAsB;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B;QAClD,CAAC;QAED,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sBAAsB;YACtB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAEjD,6BAA6B;YAC7B,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,UAAU;gBACV,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;YAEH,uBAAuB;YACvB,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YACrC,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,kCAAkC,UAAU,GAAG,EAAE,UAAU,CAAC,CAAC;YAC5E,CAAC;YAED,wBAAwB;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChE,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;YAED,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,CAAC,kBAAkB;QAC5B,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YACjC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;iBAC5D,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC;iBACpD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5B,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;gBAC1C,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;QAEF,2BAA2B;QAC3B,eAAe,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;YACvC,eAAe,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CACjD,CAAC;QAEF,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAChC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,2BAA2B,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB;QAC5B,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/D,IAAI,CAAC,qBAAqB,GAAG,CAAC,KAAK,IAAkC,EAAE;gBACrE,IAAI,CAAC;oBACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;oBAC3D,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;oBAE/B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;wBAC7D,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBACvD,IAAI,CAAC,UAAU,EAAE,CAAC;4BAChB,OAAO,CAAC,IAAI,CAAC,wBAAwB,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;4BAC1D,OAAO;wBACT,CAAC;wBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;wBAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BACpB,OAAO,CAAC,IAAI,CAAC,mCAAmC,UAAU,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC/E,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAChC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;gBAEvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;oBAC1D,OAAO,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxE,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBACpC,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC;QAC1C,CAAC;QAED,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,8BAA8B;QAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,0CAA0C;QAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE3B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE7C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,wDAAwD;IACxD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAgB,CAAC;AAC1B,CAAC;AAED,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC"}
@@ -1,37 +1,135 @@
1
- import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
1
+ /**
2
+ * MCP Manager (v1 - Legacy API)
3
+ *
4
+ * @deprecated Use MCPManagerV2 from './client-v2.js' instead.
5
+ * This class will be removed in v4.0.0.
6
+ *
7
+ * This is now a thin wrapper around MCPManagerV2 for backward compatibility.
8
+ * All new code should use MCPManagerV2 directly for better type safety and
9
+ * explicit error handling with Result types.
10
+ *
11
+ * ## Migration Guide
12
+ *
13
+ * ### Before (v1 - throws on error):
14
+ * ```typescript
15
+ * import { MCPManager } from './mcp/client.js';
16
+ * const manager = new MCPManager();
17
+ *
18
+ * try {
19
+ * await manager.addServer(config); // throws on failure
20
+ * const tools = manager.getTools();
21
+ * } catch (error) {
22
+ * console.error('Failed:', error);
23
+ * }
24
+ * ```
25
+ *
26
+ * ### After (v2 - returns Result):
27
+ * ```typescript
28
+ * import { MCPManagerV2 } from './mcp/client-v2.js';
29
+ * const manager = new MCPManagerV2();
30
+ *
31
+ * const result = await manager.addServer(config);
32
+ * if (!result.success) {
33
+ * console.error('Failed:', result.error);
34
+ * return;
35
+ * }
36
+ *
37
+ * const tools = manager.getTools(); // Same API
38
+ * ```
39
+ *
40
+ * ## Key Differences
41
+ *
42
+ * 1. **Error Handling**: v2 uses Result types instead of exceptions
43
+ * 2. **Type Safety**: v2 uses branded types (ServerName, ToolName)
44
+ * 3. **State Tracking**: v2 has explicit connection state machine
45
+ * 4. **Concurrency**: v2 uses SafeMutex for better race condition prevention
46
+ *
47
+ * @see {@link MCPManagerV2} for the new implementation
48
+ */
2
49
  import { EventEmitter } from "events";
3
- import { TransportType } from "./transports.js";
50
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
51
+ import type { TransportType } from "./transports.js";
4
52
  import type { MCPServerConfig, MCPTransportConfig } from "../schemas/settings-schemas.js";
53
+ import { MCPManagerV2 } from './client-v2.js';
5
54
  export type { MCPServerConfig, MCPTransportConfig };
55
+ /**
56
+ * MCP Tool (v1 interface)
57
+ * Compatible with v2 but uses plain strings instead of branded types
58
+ */
6
59
  export interface MCPTool {
7
60
  name: string;
8
61
  description: string;
9
62
  inputSchema: any;
10
63
  serverName: string;
11
64
  }
65
+ /**
66
+ * MCP Manager - Legacy v1 API
67
+ *
68
+ * This class now wraps MCPManagerV2 internally. All operations are
69
+ * delegated to v2 with Result types converted to exceptions for
70
+ * backward compatibility.
71
+ *
72
+ * @deprecated Use MCPManagerV2 instead
73
+ */
12
74
  export declare class MCPManager extends EventEmitter {
13
- private clients;
14
- private transports;
15
- private tools;
16
- private pendingConnections;
17
- private initializationPromise;
18
- private tokenCounter;
75
+ /** @internal v2 implementation */
76
+ private v2;
77
+ constructor();
78
+ /**
79
+ * Add MCP server
80
+ *
81
+ * @throws {Error} If connection fails
82
+ * @deprecated Use MCPManagerV2.addServer() which returns Result type
83
+ */
19
84
  addServer(config: MCPServerConfig): Promise<void>;
20
- private _addServerInternal;
85
+ /**
86
+ * Remove MCP server
87
+ *
88
+ * @throws {Error} If server not found or removal fails
89
+ * @deprecated Use MCPManagerV2.removeServer() which returns Result type
90
+ */
21
91
  removeServer(serverName: string): Promise<void>;
92
+ /**
93
+ * Call MCP tool
94
+ *
95
+ * @throws {Error} If tool not found or call fails
96
+ * @deprecated Use MCPManagerV2.callTool() which returns Result type
97
+ */
22
98
  callTool(toolName: string, arguments_: Record<string, unknown> | null | undefined): Promise<CallToolResult>;
23
99
  /**
24
- * Truncate text to fit within token limit
100
+ * Get all registered tools
25
101
  */
26
- private truncateToTokenLimit;
27
102
  getTools(): MCPTool[];
103
+ /**
104
+ * Get all connected server names
105
+ */
28
106
  getServers(): string[];
29
- shutdown(): Promise<void>;
107
+ /**
108
+ * Get transport type for a server
109
+ */
30
110
  getTransportType(serverName: string): TransportType | undefined;
111
+ /**
112
+ * Shutdown all servers
113
+ *
114
+ * @throws {Error} If shutdown fails
115
+ */
116
+ shutdown(): Promise<void>;
117
+ /**
118
+ * Ensure MCP servers are initialized from config
119
+ */
31
120
  ensureServersInitialized(): Promise<void>;
32
121
  /**
33
122
  * Cleanup all resources and remove event listeners
34
- * Uses Promise.allSettled to ensure all servers are cleaned up even if some fail
35
123
  */
36
124
  dispose(): Promise<void>;
125
+ /**
126
+ * Get underlying v2 instance (for advanced use cases)
127
+ * @internal
128
+ */
129
+ getV2Instance(): MCPManagerV2;
130
+ /**
131
+ * Get token counter instance (for testing)
132
+ * @internal
133
+ */
134
+ get tokenCounter(): any;
37
135
  }
@@ -1,286 +1,201 @@
1
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
1
+ /**
2
+ * MCP Manager (v1 - Legacy API)
3
+ *
4
+ * @deprecated Use MCPManagerV2 from './client-v2.js' instead.
5
+ * This class will be removed in v4.0.0.
6
+ *
7
+ * This is now a thin wrapper around MCPManagerV2 for backward compatibility.
8
+ * All new code should use MCPManagerV2 directly for better type safety and
9
+ * explicit error handling with Result types.
10
+ *
11
+ * ## Migration Guide
12
+ *
13
+ * ### Before (v1 - throws on error):
14
+ * ```typescript
15
+ * import { MCPManager } from './mcp/client.js';
16
+ * const manager = new MCPManager();
17
+ *
18
+ * try {
19
+ * await manager.addServer(config); // throws on failure
20
+ * const tools = manager.getTools();
21
+ * } catch (error) {
22
+ * console.error('Failed:', error);
23
+ * }
24
+ * ```
25
+ *
26
+ * ### After (v2 - returns Result):
27
+ * ```typescript
28
+ * import { MCPManagerV2 } from './mcp/client-v2.js';
29
+ * const manager = new MCPManagerV2();
30
+ *
31
+ * const result = await manager.addServer(config);
32
+ * if (!result.success) {
33
+ * console.error('Failed:', result.error);
34
+ * return;
35
+ * }
36
+ *
37
+ * const tools = manager.getTools(); // Same API
38
+ * ```
39
+ *
40
+ * ## Key Differences
41
+ *
42
+ * 1. **Error Handling**: v2 uses Result types instead of exceptions
43
+ * 2. **Type Safety**: v2 uses branded types (ServerName, ToolName)
44
+ * 3. **State Tracking**: v2 has explicit connection state machine
45
+ * 4. **Concurrency**: v2 uses SafeMutex for better race condition prevention
46
+ *
47
+ * @see {@link MCPManagerV2} for the new implementation
48
+ */
2
49
  import { EventEmitter } from "events";
3
- import { createTransport } from "./transports.js";
4
- import { MCP_CONFIG, ERROR_MESSAGES } from "../constants.js";
5
- import { MCPServerConfigSchema } from "../schemas/settings-schemas.js";
6
- import { getTokenCounter } from "../utils/token-counter.js";
50
+ // Import v2 implementation
51
+ import { MCPManagerV2, createServerName, createToolName } from './client-v2.js';
52
+ /**
53
+ * MCP Manager - Legacy v1 API
54
+ *
55
+ * This class now wraps MCPManagerV2 internally. All operations are
56
+ * delegated to v2 with Result types converted to exceptions for
57
+ * backward compatibility.
58
+ *
59
+ * @deprecated Use MCPManagerV2 instead
60
+ */
7
61
  export class MCPManager extends EventEmitter {
8
- clients = new Map();
9
- transports = new Map();
10
- tools = new Map();
11
- pendingConnections = new Map();
12
- initializationPromise = null;
13
- tokenCounter = getTokenCounter(); // Use singleton to share encoder instance
14
- async addServer(config) {
15
- // Check if already connected
16
- if (this.clients.has(config.name)) {
17
- return; // Already connected, nothing to do
18
- }
19
- // Check if already connecting to prevent race condition
20
- const pending = this.pendingConnections.get(config.name);
21
- if (pending) {
22
- await pending; // Wait for the connection to complete
23
- return;
24
- }
25
- // Create a promise for this connection attempt
26
- const connectionPromise = this._addServerInternal(config);
27
- this.pendingConnections.set(config.name, connectionPromise);
28
- try {
29
- await connectionPromise;
30
- }
31
- finally {
32
- this.pendingConnections.delete(config.name);
33
- }
62
+ /** @internal v2 implementation */
63
+ v2;
64
+ constructor() {
65
+ super();
66
+ this.v2 = new MCPManagerV2();
67
+ // Forward all v2 events to v1 listeners
68
+ this.v2.on('serverAdded', (...args) => this.emit('serverAdded', ...args));
69
+ this.v2.on('serverError', (...args) => this.emit('serverError', ...args));
70
+ this.v2.on('serverRemoved', (...args) => this.emit('serverRemoved', ...args));
71
+ this.v2.on('token-limit-exceeded', (...args) => this.emit('token-limit-exceeded', ...args));
72
+ this.v2.on('token-warning', (...args) => this.emit('token-warning', ...args));
73
+ // Forward new v2 events (for users who might be listening)
74
+ this.v2.on('reconnection-scheduled', (...args) => this.emit('reconnection-scheduled', ...args));
75
+ this.v2.on('reconnection-succeeded', (...args) => this.emit('reconnection-succeeded', ...args));
76
+ this.v2.on('reconnection-failed', (...args) => this.emit('reconnection-failed', ...args));
77
+ this.v2.on('server-unhealthy', (...args) => this.emit('server-unhealthy', ...args));
34
78
  }
35
- async _addServerInternal(config) {
36
- try {
37
- // Validate config with Zod
38
- const validationResult = MCPServerConfigSchema.safeParse(config);
39
- if (!validationResult.success) {
40
- throw new Error(`Invalid MCP server config: ${validationResult.error.message}`);
41
- }
42
- const validatedConfig = validationResult.data;
43
- // Handle legacy stdio-only configuration
44
- let transportConfig = validatedConfig.transport;
45
- if (!transportConfig && validatedConfig.command) {
46
- transportConfig = {
47
- type: 'stdio',
48
- command: validatedConfig.command,
49
- args: validatedConfig.args,
50
- env: validatedConfig.env
51
- };
52
- }
53
- if (!transportConfig) {
54
- throw new Error(ERROR_MESSAGES.TRANSPORT_CONFIG_REQUIRED);
55
- }
56
- // Create transport
57
- const transport = createTransport(transportConfig);
58
- this.transports.set(validatedConfig.name, transport);
59
- // Create client
60
- const client = new Client({
61
- name: MCP_CONFIG.CLIENT_NAME,
62
- version: MCP_CONFIG.CLIENT_VERSION
63
- }, {
64
- capabilities: {
65
- tools: {}
66
- }
67
- });
68
- // Connect before adding to map to avoid zombie entries on connection failure
69
- const sdkTransport = await transport.connect();
70
- await client.connect(sdkTransport);
71
- // Only add to clients map after successful connection
72
- this.clients.set(config.name, client);
73
- // List available tools
74
- const toolsResult = await client.listTools();
75
- // Register tools
76
- for (const tool of toolsResult.tools) {
77
- const mcpTool = {
78
- name: `mcp__${config.name}__${tool.name}`,
79
- description: tool.description || `Tool from ${config.name} server`,
80
- inputSchema: tool.inputSchema,
81
- serverName: config.name
82
- };
83
- this.tools.set(mcpTool.name, mcpTool);
84
- }
85
- this.emit('serverAdded', config.name, toolsResult.tools.length);
86
- }
87
- catch (error) {
88
- // Clean up on error
89
- this.clients.delete(config.name);
90
- const transport = this.transports.get(config.name);
91
- if (transport) {
92
- await transport.disconnect().catch(() => { });
93
- this.transports.delete(config.name);
94
- }
95
- this.emit('serverError', config.name, error);
96
- throw error;
79
+ /**
80
+ * Add MCP server
81
+ *
82
+ * @throws {Error} If connection fails
83
+ * @deprecated Use MCPManagerV2.addServer() which returns Result type
84
+ */
85
+ async addServer(config) {
86
+ const result = await this.v2.addServer(config);
87
+ if (!result.success) {
88
+ throw result.error;
97
89
  }
98
90
  }
91
+ /**
92
+ * Remove MCP server
93
+ *
94
+ * @throws {Error} If server not found or removal fails
95
+ * @deprecated Use MCPManagerV2.removeServer() which returns Result type
96
+ */
99
97
  async removeServer(serverName) {
100
- // Remove tools
101
- for (const [toolName, tool] of this.tools.entries()) {
102
- if (tool.serverName === serverName) {
103
- this.tools.delete(toolName);
104
- }
98
+ const name = createServerName(serverName);
99
+ if (!name) {
100
+ throw new Error(`Invalid server name: "${serverName}"`);
105
101
  }
106
- // Disconnect client with error handling
107
- const client = this.clients.get(serverName);
108
- if (client) {
109
- try {
110
- await client.close();
111
- }
112
- catch (error) {
113
- // Log error but continue cleanup
114
- console.warn(`Error closing MCP client ${serverName}:`, error);
115
- }
116
- this.clients.delete(serverName);
102
+ const result = await this.v2.removeServer(name);
103
+ if (!result.success) {
104
+ throw result.error;
117
105
  }
118
- // Close transport with error handling
119
- const transport = this.transports.get(serverName);
120
- if (transport) {
121
- try {
122
- await transport.disconnect();
123
- }
124
- catch (error) {
125
- // Log error but continue cleanup
126
- console.warn(`Error disconnecting MCP transport ${serverName}:`, error);
127
- }
128
- this.transports.delete(serverName);
129
- }
130
- this.emit('serverRemoved', serverName);
131
106
  }
107
+ /**
108
+ * Call MCP tool
109
+ *
110
+ * @throws {Error} If tool not found or call fails
111
+ * @deprecated Use MCPManagerV2.callTool() which returns Result type
112
+ */
132
113
  async callTool(toolName, arguments_) {
133
- const tool = this.tools.get(toolName);
114
+ const tool = createToolName(toolName);
134
115
  if (!tool) {
135
- throw new Error(`Tool ${toolName} not found`);
116
+ throw new Error(`Invalid tool name: "${toolName}"`);
136
117
  }
137
- const client = this.clients.get(tool.serverName);
138
- if (!client) {
139
- throw new Error(`Server ${tool.serverName} not connected`);
118
+ const result = await this.v2.callTool(tool, arguments_);
119
+ if (!result.success) {
120
+ throw result.error;
140
121
  }
141
- // Extract the original tool name (remove mcp__servername__ prefix)
142
- // Use a more robust approach that only removes the prefix once
143
- const prefix = `mcp__${tool.serverName}__`;
144
- const originalToolName = toolName.startsWith(prefix)
145
- ? toolName.substring(prefix.length)
146
- : toolName;
147
- // Validate arguments - ensure it's an object or default to empty object
148
- const safeArgs = (arguments_ && typeof arguments_ === 'object' && !Array.isArray(arguments_))
149
- ? arguments_
150
- : {};
151
- const result = await client.callTool({
152
- name: originalToolName,
153
- arguments: safeArgs
154
- });
155
- // Apply token limiting (Phase 4)
156
- if (MCP_CONFIG.TRUNCATION_ENABLED) {
157
- const resultText = JSON.stringify(result.content);
158
- const tokenCount = this.tokenCounter.countTokens(resultText);
159
- if (tokenCount > MCP_CONFIG.TOKEN_HARD_LIMIT) {
160
- // Truncate output at hard limit
161
- const truncatedText = this.truncateToTokenLimit(resultText, MCP_CONFIG.TOKEN_HARD_LIMIT);
162
- result.content = [
163
- { type: 'text', text: truncatedText },
164
- {
165
- type: 'text',
166
- text: `\n\n⚠️ Output truncated: ${tokenCount.toLocaleString()} tokens exceeded limit of ${MCP_CONFIG.TOKEN_HARD_LIMIT.toLocaleString()} tokens`
167
- }
168
- ];
169
- this.emit('token-limit-exceeded', {
170
- toolName,
171
- serverName: tool.serverName,
172
- originalTokens: tokenCount,
173
- truncatedTokens: MCP_CONFIG.TOKEN_HARD_LIMIT
174
- });
175
- }
176
- else if (tokenCount > MCP_CONFIG.TOKEN_WARNING_THRESHOLD) {
177
- // Emit warning but don't truncate
178
- this.emit('token-warning', {
179
- toolName,
180
- serverName: tool.serverName,
181
- tokenCount,
182
- threshold: MCP_CONFIG.TOKEN_WARNING_THRESHOLD
183
- });
184
- }
185
- }
186
- return result;
122
+ return result.value;
187
123
  }
188
124
  /**
189
- * Truncate text to fit within token limit
125
+ * Get all registered tools
190
126
  */
191
- truncateToTokenLimit(text, maxTokens) {
192
- // Binary search to find the right truncation point
193
- let low = 0;
194
- let high = text.length;
195
- let result = text;
196
- while (low <= high) {
197
- const mid = Math.floor((low + high) / 2);
198
- const truncated = text.substring(0, mid);
199
- const tokens = this.tokenCounter.countTokens(truncated);
200
- if (tokens <= maxTokens) {
201
- result = truncated;
202
- low = mid + 1;
203
- }
204
- else {
205
- high = mid - 1;
206
- }
207
- }
208
- return result;
209
- }
210
127
  getTools() {
211
- return Array.from(this.tools.values());
128
+ // Convert v2 tools (with branded types) to v1 tools (plain strings)
129
+ return this.v2.getTools().map(tool => ({
130
+ name: tool.name, // Cast branded type to string
131
+ description: tool.description,
132
+ inputSchema: tool.inputSchema,
133
+ serverName: tool.serverName // Cast branded type to string
134
+ }));
212
135
  }
136
+ /**
137
+ * Get all connected server names
138
+ */
213
139
  getServers() {
214
- return Array.from(this.clients.keys());
215
- }
216
- async shutdown() {
217
- const serverNames = Array.from(this.clients.keys());
218
- // Use Promise.allSettled to ensure all servers are attempted even if some fail
219
- const results = await Promise.allSettled(serverNames.map(name => this.removeServer(name)));
220
- // Log any failures but don't throw
221
- results.forEach((result, index) => {
222
- if (result.status === 'rejected') {
223
- console.warn(`Failed to remove server ${serverNames[index]}:`, result.reason);
224
- }
225
- });
140
+ // Convert ServerName[] to string[]
141
+ return this.v2.getServers().map(name => name);
226
142
  }
143
+ /**
144
+ * Get transport type for a server
145
+ */
227
146
  getTransportType(serverName) {
228
- const transport = this.transports.get(serverName);
229
- return transport?.getType();
230
- }
231
- async ensureServersInitialized() {
232
- // Prevent race condition with concurrent calls
233
- if (this.initializationPromise) {
234
- return this.initializationPromise;
235
- }
236
- if (this.clients.size > 0) {
237
- return; // Already initialized
147
+ const name = createServerName(serverName);
148
+ if (!name) {
149
+ return undefined;
238
150
  }
239
- // Create initialization promise to prevent concurrent initialization
240
- // Wrap entire initialization in try-catch to prevent unhandled rejections
241
- this.initializationPromise = (async () => {
242
- try {
243
- const { loadMCPConfig } = await import('../mcp/config.js');
244
- const config = loadMCPConfig();
245
- // Initialize servers in parallel to avoid blocking
246
- const initPromises = config.servers.map(async (serverConfig) => {
247
- try {
248
- await this.addServer(serverConfig);
249
- }
250
- catch (error) {
251
- console.warn(`Failed to initialize MCP server ${serverConfig.name}:`, error);
252
- }
253
- });
254
- await Promise.all(initPromises);
255
- }
256
- catch (error) {
257
- // Catch config loading errors to prevent unhandled rejection
258
- console.error('Failed to initialize MCP servers:', error);
259
- }
260
- })();
261
- try {
262
- await this.initializationPromise;
151
+ const result = this.v2.getTransportType(name);
152
+ return result.success ? result.value : undefined;
153
+ }
154
+ /**
155
+ * Shutdown all servers
156
+ *
157
+ * @throws {Error} If shutdown fails
158
+ */
159
+ async shutdown() {
160
+ const result = await this.v2.shutdown();
161
+ if (!result.success) {
162
+ throw result.error;
263
163
  }
264
- finally {
265
- // Clear the promise after completion (success or failure)
266
- this.initializationPromise = null;
164
+ }
165
+ /**
166
+ * Ensure MCP servers are initialized from config
167
+ */
168
+ async ensureServersInitialized() {
169
+ const result = await this.v2.ensureServersInitialized();
170
+ if (!result.success) {
171
+ // Don't throw - v1 behavior was to log warnings
172
+ console.warn('Failed to initialize MCP servers:', result.error);
267
173
  }
268
174
  }
269
175
  /**
270
176
  * Cleanup all resources and remove event listeners
271
- * Uses Promise.allSettled to ensure all servers are cleaned up even if some fail
272
177
  */
273
178
  async dispose() {
274
- const serverNames = Array.from(this.clients.keys());
275
- // Use Promise.allSettled (like shutdown) to ensure all servers are attempted
276
- const results = await Promise.allSettled(serverNames.map(name => this.removeServer(name)));
277
- // Log any failures but don't throw
278
- results.forEach((result, index) => {
279
- if (result.status === 'rejected') {
280
- console.warn(`Failed to dispose server ${serverNames[index]}:`, result.reason);
281
- }
282
- });
179
+ const result = await this.v2.dispose();
180
+ if (!result.success) {
181
+ // Don't throw during cleanup - v1 behavior was to log warnings
182
+ console.warn('Error during MCP manager disposal:', result.error);
183
+ }
283
184
  this.removeAllListeners();
284
185
  }
186
+ /**
187
+ * Get underlying v2 instance (for advanced use cases)
188
+ * @internal
189
+ */
190
+ getV2Instance() {
191
+ return this.v2;
192
+ }
193
+ /**
194
+ * Get token counter instance (for testing)
195
+ * @internal
196
+ */
197
+ get tokenCounter() {
198
+ return this.v2.tokenCounter;
199
+ }
285
200
  }
286
201
  //# sourceMappingURL=client.js.map