intentkit 0.6.20.dev1__tar.gz → 0.6.21__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 (421) hide show
  1. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/PKG-INFO +5 -5
  2. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/__init__.py +1 -1
  3. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/clients/__init__.py +2 -0
  4. intentkit-0.6.21/clients/web3.py +32 -0
  5. intentkit-0.6.21/core/chat.py +51 -0
  6. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/agent_schema.json +23 -25
  7. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/pyproject.toml +5 -5
  8. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/base.py +10 -33
  9. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/base.py +3 -2
  10. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/base.py +8 -6
  11. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/delete_data.py +1 -2
  12. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/fetch_data.py +1 -2
  13. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/insert_data.py +1 -2
  14. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/invoke_function.py +1 -2
  15. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/update_data.py +1 -2
  16. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/upsert_data.py +1 -2
  17. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/xmtp/transfer.py +60 -6
  18. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/.gitignore +0 -0
  19. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/LICENSE +0 -0
  20. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/MANIFEST.in +0 -0
  21. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/README.md +0 -0
  22. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/abstracts/__init__.py +0 -0
  23. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/abstracts/agent.py +0 -0
  24. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/abstracts/api.py +0 -0
  25. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/abstracts/engine.py +0 -0
  26. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/abstracts/graph.py +0 -0
  27. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/abstracts/skill.py +0 -0
  28. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/abstracts/twitter.py +0 -0
  29. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/clients/cdp.py +0 -0
  30. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/clients/twitter.py +0 -0
  31. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/config/__init__.py +0 -0
  32. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/config/config.py +0 -0
  33. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/__init__.py +0 -0
  34. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/agent.py +0 -0
  35. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/api.py +0 -0
  36. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/client.py +0 -0
  37. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/credit.py +0 -0
  38. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/engine.py +0 -0
  39. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/node.py +0 -0
  40. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/prompt.py +0 -0
  41. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/core/skill.py +0 -0
  42. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/agent.py +0 -0
  43. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/agent_data.py +0 -0
  44. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/app_setting.py +0 -0
  45. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/base.py +0 -0
  46. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/chat.py +0 -0
  47. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/conversation.py +0 -0
  48. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/credit.py +0 -0
  49. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/db.py +0 -0
  50. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/db_mig.py +0 -0
  51. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/generator.py +0 -0
  52. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/llm.py +0 -0
  53. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/redis.py +0 -0
  54. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/skill.py +0 -0
  55. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/models/user.py +0 -0
  56. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/__init__.py +0 -0
  57. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/acolyt/__init__.py +0 -0
  58. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/acolyt/acolyt.jpg +0 -0
  59. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/acolyt/ask.py +0 -0
  60. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/acolyt/base.py +0 -0
  61. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/acolyt/schema.json +0 -0
  62. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/aixbt/README.md +0 -0
  63. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/aixbt/__init__.py +0 -0
  64. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/aixbt/aixbt.jpg +0 -0
  65. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/aixbt/base.py +0 -0
  66. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/aixbt/projects.py +0 -0
  67. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/aixbt/schema.json +0 -0
  68. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/allora/__init__.py +0 -0
  69. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/allora/allora.jpeg +0 -0
  70. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/allora/base.py +0 -0
  71. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/allora/price.py +0 -0
  72. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/allora/schema.json +0 -0
  73. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/carv/README.md +0 -0
  74. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/carv/__init__.py +0 -0
  75. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/carv/base.py +0 -0
  76. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/carv/carv.webp +0 -0
  77. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/carv/fetch_news.py +0 -0
  78. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/carv/onchain_query.py +0 -0
  79. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/carv/schema.json +0 -0
  80. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/carv/token_info_and_price.py +0 -0
  81. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/README.md +0 -0
  82. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/__init__.py +0 -0
  83. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/base.py +0 -0
  84. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/casino.png +0 -0
  85. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/deck_draw.py +0 -0
  86. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/deck_shuffle.py +0 -0
  87. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/dice_roll.py +0 -0
  88. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/schema.json +0 -0
  89. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/casino/utils.py +0 -0
  90. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cdp/__init__.py +0 -0
  91. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cdp/base.py +0 -0
  92. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cdp/cdp.png +0 -0
  93. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cdp/get_balance.py +0 -0
  94. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cdp/schema.json +0 -0
  95. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cdp/swap.py +0 -0
  96. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/chainlist/README.md +0 -0
  97. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/chainlist/__init__.py +0 -0
  98. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/chainlist/base.py +0 -0
  99. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/chainlist/chain_lookup.py +0 -0
  100. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/chainlist/chainlist.png +0 -0
  101. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/chainlist/schema.json +0 -0
  102. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/common/__init__.py +0 -0
  103. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/common/base.py +0 -0
  104. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/common/common.jpg +0 -0
  105. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/common/current_time.py +0 -0
  106. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/common/schema.json +0 -0
  107. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/README.md +0 -0
  108. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/__init__.py +0 -0
  109. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/base.py +0 -0
  110. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/constants.py +0 -0
  111. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/cookiefun.png +0 -0
  112. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/get_account_details.py +0 -0
  113. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/get_account_feed.py +0 -0
  114. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/get_account_smart_followers.py +0 -0
  115. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/get_sectors.py +0 -0
  116. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/schema.json +0 -0
  117. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cookiefun/search_accounts.py +0 -0
  118. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/__init__.py +0 -0
  119. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/api.py +0 -0
  120. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/base.py +0 -0
  121. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/cryptocompare.png +0 -0
  122. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/fetch_news.py +0 -0
  123. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/fetch_price.py +0 -0
  124. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  125. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  126. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/fetch_top_volume.py +0 -0
  127. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/fetch_trading_signals.py +0 -0
  128. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptocompare/schema.json +0 -0
  129. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptopanic/__init__.py +0 -0
  130. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptopanic/base.py +0 -0
  131. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptopanic/cryptopanic.png +0 -0
  132. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  133. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  134. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/cryptopanic/schema.json +0 -0
  135. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dapplooker/README.md +0 -0
  136. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dapplooker/__init__.py +0 -0
  137. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dapplooker/base.py +0 -0
  138. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dapplooker/dapplooker.jpg +0 -0
  139. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dapplooker/dapplooker_token_data.py +0 -0
  140. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dapplooker/schema.json +0 -0
  141. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/__init__.py +0 -0
  142. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/api.py +0 -0
  143. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/coins/__init__.py +0 -0
  144. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  145. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/coins/fetch_block.py +0 -0
  146. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/coins/fetch_current_prices.py +0 -0
  147. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/coins/fetch_first_price.py +0 -0
  148. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  149. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/coins/fetch_price_chart.py +0 -0
  150. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  151. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/config/__init__.py +0 -0
  152. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/config/chains.py +0 -0
  153. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/defillama.jpeg +0 -0
  154. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/fees/__init__.py +0 -0
  155. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  156. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/schema.json +0 -0
  157. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/stablecoins/__init__.py +0 -0
  158. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  159. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  160. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  161. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  162. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tests/__init__.py +0 -0
  163. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tests/api_integration.test.py +0 -0
  164. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tests/api_unit.test.py +0 -0
  165. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tvl/__init__.py +0 -0
  166. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  167. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tvl/fetch_chains.py +0 -0
  168. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  169. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tvl/fetch_protocol.py +0 -0
  170. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  171. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/tvl/fetch_protocols.py +0 -0
  172. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/volumes/__init__.py +0 -0
  173. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  174. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  175. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  176. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/yields/__init__.py +0 -0
  177. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  178. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/defillama/yields/fetch_pools.py +0 -0
  179. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dexscreener/__init__.py +0 -0
  180. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dexscreener/base.py +0 -0
  181. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dexscreener/dexscreener.png +0 -0
  182. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dexscreener/model/__init__.py +0 -0
  183. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dexscreener/model/search_token_response.py +0 -0
  184. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dexscreener/schema.json +0 -0
  185. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dexscreener/search_token.py +0 -0
  186. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dune_analytics/__init__.py +0 -0
  187. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dune_analytics/base.py +0 -0
  188. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dune_analytics/dune.png +0 -0
  189. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  190. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  191. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/dune_analytics/schema.json +0 -0
  192. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/README.md +0 -0
  193. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/__init__.py +0 -0
  194. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/base.py +0 -0
  195. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/elfa.jpg +0 -0
  196. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/mention.py +0 -0
  197. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/schema.json +0 -0
  198. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/stats.py +0 -0
  199. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/tokens.py +0 -0
  200. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/elfa/utils.py +0 -0
  201. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/README.md +0 -0
  202. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/__init__.py +0 -0
  203. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/abi/__init__.py +0 -0
  204. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/abi/approval.py +0 -0
  205. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/abi/erc20.py +0 -0
  206. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/abi/route.py +0 -0
  207. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/base.py +0 -0
  208. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/best_yield.py +0 -0
  209. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/enso.jpg +0 -0
  210. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/networks.py +0 -0
  211. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/prices.py +0 -0
  212. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/route.py +0 -0
  213. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/schema.json +0 -0
  214. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/tokens.py +0 -0
  215. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/enso/wallet.py +0 -0
  216. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/README.md +0 -0
  217. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/__init__.py +0 -0
  218. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/base.py +0 -0
  219. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/clear.py +0 -0
  220. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/crawl.py +0 -0
  221. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/firecrawl.png +0 -0
  222. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/query.py +0 -0
  223. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/schema.json +0 -0
  224. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/scrape.py +0 -0
  225. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/firecrawl/utils.py +0 -0
  226. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/github/README.md +0 -0
  227. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/github/__init__.py +0 -0
  228. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/github/base.py +0 -0
  229. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/github/github.jpg +0 -0
  230. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/github/github_search.py +0 -0
  231. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/github/schema.json +0 -0
  232. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/__init__.py +0 -0
  233. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/base.py +0 -0
  234. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/heurist.png +0 -0
  235. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/image_generation_animagine_xl.py +0 -0
  236. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  237. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/image_generation_arthemy_real.py +0 -0
  238. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/image_generation_braindance.py +0 -0
  239. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  240. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  241. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/image_generation_sdxl.py +0 -0
  242. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/heurist/schema.json +0 -0
  243. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/http/README.md +0 -0
  244. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/http/__init__.py +0 -0
  245. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/http/base.py +0 -0
  246. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/http/get.py +0 -0
  247. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/http/http.svg +0 -0
  248. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/http/post.py +0 -0
  249. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/http/put.py +0 -0
  250. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/http/schema.json +0 -0
  251. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/lifi/README.md +0 -0
  252. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/lifi/__init__.py +0 -0
  253. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/lifi/base.py +0 -0
  254. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/lifi/lifi.png +0 -0
  255. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/lifi/schema.json +0 -0
  256. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/lifi/token_execute.py +0 -0
  257. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/lifi/token_quote.py +0 -0
  258. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/lifi/utils.py +0 -0
  259. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/README.md +0 -0
  260. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/__init__.py +0 -0
  261. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/api.py +0 -0
  262. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/base.py +0 -0
  263. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/fetch_chain_portfolio.py +0 -0
  264. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/fetch_nft_portfolio.py +0 -0
  265. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/fetch_solana_portfolio.py +0 -0
  266. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  267. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/moralis.png +0 -0
  268. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/schema.json +0 -0
  269. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/tests/__init__.py +0 -0
  270. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/moralis/tests/test_wallet.py +0 -0
  271. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/nation/__init__.py +0 -0
  272. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/nation/base.py +0 -0
  273. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/nation/nation.png +0 -0
  274. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/nation/nft_check.py +0 -0
  275. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/nation/schema.json +0 -0
  276. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/openai/__init__.py +0 -0
  277. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/openai/base.py +0 -0
  278. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/openai/dalle_image_generation.py +0 -0
  279. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/openai/gpt_image_generation.py +0 -0
  280. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/openai/gpt_image_to_image.py +0 -0
  281. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/openai/image_to_text.py +0 -0
  282. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/openai/openai.png +0 -0
  283. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/openai/schema.json +0 -0
  284. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/README.md +0 -0
  285. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/__init__.py +0 -0
  286. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/base.py +0 -0
  287. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/constants.py +0 -0
  288. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/moralis.png +0 -0
  289. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/schema.json +0 -0
  290. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/token_balances.py +0 -0
  291. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_approvals.py +0 -0
  292. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_defi_positions.py +0 -0
  293. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_history.py +0 -0
  294. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_net_worth.py +0 -0
  295. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_nfts.py +0 -0
  296. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_profitability.py +0 -0
  297. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_profitability_summary.py +0 -0
  298. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_stats.py +0 -0
  299. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/portfolio/wallet_swaps.py +0 -0
  300. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/skills.toml +0 -0
  301. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/slack/__init__.py +0 -0
  302. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/slack/base.py +0 -0
  303. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/slack/get_channel.py +0 -0
  304. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/slack/get_message.py +0 -0
  305. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/slack/schedule_message.py +0 -0
  306. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/slack/schema.json +0 -0
  307. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/slack/send_message.py +0 -0
  308. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/slack/slack.jpg +0 -0
  309. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/__init__.py +0 -0
  310. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/schema.json +0 -0
  311. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/supabase/supabase.svg +0 -0
  312. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/__init__.py +0 -0
  313. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/add_autonomous_task.py +0 -0
  314. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/base.py +0 -0
  315. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/delete_autonomous_task.py +0 -0
  316. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/edit_autonomous_task.py +0 -0
  317. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/list_autonomous_tasks.py +0 -0
  318. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/read_agent_api_key.py +0 -0
  319. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/regenerate_agent_api_key.py +0 -0
  320. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/schema.json +0 -0
  321. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/system/system.svg +0 -0
  322. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/tavily/README.md +0 -0
  323. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/tavily/__init__.py +0 -0
  324. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/tavily/base.py +0 -0
  325. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/tavily/schema.json +0 -0
  326. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/tavily/tavily.jpg +0 -0
  327. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/tavily/tavily_extract.py +0 -0
  328. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/tavily/tavily_search.py +0 -0
  329. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/README.md +0 -0
  330. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/__init__.py +0 -0
  331. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/base.py +0 -0
  332. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/constants.py +0 -0
  333. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/erc20_transfers.py +0 -0
  334. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/moralis.png +0 -0
  335. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/schema.json +0 -0
  336. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/token_analytics.py +0 -0
  337. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/token_price.py +0 -0
  338. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/token/token_search.py +0 -0
  339. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/__init__.py +0 -0
  340. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/base.py +0 -0
  341. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/follow_user.py +0 -0
  342. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/get_mentions.py +0 -0
  343. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/get_timeline.py +0 -0
  344. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/get_user_by_username.py +0 -0
  345. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/get_user_tweets.py +0 -0
  346. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/like_tweet.py +0 -0
  347. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/post_tweet.py +0 -0
  348. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/reply_tweet.py +0 -0
  349. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/retweet.py +0 -0
  350. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/schema.json +0 -0
  351. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/search_tweets.py +0 -0
  352. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/twitter/twitter.png +0 -0
  353. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/unrealspeech/__init__.py +0 -0
  354. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/unrealspeech/base.py +0 -0
  355. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/unrealspeech/schema.json +0 -0
  356. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/unrealspeech/text_to_speech.py +0 -0
  357. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/unrealspeech/unrealspeech.jpg +0 -0
  358. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_audio/__init__.py +0 -0
  359. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_audio/base.py +0 -0
  360. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_audio/input.py +0 -0
  361. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_audio/schema.json +0 -0
  362. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_audio/venice_audio.py +0 -0
  363. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_audio/venice_logo.jpg +0 -0
  364. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/README.md +0 -0
  365. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/__init__.py +0 -0
  366. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/api.py +0 -0
  367. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/base.py +0 -0
  368. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/config.py +0 -0
  369. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_enhance/README.md +0 -0
  370. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_enhance/__init__.py +0 -0
  371. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  372. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  373. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  374. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/README.md +0 -0
  375. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/__init__.py +0 -0
  376. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  377. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  378. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  379. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  380. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  381. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  382. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  383. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  384. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  385. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_upscale/README.md +0 -0
  386. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_upscale/__init__.py +0 -0
  387. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  388. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  389. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  390. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_vision/README.md +0 -0
  391. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_vision/__init__.py +0 -0
  392. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_vision/image_vision.py +0 -0
  393. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  394. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  395. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/schema.json +0 -0
  396. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/utils.py +0 -0
  397. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/venice_image/venice_image.jpg +0 -0
  398. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/README.md +0 -0
  399. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/__init__.py +0 -0
  400. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/base.py +0 -0
  401. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/document_indexer.py +0 -0
  402. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/langchain.png +0 -0
  403. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/schema.json +0 -0
  404. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/scrape_and_index.py +0 -0
  405. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/utils.py +0 -0
  406. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/web_scraper/website_indexer.py +0 -0
  407. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/xmtp/README.md +0 -0
  408. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/xmtp/__init__.py +0 -0
  409. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/xmtp/base.py +0 -0
  410. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/xmtp/price.py +0 -0
  411. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/xmtp/schema.json +0 -0
  412. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/xmtp/swap.py +0 -0
  413. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/skills/xmtp/xmtp.png +0 -0
  414. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/utils/__init__.py +0 -0
  415. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/utils/chain.py +0 -0
  416. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/utils/error.py +0 -0
  417. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/utils/logging.py +0 -0
  418. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/utils/random.py +0 -0
  419. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/utils/s3.py +0 -0
  420. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/utils/slack_alert.py +0 -0
  421. {intentkit-0.6.20.dev1 → intentkit-0.6.21}/utils/tx.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.6.20.dev1
