intentkit 0.6.9__tar.gz → 0.8.22__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 (510) hide show
  1. {intentkit-0.6.9 → intentkit-0.8.22}/.gitignore +0 -3
  2. intentkit-0.8.22/LICENSE +21 -0
  3. {intentkit-0.6.9 → intentkit-0.8.22}/PKG-INFO +19 -19
  4. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/MANIFEST.in +1 -2
  5. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/__init__.py +6 -4
  6. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/abstracts/agent.py +4 -5
  7. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/abstracts/engine.py +5 -5
  8. intentkit-0.8.22/intentkit/abstracts/graph.py +48 -0
  9. intentkit-0.8.22/intentkit/abstracts/skill.py +60 -0
  10. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/abstracts/twitter.py +4 -5
  11. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/clients/__init__.py +5 -2
  12. intentkit-0.8.22/intentkit/clients/cdp.py +128 -0
  13. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/clients/twitter.py +83 -62
  14. intentkit-0.8.22/intentkit/clients/web3.py +29 -0
  15. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/config/config.py +58 -21
  16. intentkit-0.8.22/intentkit/core/agent.py +741 -0
  17. intentkit-0.8.22/intentkit/core/api.py +100 -0
  18. intentkit-0.8.22/intentkit/core/asset.py +267 -0
  19. intentkit-0.8.22/intentkit/core/chat.py +51 -0
  20. intentkit-0.8.22/intentkit/core/client.py +85 -0
  21. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/core/credit.py +499 -140
  22. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/core/engine.py +282 -380
  23. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/core/node.py +20 -31
  24. intentkit-0.8.22/intentkit/core/prompt.py +462 -0
  25. intentkit-0.8.22/intentkit/core/scheduler.py +92 -0
  26. intentkit-0.8.22/intentkit/core/statistics.py +168 -0
  27. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/agent.py +1175 -832
  28. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/agent_data.py +71 -40
  29. intentkit-0.8.22/intentkit/models/agent_public.json +98 -0
  30. intentkit-0.8.22/intentkit/models/agent_schema.json +382 -0
  31. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/app_setting.py +99 -35
  32. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/chat.py +85 -28
  33. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/conversation.py +11 -10
  34. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/credit.py +366 -77
  35. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/db.py +28 -9
  36. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/db_mig.py +4 -3
  37. intentkit-0.8.22/intentkit/models/llm.csv +28 -0
  38. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/llm.py +194 -304
  39. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/redis.py +6 -4
  40. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/skill.py +190 -75
  41. intentkit-0.8.22/intentkit/models/skills.csv +174 -0
  42. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/user.py +110 -27
  43. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/acolyt/__init__.py +2 -9
  44. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/acolyt/ask.py +4 -8
  45. intentkit-0.8.22/intentkit/skills/acolyt/base.py +33 -0
  46. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/acolyt/schema.json +4 -3
  47. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/aixbt/__init__.py +4 -19
  48. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/aixbt/base.py +1 -7
  49. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/aixbt/projects.py +25 -50
  50. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/aixbt/schema.json +4 -4
  51. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/allora/__init__.py +2 -9
  52. intentkit-0.8.22/intentkit/skills/allora/base.py +33 -0
  53. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/allora/price.py +5 -8
  54. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/allora/schema.json +3 -2
  55. intentkit-0.8.22/intentkit/skills/base.py +364 -0
  56. intentkit-0.8.22/intentkit/skills/basename/__init__.py +51 -0
  57. intentkit-0.8.22/intentkit/skills/basename/base.py +11 -0
  58. intentkit-0.8.22/intentkit/skills/basename/basename.svg +11 -0
  59. intentkit-0.8.22/intentkit/skills/basename/schema.json +58 -0
  60. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/carv/__init__.py +115 -121
  61. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/carv/base.py +184 -183
  62. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/carv/fetch_news.py +90 -92
  63. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/carv/onchain_query.py +162 -164
  64. intentkit-0.8.22/intentkit/skills/carv/schema.json +134 -0
  65. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/carv/token_info_and_price.py +108 -110
  66. intentkit-0.8.22/intentkit/skills/casino/README.md +254 -0
  67. intentkit-0.8.22/intentkit/skills/casino/__init__.py +86 -0
  68. intentkit-0.8.22/intentkit/skills/casino/base.py +17 -0
  69. intentkit-0.8.22/intentkit/skills/casino/casino.png +0 -0
  70. intentkit-0.8.22/intentkit/skills/casino/deck_draw.py +127 -0
  71. intentkit-0.8.22/intentkit/skills/casino/deck_shuffle.py +118 -0
  72. intentkit-0.8.22/intentkit/skills/casino/dice_roll.py +100 -0
  73. intentkit-0.8.22/intentkit/skills/casino/schema.json +77 -0
  74. intentkit-0.8.22/intentkit/skills/casino/utils.py +107 -0
  75. intentkit-0.8.22/intentkit/skills/cdp/__init__.py +78 -0
  76. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cdp/base.py +1 -7
  77. intentkit-0.8.22/intentkit/skills/cdp/schema.json +122 -0
  78. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/chainlist/__init__.py +2 -7
  79. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/chainlist/base.py +1 -7
  80. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/chainlist/chain_lookup.py +18 -19
  81. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/chainlist/schema.json +3 -5
  82. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/common/__init__.py +2 -9
  83. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/common/base.py +1 -7
  84. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/common/current_time.py +2 -4
  85. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/common/schema.json +2 -2
  86. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/__init__.py +6 -9
  87. intentkit-0.8.22/intentkit/skills/cookiefun/base.py +44 -0
  88. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/get_account_details.py +8 -10
  89. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/get_account_feed.py +20 -22
  90. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/get_account_smart_followers.py +8 -10
  91. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/get_sectors.py +4 -5
  92. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/schema.json +1 -3
  93. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/search_accounts.py +10 -12
  94. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/__init__.py +7 -24
  95. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/api.py +2 -3
  96. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/base.py +11 -25
  97. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/fetch_news.py +7 -9
  98. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/fetch_price.py +9 -11
  99. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/fetch_top_exchanges.py +7 -9
  100. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/fetch_top_market_cap.py +7 -9
  101. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/fetch_top_volume.py +7 -9
  102. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/fetch_trading_signals.py +8 -10
  103. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/schema.json +3 -3
  104. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptopanic/__init__.py +7 -10
  105. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptopanic/base.py +51 -51
  106. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptopanic/fetch_crypto_news.py +146 -153
  107. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptopanic/fetch_crypto_sentiment.py +131 -136
  108. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptopanic/schema.json +105 -103
  109. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dapplooker/__init__.py +2 -9
  110. intentkit-0.8.22/intentkit/skills/dapplooker/base.py +31 -0
  111. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dapplooker/dapplooker_token_data.py +9 -11
  112. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dapplooker/schema.json +3 -5
  113. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/__init__.py +24 -74
  114. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/api.py +6 -9
  115. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/base.py +11 -21
  116. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/coins/fetch_batch_historical_prices.py +9 -12
  117. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/coins/fetch_block.py +8 -11
  118. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/coins/fetch_current_prices.py +9 -14
  119. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/coins/fetch_first_price.py +8 -13
  120. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/coins/fetch_historical_prices.py +10 -13
  121. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/coins/fetch_price_chart.py +10 -15
  122. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/coins/fetch_price_percentage.py +8 -13
  123. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/config/chains.py +1 -3
  124. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/fees/fetch_fees_overview.py +26 -29
  125. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/schema.json +5 -1
  126. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +18 -21
  127. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +9 -12
  128. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +7 -10
  129. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/stablecoins/fetch_stablecoins.py +9 -12
  130. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tests/api_integration.test.py +1 -1
  131. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tvl/fetch_chain_historical_tvl.py +6 -11
  132. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tvl/fetch_chains.py +11 -14
  133. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tvl/fetch_historical_tvl.py +6 -9
  134. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tvl/fetch_protocol.py +34 -43
  135. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tvl/fetch_protocol_current_tvl.py +5 -10
  136. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tvl/fetch_protocols.py +39 -48
  137. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/volumes/fetch_dex_overview.py +44 -51
  138. intentkit-0.8.22/intentkit/skills/defillama/volumes/fetch_dex_summary.py +118 -0
  139. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/volumes/fetch_options_overview.py +26 -31
  140. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/yields/fetch_pool_chart.py +12 -17
  141. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/yields/fetch_pools.py +28 -33
  142. intentkit-0.8.22/intentkit/skills/dexscreener/README.md +154 -0
  143. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dexscreener/__init__.py +97 -93
  144. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dexscreener/base.py +125 -133
  145. intentkit-0.8.22/intentkit/skills/dexscreener/get_pair_info.py +158 -0
  146. intentkit-0.8.22/intentkit/skills/dexscreener/get_token_pairs.py +165 -0
  147. intentkit-0.8.22/intentkit/skills/dexscreener/get_tokens_info.py +212 -0
  148. intentkit-0.8.22/intentkit/skills/dexscreener/model/search_token_response.py +80 -0
  149. intentkit-0.8.22/intentkit/skills/dexscreener/schema.json +91 -0
  150. intentkit-0.8.22/intentkit/skills/dexscreener/search_token.py +182 -0
  151. intentkit-0.8.22/intentkit/skills/dexscreener/utils.py +420 -0
  152. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dune_analytics/__init__.py +7 -9
  153. intentkit-0.8.22/intentkit/skills/dune_analytics/base.py +48 -0
  154. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dune_analytics/fetch_kol_buys.py +123 -128
  155. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dune_analytics/fetch_nation_metrics.py +232 -237
  156. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dune_analytics/schema.json +104 -99
  157. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/elfa/__init__.py +5 -18
  158. intentkit-0.8.22/intentkit/skills/elfa/base.py +34 -0
  159. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/elfa/mention.py +21 -28
  160. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/elfa/schema.json +3 -2
  161. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/elfa/stats.py +6 -10
  162. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/elfa/tokens.py +13 -16
  163. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/elfa/utils.py +26 -28
  164. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/__init__.py +11 -31
  165. intentkit-0.8.22/intentkit/skills/enso/base.py +94 -0
  166. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/best_yield.py +17 -28
  167. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/networks.py +8 -16
  168. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/prices.py +12 -18
  169. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/route.py +35 -42
  170. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/schema.json +3 -2
  171. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/tokens.py +30 -42
  172. intentkit-0.8.22/intentkit/skills/enso/wallet.py +264 -0
  173. intentkit-0.8.22/intentkit/skills/erc20/__init__.py +50 -0
  174. intentkit-0.8.22/intentkit/skills/erc20/base.py +11 -0
  175. intentkit-0.8.22/intentkit/skills/erc20/erc20.svg +5 -0
  176. intentkit-0.8.22/intentkit/skills/erc20/schema.json +74 -0
  177. intentkit-0.8.22/intentkit/skills/erc721/__init__.py +53 -0
  178. intentkit-0.8.22/intentkit/skills/erc721/base.py +11 -0
  179. intentkit-0.8.22/intentkit/skills/erc721/erc721.svg +5 -0
  180. intentkit-0.8.22/intentkit/skills/erc721/schema.json +90 -0
  181. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/README.md +11 -5
  182. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/__init__.py +5 -18
  183. intentkit-0.8.22/intentkit/skills/firecrawl/base.py +31 -0
  184. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/clear.py +5 -11
  185. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/crawl.py +25 -26
  186. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/query.py +11 -12
  187. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/schema.json +6 -8
  188. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/scrape.py +156 -47
  189. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/utils.py +50 -42
  190. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/github/__init__.py +2 -7
  191. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/github/base.py +1 -7
  192. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/github/github_search.py +2 -5
  193. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/github/schema.json +3 -4
  194. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/__init__.py +8 -27
  195. intentkit-0.8.22/intentkit/skills/heurist/base.py +36 -0
  196. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/image_generation_animagine_xl.py +15 -17
  197. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/image_generation_arthemy_comics.py +15 -17
  198. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/image_generation_arthemy_real.py +15 -17
  199. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/image_generation_braindance.py +15 -17
  200. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/image_generation_cyber_realistic_xl.py +15 -17
  201. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/image_generation_flux_1_dev.py +15 -17
  202. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/image_generation_sdxl.py +15 -17
  203. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/schema.json +2 -2
  204. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/http/__init__.py +4 -15
  205. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/http/base.py +1 -7
  206. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/http/get.py +21 -18
  207. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/http/post.py +23 -20
  208. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/http/put.py +23 -20
  209. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/http/schema.json +4 -5
  210. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/lifi/__init__.py +8 -13
  211. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/lifi/base.py +1 -7
  212. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/lifi/schema.json +17 -8
  213. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/lifi/token_execute.py +37 -33
  214. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/lifi/token_quote.py +8 -12
  215. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/lifi/utils.py +104 -51
  216. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/__init__.py +6 -10
  217. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/api.py +6 -7
  218. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/base.py +18 -9
  219. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/fetch_chain_portfolio.py +10 -11
  220. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/fetch_nft_portfolio.py +22 -22
  221. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/fetch_solana_portfolio.py +11 -12
  222. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/fetch_wallet_portfolio.py +8 -9
  223. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/schema.json +7 -2
  224. intentkit-0.8.22/intentkit/skills/morpho/__init__.py +52 -0
  225. intentkit-0.8.22/intentkit/skills/morpho/base.py +11 -0
  226. intentkit-0.8.22/intentkit/skills/morpho/morpho.svg +12 -0
  227. intentkit-0.8.22/intentkit/skills/morpho/schema.json +73 -0
  228. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/nation/__init__.py +4 -9
  229. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/nation/base.py +5 -10
  230. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/nation/nft_check.py +4 -8
  231. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/nation/schema.json +4 -3
  232. intentkit-0.8.22/intentkit/skills/onchain.py +23 -0
  233. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/openai/__init__.py +17 -18
  234. intentkit-0.8.22/intentkit/skills/openai/base.py +37 -0
  235. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/openai/dalle_image_generation.py +4 -8
  236. intentkit-0.8.22/intentkit/skills/openai/gpt_avatar_generator.py +102 -0
  237. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/openai/gpt_image_generation.py +5 -8
  238. intentkit-0.8.22/intentkit/skills/openai/gpt_image_mini_generator.py +92 -0
  239. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/openai/gpt_image_to_image.py +5 -8
  240. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/openai/image_to_text.py +5 -9
  241. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/openai/schema.json +34 -3
  242. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/__init__.py +11 -35
  243. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/base.py +37 -22
  244. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/schema.json +3 -5
  245. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/token_balances.py +23 -25
  246. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_approvals.py +18 -21
  247. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_defi_positions.py +6 -7
  248. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_history.py +32 -34
  249. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_net_worth.py +15 -17
  250. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_nfts.py +21 -23
  251. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_profitability.py +19 -21
  252. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_profitability_summary.py +7 -9
  253. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_stats.py +5 -7
  254. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/wallet_swaps.py +21 -23
  255. intentkit-0.8.22/intentkit/skills/pyth/__init__.py +50 -0
  256. intentkit-0.8.22/intentkit/skills/pyth/base.py +11 -0
  257. intentkit-0.8.22/intentkit/skills/pyth/pyth.svg +6 -0
  258. intentkit-0.8.22/intentkit/skills/pyth/schema.json +75 -0
  259. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/skills.toml +40 -0
  260. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/slack/__init__.py +5 -17
  261. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/slack/base.py +20 -8
  262. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/slack/get_channel.py +11 -12
  263. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/slack/get_message.py +12 -13
  264. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/slack/schedule_message.py +8 -9
  265. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/slack/schema.json +2 -2
  266. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/slack/send_message.py +6 -9
  267. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/__init__.py +7 -23
  268. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/base.py +9 -13
  269. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/delete_data.py +6 -10
  270. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/fetch_data.py +14 -18
  271. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/insert_data.py +6 -10
  272. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/invoke_function.py +8 -12
  273. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/schema.json +2 -3
  274. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/update_data.py +8 -12
  275. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/upsert_data.py +6 -10
  276. intentkit-0.8.22/intentkit/skills/superfluid/__init__.py +53 -0
  277. intentkit-0.8.22/intentkit/skills/superfluid/base.py +11 -0
  278. intentkit-0.8.22/intentkit/skills/superfluid/schema.json +89 -0
  279. intentkit-0.8.22/intentkit/skills/superfluid/superfluid.svg +6 -0
  280. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/__init__.py +7 -24
  281. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/add_autonomous_task.py +11 -15
  282. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/delete_autonomous_task.py +3 -5
  283. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/edit_autonomous_task.py +15 -21
  284. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/list_autonomous_tasks.py +4 -8
  285. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/read_agent_api_key.py +8 -7
  286. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/regenerate_agent_api_key.py +8 -9
  287. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/schema.json +6 -8
  288. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/tavily/__init__.py +3 -12
  289. intentkit-0.8.22/intentkit/skills/tavily/base.py +31 -0
  290. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/tavily/schema.json +3 -5
  291. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/tavily/tavily_extract.py +8 -11
  292. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/tavily/tavily_search.py +12 -12
  293. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/__init__.py +5 -10
  294. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/base.py +11 -17
  295. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/erc20_transfers.py +21 -23
  296. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/schema.json +3 -6
  297. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/token_analytics.py +5 -7
  298. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/token_price.py +15 -17
  299. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/token_search.py +11 -13
  300. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/__init__.py +11 -35
  301. intentkit-0.8.22/intentkit/skills/twitter/base.py +97 -0
  302. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/follow_user.py +6 -10
  303. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/get_mentions.py +9 -16
  304. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/get_timeline.py +8 -16
  305. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/get_user_by_username.py +6 -10
  306. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/get_user_tweets.py +9 -17
  307. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/like_tweet.py +6 -10
  308. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/post_tweet.py +25 -15
  309. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/reply_tweet.py +23 -15
  310. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/retweet.py +6 -10
  311. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/schema.json +1 -0
  312. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/search_tweets.py +8 -16
  313. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/unrealspeech/__init__.py +2 -7
  314. intentkit-0.8.22/intentkit/skills/unrealspeech/base.py +31 -0
  315. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/unrealspeech/schema.json +2 -5
  316. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/unrealspeech/text_to_speech.py +11 -11
  317. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_audio/__init__.py +98 -106
  318. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_audio/base.py +117 -119
  319. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_audio/input.py +41 -41
  320. intentkit-0.8.22/intentkit/skills/venice_audio/schema.json +151 -0
  321. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_audio/venice_audio.py +255 -240
  322. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/__init__.py +147 -154
  323. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/api.py +138 -138
  324. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/base.py +185 -188
  325. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/config.py +33 -35
  326. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_enhance/image_enhance.py +77 -80
  327. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
  328. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
  329. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_base.py +115 -117
  330. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
  331. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
  332. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
  333. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_input.py +158 -158
  334. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
  335. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
  336. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
  337. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
  338. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_upscale/image_upscale.py +88 -90
  339. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
  340. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
  341. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_vision/image_vision.py +98 -100
  342. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_vision/image_vision_base.py +17 -17
  343. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_vision/image_vision_input.py +9 -9
  344. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/schema.json +267 -267
  345. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/utils.py +77 -78
  346. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/web_scraper/__init__.py +5 -18
  347. intentkit-0.8.22/intentkit/skills/web_scraper/base.py +35 -0
  348. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/web_scraper/document_indexer.py +10 -11
  349. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/web_scraper/schema.json +2 -6
  350. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/web_scraper/scrape_and_index.py +29 -32
  351. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/web_scraper/utils.py +62 -63
  352. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/web_scraper/website_indexer.py +24 -28
  353. intentkit-0.8.22/intentkit/skills/weth/__init__.py +49 -0
  354. intentkit-0.8.22/intentkit/skills/weth/base.py +11 -0
  355. intentkit-0.8.22/intentkit/skills/weth/schema.json +58 -0
  356. intentkit-0.8.22/intentkit/skills/weth/weth.svg +6 -0
  357. intentkit-0.8.22/intentkit/skills/wow/__init__.py +51 -0
  358. intentkit-0.8.22/intentkit/skills/wow/base.py +11 -0
  359. intentkit-0.8.22/intentkit/skills/wow/schema.json +89 -0
  360. intentkit-0.8.22/intentkit/skills/wow/wow.svg +7 -0
  361. intentkit-0.8.22/intentkit/skills/x402/__init__.py +61 -0
  362. intentkit-0.8.22/intentkit/skills/x402/ask_agent.py +98 -0
  363. intentkit-0.8.22/intentkit/skills/x402/base.py +99 -0
  364. intentkit-0.8.22/intentkit/skills/x402/http_request.py +117 -0
  365. intentkit-0.8.22/intentkit/skills/x402/schema.json +45 -0
  366. intentkit-0.8.22/intentkit/skills/x402/x402.webp +0 -0
  367. intentkit-0.8.22/intentkit/skills/xmtp/README.md +110 -0
  368. intentkit-0.8.22/intentkit/skills/xmtp/__init__.py +87 -0
  369. intentkit-0.8.22/intentkit/skills/xmtp/base.py +74 -0
  370. intentkit-0.8.22/intentkit/skills/xmtp/price.py +77 -0
  371. intentkit-0.8.22/intentkit/skills/xmtp/schema.json +73 -0
  372. intentkit-0.8.22/intentkit/skills/xmtp/swap.py +210 -0
  373. intentkit-0.8.22/intentkit/skills/xmtp/transfer.py +205 -0
  374. intentkit-0.8.22/intentkit/skills/xmtp/xmtp.png +0 -0
  375. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/utils/chain.py +3 -3
  376. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/utils/error.py +14 -1
  377. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/utils/logging.py +2 -4
  378. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/utils/s3.py +59 -7
  379. intentkit-0.8.22/intentkit/utils/schema.py +100 -0
  380. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/utils/slack_alert.py +7 -8
  381. intentkit-0.8.22/intentkit/uv.lock +3377 -0
  382. intentkit-0.8.22/pyproject.toml +142 -0
  383. intentkit-0.6.9/abstracts/exception.py +0 -9
  384. intentkit-0.6.9/abstracts/graph.py +0 -25
  385. intentkit-0.6.9/abstracts/skill.py +0 -198
  386. intentkit-0.6.9/clients/cdp.py +0 -154
  387. intentkit-0.6.9/core/agent.py +0 -464
  388. intentkit-0.6.9/core/api.py +0 -40
  389. intentkit-0.6.9/core/client.py +0 -45
  390. intentkit-0.6.9/core/prompt.py +0 -57
  391. intentkit-0.6.9/core/skill.py +0 -200
  392. intentkit-0.6.9/models/agent_schema.json +0 -741
  393. intentkit-0.6.9/models/generator.py +0 -347
  394. intentkit-0.6.9/pyproject.toml +0 -119
  395. intentkit-0.6.9/skills/acolyt/base.py +0 -28
  396. intentkit-0.6.9/skills/allora/base.py +0 -28
  397. intentkit-0.6.9/skills/base.py +0 -194
  398. intentkit-0.6.9/skills/carv/schema.json +0 -137
  399. intentkit-0.6.9/skills/cdp/__init__.py +0 -140
  400. intentkit-0.6.9/skills/cdp/get_balance.py +0 -110
  401. intentkit-0.6.9/skills/cdp/schema.json +0 -425
  402. intentkit-0.6.9/skills/cdp/swap.py +0 -121
  403. intentkit-0.6.9/skills/cookiefun/base.py +0 -41
  404. intentkit-0.6.9/skills/dapplooker/base.py +0 -26
  405. intentkit-0.6.9/skills/defillama/volumes/fetch_dex_summary.py +0 -123
  406. intentkit-0.6.9/skills/dexscreener/model/search_token_response.py +0 -82
  407. intentkit-0.6.9/skills/dexscreener/schema.json +0 -48
  408. intentkit-0.6.9/skills/dexscreener/search_token.py +0 -321
  409. intentkit-0.6.9/skills/dune_analytics/base.py +0 -46
  410. intentkit-0.6.9/skills/elfa/base.py +0 -28
  411. intentkit-0.6.9/skills/enso/base.py +0 -67
  412. intentkit-0.6.9/skills/enso/wallet.py +0 -385
  413. intentkit-0.6.9/skills/firecrawl/base.py +0 -28
  414. intentkit-0.6.9/skills/heurist/base.py +0 -26
  415. intentkit-0.6.9/skills/moralis/tests/test_wallet.py +0 -511
  416. intentkit-0.6.9/skills/openai/base.py +0 -32
  417. intentkit-0.6.9/skills/tavily/base.py +0 -27
  418. intentkit-0.6.9/skills/twitter/base.py +0 -68
  419. intentkit-0.6.9/skills/unrealspeech/base.py +0 -21
  420. intentkit-0.6.9/skills/venice_audio/schema.json +0 -152
  421. intentkit-0.6.9/skills/venice_image/image_vision/__init__.py +0 -0
  422. intentkit-0.6.9/skills/web_scraper/base.py +0 -21
  423. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/LICENSE +0 -0
  424. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/README.md +0 -0
  425. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/abstracts/__init__.py +0 -0
  426. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/abstracts/api.py +0 -0
  427. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/config/__init__.py +0 -0
  428. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/core/__init__.py +0 -0
  429. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/models/base.py +0 -0
  430. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/__init__.py +0 -0
  431. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/acolyt/acolyt.jpg +0 -0
  432. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/aixbt/README.md +0 -0
  433. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/aixbt/aixbt.jpg +0 -0
  434. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/allora/allora.jpeg +0 -0
  435. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/carv/README.md +0 -0
  436. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/carv/carv.webp +0 -0
  437. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cdp/cdp.png +0 -0
  438. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/chainlist/README.md +0 -0
  439. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/chainlist/chainlist.png +0 -0
  440. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/common/common.jpg +0 -0
  441. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/README.md +0 -0
  442. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/constants.py +0 -0
  443. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cookiefun/cookiefun.png +0 -0
  444. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptocompare/cryptocompare.png +0 -0
  445. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/cryptopanic/cryptopanic.png +0 -0
  446. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dapplooker/README.md +0 -0
  447. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dapplooker/dapplooker.jpg +0 -0
  448. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/coins/__init__.py +0 -0
  449. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/config/__init__.py +0 -0
  450. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/defillama.jpeg +0 -0
  451. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/fees/__init__.py +0 -0
  452. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/stablecoins/__init__.py +0 -0
  453. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tests/__init__.py +0 -0
  454. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tests/api_unit.test.py +0 -0
  455. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/tvl/__init__.py +0 -0
  456. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/volumes/__init__.py +0 -0
  457. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/defillama/yields/__init__.py +0 -0
  458. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dexscreener/dexscreener.png +0 -0
  459. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dexscreener/model/__init__.py +0 -0
  460. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/dune_analytics/dune.png +0 -0
  461. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/elfa/README.md +0 -0
  462. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/elfa/elfa.jpg +0 -0
  463. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/README.md +0 -0
  464. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/abi/__init__.py +0 -0
  465. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/abi/approval.py +0 -0
  466. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/abi/erc20.py +0 -0
  467. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/abi/route.py +0 -0
  468. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/enso/enso.jpg +0 -0
  469. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/firecrawl/firecrawl.png +0 -0
  470. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/github/README.md +0 -0
  471. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/github/github.jpg +0 -0
  472. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/heurist/heurist.png +0 -0
  473. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/http/README.md +0 -0
  474. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/http/http.svg +0 -0
  475. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/lifi/README.md +0 -0
  476. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/lifi/lifi.png +0 -0
  477. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/README.md +0 -0
  478. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/moralis/moralis.png +0 -0
  479. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/nation/nation.png +0 -0
  480. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/openai/openai.png +0 -0
  481. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/README.md +0 -0
  482. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/constants.py +0 -0
  483. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/portfolio/moralis.png +0 -0
  484. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/slack/slack.jpg +0 -0
  485. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/supabase/supabase.svg +0 -0
  486. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/base.py +0 -0
  487. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/system/system.svg +0 -0
  488. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/tavily/README.md +0 -0
  489. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/tavily/tavily.jpg +0 -0
  490. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/README.md +0 -0
  491. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/constants.py +0 -0
  492. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/token/moralis.png +0 -0
  493. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/twitter/twitter.png +0 -0
  494. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/unrealspeech/unrealspeech.jpg +0 -0
  495. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_audio/venice_logo.jpg +0 -0
  496. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/README.md +0 -0
  497. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_enhance/README.md +0 -0
  498. {intentkit-0.6.9/skills/moralis/tests → intentkit-0.8.22/intentkit/skills/venice_image/image_enhance}/__init__.py +0 -0
  499. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_generation/README.md +0 -0
  500. {intentkit-0.6.9/skills/venice_image/image_enhance → intentkit-0.8.22/intentkit/skills/venice_image/image_generation}/__init__.py +0 -0
  501. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_upscale/README.md +0 -0
  502. {intentkit-0.6.9/skills/venice_image/image_generation → intentkit-0.8.22/intentkit/skills/venice_image/image_upscale}/__init__.py +0 -0
  503. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/image_vision/README.md +0 -0
  504. {intentkit-0.6.9/skills/venice_image/image_upscale → intentkit-0.8.22/intentkit/skills/venice_image/image_vision}/__init__.py +0 -0
  505. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/venice_image/venice_image.jpg +0 -0
  506. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/web_scraper/README.md +0 -0
  507. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/skills/web_scraper/langchain.png +0 -0
  508. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/utils/__init__.py +0 -0
  509. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/utils/random.py +0 -0
  510. {intentkit-0.6.9 → intentkit-0.8.22/intentkit}/utils/tx.py +0 -0
