intentkit 0.8.34.dev8__tar.gz → 0.8.36__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 (479) hide show
  1. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/PKG-INFO +2 -1
  2. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/__init__.py +1 -1
  3. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/abstracts/agent.py +2 -1
  4. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/abstracts/graph.py +1 -1
  5. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/abstracts/skill.py +1 -1
  6. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/clients/twitter.py +4 -4
  7. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/config/config.py +2 -1
  8. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/draft_chat.py +4 -3
  9. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/engine.py +21 -10
  10. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/manager/engine.py +6 -3
  11. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/manager/service.py +2 -1
  12. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/middleware.py +3 -3
  13. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/agent.py +5 -5
  14. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/agent_data.py +1 -1
  15. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/db_mig.py +2 -1
  16. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/llm.csv +12 -10
  17. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/llm.py +61 -10
  18. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/skill.py +2 -2
  19. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/acolyt/ask.py +2 -2
  20. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/deck_draw.py +2 -1
  21. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/deck_shuffle.py +2 -1
  22. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/dice_roll.py +2 -1
  23. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/utils.py +3 -1
  24. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/chainlist/chain_lookup.py +1 -1
  25. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/api.py +13 -6
  26. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/base.py +10 -6
  27. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/api.py +28 -23
  28. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/base.py +2 -1
  29. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tvl/fetch_protocol.py +5 -1
  30. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +4 -2
  31. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +7 -3
  32. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/get_pair_info.py +1 -1
  33. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/get_token_pairs.py +1 -1
  34. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/get_tokens_info.py +1 -1
  35. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/search_token.py +1 -1
  36. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/best_yield.py +4 -2
  37. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/route.py +3 -1
  38. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/api.py +26 -14
  39. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/fetch_nft_portfolio.py +3 -1
  40. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/fetch_solana_portfolio.py +3 -2
  41. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/fetch_wallet_portfolio.py +3 -2
  42. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/base.py +2 -1
  43. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -1
  44. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_upscale/image_upscale.py +2 -2
  45. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/utils.py +11 -8
  46. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/xmtp/swap.py +3 -1
  47. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/error.py +4 -3
  48. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/pyproject.toml +2 -1
  49. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/.gitignore +0 -0
  50. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/LICENSE +0 -0
  51. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/LICENSE +0 -0
  52. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/MANIFEST.in +0 -0
  53. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/README.md +0 -0
  54. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/abstracts/__init__.py +0 -0
  55. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/abstracts/api.py +0 -0
  56. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/abstracts/engine.py +0 -0
  57. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/abstracts/twitter.py +0 -0
  58. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/clients/__init__.py +0 -0
  59. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/clients/cdp.py +0 -0
  60. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/clients/s3.py +0 -0
  61. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/clients/web3.py +0 -0
  62. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/config/__init__.py +0 -0
  63. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/__init__.py +0 -0
  64. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/account_checking.py +0 -0
  65. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/agent.py +0 -0
  66. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/api.py +0 -0
  67. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/asset.py +0 -0
  68. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/chat.py +0 -0
  69. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/cleanup.py +0 -0
  70. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/client.py +0 -0
  71. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/credit.py +0 -0
  72. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/draft.py +0 -0
  73. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/manager/__init__.py +0 -0
  74. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/manager/skills.py +0 -0
  75. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/prompt.py +0 -0
  76. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/scheduler.py +0 -0
  77. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/core/statistics.py +0 -0
  78. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/agent_public.json +0 -0
  79. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/agent_schema.json +0 -0
  80. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/app_setting.py +0 -0
  81. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/base.py +0 -0
  82. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/chat.py +0 -0
  83. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/credit.py +0 -0
  84. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/db.py +0 -0
  85. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/draft.py +0 -0
  86. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/redis.py +0 -0
  87. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/skills.csv +0 -0
  88. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/team.py +0 -0
  89. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/models/user.py +0 -0
  90. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/__init__.py +0 -0
  91. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/acolyt/__init__.py +0 -0
  92. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/acolyt/acolyt.jpg +0 -0
  93. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/acolyt/base.py +0 -0
  94. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/acolyt/schema.json +0 -0
  95. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/aixbt/README.md +0 -0
  96. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/aixbt/__init__.py +0 -0
  97. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/aixbt/aixbt.jpg +0 -0
  98. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/aixbt/base.py +0 -0
  99. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/aixbt/projects.py +0 -0
  100. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/aixbt/schema.json +0 -0
  101. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/allora/__init__.py +0 -0
  102. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/allora/allora.jpeg +0 -0
  103. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/allora/base.py +0 -0
  104. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/allora/price.py +0 -0
  105. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/allora/schema.json +0 -0
  106. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/base.py +0 -0
  107. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/basename/__init__.py +0 -0
  108. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/basename/base.py +0 -0
  109. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/basename/basename.svg +0 -0
  110. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/basename/schema.json +0 -0
  111. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/carv/README.md +0 -0
  112. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/carv/__init__.py +0 -0
  113. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/carv/base.py +0 -0
  114. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/carv/carv.webp +0 -0
  115. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/carv/fetch_news.py +0 -0
  116. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/carv/onchain_query.py +0 -0
  117. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/carv/schema.json +0 -0
  118. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/carv/token_info_and_price.py +0 -0
  119. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/README.md +0 -0
  120. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/__init__.py +0 -0
  121. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/base.py +0 -0
  122. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/casino.png +0 -0
  123. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/casino/schema.json +0 -0
  124. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cdp/__init__.py +0 -0
  125. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cdp/base.py +0 -0
  126. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cdp/cdp.png +0 -0
  127. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cdp/schema.json +0 -0
  128. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/chainlist/README.md +0 -0
  129. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/chainlist/__init__.py +0 -0
  130. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/chainlist/base.py +0 -0
  131. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/chainlist/chainlist.png +0 -0
  132. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/chainlist/schema.json +0 -0
  133. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/common/__init__.py +0 -0
  134. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/common/base.py +0 -0
  135. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/common/common.jpg +0 -0
  136. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/common/current_time.py +0 -0
  137. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/common/schema.json +0 -0
  138. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/README.md +0 -0
  139. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/__init__.py +0 -0
  140. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/base.py +0 -0
  141. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/constants.py +0 -0
  142. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/cookiefun.png +0 -0
  143. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/get_account_details.py +0 -0
  144. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
  145. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
  146. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/get_sectors.py +0 -0
  147. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/schema.json +0 -0
  148. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cookiefun/search_accounts.py +0 -0
  149. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/__init__.py +0 -0
  150. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
  151. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
  152. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
  153. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  154. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  155. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
  156. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
  157. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptocompare/schema.json +0 -0
  158. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptopanic/__init__.py +0 -0
  159. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptopanic/base.py +0 -0
  160. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
  161. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
  162. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  163. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/cryptopanic/schema.json +0 -0
  164. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dapplooker/README.md +0 -0
  165. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dapplooker/__init__.py +0 -0
  166. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dapplooker/base.py +0 -0
  167. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
  168. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
  169. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dapplooker/schema.json +0 -0
  170. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/__init__.py +0 -0
  171. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/coins/__init__.py +0 -0
  172. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  173. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
  174. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
  175. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
  176. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
  177. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
  178. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
  179. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/config/__init__.py +0 -0
  180. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/config/chains.py +0 -0
  181. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/defillama.jpeg +0 -0
  182. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/fees/__init__.py +0 -0
  183. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
  184. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/schema.json +0 -0
  185. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
  186. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  187. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  188. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  189. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  190. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tests/__init__.py +0 -0
  191. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
  192. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
  193. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tvl/__init__.py +0 -0
  194. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  195. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
  196. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  197. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  198. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
  199. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/volumes/__init__.py +0 -0
  200. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
  201. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/yields/__init__.py +0 -0
  202. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
  203. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
  204. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/README.md +0 -0
  205. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/__init__.py +0 -0
  206. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/base.py +0 -0
  207. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/dexscreener.png +0 -0
  208. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/model/__init__.py +0 -0
  209. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
  210. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/schema.json +0 -0
  211. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dexscreener/utils.py +0 -0
  212. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dune_analytics/__init__.py +0 -0
  213. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dune_analytics/base.py +0 -0
  214. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dune_analytics/dune.png +0 -0
  215. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dune_analytics/fetch_kol_buys.py +0 -0
  216. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  217. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/dune_analytics/schema.json +0 -0
  218. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/README.md +0 -0
  219. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/__init__.py +0 -0
  220. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/base.py +0 -0
  221. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/elfa.jpg +0 -0
  222. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/mention.py +0 -0
  223. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/schema.json +0 -0
  224. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/stats.py +0 -0
  225. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/tokens.py +0 -0
  226. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/elfa/utils.py +0 -0
  227. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/README.md +0 -0
  228. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/__init__.py +0 -0
  229. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/abi/__init__.py +0 -0
  230. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/abi/approval.py +0 -0
  231. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/abi/erc20.py +0 -0
  232. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/abi/route.py +0 -0
  233. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/base.py +0 -0
  234. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/enso.jpg +0 -0
  235. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/networks.py +0 -0
  236. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/prices.py +0 -0
  237. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/schema.json +0 -0
  238. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/tokens.py +0 -0
  239. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/enso/wallet.py +0 -0
  240. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/erc20/__init__.py +0 -0
  241. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/erc20/base.py +0 -0
  242. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/erc20/erc20.svg +0 -0
  243. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/erc20/schema.json +0 -0
  244. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/erc721/__init__.py +0 -0
  245. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/erc721/base.py +0 -0
  246. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/erc721/erc721.svg +0 -0
  247. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/erc721/schema.json +0 -0
  248. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/README.md +0 -0
  249. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/__init__.py +0 -0
  250. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/base.py +0 -0
  251. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/clear.py +0 -0
  252. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/crawl.py +0 -0
  253. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/firecrawl.png +0 -0
  254. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/query.py +0 -0
  255. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/schema.json +0 -0
  256. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/scrape.py +0 -0
  257. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/firecrawl/utils.py +0 -0
  258. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/github/README.md +0 -0
  259. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/github/__init__.py +0 -0
  260. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/github/base.py +0 -0
  261. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/github/github.jpg +0 -0
  262. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/github/github_search.py +0 -0
  263. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/github/schema.json +0 -0
  264. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/__init__.py +0 -0
  265. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/base.py +0 -0
  266. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/heurist.png +0 -0
  267. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
  268. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
  269. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
  270. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
  271. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  272. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
  273. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
  274. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/heurist/schema.json +0 -0
  275. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/http/README.md +0 -0
  276. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/http/__init__.py +0 -0
  277. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/http/base.py +0 -0
  278. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/http/get.py +0 -0
  279. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/http/http.svg +0 -0
  280. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/http/post.py +0 -0
  281. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/http/put.py +0 -0
  282. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/http/schema.json +0 -0
  283. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/lifi/README.md +0 -0
  284. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/lifi/__init__.py +0 -0
  285. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/lifi/base.py +0 -0
  286. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/lifi/lifi.png +0 -0
  287. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/lifi/schema.json +0 -0
  288. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/lifi/token_execute.py +0 -0
  289. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/lifi/token_quote.py +0 -0
  290. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/lifi/utils.py +0 -0
  291. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/README.md +0 -0
  292. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/__init__.py +0 -0
  293. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/base.py +0 -0
  294. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
  295. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/moralis.png +0 -0
  296. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/moralis/schema.json +0 -0
  297. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/morpho/__init__.py +0 -0
  298. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/morpho/base.py +0 -0
  299. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/morpho/morpho.svg +0 -0
  300. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/morpho/schema.json +0 -0
  301. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/nation/__init__.py +0 -0
  302. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/nation/base.py +0 -0
  303. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/nation/nation.png +0 -0
  304. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/nation/nft_check.py +0 -0
  305. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/nation/schema.json +0 -0
  306. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/onchain.py +0 -0
  307. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/__init__.py +0 -0
  308. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/base.py +0 -0
  309. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/dalle_image_generation.py +0 -0
  310. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/gpt_avatar_generator.py +0 -0
  311. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/gpt_image_generation.py +0 -0
  312. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/gpt_image_mini_generator.py +0 -0
  313. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/gpt_image_to_image.py +0 -0
  314. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/image_to_text.py +0 -0
  315. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/openai.png +0 -0
  316. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/openai/schema.json +0 -0
  317. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/README.md +0 -0
  318. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/__init__.py +0 -0
  319. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/base.py +0 -0
  320. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/constants.py +0 -0
  321. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/moralis.png +0 -0
  322. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/schema.json +0 -0
  323. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/token_balances.py +0 -0
  324. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
  325. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
  326. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_history.py +0 -0
  327. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
  328. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
  329. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
  330. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
  331. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_stats.py +0 -0
  332. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
  333. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/pyth/__init__.py +0 -0
  334. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/pyth/base.py +0 -0
  335. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/pyth/pyth.svg +0 -0
  336. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/pyth/schema.json +0 -0
  337. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/skills.toml +0 -0
  338. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/slack/__init__.py +0 -0
  339. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/slack/base.py +0 -0
  340. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/slack/get_channel.py +0 -0
  341. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/slack/get_message.py +0 -0
  342. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/slack/schedule_message.py +0 -0
  343. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/slack/schema.json +0 -0
  344. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/slack/send_message.py +0 -0
  345. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/slack/slack.jpg +0 -0
  346. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/__init__.py +0 -0
  347. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/base.py +0 -0
  348. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/delete_data.py +0 -0
  349. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/fetch_data.py +0 -0
  350. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/insert_data.py +0 -0
  351. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/invoke_function.py +0 -0
  352. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/schema.json +0 -0
  353. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/supabase.svg +0 -0
  354. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/update_data.py +0 -0
  355. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/supabase/upsert_data.py +0 -0
  356. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/superfluid/__init__.py +0 -0
  357. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/superfluid/base.py +0 -0
  358. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/superfluid/schema.json +0 -0
  359. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/superfluid/superfluid.svg +0 -0
  360. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/__init__.py +0 -0
  361. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/add_autonomous_task.py +0 -0
  362. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/base.py +0 -0
  363. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/delete_autonomous_task.py +0 -0
  364. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/edit_autonomous_task.py +0 -0
  365. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/list_autonomous_tasks.py +0 -0
  366. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/read_agent_api_key.py +0 -0
  367. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/regenerate_agent_api_key.py +0 -0
  368. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/schema.json +0 -0
  369. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/system/system.svg +0 -0
  370. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/tavily/README.md +0 -0
  371. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/tavily/__init__.py +0 -0
  372. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/tavily/base.py +0 -0
  373. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/tavily/schema.json +0 -0
  374. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/tavily/tavily.jpg +0 -0
  375. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/tavily/tavily_extract.py +0 -0
  376. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/tavily/tavily_search.py +0 -0
  377. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/README.md +0 -0
  378. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/__init__.py +0 -0
  379. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/base.py +0 -0
  380. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/constants.py +0 -0
  381. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/erc20_transfers.py +0 -0
  382. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/moralis.png +0 -0
  383. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/schema.json +0 -0
  384. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/token_analytics.py +0 -0
  385. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/token_price.py +0 -0
  386. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/token/token_search.py +0 -0
  387. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/__init__.py +0 -0
  388. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/follow_user.py +0 -0
  389. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/get_mentions.py +0 -0
  390. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/get_timeline.py +0 -0
  391. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/get_user_by_username.py +0 -0
  392. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/get_user_tweets.py +0 -0
  393. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/like_tweet.py +0 -0
  394. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/post_tweet.py +0 -0
  395. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/reply_tweet.py +0 -0
  396. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/retweet.py +0 -0
  397. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/schema.json +0 -0
  398. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/search_tweets.py +0 -0
  399. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/twitter/twitter.png +0 -0
  400. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/unrealspeech/__init__.py +0 -0
  401. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/unrealspeech/base.py +0 -0
  402. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/unrealspeech/schema.json +0 -0
  403. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
  404. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
  405. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_audio/__init__.py +0 -0
  406. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_audio/base.py +0 -0
  407. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_audio/input.py +0 -0
  408. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_audio/schema.json +0 -0
  409. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_audio/venice_audio.py +0 -0
  410. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
  411. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/README.md +0 -0
  412. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/__init__.py +0 -0
  413. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/api.py +0 -0
  414. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/base.py +0 -0
  415. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/config.py +0 -0
  416. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
  417. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
  418. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  419. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  420. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/README.md +0 -0
  421. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
  422. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
  423. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  424. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  425. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  426. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
  427. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  428. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  429. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  430. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  431. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
  432. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
  433. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  434. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  435. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_vision/README.md +0 -0
  436. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
  437. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
  438. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
  439. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
  440. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/schema.json +0 -0
  441. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/utils.py +0 -0
  442. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/venice_image/venice_image.jpg +0 -0
  443. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/README.md +0 -0
  444. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/__init__.py +0 -0
  445. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/base.py +0 -0
  446. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/document_indexer.py +0 -0
  447. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/langchain.png +0 -0
  448. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/schema.json +0 -0
  449. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
  450. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/web_scraper/website_indexer.py +0 -0
  451. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/weth/__init__.py +0 -0
  452. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/weth/base.py +0 -0
  453. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/weth/schema.json +0 -0
  454. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/weth/weth.svg +0 -0
  455. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/wow/__init__.py +0 -0
  456. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/wow/base.py +0 -0
  457. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/wow/schema.json +0 -0
  458. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/wow/wow.svg +0 -0
  459. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/x402/__init__.py +0 -0
  460. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/x402/base.py +0 -0
  461. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/x402/http_request.py +0 -0
  462. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/x402/schema.json +0 -0
  463. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/x402/x402.webp +0 -0
  464. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/xmtp/README.md +0 -0
  465. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/xmtp/__init__.py +0 -0
  466. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/xmtp/base.py +0 -0
  467. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/xmtp/price.py +0 -0
  468. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/xmtp/schema.json +0 -0
  469. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/xmtp/transfer.py +0 -0
  470. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/skills/xmtp/xmtp.png +0 -0
  471. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/__init__.py +0 -0
  472. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/chain.py +0 -0
  473. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/ens.py +0 -0
  474. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/logging.py +0 -0
  475. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/random.py +0 -0
  476. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/schema.py +0 -0
  477. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/slack_alert.py +0 -0
  478. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/utils/tx.py +0 -0
  479. {intentkit-0.8.34.dev8 → intentkit-0.8.36}/intentkit/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.8.34.dev8
