intentkit 0.7.5.dev3__py3-none-any.whl → 0.8.34.dev7__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.
Files changed (393) hide show
  1. intentkit/MANIFEST.in +14 -0
  2. intentkit/README.md +88 -0
  3. intentkit/__init__.py +6 -4
  4. intentkit/abstracts/agent.py +4 -5
  5. intentkit/abstracts/engine.py +5 -5
  6. intentkit/abstracts/graph.py +15 -8
  7. intentkit/abstracts/skill.py +6 -144
  8. intentkit/abstracts/twitter.py +4 -5
  9. intentkit/clients/__init__.py +9 -2
  10. intentkit/clients/cdp.py +129 -153
  11. intentkit/{utils → clients}/s3.py +109 -34
  12. intentkit/clients/twitter.py +83 -62
  13. intentkit/clients/web3.py +4 -7
  14. intentkit/config/config.py +123 -90
  15. intentkit/core/account_checking.py +802 -0
  16. intentkit/core/agent.py +313 -498
  17. intentkit/core/asset.py +267 -0
  18. intentkit/core/chat.py +5 -3
  19. intentkit/core/client.py +1 -1
  20. intentkit/core/credit.py +49 -41
  21. intentkit/core/draft.py +201 -0
  22. intentkit/core/draft_chat.py +118 -0
  23. intentkit/core/engine.py +378 -287
  24. intentkit/core/manager/__init__.py +25 -0
  25. intentkit/core/manager/engine.py +220 -0
  26. intentkit/core/manager/service.py +172 -0
  27. intentkit/core/manager/skills.py +178 -0
  28. intentkit/core/middleware.py +231 -0
  29. intentkit/core/prompt.py +74 -114
  30. intentkit/core/scheduler.py +143 -0
  31. intentkit/core/statistics.py +168 -0
  32. intentkit/models/agent.py +931 -518
  33. intentkit/models/agent_data.py +165 -106
  34. intentkit/models/agent_schema.json +38 -251
  35. intentkit/models/app_setting.py +15 -13
  36. intentkit/models/chat.py +86 -140
  37. intentkit/models/credit.py +182 -162
  38. intentkit/models/db.py +42 -23
  39. intentkit/models/db_mig.py +120 -3
  40. intentkit/models/draft.py +222 -0
  41. intentkit/models/llm.csv +31 -0
  42. intentkit/models/llm.py +262 -370
  43. intentkit/models/redis.py +6 -4
  44. intentkit/models/skill.py +222 -101
  45. intentkit/models/skills.csv +173 -0
  46. intentkit/models/team.py +189 -0
  47. intentkit/models/user.py +103 -31
  48. intentkit/skills/acolyt/__init__.py +2 -9
  49. intentkit/skills/acolyt/ask.py +3 -4
  50. intentkit/skills/acolyt/base.py +4 -9
  51. intentkit/skills/acolyt/schema.json +4 -3
  52. intentkit/skills/aixbt/__init__.py +2 -13
  53. intentkit/skills/aixbt/base.py +1 -7
  54. intentkit/skills/aixbt/projects.py +14 -15
  55. intentkit/skills/aixbt/schema.json +4 -4
  56. intentkit/skills/allora/__init__.py +2 -9
  57. intentkit/skills/allora/base.py +4 -9
  58. intentkit/skills/allora/price.py +3 -4
  59. intentkit/skills/allora/schema.json +3 -2
  60. intentkit/skills/base.py +241 -41
  61. intentkit/skills/basename/__init__.py +51 -0
  62. intentkit/skills/basename/base.py +11 -0
  63. intentkit/skills/basename/basename.svg +11 -0
  64. intentkit/skills/basename/schema.json +58 -0
  65. intentkit/skills/carv/__init__.py +115 -121
  66. intentkit/skills/carv/base.py +184 -185
  67. intentkit/skills/carv/fetch_news.py +3 -3
  68. intentkit/skills/carv/onchain_query.py +4 -4
  69. intentkit/skills/carv/schema.json +134 -137
  70. intentkit/skills/carv/token_info_and_price.py +6 -6
  71. intentkit/skills/casino/__init__.py +4 -15
  72. intentkit/skills/casino/base.py +1 -7
  73. intentkit/skills/casino/deck_draw.py +5 -8
  74. intentkit/skills/casino/deck_shuffle.py +6 -6
  75. intentkit/skills/casino/dice_roll.py +2 -4
  76. intentkit/skills/casino/schema.json +0 -1
  77. intentkit/skills/cdp/__init__.py +22 -84
  78. intentkit/skills/cdp/base.py +1 -7
  79. intentkit/skills/cdp/schema.json +11 -314
  80. intentkit/skills/chainlist/__init__.py +2 -7
  81. intentkit/skills/chainlist/base.py +1 -7
  82. intentkit/skills/chainlist/chain_lookup.py +18 -18
  83. intentkit/skills/chainlist/schema.json +3 -5
  84. intentkit/skills/common/__init__.py +2 -9
  85. intentkit/skills/common/base.py +1 -7
  86. intentkit/skills/common/current_time.py +1 -2
  87. intentkit/skills/common/schema.json +2 -2
  88. intentkit/skills/cookiefun/__init__.py +6 -9
  89. intentkit/skills/cookiefun/base.py +2 -7
  90. intentkit/skills/cookiefun/get_account_details.py +7 -7
  91. intentkit/skills/cookiefun/get_account_feed.py +19 -19
  92. intentkit/skills/cookiefun/get_account_smart_followers.py +7 -7
  93. intentkit/skills/cookiefun/get_sectors.py +3 -3
  94. intentkit/skills/cookiefun/schema.json +1 -3
  95. intentkit/skills/cookiefun/search_accounts.py +9 -9
  96. intentkit/skills/cryptocompare/__init__.py +7 -24
  97. intentkit/skills/cryptocompare/api.py +2 -3
  98. intentkit/skills/cryptocompare/base.py +10 -24
  99. intentkit/skills/cryptocompare/fetch_news.py +4 -5
  100. intentkit/skills/cryptocompare/fetch_price.py +6 -7
  101. intentkit/skills/cryptocompare/fetch_top_exchanges.py +4 -5
  102. intentkit/skills/cryptocompare/fetch_top_market_cap.py +4 -5
  103. intentkit/skills/cryptocompare/fetch_top_volume.py +4 -5
  104. intentkit/skills/cryptocompare/fetch_trading_signals.py +5 -6
  105. intentkit/skills/cryptocompare/schema.json +3 -3
  106. intentkit/skills/cryptopanic/__init__.py +7 -10
  107. intentkit/skills/cryptopanic/base.py +51 -55
  108. intentkit/skills/cryptopanic/fetch_crypto_news.py +4 -8
  109. intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +5 -7
  110. intentkit/skills/cryptopanic/schema.json +105 -103
  111. intentkit/skills/dapplooker/__init__.py +2 -9
  112. intentkit/skills/dapplooker/base.py +4 -9
  113. intentkit/skills/dapplooker/dapplooker_token_data.py +7 -7
  114. intentkit/skills/dapplooker/schema.json +3 -5
  115. intentkit/skills/defillama/__init__.py +24 -74
  116. intentkit/skills/defillama/api.py +6 -9
  117. intentkit/skills/defillama/base.py +8 -19
  118. intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +8 -10
  119. intentkit/skills/defillama/coins/fetch_block.py +6 -8
  120. intentkit/skills/defillama/coins/fetch_current_prices.py +8 -10
  121. intentkit/skills/defillama/coins/fetch_first_price.py +7 -9
  122. intentkit/skills/defillama/coins/fetch_historical_prices.py +9 -11
  123. intentkit/skills/defillama/coins/fetch_price_chart.py +9 -11
  124. intentkit/skills/defillama/coins/fetch_price_percentage.py +7 -9
  125. intentkit/skills/defillama/config/chains.py +1 -3
  126. intentkit/skills/defillama/fees/fetch_fees_overview.py +24 -26
  127. intentkit/skills/defillama/schema.json +5 -1
  128. intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +16 -18
  129. intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +8 -10
  130. intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +5 -7
  131. intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +7 -9
  132. intentkit/skills/defillama/tests/api_integration.test.py +1 -1
  133. intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +4 -6
  134. intentkit/skills/defillama/tvl/fetch_chains.py +9 -11
  135. intentkit/skills/defillama/tvl/fetch_historical_tvl.py +4 -6
  136. intentkit/skills/defillama/tvl/fetch_protocol.py +32 -38
  137. intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +3 -5
  138. intentkit/skills/defillama/tvl/fetch_protocols.py +37 -45
  139. intentkit/skills/defillama/volumes/fetch_dex_overview.py +42 -48
  140. intentkit/skills/defillama/volumes/fetch_dex_summary.py +35 -37
  141. intentkit/skills/defillama/volumes/fetch_options_overview.py +24 -28
  142. intentkit/skills/defillama/yields/fetch_pool_chart.py +10 -12
  143. intentkit/skills/defillama/yields/fetch_pools.py +26 -30
  144. intentkit/skills/dexscreener/__init__.py +97 -102
  145. intentkit/skills/dexscreener/base.py +125 -130
  146. intentkit/skills/dexscreener/get_pair_info.py +4 -5
  147. intentkit/skills/dexscreener/get_token_pairs.py +4 -5
  148. intentkit/skills/dexscreener/get_tokens_info.py +7 -8
  149. intentkit/skills/dexscreener/model/search_token_response.py +80 -82
  150. intentkit/skills/dexscreener/schema.json +91 -93
  151. intentkit/skills/dexscreener/search_token.py +182 -184
  152. intentkit/skills/dexscreener/utils.py +15 -14
  153. intentkit/skills/dune_analytics/__init__.py +7 -9
  154. intentkit/skills/dune_analytics/base.py +48 -52
  155. intentkit/skills/dune_analytics/fetch_kol_buys.py +5 -7
  156. intentkit/skills/dune_analytics/fetch_nation_metrics.py +6 -8
  157. intentkit/skills/dune_analytics/schema.json +104 -99
  158. intentkit/skills/elfa/__init__.py +5 -18
  159. intentkit/skills/elfa/base.py +10 -14
  160. intentkit/skills/elfa/mention.py +19 -21
  161. intentkit/skills/elfa/schema.json +3 -2
  162. intentkit/skills/elfa/stats.py +4 -4
  163. intentkit/skills/elfa/tokens.py +12 -12
  164. intentkit/skills/elfa/utils.py +26 -28
  165. intentkit/skills/enso/__init__.py +11 -31
  166. intentkit/skills/enso/base.py +54 -35
  167. intentkit/skills/enso/best_yield.py +16 -24
  168. intentkit/skills/enso/networks.py +6 -11
  169. intentkit/skills/enso/prices.py +11 -13
  170. intentkit/skills/enso/route.py +34 -38
  171. intentkit/skills/enso/schema.json +3 -2
  172. intentkit/skills/enso/tokens.py +29 -38
  173. intentkit/skills/enso/wallet.py +76 -191
  174. intentkit/skills/erc20/__init__.py +50 -0
  175. intentkit/skills/erc20/base.py +11 -0
  176. intentkit/skills/erc20/erc20.svg +5 -0
  177. intentkit/skills/erc20/schema.json +74 -0
  178. intentkit/skills/erc721/__init__.py +53 -0
  179. intentkit/skills/erc721/base.py +11 -0
  180. intentkit/skills/erc721/erc721.svg +5 -0
  181. intentkit/skills/erc721/schema.json +90 -0
  182. intentkit/skills/firecrawl/__init__.py +5 -18
  183. intentkit/skills/firecrawl/base.py +4 -9
  184. intentkit/skills/firecrawl/clear.py +4 -8
  185. intentkit/skills/firecrawl/crawl.py +19 -19
  186. intentkit/skills/firecrawl/query.py +4 -3
  187. intentkit/skills/firecrawl/schema.json +2 -6
  188. intentkit/skills/firecrawl/scrape.py +17 -22
  189. intentkit/skills/firecrawl/utils.py +50 -42
  190. intentkit/skills/github/__init__.py +2 -7
  191. intentkit/skills/github/base.py +1 -7
  192. intentkit/skills/github/github_search.py +1 -2
  193. intentkit/skills/github/schema.json +3 -4
  194. intentkit/skills/heurist/__init__.py +8 -27
  195. intentkit/skills/heurist/base.py +4 -9
  196. intentkit/skills/heurist/image_generation_animagine_xl.py +13 -15
  197. intentkit/skills/heurist/image_generation_arthemy_comics.py +13 -15
  198. intentkit/skills/heurist/image_generation_arthemy_real.py +13 -15
  199. intentkit/skills/heurist/image_generation_braindance.py +13 -15
  200. intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +13 -15
  201. intentkit/skills/heurist/image_generation_flux_1_dev.py +13 -15
  202. intentkit/skills/heurist/image_generation_sdxl.py +13 -15
  203. intentkit/skills/heurist/schema.json +2 -2
  204. intentkit/skills/http/__init__.py +4 -15
  205. intentkit/skills/http/base.py +1 -7
  206. intentkit/skills/http/get.py +21 -16
  207. intentkit/skills/http/post.py +23 -18
  208. intentkit/skills/http/put.py +23 -18
  209. intentkit/skills/http/schema.json +4 -5
  210. intentkit/skills/lifi/__init__.py +8 -13
  211. intentkit/skills/lifi/base.py +3 -9
  212. intentkit/skills/lifi/schema.json +17 -8
  213. intentkit/skills/lifi/token_execute.py +150 -60
  214. intentkit/skills/lifi/token_quote.py +8 -10
  215. intentkit/skills/lifi/utils.py +104 -51
  216. intentkit/skills/moralis/__init__.py +6 -10
  217. intentkit/skills/moralis/api.py +6 -7
  218. intentkit/skills/moralis/base.py +5 -10
  219. intentkit/skills/moralis/fetch_chain_portfolio.py +10 -11
  220. intentkit/skills/moralis/fetch_nft_portfolio.py +22 -22
  221. intentkit/skills/moralis/fetch_solana_portfolio.py +11 -12
  222. intentkit/skills/moralis/fetch_wallet_portfolio.py +8 -9
  223. intentkit/skills/moralis/schema.json +7 -2
  224. intentkit/skills/morpho/__init__.py +52 -0
  225. intentkit/skills/morpho/base.py +11 -0
  226. intentkit/skills/morpho/morpho.svg +12 -0
  227. intentkit/skills/morpho/schema.json +73 -0
  228. intentkit/skills/nation/__init__.py +4 -9
  229. intentkit/skills/nation/base.py +5 -10
  230. intentkit/skills/nation/nft_check.py +3 -4
  231. intentkit/skills/nation/schema.json +4 -3
  232. intentkit/skills/onchain.py +30 -0
  233. intentkit/skills/openai/__init__.py +17 -18
  234. intentkit/skills/openai/base.py +10 -14
  235. intentkit/skills/openai/dalle_image_generation.py +4 -9
  236. intentkit/skills/openai/gpt_avatar_generator.py +102 -0
  237. intentkit/skills/openai/gpt_image_generation.py +5 -9
  238. intentkit/skills/openai/gpt_image_mini_generator.py +92 -0
  239. intentkit/skills/openai/gpt_image_to_image.py +5 -9
  240. intentkit/skills/openai/image_to_text.py +3 -7
  241. intentkit/skills/openai/schema.json +34 -3
  242. intentkit/skills/portfolio/__init__.py +11 -35
  243. intentkit/skills/portfolio/base.py +33 -19
  244. intentkit/skills/portfolio/schema.json +3 -5
  245. intentkit/skills/portfolio/token_balances.py +21 -21
  246. intentkit/skills/portfolio/wallet_approvals.py +17 -18
  247. intentkit/skills/portfolio/wallet_defi_positions.py +3 -3
  248. intentkit/skills/portfolio/wallet_history.py +31 -31
  249. intentkit/skills/portfolio/wallet_net_worth.py +13 -13
  250. intentkit/skills/portfolio/wallet_nfts.py +19 -19
  251. intentkit/skills/portfolio/wallet_profitability.py +18 -18
  252. intentkit/skills/portfolio/wallet_profitability_summary.py +5 -5
  253. intentkit/skills/portfolio/wallet_stats.py +3 -3
  254. intentkit/skills/portfolio/wallet_swaps.py +19 -19
  255. intentkit/skills/pyth/__init__.py +50 -0
  256. intentkit/skills/pyth/base.py +11 -0
  257. intentkit/skills/pyth/pyth.svg +6 -0
  258. intentkit/skills/pyth/schema.json +75 -0
  259. intentkit/skills/skills.toml +36 -0
  260. intentkit/skills/slack/__init__.py +5 -17
  261. intentkit/skills/slack/base.py +3 -9
  262. intentkit/skills/slack/get_channel.py +8 -8
  263. intentkit/skills/slack/get_message.py +9 -9
  264. intentkit/skills/slack/schedule_message.py +5 -5
  265. intentkit/skills/slack/schema.json +2 -2
  266. intentkit/skills/slack/send_message.py +3 -5
  267. intentkit/skills/supabase/__init__.py +7 -23
  268. intentkit/skills/supabase/base.py +1 -7
  269. intentkit/skills/supabase/delete_data.py +4 -4
  270. intentkit/skills/supabase/fetch_data.py +12 -12
  271. intentkit/skills/supabase/insert_data.py +4 -4
  272. intentkit/skills/supabase/invoke_function.py +6 -6
  273. intentkit/skills/supabase/schema.json +2 -3
  274. intentkit/skills/supabase/update_data.py +6 -6
  275. intentkit/skills/supabase/upsert_data.py +4 -4
  276. intentkit/skills/superfluid/__init__.py +53 -0
  277. intentkit/skills/superfluid/base.py +11 -0
  278. intentkit/skills/superfluid/schema.json +89 -0
  279. intentkit/skills/superfluid/superfluid.svg +6 -0
  280. intentkit/skills/system/__init__.py +7 -24
  281. intentkit/skills/system/add_autonomous_task.py +10 -12
  282. intentkit/skills/system/delete_autonomous_task.py +2 -2
  283. intentkit/skills/system/edit_autonomous_task.py +14 -18
  284. intentkit/skills/system/list_autonomous_tasks.py +3 -5
  285. intentkit/skills/system/read_agent_api_key.py +6 -4
  286. intentkit/skills/system/regenerate_agent_api_key.py +6 -4
  287. intentkit/skills/system/schema.json +6 -8
  288. intentkit/skills/tavily/__init__.py +3 -12
  289. intentkit/skills/tavily/base.py +4 -9
  290. intentkit/skills/tavily/schema.json +3 -5
  291. intentkit/skills/tavily/tavily_extract.py +2 -4
  292. intentkit/skills/tavily/tavily_search.py +4 -6
  293. intentkit/skills/token/__init__.py +5 -10
  294. intentkit/skills/token/base.py +7 -11
  295. intentkit/skills/token/erc20_transfers.py +19 -19
  296. intentkit/skills/token/schema.json +3 -6
  297. intentkit/skills/token/token_analytics.py +3 -3
  298. intentkit/skills/token/token_price.py +13 -13
  299. intentkit/skills/token/token_search.py +9 -9
  300. intentkit/skills/twitter/__init__.py +11 -35
  301. intentkit/skills/twitter/base.py +22 -34
  302. intentkit/skills/twitter/follow_user.py +2 -6
  303. intentkit/skills/twitter/get_mentions.py +5 -12
  304. intentkit/skills/twitter/get_timeline.py +4 -12
  305. intentkit/skills/twitter/get_user_by_username.py +2 -6
  306. intentkit/skills/twitter/get_user_tweets.py +5 -13
  307. intentkit/skills/twitter/like_tweet.py +2 -6
  308. intentkit/skills/twitter/post_tweet.py +6 -9
  309. intentkit/skills/twitter/reply_tweet.py +6 -9
  310. intentkit/skills/twitter/retweet.py +2 -6
  311. intentkit/skills/twitter/schema.json +1 -0
  312. intentkit/skills/twitter/search_tweets.py +4 -12
  313. intentkit/skills/unrealspeech/__init__.py +2 -7
  314. intentkit/skills/unrealspeech/base.py +2 -8
  315. intentkit/skills/unrealspeech/schema.json +2 -5
  316. intentkit/skills/unrealspeech/text_to_speech.py +8 -8
  317. intentkit/skills/venice_audio/__init__.py +98 -106
  318. intentkit/skills/venice_audio/base.py +117 -121
  319. intentkit/skills/venice_audio/input.py +41 -41
  320. intentkit/skills/venice_audio/schema.json +151 -152
  321. intentkit/skills/venice_audio/venice_audio.py +38 -21
  322. intentkit/skills/venice_image/__init__.py +147 -154
  323. intentkit/skills/venice_image/api.py +138 -138
  324. intentkit/skills/venice_image/base.py +185 -192
  325. intentkit/skills/venice_image/config.py +33 -35
  326. intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -3
  327. intentkit/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
  328. intentkit/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
  329. intentkit/skills/venice_image/image_generation/image_generation_base.py +11 -10
  330. intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
  331. intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
  332. intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
  333. intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -158
  334. intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
  335. intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
  336. intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
  337. intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
  338. intentkit/skills/venice_image/image_upscale/image_upscale.py +3 -3
  339. intentkit/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
  340. intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
  341. intentkit/skills/venice_image/image_vision/image_vision.py +2 -2
  342. intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -17
  343. intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -9
  344. intentkit/skills/venice_image/schema.json +267 -267
  345. intentkit/skills/venice_image/utils.py +77 -78
  346. intentkit/skills/web_scraper/__init__.py +5 -18
  347. intentkit/skills/web_scraper/base.py +21 -7
  348. intentkit/skills/web_scraper/document_indexer.py +7 -6
  349. intentkit/skills/web_scraper/schema.json +2 -6
  350. intentkit/skills/web_scraper/scrape_and_index.py +15 -15
  351. intentkit/skills/web_scraper/utils.py +62 -63
  352. intentkit/skills/web_scraper/website_indexer.py +17 -19
  353. intentkit/skills/weth/__init__.py +49 -0
  354. intentkit/skills/weth/base.py +11 -0
  355. intentkit/skills/weth/schema.json +58 -0
  356. intentkit/skills/weth/weth.svg +6 -0
  357. intentkit/skills/wow/__init__.py +51 -0
  358. intentkit/skills/wow/base.py +11 -0
  359. intentkit/skills/wow/schema.json +89 -0
  360. intentkit/skills/wow/wow.svg +7 -0
  361. intentkit/skills/x402/__init__.py +58 -0
  362. intentkit/skills/x402/base.py +99 -0
  363. intentkit/skills/x402/http_request.py +117 -0
  364. intentkit/skills/x402/schema.json +40 -0
  365. intentkit/skills/x402/x402.webp +0 -0
  366. intentkit/skills/xmtp/__init__.py +4 -15
  367. intentkit/skills/xmtp/base.py +5 -5
  368. intentkit/skills/xmtp/price.py +7 -6
  369. intentkit/skills/xmtp/schema.json +69 -71
  370. intentkit/skills/xmtp/swap.py +6 -8
  371. intentkit/skills/xmtp/transfer.py +4 -6
  372. intentkit/utils/__init__.py +4 -0
  373. intentkit/utils/chain.py +198 -96
  374. intentkit/utils/ens.py +135 -0
  375. intentkit/utils/error.py +5 -2
  376. intentkit/utils/logging.py +9 -11
  377. intentkit/utils/schema.py +100 -0
  378. intentkit/utils/slack_alert.py +8 -8
  379. intentkit/utils/tx.py +16 -8
  380. intentkit/uv.lock +3377 -0
  381. {intentkit-0.7.5.dev3.dist-info → intentkit-0.8.34.dev7.dist-info}/METADATA +13 -15
  382. intentkit-0.8.34.dev7.dist-info/RECORD +478 -0
  383. intentkit-0.8.34.dev7.dist-info/licenses/LICENSE +21 -0
  384. intentkit/core/node.py +0 -215
  385. intentkit/models/conversation.py +0 -286
  386. intentkit/models/generator.py +0 -347
  387. intentkit/skills/cdp/get_balance.py +0 -110
  388. intentkit/skills/cdp/swap.py +0 -121
  389. intentkit/skills/moralis/tests/__init__.py +0 -0
  390. intentkit/skills/moralis/tests/test_wallet.py +0 -511
  391. intentkit-0.7.5.dev3.dist-info/RECORD +0 -424
  392. {intentkit-0.7.5.dev3.dist-info/licenses → intentkit}/LICENSE +0 -0
  393. {intentkit-0.7.5.dev3.dist-info → intentkit-0.8.34.dev7.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  from decimal import Decimal, InvalidOperation
3
- from typing import Any, Dict, Literal, Type
3
+ from typing import Any, Literal
4
4
 
5
5
  from pydantic import BaseModel, Field
6
6
 
@@ -58,14 +58,14 @@ class OnchainQueryTool(CarvBaseTool):
58
58
  "- ETH values are denominated in 18 decimals—consider 10^18 when interpreting amounts.\n"
59
59
  "- Never fabricate or infer data beyond what the tool provides."
60
60
  )
61
- args_schema: Type[BaseModel] = CarvInput
61
+ args_schema: type[BaseModel] = CarvInput
62
62
 
63
63
  async def _arun(
64
64
  self,
65
65
  question: str,
66
66
  chain: str, # type: ignore
67
67
  **kwargs: Any,
68
- ) -> Dict[str, Any]:
68
+ ) -> dict[str, Any]:
69
69
  """
70
70
  Queries the CARV SQL Query API and returns the response.
71
71
  """
@@ -104,7 +104,7 @@ class OnchainQueryTool(CarvBaseTool):
104
104
  }
105
105
 
106
106
 
107
- def _normalize_unit(response_data: Dict[str, Any], chain: str) -> None:
107
+ def _normalize_unit(response_data: dict[str, Any], chain: str) -> None:
108
108
  """
109
109
  Normalizes the 'value' field in on-chain response data to a human-readable format.
110
110
  Adds the corresponding token ticker after the value.
@@ -1,137 +1,134 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "CARV",
4
- "description": "Configuration for the CARV skill.",
5
- "type": "object",
6
- "x-icon": "https://ai.service.crestal.dev/skills/carv/carv.webp",
7
- "x-tags": [
8
- "AI",
9
- "Data",
10
- "Information",
11
- "Analytics",
12
- "Market Data"
13
- ],
14
- "properties": {
15
- "enabled": {
16
- "type": "boolean",
17
- "description": "Enable or disable the CARV skill.",
18
- "default": false
19
- },
20
- "states": {
21
- "type": "object",
22
- "title": "Skill States",
23
- "description": "Enable/disable specific tools for CARV",
24
- "properties": {
25
- "onchain_query": {
26
- "type": "string",
27
- "title": "On-Chain Query",
28
- "enum": [
29
- "disabled",
30
- "public",
31
- "private"
32
- ],
33
- "x-enum-title": [
34
- "Disabled",
35
- "Agent Owner + All Users",
36
- "Agent Owner Only"
37
- ],
38
- "description": "allows you to use the nature language to query the on-chain data. Behind the scean, CARV will use LLM model to interpreate the nature language input and convert into the sql query based on the above schemas",
39
- "default": "public"
40
- },
41
- "token_info_and_price": {
42
- "type": "string",
43
- "title": "Token Information and Price",
44
- "enum": [
45
- "disabled",
46
- "public",
47
- "private"
48
- ],
49
- "x-enum-title": [
50
- "Disabled",
51
- "Agent Owner + All Users",
52
- "Agent Owner Only"
53
- ],
54
- "description": "Fetches detailed information and current USD price of a cryptocurrency token from CARV API using its ticker symbol (e.g., 'eth', 'btc'), returning metadata like name, symbol, platform, categories, and contract addresses, useful for understanding its identity, ecosystem, market value, and for obtaining comprehensive token data with live pricing.",
55
- "default": "public"
56
- },
57
- "fetch_news": {
58
- "type": "string",
59
- "title": "Fetch News",
60
- "enum": [
61
- "disabled",
62
- "public",
63
- "private"
64
- ],
65
- "x-enum-title": [
66
- "Disabled",
67
- "Agent Owner + All Users",
68
- "Agent Owner Only"
69
- ],
70
- "description": "retrieves a list of recent news items, each including a title, URL, and a short description",
71
- "default": "disabled"
72
- }
73
- }
74
- },
75
- "api_key_provider": {
76
- "type": "string",
77
- "title": "API Key Provider",
78
- "description": "Provider of the API key",
79
- "enum": [
80
- "agent_owner",
81
- "platform"
82
- ],
83
- "x-enum-title": [
84
- "Owner Provided",
85
- "Nation Hosted"
86
- ],
87
- "default": "platform"
88
- }
89
- },
90
- "required": [
91
- "enabled",
92
- "states"
93
- ],
94
- "if": {
95
- "allOf": [
96
- {
97
- "properties": {
98
- "enabled": {
99
- "const": true
100
- }
101
- }
102
- },
103
- {
104
- "properties": {
105
- "api_key_provider": {
106
- "const": "agent_owner"
107
- }
108
- }
109
- }
110
- ]
111
- },
112
- "then": {
113
- "properties": {
114
- "api_key": {
115
- "type": "string",
116
- "title": "CARV API Key",
117
- "x-link": "[Get your API key](https://docs.carv.io/d.a.t.a.-ai-framework/api-documentation#authentication)",
118
- "x-sensitive": true,
119
- "description": "API Key for authenticating with the CARV API."
120
- },
121
- "rate_limit_number": {
122
- "type": "integer",
123
- "title": "Rate Limit Number",
124
- "description": "Number of requests allowed per time window."
125
- },
126
- "rate_limit_minutes": {
127
- "type": "integer",
128
- "title": "Rate Limit Minutes",
129
- "description": "Time window in minutes for rate limiting."
130
- }
131
- },
132
- "required": [
133
- "api_key"
134
- ]
135
- },
136
- "additionalProperties": true
137
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "CARV",
4
+ "description": "Configuration for the CARV skill.",
5
+ "type": "object",
6
+ "x-icon": "https://ai.service.crestal.dev/skills/carv/carv.webp",
7
+ "x-tags": [
8
+ "Analytics",
9
+ "Crypto"
10
+ ],
11
+ "properties": {
12
+ "enabled": {
13
+ "type": "boolean",
14
+ "description": "Enable or disable the CARV skill.",
15
+ "default": false
16
+ },
17
+ "states": {
18
+ "type": "object",
19
+ "title": "Skill States",
20
+ "description": "Enable/disable specific tools for CARV",
21
+ "properties": {
22
+ "onchain_query": {
23
+ "type": "string",
24
+ "title": "On-Chain Query",
25
+ "enum": [
26
+ "disabled",
27
+ "public",
28
+ "private"
29
+ ],
30
+ "x-enum-title": [
31
+ "Disabled",
32
+ "Agent Owner + All Users",
33
+ "Agent Owner Only"
34
+ ],
35
+ "description": "allows you to use the nature language to query the on-chain data. Behind the scean, CARV will use LLM model to interpreate the nature language input and convert into the sql query based on the above schemas",
36
+ "default": "public"
37
+ },
38
+ "token_info_and_price": {
39
+ "type": "string",
40
+ "title": "Token Information and Price",
41
+ "enum": [
42
+ "disabled",
43
+ "public",
44
+ "private"
45
+ ],
46
+ "x-enum-title": [
47
+ "Disabled",
48
+ "Agent Owner + All Users",
49
+ "Agent Owner Only"
50
+ ],
51
+ "description": "Fetches detailed information and current USD price of a cryptocurrency token from CARV API using its ticker symbol (e.g., 'eth', 'btc'), returning metadata like name, symbol, platform, categories, and contract addresses, useful for understanding its identity, ecosystem, market value, and for obtaining comprehensive token data with live pricing.",
52
+ "default": "public"
53
+ },
54
+ "fetch_news": {
55
+ "type": "string",
56
+ "title": "Fetch News",
57
+ "enum": [
58
+ "disabled",
59
+ "public",
60
+ "private"
61
+ ],
62
+ "x-enum-title": [
63
+ "Disabled",
64
+ "Agent Owner + All Users",
65
+ "Agent Owner Only"
66
+ ],
67
+ "description": "retrieves a list of recent news items, each including a title, URL, and a short description",
68
+ "default": "disabled"
69
+ }
70
+ }
71
+ },
72
+ "api_key_provider": {
73
+ "type": "string",
74
+ "title": "API Key Provider",
75
+ "description": "Provider of the API key",
76
+ "enum": [
77
+ "agent_owner",
78
+ "platform"
79
+ ],
80
+ "x-enum-title": [
81
+ "Owner Provided",
82
+ "Nation Hosted"
83
+ ],
84
+ "default": "platform"
85
+ }
86
+ },
87
+ "required": [
88
+ "enabled",
89
+ "states"
90
+ ],
91
+ "if": {
92
+ "allOf": [
93
+ {
94
+ "properties": {
95
+ "enabled": {
96
+ "const": true
97
+ }
98
+ }
99
+ },
100
+ {
101
+ "properties": {
102
+ "api_key_provider": {
103
+ "const": "agent_owner"
104
+ }
105
+ }
106
+ }
107
+ ]
108
+ },
109
+ "then": {
110
+ "properties": {
111
+ "api_key": {
112
+ "type": "string",
113
+ "title": "CARV API Key",
114
+ "x-link": "[Get your API key](https://docs.carv.io/d.a.t.a.-ai-framework/api-documentation#authentication)",
115
+ "x-sensitive": true,
116
+ "description": "API Key for authenticating with the CARV API."
117
+ },
118
+ "rate_limit_number": {
119
+ "type": "integer",
120
+ "title": "Rate Limit Number",
121
+ "description": "Number of requests allowed per time window."
122
+ },
123
+ "rate_limit_minutes": {
124
+ "type": "integer",
125
+ "title": "Rate Limit Minutes",
126
+ "description": "Time window in minutes for rate limiting."
127
+ }
128
+ },
129
+ "required": [
130
+ "api_key"
131
+ ]
132
+ },
133
+ "additionalProperties": true
134
+ }
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  import re
3
- from typing import Any, Dict, Optional, Type
3
+ from typing import Any
4
4
 
5
5
  from pydantic import BaseModel, Field
6
6
 
@@ -16,7 +16,7 @@ class TokenInfoAndPriceInput(BaseModel):
16
16
  token_name: str = Field(
17
17
  description="The token name (e.g ethereum, bitcoin, solana, ripple)"
18
18
  )
19
- amount: Optional[float] = Field(
19
+ amount: float | None = Field(
20
20
  description="(optional) amount of token, fill this if user asking for how much x amount of specific token worth"
21
21
  )
22
22
 
@@ -26,7 +26,7 @@ class TokenInfoAndPriceTool(CarvBaseTool):
26
26
  Fetches detailed information and the current USD price of a cryptocurrency token from the CARV API,
27
27
  given its ticker symbol (e.g., 'eth', 'btc', 'aave').
28
28
  Returns metadata including the token's name, symbol, platform, category tags, and contract addresses
29
- Useful for understanding a token's identity, ecosystem, and market valu
29
+ Useful for understanding a token's identity, ecosystem, and market value
30
30
  Use this tool when you need comprehensive token data and live pricing from CARV
31
31
  """
