intentkit 0.8.17.dev1__tar.gz → 0.8.17.dev2__tar.gz

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 (468) hide show
  1. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/PKG-INFO +3 -4
  2. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/__init__.py +1 -1
  3. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/abstracts/agent.py +4 -5
  4. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/abstracts/engine.py +5 -5
  5. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/abstracts/graph.py +6 -5
  6. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/abstracts/skill.py +5 -5
  7. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/abstracts/twitter.py +4 -5
  8. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/clients/cdp.py +19 -77
  9. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/clients/twitter.py +26 -34
  10. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/clients/web3.py +1 -3
  11. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/config/config.py +4 -0
  12. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/agent.py +15 -15
  13. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/asset.py +1 -2
  14. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/client.py +1 -1
  15. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/credit.py +19 -20
  16. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/engine.py +2 -4
  17. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/node.py +2 -1
  18. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/prompt.py +3 -4
  19. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/scheduler.py +1 -1
  20. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/statistics.py +6 -7
  21. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/agent.py +125 -92
  22. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/agent_data.py +62 -36
  23. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/app_setting.py +6 -6
  24. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/chat.py +27 -24
  25. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/conversation.py +8 -8
  26. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/credit.py +62 -64
  27. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/db.py +8 -7
  28. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/db_mig.py +2 -2
  29. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/llm.py +12 -14
  30. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/redis.py +2 -3
  31. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/skill.py +25 -27
  32. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/user.py +21 -22
  33. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/pyproject.toml +3 -4
  34. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/acolyt/ask.py +3 -4
  35. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/acolyt/base.py +1 -3
  36. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/aixbt/base.py +1 -3
  37. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/aixbt/projects.py +13 -13
  38. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/allora/base.py +1 -3
  39. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/allora/price.py +2 -3
  40. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/base.py +15 -22
  41. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/basename/__init__.py +3 -5
  42. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/carv/__init__.py +7 -8
  43. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/carv/base.py +6 -6
  44. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/carv/fetch_news.py +3 -3
  45. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/carv/onchain_query.py +4 -4
  46. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/carv/token_info_and_price.py +5 -5
  47. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/base.py +1 -3
  48. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/deck_draw.py +1 -2
  49. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/deck_shuffle.py +1 -2
  50. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/dice_roll.py +1 -2
  51. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cdp/__init__.py +3 -5
  52. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cdp/base.py +1 -3
  53. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/chainlist/base.py +1 -3
  54. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/chainlist/chain_lookup.py +18 -18
  55. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/common/base.py +1 -3
  56. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/common/current_time.py +1 -2
  57. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/base.py +1 -2
  58. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/get_account_details.py +7 -7
  59. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/get_account_feed.py +19 -19
  60. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/get_account_smart_followers.py +7 -7
  61. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/get_sectors.py +3 -3
  62. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/search_accounts.py +9 -9
  63. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/api.py +2 -3
  64. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/base.py +6 -6
  65. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/fetch_news.py +3 -4
  66. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/fetch_price.py +5 -6
  67. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/fetch_top_exchanges.py +3 -4
  68. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/fetch_top_market_cap.py +3 -4
  69. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/fetch_top_volume.py +3 -4
  70. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/fetch_trading_signals.py +4 -5
  71. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptopanic/__init__.py +4 -4
  72. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptopanic/base.py +1 -3
  73. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptopanic/fetch_crypto_news.py +3 -5
  74. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptopanic/fetch_crypto_sentiment.py +3 -3
  75. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dapplooker/base.py +1 -3
  76. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dapplooker/dapplooker_token_data.py +7 -7
  77. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/api.py +6 -9
  78. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/base.py +5 -6
  79. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/coins/fetch_batch_historical_prices.py +6 -8
  80. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/coins/fetch_block.py +4 -6
  81. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/coins/fetch_current_prices.py +6 -8
  82. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/coins/fetch_first_price.py +5 -7
  83. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/coins/fetch_historical_prices.py +7 -9
  84. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/coins/fetch_price_chart.py +7 -9
  85. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/coins/fetch_price_percentage.py +5 -7
  86. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/config/chains.py +1 -3
  87. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/fees/fetch_fees_overview.py +22 -24
  88. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +14 -16
  89. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +6 -8
  90. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +3 -5
  91. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/stablecoins/fetch_stablecoins.py +5 -7
  92. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tests/api_integration.test.py +1 -1
  93. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tvl/fetch_chain_historical_tvl.py +2 -4
  94. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tvl/fetch_chains.py +7 -9
  95. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tvl/fetch_historical_tvl.py +2 -4
  96. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tvl/fetch_protocol.py +30 -36
  97. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tvl/fetch_protocol_current_tvl.py +1 -3
  98. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tvl/fetch_protocols.py +35 -43
  99. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/volumes/fetch_dex_overview.py +40 -46
  100. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/volumes/fetch_dex_summary.py +33 -35
  101. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/volumes/fetch_options_overview.py +22 -26
  102. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/yields/fetch_pool_chart.py +8 -10
  103. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/yields/fetch_pools.py +24 -28
  104. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/__init__.py +2 -2
  105. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/base.py +3 -3
  106. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/get_pair_info.py +2 -2
  107. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/get_token_pairs.py +2 -2
  108. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/get_tokens_info.py +5 -5
  109. intentkit-0.8.17.dev2/skills/dexscreener/model/search_token_response.py +80 -0
  110. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/search_token.py +182 -182
  111. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/utils.py +15 -14
  112. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dune_analytics/__init__.py +4 -4
  113. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dune_analytics/base.py +1 -3
  114. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dune_analytics/fetch_kol_buys.py +4 -4
  115. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dune_analytics/fetch_nation_metrics.py +5 -5
  116. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/base.py +1 -3
  117. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/mention.py +19 -21
  118. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/stats.py +4 -4
  119. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/tokens.py +12 -12
  120. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/utils.py +25 -27
  121. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/__init__.py +2 -2
  122. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/base.py +5 -8
  123. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/best_yield.py +4 -6
  124. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/networks.py +1 -2
  125. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/prices.py +1 -3
  126. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/route.py +1 -3
  127. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/tokens.py +1 -3
  128. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/wallet.py +5 -5
  129. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/erc20/__init__.py +4 -6
  130. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/erc721/__init__.py +4 -6
  131. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/base.py +1 -3
  132. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/clear.py +1 -2
  133. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/crawl.py +9 -10
  134. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/query.py +1 -2
  135. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/scrape.py +7 -8
  136. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/utils.py +13 -13
  137. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/github/base.py +1 -3
  138. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/github/github_search.py +1 -2
  139. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/base.py +1 -3
  140. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/image_generation_animagine_xl.py +7 -8
  141. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/image_generation_arthemy_comics.py +7 -8
  142. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/image_generation_arthemy_real.py +7 -8
  143. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/image_generation_braindance.py +7 -8
  144. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/image_generation_cyber_realistic_xl.py +7 -8
  145. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/image_generation_flux_1_dev.py +7 -8
  146. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/image_generation_sdxl.py +7 -8
  147. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/http/base.py +1 -3
  148. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/http/get.py +7 -7
  149. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/http/post.py +9 -9
  150. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/http/put.py +9 -9
  151. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/lifi/__init__.py +4 -4
  152. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/lifi/base.py +1 -3
  153. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/lifi/token_execute.py +13 -13
  154. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/lifi/token_quote.py +6 -6
  155. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/lifi/utils.py +16 -16
  156. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/__init__.py +3 -3
  157. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/api.py +6 -7
  158. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/base.py +2 -4
  159. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/fetch_chain_portfolio.py +10 -11
  160. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/fetch_nft_portfolio.py +22 -22
  161. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/fetch_solana_portfolio.py +11 -12
  162. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/fetch_wallet_portfolio.py +8 -9
  163. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/morpho/__init__.py +4 -6
  164. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/nation/__init__.py +2 -2
  165. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/nation/base.py +1 -3
  166. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/nation/nft_check.py +3 -4
  167. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/onchain.py +2 -6
  168. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/openai/base.py +1 -3
  169. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/openai/dalle_image_generation.py +1 -3
  170. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/openai/gpt_image_generation.py +2 -3
  171. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/openai/gpt_image_to_image.py +2 -3
  172. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/openai/image_to_text.py +1 -2
  173. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/base.py +6 -6
  174. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/token_balances.py +21 -21
  175. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_approvals.py +7 -7
  176. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_defi_positions.py +3 -3
  177. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_history.py +21 -21
  178. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_net_worth.py +13 -13
  179. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_nfts.py +19 -19
  180. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_profitability.py +7 -7
  181. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_profitability_summary.py +5 -5
  182. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_stats.py +3 -3
  183. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/wallet_swaps.py +19 -19
  184. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/pyth/__init__.py +3 -5
  185. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/slack/base.py +2 -4
  186. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/slack/get_channel.py +8 -8
  187. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/slack/get_message.py +9 -9
  188. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/slack/schedule_message.py +5 -5
  189. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/slack/send_message.py +3 -5
  190. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/base.py +1 -3
  191. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/delete_data.py +4 -4
  192. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/fetch_data.py +12 -12
  193. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/insert_data.py +4 -4
  194. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/invoke_function.py +6 -6
  195. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/update_data.py +6 -6
  196. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/upsert_data.py +4 -4
  197. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/superfluid/__init__.py +4 -6
  198. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/add_autonomous_task.py +8 -10
  199. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/edit_autonomous_task.py +12 -14
  200. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/list_autonomous_tasks.py +1 -3
  201. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/tavily/base.py +1 -3
  202. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/tavily/tavily_extract.py +1 -2
  203. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/tavily/tavily_search.py +1 -3
  204. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/base.py +5 -5
  205. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/erc20_transfers.py +19 -19
  206. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/token_analytics.py +3 -3
  207. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/token_price.py +13 -13
  208. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/token_search.py +9 -9
  209. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/base.py +3 -4
  210. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/follow_user.py +1 -2
  211. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/get_mentions.py +3 -4
  212. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/get_timeline.py +1 -2
  213. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/get_user_by_username.py +1 -2
  214. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/get_user_tweets.py +2 -3
  215. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/like_tweet.py +1 -2
  216. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/post_tweet.py +3 -4
  217. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/reply_tweet.py +3 -4
  218. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/retweet.py +1 -2
  219. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/search_tweets.py +1 -2
  220. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/unrealspeech/base.py +1 -3
  221. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/unrealspeech/text_to_speech.py +8 -8
  222. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_audio/__init__.py +8 -9
  223. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_audio/base.py +3 -4
  224. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_audio/input.py +41 -41
  225. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_audio/venice_audio.py +6 -6
  226. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/__init__.py +5 -5
  227. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/api.py +138 -138
  228. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/base.py +3 -3
  229. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/config.py +33 -35
  230. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_enhance/image_enhance.py +2 -3
  231. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
  232. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
  233. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_base.py +9 -9
  234. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
  235. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
  236. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
  237. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_input.py +158 -158
  238. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
  239. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
  240. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
  241. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
  242. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_upscale/image_upscale.py +3 -3
  243. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
  244. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
  245. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_vision/image_vision.py +2 -2
  246. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_vision/image_vision_base.py +17 -17
  247. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_vision/image_vision_input.py +9 -9
  248. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/utils.py +77 -78
  249. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/base.py +1 -3
  250. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/document_indexer.py +1 -2
  251. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/scrape_and_index.py +4 -5
  252. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/utils.py +25 -26
  253. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/website_indexer.py +10 -11
  254. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/weth/__init__.py +4 -6
  255. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/wow/__init__.py +4 -6
  256. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/x402/__init__.py +2 -2
  257. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/x402/ask_agent.py +7 -7
  258. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/x402/base.py +2 -1
  259. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/x402/http_request.py +10 -10
  260. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/xmtp/base.py +3 -3
  261. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/xmtp/price.py +2 -2
  262. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/xmtp/swap.py +2 -4
  263. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/xmtp/transfer.py +4 -6
  264. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/error.py +2 -2
  265. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/logging.py +2 -4
  266. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/s3.py +8 -9
  267. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/schema.py +5 -5
  268. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/slack_alert.py +7 -8
  269. intentkit-0.8.17.dev1/models/generator.py +0 -347
  270. intentkit-0.8.17.dev1/skills/dexscreener/model/search_token_response.py +0 -82
  271. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/.gitignore +0 -0
  272. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/LICENSE +0 -0
  273. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/MANIFEST.in +0 -0
  274. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/README.md +0 -0
  275. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/abstracts/__init__.py +0 -0
  276. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/abstracts/api.py +0 -0
  277. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/clients/__init__.py +0 -0
  278. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/config/__init__.py +0 -0
  279. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/__init__.py +0 -0
  280. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/api.py +0 -0
  281. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/core/chat.py +0 -0
  282. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/agent_public.json +0 -0
  283. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/agent_schema.json +0 -0
  284. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/base.py +0 -0
  285. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/llm.csv +0 -0
  286. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/models/skills.csv +0 -0
  287. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/__init__.py +0 -0
  288. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/acolyt/__init__.py +0 -0
  289. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/acolyt/acolyt.jpg +0 -0
  290. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/acolyt/schema.json +0 -0
  291. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/aixbt/README.md +0 -0
  292. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/aixbt/__init__.py +0 -0
  293. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/aixbt/aixbt.jpg +0 -0
  294. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/aixbt/schema.json +0 -0
  295. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/allora/__init__.py +0 -0
  296. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/allora/allora.jpeg +0 -0
  297. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/allora/schema.json +0 -0
  298. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/basename/base.py +0 -0
  299. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/basename/basename.svg +0 -0
  300. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/basename/schema.json +0 -0
  301. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/carv/README.md +0 -0
  302. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/carv/carv.webp +0 -0
  303. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/carv/schema.json +0 -0
  304. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/README.md +0 -0
  305. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/__init__.py +0 -0
  306. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/casino.png +0 -0
  307. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/schema.json +0 -0
  308. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/casino/utils.py +0 -0
  309. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cdp/cdp.png +0 -0
  310. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cdp/schema.json +0 -0
  311. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/chainlist/README.md +0 -0
  312. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/chainlist/__init__.py +0 -0
  313. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/chainlist/chainlist.png +0 -0
  314. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/chainlist/schema.json +0 -0
  315. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/common/__init__.py +0 -0
  316. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/common/common.jpg +0 -0
  317. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/common/schema.json +0 -0
  318. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/README.md +0 -0
  319. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/__init__.py +0 -0
  320. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/constants.py +0 -0
  321. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/cookiefun.png +0 -0
  322. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cookiefun/schema.json +0 -0
  323. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/__init__.py +0 -0
  324. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/cryptocompare.png +0 -0
  325. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptocompare/schema.json +0 -0
  326. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptopanic/cryptopanic.png +0 -0
  327. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/cryptopanic/schema.json +0 -0
  328. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dapplooker/README.md +0 -0
  329. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dapplooker/__init__.py +0 -0
  330. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dapplooker/dapplooker.jpg +0 -0
  331. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dapplooker/schema.json +0 -0
  332. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/__init__.py +0 -0
  333. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/coins/__init__.py +0 -0
  334. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/config/__init__.py +0 -0
  335. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/defillama.jpeg +0 -0
  336. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/fees/__init__.py +0 -0
  337. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/schema.json +0 -0
  338. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/stablecoins/__init__.py +0 -0
  339. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tests/__init__.py +0 -0
  340. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tests/api_unit.test.py +0 -0
  341. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/tvl/__init__.py +0 -0
  342. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/volumes/__init__.py +0 -0
  343. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/defillama/yields/__init__.py +0 -0
  344. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/README.md +0 -0
  345. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/dexscreener.png +0 -0
  346. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/model/__init__.py +0 -0
  347. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dexscreener/schema.json +0 -0
  348. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dune_analytics/dune.png +0 -0
  349. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/dune_analytics/schema.json +0 -0
  350. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/README.md +0 -0
  351. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/__init__.py +0 -0
  352. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/elfa.jpg +0 -0
  353. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/elfa/schema.json +0 -0
  354. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/README.md +0 -0
  355. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/abi/__init__.py +0 -0
  356. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/abi/approval.py +0 -0
  357. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/abi/erc20.py +0 -0
  358. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/abi/route.py +0 -0
  359. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/enso.jpg +0 -0
  360. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/enso/schema.json +0 -0
  361. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/erc20/base.py +0 -0
  362. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/erc20/erc20.svg +0 -0
  363. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/erc20/schema.json +0 -0
  364. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/erc721/base.py +0 -0
  365. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/erc721/erc721.svg +0 -0
  366. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/erc721/schema.json +0 -0
  367. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/README.md +0 -0
  368. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/__init__.py +0 -0
  369. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/firecrawl.png +0 -0
  370. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/firecrawl/schema.json +0 -0
  371. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/github/README.md +0 -0
  372. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/github/__init__.py +0 -0
  373. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/github/github.jpg +0 -0
  374. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/github/schema.json +0 -0
  375. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/__init__.py +0 -0
  376. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/heurist.png +0 -0
  377. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/heurist/schema.json +0 -0
  378. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/http/README.md +0 -0
  379. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/http/__init__.py +0 -0
  380. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/http/http.svg +0 -0
  381. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/http/schema.json +0 -0
  382. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/lifi/README.md +0 -0
  383. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/lifi/lifi.png +0 -0
  384. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/lifi/schema.json +0 -0
  385. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/README.md +0 -0
  386. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/moralis.png +0 -0
  387. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/moralis/schema.json +0 -0
  388. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/morpho/base.py +0 -0
  389. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/morpho/morpho.svg +0 -0
  390. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/morpho/schema.json +0 -0
  391. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/nation/nation.png +0 -0
  392. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/nation/schema.json +0 -0
  393. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/openai/__init__.py +0 -0
  394. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/openai/openai.png +0 -0
  395. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/openai/schema.json +0 -0
  396. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/README.md +0 -0
  397. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/__init__.py +0 -0
  398. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/constants.py +0 -0
  399. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/moralis.png +0 -0
  400. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/portfolio/schema.json +0 -0
  401. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/pyth/base.py +0 -0
  402. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/pyth/pyth.svg +0 -0
  403. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/pyth/schema.json +0 -0
  404. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/skills.toml +0 -0
  405. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/slack/__init__.py +0 -0
  406. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/slack/schema.json +0 -0
  407. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/slack/slack.jpg +0 -0
  408. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/__init__.py +0 -0
  409. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/schema.json +0 -0
  410. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/supabase/supabase.svg +0 -0
  411. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/superfluid/base.py +0 -0
  412. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/superfluid/schema.json +0 -0
  413. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/superfluid/superfluid.svg +0 -0
  414. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/__init__.py +0 -0
  415. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/base.py +0 -0
  416. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/delete_autonomous_task.py +0 -0
  417. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/read_agent_api_key.py +0 -0
  418. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/regenerate_agent_api_key.py +0 -0
  419. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/schema.json +0 -0
  420. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/system/system.svg +0 -0
  421. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/tavily/README.md +0 -0
  422. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/tavily/__init__.py +0 -0
  423. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/tavily/schema.json +0 -0
  424. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/tavily/tavily.jpg +0 -0
  425. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/README.md +0 -0
  426. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/__init__.py +0 -0
  427. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/constants.py +0 -0
  428. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/moralis.png +0 -0
  429. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/token/schema.json +0 -0
  430. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/__init__.py +0 -0
  431. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/schema.json +0 -0
  432. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/twitter/twitter.png +0 -0
  433. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/unrealspeech/__init__.py +0 -0
  434. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/unrealspeech/schema.json +0 -0
  435. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/unrealspeech/unrealspeech.jpg +0 -0
  436. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_audio/schema.json +0 -0
  437. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_audio/venice_logo.jpg +0 -0
  438. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/README.md +0 -0
  439. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_enhance/README.md +0 -0
  440. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_enhance/__init__.py +0 -0
  441. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/README.md +0 -0
  442. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_generation/__init__.py +0 -0
  443. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_upscale/README.md +0 -0
  444. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_upscale/__init__.py +0 -0
  445. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_vision/README.md +0 -0
  446. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/image_vision/__init__.py +0 -0
  447. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/schema.json +0 -0
  448. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/venice_image/venice_image.jpg +0 -0
  449. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/README.md +0 -0
  450. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/__init__.py +0 -0
  451. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/langchain.png +0 -0
  452. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/web_scraper/schema.json +0 -0
  453. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/weth/base.py +0 -0
  454. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/weth/schema.json +0 -0
  455. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/weth/weth.svg +0 -0
  456. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/wow/base.py +0 -0
  457. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/wow/schema.json +0 -0
  458. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/wow/wow.svg +0 -0
  459. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/x402/schema.json +0 -0
  460. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/x402/x402.webp +0 -0
  461. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/xmtp/README.md +0 -0
  462. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/xmtp/__init__.py +0 -0
  463. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/xmtp/schema.json +0 -0
  464. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/skills/xmtp/xmtp.png +0 -0
  465. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/__init__.py +0 -0
  466. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/chain.py +0 -0
  467. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/random.py +0 -0
  468. {intentkit-0.8.17.dev1 → intentkit-0.8.17.dev2}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.8.17.dev1