3
+ Version: 0.8.36
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
@@ -57,6 +57,7 @@ Requires-Dist: jsonref>=1.1.0
57
57
  Requires-Dist: langchain-community>=0.3.19
58
58
  Requires-Dist: langchain-core>=0.3.43
59
59
  Requires-Dist: langchain-deepseek>=0.1.4
60
+ Requires-Dist: langchain-google-genai>=3.2.0
60
61
  Requires-Dist: langchain-mcp-adapters>=0.0.11
61
62
  Requires-Dist: langchain-openai>=0.3.8
62
63
  Requires-Dist: langchain-text-splitters>=0.3.8
@@ -3,7 +3,7 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.8.34-dev8"
6
+ __version__ = "0.8.36"
7
7
  __author__ = "Ruihua"
8
8
  __email__ = "ruihua@crestal.network"
9
9
 
@@ -1,4 +1,5 @@
1
1
  from abc import ABC, abstractmethod
2
+ from typing import Any
2
3
 
3
4
  from intentkit.models.agent import Agent
4
5
  from intentkit.models.agent_data import AgentData, AgentQuota
@@ -41,7 +42,7 @@ class AgentStoreABC(ABC):
41
42
  pass
42
43
 
43
44
  @abstractmethod
44
- async def set_data(self, data: dict) -> None:
45
+ async def set_data(self, data: dict[str, Any]) -> None:
45
46
  """Update agent data.
46
47
 
47
48
  Args:
@@ -19,7 +19,7 @@ class AgentError(str, Enum):
19
19
  # This simply involves a list of messages
20
20
  # We want steps to return messages to append to the list
21
21
  # So we annotate the messages attribute with operator.add
22
- class AgentState(BaseAgentState):
22
+ class AgentState(BaseAgentState[Any]):
23
23
  """The state of the agent."""
24
24
 
25
25
  context: dict[str, Any]
@@ -40,7 +40,7 @@ class SkillStoreABC(ABC):
40
40
 
41
41
  @staticmethod
42
42
  @abstractmethod
43
- async def set_agent_data(agent_id: str, data: dict) -> None:
43
+ async def set_agent_data(agent_id: str, data: dict[str, Any]) -> None:
44
44
  """Update agent data.
