intentkit 0.7.5.dev7__tar.gz → 0.7.5.dev8__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 (426) hide show
  1. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/PKG-INFO +1 -1
  2. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/__init__.py +1 -1
  3. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/agent.py +42 -101
  4. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/agent.py +241 -114
  5. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/pyproject.toml +1 -1
  6. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/.gitignore +0 -0
  7. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/LICENSE +0 -0
  8. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/MANIFEST.in +0 -0
  9. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/README.md +0 -0
  10. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/abstracts/__init__.py +0 -0
  11. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/abstracts/agent.py +0 -0
  12. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/abstracts/api.py +0 -0
  13. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/abstracts/engine.py +0 -0
  14. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/abstracts/graph.py +0 -0
  15. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/abstracts/skill.py +0 -0
  16. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/abstracts/twitter.py +0 -0
  17. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/clients/__init__.py +0 -0
  18. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/clients/cdp.py +0 -0
  19. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/clients/twitter.py +0 -0
  20. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/clients/web3.py +0 -0
  21. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/config/__init__.py +0 -0
  22. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/config/config.py +0 -0
  23. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/__init__.py +0 -0
  24. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/api.py +0 -0
  25. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/chat.py +0 -0
  26. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/client.py +0 -0
  27. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/credit.py +0 -0
  28. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/engine.py +0 -0
  29. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/node.py +0 -0
  30. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/core/prompt.py +0 -0
  31. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/agent_data.py +0 -0
  32. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/agent_public.json +0 -0
  33. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/agent_schema.json +0 -0
  34. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/app_setting.py +0 -0
  35. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/base.py +0 -0
  36. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/chat.py +0 -0
  37. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/conversation.py +0 -0
  38. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/credit.py +0 -0
  39. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/db.py +0 -0
  40. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/db_mig.py +0 -0
  41. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/generator.py +0 -0
  42. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/llm.py +0 -0
  43. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/redis.py +0 -0
  44. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/skill.py +0 -0
  45. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/models/user.py +0 -0
  46. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/__init__.py +0 -0
  47. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/acolyt/__init__.py +0 -0
  48. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/acolyt/acolyt.jpg +0 -0
  49. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/acolyt/ask.py +0 -0
  50. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/acolyt/base.py +0 -0
  51. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/acolyt/schema.json +0 -0
  52. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/aixbt/README.md +0 -0
  53. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/aixbt/__init__.py +0 -0
  54. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/aixbt/aixbt.jpg +0 -0
  55. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/aixbt/base.py +0 -0
  56. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/aixbt/projects.py +0 -0
  57. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/aixbt/schema.json +0 -0
  58. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/allora/__init__.py +0 -0
  59. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/allora/allora.jpeg +0 -0
  60. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/allora/base.py +0 -0
  61. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/allora/price.py +0 -0
  62. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/allora/schema.json +0 -0
  63. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/base.py +0 -0
  64. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/carv/README.md +0 -0
  65. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/carv/__init__.py +0 -0
  66. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/carv/base.py +0 -0
  67. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/carv/carv.webp +0 -0
  68. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/carv/fetch_news.py +0 -0
  69. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/carv/onchain_query.py +0 -0
  70. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/carv/schema.json +0 -0
  71. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/carv/token_info_and_price.py +0 -0
  72. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/README.md +0 -0
  73. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/__init__.py +0 -0
  74. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/base.py +0 -0
  75. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/casino.png +0 -0
  76. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/deck_draw.py +0 -0
  77. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/deck_shuffle.py +0 -0
  78. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/dice_roll.py +0 -0
  79. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/schema.json +0 -0
  80. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/casino/utils.py +0 -0
  81. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cdp/__init__.py +0 -0
  82. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cdp/base.py +0 -0
  83. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cdp/cdp.png +0 -0
  84. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cdp/get_balance.py +0 -0
  85. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cdp/schema.json +0 -0
  86. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cdp/swap.py +0 -0
  87. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/chainlist/README.md +0 -0
  88. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/chainlist/__init__.py +0 -0
  89. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/chainlist/base.py +0 -0
  90. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/chainlist/chain_lookup.py +0 -0
  91. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/chainlist/chainlist.png +0 -0
  92. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/chainlist/schema.json +0 -0
  93. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/common/__init__.py +0 -0
  94. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/common/base.py +0 -0
  95. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/common/common.jpg +0 -0
  96. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/common/current_time.py +0 -0
  97. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/common/schema.json +0 -0
  98. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/README.md +0 -0
  99. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/__init__.py +0 -0
  100. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/base.py +0 -0
  101. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/constants.py +0 -0
  102. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/cookiefun.png +0 -0
  103. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/get_account_details.py +0 -0
  104. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/get_account_feed.py +0 -0
  105. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/get_account_smart_followers.py +0 -0
  106. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/get_sectors.py +0 -0
  107. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/schema.json +0 -0
  108. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cookiefun/search_accounts.py +0 -0
  109. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/__init__.py +0 -0
  110. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/api.py +0 -0
  111. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/base.py +0 -0
  112. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/cryptocompare.png +0 -0
  113. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/fetch_news.py +0 -0
  114. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/fetch_price.py +0 -0
  115. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  116. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  117. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/fetch_top_volume.py +0 -0
  118. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/fetch_trading_signals.py +0 -0
  119. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptocompare/schema.json +0 -0
  120. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptopanic/__init__.py +0 -0
  121. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptopanic/base.py +0 -0
  122. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptopanic/cryptopanic.png +0 -0
  123. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  124. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  125. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/cryptopanic/schema.json +0 -0
  126. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dapplooker/README.md +0 -0
  127. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dapplooker/__init__.py +0 -0
  128. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dapplooker/base.py +0 -0
  129. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dapplooker/dapplooker.jpg +0 -0
  130. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dapplooker/dapplooker_token_data.py +0 -0
  131. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dapplooker/schema.json +0 -0
  132. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/__init__.py +0 -0
  133. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/api.py +0 -0
  134. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/base.py +0 -0
  135. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/coins/__init__.py +0 -0
  136. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  137. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/coins/fetch_block.py +0 -0
  138. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/coins/fetch_current_prices.py +0 -0
  139. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/coins/fetch_first_price.py +0 -0
  140. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  141. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/coins/fetch_price_chart.py +0 -0
  142. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  143. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/config/__init__.py +0 -0
  144. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/config/chains.py +0 -0
  145. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/defillama.jpeg +0 -0
  146. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/fees/__init__.py +0 -0
  147. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  148. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/schema.json +0 -0
  149. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/stablecoins/__init__.py +0 -0
  150. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  151. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  152. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  153. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  154. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tests/__init__.py +0 -0
  155. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tests/api_integration.test.py +0 -0
  156. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tests/api_unit.test.py +0 -0
  157. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tvl/__init__.py +0 -0
  158. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  159. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tvl/fetch_chains.py +0 -0
  160. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  161. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tvl/fetch_protocol.py +0 -0
  162. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  163. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/tvl/fetch_protocols.py +0 -0
  164. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/volumes/__init__.py +0 -0
  165. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  166. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  167. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  168. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/yields/__init__.py +0 -0
  169. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  170. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/defillama/yields/fetch_pools.py +0 -0
  171. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/README.md +0 -0
  172. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/__init__.py +0 -0
  173. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/base.py +0 -0
  174. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/dexscreener.png +0 -0
  175. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/get_pair_info.py +0 -0
  176. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/get_token_pairs.py +0 -0
  177. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/get_tokens_info.py +0 -0
  178. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/model/__init__.py +0 -0
  179. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/model/search_token_response.py +0 -0
  180. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/schema.json +0 -0
  181. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/search_token.py +0 -0
  182. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dexscreener/utils.py +0 -0
  183. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dune_analytics/__init__.py +0 -0
  184. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dune_analytics/base.py +0 -0
  185. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dune_analytics/dune.png +0 -0
  186. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  187. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  188. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/dune_analytics/schema.json +0 -0
  189. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/README.md +0 -0
  190. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/__init__.py +0 -0
  191. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/base.py +0 -0
  192. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/elfa.jpg +0 -0
  193. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/mention.py +0 -0
  194. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/schema.json +0 -0
  195. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/stats.py +0 -0
  196. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/tokens.py +0 -0
  197. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/elfa/utils.py +0 -0
  198. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/README.md +0 -0
  199. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/__init__.py +0 -0
  200. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/abi/__init__.py +0 -0
  201. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/abi/approval.py +0 -0
  202. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/abi/erc20.py +0 -0
  203. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/abi/route.py +0 -0
  204. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/base.py +0 -0
  205. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/best_yield.py +0 -0
  206. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/enso.jpg +0 -0
  207. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/networks.py +0 -0
  208. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/prices.py +0 -0
  209. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/route.py +0 -0
  210. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/schema.json +0 -0
  211. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/tokens.py +0 -0
  212. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/enso/wallet.py +0 -0
  213. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/README.md +0 -0
  214. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/__init__.py +0 -0
  215. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/base.py +0 -0
  216. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/clear.py +0 -0
  217. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/crawl.py +0 -0
  218. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/firecrawl.png +0 -0
  219. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/query.py +0 -0
  220. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/schema.json +0 -0
  221. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/scrape.py +0 -0
  222. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/firecrawl/utils.py +0 -0
  223. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/github/README.md +0 -0
  224. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/github/__init__.py +0 -0
  225. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/github/base.py +0 -0
  226. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/github/github.jpg +0 -0
  227. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/github/github_search.py +0 -0
  228. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/github/schema.json +0 -0
  229. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/__init__.py +0 -0
  230. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/base.py +0 -0
  231. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/heurist.png +0 -0
  232. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/image_generation_animagine_xl.py +0 -0
  233. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  234. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/image_generation_arthemy_real.py +0 -0
  235. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/image_generation_braindance.py +0 -0
  236. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  237. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  238. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/image_generation_sdxl.py +0 -0
  239. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/heurist/schema.json +0 -0
  240. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/http/README.md +0 -0
  241. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/http/__init__.py +0 -0
  242. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/http/base.py +0 -0
  243. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/http/get.py +0 -0
  244. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/http/http.svg +0 -0
  245. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/http/post.py +0 -0
  246. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/http/put.py +0 -0
  247. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/http/schema.json +0 -0
  248. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/lifi/README.md +0 -0
  249. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/lifi/__init__.py +0 -0
  250. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/lifi/base.py +0 -0
  251. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/lifi/lifi.png +0 -0
  252. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/lifi/schema.json +0 -0
  253. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/lifi/token_execute.py +0 -0
  254. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/lifi/token_quote.py +0 -0
  255. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/lifi/utils.py +0 -0
  256. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/README.md +0 -0
  257. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/__init__.py +0 -0
  258. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/api.py +0 -0
  259. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/base.py +0 -0
  260. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/fetch_chain_portfolio.py +0 -0
  261. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/fetch_nft_portfolio.py +0 -0
  262. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/fetch_solana_portfolio.py +0 -0
  263. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  264. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/moralis.png +0 -0
  265. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/schema.json +0 -0
  266. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/tests/__init__.py +0 -0
  267. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/moralis/tests/test_wallet.py +0 -0
  268. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/nation/__init__.py +0 -0
  269. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/nation/base.py +0 -0
  270. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/nation/nation.png +0 -0
  271. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/nation/nft_check.py +0 -0
  272. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/nation/schema.json +0 -0
  273. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/openai/__init__.py +0 -0
  274. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/openai/base.py +0 -0
  275. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/openai/dalle_image_generation.py +0 -0
  276. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/openai/gpt_image_generation.py +0 -0
  277. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/openai/gpt_image_to_image.py +0 -0
  278. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/openai/image_to_text.py +0 -0
  279. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/openai/openai.png +0 -0
  280. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/openai/schema.json +0 -0
  281. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/README.md +0 -0
  282. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/__init__.py +0 -0
  283. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/base.py +0 -0
  284. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/constants.py +0 -0
  285. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/moralis.png +0 -0
  286. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/schema.json +0 -0
  287. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/token_balances.py +0 -0
  288. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_approvals.py +0 -0
  289. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_defi_positions.py +0 -0
  290. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_history.py +0 -0
  291. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_net_worth.py +0 -0
  292. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_nfts.py +0 -0
  293. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_profitability.py +0 -0
  294. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_profitability_summary.py +0 -0
  295. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_stats.py +0 -0
  296. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/portfolio/wallet_swaps.py +0 -0
  297. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/skills.toml +0 -0
  298. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/slack/__init__.py +0 -0
  299. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/slack/base.py +0 -0
  300. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/slack/get_channel.py +0 -0
  301. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/slack/get_message.py +0 -0
  302. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/slack/schedule_message.py +0 -0
  303. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/slack/schema.json +0 -0
  304. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/slack/send_message.py +0 -0
  305. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/slack/slack.jpg +0 -0
  306. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/__init__.py +0 -0
  307. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/base.py +0 -0
  308. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/delete_data.py +0 -0
  309. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/fetch_data.py +0 -0
  310. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/insert_data.py +0 -0
  311. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/invoke_function.py +0 -0
  312. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/schema.json +0 -0
  313. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/supabase.svg +0 -0
  314. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/update_data.py +0 -0
  315. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/supabase/upsert_data.py +0 -0
  316. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/__init__.py +0 -0
  317. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/add_autonomous_task.py +0 -0
  318. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/base.py +0 -0
  319. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/delete_autonomous_task.py +0 -0
  320. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/edit_autonomous_task.py +0 -0
  321. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/list_autonomous_tasks.py +0 -0
  322. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/read_agent_api_key.py +0 -0
  323. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/regenerate_agent_api_key.py +0 -0
  324. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/schema.json +0 -0
  325. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/system/system.svg +0 -0
  326. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/tavily/README.md +0 -0
  327. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/tavily/__init__.py +0 -0
  328. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/tavily/base.py +0 -0
  329. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/tavily/schema.json +0 -0
  330. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/tavily/tavily.jpg +0 -0
  331. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/tavily/tavily_extract.py +0 -0
  332. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/tavily/tavily_search.py +0 -0
  333. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/README.md +0 -0
  334. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/__init__.py +0 -0
  335. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/base.py +0 -0
  336. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/constants.py +0 -0
  337. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/erc20_transfers.py +0 -0
  338. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/moralis.png +0 -0
  339. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/schema.json +0 -0
  340. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/token_analytics.py +0 -0
  341. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/token_price.py +0 -0
  342. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/token/token_search.py +0 -0
  343. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/__init__.py +0 -0
  344. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/base.py +0 -0
  345. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/follow_user.py +0 -0
  346. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/get_mentions.py +0 -0
  347. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/get_timeline.py +0 -0
  348. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/get_user_by_username.py +0 -0
  349. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/get_user_tweets.py +0 -0
  350. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/like_tweet.py +0 -0
  351. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/post_tweet.py +0 -0
  352. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/reply_tweet.py +0 -0
  353. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/retweet.py +0 -0
  354. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/schema.json +0 -0
  355. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/search_tweets.py +0 -0
  356. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/twitter/twitter.png +0 -0
  357. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/unrealspeech/__init__.py +0 -0
  358. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/unrealspeech/base.py +0 -0
  359. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/unrealspeech/schema.json +0 -0
  360. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/unrealspeech/text_to_speech.py +0 -0
  361. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/unrealspeech/unrealspeech.jpg +0 -0
  362. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_audio/__init__.py +0 -0
  363. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_audio/base.py +0 -0
  364. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_audio/input.py +0 -0
  365. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_audio/schema.json +0 -0
  366. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_audio/venice_audio.py +0 -0
  367. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_audio/venice_logo.jpg +0 -0
  368. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/README.md +0 -0
  369. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/__init__.py +0 -0
  370. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/api.py +0 -0
  371. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/base.py +0 -0
  372. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/config.py +0 -0
  373. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_enhance/README.md +0 -0
  374. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_enhance/__init__.py +0 -0
  375. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  376. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  377. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  378. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/README.md +0 -0
  379. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/__init__.py +0 -0
  380. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  381. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  382. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  383. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  384. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  385. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  386. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  387. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  388. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  389. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_upscale/README.md +0 -0
  390. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_upscale/__init__.py +0 -0
  391. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  392. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  393. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  394. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_vision/README.md +0 -0
  395. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_vision/__init__.py +0 -0
  396. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_vision/image_vision.py +0 -0
  397. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  398. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  399. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/schema.json +0 -0
  400. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/utils.py +0 -0
  401. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/venice_image/venice_image.jpg +0 -0
  402. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/README.md +0 -0
  403. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/__init__.py +0 -0
  404. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/base.py +0 -0
  405. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/document_indexer.py +0 -0
  406. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/langchain.png +0 -0
  407. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/schema.json +0 -0
  408. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/scrape_and_index.py +0 -0
  409. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/utils.py +0 -0
  410. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/web_scraper/website_indexer.py +0 -0
  411. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/xmtp/README.md +0 -0
  412. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/xmtp/__init__.py +0 -0
  413. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/xmtp/base.py +0 -0
  414. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/xmtp/price.py +0 -0
  415. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/xmtp/schema.json +0 -0
  416. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/xmtp/swap.py +0 -0
  417. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/xmtp/transfer.py +0 -0
  418. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/skills/xmtp/xmtp.png +0 -0
  419. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/utils/__init__.py +0 -0
  420. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/utils/chain.py +0 -0
  421. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/utils/error.py +0 -0
  422. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/utils/logging.py +0 -0
  423. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/utils/random.py +0 -0
  424. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/utils/s3.py +0 -0
  425. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/utils/slack_alert.py +0 -0
  426. {intentkit-0.7.5.dev7 → intentkit-0.7.5.dev8}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.7.5.dev7
3
+ Version: 0.7.5.dev8
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
5
  Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
6
6
  Project-URL: Repository, https://github.com/crestalnetwork/intentkit
@@ -3,7 +3,7 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.7.5-dev7"
6
+ __version__ = "0.7.5-dev8"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -4,9 +4,6 @@ from datetime import datetime, timedelta, timezone
4
4
  from decimal import Decimal
5
5
  from typing import Any, Dict, List, Optional
6
6
 
7
- from aiogram import Bot
8
- from aiogram.exceptions import TelegramConflictError, TelegramUnauthorizedError
9
- from aiogram.utils.token import TokenValidationError
10
7
  from sqlalchemy import func, select, text, update
11
8
 
12
9
  from intentkit.abstracts.skill import SkillStoreABC
@@ -16,7 +13,6 @@ from intentkit.models.agent import (
16
13
  Agent,
17
14
  AgentAutonomous,
18
15
  AgentCreate,
19
- AgentResponse,
20
16
  AgentTable,
21
17
  AgentUpdate,
22
18
  )
@@ -35,103 +31,63 @@ from intentkit.utils.slack_alert import send_slack_message
35
31
  logger = logging.getLogger(__name__)
36
32
 
37
33
 
38
- async def _process_agent_post_actions(
39
- agent: Agent, is_new: bool = True, slack_message: str | None = None
34
+ async def process_agent_wallet(
35
+ agent: Agent, old_wallet_provider: str | None = None
40
36
  ) -> AgentData:
41
- """Process common actions after agent creation or update.
37
+ """Process agent wallet initialization and validation.
42
38
 
43
39
  Args:
44
40
  agent: The agent that was created or updated
45
- is_new: Whether the agent is newly created
46
- slack_message: Optional custom message for Slack notification
41
+ old_wallet_provider: Previous wallet provider (None, "cdp", or "readonly")
47
42
 
48
43
  Returns:
49
44
  AgentData: The processed agent data
45
+
46
+ Raises:
47
+ IntentKitAPIError: If attempting to change between cdp and readonly providers
50
48
  """
51
- if config.cdp_api_key_id and agent.wallet_provider == "cdp":
49
+ current_wallet_provider = agent.wallet_provider
50
+
51
+ # 1. Check if changing between cdp and readonly (not allowed)
52
+ if (
53
+ old_wallet_provider is not None
54
+ and old_wallet_provider != current_wallet_provider
55
+ ):
56
+ raise IntentKitAPIError(
57
+ 400,
58
+ "WalletProviderChangeNotAllowed",
59
+ "Cannot change wallet provider between cdp and readonly",
60
+ )
61
+
62
+ # 2. If wallet provider hasn't changed, return existing agent data
63
+ if (
64
+ old_wallet_provider is not None
65
+ and old_wallet_provider == current_wallet_provider
66
+ ):
67
+ return await AgentData.get(agent.id)
68
+
69
+ # 3. For new agents (old_wallet_provider is None), check if wallet already exists
70
+ agent_data = await AgentData.get(agent.id)
71
+ if agent_data.evm_wallet_address:
72
+ return agent_data
73
+
74
+ # 4. Initialize wallet based on provider type
75
+ if config.cdp_api_key_id and current_wallet_provider == "cdp":
52
76
  cdp_client = await get_cdp_client(agent.id, agent_store)
53
77
  await cdp_client.get_wallet_provider()
54
-
55
- # Get new agent data
56
- # FIXME: refuse to change wallet provider
57
- if agent.wallet_provider == "readonly":
78
+ agent_data = await AgentData.get(agent.id)
79
+ elif current_wallet_provider == "readonly":
58
80
  agent_data = await AgentData.patch(
59
81
  agent.id,
60
82
  {
61
83
  "evm_wallet_address": agent.readonly_wallet_address,
62
84
  },
63
85
  )
64
- else:
65
- agent_data = await AgentData.get(agent.id)
66
-
67
- # Send Slack notification
68
- slack_message = slack_message or ("Agent Created" if is_new else "Agent Updated")
69
- try:
70
- _send_agent_notification(agent, agent_data, slack_message)
71
- except Exception as e:
72
- logger.error("Failed to send Slack notification: %s", e)
73
86
 
74
87
  return agent_data
75
88
 
76
89
 
77
- async def _process_telegram_config(
78
- agent: AgentUpdate, existing_agent: Optional[Agent], agent_data: AgentData
79
- ) -> AgentData:
80
- """Process telegram configuration for an agent.
81
-
82
- Args:
83
- agent: The agent with telegram configuration
84
- existing_agent: The existing agent (if updating)
85
- agent_data: The agent data to update
86
-
87
- Returns:
88
- AgentData: The updated agent data
89
- """
90
- changes = agent.model_dump(exclude_unset=True)
91
- if not changes.get("telegram_entrypoint_enabled"):
92
- return agent_data
93
-
94
- if not changes.get("telegram_config") or not changes.get("telegram_config").get(
95
- "token"
96
- ):
97
- return agent_data
98
-
99
- tg_bot_token = changes.get("telegram_config").get("token")
100
-
101
- if existing_agent and existing_agent.telegram_config.get("token") == tg_bot_token:
102
- return agent_data
103
-
104
- try:
105
- bot = Bot(token=tg_bot_token)
106
- bot_info = await bot.get_me()
107
- agent_data.telegram_id = str(bot_info.id)
108
- agent_data.telegram_username = bot_info.username
109
- agent_data.telegram_name = bot_info.first_name
110
- if bot_info.last_name:
111
- agent_data.telegram_name = f"{bot_info.first_name} {bot_info.last_name}"
112
- await agent_data.save()
113
- try:
114
- await bot.close()
115
- except Exception:
116
- pass
117
- return agent_data
118
- except (
119
- TelegramUnauthorizedError,
120
- TelegramConflictError,
121
- TokenValidationError,
122
- ) as req_err:
123
- logger.error(
124
- f"Unauthorized err getting telegram bot username with token {tg_bot_token}: {req_err}",
125
- )
126
- return agent_data
127
- except Exception as e:
128
- logger.error(
129
- f"Error getting telegram bot username with token {tg_bot_token}: {e}",
130
- )
131
- return agent_data
132
-
133
-
134
- def _send_agent_notification(agent: Agent, agent_data: AgentData, message: str) -> None:
90
+ def send_agent_notification(agent: Agent, agent_data: AgentData, message: str) -> None:
135
91
  """Send a notification about agent creation or update.
136
92
 
137
93
  Args:
@@ -239,7 +195,7 @@ def _send_agent_notification(agent: Agent, agent_data: AgentData, message: str)
239
195
 
240
196
  async def deploy_agent(
241
197
  agent_id: str, agent: AgentUpdate, owner: Optional[str] = None
242
- ) -> AgentResponse:
198
+ ) -> Agent:
243
199
  """Override an existing agent.
244
200
 
245
201
  Use input to override agent configuration. If some fields are not provided, they will be reset to default values.
@@ -250,7 +206,7 @@ async def deploy_agent(
250
206
  owner: Optional owner for the agent
251
207
 
252
208
  Returns:
253
- AgentResponse: Updated agent configuration with additional processed data
209
+ Agent: Updated agent configuration
254
210
 
255
211
  Raises:
256
212
  HTTPException:
@@ -270,20 +226,12 @@ async def deploy_agent(
270
226
  # Check for existing agent by upstream_id, forward compatibility, raise error after 3.0
271
227
  existing = await new_agent.get_by_upstream_id()
272
228
  if existing:
273
- agent_data = await AgentData.get(existing.id)
274
- agent_response = await AgentResponse.from_agent(existing, agent_data)
275
- return agent_response
229
+ return existing
276
230
 
277
231
  # Create new agent
278
232
  latest_agent = await new_agent.create()
279
- # Process common post-creation actions
280
- agent_data = await _process_agent_post_actions(
281
- latest_agent, True, "Agent Created"
282
- )
283
- agent_data = await _process_telegram_config(agent, None, agent_data)
284
- agent_response = await AgentResponse.from_agent(latest_agent, agent_data)
285
233
 
286
- return agent_response
234
+ return latest_agent
287
235
 
288
236
  if owner and owner != existing_agent.owner:
289
237
  raise IntentKitAPIError(403, "Forbidden", "forbidden")
@@ -291,14 +239,7 @@ async def deploy_agent(
291
239
  # Update agent
292
240
  latest_agent = await agent.override(agent_id)
293
241
 
294
- # Process common post-update actions
295
- agent_data = await _process_agent_post_actions(
296
- latest_agent, False, "Agent Overridden"
297
- )
298
- agent_data = await _process_telegram_config(agent, existing_agent, agent_data)
299
- agent_response = await AgentResponse.from_agent(latest_agent, agent_data)
300
-
301
- return agent_response
242
+ return latest_agent
302
243
 
303
244
 
304
245
  async def agent_action_cost(agent_id: str) -> Dict[str, Decimal]:
@@ -22,6 +22,7 @@ from intentkit.utils.error import IntentKitAPIError
22
22
  from pydantic import BaseModel, ConfigDict, field_validator
23
23
  from pydantic import Field as PydanticField
24
24
  from pydantic.json_schema import SkipJsonSchema
25
+ from pydantic.main import IncEx
25
26
  from sqlalchemy import (
26
27
  Boolean,
27
28
  Column,
@@ -1257,20 +1258,22 @@ class Agent(AgentCreate, AgentPublicInfo):
1257
1258
  yaml_lines.append(indented_yaml.rstrip())
1258
1259
  elif hasattr(value, "model_dump"):
1259
1260
  # Handle individual Pydantic model
1260
- model_dict = value.model_dump(exclude_none=True)
1261
+ yaml_lines.append(f"{field_name}:")
1261
1262
  yaml_value = yaml.dump(
1262
- {field_name: model_dict},
1263
+ value.model_dump(exclude_none=True),
1263
1264
  default_flow_style=False,
1264
1265
  allow_unicode=True,
1265
1266
  )
1266
- yaml_lines.append(yaml_value.rstrip())
1267
+ # Indent all lines and append to yaml_lines
1268
+ indented_yaml = "\n".join(
1269
+ f" {line}" for line in yaml_value.split("\n") if line.strip()
1270
+ )
1271
+ yaml_lines.append(indented_yaml)
1267
1272
  else:
1268
- # Handle Decimal values specifically
1273
+ # Handle Decimal and other types
1269
1274
  if isinstance(value, Decimal):
1270
- # Convert Decimal to string to avoid !!python/object/apply:decimal.Decimal serialization
1271
- yaml_lines.append(f"{field_name}: {value}")
1275
+ yaml_lines.append(f"{field_name}: {str(value)}")
1272
1276
  else:
1273
- # Handle other non-string values
1274
1277
  yaml_value = yaml.dump(
1275
1278
  {field_name: value},
1276
1279
  default_flow_style=False,
@@ -1495,68 +1498,111 @@ class Agent(AgentCreate, AgentPublicInfo):
1495
1498
 
1496
1499
 
1497
1500
  class AgentResponse(Agent):
1498
- """Response model for Agent API."""
1501
+ """Agent response model that excludes sensitive fields from JSON output and schema."""
1499
1502
 
1500
1503
  model_config = ConfigDict(
1501
- use_enum_values=True,
1504
+ title="AgentPublic",
1502
1505
  from_attributes=True,
1503
- json_encoders={
1504
- datetime: lambda dt: dt.isoformat(),
1505
- },
1506
+ # json_encoders={
1507
+ # datetime: lambda v: v.isoformat(timespec="milliseconds"),
1508
+ # },
1506
1509
  )
1507
1510
 
1508
- # data part
1511
+ # Override privacy fields to exclude them from JSON schema
1512
+ purpose: Annotated[Optional[str], SkipJsonSchema] = None
1513
+ personality: Annotated[Optional[str], SkipJsonSchema] = None
1514
+ principles: Annotated[Optional[str], SkipJsonSchema] = None
1515
+ prompt: Annotated[Optional[str], SkipJsonSchema] = None
1516
+ prompt_append: Annotated[Optional[str], SkipJsonSchema] = None
1517
+ temperature: Annotated[Optional[float], SkipJsonSchema] = None
1518
+ frequency_penalty: Annotated[Optional[float], SkipJsonSchema] = None
1519
+ telegram_entrypoint_prompt: Annotated[Optional[str], SkipJsonSchema] = None
1520
+ telegram_config: Annotated[Optional[dict], SkipJsonSchema] = None
1521
+ xmtp_entrypoint_prompt: Annotated[Optional[str], SkipJsonSchema] = None
1522
+
1523
+ # Additional fields specific to AgentResponse
1509
1524
  cdp_wallet_address: Annotated[
1510
- Optional[str], PydanticField(description="CDP wallet address for the agent")
1525
+ Optional[str],
1526
+ PydanticField(
1527
+ default=None,
1528
+ description="CDP wallet address of the agent",
1529
+ ),
1511
1530
  ]
1512
1531
  evm_wallet_address: Annotated[
1513
- Optional[str], PydanticField(description="EVM wallet address for the agent")
1532
+ Optional[str],
1533
+ PydanticField(
1534
+ default=None,
1535
+ description="EVM wallet address of the agent",
1536
+ ),
1514
1537
  ]
1515
1538
  solana_wallet_address: Annotated[
1516
- Optional[str], PydanticField(description="Solana wallet address for the agent")
1539
+ Optional[str],
1540
+ PydanticField(
1541
+ default=None,
1542
+ description="Solana wallet address of the agent",
1543
+ ),
1517
1544
  ]
1518
1545
  has_twitter_linked: Annotated[
1519
1546
  bool,
1520
- PydanticField(description="Whether the agent has linked their Twitter account"),
1547
+ PydanticField(
1548
+ default=False,
1549
+ description="Whether the agent has Twitter linked",
1550
+ ),
1521
1551
  ]
1522
1552
  linked_twitter_username: Annotated[
1523
1553
  Optional[str],
1524
- PydanticField(description="The username of the linked Twitter account"),
1554
+ PydanticField(
1555
+ default=None,
1556
+ description="Linked Twitter username",
1557
+ ),
1525
1558
  ]
1526
1559
  linked_twitter_name: Annotated[
1527
1560
  Optional[str],
1528
- PydanticField(description="The name of the linked Twitter account"),
1561
+ PydanticField(
1562
+ default=None,
1563
+ description="Linked Twitter display name",
1564
+ ),
1529
1565
  ]
1530
1566
  has_twitter_self_key: Annotated[
1531
1567
  bool,
1532
1568
  PydanticField(
1533
- description="Whether the agent has self-keyed their Twitter account"
1569
+ default=False,
1570
+ description="Whether the agent has Twitter self key",
1534
1571
  ),
1535
1572
  ]
1536
1573
  has_telegram_self_key: Annotated[
1537
1574
  bool,
1538
1575
  PydanticField(
1539
- description="Whether the agent has self-keyed their Telegram account"
1576
+ default=False,
1577
+ description="Whether the agent has Telegram self key",
1540
1578
  ),
1541
1579
  ]
1542
1580
  linked_telegram_username: Annotated[
1543
1581
  Optional[str],
1544
- PydanticField(description="The username of the linked Telegram account"),
1582
+ PydanticField(
1583
+ default=None,
1584
+ description="Linked Telegram username",
1585
+ ),
1545
1586
  ]
1546
1587
  linked_telegram_name: Annotated[
1547
1588
  Optional[str],
1548
- PydanticField(description="The name of the linked Telegram account"),
1589
+ PydanticField(
1590
+ default=None,
1591
+ description="Linked Telegram display name",
1592
+ ),
1549
1593
  ]
1550
1594
  accept_image_input: Annotated[
1551
1595
  bool,
1552
1596
  PydanticField(
1553
- description="Whether the agent accepts image inputs in public mode"
1597
+ default=False,
1598
+ description="Whether the agent accepts image input",
1554
1599
  ),
1555
1600
  ]
1556
1601
  accept_image_input_private: Annotated[
1557
1602
  bool,
1558
1603
  PydanticField(
1559
- description="Whether the agent accepts image inputs in private mode"
1604
+ default=False,
1605
+ description="Whether the agent accepts image input in private mode",
1560
1606
  ),
1561
1607
  ]
1562
1608
 
@@ -1589,76 +1635,6 @@ class AgentResponse(Agent):
1589
1635
  Returns:
1590
1636
  AgentResponse: Response model with additional processed data
1591
1637
  """