3
+ Version: 0.8.17.dev2
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
5
  Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
6
6
  Project-URL: Repository, https://github.com/crestalnetwork/intentkit
@@ -34,15 +34,14 @@ Classifier: Development Status :: 4 - Beta
34
34
  Classifier: Intended Audience :: Developers
35
35
  Classifier: License :: OSI Approved :: MIT License
36
36
  Classifier: Programming Language :: Python :: 3
37
- Classifier: Programming Language :: Python :: 3.12
37
+ Classifier: Programming Language :: Python :: 3.13
38
38
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
39
39
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
40
- Requires-Python: >=3.12
40
+ Requires-Python: ==3.13.*
41
41
  Requires-Dist: aiohttp>=3.11.16
42
42
  Requires-Dist: aiosqlite>=0.21.0
43
43
  Requires-Dist: asyncpg>=0.30.0
44
44
  Requires-Dist: aws-secretsmanager-caching>=1.1.3
45
- Requires-Dist: bip32>=2.0.0
46
45
  Requires-Dist: boto3<2.0.0,>=1.37.23
47
46
  Requires-Dist: botocore>=1.35.97
48
47
  Requires-Dist: cdp-sdk>=1.31.1
@@ -3,7 +3,7 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.8.17-dev1"
6
+ __version__ = "0.8.17-dev2"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -1,5 +1,4 @@
1
1
  from abc import ABC, abstractmethod
