intentkit 0.5.0__py3-none-any.whl → 0.5.2__py3-none-any.whl

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.

Potentially problematic release.


This version of intentkit might be problematic. Click here for more details.

Files changed (366) hide show
  1. intentkit/__init__.py +17 -0
  2. intentkit/abstracts/__init__.py +0 -0
  3. intentkit/abstracts/agent.py +60 -0
  4. intentkit/abstracts/api.py +4 -0
  5. intentkit/abstracts/engine.py +38 -0
  6. intentkit/abstracts/exception.py +9 -0
  7. intentkit/abstracts/graph.py +25 -0
  8. intentkit/abstracts/skill.py +129 -0
  9. intentkit/abstracts/twitter.py +54 -0
  10. intentkit/clients/__init__.py +14 -0
  11. intentkit/clients/cdp.py +53 -0
  12. intentkit/clients/twitter.py +445 -0
  13. intentkit/config/__init__.py +0 -0
  14. intentkit/config/config.py +164 -0
  15. intentkit/core/__init__.py +0 -0
  16. intentkit/core/agent.py +191 -0
  17. intentkit/core/api.py +40 -0
  18. intentkit/core/client.py +45 -0
  19. intentkit/core/credit.py +1767 -0
  20. intentkit/core/engine.py +1018 -0
  21. intentkit/core/node.py +223 -0
  22. intentkit/core/prompt.py +58 -0
  23. intentkit/core/skill.py +124 -0
  24. intentkit/models/agent.py +1689 -0
  25. intentkit/models/agent_data.py +810 -0
  26. intentkit/models/agent_schema.json +733 -0
  27. intentkit/models/app_setting.py +156 -0
  28. intentkit/models/base.py +9 -0
  29. intentkit/models/chat.py +581 -0
  30. intentkit/models/conversation.py +286 -0
  31. intentkit/models/credit.py +1406 -0
  32. intentkit/models/db.py +120 -0
  33. intentkit/models/db_mig.py +102 -0
  34. intentkit/models/generator.py +347 -0
  35. intentkit/models/llm.py +746 -0
  36. intentkit/models/redis.py +132 -0
  37. intentkit/models/skill.py +466 -0
  38. intentkit/models/user.py +243 -0
  39. intentkit/skills/__init__.py +12 -0
  40. intentkit/skills/acolyt/__init__.py +83 -0
  41. intentkit/skills/acolyt/acolyt.jpg +0 -0
  42. intentkit/skills/acolyt/ask.py +128 -0
  43. intentkit/skills/acolyt/base.py +28 -0
  44. intentkit/skills/acolyt/schema.json +89 -0
  45. intentkit/skills/aixbt/README.md +71 -0
  46. intentkit/skills/aixbt/__init__.py +73 -0
  47. intentkit/skills/aixbt/aixbt.jpg +0 -0
  48. intentkit/skills/aixbt/base.py +21 -0
  49. intentkit/skills/aixbt/projects.py +153 -0
  50. intentkit/skills/aixbt/schema.json +99 -0
  51. intentkit/skills/allora/__init__.py +83 -0
  52. intentkit/skills/allora/allora.jpeg +0 -0
  53. intentkit/skills/allora/base.py +28 -0
  54. intentkit/skills/allora/price.py +130 -0
  55. intentkit/skills/allora/schema.json +89 -0
  56. intentkit/skills/base.py +174 -0
  57. intentkit/skills/carv/README.md +95 -0
  58. intentkit/skills/carv/__init__.py +121 -0
  59. intentkit/skills/carv/base.py +183 -0
  60. intentkit/skills/carv/carv.webp +0 -0
  61. intentkit/skills/carv/fetch_news.py +92 -0
  62. intentkit/skills/carv/onchain_query.py +164 -0
  63. intentkit/skills/carv/schema.json +137 -0
  64. intentkit/skills/carv/token_info_and_price.py +110 -0
  65. intentkit/skills/cdp/__init__.py +137 -0
  66. intentkit/skills/cdp/base.py +21 -0
  67. intentkit/skills/cdp/cdp.png +0 -0
  68. intentkit/skills/cdp/get_balance.py +81 -0
  69. intentkit/skills/cdp/schema.json +473 -0
  70. intentkit/skills/chainlist/README.md +38 -0
  71. intentkit/skills/chainlist/__init__.py +54 -0
  72. intentkit/skills/chainlist/base.py +21 -0
  73. intentkit/skills/chainlist/chain_lookup.py +208 -0
  74. intentkit/skills/chainlist/chainlist.png +0 -0
  75. intentkit/skills/chainlist/schema.json +47 -0
  76. intentkit/skills/common/__init__.py +82 -0
  77. intentkit/skills/common/base.py +21 -0
  78. intentkit/skills/common/common.jpg +0 -0
  79. intentkit/skills/common/current_time.py +84 -0
  80. intentkit/skills/common/schema.json +57 -0
  81. intentkit/skills/cookiefun/README.md +121 -0
  82. intentkit/skills/cookiefun/__init__.py +78 -0
  83. intentkit/skills/cookiefun/base.py +41 -0
  84. intentkit/skills/cookiefun/constants.py +18 -0
  85. intentkit/skills/cookiefun/cookiefun.png +0 -0
  86. intentkit/skills/cookiefun/get_account_details.py +171 -0
  87. intentkit/skills/cookiefun/get_account_feed.py +282 -0
  88. intentkit/skills/cookiefun/get_account_smart_followers.py +181 -0
  89. intentkit/skills/cookiefun/get_sectors.py +128 -0
  90. intentkit/skills/cookiefun/schema.json +155 -0
  91. intentkit/skills/cookiefun/search_accounts.py +225 -0
  92. intentkit/skills/cryptocompare/__init__.py +130 -0
  93. intentkit/skills/cryptocompare/api.py +159 -0
  94. intentkit/skills/cryptocompare/base.py +303 -0
  95. intentkit/skills/cryptocompare/cryptocompare.png +0 -0
  96. intentkit/skills/cryptocompare/fetch_news.py +96 -0
  97. intentkit/skills/cryptocompare/fetch_price.py +99 -0
  98. intentkit/skills/cryptocompare/fetch_top_exchanges.py +113 -0
  99. intentkit/skills/cryptocompare/fetch_top_market_cap.py +109 -0
  100. intentkit/skills/cryptocompare/fetch_top_volume.py +108 -0
  101. intentkit/skills/cryptocompare/fetch_trading_signals.py +107 -0
  102. intentkit/skills/cryptocompare/schema.json +168 -0
  103. intentkit/skills/cryptopanic/__init__.py +108 -0
  104. intentkit/skills/cryptopanic/base.py +51 -0
  105. intentkit/skills/cryptopanic/cryptopanic.png +0 -0
  106. intentkit/skills/cryptopanic/fetch_crypto_news.py +153 -0
  107. intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +136 -0
  108. intentkit/skills/cryptopanic/schema.json +103 -0
  109. intentkit/skills/dapplooker/README.md +92 -0
  110. intentkit/skills/dapplooker/__init__.py +83 -0
  111. intentkit/skills/dapplooker/base.py +26 -0
  112. intentkit/skills/dapplooker/dapplooker.jpg +0 -0
  113. intentkit/skills/dapplooker/dapplooker_token_data.py +476 -0
  114. intentkit/skills/dapplooker/schema.json +91 -0
  115. intentkit/skills/defillama/__init__.py +323 -0
  116. intentkit/skills/defillama/api.py +315 -0
  117. intentkit/skills/defillama/base.py +135 -0
  118. intentkit/skills/defillama/coins/__init__.py +0 -0
  119. intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +116 -0
  120. intentkit/skills/defillama/coins/fetch_block.py +98 -0
  121. intentkit/skills/defillama/coins/fetch_current_prices.py +105 -0
  122. intentkit/skills/defillama/coins/fetch_first_price.py +100 -0
  123. intentkit/skills/defillama/coins/fetch_historical_prices.py +110 -0
  124. intentkit/skills/defillama/coins/fetch_price_chart.py +109 -0
  125. intentkit/skills/defillama/coins/fetch_price_percentage.py +93 -0
  126. intentkit/skills/defillama/config/__init__.py +0 -0
  127. intentkit/skills/defillama/config/chains.py +433 -0
  128. intentkit/skills/defillama/defillama.jpeg +0 -0
  129. intentkit/skills/defillama/fees/__init__.py +0 -0
  130. intentkit/skills/defillama/fees/fetch_fees_overview.py +130 -0
  131. intentkit/skills/defillama/schema.json +383 -0
  132. intentkit/skills/defillama/stablecoins/__init__.py +0 -0
  133. intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +100 -0
  134. intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +129 -0
  135. intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +83 -0
  136. intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +126 -0
  137. intentkit/skills/defillama/tests/__init__.py +0 -0
  138. intentkit/skills/defillama/tests/api_integration.test.py +192 -0
  139. intentkit/skills/defillama/tests/api_unit.test.py +583 -0
  140. intentkit/skills/defillama/tvl/__init__.py +0 -0
  141. intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +106 -0
  142. intentkit/skills/defillama/tvl/fetch_chains.py +107 -0
  143. intentkit/skills/defillama/tvl/fetch_historical_tvl.py +91 -0
  144. intentkit/skills/defillama/tvl/fetch_protocol.py +207 -0
  145. intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +93 -0
  146. intentkit/skills/defillama/tvl/fetch_protocols.py +196 -0
  147. intentkit/skills/defillama/volumes/__init__.py +0 -0
  148. intentkit/skills/defillama/volumes/fetch_dex_overview.py +157 -0
  149. intentkit/skills/defillama/volumes/fetch_dex_summary.py +123 -0
  150. intentkit/skills/defillama/volumes/fetch_options_overview.py +131 -0
  151. intentkit/skills/defillama/yields/__init__.py +0 -0
  152. intentkit/skills/defillama/yields/fetch_pool_chart.py +100 -0
  153. intentkit/skills/defillama/yields/fetch_pools.py +126 -0
  154. intentkit/skills/dexscreener/__init__.py +93 -0
  155. intentkit/skills/dexscreener/base.py +133 -0
  156. intentkit/skills/dexscreener/dexscreener.png +0 -0
  157. intentkit/skills/dexscreener/model/__init__.py +0 -0
  158. intentkit/skills/dexscreener/model/search_token_response.py +82 -0
  159. intentkit/skills/dexscreener/schema.json +48 -0
  160. intentkit/skills/dexscreener/search_token.py +321 -0
  161. intentkit/skills/dune_analytics/__init__.py +103 -0
  162. intentkit/skills/dune_analytics/base.py +46 -0
  163. intentkit/skills/dune_analytics/dune.png +0 -0
  164. intentkit/skills/dune_analytics/fetch_kol_buys.py +128 -0
  165. intentkit/skills/dune_analytics/fetch_nation_metrics.py +237 -0
  166. intentkit/skills/dune_analytics/schema.json +99 -0
  167. intentkit/skills/elfa/README.md +100 -0
  168. intentkit/skills/elfa/__init__.py +123 -0
  169. intentkit/skills/elfa/base.py +28 -0
  170. intentkit/skills/elfa/elfa.jpg +0 -0
  171. intentkit/skills/elfa/mention.py +504 -0
  172. intentkit/skills/elfa/schema.json +153 -0
  173. intentkit/skills/elfa/stats.py +118 -0
  174. intentkit/skills/elfa/tokens.py +126 -0
  175. intentkit/skills/enso/README.md +75 -0
  176. intentkit/skills/enso/__init__.py +114 -0
  177. intentkit/skills/enso/abi/__init__.py +0 -0
  178. intentkit/skills/enso/abi/approval.py +279 -0
  179. intentkit/skills/enso/abi/erc20.py +14 -0
  180. intentkit/skills/enso/abi/route.py +129 -0
  181. intentkit/skills/enso/base.py +44 -0
  182. intentkit/skills/enso/best_yield.py +286 -0
  183. intentkit/skills/enso/enso.jpg +0 -0
  184. intentkit/skills/enso/networks.py +105 -0
  185. intentkit/skills/enso/prices.py +93 -0
  186. intentkit/skills/enso/route.py +300 -0
  187. intentkit/skills/enso/schema.json +212 -0
  188. intentkit/skills/enso/tokens.py +223 -0
  189. intentkit/skills/enso/wallet.py +381 -0
  190. intentkit/skills/github/README.md +63 -0
  191. intentkit/skills/github/__init__.py +54 -0
  192. intentkit/skills/github/base.py +21 -0
  193. intentkit/skills/github/github.jpg +0 -0
  194. intentkit/skills/github/github_search.py +183 -0
  195. intentkit/skills/github/schema.json +59 -0
  196. intentkit/skills/heurist/__init__.py +143 -0
  197. intentkit/skills/heurist/base.py +26 -0
  198. intentkit/skills/heurist/heurist.png +0 -0
  199. intentkit/skills/heurist/image_generation_animagine_xl.py +162 -0
  200. intentkit/skills/heurist/image_generation_arthemy_comics.py +162 -0
  201. intentkit/skills/heurist/image_generation_arthemy_real.py +162 -0
  202. intentkit/skills/heurist/image_generation_braindance.py +162 -0
  203. intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +162 -0
  204. intentkit/skills/heurist/image_generation_flux_1_dev.py +162 -0
  205. intentkit/skills/heurist/image_generation_sdxl.py +161 -0
  206. intentkit/skills/heurist/schema.json +196 -0
  207. intentkit/skills/lifi/README.md +294 -0
  208. intentkit/skills/lifi/__init__.py +141 -0
  209. intentkit/skills/lifi/base.py +21 -0
  210. intentkit/skills/lifi/lifi.png +0 -0
  211. intentkit/skills/lifi/schema.json +89 -0
  212. intentkit/skills/lifi/token_execute.py +472 -0
  213. intentkit/skills/lifi/token_quote.py +190 -0
  214. intentkit/skills/lifi/utils.py +656 -0
  215. intentkit/skills/moralis/README.md +490 -0
  216. intentkit/skills/moralis/__init__.py +110 -0
  217. intentkit/skills/moralis/api.py +281 -0
  218. intentkit/skills/moralis/base.py +55 -0
  219. intentkit/skills/moralis/fetch_chain_portfolio.py +191 -0
  220. intentkit/skills/moralis/fetch_nft_portfolio.py +284 -0
  221. intentkit/skills/moralis/fetch_solana_portfolio.py +331 -0
  222. intentkit/skills/moralis/fetch_wallet_portfolio.py +301 -0
  223. intentkit/skills/moralis/moralis.png +0 -0
  224. intentkit/skills/moralis/schema.json +156 -0
  225. intentkit/skills/moralis/tests/__init__.py +0 -0
  226. intentkit/skills/moralis/tests/test_wallet.py +511 -0
  227. intentkit/skills/nation/__init__.py +62 -0
  228. intentkit/skills/nation/base.py +31 -0
  229. intentkit/skills/nation/nation.png +0 -0
  230. intentkit/skills/nation/nft_check.py +106 -0
  231. intentkit/skills/nation/schema.json +58 -0
  232. intentkit/skills/openai/__init__.py +107 -0
  233. intentkit/skills/openai/base.py +32 -0
  234. intentkit/skills/openai/dalle_image_generation.py +128 -0
  235. intentkit/skills/openai/gpt_image_generation.py +152 -0
  236. intentkit/skills/openai/gpt_image_to_image.py +186 -0
  237. intentkit/skills/openai/image_to_text.py +126 -0
  238. intentkit/skills/openai/openai.png +0 -0
  239. intentkit/skills/openai/schema.json +139 -0
  240. intentkit/skills/portfolio/README.md +55 -0
  241. intentkit/skills/portfolio/__init__.py +151 -0
  242. intentkit/skills/portfolio/base.py +107 -0
  243. intentkit/skills/portfolio/constants.py +9 -0
  244. intentkit/skills/portfolio/moralis.png +0 -0
  245. intentkit/skills/portfolio/schema.json +237 -0
  246. intentkit/skills/portfolio/token_balances.py +155 -0
  247. intentkit/skills/portfolio/wallet_approvals.py +102 -0
  248. intentkit/skills/portfolio/wallet_defi_positions.py +80 -0
  249. intentkit/skills/portfolio/wallet_history.py +155 -0
  250. intentkit/skills/portfolio/wallet_net_worth.py +112 -0
  251. intentkit/skills/portfolio/wallet_nfts.py +139 -0
  252. intentkit/skills/portfolio/wallet_profitability.py +101 -0
  253. intentkit/skills/portfolio/wallet_profitability_summary.py +91 -0
  254. intentkit/skills/portfolio/wallet_stats.py +79 -0
  255. intentkit/skills/portfolio/wallet_swaps.py +147 -0
  256. intentkit/skills/skills.toml +103 -0
  257. intentkit/skills/slack/__init__.py +98 -0
  258. intentkit/skills/slack/base.py +55 -0
  259. intentkit/skills/slack/get_channel.py +109 -0
  260. intentkit/skills/slack/get_message.py +136 -0
  261. intentkit/skills/slack/schedule_message.py +92 -0
  262. intentkit/skills/slack/schema.json +135 -0
  263. intentkit/skills/slack/send_message.py +81 -0
  264. intentkit/skills/slack/slack.jpg +0 -0
  265. intentkit/skills/system/__init__.py +90 -0
  266. intentkit/skills/system/base.py +22 -0
  267. intentkit/skills/system/read_agent_api_key.py +87 -0
  268. intentkit/skills/system/regenerate_agent_api_key.py +77 -0
  269. intentkit/skills/system/schema.json +53 -0
  270. intentkit/skills/system/system.svg +76 -0
  271. intentkit/skills/tavily/README.md +86 -0
  272. intentkit/skills/tavily/__init__.py +91 -0
  273. intentkit/skills/tavily/base.py +27 -0
  274. intentkit/skills/tavily/schema.json +119 -0
  275. intentkit/skills/tavily/tavily.jpg +0 -0
  276. intentkit/skills/tavily/tavily_extract.py +147 -0
  277. intentkit/skills/tavily/tavily_search.py +139 -0
  278. intentkit/skills/token/README.md +89 -0
  279. intentkit/skills/token/__init__.py +107 -0
  280. intentkit/skills/token/base.py +154 -0
  281. intentkit/skills/token/constants.py +9 -0
  282. intentkit/skills/token/erc20_transfers.py +145 -0
  283. intentkit/skills/token/moralis.png +0 -0
  284. intentkit/skills/token/schema.json +141 -0
  285. intentkit/skills/token/token_analytics.py +81 -0
  286. intentkit/skills/token/token_price.py +132 -0
  287. intentkit/skills/token/token_search.py +121 -0
  288. intentkit/skills/twitter/__init__.py +146 -0
  289. intentkit/skills/twitter/base.py +68 -0
  290. intentkit/skills/twitter/follow_user.py +69 -0
  291. intentkit/skills/twitter/get_mentions.py +124 -0
  292. intentkit/skills/twitter/get_timeline.py +111 -0
  293. intentkit/skills/twitter/get_user_by_username.py +84 -0
  294. intentkit/skills/twitter/get_user_tweets.py +123 -0
  295. intentkit/skills/twitter/like_tweet.py +65 -0
  296. intentkit/skills/twitter/post_tweet.py +90 -0
  297. intentkit/skills/twitter/reply_tweet.py +98 -0
  298. intentkit/skills/twitter/retweet.py +76 -0
  299. intentkit/skills/twitter/schema.json +258 -0
  300. intentkit/skills/twitter/search_tweets.py +115 -0
  301. intentkit/skills/twitter/twitter.png +0 -0
  302. intentkit/skills/unrealspeech/__init__.py +55 -0
  303. intentkit/skills/unrealspeech/base.py +21 -0
  304. intentkit/skills/unrealspeech/schema.json +100 -0
  305. intentkit/skills/unrealspeech/text_to_speech.py +177 -0
  306. intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
  307. intentkit/skills/venice_audio/__init__.py +106 -0
  308. intentkit/skills/venice_audio/base.py +119 -0
  309. intentkit/skills/venice_audio/input.py +41 -0
  310. intentkit/skills/venice_audio/schema.json +152 -0
  311. intentkit/skills/venice_audio/venice_audio.py +240 -0
  312. intentkit/skills/venice_audio/venice_logo.jpg +0 -0
  313. intentkit/skills/venice_image/README.md +119 -0
  314. intentkit/skills/venice_image/__init__.py +154 -0
  315. intentkit/skills/venice_image/api.py +138 -0
  316. intentkit/skills/venice_image/base.py +188 -0
  317. intentkit/skills/venice_image/config.py +35 -0
  318. intentkit/skills/venice_image/image_enhance/README.md +119 -0
  319. intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
  320. intentkit/skills/venice_image/image_enhance/image_enhance.py +80 -0
  321. intentkit/skills/venice_image/image_enhance/image_enhance_base.py +23 -0
  322. intentkit/skills/venice_image/image_enhance/image_enhance_input.py +40 -0
  323. intentkit/skills/venice_image/image_generation/README.md +144 -0
  324. intentkit/skills/venice_image/image_generation/__init__.py +0 -0
  325. intentkit/skills/venice_image/image_generation/image_generation_base.py +117 -0
  326. intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -0
  327. intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -0
  328. intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -0
  329. intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -0
  330. intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -0
  331. intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -0
  332. intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -0
  333. intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -0
  334. intentkit/skills/venice_image/image_upscale/README.md +111 -0
  335. intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
  336. intentkit/skills/venice_image/image_upscale/image_upscale.py +90 -0
  337. intentkit/skills/venice_image/image_upscale/image_upscale_base.py +23 -0
  338. intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -0
  339. intentkit/skills/venice_image/image_vision/README.md +112 -0
  340. intentkit/skills/venice_image/image_vision/__init__.py +0 -0
  341. intentkit/skills/venice_image/image_vision/image_vision.py +100 -0
  342. intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -0
  343. intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -0
  344. intentkit/skills/venice_image/schema.json +267 -0
  345. intentkit/skills/venice_image/utils.py +78 -0
  346. intentkit/skills/venice_image/venice_image.jpg +0 -0
  347. intentkit/skills/web_scraper/README.md +82 -0
  348. intentkit/skills/web_scraper/__init__.py +92 -0
  349. intentkit/skills/web_scraper/base.py +21 -0
  350. intentkit/skills/web_scraper/langchain.png +0 -0
  351. intentkit/skills/web_scraper/schema.json +115 -0
  352. intentkit/skills/web_scraper/scrape_and_index.py +327 -0
  353. intentkit/utils/__init__.py +1 -0
  354. intentkit/utils/chain.py +436 -0
  355. intentkit/utils/error.py +134 -0
  356. intentkit/utils/logging.py +70 -0
  357. intentkit/utils/middleware.py +61 -0
  358. intentkit/utils/random.py +16 -0
  359. intentkit/utils/s3.py +267 -0
  360. intentkit/utils/slack_alert.py +79 -0
  361. intentkit/utils/tx.py +37 -0
  362. {intentkit-0.5.0.dist-info → intentkit-0.5.2.dist-info}/METADATA +1 -1
  363. intentkit-0.5.2.dist-info/RECORD +365 -0
  364. intentkit-0.5.0.dist-info/RECORD +0 -4
  365. {intentkit-0.5.0.dist-info → intentkit-0.5.2.dist-info}/WHEEL +0 -0
  366. {intentkit-0.5.0.dist-info → intentkit-0.5.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,294 @@
1
+ # LiFi Skills
2
+ Cross-chain token transfers and swaps using the LiFi protocol with CDP wallet integration.
3
+
4
+ ## Features
5
+
6
+ - **Token Quotes**: Get real-time quotes for token swaps and cross-chain transfers
7
+ - **Token Execution**: Execute token swaps and transfers with automatic transaction handling
8
+ - **Explorer URLs**: Get direct blockchain explorer links for all transactions
9
+ - **Multi-chain Support**: Works with 15+ blockchains including Base, Ethereum, Arbitrum, Polygon
10
+ - **Testnet Support**: Full support for testnet operations (Base Sepolia, Ethereum Sepolia, etc.)
11
+
12
+ ## Skills Available
13
+
14
+ 1. **`token_quote`** - Get quotes for token transfers (public access)
15
+ 2. **`lifi_token_execute`** - Execute token transfers (requires CDP wallet)
16
+
17
+ ## Test Prompts
18
+
19
+ Use these exact prompts to test the LiFi skills:
20
+
21
+ ### 1. Check Wallet Address
22
+ ```
23
+ what is my wallet address
24
+ ```
25
+
26
+ ### 2. Check Balances
27
+ ```
28
+ tell me my balance in eth and usdc
29
+ ```
30
+
31
+ ### 3. Get Quote for Token Swap
32
+ ```
33
+ now get me quote to swap my usdc to eth on the same chain that is base mainnet
34
+ ```
35
+
36
+ ### 4. Execute Token Swap
37
+ ```
38
+ yes do the swap now
39
+ ```
40
+
41
+ ### 5. Verify Transaction
42
+ ```
43
+ tell me my balance in eth and usdc
44
+ ```
45
+
46
+ ## Expected Results
47
+
48
+ ### Quote Response
49
+ ```
50
+ ### Token Transfer Quote
51
+
52
+ **From:** 2.2019 USDC on Base
53
+ **To:** 0.00100259 ETH on Base
54
+ **Minimum Received:** 0.00097251 ETH
55
+ **Bridge/Exchange:** sushiswap
56
+
57
+ **Value:** $2.2017 → $2.2067
58
+ **Estimated Time:** 30 seconds
59
+
60
+ **Gas Cost:**
61
+ - SEND: 0.00001005 ETH ($0.0221)
62
+ - **Total Gas:** ~$0.0221
63
+ ```
64
+
65
+ ### Execution Response
66
+ ```
67
+ **Token Swap Executed Successfully**
68
+
69
+ Transaction successful!
70
+ Transaction Hash: 0xe7d026c7598699909794df9f7858e48cc56c03e4d428f5cc62f51c1979617fd1
71
+ Network: Base
72
+ Explorer: https://basescan.org/tx/0xe7d026c7598699909794df9f7858e48cc56c03e4d428f5cc62f51c1979617fd1
73
+ Token: USDC → ETH
74
+ Amount: 2.2019
75
+
76
+ **Status:** Completed (same-chain swap)
77
+ ```
78
+
79
+ ## Supported Chains
80
+
81
+ **Mainnet**: Ethereum, Base, Arbitrum, Optimism, Polygon, Avalanche, Fantom, BSC, Linea, zkSync Era, Scroll
82
+
83
+ **Testnet**: Ethereum Sepolia, Base Sepolia, Arbitrum Sepolia, Optimism Sepolia, Polygon Mumbai
84
+
85
+ ## Prerequisites
86
+
87
+ - CDP wallet configured and funded
88
+ - Agent with LiFi skills enabled
89
+ - Sufficient token balance for swaps/transfers
90
+ - Network gas tokens for transaction fees
91
+
92
+ ## Configuration
93
+
94
+ The skills are automatically configured with:
95
+ - Default slippage: 3%
96
+ - Maximum execution time: 300 seconds
97
+ - Support for all major tokens (ETH, USDC, USDT, DAI, WETH, etc.)
98
+
99
+ ## Error Handling
100
+
101
+ The skills handle common errors automatically:
102
+ - Invalid chain identifiers
103
+ - Insufficient balances
104
+ - Network connectivity issues
105
+ - Transaction failures with detailed error messages
106
+
107
+ ### CDP Wallet Requirements
108
+
109
+ To use the `token_execute` skill, your agent must have:
110
+
111
+ 1. **CDP Wallet Configuration**: A properly configured CDP wallet with `cdp_wallet_data` set
112
+ 2. **Sufficient Funds**: Enough tokens for the transfer amount plus gas fees
113
+ 3. **Network Configuration**: Proper network settings matching your intended chains
114
+
115
+
116
+ ## Usage Examples
117
+
118
+ ### Token Quote Examples
119
+
120
+ #### Cross-Chain Transfer Quote
121
+ ```
122
+ "Get a quote for transferring 100 USDC from Ethereum to Polygon"
123
+ ```
124
+
125
+ #### Same-Chain Swap Quote
126
+ ```
127
+ "What's the rate for swapping 0.5 ETH to USDC on Ethereum?"
128
+ ```
129
+
130
+ #### Fee Analysis
131
+ ```
132
+ "Check the fees for sending 1000 DAI from Arbitrum to Base"
133
+ ```
134
+
135
+ #### Amount Calculation
136
+ ```
137
+ "How much MATIC would I get if I transfer 50 USDC from Ethereum to Polygon?"
138
+ ```
139
+
140
+ ### Token Execute Examples
141
+
142
+ #### Execute Cross-Chain Transfer
143
+ ```
144
+ "Execute a transfer of 100 USDC from Ethereum to Polygon"
145
+ ```
146
+
147
+ #### Execute Same-Chain Swap
148
+ ```
149
+ "Swap 0.1 ETH for USDC on Base"
150
+ ```
151
+
152
+ #### Execute with Custom Slippage
153
+ ```
154
+ "Transfer 500 DAI from Arbitrum to Optimism with 1% slippage"
155
+ ```
156
+
157
+ ## Supported Networks
158
+
159
+ ### Major Networks
160
+ - **Ethereum** (ETH) - Chain ID: 1
161
+ - **Polygon** (POL) - Chain ID: 137
162
+ - **Arbitrum One** (ARB) - Chain ID: 42161
163
+ - **Optimism** (OPT) - Chain ID: 10
164
+ - **Base** (BASE) - Chain ID: 8453
165
+ - **BNB Chain** (BSC) - Chain ID: 56
166
+ - **Avalanche** (AVAX) - Chain ID: 43114
167
+ - **Gnosis Chain** (DAI) - Chain ID: 100
168
+
169
+ ### Layer 2 Networks
170
+ - **Linea** - Chain ID: 59144
171
+ - **zkSync Era** - Chain ID: 324
172
+ - **Polygon zkEVM** - Chain ID: 1101
173
+ - **Scroll** - Chain ID: 534352
174
+
175
+ ## How It Works
176
+
177
+ ### Token Quote Process
178
+
179
+ 1. **Validates** input parameters (chains, tokens, amounts, slippage)
180
+ 2. **Queries** LiFi API for the best route and pricing
181
+ 3. **Formats** comprehensive quote information including:
182
+ - Token amounts and conversion rates
183
+ - Detailed fee breakdown (LP fees, bridge fees, etc.)
184
+ - Gas cost estimates in native tokens and USD
185
+ - Execution time estimates
186
+ - Routing path through bridges/exchanges
187
+ - USD value equivalents
188
+
189
+ ### Token Execute Process
190
+
191
+ 1. **Gets Quote** - Retrieves routing and pricing information
192
+ 2. **Checks Wallet** - Validates CDP wallet configuration and funds
193
+ 3. **Sets Approval** - Automatically approves ERC20 tokens if needed
194
+ 4. **Executes Transaction** - Sends the transfer transaction
195
+ 5. **Monitors Status** - Tracks cross-chain transfer completion
196
+ 6. **Reports Results** - Provides transaction hash and final status
197
+
198
+ ## Troubleshooting
199
+
200
+ ### Common Issues
201
+
202
+ #### "CDP client not available"
203
+ **Problem**: Agent doesn't have CDP wallet configuration
204
+ **Solution**:
205
+ - Set `wallet_provider: "cdp"` in agent configuration
206
+ - Ensure CDP credentials are properly configured
207
+ - Use `token_quote` for research without requiring a wallet
208
+
209
+ #### "No route found"
210
+ **Problem**: LiFi cannot find a path for the requested transfer
211
+ **Solutions**:
212
+ - Try different token pairs
213
+ - Use more liquid tokens (USDC, ETH, etc.)
214
+ - Check if both chains support the requested tokens
215
+ - Reduce transfer amount if liquidity is limited
216
+
217
+ #### "Invalid request: Token not supported"
218
+ **Problem**: Token symbol or address not recognized
219
+ **Solutions**:
220
+ - Use popular token symbols (USDC, ETH, DAI, MATIC)
221
+ - Verify token exists on the source chain
222
+ - Use full token contract address instead of symbol
223
+
224
+ #### "Failed to approve token"
225
+ **Problem**: ERC20 token approval failed
226
+ **Solutions**:
227
+ - Ensure wallet has enough native tokens for gas
228
+ - Check if token contract allows approvals
229
+ - Try again with a smaller amount
230
+
231
+ #### "Transfer pending" (taking too long)
232
+ **Problem**: Cross-chain transfer is slow
233
+ **Solutions**:
234
+ - Wait longer (some bridges take 10-30 minutes)
235
+ - Check the explorer link for detailed status
236
+ - Contact LiFi support if transfer is stuck
237
+
238
+ ### Configuration Issues
239
+
240
+ #### Invalid Slippage
241
+ ```
242
+ Error: "Invalid slippage: must be between 0.001 (0.1%) and 0.5 (50%)"
243
+ ```
244
+ **Solution**: Use slippage between 0.1% and 50% (e.g., 0.03 for 3%)
245
+
246
+ #### Chain Restrictions
247
+ ```
248
+ Error: "Source chain 'ETH' is not allowed"
249
+ ```
250
+ **Solution**: Update `allowed_chains` in configuration or remove the restriction
251
+
252
+ #### Execution Timeout
253
+ ```
254
+ Status: "Still pending - transfer may take longer to complete"
255
+ ```
256
+ **Solution**: Increase `max_execution_time` or wait for manual completion
257
+
258
+ ## Best Practices
259
+
260
+ ### For Token Quotes
261
+ - Use quotes to compare different routes before executing
262
+ - Check gas costs and fees before large transfers
263
+ - Consider execution time for time-sensitive operations
264
+
265
+ ### For Token Execution
266
+ - Always get a quote first to understand costs
267
+ - Ensure sufficient gas tokens in your wallet
268
+ - Use appropriate slippage (1-3% for stable pairs, 3-5% for volatile pairs)
269
+ - Monitor large transfers using the explorer link
270
+
271
+ ### For Production Use
272
+ - Set reasonable `allowed_chains` to prevent unexpected transfers
273
+ - Use `private` state for execution skills in production
274
+ - Monitor transfer status for cross-chain operations
275
+ - Keep some native tokens for gas in each chain you use
276
+
277
+ ## API Reference
278
+
279
+ ### Token Quote Parameters
280
+ - `from_chain`: Source blockchain (string)
281
+ - `to_chain`: Destination blockchain (string)
282
+ - `from_token`: Token to send (symbol or address)
283
+ - `to_token`: Token to receive (symbol or address)
284
+ - `from_amount`: Amount in smallest unit (string)
285
+ - `slippage`: Slippage tolerance 0.001-0.5 (float, optional)
286
+
287
+ ### Token Execute Parameters
288
+ Same as Token Quote - the skill handles the execution automatically.
289
+
290
+ ### Response Format
291
+
292
+ **Quote Response**: Detailed markdown with transfer details, fees, gas costs, and routing information.
293
+
294
+ **Execute Response**: Transaction hash, status monitoring, and complete transfer summary.
@@ -0,0 +1,141 @@
1
+ import logging
2
+ from typing import List, Optional, TypedDict
3
+
4
+ from intentkit.abstracts.skill import SkillStoreABC
5
+ from intentkit.skills.base import SkillConfig, SkillState
6
+ from intentkit.skills.lifi.base import LiFiBaseTool
7
+ from intentkit.skills.lifi.token_execute import TokenExecute
8
+ from intentkit.skills.lifi.token_quote import TokenQuote
9
+
10
+ # Cache skills at the system level, because they are stateless
11
+ _cache: dict[str, LiFiBaseTool] = {}
12
+
13
+ # Set up logging
14
+ logger = logging.getLogger(__name__)
15
+
16
+
17
+ class SkillStates(TypedDict):
18
+ token_quote: SkillState
19
+ token_execute: SkillState
20
+
21
+
22
+ class Config(SkillConfig):
23
+ """Configuration for LiFi skills."""
24
+
25
+ states: SkillStates
26
+ default_slippage: Optional[float] = 0.03
27
+ allowed_chains: Optional[List[str]] = None
28
+ max_execution_time: Optional[int] = 300
29
+
30
+
31
+ async def get_skills(
32
+ config: "Config",
33
+ is_private: bool,
34
+ store: SkillStoreABC,
35
+ **_,
36
+ ) -> list[LiFiBaseTool]:
37
+ """Get all LiFi skills."""
38
+ available_skills = []
39
+
40
+ # Log configuration
41
+ logger.info(f"[LiFi_Skills] Initializing with config: {config}")
42
+ logger.info(f"[LiFi_Skills] Is private session: {is_private}")
43
+
44
+ # Include skills based on their state
45
+ for skill_name, state in config["states"].items():
46
+ if state == "disabled":
47
+ logger.info(f"[LiFi_Skills] Skipping disabled skill: {skill_name}")
48
+ continue
49
+ elif state == "public" or (state == "private" and is_private):
50
+ available_skills.append(skill_name)
51
+ logger.info(f"[LiFi_Skills] Including skill: {skill_name} (state: {state})")
52
+ else:
53
+ logger.info(
54
+ f"[LiFi_Skills] Skipping private skill in public session: {skill_name}"
55
+ )
56
+
57
+ logger.info(f"[LiFi_Skills] Available skills: {available_skills}")
58
+
59
+ # Get each skill using the cached getter
60
+ skills = []
61
+ for name in available_skills:
62
+ try:
63
+ skill = get_lifi_skill(name, store, config)
64
+ skills.append(skill)
65
+ logger.info(f"[LiFi_Skills] Successfully loaded skill: {name}")
66
+ except Exception as e:
67
+ logger.error(f"[LiFi_Skills] Failed to load skill {name}: {str(e)}")
68
+ # Continue loading other skills even if one fails
69
+
70
+ logger.info(f"[LiFi_Skills] Total skills loaded: {len(skills)}")
71
+ return skills
72
+
73
+
74
+ def get_lifi_skill(
75
+ name: str,
76
+ store: SkillStoreABC,
77
+ config: Config,
78
+ ) -> LiFiBaseTool:
79
+ """Get a LiFi skill by name."""
80
+ # Create a cache key that includes configuration to ensure skills
81
+ # with different configurations are treated as separate instances
82
+ cache_key = f"{name}_{id(config)}"
83
+
84
+ # Extract configuration options with proper defaults
85
+ default_slippage = config.get("default_slippage", 0.03)
86
+ allowed_chains = config.get("allowed_chains", None)
87
+ max_execution_time = config.get("max_execution_time", 300)
88
+
89
+ # Validate configuration
90
+ if default_slippage < 0.001 or default_slippage > 0.5:
91
+ logger.warning(
92
+ f"[LiFi_Skills] Invalid default_slippage: {default_slippage}, using 0.03"
93
+ )
94
+ default_slippage = 0.03
95
+
96
+ if max_execution_time < 60 or max_execution_time > 1800:
97
+ logger.warning(
98
+ f"[LiFi_Skills] Invalid max_execution_time: {max_execution_time}, using 300"
99
+ )
100
+ max_execution_time = 300
101
+
102
+ if name == "token_quote":
103
+ if cache_key not in _cache:
104
+ logger.info(
105
+ f"[LiFi_Skills] Initializing token_quote skill with slippage: {default_slippage}"
106
+ )
107
+ if allowed_chains:
108
+ logger.info(f"[LiFi_Skills] Allowed chains: {allowed_chains}")
109
+
110
+ _cache[cache_key] = TokenQuote(
111
+ skill_store=store,
112
+ default_slippage=default_slippage,
113
+ allowed_chains=allowed_chains,
114
+ )
115
+ return _cache[cache_key]
116
+
117
+ elif name == "token_execute":
118
+ if cache_key not in _cache:
119
+ logger.info("[LiFi_Skills] Initializing token_execute skill")
120
+ logger.info(
121
+ f"[LiFi_Skills] Configuration - slippage: {default_slippage}, max_time: {max_execution_time}"
122
+ )
123
+ if allowed_chains:
124
+ logger.info(f"[LiFi_Skills] Allowed chains: {allowed_chains}")
125
+
126
+ # Log a warning about CDP wallet requirements
127
+ logger.warning(
128
+ "[LiFi_Skills] token_execute requires a properly configured CDP wallet with sufficient funds"
129
+ )
130
+
131
+ _cache[cache_key] = TokenExecute(
132
+ skill_store=store,
133
+ default_slippage=default_slippage,
134
+ allowed_chains=allowed_chains,
135
+ max_execution_time=max_execution_time,
136
+ )
137
+ return _cache[cache_key]
138
+
139
+ else:
140
+ logger.error(f"[LiFi_Skills] Unknown LiFi skill requested: {name}")
141
+ raise ValueError(f"Unknown LiFi skill: {name}")
@@ -0,0 +1,21 @@
1
+ from typing import Type
2
+
3
+ from pydantic import BaseModel, Field
4
+
5
+ from intentkit.abstracts.skill import SkillStoreABC
6
+ from intentkit.skills.base import IntentKitSkill
7
+
8
+
9
+ class LiFiBaseTool(IntentKitSkill):
10
+ """Base class for LiFi tools."""
11
+
12
+ name: str = Field(description="The name of the tool")
13
+ description: str = Field(description="A description of what the tool does")
14
+ args_schema: Type[BaseModel]
15
+ skill_store: SkillStoreABC = Field(
16
+ description="The skill store for persisting data"
17
+ )
18
+
19
+ @property
20
+ def category(self) -> str:
21
+ return "lifi"
Binary file
@@ -0,0 +1,89 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "title": "LiFi Token Transfer",
5
+ "description": "Cross-chain token transfer and swap capabilities using the LiFi protocol",
6
+ "x-icon": "https://ai.service.crestal.dev/skills/lifi/lifi.png",
7
+ "x-tags": [
8
+ "DeFi",
9
+ "Blockchain",
10
+ "Token Transfer",
11
+ "Cross-chain"
12
+ ],
13
+ "properties": {
14
+ "enabled": {
15
+ "type": "boolean",
16
+ "title": "Enabled",
17
+ "description": "Whether this skill is enabled",
18
+ "default": false
19
+ },
20
+ "states": {
21
+ "type": "object",
22
+ "properties": {
23
+ "token_quote": {
24
+ "type": "string",
25
+ "title": "Token Quote",
26
+ "enum": [
27
+ "disabled",
28
+ "public",
29
+ "private"
30
+ ],
31
+ "x-enum-title": [
32
+ "Disabled",
33
+ "Agent Owner + All Users",
34
+ "Agent Owner Only"
35
+ ],
36
+ "default": "public",
37
+ "description": "Get token transfer quotes without executing transactions"
38
+ },
39
+ "token_execute": {
40
+ "type": "string",
41
+ "title": "Token Execute",
42
+ "enum": [
43
+ "disabled",
44
+ "public",
45
+ "private"
46
+ ],
47
+ "x-enum-title": [
48
+ "Disabled",
49
+ "Agent Owner + All Users",
50
+ "Agent Owner Only"
51
+ ],
52
+ "default": "private",
53
+ "description": "Execute token transfers (requires CDP wallet and cdp skills enabled)"
54
+ }
55
+ },
56
+ "required": ["token_quote", "token_execute"],
57
+ "description": "States for each LiFi skill"
58
+ },
59
+ "default_slippage": {
60
+ "type": "number",
61
+ "title": "Default Slippage",
62
+ "description": "Default slippage tolerance for token transfers (e.g., 0.03 for 3%)",
63
+ "default": 0.03,
64
+ "minimum": 0.001,
65
+ "maximum": 0.5,
66
+ "x-step": 0.001
67
+ },
68
+ "allowed_chains": {
69
+ "type": "array",
70
+ "title": "Allowed Chains",
71
+ "description": "List of blockchain networks that can be used (if empty, all supported chains are allowed)",
72
+ "items": {
73
+ "type": "string",
74
+ "examples": ["ETH", "POL", "ARB", "OPT", "DAI"]
75
+ },
76
+ "uniqueItems": true
77
+ },
78
+ "max_execution_time": {
79
+ "type": "integer",
80
+ "title": "Maximum Execution Time",
81
+ "description": "Maximum time (in seconds) to wait for transaction confirmation for token_execute",
82
+ "default": 300,
83
+ "minimum": 60,
84
+ "maximum": 1800
85
+ }
86
+ },
87
+ "required": ["states", "enabled"],
88
+ "additionalProperties": true
89
+ }