@@ -168,9 +168,7 @@ cython_debug/
168
168
  # IDE
169
169
  .idea
170
170
  .vscode
171
- .trae
172
171
  .cursor
173
- .windsurfrules
174
172
 
175
173
  # web3
176
174
  wallet_data.txt
@@ -178,4 +176,3 @@ wallet_data.txt
178
176
  # export/import data
179
177
  *.response
180
178
  scripts/*.yaml
181
- skills.csv
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Crestal Network
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.6.9
3
+ Version: 0.8.22
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
- Project-URL: Homepage, https://github.com/crestal-network/intentkit
6
- Project-URL: Repository, https://github.com/crestal-network/intentkit
7
- Project-URL: Documentation, https://github.com/crestal-network/intentkit/tree/main/docs
8
- Project-URL: Bug Tracker, https://github.com/crestal-network/intentkit/issues
9
- Author-email: hyacinthus <hyacinthus@gmail.com>
5
+ Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
6
+ Project-URL: Repository, https://github.com/crestalnetwork/intentkit
7
+ Project-URL: Documentation, https://github.com/crestalnetwork/intentkit/tree/main/docs
8
+ Project-URL: Bug Tracker, https://github.com/crestalnetwork/intentkit/issues
9
+ Author-email: Ruihua <ruihua@crestal.network>
10
10
  License: MIT License
11
11
 
12
12
  Copyright (c) 2024 Crestal Network
@@ -34,20 +34,18 @@ 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
- Requires-Dist: cdp-sdk>=1.22.0
49
- Requires-Dist: coinbase-agentkit-langchain>=0.5.0
50
- Requires-Dist: coinbase-agentkit<0.7.0,>=0.6.0
47
+ Requires-Dist: cdp-sdk>=1.31.1
48
+ Requires-Dist: coinbase-agentkit>=0.7.2
51
49
  Requires-Dist: cron-validator<2.0.0,>=1.0.8
52
50
  Requires-Dist: epyxid>=0.3.3
53
51
  Requires-Dist: eth-keys>=0.4.0
@@ -55,28 +53,30 @@ Requires-Dist: eth-utils>=2.1.0
55
53
  Requires-Dist: fastapi>=0.115.8
56
54
  Requires-Dist: filetype<2.0.0,>=1.2.0
57
55
  Requires-Dist: httpx>=0.28.1
56
+ Requires-Dist: jsonref>=1.1.0
58
57
  Requires-Dist: langchain-community>=0.3.19
59
58
  Requires-Dist: langchain-core>=0.3.43
59
+ Requires-Dist: langchain-deepseek>=0.1.4
60
60
  Requires-Dist: langchain-mcp-adapters>=0.0.11
61
61
  Requires-Dist: langchain-openai>=0.3.8
62
62
  Requires-Dist: langchain-text-splitters>=0.3.8
63
63
  Requires-Dist: langchain-xai>=0.2.1
64
- Requires-Dist: langchain<0.4.0,>=0.3.25
65
- Requires-Dist: langgraph-checkpoint-postgres<2.0.23,>=2.0.16
64
+ Requires-Dist: langchain>=0.3.25
65
+ Requires-Dist: langgraph-checkpoint-postgres>=2.0.16
66
66
  Requires-Dist: langgraph-checkpoint>=2.0.18
67
- Requires-Dist: langgraph-prebuilt<0.6.0,>=0.5.1
68
- Requires-Dist: langgraph<0.6.0,>=0.5.1
67
+ Requires-Dist: langgraph-prebuilt>=0.6.1
68
+ Requires-Dist: langgraph>=0.6.1
69
69
  Requires-Dist: langmem>=0.0.27
70
70
  Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
71
71
  Requires-Dist: openai>=1.59.6
72
- Requires-Dist: pillow<12.0.0,>=11.1.0
72
+ Requires-Dist: pillow<13.0.0,>=11.1.0
73
73
  Requires-Dist: psycopg-pool>=3.2.4
74
74
  Requires-Dist: psycopg>=3.2.9
75
- Requires-Dist: pydantic<2.11.0,>=2.10.6
75
+ Requires-Dist: pydantic>=2.10.6
76
76
  Requires-Dist: python-dotenv>=1.0.1
77
77
  Requires-Dist: pytz>=2025.1
78
78
  Requires-Dist: pyyaml>=6.0.2
79
- Requires-Dist: redis<7.0.0,>=5.2.1
79
+ Requires-Dist: redis<8.0.0,>=5.2.1
80
80
  Requires-Dist: requests-oauthlib>=2.0.0
81
81
  Requires-Dist: requests>=2.32.3
82
82
  Requires-Dist: slack-sdk>=3.34.0
@@ -1,6 +1,5 @@
1
1
  include README.md
2
2
  include LICENSE
3
- include pyproject.toml
4
3
  recursive-include abstracts *.py
5
4
  recursive-include clients *.py
6
5
  recursive-include config *.py
@@ -12,4 +11,4 @@ recursive-exclude * __pycache__
12
11
  recursive-exclude * *.pyc
13
12
  recursive-exclude * *.pyo
14
13
  recursive-exclude * .DS_Store
15
- recursive-exclude * .ruff_cache
14
+ recursive-exclude * .ruff_cache
@@ -3,15 +3,17 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.6.9"
7
- __author__ = "hyacinthus"
8
- __email__ = "hyacinthus@gmail.com"
6
+ __version__ = "0.8.22"
7
+ __author__ = "Ruihua"
8
+ __email__ = "ruihua@crestal.network"
9
9
 
10
10
  # Core components
11
11
  # Abstract base classes
12
- from .core.engine import create_agent, stream_agent
12
+ from .core.engine import build_agent, create_agent, stream_agent, stream_agent_raw
13
13
 
14
14
  __all__ = [
15
15
  "create_agent",
16
16
  "stream_agent",
17
+ "build_agent",
18
+ "stream_agent_raw",
17
19
  ]
@@ -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
  """
@@ -0,0 +1,48 @@
1
+ from collections.abc import Callable
2
+ from enum import Enum
3
+ from typing import Any, NotRequired
4
+
5
+ from langgraph.prebuilt.chat_agent_executor import AgentState as BaseAgentState
6
+ from pydantic import BaseModel
7
+
8
+ from intentkit.models.agent import Agent
9
+ from intentkit.models.chat import AuthorType
10
+
11
+
12
+ class AgentError(str, Enum):
13
+ """The error types that can be raised by the agent."""
14
+
15
+ INSUFFICIENT_CREDITS = "insufficient_credits"
16
+
17
+
18
+ # We create the AgentState that we will pass around
19
+ # This simply involves a list of messages
20
+ # We want steps to return messages to append to the list
21
+ # So we annotate the messages attribute with operator.add
22
+ class AgentState(BaseAgentState):
23
+ """The state of the agent."""
24
+
25
+ context: dict[str, Any]
26
+ error: NotRequired[AgentError]
27
+ __extra__: NotRequired[dict[str, Any]]
28
+
29
+
30
+ class AgentContext(BaseModel):
31
+ agent_id: str
32
+ get_agent: Callable[[], Agent]
33
+ chat_id: str
34
+ user_id: str | None = None
35
+ app_id: str | None = None
36
+ entrypoint: AuthorType
37
+ is_private: bool
38
+ search: bool = False
39
+ thinking: bool = False
40
+ payer: str | None = None
41
+
42
+ @property
43
+ def agent(self) -> Agent:
44
+ return self.get_agent()
45
+
46
+ @property
47
+ def thread_id(self) -> str:
48
+ return f"{self.agent_id}-{self.chat_id}"
@@ -0,0 +1,60 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import Any
3
+
4
+ from intentkit.models.agent import Agent
5
+ from intentkit.models.agent_data import AgentData, AgentQuota
6
+
7
+
8
+ class SkillStoreABC(ABC):
9
+ """Abstract base class for skill data storage operations.
10
+
11
+ This class defines the interface for interacting with skill-related data
12
+ for both agents and threads.
13
+ """
14
+
15
+ @staticmethod
16
+ @abstractmethod
17
+ def get_system_config(key: str) -> Any:
18
+ """Get system configuration value by key."""
19
+ pass
20
+
21
+ @staticmethod
22
+ @abstractmethod
23
+ async def get_agent_config(agent_id: str) -> Agent | None:
24
+ """Get agent configuration.
25
+
26
+ Returns:
27
+ Agent configuration if found, None otherwise
28
+ """
29
+ pass
30
+
31
+ @staticmethod
32
+ @abstractmethod
33
+ async def get_agent_data(agent_id: str) -> AgentData | None:
34
+ """Get additional agent data.
35
+
36
+ Returns:
37
+ Agent data if found, None otherwise
38
+ """
39
+ pass
40
+
41
+ @staticmethod
42
+ @abstractmethod
43
+ async def set_agent_data(agent_id: str, data: dict) -> None:
44
+ """Update agent data.
45
+
46
+ Args:
47
+ agent_id: ID of the agent
48
+ data: Dictionary containing fields to update
49
+ """
50
+ pass
51
+
52
+ @staticmethod
53
+ @abstractmethod
54
+ async def get_agent_quota(agent_id: str) -> AgentQuota | None:
55
+ """Get agent quota information.
56
+
57
+ Returns:
58
+ Agent quota if found, None otherwise
59
+ """
60
+ pass
@@ -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,14 +1,17 @@
1
- from intentkit.clients.cdp import CdpClient, get_cdp_client
1
+ from intentkit.clients.cdp import get_cdp_client, get_evm_account, get_wallet_provider
2
2
  from intentkit.clients.twitter import (
3
3
  TwitterClient,
4
4
  TwitterClientConfig,
5
5
  get_twitter_client,
6
6
  )
7
+ from intentkit.clients.web3 import get_web3_client
7
8
 
8
9
  __all__ = [
9
10
  "TwitterClient",
10
11
  "TwitterClientConfig",
11
12
  "get_twitter_client",
12
- "CdpClient",
13
+ "get_evm_account",
13
14
  "get_cdp_client",
15
+ "get_wallet_provider",
16
+ "get_web3_client",
14
17
  ]
@@ -0,0 +1,128 @@
1
+ import asyncio
2
+ import logging
3
+
4
+ from cdp import CdpClient, EvmServerAccount # noqa: E402
5
+ from coinbase_agentkit import ( # noqa: E402
6
+ CdpEvmWalletProvider,
7
+ CdpEvmWalletProviderConfig,
8
+ )
9
+
10
+ from intentkit.config.config import config
11
+ from intentkit.models.agent import Agent, AgentTable # noqa: E402
12
+ from intentkit.models.agent_data import AgentData
13
+ from intentkit.models.db import get_session
14
+ from intentkit.utils.error import IntentKitAPIError # noqa: E402
15
+
16
+ _wallet_providers: dict[str, tuple[str, str, CdpEvmWalletProvider]] = {}
17
+ _cdp_client: CdpClient | None = None
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ def get_cdp_client() -> CdpClient:
23
+ global _cdp_client
24
+ if _cdp_client:
25
+ return _cdp_client
26
+
27
+ # Get credentials from global configuration
28
+ api_key_id = config.cdp_api_key_id
29
+ api_key_secret = config.cdp_api_key_secret
30
+ wallet_secret = config.cdp_wallet_secret
31
+
32
+ _cdp_client = CdpClient(
33
+ api_key_id=api_key_id,
34
+ api_key_secret=api_key_secret,
35
+ wallet_secret=wallet_secret,
36
+ )
37
+ return _cdp_client
38
+
39
+
40
+ def _assert_cdp_wallet_provider(agent: Agent) -> None:
41
+ if agent.wallet_provider != "cdp":
42
+ raise IntentKitAPIError(
43
+ 400,
44
+ "BadWalletProvider",
45
+ "Your agent wallet provider is not cdp but you selected a skill that requires a cdp wallet.",
46
+ )
47
+
48
+
49
+ async def _ensure_evm_account(
50
+ agent: Agent, agent_data: AgentData | None = None
51
+ ) -> tuple[EvmServerAccount, AgentData]:
52
+ cdp_client = get_cdp_client()
53
+ agent_data = agent_data or await AgentData.get(agent.id)
54
+ address = agent_data.evm_wallet_address
55
+ account: EvmServerAccount | None = None
56
+
57
+ if not address:
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()
73
+
74
+ if account is None:
75
+ account = await cdp_client.evm.get_account(address=address)
76
+
77
+ return account, agent_data
78
+
79
+
80
+ async def get_evm_account(agent: Agent) -> EvmServerAccount:
81
+ _assert_cdp_wallet_provider(agent)
82
+ account, _ = await _ensure_evm_account(agent)
83
+ return account
84
+
85
+
86
+ async def get_wallet_provider(agent: Agent) -> CdpEvmWalletProvider:
87
+ _assert_cdp_wallet_provider(agent)
88
+ if not agent.network_id:
89
+ raise IntentKitAPIError(
90
+ 400,
91
+ "BadNetworkID",
92
+ "Your agent network ID is not set. Please set it in the agent config.",
93
+ )
94
+
95
+ agent_data = await AgentData.get(agent.id)
96
+ address = agent_data.evm_wallet_address
97
+
98
+ cache_entry = _wallet_providers.get(agent.id)
99
+ if cache_entry:
100
+ cached_network_id, cached_address, provider = cache_entry
101
+ if cached_network_id == agent.network_id:
102
+ if not address:
103
+ address = cached_address or provider.get_address()
104
+ if cached_address == address:
105
+ return provider
106
+
107
+ account, agent_data = await _ensure_evm_account(agent, agent_data)
108
+ address = account.address
109
+
110
+ # Get credentials from global config
111
+ api_key_id = config.cdp_api_key_id
112
+ api_key_secret = config.cdp_api_key_secret
113
+ wallet_secret = config.cdp_wallet_secret
114
+
115
+ network_id = agent.network_id
116
+
117
+ wallet_provider_config = CdpEvmWalletProviderConfig(
118
+ api_key_id=api_key_id,
119
+ api_key_secret=api_key_secret,
120
+ network_id=network_id,
121
+ address=address,
122
+ wallet_secret=wallet_secret,
123
+ )
124
+ wallet_provider = await asyncio.to_thread(
125
+ CdpEvmWalletProvider, wallet_provider_config
126
+ )
127
+ _wallet_providers[agent.id] = (network_id, address, wallet_provider)
128
+ return wallet_provider