2
- from typing import Dict, Optional
3
2
 
4
3
  from intentkit.models.agent import Agent
5
4
  from intentkit.models.agent_data import AgentData, AgentQuota
@@ -24,7 +23,7 @@ class AgentStoreABC(ABC):
24
23
  self.agent_id = agent_id
25
24
 
26
25
  @abstractmethod
27
- async def get_config(self) -> Optional[Agent]:
26
+ async def get_config(self) -> Agent | None:
28
27
  """Get agent configuration.
29
28
 
30
29
  Returns:
@@ -33,7 +32,7 @@ class AgentStoreABC(ABC):
33
32
  pass
34
33
 
35
34
  @abstractmethod
36
- async def get_data(self) -> Optional[AgentData]:
35
+ async def get_data(self) -> AgentData | None:
37
36
  """Get additional agent data.
38
37
 
39
38
  Returns:
@@ -42,7 +41,7 @@ class AgentStoreABC(ABC):
42
41
  pass
43
42
 
44
43
  @abstractmethod
45
- async def set_data(self, data: Dict) -> None:
44
+ async def set_data(self, data: dict) -> None:
46
45
  """Update agent data.
47
46
 
48
47
  Args:
@@ -51,7 +50,7 @@ class AgentStoreABC(ABC):
51
50
  pass
52
51
 
53
52
  @abstractmethod
54
- async def get_quota(self) -> Optional[AgentQuota]:
53
+ async def get_quota(self) -> AgentQuota | None:
55
54
  """Get agent quota information.
