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,15 +1,14 @@
1
1
  import hashlib
2
2
  import json
3
3
  import logging
4
- from typing import Any, Dict, Optional, Type
4
+ from typing import Any
5
5
 
6
6
  import httpx
7
- from pydantic import BaseModel, Field
7
+ from pydantic import BaseModel
8
8
 
9
- from intentkit.abstracts.skill import SkillStoreABC
9
+ from intentkit.clients.s3 import store_file
10
10
  from intentkit.skills.venice_audio.base import VeniceAudioBaseTool
11
11
  from intentkit.skills.venice_audio.input import AllowedAudioFormat, VeniceAudioInput
12
- from intentkit.utils.s3 import FileType, store_file_bytes
13
12
 
14
13
  logger = logging.getLogger(__name__)
15
14
 
@@ -33,22 +32,19 @@ class VeniceAudioTool(VeniceAudioBaseTool):
33
32
  "Requires input text. Optional parameters include speed (0.25-4.0, default 1.0) "
34
33
  "and audio format (mp3, opus, aac, flac, wav, pcm, default mp3)."
35
34
  )
36
- args_schema: Type[BaseModel] = VeniceAudioInput
37
- skill_store: SkillStoreABC = Field(
38
- description="The skill store instance for accessing system/agent configurations and persisting data."
39
- )
35
+ args_schema: type[BaseModel] = VeniceAudioInput
40
36
 
41
37
  async def _arun(
42
38
  self,
43
- input: str,
39
+ voice_input: str,
44
40
  voice_model: str,
45
- speed: Optional[float] = 1.0,
46
- response_format: Optional[AllowedAudioFormat] = "mp3",
41
+ speed: float | None = 1.0,
42
+ response_format: AllowedAudioFormat | None = "mp3",
47
43
  **kwargs, # type: ignore
48
- ) -> Dict[str, Any]:
44
+ ) -> dict[str, Any]:
49
45
  """
50
46
  Generates audio using the configured voice model via Venice AI TTS /audio/speech endpoint.
51
- Stores the resulting audio using store_file_bytes.
47
+ Stores the resulting audio using the generic S3 helper.
52
48
  Returns a dictionary containing audio details on success, or API error details on failure.
53
49
  """
54
50
  context = self.get_context()
@@ -96,9 +92,9 @@ class VeniceAudioTool(VeniceAudioBaseTool):
96
92
  await self.apply_rate_limit(context)
97
93
 
98
94
  # --- Prepare API Call ---
