intentkit 0.6.0.dev6__tar.gz → 0.6.0.dev7__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 (369) hide show
  1. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/PKG-INFO +1 -1
  2. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/__init__.py +1 -1
  3. intentkit-0.6.0.dev7/clients/cdp.py +105 -0
  4. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/pyproject.toml +1 -1
  5. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cdp/__init__.py +8 -11
  6. intentkit-0.6.0.dev7/skills/cdp/get_balance.py +109 -0
  7. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cdp/schema.json +0 -64
  8. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/base.py +26 -3
  9. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/route.py +23 -22
  10. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/wallet.py +27 -23
  11. intentkit-0.6.0.dev6/clients/cdp.py +0 -53
  12. intentkit-0.6.0.dev6/skills/cdp/get_balance.py +0 -81
  13. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/.gitignore +0 -0
  14. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/LICENSE +0 -0
  15. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/MANIFEST.in +0 -0
  16. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/README.md +0 -0
  17. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/abstracts/__init__.py +0 -0
  18. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/abstracts/agent.py +0 -0
  19. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/abstracts/api.py +0 -0
  20. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/abstracts/engine.py +0 -0
  21. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/abstracts/exception.py +0 -0
  22. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/abstracts/graph.py +0 -0
  23. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/abstracts/skill.py +0 -0
  24. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/abstracts/twitter.py +0 -0
  25. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/clients/__init__.py +0 -0
  26. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/clients/twitter.py +0 -0
  27. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/config/__init__.py +0 -0
  28. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/config/config.py +0 -0
  29. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/__init__.py +0 -0
  30. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/agent.py +0 -0
  31. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/api.py +0 -0
  32. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/client.py +0 -0
  33. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/credit.py +0 -0
  34. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/engine.py +0 -0
  35. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/node.py +0 -0
  36. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/prompt.py +0 -0
  37. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/core/skill.py +0 -0
  38. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/agent.py +0 -0
  39. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/agent_data.py +0 -0
  40. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/agent_schema.json +0 -0
  41. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/app_setting.py +0 -0
  42. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/base.py +0 -0
  43. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/chat.py +0 -0
  44. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/conversation.py +0 -0
  45. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/credit.py +0 -0
  46. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/db.py +0 -0
  47. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/db_mig.py +0 -0
  48. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/generator.py +0 -0
  49. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/llm.py +0 -0
  50. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/redis.py +0 -0
  51. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/skill.py +0 -0
  52. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/models/user.py +0 -0
  53. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/__init__.py +0 -0
  54. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/acolyt/__init__.py +0 -0
  55. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/acolyt/acolyt.jpg +0 -0
  56. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/acolyt/ask.py +0 -0
  57. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/acolyt/base.py +0 -0
  58. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/acolyt/schema.json +0 -0
  59. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/aixbt/README.md +0 -0
  60. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/aixbt/__init__.py +0 -0
  61. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/aixbt/aixbt.jpg +0 -0
  62. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/aixbt/base.py +0 -0
  63. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/aixbt/projects.py +0 -0
  64. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/aixbt/schema.json +0 -0
  65. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/allora/__init__.py +0 -0
  66. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/allora/allora.jpeg +0 -0
  67. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/allora/base.py +0 -0
  68. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/allora/price.py +0 -0
  69. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/allora/schema.json +0 -0
  70. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/base.py +0 -0
  71. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/carv/README.md +0 -0
  72. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/carv/__init__.py +0 -0
  73. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/carv/base.py +0 -0
  74. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/carv/carv.webp +0 -0
  75. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/carv/fetch_news.py +0 -0
  76. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/carv/onchain_query.py +0 -0
  77. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/carv/schema.json +0 -0
  78. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/carv/token_info_and_price.py +0 -0
  79. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cdp/base.py +0 -0
  80. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cdp/cdp.png +0 -0
  81. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/chainlist/README.md +0 -0
  82. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/chainlist/__init__.py +0 -0
  83. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/chainlist/base.py +0 -0
  84. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/chainlist/chain_lookup.py +0 -0
  85. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/chainlist/chainlist.png +0 -0
  86. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/chainlist/schema.json +0 -0
  87. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/common/__init__.py +0 -0
  88. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/common/base.py +0 -0
  89. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/common/common.jpg +0 -0
  90. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/common/current_time.py +0 -0
  91. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/common/schema.json +0 -0
  92. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/README.md +0 -0
  93. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/__init__.py +0 -0
  94. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/base.py +0 -0
  95. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/constants.py +0 -0
  96. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/cookiefun.png +0 -0
  97. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/get_account_details.py +0 -0
  98. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/get_account_feed.py +0 -0
  99. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/get_account_smart_followers.py +0 -0
  100. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/get_sectors.py +0 -0
  101. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/schema.json +0 -0
  102. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cookiefun/search_accounts.py +0 -0
  103. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/__init__.py +0 -0
  104. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/api.py +0 -0
  105. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/base.py +0 -0
  106. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/cryptocompare.png +0 -0
  107. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/fetch_news.py +0 -0
  108. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/fetch_price.py +0 -0
  109. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  110. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  111. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/fetch_top_volume.py +0 -0
  112. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/fetch_trading_signals.py +0 -0
  113. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptocompare/schema.json +0 -0
  114. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptopanic/__init__.py +0 -0
  115. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptopanic/base.py +0 -0
  116. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptopanic/cryptopanic.png +0 -0
  117. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  118. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  119. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/cryptopanic/schema.json +0 -0
  120. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dapplooker/README.md +0 -0
  121. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dapplooker/__init__.py +0 -0
  122. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dapplooker/base.py +0 -0
  123. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dapplooker/dapplooker.jpg +0 -0
  124. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dapplooker/dapplooker_token_data.py +0 -0
  125. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dapplooker/schema.json +0 -0
  126. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/__init__.py +0 -0
  127. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/api.py +0 -0
  128. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/base.py +0 -0
  129. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/coins/__init__.py +0 -0
  130. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  131. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/coins/fetch_block.py +0 -0
  132. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/coins/fetch_current_prices.py +0 -0
  133. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/coins/fetch_first_price.py +0 -0
  134. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  135. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/coins/fetch_price_chart.py +0 -0
  136. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  137. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/config/__init__.py +0 -0
  138. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/config/chains.py +0 -0
  139. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/defillama.jpeg +0 -0
  140. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/fees/__init__.py +0 -0
  141. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  142. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/schema.json +0 -0
  143. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/stablecoins/__init__.py +0 -0
  144. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  145. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  146. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  147. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  148. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tests/__init__.py +0 -0
  149. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tests/api_integration.test.py +0 -0
  150. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tests/api_unit.test.py +0 -0
  151. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tvl/__init__.py +0 -0
  152. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  153. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tvl/fetch_chains.py +0 -0
  154. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  155. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tvl/fetch_protocol.py +0 -0
  156. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  157. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/tvl/fetch_protocols.py +0 -0
  158. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/volumes/__init__.py +0 -0
  159. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  160. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  161. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  162. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/yields/__init__.py +0 -0
  163. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  164. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/defillama/yields/fetch_pools.py +0 -0
  165. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dexscreener/__init__.py +0 -0
  166. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dexscreener/base.py +0 -0
  167. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dexscreener/dexscreener.png +0 -0
  168. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dexscreener/model/__init__.py +0 -0
  169. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dexscreener/model/search_token_response.py +0 -0
  170. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dexscreener/schema.json +0 -0
  171. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dexscreener/search_token.py +0 -0
  172. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dune_analytics/__init__.py +0 -0
  173. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dune_analytics/base.py +0 -0
  174. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dune_analytics/dune.png +0 -0
  175. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  176. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  177. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/dune_analytics/schema.json +0 -0
  178. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/elfa/README.md +0 -0
  179. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/elfa/__init__.py +0 -0
  180. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/elfa/base.py +0 -0
  181. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/elfa/elfa.jpg +0 -0
  182. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/elfa/mention.py +0 -0
  183. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/elfa/schema.json +0 -0
  184. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/elfa/stats.py +0 -0
  185. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/elfa/tokens.py +0 -0
  186. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/README.md +0 -0
  187. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/__init__.py +0 -0
  188. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/abi/__init__.py +0 -0
  189. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/abi/approval.py +0 -0
  190. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/abi/erc20.py +0 -0
  191. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/abi/route.py +0 -0
  192. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/best_yield.py +0 -0
  193. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/enso.jpg +0 -0
  194. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/networks.py +0 -0
  195. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/prices.py +0 -0
  196. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/schema.json +0 -0
  197. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/enso/tokens.py +0 -0
  198. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/github/README.md +0 -0
  199. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/github/__init__.py +0 -0
  200. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/github/base.py +0 -0
  201. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/github/github.jpg +0 -0
  202. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/github/github_search.py +0 -0
  203. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/github/schema.json +0 -0
  204. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/__init__.py +0 -0
  205. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/base.py +0 -0
  206. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/heurist.png +0 -0
  207. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/image_generation_animagine_xl.py +0 -0
  208. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  209. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/image_generation_arthemy_real.py +0 -0
  210. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/image_generation_braindance.py +0 -0
  211. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  212. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  213. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/image_generation_sdxl.py +0 -0
  214. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/heurist/schema.json +0 -0
  215. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/lifi/README.md +0 -0
  216. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/lifi/__init__.py +0 -0
  217. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/lifi/base.py +0 -0
  218. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/lifi/lifi.png +0 -0
  219. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/lifi/schema.json +0 -0
  220. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/lifi/token_execute.py +0 -0
  221. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/lifi/token_quote.py +0 -0
  222. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/lifi/utils.py +0 -0
  223. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/README.md +0 -0
  224. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/__init__.py +0 -0
  225. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/api.py +0 -0
  226. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/base.py +0 -0
  227. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/fetch_chain_portfolio.py +0 -0
  228. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/fetch_nft_portfolio.py +0 -0
  229. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/fetch_solana_portfolio.py +0 -0
  230. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  231. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/moralis.png +0 -0
  232. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/schema.json +0 -0
  233. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/tests/__init__.py +0 -0
  234. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/moralis/tests/test_wallet.py +0 -0
  235. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/nation/__init__.py +0 -0
  236. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/nation/base.py +0 -0
  237. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/nation/nation.png +0 -0
  238. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/nation/nft_check.py +0 -0
  239. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/nation/schema.json +0 -0
  240. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/openai/__init__.py +0 -0
  241. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/openai/base.py +0 -0
  242. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/openai/dalle_image_generation.py +0 -0
  243. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/openai/gpt_image_generation.py +0 -0
  244. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/openai/gpt_image_to_image.py +0 -0
  245. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/openai/image_to_text.py +0 -0
  246. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/openai/openai.png +0 -0
  247. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/openai/schema.json +0 -0
  248. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/README.md +0 -0
  249. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/__init__.py +0 -0
  250. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/base.py +0 -0
  251. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/constants.py +0 -0
  252. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/moralis.png +0 -0
  253. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/schema.json +0 -0
  254. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/token_balances.py +0 -0
  255. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_approvals.py +0 -0
  256. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_defi_positions.py +0 -0
  257. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_history.py +0 -0
  258. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_net_worth.py +0 -0
  259. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_nfts.py +0 -0
  260. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_profitability.py +0 -0
  261. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_profitability_summary.py +0 -0
  262. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_stats.py +0 -0
  263. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/portfolio/wallet_swaps.py +0 -0
  264. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/skills.toml +0 -0
  265. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/slack/__init__.py +0 -0
  266. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/slack/base.py +0 -0
  267. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/slack/get_channel.py +0 -0
  268. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/slack/get_message.py +0 -0
  269. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/slack/schedule_message.py +0 -0
  270. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/slack/schema.json +0 -0
  271. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/slack/send_message.py +0 -0
  272. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/slack/slack.jpg +0 -0
  273. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/system/__init__.py +0 -0
  274. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/system/base.py +0 -0
  275. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/system/read_agent_api_key.py +0 -0
  276. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/system/regenerate_agent_api_key.py +0 -0
  277. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/system/schema.json +0 -0
  278. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/system/system.svg +0 -0
  279. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/tavily/README.md +0 -0
  280. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/tavily/__init__.py +0 -0
  281. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/tavily/base.py +0 -0
  282. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/tavily/schema.json +0 -0
  283. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/tavily/tavily.jpg +0 -0
  284. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/tavily/tavily_extract.py +0 -0
  285. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/tavily/tavily_search.py +0 -0
  286. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/README.md +0 -0
  287. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/__init__.py +0 -0
  288. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/base.py +0 -0
  289. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/constants.py +0 -0
  290. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/erc20_transfers.py +0 -0
  291. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/moralis.png +0 -0
  292. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/schema.json +0 -0
  293. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/token_analytics.py +0 -0
  294. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/token_price.py +0 -0
  295. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/token/token_search.py +0 -0
  296. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/__init__.py +0 -0
  297. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/base.py +0 -0
  298. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/follow_user.py +0 -0
  299. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/get_mentions.py +0 -0
  300. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/get_timeline.py +0 -0
  301. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/get_user_by_username.py +0 -0
  302. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/get_user_tweets.py +0 -0
  303. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/like_tweet.py +0 -0
  304. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/post_tweet.py +0 -0
  305. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/reply_tweet.py +0 -0
  306. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/retweet.py +0 -0
  307. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/schema.json +0 -0
  308. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/search_tweets.py +0 -0
  309. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/twitter/twitter.png +0 -0
  310. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/unrealspeech/__init__.py +0 -0
  311. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/unrealspeech/base.py +0 -0
  312. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/unrealspeech/schema.json +0 -0
  313. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/unrealspeech/text_to_speech.py +0 -0
  314. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/unrealspeech/unrealspeech.jpg +0 -0
  315. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_audio/__init__.py +0 -0
  316. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_audio/base.py +0 -0
  317. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_audio/input.py +0 -0
  318. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_audio/schema.json +0 -0
  319. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_audio/venice_audio.py +0 -0
  320. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_audio/venice_logo.jpg +0 -0
  321. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/README.md +0 -0
  322. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/__init__.py +0 -0
  323. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/api.py +0 -0
  324. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/base.py +0 -0
  325. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/config.py +0 -0
  326. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_enhance/README.md +0 -0
  327. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_enhance/__init__.py +0 -0
  328. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  329. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  330. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  331. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/README.md +0 -0
  332. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/__init__.py +0 -0
  333. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  334. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  335. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  336. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  337. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  338. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  339. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  340. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  341. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  342. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_upscale/README.md +0 -0
  343. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_upscale/__init__.py +0 -0
  344. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  345. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  346. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  347. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_vision/README.md +0 -0
  348. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_vision/__init__.py +0 -0
  349. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_vision/image_vision.py +0 -0
  350. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  351. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  352. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/schema.json +0 -0
  353. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/utils.py +0 -0
  354. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/venice_image/venice_image.jpg +0 -0
  355. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/web_scraper/README.md +0 -0
  356. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/web_scraper/__init__.py +0 -0
  357. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/web_scraper/base.py +0 -0
  358. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/web_scraper/langchain.png +0 -0
  359. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/web_scraper/schema.json +0 -0
  360. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/skills/web_scraper/scrape_and_index.py +0 -0
  361. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/__init__.py +0 -0
  362. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/chain.py +0 -0
  363. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/error.py +0 -0
  364. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/logging.py +0 -0
  365. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/middleware.py +0 -0
  366. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/random.py +0 -0
  367. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/s3.py +0 -0
  368. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/slack_alert.py +0 -0
  369. {intentkit-0.6.0.dev6 → intentkit-0.6.0.dev7}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.6.0.dev6