56
55
 
57
56
  Returns:
@@ -1,4 +1,4 @@
1
- from typing import Callable, List
1
+ from collections.abc import Callable
2
2
 
3
3
  from pydantic import BaseModel
4
4
 
@@ -12,19 +12,19 @@ class AgentMessageInput(BaseModel):
12
12
 
13
13
  Attributes:
14
14
  text (str): The main text content of the message or query
15
- images (List[str]): List of image references/URLs to be processed by the agent.
15
+ images (list[str]): List of image references/URLs to be processed by the agent.
16
16
  Empty list if no images are provided.
17
17
  """
18
18
 
19
19
  text: str # required
20
20
  """The main text content or query to be processed by the agent"""
21
21
 
22
- images: List[str] = [] # optional, defaults to empty list
22
+ images: list[str] = [] # optional, defaults to empty list
23
23
  """List of image references or URLs for multimodal processing"""
24
24
 
25
25
 
26
26
  # Define a type hint for the callback that takes three strings and returns a list of strings
27
- AgentExecutionCallback = Callable[[str, AgentMessageInput, str], List[str]]
27
+ AgentExecutionCallback = Callable[[str, AgentMessageInput, str], list[str]]
28
28
  """Callback function type for agent execution.
29
29
 
30
30
  Args:
@@ -33,6 +33,6 @@ Args:
33
33
  thread_id (str): The thread ID for tracking the conversation context
