@involvex/super-agent-cli 0.0.39

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 (143) hide show
  1. package/.grok/settings.json +3 -0
  2. package/.prettierignore +11 -0
  3. package/.super-agent/settings.json +23 -0
  4. package/LICENSE +21 -0
  5. package/README.md +366 -0
  6. package/assets/splash.png +0 -0
  7. package/dist/agent/grok-agent.d.ts +54 -0
  8. package/dist/agent/grok-agent.js +638 -0
  9. package/dist/agent/grok-agent.js.map +1 -0
  10. package/dist/agent/index.d.ts +14 -0
  11. package/dist/agent/index.js +139 -0
  12. package/dist/agent/index.js.map +1 -0
  13. package/dist/agent/super-agent.d.ts +54 -0
  14. package/dist/agent/super-agent.js +638 -0
  15. package/dist/agent/super-agent.js.map +1 -0
  16. package/dist/commands/mcp.d.ts +2 -0
  17. package/dist/commands/mcp.js +247 -0
  18. package/dist/commands/mcp.js.map +1 -0
  19. package/dist/core/client.d.ts +49 -0
  20. package/dist/core/client.js +81 -0
  21. package/dist/core/client.js.map +1 -0
  22. package/dist/core/tools.d.ts +8 -0
  23. package/dist/core/tools.js +351 -0
  24. package/dist/core/tools.js.map +1 -0
  25. package/dist/grok/client.d.ts +49 -0
  26. package/dist/grok/client.js +81 -0
  27. package/dist/grok/client.js.map +1 -0
  28. package/dist/grok/tools.d.ts +8 -0
  29. package/dist/grok/tools.js +351 -0
  30. package/dist/grok/tools.js.map +1 -0
  31. package/dist/hooks/use-enhanced-input.d.ts +37 -0
  32. package/dist/hooks/use-enhanced-input.js +228 -0
  33. package/dist/hooks/use-enhanced-input.js.map +1 -0
  34. package/dist/hooks/use-input-handler.d.ts +34 -0
  35. package/dist/hooks/use-input-handler.js +607 -0
  36. package/dist/hooks/use-input-handler.js.map +1 -0
  37. package/dist/hooks/use-input-history.d.ts +9 -0
  38. package/dist/hooks/use-input-history.js +62 -0
  39. package/dist/hooks/use-input-history.js.map +1 -0
  40. package/dist/index.d.ts +2 -0
  41. package/dist/index.js +6591 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/mcp/client.d.ts +29 -0
  44. package/dist/mcp/client.js +127 -0
  45. package/dist/mcp/client.js.map +1 -0
  46. package/dist/mcp/config.d.ts +13 -0
  47. package/dist/mcp/config.js +45 -0
  48. package/dist/mcp/config.js.map +1 -0
  49. package/dist/mcp/transports.d.ts +51 -0
  50. package/dist/mcp/transports.js +229 -0
  51. package/dist/mcp/transports.js.map +1 -0
  52. package/dist/tools/bash.d.ts +10 -0
  53. package/dist/tools/bash.js +76 -0
  54. package/dist/tools/bash.js.map +1 -0
  55. package/dist/tools/confirmation-tool.d.ts +16 -0
  56. package/dist/tools/confirmation-tool.js +77 -0
  57. package/dist/tools/confirmation-tool.js.map +1 -0
  58. package/dist/tools/index.d.ts +6 -0
  59. package/dist/tools/index.js +7 -0
  60. package/dist/tools/index.js.map +1 -0
  61. package/dist/tools/morph-editor.d.ts +36 -0
  62. package/dist/tools/morph-editor.js +324 -0
  63. package/dist/tools/morph-editor.js.map +1 -0
  64. package/dist/tools/search.d.ts +69 -0
  65. package/dist/tools/search.js +307 -0
  66. package/dist/tools/search.js.map +1 -0
  67. package/dist/tools/text-editor.d.ts +26 -0
  68. package/dist/tools/text-editor.js +583 -0
  69. package/dist/tools/text-editor.js.map +1 -0
  70. package/dist/tools/todo-tool.d.ts +20 -0
  71. package/dist/tools/todo-tool.js +134 -0
  72. package/dist/tools/todo-tool.js.map +1 -0
  73. package/dist/types/index.d.ts +30 -0
  74. package/dist/types/index.js +2 -0
  75. package/dist/types/index.js.map +1 -0
  76. package/dist/ui/app.d.ts +6 -0
  77. package/dist/ui/app.js +76 -0
  78. package/dist/ui/app.js.map +1 -0
  79. package/dist/ui/components/api-key-input.d.ts +6 -0
  80. package/dist/ui/components/api-key-input.js +70 -0
  81. package/dist/ui/components/api-key-input.js.map +1 -0
  82. package/dist/ui/components/chat-history.d.ts +7 -0
  83. package/dist/ui/components/chat-history.js +136 -0
  84. package/dist/ui/components/chat-history.js.map +1 -0
  85. package/dist/ui/components/chat-input.d.ts +8 -0
  86. package/dist/ui/components/chat-input.js +47 -0
  87. package/dist/ui/components/chat-input.js.map +1 -0
  88. package/dist/ui/components/chat-interface.d.ts +7 -0
  89. package/dist/ui/components/chat-interface.js +213 -0
  90. package/dist/ui/components/chat-interface.js.map +1 -0
  91. package/dist/ui/components/command-suggestions.d.ts +16 -0
  92. package/dist/ui/components/command-suggestions.js +18 -0
  93. package/dist/ui/components/command-suggestions.js.map +1 -0
  94. package/dist/ui/components/confirmation-dialog.d.ts +10 -0
  95. package/dist/ui/components/confirmation-dialog.js +70 -0
  96. package/dist/ui/components/confirmation-dialog.js.map +1 -0
  97. package/dist/ui/components/diff-renderer.d.ts +13 -0
  98. package/dist/ui/components/diff-renderer.js +200 -0
  99. package/dist/ui/components/diff-renderer.js.map +1 -0
  100. package/dist/ui/components/loading-spinner.d.ts +7 -0
  101. package/dist/ui/components/loading-spinner.js +52 -0
  102. package/dist/ui/components/loading-spinner.js.map +1 -0
  103. package/dist/ui/components/mcp-status.d.ts +4 -0
  104. package/dist/ui/components/mcp-status.js +37 -0
  105. package/dist/ui/components/mcp-status.js.map +1 -0
  106. package/dist/ui/components/model-selection.d.ts +11 -0
  107. package/dist/ui/components/model-selection.js +9 -0
  108. package/dist/ui/components/model-selection.js.map +1 -0
  109. package/dist/ui/shared/max-sized-box.d.ts +8 -0
  110. package/dist/ui/shared/max-sized-box.js +6 -0
  111. package/dist/ui/shared/max-sized-box.js.map +1 -0
  112. package/dist/ui/utils/code-colorizer.d.ts +2 -0
  113. package/dist/ui/utils/code-colorizer.js +7 -0
  114. package/dist/ui/utils/code-colorizer.js.map +1 -0
  115. package/dist/ui/utils/colors.d.ts +14 -0
  116. package/dist/ui/utils/colors.js +15 -0
  117. package/dist/ui/utils/colors.js.map +1 -0
  118. package/dist/ui/utils/markdown-renderer.d.ts +3 -0
  119. package/dist/ui/utils/markdown-renderer.js +23 -0
  120. package/dist/ui/utils/markdown-renderer.js.map +1 -0
  121. package/dist/utils/confirmation-service.d.ts +33 -0
  122. package/dist/utils/confirmation-service.js +110 -0
  123. package/dist/utils/confirmation-service.js.map +1 -0
  124. package/dist/utils/custom-instructions.d.ts +1 -0
  125. package/dist/utils/custom-instructions.js +23 -0
  126. package/dist/utils/custom-instructions.js.map +1 -0
  127. package/dist/utils/model-config.d.ts +28 -0
  128. package/dist/utils/model-config.js +42 -0
  129. package/dist/utils/model-config.js.map +1 -0
  130. package/dist/utils/settings-manager.d.ts +99 -0
  131. package/dist/utils/settings-manager.js +286 -0
  132. package/dist/utils/settings-manager.js.map +1 -0
  133. package/dist/utils/settings.d.ts +1 -0
  134. package/dist/utils/settings.js +4 -0
  135. package/dist/utils/settings.js.map +1 -0
  136. package/dist/utils/text-utils.d.ts +80 -0
  137. package/dist/utils/text-utils.js +191 -0
  138. package/dist/utils/text-utils.js.map +1 -0
  139. package/dist/utils/token-counter.d.ts +33 -0
  140. package/dist/utils/token-counter.js +79 -0
  141. package/dist/utils/token-counter.js.map +1 -0
  142. package/eslint.config.mjs +33 -0
  143. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,6BAA6B;AAC7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,2DAA2D;AAC3D,qDAAqD;AAErD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,8CAA8C;IAC9C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,sCAAsC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,gDAAgD;AAChD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE;IACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,uCAAuC;AACvC,SAAS,2BAA2B;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;QACrC,wDAAwD;QACxD,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sCAAsC;IACxC,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,SAAS,UAAU;IACjB,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED,yDAAyD;AACzD,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,mDAAmD;AACnD,KAAK,UAAU,uBAAuB,CACpC,MAAe,EACf,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;QAErC,kCAAkC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,qCAAqC,EACrC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CACzD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,SAAS,SAAS;IAChB,oCAAoC;IACpC,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,sDAAsD;QACtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;YACrC,KAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6CAA6C;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kDAAkD;AAClD,KAAK,UAAU,2BAA2B,CACxC,MAAc,EACd,OAAgB,EAChB,KAAc,EACd,aAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QAEpE,iFAAiF;QACjF,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;QAC9D,mBAAmB,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAE1D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAEpC,8CAA8C;QAC9C,MAAM,mBAAmB,GAAG,MAAM,KAAK,CAAC,kBAAkB,CACxD,wBAAwB,CACzB,CAAC;QAEF,IAAI,CAAC,mBAAmB,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,kBAAkB;QAClB,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE9D,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CACT,cAAc,SAAS,CAAC,KAAK,IAAI,yBAAyB,EAAE,CAC7D,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,mDAAmD;QACnD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAEvE,mCAAmC;QACnC,MAAM,YAAY,GAAG;;;EAGvB,mBAAmB,CAAC,MAAM;;;EAG1B,UAAU,CAAC,MAAM,IAAI,yBAAyB;;;0DAGU,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAE/C,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,kDAAkD;QAClD,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvD,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,2BAA2B;QAC3B,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,gCAAgC,kBAAkB,GAAG,CAAC,CAAC;QAEnE,qBAAqB;QACrB,MAAM,aAAa,GAAG,kBAAkB,kBAAkB,GAAG,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAEnE,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CACT,iBACE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,mBACzC,EAAE,CACH,CAAC;YAEF,2CAA2C;YAC3C,8DAA8D;YAC9D,IAAI,UAAU,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAE5D,IACE,CAAC,UAAU,CAAC,OAAO;gBACnB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAChD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAClD,UAAU,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CACT,eACE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,iBACvC,EAAE,CACH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,KAAK,IAAI,aAAa,EAAE,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,YAAY,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,KAAK,UAAU,qBAAqB,CAClC,MAAc,EACd,MAAc,EACd,OAAgB,EAChB,KAAc,EACd,aAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QAEpE,iFAAiF;QACjF,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;QAC9D,mBAAmB,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAE1D,2BAA2B;QAC3B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE3D,4DAA4D;QAC5D,MAAM,QAAQ,GAAiC,EAAE,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,MAAM;oBACT,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;oBACH,MAAM;gBAER,KAAK,WAAW;oBACd,MAAM,gBAAgB,GAA+B;wBACnD,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC;oBAEF,4BAA4B;oBAC5B,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClD,gBAAgB,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;4BAC7D,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gCAC5B,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;6BACvC;yBACF,CAAC,CAAC,CAAC;oBACN,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAChC,MAAM;gBAER,KAAK,aAAa;oBAChB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACnB,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,MAAM;4BACZ,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;4BAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,2CAA2C;QAC3C,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE;SACnC,CAAC,CACH,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CACV,mFAAmF,CACpF;KACA,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,cAAc,EAAE,wCAAwC,CAAC;KAClE,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACvE,MAAM,CACL,qBAAqB,EACrB,0DAA0D,CAC3D;KACA,MAAM,CACL,sBAAsB,EACtB,gEAAgE,CACjE;KACA,MAAM,CACL,qBAAqB,EACrB,0GAA0G,CAC3G;KACA,MAAM,CACL,uBAAuB,EACvB,kDAAkD,CACnD;KACA,MAAM,CACL,4BAA4B,EAC5B,wDAAwD,EACxD,KAAK,CACN;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACjC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CACX,+BAA+B,OAAO,CAAC,SAAS,GAAG,EACnD,KAAK,CAAC,OAAO,CACd,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,0DAA0D;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC;QAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CACX,yJAAyJ,CAC1J,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,0EAA0E;QAC1E,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;QAED,yCAAyC;QACzC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,qBAAqB,CACzB,OAAO,CAAC,MAAM,EACd,MAAM,EACN,OAAO,EACP,KAAK,EACL,aAAa,CACd,CAAC;YACF,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAEzE,2BAA2B,EAAE,CAAC;QAE9B,uEAAuE;QACvE,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YACnB,CAAC,CAAC,OAAO,CAAC;QAEZ,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,MAAM,UAAU,GAAG,OAAO;KACvB,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,mCAAmC,CAAC,CAAC;AAEpD,UAAU;KACP,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACvE,MAAM,CACL,qBAAqB,EACrB,0DAA0D,CAC3D;KACA,MAAM,CACL,sBAAsB,EACtB,gEAAgE,CACjE;KACA,MAAM,CACL,qBAAqB,EACrB,0GAA0G,CAC3G;KACA,MAAM,CACL,4BAA4B,EAC5B,wDAAwD,EACxD,KAAK,CACN;KACA,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;IACtB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CACX,+BAA+B,OAAO,CAAC,SAAS,GAAG,EACnD,KAAK,CAAC,OAAO,CACd,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,0DAA0D;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC;QAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CACX,2IAA2I,CAC5I,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,0EAA0E;QAC1E,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,cAAc;AACd,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAEvC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { TransportConfig, TransportType } from "./transports";