3
+ Version: 0.6.0.dev7
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
5
  Project-URL: Homepage, https://github.com/crestal-network/intentkit
6
6
  Project-URL: Repository, https://github.com/crestal-network/intentkit
@@ -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.6.0-dev.6"
6
+ __version__ = "0.6.0-dev.7"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -0,0 +1,105 @@
1
+ import json
2
+ import logging
3
+ import os
4
+ from typing import Dict, Optional
5
+
6
+ from cdp import EvmServerAccount
7
+ from coinbase_agentkit import (
8
+ CdpEvmServerWalletProvider,
9
+ CdpEvmServerWalletProviderConfig,
10
+ )
11
+
12
+ from intentkit.abstracts.skill import SkillStoreABC
13
+ from intentkit.models.agent import Agent
14
+ from intentkit.models.agent_data import AgentData
15
+
16
+ _clients: Dict[str, "CdpClient"] = {}
17
+
18
+
19
+ class CdpClient:
20
+ def __init__(self, agent_id: str, skill_store: SkillStoreABC) -> None:
21
+ self._agent_id = agent_id
22
+ self._skill_store = skill_store
23
+ self._wallet_provider: Optional[CdpEvmServerWalletProvider] = None
24
+ self._wallet_provider_config: Optional[CdpEvmServerWalletProviderConfig] = None
25
+
26
+ async def get_wallet_provider(self) -> CdpEvmServerWalletProvider:
27
+ if self._wallet_provider:
28
+ return self._wallet_provider
29
+ agent: Agent = await self._skill_store.get_agent_config(self._agent_id)
30
+ agent_data: AgentData = await self._skill_store.get_agent_data(self._agent_id)
31
+ network_id = agent.network_id or agent.cdp_network_id
32
+
33
+ logger = logging.getLogger(__name__)
34
+
35
+ # Collect credentials from system-config first, then env vars as fallback
36
+ api_key_id = (
37
+ self._skill_store.get_system_config("cdp_api_key_name")
38
+ or os.getenv("CDP_API_KEY_ID")
39
+ or os.getenv("CDP_API_KEY_NAME")
40
+ )
41
+
42
+ api_key_secret = (
43
+ self._skill_store.get_system_config("cdp_api_key_private_key")
44
+ or os.getenv("CDP_API_KEY_SECRET")
45
+ or os.getenv("CDP_API_KEY_PRIVATE_KEY")
46
+ )
47
+
48
+ wallet_secret = self._skill_store.get_system_config(
49
+ "cdp_wallet_secret"
50
+ ) or os.getenv("CDP_WALLET_SECRET")
51
+
52
+ address = None
53
+
54
+ # Attempt to override with any wallet-specific secret stored in wallet_data
55
+ if agent_data.cdp_wallet_data:
56
+ try:
57
+ wallet_data = json.loads(agent_data.cdp_wallet_data)
58
+ # Try to get address from the new format or fallback to old format
59
+ if "default_address_id" in wallet_data:
60
+ address = wallet_data["default_address_id"]
61
+
62
+ # Prefer wallet_secret stored alongside the wallet data if present
63
+ if "wallet_secret" in wallet_data:
64
+ wallet_secret = wallet_data["wallet_secret"]
65
+ elif "account_data" in wallet_data and wallet_data["account_data"]:
66
+ # Some versions may nest the secret inside account_data
67
+ wallet_secret = (
68
+ wallet_data["account_data"].get("wallet_secret")
69
+ or wallet_secret
70
+ )
71
+ except json.JSONDecodeError:
72
+ logger.warning(
73
+ "Invalid JSON in cdp_wallet_data for agent %s", self._agent_id
74
+ )
75
+
76
+ self._wallet_provider_config = CdpEvmServerWalletProviderConfig(
77
+ api_key_id=api_key_id,
78
+ api_key_secret=api_key_secret,
79
+ network_id=network_id,
80
+ address=address,
81
+ wallet_secret=wallet_secret,
82
+ )
83
+ self._wallet_provider = CdpEvmServerWalletProvider(self._wallet_provider_config)
84
+ return self._wallet_provider
85
+
86
+ async def get_account(self) -> EvmServerAccount:
87
+ """Get the account object from the wallet provider.
88
+
89
+ Returns:
90
+ EvmServerAccount: The account object that can be used for balance checks, transfers, etc.
91
+ """
92
+ wallet_provider = await self.get_wallet_provider()
93
+ # Access the internal account object
94
+ return wallet_provider._account
95
+
96
+ async def get_provider_config(self) -> CdpEvmServerWalletProviderConfig:
97
+ if not self._wallet_provider_config:
98
+ await self.get_wallet_provider()
99
+ return self._wallet_provider_config
100
+
101
+
102
+ async def get_cdp_client(agent_id: str, skill_store: SkillStoreABC) -> "CdpClient":
103
+ if agent_id not in _clients:
104
+ _clients[agent_id] = CdpClient(agent_id, skill_store)
105
+ return _clients[agent_id]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.6.0-dev.6"
3
+ version = "0.6.0-dev.7"
4
4
  description = "Intent-based AI Agent Platform - Core Package"
5
5
  authors = [{ name = "hyacinthus", email = "hyacinthus@gmail.com" }]
6
6
  requires-python = ">=3.12"
@@ -5,10 +5,9 @@ from typing import TypedDict
5
5
  from coinbase_agentkit import (
6
6
  AgentKit,
7
7
  AgentKitConfig,
8
- CdpWalletProvider,
8
+ CdpEvmServerWalletProvider,
9
9
  basename_action_provider,
10
10
  cdp_api_action_provider,
11
- cdp_wallet_action_provider,
12
11
  erc20_action_provider,
13
12
  morpho_action_provider,
14
13
  pyth_action_provider,
@@ -37,10 +36,6 @@ class SkillStates(TypedDict):
37
36
  WalletActionProvider_native_transfer: SkillState
38
37
  CdpApiActionProvider_address_reputation: SkillState
39
38
  CdpApiActionProvider_request_faucet_funds: SkillState
40
- CdpWalletActionProvider_deploy_contract: SkillState
41
- CdpWalletActionProvider_deploy_nft: SkillState
42
- CdpWalletActionProvider_deploy_token: SkillState
43
- CdpWalletActionProvider_trade: SkillState
44
39
  PythActionProvider_fetch_price: SkillState
45
40
  PythActionProvider_fetch_price_feed_id: SkillState
46
41
  BasenameActionProvider_register_basename: SkillState
@@ -97,15 +92,15 @@ async def get_skills(
97
92
 
98
93
  # Initialize CDP client
99
94
  cdp_client: CdpClient = await get_cdp_client(agent_id, store)
100
- cdp_wallet_provider: CdpWalletProvider = await cdp_client.get_wallet_provider()
101
- cdp_provider_config = await cdp_client.get_provider_config()
95
+ cdp_wallet_provider: CdpEvmServerWalletProvider = (
96
+ await cdp_client.get_wallet_provider()
97
+ )
102
98
  agent_kit = AgentKit(
103
99
  AgentKitConfig(
104
100
  wallet_provider=cdp_wallet_provider,
105
101
  action_providers=[
106
102
  wallet_action_provider(),
107
- cdp_api_action_provider(cdp_provider_config),
108
- cdp_wallet_action_provider(cdp_provider_config),
103
+ cdp_api_action_provider(),
109
104
  pyth_action_provider(),
110
105
  basename_action_provider(),
111
106
  erc20_action_provider(),
@@ -121,9 +116,11 @@ async def get_skills(
121
116
  tools = []
122
117
  for skill in available_skills:
123
118
  if skill == "get_balance":
119
+ # Get the account object for the custom GetBalance skill
120
+ account = await cdp_client.get_account()
124
121
  tools.append(
125
122
  GetBalance(
126
- wallet=cdp_wallet_provider._wallet,
123
+ account=account,
127
124
  agent_id=agent_id,
128
125
  skill_store=store,
129
126
  )
@@ -0,0 +1,109 @@
1
+ from typing import Type
2
+
3
+ from cdp import EvmServerAccount
4
+ from pydantic import BaseModel, Field
5
+
6
+ from intentkit.abstracts.skill import SkillStoreABC
7
+ from intentkit.clients import get_cdp_client
8
+ from intentkit.skills.cdp.base import CDPBaseTool
9
+
10
+
11
+ class GetBalanceInput(BaseModel):
12
+ """Input for GetBalance tool."""
13
+
14
+ asset_id: str = Field(
15
+ description="The asset ID to get the balance for (e.g., 'eth', 'usdc', or a valid contract address)"
16
+ )
17
+
18
+
19
+ class GetBalance(CDPBaseTool):
20
+ """Tool for getting balance from CDP wallet.
21
+
22
+ This tool uses the CDP API to get balance for all addresses in a wallet for a given asset.
23
+
24
+ Attributes:
25
+ name: The name of the tool.
26
+ description: A description of what the tool does.
27
+ args_schema: The schema for the tool's input arguments.
28
+ """
29
+
30
+ agent_id: str
31
+ skill_store: SkillStoreABC
32
+ account: EvmServerAccount | None = None
33
+
34
+ name: str = "cdp_get_balance"
35
+ description: str = (
36
+ "This tool will get the balance of all the addresses in the wallet for a given asset. It takes the asset ID as input."
37
+ "Always use 'eth' for the native asset ETH and 'usdc' for USDC. "
38
+ "Other valid asset IDs are: weth,dai,reth,brett,w,cbeth,axl,iotx,prime,aero,rsr,mog,tbtc,npc,yfi"
39
+ )
40
+ args_schema: Type[BaseModel] = GetBalanceInput
41
+
42
+ async def _arun(self, asset_id: str) -> str:
43
+ """Async implementation of the tool to get balance.
44
+
45
+ Args:
46
+ asset_id (str): The asset ID to get the balance for.
47
+
48
+ Returns:
49
+ str: A message containing the balance information or error message.
50
+ """
51
+ try:
52
+ if not self.account:
53
+ return "Failed to get account."
54
+
55
+ # Get network information from CDP client
56
+ cdp_client = await get_cdp_client(self.agent_id, self.skill_store)
57
+ provider_config = await cdp_client.get_provider_config()
58
+ network_id = provider_config.network_id
59
+
60
+ # Map network_id to the format expected by the API
61
+ network_mapping = {
62
+ "base-mainnet": "base",
63
+ "base-sepolia": "base-sepolia",
64
+ "ethereum": "ethereum",
65
+ "ethereum-mainnet": "ethereum",
66
+ }
67
+ api_network = network_mapping.get(network_id, network_id)
68
+
69
+ # For native ETH balance, use the account's balance directly
70
+ if asset_id.lower() == "eth":
71
+ try:
72
+ # Get native balance using Web3
73
+ balance_wei = await self.account.get_balance()
74
+ balance_eth = balance_wei / (10**18) # Convert from wei to ETH
75
+ return f"ETH balance for account {self.account.address}: {balance_eth} ETH"
76
+ except Exception as e:
77
+ return f"Error getting ETH balance: {e!s}"
78
+
79
+ # For other tokens, try the list_token_balances API
80
+ try:
81
+ # list_token_balances returns all token balances for the account
82
+ token_balances = await self.account.list_token_balances(api_network)
83
+
84
+ # Find the balance for the specific asset
85
+ target_balance = None
86
+ for balance in token_balances:
87
+ if balance.asset_id.lower() == asset_id.lower():
88
+ target_balance = balance
89
+ break
90
+
91
+ if target_balance:
92
+ return f"Balance for {asset_id} in account {self.account.address}: {target_balance.amount} {target_balance.asset_id}"
93
+ else:
94
+ return f"No balance found for asset {asset_id} in account {self.account.address}"
95
+
96
+ except Exception as e:
97
+ return f"Error getting balance for account: {e!s}"
98
+
99
+ except Exception as e:
100
+ return f"Error getting balance: {str(e)}"
101
+
102
+ def _run(self, asset_id: str) -> str:
103
+ """Sync implementation of the tool.
104
+
105
+ This method is deprecated since we now have native async implementation in _arun.
106
+ """
107
+ raise NotImplementedError(
108
+ "Use _arun instead, which is the async implementation"
109
+ )
@@ -193,70 +193,6 @@
193
193
  "description": "State for WalletActionProvider_native_transfer",
194
194
  "default": "private"
195
195
  },
196
- "CdpWalletActionProvider_trade": {
197
- "type": "string",
198
- "title": "CDP Wallet Trade",
199
- "enum": [
200
- "disabled",
201
- "public",
202
- "private"
203
- ],
204
- "x-enum-title": [
205
- "Disabled",
206
- "Agent Owner + All Users",
207
- "Agent Owner Only"
208
- ],
209
- "description": "State for CdpWalletActionProvider_trade",
210
- "default": "private"
211
- },
212
- "CdpWalletActionProvider_deploy_nft": {
213
- "type": "string",
214
- "title": "Cdp Wallet Deploy Nft",
215
- "enum": [
216
- "disabled",
217
- "public",
218
- "private"
219
- ],
220
- "x-enum-title": [
221
- "Disabled",
222
- "Agent Owner + All Users",
223
- "Agent Owner Only"
224
- ],
225
- "description": "State for CdpWalletActionProvider_deploy_nft",
226
- "default": "disabled"
227
- },
228
- "CdpWalletActionProvider_deploy_token": {
229
- "type": "string",
230
- "title": "CDP Wallet Deploy Token",
231
- "enum": [
232
- "disabled",
233
- "public",
234
- "private"
235
- ],
236
- "x-enum-title": [
237
- "Disabled",
238
- "Agent Owner + All Users",
239
- "Agent Owner Only"
240
- ],
241
- "description": "State for CdpWalletActionProvider_deploy_token",
242
- "default": "disabled"
243
- },
244
- "CdpWalletActionProvider_deploy_contract": {
245
- "type": "string",
246
- "title": "CDP Wallet Deploy Contract",
247
- "enum": [
248
- "disabled",
249
- "public",
250
- "private"
251
- ],
252
- "x-enum-title": [
253
- "Disabled",
254
- "Agent Owner + All Users",
255
- "Agent Owner Only"
256
- ],
257
- "description": "State for CdpWalletActionProvider_deploy_contract",
258
- "default": "disabled"
259
- },
260
196
  "CdpApiActionProvider_request_faucet_funds": {
261
197
  "type": "string",
262
198
  "title": "CDP Request Faucet Funds",
@@ -1,6 +1,7 @@
1
1
  from typing import Optional, Type
2
2
 
3
- from cdp import Wallet
3
+ from cdp import EvmServerAccount
4
+ from coinbase_agentkit import CdpEvmServerWalletProvider
4
5
  from pydantic import BaseModel, Field
5
6
 
6
7
  from intentkit.abstracts.skill import SkillStoreABC
@@ -22,9 +23,31 @@ class EnsoBaseTool(IntentKitSkill):
22
23
  description="The skill store for persisting data"
23
24
  )
24
25
 
25
- async def get_wallet(self, context: SkillContext) -> Optional[Wallet]:
26
+ async def get_account(self, context: SkillContext) -> Optional[EvmServerAccount]:
27
+ """Get the account object from the CDP client.
28
+
29
+ Args:
30
+ context: The skill context containing agent information.
31
+
32
+ Returns:
33
+ Optional[EvmServerAccount]: The account object if available.
34
+ """
35
+ client: CdpClient = await get_cdp_client(context.agent.id, self.skill_store)
36
+ return await client.get_account()
37
+
38
+ async def get_wallet_provider(
39
+ self, context: SkillContext
40
+ ) -> Optional[CdpEvmServerWalletProvider]:
41
+ """Get the wallet provider from the CDP client.
42
+
43
+ Args:
44
+ context: The skill context containing agent information.
45
+
46
+ Returns:
47
+ Optional[CdpEvmServerWalletProvider]: The wallet provider if available.
48
+ """
26
49
  client: CdpClient = await get_cdp_client(context.agent.id, self.skill_store)
27
- return await client.get_wallet()
50
+ return await client.get_wallet_provider()
28
51
 
29
52
  def get_chain_provider(self, context: SkillContext) -> Optional[ChainProvider]:
30
53
  return self.skill_store.get_system_config("chain_provider")
@@ -6,9 +6,7 @@ from langchain_core.runnables import RunnableConfig
6
6
  from pydantic import BaseModel, Field
7
7
 
8
8
  from intentkit.skills.base import SkillContext
9
- from intentkit.skills.enso.abi.route import ABI_ROUTE
10
9
  from intentkit.skills.enso.networks import EnsoGetNetworks
11
- from intentkit.utils.tx import EvmContractWrapper
12
10
 
13
11
  from .base import EnsoBaseTool, base_url, default_chain_id
14
12
 
@@ -188,8 +186,7 @@ class EnsoRouteShortcut(EnsoBaseTool):
188
186
  context: SkillContext = self.context_from_config(config)
189
187
  agent_id = context.agent.id
190
188
  api_token = self.get_api_token(context)
191
- chain_provider = self.get_chain_provider(context)
192
- wallet = await self.get_wallet(context)
189
+ account = await self.get_account(context)
193
190
 
194
191
  async with httpx.AsyncClient() as client:
195
192
  try:
@@ -254,7 +251,7 @@ class EnsoRouteShortcut(EnsoBaseTool):
254
251
  tokenOut=tokenOut,
255
252
  ).model_dump(exclude_none=True)
256
253
 
257
- params["fromAddress"] = wallet.addresses[0].address_id
254
+ params["fromAddress"] = account.address
258
255
 
259
256
  response = await client.get(url, headers=headers, params=params)
260
257
  response.raise_for_status() # Raise HTTPError for non-2xx responses
@@ -268,23 +265,27 @@ class EnsoRouteShortcut(EnsoBaseTool):
268
265
  )
269
266
 
270
267
  if broadcast_requested:
271
- rpc_url = chain_provider.get_chain_config_by_id(chainId).rpc_url
272
- contract = EvmContractWrapper(
273
- rpc_url, ABI_ROUTE, json_dict.get("tx")
274
- )
275
-
276
- fn, fn_args = contract.fn_and_args
277
-
278
- fn_args["amountIn"] = str(fn_args["amountIn"])
279
-
280
- invocation = wallet.invoke_contract(
281
- contract_address=contract.dst_addr,
282
- method=fn.fn_name,
283
- abi=ABI_ROUTE,
284
- args=fn_args,
285
- ).wait()
286
-
287
- res.txHash = invocation.transaction.transaction_hash
268
+ # Use the wallet provider to send the transaction
269
+ wallet_provider = await self.get_wallet_provider(context)
270
+
271
+ # Extract transaction data from the Enso API response
272
+ tx_data = json_dict.get("tx", {})
273
+ if tx_data:
274
+ # Send the transaction using the wallet provider
275
+ tx_hash = wallet_provider.send_transaction(
276
+ {
277
+ "to": tx_data.get("to"),
278
+ "data": tx_data.get("data", "0x"),
279
+ "value": tx_data.get("value", 0),
280
+ }
281
+ )
282
+
283
+ # Wait for transaction confirmation
284
+ wallet_provider.wait_for_transaction_receipt(tx_hash)
285
+ res.txHash = tx_hash
286
+ else:
287
+ # For now, return a placeholder transaction hash if no tx data
288
+ res.txHash = "0x0000000000000000000000000000000000000000000000000000000000000000"
288
289
 
289
290
  return res
290
291
 
@@ -6,9 +6,7 @@ from langchain_core.runnables import RunnableConfig
6
6
  from pydantic import BaseModel, Field
7
7
 
8
8
  from intentkit.skills.base import SkillContext
9
- from intentkit.utils.tx import EvmContractWrapper
10
9
 
11
- from .abi.erc20 import ABI_ERC20
12
10
  from .base import EnsoBaseTool, base_url, default_chain_id
13
11
 
14
12
 
@@ -81,14 +79,14 @@ class EnsoGetWalletBalances(EnsoBaseTool):
81
79
 
82
80
  context: SkillContext = self.context_from_config(config)
83
81
  api_token = self.get_api_token(context)
84
- wallet = await self.get_wallet(context)
82
+ account = await self.get_account(context)
85
83
  headers = {
86
84
  "accept": "application/json",
87
85
  "Authorization": f"Bearer {api_token}",
88
86
  }
89
87
 
90
88
  params = EnsoGetBalancesInput(chainId=chainId).model_dump(exclude_none=True)
91
- params["eoaAddress"] = wallet.addresses[0].address_id
89
+ params["eoaAddress"] = account.address
92
90
  params["useEoa"] = True
93
91
 
94
92
  async with httpx.AsyncClient() as client:
@@ -178,7 +176,7 @@ class EnsoGetWalletApprovals(EnsoBaseTool):
178
176
 
179
177
  context: SkillContext = self.context_from_config(config)
180
178
  api_token = self.get_api_token(context)
181
- wallet = await self.get_wallet(context)
179
+ account = await self.get_account(context)
182
180
 
183
181
  headers = {
184
182
  "accept": "application/json",
@@ -187,7 +185,7 @@ class EnsoGetWalletApprovals(EnsoBaseTool):
187
185
 
188
186
  params = EnsoGetApprovalsInput(
189
187
  chainId=chainId,
190
- fromAddress=wallet.addresses[0].address_id,
188
+ fromAddress=account.address,
191
189
  )
192
190
 
193
191
  if kwargs.get("routingStrategy"):
@@ -318,15 +316,14 @@ class EnsoWalletApprove(EnsoBaseTool):
318
316
  url = f"{base_url}/api/v1/wallet/approve"
319
317
  context: SkillContext = self.context_from_config(config)
320
318
  api_token = self.get_api_token(context)
321
- chain_provider = self.get_chain_provider(context)
322
- wallet = await self.get_wallet(context)
319
+ account = await self.get_account(context)
323
320
 
324
321
  headers = {
325
322
  "accept": "application/json",
326
323
  "Authorization": f"Bearer {api_token}",
327
324
  }
328
325
 
329
- from_address = wallet.addresses[0].address_id
326
+ from_address = account.address
330
327
 
331
328
  params = EnsoWalletApproveInput(
332
329
  tokenAddress=tokenAddress,
@@ -352,20 +349,27 @@ class EnsoWalletApprove(EnsoBaseTool):
352
349
  content = EnsoWalletApproveOutput(**json_dict)
353
350
  artifact = EnsoWalletApproveArtifact(**json_dict)
354
351
 
355
- rpc_url = chain_provider.get_chain_config_by_id(chainId).rpc_url
356
- contract = EvmContractWrapper(rpc_url, ABI_ERC20, artifact.tx)
357
-
358
- fn, fn_args = contract.fn_and_args
359
- fn_args["value"] = str(fn_args["value"])
360
-
361
- invocation = wallet.invoke_contract(
362
- contract_address=contract.dst_addr,
363
- method=fn.fn_name,
364
- abi=ABI_ERC20,
365
- args=fn_args,
366
- ).wait()
367
-
368
- artifact.txHash = invocation.transaction.transaction_hash
352
+ # Use the wallet provider to send the transaction
353
+ wallet_provider = await self.get_wallet_provider(context)
354
+
355
+ # Extract transaction data from the Enso API response
356
+ tx_data = json_dict.get("tx", {})
357
+ if tx_data:
358
+ # Send the transaction using the wallet provider
359
+ tx_hash = wallet_provider.send_transaction(
360
+ {
361
+ "to": tx_data.get("to"),
362
+ "data": tx_data.get("data", "0x"),
363
+ "value": tx_data.get("value", 0),
364
+ }
365
+ )
366
+
367
+ # Wait for transaction confirmation
368
+ wallet_provider.wait_for_transaction_receipt(tx_hash)
369
+ artifact.txHash = tx_hash
370
+ else:
371
+ # For now, return without executing the transaction if no tx data
372
+ artifact.txHash = "0x0000000000000000000000000000000000000000000000000000000000000000"
369
373
 
370
374
  # Return the parsed response
371
375
  return (content, artifact)
@@ -1,53 +0,0 @@
1
- from typing import Dict, Optional
2
-
3
- from cdp import Wallet
4
- from coinbase_agentkit import (
5
- CdpWalletProvider,
6
- CdpWalletProviderConfig,
7
- )
8
-
9
- from intentkit.abstracts.skill import SkillStoreABC
10
- from intentkit.models.agent import Agent
11
- from intentkit.models.agent_data import AgentData
12
-
13
- _clients: Dict[str, "CdpClient"] = {}
14
-
15
-
16
- class CdpClient:
17
- def __init__(self, agent_id: str, skill_store: SkillStoreABC) -> None:
18
- self._agent_id = agent_id
19
- self._skill_store = skill_store
20
- self._wallet_provider: Optional[CdpWalletProvider] = None
21
- self._wallet_provider_config: Optional[CdpWalletProviderConfig] = None
22
-
23
- async def get_wallet_provider(self) -> CdpWalletProvider:
24
- if self._wallet_provider:
25
- return self._wallet_provider
26
- agent: Agent = await self._skill_store.get_agent_config(self._agent_id)
27
- agent_data: AgentData = await self._skill_store.get_agent_data(self._agent_id)
28
- network_id = agent.network_id or agent.cdp_network_id
29
- self._wallet_provider_config = CdpWalletProviderConfig(
30
- api_key_name=self._skill_store.get_system_config("cdp_api_key_name"),
31
- api_key_private_key=self._skill_store.get_system_config(
32
- "cdp_api_key_private_key"
33
- ),
34
- network_id=network_id,
35
- wallet_data=agent_data.cdp_wallet_data,
36
- )
37
- self._wallet_provider = CdpWalletProvider(self._wallet_provider_config)
38
- return self._wallet_provider
39
-
40
- async def get_wallet(self) -> Wallet:
41
- wallet_provider = await self.get_wallet_provider()
42
- return wallet_provider._wallet
43
-
44
- async def get_provider_config(self) -> CdpWalletProviderConfig:
45
- if not self._wallet_provider_config:
46
- await self.get_wallet_provider()
47
- return self._wallet_provider_config
48
-
49
-
50
- async def get_cdp_client(agent_id: str, skill_store: SkillStoreABC) -> "CdpClient":
51
- if agent_id not in _clients:
52
- _clients[agent_id] = CdpClient(agent_id, skill_store)
53
- return _clients[agent_id]