34
34
 
35
35
  Returns:
36
- List[str]: A list of formatted response lines from the agent execution. Each line
36
+ list[str]: A list of formatted response lines from the agent execution. Each line
37
37
  typically contains input/output markers, agent responses, and timing information.
38
38
  """
@@ -1,5 +1,6 @@
1
+ from collections.abc import Callable
1
2
  from enum import Enum
2
- from typing import Any, Callable, Dict, NotRequired, Optional
3
+ from typing import Any, NotRequired
3
4
 
4
5
  from langgraph.prebuilt.chat_agent_executor import AgentState as BaseAgentState
5
6
  from pydantic import BaseModel
@@ -23,20 +24,20 @@ class AgentState(BaseAgentState):
23
24
 
24
25
  context: dict[str, Any]
25
26
  error: NotRequired[AgentError]
26
- __extra__: NotRequired[Dict[str, Any]]
27
+ __extra__: NotRequired[dict[str, Any]]
27
28
 
28
29
 
29
30
  class AgentContext(BaseModel):
30
31
  agent_id: str
31
32
  get_agent: Callable[[], Agent]
32
33
  chat_id: str
33
- user_id: Optional[str] = None
34
- app_id: Optional[str] = None
34
+ user_id: str | None = None
35
+ app_id: str | None = None
35
36
  entrypoint: AuthorType
36
37
  is_private: bool
37
38
  search: bool = False
38
39
  thinking: bool = False
39
- payer: Optional[str] = None
40
+ payer: str | None = None
40
41
 
41
42
  @property
42
43
  def agent(self) -> Agent:
@@ -1,5 +1,5 @@
1
1
  from abc import ABC, abstractmethod
2
- from typing import Any, Dict, Optional
2
+ from typing import Any
3
3
 
4
4
  from intentkit.models.agent import Agent
5
5
  from intentkit.models.agent_data import AgentData, AgentQuota
@@ -20,7 +20,7 @@ class SkillStoreABC(ABC):
20
20
 
21
21
  @staticmethod
22
22
  @abstractmethod
23
- async def get_agent_config(agent_id: str) -> Optional[Agent]:
23
+ async def get_agent_config(agent_id: str) -> Agent | None:
24
24
  """Get agent configuration.
25
25
 
26
26
  Returns:
@@ -30,7 +30,7 @@ class SkillStoreABC(ABC):
30
30
 
31
31
  @staticmethod
32
32
  @abstractmethod
33
- async def get_agent_data(agent_id: str) -> Optional[AgentData]:
33
+ async def get_agent_data(agent_id: str) -> AgentData | None:
34
34
  """Get additional agent data.
35
35
 
36
36
  Returns:
@@ -40,7 +40,7 @@ class SkillStoreABC(ABC):
40
40
 
41
41
  @staticmethod
42
42
  @abstractmethod
43
- async def set_agent_data(agent_id: str, data: Dict) -> None:
43
+ async def set_agent_data(agent_id: str, data: dict) -> None:
44
44
  """Update agent data.
45
45
 
46
46
  Args:
@@ -51,7 +51,7 @@ class SkillStoreABC(ABC):
51
51
 
52
52
  @staticmethod
53
53
  @abstractmethod