2
+ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
3
+ import { EventEmitter } from "events";
4
+ export interface MCPServerConfig {
5
+ name: string;
6
+ transport: TransportConfig;
7
+ command?: string;
8
+ args?: string[];
9
+ env?: Record<string, string>;
10
+ }
11
+ export interface MCPTool {
12
+ name: string;
13
+ description: string;
14
+ inputSchema: any;
15
+ serverName: string;
16
+ }
17
+ export declare class MCPManager extends EventEmitter {
18
+ private clients;
19
+ private transports;
20
+ private tools;
21
+ addServer(config: MCPServerConfig): Promise<void>;
22
+ removeServer(serverName: string): Promise<void>;
23
+ callTool(toolName: string, arguments_: any): Promise<CallToolResult>;
24
+ getTools(): MCPTool[];
25
+ getServers(): string[];
26
+ shutdown(): Promise<void>;
27
+ getTransportType(serverName: string): TransportType | undefined;
28
+ ensureServersInitialized(): Promise<void>;
29
+ }
@@ -0,0 +1,127 @@
1
+ import { createTransport, } from "./transports";
2
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
3
+ import { EventEmitter } from "events";
4
+ export class MCPManager extends EventEmitter {
5
+ clients = new Map();
6
+ transports = new Map();
7
+ tools = new Map();
8
+ async addServer(config) {
9
+ try {
10
+ // Handle legacy stdio-only configuration
11
+ let transportConfig = config.transport;
12
+ if (!transportConfig && config.command) {
13
+ transportConfig = {
14
+ type: "stdio",
15
+ command: config.command,
16
+ args: config.args,
17
+ env: config.env,
18
+ };
19
+ }
20
+ if (!transportConfig) {
21
+ throw new Error("Transport configuration is required");
22
+ }
23
+ // Create transport
24
+ const transport = createTransport(transportConfig);
25
+ this.transports.set(config.name, transport);
26
+ // Create client
27
+ const client = new Client({
28
+ name: "super-agent-cli",
29
+ version: "1.0.0",
30
+ }, {
31
+ capabilities: {
32
+ tools: {},
33
+ },
34
+ });
35
+ this.clients.set(config.name, client);
36
+ // Connect
37
+ const sdkTransport = await transport.connect();
38
+ await client.connect(sdkTransport);
39
+ // List available tools
40
+ const toolsResult = await client.listTools();
41
+ // Register tools
42
+ for (const tool of toolsResult.tools) {
43
+ const mcpTool = {
44
+ name: `mcp__${config.name}__${tool.name}`,
45
+ description: tool.description || `Tool from ${config.name} server`,
46
+ inputSchema: tool.inputSchema,
47
+ serverName: config.name,
48
+ };
49
+ this.tools.set(mcpTool.name, mcpTool);
50
+ }
51
+ this.emit("serverAdded", config.name, toolsResult.tools.length);
52
+ }
53
+ catch (error) {
54
+ this.emit("serverError", config.name, error);
55
+ throw error;
56
+ }
57
+ }
58
+ async removeServer(serverName) {
59
+ // Remove tools
60
+ for (const [toolName, tool] of this.tools.entries()) {
61
+ if (tool.serverName === serverName) {
62
+ this.tools.delete(toolName);
63
+ }
64
+ }
65
+ // Disconnect client
66
+ const client = this.clients.get(serverName);
67
+ if (client) {
68
+ await client.close();
69
+ this.clients.delete(serverName);
70
+ }
71
+ // Close transport
72
+ const transport = this.transports.get(serverName);
73
+ if (transport) {
74
+ await transport.disconnect();
75
+ this.transports.delete(serverName);
76
+ }
77
+ this.emit("serverRemoved", serverName);
78
+ }
79
+ async callTool(toolName, arguments_) {
80
+ const tool = this.tools.get(toolName);
81
+ if (!tool) {
82
+ throw new Error(`Tool ${toolName} not found`);
83
+ }
84
+ const client = this.clients.get(tool.serverName);
85
+ if (!client) {
86
+ throw new Error(`Server ${tool.serverName} not connected`);
87
+ }
88
+ // Extract the original tool name (remove mcp__servername__ prefix)
89
+ const originalToolName = toolName.replace(`mcp__${tool.serverName}__`, "");
90
+ return (await client.callTool({
91
+ name: originalToolName,
92
+ arguments: arguments_,
93
+ }));
94
+ }
95
+ getTools() {
96
+ return Array.from(this.tools.values());
97
+ }
98
+ getServers() {
99
+ return Array.from(this.clients.keys());
100
+ }
101
+ async shutdown() {
102
+ const serverNames = Array.from(this.clients.keys());
103
+ await Promise.all(serverNames.map(name => this.removeServer(name)));
104
+ }
105
+ getTransportType(serverName) {
106
+ const transport = this.transports.get(serverName);
107
+ return transport?.getType();
108
+ }
109
+ async ensureServersInitialized() {
110
+ if (this.clients.size > 0) {
111
+ return; // Already initialized
112
+ }
113
+ const { loadMCPConfig } = await import("../mcp/config");
114
+ const config = loadMCPConfig();
115
+ // Initialize servers in parallel to avoid blocking
116
+ const initPromises = config.servers.map(async (serverConfig) => {
117
+ try {
118
+ await this.addServer(serverConfig);
119
+ }
120
+ catch (error) {
121
+ console.warn(`Failed to initialize MCP server ${serverConfig.name}:`, error);
122
+ }
123
+ });
124
+ await Promise.all(initPromises);
125
+ }
126
+ }
127
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { MCPServerConfig } from "./client";
2
+ export interface MCPConfig {
3
+ servers: MCPServerConfig[];
4
+ }
5
+ /**
6
+ * Load MCP configuration from project settings
7
+ */
8
+ export declare function loadMCPConfig(): MCPConfig;
9
+ export declare function saveMCPConfig(config: MCPConfig): void;
10
+ export declare function addMCPServer(config: MCPServerConfig): void;
11
+ export declare function removeMCPServer(serverName: string): void;
12
+ export declare function getMCPServer(serverName: string): MCPServerConfig | undefined;
13
+ export declare const PREDEFINED_SERVERS: Record<string, MCPServerConfig>;
@@ -0,0 +1,45 @@
1
+ import { getSettingsManager } from "../utils/settings-manager";
2
+ /**
3
+ * Load MCP configuration from project settings
4
+ */
5
+ export function loadMCPConfig() {
6
+ const manager = getSettingsManager();
7
+ const projectSettings = manager.loadProjectSettings();
8
+ const servers = projectSettings.mcpServers
9
+ ? Object.values(projectSettings.mcpServers)
10
+ : [];
11
+ return { servers };
12
+ }
13
+ export function saveMCPConfig(config) {
14
+ const manager = getSettingsManager();
15
+ const mcpServers = {};
16
+ // Convert servers array to object keyed by name
17
+ for (const server of config.servers) {
18
+ mcpServers[server.name] = server;
19
+ }
20
+ manager.updateProjectSetting("mcpServers", mcpServers);
21
+ }
22
+ export function addMCPServer(config) {
23
+ const manager = getSettingsManager();
24
+ const projectSettings = manager.loadProjectSettings();
25
+ const mcpServers = projectSettings.mcpServers || {};
26
+ mcpServers[config.name] = config;
27
+ manager.updateProjectSetting("mcpServers", mcpServers);
28
+ }
29
+ export function removeMCPServer(serverName) {
30
+ const manager = getSettingsManager();
31
+ const projectSettings = manager.loadProjectSettings();
32
+ const mcpServers = projectSettings.mcpServers;
33
+ if (mcpServers) {
34
+ delete mcpServers[serverName];
35
+ manager.updateProjectSetting("mcpServers", mcpServers);
36
+ }
37
+ }
38
+ export function getMCPServer(serverName) {
39
+ const manager = getSettingsManager();
40
+ const projectSettings = manager.loadProjectSettings();
41
+ return projectSettings.mcpServers?.[serverName];
42
+ }
43
+ // Predefined server configurations
44
+ export const PREDEFINED_SERVERS = {};
45
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAO/D;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU;QACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC7C,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,UAAU,GAAoC,EAAE,CAAC;IAEvD,gDAAgD;IAChD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,oBAAoB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAuB;IAClD,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,IAAI,EAAE,CAAC;IAEpD,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACjC,OAAO,CAAC,oBAAoB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;IAE9C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,CAAC,oBAAoB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACtD,OAAO,eAAe,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAoC,EAAE,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
2
+ import { EventEmitter } from "events";
3
+ export type TransportType = "stdio" | "http" | "sse" | "streamable_http";
4
+ export interface TransportConfig {
5
+ type: TransportType;
6
+ command?: string;
7
+ args?: string[];
8
+ env?: Record<string, string>;
9
+ url?: string;
10
+ headers?: Record<string, string>;
11
+ }
12
+ export interface MCPTransport {
13
+ connect(): Promise<Transport>;
14
+ disconnect(): Promise<void>;
15
+ getType(): TransportType;
16
+ }
17
+ export declare class StdioTransport implements MCPTransport {
18
+ private config;
19
+ private transport?;
20
+ private process?;
21
+ constructor(config: TransportConfig);
22
+ connect(): Promise<Transport>;
23
+ disconnect(): Promise<void>;
24
+ getType(): TransportType;
25
+ }
26
+ export declare class HttpTransport extends EventEmitter implements MCPTransport {
27
+ private config;
28
+ private client?;
29
+ private connected;
30
+ constructor(config: TransportConfig);
31
+ connect(): Promise<Transport>;
32
+ disconnect(): Promise<void>;
33
+ getType(): TransportType;
34
+ }
35
+ export declare class SSETransport extends EventEmitter implements MCPTransport {
36
+ private config;
37
+ private connected;
38
+ constructor(config: TransportConfig);
39
+ connect(): Promise<Transport>;
40
+ disconnect(): Promise<void>;
41
+ getType(): TransportType;
42
+ }
43
+ export declare class StreamableHttpTransport extends EventEmitter implements MCPTransport {
44
+ private config;
45
+ private connected;
46
+ constructor(config: TransportConfig);
47
+ connect(): Promise<Transport>;
48
+ disconnect(): Promise<void>;
49
+ getType(): TransportType;
50
+ }
51
+ export declare function createTransport(config: TransportConfig): MCPTransport;
@@ -0,0 +1,229 @@
1
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
2
+ import axios from "axios";
3
+ import { EventEmitter } from "events";
4
+ export class StdioTransport {
5
+ config;
6
+ transport;
7
+ process;
8
+ constructor(config) {
9
+ this.config = config;
10
+ if (!config.command) {
11
+ throw new Error("Command is required for stdio transport");
12
+ }
13
+ }
14
+ async connect() {
15
+ // Create transport with environment variables to suppress verbose output
16
+ const env = {
17
+ ...process.env,
18
+ ...this.config.env,
19
+ // Try to suppress verbose output from mcp-remote
20
+ MCP_REMOTE_QUIET: "1",
21
+ MCP_REMOTE_SILENT: "1",
22
+ DEBUG: "",
23
+ NODE_ENV: "production",
24
+ };
25
+ this.transport = new StdioClientTransport({
26
+ command: this.config.command,
27
+ args: this.config.args || [],
28
+ env,
29
+ });
30
+ return this.transport;
31
+ }
32
+ async disconnect() {
33
+ if (this.transport) {
34
+ await this.transport.close();
35
+ this.transport = undefined;
36
+ }
37
+ if (this.process) {
38
+ this.process.kill();
39
+ this.process = undefined;
40
+ }
41
+ }
42
+ getType() {
43
+ return "stdio";
44
+ }
45
+ }
46
+ export class HttpTransport extends EventEmitter {
47
+ config;
48
+ client;
49
+ connected = false;
50
+ constructor(config) {
51
+ super();
52
+ this.config = config;
53
+ if (!config.url) {
54
+ throw new Error("URL is required for HTTP transport");
55
+ }
56
+ }
57
+ async connect() {
58
+ this.client = axios.create({
59
+ baseURL: this.config.url,
60
+ headers: {
61
+ "Content-Type": "application/json",
62
+ ...this.config.headers,
63
+ },
64
+ });
65
+ // Test connection
66
+ try {
67
+ await this.client.get("/health");
68
+ this.connected = true;
69
+ }
70
+ catch (error) {
71
+ // If health endpoint doesn't exist, try a basic request
72
+ this.connected = true;
73
+ }
74
+ return new HttpClientTransport(this.client);
75
+ }
76
+ async disconnect() {
77
+ this.connected = false;
78
+ this.client = undefined;
79
+ }
80
+ getType() {
81
+ return "http";
82
+ }
83
+ }
84
+ export class SSETransport extends EventEmitter {
85
+ config;
86
+ connected = false;
87
+ constructor(config) {
88
+ super();
89
+ this.config = config;
90
+ if (!config.url) {
91
+ throw new Error("URL is required for SSE transport");
92
+ }
93
+ }
94
+ async connect() {
95
+ return new Promise((resolve, reject) => {
96
+ try {
97
+ // For Node.js environment, we'll use a simple HTTP-based approach
98
+ // In a real implementation, you'd use a proper SSE library like 'eventsource'
99
+ this.connected = true;
100
+ resolve(new SSEClientTransport(this.config.url));
101
+ }
102
+ catch (error) {
103
+ reject(error);
104
+ }
105
+ });
106
+ }
107
+ async disconnect() {
108
+ this.connected = false;
109
+ }
110
+ getType() {
111
+ return "sse";
112
+ }
113
+ }
114
+ // Custom HTTP Transport implementation
115
+ class HttpClientTransport extends EventEmitter {
116
+ client;
117
+ constructor(client) {
118
+ super();
119
+ this.client = client;
120
+ }
121
+ async start() {
122
+ // HTTP transport is connection-less, so we're always "started"
123
+ }
124
+ async close() {
125
+ // Nothing to close for HTTP transport
126
+ }
127
+ async send(message) {
128
+ try {
129
+ const response = await this.client.post("/rpc", message);
130
+ return response.data;
131
+ }
132
+ catch (error) {
133
+ throw new Error(`HTTP transport error: ${error}`);
134
+ }
135
+ }
136
+ }
137
+ // Custom SSE Transport implementation
138
+ class SSEClientTransport extends EventEmitter {
139
+ url;
140
+ constructor(url) {
141
+ super();
142
+ this.url = url;
143
+ }
144
+ async start() {
145
+ // SSE transport is event-driven, so we're always "started"
146
+ }
147
+ async close() {
148
+ // Nothing to close for basic SSE transport
149
+ }
150
+ async send(message) {
151
+ // For bidirectional communication over SSE, we typically use HTTP POST
152
+ // for sending messages and SSE for receiving
153
+ try {
154
+ const response = await axios.post(this.url.replace("/sse", "/rpc"), message, {
155
+ headers: { "Content-Type": "application/json" },
156
+ });
157
+ return response.data;
158
+ }
159
+ catch (error) {
160
+ throw new Error(`SSE transport error: ${error}`);
161
+ }
162
+ }
163
+ }
164
+ export class StreamableHttpTransport extends EventEmitter {
165
+ config;
166
+ connected = false;
167
+ constructor(config) {
168
+ super();
169
+ this.config = config;
170
+ if (!config.url) {
171
+ throw new Error("URL is required for streamable_http transport");
172
+ }
173
+ }
174
+ async connect() {
175
+ return new Promise((resolve, reject) => {
176
+ try {
177
+ this.connected = true;
178
+ resolve(new StreamableHttpClientTransport(this.config.url, this.config.headers));
179
+ }
180
+ catch (error) {
181
+ reject(error);
182
+ }
183
+ });
184
+ }
185
+ async disconnect() {
186
+ this.connected = false;
187
+ }
188
+ getType() {
189
+ return "streamable_http";
190
+ }
191
+ }
192
+ // Custom Streamable HTTP Transport implementation for GitHub Copilot MCP
193
+ class StreamableHttpClientTransport extends EventEmitter {
194
+ url;
195
+ headers;
196
+ constructor(url, headers) {
197
+ super();
198
+ this.url = url;
199
+ this.headers = headers;
200
+ }
201
+ async start() {
202
+ // Streamable HTTP transport is connection-less, so we're always "started"
203
+ }
204
+ async close() {
205
+ // Nothing to close for streamable HTTP transport
206
+ }
207
+ async send(message) {
208
+ console.log("StreamableHttpTransport: SSE endpoints require persistent connections, not suitable for MCP request-response pattern");
209
+ console.log("StreamableHttpTransport: Message that would be sent:", JSON.stringify(message));
210
+ // For now, return a mock response to indicate the transport type is not compatible
211
+ // with the MCP protocol's request-response pattern
212
+ throw new Error("StreamableHttpTransport: SSE endpoints are not compatible with MCP request-response pattern. GitHub Copilot MCP may require a different integration approach.");
213
+ }
214
+ }
215
+ export function createTransport(config) {
216
+ switch (config.type) {
217
+ case "stdio":
218
+ return new StdioTransport(config);
219
+ case "http":
220
+ return new HttpTransport(config);
221
+ case "sse":
222
+ return new SSETransport(config);
223
+ case "streamable_http":
224
+ return new StreamableHttpTransport(config);
225
+ default:
226
+ throw new Error(`Unsupported transport type: ${config.type}`);
227
+ }
228
+ }
229
+ //# sourceMappingURL=transports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/mcp/transports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ToolResult } from "../types/index";
2
+ export declare class BashTool {
3
+ private currentDirectory;
4
+ private confirmationService;
5
+ execute(command: string, timeout?: number): Promise<ToolResult>;
6
+ getCurrentDirectory(): string;
7
+ listFiles(directory?: string): Promise<ToolResult>;
8
+ findFiles(pattern: string, directory?: string): Promise<ToolResult>;
9
+ grep(pattern: string, files?: string): Promise<ToolResult>;
10
+ }
@@ -0,0 +1,76 @@
1
+ import { ConfirmationService } from "../utils/confirmation-service";
2
+ import { exec } from "child_process";
3
+ import { promisify } from "util";
4
+ const execAsync = promisify(exec);
5
+ export class BashTool {
6
+ currentDirectory = process.cwd();
7
+ confirmationService = ConfirmationService.getInstance();
8
+ async execute(command, timeout = 30000) {
9
+ try {
10
+ // Check if user has already accepted bash commands for this session
11
+ const sessionFlags = this.confirmationService.getSessionFlags();
12
+ if (!sessionFlags.bashCommands && !sessionFlags.allOperations) {
13
+ // Request confirmation showing the command
14
+ const confirmationResult = await this.confirmationService.requestConfirmation({
15
+ operation: "Run bash command",
16
+ filename: command,
17
+ showVSCodeOpen: false,
18
+ content: `Command: ${command}\nWorking directory: ${this.currentDirectory}`,
19
+ }, "bash");
20
+ if (!confirmationResult.confirmed) {
21
+ return {
22
+ success: false,
23
+ error: confirmationResult.feedback ||
24
+ "Command execution cancelled by user",
25
+ };
26
+ }
27
+ }
28
+ if (command.startsWith("cd ")) {
29
+ const newDir = command.substring(3).trim();
30
+ try {
31
+ process.chdir(newDir);
32
+ this.currentDirectory = process.cwd();
33
+ return {
34
+ success: true,
35
+ output: `Changed directory to: ${this.currentDirectory}`,
36
+ };
37
+ }
38
+ catch (error) {
39
+ return {
40
+ success: false,
41
+ error: `Cannot change directory: ${error.message}`,
42
+ };
43
+ }
44
+ }
45
+ const { stdout, stderr } = await execAsync(command, {
46
+ cwd: this.currentDirectory,
47
+ timeout,
48
+ maxBuffer: 1024 * 1024,
49
+ });
50
+ const output = stdout + (stderr ? `\nSTDERR: ${stderr}` : "");
51
+ return {
52
+ success: true,
53
+ output: output.trim() || "Command executed successfully (no output)",
54
+ };
55
+ }
56
+ catch (error) {
57
+ return {
58
+ success: false,
59
+ error: `Command failed: ${error.message}`,
60
+ };
61
+ }
62
+ }
63
+ getCurrentDirectory() {
64
+ return this.currentDirectory;
65
+ }
66
+ async listFiles(directory = ".") {
67
+ return this.execute(`ls -la ${directory}`);
68
+ }
69
+ async findFiles(pattern, directory = ".") {
70
+ return this.execute(`find ${directory} -name "${pattern}" -type f`);
71
+ }
72
+ async grep(pattern, files = ".") {
73
+ return this.execute(`grep -r "${pattern}" ${files}`);
74
+ }
75
+ }
76
+ //# sourceMappingURL=bash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { ToolResult } from "../types/index";
2
+ export interface ConfirmationRequest {
3
+ operation: string;
4
+ filename: string;
5
+ description?: string;
6
+ showVSCodeOpen?: boolean;
7
+ autoAccept?: boolean;
8
+ }
9
+ export declare class ConfirmationTool {
10
+ private confirmationService;
11
+ constructor();
12
+ requestConfirmation(request: ConfirmationRequest): Promise<ToolResult>;
13
+ checkSessionAcceptance(): Promise<ToolResult>;
14
+ resetSession(): void;
15
+ isPending(): boolean;
16
+ }