45
45
 
46
46
  Args:
@@ -39,7 +39,7 @@ class TwitterUser(BaseModel):
39
39
  name: str
40
40
  username: str
41
41
  description: str
42
- public_metrics: dict = Field(
42
+ public_metrics: dict[str, Any] = Field(
43
43
  description="User metrics including followers_count, following_count, tweet_count, listed_count, like_count, and media_count"
44
44
  )
45
45
  is_following: bool = Field(
@@ -82,7 +82,7 @@ class TwitterClient(TwitterABC):
82
82
  config: Configuration dictionary that may contain API keys
83
83
  """
84
84
 
85
- def __init__(self, agent_id: str, config: dict) -> None:
85
+ def __init__(self, agent_id: str, config: dict[str, Any]) -> None:
86
86
  """Initialize the Twitter client.
87
87
 
88
88
  Args:
@@ -420,11 +420,11 @@ class TwitterClient(TwitterABC):
420
420
  return media_ids
421
421
 
422
422
 
423
- def _is_self_key(config: dict) -> bool:
423
+ def _is_self_key(config: dict[str, Any]) -> bool:
424
424
  return config.get("api_key_provider") == "agent_owner"
425
425
 
426
426
 
427
- def get_twitter_client(agent_id: str, config: dict) -> "TwitterClient":
427
+ def get_twitter_client(agent_id: str, config: dict[str, Any]) -> "TwitterClient":
428
428
  if _is_self_key(config):
429
429
  if agent_id not in _clients_self_key:
430
430
  _clients_self_key[agent_id] = TwitterClient(agent_id, config)
@@ -105,12 +105,13 @@ class Config:
105
105
  self.cdp_wallet_secret: str | None = self.load("CDP_WALLET_SECRET")
106
106
  # LLM providers
107
107
  self.openai_api_key: str | None = self.load("OPENAI_API_KEY")
108
+ self.google_api_key: str | None = self.load("GOOGLE_API_KEY")
108
109
  self.deepseek_api_key: str | None = self.load("DEEPSEEK_API_KEY")
109
110
  self.xai_api_key: str | None = self.load("XAI_API_KEY")
110
111
  self.eternal_api_key: str | None = self.load("ETERNAL_API_KEY")
111
112
  self.reigent_api_key: str | None = self.load("REIGENT_API_KEY")
112
113
  self.venice_api_key: str | None = self.load("VENICE_API_KEY")
113
- self.gatewayz_api_key: str | None = self.load("GATEWAYZ_API_KEY")
114
+ self.openrouter_api_key: str | None = self.load("OPENROUTER_API_KEY")
114
115
  # LLM Config
115
116
  self.system_prompt: str | None = self.load("SYSTEM_PROMPT")
116
117
  self.intentkit_prompt: str | None = self.load("INTENTKIT_PROMPT")
@@ -3,12 +3,13 @@
3
3
  import logging
4
4
  import time
5
5
  from datetime import datetime, timedelta, timezone
6
- from typing import AsyncGenerator
6
+ from typing import Any, AsyncGenerator
7
7
 
8
8
  from langgraph.graph.state import CompiledStateGraph
9
9
  from sqlalchemy import desc, select
10
10
  from sqlalchemy.ext.asyncio import AsyncSession
11
11
 
12
+ from intentkit.abstracts.graph import AgentContext, AgentState
12
13
  from intentkit.core.engine import build_agent, stream_agent_raw
13
14
  from intentkit.models.agent import Agent
14
15
  from intentkit.models.agent_data import AgentData
@@ -20,7 +21,7 @@ from intentkit.utils.error import IntentKitAPIError
20
21
  logger = logging.getLogger(__name__)
21
22
 
22
23
 
23
- _draft_executors: dict[str, CompiledStateGraph] = {}
24
+ _draft_executors: dict[str, CompiledStateGraph[AgentState, AgentContext, Any, Any]] = {}
24
25
  _draft_updated_at: dict[str, datetime] = {}
25
26
  _draft_cached_at: dict[str, datetime] = {}
26
27
 
@@ -85,7 +86,7 @@ def _agent_from_draft(draft: AgentDraft) -> Agent:
85
86
 
86
87
  async def _get_draft_executor(
87
88
  agent: Agent, draft: AgentDraft
88
- ) -> tuple[CompiledStateGraph, float]:
89
+ ) -> tuple[CompiledStateGraph[AgentState, AgentContext, Any, Any], float]:
89
90
  now = datetime.now(timezone.utc)
90
91
  _cleanup_cache(now)
91
92
 
@@ -17,6 +17,7 @@ import textwrap
17
17
  import time
18
18
  import traceback
19
19
  from datetime import datetime
20
+ from typing import Any
20
21
 
21
22
  import sqlalchemy
22
23
  from epyxid import XID
@@ -66,7 +67,7 @@ from intentkit.utils.error import IntentKitAPIError
66
67
  logger = logging.getLogger(__name__)
67
68
 
68
69
  # Global variable to cache all agent executors
69
- _agents: dict[str, CompiledStateGraph] = {}
70
+ _agents: dict[str, CompiledStateGraph[AgentState, AgentContext, Any, Any]] = {}
70
71
 
71
72
  # Global dictionaries to cache agent update times
72
73
  _agents_updated: dict[str, datetime] = {}
@@ -97,7 +98,7 @@ def _extract_text_content(content: object) -> str:
97
98
 
98
99
  async def build_agent(
99
100
  agent: Agent, agent_data: AgentData, custom_skills: list[BaseTool] = []
100
- ) -> CompiledStateGraph:
101
+ ) -> CompiledStateGraph[AgentState, AgentContext, Any, Any]:
101
102
  """Build an AI agent with specified configuration and tools.
102
103
 
103
104
  This function:
@@ -119,9 +120,13 @@ async def build_agent(
119
120
  # Create the LLM model instance
120
121
  llm_model = await create_llm_model(
121
122
  model_name=agent.model,
122
- temperature=agent.temperature,
123
- frequency_penalty=agent.frequency_penalty,
124
- presence_penalty=agent.presence_penalty,
123
+ temperature=agent.temperature if agent.temperature is not None else 0.7,
124
+ frequency_penalty=(
125
+ agent.frequency_penalty if agent.frequency_penalty is not None else 0.0
126
+ ),
127
+ presence_penalty=(
128
+ agent.presence_penalty if agent.presence_penalty is not None else 0.0
129
+ ),
125
130
  )
126
131
 
127
132
  # ==== Store buffered conversation history in memory.
@@ -131,8 +136,8 @@ async def build_agent(
131
136
  checkpointer = InMemorySaver()
132
137
 
133
138
  # ==== Load skills
134
- tools: list[BaseTool | dict] = []
135
- private_tools: list[BaseTool | dict] = []
139
+ tools: list[BaseTool | dict[str, Any]] = []
140
+ private_tools: list[BaseTool | dict[str, Any]] = []
136
141
 
137
142
  if agent.skills:
138
143
  for k, v in agent.skills.items():
@@ -207,7 +212,9 @@ async def build_agent(
207
212
  return executor
208
213
 
209
214
 
210
- async def create_agent(agent: Agent) -> CompiledStateGraph:
215
+ async def create_agent(
216
+ agent: Agent,
217
+ ) -> CompiledStateGraph[AgentState, AgentContext, Any, Any]:
211
218
  """Create an AI agent with specified configuration and tools.
