intentkit 0.6.15__tar.gz → 0.6.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of intentkit might be problematic. Click here for more details.

Files changed (411) hide show
  1. {intentkit-0.6.15 → intentkit-0.6.17}/PKG-INFO +1 -1
  2. {intentkit-0.6.15 → intentkit-0.6.17}/__init__.py +1 -1
  3. {intentkit-0.6.15 → intentkit-0.6.17}/core/engine.py +24 -36
  4. {intentkit-0.6.15 → intentkit-0.6.17}/core/prompt.py +0 -1
  5. {intentkit-0.6.15 → intentkit-0.6.17}/models/agent.py +0 -17
  6. {intentkit-0.6.15 → intentkit-0.6.17}/models/agent_schema.json +15 -58
  7. {intentkit-0.6.15 → intentkit-0.6.17}/models/app_setting.py +92 -29
  8. {intentkit-0.6.15 → intentkit-0.6.17}/models/chat.py +44 -0
  9. {intentkit-0.6.15 → intentkit-0.6.17}/pyproject.toml +1 -1
  10. {intentkit-0.6.15 → intentkit-0.6.17}/skills/base.py +1 -1
  11. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/base.py +1 -1
  12. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/base.py +1 -1
  13. {intentkit-0.6.15 → intentkit-0.6.17}/utils/error.py +11 -1
  14. intentkit-0.6.15/abstracts/exception.py +0 -9
  15. {intentkit-0.6.15 → intentkit-0.6.17}/.gitignore +0 -0
  16. {intentkit-0.6.15 → intentkit-0.6.17}/LICENSE +0 -0
  17. {intentkit-0.6.15 → intentkit-0.6.17}/MANIFEST.in +0 -0
  18. {intentkit-0.6.15 → intentkit-0.6.17}/README.md +0 -0
  19. {intentkit-0.6.15 → intentkit-0.6.17}/abstracts/__init__.py +0 -0
  20. {intentkit-0.6.15 → intentkit-0.6.17}/abstracts/agent.py +0 -0
  21. {intentkit-0.6.15 → intentkit-0.6.17}/abstracts/api.py +0 -0
  22. {intentkit-0.6.15 → intentkit-0.6.17}/abstracts/engine.py +0 -0
  23. {intentkit-0.6.15 → intentkit-0.6.17}/abstracts/graph.py +0 -0
  24. {intentkit-0.6.15 → intentkit-0.6.17}/abstracts/skill.py +0 -0
  25. {intentkit-0.6.15 → intentkit-0.6.17}/abstracts/twitter.py +0 -0
  26. {intentkit-0.6.15 → intentkit-0.6.17}/clients/__init__.py +0 -0
  27. {intentkit-0.6.15 → intentkit-0.6.17}/clients/cdp.py +0 -0
  28. {intentkit-0.6.15 → intentkit-0.6.17}/clients/twitter.py +0 -0
  29. {intentkit-0.6.15 → intentkit-0.6.17}/config/__init__.py +0 -0
  30. {intentkit-0.6.15 → intentkit-0.6.17}/config/config.py +0 -0
  31. {intentkit-0.6.15 → intentkit-0.6.17}/core/__init__.py +0 -0
  32. {intentkit-0.6.15 → intentkit-0.6.17}/core/agent.py +0 -0
  33. {intentkit-0.6.15 → intentkit-0.6.17}/core/api.py +0 -0
  34. {intentkit-0.6.15 → intentkit-0.6.17}/core/client.py +0 -0
  35. {intentkit-0.6.15 → intentkit-0.6.17}/core/credit.py +0 -0
  36. {intentkit-0.6.15 → intentkit-0.6.17}/core/node.py +0 -0
  37. {intentkit-0.6.15 → intentkit-0.6.17}/core/skill.py +0 -0
  38. {intentkit-0.6.15 → intentkit-0.6.17}/models/agent_data.py +0 -0
  39. {intentkit-0.6.15 → intentkit-0.6.17}/models/base.py +0 -0
  40. {intentkit-0.6.15 → intentkit-0.6.17}/models/conversation.py +0 -0
  41. {intentkit-0.6.15 → intentkit-0.6.17}/models/credit.py +0 -0
  42. {intentkit-0.6.15 → intentkit-0.6.17}/models/db.py +0 -0
  43. {intentkit-0.6.15 → intentkit-0.6.17}/models/db_mig.py +0 -0
  44. {intentkit-0.6.15 → intentkit-0.6.17}/models/generator.py +0 -0
  45. {intentkit-0.6.15 → intentkit-0.6.17}/models/llm.py +0 -0
  46. {intentkit-0.6.15 → intentkit-0.6.17}/models/redis.py +0 -0
  47. {intentkit-0.6.15 → intentkit-0.6.17}/models/skill.py +0 -0
  48. {intentkit-0.6.15 → intentkit-0.6.17}/models/user.py +0 -0
  49. {intentkit-0.6.15 → intentkit-0.6.17}/skills/__init__.py +0 -0
  50. {intentkit-0.6.15 → intentkit-0.6.17}/skills/acolyt/__init__.py +0 -0
  51. {intentkit-0.6.15 → intentkit-0.6.17}/skills/acolyt/acolyt.jpg +0 -0
  52. {intentkit-0.6.15 → intentkit-0.6.17}/skills/acolyt/ask.py +0 -0
  53. {intentkit-0.6.15 → intentkit-0.6.17}/skills/acolyt/base.py +0 -0
  54. {intentkit-0.6.15 → intentkit-0.6.17}/skills/acolyt/schema.json +0 -0
  55. {intentkit-0.6.15 → intentkit-0.6.17}/skills/aixbt/README.md +0 -0
  56. {intentkit-0.6.15 → intentkit-0.6.17}/skills/aixbt/__init__.py +0 -0
  57. {intentkit-0.6.15 → intentkit-0.6.17}/skills/aixbt/aixbt.jpg +0 -0
  58. {intentkit-0.6.15 → intentkit-0.6.17}/skills/aixbt/base.py +0 -0
  59. {intentkit-0.6.15 → intentkit-0.6.17}/skills/aixbt/projects.py +0 -0
  60. {intentkit-0.6.15 → intentkit-0.6.17}/skills/aixbt/schema.json +0 -0
  61. {intentkit-0.6.15 → intentkit-0.6.17}/skills/allora/__init__.py +0 -0
  62. {intentkit-0.6.15 → intentkit-0.6.17}/skills/allora/allora.jpeg +0 -0
  63. {intentkit-0.6.15 → intentkit-0.6.17}/skills/allora/base.py +0 -0
  64. {intentkit-0.6.15 → intentkit-0.6.17}/skills/allora/price.py +0 -0
  65. {intentkit-0.6.15 → intentkit-0.6.17}/skills/allora/schema.json +0 -0
  66. {intentkit-0.6.15 → intentkit-0.6.17}/skills/carv/README.md +0 -0
  67. {intentkit-0.6.15 → intentkit-0.6.17}/skills/carv/__init__.py +0 -0
  68. {intentkit-0.6.15 → intentkit-0.6.17}/skills/carv/base.py +0 -0
  69. {intentkit-0.6.15 → intentkit-0.6.17}/skills/carv/carv.webp +0 -0
  70. {intentkit-0.6.15 → intentkit-0.6.17}/skills/carv/fetch_news.py +0 -0
  71. {intentkit-0.6.15 → intentkit-0.6.17}/skills/carv/onchain_query.py +0 -0
  72. {intentkit-0.6.15 → intentkit-0.6.17}/skills/carv/schema.json +0 -0
  73. {intentkit-0.6.15 → intentkit-0.6.17}/skills/carv/token_info_and_price.py +0 -0
  74. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cdp/__init__.py +0 -0
  75. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cdp/base.py +0 -0
  76. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cdp/cdp.png +0 -0
  77. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cdp/get_balance.py +0 -0
  78. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cdp/schema.json +0 -0
  79. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cdp/swap.py +0 -0
  80. {intentkit-0.6.15 → intentkit-0.6.17}/skills/chainlist/README.md +0 -0
  81. {intentkit-0.6.15 → intentkit-0.6.17}/skills/chainlist/__init__.py +0 -0
  82. {intentkit-0.6.15 → intentkit-0.6.17}/skills/chainlist/base.py +0 -0
  83. {intentkit-0.6.15 → intentkit-0.6.17}/skills/chainlist/chain_lookup.py +0 -0
  84. {intentkit-0.6.15 → intentkit-0.6.17}/skills/chainlist/chainlist.png +0 -0
  85. {intentkit-0.6.15 → intentkit-0.6.17}/skills/chainlist/schema.json +0 -0
  86. {intentkit-0.6.15 → intentkit-0.6.17}/skills/common/__init__.py +0 -0
  87. {intentkit-0.6.15 → intentkit-0.6.17}/skills/common/base.py +0 -0
  88. {intentkit-0.6.15 → intentkit-0.6.17}/skills/common/common.jpg +0 -0
  89. {intentkit-0.6.15 → intentkit-0.6.17}/skills/common/current_time.py +0 -0
  90. {intentkit-0.6.15 → intentkit-0.6.17}/skills/common/schema.json +0 -0
  91. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/README.md +0 -0
  92. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/__init__.py +0 -0
  93. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/base.py +0 -0
  94. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/constants.py +0 -0
  95. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/cookiefun.png +0 -0
  96. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/get_account_details.py +0 -0
  97. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/get_account_feed.py +0 -0
  98. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/get_account_smart_followers.py +0 -0
  99. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/get_sectors.py +0 -0
  100. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/schema.json +0 -0
  101. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cookiefun/search_accounts.py +0 -0
  102. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/__init__.py +0 -0
  103. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/api.py +0 -0
  104. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/cryptocompare.png +0 -0
  105. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/fetch_news.py +0 -0
  106. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/fetch_price.py +0 -0
  107. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  108. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  109. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/fetch_top_volume.py +0 -0
  110. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/fetch_trading_signals.py +0 -0
  111. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptocompare/schema.json +0 -0
  112. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptopanic/__init__.py +0 -0
  113. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptopanic/base.py +0 -0
  114. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptopanic/cryptopanic.png +0 -0
  115. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  116. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  117. {intentkit-0.6.15 → intentkit-0.6.17}/skills/cryptopanic/schema.json +0 -0
  118. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dapplooker/README.md +0 -0
  119. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dapplooker/__init__.py +0 -0
  120. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dapplooker/base.py +0 -0
  121. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dapplooker/dapplooker.jpg +0 -0
  122. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dapplooker/dapplooker_token_data.py +0 -0
  123. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dapplooker/schema.json +0 -0
  124. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/__init__.py +0 -0
  125. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/api.py +0 -0
  126. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/base.py +0 -0
  127. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/coins/__init__.py +0 -0
  128. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  129. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/coins/fetch_block.py +0 -0
  130. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/coins/fetch_current_prices.py +0 -0
  131. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/coins/fetch_first_price.py +0 -0
  132. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  133. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/coins/fetch_price_chart.py +0 -0
  134. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  135. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/config/__init__.py +0 -0
  136. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/config/chains.py +0 -0
  137. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/defillama.jpeg +0 -0
  138. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/fees/__init__.py +0 -0
  139. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  140. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/schema.json +0 -0
  141. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/stablecoins/__init__.py +0 -0
  142. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  143. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  144. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  145. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  146. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tests/__init__.py +0 -0
  147. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tests/api_integration.test.py +0 -0
  148. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tests/api_unit.test.py +0 -0
  149. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tvl/__init__.py +0 -0
  150. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  151. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tvl/fetch_chains.py +0 -0
  152. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  153. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tvl/fetch_protocol.py +0 -0
  154. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  155. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/tvl/fetch_protocols.py +0 -0
  156. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/volumes/__init__.py +0 -0
  157. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  158. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  159. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  160. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/yields/__init__.py +0 -0
  161. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  162. {intentkit-0.6.15 → intentkit-0.6.17}/skills/defillama/yields/fetch_pools.py +0 -0
  163. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dexscreener/__init__.py +0 -0
  164. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dexscreener/base.py +0 -0
  165. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dexscreener/dexscreener.png +0 -0
  166. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dexscreener/model/__init__.py +0 -0
  167. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dexscreener/model/search_token_response.py +0 -0
  168. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dexscreener/schema.json +0 -0
  169. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dexscreener/search_token.py +0 -0
  170. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dune_analytics/__init__.py +0 -0
  171. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dune_analytics/base.py +0 -0
  172. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dune_analytics/dune.png +0 -0
  173. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  174. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  175. {intentkit-0.6.15 → intentkit-0.6.17}/skills/dune_analytics/schema.json +0 -0
  176. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/README.md +0 -0
  177. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/__init__.py +0 -0
  178. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/base.py +0 -0
  179. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/elfa.jpg +0 -0
  180. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/mention.py +0 -0
  181. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/schema.json +0 -0
  182. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/stats.py +0 -0
  183. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/tokens.py +0 -0
  184. {intentkit-0.6.15 → intentkit-0.6.17}/skills/elfa/utils.py +0 -0
  185. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/README.md +0 -0
  186. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/__init__.py +0 -0
  187. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/abi/__init__.py +0 -0
  188. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/abi/approval.py +0 -0
  189. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/abi/erc20.py +0 -0
  190. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/abi/route.py +0 -0
  191. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/base.py +0 -0
  192. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/best_yield.py +0 -0
  193. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/enso.jpg +0 -0
  194. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/networks.py +0 -0
  195. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/prices.py +0 -0
  196. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/route.py +0 -0
  197. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/schema.json +0 -0
  198. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/tokens.py +0 -0
  199. {intentkit-0.6.15 → intentkit-0.6.17}/skills/enso/wallet.py +0 -0
  200. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/README.md +0 -0
  201. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/__init__.py +0 -0
  202. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/base.py +0 -0
  203. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/clear.py +0 -0
  204. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/crawl.py +0 -0
  205. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/firecrawl.png +0 -0
  206. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/query.py +0 -0
  207. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/schema.json +0 -0
  208. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/scrape.py +0 -0
  209. {intentkit-0.6.15 → intentkit-0.6.17}/skills/firecrawl/utils.py +0 -0
  210. {intentkit-0.6.15 → intentkit-0.6.17}/skills/github/README.md +0 -0
  211. {intentkit-0.6.15 → intentkit-0.6.17}/skills/github/__init__.py +0 -0
  212. {intentkit-0.6.15 → intentkit-0.6.17}/skills/github/base.py +0 -0
  213. {intentkit-0.6.15 → intentkit-0.6.17}/skills/github/github.jpg +0 -0
  214. {intentkit-0.6.15 → intentkit-0.6.17}/skills/github/github_search.py +0 -0
  215. {intentkit-0.6.15 → intentkit-0.6.17}/skills/github/schema.json +0 -0
  216. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/__init__.py +0 -0
  217. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/base.py +0 -0
  218. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/heurist.png +0 -0
  219. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/image_generation_animagine_xl.py +0 -0
  220. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  221. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/image_generation_arthemy_real.py +0 -0
  222. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/image_generation_braindance.py +0 -0
  223. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  224. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  225. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/image_generation_sdxl.py +0 -0
  226. {intentkit-0.6.15 → intentkit-0.6.17}/skills/heurist/schema.json +0 -0
  227. {intentkit-0.6.15 → intentkit-0.6.17}/skills/http/README.md +0 -0
  228. {intentkit-0.6.15 → intentkit-0.6.17}/skills/http/__init__.py +0 -0
  229. {intentkit-0.6.15 → intentkit-0.6.17}/skills/http/base.py +0 -0
  230. {intentkit-0.6.15 → intentkit-0.6.17}/skills/http/get.py +0 -0
  231. {intentkit-0.6.15 → intentkit-0.6.17}/skills/http/http.svg +0 -0
  232. {intentkit-0.6.15 → intentkit-0.6.17}/skills/http/post.py +0 -0
  233. {intentkit-0.6.15 → intentkit-0.6.17}/skills/http/put.py +0 -0
  234. {intentkit-0.6.15 → intentkit-0.6.17}/skills/http/schema.json +0 -0
  235. {intentkit-0.6.15 → intentkit-0.6.17}/skills/lifi/README.md +0 -0
  236. {intentkit-0.6.15 → intentkit-0.6.17}/skills/lifi/__init__.py +0 -0
  237. {intentkit-0.6.15 → intentkit-0.6.17}/skills/lifi/base.py +0 -0
  238. {intentkit-0.6.15 → intentkit-0.6.17}/skills/lifi/lifi.png +0 -0
  239. {intentkit-0.6.15 → intentkit-0.6.17}/skills/lifi/schema.json +0 -0
  240. {intentkit-0.6.15 → intentkit-0.6.17}/skills/lifi/token_execute.py +0 -0
  241. {intentkit-0.6.15 → intentkit-0.6.17}/skills/lifi/token_quote.py +0 -0
  242. {intentkit-0.6.15 → intentkit-0.6.17}/skills/lifi/utils.py +0 -0
  243. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/README.md +0 -0
  244. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/__init__.py +0 -0
  245. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/api.py +0 -0
  246. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/base.py +0 -0
  247. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/fetch_chain_portfolio.py +0 -0
  248. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/fetch_nft_portfolio.py +0 -0
  249. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/fetch_solana_portfolio.py +0 -0
  250. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  251. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/moralis.png +0 -0
  252. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/schema.json +0 -0
  253. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/tests/__init__.py +0 -0
  254. {intentkit-0.6.15 → intentkit-0.6.17}/skills/moralis/tests/test_wallet.py +0 -0
  255. {intentkit-0.6.15 → intentkit-0.6.17}/skills/nation/__init__.py +0 -0
  256. {intentkit-0.6.15 → intentkit-0.6.17}/skills/nation/base.py +0 -0
  257. {intentkit-0.6.15 → intentkit-0.6.17}/skills/nation/nation.png +0 -0
  258. {intentkit-0.6.15 → intentkit-0.6.17}/skills/nation/nft_check.py +0 -0
  259. {intentkit-0.6.15 → intentkit-0.6.17}/skills/nation/schema.json +0 -0
  260. {intentkit-0.6.15 → intentkit-0.6.17}/skills/openai/__init__.py +0 -0
  261. {intentkit-0.6.15 → intentkit-0.6.17}/skills/openai/base.py +0 -0
  262. {intentkit-0.6.15 → intentkit-0.6.17}/skills/openai/dalle_image_generation.py +0 -0
  263. {intentkit-0.6.15 → intentkit-0.6.17}/skills/openai/gpt_image_generation.py +0 -0
  264. {intentkit-0.6.15 → intentkit-0.6.17}/skills/openai/gpt_image_to_image.py +0 -0
  265. {intentkit-0.6.15 → intentkit-0.6.17}/skills/openai/image_to_text.py +0 -0
  266. {intentkit-0.6.15 → intentkit-0.6.17}/skills/openai/openai.png +0 -0
  267. {intentkit-0.6.15 → intentkit-0.6.17}/skills/openai/schema.json +0 -0
  268. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/README.md +0 -0
  269. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/__init__.py +0 -0
  270. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/base.py +0 -0
  271. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/constants.py +0 -0
  272. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/moralis.png +0 -0
  273. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/schema.json +0 -0
  274. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/token_balances.py +0 -0
  275. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_approvals.py +0 -0
  276. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_defi_positions.py +0 -0
  277. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_history.py +0 -0
  278. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_net_worth.py +0 -0
  279. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_nfts.py +0 -0
  280. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_profitability.py +0 -0
  281. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_profitability_summary.py +0 -0
  282. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_stats.py +0 -0
  283. {intentkit-0.6.15 → intentkit-0.6.17}/skills/portfolio/wallet_swaps.py +0 -0
  284. {intentkit-0.6.15 → intentkit-0.6.17}/skills/skills.toml +0 -0
  285. {intentkit-0.6.15 → intentkit-0.6.17}/skills/slack/__init__.py +0 -0
  286. {intentkit-0.6.15 → intentkit-0.6.17}/skills/slack/base.py +0 -0
  287. {intentkit-0.6.15 → intentkit-0.6.17}/skills/slack/get_channel.py +0 -0
  288. {intentkit-0.6.15 → intentkit-0.6.17}/skills/slack/get_message.py +0 -0
  289. {intentkit-0.6.15 → intentkit-0.6.17}/skills/slack/schedule_message.py +0 -0
  290. {intentkit-0.6.15 → intentkit-0.6.17}/skills/slack/schema.json +0 -0
  291. {intentkit-0.6.15 → intentkit-0.6.17}/skills/slack/send_message.py +0 -0
  292. {intentkit-0.6.15 → intentkit-0.6.17}/skills/slack/slack.jpg +0 -0
  293. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/__init__.py +0 -0
  294. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/base.py +0 -0
  295. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/delete_data.py +0 -0
  296. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/fetch_data.py +0 -0
  297. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/insert_data.py +0 -0
  298. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/invoke_function.py +0 -0
  299. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/schema.json +0 -0
  300. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/supabase.svg +0 -0
  301. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/update_data.py +0 -0
  302. {intentkit-0.6.15 → intentkit-0.6.17}/skills/supabase/upsert_data.py +0 -0
  303. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/__init__.py +0 -0
  304. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/add_autonomous_task.py +0 -0
  305. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/base.py +0 -0
  306. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/delete_autonomous_task.py +0 -0
  307. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/edit_autonomous_task.py +0 -0
  308. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/list_autonomous_tasks.py +0 -0
  309. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/read_agent_api_key.py +0 -0
  310. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/regenerate_agent_api_key.py +0 -0
  311. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/schema.json +0 -0
  312. {intentkit-0.6.15 → intentkit-0.6.17}/skills/system/system.svg +0 -0
  313. {intentkit-0.6.15 → intentkit-0.6.17}/skills/tavily/README.md +0 -0
  314. {intentkit-0.6.15 → intentkit-0.6.17}/skills/tavily/__init__.py +0 -0
  315. {intentkit-0.6.15 → intentkit-0.6.17}/skills/tavily/base.py +0 -0
  316. {intentkit-0.6.15 → intentkit-0.6.17}/skills/tavily/schema.json +0 -0
  317. {intentkit-0.6.15 → intentkit-0.6.17}/skills/tavily/tavily.jpg +0 -0
  318. {intentkit-0.6.15 → intentkit-0.6.17}/skills/tavily/tavily_extract.py +0 -0
  319. {intentkit-0.6.15 → intentkit-0.6.17}/skills/tavily/tavily_search.py +0 -0
  320. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/README.md +0 -0
  321. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/__init__.py +0 -0
  322. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/base.py +0 -0
  323. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/constants.py +0 -0
  324. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/erc20_transfers.py +0 -0
  325. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/moralis.png +0 -0
  326. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/schema.json +0 -0
  327. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/token_analytics.py +0 -0
  328. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/token_price.py +0 -0
  329. {intentkit-0.6.15 → intentkit-0.6.17}/skills/token/token_search.py +0 -0
  330. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/__init__.py +0 -0
  331. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/follow_user.py +0 -0
  332. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/get_mentions.py +0 -0
  333. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/get_timeline.py +0 -0
  334. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/get_user_by_username.py +0 -0
  335. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/get_user_tweets.py +0 -0
  336. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/like_tweet.py +0 -0
  337. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/post_tweet.py +0 -0
  338. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/reply_tweet.py +0 -0
  339. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/retweet.py +0 -0
  340. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/schema.json +0 -0
  341. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/search_tweets.py +0 -0
  342. {intentkit-0.6.15 → intentkit-0.6.17}/skills/twitter/twitter.png +0 -0
  343. {intentkit-0.6.15 → intentkit-0.6.17}/skills/unrealspeech/__init__.py +0 -0
  344. {intentkit-0.6.15 → intentkit-0.6.17}/skills/unrealspeech/base.py +0 -0
  345. {intentkit-0.6.15 → intentkit-0.6.17}/skills/unrealspeech/schema.json +0 -0
  346. {intentkit-0.6.15 → intentkit-0.6.17}/skills/unrealspeech/text_to_speech.py +0 -0
  347. {intentkit-0.6.15 → intentkit-0.6.17}/skills/unrealspeech/unrealspeech.jpg +0 -0
  348. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_audio/__init__.py +0 -0
  349. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_audio/base.py +0 -0
  350. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_audio/input.py +0 -0
  351. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_audio/schema.json +0 -0
  352. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_audio/venice_audio.py +0 -0
  353. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_audio/venice_logo.jpg +0 -0
  354. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/README.md +0 -0
  355. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/__init__.py +0 -0
  356. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/api.py +0 -0
  357. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/base.py +0 -0
  358. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/config.py +0 -0
  359. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_enhance/README.md +0 -0
  360. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_enhance/__init__.py +0 -0
  361. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  362. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  363. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  364. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/README.md +0 -0
  365. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/__init__.py +0 -0
  366. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  367. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  368. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  369. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  370. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  371. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  372. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  373. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  374. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  375. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_upscale/README.md +0 -0
  376. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_upscale/__init__.py +0 -0
  377. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  378. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  379. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  380. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_vision/README.md +0 -0
  381. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_vision/__init__.py +0 -0
  382. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_vision/image_vision.py +0 -0
  383. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  384. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  385. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/schema.json +0 -0
  386. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/utils.py +0 -0
  387. {intentkit-0.6.15 → intentkit-0.6.17}/skills/venice_image/venice_image.jpg +0 -0
  388. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/README.md +0 -0
  389. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/__init__.py +0 -0
  390. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/base.py +0 -0
  391. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/document_indexer.py +0 -0
  392. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/langchain.png +0 -0
  393. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/schema.json +0 -0
  394. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/scrape_and_index.py +0 -0
  395. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/utils.py +0 -0
  396. {intentkit-0.6.15 → intentkit-0.6.17}/skills/web_scraper/website_indexer.py +0 -0
  397. {intentkit-0.6.15 → intentkit-0.6.17}/skills/xmtp/README.md +0 -0
  398. {intentkit-0.6.15 → intentkit-0.6.17}/skills/xmtp/__init__.py +0 -0
  399. {intentkit-0.6.15 → intentkit-0.6.17}/skills/xmtp/base.py +0 -0
  400. {intentkit-0.6.15 → intentkit-0.6.17}/skills/xmtp/price.py +0 -0
  401. {intentkit-0.6.15 → intentkit-0.6.17}/skills/xmtp/schema.json +0 -0
  402. {intentkit-0.6.15 → intentkit-0.6.17}/skills/xmtp/swap.py +0 -0
  403. {intentkit-0.6.15 → intentkit-0.6.17}/skills/xmtp/transfer.py +0 -0
  404. {intentkit-0.6.15 → intentkit-0.6.17}/skills/xmtp/xmtp.png +0 -0
  405. {intentkit-0.6.15 → intentkit-0.6.17}/utils/__init__.py +0 -0
  406. {intentkit-0.6.15 → intentkit-0.6.17}/utils/chain.py +0 -0
  407. {intentkit-0.6.15 → intentkit-0.6.17}/utils/logging.py +0 -0
  408. {intentkit-0.6.15 → intentkit-0.6.17}/utils/random.py +0 -0
  409. {intentkit-0.6.15 → intentkit-0.6.17}/utils/s3.py +0 -0
  410. {intentkit-0.6.15 → intentkit-0.6.17}/utils/slack_alert.py +0 -0
  411. {intentkit-0.6.15 → intentkit-0.6.17}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.6.15
