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,118 @@
1
+ from typing import Type
2
+
3
+ import httpx
4
+ from langchain.tools.base import ToolException
5
+ from langchain_core.runnables import RunnableConfig
6
+ from pydantic import BaseModel, Field
7
+
8
+ from .base import ElfaBaseTool, base_url
9
+
10
+
11
+ class ElfaGetSmartStatsInput(BaseModel):
12
+ username: str = Field(description="username to get stats for")
13
+
14
+
15
+ class SmartStatsData(BaseModel):
16
+ followerEngagementRatio: float | None = Field(
17
+ description="the ratio of engagement by followers"
18
+ )
19
+ averageEngagement: float | None = Field(
20
+ description="the average engagement of acount"
21
+ )
22
+ smartFollowingCount: float | None = Field(
23
+ description="the count of smart followings"
24
+ )
25
+
26
+
27
+ class ElfaGetSmartStatsOutput(BaseModel):
28
+ success: bool
29
+ data: SmartStatsData | None = Field(None, description="The stats data")
30
+
31
+
32
+ class ElfaGetSmartStats(ElfaBaseTool):
33
+ """
34
+ This tool uses the Elfa API to retrieve key social media metrics for a given username. These metrics include:
35
+
36
+ * **Smart Following Count:** A metric representing the number of high-quality or influential followers.
37
+ * **Engagement Score:** A composite score reflecting the level of interaction with the user's content.
38
+ * **Engagement Ratio:** The ratio of engagement (likes, comments, shares) to the number of followers.
39
+
40
+ This tool is useful for:
41
+
42
+ * **Competitor Analysis:** Compare your social media performance to that of your competitors.
43
+ * **Influencer Identification:** Identify influential users in your niche.
44
+ * **Social Media Audits:** Assess the overall health and effectiveness of a social media presence.
45
+
46
+ To use this tool, simply provide the desired username. The tool will return the requested metrics.
47
+
48
+ Attributes:
49
+ name (str): Name of the tool, specifically "elfa_get_smart_stats".
50
+ description (str): Comprehensive description of the tool's purpose and functionality.
51
+ args_schema (Type[BaseModel]): Schema for input arguments, specifying expected parameters.
52
+ """
53
+
54
+ name: str = "elfa_get_smart_stats"
55
+ description: str = """This tool uses the Elfa API to retrieve key social media metrics for a given username. These metrics include:
56
+
57
+ * **Smart Following Count:** A metric representing the number of high-quality or influential followers.
58
+ * **Engagement Score:** A composite score reflecting the level of interaction with the user's content.
59
+ * **Engagement Ratio:** The ratio of engagement (likes, comments, shares) to the number of followers.
60
+
61
+ This tool is useful for:
62
+
63
+ * **Competitor Analysis:** Compare your social media performance to that of your competitors.
64
+ * **Influencer Identification:** Identify influential users in your niche.
65
+ * **Social Media Audits:** Assess the overall health and effectiveness of a social media presence.
66
+ """
67
+ args_schema: Type[BaseModel] = ElfaGetSmartStatsInput
68
+
69
+ async def _arun(
70
+ self, username: str, config: RunnableConfig, **kwargs
71
+ ) -> ElfaGetSmartStatsOutput:
72
+ """Run the tool retrieve smart stats (smart following count) and social metrics (engagement score and ratio) for a given username.
73
+
74
+ Args:
75
+ username (str): The username to check stats for.
76
+ config: The configuration for the runnable, containing agent context.
77
+ **kwargs: Additional parameters.
78
+
79
+ Returns:
80
+ ElfaGetSmartStatsOutput: A structured output containing output of Elfa get mentions API.
81
+
82
+ Raises:
83
+ Exception: If there's an error accessing the Elfa API.
84
+ """
85
+ context = self.context_from_config(config)
86
+ api_key = self.get_api_key(context)
87
+ if not api_key:
88
+ raise ValueError("Elfa API key not found")
89
+
90
+ url = f"{base_url}/v1/account/smart-stats"
91
+ headers = {
92
+ "accept": "application/json",
93
+ "x-elfa-api-key": api_key,
94
+ }
95
+
96
+ params = ElfaGetSmartStatsInput(username=username).model_dump(exclude_none=True)
97
+
98
+ async with httpx.AsyncClient() as client:
99
+ try:
100
+ response = await client.get(
101
+ url, headers=headers, timeout=30, params=params
102
+ )
103
+ response.raise_for_status()
104
+ json_dict = response.json()
105
+
106
+ res = ElfaGetSmartStatsOutput(**json_dict)
107
+
108
+ return res
109
+ except httpx.RequestError as req_err:
110
+ raise ToolException(
111
+ f"request error from Elfa API: {req_err}"
112
+ ) from req_err
113
+ except httpx.HTTPStatusError as http_err:
114
+ raise ToolException(
115
+ f"http error from Elfa API: {http_err}"
116
+ ) from http_err
117
+ except Exception as e:
118
+ raise ToolException(f"error from Elfa API: {e}") from e
@@ -0,0 +1,126 @@
1
+ from typing import Type
2
+
3
+ import httpx
4
+ from langchain.tools.base import ToolException
5
+ from langchain_core.runnables import RunnableConfig
6
+ from pydantic import BaseModel, Field
7
+
8
+ from .base import ElfaBaseTool, base_url
9
+
10
+
11
+ class ElfaGetTrendingTokensInput(BaseModel):
12
+ timeWindow: str | None = Field(
13
+ "24h", description="Time window for trending analysis"
14
+ )
15
+ minMentions: int | None = Field(
16
+ 5, description="Minimum number of mentions required"
17
+ )
18
+
19
+
20
+ class Trends(BaseModel):
21
+ change_percent: int | None = Field(description="change percentage of token trend")
22
+ previous_count: int | None = Field(description="previous count")
23
+ current_count: int | None = Field(description="current count")
24
+ token: str | None = Field(description="token")
25
+
26
+
27
+ class TrendsData(BaseModel):
28
+ data: list[Trends] | None = Field(None, description="trending tokens")
29
+
30
+
31
+ class ElfaGetTrendingTokensOutput(BaseModel):
32
+ success: bool
33
+ data: TrendsData | None = Field(None, description="The result")
34
+
35
+
36
+ class ElfaGetTrendingTokens(ElfaBaseTool):
37
+ """
38
+ This tool ranks the most discussed tokens based on smart mentions count for a given period, with updates every 5 minutes via the Elfa API. Smart mentions provide a more sophisticated measure of discussion volume than simple keyword counts.
39
+
40
+ **Use Cases:**
41
+
42
+ * Identify trending tokens: Quickly see which tokens are gaining traction in online discussions.
43
+ * Gauge market sentiment: Track changes in smart mention counts to understand shifts in market opinion.
44
+ * Research potential investments: Use the ranking as a starting point for further due diligence.
45
+
46
+ **Example Usage:**
47
+
48
+ To use this tool, you would typically specify a time window (e.g., the last hour, the last 24 hours). The tool will then return a ranked list of tokens, along with their corresponding smart mention counts.
49
+
50
+ Attributes:
51
+ name (str): Name of the tool, specifically "elfa_get_trending_tokens".
52
+ description (str): Comprehensive description of the tool's purpose and functionality.
53
+ args_schema (Type[BaseModel]): Schema for input arguments, specifying expected parameters.
54
+ """
55
+
56
+ name: str = "elfa_get_trending_tokens"
57
+ description: str = """This tool ranks the most discussed tokens based on smart mentions count for a given period, with updates every 5 minutes via the Elfa API. Smart mentions provide a more sophisticated measure of discussion volume than simple keyword counts.
58
+
59
+ **Use Cases:**
60
+
61
+ * Identify trending tokens: Quickly see which tokens are gaining traction in online discussions.
62
+ * Gauge market sentiment: Track changes in smart mention counts to understand shifts in market opinion.
63
+ * Research potential investments: Use the ranking as a starting point for further due diligence.
64
+
65
+ **Example Usage:**
66
+
67
+ To use this tool, you would typically specify a time window (e.g., the last hour, the last 24 hours). The tool will then return a ranked list of tokens, along with their corresponding smart mention counts."""
68
+ args_schema: Type[BaseModel] = ElfaGetTrendingTokensInput
69
+
70
+ async def _arun(
71
+ self,
72
+ timeWindow: str = "24h",
73
+ minMentions: int = 5,
74
+ config: RunnableConfig = None,
75
+ **kwargs,
76
+ ) -> ElfaGetTrendingTokensOutput:
77
+ """Run the tool to ranks the most discussed tokens by smart mentions count for a given period, updated every 5 minutes via the Elfa API.
78
+
79
+ Args:
80
+ timeWindow: Time window for trending tokens (e.g., '1h', '24h', '7d').
81
+ minMentions: Minimum number of mentions for a token.
82
+ config: The configuration for the runnable, containing agent context.
83
+ **kwargs: Additional parameters.
84
+
85
+ Returns:
86
+ ElfaGetMentionsOutput: A structured output containing output of Elfa get mentions API.
87
+
88
+ Raises:
89
+ Exception: If there's an error accessing the Elfa API.
90
+ """
91
+ context = self.context_from_config(config)
92
+ api_key = self.get_api_key(context)
93
+ if not api_key:
94
+ raise ValueError("Elfa API key not found")
95
+
96
+ url = f"{base_url}/v1/trending-tokens"
97
+ headers = {
98
+ "accept": "application/json",
99
+ "x-elfa-api-key": api_key,
100
+ }
101
+
102
+ params = ElfaGetTrendingTokensInput(
103
+ timeWindow=timeWindow, page=1, pageSize=50, minMentions=minMentions
104
+ ).model_dump(exclude_none=True)
105
+
106
+ async with httpx.AsyncClient() as client:
107
+ try:
108
+ response = await client.get(
109
+ url, headers=headers, timeout=30, params=params
110
+ )
111
+ response.raise_for_status()
112
+ json_dict = response.json()
113
+
114
+ res = ElfaGetTrendingTokensOutput(**json_dict)
115
+
116
+ return res
117
+ except httpx.RequestError as req_err:
118
+ raise ToolException(
119
+ f"request error from Elfa API: {req_err}"
120
+ ) from req_err
121
+ except httpx.HTTPStatusError as http_err:
122
+ raise ToolException(
123
+ f"http error from Elfa API: {http_err}"
124
+ ) from http_err
125
+ except Exception as e:
126
+ raise ToolException(f"error from Elfa API: {e}") from e
@@ -0,0 +1,75 @@
1
+ # Enso Finance Skills
2
+
3
+ Integration with Enso Finance API for DeFi protocols, portfolio management, and yield optimization.
4
+
5
+ ## Skills
6
+
7
+ | Skill | Description |
8
+ |-------|-------------|
9
+ | `enso_get_networks` | List supported networks |
10
+ | `enso_get_tokens` | Get token info (APY, symbol, address) |
11
+ | `enso_get_prices` | Get token prices |
12
+ | `enso_get_wallet_balances` | Get wallet token balances |
13
+ | `enso_get_wallet_approvals` | Get token spend approvals |
14
+ | `enso_wallet_approve` | Broadcast approval transactions |
15
+ | `enso_route_shortcut` | Broadcast route transactions |
16
+ | `enso_get_best_yield` | Find best yield options across protocols |
17
+
18
+ ## Configuration
19
+
20
+ ```yaml
21
+ # Agent configuration example
22
+ skills:
23
+ enso:
24
+ enabled: true
25
+ api_token: "${ENSO_API_TOKEN}" # Optional if set at system level
26
+ main_tokens: ["USDC", "ETH", "USDT"]
27
+ states:
28
+ get_networks: public
29
+ get_tokens: public
30
+ get_prices: public
31
+ get_best_yield: public
32
+ # Sensitive operations should be private or disabled
33
+ get_wallet_approvals: private
34
+ get_wallet_balances: private
35
+ wallet_approve: private
36
+ route_shortcut: disabled
37
+ ```
38
+
39
+ ## Get Best Yield Skill
40
+
41
+ Finds highest yield options for a token across protocols. Default: USDC on Base network.
42
+
43
+ ### Parameters
44
+
45
+ - `token_symbol`: Token symbol (default: "USDC")
46
+ - `chain_id`: Blockchain network ID (default: 8453 for Base)
47
+ - `top_n`: Number of options to return (default: 5)
48
+
49
+ ### Example
50
+
51
+ ```
52
+ # Query: What are the best USDC yield options on Base?
53
+
54
+ # Response format:
55
+ {
56
+ "best_options": [
57
+ {
58
+ "protocol_name": "Protocol Name",
59
+ "token_name": "Token Name",
60
+ "apy": 12.5,
61
+ "tvl": 5000000,
62
+ "underlying_tokens": ["USDC"]
63
+ },
64
+ // Additional results...
65
+ ],
66
+ "token_symbol": "USDC",
67
+ "chain_name": "Base"
68
+ }
69
+ ```
70
+
71
+ The skill fetches protocols, retrieves token data, filters for the target token, and sorts by APY.
72
+
73
+ ## Authentication
74
+
75
+ Requires an Enso API token in agent config or system config.
@@ -0,0 +1,114 @@
1
+ """Enso skills."""
2
+
3
+ import logging
4
+ from typing import List, NotRequired, TypedDict
5
+
6
+ from intentkit.abstracts.skill import SkillStoreABC
7
+ from intentkit.skills.base import SkillConfig, SkillState
8
+ from intentkit.skills.enso.base import EnsoBaseTool
9
+ from intentkit.skills.enso.best_yield import EnsoGetBestYield
10
+ from intentkit.skills.enso.networks import EnsoGetNetworks
11
+ from intentkit.skills.enso.prices import EnsoGetPrices
12
+ from intentkit.skills.enso.route import EnsoRouteShortcut
13
+ from intentkit.skills.enso.tokens import EnsoGetTokens
14
+ from intentkit.skills.enso.wallet import (
15
+ EnsoGetWalletApprovals,
16
+ EnsoGetWalletBalances,
17
+ EnsoWalletApprove,
18
+ )
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ class SkillStates(TypedDict):
24
+ get_networks: SkillState
25
+ get_tokens: SkillState
26
+ get_prices: SkillState
27
+ get_wallet_approvals: SkillState
28
+ get_wallet_balances: SkillState
29
+ wallet_approve: SkillState
30
+ route_shortcut: SkillState
31
+ get_best_yield: SkillState
32
+
33
+
34
+ class Config(SkillConfig):
35
+ """Configuration for Enso skills."""
36
+
37
+ states: SkillStates
38
+ api_token: NotRequired[str]
39
+ main_tokens: List[str]
40
+
41
+
42
+ async def get_skills(
43
+ config: Config,
44
+ is_private: bool,
45
+ store: SkillStoreABC,
46
+ **_,
47
+ ) -> list[EnsoBaseTool]:
48
+ """Get all Enso skills."""
49
+ available_skills = []
50
+
51
+ # Include skills based on their state
52
+ for skill_name, state in config["states"].items():
53
+ if state == "disabled":
54
+ continue
55
+ elif state == "public" or (state == "private" and is_private):
56
+ available_skills.append(skill_name)
57
+
58
+ # Get each skill using the cached getter
59
+ result = []
60
+ for name in available_skills:
61
+ skill = get_enso_skill(name, store)
62
+ if skill:
63
+ result.append(skill)
64
+ return result
65
+
66
+
67
+ def get_enso_skill(
68
+ name: str,
69
+ skill_store: SkillStoreABC,
70
+ ) -> EnsoBaseTool:
71
+ """Get an Enso skill by name.
72
+
73
+ Args:
74
+ name: The name of the skill to get
75
+ skill_store: The skill store for persisting data
76
+
77
+ Returns:
78
+ The requested Enso skill
79
+ """
80
+ if name == "get_networks":
81
+ return EnsoGetNetworks(
82
+ skill_store=skill_store,
83
+ )
84
+ if name == "get_tokens":
85
+ return EnsoGetTokens(
86
+ skill_store=skill_store,
87
+ )
88
+ if name == "get_prices":
89
+ return EnsoGetPrices(
90
+ skill_store=skill_store,
91
+ )
92
+ if name == "get_wallet_approvals":
93
+ return EnsoGetWalletApprovals(
94
+ skill_store=skill_store,
95
+ )
96
+ if name == "get_wallet_balances":
97
+ return EnsoGetWalletBalances(
98
+ skill_store=skill_store,
99
+ )
100
+ if name == "wallet_approve":
101
+ return EnsoWalletApprove(
102
+ skill_store=skill_store,
103
+ )
104
+ if name == "route_shortcut":
105
+ return EnsoRouteShortcut(
106
+ skill_store=skill_store,
107
+ )
108
+ if name == "get_best_yield":
109
+ return EnsoGetBestYield(
110
+ skill_store=skill_store,
111
+ )
112
+ else:
113
+ logger.warning(f"Unknown Enso skill: {name}")
114
+ return None
File without changes