212
219
 
213
220
  This function maintains backward compatibility by calling build_agent internally.
@@ -256,7 +263,9 @@ async def initialize_agent(aid):
256
263
  _agents_updated[aid] = agent.deployed_at if agent.deployed_at else agent.updated_at
257
264
 
258
265
 
259
- async def agent_executor(agent_id: str) -> tuple[CompiledStateGraph, float]:
266
+ async def agent_executor(
267
+ agent_id: str,
268
+ ) -> tuple[CompiledStateGraph[AgentState, AgentContext, Any, Any], float]:
260
269
  start = time.perf_counter()
261
270
  agent = await Agent.get(agent_id)
262
271
  if not agent:
@@ -303,7 +312,9 @@ async def stream_agent(message: ChatMessageCreate):
303
312
 
304
313
 
305
314
  async def stream_agent_raw(
306
- message: ChatMessageCreate, agent: Agent, executor: CompiledStateGraph
315
+ message: ChatMessageCreate,
316
+ agent: Agent,
317
+ executor: CompiledStateGraph[AgentState, AgentContext, Any, Any],
307
318
  ):
308
319
  start = time.perf_counter()
309
320
  # make sure reply_to is set
@@ -5,10 +5,11 @@ from __future__ import annotations
5
5
  import logging
6
6
  import time