32
32
 
@@ -38,15 +38,15 @@ class TokenInfoAndPriceTool(CarvBaseTool):
38
38
  "Useful for understanding a token's identity, ecosystem, and market value"
39
39
  "Use this tool when you need comprehensive token data and live pricing from CARV."
40
40
  )
41
- args_schema: Type[BaseModel] = TokenInfoAndPriceInput
41
+ args_schema: type[BaseModel] = TokenInfoAndPriceInput
42
42
 
43
43
  async def _arun(
44
44
  self,
45
45
  ticker: str,
46
46
  token_name: str,
47
- amount: Optional[float] = 1, # type: ignore
47
+ amount: float | None = 1, # type: ignore
48
48
  **kwargs: Any,
49
- ) -> Dict[str, Any]:
49
+ ) -> dict[str, Any]:
50
50
  if not ticker:
51
51
  return {
52
52
  "error": True,
@@ -3,7 +3,6 @@
3
3
  import logging
4
4
  from typing import TypedDict
5
5
 
6
- from intentkit.abstracts.skill import SkillStoreABC
7
6
  from intentkit.skills.base import SkillConfig, SkillState
8
7
  from intentkit.skills.casino.base import CasinoBaseTool
9
8
  from intentkit.skills.casino.deck_draw import CasinoDeckDraw
@@ -31,7 +30,6 @@ class Config(SkillConfig):
31
30
  async def get_skills(
32
31
  config: "Config",
33
32
  is_private: bool,
34
- store: SkillStoreABC,
35
33
  **_,
36
34
  ) -> list[CasinoBaseTool]:
37
35
  """Get all Casino skills.
@@ -39,7 +37,6 @@ async def get_skills(
39
37
  Args:
40
38
  config: The configuration for Casino skills.
41
39
  is_private: Whether to include private skills.
42
- store: The skill store for persisting data.
43
40
 
44
41
  Returns:
45
42
  A list of Casino skills.
@@ -56,7 +53,7 @@ async def get_skills(
56
53
  # Get each skill using the cached getter
57
54
  result = []
58
55
  for name in available_skills:
59
- skill = get_casino_skill(name, store)
56
+ skill = get_casino_skill(name)
60
57
  if skill:
61
58
  result.append(skill)
62
59
  return result
@@ -64,34 +61,26 @@ async def get_skills(
64
61
 
65
62
  def get_casino_skill(
66
63
  name: str,
67
- store: SkillStoreABC,
68
64
  ) -> CasinoBaseTool:
69
65
  """Get a Casino skill by name.
70
66
 
71
67
  Args:
72
68
  name: The name of the skill to get
73
- store: The skill store for persisting data
74
69
 
75
70
  Returns:
76
71
  The requested Casino skill
77
72
  """
78
73
  if name == "deck_shuffle":
79
74
  if name not in _cache:
80
- _cache[name] = CasinoDeckShuffle(
81
- skill_store=store,
82
- )
75
+ _cache[name] = CasinoDeckShuffle()
83
76
  return _cache[name]
84
77
  elif name == "deck_draw":
85
78
  if name not in _cache:
86
- _cache[name] = CasinoDeckDraw(
87
- skill_store=store,
88
- )
79
+ _cache[name] = CasinoDeckDraw()
89
80
  return _cache[name]
90
81
  elif name == "dice_roll":
91
82
  if name not in _cache:
92
- _cache[name] = CasinoDiceRoll(
93
- skill_store=store,
94
- )
83
+ _cache[name] = CasinoDiceRoll()
95
84
  return _cache[name]
96
85
  else:
97
86
  raise ValueError(f"Unknown Casino skill: {name}")
@@ -1,10 +1,7 @@
1
1
  """Base class for Casino tools."""
2
2
 
3
- from typing import Type
4
-
5
3
  from pydantic import BaseModel, Field
6
4
 
7
- from intentkit.abstracts.skill import SkillStoreABC
8
5
  from intentkit.skills.base import IntentKitSkill
9
6
 
10
7
 
@@ -13,10 +10,7 @@ class CasinoBaseTool(IntentKitSkill):
13
10
 
14
11
  name: str = Field(description="The name of the tool")
15
12
  description: str = Field(description="A description of what the tool does")
16
- args_schema: Type[BaseModel]
17
- skill_store: SkillStoreABC = Field(
18
- description="The skill store for persisting data"
19
- )
13
+ args_schema: type[BaseModel]
20
14
 
21
15
  @property
22
16
  def category(self) -> str:
@@ -1,7 +1,6 @@
1
1
  """Card drawing skill using Deck of Cards API."""
2
2
 
3
3
  import logging
4
- from typing import Type
5
4
 
6
5
  try:
7
6
  import httpx
@@ -49,7 +48,7 @@ class CasinoDeckDraw(CasinoBaseTool):
49
48
 
50
49
  name: str = NAME
51
50
  description: str = PROMPT
52
- args_schema: Type[BaseModel] = CasinoDeckDrawInput
51
+ args_schema: type[BaseModel] = CasinoDeckDrawInput
53
52
 
54
53
  async def _arun(self, count: int = 1, **kwargs) -> dict:
55
54
  try:
@@ -58,9 +57,8 @@ class CasinoDeckDraw(CasinoBaseTool):
58
57
  # Apply rate limit using built-in user_rate_limit method
59
58
  rate_config = RATE_LIMITS["deck_draw"]
60
59
  await self.user_rate_limit(
61
- context.user_id or context.agent_id,
62
60
  rate_config["max_requests"],
63
- rate_config["interval"] // 60, # Convert to minutes
61
+ rate_config["interval"],
64
62
  "deck_draw",
65
63
  )
66
64
 
@@ -68,8 +66,8 @@ class CasinoDeckDraw(CasinoBaseTool):
68
66
  count = validate_card_count(count)
69
67
 
70
68
  # Get current deck info
71
- deck_info = await self.skill_store.get_agent_skill_data(
72
- context.agent_id, DECK_STORAGE_KEY, CURRENT_DECK_KEY
69
+ deck_info = await self.get_agent_skill_data_raw(
70
+ DECK_STORAGE_KEY, CURRENT_DECK_KEY
73
71
  )
74
72
 
75
73
  deck_id = "new" # Default to new deck
@@ -99,8 +97,7 @@ class CasinoDeckDraw(CasinoBaseTool):
99
97
  else:
100
98
  deck_info["remaining"] = data["remaining"]
101
99
 
102
- await self.skill_store.save_agent_skill_data(
103
- context.agent_id,
100
+ await self.save_agent_skill_data_raw(
104
101
  DECK_STORAGE_KEY,
105
102
  CURRENT_DECK_KEY,
106
103
  deck_info,
@@ -1,7 +1,6 @@
1
1
  """Deck shuffling skill using Deck of Cards API."""
2
2
 
3
3
  import logging
4
- from typing import Type
5
4
 
6
5
  try:
7
6
  import httpx
@@ -53,7 +52,7 @@ class CasinoDeckShuffle(CasinoBaseTool):
53
52
 
54
53
  name: str = NAME
55
54
  description: str = PROMPT
56
- args_schema: Type[BaseModel] = CasinoDeckShuffleInput
55
+ args_schema: type[BaseModel] = CasinoDeckShuffleInput
57
56
 
58
57
  async def _arun(
59
58
  self, deck_count: int = 1, jokers_enabled: bool = False, **kwargs
@@ -64,9 +63,8 @@ class CasinoDeckShuffle(CasinoBaseTool):
64
63
  # Apply rate limit using built-in user_rate_limit method
65
64
  rate_config = RATE_LIMITS["deck_shuffle"]
66
65
  await self.user_rate_limit(
67
- context.user_id or context.agent_id,
68
66
  rate_config["max_requests"],
69
- rate_config["interval"] // 60, # Convert to minutes
67
+ rate_config["interval"],
70
68
  "deck_shuffle",
71
69
  )
72
70
 
@@ -95,8 +93,10 @@ class CasinoDeckShuffle(CasinoBaseTool):
95
93
  "shuffled": data["shuffled"],
96
94
  }
97
95
 
98
- await self.skill_store.save_agent_skill_data(
99
- context.agent_id, DECK_STORAGE_KEY, CURRENT_DECK_KEY, deck_info
96
+ await self.save_agent_skill_data_raw(
97
+ DECK_STORAGE_KEY,
98
+ CURRENT_DECK_KEY,
99
+ deck_info,
100
100
  )
101
101
 
102
102
  return {
@@ -1,7 +1,6 @@
1
1
  """Quantum dice rolling skill using QRandom API."""
2
2
 
3
3
  import logging
4
- from typing import Type
5
4
 
6
5
  try:
7
6
  import httpx
@@ -48,7 +47,7 @@ class CasinoDiceRoll(CasinoBaseTool):
48
47
 
49
48
  name: str = NAME
50
49
  description: str = PROMPT
51
- args_schema: Type[BaseModel] = CasinoDiceRollInput
50
+ args_schema: type[BaseModel] = CasinoDiceRollInput
52
51
 
53
52
  async def _arun(self, dice_count: int = 1, **kwargs) -> dict:
54
53
  try:
@@ -57,9 +56,8 @@ class CasinoDiceRoll(CasinoBaseTool):
57
56
  # Apply rate limit using built-in user_rate_limit method
58
57
  rate_config = RATE_LIMITS["dice_roll"]
59
58
  await self.user_rate_limit(
60
- context.user_id or context.agent_id,
61
59
  rate_config["max_requests"],
62
- rate_config["interval"] // 60, # Convert to minutes
60
+ rate_config["interval"],
63
61
  "dice_roll",
64
62
  )
65
63
 
@@ -5,7 +5,6 @@
5
5
  "description": "Casino gaming skills including card decks and quantum dice rolling for interactive games with users",
6
6
  "x-icon": "https://ai.service.crestal.dev/skills/casino/casino.png",
7
7
  "x-tags": [
8
- "Gaming",
9
8
  "Entertainment"
10
9
  ],
11
10
  "properties": {