1592
- # Get base data from agent
1593
- data = agent.model_dump()
1594
-
1595
- # Hide the sensitive fields
1596
- data.pop("purpose", None)
1597
- data.pop("personality", None)
1598
- data.pop("principles", None)
1599
- data.pop("prompt", None)
1600
- data.pop("prompt_append", None)
1601
- data.pop("temperature", None)
1602
- data.pop("frequency_penalty", None)
1603
- data.pop("telegram_entrypoint_prompt", None)
1604
- data.pop("telegram_config", None)
1605
- data.pop("xmtp_entrypoint_prompt", None)
1606
-
1607
- # Filter sensitive fields from autonomous list
1608
- if data.get("autonomous"):
1609
- filtered_autonomous = []
1610
- for item in data["autonomous"]:
1611
- if isinstance(item, dict):
1612
- # Create proper AgentAutonomous instance with only public fields
1613
- filtered_autonomous.append(
1614
- AgentAutonomous(
1615
- id=item.get("id"),
1616
- name=item.get("name"),
1617
- enabled=item.get("enabled"),
1618
- # Set required prompt field to empty string for public view
1619
- prompt="",
1620
- )
1621
- )
1622
- data["autonomous"] = filtered_autonomous
1623
-
1624
- # Convert examples dictionaries to AgentExample instances
1625
- if data.get("examples"):
1626
- examples_list = []
1627
- for item in data["examples"]:
1628
- if isinstance(item, dict):
1629
- # Create proper AgentExample instance
1630
- examples_list.append(
1631
- AgentExample(
1632
- name=item.get("name", ""),
1633
- description=item.get("description", ""),
1634
- prompt=item.get("prompt", ""),
1635
- )
1636
- )
1637
- data["examples"] = examples_list
1638
-
1639
- # Filter sensitive fields from skills dictionary
1640
- if data.get("skills"):
1641
- filtered_skills = {}
1642
- for skill_name, skill_config in data["skills"].items():
1643
- if isinstance(skill_config, dict):
1644
- # Only include skills that are enabled
1645
- if skill_config.get("enabled") is True:
1646
- filtered_config = {"enabled": True}
1647
- # Only keep states with public or private values
1648
- if "states" in skill_config and isinstance(
1649
- skill_config["states"], dict
1650
- ):
1651
- filtered_states = {}
1652
- for state_key, state_value in skill_config[
1653
- "states"
1654
- ].items():
1655
- if state_value in ["public", "private"]:
1656
- filtered_states[state_key] = state_value
1657
- if filtered_states:
1658
- filtered_config["states"] = filtered_states
1659
- filtered_skills[skill_name] = filtered_config
1660
- data["skills"] = filtered_skills
1661
-
1662
1638
  # Process CDP wallet address