7
7
  from datetime import datetime, timedelta, timezone
8
- from typing import AsyncGenerator
8
+ from typing import Any, AsyncGenerator
9
9
 
10
10
  from langgraph.graph.state import CompiledStateGraph
11
11
 
12
+ from intentkit.abstracts.graph import AgentContext, AgentState
12
13
  from intentkit.core.engine import build_agent, stream_agent_raw
13
14
  from intentkit.core.manager.skills import (
14
15
  get_agent_latest_draft_skill,
@@ -25,7 +26,9 @@ logger = logging.getLogger(__name__)
25
26
 
26
27
  _MANAGER_CACHE_TTL = timedelta(hours=1)
27
28
 
28
- _manager_executors: dict[str, CompiledStateGraph] = {}
29
+ _manager_executors: dict[
30
+ str, CompiledStateGraph[AgentState, AgentContext, Any, Any]
31
+ ] = {}
29
32
  _manager_agents: dict[str, Agent] = {}
30
33
  _manager_cached_at: dict[str, datetime] = {}
31
34
 
@@ -165,7 +168,7 @@ def _build_manager_agent(agent_id: str, user_id: str) -> Agent:
165
168
 
166
169
  async def _get_manager_executor(
167
170
  agent_id: str, user_id: str
168
- ) -> tuple[CompiledStateGraph, Agent, float]:
171
+ ) -> tuple[CompiledStateGraph[AgentState, AgentContext, Any, Any], Agent, float]:
169
172
  now = datetime.now(timezone.utc)
170
173
  _cleanup_cache(now)
171
174
 
@@ -6,6 +6,7 @@ import json
6
6
  import logging
7
7
  from importlib import resources
8
8
  from pathlib import Path
9
+ from typing import Any
9
10
 
10
11
  import jsonref
11
12
  from fastapi import status
@@ -76,7 +77,7 @@ def get_skills_hierarchical_text() -> str:
76
77
  return "No skills available"
77
78
 
78
79
  # Group skills by category (x-tags)
79
- categories: dict[str, list] = {}
80
+ categories: dict[str, list[Any]] = {}
80
81
 
81
82
  for entry in skills_root.iterdir():
82
83
  if not entry.is_dir():
@@ -118,8 +118,8 @@ class ToolBindingMiddleware(AgentMiddleware[AgentState, AgentContext]):
118
118
  def __init__(
119
119
  self,
120
120
  llm_model: LLMModelInfo,
121
- public_tools: list[BaseTool | dict],
122
- private_tools: list[BaseTool | dict],
121
+ public_tools: list[BaseTool | dict[str, Any]],
122
+ private_tools: list[BaseTool | dict[str, Any]],
123
123
  ) -> None:
124
124
  super().__init__()
125
125
  self.llm_model = llm_model
@@ -130,7 +130,7 @@ class ToolBindingMiddleware(AgentMiddleware[AgentState, AgentContext]):
130
130
  context = request.runtime.context
131
131
 
132
132
  llm_params: dict[str, Any] = {}
133
- tools: list[BaseTool | dict] = (
133
+ tools: list[BaseTool | dict[str, Any]] = (
134
134
  self.private_tools if context.is_private else self.public_tools
135
135
  )
136
136
  tools = list(
@@ -680,7 +680,7 @@ class AgentUserInput(AgentCore):
680
680
  ),
681
681
  ]