3
+ Version: 0.6.17
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
5
  Project-URL: Homepage, https://github.com/crestal-network/intentkit
6
6
  Project-URL: Repository, https://github.com/crestal-network/intentkit
@@ -3,7 +3,7 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.6.15"
6
+ __version__ = "0.6.17"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -44,7 +44,7 @@ from intentkit.core.prompt import (
44
44
  from intentkit.core.skill import skill_store
45
45
  from intentkit.models.agent import Agent, AgentTable
46
46
  from intentkit.models.agent_data import AgentData, AgentQuota
47
- from intentkit.models.app_setting import AppSetting
47
+ from intentkit.models.app_setting import AppSetting, SystemMessageType
48
48
  from intentkit.models.chat import (
49
49
  AuthorType,
50
50
  ChatMessage,
@@ -298,16 +298,14 @@ async def stream_agent(message: ChatMessageCreate):
298
298
  if agent.fee_percentage and agent.fee_percentage > 100:
299
299
  owner = await User.get(agent.owner)
300
300
  if owner and agent.fee_percentage > 100 + owner.nft_count * 10:
301
- error_message_create = ChatMessageCreate(
302
- id=str(XID()),
301
+ error_message_create = await ChatMessageCreate.from_system_message(
302
+ SystemMessageType.SERVICE_FEE_ERROR,
303
303
  agent_id=input.agent_id,
304
304
  chat_id=input.chat_id,
305
305
  user_id=input.user_id,
306
306
  author_id=input.agent_id,
307
- author_type=AuthorType.SYSTEM,
308
307
  thread_type=input.author_type,
309
308
  reply_to=input.id,
310
- message="If you are the owner of this agent, please Update the Service Fee % to be in compliance with the Nation guidelines (Max 100% + 10% per Nation Pass NFT held)",
311
309
  time_cost=time.perf_counter() - start,
312
310
  )
313
311
  error_message = await error_message_create.save()
@@ -336,16 +334,14 @@ async def stream_agent(message: ChatMessageCreate):
336
334
  abuse_check = False
337
335
  if abuse_check and payer != agent.owner and user_account.free_credits > 0:
338
336
  if quota and quota.free_income_daily > 24000:
339
- error_message_create = ChatMessageCreate(
340
- id=str(XID()),
337
+ error_message_create = await ChatMessageCreate.from_system_message(
338
+ SystemMessageType.DAILY_USAGE_LIMIT_EXCEEDED,
341
339
  agent_id=input.agent_id,
342
340
  chat_id=input.chat_id,
343
341
  user_id=input.user_id,
344
342
  author_id=input.agent_id,
345
- author_type=AuthorType.SYSTEM,
346
343
  thread_type=input.author_type,
347
344
  reply_to=input.id,
348
- message="This Agent has reached its free CAP income limit for today! Start using paid CAPs or wait until this limit expires in less than 24 hours.",
349
345
  time_cost=time.perf_counter() - start,
350
346
  )
351
347
  error_message = await error_message_create.save()
@@ -356,16 +352,14 @@ async def stream_agent(message: ChatMessageCreate):
356
352
  if quota and quota.avg_action_cost > 0:
357
353
  avg_count = quota.avg_action_cost
358
354
  if not user_account.has_sufficient_credits(avg_count):
359
- error_message_create = ChatMessageCreate(
360
- id=str(XID()),
355
+ error_message_create = await ChatMessageCreate.from_system_message(
356
+ SystemMessageType.INSUFFICIENT_BALANCE,
361
357
  agent_id=input.agent_id,
362
358
  chat_id=input.chat_id,
363
359
  user_id=input.user_id,
364
360
  author_id=input.agent_id,
365
- author_type=AuthorType.SYSTEM,
366
361
  thread_type=input.author_type,
367
362
  reply_to=input.id,
368
- message="Insufficient balance.",
369
363
  time_cost=time.perf_counter() - start,
370
364
  )
371
365
  error_message = await error_message_create.save()
@@ -723,17 +717,17 @@ async def stream_agent(message: ChatMessageCreate):
723
717
  cold_start_cost = 0
724
718
  post_model_message = await post_model_message_create.save()
725
719
  yield post_model_message
726
- error_message_create = ChatMessageCreate(
727
- id=str(XID()),
728
- agent_id=input.agent_id,
729
- chat_id=input.chat_id,
730
- user_id=input.user_id,
731
- author_id=input.agent_id,
732
- author_type=AuthorType.SYSTEM,
733
- thread_type=input.author_type,
734
- reply_to=input.id,
735
- message="Insufficient balance.",
736
- time_cost=0,
720
+ error_message_create = (
721
+ await ChatMessageCreate.from_system_message(
722
+ SystemMessageType.INSUFFICIENT_BALANCE,
723
+ agent_id=input.agent_id,
724
+ chat_id=input.chat_id,
725
+ user_id=input.user_id,
726
+ author_id=input.agent_id,
727
+ thread_type=input.author_type,
728
+ reply_to=input.id,
729
+ time_cost=0,
730
+ )
737
731
  )
738
732
  error_message = await error_message_create.save()
739
733
  yield error_message
@@ -749,16 +743,14 @@ async def stream_agent(message: ChatMessageCreate):
749
743
  f"failed to execute agent: {str(e)}\n{error_traceback}",
750
744
  extra={"thread_id": thread_id},
751
745
  )
752
- error_message_create = ChatMessageCreate(
753
- id=str(XID()),
746
+ error_message_create = await ChatMessageCreate.from_system_message(
747
+ SystemMessageType.AGENT_INTERNAL_ERROR,
754
748
  agent_id=input.agent_id,
755
749
  chat_id=input.chat_id,
756
750
  user_id=input.user_id,
757
751
  author_id=input.agent_id,
758
- author_type=AuthorType.SYSTEM,
759
752
  thread_type=input.author_type,
760
753
  reply_to=input.id,
761
- message="Agent Internal Error",
762
754
  time_cost=time.perf_counter() - start,
763
755
  )
764
756
  error_message = await error_message_create.save()
@@ -770,16 +762,14 @@ async def stream_agent(message: ChatMessageCreate):
770
762
  f"reached recursion limit: {str(e)}\n{error_traceback}",
771
763
  extra={"thread_id": thread_id, "agent_id": input.agent_id},
772
764
  )
773
- error_message_create = ChatMessageCreate(
774
- id=str(XID()),
765
+ error_message_create = await ChatMessageCreate.from_system_message(
766
+ SystemMessageType.STEP_LIMIT_EXCEEDED,
775
767
  agent_id=input.agent_id,
776
768
  chat_id=input.chat_id,
777
769
  user_id=input.user_id,
778
770
  author_id=input.agent_id,
779
- author_type=AuthorType.SYSTEM,
780
771
  thread_type=input.author_type,
781
772
  reply_to=input.id,
782
- message="Step Limit Error",
783
773
  time_cost=time.perf_counter() - start,
784
774
  )
785
775
  error_message = await error_message_create.save()
@@ -791,16 +781,14 @@ async def stream_agent(message: ChatMessageCreate):
791
781
  f"failed to execute agent: {str(e)}\n{error_traceback}",
792
782
  extra={"thread_id": thread_id, "agent_id": input.agent_id},
793
783
  )
794
- error_message_create = ChatMessageCreate(
795
- id=str(XID()),
784
+ error_message_create = await ChatMessageCreate.from_system_message(
785
+ SystemMessageType.AGENT_INTERNAL_ERROR,
796
786
  agent_id=input.agent_id,
797
787
  chat_id=input.chat_id,
798
788
  user_id=input.user_id,
799
789
  author_id=input.agent_id,
800
- author_type=AuthorType.SYSTEM,
801
790
  thread_type=input.author_type,
802
791
  reply_to=input.id,
803
- message="Agent Internal Error",
804
792
  time_cost=time.perf_counter() - start,
805
793
  )
806
794
  error_message = await error_message_create.save()
@@ -292,7 +292,6 @@ async def build_entrypoint_prompt(agent: Agent, context: AgentContext) -> Option
292
292
  Build entrypoint-specific prompt based on context.
293
293
 
294
294
  Supports different entrypoint types:
295
- - Twitter: Uses agent.twitter_entrypoint_prompt
296
295
  - Telegram: Uses agent.telegram_entrypoint_prompt
297
296
  - Autonomous tasks: Builds task-specific prompt with scheduling info
298
297
 
@@ -369,23 +369,6 @@ class AgentTable(Base):
369
369
  default="base-mainnet",
370
370
  comment="Network identifier for CDP integration",
371
371
  )
372
- # if twitter_enabled, the twitter_entrypoint will be enabled, twitter_config will be checked
373
- twitter_entrypoint_enabled = Column(
374
- Boolean,
375
- nullable=True,
376
- default=False,
377
- comment="Dangerous, reply all mentions from x.com",
378
- )
379
- twitter_entrypoint_prompt = Column(
380
- String,
381
- nullable=True,
382
- comment="Extra prompt for twitter entrypoint",
383
- )
384
- twitter_config = Column(
385
- JSON().with_variant(JSONB(), "postgresql"),
386
- nullable=True,
387
- comment="You must use your own key for twitter entrypoint, it is separated from twitter skills",
388
- )
389
372
  # if telegram_entrypoint_enabled, the telegram_entrypoint_enabled will be enabled, telegram_config will be checked
390
373
  telegram_entrypoint_enabled = Column(
391
374
  Boolean,
@@ -15,13 +15,13 @@
15
15
  "order": 2
16
16
  },
17
17
  {
18
- "id": "examples",
19
- "title": "Quick Actions",
18
+ "id": "onchain",
19
+ "title": "On-Chain",
20
20
  "order": 3
21
21
  },
22
22
  {
23
- "id": "onchain",
24
- "title": "On-Chain",
23
+ "id": "examples",
24
+ "title": "Quick Actions",
25
25
  "order": 4
26
26
  },
27
27
  {
@@ -73,7 +73,7 @@
73
73
  "description": "Ticker symbol of the agent",
74
74
  "maxLength": 10,
75
75
  "minLength": 1,
76
- "x-group": "basic",
76
+ "x-group": "internal",
77
77
  "x-placeholder": "Enter agent ticker"
78
78
  },
79
79
  "token_address": {
@@ -401,53 +401,6 @@
401
401
  }
402
402
  }
403
403
  },
404
- "twitter_entrypoint_enabled": {
405
- "title": "Enable X Communication",
406
- "type": "boolean",
407
- "description": "Agent replies automatically to all X mentions (use cautiously)",
408
- "default": false,
409
- "x-group": "deprecated"
410
- },
411
- "twitter_entrypoint_prompt": {
412
- "title": "X Entry Prompt",
413
- "type": "string",
414
- "description": "Extra prompt for X entrypoint",
415
- "maxLength": 10000,
416
- "x-str-type": "prompt",
417
- "x-group": "deprecated"
418
- },
419
- "twitter_config": {
420
- "title": "Enter your X API key",
421
- "type": "object",
422
- "description": "You must use your own key for X entrypoint, it is separated from X skills",
423
- "x-group": "deprecated",
424
- "properties": {
425
- "consumer_key": {
426
- "type": "string",
427
- "title": "X API consumer key",
428
- "description": "X API consumer key",
429
- "maxLength": 100
430
- },
431
- "consumer_secret": {
432
- "type": "string",
433
- "title": "X API consumer secret",
434
- "description": "X API consumer secret",
435
- "maxLength": 100
436
- },
437
- "access_token": {
438
- "type": "string",
439
- "title": "X API access token",
440
- "description": "X API access token",
441
- "maxLength": 100
442
- },
443
- "access_token_secret": {
444
- "type": "string",
445
- "title": "X API access token secret",
446
- "description": "X API access token secret",
447
- "maxLength": 100
448
- }
449
- }
450
- },
451
404
  "skills": {
452
405
  "title": "Skills",
453
406
  "type": "object",
@@ -713,18 +666,22 @@
713
666
  "wallet_provider": {
714
667
  "title": "Wallet Provider",
715
668
  "type": "string",
716
- "description": "Provider of the agent's wallet",
669
+ "description": "Provider of the agent's wallet, choose cdp if you want the agent to have it's own wallet.",
717
670
  "enum": [
718
671
  "cdp",
719
672
  "readonly"
720
673
  ],
674
+ "x-enum-title": [
675
+ "Coinbase Server Wallet V2",
676
+ "Readonly Wallet"
677
+ ],
721
678
  "default": "cdp",
722
679
  "x-group": "onchain"
723
680
  },
724
681
  "network_id": {
725
- "title": "Network ID",
682
+ "title": "Default Network",
726
683
  "type": "string",
727
- "description": "Network identifier",
684
+ "description": "Default Network",
728
685
  "default": "base-mainnet",
729
686
  "enum": [
730
687
  "ethereum-mainnet",
@@ -739,10 +696,9 @@
739
696
  "optimism-sepolia",
740
697
  "solana"
741
698
  ],
742
- "x-group": "internal"
699
+ "x-group": "onchain"
743
700
  }
744
701
  },
745
- "additionalProperties": false,
746
702
  "if": {
747
703
  "properties": {
748
704
  "wallet_provider": {
@@ -763,5 +719,6 @@
763
719
  "required": [
764
720
  "readonly_wallet_address"
765
721
  ]
766
- }
722
+ },
723
+ "additionalProperties": true
767
724
  }
@@ -1,16 +1,42 @@
1
- import json
1
+ import time
2
2
  from datetime import datetime, timezone
3
3
  from decimal import ROUND_HALF_UP, Decimal
4
- from typing import Annotated, Any, List
4
+ from enum import Enum
5
+ from typing import Annotated, Any, Dict, List
5
6
 
6
7
  from intentkit.models.base import Base
7
8
  from intentkit.models.db import get_session
8
- from intentkit.models.redis import get_redis
9
9
  from pydantic import BaseModel, ConfigDict, Field, field_validator
10
10
  from sqlalchemy import Column, DateTime, String, func, select
11
11
  from sqlalchemy.dialects.postgresql import JSON, JSONB
12
12
 
13
13
 
14
+ class SystemMessageType(str, Enum):
15
+ """Type of system message."""
16
+
17
+ SERVICE_FEE_ERROR = "service_fee_error"
18
+ DAILY_USAGE_LIMIT_EXCEEDED = "daily_usage_limit_exceeded"
19
+ INSUFFICIENT_BALANCE = "insufficient_balance"
20
+ AGENT_INTERNAL_ERROR = "agent_internal_error"
21
+ STEP_LIMIT_EXCEEDED = "step_limit_exceeded"
22
+ SKILL_INTERRUPTED = "skill_interrupted"
23
+
24
+
25
+ # Default system messages
26
+ DEFAULT_SYSTEM_MESSAGES = {
27
+ "service_fee_error": "Please lower this Agent's service fee to meet the allowed maximum.",
28
+ "daily_usage_limit_exceeded": "This Agent has reached its free daily usage limit. Add credits to continue, or wait until tomorrow.",
29
+ "insufficient_balance": "You don't have enough credits to complete this action.",
30
+ "agent_internal_error": "Something went wrong. Please try again.",
31
+ "step_limit_exceeded": "This Agent tried to process too many steps. Try again with @super for higher step limit.",
32
+ "skill_interrupted": "You were interrupted after executing a skill. Please retry with caution to avoid repeating the skill.",
33
+ }
34
+
35
+ # In-memory cache for app settings
36
+ _cache: Dict[str, Dict[str, Any]] = {}
37
+ _cache_ttl = 180 # 3 minutes in seconds
38
+
39
+
14
40
  class AppSettingTable(Base):
15
41
  """App settings database table model."""
16
42
 
@@ -133,31 +159,23 @@ class AppSetting(BaseModel):
133
159
 
134
160
  @staticmethod
135
161
  async def payment() -> PaymentSettings:
136
- """Get payment settings from the database with Redis caching.
162
+ """Get payment settings from the database with in-memory caching.
137
163
 
138
- The settings are cached in Redis for 3 minutes.
164
+ The settings are cached in memory for 3 minutes.
139
165
 
140
166
  Returns:
141
167
  PaymentSettings: Payment settings
142
168
  """
143
- # Redis cache key for payment settings
144
- cache_key = "intentkit:app:settings:payment"
145
- cache_ttl = 180 # 3 minutes in seconds
146
-
147
- # Try to get from Redis cache first
148
- redis = get_redis()
149
- cached_data = await redis.get(cache_key)
150
-
151
- if cached_data:
152
- # If found in cache, deserialize and return
153
- try:
154
- payment_data = json.loads(cached_data)
155
- return PaymentSettings(**payment_data)
156
- except (json.JSONDecodeError, TypeError):
157
- # If cache is corrupted, invalidate it
158
- await redis.delete(cache_key)
159
-
160
- # If not in cache or cache is invalid, get from database
169
+ cache_key = "payment"
170
+ current_time = time.time()
171
+
172
+ # Check if we have cached data and it's still valid
173
+ if cache_key in _cache:
174
+ cache_entry = _cache[cache_key]
175
+ if current_time - cache_entry["timestamp"] < _cache_ttl:
176
+ return PaymentSettings(**cache_entry["data"])
177
+
178
+ # If not in cache or cache is expired, get from database
161
179
  async with get_session() as session:
162
180
  # Query the database for the payment settings
163
181
  stmt = select(AppSettingTable).where(AppSettingTable.key == "payment")
@@ -170,11 +188,56 @@ class AppSetting(BaseModel):
170
188
  # Convert the JSON value to PaymentSettings
171
189
  payment_settings = PaymentSettings(**setting.value)
172
190
 
173
- # Cache the settings in Redis
174
- await redis.set(
175
- cache_key,
176
- json.dumps(payment_settings.model_dump(mode="json")),
177
- ex=cache_ttl,
178
- )
191
+ # Cache the settings in memory
192
+ _cache[cache_key] = {
193
+ "data": payment_settings.model_dump(mode="json"),
194
+ "timestamp": current_time,
195
+ }
179
196
 
180
197
  return payment_settings
198
+
199
+ @staticmethod
200
+ async def error_message(message_type: SystemMessageType) -> str:
201
+ """Get error message from the database with in-memory caching, fallback to default.
202
+
203
+ The settings are cached in memory for 3 minutes.
204
+
205
+ Args:
206
+ message_type: The SystemMessageType enum
207
+
208
+ Returns:
209
+ str: Error message from config or default message
210
+ """
211
+ cache_key = "errors"
212
+ current_time = time.time()
213
+ message_key = message_type.value
214
+
215
+ # Check if we have cached data and it's still valid
216
+ if cache_key in _cache:
217
+ cache_entry = _cache[cache_key]
218
+ if current_time - cache_entry["timestamp"] < _cache_ttl:
219
+ errors_data = cache_entry["data"]
220
+ if errors_data and message_key in errors_data:
221
+ return errors_data[message_key]
222
+ # Return default message if not found in config
223
+ return DEFAULT_SYSTEM_MESSAGES[message_key]
224
+
225
+ # If not in cache or cache is expired, get from database
226
+ async with get_session() as session:
227
+ # Query the database for the errors settings
228
+ stmt = select(AppSettingTable).where(AppSettingTable.key == "errors")
229
+ setting = await session.scalar(stmt)
230
+
231
+ # If settings don't exist, cache None
232
+ errors_data = setting.value if setting else None
233
+
234
+ # Cache the settings in memory
235
+ _cache[cache_key] = {
236
+ "data": errors_data,
237
+ "timestamp": current_time,
238
+ }
239
+
240
+ # Return configured message if exists, otherwise return default
241
+ if errors_data and message_key in errors_data:
242
+ return errors_data[message_key]
243
+ return DEFAULT_SYSTEM_MESSAGES[message_key]
@@ -4,6 +4,7 @@ from enum import Enum
4
4
  from typing import Annotated, List, NotRequired, Optional, TypedDict
5
5
 
6
6
  from epyxid import XID
7
+ from intentkit.models.app_setting import AppSetting, SystemMessageType
7
8
  from intentkit.models.base import Base
8
9
  from intentkit.models.db import get_session
9
10
  from pydantic import BaseModel, ConfigDict, Field
@@ -276,6 +277,10 @@ class ChatMessageTable(Base):
276
277
  Boolean,
277
278
  nullable=True,
278
279
  )
280
+ error_type = Column(
281
+ String,
282
+ nullable=True,
283
+ )
279
284
  created_at = Column(
280
285
  DateTime(timezone=True),
281
286
  nullable=False,
@@ -361,6 +366,10 @@ class ChatMessageCreate(BaseModel):
361
366
  Optional[bool],
362
367
  Field(None, description="Optional flag to enable super mode"),
363
368
  ]
369
+ error_type: Annotated[
370
+ Optional[SystemMessageType],
371
+ Field(None, description="Optional error type, used when author_type is system"),
372
+ ]
364
373
 
365
374
  async def save_in_session(self, db: AsyncSession) -> "ChatMessage":
366
375
  """Save the chat message to the database.
@@ -385,6 +394,41 @@ class ChatMessageCreate(BaseModel):
385
394
  await db.commit()
386
395
  return resp
387
396
 
397
+ @classmethod
398
+ async def from_system_message(
399
+ cls,
400
+ message_type: SystemMessageType,
401
+ agent_id: str,
402
+ chat_id: str,
403
+ user_id: str,
404
+ author_id: str,
405
+ thread_type: AuthorType,
406
+ reply_to: str,
407
+ time_cost: float = 0.0,
408
+ ) -> "ChatMessageCreate":
409
+ """Create a system message.
410
+
411
+ Returns:
412
+ ChatMessageCreate: The created system message
413
+ """
414
+
415
+ # Get error message (configured or default)
416
+ message = await AppSetting.error_message(message_type)
417
+
418
+ return cls(
419
+ id=str(XID()),
420
+ agent_id=agent_id,
421
+ chat_id=chat_id,
422
+ user_id=user_id,
423
+ author_id=author_id,
424
+ author_type=AuthorType.SYSTEM,
425
+ thread_type=thread_type,
426
+ reply_to=reply_to,
427
+ message=message,
428
+ time_cost=time_cost,
429
+ error_type=message_type,
430
+ )
431
+
388
432
 
389
433
  class ChatMessage(ChatMessageCreate):
390
434
  """Chat message model with all fields including server-generated ones."""
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.6.15"
3
+ version = "0.6.17"
4
4
  description = "Intent-based AI Agent Platform - Core Package"
5
5
  authors = [{ name = "hyacinthus", email = "hyacinthus@gmail.com" }]
6
6
  requires-python = ">=3.12"
@@ -13,11 +13,11 @@ from pydantic import (
13
13
  from pydantic.v1 import ValidationError as ValidationErrorV1
14
14
  from redis.exceptions import RedisError
15
15
 
16
- from intentkit.abstracts.exception import RateLimitExceeded
17
16
  from intentkit.abstracts.graph import AgentContext
18
17
  from intentkit.abstracts.skill import SkillStoreABC
19
18
  from intentkit.models.agent import Agent
20
19
  from intentkit.models.redis import get_redis
20
+ from intentkit.utils.error import RateLimitExceeded
21
21
 
22
22
  SkillState = Literal["disabled", "public", "private"]
23
23
  SkillOwnerState = Literal["disabled", "private"]
@@ -7,9 +7,9 @@ from typing import Any, Dict, List, Type
7
7
  import httpx
8
8
  from pydantic import BaseModel, Field
9
9
 
10
- from intentkit.abstracts.exception import RateLimitExceeded
11
10
  from intentkit.abstracts.skill import SkillStoreABC
12
11
  from intentkit.skills.base import IntentKitSkill
12
+ from intentkit.utils.error import RateLimitExceeded
13
13
 
14
14
  CRYPTO_COMPARE_BASE_URL = "https://min-api.cryptocompare.com"
15
15
 
@@ -4,9 +4,9 @@ from typing import Type
4
4
  from langchain.tools.base import ToolException
5
5
  from pydantic import BaseModel, Field
6
6
 
7
- from intentkit.abstracts.exception import RateLimitExceeded
8
7
  from intentkit.abstracts.skill import SkillStoreABC
9
8
  from intentkit.skills.base import IntentKitSkill
9
+ from intentkit.utils.error import RateLimitExceeded
10
10
 
11
11
 
12
12
  class TwitterBaseTool(IntentKitSkill):
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import Sequence
2
+ from typing import Optional, Sequence
3
3
 
4
4
  from fastapi.exceptions import RequestValidationError
5
5
  from fastapi.utils import is_body_allowed_for_status_code
@@ -11,6 +11,16 @@ from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY
11
11
 
12
12
  logger = logging.getLogger(__name__)
13
13
 
14
+ # error messages in agent system message response
15
+
16
+
17
+ class RateLimitExceeded(Exception):
18
+ """Rate limit exceeded"""
19
+
20
+ def __init__(self, message: Optional[str] = "Rate limit exceeded"):
21
+ self.message = message
22
+ super().__init__(self.message)
23
+
14
24
 
15
25
  class IntentKitAPIError(Exception):
16
26
  def __init__(self, status_code: int, key: str, message: str):
@@ -1,9 +0,0 @@
1
- from typing import Optional
2
-
3
-
4
- class RateLimitExceeded(Exception):
5
- """Rate limit exceeded"""
6
-
7
- def __init__(self, message: Optional[str] = "Rate limit exceeded"):
8
- self.message = message
9
- super().__init__(self.message)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes