intentkit 0.5.0__py3-none-any.whl → 0.5.2__py3-none-any.whl

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 (366) hide show
  1. intentkit/__init__.py +17 -0
  2. intentkit/abstracts/__init__.py +0 -0
  3. intentkit/abstracts/agent.py +60 -0
  4. intentkit/abstracts/api.py +4 -0
  5. intentkit/abstracts/engine.py +38 -0
  6. intentkit/abstracts/exception.py +9 -0
  7. intentkit/abstracts/graph.py +25 -0
  8. intentkit/abstracts/skill.py +129 -0
  9. intentkit/abstracts/twitter.py +54 -0
  10. intentkit/clients/__init__.py +14 -0
  11. intentkit/clients/cdp.py +53 -0
  12. intentkit/clients/twitter.py +445 -0
  13. intentkit/config/__init__.py +0 -0
  14. intentkit/config/config.py +164 -0
  15. intentkit/core/__init__.py +0 -0
  16. intentkit/core/agent.py +191 -0
  17. intentkit/core/api.py +40 -0
  18. intentkit/core/client.py +45 -0
  19. intentkit/core/credit.py +1767 -0
  20. intentkit/core/engine.py +1018 -0
  21. intentkit/core/node.py +223 -0
  22. intentkit/core/prompt.py +58 -0
  23. intentkit/core/skill.py +124 -0
  24. intentkit/models/agent.py +1689 -0
  25. intentkit/models/agent_data.py +810 -0
  26. intentkit/models/agent_schema.json +733 -0
  27. intentkit/models/app_setting.py +156 -0
  28. intentkit/models/base.py +9 -0
  29. intentkit/models/chat.py +581 -0
  30. intentkit/models/conversation.py +286 -0
  31. intentkit/models/credit.py +1406 -0
  32. intentkit/models/db.py +120 -0
  33. intentkit/models/db_mig.py +102 -0
  34. intentkit/models/generator.py +347 -0
  35. intentkit/models/llm.py +746 -0
  36. intentkit/models/redis.py +132 -0
  37. intentkit/models/skill.py +466 -0
  38. intentkit/models/user.py +243 -0
  39. intentkit/skills/__init__.py +12 -0
  40. intentkit/skills/acolyt/__init__.py +83 -0
  41. intentkit/skills/acolyt/acolyt.jpg +0 -0
  42. intentkit/skills/acolyt/ask.py +128 -0
  43. intentkit/skills/acolyt/base.py +28 -0
  44. intentkit/skills/acolyt/schema.json +89 -0
  45. intentkit/skills/aixbt/README.md +71 -0
  46. intentkit/skills/aixbt/__init__.py +73 -0
  47. intentkit/skills/aixbt/aixbt.jpg +0 -0
  48. intentkit/skills/aixbt/base.py +21 -0
  49. intentkit/skills/aixbt/projects.py +153 -0
  50. intentkit/skills/aixbt/schema.json +99 -0
  51. intentkit/skills/allora/__init__.py +83 -0
  52. intentkit/skills/allora/allora.jpeg +0 -0
  53. intentkit/skills/allora/base.py +28 -0
  54. intentkit/skills/allora/price.py +130 -0
  55. intentkit/skills/allora/schema.json +89 -0
  56. intentkit/skills/base.py +174 -0
  57. intentkit/skills/carv/README.md +95 -0
  58. intentkit/skills/carv/__init__.py +121 -0
  59. intentkit/skills/carv/base.py +183 -0
  60. intentkit/skills/carv/carv.webp +0 -0
  61. intentkit/skills/carv/fetch_news.py +92 -0
  62. intentkit/skills/carv/onchain_query.py +164 -0
  63. intentkit/skills/carv/schema.json +137 -0
  64. intentkit/skills/carv/token_info_and_price.py +110 -0
  65. intentkit/skills/cdp/__init__.py +137 -0
  66. intentkit/skills/cdp/base.py +21 -0
  67. intentkit/skills/cdp/cdp.png +0 -0
  68. intentkit/skills/cdp/get_balance.py +81 -0
  69. intentkit/skills/cdp/schema.json +473 -0
  70. intentkit/skills/chainlist/README.md +38 -0
  71. intentkit/skills/chainlist/__init__.py +54 -0
  72. intentkit/skills/chainlist/base.py +21 -0
  73. intentkit/skills/chainlist/chain_lookup.py +208 -0
  74. intentkit/skills/chainlist/chainlist.png +0 -0
  75. intentkit/skills/chainlist/schema.json +47 -0
  76. intentkit/skills/common/__init__.py +82 -0
  77. intentkit/skills/common/base.py +21 -0
  78. intentkit/skills/common/common.jpg +0 -0
  79. intentkit/skills/common/current_time.py +84 -0
  80. intentkit/skills/common/schema.json +57 -0
  81. intentkit/skills/cookiefun/README.md +121 -0
  82. intentkit/skills/cookiefun/__init__.py +78 -0
  83. intentkit/skills/cookiefun/base.py +41 -0
  84. intentkit/skills/cookiefun/constants.py +18 -0
  85. intentkit/skills/cookiefun/cookiefun.png +0 -0
  86. intentkit/skills/cookiefun/get_account_details.py +171 -0
  87. intentkit/skills/cookiefun/get_account_feed.py +282 -0
  88. intentkit/skills/cookiefun/get_account_smart_followers.py +181 -0
  89. intentkit/skills/cookiefun/get_sectors.py +128 -0
  90. intentkit/skills/cookiefun/schema.json +155 -0
  91. intentkit/skills/cookiefun/search_accounts.py +225 -0
  92. intentkit/skills/cryptocompare/__init__.py +130 -0
  93. intentkit/skills/cryptocompare/api.py +159 -0
  94. intentkit/skills/cryptocompare/base.py +303 -0
  95. intentkit/skills/cryptocompare/cryptocompare.png +0 -0
  96. intentkit/skills/cryptocompare/fetch_news.py +96 -0
  97. intentkit/skills/cryptocompare/fetch_price.py +99 -0
  98. intentkit/skills/cryptocompare/fetch_top_exchanges.py +113 -0
  99. intentkit/skills/cryptocompare/fetch_top_market_cap.py +109 -0
  100. intentkit/skills/cryptocompare/fetch_top_volume.py +108 -0
  101. intentkit/skills/cryptocompare/fetch_trading_signals.py +107 -0
  102. intentkit/skills/cryptocompare/schema.json +168 -0
  103. intentkit/skills/cryptopanic/__init__.py +108 -0
  104. intentkit/skills/cryptopanic/base.py +51 -0
  105. intentkit/skills/cryptopanic/cryptopanic.png +0 -0
  106. intentkit/skills/cryptopanic/fetch_crypto_news.py +153 -0
  107. intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +136 -0
  108. intentkit/skills/cryptopanic/schema.json +103 -0
  109. intentkit/skills/dapplooker/README.md +92 -0
  110. intentkit/skills/dapplooker/__init__.py +83 -0
  111. intentkit/skills/dapplooker/base.py +26 -0
  112. intentkit/skills/dapplooker/dapplooker.jpg +0 -0
  113. intentkit/skills/dapplooker/dapplooker_token_data.py +476 -0
  114. intentkit/skills/dapplooker/schema.json +91 -0
  115. intentkit/skills/defillama/__init__.py +323 -0
  116. intentkit/skills/defillama/api.py +315 -0
  117. intentkit/skills/defillama/base.py +135 -0
  118. intentkit/skills/defillama/coins/__init__.py +0 -0
  119. intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +116 -0
  120. intentkit/skills/defillama/coins/fetch_block.py +98 -0
  121. intentkit/skills/defillama/coins/fetch_current_prices.py +105 -0
  122. intentkit/skills/defillama/coins/fetch_first_price.py +100 -0
  123. intentkit/skills/defillama/coins/fetch_historical_prices.py +110 -0
  124. intentkit/skills/defillama/coins/fetch_price_chart.py +109 -0
  125. intentkit/skills/defillama/coins/fetch_price_percentage.py +93 -0
  126. intentkit/skills/defillama/config/__init__.py +0 -0
  127. intentkit/skills/defillama/config/chains.py +433 -0
  128. intentkit/skills/defillama/defillama.jpeg +0 -0
  129. intentkit/skills/defillama/fees/__init__.py +0 -0
  130. intentkit/skills/defillama/fees/fetch_fees_overview.py +130 -0
  131. intentkit/skills/defillama/schema.json +383 -0
  132. intentkit/skills/defillama/stablecoins/__init__.py +0 -0
  133. intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +100 -0
  134. intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +129 -0
  135. intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +83 -0
  136. intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +126 -0
  137. intentkit/skills/defillama/tests/__init__.py +0 -0
  138. intentkit/skills/defillama/tests/api_integration.test.py +192 -0
  139. intentkit/skills/defillama/tests/api_unit.test.py +583 -0
  140. intentkit/skills/defillama/tvl/__init__.py +0 -0
  141. intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +106 -0
  142. intentkit/skills/defillama/tvl/fetch_chains.py +107 -0
  143. intentkit/skills/defillama/tvl/fetch_historical_tvl.py +91 -0
  144. intentkit/skills/defillama/tvl/fetch_protocol.py +207 -0
  145. intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +93 -0
  146. intentkit/skills/defillama/tvl/fetch_protocols.py +196 -0
  147. intentkit/skills/defillama/volumes/__init__.py +0 -0
  148. intentkit/skills/defillama/volumes/fetch_dex_overview.py +157 -0
  149. intentkit/skills/defillama/volumes/fetch_dex_summary.py +123 -0
  150. intentkit/skills/defillama/volumes/fetch_options_overview.py +131 -0
  151. intentkit/skills/defillama/yields/__init__.py +0 -0
  152. intentkit/skills/defillama/yields/fetch_pool_chart.py +100 -0
  153. intentkit/skills/defillama/yields/fetch_pools.py +126 -0
  154. intentkit/skills/dexscreener/__init__.py +93 -0
  155. intentkit/skills/dexscreener/base.py +133 -0
  156. intentkit/skills/dexscreener/dexscreener.png +0 -0
  157. intentkit/skills/dexscreener/model/__init__.py +0 -0
  158. intentkit/skills/dexscreener/model/search_token_response.py +82 -0
  159. intentkit/skills/dexscreener/schema.json +48 -0
  160. intentkit/skills/dexscreener/search_token.py +321 -0
  161. intentkit/skills/dune_analytics/__init__.py +103 -0
  162. intentkit/skills/dune_analytics/base.py +46 -0
  163. intentkit/skills/dune_analytics/dune.png +0 -0
  164. intentkit/skills/dune_analytics/fetch_kol_buys.py +128 -0
  165. intentkit/skills/dune_analytics/fetch_nation_metrics.py +237 -0
  166. intentkit/skills/dune_analytics/schema.json +99 -0
  167. intentkit/skills/elfa/README.md +100 -0
  168. intentkit/skills/elfa/__init__.py +123 -0
  169. intentkit/skills/elfa/base.py +28 -0
  170. intentkit/skills/elfa/elfa.jpg +0 -0
  171. intentkit/skills/elfa/mention.py +504 -0
  172. intentkit/skills/elfa/schema.json +153 -0
  173. intentkit/skills/elfa/stats.py +118 -0
  174. intentkit/skills/elfa/tokens.py +126 -0
  175. intentkit/skills/enso/README.md +75 -0
  176. intentkit/skills/enso/__init__.py +114 -0
  177. intentkit/skills/enso/abi/__init__.py +0 -0
  178. intentkit/skills/enso/abi/approval.py +279 -0
  179. intentkit/skills/enso/abi/erc20.py +14 -0
  180. intentkit/skills/enso/abi/route.py +129 -0
  181. intentkit/skills/enso/base.py +44 -0
  182. intentkit/skills/enso/best_yield.py +286 -0
  183. intentkit/skills/enso/enso.jpg +0 -0
  184. intentkit/skills/enso/networks.py +105 -0
  185. intentkit/skills/enso/prices.py +93 -0
  186. intentkit/skills/enso/route.py +300 -0
  187. intentkit/skills/enso/schema.json +212 -0
  188. intentkit/skills/enso/tokens.py +223 -0
  189. intentkit/skills/enso/wallet.py +381 -0
  190. intentkit/skills/github/README.md +63 -0
  191. intentkit/skills/github/__init__.py +54 -0
  192. intentkit/skills/github/base.py +21 -0
  193. intentkit/skills/github/github.jpg +0 -0
  194. intentkit/skills/github/github_search.py +183 -0
  195. intentkit/skills/github/schema.json +59 -0
  196. intentkit/skills/heurist/__init__.py +143 -0
  197. intentkit/skills/heurist/base.py +26 -0
  198. intentkit/skills/heurist/heurist.png +0 -0
  199. intentkit/skills/heurist/image_generation_animagine_xl.py +162 -0
  200. intentkit/skills/heurist/image_generation_arthemy_comics.py +162 -0
  201. intentkit/skills/heurist/image_generation_arthemy_real.py +162 -0
  202. intentkit/skills/heurist/image_generation_braindance.py +162 -0
  203. intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +162 -0
  204. intentkit/skills/heurist/image_generation_flux_1_dev.py +162 -0
  205. intentkit/skills/heurist/image_generation_sdxl.py +161 -0
  206. intentkit/skills/heurist/schema.json +196 -0
  207. intentkit/skills/lifi/README.md +294 -0
  208. intentkit/skills/lifi/__init__.py +141 -0
  209. intentkit/skills/lifi/base.py +21 -0
  210. intentkit/skills/lifi/lifi.png +0 -0
  211. intentkit/skills/lifi/schema.json +89 -0
  212. intentkit/skills/lifi/token_execute.py +472 -0
  213. intentkit/skills/lifi/token_quote.py +190 -0
  214. intentkit/skills/lifi/utils.py +656 -0
  215. intentkit/skills/moralis/README.md +490 -0
  216. intentkit/skills/moralis/__init__.py +110 -0
  217. intentkit/skills/moralis/api.py +281 -0
  218. intentkit/skills/moralis/base.py +55 -0
  219. intentkit/skills/moralis/fetch_chain_portfolio.py +191 -0
  220. intentkit/skills/moralis/fetch_nft_portfolio.py +284 -0
  221. intentkit/skills/moralis/fetch_solana_portfolio.py +331 -0
  222. intentkit/skills/moralis/fetch_wallet_portfolio.py +301 -0
  223. intentkit/skills/moralis/moralis.png +0 -0
  224. intentkit/skills/moralis/schema.json +156 -0
  225. intentkit/skills/moralis/tests/__init__.py +0 -0
  226. intentkit/skills/moralis/tests/test_wallet.py +511 -0
  227. intentkit/skills/nation/__init__.py +62 -0
  228. intentkit/skills/nation/base.py +31 -0
  229. intentkit/skills/nation/nation.png +0 -0
  230. intentkit/skills/nation/nft_check.py +106 -0
  231. intentkit/skills/nation/schema.json +58 -0
  232. intentkit/skills/openai/__init__.py +107 -0
  233. intentkit/skills/openai/base.py +32 -0
  234. intentkit/skills/openai/dalle_image_generation.py +128 -0
  235. intentkit/skills/openai/gpt_image_generation.py +152 -0
  236. intentkit/skills/openai/gpt_image_to_image.py +186 -0
  237. intentkit/skills/openai/image_to_text.py +126 -0
  238. intentkit/skills/openai/openai.png +0 -0
  239. intentkit/skills/openai/schema.json +139 -0
  240. intentkit/skills/portfolio/README.md +55 -0
  241. intentkit/skills/portfolio/__init__.py +151 -0
  242. intentkit/skills/portfolio/base.py +107 -0
  243. intentkit/skills/portfolio/constants.py +9 -0
  244. intentkit/skills/portfolio/moralis.png +0 -0
  245. intentkit/skills/portfolio/schema.json +237 -0
  246. intentkit/skills/portfolio/token_balances.py +155 -0
  247. intentkit/skills/portfolio/wallet_approvals.py +102 -0
  248. intentkit/skills/portfolio/wallet_defi_positions.py +80 -0
  249. intentkit/skills/portfolio/wallet_history.py +155 -0
  250. intentkit/skills/portfolio/wallet_net_worth.py +112 -0
  251. intentkit/skills/portfolio/wallet_nfts.py +139 -0
  252. intentkit/skills/portfolio/wallet_profitability.py +101 -0
  253. intentkit/skills/portfolio/wallet_profitability_summary.py +91 -0
  254. intentkit/skills/portfolio/wallet_stats.py +79 -0
  255. intentkit/skills/portfolio/wallet_swaps.py +147 -0
  256. intentkit/skills/skills.toml +103 -0
  257. intentkit/skills/slack/__init__.py +98 -0
  258. intentkit/skills/slack/base.py +55 -0
  259. intentkit/skills/slack/get_channel.py +109 -0
  260. intentkit/skills/slack/get_message.py +136 -0
  261. intentkit/skills/slack/schedule_message.py +92 -0
  262. intentkit/skills/slack/schema.json +135 -0
  263. intentkit/skills/slack/send_message.py +81 -0
  264. intentkit/skills/slack/slack.jpg +0 -0
  265. intentkit/skills/system/__init__.py +90 -0
  266. intentkit/skills/system/base.py +22 -0
  267. intentkit/skills/system/read_agent_api_key.py +87 -0
  268. intentkit/skills/system/regenerate_agent_api_key.py +77 -0
  269. intentkit/skills/system/schema.json +53 -0
  270. intentkit/skills/system/system.svg +76 -0
  271. intentkit/skills/tavily/README.md +86 -0
  272. intentkit/skills/tavily/__init__.py +91 -0
  273. intentkit/skills/tavily/base.py +27 -0
  274. intentkit/skills/tavily/schema.json +119 -0
  275. intentkit/skills/tavily/tavily.jpg +0 -0
  276. intentkit/skills/tavily/tavily_extract.py +147 -0
  277. intentkit/skills/tavily/tavily_search.py +139 -0
  278. intentkit/skills/token/README.md +89 -0
  279. intentkit/skills/token/__init__.py +107 -0
  280. intentkit/skills/token/base.py +154 -0
  281. intentkit/skills/token/constants.py +9 -0
  282. intentkit/skills/token/erc20_transfers.py +145 -0
  283. intentkit/skills/token/moralis.png +0 -0
  284. intentkit/skills/token/schema.json +141 -0
  285. intentkit/skills/token/token_analytics.py +81 -0
  286. intentkit/skills/token/token_price.py +132 -0
  287. intentkit/skills/token/token_search.py +121 -0
  288. intentkit/skills/twitter/__init__.py +146 -0
  289. intentkit/skills/twitter/base.py +68 -0
  290. intentkit/skills/twitter/follow_user.py +69 -0
  291. intentkit/skills/twitter/get_mentions.py +124 -0
  292. intentkit/skills/twitter/get_timeline.py +111 -0
  293. intentkit/skills/twitter/get_user_by_username.py +84 -0
  294. intentkit/skills/twitter/get_user_tweets.py +123 -0
  295. intentkit/skills/twitter/like_tweet.py +65 -0
  296. intentkit/skills/twitter/post_tweet.py +90 -0
  297. intentkit/skills/twitter/reply_tweet.py +98 -0
  298. intentkit/skills/twitter/retweet.py +76 -0
  299. intentkit/skills/twitter/schema.json +258 -0
  300. intentkit/skills/twitter/search_tweets.py +115 -0
  301. intentkit/skills/twitter/twitter.png +0 -0
  302. intentkit/skills/unrealspeech/__init__.py +55 -0
  303. intentkit/skills/unrealspeech/base.py +21 -0
  304. intentkit/skills/unrealspeech/schema.json +100 -0
  305. intentkit/skills/unrealspeech/text_to_speech.py +177 -0
  306. intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
  307. intentkit/skills/venice_audio/__init__.py +106 -0
  308. intentkit/skills/venice_audio/base.py +119 -0
  309. intentkit/skills/venice_audio/input.py +41 -0
  310. intentkit/skills/venice_audio/schema.json +152 -0
  311. intentkit/skills/venice_audio/venice_audio.py +240 -0
  312. intentkit/skills/venice_audio/venice_logo.jpg +0 -0
  313. intentkit/skills/venice_image/README.md +119 -0
  314. intentkit/skills/venice_image/__init__.py +154 -0
  315. intentkit/skills/venice_image/api.py +138 -0
  316. intentkit/skills/venice_image/base.py +188 -0
  317. intentkit/skills/venice_image/config.py +35 -0
  318. intentkit/skills/venice_image/image_enhance/README.md +119 -0
  319. intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
  320. intentkit/skills/venice_image/image_enhance/image_enhance.py +80 -0
  321. intentkit/skills/venice_image/image_enhance/image_enhance_base.py +23 -0
  322. intentkit/skills/venice_image/image_enhance/image_enhance_input.py +40 -0
  323. intentkit/skills/venice_image/image_generation/README.md +144 -0
  324. intentkit/skills/venice_image/image_generation/__init__.py +0 -0
  325. intentkit/skills/venice_image/image_generation/image_generation_base.py +117 -0
  326. intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -0
  327. intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -0
  328. intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -0
  329. intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -0
  330. intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -0
  331. intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -0
  332. intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -0
  333. intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -0
  334. intentkit/skills/venice_image/image_upscale/README.md +111 -0
  335. intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
  336. intentkit/skills/venice_image/image_upscale/image_upscale.py +90 -0
  337. intentkit/skills/venice_image/image_upscale/image_upscale_base.py +23 -0
  338. intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -0
  339. intentkit/skills/venice_image/image_vision/README.md +112 -0
  340. intentkit/skills/venice_image/image_vision/__init__.py +0 -0
  341. intentkit/skills/venice_image/image_vision/image_vision.py +100 -0
  342. intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -0
  343. intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -0
  344. intentkit/skills/venice_image/schema.json +267 -0
  345. intentkit/skills/venice_image/utils.py +78 -0
  346. intentkit/skills/venice_image/venice_image.jpg +0 -0
  347. intentkit/skills/web_scraper/README.md +82 -0
  348. intentkit/skills/web_scraper/__init__.py +92 -0
  349. intentkit/skills/web_scraper/base.py +21 -0
  350. intentkit/skills/web_scraper/langchain.png +0 -0
  351. intentkit/skills/web_scraper/schema.json +115 -0
  352. intentkit/skills/web_scraper/scrape_and_index.py +327 -0
  353. intentkit/utils/__init__.py +1 -0
  354. intentkit/utils/chain.py +436 -0
  355. intentkit/utils/error.py +134 -0
  356. intentkit/utils/logging.py +70 -0
  357. intentkit/utils/middleware.py +61 -0
  358. intentkit/utils/random.py +16 -0
  359. intentkit/utils/s3.py +267 -0
  360. intentkit/utils/slack_alert.py +79 -0
  361. intentkit/utils/tx.py +37 -0
  362. {intentkit-0.5.0.dist-info → intentkit-0.5.2.dist-info}/METADATA +1 -1
  363. intentkit-0.5.2.dist-info/RECORD +365 -0
  364. intentkit-0.5.0.dist-info/RECORD +0 -4
  365. {intentkit-0.5.0.dist-info → intentkit-0.5.2.dist-info}/WHEEL +0 -0
  366. {intentkit-0.5.0.dist-info → intentkit-0.5.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,162 @@
1
+ import logging
2
+ from typing import Optional, Type
3
+
4
+ import httpx
5
+ from epyxid import XID
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.heurist.base import HeuristBaseTool
10
+ from intentkit.utils.s3 import store_image
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ class ImageGenerationArthemyComicsInput(BaseModel):
16
+ """Input for ImageGenerationArthemyComics tool."""
17
+
18
+ prompt: str = Field(
19
+ description="Text prompt describing the image to generate.",
20
+ )
21
+ neg_prompt: Optional[str] = Field(
22
+ default="(worst quality: 1.4), bad quality, nsfw",
23
+ description="Negative prompt describing what to avoid in the generated image.",
24
+ )
25
+ width: Optional[int] = Field(
26
+ default=1024,
27
+ le=1024,
28
+ description="Width of the generated image.",
29
+ )
30
+ height: Optional[int] = Field(
31
+ default=1024,
32
+ le=1024,
33
+ description="Height of the generated image.",
34
+ )
35
+
36
+
37
+ class ImageGenerationArthemyComics(HeuristBaseTool):
38
+ """Tool for generating comic-style images using Heurist AI's ArthemyComics model.
39
+
40
+ This tool takes a text prompt and uses Heurist's API to generate
41
+ a comic-style image based on the description.
42
+
43
+ Attributes:
44
+ name: The name of the tool.
45
+ description: A description of what the tool does.
46
+ args_schema: The schema for the tool's input arguments.
47
+ """
48
+
49
+ name: str = "heurist_image_generation_arthemy_comics"
50
+ description: str = (
51
+ "Generate comic-style images using Heurist AI's ArthemyComics model.\n"
52
+ "Provide a text prompt describing the comic-style image you want to generate.\n"
53
+ "ArthemyComics specializes in creating vibrant, stylized comic book illustrations.\n"
54
+ "If you have height and width, remember to specify them.\n"
55
+ )
56
+ args_schema: Type[BaseModel] = ImageGenerationArthemyComicsInput
57
+
58
+ async def _arun(
59
+ self,
60
+ prompt: str,
61
+ neg_prompt: Optional[str] = "(worst quality: 1.4), bad quality, nsfw",
62
+ width: Optional[int] = 1024,
63
+ height: Optional[int] = 680,
64
+ config: RunnableConfig = None,
65
+ **kwargs,
66
+ ) -> str:
67
+ """Implementation of the tool to generate comic-style images using Heurist AI's ArthemyComics model.
68
+
69
+ Args:
70
+ prompt: Text prompt describing the image to generate.
71
+ neg_prompt: Negative prompt describing what to avoid in the generated image.
72
+ width: Width of the generated image.
73
+ height: Height of the generated image.
74
+ config: Configuration for the runnable.
75
+
76
+ Returns:
77
+ str: URL of the generated image.
78
+ """
79
+ context = self.context_from_config(config)
80
+ skill_config = context.config
81
+
82
+ # Get the Heurist API key from the skill store
83
+ if "api_key" in skill_config and skill_config["api_key"]:
84
+ api_key = skill_config["api_key"]
85
+ if skill_config.get("rate_limit_number") and skill_config.get(
86
+ "rate_limit_minutes"
87
+ ):
88
+ await self.user_rate_limit_by_category(
89
+ context.user_id,
90
+ skill_config["rate_limit_number"],
91
+ skill_config["rate_limit_minutes"],
92
+ )
93
+ else:
94
+ api_key = self.skill_store.get_system_config("heurist_api_key")
95
+ await self.user_rate_limit_by_category(context.user_id, 10, 1440)
96
+
97
+ # Generate a unique job ID
98
+ job_id = str(XID())
99
+
100
+ # Prepare the request payload
101
+ payload = {
102
+ "job_id": job_id,
103
+ "model_input": {
104
+ "SD": {
105
+ "prompt": prompt,
106
+ "neg_prompt": neg_prompt,
107
+ "num_iterations": 25,
108
+ "width": width,
109
+ "height": height,
110
+ "guidance_scale": 5,
111
+ "seed": -1,
112
+ }
113
+ },
114
+ "model_id": "ArthemyComics",
115
+ "deadline": 120,
116
+ "priority": 1,
117
+ }
118
+ logger.debug(f"Heurist API payload: {payload}")
119
+
120
+ headers = {
121
+ "Authorization": f"Bearer {api_key}",
122
+ "Content-Type": "application/json",
123
+ }
124
+
125
+ try:
126
+ # Make the API request
127
+ async with httpx.AsyncClient() as client:
128
+ response = await client.post(
129
+ "http://sequencer.heurist.xyz/submit_job",
130
+ json=payload,
131
+ headers=headers,
132
+ timeout=120,
133
+ )
134
+ logger.debug(f"Heurist API response: {response.text}")
135
+ response.raise_for_status()
136
+
137
+ # Store the image URL
138
+ image_url = response.text.strip('"')
139
+ # Generate a key with agent ID as prefix
140
+ image_key = f"{context.agent.id}/heurist/{job_id}"
141
+ # Store the image and get the CDN URL
142
+ stored_url = await store_image(image_url, image_key)
143
+
144
+ # Return the stored image URL
145
+ return stored_url
146
+
147
+ except httpx.HTTPStatusError as e:
148
+ # Extract error details from response
149
+ try:
150
+ error_json = e.response.json()
151
+ error_code = error_json.get("error", "")
152
+ error_message = error_json.get("message", "")
153
+ full_error = f"Heurist API error: Error code: {error_code}, Message: {error_message}"
154
+ except Exception:
155
+ full_error = f"Heurist API error: {e}"
156
+
157
+ logger.error(full_error)
158
+ raise Exception(full_error)
159
+
160
+ except Exception as e:
161
+ logger.error(f"Error generating image with Heurist: {e}")
162
+ raise Exception(f"Error generating image with Heurist: {str(e)}")
@@ -0,0 +1,162 @@
1
+ import logging
2
+ from typing import Optional, Type
3
+
4
+ import httpx
5
+ from epyxid import XID
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.heurist.base import HeuristBaseTool
10
+ from intentkit.utils.s3 import store_image
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ class ImageGenerationArthemyRealInput(BaseModel):
16
+ """Input for ImageGenerationArthemyReal tool."""
17
+
18
+ prompt: str = Field(
19
+ description="Text prompt describing the image to generate.",
20
+ )
21
+ neg_prompt: Optional[str] = Field(
22
+ default="(worst quality: 1.4), bad quality, nsfw",
23
+ description="Negative prompt describing what to avoid in the generated image.",
24
+ )
25
+ width: Optional[int] = Field(
26
+ default=1024,
27
+ le=1024,
28
+ description="Width of the generated image.",
29
+ )
30
+ height: Optional[int] = Field(
31
+ default=1024,
32
+ le=1024,
33
+ description="Height of the generated image.",
34
+ )
35
+
36
+
37
+ class ImageGenerationArthemyReal(HeuristBaseTool):
38
+ """Tool for generating realistic images using Heurist AI's ArthemyReal model.
39
+
40
+ This tool takes a text prompt and uses Heurist's API to generate
41
+ a realistic image based on the description.
42
+
43
+ Attributes:
44
+ name: The name of the tool.
45
+ description: A description of what the tool does.
46
+ args_schema: The schema for the tool's input arguments.
47
+ """
48
+
49
+ name: str = "heurist_image_generation_arthemy_real"
50
+ description: str = (
51
+ "Generate realistic images using Heurist AI's ArthemyReal model.\n"
52
+ "Provide a text prompt describing the realistic image you want to generate.\n"
53
+ "ArthemyReal specializes in creating photorealistic, lifelike images with fine details.\n"
54
+ "If you have height and width, remember to specify them.\n"
55
+ )
56
+ args_schema: Type[BaseModel] = ImageGenerationArthemyRealInput
57
+
58
+ async def _arun(
59
+ self,
60
+ prompt: str,
61
+ neg_prompt: Optional[str] = "(worst quality: 1.4), bad quality, nsfw",
62
+ width: Optional[int] = 1024,
63
+ height: Optional[int] = 680,
64
+ config: RunnableConfig = None,
65
+ **kwargs,
66
+ ) -> str:
67
+ """Implementation of the tool to generate realistic images using Heurist AI's ArthemyReal model.
68
+
69
+ Args:
70
+ prompt: Text prompt describing the image to generate.
71
+ neg_prompt: Negative prompt describing what to avoid in the generated image.
72
+ width: Width of the generated image.
73
+ height: Height of the generated image.
74
+ config: Configuration for the runnable.
75
+
76
+ Returns:
77
+ str: URL of the generated image.
78
+ """
79
+ context = self.context_from_config(config)
80
+ skill_config = context.config
81
+
82
+ # Get the Heurist API key from the skill store
83
+ if "api_key" in skill_config and skill_config["api_key"]:
84
+ api_key = skill_config["api_key"]
85
+ if skill_config.get("rate_limit_number") and skill_config.get(
86
+ "rate_limit_minutes"
87
+ ):
88
+ await self.user_rate_limit_by_category(
89
+ context.user_id,
90
+ skill_config["rate_limit_number"],
91
+ skill_config["rate_limit_minutes"],
92
+ )
93
+ else:
94
+ api_key = self.skill_store.get_system_config("heurist_api_key")
95
+ await self.user_rate_limit_by_category(context.user_id, 10, 1440)
96
+
97
+ # Generate a unique job ID
98
+ job_id = str(XID())
99
+
100
+ # Prepare the request payload
101
+ payload = {
102
+ "job_id": job_id,
103
+ "model_input": {
104
+ "SD": {
105
+ "prompt": prompt,
106
+ "neg_prompt": neg_prompt,
107
+ "num_iterations": 25,
108
+ "width": width,
109
+ "height": height,
110
+ "guidance_scale": 5,
111
+ "seed": -1,
112
+ }
113
+ },
114
+ "model_id": "ArthemyReal",
115
+ "deadline": 120,
116
+ "priority": 1,
117
+ }
118
+ logger.debug(f"Heurist API payload: {payload}")
119
+
120
+ headers = {
121
+ "Authorization": f"Bearer {api_key}",
122
+ "Content-Type": "application/json",
123
+ }
124
+
125
+ try:
126
+ # Make the API request
127
+ async with httpx.AsyncClient() as client:
128
+ response = await client.post(
129
+ "http://sequencer.heurist.xyz/submit_job",
130
+ json=payload,
131
+ headers=headers,
132
+ timeout=120,
133
+ )
134
+ logger.debug(f"Heurist API response: {response.text}")
135
+ response.raise_for_status()
136
+
137
+ # Store the image URL
138
+ image_url = response.text.strip('"')
139
+ # Generate a key with agent ID as prefix
140
+ image_key = f"{context.agent.id}/heurist/{job_id}"
141
+ # Store the image and get the CDN URL
142
+ stored_url = await store_image(image_url, image_key)
143
+
144
+ # Return the stored image URL
145
+ return stored_url
146
+
147
+ except httpx.HTTPStatusError as e:
148
+ # Extract error details from response
149
+ try:
150
+ error_json = e.response.json()
151
+ error_code = error_json.get("error", "")
152
+ error_message = error_json.get("message", "")
153
+ full_error = f"Heurist API error: Error code: {error_code}, Message: {error_message}"
154
+ except Exception:
155
+ full_error = f"Heurist API error: {e}"
156
+
157
+ logger.error(full_error)
158
+ raise Exception(full_error)
159
+
160
+ except Exception as e:
161
+ logger.error(f"Error generating image with Heurist: {e}")
162
+ raise Exception(f"Error generating image with Heurist: {str(e)}")
@@ -0,0 +1,162 @@
1
+ import logging
2
+ from typing import Optional, Type
3
+
4
+ import httpx
5
+ from epyxid import XID
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.heurist.base import HeuristBaseTool
10
+ from intentkit.utils.s3 import store_image
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ class ImageGenerationBrainDanceInput(BaseModel):
16
+ """Input for ImageGenerationBrainDance tool."""
17
+
18
+ prompt: str = Field(
19
+ description="Text prompt describing the image to generate.",
20
+ )
21
+ neg_prompt: Optional[str] = Field(
22
+ default="(worst quality: 1.4), bad quality, nsfw",
23
+ description="Negative prompt describing what to avoid in the generated image.",
24
+ )
25
+ width: Optional[int] = Field(
26
+ default=1024,
27
+ le=1024,
28
+ description="Width of the generated image.",
29
+ )
30
+ height: Optional[int] = Field(
31
+ default=1024,
32
+ le=1024,
33
+ description="Height of the generated image.",
34
+ )
35
+
36
+
37
+ class ImageGenerationBrainDance(HeuristBaseTool):
38
+ """Tool for generating artistic images using Heurist AI's BrainDance model.
39
+
40
+ This tool takes a text prompt and uses Heurist's API to generate
41
+ an artistic image based on the description.
42
+
43
+ Attributes:
44
+ name: The name of the tool.
45
+ description: A description of what the tool does.
46
+ args_schema: The schema for the tool's input arguments.
47
+ """
48
+
49
+ name: str = "heurist_image_generation_braindance"
50
+ description: str = (
51
+ "Generate artistic images using Heurist AI's BrainDance model.\n"
52
+ "Provide a text prompt describing the artistic image you want to generate.\n"
53
+ "BrainDance specializes in creating unique, artistic interpretations with creative flair.\n"
54
+ "If you have height and width, remember to specify them.\n"
55
+ )
56
+ args_schema: Type[BaseModel] = ImageGenerationBrainDanceInput
57
+
58
+ async def _arun(
59
+ self,
60
+ prompt: str,
61
+ neg_prompt: Optional[str] = "(worst quality: 1.4), bad quality, nsfw",
62
+ width: Optional[int] = 1024,
63
+ height: Optional[int] = 680,
64
+ config: RunnableConfig = None,
65
+ **kwargs,
66
+ ) -> str:
67
+ """Implementation of the tool to generate artistic images using Heurist AI's BrainDance model.
68
+
69
+ Args:
70
+ prompt: Text prompt describing the image to generate.
71
+ neg_prompt: Negative prompt describing what to avoid in the generated image.
72
+ width: Width of the generated image.
73
+ height: Height of the generated image.
74
+ config: Configuration for the runnable.
75
+
76
+ Returns:
77
+ str: URL of the generated image.
78
+ """
79
+ context = self.context_from_config(config)
80
+ skill_config = context.config
81
+
82
+ # Get the Heurist API key from the skill store
83
+ if "api_key" in skill_config and skill_config["api_key"]:
84
+ api_key = skill_config["api_key"]
85
+ if skill_config.get("rate_limit_number") and skill_config.get(
86
+ "rate_limit_minutes"
87
+ ):
88
+ await self.user_rate_limit_by_category(
89
+ context.user_id,
90
+ skill_config["rate_limit_number"],
91
+ skill_config["rate_limit_minutes"],
92
+ )
93
+ else:
94
+ api_key = self.skill_store.get_system_config("heurist_api_key")
95
+ await self.user_rate_limit_by_category(context.user_id, 10, 1440)
96
+
97
+ # Generate a unique job ID
98
+ job_id = str(XID())
99
+
100
+ # Prepare the request payload
101
+ payload = {
102
+ "job_id": job_id,
103
+ "model_input": {
104
+ "SD": {
105
+ "prompt": prompt,
106
+ "neg_prompt": neg_prompt,
107
+ "num_iterations": 25,
108
+ "width": width,
109
+ "height": height,
110
+ "guidance_scale": 5,
111
+ "seed": -1,
112
+ }
113
+ },
114
+ "model_id": "BrainDance",
115
+ "deadline": 120,
116
+ "priority": 1,
117
+ }
118
+ logger.debug(f"Heurist API payload: {payload}")
119
+
120
+ headers = {
121
+ "Authorization": f"Bearer {api_key}",
122
+ "Content-Type": "application/json",
123
+ }
124
+
125
+ try:
126
+ # Make the API request
127
+ async with httpx.AsyncClient() as client:
128
+ response = await client.post(
129
+ "http://sequencer.heurist.xyz/submit_job",
130
+ json=payload,
131
+ headers=headers,
132
+ timeout=120,
133
+ )
134
+ logger.debug(f"Heurist API response: {response.text}")
135
+ response.raise_for_status()
136
+
137
+ # Store the image URL
138
+ image_url = response.text.strip('"')
139
+ # Generate a key with agent ID as prefix
140
+ image_key = f"{context.agent.id}/heurist/{job_id}"
141
+ # Store the image and get the CDN URL
142
+ stored_url = await store_image(image_url, image_key)
143
+
144
+ # Return the stored image URL
145
+ return stored_url
146
+
147
+ except httpx.HTTPStatusError as e:
148
+ # Extract error details from response
149
+ try:
150
+ error_json = e.response.json()
151
+ error_code = error_json.get("error", "")
152
+ error_message = error_json.get("message", "")
153
+ full_error = f"Heurist API error: Error code: {error_code}, Message: {error_message}"
154
+ except Exception:
155
+ full_error = f"Heurist API error: {e}"
156
+
157
+ logger.error(full_error)
158
+ raise Exception(full_error)
159
+
160
+ except Exception as e:
161
+ logger.error(f"Error generating image with Heurist: {e}")
162
+ raise Exception(f"Error generating image with Heurist: {str(e)}")
@@ -0,0 +1,162 @@
1
+ import logging
2
+ from typing import Optional, Type
3
+
4
+ import httpx
5
+ from epyxid import XID
6
+ from langchain_core.runnables import RunnableConfig
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.heurist.base import HeuristBaseTool
10
+ from intentkit.utils.s3 import store_image
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ class ImageGenerationCyberRealisticXLInput(BaseModel):
16
+ """Input for ImageGenerationCyberRealisticXL tool."""
17
+
18
+ prompt: str = Field(
19
+ description="Text prompt describing the image to generate.",
20
+ )
21
+ neg_prompt: Optional[str] = Field(
22
+ default="(worst quality: 1.4), bad quality, nsfw",
23
+ description="Negative prompt describing what to avoid in the generated image.",
24
+ )
25
+ width: Optional[int] = Field(
26
+ default=1024,
27
+ le=1024,
28
+ description="Width of the generated image.",
29
+ )
30
+ height: Optional[int] = Field(
31
+ default=680,
32
+ le=1024,
33
+ description="Height of the generated image.",
34
+ )
35
+
36
+
37
+ class ImageGenerationCyberRealisticXL(HeuristBaseTool):
38
+ """Tool for generating hyperrealistic cyberpunk images using Heurist AI's CyberRealisticXL model.
39
+
40
+ This tool takes a text prompt and uses Heurist's API to generate
41
+ a hyperrealistic photograph with a cyberpunk aesthetic based on the description.
42
+
43
+ Attributes:
44
+ name: The name of the tool.
45
+ description: A description of what the tool does.
46
+ args_schema: The schema for the tool's input arguments.
47
+ """
48
+
49
+ name: str = "heurist_image_generation_cyber_realistic_xl"
50
+ description: str = (
51
+ "Generate hyperrealistic cyberpunk photography using Heurist AI's CyberRealisticXL model.\n"
52
+ "Provide a text prompt describing the hyperrealistic cyberpunk image you want to generate.\n"
53
+ "CyberRealisticXL specializes in creating high-quality hyperrealistic photographs with a cyberpunk aesthetic.\n"
54
+ "If you have height and width, remember to specify them.\n"
55
+ )
56
+ args_schema: Type[BaseModel] = ImageGenerationCyberRealisticXLInput
57
+
58
+ async def _arun(
59
+ self,
60
+ prompt: str,
61
+ neg_prompt: Optional[str] = "(worst quality: 1.4), bad quality, nsfw",
62
+ width: Optional[int] = 1024,
63
+ height: Optional[int] = 680,
64
+ config: RunnableConfig = None,
65
+ **kwargs,
66
+ ) -> str:
67
+ """Implementation of the tool to generate hyperrealistic cyberpunk images using Heurist AI's CyberRealisticXL model.
68
+
69
+ Args:
70
+ prompt: Text prompt describing the image to generate.
71
+ neg_prompt: Negative prompt describing what to avoid in the generated image.
72
+ width: Width of the generated image.
73
+ height: Height of the generated image.
74
+ config: Configuration for the runnable.
75
+
76
+ Returns:
77
+ str: URL of the generated image.
78
+ """
79
+ context = self.context_from_config(config)
80
+ skill_config = context.config
81
+
82
+ # Get the Heurist API key from the skill store
83
+ if "api_key" in skill_config and skill_config["api_key"]:
84
+ api_key = skill_config["api_key"]
85
+ if skill_config.get("rate_limit_number") and skill_config.get(
86
+ "rate_limit_minutes"
87
+ ):
88
+ await self.user_rate_limit_by_category(
89
+ context.user_id,
90
+ skill_config["rate_limit_number"],
91
+ skill_config["rate_limit_minutes"],
92
+ )
93
+ else:
94
+ api_key = self.skill_store.get_system_config("heurist_api_key")
95
+ await self.user_rate_limit_by_category(context.user_id, 10, 1440)
96
+
97
+ # Generate a unique job ID
98
+ job_id = str(XID())
99
+
100
+ # Prepare the request payload
101
+ payload = {
102
+ "job_id": job_id,
103
+ "model_input": {
104
+ "SD": {
105
+ "prompt": prompt,
106
+ "neg_prompt": neg_prompt,
107
+ "num_iterations": 25,
108
+ "width": width,
109
+ "height": height,
110
+ "guidance_scale": 5,
111
+ "seed": -1,
112
+ }
113
+ },
114
+ "model_id": "CyberRealisticXL",
115
+ "deadline": 180,
116
+ "priority": 1,
117
+ }
118
+ logger.debug(f"Heurist API payload: {payload}")
119
+
120
+ headers = {
121
+ "Authorization": f"Bearer {api_key}",
122
+ "Content-Type": "application/json",
123
+ }
124
+
125
+ try:
126
+ # Make the API request
127
+ async with httpx.AsyncClient() as client:
128
+ response = await client.post(
129
+ "http://sequencer.heurist.xyz/submit_job",
130
+ json=payload,
131
+ headers=headers,
132
+ timeout=120,
133
+ )
134
+ logger.debug(f"Heurist API response: {response.text}")
135
+ response.raise_for_status()
136
+
137
+ # Store the image URL
138
+ image_url = response.text.strip('"')
139
+ # Generate a key with agent ID as prefix
140
+ image_key = f"{context.agent.id}/heurist/{job_id}"
141
+ # Store the image and get the CDN URL
142
+ stored_url = await store_image(image_url, image_key)
143
+
144
+ # Return the stored image URL
145
+ return stored_url
146
+
147
+ except httpx.HTTPStatusError as e:
148
+ # Extract error details from response
149
+ try:
150
+ error_json = e.response.json()
151
+ error_code = error_json.get("error", "")
152
+ error_message = error_json.get("message", "")
153
+ full_error = f"Heurist API error: Error code: {error_code}, Message: {error_message}"
154
+ except Exception:
155
+ full_error = f"Heurist API error: {e}"
156
+
157
+ logger.error(full_error)
158
+ raise Exception(full_error)
159
+
160
+ except Exception as e:
161
+ logger.error(f"Error generating image with Heurist: {e}")
162
+ raise Exception(f"Error generating image with Heurist: {str(e)}")