1663
1639
  cdp_wallet_address = agent_data.evm_wallet_address if agent_data else None
1664
1640
  evm_wallet_address = agent_data.evm_wallet_address if agent_data else None
@@ -1684,10 +1660,10 @@ class AgentResponse(Agent):
1684
1660
  agent_data and agent_data.twitter_self_key_refreshed_at
1685
1661
  )
1686
1662
 
1687
- # Process Telegram self-key status and remove token
1663
+ # Process Telegram self-key status
1688
1664
  linked_telegram_username = None
1689
1665
  linked_telegram_name = None
1690
- telegram_config = data.get("telegram_config", {})
1666
+ telegram_config = agent.telegram_config or {}
1691
1667
  has_telegram_self_key = bool(
1692
1668
  telegram_config and "token" in telegram_config and telegram_config["token"]
1693
1669
  )
@@ -1704,22 +1680,173 @@ class AgentResponse(Agent):
1704
1680
  or agent.has_image_parser_skill(is_private=True)
1705
1681
  )
1706
1682
 
1707
- # Add processed fields to response
1708
- data.update(
1709
- {
1710
- "cdp_wallet_address": cdp_wallet_address,
1711
- "evm_wallet_address": evm_wallet_address,
1712
- "solana_wallet_address": solana_wallet_address,
1713
- "has_twitter_linked": has_twitter_linked,
1714
- "linked_twitter_username": linked_twitter_username,
1715
- "linked_twitter_name": linked_twitter_name,
1716
- "has_twitter_self_key": has_twitter_self_key,
1717
- "has_telegram_self_key": has_telegram_self_key,
1718
- "linked_telegram_username": linked_telegram_username,
1719
- "linked_telegram_name": linked_telegram_name,
1720
- "accept_image_input": accept_image_input,
1721
- "accept_image_input_private": accept_image_input_private,
1722
- }
1683
+ # Create AgentResponse instance directly from agent with additional fields
1684
+ return cls(
1685
+ # Copy all fields from agent
1686
+ **agent.model_dump(),
1687
+ # Add computed fields
1688
+ cdp_wallet_address=cdp_wallet_address,
1689
+ evm_wallet_address=evm_wallet_address,
1690
+ solana_wallet_address=solana_wallet_address,
1691
+ has_twitter_linked=has_twitter_linked,
1692
+ linked_twitter_username=linked_twitter_username,
1693
+ linked_twitter_name=linked_twitter_name,
1694
+ has_twitter_self_key=has_twitter_self_key,
1695
+ has_telegram_self_key=has_telegram_self_key,
1696
+ linked_telegram_username=linked_telegram_username,
1697
+ linked_telegram_name=linked_telegram_name,
1698
+ accept_image_input=accept_image_input,
1699
+ accept_image_input_private=accept_image_input_private,
1700
+ )
1701
+
1702
+ def model_dump(
1703
+ self,
1704
+ *,
1705
+ mode: str | Literal["json", "python"] = "python",
1706
+ include: IncEx | None = None,
1707
+ exclude: IncEx | None = None,
1708
+ context: Any | None = None,
1709
+ by_alias: bool = False,
1710
+ exclude_unset: bool = False,
1711
+ exclude_defaults: bool = False,
1712
+ exclude_none: bool = False,
1713
+ round_trip: bool = False,
1714
+ warnings: bool | Literal["none", "warn", "error"] = True,
1715
+ serialize_as_any: bool = False,
1716
+ ) -> dict[str, Any]:
1717
+ """Override model_dump to exclude privacy fields and filter data."""
1718
+ # Get the base model dump
1719
+ data = super().model_dump(
1720
+ mode=mode,
1721
+ include=include,
1722
+ exclude=exclude,
1723
+ context=context,
1724
+ by_alias=by_alias,
1725
+ exclude_unset=exclude_unset,
1726
+ exclude_defaults=exclude_defaults,
1727
+ exclude_none=exclude_none,
1728
+ round_trip=round_trip,
1729
+ warnings=warnings,
1730
+ serialize_as_any=serialize_as_any,
1731
+ )
1732
+
1733
+ # Remove privacy fields that might still be present
1734
+ privacy_fields = {
1735
+ "purpose",
1736
+ "personality",
1737
+ "principles",
1738
+ "prompt",
1739
+ "prompt_append",
1740
+ "temperature",
1741
+ "frequency_penalty",
1742
+ "telegram_entrypoint_prompt",
1743
+ "telegram_config",
1744
+ "xmtp_entrypoint_prompt",
1745
+ }
1746
+ for field in privacy_fields:
1747
+ data.pop(field, None)
1748
+
1749
+ # Filter autonomous list to only keep safe fields
1750
+ if "autonomous" in data and data["autonomous"]:
1751
+ filtered_autonomous = []
1752
+ for item in data["autonomous"]:
1753
+ if isinstance(item, dict):
1754
+ # Only keep safe fields: id, name, description, enabled
1755
+ filtered_item = {
1756
+ key: item[key]
1757
+ for key in ["id", "name", "description", "enabled"]
1758
+ if key in item
1759
+ }
1760
+ filtered_autonomous.append(filtered_item)
1761
+ else:
1762
+ # Handle AgentAutonomous objects
1763
+ item_dict = (
1764
+ item.model_dump() if hasattr(item, "model_dump") else dict(item)
1765
+ )
1766
+ # Only keep safe fields: id, name, description, enabled
1767
+ filtered_item = {
1768
+ key: item_dict[key]
1769
+ for key in ["id", "name", "description", "enabled"]
1770
+ if key in item_dict
1771
+ }
1772
+ filtered_autonomous.append(filtered_item)
1773
+ data["autonomous"] = filtered_autonomous
1774
+
1775
+ # Convert examples to AgentExample instances if they're dictionaries
1776
+ if "examples" in data and data["examples"]:
1777
+ converted_examples = []
1778
+ for example in data["examples"]:
1779
+ if isinstance(example, dict):
1780
+ converted_examples.append(AgentExample(**example).model_dump())
1781
+ else:
1782
+ converted_examples.append(
1783
+ example.model_dump()
1784
+ if hasattr(example, "model_dump")
1785
+ else example
1786
+ )
1787
+ data["examples"] = converted_examples
1788
+
1789
+ # Filter skills to only include enabled ones with specific configurations
1790
+ if "skills" in data and data["skills"]:
1791
+ filtered_skills = {}
1792
+ for skill_name, skill_config in data["skills"].items():
1793
+ if (
1794
+ isinstance(skill_config, dict)
1795
+ and skill_config.get("enabled") is True
1796
+ ):
1797
+ # Filter out disabled states from the skill configuration
1798
+ original_states = skill_config.get("states", {})
1799
+ filtered_states = {
1800
+ state_name: state_value
1801
+ for state_name, state_value in original_states.items()
1802
+ if state_value != "disabled"
1803
+ }
1804
+
1805
+ # Only include the skill if it has at least one non-disabled state
1806
+ if filtered_states:
1807
+ filtered_config = {
1808
+ "enabled": skill_config["enabled"],
1809
+ "states": filtered_states,
1810
+ }
1811
+ # Add other non-sensitive config fields if needed
1812
+ for key in ["public", "private"]:
1813
+ if key in skill_config:
1814
+ filtered_config[key] = skill_config[key]
1815
+ filtered_skills[skill_name] = filtered_config
1816
+ data["skills"] = filtered_skills
1817
+
1818
+ return data
1819
+
1820
+ def model_dump_json(
1821
+ self,
1822
+ *,
1823
+ indent: int | str | None = None,
1824
+ include: IncEx | None = None,
1825
+ exclude: IncEx | None = None,
1826
+ context: Any | None = None,
1827
+ by_alias: bool = False,
1828
+ exclude_unset: bool = False,
1829
+ exclude_defaults: bool = False,
1830
+ exclude_none: bool = False,
1831
+ round_trip: bool = False,
1832
+ warnings: bool | Literal["none", "warn", "error"] = True,
1833
+ serialize_as_any: bool = False,
1834
+ ) -> str:
1835
+ """Override model_dump_json to exclude privacy fields and filter sensitive data."""
1836
+ # Get the filtered data using the same logic as model_dump
1837
+ data = self.model_dump(
1838
+ mode="json",
1839
+ include=include,
1840
+ exclude=exclude,
1841
+ context=context,
1842
+ by_alias=by_alias,
1843
+ exclude_unset=exclude_unset,
1844
+ exclude_defaults=exclude_defaults,
1845
+ exclude_none=exclude_none,
1846
+ round_trip=round_trip,
1847
+ warnings=warnings,
1848
+ serialize_as_any=serialize_as_any,
1723
1849
  )
1724
1850
 
1725
- return cls.model_construct(**data)
1851
+ # Use json.dumps to serialize the filtered data with proper indentation
1852
+ return json.dumps(data, indent=indent, ensure_ascii=False)