99
- payload: Dict[str, Any] = {
95
+ payload: dict[str, Any] = {
100
96
  "model": tts_model_id,
101
- "input": input,
97
+ "input": voice_input,
102
98
  "voice": voice_model,
103
99
  "response_format": final_response_format,
104
100
  "speed": speed if speed is not None else 1.0,
@@ -155,11 +151,32 @@ class VeniceAudioTool(VeniceAudioBaseTool):
155
151
  key = f"{self.category}/{voice_model}/{audio_hash}.{file_extension}"
156
152
 
157
153
  size_limit = 1024 * 20 # 20Mb Size limit
158
- stored_url = await store_file_bytes(
159
- file_bytes=audio_bytes,
154
+ audio_size = len(audio_bytes)
155
+ if audio_size > size_limit:
156
+ message = f"Generated audio exceeds the allowed size of {size_limit} bytes."
157
+ logger.error(
158
+ "Failed to store audio (Voice: %s): %s",
159
+ voice_model,
160
+ message,
161
+ )
162
+ return {
163
+ "error": True,
164
+ "error_type": "FileSizeLimitExceeded",
165
+ "message": message,
166
+ "voice_model": voice_model,
167
+ "requested_format": final_response_format,
168
+ }
169
+
170
+ mime_type = (
171
+ content_type_header.split(";", 1)[0].strip()
172
+ if content_type_header
173
+ else None
174
+ )
175
+ stored_url = await store_file(
176
+ content=audio_bytes,
160
177
  key=key,
161
- file_type=FileType.AUDIO,
162
- size_limit_bytes=size_limit,
178
+ content_type=mime_type,
179
+ size=audio_size,
163
180
  )
164
181
 
165
182
  if not stored_url:
@@ -182,12 +199,12 @@ class VeniceAudioTool(VeniceAudioBaseTool):
182
199
  return {
183
200
  "audio_url": stored_url,
184
201
  "audio_bytes_sha256": audio_hash,
185
- "content_type": content_type_header,
202
+ "content_type": mime_type or content_type_header,
186
203
  "voice_model": voice_model,
187
204
  "tts_engine": tts_model_id,
188
205
  "speed": speed if speed is not None else 1.0,
189
206
  "response_format": final_response_format,
190
- "input_text_length": len(input),
207
+ "input_text_length": len(voice_input),
191
208
  "error": False,
192
209
  "status_code": response.status_code,
193
210
  }
@@ -1,154 +1,147 @@
1
- import logging
2
- from typing import NotRequired, Optional, TypedDict
3
-
4
- from intentkit.abstracts.skill import SkillStoreABC
5
- from intentkit.skills.base import (
6
- SkillConfig,
7
- SkillState,
8
- )
9
-
10
- # Import the base tool and all specific model skill classes
11
- from intentkit.skills.venice_image.base import VeniceImageBaseTool
12
- from intentkit.skills.venice_image.image_enhance.image_enhance import ImageEnhance
13
- from intentkit.skills.venice_image.image_generation.image_generation_fluently_xl import (
14
- ImageGenerationFluentlyXL,
15
- )
16
- from intentkit.skills.venice_image.image_generation.image_generation_flux_dev import (
17
- ImageGenerationFluxDev,
18
- )
19
- from intentkit.skills.venice_image.image_generation.image_generation_flux_dev_uncensored import (
20
- ImageGenerationFluxDevUncensored,
21
- )
22
- from intentkit.skills.venice_image.image_generation.image_generation_lustify_sdxl import (
23
- ImageGenerationLustifySDXL,
24
- )
25
- from intentkit.skills.venice_image.image_generation.image_generation_pony_realism import (
26
- ImageGenerationPonyRealism,
27
- )
28
- from intentkit.skills.venice_image.image_generation.image_generation_stable_diffusion_3_5 import (
29
- ImageGenerationStableDiffusion35,
30
- )
31
- from intentkit.skills.venice_image.image_generation.image_generation_venice_sd35 import (
32
- ImageGenerationVeniceSD35,
33
- )
34
- from intentkit.skills.venice_image.image_upscale.image_upscale import ImageUpscale
35
- from intentkit.skills.venice_image.image_vision.image_vision import ImageVision
36
-
37
- # Cache skills at the system level, because they are stateless and only depend on the store
38
- _cache: dict[str, VeniceImageBaseTool] = {}
39
-
40
- logger = logging.getLogger(__name__)
41
-
42
-
43
- # Define the expected structure for the 'states' dictionary in the config
44
- class SkillStates(TypedDict):
45
- image_upscale: SkillState
46
- image_enhance: SkillState
47
- image_vision: SkillState
48
- image_generation_flux_dev: SkillState
49
- image_generation_flux_dev_uncensored: SkillState
50
- image_generation_venice_sd35: SkillState
51
- image_generation_fluently_xl: SkillState
52
- image_generation_lustify_sdxl: SkillState
53
- image_generation_pony_realism: SkillState
54
- image_generation_stable_diffusion_3_5: SkillState
55
- # Add new skill names here if more models are added
56
-
57
-
58
- # Define the overall configuration structure for the venice_image category
59
- class Config(SkillConfig):
60
- """Configuration for Venice Image skills."""
61
-
62
- enabled: bool # Keep standard enabled flag
63
- states: SkillStates
64
- api_key_provider: str = "agent_owner"
65
- api_key: NotRequired[Optional[str]] # Explicitly Optional
66
- safe_mode: NotRequired[bool] # Defaults handled in base or usage
67
- hide_watermark: NotRequired[bool] # Defaults handled in base or usage
68
- negative_prompt: NotRequired[str] # Defaults handled in base or usage
69
- rate_limit_number: NotRequired[Optional[int]] # Explicitly Optional
70
- rate_limit_minutes: NotRequired[Optional[int]] # Explicitly Optional
71
-
72
-
73
- _SKILL_NAME_TO_CLASS_MAP: dict[str, type[VeniceImageBaseTool]] = {
74
- "image_upscale": ImageUpscale,
75
- "image_enhance": ImageEnhance,
76
- "image_vision": ImageVision,
77
- "image_generation_flux_dev": ImageGenerationFluxDev,
78
- "image_generation_flux_dev_uncensored": ImageGenerationFluxDevUncensored,
79
- "image_generation_venice_sd35": ImageGenerationVeniceSD35,
80
- "image_generation_fluently_xl": ImageGenerationFluentlyXL,
81
- "image_generation_lustify_sdxl": ImageGenerationLustifySDXL,
82
- "image_generation_pony_realism": ImageGenerationPonyRealism,
83
- "image_generation_stable_diffusion_3_5": ImageGenerationStableDiffusion35,
84
- }
85
-
86
-
87
- async def get_skills(
88
- config: "Config",
89
- is_private: bool,
90
- store: SkillStoreABC,
91
- **_, # Allow for extra arguments if the loader passes them
92
- ) -> list[VeniceImageBaseTool]:
93
- """Get all enabled Venice Image skills based on configuration and privacy level.
94
-
95
- Args:
96
- config: The configuration for Venice Image skills.
97
- is_private: Whether the context is private (e.g., agent owner).
98
- store: The skill store for persisting data and accessing system config.
99
-
100
- Returns:
101
- A list of instantiated and enabled Venice Image skill objects.
102
- """
103
- # Check if the entire category is disabled first
104
- if not config.get("enabled", False):
105
- return []
106
-
107
- available_skills: list[VeniceImageBaseTool] = []
108
-
109
- # Include skills based on their state
110
- for skill_name, state in config["states"].items():
111
- if state == "disabled":
112
- continue
113
- elif state == "public" or (state == "private" and is_private):
114
- available_skills.append(skill_name)
115
-
116
- # Get each skill using the cached getter
117
- result = []
118
- for name in available_skills:
119
- skill = get_venice_image_skill(name, store, config)
120
- if skill:
121
- result.append(skill)
122
- return result
123
-
124
-
125
- def get_venice_image_skill(
126
- name: str,
127
- store: SkillStoreABC,
128
- config: "Config",
129
- ) -> Optional[VeniceImageBaseTool]:
130
- """
131
- Factory function to get a cached Venice Image skill instance by name.
132
-
133
- Args:
134
- name: The name of the skill to get (must match keys in _SKILL_NAME_TO_CLASS_MAP).
135
- store: The skill store, passed to the skill constructor.
136
-
137
- Returns:
138
- The requested Venice Image skill instance, or None if the name is unknown.
139
- """
140
-
141
- # Return from cache immediately if already exists
142
- if name in _cache:
143
- return _cache[name]
144
-
145
- skill_class = _SKILL_NAME_TO_CLASS_MAP.get(name)
146
- if not skill_class:
147
- logger.warning(f"Unknown Venice skill: {name}")
148
- return None
149
-
150
- # Cache and return the newly created instance
151
- _cache[name] = skill_class(
152
- skill_store=store,
153
- )
154
- return _cache[name]
1
+ import logging
2
+ from typing import NotRequired, TypedDict
3
+
4
+ from intentkit.skills.base import (
5
+ SkillConfig,
6
+ SkillState,
7
+ )
8
+
9
+ # Import the base tool and all specific model skill classes
10
+ from intentkit.skills.venice_image.base import VeniceImageBaseTool
11
+ from intentkit.skills.venice_image.image_enhance.image_enhance import ImageEnhance
12
+ from intentkit.skills.venice_image.image_generation.image_generation_fluently_xl import (
13
+ ImageGenerationFluentlyXL,
14
+ )
15
+ from intentkit.skills.venice_image.image_generation.image_generation_flux_dev import (
16
+ ImageGenerationFluxDev,
17
+ )
18
+ from intentkit.skills.venice_image.image_generation.image_generation_flux_dev_uncensored import (
19
+ ImageGenerationFluxDevUncensored,
20
+ )
21
+ from intentkit.skills.venice_image.image_generation.image_generation_lustify_sdxl import (
22
+ ImageGenerationLustifySDXL,
23
+ )
24
+ from intentkit.skills.venice_image.image_generation.image_generation_pony_realism import (
25
+ ImageGenerationPonyRealism,
26
+ )
27
+ from intentkit.skills.venice_image.image_generation.image_generation_stable_diffusion_3_5 import (
28
+ ImageGenerationStableDiffusion35,
29
+ )
30
+ from intentkit.skills.venice_image.image_generation.image_generation_venice_sd35 import (
31
+ ImageGenerationVeniceSD35,
32
+ )
33
+ from intentkit.skills.venice_image.image_upscale.image_upscale import ImageUpscale
34
+ from intentkit.skills.venice_image.image_vision.image_vision import ImageVision
35
+
36
+ # Cache skills at the system level, because they are stateless and only depend on the store
37
+ _cache: dict[str, VeniceImageBaseTool] = {}
38
+
39
+ logger = logging.getLogger(__name__)
40
+
41
+
42
+ # Define the expected structure for the 'states' dictionary in the config
43
+ class SkillStates(TypedDict):
44
+ image_upscale: SkillState
45
+ image_enhance: SkillState
46
+ image_vision: SkillState
47
+ image_generation_flux_dev: SkillState
48
+ image_generation_flux_dev_uncensored: SkillState
49
+ image_generation_venice_sd35: SkillState
50
+ image_generation_fluently_xl: SkillState
51
+ image_generation_lustify_sdxl: SkillState
52
+ image_generation_pony_realism: SkillState
53
+ image_generation_stable_diffusion_3_5: SkillState
54
+ # Add new skill names here if more models are added
55
+
56
+
57
+ # Define the overall configuration structure for the venice_image category
58
+ class Config(SkillConfig):
59
+ """Configuration for Venice Image skills."""
60
+
61
+ enabled: bool # Keep standard enabled flag
62
+ states: SkillStates
63
+ api_key_provider: str = "agent_owner"
64
+ api_key: NotRequired[str | None] # Explicitly Optional
65
+ safe_mode: NotRequired[bool] # Defaults handled in base or usage
66
+ hide_watermark: NotRequired[bool] # Defaults handled in base or usage
67
+ negative_prompt: NotRequired[str] # Defaults handled in base or usage
68
+ rate_limit_number: NotRequired[int | None] # Explicitly Optional
69
+ rate_limit_minutes: NotRequired[int | None] # Explicitly Optional
70
+
71
+
72
+ _SKILL_NAME_TO_CLASS_MAP: dict[str, type[VeniceImageBaseTool]] = {
73
+ "image_upscale": ImageUpscale,
74
+ "image_enhance": ImageEnhance,
75
+ "image_vision": ImageVision,
76
+ "image_generation_flux_dev": ImageGenerationFluxDev,
77
+ "image_generation_flux_dev_uncensored": ImageGenerationFluxDevUncensored,
78
+ "image_generation_venice_sd35": ImageGenerationVeniceSD35,
79
+ "image_generation_fluently_xl": ImageGenerationFluentlyXL,
80
+ "image_generation_lustify_sdxl": ImageGenerationLustifySDXL,
81
+ "image_generation_pony_realism": ImageGenerationPonyRealism,
82
+ "image_generation_stable_diffusion_3_5": ImageGenerationStableDiffusion35,
83
+ }
84
+
85
+
86
+ async def get_skills(
87
+ config: "Config",
88
+ is_private: bool,
89
+ **_, # Allow for extra arguments if the loader passes them
90
+ ) -> list[VeniceImageBaseTool]:
91
+ """Get all enabled Venice Image skills based on configuration and privacy level.
92
+
93
+ Args:
94
+ config: The configuration for Venice Image skills.
95
+ is_private: Whether the context is private (e.g., agent owner).
96
+
97
+ Returns:
98
+ A list of instantiated and enabled Venice Image skill objects.
99
+ """
100
+ # Check if the entire category is disabled first
101
+ if not config.get("enabled", False):
102
+ return []
103
+
104
+ available_skills: list[VeniceImageBaseTool] = []
105
+
106
+ # Include skills based on their state
107
+ for skill_name, state in config["states"].items():
108
+ if state == "disabled":
109
+ continue
110
+ elif state == "public" or (state == "private" and is_private):
111
+ available_skills.append(skill_name)
112
+
113
+ # Get each skill using the cached getter
114
+ result = []
115
+ for name in available_skills:
116
+ skill = get_venice_image_skill(name, config)
117
+ if skill:
118
+ result.append(skill)
119
+ return result
120
+
121
+
122
+ def get_venice_image_skill(
123
+ name: str,
124
+ config: "Config",
125
+ ) -> VeniceImageBaseTool | None:
126
+ """
127
+ Factory function to get a cached Venice Image skill instance by name.
128
+
129
+ Args:
130
+ name: The name of the skill to get (must match keys in _SKILL_NAME_TO_CLASS_MAP).
131
+
132
+ Returns:
133
+ The requested Venice Image skill instance, or None if the name is unknown.
134
+ """
135
+
136
+ # Return from cache immediately if already exists
137
+ if name in _cache:
138
+ return _cache[name]
139
+
140
+ skill_class = _SKILL_NAME_TO_CLASS_MAP.get(name)
141
+ if not skill_class:
142
+ logger.warning(f"Unknown Venice skill: {name}")
143
+ return None
144
+
145
+ # Cache and return the newly created instance
146
+ _cache[name] = skill_class()
147
+ return _cache[name]