intentkit 0.7.5.dev16__tar.gz → 0.7.5.dev18__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.
Files changed (459) hide show
  1. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/PKG-INFO +1 -1
  2. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/__init__.py +1 -1
  3. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/config/config.py +0 -5
  4. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/engine.py +61 -42
  5. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/agent.py +82 -13
  6. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/llm.py +8 -8
  7. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/pyproject.toml +1 -1
  8. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/__init__.py +1 -1
  9. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/base.py +44 -17
  10. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/best_yield.py +11 -17
  11. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/networks.py +3 -2
  12. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/prices.py +9 -9
  13. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/route.py +27 -23
  14. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/tokens.py +24 -21
  15. intentkit-0.7.5.dev18/skills/enso/wallet.py +264 -0
  16. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/__init__.py +4 -4
  17. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/token_execute.py +24 -12
  18. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/token_quote.py +2 -2
  19. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/utils.py +96 -43
  20. intentkit-0.7.5.dev16/skills/enso/wallet.py +0 -379
  21. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/.gitignore +0 -0
  22. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/LICENSE +0 -0
  23. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/MANIFEST.in +0 -0
  24. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/README.md +0 -0
  25. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/__init__.py +0 -0
  26. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/agent.py +0 -0
  27. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/api.py +0 -0
  28. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/engine.py +0 -0
  29. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/graph.py +0 -0
  30. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/skill.py +0 -0
  31. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/twitter.py +0 -0
  32. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/clients/__init__.py +0 -0
  33. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/clients/cdp.py +0 -0
  34. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/clients/twitter.py +0 -0
  35. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/clients/web3.py +0 -0
  36. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/config/__init__.py +0 -0
  37. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/__init__.py +0 -0
  38. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/agent.py +0 -0
  39. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/api.py +0 -0
  40. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/chat.py +0 -0
  41. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/client.py +0 -0
  42. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/credit.py +0 -0
  43. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/node.py +0 -0
  44. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/prompt.py +0 -0
  45. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/agent_data.py +0 -0
  46. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/agent_public.json +0 -0
  47. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/agent_schema.json +0 -0
  48. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/app_setting.py +0 -0
  49. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/base.py +0 -0
  50. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/chat.py +0 -0
  51. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/conversation.py +0 -0
  52. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/credit.py +0 -0
  53. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/db.py +0 -0
  54. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/db_mig.py +0 -0
  55. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/generator.py +0 -0
  56. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/llm.csv +0 -0
  57. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/redis.py +0 -0
  58. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/skill.py +0 -0
  59. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/skills.csv +0 -0
  60. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/user.py +0 -0
  61. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/__init__.py +0 -0
  62. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/__init__.py +0 -0
  63. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/acolyt.jpg +0 -0
  64. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/ask.py +0 -0
  65. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/base.py +0 -0
  66. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/schema.json +0 -0
  67. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/README.md +0 -0
  68. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/__init__.py +0 -0
  69. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/aixbt.jpg +0 -0
  70. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/base.py +0 -0
  71. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/projects.py +0 -0
  72. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/schema.json +0 -0
  73. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/__init__.py +0 -0
  74. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/allora.jpeg +0 -0
  75. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/base.py +0 -0
  76. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/price.py +0 -0
  77. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/schema.json +0 -0
  78. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/base.py +0 -0
  79. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/basename/__init__.py +0 -0
  80. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/basename/base.py +0 -0
  81. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/basename/basename.svg +0 -0
  82. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/basename/schema.json +0 -0
  83. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/README.md +0 -0
  84. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/__init__.py +0 -0
  85. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/base.py +0 -0
  86. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/carv.webp +0 -0
  87. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/fetch_news.py +0 -0
  88. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/onchain_query.py +0 -0
  89. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/schema.json +0 -0
  90. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/token_info_and_price.py +0 -0
  91. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/README.md +0 -0
  92. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/__init__.py +0 -0
  93. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/base.py +0 -0
  94. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/casino.png +0 -0
  95. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/deck_draw.py +0 -0
  96. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/deck_shuffle.py +0 -0
  97. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/dice_roll.py +0 -0
  98. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/schema.json +0 -0
  99. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/utils.py +0 -0
  100. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cdp/__init__.py +0 -0
  101. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cdp/base.py +0 -0
  102. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cdp/cdp.png +0 -0
  103. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cdp/schema.json +0 -0
  104. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/README.md +0 -0
  105. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/__init__.py +0 -0
  106. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/base.py +0 -0
  107. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/chain_lookup.py +0 -0
  108. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/chainlist.png +0 -0
  109. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/schema.json +0 -0
  110. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/__init__.py +0 -0
  111. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/base.py +0 -0
  112. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/common.jpg +0 -0
  113. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/current_time.py +0 -0
  114. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/schema.json +0 -0
  115. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/README.md +0 -0
  116. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/__init__.py +0 -0
  117. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/base.py +0 -0
  118. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/constants.py +0 -0
  119. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/cookiefun.png +0 -0
  120. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/get_account_details.py +0 -0
  121. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/get_account_feed.py +0 -0
  122. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/get_account_smart_followers.py +0 -0
  123. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/get_sectors.py +0 -0
  124. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/schema.json +0 -0
  125. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/search_accounts.py +0 -0
  126. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/__init__.py +0 -0
  127. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/api.py +0 -0
  128. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/base.py +0 -0
  129. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/cryptocompare.png +0 -0
  130. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_news.py +0 -0
  131. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_price.py +0 -0
  132. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  133. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  134. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_top_volume.py +0 -0
  135. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_trading_signals.py +0 -0
  136. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/schema.json +0 -0
  137. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/__init__.py +0 -0
  138. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/base.py +0 -0
  139. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/cryptopanic.png +0 -0
  140. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  141. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  142. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/schema.json +0 -0
  143. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/README.md +0 -0
  144. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/__init__.py +0 -0
  145. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/base.py +0 -0
  146. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/dapplooker.jpg +0 -0
  147. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/dapplooker_token_data.py +0 -0
  148. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/schema.json +0 -0
  149. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/__init__.py +0 -0
  150. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/api.py +0 -0
  151. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/base.py +0 -0
  152. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/__init__.py +0 -0
  153. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  154. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_block.py +0 -0
  155. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_current_prices.py +0 -0
  156. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_first_price.py +0 -0
  157. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  158. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_price_chart.py +0 -0
  159. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  160. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/config/__init__.py +0 -0
  161. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/config/chains.py +0 -0
  162. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/defillama.jpeg +0 -0
  163. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/fees/__init__.py +0 -0
  164. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  165. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/schema.json +0 -0
  166. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/__init__.py +0 -0
  167. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  168. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  169. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  170. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  171. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tests/__init__.py +0 -0
  172. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tests/api_integration.test.py +0 -0
  173. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tests/api_unit.test.py +0 -0
  174. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/__init__.py +0 -0
  175. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  176. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_chains.py +0 -0
  177. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  178. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_protocol.py +0 -0
  179. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  180. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_protocols.py +0 -0
  181. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/volumes/__init__.py +0 -0
  182. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  183. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  184. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  185. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/yields/__init__.py +0 -0
  186. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  187. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/yields/fetch_pools.py +0 -0
  188. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/README.md +0 -0
  189. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/__init__.py +0 -0
  190. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/base.py +0 -0
  191. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/dexscreener.png +0 -0
  192. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/get_pair_info.py +0 -0
  193. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/get_token_pairs.py +0 -0
  194. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/get_tokens_info.py +0 -0
  195. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/model/__init__.py +0 -0
  196. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/model/search_token_response.py +0 -0
  197. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/schema.json +0 -0
  198. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/search_token.py +0 -0
  199. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/utils.py +0 -0
  200. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/__init__.py +0 -0
  201. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/base.py +0 -0
  202. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/dune.png +0 -0
  203. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  204. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  205. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/schema.json +0 -0
  206. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/README.md +0 -0
  207. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/__init__.py +0 -0
  208. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/base.py +0 -0
  209. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/elfa.jpg +0 -0
  210. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/mention.py +0 -0
  211. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/schema.json +0 -0
  212. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/stats.py +0 -0
  213. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/tokens.py +0 -0
  214. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/utils.py +0 -0
  215. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/README.md +0 -0
  216. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/abi/__init__.py +0 -0
  217. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/abi/approval.py +0 -0
  218. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/abi/erc20.py +0 -0
  219. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/abi/route.py +0 -0
  220. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/enso.jpg +0 -0
  221. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/schema.json +0 -0
  222. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc20/__init__.py +0 -0
  223. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc20/base.py +0 -0
  224. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc20/erc20.svg +0 -0
  225. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc20/schema.json +0 -0
  226. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc721/__init__.py +0 -0
  227. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc721/base.py +0 -0
  228. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc721/erc721.svg +0 -0
  229. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc721/schema.json +0 -0
  230. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/README.md +0 -0
  231. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/__init__.py +0 -0
  232. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/base.py +0 -0
  233. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/clear.py +0 -0
  234. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/crawl.py +0 -0
  235. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/firecrawl.png +0 -0
  236. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/query.py +0 -0
  237. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/schema.json +0 -0
  238. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/scrape.py +0 -0
  239. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/utils.py +0 -0
  240. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/README.md +0 -0
  241. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/__init__.py +0 -0
  242. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/base.py +0 -0
  243. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/github.jpg +0 -0
  244. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/github_search.py +0 -0
  245. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/schema.json +0 -0
  246. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/__init__.py +0 -0
  247. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/base.py +0 -0
  248. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/heurist.png +0 -0
  249. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_animagine_xl.py +0 -0
  250. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  251. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_arthemy_real.py +0 -0
  252. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_braindance.py +0 -0
  253. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  254. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  255. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_sdxl.py +0 -0
  256. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/schema.json +0 -0
  257. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/README.md +0 -0
  258. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/__init__.py +0 -0
  259. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/base.py +0 -0
  260. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/get.py +0 -0
  261. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/http.svg +0 -0
  262. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/post.py +0 -0
  263. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/put.py +0 -0
  264. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/schema.json +0 -0
  265. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/README.md +0 -0
  266. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/base.py +0 -0
  267. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/lifi.png +0 -0
  268. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/schema.json +0 -0
  269. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/README.md +0 -0
  270. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/__init__.py +0 -0
  271. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/api.py +0 -0
  272. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/base.py +0 -0
  273. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/fetch_chain_portfolio.py +0 -0
  274. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/fetch_nft_portfolio.py +0 -0
  275. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/fetch_solana_portfolio.py +0 -0
  276. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  277. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/moralis.png +0 -0
  278. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/schema.json +0 -0
  279. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/tests/__init__.py +0 -0
  280. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/tests/test_wallet.py +0 -0
  281. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/morpho/__init__.py +0 -0
  282. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/morpho/base.py +0 -0
  283. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/morpho/morpho.svg +0 -0
  284. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/morpho/schema.json +0 -0
  285. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/__init__.py +0 -0
  286. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/base.py +0 -0
  287. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/nation.png +0 -0
  288. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/nft_check.py +0 -0
  289. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/schema.json +0 -0
  290. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/__init__.py +0 -0
  291. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/base.py +0 -0
  292. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/dalle_image_generation.py +0 -0
  293. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/gpt_image_generation.py +0 -0
  294. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/gpt_image_to_image.py +0 -0
  295. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/image_to_text.py +0 -0
  296. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/openai.png +0 -0
  297. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/schema.json +0 -0
  298. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/README.md +0 -0
  299. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/__init__.py +0 -0
  300. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/base.py +0 -0
  301. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/constants.py +0 -0
  302. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/moralis.png +0 -0
  303. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/schema.json +0 -0
  304. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/token_balances.py +0 -0
  305. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_approvals.py +0 -0
  306. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_defi_positions.py +0 -0
  307. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_history.py +0 -0
  308. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_net_worth.py +0 -0
  309. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_nfts.py +0 -0
  310. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_profitability.py +0 -0
  311. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_profitability_summary.py +0 -0
  312. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_stats.py +0 -0
  313. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_swaps.py +0 -0
  314. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/pyth/__init__.py +0 -0
  315. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/pyth/base.py +0 -0
  316. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/pyth/pyth.svg +0 -0
  317. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/pyth/schema.json +0 -0
  318. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/skills.toml +0 -0
  319. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/__init__.py +0 -0
  320. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/base.py +0 -0
  321. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/get_channel.py +0 -0
  322. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/get_message.py +0 -0
  323. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/schedule_message.py +0 -0
  324. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/schema.json +0 -0
  325. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/send_message.py +0 -0
  326. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/slack.jpg +0 -0
  327. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/__init__.py +0 -0
  328. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/base.py +0 -0
  329. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/delete_data.py +0 -0
  330. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/fetch_data.py +0 -0
  331. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/insert_data.py +0 -0
  332. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/invoke_function.py +0 -0
  333. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/schema.json +0 -0
  334. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/supabase.svg +0 -0
  335. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/update_data.py +0 -0
  336. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/upsert_data.py +0 -0
  337. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/superfluid/__init__.py +0 -0
  338. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/superfluid/base.py +0 -0
  339. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/superfluid/schema.json +0 -0
  340. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/superfluid/superfluid.svg +0 -0
  341. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/__init__.py +0 -0
  342. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/add_autonomous_task.py +0 -0
  343. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/base.py +0 -0
  344. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/delete_autonomous_task.py +0 -0
  345. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/edit_autonomous_task.py +0 -0
  346. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/list_autonomous_tasks.py +0 -0
  347. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/read_agent_api_key.py +0 -0
  348. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/regenerate_agent_api_key.py +0 -0
  349. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/schema.json +0 -0
  350. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/system.svg +0 -0
  351. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/README.md +0 -0
  352. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/__init__.py +0 -0
  353. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/base.py +0 -0
  354. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/schema.json +0 -0
  355. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/tavily.jpg +0 -0
  356. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/tavily_extract.py +0 -0
  357. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/tavily_search.py +0 -0
  358. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/README.md +0 -0
  359. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/__init__.py +0 -0
  360. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/base.py +0 -0
  361. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/constants.py +0 -0
  362. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/erc20_transfers.py +0 -0
  363. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/moralis.png +0 -0
  364. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/schema.json +0 -0
  365. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/token_analytics.py +0 -0
  366. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/token_price.py +0 -0
  367. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/token_search.py +0 -0
  368. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/__init__.py +0 -0
  369. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/base.py +0 -0
  370. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/follow_user.py +0 -0
  371. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/get_mentions.py +0 -0
  372. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/get_timeline.py +0 -0
  373. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/get_user_by_username.py +0 -0
  374. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/get_user_tweets.py +0 -0
  375. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/like_tweet.py +0 -0
  376. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/post_tweet.py +0 -0
  377. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/reply_tweet.py +0 -0
  378. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/retweet.py +0 -0
  379. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/schema.json +0 -0
  380. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/search_tweets.py +0 -0
  381. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/twitter.png +0 -0
  382. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/__init__.py +0 -0
  383. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/base.py +0 -0
  384. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/schema.json +0 -0
  385. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/text_to_speech.py +0 -0
  386. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/unrealspeech.jpg +0 -0
  387. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/__init__.py +0 -0
  388. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/base.py +0 -0
  389. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/input.py +0 -0
  390. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/schema.json +0 -0
  391. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/venice_audio.py +0 -0
  392. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/venice_logo.jpg +0 -0
  393. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/README.md +0 -0
  394. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/__init__.py +0 -0
  395. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/api.py +0 -0
  396. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/base.py +0 -0
  397. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/config.py +0 -0
  398. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/README.md +0 -0
  399. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/__init__.py +0 -0
  400. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  401. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  402. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  403. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/README.md +0 -0
  404. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/__init__.py +0 -0
  405. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  406. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  407. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  408. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  409. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  410. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  411. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  412. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  413. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  414. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/README.md +0 -0
  415. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/__init__.py +0 -0
  416. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  417. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  418. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  419. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/README.md +0 -0
  420. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/__init__.py +0 -0
  421. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/image_vision.py +0 -0
  422. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  423. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  424. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/schema.json +0 -0
  425. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/utils.py +0 -0
  426. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/venice_image.jpg +0 -0
  427. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/README.md +0 -0
  428. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/__init__.py +0 -0
  429. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/base.py +0 -0
  430. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/document_indexer.py +0 -0
  431. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/langchain.png +0 -0
  432. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/schema.json +0 -0
  433. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/scrape_and_index.py +0 -0
  434. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/utils.py +0 -0
  435. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/website_indexer.py +0 -0
  436. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/weth/__init__.py +0 -0
  437. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/weth/base.py +0 -0
  438. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/weth/schema.json +0 -0
  439. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/weth/weth.svg +0 -0
  440. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/wow/__init__.py +0 -0
  441. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/wow/base.py +0 -0
  442. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/wow/schema.json +0 -0
  443. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/wow/wow.svg +0 -0
  444. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/README.md +0 -0
  445. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/__init__.py +0 -0
  446. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/base.py +0 -0
  447. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/price.py +0 -0
  448. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/schema.json +0 -0
  449. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/swap.py +0 -0
  450. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/transfer.py +0 -0
  451. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/xmtp.png +0 -0
  452. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/__init__.py +0 -0
  453. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/chain.py +0 -0
  454. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/error.py +0 -0
  455. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/logging.py +0 -0
  456. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/random.py +0 -0
  457. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/s3.py +0 -0
  458. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/slack_alert.py +0 -0
  459. {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.7.5.dev16
3
+ Version: 0.7.5.dev18
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
5
  Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
6
6
  Project-URL: Repository, https://github.com/crestalnetwork/intentkit
@@ -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.7.5-dev16"
6
+ __version__ = "0.7.5-dev18"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -1,5 +1,3 @@
1
- # app/config.py
2
- import asyncio
3
1
  import json
4
2
  import logging
5
3
  import os
@@ -11,9 +9,6 @@ from intentkit.utils.logging import setup_logging
11
9
  from intentkit.utils.s3 import init_s3
12
10
  from intentkit.utils.slack_alert import init_slack
13
11
 
14
- # hack for cdp bug
15
- asyncio.set_event_loop_policy(asyncio.DefaultEventLoopPolicy())
16
-
17
12
  # Load environment variables from .env file
18
13
  load_dotenv()
19
14
 
@@ -21,6 +21,7 @@ from typing import Optional, Tuple
21
21
 
22
22
  import sqlalchemy
23
23
  from epyxid import XID
24
+ from langchain_core.language_models import BaseChatModel
24
25
  from langchain_core.messages import (
25
26
  BaseMessage,
26
27
  HumanMessage,
@@ -29,6 +30,7 @@ from langchain_core.tools import BaseTool
29
30
  from langgraph.errors import GraphRecursionError
30
31
  from langgraph.graph.state import CompiledStateGraph
31
32
  from langgraph.prebuilt import create_react_agent
33
+ from langgraph.runtime import Runtime
32
34
  from sqlalchemy import func, update
33
35
  from sqlalchemy.exc import SQLAlchemyError
34
36
 
@@ -70,8 +72,8 @@ _agents_updated: dict[str, datetime] = {}
70
72
  _private_agents_updated: dict[str, datetime] = {}
71
73
 
72
74
 
73
- async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateGraph:
74
- """Create an AI agent with specified configuration and tools.
75
+ async def build_agent(agent: Agent, agent_data: AgentData) -> CompiledStateGraph:
76
+ """Build an AI agent with specified configuration and tools.
75
77
 
76
78
  This function:
77
79
  1. Initializes LLM with specified model
@@ -81,13 +83,12 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
81
83
 
82
84
  Args:
83
85
  agent (Agent): Agent configuration object
86
+ agent_data (AgentData): Agent data object
84
87
  is_private (bool, optional): Flag indicating whether the agent is private. Defaults to False.
85
- has_search (bool, optional): Flag indicating whether to include search tools. Defaults to False.
86
88
 
87
89
  Returns:
88
90
  CompiledStateGraph: Initialized LangChain agent
89
91
  """
90
- agent_data = await AgentData.get(agent.id)
91
92
 
92
93
  # Create the LLM model instance
93
94
  llm_model = await create_llm_model(
@@ -108,6 +109,7 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
108
109
 
109
110
  # ==== Load skills
110
111
  tools: list[BaseTool | dict] = []
112
+ private_tools: list[BaseTool | dict] = []
111
113
 
112
114
  if agent.skills:
113
115
  for k, v in agent.skills.items():
@@ -116,11 +118,18 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
116
118
  try:
117
119
  skill_module = importlib.import_module(f"intentkit.skills.{k}")
118
120
  if hasattr(skill_module, "get_skills"):
121
+ # all
119
122
  skill_tools = await skill_module.get_skills(
120
- v, is_private, agent_store, agent_id=agent.id
123
+ v, False, agent_store, agent_id=agent.id
121
124
  )
122
125
  if skill_tools and len(skill_tools) > 0:
123
126
  tools.extend(skill_tools)
127
+ # private
128
+ skill_private_tools = await skill_module.get_skills(
129
+ v, True, agent_store, agent_id=agent.id
130
+ )
131
+ if skill_private_tools and len(skill_private_tools) > 0:
132
+ private_tools.extend(skill_private_tools)
124
133
  else:
125
134
  logger.error(f"Skill {k} does not have get_skills function")
126
135
  except ImportError as e:
@@ -128,23 +137,33 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
128
137
 
129
138
  # filter the duplicate tools
130
139
  tools = list({tool.name: tool for tool in tools}.values())
140
+ private_tools = list({tool.name: tool for tool in private_tools}.values())
131
141
 
132
142
  # Add search tools if requested
133
143
  if (
134
- llm_model.info.provider == LLMProvider.OPENAI
135
- and llm_model.info.supports_search
136
- and not agent.model.startswith(
137
- "gpt-5"
138
- ) # tmp disable gpt-5 search since package bugs
144
+ llm_model.info.provider == LLMProvider.OPENAI and llm_model.info.supports_search
145
+ # and not agent.model.startswith(
146
+ # "gpt-5"
147
+ # ) # tmp disable gpt-5 search since package bugs
139
148
  ):
140
149
  tools.append({"type": "web_search_preview"})
150
+ private_tools.append({"type": "web_search_preview"})
141
151
 
142
152
  # Create the formatted_prompt function using the refactored prompt module
143
153
  formatted_prompt = create_formatted_prompt_function(agent, agent_data)
144
154
 
155
+ # bind tools to llm
156
+ def select_model(
157
+ state: AgentState, runtime: Runtime[AgentContext]
158
+ ) -> BaseChatModel:
159
+ context = runtime.context
160
+ if context.is_private:
161
+ return llm.bind_tools(private_tools)
162
+ return llm.bind_tools(tools)
163
+
145
164
  for tool in tools:
146
165
  logger.info(
147
- f"[{agent.id}{'-private' if is_private else ''}] loaded tool: {tool.name if isinstance(tool, BaseTool) else tool}"
166
+ f"[{agent.id}] loaded tool: {tool.name if isinstance(tool, BaseTool) else tool}"
148
167
  )
149
168
 
150
169
  # Pre model hook
@@ -157,7 +176,7 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
157
176
 
158
177
  # Create ReAct Agent using the LLM and CDP Agentkit tools.
159
178
  executor = create_react_agent(
160
- model=llm,
179
+ model=select_model,
161
180
  tools=tools,
162
181
  prompt=formatted_prompt,
163
182
  pre_model_hook=pre_model_hook,
@@ -172,7 +191,23 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
172
191
  return executor
173
192
 
174
193
 
175
- async def initialize_agent(aid, is_private=False):
194
+ async def create_agent(agent: Agent) -> CompiledStateGraph:
195
+ """Create an AI agent with specified configuration and tools.
196
+
197
+ This function maintains backward compatibility by calling build_agent internally.
198
+
199
+ Args:
200
+ agent (Agent): Agent configuration object
201
+ is_private (bool, optional): Flag indicating whether the agent is private. Defaults to False.
202
+
203
+ Returns:
204
+ CompiledStateGraph: Initialized LangChain agent
205
+ """
206
+ agent_data = await AgentData.get(agent.id)
207
+ return await build_agent(agent, agent_data)
208
+
209
+
210
+ async def initialize_agent(aid):
176
211
  """Initialize an AI agent with specified configuration and tools.
177
212
 
178
213
  This function:
@@ -198,47 +233,34 @@ async def initialize_agent(aid, is_private=False):
198
233
  )
199
234
 
200
235
  # Create the agent using the new create_agent function
201
- executor = await create_agent(agent, is_private)
236
+ executor = await create_agent(agent)
202
237
 
203
238
  # Cache the agent executor
204
- if is_private:
205
- _private_agents[aid] = executor
206
- _private_agents_updated[aid] = agent.updated_at
207
- else:
208
- _agents[aid] = executor
209
- _agents_updated[aid] = agent.updated_at
239
+ _agents[aid] = executor
240
+ _agents_updated[aid] = agent.deployed_at if agent.deployed_at else agent.updated_at
210
241
 
211
242
 
212
- async def agent_executor(
213
- agent_id: str, is_private: bool
214
- ) -> Tuple[CompiledStateGraph, float]:
243
+ async def agent_executor(agent_id: str) -> Tuple[CompiledStateGraph, float]:
215
244
  start = time.perf_counter()
216
245
  agent = await Agent.get(agent_id)
217
246
  if not agent:
218
247
  raise IntentKitAPIError(
219
248
  status_code=404, key="AgentNotFound", message="Agent not found"
220
249
  )
221
- agents = _private_agents if is_private else _agents
222
- agents_updated = _private_agents_updated if is_private else _agents_updated
223
-
250
+ updated_at = agent.deployed_at if agent.deployed_at else agent.updated_at
224
251
  # Check if agent needs reinitialization due to updates
225
252
  needs_reinit = False
226
- if agent_id in agents:
227
- if (
228
- agent_id not in agents_updated
229
- or agent.updated_at != agents_updated[agent_id]
230
- ):
253
+ if agent_id in _agents:
254
+ if agent_id not in _agents_updated or updated_at != _agents_updated[agent_id]:
231
255
  needs_reinit = True
232
- logger.info(
233
- f"Reinitializing agent {agent_id} due to updates, private mode: {is_private}"
234
- )
256
+ logger.info(f"Reinitializing agent {agent_id} due to updates")
235
257
 
236
258
  # cold start or needs reinitialization
237
259
  cold_start_cost = 0.0
238
- if (agent_id not in agents) or needs_reinit:
239
- await initialize_agent(agent_id, is_private)
260
+ if (agent_id not in _agents) or needs_reinit:
261
+ await initialize_agent(agent_id)
240
262
  cold_start_cost = time.perf_counter() - start
241
- return agents[agent_id], cold_start_cost
263
+ return _agents[agent_id], cold_start_cost
242
264
 
243
265
 
244
266
  async def stream_agent(message: ChatMessageCreate):
@@ -355,7 +377,7 @@ async def stream_agent(message: ChatMessageCreate):
355
377
  if input.user_id == agent.owner:
356
378
  is_private = True
357
379
 
358
- executor, cold_start_cost = await agent_executor(input.agent_id, is_private)
380
+ executor, cold_start_cost = await agent_executor(input.agent_id)
359
381
  last = start + cold_start_cost
360
382
 
361
383
  # Extract images from attachments
@@ -889,10 +911,7 @@ async def clean_agent_memory(
889
911
  async def thread_stats(agent_id: str, chat_id: str) -> list[BaseMessage]:
890
912
  thread_id = f"{agent_id}-{chat_id}"
891
913
  stream_config = {"configurable": {"thread_id": thread_id}}
892
- is_private = False
893
- if chat_id.startswith("owner") or chat_id.startswith("autonomous"):
894
- is_private = True
895
- executor, _ = await agent_executor(agent_id, is_private)
914
+ executor, _ = await agent_executor(agent_id)
896
915
  snap = await executor.aget_state(stream_config)
897
916
  if snap.values and "messages" in snap.values:
898
917
  return snap.values["messages"]
@@ -142,7 +142,7 @@ class AgentExample(BaseModel):
142
142
  description="Name of the example",
143
143
  max_length=50,
144
144
  json_schema_extra={
145
- "x-group": "examples",
145
+ "x-placeholder": "Add a name for the example",
146
146
  },
147
147
  ),
148
148
  ]