54
- async def get_agent_quota(agent_id: str) -> Optional[AgentQuota]:
54
+ async def get_agent_quota(agent_id: str) -> AgentQuota | None:
55
55
  """Get agent quota information.
56
56
 
57
57
  Returns:
@@ -1,5 +1,4 @@
1
1
  from abc import ABC, abstractmethod
2
- from typing import Optional
3
2
 
4
3
  from tweepy.asynchronous import AsyncClient
5
4
 
@@ -15,7 +14,7 @@ class TwitterABC(ABC):
15
14
  use_key = False
16
15
 
17
16
  @abstractmethod
18
- async def get_client(self) -> Optional[AsyncClient]:
17
+ async def get_client(self) -> AsyncClient | None:
19
18
  """Get a configured Tweepy client.
20
19
 
21
20
  Returns:
@@ -25,7 +24,7 @@ class TwitterABC(ABC):
25
24
 
26
25
  @property
27
26
  @abstractmethod
28
- def self_id(self) -> Optional[str]:
27
+ def self_id(self) -> str | None:
29
28
  """Get the Twitter user ID.
30
29
 
31
30
  Returns:
@@ -35,7 +34,7 @@ class TwitterABC(ABC):
35
34
 
36
35
  @property
37
36
  @abstractmethod
38
- def self_username(self) -> Optional[str]:
37
+ def self_username(self) -> str | None:
39
38
  """Get the Twitter username.
40
39
 
41
40
  Returns:
@@ -45,7 +44,7 @@ class TwitterABC(ABC):
45
44
 
46
45
  @property
47
46
  @abstractmethod
48
- def self_name(self) -> Optional[str]:
47
+ def self_name(self) -> str | None:
49
48
  """Get the Twitter display name.
50
49
 
51
50
  Returns:
@@ -1,16 +1,11 @@
1
1
  import asyncio
2
- import json
3
2
  import logging
4
- from typing import Dict, Optional, Tuple
5
3
 
6
- from bip32 import BIP32
7
4
  from cdp import CdpClient, EvmServerAccount # noqa: E402
8
5
  from coinbase_agentkit import ( # noqa: E402
9
6
  CdpEvmWalletProvider,
10
7
  CdpEvmWalletProviderConfig,
11
8
  )
12
- from eth_keys.datatypes import PrivateKey
13
- from eth_utils import to_checksum_address
14
9
 
15
10
  from intentkit.config.config import config
16
11
  from intentkit.models.agent import Agent, AgentTable # noqa: E402
@@ -18,47 +13,12 @@ from intentkit.models.agent_data import AgentData
18
13
  from intentkit.models.db import get_session
19
14
  from intentkit.utils.error import IntentKitAPIError # noqa: E402
20
15
 
21
- _wallet_providers: Dict[str, Tuple[str, str, CdpEvmWalletProvider]] = {}
22
- _cdp_client: Optional[CdpClient] = None
16
+ _wallet_providers: dict[str, tuple[str, str, CdpEvmWalletProvider]] = {}
17
+ _cdp_client: CdpClient | None = None
23
18
 
24
19
  logger = logging.getLogger(__name__)
25
20
 
26
21
 
27
- def bip39_seed_to_eth_keys(seed_hex: str) -> Dict[str, str]:
28
- """
29
- Converts a BIP39 seed to an Ethereum private key, public key, and address.
30
-
31
- Args:
32
- seed_hex: The BIP39 seed in hexadecimal format
33
-
34
- Returns:
35
- Dict containing private_key, public_key, and address
36
- """
37
- # Convert the hex seed to bytes
38
- seed_bytes = bytes.fromhex(seed_hex)
39
-
40
- # Derive the master key from the seed
41
- bip32 = BIP32.from_seed(seed_bytes)
42
-
43
- # Derive the Ethereum address using the standard derivation path
44
- private_key_bytes = bip32.get_privkey_from_path("m/44'/60'/0'/0/0")
45
-
46
- # Create a private key object
47
- private_key = PrivateKey(private_key_bytes)
48
-
49
- # Get the public key
50
- public_key = private_key.public_key
51
-
52
- # Get the Ethereum address
53
- address = public_key.to_address()
54
-
55
- return {
56
- "private_key": private_key.to_hex(),
57
- "public_key": public_key.to_hex(),
58
- "address": to_checksum_address(address),
59
- }
60
-
61
-
62
22
  def get_cdp_client() -> CdpClient:
63
23
  global _cdp_client
64
24
  if _cdp_client:
@@ -88,46 +48,28 @@ def _assert_cdp_wallet_provider(agent: Agent) -> None:
88
48
 
89
49
  async def _ensure_evm_account(
90
50
  agent: Agent, agent_data: AgentData | None = None
91
- ) -> Tuple[EvmServerAccount, AgentData]:
51
+ ) -> tuple[EvmServerAccount, AgentData]:
92
52
  cdp_client = get_cdp_client()
93
53
  agent_data = agent_data or await AgentData.get(agent.id)
94
54
  address = agent_data.evm_wallet_address
95
- account: Optional[EvmServerAccount] = None
55
+ account: EvmServerAccount | None = None
96
56
 
97
57
  if not address:
98
- if agent_data.cdp_wallet_data:
99
- wallet_data = json.loads(agent_data.cdp_wallet_data)
100
- if not isinstance(wallet_data, dict):
101
- raise ValueError("Invalid wallet data format")
102
- if wallet_data.get("default_address_id") and wallet_data.get("seed"):
103
- keys = bip39_seed_to_eth_keys(wallet_data["seed"])
104
- if keys["address"] != wallet_data["default_address_id"]:
105
- raise ValueError(
106
- "Bad wallet data, seed does not match default_address_id"
107
- )
108
- logger.info("Migrating wallet data to v2...")
109
- account = await cdp_client.evm.import_account(
110
- name=agent.id,
111
- private_key=keys["private_key"],
112
- )
113
- address = account.address
114
- logger.info("Migrated wallet data to v2 successfully: %s", address)
115
- if not address:
116
- logger.info("Creating new wallet...")
117
- account = await cdp_client.evm.create_account(
118
- name=agent.id,
119
- )
120
- address = account.address
121
- logger.info("Created new wallet: %s", address)
122
-
123
- agent_data.evm_wallet_address = address
124
- await agent_data.save()
125
- if not agent.slug:
126
- async with get_session() as db:
127
- db_agent = await db.get(AgentTable, agent.id)
128
- if db_agent and not db_agent.slug:
129
- db_agent.slug = agent_data.evm_wallet_address
130
- await db.commit()
58
+ logger.info("Creating new wallet...")
59
+ account = await cdp_client.evm.create_account(
60
+ name=agent.id,
61
+ )
62
+ address = account.address
63
+ logger.info("Created new wallet: %s", address)
64
+
65
+ agent_data.evm_wallet_address = address
66
+ await agent_data.save()
67
+ if not agent.slug:
68
+ async with get_session() as db:
69
+ db_agent = await db.get(AgentTable, agent.id)
70
+ if db_agent and not db_agent.slug:
71
+ db_agent.slug = agent_data.evm_wallet_address
72
+ await db.commit()
131
73
 
132
74
  if account is None:
133
75
  account = await cdp_client.evm.get_account(address=address)
@@ -1,8 +1,8 @@
1
1
  import logging
2
2
  import os
3
3
  import tempfile
4
- from datetime import datetime, timedelta, timezone
5
- from typing import Any, Dict, List, NotRequired, Optional, TypedDict
4
+ from datetime import UTC, datetime, timedelta
5
+ from typing import Any, NotRequired, TypedDict
6
6
  from urllib.parse import urlencode
7
7
 
8
8
  import httpx
@@ -17,8 +17,8 @@ from intentkit.models.redis import get_redis
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
19
 
20
- _clients_linked: Dict[str, "TwitterClient"] = {}
21
- _clients_self_key: Dict[str, "TwitterClient"] = {}
20
+ _clients_linked: dict[str, "TwitterClient"] = {}
21
+ _clients_self_key: dict[str, "TwitterClient"] = {}
22
22
 
23
23
  _VERIFIER_KEY = "intentkit:twitter:code_verifier"
24
24
  _CHALLENGE_KEY = "intentkit:twitter:code_challenge"
@@ -29,7 +29,7 @@ class TwitterMedia(BaseModel):
29
29
 
30
30
  media_key: str
31
31
  type: str
32
- url: Optional[str] = None
32
+ url: str | None = None
33
33
 
34
34
 
35
35
  class TwitterUser(BaseModel):
@@ -58,10 +58,10 @@ class Tweet(BaseModel):
58
58
  id: str
59
59
  text: str
60
60
  author_id: str
61
- author: Optional[TwitterUser] = None
61
+ author: TwitterUser | None = None
62
62
  created_at: datetime
63
- referenced_tweets: Optional[List["Tweet"]] = None
64
- attachments: Optional[List[TwitterMedia]] = None
63
+ referenced_tweets: list["Tweet"] | None = None
64
+ attachments: list[TwitterMedia] | None = None
65
65
 
66
66
 
67
67
  class TwitterClientConfig(TypedDict):
@@ -82,7 +82,7 @@ class TwitterClient(TwitterABC):
82
82
  config: Configuration dictionary that may contain API keys
83
83
  """
