intentkit 0.8.17.dev2__tar.gz → 0.8.27.dev1__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 (473) hide show
  1. intentkit-0.8.27.dev1/LICENSE +21 -0
  2. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1}/PKG-INFO +4 -4
  3. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/MANIFEST.in +1 -2
  4. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/__init__.py +6 -4
  5. intentkit-0.8.27.dev1/intentkit/config/config.py +240 -0
  6. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/asset.py +17 -3
  7. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/credit.py +10 -10
  8. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/engine.py +36 -24
  9. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/prompt.py +1 -1
  10. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/agent.py +89 -67
  11. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/agent_data.py +101 -72
  12. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/app_setting.py +9 -7
  13. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/chat.py +60 -118
  14. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/conversation.py +16 -23
  15. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/credit.py +97 -96
  16. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/db.py +2 -1
  17. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/db_mig.py +2 -1
  18. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/llm.csv +9 -8
  19. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/llm.py +58 -29
  20. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/skill.py +37 -30
  21. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/skills.csv +5 -3
  22. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/user.py +44 -18
  23. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/token_info_and_price.py +1 -1
  24. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/base.py +6 -2
  25. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/utils.py +1 -1
  26. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/__init__.py +12 -0
  27. intentkit-0.8.27.dev1/intentkit/skills/openai/gpt_avatar_generator.py +102 -0
  28. intentkit-0.8.27.dev1/intentkit/skills/openai/gpt_image_mini_generator.py +92 -0
  29. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/schema.json +32 -0
  30. intentkit-0.8.27.dev1/intentkit/utils/__init__.py +5 -0
  31. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/chain.py +198 -96
  32. intentkit-0.8.27.dev1/intentkit/utils/ens.py +135 -0
  33. intentkit-0.8.27.dev1/intentkit/uv.lock +3377 -0
  34. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1}/pyproject.toml +70 -47
  35. intentkit-0.8.17.dev2/config/config.py +0 -211
  36. intentkit-0.8.17.dev2/utils/__init__.py +0 -1
  37. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1}/.gitignore +0 -0
  38. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/LICENSE +0 -0
  39. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/README.md +0 -0
  40. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/__init__.py +0 -0
  41. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/agent.py +0 -0
  42. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/api.py +0 -0
  43. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/engine.py +0 -0
  44. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/graph.py +0 -0
  45. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/skill.py +0 -0
  46. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/twitter.py +0 -0
  47. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/clients/__init__.py +0 -0
  48. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/clients/cdp.py +0 -0
  49. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/clients/twitter.py +0 -0
  50. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/clients/web3.py +0 -0
  51. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/config/__init__.py +0 -0
  52. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/__init__.py +0 -0
  53. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/agent.py +0 -0
  54. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/api.py +0 -0
  55. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/chat.py +0 -0
  56. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/client.py +0 -0
  57. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/node.py +0 -0
  58. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/scheduler.py +0 -0
  59. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/statistics.py +0 -0
  60. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/agent_public.json +0 -0
  61. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/agent_schema.json +0 -0
  62. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/base.py +0 -0
  63. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/redis.py +0 -0
  64. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/__init__.py +0 -0
  65. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/__init__.py +0 -0
  66. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/acolyt.jpg +0 -0
  67. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/ask.py +0 -0
  68. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/base.py +0 -0
  69. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/schema.json +0 -0
  70. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/README.md +0 -0
  71. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/__init__.py +0 -0
  72. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/aixbt.jpg +0 -0
  73. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/base.py +0 -0
  74. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/projects.py +0 -0
  75. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/schema.json +0 -0
  76. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/__init__.py +0 -0
  77. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/allora.jpeg +0 -0
  78. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/base.py +0 -0
  79. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/price.py +0 -0
  80. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/schema.json +0 -0
  81. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/base.py +0 -0
  82. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/basename/__init__.py +0 -0
  83. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/basename/base.py +0 -0
  84. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/basename/basename.svg +0 -0
  85. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/basename/schema.json +0 -0
  86. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/README.md +0 -0
  87. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/__init__.py +0 -0
  88. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/base.py +0 -0
  89. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/carv.webp +0 -0
  90. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/fetch_news.py +0 -0
  91. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/onchain_query.py +0 -0
  92. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/schema.json +0 -0
  93. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/README.md +0 -0
  94. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/__init__.py +0 -0
  95. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/base.py +0 -0
  96. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/casino.png +0 -0
  97. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/deck_draw.py +0 -0
  98. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/deck_shuffle.py +0 -0
  99. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/dice_roll.py +0 -0
  100. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/schema.json +0 -0
  101. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/utils.py +0 -0
  102. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cdp/__init__.py +0 -0
  103. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cdp/base.py +0 -0
  104. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cdp/cdp.png +0 -0
  105. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cdp/schema.json +0 -0
  106. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/README.md +0 -0
  107. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/__init__.py +0 -0
  108. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/base.py +0 -0
  109. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/chain_lookup.py +0 -0
  110. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/chainlist.png +0 -0
  111. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/schema.json +0 -0
  112. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/__init__.py +0 -0
  113. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/base.py +0 -0
  114. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/common.jpg +0 -0
  115. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/current_time.py +0 -0
  116. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/schema.json +0 -0
  117. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/README.md +0 -0
  118. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/__init__.py +0 -0
  119. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/base.py +0 -0
  120. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/constants.py +0 -0
  121. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/cookiefun.png +0 -0
  122. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/get_account_details.py +0 -0
  123. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/get_account_feed.py +0 -0
  124. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/get_account_smart_followers.py +0 -0
  125. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/get_sectors.py +0 -0
  126. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/schema.json +0 -0
  127. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/search_accounts.py +0 -0
  128. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/__init__.py +0 -0
  129. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/api.py +0 -0
  130. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/base.py +0 -0
  131. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/cryptocompare.png +0 -0
  132. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_news.py +0 -0
  133. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_price.py +0 -0
  134. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  135. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  136. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_top_volume.py +0 -0
  137. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_trading_signals.py +0 -0
  138. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/schema.json +0 -0
  139. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/__init__.py +0 -0
  140. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/base.py +0 -0
  141. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/cryptopanic.png +0 -0
  142. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  143. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  144. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/schema.json +0 -0
  145. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/README.md +0 -0
  146. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/__init__.py +0 -0
  147. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/base.py +0 -0
  148. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/dapplooker.jpg +0 -0
  149. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/dapplooker_token_data.py +0 -0
  150. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/schema.json +0 -0
  151. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/__init__.py +0 -0
  152. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/api.py +0 -0
  153. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/base.py +0 -0
  154. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/__init__.py +0 -0
  155. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  156. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_block.py +0 -0
  157. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_current_prices.py +0 -0
  158. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_first_price.py +0 -0
  159. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  160. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_price_chart.py +0 -0
  161. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  162. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/config/__init__.py +0 -0
  163. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/config/chains.py +0 -0
  164. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/defillama.jpeg +0 -0
  165. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/fees/__init__.py +0 -0
  166. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  167. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/schema.json +0 -0
  168. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/__init__.py +0 -0
  169. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  170. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  171. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  172. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  173. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tests/__init__.py +0 -0
  174. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tests/api_integration.test.py +0 -0
  175. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tests/api_unit.test.py +0 -0
  176. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/__init__.py +0 -0
  177. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  178. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_chains.py +0 -0
  179. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  180. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_protocol.py +0 -0
  181. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  182. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_protocols.py +0 -0
  183. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/volumes/__init__.py +0 -0
  184. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  185. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  186. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  187. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/yields/__init__.py +0 -0
  188. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  189. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/yields/fetch_pools.py +0 -0
  190. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/README.md +0 -0
  191. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/__init__.py +0 -0
  192. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/base.py +0 -0
  193. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/dexscreener.png +0 -0
  194. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/get_pair_info.py +0 -0
  195. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/get_token_pairs.py +0 -0
  196. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/get_tokens_info.py +0 -0
  197. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/model/__init__.py +0 -0
  198. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/model/search_token_response.py +0 -0
  199. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/schema.json +0 -0
  200. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/search_token.py +0 -0
  201. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/utils.py +0 -0
  202. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/__init__.py +0 -0
  203. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/base.py +0 -0
  204. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/dune.png +0 -0
  205. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  206. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  207. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/schema.json +0 -0
  208. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/README.md +0 -0
  209. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/__init__.py +0 -0
  210. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/base.py +0 -0
  211. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/elfa.jpg +0 -0
  212. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/mention.py +0 -0
  213. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/schema.json +0 -0
  214. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/stats.py +0 -0
  215. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/tokens.py +0 -0
  216. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/utils.py +0 -0
  217. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/README.md +0 -0
  218. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/__init__.py +0 -0
  219. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/abi/__init__.py +0 -0
  220. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/abi/approval.py +0 -0
  221. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/abi/erc20.py +0 -0
  222. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/abi/route.py +0 -0
  223. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/best_yield.py +0 -0
  224. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/enso.jpg +0 -0
  225. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/networks.py +0 -0
  226. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/prices.py +0 -0
  227. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/route.py +0 -0
  228. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/schema.json +0 -0
  229. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/tokens.py +0 -0
  230. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/wallet.py +0 -0
  231. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc20/__init__.py +0 -0
  232. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc20/base.py +0 -0
  233. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc20/erc20.svg +0 -0
  234. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc20/schema.json +0 -0
  235. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc721/__init__.py +0 -0
  236. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc721/base.py +0 -0
  237. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc721/erc721.svg +0 -0
  238. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc721/schema.json +0 -0
  239. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/README.md +0 -0
  240. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/__init__.py +0 -0
  241. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/base.py +0 -0
  242. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/clear.py +0 -0
  243. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/crawl.py +0 -0
  244. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/firecrawl.png +0 -0
  245. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/query.py +0 -0
  246. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/schema.json +0 -0
  247. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/scrape.py +0 -0
  248. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/README.md +0 -0
  249. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/__init__.py +0 -0
  250. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/base.py +0 -0
  251. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/github.jpg +0 -0
  252. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/github_search.py +0 -0
  253. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/schema.json +0 -0
  254. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/__init__.py +0 -0
  255. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/base.py +0 -0
  256. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/heurist.png +0 -0
  257. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_animagine_xl.py +0 -0
  258. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  259. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_arthemy_real.py +0 -0
  260. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_braindance.py +0 -0
  261. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  262. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  263. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_sdxl.py +0 -0
  264. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/schema.json +0 -0
  265. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/README.md +0 -0
  266. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/__init__.py +0 -0
  267. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/base.py +0 -0
  268. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/get.py +0 -0
  269. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/http.svg +0 -0
  270. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/post.py +0 -0
  271. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/put.py +0 -0
  272. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/schema.json +0 -0
  273. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/README.md +0 -0
  274. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/__init__.py +0 -0
  275. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/base.py +0 -0
  276. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/lifi.png +0 -0
  277. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/schema.json +0 -0
  278. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/token_execute.py +0 -0
  279. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/token_quote.py +0 -0
  280. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/utils.py +0 -0
  281. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/README.md +0 -0
  282. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/__init__.py +0 -0
  283. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/api.py +0 -0
  284. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/base.py +0 -0
  285. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/fetch_chain_portfolio.py +0 -0
  286. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/fetch_nft_portfolio.py +0 -0
  287. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/fetch_solana_portfolio.py +0 -0
  288. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  289. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/moralis.png +0 -0
  290. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/schema.json +0 -0
  291. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/morpho/__init__.py +0 -0
  292. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/morpho/base.py +0 -0
  293. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/morpho/morpho.svg +0 -0
  294. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/morpho/schema.json +0 -0
  295. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/__init__.py +0 -0
  296. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/base.py +0 -0
  297. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/nation.png +0 -0
  298. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/nft_check.py +0 -0
  299. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/schema.json +0 -0
  300. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/onchain.py +0 -0
  301. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/base.py +0 -0
  302. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/dalle_image_generation.py +0 -0
  303. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/gpt_image_generation.py +0 -0
  304. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/gpt_image_to_image.py +0 -0
  305. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/image_to_text.py +0 -0
  306. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/openai.png +0 -0
  307. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/README.md +0 -0
  308. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/__init__.py +0 -0
  309. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/base.py +0 -0
  310. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/constants.py +0 -0
  311. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/moralis.png +0 -0
  312. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/schema.json +0 -0
  313. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/token_balances.py +0 -0
  314. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_approvals.py +0 -0
  315. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_defi_positions.py +0 -0
  316. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_history.py +0 -0
  317. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_net_worth.py +0 -0
  318. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_nfts.py +0 -0
  319. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_profitability.py +0 -0
  320. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_profitability_summary.py +0 -0
  321. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_stats.py +0 -0
  322. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_swaps.py +0 -0
  323. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/pyth/__init__.py +0 -0
  324. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/pyth/base.py +0 -0
  325. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/pyth/pyth.svg +0 -0
  326. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/pyth/schema.json +0 -0
  327. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/skills.toml +0 -0
  328. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/__init__.py +0 -0
  329. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/base.py +0 -0
  330. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/get_channel.py +0 -0
  331. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/get_message.py +0 -0
  332. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/schedule_message.py +0 -0
  333. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/schema.json +0 -0
  334. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/send_message.py +0 -0
  335. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/slack.jpg +0 -0
  336. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/__init__.py +0 -0
  337. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/base.py +0 -0
  338. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/delete_data.py +0 -0
  339. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/fetch_data.py +0 -0
  340. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/insert_data.py +0 -0
  341. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/invoke_function.py +0 -0
  342. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/schema.json +0 -0
  343. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/supabase.svg +0 -0
  344. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/update_data.py +0 -0
  345. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/upsert_data.py +0 -0
  346. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/superfluid/__init__.py +0 -0
  347. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/superfluid/base.py +0 -0
  348. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/superfluid/schema.json +0 -0
  349. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/superfluid/superfluid.svg +0 -0
  350. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/__init__.py +0 -0
  351. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/add_autonomous_task.py +0 -0
  352. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/base.py +0 -0
  353. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/delete_autonomous_task.py +0 -0
  354. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/edit_autonomous_task.py +0 -0
  355. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/list_autonomous_tasks.py +0 -0
  356. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/read_agent_api_key.py +0 -0
  357. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/regenerate_agent_api_key.py +0 -0
  358. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/schema.json +0 -0
  359. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/system.svg +0 -0
  360. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/README.md +0 -0
  361. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/__init__.py +0 -0
  362. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/base.py +0 -0
  363. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/schema.json +0 -0
  364. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/tavily.jpg +0 -0
  365. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/tavily_extract.py +0 -0
  366. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/tavily_search.py +0 -0
  367. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/README.md +0 -0
  368. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/__init__.py +0 -0
  369. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/base.py +0 -0
  370. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/constants.py +0 -0
  371. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/erc20_transfers.py +0 -0
  372. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/moralis.png +0 -0
  373. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/schema.json +0 -0
  374. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/token_analytics.py +0 -0
  375. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/token_price.py +0 -0
  376. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/token_search.py +0 -0
  377. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/__init__.py +0 -0
  378. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/base.py +0 -0
  379. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/follow_user.py +0 -0
  380. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/get_mentions.py +0 -0
  381. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/get_timeline.py +0 -0
  382. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/get_user_by_username.py +0 -0
  383. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/get_user_tweets.py +0 -0
  384. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/like_tweet.py +0 -0
  385. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/post_tweet.py +0 -0
  386. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/reply_tweet.py +0 -0
  387. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/retweet.py +0 -0
  388. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/schema.json +0 -0
  389. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/search_tweets.py +0 -0
  390. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/twitter.png +0 -0
  391. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/__init__.py +0 -0
  392. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/base.py +0 -0
  393. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/schema.json +0 -0
  394. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/text_to_speech.py +0 -0
  395. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/unrealspeech.jpg +0 -0
  396. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/__init__.py +0 -0
  397. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/base.py +0 -0
  398. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/input.py +0 -0
  399. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/schema.json +0 -0
  400. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/venice_audio.py +0 -0
  401. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/venice_logo.jpg +0 -0
  402. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/README.md +0 -0
  403. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/__init__.py +0 -0
  404. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/api.py +0 -0
  405. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/base.py +0 -0
  406. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/config.py +0 -0
  407. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/README.md +0 -0
  408. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/__init__.py +0 -0
  409. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  410. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  411. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  412. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/README.md +0 -0
  413. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/__init__.py +0 -0
  414. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  415. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  416. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  417. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  418. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  419. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  420. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  421. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  422. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  423. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/README.md +0 -0
  424. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/__init__.py +0 -0
  425. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  426. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  427. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  428. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/README.md +0 -0
  429. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/__init__.py +0 -0
  430. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/image_vision.py +0 -0
  431. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  432. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  433. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/schema.json +0 -0
  434. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/utils.py +0 -0
  435. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/venice_image.jpg +0 -0
  436. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/README.md +0 -0
  437. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/__init__.py +0 -0
  438. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/base.py +0 -0
  439. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/document_indexer.py +0 -0
  440. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/langchain.png +0 -0
  441. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/schema.json +0 -0
  442. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/scrape_and_index.py +0 -0
  443. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/utils.py +0 -0
  444. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/website_indexer.py +0 -0
  445. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/weth/__init__.py +0 -0
  446. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/weth/base.py +0 -0
  447. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/weth/schema.json +0 -0
  448. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/weth/weth.svg +0 -0
  449. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/wow/__init__.py +0 -0
  450. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/wow/base.py +0 -0
  451. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/wow/schema.json +0 -0
  452. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/wow/wow.svg +0 -0
  453. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/__init__.py +0 -0
  454. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/ask_agent.py +0 -0
  455. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/base.py +0 -0
  456. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/http_request.py +0 -0
  457. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/schema.json +0 -0
  458. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/x402.webp +0 -0
  459. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/README.md +0 -0
  460. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/__init__.py +0 -0
  461. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/base.py +0 -0
  462. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/price.py +0 -0
  463. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/schema.json +0 -0
  464. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/swap.py +0 -0
  465. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/transfer.py +0 -0
  466. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/xmtp.png +0 -0
  467. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/error.py +0 -0
  468. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/logging.py +0 -0
  469. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/random.py +0 -0
  470. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/s3.py +0 -0
  471. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/schema.py +0 -0
  472. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/slack_alert.py +0 -0
  473. {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/tx.py +0 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Crestal Network
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.8.17.dev2
3
+ Version: 0.8.27.dev1
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
7
7
  Project-URL: Documentation, https://github.com/crestalnetwork/intentkit/tree/main/docs
8
8
  Project-URL: Bug Tracker, https://github.com/crestalnetwork/intentkit/issues
9
- Author-email: hyacinthus <hyacinthus@gmail.com>
9
+ Author-email: Ruihua <ruihua@crestal.network>
10
10
  License: MIT License
11
11
 
12
12
  Copyright (c) 2024 Crestal Network
@@ -69,14 +69,14 @@ Requires-Dist: langgraph>=0.6.1
69
69
  Requires-Dist: langmem>=0.0.27
70
70
  Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
71
71
  Requires-Dist: openai>=1.59.6
72
- Requires-Dist: pillow<12.0.0,>=11.1.0
72
+ Requires-Dist: pillow<13.0.0,>=11.1.0
73
73
  Requires-Dist: psycopg-pool>=3.2.4
74
74
  Requires-Dist: psycopg>=3.2.9
75
75
  Requires-Dist: pydantic>=2.10.6
76
76
  Requires-Dist: python-dotenv>=1.0.1
77
77
  Requires-Dist: pytz>=2025.1
78
78
  Requires-Dist: pyyaml>=6.0.2
79
- Requires-Dist: redis<7.0.0,>=5.2.1
79
+ Requires-Dist: redis<8.0.0,>=5.2.1
80
80
  Requires-Dist: requests-oauthlib>=2.0.0
81
81
  Requires-Dist: requests>=2.32.3
82
82
  Requires-Dist: slack-sdk>=3.34.0
@@ -1,6 +1,5 @@
1
1
  include README.md
2
2
  include LICENSE
3
- include pyproject.toml
4
3
  recursive-include abstracts *.py
5
4
  recursive-include clients *.py
6
5
  recursive-include config *.py
@@ -12,4 +11,4 @@ recursive-exclude * __pycache__
12
11
  recursive-exclude * *.pyc
13
12
  recursive-exclude * *.pyo
14
13
  recursive-exclude * .DS_Store
15
- recursive-exclude * .ruff_cache
14
+ recursive-exclude * .ruff_cache
@@ -3,15 +3,17 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.8.17-dev2"
7
- __author__ = "hyacinthus"
8
- __email__ = "hyacinthus@gmail.com"
6
+ __version__ = "0.8.27-dev1"
7
+ __author__ = "Ruihua"
8
+ __email__ = "ruihua@crestal.network"
9
9
 
10
10
  # Core components
11
11
  # Abstract base classes
12
- from .core.engine import create_agent, stream_agent
12
+ from .core.engine import build_agent, create_agent, stream_agent, stream_agent_raw
13
13
 
14
14
  __all__ = [
15
15
  "create_agent",
16
16
  "stream_agent",
17
+ "build_agent",
18
+ "stream_agent_raw",
17
19
  ]
@@ -0,0 +1,240 @@
1
+ import json
2
+ import logging
3
+ import os
4
+ from typing import overload
5
+
6
+ from dotenv import load_dotenv
7
+
8
+ from intentkit.utils.chain import ChainProvider, QuicknodeChainProvider
9
+ from intentkit.utils.logging import setup_logging
10
+ from intentkit.utils.s3 import init_s3
11
+ from intentkit.utils.slack_alert import init_slack
12
+
13
+ SecretsMap = dict[str, str | int]
14
+ DatabaseConfig = dict[str, str | int | bool]
15
+
16
+ # Load environment variables from .env file
17
+ _ = load_dotenv()
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ def load_from_aws(name: str) -> SecretsMap:
23
+ import botocore.session
24
+ from aws_secretsmanager_caching import SecretCache, SecretCacheConfig
25
+
26
+ client = botocore.session.get_session().create_client("secretsmanager")
27
+ cache_config = SecretCacheConfig()
28
+ cache = SecretCache(config=cache_config, client=client)
29
+ secret = cache.get_secret_string(name)
30
+ return json.loads(secret)
31
+
32
+
33
+ class Config:
34
+ def __init__(self) -> None:
35
+ # ==== this part can only be load from env
36
+ self.env: str = os.getenv("ENV", "local")
37
+ self.release: str = os.getenv("RELEASE", "local")
38
+ secret_name: str | None = os.getenv("AWS_SECRET_NAME")
39
+ db_secret_name: str | None = os.getenv("AWS_DB_SECRET_NAME")
40
+ # ==== load from aws secrets manager
41
+ self.secrets: SecretsMap = {}
42
+ if secret_name:
43
+ self.secrets = load_from_aws(secret_name)
44
+ self.db: DatabaseConfig
45
+ if db_secret_name:
46
+ secret_db: SecretsMap = load_from_aws(db_secret_name)
47
+ # format the db config
48
+ secret_db["port"] = str(secret_db["port"])
49
+ # only keep the necessary fields
50
+ self.db = {
51
+ k: v
52
+ for k, v in secret_db.items()
53
+ if k in ["username", "password", "host", "dbname", "port"]
54
+ }
55
+ else:
56
+ self.db = {
57
+ "username": self.load("DB_USERNAME", ""),
58
+ "password": self.load("DB_PASSWORD", ""),
59
+ "host": self.load("DB_HOST", ""),
60
+ "port": self.load("DB_PORT", "5432"),
61
+ "dbname": self.load("DB_NAME", ""),
62
+ }
63
+ # ==== this part can be load from env or aws secrets manager
64
+ self.db["auto_migrate"] = self.load("DB_AUTO_MIGRATE", "true") == "true"
65
+ self.db["pool_size"] = self.load_int("DB_POOL_SIZE", 3)
66
+ self.debug: bool = self.load("DEBUG") == "true"
67
+ self.debug_checkpoint: bool = (
68
+ self.load("DEBUG_CHECKPOINT", "false") == "true"
69
+ ) # log with checkpoint
70
+ # Redis
71
+ self.redis_host: str | None = self.load("REDIS_HOST")
72
+ self.redis_port: int = self.load_int("REDIS_PORT", 6379)
73
+ self.redis_db: int = self.load_int("REDIS_DB", 0)
74
+ # AWS
75
+ self.aws_s3_bucket: str | None = self.load("AWS_S3_BUCKET")
76
+ self.aws_s3_cdn_url: str | None = self.load("AWS_S3_CDN_URL")
77
+ # Internal API
78
+ self.internal_base_url: str = self.load(
79
+ "INTERNAL_BASE_URL", "http://intent-api"
80
+ )
81
+ self.admin_auth_enabled: bool = (
82
+ self.load("ADMIN_AUTH_ENABLED", "false") == "true"
83
+ )
84
+ self.admin_jwt_secret: str | None = self.load("ADMIN_JWT_SECRET")
85
+ self.debug_auth_enabled: bool = (
86
+ self.load("DEBUG_AUTH_ENABLED", "false") == "true"
87
+ )
88
+ self.debug_username: str | None = self.load("DEBUG_USERNAME")
89
+ self.debug_password: str | None = self.load("DEBUG_PASSWORD")
90
+ # Payment
91
+ self.payment_enabled: bool = self.load("PAYMENT_ENABLED", "false") == "true"
92
+ self.x402_fee_address: str | None = self.load("X402_FEE_ADDRESS")
93
+ # Open API for agent
94
+ self.open_api_base_url: str = self.load(
95
+ "OPEN_API_BASE_URL", "http://localhost:8000"
96
+ )
97
+ # CDP - AgentKit 0.7.x Configuration
98
+ self.cdp_api_key_id: str | None = self.load("CDP_API_KEY_ID")
99
+ self.cdp_api_key_secret: str | None = self.load("CDP_API_KEY_SECRET")
100
+ self.cdp_wallet_secret: str | None = self.load("CDP_WALLET_SECRET")
101
+ # LLM providers
102
+ self.openai_api_key: str | None = self.load("OPENAI_API_KEY")
103
+ self.deepseek_api_key: str | None = self.load("DEEPSEEK_API_KEY")
104
+ self.xai_api_key: str | None = self.load("XAI_API_KEY")
105
+ self.eternal_api_key: str | None = self.load("ETERNAL_API_KEY")
106
+ self.reigent_api_key: str | None = self.load("REIGENT_API_KEY")
107
+ self.venice_api_key: str | None = self.load("VENICE_API_KEY")
108
+ self.gatewayz_api_key: str | None = self.load("GATEWAYZ_API_KEY")
109
+ # LLM Config
110
+ self.system_prompt: str | None = self.load("SYSTEM_PROMPT")
111
+ self.intentkit_prompt: str | None = self.load("INTENTKIT_PROMPT")
112
+ self.input_token_limit: int = self.load_int("INPUT_TOKEN_LIMIT", 60000)
113
+ # XMTP
114
+ self.xmtp_system_prompt: str | None = self.load(
115
+ "XMTP_SYSTEM_PROMPT",
116
+ "You are assisting a user who uses an XMTP client that only displays plain-text messages, so do not use Markdown formatting.",
117
+ )
118
+ # Telegram server settings
119
+ self.tg_system_prompt: str | None = self.load("TG_SYSTEM_PROMPT")
120
+ self.tg_base_url: str | None = self.load("TG_BASE_URL")
121
+ self.tg_server_host: str = self.load("TG_SERVER_HOST", "127.0.0.1")
122
+ self.tg_server_port: str = self.load("TG_SERVER_PORT", "8081")
123
+ self.tg_new_agent_poll_interval: str = self.load(
124
+ "TG_NEW_AGENT_POLL_INTERVAL", "60"
125
+ )
126
+ # Discord server settings
127
+ self.discord_new_agent_poll_interval: str = self.load(
128
+ "DISCORD_NEW_AGENT_POLL_INTERVAL", "30"
129
+ )
130
+ # Twitter
131
+ self.twitter_oauth2_client_id: str | None = self.load(
132
+ "TWITTER_OAUTH2_CLIENT_ID"
133
+ )
134
+ self.twitter_oauth2_client_secret: str | None = self.load(
135
+ "TWITTER_OAUTH2_CLIENT_SECRET"
136
+ )
137
+ self.twitter_oauth2_redirect_uri: str | None = self.load(
138
+ "TWITTER_OAUTH2_REDIRECT_URI"
139
+ )
140
+ self.twitter_entrypoint_interval: int = self.load_int(
141
+ "TWITTER_ENTRYPOINT_INTERVAL", 5
142
+ ) # in minutes
143
+ # Slack Alert
144
+ self.slack_alert_token: str | None = self.load("SLACK_ALERT_TOKEN")
145
+ self.slack_alert_channel: str | None = self.load("SLACK_ALERT_CHANNEL")
146
+ # Skills - Platform Hosted Keys
147
+ self.acolyt_api_key: str | None = self.load("ACOLYT_API_KEY")
148
+ self.allora_api_key: str | None = self.load("ALLORA_API_KEY")
149
+ self.elfa_api_key: str | None = self.load("ELFA_API_KEY")
150
+ self.heurist_api_key: str | None = self.load("HEURIST_API_KEY")
151
+ self.enso_api_token: str | None = self.load("ENSO_API_TOKEN")
152
+ self.dapplooker_api_key: str | None = self.load("DAPPLOOKER_API_KEY")
153
+ self.moralis_api_key: str | None = self.load("MORALIS_API_KEY")
154
+ self.tavily_api_key: str | None = self.load("TAVILY_API_KEY")
155
+ self.cookiefun_api_key: str | None = self.load("COOKIEFUN_API_KEY")
156
+ self.firecrawl_api_key: str | None = self.load("FIRECRAWL_API_KEY")
157
+ # Sentry
158
+ self.sentry_dsn: str | None = self.load("SENTRY_DSN")
159
+ self.sentry_sample_rate: float = self.load_float("SENTRY_SAMPLE_RATE", 0.1)
160
+ self.sentry_traces_sample_rate: float = self.load_float(
161
+ "SENTRY_TRACES_SAMPLE_RATE", 0.01
162
+ )
163
+ self.sentry_profiles_sample_rate: float = self.load_float(
164
+ "SENTRY_PROFILES_SAMPLE_RATE", 0.01
165
+ )
166
+ # RPC Providers
167
+ self.quicknode_api_key: str | None = self.load("QUICKNODE_API_KEY")
168
+ self.chain_provider: ChainProvider | None = None
169
+ if self.quicknode_api_key:
170
+ self.chain_provider = QuicknodeChainProvider(self.quicknode_api_key)
171
+ if self.chain_provider:
172
+ self.chain_provider.init_chain_configs()
173
+
174
+ # Nation
175
+ self.nation_api_key: str | None = self.load("NATION_API_KEY")
176
+ self.nation_api_url: str = self.load("NATION_API_URL", "")
177
+
178
+ # ===== config loaded
179
+ # Now we know the env, set up logging
180
+ setup_logging(self.env, self.debug)
181
+ logger.info("config loaded")
182
+
183
+ # If the slack alert token exists, init it
184
+ if self.slack_alert_token and self.slack_alert_channel:
185
+ init_slack(self.slack_alert_token, self.slack_alert_channel)
186
+ # If the AWS S3 bucket and CDN URL exist, init it
187
+ if self.aws_s3_bucket and self.aws_s3_cdn_url:
188
+ init_s3(self.aws_s3_bucket, self.aws_s3_cdn_url, self.env)
189
+
190
+ @overload
191
+ def load(self, key: str) -> str | None: ... # noqa: F811
192
+
193
+ @overload
194
+ def load(self, key: str, default: str) -> str: ... # noqa: F811
195
+
196
+ def load(self, key: str, default: str | None = None) -> str | None:
197
+ """Load a secret from the secrets map or env"""
198
+ env_value = os.getenv(key, default)
199
+ raw_value = self.secrets.get(key, env_value)
200
+ if raw_value is None:
201
+ value: str | None = default
202
+ elif isinstance(raw_value, str):
203
+ value = raw_value
204
+ else:
205
+ value = str(raw_value)
206
+
207
+ # If value is empty string, use default instead
208
+ if value == "":
209
+ value = default
210
+
211
+ if value:
212
+ value = value.replace("\\n", "\n")
213
+ if value and value.startswith("'") and value.endswith("'"):
214
+ value = value[1:-1]
215
+ return value
216
+
217
+ def load_int(self, key: str, default: int = 0) -> int:
218
+ """Load an integer value from env, handling empty strings gracefully"""
219
+ value = self.load(key, str(default))
220
+ if not value:
221
+ return default
222
+ try:
223
+ return int(value)
224
+ except (ValueError, TypeError):
225
+ logger.warning(f"Invalid integer value for {key}, using default: {default}")
226
+ return default
227
+
228
+ def load_float(self, key: str, default: float = 0.0) -> float:
229
+ """Load a float value from env, handling empty strings gracefully"""
230
+ value = self.load(key, str(default))
231
+ if not value:
232
+ return default
233
+ try:
234
+ return float(value)
235
+ except (ValueError, TypeError):
236
+ logger.warning(f"Invalid float value for {key}, using default: {default}")
237
+ return default
238
+
239
+
240
+ config: Config = Config()
@@ -33,6 +33,14 @@ USDC_ADDRESSES = {
33
33
  # NATION token address for base-mainnet
34
34
  NATION_ADDRESS = "0x2f74f818e81685c8086dd783837a4605a90474b8"
35
35
 
36
+ MORALIS_CHAIN_BY_NETWORK = {
37
+ "ethereum-mainnet": "eth",
38
+ "base-mainnet": "base",
39
+ "polygon-mainnet": "polygon",
40
+ "arbitrum-mainnet": "arbitrum",
41
+ "optimism-mainnet": "optimism",
42
+ }
43
+
36
44
 
37
45
  class Asset(BaseModel):
38
46
  """Model for individual asset with symbol and balance."""
@@ -101,8 +109,12 @@ async def _get_eth_balance(web3_client: Web3, wallet_address: str) -> Decimal:
101
109
  return Decimal("0")
102
110
 
103
111
 
104
- async def _get_wallet_net_worth(wallet_address: str) -> str:
112
+ async def _get_wallet_net_worth(wallet_address: str, network_id: str | None) -> str:
105
113
  """Get wallet net worth using Moralis API."""
114
+ moralis_chain = MORALIS_CHAIN_BY_NETWORK.get(network_id or "")
115
+ if not moralis_chain:
116
+ return "0"
117
+
106
118
  try:
107
119
  async with httpx.AsyncClient() as client:
108
120
  url = (
@@ -116,7 +128,7 @@ async def _get_wallet_net_worth(wallet_address: str) -> str:
116
128
  params = {
117
129
  "exclude_spam": "true",
118
130
  "exclude_unverified_contracts": "true",
119
- "chains": ["eth", "base", "polygon", "arbitrum", "optimism"],
131
+ "chains": [moralis_chain],
120
132
  }
121
133
 
122
134
  response = await client.get(url, headers=headers, params=params)
@@ -206,7 +218,9 @@ async def agent_asset(agent_id: str) -> AgentAssets:
206
218
  try:
207
219
  web3_client = get_web3_client(str(agent.network_id))
208
220
  tokens = await _build_assets_list(agent, agent_data, web3_client)
209
- net_worth = await _get_wallet_net_worth(agent_data.evm_wallet_address)
221
+ net_worth = await _get_wallet_net_worth(
222
+ agent_data.evm_wallet_address, str(agent.network_id)
223
+ )
210
224
  assets_result = AgentAssets(net_worth=net_worth, tokens=tokens)
211
225
  except IntentKitAPIError:
212
226
  raise
@@ -1285,16 +1285,16 @@ async def skill_cost(
1285
1285
  skill = await Skill.get(skill_name)
1286
1286
  if not skill:
1287
1287
  raise ValueError(f"The price of {skill_name} not set yet")
1288
- agent_skill_config = agent.skills.get(skill.category)
1289
- if (
1290
- agent_skill_config
1291
- and agent_skill_config.get("api_key_provider") == "agent_owner"
1292
- ):
1293
- base_skill_amount = skill.price_self_key.quantize(
1294
- FOURPLACES, rounding=ROUND_HALF_UP
1295
- )
1296
- else:
1297
- base_skill_amount = skill.price.quantize(FOURPLACES, rounding=ROUND_HALF_UP)
1288
+ base_skill_amount = skill.price.quantize(FOURPLACES, rounding=ROUND_HALF_UP)
1289
+ if agent.skills:
1290
+ agent_skill_config = agent.skills.get(skill.category)
1291
+ if (
1292
+ agent_skill_config
1293
+ and agent_skill_config.get("api_key_provider") == "agent_owner"
1294
+ ):
1295
+ base_skill_amount = skill.price_self_key.quantize(
1296
+ FOURPLACES, rounding=ROUND_HALF_UP
1297
+ )
1298
1298
  # Get payment settings
1299
1299
  payment_settings = await AppSetting.payment()
1300
1300
 
@@ -67,6 +67,29 @@ _agents: dict[str, CompiledStateGraph] = {}
67
67
  _agents_updated: dict[str, datetime] = {}
68
68
 
69
69
 
70
+ def _extract_text_content(content: object) -> str:
71
+ if isinstance(content, list):
72
+ texts: list[str] = []
73
+ for item in content:
74
+ if isinstance(item, dict):
75
+ t = item.get("text")
76
+ ty = item.get("type")
77
+ if t is not None and (ty == "text" or ty is None):
78
+ texts.append(t)
79
+ elif isinstance(item, str):
80
+ texts.append(item)
81
+ return "".join(texts)
82
+ if isinstance(content, dict):
83
+ if content.get("type") == "text" and "text" in content:
84
+ return content["text"]
85
+ if "text" in content:
86
+ return content["text"]
87
+ return ""
88
+ if isinstance(content, str):
89
+ return content
90
+ return ""
91
+
92
+
70
93
  async def build_agent(
71
94
  agent: Agent, agent_data: AgentData, custom_skills: list[BaseTool] = []
72
95
  ) -> CompiledStateGraph:
@@ -149,8 +172,8 @@ async def build_agent(
149
172
  if llm_model.info.provider == LLMProvider.OPENAI:
150
173
  tools.append({"type": "web_search"})
151
174
  private_tools.append({"type": "web_search"})
152
- if agent.model.startswith("gpt-5-"):
153
- llm_params["reasoning_effort"] = "low"
175
+ if llm_model.info.model_name == "gpt-5-mini":
176
+ llm_params["reasoning_effort"] = "medium"
154
177
  if llm_model.info.provider == LLMProvider.XAI:
155
178
  llm_params["search_parameters"] = {"mode": "auto"}
156
179
  # TODO: else use a search skill
@@ -330,8 +353,6 @@ async def stream_agent_raw(
330
353
  model = await LLMModelInfo.get(agent.model)
331
354
 
332
355
  payment_enabled = config.payment_enabled
333
- if user_message.author_type == AuthorType.X402:
334
- payment_enabled = False
335
356
 
336
357
  # check user balance
337
358
  if payment_enabled:
@@ -363,6 +384,7 @@ async def stream_agent_raw(
363
384
  AuthorType.TELEGRAM,
364
385
  AuthorType.TWITTER,
365
386
  AuthorType.API,
387
+ AuthorType.X402,
366
388
  ]:
367
389
  payer = agent.owner
368
390
  # user account
@@ -432,31 +454,30 @@ async def stream_agent_raw(
432
454
 
433
455
  # super mode
434
456
  recursion_limit = 30
435
- if re.search(r"\b@super\b", input_message):
457
+ if re.search(r"@super\b", input_message) or user_message.super_mode:
436
458
  recursion_limit = 300
437
459
  # Remove @super from the message
438
- input_message = re.sub(r"\b@super\b", "", input_message).strip()
460
+ input_message = re.sub(r"@super\b", "", input_message).strip()
439
461
 
440
462
  # llm native search
441
- search = False
442
- if re.search(r"\b@search\b", input_message) or re.search(
443
- r"\b@web\b", input_message
444
- ):
463
+ search = user_message.search_mode if user_message.search_mode is not None else False
464
+ if re.search(r"@search\b", input_message) or re.search(r"@web\b", input_message):
445
465
  search = True
446
466
  if model.supports_search:
447
467
  input_message = re.sub(
448
- r"\b@search\b",
468
+ r"@search\b",
449
469
  "(You have native search tool, you can use it to get more recent information)",
450
470
  input_message,
451
471
  ).strip()
452
472
  input_message = re.sub(
453
- r"\b@web\b",
473
+ r"@web\b",
454
474
  "(You have native search tool, you can use it to get more recent information)",
455
475
  input_message,
456
476
  ).strip()
457
477
  else:
458
- input_message = re.sub(r"\b@search\b", "", input_message).strip()
459
- input_message = re.sub(r"\b@web\b", "", input_message).strip()
478
+ search = False
479
+ input_message = re.sub(r"@search\b", "", input_message).strip()
480
+ input_message = re.sub(r"@web\b", "", input_message).strip()
460
481
 
461
482
  # content to llm
462
483
  messages = [
@@ -527,16 +548,7 @@ async def stream_agent_raw(
527
548
  # tool calls, save for later use, if it is deleted by post_model_hook, will not be used.
528
549
  cached_tool_step = msg
529
550
  if hasattr(msg, "content") and msg.content:
530
- content = msg.content
531
- if isinstance(msg.content, list):
532
- # in new version, content item maybe a list
533
- content = msg.content[0]
534
- if isinstance(content, dict):
535
- if "text" in content:
536
- content = content["text"]
537
- else:
538
- content = str(content)
539
- logger.error(f"unexpected content type: {content}")
551
+ content = _extract_text_content(msg.content)
540
552
  # agent message
541
553
  chat_message_create = ChatMessageCreate(
542
554
  id=str(XID()),
@@ -250,7 +250,7 @@ async def explain_prompt(message: str) -> str:
250
250
  str: The processed message with @skill patterns replaced
251
251
  """
252
252
  # Pattern to match @skill:category:config_name with word boundaries
253
- pattern = r"\b@skill:([^:]+):([^\s]+)\b"
253
+ pattern = r"@skill:([^:]+):([^\s]+)\b"
254
254
 
255
255
  async def replace_skill_pattern(match):
256
256
  category = match.group(1)