intentkit 0.8.11__tar.gz → 0.8.12__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 (461) hide show
  1. {intentkit-0.8.11 → intentkit-0.8.12}/PKG-INFO +1 -1
  2. {intentkit-0.8.11 → intentkit-0.8.12}/__init__.py +1 -1
  3. {intentkit-0.8.11 → intentkit-0.8.12}/abstracts/graph.py +4 -0
  4. intentkit-0.8.12/abstracts/skill.py +60 -0
  5. {intentkit-0.8.11 → intentkit-0.8.12}/clients/twitter.py +35 -28
  6. {intentkit-0.8.11 → intentkit-0.8.12}/core/agent.py +2 -374
  7. {intentkit-0.8.11 → intentkit-0.8.12}/core/asset.py +63 -16
  8. {intentkit-0.8.11 → intentkit-0.8.12}/core/engine.py +16 -7
  9. {intentkit-0.8.11 → intentkit-0.8.12}/core/scheduler.py +8 -8
  10. {intentkit-0.8.11 → intentkit-0.8.12}/models/agent.py +109 -94
  11. {intentkit-0.8.11 → intentkit-0.8.12}/models/agent_schema.json +6 -9
  12. {intentkit-0.8.11 → intentkit-0.8.12}/models/llm.csv +15 -12
  13. {intentkit-0.8.11 → intentkit-0.8.12}/models/skill.py +38 -40
  14. {intentkit-0.8.11 → intentkit-0.8.12}/pyproject.toml +1 -1
  15. {intentkit-0.8.11 → intentkit-0.8.12}/skills/acolyt/__init__.py +2 -9
  16. {intentkit-0.8.11 → intentkit-0.8.12}/skills/acolyt/base.py +2 -5
  17. {intentkit-0.8.11 → intentkit-0.8.12}/skills/aixbt/__init__.py +2 -13
  18. {intentkit-0.8.11 → intentkit-0.8.12}/skills/aixbt/base.py +0 -4
  19. {intentkit-0.8.11 → intentkit-0.8.12}/skills/aixbt/projects.py +1 -2
  20. {intentkit-0.8.11 → intentkit-0.8.12}/skills/allora/__init__.py +2 -9
  21. {intentkit-0.8.11 → intentkit-0.8.12}/skills/allora/base.py +2 -5
  22. {intentkit-0.8.11 → intentkit-0.8.12}/skills/base.py +168 -27
  23. {intentkit-0.8.11 → intentkit-0.8.12}/skills/basename/__init__.py +1 -3
  24. {intentkit-0.8.11 → intentkit-0.8.12}/skills/carv/__init__.py +116 -121
  25. {intentkit-0.8.11 → intentkit-0.8.12}/skills/carv/base.py +184 -185
  26. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/__init__.py +4 -15
  27. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/base.py +0 -4
  28. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/deck_draw.py +4 -6
  29. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/deck_shuffle.py +5 -4
  30. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/dice_roll.py +1 -2
  31. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cdp/__init__.py +0 -5
  32. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cdp/base.py +0 -4
  33. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cdp/schema.json +1 -17
  34. {intentkit-0.8.11 → intentkit-0.8.12}/skills/chainlist/__init__.py +2 -7
  35. {intentkit-0.8.11 → intentkit-0.8.12}/skills/chainlist/base.py +0 -4
  36. {intentkit-0.8.11 → intentkit-0.8.12}/skills/common/__init__.py +2 -9
  37. {intentkit-0.8.11 → intentkit-0.8.12}/skills/common/base.py +0 -4
  38. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/__init__.py +6 -9
  39. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/base.py +0 -4
  40. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/__init__.py +7 -24
  41. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/base.py +4 -18
  42. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/fetch_news.py +1 -1
  43. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/fetch_price.py +1 -1
  44. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/fetch_top_exchanges.py +1 -1
  45. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/fetch_top_market_cap.py +1 -1
  46. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/fetch_top_volume.py +1 -1
  47. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/fetch_trading_signals.py +1 -1
  48. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptopanic/__init__.py +3 -6
  49. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptopanic/base.py +53 -55
  50. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptopanic/fetch_crypto_news.py +0 -2
  51. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptopanic/fetch_crypto_sentiment.py +1 -3
  52. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dapplooker/__init__.py +2 -9
  53. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dapplooker/base.py +2 -5
  54. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/__init__.py +24 -74
  55. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/base.py +3 -13
  56. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/coins/fetch_batch_historical_prices.py +2 -2
  57. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/coins/fetch_block.py +2 -2
  58. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/coins/fetch_current_prices.py +2 -2
  59. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/coins/fetch_first_price.py +2 -2
  60. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/coins/fetch_historical_prices.py +2 -2
  61. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/coins/fetch_price_chart.py +2 -2
  62. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/coins/fetch_price_percentage.py +2 -2
  63. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/fees/fetch_fees_overview.py +2 -2
  64. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +2 -2
  65. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +2 -2
  66. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +2 -2
  67. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/stablecoins/fetch_stablecoins.py +2 -2
  68. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tvl/fetch_chain_historical_tvl.py +2 -2
  69. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tvl/fetch_chains.py +2 -2
  70. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tvl/fetch_historical_tvl.py +2 -2
  71. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tvl/fetch_protocol.py +2 -2
  72. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tvl/fetch_protocol_current_tvl.py +2 -2
  73. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tvl/fetch_protocols.py +2 -2
  74. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/volumes/fetch_dex_overview.py +2 -2
  75. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/volumes/fetch_dex_summary.py +2 -2
  76. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/volumes/fetch_options_overview.py +2 -2
  77. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/yields/fetch_pool_chart.py +2 -2
  78. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/yields/fetch_pools.py +2 -2
  79. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/__init__.py +97 -102
  80. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/base.py +125 -130
  81. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/get_pair_info.py +2 -3
  82. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/get_token_pairs.py +2 -3
  83. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/get_tokens_info.py +2 -3
  84. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/search_token.py +2 -4
  85. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dune_analytics/__init__.py +4 -6
  86. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dune_analytics/base.py +50 -52
  87. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dune_analytics/fetch_kol_buys.py +0 -2
  88. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dune_analytics/fetch_nation_metrics.py +0 -2
  89. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/__init__.py +5 -18
  90. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/base.py +8 -10
  91. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/__init__.py +9 -29
  92. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/base.py +3 -6
  93. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/networks.py +1 -6
  94. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/route.py +4 -8
  95. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/tokens.py +2 -12
  96. {intentkit-0.8.11 → intentkit-0.8.12}/skills/erc20/__init__.py +1 -5
  97. {intentkit-0.8.11 → intentkit-0.8.12}/skills/erc721/__init__.py +1 -3
  98. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/__init__.py +5 -18
  99. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/base.py +2 -5
  100. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/clear.py +3 -6
  101. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/crawl.py +10 -9
  102. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/query.py +3 -1
  103. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/scrape.py +10 -14
  104. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/utils.py +39 -31
  105. {intentkit-0.8.11 → intentkit-0.8.12}/skills/github/__init__.py +2 -7
  106. {intentkit-0.8.11 → intentkit-0.8.12}/skills/github/base.py +0 -4
  107. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/__init__.py +8 -27
  108. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/base.py +2 -5
  109. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/image_generation_animagine_xl.py +5 -5
  110. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/image_generation_arthemy_comics.py +5 -5
  111. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/image_generation_arthemy_real.py +5 -5
  112. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/image_generation_braindance.py +5 -5
  113. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/image_generation_cyber_realistic_xl.py +5 -5
  114. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/image_generation_flux_1_dev.py +5 -5
  115. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/image_generation_sdxl.py +5 -5
  116. {intentkit-0.8.11 → intentkit-0.8.12}/skills/http/__init__.py +4 -15
  117. {intentkit-0.8.11 → intentkit-0.8.12}/skills/http/base.py +0 -4
  118. {intentkit-0.8.11 → intentkit-0.8.12}/skills/lifi/__init__.py +1 -6
  119. {intentkit-0.8.11 → intentkit-0.8.12}/skills/lifi/base.py +0 -4
  120. {intentkit-0.8.11 → intentkit-0.8.12}/skills/lifi/token_execute.py +1 -4
  121. {intentkit-0.8.11 → intentkit-0.8.12}/skills/lifi/token_quote.py +1 -3
  122. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/__init__.py +3 -7
  123. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/base.py +2 -5
  124. {intentkit-0.8.11 → intentkit-0.8.12}/skills/morpho/__init__.py +1 -3
  125. {intentkit-0.8.11 → intentkit-0.8.12}/skills/nation/__init__.py +2 -7
  126. {intentkit-0.8.11 → intentkit-0.8.12}/skills/nation/base.py +4 -7
  127. {intentkit-0.8.11 → intentkit-0.8.12}/skills/openai/__init__.py +5 -18
  128. {intentkit-0.8.11 → intentkit-0.8.12}/skills/openai/base.py +8 -10
  129. {intentkit-0.8.11 → intentkit-0.8.12}/skills/openai/dalle_image_generation.py +2 -5
  130. {intentkit-0.8.11 → intentkit-0.8.12}/skills/openai/gpt_image_generation.py +2 -5
  131. {intentkit-0.8.11 → intentkit-0.8.12}/skills/openai/gpt_image_to_image.py +2 -5
  132. {intentkit-0.8.11 → intentkit-0.8.12}/skills/openai/image_to_text.py +2 -5
  133. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/__init__.py +11 -35
  134. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/base.py +2 -5
  135. {intentkit-0.8.11 → intentkit-0.8.12}/skills/pyth/__init__.py +1 -5
  136. {intentkit-0.8.11 → intentkit-0.8.12}/skills/slack/__init__.py +5 -17
  137. {intentkit-0.8.11 → intentkit-0.8.12}/skills/slack/base.py +0 -4
  138. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/__init__.py +7 -23
  139. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/base.py +0 -4
  140. {intentkit-0.8.11 → intentkit-0.8.12}/skills/superfluid/__init__.py +1 -3
  141. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/__init__.py +7 -24
  142. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/add_autonomous_task.py +2 -2
  143. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/delete_autonomous_task.py +2 -2
  144. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/edit_autonomous_task.py +2 -4
  145. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/list_autonomous_tasks.py +2 -2
  146. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/read_agent_api_key.py +6 -4
  147. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/regenerate_agent_api_key.py +6 -4
  148. {intentkit-0.8.11 → intentkit-0.8.12}/skills/tavily/__init__.py +3 -12
  149. {intentkit-0.8.11 → intentkit-0.8.12}/skills/tavily/base.py +2 -5
  150. {intentkit-0.8.11 → intentkit-0.8.12}/skills/tavily/tavily_extract.py +1 -2
  151. {intentkit-0.8.11 → intentkit-0.8.12}/skills/tavily/tavily_search.py +3 -3
  152. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/__init__.py +5 -10
  153. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/base.py +2 -6
  154. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/__init__.py +11 -35
  155. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/base.py +18 -29
  156. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/follow_user.py +1 -4
  157. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/get_mentions.py +2 -8
  158. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/get_timeline.py +3 -10
  159. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/get_user_by_username.py +1 -4
  160. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/get_user_tweets.py +3 -10
  161. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/like_tweet.py +1 -4
  162. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/post_tweet.py +3 -5
  163. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/reply_tweet.py +3 -5
  164. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/retweet.py +1 -4
  165. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/search_tweets.py +3 -10
  166. {intentkit-0.8.11 → intentkit-0.8.12}/skills/unrealspeech/__init__.py +2 -7
  167. {intentkit-0.8.11 → intentkit-0.8.12}/skills/unrealspeech/base.py +0 -4
  168. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_audio/__init__.py +99 -106
  169. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_audio/base.py +118 -121
  170. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_audio/venice_audio.py +1 -5
  171. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/__init__.py +147 -154
  172. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/base.py +185 -192
  173. {intentkit-0.8.11 → intentkit-0.8.12}/skills/web_scraper/__init__.py +5 -18
  174. intentkit-0.8.12/skills/web_scraper/base.py +37 -0
  175. {intentkit-0.8.11 → intentkit-0.8.12}/skills/web_scraper/document_indexer.py +6 -4
  176. {intentkit-0.8.11 → intentkit-0.8.12}/skills/web_scraper/scrape_and_index.py +11 -10
  177. {intentkit-0.8.11 → intentkit-0.8.12}/skills/web_scraper/utils.py +38 -38
  178. {intentkit-0.8.11 → intentkit-0.8.12}/skills/web_scraper/website_indexer.py +7 -8
  179. {intentkit-0.8.11 → intentkit-0.8.12}/skills/weth/__init__.py +1 -5
  180. {intentkit-0.8.11 → intentkit-0.8.12}/skills/wow/__init__.py +1 -5
  181. {intentkit-0.8.11 → intentkit-0.8.12}/skills/xmtp/__init__.py +4 -15
  182. intentkit-0.8.11/abstracts/skill.py +0 -198
  183. intentkit-0.8.11/skills/web_scraper/base.py +0 -21
  184. {intentkit-0.8.11 → intentkit-0.8.12}/.gitignore +0 -0
  185. {intentkit-0.8.11 → intentkit-0.8.12}/LICENSE +0 -0
  186. {intentkit-0.8.11 → intentkit-0.8.12}/MANIFEST.in +0 -0
  187. {intentkit-0.8.11 → intentkit-0.8.12}/README.md +0 -0
  188. {intentkit-0.8.11 → intentkit-0.8.12}/abstracts/__init__.py +0 -0
  189. {intentkit-0.8.11 → intentkit-0.8.12}/abstracts/agent.py +0 -0
  190. {intentkit-0.8.11 → intentkit-0.8.12}/abstracts/api.py +0 -0
  191. {intentkit-0.8.11 → intentkit-0.8.12}/abstracts/engine.py +0 -0
  192. {intentkit-0.8.11 → intentkit-0.8.12}/abstracts/twitter.py +0 -0
  193. {intentkit-0.8.11 → intentkit-0.8.12}/clients/__init__.py +0 -0
  194. {intentkit-0.8.11 → intentkit-0.8.12}/clients/cdp.py +0 -0
  195. {intentkit-0.8.11 → intentkit-0.8.12}/clients/web3.py +0 -0
  196. {intentkit-0.8.11 → intentkit-0.8.12}/config/__init__.py +0 -0
  197. {intentkit-0.8.11 → intentkit-0.8.12}/config/config.py +0 -0
  198. {intentkit-0.8.11 → intentkit-0.8.12}/core/__init__.py +0 -0
  199. {intentkit-0.8.11 → intentkit-0.8.12}/core/api.py +0 -0
  200. {intentkit-0.8.11 → intentkit-0.8.12}/core/chat.py +0 -0
  201. {intentkit-0.8.11 → intentkit-0.8.12}/core/client.py +0 -0
  202. {intentkit-0.8.11 → intentkit-0.8.12}/core/credit.py +0 -0
  203. {intentkit-0.8.11 → intentkit-0.8.12}/core/node.py +0 -0
  204. {intentkit-0.8.11 → intentkit-0.8.12}/core/prompt.py +0 -0
  205. {intentkit-0.8.11 → intentkit-0.8.12}/core/statistics.py +0 -0
  206. {intentkit-0.8.11 → intentkit-0.8.12}/models/agent_data.py +0 -0
  207. {intentkit-0.8.11 → intentkit-0.8.12}/models/agent_public.json +0 -0
  208. {intentkit-0.8.11 → intentkit-0.8.12}/models/app_setting.py +0 -0
  209. {intentkit-0.8.11 → intentkit-0.8.12}/models/base.py +0 -0
  210. {intentkit-0.8.11 → intentkit-0.8.12}/models/chat.py +0 -0
  211. {intentkit-0.8.11 → intentkit-0.8.12}/models/conversation.py +0 -0
  212. {intentkit-0.8.11 → intentkit-0.8.12}/models/credit.py +0 -0
  213. {intentkit-0.8.11 → intentkit-0.8.12}/models/db.py +0 -0
  214. {intentkit-0.8.11 → intentkit-0.8.12}/models/db_mig.py +0 -0
  215. {intentkit-0.8.11 → intentkit-0.8.12}/models/generator.py +0 -0
  216. {intentkit-0.8.11 → intentkit-0.8.12}/models/llm.py +0 -0
  217. {intentkit-0.8.11 → intentkit-0.8.12}/models/redis.py +0 -0
  218. {intentkit-0.8.11 → intentkit-0.8.12}/models/skills.csv +0 -0
  219. {intentkit-0.8.11 → intentkit-0.8.12}/models/user.py +0 -0
  220. {intentkit-0.8.11 → intentkit-0.8.12}/skills/__init__.py +0 -0
  221. {intentkit-0.8.11 → intentkit-0.8.12}/skills/acolyt/acolyt.jpg +0 -0
  222. {intentkit-0.8.11 → intentkit-0.8.12}/skills/acolyt/ask.py +0 -0
  223. {intentkit-0.8.11 → intentkit-0.8.12}/skills/acolyt/schema.json +0 -0
  224. {intentkit-0.8.11 → intentkit-0.8.12}/skills/aixbt/README.md +0 -0
  225. {intentkit-0.8.11 → intentkit-0.8.12}/skills/aixbt/aixbt.jpg +0 -0
  226. {intentkit-0.8.11 → intentkit-0.8.12}/skills/aixbt/schema.json +0 -0
  227. {intentkit-0.8.11 → intentkit-0.8.12}/skills/allora/allora.jpeg +0 -0
  228. {intentkit-0.8.11 → intentkit-0.8.12}/skills/allora/price.py +0 -0
  229. {intentkit-0.8.11 → intentkit-0.8.12}/skills/allora/schema.json +0 -0
  230. {intentkit-0.8.11 → intentkit-0.8.12}/skills/basename/base.py +0 -0
  231. {intentkit-0.8.11 → intentkit-0.8.12}/skills/basename/basename.svg +0 -0
  232. {intentkit-0.8.11 → intentkit-0.8.12}/skills/basename/schema.json +0 -0
  233. {intentkit-0.8.11 → intentkit-0.8.12}/skills/carv/README.md +0 -0
  234. {intentkit-0.8.11 → intentkit-0.8.12}/skills/carv/carv.webp +0 -0
  235. {intentkit-0.8.11 → intentkit-0.8.12}/skills/carv/fetch_news.py +0 -0
  236. {intentkit-0.8.11 → intentkit-0.8.12}/skills/carv/onchain_query.py +0 -0
  237. {intentkit-0.8.11 → intentkit-0.8.12}/skills/carv/schema.json +0 -0
  238. {intentkit-0.8.11 → intentkit-0.8.12}/skills/carv/token_info_and_price.py +0 -0
  239. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/README.md +0 -0
  240. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/casino.png +0 -0
  241. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/schema.json +0 -0
  242. {intentkit-0.8.11 → intentkit-0.8.12}/skills/casino/utils.py +0 -0
  243. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cdp/cdp.png +0 -0
  244. {intentkit-0.8.11 → intentkit-0.8.12}/skills/chainlist/README.md +0 -0
  245. {intentkit-0.8.11 → intentkit-0.8.12}/skills/chainlist/chain_lookup.py +0 -0
  246. {intentkit-0.8.11 → intentkit-0.8.12}/skills/chainlist/chainlist.png +0 -0
  247. {intentkit-0.8.11 → intentkit-0.8.12}/skills/chainlist/schema.json +0 -0
  248. {intentkit-0.8.11 → intentkit-0.8.12}/skills/common/common.jpg +0 -0
  249. {intentkit-0.8.11 → intentkit-0.8.12}/skills/common/current_time.py +0 -0
  250. {intentkit-0.8.11 → intentkit-0.8.12}/skills/common/schema.json +0 -0
  251. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/README.md +0 -0
  252. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/constants.py +0 -0
  253. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/cookiefun.png +0 -0
  254. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/get_account_details.py +0 -0
  255. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/get_account_feed.py +0 -0
  256. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/get_account_smart_followers.py +0 -0
  257. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/get_sectors.py +0 -0
  258. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/schema.json +0 -0
  259. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cookiefun/search_accounts.py +0 -0
  260. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/api.py +0 -0
  261. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/cryptocompare.png +0 -0
  262. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptocompare/schema.json +0 -0
  263. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptopanic/cryptopanic.png +0 -0
  264. {intentkit-0.8.11 → intentkit-0.8.12}/skills/cryptopanic/schema.json +0 -0
  265. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dapplooker/README.md +0 -0
  266. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dapplooker/dapplooker.jpg +0 -0
  267. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dapplooker/dapplooker_token_data.py +0 -0
  268. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dapplooker/schema.json +0 -0
  269. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/api.py +0 -0
  270. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/coins/__init__.py +0 -0
  271. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/config/__init__.py +0 -0
  272. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/config/chains.py +0 -0
  273. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/defillama.jpeg +0 -0
  274. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/fees/__init__.py +0 -0
  275. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/schema.json +0 -0
  276. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/stablecoins/__init__.py +0 -0
  277. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tests/__init__.py +0 -0
  278. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tests/api_integration.test.py +0 -0
  279. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tests/api_unit.test.py +0 -0
  280. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/tvl/__init__.py +0 -0
  281. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/volumes/__init__.py +0 -0
  282. {intentkit-0.8.11 → intentkit-0.8.12}/skills/defillama/yields/__init__.py +0 -0
  283. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/README.md +0 -0
  284. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/dexscreener.png +0 -0
  285. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/model/__init__.py +0 -0
  286. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/model/search_token_response.py +0 -0
  287. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/schema.json +0 -0
  288. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dexscreener/utils.py +0 -0
  289. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dune_analytics/dune.png +0 -0
  290. {intentkit-0.8.11 → intentkit-0.8.12}/skills/dune_analytics/schema.json +0 -0
  291. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/README.md +0 -0
  292. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/elfa.jpg +0 -0
  293. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/mention.py +0 -0
  294. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/schema.json +0 -0
  295. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/stats.py +0 -0
  296. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/tokens.py +0 -0
  297. {intentkit-0.8.11 → intentkit-0.8.12}/skills/elfa/utils.py +0 -0
  298. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/README.md +0 -0
  299. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/abi/__init__.py +0 -0
  300. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/abi/approval.py +0 -0
  301. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/abi/erc20.py +0 -0
  302. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/abi/route.py +0 -0
  303. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/best_yield.py +0 -0
  304. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/enso.jpg +0 -0
  305. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/prices.py +0 -0
  306. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/schema.json +0 -0
  307. {intentkit-0.8.11 → intentkit-0.8.12}/skills/enso/wallet.py +0 -0
  308. {intentkit-0.8.11 → intentkit-0.8.12}/skills/erc20/base.py +0 -0
  309. {intentkit-0.8.11 → intentkit-0.8.12}/skills/erc20/erc20.svg +0 -0
  310. {intentkit-0.8.11 → intentkit-0.8.12}/skills/erc20/schema.json +0 -0
  311. {intentkit-0.8.11 → intentkit-0.8.12}/skills/erc721/base.py +0 -0
  312. {intentkit-0.8.11 → intentkit-0.8.12}/skills/erc721/erc721.svg +0 -0
  313. {intentkit-0.8.11 → intentkit-0.8.12}/skills/erc721/schema.json +0 -0
  314. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/README.md +0 -0
  315. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/firecrawl.png +0 -0
  316. {intentkit-0.8.11 → intentkit-0.8.12}/skills/firecrawl/schema.json +0 -0
  317. {intentkit-0.8.11 → intentkit-0.8.12}/skills/github/README.md +0 -0
  318. {intentkit-0.8.11 → intentkit-0.8.12}/skills/github/github.jpg +0 -0
  319. {intentkit-0.8.11 → intentkit-0.8.12}/skills/github/github_search.py +0 -0
  320. {intentkit-0.8.11 → intentkit-0.8.12}/skills/github/schema.json +0 -0
  321. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/heurist.png +0 -0
  322. {intentkit-0.8.11 → intentkit-0.8.12}/skills/heurist/schema.json +0 -0
  323. {intentkit-0.8.11 → intentkit-0.8.12}/skills/http/README.md +0 -0
  324. {intentkit-0.8.11 → intentkit-0.8.12}/skills/http/get.py +0 -0
  325. {intentkit-0.8.11 → intentkit-0.8.12}/skills/http/http.svg +0 -0
  326. {intentkit-0.8.11 → intentkit-0.8.12}/skills/http/post.py +0 -0
  327. {intentkit-0.8.11 → intentkit-0.8.12}/skills/http/put.py +0 -0
  328. {intentkit-0.8.11 → intentkit-0.8.12}/skills/http/schema.json +0 -0
  329. {intentkit-0.8.11 → intentkit-0.8.12}/skills/lifi/README.md +0 -0
  330. {intentkit-0.8.11 → intentkit-0.8.12}/skills/lifi/lifi.png +0 -0
  331. {intentkit-0.8.11 → intentkit-0.8.12}/skills/lifi/schema.json +0 -0
  332. {intentkit-0.8.11 → intentkit-0.8.12}/skills/lifi/utils.py +0 -0
  333. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/README.md +0 -0
  334. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/api.py +0 -0
  335. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/fetch_chain_portfolio.py +0 -0
  336. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/fetch_nft_portfolio.py +0 -0
  337. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/fetch_solana_portfolio.py +0 -0
  338. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  339. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/moralis.png +0 -0
  340. {intentkit-0.8.11 → intentkit-0.8.12}/skills/moralis/schema.json +0 -0
  341. {intentkit-0.8.11 → intentkit-0.8.12}/skills/morpho/base.py +0 -0
  342. {intentkit-0.8.11 → intentkit-0.8.12}/skills/morpho/morpho.svg +0 -0
  343. {intentkit-0.8.11 → intentkit-0.8.12}/skills/morpho/schema.json +0 -0
  344. {intentkit-0.8.11 → intentkit-0.8.12}/skills/nation/nation.png +0 -0
  345. {intentkit-0.8.11 → intentkit-0.8.12}/skills/nation/nft_check.py +0 -0
  346. {intentkit-0.8.11 → intentkit-0.8.12}/skills/nation/schema.json +0 -0
  347. {intentkit-0.8.11 → intentkit-0.8.12}/skills/openai/openai.png +0 -0
  348. {intentkit-0.8.11 → intentkit-0.8.12}/skills/openai/schema.json +0 -0
  349. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/README.md +0 -0
  350. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/constants.py +0 -0
  351. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/moralis.png +0 -0
  352. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/schema.json +0 -0
  353. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/token_balances.py +0 -0
  354. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_approvals.py +0 -0
  355. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_defi_positions.py +0 -0
  356. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_history.py +0 -0
  357. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_net_worth.py +0 -0
  358. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_nfts.py +0 -0
  359. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_profitability.py +0 -0
  360. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_profitability_summary.py +0 -0
  361. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_stats.py +0 -0
  362. {intentkit-0.8.11 → intentkit-0.8.12}/skills/portfolio/wallet_swaps.py +0 -0
  363. {intentkit-0.8.11 → intentkit-0.8.12}/skills/pyth/base.py +0 -0
  364. {intentkit-0.8.11 → intentkit-0.8.12}/skills/pyth/pyth.svg +0 -0
  365. {intentkit-0.8.11 → intentkit-0.8.12}/skills/pyth/schema.json +0 -0
  366. {intentkit-0.8.11 → intentkit-0.8.12}/skills/skills.toml +0 -0
  367. {intentkit-0.8.11 → intentkit-0.8.12}/skills/slack/get_channel.py +0 -0
  368. {intentkit-0.8.11 → intentkit-0.8.12}/skills/slack/get_message.py +0 -0
  369. {intentkit-0.8.11 → intentkit-0.8.12}/skills/slack/schedule_message.py +0 -0
  370. {intentkit-0.8.11 → intentkit-0.8.12}/skills/slack/schema.json +0 -0
  371. {intentkit-0.8.11 → intentkit-0.8.12}/skills/slack/send_message.py +0 -0
  372. {intentkit-0.8.11 → intentkit-0.8.12}/skills/slack/slack.jpg +0 -0
  373. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/delete_data.py +0 -0
  374. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/fetch_data.py +0 -0
  375. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/insert_data.py +0 -0
  376. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/invoke_function.py +0 -0
  377. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/schema.json +0 -0
  378. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/supabase.svg +0 -0
  379. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/update_data.py +0 -0
  380. {intentkit-0.8.11 → intentkit-0.8.12}/skills/supabase/upsert_data.py +0 -0
  381. {intentkit-0.8.11 → intentkit-0.8.12}/skills/superfluid/base.py +0 -0
  382. {intentkit-0.8.11 → intentkit-0.8.12}/skills/superfluid/schema.json +0 -0
  383. {intentkit-0.8.11 → intentkit-0.8.12}/skills/superfluid/superfluid.svg +0 -0
  384. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/base.py +0 -0
  385. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/schema.json +0 -0
  386. {intentkit-0.8.11 → intentkit-0.8.12}/skills/system/system.svg +0 -0
  387. {intentkit-0.8.11 → intentkit-0.8.12}/skills/tavily/README.md +0 -0
  388. {intentkit-0.8.11 → intentkit-0.8.12}/skills/tavily/schema.json +0 -0
  389. {intentkit-0.8.11 → intentkit-0.8.12}/skills/tavily/tavily.jpg +0 -0
  390. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/README.md +0 -0
  391. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/constants.py +0 -0
  392. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/erc20_transfers.py +0 -0
  393. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/moralis.png +0 -0
  394. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/schema.json +0 -0
  395. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/token_analytics.py +0 -0
  396. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/token_price.py +0 -0
  397. {intentkit-0.8.11 → intentkit-0.8.12}/skills/token/token_search.py +0 -0
  398. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/schema.json +0 -0
  399. {intentkit-0.8.11 → intentkit-0.8.12}/skills/twitter/twitter.png +0 -0
  400. {intentkit-0.8.11 → intentkit-0.8.12}/skills/unrealspeech/schema.json +0 -0
  401. {intentkit-0.8.11 → intentkit-0.8.12}/skills/unrealspeech/text_to_speech.py +0 -0
  402. {intentkit-0.8.11 → intentkit-0.8.12}/skills/unrealspeech/unrealspeech.jpg +0 -0
  403. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_audio/input.py +0 -0
  404. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_audio/schema.json +0 -0
  405. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_audio/venice_logo.jpg +0 -0
  406. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/README.md +0 -0
  407. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/api.py +0 -0
  408. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/config.py +0 -0
  409. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_enhance/README.md +0 -0
  410. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_enhance/__init__.py +0 -0
  411. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  412. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  413. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  414. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/README.md +0 -0
  415. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/__init__.py +0 -0
  416. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  417. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  418. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  419. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  420. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  421. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  422. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  423. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  424. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  425. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_upscale/README.md +0 -0
  426. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_upscale/__init__.py +0 -0
  427. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  428. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  429. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  430. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_vision/README.md +0 -0
  431. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_vision/__init__.py +0 -0
  432. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_vision/image_vision.py +0 -0
  433. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  434. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  435. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/schema.json +0 -0
  436. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/utils.py +0 -0
  437. {intentkit-0.8.11 → intentkit-0.8.12}/skills/venice_image/venice_image.jpg +0 -0
  438. {intentkit-0.8.11 → intentkit-0.8.12}/skills/web_scraper/README.md +0 -0
  439. {intentkit-0.8.11 → intentkit-0.8.12}/skills/web_scraper/langchain.png +0 -0
  440. {intentkit-0.8.11 → intentkit-0.8.12}/skills/web_scraper/schema.json +0 -0
  441. {intentkit-0.8.11 → intentkit-0.8.12}/skills/weth/base.py +0 -0
  442. {intentkit-0.8.11 → intentkit-0.8.12}/skills/weth/schema.json +0 -0
  443. {intentkit-0.8.11 → intentkit-0.8.12}/skills/weth/weth.svg +0 -0
  444. {intentkit-0.8.11 → intentkit-0.8.12}/skills/wow/base.py +0 -0
  445. {intentkit-0.8.11 → intentkit-0.8.12}/skills/wow/schema.json +0 -0
  446. {intentkit-0.8.11 → intentkit-0.8.12}/skills/wow/wow.svg +0 -0
  447. {intentkit-0.8.11 → intentkit-0.8.12}/skills/xmtp/README.md +0 -0
  448. {intentkit-0.8.11 → intentkit-0.8.12}/skills/xmtp/base.py +0 -0
  449. {intentkit-0.8.11 → intentkit-0.8.12}/skills/xmtp/price.py +0 -0
  450. {intentkit-0.8.11 → intentkit-0.8.12}/skills/xmtp/schema.json +0 -0
  451. {intentkit-0.8.11 → intentkit-0.8.12}/skills/xmtp/swap.py +0 -0
  452. {intentkit-0.8.11 → intentkit-0.8.12}/skills/xmtp/transfer.py +0 -0
  453. {intentkit-0.8.11 → intentkit-0.8.12}/skills/xmtp/xmtp.png +0 -0
  454. {intentkit-0.8.11 → intentkit-0.8.12}/utils/__init__.py +0 -0
  455. {intentkit-0.8.11 → intentkit-0.8.12}/utils/chain.py +0 -0
  456. {intentkit-0.8.11 → intentkit-0.8.12}/utils/error.py +0 -0
  457. {intentkit-0.8.11 → intentkit-0.8.12}/utils/logging.py +0 -0
  458. {intentkit-0.8.11 → intentkit-0.8.12}/utils/random.py +0 -0
  459. {intentkit-0.8.11 → intentkit-0.8.12}/utils/s3.py +0 -0
  460. {intentkit-0.8.11 → intentkit-0.8.12}/utils/slack_alert.py +0 -0
  461. {intentkit-0.8.11 → intentkit-0.8.12}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.8.11
3
+ Version: 0.8.12
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.8.11"
6
+ __version__ = "0.8.12"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -41,3 +41,7 @@ class AgentContext(BaseModel):
41
41
  @property
42
42
  def agent(self) -> Agent:
43
43
  return self.get_agent()
44
+
45
+ @property
46
+ def thread_id(self) -> str:
47
+ return f"{self.agent_id}-{self.chat_id}"
@@ -0,0 +1,60 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import Any, Dict, Optional
3
+
4
+ from intentkit.models.agent import Agent
5
+ from intentkit.models.agent_data import AgentData, AgentQuota
6
+
7
+
8
+ class SkillStoreABC(ABC):
9
+ """Abstract base class for skill data storage operations.
10
+
11
+ This class defines the interface for interacting with skill-related data
12
+ for both agents and threads.
13
+ """
14
+
15
+ @staticmethod
16
+ @abstractmethod
17
+ def get_system_config(key: str) -> Any:
18
+ """Get system configuration value by key."""
19
+ pass
20
+
21
+ @staticmethod
22
+ @abstractmethod
23
+ async def get_agent_config(agent_id: str) -> Optional[Agent]:
24
+ """Get agent configuration.
25
+
26
+ Returns:
27
+ Agent configuration if found, None otherwise
28
+ """
29
+ pass
30
+
31
+ @staticmethod
32
+ @abstractmethod
33
+ async def get_agent_data(agent_id: str) -> Optional[AgentData]:
34
+ """Get additional agent data.
35
+
36
+ Returns:
37
+ Agent data if found, None otherwise
38
+ """
39
+ pass
40
+
41
+ @staticmethod
42
+ @abstractmethod
43
+ async def set_agent_data(agent_id: str, data: Dict) -> None:
44
+ """Update agent data.
45
+
46
+ Args:
47
+ agent_id: ID of the agent
48
+ data: Dictionary containing fields to update
49
+ """
50
+ pass
51
+
52
+ @staticmethod
53
+ @abstractmethod
54
+ async def get_agent_quota(agent_id: str) -> Optional[AgentQuota]:
55
+ """Get agent quota information.
56
+
57
+ Returns:
58
+ Agent quota if found, None otherwise
59
+ """
60
+ pass
@@ -11,7 +11,6 @@ from requests.auth import HTTPBasicAuth
11
11
  from requests_oauthlib import OAuth2Session
12
12
  from tweepy.asynchronous import AsyncClient
13
13
 
14
- from intentkit.abstracts.skill import SkillStoreABC
15
14
  from intentkit.abstracts.twitter import TwitterABC
16
15
  from intentkit.models.agent_data import AgentData
17
16
  from intentkit.models.redis import get_redis
@@ -80,33 +79,44 @@ class TwitterClient(TwitterABC):
80
79
 
81
80
  Args:
82
81
  agent_id: The ID of the agent
83
- skill_store: The skill store for retrieving data
84
82
  config: Configuration dictionary that may contain API keys
85
83
  """
86
84
 
87
- def __init__(self, agent_id: str, skill_store: SkillStoreABC, config: Dict) -> None:
85
+ def __init__(self, agent_id: str, config: Dict) -> None:
88
86
  """Initialize the Twitter client.
89
87
 
90
88
  Args:
91
89
  agent_id: The ID of the agent
92
- skill_store: The skill store for retrieving data
93
90
  config: Configuration dictionary that may contain API keys
94
91
  """
95
92
  self.agent_id = agent_id
96
93
  self._client: Optional[AsyncClient] = None
97
- self._skill_store = skill_store
98
94
  self._agent_data: Optional[AgentData] = None
99
95
  self.use_key = _is_self_key(config)
100
96
  self._config = config
101
97
 
98
+ async def _get_agent_data(self) -> AgentData:
99
+ """Retrieve cached agent data, loading from the database if needed."""
100
+
101
+ if not self._agent_data:
102
+ self._agent_data = await AgentData.get(self.agent_id)
103
+ return self._agent_data
104
+
105
+ async def _refresh_agent_data(self) -> AgentData:
106
+ """Reload agent data from the database."""
107
+
108
+ self._agent_data = await AgentData.get(self.agent_id)
109
+ return self._agent_data
110
+
102
111
  async def get_client(self) -> AsyncClient:
103
112
  """Get the initialized Twitter client.
104
113
 
105
114
  Returns:
106
115
  AsyncClient: The Twitter client if initialized
107
116
  """
108
- if not self._agent_data:
109
- self._agent_data = await self._skill_store.get_agent_data(self.agent_id)
117
+
118
+ agent_data = await self._get_agent_data()
119
+
110
120
  if not self._client:
111
121
  # Check if we have API keys in config
112
122
  if self.use_key:
@@ -118,8 +128,8 @@ class TwitterClient(TwitterABC):
118
128
  return_type=dict,
119
129
  )
120
130
  # refresh userinfo if needed
121
- if not self._agent_data.twitter_self_key_refreshed_at or (
122
- self._agent_data.twitter_self_key_refreshed_at
131
+ if not agent_data.twitter_self_key_refreshed_at or (
132
+ agent_data.twitter_self_key_refreshed_at
123
133
  < datetime.now(tz=timezone.utc) - timedelta(days=1)
124
134
  ):
125
135
  me = await self._client.get_me(
@@ -127,7 +137,7 @@ class TwitterClient(TwitterABC):
127
137
  user_fields="id,username,name,verified",
128
138
  )
129
139
  if me and "data" in me and "id" in me["data"]:
130
- await self._skill_store.set_agent_data(
140
+ await AgentData.patch(
131
141
  self.agent_id,
132
142
  {
133
143
  "twitter_id": me["data"]["id"],
@@ -139,9 +149,7 @@ class TwitterClient(TwitterABC):
139
149
  ),
140
150
  },
141
151
  )
142
- self._agent_data = await self._skill_store.get_agent_data(
143
- self.agent_id
144
- )
152
+ agent_data = await self._refresh_agent_data()
145
153
  logger.info(
146
154
  f"Twitter self key client initialized. "
147
155
  f"Use API key: {self.use_key}, "
@@ -152,39 +160,40 @@ class TwitterClient(TwitterABC):
152
160
  )
153
161
  return self._client
154
162
  # Otherwise try to get OAuth2 tokens from agent data
155
- if not self._agent_data.twitter_access_token:
163
+ if not agent_data.twitter_access_token:
156
164
  raise Exception(f"[{self.agent_id}] Twitter access token not found")
157
- if not self._agent_data.twitter_access_token_expires_at:
165
+ if not agent_data.twitter_access_token_expires_at:
158
166
  raise Exception(
159
167
  f"[{self.agent_id}] Twitter access token expiration not found"
160
168
  )
161
- if self._agent_data.twitter_access_token_expires_at <= datetime.now(
169
+ if agent_data.twitter_access_token_expires_at <= datetime.now(
162
170
  tz=timezone.utc
163
171
  ):
164
172
  raise Exception(f"[{self.agent_id}] Twitter access token has expired")
165
173
  self._client = AsyncClient(
166
- bearer_token=self._agent_data.twitter_access_token,
174
+ bearer_token=agent_data.twitter_access_token,
167
175
  return_type=dict,
168
176
  )
169
177
  return self._client
178
+
170
179
  if not self.use_key:
171
180
  # check if access token has expired
172
- if self._agent_data.twitter_access_token_expires_at <= datetime.now(
181
+ if agent_data.twitter_access_token_expires_at <= datetime.now(
173
182
  tz=timezone.utc
174
183
  ):
175
- self._agent_data = await self._skill_store.get_agent_data(self.agent_id)
176
- # check again
177
- if self._agent_data.twitter_access_token_expires_at <= datetime.now(
184
+ agent_data = await self._refresh_agent_data()
185
+ if agent_data.twitter_access_token_expires_at <= datetime.now(
178
186
  tz=timezone.utc
179
187
  ):
180
188
  raise Exception(
181
189
  f"[{self.agent_id}] Twitter access token has expired"
182
190
  )
183
191
  self._client = AsyncClient(
184
- bearer_token=self._agent_data.twitter_access_token,
192
+ bearer_token=agent_data.twitter_access_token,
185
193
  return_type=dict,
186
194
  )
187
195
  return self._client
196
+
188
197
  return self._client
189
198
 
190
199
  @property
@@ -352,7 +361,7 @@ class TwitterClient(TwitterABC):
352
361
  ValueError: If there's an error uploading the media.
353
362
  """
354
363
  # Get agent data to access the token
355
- agent_data = await self._skill_store.get_agent_data(agent_id)
364
+ agent_data = await AgentData.get(agent_id)
356
365
  if not agent_data.twitter_access_token:
357
366
  raise ValueError("Only linked X account can post media")
358
367
 
@@ -423,15 +432,13 @@ def _is_self_key(config: Dict) -> bool:
423
432
  return config.get("api_key_provider") == "agent_owner"
424
433
 
425
434
 
426
- def get_twitter_client(
427
- agent_id: str, skill_store: SkillStoreABC, config: Dict
428
- ) -> "TwitterClient":
435
+ def get_twitter_client(agent_id: str, config: Dict) -> "TwitterClient":
429
436
  if _is_self_key(config):
430
437
  if agent_id not in _clients_self_key:
431
- _clients_self_key[agent_id] = TwitterClient(agent_id, skill_store, config)
438
+ _clients_self_key[agent_id] = TwitterClient(agent_id, config)
432
439
  return _clients_self_key[agent_id]
433
440
  if agent_id not in _clients_linked:
434
- _clients_linked[agent_id] = TwitterClient(agent_id, skill_store, config)
441
+ _clients_linked[agent_id] = TwitterClient(agent_id, config)
435
442
  return _clients_linked[agent_id]
436
443
 
437
444
 
@@ -2,21 +2,19 @@ import logging
2
2
  import time
3
3
  from datetime import datetime, timedelta, timezone
4
4
  from decimal import Decimal
5
- from typing import Any, AsyncGenerator, Dict, List, Optional, Tuple
5
+ from typing import AsyncGenerator, Dict, Optional, Tuple
6
6
 
7
7
  from sqlalchemy import func, select, text, update
8
8
 
9
- from intentkit.abstracts.skill import SkillStoreABC
10
9
  from intentkit.clients.cdp import get_wallet_provider
11
10
  from intentkit.config.config import config
12
11
  from intentkit.models.agent import (
13
12
  Agent,
14
- AgentAutonomous,
15
13
  AgentCreate,
16
14
  AgentTable,
17
15
  AgentUpdate,
18
16
  )
19
- from intentkit.models.agent_data import AgentData, AgentQuota, AgentQuotaTable
17
+ from intentkit.models.agent_data import AgentData, AgentQuotaTable
20
18
  from intentkit.models.credit import (
21
19
  CreditAccount,
22
20
  CreditEventTable,
@@ -25,12 +23,6 @@ from intentkit.models.credit import (
25
23
  UpstreamType,
26
24
  )
27
25
  from intentkit.models.db import get_session
28
- from intentkit.models.skill import (
29
- AgentSkillData,
30
- AgentSkillDataCreate,
31
- ThreadSkillData,
32
- ThreadSkillDataCreate,
33
- )
34
26
  from intentkit.utils.error import IntentKitAPIError
35
27
  from intentkit.utils.slack_alert import send_slack_message
36
28
 
@@ -492,182 +484,6 @@ async def agent_action_cost(agent_id: str) -> Dict[str, Decimal]:
492
484
  return result
493
485
 
494
486
 
495
- class AgentStore(SkillStoreABC):
496
- """Implementation of skill data storage operations.
497
-
498
- This class provides concrete implementations for storing and retrieving
499
- skill-related data for both agents and threads.
500
- """
501
-
502
- @staticmethod
503
- def get_system_config(key: str) -> Any:
504
- # TODO: maybe need a whitelist here
505
- if hasattr(config, key):
506
- return getattr(config, key)
507
- return None
508
-
509
- @staticmethod
510
- async def get_agent_config(agent_id: str) -> Optional[Agent]:
511
- return await Agent.get(agent_id)
512
-
513
- @staticmethod
514
- async def get_agent_data(agent_id: str) -> AgentData:
515
- return await AgentData.get(agent_id)
516
-
517
- @staticmethod
518
- async def set_agent_data(agent_id: str, data: Dict) -> AgentData:
519
- return await AgentData.patch(agent_id, data)
520
-
521
- @staticmethod
522
- async def get_agent_quota(agent_id: str) -> AgentQuota:
523
- return await AgentQuota.get(agent_id)
524
-
525
- @staticmethod
526
- async def get_agent_skill_data(
527
- agent_id: str, skill: str, key: str
528
- ) -> Optional[Dict[str, Any]]:
529
- """Get skill data for an agent.
530
-
531
- Args:
532
- agent_id: ID of the agent
533
- skill: Name of the skill
534
- key: Data key
535
-
536
- Returns:
537
- Dictionary containing the skill data if found, None otherwise
538
- """
539
- return await AgentSkillData.get(agent_id, skill, key)
540
-
541
- @staticmethod
542
- async def save_agent_skill_data(
543
- agent_id: str, skill: str, key: str, data: Dict[str, Any]
544
- ) -> None:
545
- """Save or update skill data for an agent.
546
-
547
- Args:
548
- agent_id: ID of the agent
549
- skill: Name of the skill
550
- key: Data key
551
- data: JSON data to store
552
- """
553
- skill_data = AgentSkillDataCreate(
554
- agent_id=agent_id,
555
- skill=skill,
556
- key=key,
557
- data=data,
558
- )
559
- await skill_data.save()
560
-
561
- @staticmethod
562
- async def delete_agent_skill_data(agent_id: str, skill: str, key: str) -> None:
563
- """Delete skill data for an agent.
564
-
565
- Args:
566
- agent_id: ID of the agent
567
- skill: Name of the skill
568
- key: Data key
569
- """
570
- await AgentSkillData.delete(agent_id, skill, key)
571
-
572
- @staticmethod
573
- async def get_thread_skill_data(
574
- thread_id: str, skill: str, key: str
575
- ) -> Optional[Dict[str, Any]]:
576
- """Get skill data for a thread.
577
-
578
- Args:
579
- thread_id: ID of the thread
580
- skill: Name of the skill
581
- key: Data key
582
-
583
- Returns:
584
- Dictionary containing the skill data if found, None otherwise
585
- """
586
- return await ThreadSkillData.get(thread_id, skill, key)
587
-
588
- @staticmethod
589
- async def save_thread_skill_data(
590
- thread_id: str,
591
- agent_id: str,
592
- skill: str,
593
- key: str,
594
- data: Dict[str, Any],
595
- ) -> None:
596
- """Save or update skill data for a thread.
597
-
598
- Args:
599
- thread_id: ID of the thread
600
- agent_id: ID of the agent that owns this thread
601
- skill: Name of the skill
602
- key: Data key
603
- data: JSON data to store
604
- """
605
- skill_data = ThreadSkillDataCreate(
606
- thread_id=thread_id,
607
- agent_id=agent_id,
608
- skill=skill,
609
- key=key,
610
- data=data,
611
- )
612
- await skill_data.save()
613
-
614
- @staticmethod
615
- async def list_autonomous_tasks(agent_id: str) -> List[AgentAutonomous]:
616
- """List all autonomous tasks for an agent.
617
-
618
- Args:
619
- agent_id: ID of the agent
620
-
621
- Returns:
622
- List[AgentAutonomous]: List of autonomous task configurations
623
- """
624
- return await list_autonomous_tasks(agent_id)
625
-
626
- @staticmethod
627
- async def add_autonomous_task(
628
- agent_id: str, task: AgentAutonomous
629
- ) -> AgentAutonomous:
630
- """Add a new autonomous task to an agent.
631
-
632
- Args:
633
- agent_id: ID of the agent
634
- task: Autonomous task configuration
635
-
636
- Returns:
637
- AgentAutonomous: The created task
638
- """
639
- return await add_autonomous_task(agent_id, task)
640
-
641
- @staticmethod
642
- async def delete_autonomous_task(agent_id: str, task_id: str) -> None:
643
- """Delete an autonomous task from an agent.
644
-
645
- Args:
646
- agent_id: ID of the agent
647
- task_id: ID of the task to delete
648
- """
649
- await delete_autonomous_task(agent_id, task_id)
650
-
651
- @staticmethod
652
- async def update_autonomous_task(
653
- agent_id: str, task_id: str, task_updates: dict
654
- ) -> AgentAutonomous:
655
- """Update an autonomous task for an agent.
656
-
657
- Args:
658
- agent_id: ID of the agent
659
- task_id: ID of the task to update
660
- task_updates: Dictionary containing fields to update
661
-
662
- Returns:
663
- AgentAutonomous: The updated task
664
- """
665
- return await update_autonomous_task(agent_id, task_id, task_updates)
666
-
667
-
668
- agent_store = AgentStore()
669
-
670
-
671
487
  async def _iterate_agent_id_batches(
672
488
  batch_size: int = 100,
673
489
  ) -> AsyncGenerator[list[str], None]:
@@ -923,191 +739,3 @@ async def update_agents_statistics(
923
739
  total_updated,
924
740
  total_time,
925
741
  )
926
-
927
-
928
- async def list_autonomous_tasks(agent_id: str) -> List[AgentAutonomous]:
929
- """
930
- List all autonomous tasks for an agent.
931
-
932
- Args:
933
- agent_id: ID of the agent
934
-
935
- Returns:
936
- List[AgentAutonomous]: List of autonomous task configurations
937
-
938
- Raises:
939
- IntentKitAPIError: If agent is not found
940
- """
941
- agent = await Agent.get(agent_id)
942
- if not agent:
943
- raise IntentKitAPIError(
944
- 400, "AgentNotFound", f"Agent with ID {agent_id} does not exist."
945
- )
946
-
947
- if not agent.autonomous:
948
- return []
949
-
950
- return agent.autonomous
951
-
952
-
953
- async def add_autonomous_task(agent_id: str, task: AgentAutonomous) -> AgentAutonomous:
954
- """
955
- Add a new autonomous task to an agent.
956
-
957
- Args:
958
- agent_id: ID of the agent
959
- task: Autonomous task configuration (id will be generated if not provided)
960
-
961
- Returns:
962
- AgentAutonomous: The created task with generated ID
963
-
964
- Raises:
965
- IntentKitAPIError: If agent is not found
966
- """
967
- agent = await Agent.get(agent_id)
968
- if not agent:
969
- raise IntentKitAPIError(
970
- 400, "AgentNotFound", f"Agent with ID {agent_id} does not exist."
971
- )
972
-
973
- # Get current autonomous tasks
974
- current_tasks = agent.autonomous or []
975
- if not isinstance(current_tasks, list):
976
- current_tasks = []
977
-
978
- # Add the new task
979
- current_tasks.append(task)
980
-
981
- # Convert all AgentAutonomous objects to dictionaries for JSON serialization
982
- serializable_tasks = [task_item.model_dump() for task_item in current_tasks]
983
-
984
- # Update the agent in the database
985
- async with get_session() as session:
986
- update_stmt = (
987
- update(AgentTable)
988
- .where(AgentTable.id == agent_id)
989
- .values(autonomous=serializable_tasks)
990
- )
991
- await session.execute(update_stmt)
992
- await session.commit()
993
-
994
- logger.info(f"Added autonomous task {task.id} to agent {agent_id}")
995
- return task
996
-
997
-
998
- async def delete_autonomous_task(agent_id: str, task_id: str) -> None:
999
- """
1000
- Delete an autonomous task from an agent.
1001
-
1002
- Args:
1003
- agent_id: ID of the agent
1004
- task_id: ID of the task to delete
1005
-
1006
- Raises:
1007
- IntentKitAPIError: If agent is not found or task is not found
1008
- """
1009
- agent = await Agent.get(agent_id)
1010
- if not agent:
1011
- raise IntentKitAPIError(
1012
- 400, "AgentNotFound", f"Agent with ID {agent_id} does not exist."
1013
- )
1014
-
1015
- # Get current autonomous tasks
1016
- current_tasks = agent.autonomous or []
1017
- if not isinstance(current_tasks, list):
1018
- current_tasks = []
1019
-
1020
- # Find and remove the task
1021
- task_found = False
1022
- updated_tasks = []
1023
- for task_data in current_tasks:
1024
- if task_data.id == task_id:
1025
- task_found = True
1026
- continue
1027
- updated_tasks.append(task_data)
1028
-
1029
- if not task_found:
1030
- raise IntentKitAPIError(
1031
- 404, "TaskNotFound", f"Autonomous task with ID {task_id} not found."
1032
- )
1033
-
1034
- # Convert remaining AgentAutonomous objects to dictionaries for JSON serialization
1035
- serializable_tasks = [task_item.model_dump() for task_item in updated_tasks]
1036
-
1037
- # Update the agent in the database
1038
- async with get_session() as session:
1039
- update_stmt = (
1040
- update(AgentTable)
1041
- .where(AgentTable.id == agent_id)
1042
- .values(autonomous=serializable_tasks)
1043
- )
1044
- await session.execute(update_stmt)
1045
- await session.commit()
1046
-
1047
- logger.info(f"Deleted autonomous task {task_id} from agent {agent_id}")
1048
-
1049
-
1050
- async def update_autonomous_task(
1051
- agent_id: str, task_id: str, task_updates: dict
1052
- ) -> AgentAutonomous:
1053
- """
1054
- Update an autonomous task for an agent.
1055
-
1056
- Args:
1057
- agent_id: ID of the agent
1058
- task_id: ID of the task to update
1059
- task_updates: Dictionary containing fields to update
1060
-
1061
- Returns:
1062
- AgentAutonomous: The updated task
1063
-
1064
- Raises:
1065
- IntentKitAPIError: If agent is not found or task is not found
1066
- """
1067
- agent = await Agent.get(agent_id)
1068
- if not agent:
1069
- raise IntentKitAPIError(
1070
- 400, "AgentNotFound", f"Agent with ID {agent_id} does not exist."
1071
- )
1072
-
1073
- # Get current autonomous tasks
1074
- current_tasks: List[AgentAutonomous] = agent.autonomous or []
1075
-
1076
- # Find and update the task
1077
- task_found = False
1078
- updated_tasks: List[AgentAutonomous] = []
1079
- updated_task = None
1080
-
1081
- for task_data in current_tasks:
1082
- if task_data.id == task_id:
1083
- task_found = True
1084
- # Create a dictionary with current task data
1085
- task_dict = task_data.model_dump()
1086
- # Update with provided fields
1087
- task_dict.update(task_updates)
1088
- # Create new AgentAutonomous instance
1089
- updated_task = AgentAutonomous.model_validate(task_dict)
1090
- updated_tasks.append(updated_task)
1091
- else:
1092
- updated_tasks.append(task_data)
1093
-
1094
- if not task_found:
1095
- raise IntentKitAPIError(
1096
- 404, "TaskNotFound", f"Autonomous task with ID {task_id} not found."
1097
- )
1098
-
1099
- # Convert all AgentAutonomous objects to dictionaries for JSON serialization
1100
- serializable_tasks = [task_item.model_dump() for task_item in updated_tasks]
1101
-
1102
- # Update the agent in the database
1103
- async with get_session() as session:
1104
- update_stmt = (
1105
- update(AgentTable)
1106
- .where(AgentTable.id == agent_id)
1107
- .values(autonomous=serializable_tasks)
1108
- )
1109
- await session.execute(update_stmt)
1110
- await session.commit()
1111
-
1112
- logger.info(f"Updated autonomous task {task_id} for agent {agent_id}")
1113
- return updated_task