84
84
 
85
- def __init__(self, agent_id: str, config: Dict) -> None:
85
+ def __init__(self, agent_id: str, config: dict) -> None:
86
86
  """Initialize the Twitter client.
87
87
 
88
88
  Args:
@@ -90,8 +90,8 @@ class TwitterClient(TwitterABC):
90
90
  config: Configuration dictionary that may contain API keys
91
91
  """
92
92
  self.agent_id = agent_id
93
- self._client: Optional[AsyncClient] = None
94
- self._agent_data: Optional[AgentData] = None
93
+ self._client: AsyncClient | None = None
94
+ self._agent_data: AgentData | None = None
95
95
  self.use_key = _is_self_key(config)
96
96
  self._config = config
97
97
 
@@ -130,7 +130,7 @@ class TwitterClient(TwitterABC):
130
130
  # refresh userinfo if needed
131
131
  if not agent_data.twitter_self_key_refreshed_at or (
132
132
  agent_data.twitter_self_key_refreshed_at
133
- < datetime.now(tz=timezone.utc) - timedelta(days=1)
133
+ < datetime.now(tz=UTC) - timedelta(days=1)
134
134
  ):
135
135
  me = await self._client.get_me(
136
136
  user_auth=self.use_key,
@@ -144,9 +144,7 @@ class TwitterClient(TwitterABC):
144
144
  "twitter_username": me["data"]["username"],
145
145
  "twitter_name": me["data"]["name"],
146
146
  "twitter_is_verified": me["data"]["verified"],
147
- "twitter_self_key_refreshed_at": datetime.now(
148
- tz=timezone.utc
149
- ),
147
+ "twitter_self_key_refreshed_at": datetime.now(tz=UTC),
150
148
  },
151
149
  )
152
150
  agent_data = await self._refresh_agent_data()
@@ -166,9 +164,7 @@ class TwitterClient(TwitterABC):
166
164
  raise Exception(
167
165
  f"[{self.agent_id}] Twitter access token expiration not found"
168
166
  )
169
- if agent_data.twitter_access_token_expires_at <= datetime.now(
170
- tz=timezone.utc
171
- ):
167
+ if agent_data.twitter_access_token_expires_at <= datetime.now(tz=UTC):
172
168
  raise Exception(f"[{self.agent_id}] Twitter access token has expired")
