@coinbase/agentkit 0.0.0-nightly-20250328174338

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 (292) hide show
  1. package/README.md +827 -0
  2. package/dist/action-providers/across/acrossActionProvider.d.ts +50 -0
  3. package/dist/action-providers/across/acrossActionProvider.js +333 -0
  4. package/dist/action-providers/across/acrossActionProvider.test.d.ts +1 -0
  5. package/dist/action-providers/across/acrossActionProvider.test.js +391 -0
  6. package/dist/action-providers/across/constants.d.ts +1 -0
  7. package/dist/action-providers/across/constants.js +2 -0
  8. package/dist/action-providers/across/index.d.ts +1 -0
  9. package/dist/action-providers/across/index.js +17 -0
  10. package/dist/action-providers/across/schemas.d.ts +36 -0
  11. package/dist/action-providers/across/schemas.js +46 -0
  12. package/dist/action-providers/across/utils.d.ts +7 -0
  13. package/dist/action-providers/across/utils.js +25 -0
  14. package/dist/action-providers/actionDecorator.d.ts +69 -0
  15. package/dist/action-providers/actionDecorator.js +96 -0
  16. package/dist/action-providers/actionProvider.d.ts +48 -0
  17. package/dist/action-providers/actionProvider.js +62 -0
  18. package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.d.ts +55 -0
  19. package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.js +173 -0
  20. package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.test.d.ts +1 -0
  21. package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.test.js +131 -0
  22. package/dist/action-providers/alchemy/index.d.ts +2 -0
  23. package/dist/action-providers/alchemy/index.js +18 -0
  24. package/dist/action-providers/alchemy/schemas.d.ts +41 -0
  25. package/dist/action-providers/alchemy/schemas.js +34 -0
  26. package/dist/action-providers/allora/alloraActionProvider.d.ts +44 -0
  27. package/dist/action-providers/allora/alloraActionProvider.js +195 -0
  28. package/dist/action-providers/allora/alloraActionProvider.test.d.ts +1 -0
  29. package/dist/action-providers/allora/alloraActionProvider.test.js +109 -0
  30. package/dist/action-providers/allora/index.d.ts +2 -0
  31. package/dist/action-providers/allora/index.js +18 -0
  32. package/dist/action-providers/allora/schemas.d.ts +28 -0
  33. package/dist/action-providers/allora/schemas.js +30 -0
  34. package/dist/action-providers/basename/basenameActionProvider.d.ts +30 -0
  35. package/dist/action-providers/basename/basenameActionProvider.js +109 -0
  36. package/dist/action-providers/basename/basenameActionProvider.test.d.ts +1 -0
  37. package/dist/action-providers/basename/basenameActionProvider.test.js +146 -0
  38. package/dist/action-providers/basename/constants.d.ts +52 -0
  39. package/dist/action-providers/basename/constants.js +81 -0
  40. package/dist/action-providers/basename/index.d.ts +2 -0
  41. package/dist/action-providers/basename/index.js +18 -0
  42. package/dist/action-providers/basename/schemas.d.ts +14 -0
  43. package/dist/action-providers/basename/schemas.js +14 -0
  44. package/dist/action-providers/cdp/cdpApiActionProvider.d.ts +43 -0
  45. package/dist/action-providers/cdp/cdpApiActionProvider.js +128 -0
  46. package/dist/action-providers/cdp/cdpApiActionProvider.test.d.ts +1 -0
  47. package/dist/action-providers/cdp/cdpApiActionProvider.test.js +146 -0
  48. package/dist/action-providers/cdp/cdpWalletActionProvider.d.ts +58 -0
  49. package/dist/action-providers/cdp/cdpWalletActionProvider.js +224 -0
  50. package/dist/action-providers/cdp/cdpWalletActionProvider.test.d.ts +1 -0
  51. package/dist/action-providers/cdp/cdpWalletActionProvider.test.js +267 -0
  52. package/dist/action-providers/cdp/constants.d.ts +31 -0
  53. package/dist/action-providers/cdp/constants.js +34 -0
  54. package/dist/action-providers/cdp/index.d.ts +3 -0
  55. package/dist/action-providers/cdp/index.js +19 -0
  56. package/dist/action-providers/cdp/schemas.d.ts +91 -0
  57. package/dist/action-providers/cdp/schemas.js +77 -0
  58. package/dist/action-providers/compound/compoundActionProvider.d.ts +67 -0
  59. package/dist/action-providers/compound/compoundActionProvider.js +365 -0
  60. package/dist/action-providers/compound/compoundActionProvider.test.d.ts +1 -0
  61. package/dist/action-providers/compound/compoundActionProvider.test.js +353 -0
  62. package/dist/action-providers/compound/constants.d.ts +180 -0
  63. package/dist/action-providers/compound/constants.js +129 -0
  64. package/dist/action-providers/compound/index.d.ts +1 -0
  65. package/dist/action-providers/compound/index.js +17 -0
  66. package/dist/action-providers/compound/schemas.d.ts +57 -0
  67. package/dist/action-providers/compound/schemas.js +58 -0
  68. package/dist/action-providers/compound/utils.d.ts +95 -0
  69. package/dist/action-providers/compound/utils.js +353 -0
  70. package/dist/action-providers/customActionProvider.d.ts +30 -0
  71. package/dist/action-providers/customActionProvider.js +66 -0
  72. package/dist/action-providers/defillama/constants.d.ts +8 -0
  73. package/dist/action-providers/defillama/constants.js +11 -0
  74. package/dist/action-providers/defillama/defillamaActionProvider.d.ts +54 -0
  75. package/dist/action-providers/defillama/defillamaActionProvider.js +180 -0
  76. package/dist/action-providers/defillama/defillamaActionProvider.test.d.ts +1 -0
  77. package/dist/action-providers/defillama/defillamaActionProvider.test.js +114 -0
  78. package/dist/action-providers/defillama/index.d.ts +1 -0
  79. package/dist/action-providers/defillama/index.js +17 -0
  80. package/dist/action-providers/defillama/schemas.d.ts +34 -0
  81. package/dist/action-providers/defillama/schemas.js +34 -0
  82. package/dist/action-providers/defillama/types.d.ts +73 -0
  83. package/dist/action-providers/defillama/types.js +2 -0
  84. package/dist/action-providers/defillama/utils.d.ts +10 -0
  85. package/dist/action-providers/defillama/utils.js +87 -0
  86. package/dist/action-providers/defillama/utils.test.d.ts +1 -0
  87. package/dist/action-providers/defillama/utils.test.js +124 -0
  88. package/dist/action-providers/erc20/constants.d.ts +137 -0
  89. package/dist/action-providers/erc20/constants.js +202 -0
  90. package/dist/action-providers/erc20/erc20ActionProvider.d.ts +38 -0
  91. package/dist/action-providers/erc20/erc20ActionProvider.js +142 -0
  92. package/dist/action-providers/erc20/erc20ActionProvider.test.d.ts +1 -0
  93. package/dist/action-providers/erc20/erc20ActionProvider.test.js +131 -0
  94. package/dist/action-providers/erc20/index.d.ts +1 -0
  95. package/dist/action-providers/erc20/index.js +17 -0
  96. package/dist/action-providers/erc20/schemas.d.ts +27 -0
  97. package/dist/action-providers/erc20/schemas.js +26 -0
  98. package/dist/action-providers/erc721/constants.d.ts +232 -0
  99. package/dist/action-providers/erc721/constants.js +298 -0
  100. package/dist/action-providers/erc721/erc721ActionProvider.d.ts +46 -0
  101. package/dist/action-providers/erc721/erc721ActionProvider.js +164 -0
  102. package/dist/action-providers/erc721/erc721ActionProvider.test.d.ts +1 -0
  103. package/dist/action-providers/erc721/erc721ActionProvider.test.js +137 -0
  104. package/dist/action-providers/erc721/index.d.ts +1 -0
  105. package/dist/action-providers/erc721/index.js +17 -0
  106. package/dist/action-providers/erc721/schemas.d.ts +46 -0
  107. package/dist/action-providers/erc721/schemas.js +44 -0
  108. package/dist/action-providers/farcaster/farcasterActionProvider.d.ts +57 -0
  109. package/dist/action-providers/farcaster/farcasterActionProvider.js +142 -0
  110. package/dist/action-providers/farcaster/farcasterActionProvider.test.d.ts +1 -0
  111. package/dist/action-providers/farcaster/farcasterActionProvider.test.js +151 -0
  112. package/dist/action-providers/farcaster/index.d.ts +2 -0
  113. package/dist/action-providers/farcaster/index.js +18 -0
  114. package/dist/action-providers/farcaster/schemas.d.ts +15 -0
  115. package/dist/action-providers/farcaster/schemas.js +20 -0
  116. package/dist/action-providers/index.d.ts +24 -0
  117. package/dist/action-providers/index.js +40 -0
  118. package/dist/action-providers/jupiter/index.d.ts +1 -0
  119. package/dist/action-providers/jupiter/index.js +17 -0
  120. package/dist/action-providers/jupiter/jupiterActionProvider.d.ts +36 -0
  121. package/dist/action-providers/jupiter/jupiterActionProvider.js +115 -0
  122. package/dist/action-providers/jupiter/jupiterActionProvider.test.d.ts +1 -0
  123. package/dist/action-providers/jupiter/jupiterActionProvider.test.js +146 -0
  124. package/dist/action-providers/jupiter/schemas.d.ts +20 -0
  125. package/dist/action-providers/jupiter/schemas.js +20 -0
  126. package/dist/action-providers/messari/constants.d.ts +17 -0
  127. package/dist/action-providers/messari/constants.js +20 -0
  128. package/dist/action-providers/messari/index.d.ts +5 -0
  129. package/dist/action-providers/messari/index.js +21 -0
  130. package/dist/action-providers/messari/messariActionProvider.d.ts +42 -0
  131. package/dist/action-providers/messari/messariActionProvider.js +128 -0
  132. package/dist/action-providers/messari/messariActionProvider.test.d.ts +1 -0
  133. package/dist/action-providers/messari/messariActionProvider.test.js +152 -0
  134. package/dist/action-providers/messari/schemas.d.ts +11 -0
  135. package/dist/action-providers/messari/schemas.js +16 -0
  136. package/dist/action-providers/messari/types.d.ts +40 -0
  137. package/dist/action-providers/messari/types.js +2 -0
  138. package/dist/action-providers/messari/utils.d.ts +22 -0
  139. package/dist/action-providers/messari/utils.js +65 -0
  140. package/dist/action-providers/moonwell/constants.d.ts +78 -0
  141. package/dist/action-providers/moonwell/constants.js +111 -0
  142. package/dist/action-providers/moonwell/index.d.ts +1 -0
  143. package/dist/action-providers/moonwell/index.js +5 -0
  144. package/dist/action-providers/moonwell/moonwellActionProvider.d.ts +39 -0
  145. package/dist/action-providers/moonwell/moonwellActionProvider.js +249 -0
  146. package/dist/action-providers/moonwell/moonwellActionProvider.test.d.ts +1 -0
  147. package/dist/action-providers/moonwell/moonwellActionProvider.test.js +455 -0
  148. package/dist/action-providers/moonwell/schemas.d.ts +30 -0
  149. package/dist/action-providers/moonwell/schemas.js +39 -0
  150. package/dist/action-providers/morpho/constants.d.ts +16 -0
  151. package/dist/action-providers/morpho/constants.js +27 -0
  152. package/dist/action-providers/morpho/index.d.ts +2 -0
  153. package/dist/action-providers/morpho/index.js +18 -0
  154. package/dist/action-providers/morpho/morphoActionProvider.d.ts +39 -0
  155. package/dist/action-providers/morpho/morphoActionProvider.js +154 -0
  156. package/dist/action-providers/morpho/morphoActionProvider.test.d.ts +1 -0
  157. package/dist/action-providers/morpho/morphoActionProvider.test.js +128 -0
  158. package/dist/action-providers/morpho/schemas.d.ts +36 -0
  159. package/dist/action-providers/morpho/schemas.js +47 -0
  160. package/dist/action-providers/opensea/index.d.ts +1 -0
  161. package/dist/action-providers/opensea/index.js +17 -0
  162. package/dist/action-providers/opensea/openseaActionProvider.d.ts +59 -0
  163. package/dist/action-providers/opensea/openseaActionProvider.js +146 -0
  164. package/dist/action-providers/opensea/openseaActionProvider.test.d.ts +1 -0
  165. package/dist/action-providers/opensea/openseaActionProvider.test.js +201 -0
  166. package/dist/action-providers/opensea/schemas.d.ts +30 -0
  167. package/dist/action-providers/opensea/schemas.js +33 -0
  168. package/dist/action-providers/opensea/utils.d.ts +12 -0
  169. package/dist/action-providers/opensea/utils.js +47 -0
  170. package/dist/action-providers/pyth/index.d.ts +2 -0
  171. package/dist/action-providers/pyth/index.js +18 -0
  172. package/dist/action-providers/pyth/pythActionProvider.d.ts +33 -0
  173. package/dist/action-providers/pyth/pythActionProvider.js +121 -0
  174. package/dist/action-providers/pyth/pythActionProvider.test.d.ts +1 -0
  175. package/dist/action-providers/pyth/pythActionProvider.test.js +113 -0
  176. package/dist/action-providers/pyth/schemas.d.ts +21 -0
  177. package/dist/action-providers/pyth/schemas.js +20 -0
  178. package/dist/action-providers/spl/index.d.ts +1 -0
  179. package/dist/action-providers/spl/index.js +17 -0
  180. package/dist/action-providers/spl/schemas.d.ts +30 -0
  181. package/dist/action-providers/spl/schemas.js +26 -0
  182. package/dist/action-providers/spl/splActionProvider.d.ts +45 -0
  183. package/dist/action-providers/spl/splActionProvider.js +173 -0
  184. package/dist/action-providers/spl/splActionProvider.test.d.ts +1 -0
  185. package/dist/action-providers/spl/splActionProvider.test.js +300 -0
  186. package/dist/action-providers/twitter/index.d.ts +2 -0
  187. package/dist/action-providers/twitter/index.js +18 -0
  188. package/dist/action-providers/twitter/schemas.d.ts +38 -0
  189. package/dist/action-providers/twitter/schemas.js +44 -0
  190. package/dist/action-providers/twitter/twitterActionProvider.d.ts +82 -0
  191. package/dist/action-providers/twitter/twitterActionProvider.js +204 -0
  192. package/dist/action-providers/twitter/twitterActionProvider.test.d.ts +1 -0
  193. package/dist/action-providers/twitter/twitterActionProvider.test.js +185 -0
  194. package/dist/action-providers/wallet/index.d.ts +1 -0
  195. package/dist/action-providers/wallet/index.js +17 -0
  196. package/dist/action-providers/wallet/schemas.d.ts +19 -0
  197. package/dist/action-providers/wallet/schemas.js +19 -0
  198. package/dist/action-providers/wallet/walletActionProvider.d.ts +44 -0
  199. package/dist/action-providers/wallet/walletActionProvider.js +140 -0
  200. package/dist/action-providers/wallet/walletActionProvider.test.d.ts +1 -0
  201. package/dist/action-providers/wallet/walletActionProvider.test.js +194 -0
  202. package/dist/action-providers/weth/constants.d.ts +19 -0
  203. package/dist/action-providers/weth/constants.js +29 -0
  204. package/dist/action-providers/weth/index.d.ts +1 -0
  205. package/dist/action-providers/weth/index.js +17 -0
  206. package/dist/action-providers/weth/schemas.d.ts +8 -0
  207. package/dist/action-providers/weth/schemas.js +10 -0
  208. package/dist/action-providers/weth/wethActionProvider.d.ts +30 -0
  209. package/dist/action-providers/weth/wethActionProvider.js +89 -0
  210. package/dist/action-providers/weth/wethActionProvider.test.d.ts +1 -0
  211. package/dist/action-providers/weth/wethActionProvider.test.js +92 -0
  212. package/dist/action-providers/wow/constants.d.ts +15 -0
  213. package/dist/action-providers/wow/constants.js +844 -0
  214. package/dist/action-providers/wow/index.d.ts +2 -0
  215. package/dist/action-providers/wow/index.js +18 -0
  216. package/dist/action-providers/wow/schemas.d.ts +43 -0
  217. package/dist/action-providers/wow/schemas.js +47 -0
  218. package/dist/action-providers/wow/uniswap/constants.d.ts +3 -0
  219. package/dist/action-providers/wow/uniswap/constants.js +100 -0
  220. package/dist/action-providers/wow/uniswap/utils.d.ts +82 -0
  221. package/dist/action-providers/wow/uniswap/utils.js +226 -0
  222. package/dist/action-providers/wow/utils.d.ts +27 -0
  223. package/dist/action-providers/wow/utils.js +63 -0
  224. package/dist/action-providers/wow/wowActionProvider.d.ts +46 -0
  225. package/dist/action-providers/wow/wowActionProvider.js +223 -0
  226. package/dist/action-providers/wow/wowActionProvider.test.d.ts +1 -0
  227. package/dist/action-providers/wow/wowActionProvider.test.js +291 -0
  228. package/dist/agentkit.d.ts +44 -0
  229. package/dist/agentkit.js +68 -0
  230. package/dist/analytics/index.d.ts +1 -0
  231. package/dist/analytics/index.js +17 -0
  232. package/dist/analytics/sendAnalyticsEvent.d.ts +31 -0
  233. package/dist/analytics/sendAnalyticsEvent.js +52 -0
  234. package/dist/index.d.ts +4 -0
  235. package/dist/index.js +20 -0
  236. package/dist/network/index.d.ts +3 -0
  237. package/dist/network/index.js +19 -0
  238. package/dist/network/network.d.ts +20 -0
  239. package/dist/network/network.js +86 -0
  240. package/dist/network/svm.d.ts +15 -0
  241. package/dist/network/svm.js +38 -0
  242. package/dist/network/types.d.ts +17 -0
  243. package/dist/network/types.js +2 -0
  244. package/dist/utils.d.ts +22 -0
  245. package/dist/utils.js +57 -0
  246. package/dist/utils.test.d.ts +1 -0
  247. package/dist/utils.test.js +50 -0
  248. package/dist/wallet-providers/cdpWalletProvider.d.ts +246 -0
  249. package/dist/wallet-providers/cdpWalletProvider.js +421 -0
  250. package/dist/wallet-providers/cdpWalletProvider.test.d.ts +1 -0
  251. package/dist/wallet-providers/cdpWalletProvider.test.js +701 -0
  252. package/dist/wallet-providers/evmWalletProvider.d.ts +51 -0
  253. package/dist/wallet-providers/evmWalletProvider.js +14 -0
  254. package/dist/wallet-providers/evmWalletProvider.test.d.ts +1 -0
  255. package/dist/wallet-providers/evmWalletProvider.test.js +56 -0
  256. package/dist/wallet-providers/index.d.ts +10 -0
  257. package/dist/wallet-providers/index.js +26 -0
  258. package/dist/wallet-providers/privyEvmWalletProvider.d.ts +55 -0
  259. package/dist/wallet-providers/privyEvmWalletProvider.js +140 -0
  260. package/dist/wallet-providers/privyEvmWalletProvider.test.d.ts +1 -0
  261. package/dist/wallet-providers/privyEvmWalletProvider.test.js +331 -0
  262. package/dist/wallet-providers/privyShared.d.ts +40 -0
  263. package/dist/wallet-providers/privyShared.js +49 -0
  264. package/dist/wallet-providers/privySvmWalletProvider.d.ts +128 -0
  265. package/dist/wallet-providers/privySvmWalletProvider.js +212 -0
  266. package/dist/wallet-providers/privySvmWalletProvider.test.d.ts +1 -0
  267. package/dist/wallet-providers/privySvmWalletProvider.test.js +310 -0
  268. package/dist/wallet-providers/privyWalletProvider.d.ts +35 -0
  269. package/dist/wallet-providers/privyWalletProvider.js +39 -0
  270. package/dist/wallet-providers/privyWalletProvider.test.d.ts +1 -0
  271. package/dist/wallet-providers/privyWalletProvider.test.js +124 -0
  272. package/dist/wallet-providers/smartWalletProvider.d.ts +177 -0
  273. package/dist/wallet-providers/smartWalletProvider.js +303 -0
  274. package/dist/wallet-providers/smartWalletProvider.test.d.ts +1 -0
  275. package/dist/wallet-providers/smartWalletProvider.test.js +388 -0
  276. package/dist/wallet-providers/solanaKeypairWalletProvider.d.ts +143 -0
  277. package/dist/wallet-providers/solanaKeypairWalletProvider.js +280 -0
  278. package/dist/wallet-providers/solanaKeypairWalletProvider.test.d.ts +1 -0
  279. package/dist/wallet-providers/solanaKeypairWalletProvider.test.js +218 -0
  280. package/dist/wallet-providers/svmWalletProvider.d.ts +56 -0
  281. package/dist/wallet-providers/svmWalletProvider.js +13 -0
  282. package/dist/wallet-providers/svmWalletProvider.test.d.ts +1 -0
  283. package/dist/wallet-providers/svmWalletProvider.test.js +55 -0
  284. package/dist/wallet-providers/viemWalletProvider.d.ts +103 -0
  285. package/dist/wallet-providers/viemWalletProvider.js +206 -0
  286. package/dist/wallet-providers/viemWalletProvider.test.d.ts +1 -0
  287. package/dist/wallet-providers/viemWalletProvider.test.js +338 -0
  288. package/dist/wallet-providers/walletProvider.d.ts +48 -0
  289. package/dist/wallet-providers/walletProvider.js +41 -0
  290. package/dist/wallet-providers/walletProvider.test.d.ts +1 -0
  291. package/dist/wallet-providers/walletProvider.test.js +103 -0
  292. package/package.json +83 -0
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.jupiterActionProvider = exports.JupiterActionProvider = void 0;
13
+ const actionProvider_1 = require("../actionProvider");
14
+ const svmWalletProvider_1 = require("../../wallet-providers/svmWalletProvider");
15
+ const zod_1 = require("zod");
16
+ const actionDecorator_1 = require("../actionDecorator");
17
+ const schemas_1 = require("./schemas");
18
+ const web3_js_1 = require("@solana/web3.js");
19
+ const api_1 = require("@jup-ag/api");
20
+ /**
21
+ * JupiterActionProvider handles token swaps using Jupiter's API.
22
+ */
23
+ class JupiterActionProvider extends actionProvider_1.ActionProvider {
24
+ /**
25
+ * Initializes Jupiter API client.
26
+ */
27
+ constructor() {
28
+ super("jupiter", []);
29
+ }
30
+ /**
31
+ * Swaps tokens using Jupiter's API.
32
+ *
33
+ * @param walletProvider - The wallet provider to use for the swap
34
+ * @param args - Swap parameters including input token, output token, and amount
35
+ * @returns A message indicating success or failure with transaction details
36
+ */
37
+ async swap(walletProvider, args) {
38
+ try {
39
+ const jupiterApi = (0, api_1.createJupiterApiClient)();
40
+ const userPublicKey = walletProvider.getPublicKey();
41
+ const inputMint = new web3_js_1.PublicKey(args.inputMint);
42
+ const outputMint = new web3_js_1.PublicKey(args.outputMint);
43
+ const { getMint } = await import("@solana/spl-token");
44
+ let mintInfo;
45
+ try {
46
+ mintInfo = await getMint(walletProvider.getConnection(), inputMint);
47
+ }
48
+ catch (error) {
49
+ return `Failed to fetch mint info for mint address ${args.inputMint}. Error: ${error}`;
50
+ }
51
+ const amount = args.amount * 10 ** mintInfo.decimals;
52
+ const quoteResponse = await jupiterApi.quoteGet({
53
+ inputMint: inputMint.toBase58(),
54
+ outputMint: outputMint.toBase58(),
55
+ amount: amount,
56
+ slippageBps: args.slippageBps || 50, // 0.5% default slippage
57
+ });
58
+ if (!quoteResponse) {
59
+ throw new Error("Failed to get a swap quote.");
60
+ }
61
+ const swapRequest = {
62
+ userPublicKey: userPublicKey.toBase58(),
63
+ wrapAndUnwrapSol: true,
64
+ useSharedAccounts: true, // Optimize for low transaction costs
65
+ quoteResponse,
66
+ };
67
+ const swapResponse = await jupiterApi.swapPost({ swapRequest });
68
+ if (!swapResponse || !swapResponse.swapTransaction) {
69
+ throw new Error("Failed to generate swap transaction.");
70
+ }
71
+ const transactionBuffer = Buffer.from(swapResponse.swapTransaction, "base64");
72
+ const tx = web3_js_1.VersionedTransaction.deserialize(transactionBuffer);
73
+ const signature = await walletProvider.signAndSendTransaction(tx);
74
+ await walletProvider.waitForSignatureResult(signature);
75
+ return `Successfully swapped ${args.amount} tokens! Signature: ${signature}`;
76
+ }
77
+ catch (error) {
78
+ return `Error swapping tokens: ${error}`;
79
+ }
80
+ }
81
+ /**
82
+ * Checks if the action provider supports the given network.
83
+ * Only supports Solana networks.
84
+ *
85
+ * @param network - The network to check support for
86
+ * @returns True if the network is a Solana network
87
+ */
88
+ supportsNetwork(network) {
89
+ return network.protocolFamily == "svm" && network.networkId === "solana-mainnet";
90
+ }
91
+ }
92
+ exports.JupiterActionProvider = JupiterActionProvider;
93
+ __decorate([
94
+ (0, actionDecorator_1.CreateAction)({
95
+ name: "swap",
96
+ description: `
97
+ Swaps tokens using Jupiter's DEX aggregator.
98
+ - Input and output tokens must be valid SPL token mints.
99
+ - Ensures sufficient balance before executing swap.
100
+ - If says "SOL" as the input or output, use the mint address So11111111111111111111111111111111111111112
101
+ NOTE: Only available on Solana mainnet.
102
+ `,
103
+ schema: schemas_1.SwapTokenSchema,
104
+ }),
105
+ __metadata("design:type", Function),
106
+ __metadata("design:paramtypes", [svmWalletProvider_1.SvmWalletProvider, void 0]),
107
+ __metadata("design:returntype", Promise)
108
+ ], JupiterActionProvider.prototype, "swap", null);
109
+ /**
110
+ * Factory function to create a new JupiterActionProvider instance.
111
+ *
112
+ * @returns A new JupiterActionProvider instance
113
+ */
114
+ const jupiterActionProvider = () => new JupiterActionProvider();
115
+ exports.jupiterActionProvider = jupiterActionProvider;
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const web3_js_1 = require("@solana/web3.js");
4
+ const jupiterActionProvider_1 = require("./jupiterActionProvider");
5
+ const api_1 = require("@jup-ag/api");
6
+ // Default SPL token decimals for tests
7
+ const DECIMALS = 6;
8
+ // Mock the @solana/web3.js module
9
+ jest.mock("@solana/web3.js", () => ({
10
+ // Preserve the actual implementation of @solana/web3.js while overriding specific methods
11
+ ...jest.requireActual("@solana/web3.js"),
12
+ // Mock the Solana Connection class to prevent real network calls
13
+ Connection: jest.fn(),
14
+ // Mock the VersionedTransaction class and its deserialize method
15
+ VersionedTransaction: {
16
+ deserialize: jest.fn().mockReturnValue({
17
+ // Mock the sign method to prevent actual signing operations
18
+ sign: jest.fn(),
19
+ }),
20
+ },
21
+ // Mock the MessageV0 class and its compile method to return an empty object
22
+ MessageV0: {
23
+ compile: jest.fn().mockReturnValue({}),
24
+ },
25
+ }));
26
+ // Mock the @solana/spl-token module
27
+ jest.mock("@solana/spl-token", () => ({
28
+ // Preserve the actual implementation of @solana/spl-token while overriding specific methods
29
+ ...jest.requireActual("@solana/spl-token"),
30
+ // Mock getMint to always return a fixed decimal value for tokens
31
+ getMint: jest.fn().mockReturnValue({ decimals: DECIMALS }),
32
+ }));
33
+ // Mock the @jup-ag/api module
34
+ jest.mock("@jup-ag/api", () => ({
35
+ // Mock the createJupiterApiClient function to return an object with mocked methods
36
+ createJupiterApiClient: jest.fn().mockReturnValue({
37
+ // Mock the quoteGet method, which fetches the best swap route
38
+ quoteGet: jest.fn(),
39
+ // Mock the swapPost method, which generates the swap transaction
40
+ swapPost: jest.fn(),
41
+ }),
42
+ }));
43
+ // Mock the custom wallet provider used for Solana transactions
44
+ jest.mock("../../wallet-providers/svmWalletProvider");
45
+ describe("JupiterActionProvider", () => {
46
+ let actionProvider;
47
+ let mockWallet;
48
+ let mockConnection;
49
+ let mockJupiterApi;
50
+ let mockQuoteGet;
51
+ let mockSwapPost;
52
+ beforeEach(() => {
53
+ jest.clearAllMocks(); // Reset mocks before each test to ensure no test interference
54
+ // Create a mock Jupiter API client with mocked methods
55
+ mockJupiterApi = (0, api_1.createJupiterApiClient)();
56
+ mockQuoteGet = mockJupiterApi.quoteGet;
57
+ mockSwapPost = mockJupiterApi.swapPost;
58
+ // Initialize the action provider
59
+ actionProvider = new jupiterActionProvider_1.JupiterActionProvider();
60
+ // Mock the Solana connection to avoid real network requests
61
+ mockConnection = {
62
+ getLatestBlockhash: jest.fn().mockResolvedValue({ blockhash: "mockedBlockhash" }),
63
+ };
64
+ // Mock the wallet provider with necessary methods
65
+ mockWallet = {
66
+ getConnection: jest.fn().mockReturnValue(mockConnection), // Return the mocked connection
67
+ getPublicKey: jest.fn().mockReturnValue(new web3_js_1.PublicKey("11111111111111111111111111111111")),
68
+ signAndSendTransaction: jest.fn().mockResolvedValue("mock-signature"),
69
+ waitForSignatureResult: jest.fn().mockResolvedValue({
70
+ context: { slot: 1234 },
71
+ value: { err: null },
72
+ }),
73
+ getAddress: jest.fn().mockReturnValue("11111111111111111111111111111111"),
74
+ getNetwork: jest.fn().mockReturnValue({ protocolFamily: "svm", networkId: "solana-mainnet" }),
75
+ getName: jest.fn().mockReturnValue("mock-wallet"),
76
+ getBalance: jest.fn().mockResolvedValue(BigInt(1000000000)),
77
+ nativeTransfer: jest.fn(),
78
+ };
79
+ });
80
+ /**
81
+ * Test cases for the swap function of JupiterActionProvider
82
+ */
83
+ describe("swap", () => {
84
+ const INPUT_MINT = "So11111111111111111111111111111111111111112"; // Mock SOL mint address
85
+ const OUTPUT_MINT = "BXXkv6FbfHZmKbMmy6KvaakKt6bYjhbjmhvJ92kp92Mw"; // Mock token mint address
86
+ const MOCK_SIGNATURE = "mock-signature";
87
+ // Mock arguments for swapping tokens
88
+ const swapArgs = {
89
+ inputMint: INPUT_MINT,
90
+ outputMint: OUTPUT_MINT,
91
+ amount: 1000, // User-specified amount
92
+ slippageBps: 50, // Slippage tolerance
93
+ };
94
+ /**
95
+ * Test successful token swap execution
96
+ */
97
+ it("should successfully swap tokens", async () => {
98
+ // Mock a successful quote response from Jupiter
99
+ mockQuoteGet.mockResolvedValue({ route: "mock-route" });
100
+ // Mock a successful swap transaction response from Jupiter
101
+ mockSwapPost.mockResolvedValue({
102
+ swapTransaction: Buffer.from("mock-transaction").toString("base64"),
103
+ });
104
+ // Call the swap function
105
+ const result = await actionProvider.swap(mockWallet, swapArgs);
106
+ // Verify that Jupiter was called with correct parameters
107
+ expect(mockQuoteGet).toHaveBeenCalledWith({
108
+ inputMint: INPUT_MINT,
109
+ outputMint: OUTPUT_MINT,
110
+ amount: swapArgs.amount * 10 ** DECIMALS, // Ensure correct decimal conversion
111
+ slippageBps: swapArgs.slippageBps,
112
+ });
113
+ expect(mockSwapPost).toHaveBeenCalled();
114
+ expect(mockWallet.waitForSignatureResult).toHaveBeenCalledWith(MOCK_SIGNATURE);
115
+ expect(result).toContain("Successfully swapped");
116
+ });
117
+ /**
118
+ * Test handling of errors when retrieving a swap quote
119
+ */
120
+ it("should handle swap quote errors", async () => {
121
+ mockQuoteGet.mockRejectedValue(new Error("Quote error")); // Simulate an API failure
122
+ const result = await actionProvider.swap(mockWallet, swapArgs);
123
+ expect(result).toBe("Error swapping tokens: Error: Quote error");
124
+ });
125
+ /**
126
+ * Test handling of errors when posting a swap transaction
127
+ */
128
+ it("should handle swap transaction errors", async () => {
129
+ mockQuoteGet.mockResolvedValue({ route: "mock-route" });
130
+ mockSwapPost.mockRejectedValue(new Error("Swap transaction error")); // Simulate a failure
131
+ const result = await actionProvider.swap(mockWallet, swapArgs);
132
+ expect(result).toBe("Error swapping tokens: Error: Swap transaction error");
133
+ });
134
+ });
135
+ describe("supportsNetwork", () => {
136
+ test.each([
137
+ [{ protocolFamily: "svm", networkId: "solana-mainnet" }, true, "solana mainnet"],
138
+ [{ protocolFamily: "svm", networkId: "solana-devnet" }, false, "solana devnet"],
139
+ [{ protocolFamily: "evm", networkId: "ethereum-mainnet" }, false, "ethereum mainnet"],
140
+ [{ protocolFamily: "evm", networkId: "solana-mainnet" }, false, "wrong protocol family"],
141
+ [{ protocolFamily: "svm", networkId: "ethereum-mainnet" }, false, "wrong network id"],
142
+ ])("should return %p for %s", (network, expected) => {
143
+ expect(actionProvider.supportsNetwork(network)).toBe(expected);
144
+ });
145
+ });
146
+ });
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Schema for swapping tokens using Jupiter.
4
+ */
5
+ export declare const SwapTokenSchema: z.ZodObject<{
6
+ inputMint: z.ZodString;
7
+ outputMint: z.ZodString;
8
+ amount: z.ZodNumber;
9
+ slippageBps: z.ZodDefault<z.ZodNumber>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ amount: number;
12
+ inputMint: string;
13
+ outputMint: string;
14
+ slippageBps: number;
15
+ }, {
16
+ amount: number;
17
+ inputMint: string;
18
+ outputMint: string;
19
+ slippageBps?: number | undefined;
20
+ }>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwapTokenSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ /**
6
+ * Schema for swapping tokens using Jupiter.
7
+ */
8
+ exports.SwapTokenSchema = zod_1.z
9
+ .object({
10
+ inputMint: zod_1.z.string().describe("The mint address of the token to swap from"),
11
+ outputMint: zod_1.z.string().describe("The mint address of the token to swap to"),
12
+ amount: zod_1.z.number().positive().describe("Amount of tokens to swap"),
13
+ slippageBps: zod_1.z
14
+ .number()
15
+ .int()
16
+ .positive()
17
+ .default(50)
18
+ .describe("Slippage tolerance in basis points (e.g., 50 = 0.5%)"),
19
+ })
20
+ .describe("Swap tokens using Jupiter DEX aggregator");
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Base URL for the Messari API
3
+ */
4
+ export declare const MESSARI_BASE_URL = "https://api.messari.io/ai/v1";
5
+ /**
6
+ * Default error message when API key is missing
7
+ */
8
+ export declare const API_KEY_MISSING_ERROR = "MESSARI_API_KEY is not configured.";
9
+ /**
10
+ * Rate limits by subscription tier
11
+ */
12
+ export declare const RATE_LIMITS: {
13
+ FREE: string;
14
+ LITE: string;
15
+ PRO: string;
16
+ ENTERPRISE: string;
17
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RATE_LIMITS = exports.API_KEY_MISSING_ERROR = exports.MESSARI_BASE_URL = void 0;
4
+ /**
5
+ * Base URL for the Messari API
6
+ */
7
+ exports.MESSARI_BASE_URL = "https://api.messari.io/ai/v1";
8
+ /**
9
+ * Default error message when API key is missing
10
+ */
11
+ exports.API_KEY_MISSING_ERROR = "MESSARI_API_KEY is not configured.";
12
+ /**
13
+ * Rate limits by subscription tier
14
+ */
15
+ exports.RATE_LIMITS = {
16
+ FREE: "2 requests per day",
17
+ LITE: "10 requests per day",
18
+ PRO: "20 requests per day",
19
+ ENTERPRISE: "50 requests per day",
20
+ };
@@ -0,0 +1,5 @@
1
+ export * from "./messariActionProvider";
2
+ export * from "./schemas";
3
+ export * from "./types";
4
+ export * from "./constants";
5
+ export * from "./utils";
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./messariActionProvider"), exports);
18
+ __exportStar(require("./schemas"), exports);
19
+ __exportStar(require("./types"), exports);
20
+ __exportStar(require("./constants"), exports);
21
+ __exportStar(require("./utils"), exports);
@@ -0,0 +1,42 @@
1
+ import { z } from "zod";
2
+ import { ActionProvider } from "../actionProvider";
3
+ import { Network } from "../../network";
4
+ import { MessariResearchQuestionSchema } from "./schemas";
5
+ import { MessariActionProviderConfig } from "./types";
6
+ /**
7
+ * MessariActionProvider is an action provider for Messari AI toolkit interactions.
8
+ * It enables AI agents to ask research questions about crypto markets, protocols, and tokens.
9
+ *
10
+ * @augments ActionProvider
11
+ */
12
+ export declare class MessariActionProvider extends ActionProvider {
13
+ private readonly apiKey;
14
+ /**
15
+ * Constructor for the MessariActionProvider class.
16
+ *
17
+ * @param config - The configuration options for the MessariActionProvider
18
+ */
19
+ constructor(config?: MessariActionProviderConfig);
20
+ /**
21
+ * Makes a request to the Messari AI API with a research question
22
+ *
23
+ * @param args - The arguments containing the research question
24
+ * @returns A string containing the research results or an error message
25
+ */
26
+ researchQuestion(args: z.infer<typeof MessariResearchQuestionSchema>): Promise<string>;
27
+ /**
28
+ * Checks if the action provider supports the given network.
29
+ * Messari research is network-agnostic, so it supports all networks.
30
+ *
31
+ * @param _ - The network to check
32
+ * @returns Always returns true as Messari research is network-agnostic
33
+ */
34
+ supportsNetwork(_: Network): boolean;
35
+ }
36
+ /**
37
+ * Factory function to create a new MessariActionProvider instance.
38
+ *
39
+ * @param config - The configuration options for the MessariActionProvider
40
+ * @returns A new instance of MessariActionProvider
41
+ */
42
+ export declare const messariActionProvider: (config?: MessariActionProviderConfig) => MessariActionProvider;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.messariActionProvider = exports.MessariActionProvider = void 0;
13
+ const zod_1 = require("zod");
14
+ const actionProvider_1 = require("../actionProvider");
15
+ const actionDecorator_1 = require("../actionDecorator");
16
+ const schemas_1 = require("./schemas");
17
+ const constants_1 = require("./constants");
18
+ const utils_1 = require("./utils");
19
+ /**
20
+ * MessariActionProvider is an action provider for Messari AI toolkit interactions.
21
+ * It enables AI agents to ask research questions about crypto markets, protocols, and tokens.
22
+ *
23
+ * @augments ActionProvider
24
+ */
25
+ class MessariActionProvider extends actionProvider_1.ActionProvider {
26
+ /**
27
+ * Constructor for the MessariActionProvider class.
28
+ *
29
+ * @param config - The configuration options for the MessariActionProvider
30
+ */
31
+ constructor(config = {}) {
32
+ super("messari", []);
33
+ config.apiKey || (config.apiKey = process.env.MESSARI_API_KEY);
34
+ if (!config.apiKey) {
35
+ throw new Error(constants_1.API_KEY_MISSING_ERROR);
36
+ }
37
+ this.apiKey = config.apiKey;
38
+ }
39
+ /**
40
+ * Makes a request to the Messari AI API with a research question
41
+ *
42
+ * @param args - The arguments containing the research question
43
+ * @returns A string containing the research results or an error message
44
+ */
45
+ async researchQuestion(args) {
46
+ try {
47
+ // Make API request
48
+ const response = await fetch(`${constants_1.MESSARI_BASE_URL}/chat/completions`, {
49
+ method: "POST",
50
+ headers: {
51
+ "Content-Type": "application/json",
52
+ "x-messari-api-key": this.apiKey,
53
+ },
54
+ body: JSON.stringify({
55
+ messages: [
56
+ {
57
+ role: "user",
58
+ content: args.question,
59
+ },
60
+ ],
61
+ }),
62
+ });
63
+ if (!response.ok) {
64
+ throw await (0, utils_1.createMessariError)(response);
65
+ }
66
+ // Parse and validate response
67
+ let data;
68
+ try {
69
+ data = (await response.json());
70
+ }
71
+ catch (jsonError) {
72
+ throw new Error(`Failed to parse API response: ${jsonError instanceof Error ? jsonError.message : String(jsonError)}`);
73
+ }
74
+ if (!data.data?.messages?.[0]?.content) {
75
+ throw new Error("Received invalid response format from Messari API");
76
+ }
77
+ const result = data.data.messages[0].content;
78
+ return `Messari Research Results:\n\n${result}`;
79
+ }
80
+ catch (error) {
81
+ if (error instanceof Error && "responseText" in error) {
82
+ return (0, utils_1.formatMessariApiError)(error);
83
+ }
84
+ return (0, utils_1.formatGenericError)(error);
85
+ }
86
+ }
87
+ /**
88
+ * Checks if the action provider supports the given network.
89
+ * Messari research is network-agnostic, so it supports all networks.
90
+ *
91
+ * @param _ - The network to check
92
+ * @returns Always returns true as Messari research is network-agnostic
93
+ */
94
+ supportsNetwork(_) {
95
+ return true; // Messari research is network-agnostic
96
+ }
97
+ }
98
+ exports.MessariActionProvider = MessariActionProvider;
99
+ __decorate([
100
+ (0, actionDecorator_1.CreateAction)({
101
+ name: "research_question",
102
+ description: `
103
+ This tool queries Messari AI for comprehensive crypto research across these datasets:
104
+ 1. News/Content - Latest crypto news, blogs, podcasts
105
+ 2. Exchanges - CEX/DEX volumes, market share, assets listed
106
+ 3. Onchain Data - Active addresses, transaction fees, total transactions.
107
+ 4. Token Unlocks - Upcoming supply unlocks, vesting schedules, and token emission details
108
+ 5. Market Data - Asset prices, trading volume, market cap, TVL, and historical performance
109
+ 6. Fundraising - Investment data, funding rounds, venture capital activity.
110
+ 7. Protocol Research - Technical analysis of how protocols work, tokenomics, and yield mechanisms
111
+ 8. Social Data - Twitter followers and Reddit subscribers metrics, growth trends
112
+
113
+ Examples: "Which DEXs have the highest trading volume this month?", "When is Arbitrum's next major token unlock?", "How does Morpho generate yield for users?", "Which cryptocurrency has gained the most Twitter followers in 2023?", "What did Vitalik Buterin say about rollups in his recent blog posts?"
114
+ `,
115
+ schema: schemas_1.MessariResearchQuestionSchema,
116
+ }),
117
+ __metadata("design:type", Function),
118
+ __metadata("design:paramtypes", [void 0]),
119
+ __metadata("design:returntype", Promise)
120
+ ], MessariActionProvider.prototype, "researchQuestion", null);
121
+ /**
122
+ * Factory function to create a new MessariActionProvider instance.
123
+ *
124
+ * @param config - The configuration options for the MessariActionProvider
125
+ * @returns A new instance of MessariActionProvider
126
+ */
127
+ const messariActionProvider = (config = {}) => new MessariActionProvider(config);
128
+ exports.messariActionProvider = messariActionProvider;