682
682
  discord_config: Annotated[
683
- dict | None,
683
+ dict[str, Any] | None,
684
684
  PydanticField(
685
685
  default=None,
686
686
  description="Discord integration configuration settings including token, whitelists, and behavior settings",
@@ -1527,7 +1527,7 @@ class Agent(AgentCreate, AgentPublicInfo):
1527
1527
  self.autonomous = updated_tasks
1528
1528
 
1529
1529
  async def update_autonomous_task(
1530
- self, task_id: str, task_updates: dict
1530
+ self, task_id: str, task_updates: dict[str, Any]
1531
1531
  ) -> AgentAutonomous:
1532
1532
  async with get_session() as session:
1533
1533
  db_agent = await session.get(AgentTable, self.id)
@@ -1583,7 +1583,7 @@ class Agent(AgentCreate, AgentPublicInfo):
1583
1583
  cls,
1584
1584
  db: AsyncSession = None,
1585
1585
  filter_owner_api_skills: bool = False,
1586
- ) -> dict:
1586
+ ) -> dict[str, Any]:
1587
1587
  """Get the JSON schema for Agent model with all $ref references resolved.
1588
1588
 
1589
1589
  This is the shared function that handles admin configuration filtering
@@ -1779,8 +1779,8 @@ class AgentResponse(Agent):
1779
1779
  temperature: SkipJsonSchema[float | None] = None
1780
1780
  frequency_penalty: SkipJsonSchema[float | None] = None
1781
1781
  telegram_entrypoint_prompt: SkipJsonSchema[str | None] = None
1782
- telegram_config: SkipJsonSchema[dict | None] = None
1783
- discord_config: SkipJsonSchema[dict | None] = None
1782
+ telegram_config: SkipJsonSchema[dict[str, Any] | None] = None
1783
+ discord_config: SkipJsonSchema[dict[str, Any] | None] = None
1784
1784
  xmtp_entrypoint_prompt: SkipJsonSchema[str | None] = None
1785
1785
 
1786
1786
  # Additional fields specific to AgentResponse
@@ -349,7 +349,7 @@ class AgentData(BaseModel):
349
349
  await db.commit()
350
350
 
351
351
  @staticmethod
352
- async def patch(id: str, data: dict) -> "AgentData":
352
+ async def patch(id: str, data: dict[str, Any]) -> "AgentData":
353
353
  """Update agent data.
354
354
 
355
355
  Args:
@@ -2,6 +2,7 @@
2
2
 
3
3
  import logging
4
4
  from collections.abc import Callable
5
+ from typing import Any
5
6
 
6
7
  from sqlalchemy import Column, MetaData, inspect, text
7
8
 
@@ -11,7 +12,7 @@ logger = logging.getLogger(__name__)
11
12
 
12
13
 
13
14
  async def add_column_if_not_exists(
14
- conn, dialect, table_name: str, column: Column
15
+ conn, dialect, table_name: str, column: Column[Any]
15
16
  ) -> None:
16
17
  """Add a column to a table if it doesn't exist.
17
18
 
@@ -1,15 +1,17 @@
1
1
  id,name,provider,enabled,input_price,output_price,price_level,context_length,output_length,intelligence,speed,supports_image_input,supports_skill_calls,supports_structured_output,has_reasoning,supports_search,supports_temperature,supports_frequency_penalty,supports_presence_penalty,api_base,timeout
2
- minimax/minimax-m2:free,MiniMax M2,gatewayz,FALSE,0,0,1,204800,131000,4,2,FALSE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,https://api.gatewayz.ai/v1,300
3
- qwen/qwen3-coder:exacto,Qwen3 Coder,gatewayz,FALSE,0.38,1.53,2,262000,262000,3,3,FALSE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,https://api.gatewayz.ai/v1,300
4
- google/gemini-2.5-flash,Gemini 2.5 Flash,gatewayz,FALSE,0.3,2.5,2,1050000,65000,3,4,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,https://api.gatewayz.ai/v1,300
5
- google/gemini-2.5-pro,Gemini 2.5 Pro,gatewayz,FALSE,1.25,10,4,1050000,65000,4,2,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,https://api.gatewayz.ai/v1,300
6
- anthropic/claude-sonnet-4.5,Anthropic Claude Sonnet 4.5,gatewayz,FALSE,3,15,5,200000,64000,5,1,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,https://api.gatewayz.ai/v1,300
7
- gpt-5-nano,GPT-5 Nano,openai,TRUE,0.05,0.4,1,400000,128000,3,5,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,,180
8
- gpt-5-mini,GPT-5 Mini,openai,TRUE,0.25,2,2,400000,128000,4,4,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,,180
9
- gpt-5,GPT-5,openai,TRUE,1.25,10,4,400000,128000,5,3,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,,180
2
+ minimax/minimax-m2:free,MiniMax M2,openrouter,FALSE,0,0,1,204800,131000,4,2,FALSE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,,300
3
+ qwen/qwen3-coder:exacto,Qwen3 Coder,openrouter,FALSE,0.38,1.53,2,262000,262000,3,3,FALSE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,,300
4
+ google/gemini-2.5-flash,Gemini 2.5 Flash,openrouter,FALSE,0.3,2.5,2,1050000,65000,3,4,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,,300
5
+ google/gemini-2.5-pro,Gemini 2.5 Pro,openrouter,FALSE,1.25,10,4,1050000,65000,4,2,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,,300
6
+ gemini-3-pro-preview,Gemini 3 Pro Preview,google,TRUE,2,12,4,200000,65000,5,3,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,,300
7
+ anthropic/claude-sonnet-4.5,Anthropic Claude Sonnet 4.5,openrouter,FALSE,3,15,5,200000,64000,5,1,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,,300
8
+ gpt-5.2,GPT-5.2,openai,TRUE,1.75,14,4,400000,128000,5,3,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,,180
10
9
  gpt-5.1,GPT-5.1,openai,TRUE,1.25,10,4,400000,128000,5,3,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,,180
11
10
  gpt-5.1-codex,GPT-5.1 Codex,openai,TRUE,1.25,10,4,400000,128000,5,3,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,,180
12
11
  gpt-5.1-codex-mini,GPT-5.1 Codex Mini,openai,TRUE,0.25,2,2,400000,128000,4,4,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,,180
12
+ gpt-5-nano,GPT-5 Nano,openai,TRUE,0.05,0.4,1,400000,128000,3,5,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,,180
13
+ gpt-5-mini,GPT-5 Mini,openai,TRUE,0.25,2,2,400000,128000,4,4,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,,180
14
+ gpt-5,GPT-5,openai,TRUE,1.25,10,4,400000,128000,5,3,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,,180
13
15
  gpt-4o,GPT-4o,openai,FALSE,2.5,10,4,128000,4096,4,3,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,,180
14
16
  gpt-4o-mini,GPT-4o Mini,openai,FALSE,0.15,0.6,1,128000,4096,3,4,FALSE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,,180
15
17
  gpt-4.1-nano,GPT-4.1 Nano,openai,TRUE,0.1,0.4,1,128000,4096,3,5,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,,180
@@ -17,8 +19,8 @@ gpt-4.1-mini,GPT-4.1 Mini,openai,TRUE,0.4,1.6,2,128000,4096,4,4,FALSE,TRUE,TRUE,
17
19
  gpt-4.1,GPT-4.1,openai,TRUE,2,8,4,128000,4096,5,3,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,,180
18
20
  o3,OpenAI o3,openai,TRUE,2,8,4,200000,100000,5,1,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,,180
19
21
  o4-mini,OpenAI o4-mini,openai,TRUE,1.1,4.4,3,128000,4096,4,3,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,,180
20
- deepseek-chat,Deepseek V3.2 Exp,deepseek,TRUE,0.28,0.42,2,128000,4096,4,3,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,https://api.deepseek.com,300
21
- deepseek-reasoner,DeepSeek V3.2 Exp (Thinking Mode),deepseek,TRUE,0.28,0.42,2,128000,32000,5,1,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,https://api.deepseek.com,300
22
+ deepseek-chat,Deepseek V3.2,deepseek,TRUE,0.28,0.42,2,128000,4096,4,3,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,https://api.deepseek.com,300
23
+ deepseek-reasoner,DeepSeek V3.2 Thinking,deepseek,TRUE,0.28,0.42,2,128000,32000,5,1,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,https://api.deepseek.com,300
22
24
  grok-4,Grok 4,xai,TRUE,3,15,4,256000,4096,5,3,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,,180
23
25
  grok-4-fast-non-reasoning,Grok 4 Fast,xai,TRUE,0.2,0.5,2,2000000,4096,3,4,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,,180
24
26
  grok-4-fast-reasoning,Grok 4 Fast Reasoning,xai,TRUE,0.2,0.5,2,2000000,4096,3,4,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,,180
@@ -86,6 +86,28 @@ def _load_default_llm_models() -> dict[str, "LLMModelInfo"]:
86
86
  )
87
87
  if not model.enabled:
88
88
  continue
89
+
90
+ # Check if provider is configured
91
+ is_configured = True
92
+ if model.provider == LLMProvider.OPENAI:
93
+ is_configured = bool(config.openai_api_key)
94
+ elif model.provider == LLMProvider.GOOGLE:
95
+ is_configured = bool(config.google_api_key)
96
+ elif model.provider == LLMProvider.DEEPSEEK:
97
+ is_configured = bool(config.deepseek_api_key)
98
+ elif model.provider == LLMProvider.XAI:
99
+ is_configured = bool(config.xai_api_key)
100
+ elif model.provider == LLMProvider.OPENROUTER:
101
+ is_configured = bool(config.openrouter_api_key)
102
+ elif model.provider == LLMProvider.ETERNAL:
103
+ is_configured = bool(config.eternal_api_key)
104
+ elif model.provider == LLMProvider.REIGENT:
105
+ is_configured = bool(config.reigent_api_key)
106
+ elif model.provider == LLMProvider.VENICE:
107
+ is_configured = bool(config.venice_api_key)
108
+
109
+ if not is_configured:
110
+ continue
89
111
  except Exception as exc:
90
112
  logger.error(
91
113
  "Failed to load default LLM model %s: %s", row.get("id"), exc
@@ -98,9 +120,10 @@ def _load_default_llm_models() -> dict[str, "LLMModelInfo"]:
98
120
 
99
121
  class LLMProvider(str, Enum):
100
122
  OPENAI = "openai"
123
+ GOOGLE = "google"
101
124
  DEEPSEEK = "deepseek"
102
125
  XAI = "xai"
103
- GATEWAYZ = "gatewayz"
126
+ OPENROUTER = "openrouter"
104
127
  ETERNAL = "eternal"
105
128
  REIGENT = "reigent"
106
129
  VENICE = "venice"
@@ -110,9 +133,10 @@ class LLMProvider(str, Enum):
110
133
  """Return user-friendly display name for the provider."""
111
134
  display_names = {
112
135
  self.OPENAI: "OpenAI",
136
+ self.GOOGLE: "Google",
113
137
  self.DEEPSEEK: "DeepSeek",
114
138
  self.XAI: "xAI",
115
- self.GATEWAYZ: "Gatewayz",
139
+ self.OPENROUTER: "OpenRouter",
116
140
  self.ETERNAL: "Eternal",
117
141
  self.REIGENT: "Reigent",
118
142
  self.VENICE: "Venice",
@@ -502,19 +526,19 @@ class XAILLM(LLMModel):
502
526
  return ChatXAI(**kwargs)
503
527
 
504
528
 
505
- class GatewayzLLM(LLMModel):
506
- """Gatewayz AI LLM configuration."""
529
+ class OpenRouterLLM(LLMModel):
530
+ """OpenRouter LLM configuration."""
507
531
 
508
532
  async def create_instance(self, params: dict[str, Any] = {}) -> BaseChatModel:
509
- """Create and return a ChatOpenAI instance configured for Eternal AI."""
533
+ """Create and return a ChatOpenAI instance configured for OpenRouter."""
510
534
  from langchain_openai import ChatOpenAI
511
535
 
512
536
  info = await self.model_info()
513
537
 
514
538
  kwargs = {
515
539
  "model": self.model_name,
516
- "api_key": config.gatewayz_api_key,
517
- "base_url": info.api_base,
540
+ "api_key": config.openrouter_api_key,
541
+ "base_url": "https://openrouter.ai/api/v1",
518
542
  "timeout": info.timeout,
519
543
  "max_completion_tokens": 999,
520
544
  }
@@ -616,6 +640,31 @@ class VeniceLLM(LLMModel):
616
640
  return ChatOpenAI(**kwargs)
617
641
 
618
642
 
643
+ class GoogleLLM(LLMModel):
644
+ """Google LLM configuration."""
645
+
646
+ async def create_instance(self, params: dict[str, Any] = {}) -> BaseChatModel:
647
+ """Create and return a ChatGoogleGenerativeAI instance."""
648
+ from langchain_google_genai import ChatGoogleGenerativeAI
649
+
650
+ info = await self.model_info()
651
+
652
+ kwargs = {
653
+ "model": self.model_name,
654
+ "google_api_key": config.google_api_key,
655
+ "timeout": info.timeout,
656
+ }
657
+
658
+ # Add optional parameters based on model support
659
+ if info.supports_temperature:
660
+ kwargs["temperature"] = self.temperature
661
+
662
+ # Update kwargs with params to allow overriding
663
+ kwargs.update(params)
664
+
665
+ return ChatGoogleGenerativeAI(**kwargs)
666
+
667
+
619
668
  # Factory function to create the appropriate LLM model based on the model name
620
669
  class OllamaLLM(LLMModel):
621
670
  """Ollama LLM configuration."""
@@ -677,7 +726,9 @@ async def create_llm_model(
677
726
 
678
727
  provider = info.provider
679
728
 
680
- if provider == LLMProvider.DEEPSEEK:
729
+ if provider == LLMProvider.GOOGLE:
730
+ return GoogleLLM(**base_params)
731
+ elif provider == LLMProvider.DEEPSEEK:
681
732
  return DeepseekLLM(**base_params)
682
733
  elif provider == LLMProvider.XAI:
683
734
  return XAILLM(**base_params)
@@ -687,8 +738,8 @@ async def create_llm_model(
687
738
  return ReigentLLM(**base_params)
688
739
  elif provider == LLMProvider.VENICE:
689
740
  return VeniceLLM(**base_params)
690
- elif provider == LLMProvider.GATEWAYZ:
691
- return GatewayzLLM(**base_params)
741
+ elif provider == LLMProvider.OPENROUTER:
742
+ return OpenRouterLLM(**base_params)
692
743
  elif provider == LLMProvider.OLLAMA:
693
744
  return OllamaLLM(**base_params)
694
745
  else:
@@ -162,7 +162,7 @@ class AgentSkillData(AgentSkillDataCreate):
162
162
  return result or 0
163
163
 
164
164
  @classmethod
165
- async def get(cls, agent_id: str, skill: str, key: str) -> dict | None:
165
+ async def get(cls, agent_id: str, skill: str, key: str) -> dict[str, Any] | None:
166
166
  """Get skill data for an agent.