3
+ Version: 0.6.21
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
- Project-URL: Homepage, https://github.com/crestal-network/intentkit
6
- Project-URL: Repository, https://github.com/crestal-network/intentkit
7
- Project-URL: Documentation, https://github.com/crestal-network/intentkit/tree/main/docs
8
- Project-URL: Bug Tracker, https://github.com/crestal-network/intentkit/issues
5
+ Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
6
+ Project-URL: Repository, https://github.com/crestalnetwork/intentkit
7
+ Project-URL: Documentation, https://github.com/crestalnetwork/intentkit/tree/main/docs
8
+ Project-URL: Bug Tracker, https://github.com/crestalnetwork/intentkit/issues
9
9
  Author-email: hyacinthus <hyacinthus@gmail.com>
10
10
  License: MIT License
11
11
 
@@ -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.20-dev.1"
6
+ __version__ = "0.6.21"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -4,6 +4,7 @@ from intentkit.clients.twitter import (
4
4
  TwitterClientConfig,
5
5
  get_twitter_client,
6
6
  )
7
+ from intentkit.clients.web3 import get_web3_client
7
8
 
8
9
  __all__ = [
9
10
  "TwitterClient",
@@ -11,4 +12,5 @@ __all__ = [
11
12
  "get_twitter_client",
12
13
  "CdpClient",
13
14
  "get_cdp_client",
15
+ "get_web3_client",
14
16
  ]
@@ -0,0 +1,32 @@
1
+ from typing import Dict
2
+
3
+ from web3 import Web3
4
+
5
+ from intentkit.abstracts.skill import SkillStoreABC
6
+ from intentkit.utils.chain import ChainProvider
7
+
8
+ # Global cache for Web3 clients by network_id
9
+ _web3_client_cache: Dict[str, Web3] = {}
10
+
11
+
12
+ def get_web3_client(network_id: str, skill_store: SkillStoreABC) -> Web3:
13
+ """Get a Web3 client for the specified network.
14
+
15
+ Args:
16
+ network_id: The network ID to get the Web3 client for
17
+ skill_store: The skill store to get system configuration from
18
+
19
+ Returns:
20
+ Web3: A Web3 client instance for the specified network
21
+ """
22
+ # Check global cache first
23
+ if network_id in _web3_client_cache:
24
+ return _web3_client_cache[network_id]
25
+
26
+ # Create new Web3 client and cache it
27
+ chain_provider: ChainProvider = skill_store.get_system_config("chain_provider")
28
+ chain = chain_provider.get_chain_config(network_id)
29
+ web3_client = Web3(Web3.HTTPProvider(chain.rpc_url))
30
+ _web3_client_cache[network_id] = web3_client
31
+
32
+ return web3_client
@@ -0,0 +1,51 @@
1
+ """Chat memory management utilities.
2
+
3
+ This module provides functions for managing chat thread memory,
4
+ including clearing thread history using LangGraph's checkpointer.
5
+ """
6
+
7
+ import logging
8
+
9
+ from intentkit.models.db import get_langgraph_checkpointer
10
+ from intentkit.utils.error import IntentKitAPIError
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ async def clear_thread_memory(agent_id: str, chat_id: str) -> bool:
16
+ """Clear all memory content for a specific thread.
17
+
18
+ This function uses LangGraph's official checkpointer.delete_thread() method
19
+ to permanently remove all stored checkpoints and conversation history
20
+ associated with the specified thread.
21
+
22
+ Args:
23
+ agent_id (str): The agent identifier
24
+ chat_id (str): The chat identifier
25
+
26
+ Returns:
27
+ bool: True if the thread memory was successfully cleared
28
+
29
+ Raises:
30
+ IntentKitAPIError: If there's an error clearing the thread memory
31
+ """
32
+ try:
33
+ # Construct thread_id by combining agent_id and chat_id
34
+ thread_id = f"{agent_id}_{chat_id}"
35
+
36
+ # Get the LangGraph checkpointer instance
37
+ checkpointer = get_langgraph_checkpointer()
38
+
39
+ # Use the official LangGraph method to delete all thread content
40
+ await checkpointer.delete_thread(thread_id)
41
+
42
+ logger.info(f"Successfully cleared thread memory for thread_id: {thread_id}")
43
+ return True
44
+
45
+ except Exception as e:
46
+ logger.error(
47
+ f"Failed to clear thread memory for agent_id: {agent_id}, chat_id: {chat_id}. Error: {str(e)}"
48
+ )
49
+ raise IntentKitAPIError(
50
+ 500, "ThreadMemoryClearError", f"Failed to clear thread memory: {str(e)}"
51
+ )
@@ -67,31 +67,6 @@
67
67
  "x-group": "basic",
68
68
  "x-placeholder": "Enter agent name"
69
69
  },