173
169
  self._client = AsyncClient(
174
170
  bearer_token=agent_data.twitter_access_token,
@@ -178,13 +174,9 @@ class TwitterClient(TwitterABC):
178
174
 
179
175
  if not self.use_key:
180
176
  # check if access token has expired
181
- if agent_data.twitter_access_token_expires_at <= datetime.now(
182
- tz=timezone.utc
183
- ):
177
+ if agent_data.twitter_access_token_expires_at <= datetime.now(tz=UTC):
184
178
  agent_data = await self._refresh_agent_data()
185
- if agent_data.twitter_access_token_expires_at <= datetime.now(
186
- tz=timezone.utc
187
- ):
179
+ if agent_data.twitter_access_token_expires_at <= datetime.now(tz=UTC):
188
180
  raise Exception(
189
181
  f"[{self.agent_id}] Twitter access token has expired"
190
182
  )
@@ -197,7 +189,7 @@ class TwitterClient(TwitterABC):
197
189
  return self._client
198
190
 
199
191
  @property
200
- def self_id(self) -> Optional[str]:
192
+ def self_id(self) -> str | None:
201
193
  """Get the Twitter user ID.
202
194
 
203
195
  Returns:
@@ -210,7 +202,7 @@ class TwitterClient(TwitterABC):
210
202
  return self._agent_data.twitter_id
211
203
 
212
204
  @property
213
- def self_username(self) -> Optional[str]:
205
+ def self_username(self) -> str | None:
214
206
  """Get the Twitter username.
215
207
 
216
208
  Returns:
@@ -223,7 +215,7 @@ class TwitterClient(TwitterABC):
223
215
  return self._agent_data.twitter_username
224
216
 
225
217
  @property
226
- def self_name(self) -> Optional[str]:
218
+ def self_name(self) -> str | None:
227
219
  """Get the Twitter display name.
228
220
 
229
221
  Returns:
@@ -236,7 +228,7 @@ class TwitterClient(TwitterABC):
236
228
  return self._agent_data.twitter_name
237
229
 
238
230
  @property
239
- def self_is_verified(self) -> Optional[bool]:
231
+ def self_is_verified(self) -> bool | None:
240
232
  """Get the Twitter account verification status.
241
233
 
242
234
  Returns:
@@ -248,14 +240,14 @@ class TwitterClient(TwitterABC):
248
240
  return None
249
241
  return self._agent_data.twitter_is_verified
250
242
 
251
- def process_tweets_response(self, response: Dict[str, Any]) -> List[Tweet]:
243
+ def process_tweets_response(self, response: dict[str, Any]) -> list[Tweet]:
252
244
  """Process Twitter API response and convert it to a list of Tweet objects.
253
245
 
254
246
  Args:
255
247
  response: Raw Twitter API response containing tweets data and includes.
256
248
 
257
249
  Returns:
258
- List[Tweet]: List of processed Tweet objects.
250
+ list[Tweet]: List of processed Tweet objects.
259
251
  """
260
252
  result = []
261
253
  if not response.get("data"):
@@ -347,7 +339,7 @@ class TwitterClient(TwitterABC):
347
339
 
348
340
  return result
349
341
 
350
- async def upload_media(self, agent_id: str, image_url: str) -> List[str]:
342
+ async def upload_media(self, agent_id: str, image_url: str) -> list[str]:
351
343
  """Upload media to Twitter and return the media IDs.
352
344
 
353
345
  Args:
@@ -355,7 +347,7 @@ class TwitterClient(TwitterABC):
355
347
  image_url: The URL of the image to upload.
356
348
 
357
349
  Returns:
358
- List[str]: A list of media IDs for the uploaded media.
350
+ list[str]: A list of media IDs for the uploaded media.
359
351
 
360
352
  Raises:
361
353
  ValueError: If there's an error uploading the media.
@@ -428,11 +420,11 @@ class TwitterClient(TwitterABC):
428
420
  return media_ids
429
421
 
430
422
 
431
- def _is_self_key(config: Dict) -> bool:
423
+ def _is_self_key(config: dict) -> bool:
432
424
  return config.get("api_key_provider") == "agent_owner"
433
425
 
434
426
 
435
- def get_twitter_client(agent_id: str, config: Dict) -> "TwitterClient":
427
+ def get_twitter_client(agent_id: str, config: dict) -> "TwitterClient":
436
428
  if _is_self_key(config):
437
429
  if agent_id not in _clients_self_key:
438
430
  _clients_self_key[agent_id] = TwitterClient(agent_id, config)
@@ -1,12 +1,10 @@
1
- from typing import Dict
2
-
3
1
  from web3 import Web3
4
2
 
5
3
  from intentkit.config.config import config
6
4
  from intentkit.utils.chain import ChainProvider
7
5
 
8
6
  # Global cache for Web3 clients by network_id
9
- _web3_client_cache: Dict[str, Web3] = {}
7
+ _web3_client_cache: dict[str, Web3] = {}
10
8
 
11
9
 
12
10
  def get_web3_client(network_id: str) -> Web3:
@@ -109,6 +109,10 @@ class Config:
109
109
  self.tg_server_host = self.load("TG_SERVER_HOST", "127.0.0.1")
110
110
  self.tg_server_port = self.load("TG_SERVER_PORT", "8081")
111
111
  self.tg_new_agent_poll_interval = self.load("TG_NEW_AGENT_POLL_INTERVAL", "60")
112
+ # Discord server settings
113
+ self.discord_new_agent_poll_interval = self.load(
114
+ "DISCORD_NEW_AGENT_POLL_INTERVAL", "30"
115
+ )
112
116
  # Twitter
113
117
  self.twitter_oauth2_client_id = self.load("TWITTER_OAUTH2_CLIENT_ID")
114
118
  self.twitter_oauth2_client_secret = self.load("TWITTER_OAUTH2_CLIENT_SECRET")