@@ -152,7 +152,7 @@ class AgentExample(BaseModel):
152
152
  description="Description of the example",
153
153
  max_length=200,
154
154
  json_schema_extra={
155
- "x-group": "examples",
155
+ "x-placeholder": "Add a short description for the example",
156
156
  },
157
157
  ),
158
158
  ]
@@ -162,7 +162,7 @@ class AgentExample(BaseModel):
162
162
  description="Example prompt",
163
163
  max_length=2000,
164
164
  json_schema_extra={
165
- "x-group": "examples",
165
+ "x-placeholder": "The prompt will be sent to the agent",
166
166
  },
167
167
  ),
168
168
  ]
@@ -394,6 +394,21 @@ class AgentTable(Base, AgentUserInputColumns):
394
394
  nullable=True,
395
395
  comment="List of example interactions for the agent",
396
396
  )
397
+ public_extra = Column(
398
+ JSON().with_variant(JSONB(), "postgresql"),
399
+ nullable=True,
400
+ comment="Public extra data of the agent",
401
+ )
402
+ deployed_at = Column(
403
+ DateTime(timezone=True),
404
+ nullable=True,
405
+ comment="Timestamp when the agent was deployed",
406
+ )
407
+ public_info_updated_at = Column(
408
+ DateTime(timezone=True),
409
+ nullable=True,
410
+ comment="Timestamp when the agent public info was last updated",
411
+ )
397
412
 
398
413
  # auto timestamp
399
414
  created_at = Column(
@@ -881,6 +896,8 @@ class AgentUpdate(AgentUserInput):
881
896
  # update
882
897
  for key, value in self.model_dump(exclude_unset=True).items():
883
898
  setattr(db_agent, key, value)
899
+ db_agent.version = self.hash()
900
+ db_agent.deployed_at = func.now()
884
901
  await db.commit()
885
902
  await db.refresh(db_agent)
886
903
  return Agent.model_validate(db_agent)
@@ -903,6 +920,7 @@ class AgentUpdate(AgentUserInput):
903
920
  setattr(db_agent, key, value)
904
921
  # version
905
922
  db_agent.version = self.hash()
923
+ db_agent.deployed_at = func.now()
906
924
  await db.commit()
907
925
  await db.refresh(db_agent)
908
926
  return Agent.model_validate(db_agent)
@@ -964,6 +982,7 @@ class AgentCreate(AgentUpdate):
964
982
  try:
965
983
  db_agent = AgentTable(**self.model_dump())
966
984
  db_agent.version = self.hash()
985
+ db_agent.deployed_at = func.now()
967
986
  db.add(db_agent)
968
987
  await db.commit()
969
988
  await db.refresh(db_agent)
@@ -991,7 +1010,6 @@ class AgentPublicInfo(BaseModel):
991
1010
  default=None,
992
1011
  description="Description of the agent, for public view, not contained in prompt",
993
1012
  json_schema_extra={
994
- "x-group": "basic",
995
1013
  "x-placeholder": "Introduce your agent",
996
1014
  },
997
1015
  ),
@@ -1002,7 +1020,6 @@ class AgentPublicInfo(BaseModel):
1002
1020
  default=None,
1003
1021
  description="Link of external website of the agent, if you have one",
1004
1022
  json_schema_extra={
1005
- "x-group": "basic",
1006
1023
  "x-placeholder": "Enter agent external website url",
1007
1024
  "format": "uri",
1008
1025
  },
@@ -1016,7 +1033,6 @@ class AgentPublicInfo(BaseModel):
1016
1033
  max_length=10,
1017
1034
  min_length=1,
1018
1035
  json_schema_extra={
1019
- "x-group": "basic",
1020
1036
  "x-placeholder": "If one day, your agent has it's own token, what will it be?",
1021
1037
  },
1022
1038
  ),
@@ -1028,8 +1044,7 @@ class AgentPublicInfo(BaseModel):
1028
1044
  description="Token address of the agent",
1029
1045
  max_length=42,
1030
1046
  json_schema_extra={
1031
- "x-group": "internal",
1032
- "readOnly": True,
1047
+ "x-placeholder": "The contract address of the agent token",
1033
1048
  },
1034
1049
  ),
1035
1050
  ]
@@ -1040,8 +1055,7 @@ class AgentPublicInfo(BaseModel):
1040
1055
  description="Pool of the agent token",
1041
1056
  max_length=42,
1042
1057
  json_schema_extra={
1043
- "x-group": "internal",
1044
- "readOnly": True,
1058
+ "x-placeholder": "The contract address of the agent token pool",
1045
1059
  },
1046
1060
  ),
1047
1061
  ]
@@ -1052,7 +1066,7 @@ class AgentPublicInfo(BaseModel):
1052
1066
  description="Fee percentage of the agent",
1053
1067
  ge=Decimal("0.0"),
1054
1068
  json_schema_extra={
1055
- "x-group": "basic",
1069
+ "x-placeholder": "Agent will charge service fee according to this ratio.",
1056
1070
  },
1057
1071
  ),
1058
1072
  ]
@@ -1063,7 +1077,7 @@ class AgentPublicInfo(BaseModel):
1063
1077
  description="Introduction of the example",
1064
1078
  max_length=2000,
1065
1079
  json_schema_extra={
1066
- "x-group": "examples",
1080
+ "x-placeholder": "Add a short introduction in new chat",
1067
1081
  },
1068
1082
  ),
1069
1083
  ]
@@ -1074,11 +1088,51 @@ class AgentPublicInfo(BaseModel):
1074
1088
  description="List of example prompts for the agent",
1075
1089
  max_length=6,
1076
1090
  json_schema_extra={
1077
- "x-group": "examples",
1078
1091
  "x-inline": True,
1079
1092
  },
1080
1093
  ),
1081
1094
  ]
1095
+ public_extra: Annotated[
1096
+ Optional[Dict[str, Any]],
1097
+ PydanticField(
1098
+ default=None,
1099
+ description="Public extra data of the agent",
1100
+ ),
1101
+ ]
1102
+
1103
+ async def override(self, agent_id: str) -> "Agent":
1104
+ """Override agent public info with all fields from this instance.
1105
+
1106
+ Args:
1107
+ agent_id: The ID of the agent to override
1108
+
1109
+ Returns:
1110
+ The updated Agent instance
1111
+ """
1112
+ async with get_session() as session:
1113
+ # Get the agent from database
1114
+ result = await session.execute(
1115
+ select(AgentTable).where(AgentTable.id == agent_id)
1116
+ )
1117
+ db_agent = result.scalar_one_or_none()
1118
+
1119
+ if not db_agent:
1120
+ raise IntentKitAPIError(404, "NotFound", f"Agent {agent_id} not found")
1121
+
1122
+ # Update public info fields
1123
+ update_data = self.model_dump()
1124
+ for key, value in update_data.items():
1125
+ if hasattr(db_agent, key):
1126
+ setattr(db_agent, key, value)
1127
+
1128
+ # Update public_info_updated_at timestamp
1129
+ db_agent.public_info_updated_at = func.now()
1130
+
1131
+ # Commit changes
1132
+ await session.commit()
1133
+ await session.refresh(db_agent)
1134
+
1135
+ return Agent.model_validate(db_agent)
1082
1136
 
1083
1137
 
1084
1138
  class Agent(AgentCreate, AgentPublicInfo):
@@ -1124,6 +1178,21 @@ class Agent(AgentCreate, AgentPublicInfo):
1124
1178
  description="Other helper data fields for query, come from agent and agent data"
1125
1179
  ),
1126
1180
  ]
1181
+ deployed_at: Annotated[
1182
+ Optional[datetime],
1183
+ PydanticField(
1184
+ default=None,
1185
+ description="Timestamp when the agent was deployed",
1186
+ ),
1187
+ ]
1188
+ public_info_updated_at: Annotated[
1189
+ Optional[datetime],
1190
+ PydanticField(
1191
+ default=None,
1192
+ description="Timestamp when the agent public info was last updated",
1193
+ ),
1194
+ ]
1195
+
1127
1196
  # auto timestamp
1128
1197
  created_at: Annotated[
1129
1198
  datetime,
@@ -12,7 +12,7 @@ from intentkit.models.base import Base
12
12
  from intentkit.models.db import get_session
13
13
  from intentkit.models.redis import get_redis
14
14
  from intentkit.utils.error import IntentKitLookUpError
15
- from langchain_core.language_models import LanguageModelLike
15
+ from langchain.chat_models.base import BaseChatModel
16
16
  from pydantic import BaseModel, ConfigDict, Field
17
17
  from sqlalchemy import Boolean, Column, DateTime, Integer, Numeric, String, func, select
18
18
  from sqlalchemy.ext.asyncio import AsyncSession
@@ -344,7 +344,7 @@ class LLMModel(BaseModel):
344
344
  return model_info
345
345
 
346
346
  # This will be implemented by subclasses to return the appropriate LLM instance
347
- async def create_instance(self, config: Any) -> LanguageModelLike:
347
+ async def create_instance(self, config: Any) -> BaseChatModel:
348
348
  """Create and return the LLM instance based on the configuration."""
349
349
  raise NotImplementedError("Subclasses must implement create_instance")
350
350
 
@@ -362,7 +362,7 @@ class LLMModel(BaseModel):
362
362
  class OpenAILLM(LLMModel):
363
363
  """OpenAI LLM configuration."""
364
364
 
365
- async def create_instance(self, config: Any) -> LanguageModelLike:
365
+ async def create_instance(self, config: Any) -> BaseChatModel:
366
366
  """Create and return a ChatOpenAI instance."""
367
367
  from langchain_openai import ChatOpenAI
368
368
 
@@ -398,7 +398,7 @@ class OpenAILLM(LLMModel):
398
398
  class DeepseekLLM(LLMModel):
399
399
  """Deepseek LLM configuration."""
400
400
 
401
- async def create_instance(self, config: Any) -> LanguageModelLike:
401
+ async def create_instance(self, config: Any) -> BaseChatModel:
402
402
  """Create and return a ChatDeepseek instance."""
403
403
 
404
404
  from langchain_deepseek import ChatDeepSeek
@@ -431,7 +431,7 @@ class DeepseekLLM(LLMModel):
431
431
  class XAILLM(LLMModel):
432
432
  """XAI (Grok) LLM configuration."""
433
433
 
434
- async def create_instance(self, config: Any) -> LanguageModelLike:
434
+ async def create_instance(self, config: Any) -> BaseChatModel:
435
435
  """Create and return a ChatXAI instance."""
436
436
 
437
437
  from langchain_xai import ChatXAI
@@ -463,7 +463,7 @@ class XAILLM(LLMModel):
463
463
  class EternalLLM(LLMModel):
464
464
  """Eternal AI LLM configuration."""
465
465
 
466
- async def create_instance(self, config: Any) -> LanguageModelLike:
466
+ async def create_instance(self, config: Any) -> BaseChatModel:
467
467
  """Create and return a ChatOpenAI instance configured for Eternal AI."""
468
468
  from langchain_openai import ChatOpenAI
469
469
 
@@ -495,7 +495,7 @@ class EternalLLM(LLMModel):
495
495
  class ReigentLLM(LLMModel):
496
496
  """Reigent LLM configuration."""
497
497
 
498
- async def create_instance(self, config: Any) -> LanguageModelLike:
498
+ async def create_instance(self, config: Any) -> BaseChatModel:
499
499
  """Create and return a ChatOpenAI instance configured for Reigent."""
500
500
  from langchain_openai import ChatOpenAI
501
501
 
@@ -517,7 +517,7 @@ class ReigentLLM(LLMModel):
517
517
  class VeniceLLM(LLMModel):
518
518
  """Venice LLM configuration."""
519
519
 
520
- async def create_instance(self, config: Any) -> LanguageModelLike:
520
+ async def create_instance(self, config: Any) -> BaseChatModel:
521
521
  """Create and return a ChatOpenAI instance configured for Venice."""
522
522
  from langchain_openai import ChatOpenAI
523
523
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.7.5-dev16"
3
+ version = "0.7.5-dev18"
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"
@@ -36,7 +36,7 @@ class Config(SkillConfig):
36
36
 
37
37
  states: SkillStates
38
38
  api_token: NotRequired[str]
39
- main_tokens: List[str]
39
+ main_tokens: NotRequired[List[str]]
40
40
 
41
41
 
42
42
  async def get_skills(
@@ -1,6 +1,6 @@
1
+ from decimal import Decimal
1
2
  from typing import Optional, Type
2
3
 
3
- from cdp import EvmServerAccount
4
4
  from coinbase_agentkit import CdpEvmWalletProvider
5
5
  from langchain.tools.base import ToolException
6
6
  from pydantic import BaseModel, Field
@@ -9,10 +9,9 @@ from intentkit.abstracts.graph import AgentContext
9
9
  from intentkit.abstracts.skill import SkillStoreABC
10
10
  from intentkit.clients import CdpClient, get_cdp_client
11
11
  from intentkit.skills.base import IntentKitSkill
12
- from intentkit.utils.chain import ChainProvider, NetworkId
12
+ from intentkit.utils.chain import ChainProvider, Network, network_to_id
13
13
 
14
14
  base_url = "https://api.enso.finance"
15
- default_chain_id = int(NetworkId.BaseMainnet)
16
15
 
17
16
 
18
17
  class EnsoBaseTool(IntentKitSkill):
@@ -25,18 +24,6 @@ class EnsoBaseTool(IntentKitSkill):
25
24
  description="The skill store for persisting data"
26
25
  )
27
26
 
28
- async def get_account(self, context: AgentContext) -> Optional[EvmServerAccount]:
29
- """Get the account object from the CDP client.
30
-
31
- Args:
32
- context: The skill context containing agent information.
33
-
34
- Returns:
35
- Optional[EvmServerAccount]: The account object if available.
36
- """
37
- client: CdpClient = await get_cdp_client(context.agent.id, self.skill_store)
38
- return await client.get_account()
39
-
40
27
  async def get_wallet_provider(
41
28
  self, context: AgentContext
42
29
  ) -> Optional[CdpEvmWalletProvider]:
@@ -51,6 +38,13 @@ class EnsoBaseTool(IntentKitSkill):
51
38
  client: CdpClient = await get_cdp_client(context.agent.id, self.skill_store)
52
39
  return await client.get_wallet_provider()
53
40
 
41
+ async def get_wallet_address(self, context: AgentContext) -> str:
42
+ client: CdpClient = await get_cdp_client(context.agent.id, self.skill_store)
43
+ provider_config = await client.get_provider_config()
44
+ if not provider_config.address:
45
+ raise ToolException("wallet address not found for agent")
46
+ return provider_config.address
47
+
54
48
  def get_chain_provider(self, context: AgentContext) -> Optional[ChainProvider]:
55
49
  return self.skill_store.get_system_config("chain_provider")
56
50
 
@@ -60,8 +54,7 @@ class EnsoBaseTool(IntentKitSkill):
60
54
  return skill_config["main_tokens"]
61
55
  return []
62
56
 
63
- def get_api_key(self) -> str:
64
- context = self.get_context()
57
+ def get_api_token(self, context: AgentContext) -> str:
65
58
  skill_config = context.agent.skill_config(self.category)
66
59
  api_key_provider = skill_config.get("api_key_provider")
67
60
  if api_key_provider == "platform":
@@ -74,6 +67,40 @@ class EnsoBaseTool(IntentKitSkill):
74
67
  f"Invalid API key provider: {api_key_provider}, or no api_token in config"
75
68
  )
76
69
 
70
+ def resolve_chain_id(
71
+ self, context: AgentContext, chain_id: Optional[int] = None
72
+ ) -> int:
73
+ if chain_id:
74
+ return chain_id
75
+
76
+ agent = context.agent
77
+ try:
78
+ network = Network(agent.network_id)
79
+ except ValueError as exc: # pragma: no cover - defensive
80
+ raise ToolException(
81
+ f"Unsupported network configured for agent: {agent.network_id}"
82
+ ) from exc
83
+
84
+ network_id = network_to_id.get(network)
85
+ if network_id is None:
86
+ raise ToolException(
87
+ f"Unable to determine chain id for network: {agent.network_id}"
88
+ )
89
+ return int(network_id)
90
+
77
91
  @property
78
92
  def category(self) -> str:
79
93
  return "enso"
94
+
95
+
96
+ def format_amount_with_decimals(
97
+ amount: object, decimals: Optional[int]
98
+ ) -> Optional[str]:
99
+ if amount is None or decimals is None:
100
+ return None
101
+
102
+ try:
103
+ value = Decimal(str(amount)) / (Decimal(10) ** decimals)
104
+ return format(value, "f")
105
+ except Exception: # pragma: no cover - defensive
106
+ return None