70
- "ticker": {
71
- "title": "Ticker",
72
- "type": "string",
73
- "description": "Ticker symbol of the agent",
74
- "maxLength": 10,
75
- "minLength": 1,
76
- "x-group": "internal",
77
- "x-placeholder": "Enter agent ticker"
78
- },
79
- "token_address": {
80
- "title": "Token Address",
81
- "type": "string",
82
- "description": "Token address of the agent",
83
- "maxLength": 42,
84
- "readOnly": true,
85
- "x-group": "internal"
86
- },
87
- "token_pool": {
88
- "title": "Token Pool",
89
- "type": "string",
90
- "description": "Pool of the agent token",
91
- "maxLength": 42,
92
- "readOnly": true,
93
- "x-group": "internal"
94
- },
95
70
  "mode": {
96
71
  "title": "Usage Type",
97
72
  "type": "string",
@@ -700,6 +675,29 @@
700
675
  "optimism-sepolia"
701
676
  ],
702
677
  "x-group": "onchain"
678
+ },
679
+ "ticker": {
680
+ "title": "Ticker",
681
+ "type": "string",
682
+ "description": "Ticker symbol of the agent",
683
+ "maxLength": 10,
684
+ "minLength": 1,
685
+ "x-group": "onchain",
686
+ "x-placeholder": "Enter agent ticker"
687
+ },
688
+ "token_address": {
689
+ "title": "Token Address",
690
+ "type": "string",
691
+ "description": "Token address of the agent, if it already has one",
692
+ "maxLength": 42,
693
+ "x-group": "onchain"
694
+ },
695
+ "token_pool": {
696
+ "title": "Token Pool",
697
+ "type": "string",
698
+ "description": "Pool of the agent token, if it has one",
699
+ "maxLength": 42,
700
+ "x-group": "onchain"
703
701
  }