167
167
 
168
168
  Args:
@@ -303,7 +303,7 @@ class ChatSkillData(ChatSkillDataCreate):
303
303
  ]
304
304
 
305
305
  @classmethod
306
- async def get(cls, chat_id: str, skill: str, key: str) -> dict | None:
306
+ async def get(cls, chat_id: str, skill: str, key: str) -> dict[str, Any] | None:
307
307
  """Get skill data for a chat.
308
308
 
309
309
  Args:
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import Literal
2
+ from typing import Any, Literal
3
3
 
4
4
  import httpx
5
5
  from pydantic import BaseModel, Field
@@ -65,7 +65,7 @@ class AcolytAskGpt(AcolytBaseTool):
65
65
  """
66
66
  args_schema: type[BaseModel] = AcolytAskGptInput
67
67
 
68
- async def _arun(self, question: str, **kwargs) -> dict:
68
+ async def _arun(self, question: str, **kwargs) -> dict[str, Any]:
69
69
  """Run the tool to get answer from Acolyt GPT.
70
70
 
71
71
  Args:
@@ -1,6 +1,7 @@
1
1
  """Card drawing skill using Deck of Cards API."""
2
2
 
3
3
  import logging
4
+ from typing import Any
4
5
 
5
6
  try:
6
7
  import httpx
@@ -50,7 +51,7 @@ class CasinoDeckDraw(CasinoBaseTool):
50
51
  description: str = PROMPT
51
52
  args_schema: type[BaseModel] = CasinoDeckDrawInput
52
53
 
53
- async def _arun(self, count: int = 1, **kwargs) -> dict:
54
+ async def _arun(self, count: int = 1, **kwargs) -> dict[str, Any]:
54
55
  try:
55
56
  context = self.get_context()
56
57
 
@@ -1,6 +1,7 @@
1
1
  """Deck shuffling skill using Deck of Cards API."""
2
2
 
3
3
  import logging
4
+ from typing import Any
4
5
 
5
6
  try:
6
7
  import httpx
@@ -56,7 +57,7 @@ class CasinoDeckShuffle(CasinoBaseTool):
56
57
 
57
58
  async def _arun(
58
59
  self, deck_count: int = 1, jokers_enabled: bool = False, **kwargs
59
- ) -> dict:
60
+ ) -> dict[str, Any]:
60
61
  try:
61
62
  context = self.get_context()
62
63
 
@@ -1,6 +1,7 @@
1
1
  """Quantum dice rolling skill using QRandom API."""
2
2
 
3
3
  import logging
4
+ from typing import Any
4
5
 
5
6
  try:
6
7
  import httpx
@@ -49,7 +50,7 @@ class CasinoDiceRoll(CasinoBaseTool):
49
50
  description: str = PROMPT
50
51
  args_schema: type[BaseModel] = CasinoDiceRollInput
51
52
 
52
- async def _arun(self, dice_count: int = 1, **kwargs) -> dict:
53
+ async def _arun(self, dice_count: int = 1, **kwargs) -> dict[str, Any]:
53
54
  try:
54
55
  context = self.get_context()
55
56
 
@@ -4,6 +4,8 @@ Casino Skills Utilities
4
4
  Common constants, URLs, and helper functions for Casino skills.
5
5
  """
6
6
 
7
+ from typing import Any
8
+
7
9
  # API URLs
8
10
  DECK_OF_CARDS_API_BASE = "https://www.deckofcardsapi.com/api/deck"
9
11
  QRANDOM_API_BASE = "https://qrandom.io/api/random"
@@ -89,7 +91,7 @@ def validate_dice_count(count: int) -> int:
89
91
  return max(MIN_DICE_COUNT, min(MAX_DICE_COUNT, count))
90
92
 
91
93
 
92
- def format_card_info(card: dict) -> dict:
94
+ def format_card_info(card: dict[str, Any]) -> dict[str, Any]:
93
95
  """Format card information for consistent output.
94
96
 
95
97
  Args:
@@ -161,7 +161,7 @@ class ChainLookup(ChainlistBaseTool):
161
161
  limit: int | None = 5,
162
162
  config: Any | None = None,
163
163
  **kwargs,
164
- ) -> dict:
164
+ ) -> dict[str, Any]:
165
165
  """Lookup blockchain RPC endpoints from Chainlist."""
166
166
  if not search_term and not chain_id:
167
167
  return {