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,99 @@
1
+ """Tool for fetching cryptocurrency prices via CryptoCompare API."""
2
+
3
+ import logging
4
+ from typing import List, Type
5
+
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.cryptocompare.base import CryptoCompareBaseTool, CryptoPrice
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ class CryptoCompareFetchPriceInput(BaseModel):
15
+ """Input for CryptoCompareFetchPrice tool."""
16
+
17
+ from_symbol: str = Field(
18
+ ...,
19
+ description="Base cryptocurrency symbol to get prices for (e.g., 'BTC', 'ETH')",
20
+ )
21
+ to_symbols: List[str] = Field(
22
+ ...,
23
+ description="List of target currencies (fiat or crypto) (e.g., ['USD', 'EUR', 'JPY'])",
24
+ )
25
+
26
+
27
+ class CryptoCompareFetchPrice(CryptoCompareBaseTool):
28
+ """Tool for fetching cryptocurrency prices from CryptoCompare.
29
+
30
+ This tool uses the CryptoCompare API to retrieve real-time cryptocurrency price data
31
+ with multi-currency support. Provide a base currency (e.g., 'BTC', 'ETH') and a list
32
+ of target currencies (e.g., ['USD', 'EUR', 'JPY']) to get current exchange rates.
33
+
34
+ Attributes:
35
+ name: The name of the tool.
36
+ description: A description of what the tool does.
37
+ args_schema: The schema for the tool's input arguments.
38
+ """
39
+
40
+ name: str = "cryptocompare_fetch_price"
41
+ description: str = (
42
+ "Fetch real-time cryptocurrency price data with multi-currency support"
43
+ )
44
+ args_schema: Type[BaseModel] = CryptoCompareFetchPriceInput
45
+
46
+ async def _arun(
47
+ self,
48
+ from_symbol: str,
49
+ to_symbols: List[str],
50
+ config: RunnableConfig,
51
+ **kwargs,
52
+ ) -> List[CryptoPrice]:
53
+ """Async implementation of the tool to fetch cryptocurrency prices.
54
+
55
+ Args:
56
+ from_symbol: Base cryptocurrency symbol to get prices for (e.g., 'BTC', 'ETH')
57
+ to_symbols: List of target currencies (fiat or crypto) (e.g., ['USD', 'EUR', 'JPY'])
58
+ config: The configuration for the runnable, containing agent context.
59
+
60
+ Returns:
61
+ List[CryptoPrice]: A list of cryptocurrency prices for each target currency.
62
+
63
+ Raises:
64
+ Exception: If there's an error accessing the CryptoCompare API.
65
+ """
66
+ try:
67
+ context = self.context_from_config(config)
68
+
69
+ # Check rate limit
70
+ await self.check_rate_limit(context.agent.id, max_requests=10, interval=60)
71
+
72
+ # Get API key from context
73
+ api_key = context.config.get("api_key")
74
+ if not api_key:
75
+ raise ValueError("CryptoCompare API key not found in configuration")
76
+
77
+ # Fetch price data directly
78
+ price_data = await self.fetch_price(api_key, from_symbol, to_symbols)
79
+
80
+ # Check for errors
81
+ if "error" in price_data:
82
+ raise ValueError(price_data["error"])
83
+
84
+ # Convert to list of CryptoPrice objects
85
+ result = []
86
+ for to_symbol, price in price_data.items():
87
+ result.append(
88
+ CryptoPrice(
89
+ from_symbol=from_symbol,
90
+ to_symbol=to_symbol,
91
+ price=price,
92
+ )
93
+ )
94
+
95
+ return result
96
+
97
+ except Exception as e:
98
+ logger.error("Error fetching price: %s", str(e))
99
+ raise type(e)(f"[agent:{context.agent.id}]: {e}") from e
@@ -0,0 +1,113 @@
1
+ """Tool for fetching top exchanges for a cryptocurrency pair via CryptoCompare API."""
2
+
3
+ import logging
4
+ from typing import List, Type
5
+
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.cryptocompare.base import CryptoCompareBaseTool, CryptoExchange
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ class CryptoCompareFetchTopExchangesInput(BaseModel):
15
+ """Input for CryptoCompareFetchTopExchanges tool."""
16
+
17
+ from_symbol: str = Field(
18
+ ..., description="Base cryptocurrency symbol for the trading pair (e.g., 'BTC')"
19
+ )
20
+ to_symbol: str = Field(
21
+ "USD",
22
+ description="Quote currency symbol for the trading pair. Defaults to 'USD'",
23
+ )
24
+ limit: int = Field(
25
+ 10,
26
+ description="Number of exchanges to fetch (max 100)",
27
+ ge=1,
28
+ le=100,
29
+ )
30
+
31
+
32
+ class CryptoCompareFetchTopExchanges(CryptoCompareBaseTool):
33
+ """Tool for fetching top exchanges for a cryptocurrency pair from CryptoCompare.
34
+
35
+ This tool uses the CryptoCompare API to retrieve the top exchanges
36
+ for a specific cryptocurrency trading pair, ranked by volume.
37
+
38
+ Attributes:
39
+ name: The name of the tool.
40
+ description: A description of what the tool does.
41
+ args_schema: The schema for the tool's input arguments.
42
+ """
43
+
44
+ name: str = "cryptocompare_fetch_top_exchanges"
45
+ description: str = (
46
+ "Fetch top exchanges for a cryptocurrency trading pair, ranked by volume"
47
+ )
48
+ args_schema: Type[BaseModel] = CryptoCompareFetchTopExchangesInput
49
+
50
+ async def _arun(
51
+ self,
52
+ from_symbol: str,
53
+ to_symbol: str = "USD",
54
+ limit: int = 10,
55
+ config: RunnableConfig = None,
56
+ **kwargs,
57
+ ) -> List[CryptoExchange]:
58
+ """Async implementation of the tool to fetch top exchanges for a cryptocurrency pair.
59
+
60
+ Args:
61
+ from_symbol: Base cryptocurrency symbol for the trading pair (e.g., 'BTC')
62
+ to_symbol: Quote currency symbol for the trading pair. Defaults to 'USD'
63
+ limit: Number of exchanges to fetch (max 100)
64
+ config: The configuration for the runnable, containing agent context.
65
+
66
+ Returns:
67
+ List[CryptoExchange]: A list of top exchanges for the specified trading pair.
68
+
69
+ Raises:
70
+ Exception: If there's an error accessing the CryptoCompare API.
71
+ """
72
+ try:
73
+ context = self.context_from_config(config)
74
+
75
+ # Check rate limit
76
+ await self.check_rate_limit(context.agent.id, max_requests=5, interval=60)
77
+
78
+ # Get API key from context
79
+ api_key = context.config.get("api_key")
80
+ if not api_key:
81
+ raise ValueError("CryptoCompare API key not found in configuration")
82
+
83
+ # Fetch top exchanges data directly
84
+ exchanges_data = await self.fetch_top_exchanges(
85
+ api_key, from_symbol, to_symbol
86
+ )
87
+
88
+ # Check for errors
89
+ if "error" in exchanges_data:
90
+ raise ValueError(exchanges_data["error"])
91
+
92
+ # Convert to list of CryptoExchange objects
93
+ result = []
94
+ if "Data" in exchanges_data and exchanges_data["Data"]:
95
+ for item in exchanges_data["Data"]:
96
+ if len(result) >= limit:
97
+ break
98
+
99
+ result.append(
100
+ CryptoExchange(
101
+ exchange=item.get("exchange", ""),
102
+ from_symbol=from_symbol,
103
+ to_symbol=to_symbol,
104
+ volume24h=item.get("volume24h", 0),
105
+ volume24h_to=item.get("volume24hTo", 0),
106
+ )
107
+ )
108
+
109
+ return result
110
+
111
+ except Exception as e:
112
+ logger.error("Error fetching top exchanges: %s", str(e))
113
+ raise type(e)(f"[agent:{context.agent.id}]: {e}") from e
@@ -0,0 +1,109 @@
1
+ """Tool for fetching top cryptocurrencies by market cap via CryptoCompare API."""
2
+
3
+ import logging
4
+ from typing import List, Type
5
+
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.cryptocompare.base import CryptoCompareBaseTool, CryptoCurrency
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ class CryptoCompareFetchTopMarketCapInput(BaseModel):
15
+ """Input for CryptoCompareFetchTopMarketCap tool."""
16
+
17
+ to_symbol: str = Field(
18
+ "USD",
19
+ description="Quote currency for market cap calculation (e.g., 'USD', 'EUR')",
20
+ )
21
+ limit: int = Field(
22
+ 10,
23
+ description="Number of cryptocurrencies to fetch (max 100)",
24
+ ge=1,
25
+ le=100,
26
+ )
27
+
28
+
29
+ class CryptoCompareFetchTopMarketCap(CryptoCompareBaseTool):
30
+ """Tool for fetching top cryptocurrencies by market cap from CryptoCompare.
31
+
32
+ This tool uses the CryptoCompare API to retrieve the top cryptocurrencies
33
+ ranked by market capitalization in a specified quote currency.
34
+
35
+ Attributes:
36
+ name: The name of the tool.
37
+ description: A description of what the tool does.
38
+ args_schema: The schema for the tool's input arguments.
39
+ """
40
+
41
+ name: str = "cryptocompare_fetch_top_market_cap"
42
+ description: str = "Fetch top cryptocurrencies ranked by market capitalization"
43
+ args_schema: Type[BaseModel] = CryptoCompareFetchTopMarketCapInput
44
+
45
+ async def _arun(
46
+ self,
47
+ to_symbol: str = "USD",
48
+ limit: int = 10,
49
+ config: RunnableConfig = None,
50
+ **kwargs,
51
+ ) -> List[CryptoCurrency]:
52
+ """Async implementation of the tool to fetch top cryptocurrencies by market cap.
53
+
54
+ Args:
55
+ to_symbol: Quote currency for market cap calculation (e.g., 'USD', 'EUR')
56
+ limit: Number of cryptocurrencies to fetch (max 100)
57
+ config: The configuration for the runnable, containing agent context.
58
+
59
+ Returns:
60
+ List[CryptoCurrency]: A list of top cryptocurrencies by market cap.
61
+
62
+ Raises:
63
+ Exception: If there's an error accessing the CryptoCompare API.
64
+ """
65
+ try:
66
+ context = self.context_from_config(config)
67
+
68
+ # Check rate limit
69
+ await self.check_rate_limit(context.agent.id, max_requests=5, interval=60)
70
+
71
+ # Get API key from context
72
+ api_key = context.config.get("api_key")
73
+ if not api_key:
74
+ raise ValueError("CryptoCompare API key not found in configuration")
75
+
76
+ # Fetch top market cap data directly
77
+ market_cap_data = await self.fetch_top_market_cap(api_key, limit, to_symbol)
78
+
79
+ # Check for errors
80
+ if "error" in market_cap_data:
81
+ raise ValueError(market_cap_data["error"])
82
+
83
+ # Convert to list of CryptoCurrency objects
84
+ result = []
85
+ if "Data" in market_cap_data and market_cap_data["Data"]:
86
+ for item in market_cap_data["Data"]:
87
+ coin_info = item.get("CoinInfo", {})
88
+ raw_data = item.get("RAW", {}).get(to_symbol, {})
89
+
90
+ result.append(
91
+ CryptoCurrency(
92
+ id=str(coin_info.get("Id", "")),
93
+ name=coin_info.get("Name", ""),
94
+ symbol=coin_info.get(
95
+ "Name", ""
96
+ ), # API uses same field for symbol
97
+ full_name=coin_info.get("FullName", ""),
98
+ market_cap=raw_data.get("MKTCAP", 0),
99
+ volume24h=raw_data.get("VOLUME24HOUR", 0),
100
+ price=raw_data.get("PRICE", 0),
101
+ change24h=raw_data.get("CHANGEPCT24HOUR", 0),
102
+ )
103
+ )
104
+
105
+ return result
106
+
107
+ except Exception as e:
108
+ logger.error("Error fetching top market cap: %s", str(e))
109
+ raise type(e)(f"[agent:{context.agent.id}]: {e}") from e
@@ -0,0 +1,108 @@
1
+ """Tool for fetching top cryptocurrencies by trading volume via CryptoCompare API."""
2
+
3
+ import logging
4
+ from typing import List, Type
5
+
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.cryptocompare.base import CryptoCompareBaseTool, CryptoCurrency
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ class CryptoCompareFetchTopVolumeInput(BaseModel):
15
+ """Input for CryptoCompareFetchTopVolume tool."""
16
+
17
+ to_symbol: str = Field(
18
+ "USD", description="Quote currency for volume calculation. Defaults to 'USD'"
19
+ )
20
+ limit: int = Field(
21
+ 10,
22
+ description="Number of cryptocurrencies to fetch (max 100)",
23
+ ge=1,
24
+ le=100,
25
+ )
26
+
27
+
28
+ class CryptoCompareFetchTopVolume(CryptoCompareBaseTool):
29
+ """Tool for fetching top cryptocurrencies by trading volume from CryptoCompare.
30
+
31
+ This tool uses the CryptoCompare API to retrieve the top cryptocurrencies
32
+ ranked by 24-hour trading volume in a specified quote currency.
33
+
34
+ Attributes:
35
+ name: The name of the tool.
36
+ description: A description of what the tool does.
37
+ args_schema: The schema for the tool's input arguments.
38
+ """
39
+
40
+ name: str = "cryptocompare_fetch_top_volume"
41
+ description: str = "Fetch top cryptocurrencies ranked by 24-hour trading volume"
42
+ args_schema: Type[BaseModel] = CryptoCompareFetchTopVolumeInput
43
+
44
+ async def _arun(
45
+ self,
46
+ to_symbol: str = "USD",
47
+ limit: int = 10,
48
+ config: RunnableConfig = None,
49
+ **kwargs,
50
+ ) -> List[CryptoCurrency]:
51
+ """Async implementation of the tool to fetch top cryptocurrencies by trading volume.
52
+
53
+ Args:
54
+ to_symbol: Quote currency for volume calculation. Defaults to 'USD'
55
+ limit: Number of cryptocurrencies to fetch (max 100)
56
+ config: The configuration for the runnable, containing agent context.
57
+
58
+ Returns:
59
+ List[CryptoCurrency]: A list of top cryptocurrencies by trading volume.
60
+
61
+ Raises:
62
+ Exception: If there's an error accessing the CryptoCompare API.
63
+ """
64
+ try:
65
+ context = self.context_from_config(config)
66
+
67
+ # Check rate limit
68
+ await self.check_rate_limit(context.agent.id, max_requests=5, interval=60)
69
+
70
+ # Get API key from context
71
+ api_key = context.config.get("api_key")
72
+ if not api_key:
73
+ raise ValueError("CryptoCompare API key not found in configuration")
74
+
75
+ # Fetch top volume data directly
76
+ volume_data = await self.fetch_top_volume(api_key, limit, to_symbol)
77
+
78
+ # Check for errors
79
+ if "error" in volume_data:
80
+ raise ValueError(volume_data["error"])
81
+
82
+ # Convert to list of CryptoCurrency objects
83
+ result = []
84
+ if "Data" in volume_data and volume_data["Data"]:
85
+ for item in volume_data["Data"]:
86
+ coin_info = item.get("CoinInfo", {})
87
+ raw_data = item.get("RAW", {}).get(to_symbol, {})
88
+
89
+ result.append(
90
+ CryptoCurrency(
91
+ id=str(coin_info.get("Id", "")),
92
+ name=coin_info.get("Name", ""),
93
+ symbol=coin_info.get(
94
+ "Name", ""
95
+ ), # API uses same field for symbol
96
+ full_name=coin_info.get("FullName", ""),
97
+ market_cap=raw_data.get("MKTCAP", 0),
98
+ volume24h=raw_data.get("VOLUME24HOUR", 0),
99
+ price=raw_data.get("PRICE", 0),
100
+ change24h=raw_data.get("CHANGEPCT24HOUR", 0),
101
+ )
102
+ )
103
+
104
+ return result
105
+
106
+ except Exception as e:
107
+ logger.error("Error fetching top volume: %s", str(e))
108
+ raise type(e)(f"[agent:{context.agent.id}]: {e}") from e
@@ -0,0 +1,107 @@
1
+ """Tool for fetching cryptocurrency trading signals via CryptoCompare API."""
2
+
3
+ import logging
4
+ from typing import Dict, List, Type
5
+
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.cryptocompare.base import CryptoCompareBaseTool
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ class CryptoCompareFetchTradingSignalsInput(BaseModel):
15
+ """Input for CryptoCompareFetchTradingSignals tool."""
16
+
17
+ from_symbol: str = Field(
18
+ ...,
19
+ description="Cryptocurrency symbol to fetch trading signals for (e.g., 'BTC')",
20
+ )
21
+
22
+
23
+ class TradingSignal(BaseModel):
24
+ """Model representing a cryptocurrency trading signal."""
25
+
26
+ symbol: str
27
+ indicator: str
28
+ value: float
29
+ signal: str
30
+ description: str
31
+
32
+
33
+ class CryptoCompareFetchTradingSignals(CryptoCompareBaseTool):
34
+ """Tool for fetching cryptocurrency trading signals from CryptoCompare.
35
+
36
+ This tool uses the CryptoCompare API to retrieve the latest trading signals
37
+ for a specific cryptocurrency. These signals can help inform trading decisions.
38
+
39
+ Attributes:
40
+ name: The name of the tool.
41
+ description: A description of what the tool does.
42
+ args_schema: The schema for the tool's input arguments.
43
+ """
44
+
45
+ name: str = "cryptocompare_fetch_trading_signals"
46
+ description: str = "Fetch the latest trading signals for a specific cryptocurrency"
47
+ args_schema: Type[BaseModel] = CryptoCompareFetchTradingSignalsInput
48
+
49
+ async def _arun(
50
+ self,
51
+ from_symbol: str,
52
+ config: RunnableConfig,
53
+ **kwargs,
54
+ ) -> List[TradingSignal]:
55
+ """Async implementation of the tool to fetch cryptocurrency trading signals.
56
+
57
+ Args:
58
+ from_symbol: Cryptocurrency symbol to fetch trading signals for (e.g., 'BTC')
59
+ config: The configuration for the runnable, containing agent context.
60
+
61
+ Returns:
62
+ List[TradingSignal]: A list of trading signals for the specified cryptocurrency.
63
+
64
+ Raises:
65
+ Exception: If there's an error accessing the CryptoCompare API.
66
+ """
67
+ try:
68
+ context = self.context_from_config(config)
69
+
70
+ # Check rate limit
71
+ await self.check_rate_limit(context.agent.id, max_requests=5, interval=60)
72
+
73
+ # Get API key from context
74
+ api_key = context.config.get("api_key")
75
+ if not api_key:
76
+ raise ValueError("CryptoCompare API key not found in configuration")
77
+
78
+ # Fetch trading signals data directly
79
+ signals_data = await self.fetch_trading_signals(api_key, from_symbol)
80
+
81
+ # Check for errors
82
+ if "error" in signals_data:
83
+ raise ValueError(signals_data["error"])
84
+
85
+ # Convert to list of TradingSignal objects
86
+ result = []
87
+ if "Data" in signals_data and signals_data["Data"]:
88
+ for indicator_name, indicator_data in signals_data["Data"].items():
89
+ if (
90
+ isinstance(indicator_data, Dict)
91
+ and "sentiment" in indicator_data
92
+ ):
93
+ result.append(
94
+ TradingSignal(
95
+ symbol=from_symbol,
96
+ indicator=indicator_name,
97
+ value=indicator_data.get("score", 0.0),
98
+ signal=indicator_data.get("sentiment", ""),
99
+ description=indicator_data.get("description", ""),
100
+ )
101
+ )
102
+
103
+ return result
104
+
105
+ except Exception as e:
106
+ logger.error("Error fetching trading signals: %s", str(e))
107
+ raise type(e)(f"[agent:{context.agent.id}]: {e}") from e