704
702
  },
705
703
  "if": {
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.6.20-dev.1"
3
+ version = "0.6.21"
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"
@@ -71,10 +71,10 @@ dependencies = [
71
71
  ]
72
72
 
73
73
  [project.urls]
74
- Homepage = "https://github.com/crestal-network/intentkit"
75
- Repository = "https://github.com/crestal-network/intentkit"
76
- Documentation = "https://github.com/crestal-network/intentkit/tree/main/docs"
77
- "Bug Tracker" = "https://github.com/crestal-network/intentkit/issues"
74
+ Homepage = "https://github.com/crestalnetwork/intentkit"
75
+ Repository = "https://github.com/crestalnetwork/intentkit"
76
+ Documentation = "https://github.com/crestalnetwork/intentkit/tree/main/docs"
77
+ "Bug Tracker" = "https://github.com/crestalnetwork/intentkit/issues"
78
78
 
79
79
  [dependency-groups]
80
80
  dev = [
@@ -1,4 +1,3 @@
1
- import asyncio
2
1
  import logging
3
2
  from typing import Any, Callable, Dict, Literal, NotRequired, Optional, TypedDict, Union
4
3
 
@@ -6,15 +5,15 @@ from langchain_core.tools import BaseTool
6
5
  from langchain_core.tools.base import ToolException
7
6
  from langgraph.runtime import get_runtime
8
7
  from pydantic import (
9
- BaseModel,
10
8
  ValidationError,
11
9
  )
12
10
  from pydantic.v1 import ValidationError as ValidationErrorV1
13
11
  from redis.exceptions import RedisError
12
+ from web3 import Web3
14
13
 
15
14
  from intentkit.abstracts.graph import AgentContext
16
15
  from intentkit.abstracts.skill import SkillStoreABC
17
- from intentkit.models.agent import Agent
16
+ from intentkit.clients.web3 import get_web3_client
18
17
  from intentkit.models.redis import get_redis
19
18
  from intentkit.utils.error import RateLimitExceeded
20
19
 
@@ -32,36 +31,6 @@ class SkillConfig(TypedDict):
32
31
  __extra__: NotRequired[Dict[str, Any]]
33
32
 
34
33
 
35
- class SkillContext(BaseModel):
36
- skill_category: str
37
- agent_id: str
38
- user_id: Optional[str] = None
39
- chat_id: Optional[str] = None
40
- app_id: Optional[str] = None
41
- entrypoint: Literal["web", "twitter", "telegram", "trigger", "api"]
42
- is_private: bool
43
- payer: Optional[str] = None
44
- _agent: Optional[Agent] = None
45
-
46
- @property
47
- def agent(self) -> Agent:
48
- if self._agent is None:
49
- self._agent = asyncio.run(Agent.get(self.agent_id))
50
- return self._agent
51
-
52
- @property
53
- def config(self) -> Dict[str, Any]:
54
- agent = self.agent
55
- config = None
56
- if agent.skills:
57
- config = agent.skills.get(self.skill_category)
58
- if not config:
59
- raise ValueError(
60
- f"Skill {self.skill_category} not found in agent {self.agent_id}"
61
- )
62
- return config
63
-
64
-
65
34
  class IntentKitSkill(BaseTool):
66
35
  """Abstract base class for IntentKit skills.
67
36
  Will have predefined abilities.
@@ -185,3 +154,11 @@ class IntentKitSkill(BaseTool):
185
154
  if runtime.context is None or not isinstance(runtime.context, AgentContext):
186
155
  raise ValueError("No AgentContext found")
187
156
  return runtime.context
157
+
158
+ def web3_client(self) -> Web3:
159
+ """Get a Web3 client for the skill."""
160
+ context = self.get_context()
161
+ agent = context.agent
162
+ network_id = agent.network_id
163
+
164
+ return get_web3_client(network_id, self.skill_store)
@@ -5,8 +5,9 @@ from typing import Type
5
5
 
6
6
  from pydantic import BaseModel, Field
7
7
 
8
+ from intentkit.abstracts.graph import AgentContext
8
9
  from intentkit.abstracts.skill import SkillStoreABC
9
- from intentkit.skills.base import IntentKitSkill, SkillContext
10
+ from intentkit.skills.base import IntentKitSkill
10
11
  from intentkit.skills.defillama.config.chains import (
11
12
  get_chain_from_alias,
12
13
  )
@@ -39,7 +40,7 @@ class DefiLlamaBaseTool(IntentKitSkill):
39
40
  return "defillama"
40
41
 
41
42
  async def check_rate_limit(
42
- self, context: SkillContext, max_requests: int = 30, interval: int = 5
43
+ self, context: AgentContext, max_requests: int = 30, interval: int = 5
43
44
  ) -> tuple[bool, str | None]:
44
45
  """Check if the rate limit has been exceeded.
45
46
 
@@ -3,8 +3,9 @@ from typing import Type
3
3
  from langchain_core.tools import ToolException
4
4
  from pydantic import BaseModel, Field
5
5
 
6
+ from intentkit.abstracts.graph import AgentContext
6
7
  from intentkit.abstracts.skill import SkillStoreABC
7
- from intentkit.skills.base import IntentKitSkill, SkillContext
8
+ from intentkit.skills.base import IntentKitSkill
8
9
 
9
10
 
10
11
  class SupabaseBaseTool(IntentKitSkill):
@@ -21,9 +22,7 @@ class SupabaseBaseTool(IntentKitSkill):
21
22
  def category(self) -> str:
22
23
  return "supabase"
23
24
 
24
- def get_supabase_config(
25
- self, config: dict, context: SkillContext
26
- ) -> tuple[str, str]:
25
+ def get_supabase_config(self, context: AgentContext) -> tuple[str, str]:
27
26
  """Get Supabase URL and key from config.
28
27
 
29
28
  Args:
@@ -36,6 +35,7 @@ class SupabaseBaseTool(IntentKitSkill):
36
35
  Raises:
37
36
  ValueError: If required config is missing
38
37
  """
38
+ config = context.agent.skill_config(self.category)
39
39
  supabase_url = config.get("supabase_url")
40
40
 
41
41
  # Use public_key for public operations if available, otherwise fall back to supabase_key
@@ -52,7 +52,7 @@ class SupabaseBaseTool(IntentKitSkill):
52
52
 
53
53
  return supabase_url, supabase_key
54
54
 
55
- def validate_table_access(self, table: str, context: SkillContext) -> None:
55
+ def validate_table_access(self, table: str, context: AgentContext) -> None:
56
56
  """Validate if the table can be accessed for write operations in public mode.
57
57
 
58
58
  Args:
@@ -66,8 +66,10 @@ class SupabaseBaseTool(IntentKitSkill):
66
66
  if context.is_private:
67
67
  return
68
68
 
69
+ config = context.agent.skill_config(self.category)
70
+
69
71
  # In public mode, check if table is in allowed list
70
- public_write_tables = context.config.get("public_write_tables", "")
72
+ public_write_tables = config.get("public_write_tables", "")
71
73
  if not public_write_tables:
72
74
  return
73
75
 
@@ -45,12 +45,11 @@ class SupabaseDeleteData(SupabaseBaseTool):
45
45
  ):
46
46
  try:
47
47
  context = self.get_context()
48
- skill_config = context.agent.skill_config(self.category)
49
48
 
50
49
  # Validate table access for public mode
51
50
  self.validate_table_access(table, context)
52
51
 
53
- supabase_url, supabase_key = self.get_supabase_config(skill_config, context)
52
+ supabase_url, supabase_key = self.get_supabase_config(context)
54
53
 
55
54
  # Create Supabase client
56
55
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -60,8 +60,7 @@ class SupabaseFetchData(SupabaseBaseTool):
60
60
  ):
61
61
  try:
62
62
  context = self.get_context()
63
- skill_config = context.agent.skill_config(self.category)
64
- supabase_url, supabase_key = self.get_supabase_config(skill_config, context)
63
+ supabase_url, supabase_key = self.get_supabase_config(context)
65
64
 
66
65
  # Create Supabase client
67
66
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -45,12 +45,11 @@ class SupabaseInsertData(SupabaseBaseTool):
45
45
  ):
46
46
  try:
47
47
  context = self.get_context()
48
- skill_config = context.agent.skill_config(self.category)
49
48
 
50
49
  # Validate table access for public mode
51
50
  self.validate_table_access(table, context)
52
51
 
53
- supabase_url, supabase_key = self.get_supabase_config(skill_config, context)
52
+ supabase_url, supabase_key = self.get_supabase_config(context)
54
53
 
55
54
  # Create Supabase client
56
55
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -44,8 +44,7 @@ class SupabaseInvokeFunction(SupabaseBaseTool):
44
44
  ):
45
45
  try:
46
46
  context = self.get_context()
47
- skill_config = context.agent.skill_config(self.category)
48
- supabase_url, supabase_key = self.get_supabase_config(skill_config, context)
47
+ supabase_url, supabase_key = self.get_supabase_config(context)
49
48
 
50
49
  # Create Supabase client
51
50
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -48,12 +48,11 @@ class SupabaseUpdateData(SupabaseBaseTool):
48
48
  ):
49
49
  try:
50
50
  context = self.get_context()
51
- skill_config = context.agent.skill_config(self.category)
52
51
 
53
52
  # Validate table access for public mode
54
53
  self.validate_table_access(table, context)
55
54
 
56
- supabase_url, supabase_key = self.get_supabase_config(skill_config, context)
55
+ supabase_url, supabase_key = self.get_supabase_config(context)
57
56
 
58
57
  # Create Supabase client
59
58
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -50,12 +50,11 @@ class SupabaseUpsertData(SupabaseBaseTool):
50
50
  ):
51
51
  try:
52
52
  context = self.get_context()
53
- skill_config = context.agent.skill_config(self.category)
54
53
 
55
54
  # Validate table access for public mode
56
55
  self.validate_table_access(table, context)
57
56
 
58
- supabase_url, supabase_key = self.get_supabase_config(skill_config, context)
57
+ supabase_url, supabase_key = self.get_supabase_config(context)
59
58
 
60
59
  # Create Supabase client
61
60
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -1,6 +1,7 @@
1
1
  from typing import List, Optional, Tuple, Type
2
2
 
3
3
  from pydantic import BaseModel, Field
4
+ from web3.exceptions import ContractLogicError
4
5
 
5
6
  from intentkit.models.chat import ChatMessageAttachment, ChatMessageAttachmentType
6
7
  from intentkit.skills.xmtp.base import XmtpBaseTool
@@ -14,9 +15,6 @@ class TransferInput(BaseModel):
14
15
  amount: str = Field(
15
16
  description="The amount to transfer (as string to handle large numbers)"
16
17
  )
17
- decimals: int = Field(
18
- description="Number of decimal places for the token (18 for ETH, varies for ERC20 tokens)"
19
- )
20
18
  currency: str = Field(description="Currency symbol (e.g., 'ETH', 'USDC', 'DAI')")
21
19
  token_contract_address: Optional[str] = Field(
22
20
  default=None,
@@ -44,7 +42,6 @@ class XmtpTransfer(XmtpBaseTool):
44
42
  from_address: str,
45
43
  to_address: str,
46
44
  amount: str,
47
- decimals: int,
48
45
  currency: str,
49
46
  token_contract_address: Optional[str],
50
47
  ) -> Tuple[str, List[ChatMessageAttachment]]:
@@ -54,10 +51,8 @@ class XmtpTransfer(XmtpBaseTool):
54
51
  from_address: The sender address
55
52
  to_address: The recipient address
56
53
  amount: Amount to transfer
57
- decimals: Token decimals
58
54
  currency: Currency symbol
59
55
  token_contract_address: Token contract address (None for ETH)
60
- config: LangChain runnable config
61
56
 
62
57
  Returns:
63
58
  Tuple of (content_message, list_of_attachments)
@@ -80,6 +75,65 @@ class XmtpTransfer(XmtpBaseTool):
80
75
 
81
76
  chain_id_hex = chain_id_hex_by_network[agent.network_id]
82
77
 
78
+ # Validate token contract and get decimals
79
+ if token_contract_address:
80
+ # Validate ERC20 contract and get token info
81
+ web3 = self.web3_client()
82
+
83
+ # ERC20 ABI for symbol() and decimals() functions
84
+ erc20_abi = [
85
+ {
86
+ "constant": True,
87
+ "inputs": [],
88
+ "name": "symbol",
89
+ "outputs": [{"name": "", "type": "string"}],
90
+ "type": "function",
91
+ },
92
+ {
93
+ "constant": True,
94
+ "inputs": [],
95
+ "name": "decimals",
96
+ "outputs": [{"name": "", "type": "uint8"}],
97
+ "type": "function",
98
+ },
99
+ ]
100
+
101
+ try:
102
+ # Create contract instance
103
+ contract = web3.eth.contract(
104
+ address=web3.to_checksum_address(token_contract_address),
105
+ abi=erc20_abi,
106
+ )
107
+
108
+ # Get token symbol and decimals
109
+ token_symbol = contract.functions.symbol().call()
110
+ decimals = contract.functions.decimals().call()
111
+
112
+ # Validate symbol matches currency (case insensitive)
113
+ if token_symbol.upper() != currency.upper():
114
+ raise ValueError(
115
+ f"Token symbol mismatch: contract symbol is '{token_symbol}', "
116
+ f"but currency parameter is '{currency}'"
117
+ )
118
+
119
+ except ContractLogicError:
120
+ raise ValueError(
121
+ f"Invalid ERC20 contract address: {token_contract_address}. "
122
+ "The address does not point to a valid ERC20 token contract."
123
+ )
124
+ except Exception as e:
125
+ raise ValueError(
126
+ f"Failed to validate ERC20 contract {token_contract_address}: {str(e)}"
127
+ )
128
+ else:
129
+ # For ETH transfers, use 18 decimals
130
+ decimals = 18
131
+ # Validate currency is ETH for native transfers
132
+ if currency.upper() != "ETH":
133
+ raise ValueError(
134
+ f"For native transfers, currency must be 'ETH', got '{currency}'"
135
+ )
136
+
83
137
  # Calculate amount in smallest unit (wei for ETH, token units for ERC20)
84
138
  amount_int = int(float(amount) * (10**decimals))
85
139
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes