intentkit 0.8.16.dev1__py3-none-any.whl → 0.8.17.dev2__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 (274) hide show
  1. intentkit/__init__.py +1 -1
  2. intentkit/abstracts/agent.py +4 -5
  3. intentkit/abstracts/engine.py +5 -5
  4. intentkit/abstracts/graph.py +6 -5
  5. intentkit/abstracts/skill.py +5 -5
  6. intentkit/abstracts/twitter.py +4 -5
  7. intentkit/clients/cdp.py +19 -77
  8. intentkit/clients/twitter.py +26 -34
  9. intentkit/clients/web3.py +1 -3
  10. intentkit/config/config.py +4 -0
  11. intentkit/core/agent.py +15 -15
  12. intentkit/core/asset.py +1 -2
  13. intentkit/core/client.py +1 -1
  14. intentkit/core/credit.py +19 -20
  15. intentkit/core/engine.py +2 -4
  16. intentkit/core/node.py +2 -1
  17. intentkit/core/prompt.py +3 -4
  18. intentkit/core/scheduler.py +1 -1
  19. intentkit/core/statistics.py +6 -7
  20. intentkit/models/agent.py +125 -92
  21. intentkit/models/agent_data.py +62 -36
  22. intentkit/models/app_setting.py +6 -6
  23. intentkit/models/chat.py +27 -24
  24. intentkit/models/conversation.py +8 -8
  25. intentkit/models/credit.py +62 -64
  26. intentkit/models/db.py +8 -7
  27. intentkit/models/db_mig.py +2 -2
  28. intentkit/models/llm.py +12 -14
  29. intentkit/models/redis.py +2 -3
  30. intentkit/models/skill.py +25 -27
  31. intentkit/models/skills.csv +29 -28
  32. intentkit/models/user.py +21 -22
  33. intentkit/skills/acolyt/ask.py +3 -4
  34. intentkit/skills/acolyt/base.py +1 -3
  35. intentkit/skills/aixbt/base.py +1 -3
  36. intentkit/skills/aixbt/projects.py +13 -13
  37. intentkit/skills/allora/base.py +1 -3
  38. intentkit/skills/allora/price.py +2 -3
  39. intentkit/skills/base.py +15 -22
  40. intentkit/skills/basename/__init__.py +3 -5
  41. intentkit/skills/carv/__init__.py +7 -8
  42. intentkit/skills/carv/base.py +6 -6
  43. intentkit/skills/carv/fetch_news.py +3 -3
  44. intentkit/skills/carv/onchain_query.py +4 -4
  45. intentkit/skills/carv/token_info_and_price.py +5 -5
  46. intentkit/skills/casino/base.py +1 -3
  47. intentkit/skills/casino/deck_draw.py +1 -2
  48. intentkit/skills/casino/deck_shuffle.py +1 -2
  49. intentkit/skills/casino/dice_roll.py +1 -2
  50. intentkit/skills/cdp/__init__.py +3 -5
  51. intentkit/skills/cdp/base.py +1 -3
  52. intentkit/skills/chainlist/base.py +1 -3
  53. intentkit/skills/chainlist/chain_lookup.py +18 -18
  54. intentkit/skills/common/base.py +1 -3
  55. intentkit/skills/common/current_time.py +1 -2
  56. intentkit/skills/cookiefun/base.py +1 -2
  57. intentkit/skills/cookiefun/get_account_details.py +7 -7
  58. intentkit/skills/cookiefun/get_account_feed.py +19 -19
  59. intentkit/skills/cookiefun/get_account_smart_followers.py +7 -7
  60. intentkit/skills/cookiefun/get_sectors.py +3 -3
  61. intentkit/skills/cookiefun/search_accounts.py +9 -9
  62. intentkit/skills/cryptocompare/api.py +2 -3
  63. intentkit/skills/cryptocompare/base.py +6 -6
  64. intentkit/skills/cryptocompare/fetch_news.py +3 -4
  65. intentkit/skills/cryptocompare/fetch_price.py +5 -6
  66. intentkit/skills/cryptocompare/fetch_top_exchanges.py +3 -4
  67. intentkit/skills/cryptocompare/fetch_top_market_cap.py +3 -4
  68. intentkit/skills/cryptocompare/fetch_top_volume.py +3 -4
  69. intentkit/skills/cryptocompare/fetch_trading_signals.py +4 -5
  70. intentkit/skills/cryptopanic/__init__.py +4 -4
  71. intentkit/skills/cryptopanic/base.py +1 -3
  72. intentkit/skills/cryptopanic/fetch_crypto_news.py +3 -5
  73. intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +3 -3
  74. intentkit/skills/dapplooker/base.py +1 -3
  75. intentkit/skills/dapplooker/dapplooker_token_data.py +7 -7
  76. intentkit/skills/defillama/api.py +6 -9
  77. intentkit/skills/defillama/base.py +5 -6
  78. intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +6 -8
  79. intentkit/skills/defillama/coins/fetch_block.py +4 -6
  80. intentkit/skills/defillama/coins/fetch_current_prices.py +6 -8
  81. intentkit/skills/defillama/coins/fetch_first_price.py +5 -7
  82. intentkit/skills/defillama/coins/fetch_historical_prices.py +7 -9
  83. intentkit/skills/defillama/coins/fetch_price_chart.py +7 -9
  84. intentkit/skills/defillama/coins/fetch_price_percentage.py +5 -7
  85. intentkit/skills/defillama/config/chains.py +1 -3
  86. intentkit/skills/defillama/fees/fetch_fees_overview.py +22 -24
  87. intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +14 -16
  88. intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +6 -8
  89. intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +3 -5
  90. intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +5 -7
  91. intentkit/skills/defillama/tests/api_integration.test.py +1 -1
  92. intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +2 -4
  93. intentkit/skills/defillama/tvl/fetch_chains.py +7 -9
  94. intentkit/skills/defillama/tvl/fetch_historical_tvl.py +2 -4
  95. intentkit/skills/defillama/tvl/fetch_protocol.py +30 -36
  96. intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +1 -3
  97. intentkit/skills/defillama/tvl/fetch_protocols.py +35 -43
  98. intentkit/skills/defillama/volumes/fetch_dex_overview.py +40 -46
  99. intentkit/skills/defillama/volumes/fetch_dex_summary.py +33 -35
  100. intentkit/skills/defillama/volumes/fetch_options_overview.py +22 -26
  101. intentkit/skills/defillama/yields/fetch_pool_chart.py +8 -10
  102. intentkit/skills/defillama/yields/fetch_pools.py +24 -28
  103. intentkit/skills/dexscreener/__init__.py +2 -2
  104. intentkit/skills/dexscreener/base.py +3 -3
  105. intentkit/skills/dexscreener/get_pair_info.py +2 -2
  106. intentkit/skills/dexscreener/get_token_pairs.py +2 -2
  107. intentkit/skills/dexscreener/get_tokens_info.py +5 -5
  108. intentkit/skills/dexscreener/model/search_token_response.py +80 -82
  109. intentkit/skills/dexscreener/search_token.py +182 -182
  110. intentkit/skills/dexscreener/utils.py +15 -14
  111. intentkit/skills/dune_analytics/__init__.py +4 -4
  112. intentkit/skills/dune_analytics/base.py +1 -3
  113. intentkit/skills/dune_analytics/fetch_kol_buys.py +4 -4
  114. intentkit/skills/dune_analytics/fetch_nation_metrics.py +5 -5
  115. intentkit/skills/elfa/base.py +1 -3
  116. intentkit/skills/elfa/mention.py +19 -21
  117. intentkit/skills/elfa/stats.py +4 -4
  118. intentkit/skills/elfa/tokens.py +12 -12
  119. intentkit/skills/elfa/utils.py +25 -27
  120. intentkit/skills/enso/__init__.py +2 -2
  121. intentkit/skills/enso/base.py +5 -8
  122. intentkit/skills/enso/best_yield.py +4 -6
  123. intentkit/skills/enso/networks.py +1 -2
  124. intentkit/skills/enso/prices.py +1 -3
  125. intentkit/skills/enso/route.py +1 -3
  126. intentkit/skills/enso/tokens.py +1 -3
  127. intentkit/skills/enso/wallet.py +5 -5
  128. intentkit/skills/erc20/__init__.py +4 -6
  129. intentkit/skills/erc721/__init__.py +4 -6
  130. intentkit/skills/firecrawl/base.py +1 -3
  131. intentkit/skills/firecrawl/clear.py +1 -2
  132. intentkit/skills/firecrawl/crawl.py +9 -10
  133. intentkit/skills/firecrawl/query.py +1 -2
  134. intentkit/skills/firecrawl/scrape.py +7 -8
  135. intentkit/skills/firecrawl/utils.py +13 -13
  136. intentkit/skills/github/base.py +1 -3
  137. intentkit/skills/github/github_search.py +1 -2
  138. intentkit/skills/heurist/base.py +1 -3
  139. intentkit/skills/heurist/image_generation_animagine_xl.py +7 -8
  140. intentkit/skills/heurist/image_generation_arthemy_comics.py +7 -8
  141. intentkit/skills/heurist/image_generation_arthemy_real.py +7 -8
  142. intentkit/skills/heurist/image_generation_braindance.py +7 -8
  143. intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +7 -8
  144. intentkit/skills/heurist/image_generation_flux_1_dev.py +7 -8
  145. intentkit/skills/heurist/image_generation_sdxl.py +7 -8
  146. intentkit/skills/http/base.py +1 -3
  147. intentkit/skills/http/get.py +7 -7
  148. intentkit/skills/http/post.py +9 -9
  149. intentkit/skills/http/put.py +9 -9
  150. intentkit/skills/lifi/__init__.py +4 -4
  151. intentkit/skills/lifi/base.py +1 -3
  152. intentkit/skills/lifi/token_execute.py +13 -13
  153. intentkit/skills/lifi/token_quote.py +6 -6
  154. intentkit/skills/lifi/utils.py +16 -16
  155. intentkit/skills/moralis/__init__.py +3 -3
  156. intentkit/skills/moralis/api.py +6 -7
  157. intentkit/skills/moralis/base.py +2 -4
  158. intentkit/skills/moralis/fetch_chain_portfolio.py +10 -11
  159. intentkit/skills/moralis/fetch_nft_portfolio.py +22 -22
  160. intentkit/skills/moralis/fetch_solana_portfolio.py +11 -12
  161. intentkit/skills/moralis/fetch_wallet_portfolio.py +8 -9
  162. intentkit/skills/morpho/__init__.py +4 -6
  163. intentkit/skills/nation/__init__.py +2 -2
  164. intentkit/skills/nation/base.py +1 -3
  165. intentkit/skills/nation/nft_check.py +3 -4
  166. intentkit/skills/onchain.py +2 -6
  167. intentkit/skills/openai/base.py +1 -3
  168. intentkit/skills/openai/dalle_image_generation.py +1 -3
  169. intentkit/skills/openai/gpt_image_generation.py +2 -3
  170. intentkit/skills/openai/gpt_image_to_image.py +2 -3
  171. intentkit/skills/openai/image_to_text.py +1 -2
  172. intentkit/skills/portfolio/base.py +6 -6
  173. intentkit/skills/portfolio/token_balances.py +21 -21
  174. intentkit/skills/portfolio/wallet_approvals.py +7 -7
  175. intentkit/skills/portfolio/wallet_defi_positions.py +3 -3
  176. intentkit/skills/portfolio/wallet_history.py +21 -21
  177. intentkit/skills/portfolio/wallet_net_worth.py +13 -13
  178. intentkit/skills/portfolio/wallet_nfts.py +19 -19
  179. intentkit/skills/portfolio/wallet_profitability.py +7 -7
  180. intentkit/skills/portfolio/wallet_profitability_summary.py +5 -5
  181. intentkit/skills/portfolio/wallet_stats.py +3 -3
  182. intentkit/skills/portfolio/wallet_swaps.py +19 -19
  183. intentkit/skills/pyth/__init__.py +3 -5
  184. intentkit/skills/slack/base.py +2 -4
  185. intentkit/skills/slack/get_channel.py +8 -8
  186. intentkit/skills/slack/get_message.py +9 -9
  187. intentkit/skills/slack/schedule_message.py +5 -5
  188. intentkit/skills/slack/send_message.py +3 -5
  189. intentkit/skills/supabase/base.py +1 -3
  190. intentkit/skills/supabase/delete_data.py +4 -4
  191. intentkit/skills/supabase/fetch_data.py +12 -12
  192. intentkit/skills/supabase/insert_data.py +4 -4
  193. intentkit/skills/supabase/invoke_function.py +6 -6
  194. intentkit/skills/supabase/update_data.py +6 -6
  195. intentkit/skills/supabase/upsert_data.py +4 -4
  196. intentkit/skills/superfluid/__init__.py +4 -6
  197. intentkit/skills/system/add_autonomous_task.py +8 -10
  198. intentkit/skills/system/edit_autonomous_task.py +12 -14
  199. intentkit/skills/system/list_autonomous_tasks.py +1 -3
  200. intentkit/skills/tavily/base.py +1 -3
  201. intentkit/skills/tavily/tavily_extract.py +1 -2
  202. intentkit/skills/tavily/tavily_search.py +1 -3
  203. intentkit/skills/token/base.py +5 -5
  204. intentkit/skills/token/erc20_transfers.py +19 -19
  205. intentkit/skills/token/token_analytics.py +3 -3
  206. intentkit/skills/token/token_price.py +13 -13
  207. intentkit/skills/token/token_search.py +9 -9
  208. intentkit/skills/twitter/base.py +3 -4
  209. intentkit/skills/twitter/follow_user.py +1 -2
  210. intentkit/skills/twitter/get_mentions.py +3 -4
  211. intentkit/skills/twitter/get_timeline.py +1 -2
  212. intentkit/skills/twitter/get_user_by_username.py +1 -2
  213. intentkit/skills/twitter/get_user_tweets.py +2 -3
  214. intentkit/skills/twitter/like_tweet.py +1 -2
  215. intentkit/skills/twitter/post_tweet.py +3 -4
  216. intentkit/skills/twitter/reply_tweet.py +3 -4
  217. intentkit/skills/twitter/retweet.py +1 -2
  218. intentkit/skills/twitter/search_tweets.py +1 -2
  219. intentkit/skills/unrealspeech/base.py +1 -3
  220. intentkit/skills/unrealspeech/text_to_speech.py +8 -8
  221. intentkit/skills/venice_audio/__init__.py +8 -9
  222. intentkit/skills/venice_audio/base.py +3 -4
  223. intentkit/skills/venice_audio/input.py +41 -41
  224. intentkit/skills/venice_audio/venice_audio.py +6 -6
  225. intentkit/skills/venice_image/__init__.py +5 -5
  226. intentkit/skills/venice_image/api.py +138 -138
  227. intentkit/skills/venice_image/base.py +3 -3
  228. intentkit/skills/venice_image/config.py +33 -35
  229. intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -3
  230. intentkit/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
  231. intentkit/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
  232. intentkit/skills/venice_image/image_generation/image_generation_base.py +9 -9
  233. intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
  234. intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
  235. intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
  236. intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -158
  237. intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
  238. intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
  239. intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
  240. intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
  241. intentkit/skills/venice_image/image_upscale/image_upscale.py +3 -3
  242. intentkit/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
  243. intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
  244. intentkit/skills/venice_image/image_vision/image_vision.py +2 -2
  245. intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -17
  246. intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -9
  247. intentkit/skills/venice_image/utils.py +77 -78
  248. intentkit/skills/web_scraper/base.py +1 -3
  249. intentkit/skills/web_scraper/document_indexer.py +1 -2
  250. intentkit/skills/web_scraper/scrape_and_index.py +4 -5
  251. intentkit/skills/web_scraper/utils.py +25 -26
  252. intentkit/skills/web_scraper/website_indexer.py +10 -11
  253. intentkit/skills/weth/__init__.py +4 -6
  254. intentkit/skills/wow/__init__.py +4 -6
  255. intentkit/skills/x402/__init__.py +11 -3
  256. intentkit/skills/x402/ask_agent.py +12 -78
  257. intentkit/skills/x402/base.py +90 -0
  258. intentkit/skills/x402/http_request.py +117 -0
  259. intentkit/skills/x402/schema.json +15 -10
  260. intentkit/skills/xmtp/base.py +3 -3
  261. intentkit/skills/xmtp/price.py +2 -2
  262. intentkit/skills/xmtp/swap.py +2 -4
  263. intentkit/skills/xmtp/transfer.py +4 -6
  264. intentkit/utils/error.py +2 -2
  265. intentkit/utils/logging.py +2 -4
  266. intentkit/utils/s3.py +8 -9
  267. intentkit/utils/schema.py +5 -5
  268. intentkit/utils/slack_alert.py +7 -8
  269. {intentkit-0.8.16.dev1.dist-info → intentkit-0.8.17.dev2.dist-info}/METADATA +3 -4
  270. intentkit-0.8.17.dev2.dist-info/RECORD +464 -0
  271. intentkit/models/generator.py +0 -347
  272. intentkit-0.8.16.dev1.dist-info/RECORD +0 -464
  273. {intentkit-0.8.16.dev1.dist-info → intentkit-0.8.17.dev2.dist-info}/WHEEL +0 -0
  274. {intentkit-0.8.16.dev1.dist-info → intentkit-0.8.17.dev2.dist-info}/licenses/LICENSE +0 -0
intentkit/core/credit.py CHANGED
@@ -1,7 +1,6 @@
1
1
  import logging
2
2
  from datetime import datetime
3
3
  from decimal import ROUND_HALF_UP, Decimal
4
- from typing import List, Optional, Tuple
5
4
 
6
5
  from epyxid import XID
7
6
  from pydantic import BaseModel
@@ -50,7 +49,7 @@ FOURPLACES = Decimal("0.0001")
50
49
  async def update_credit_event_note(
51
50
  session: AsyncSession,
52
51
  event_id: str,
53
- note: Optional[str] = None,
52
+ note: str | None = None,
54
53
  ) -> CreditEvent:
55
54
  """
56
55
  Update the note of a credit event.
@@ -89,7 +88,7 @@ async def recharge(
89
88
  user_id: str,
90
89
  amount: Decimal,
91
90
  upstream_tx_id: str,
92
- note: Optional[str] = None,
91
+ note: str | None = None,
93
92
  ) -> CreditAccount:
94
93
  """
95
94
  Recharge credits to a user account.
@@ -220,7 +219,7 @@ async def withdraw(
220
219
  agent_id: str,
221
220
  amount: Decimal,
222
221
  upstream_tx_id: str,
223
- note: Optional[str] = None,
222
+ note: str | None = None,
224
223
  ) -> CreditAccount:
225
224
  """
226
225
  Withdraw credits from an agent account to platform account.
@@ -385,8 +384,8 @@ async def reward(
385
384
  user_id: str,
386
385
  amount: Decimal,
387
386
  upstream_tx_id: str,
388
- note: Optional[str] = None,
389
- reward_type: Optional[RewardType] = RewardType.REWARD,
387
+ note: str | None = None,
388
+ reward_type: RewardType | None = RewardType.REWARD,
390
389
  ) -> CreditAccount:
391
390
  """
392
391
  Reward a user account with reward credits.
@@ -679,8 +678,8 @@ async def adjustment(
679
678
  async def update_daily_quota(
680
679
  session: AsyncSession,
681
680
  user_id: str,
682
- free_quota: Optional[Decimal] = None,
683
- refill_amount: Optional[Decimal] = None,
681
+ free_quota: Decimal | None = None,
682
+ refill_amount: Decimal | None = None,
684
683
  upstream_tx_id: str = "",
685
684
  note: str = "",
686
685
  ) -> CreditAccount:
@@ -706,11 +705,11 @@ async def update_daily_quota(
706
705
  async def list_credit_events_by_user(
707
706
  session: AsyncSession,
708
707
  user_id: str,
709
- direction: Optional[Direction] = None,
710
- cursor: Optional[str] = None,
708
+ direction: Direction | None = None,
709
+ cursor: str | None = None,
711
710
  limit: int = 20,
712
- event_type: Optional[EventType] = None,
713
- ) -> Tuple[List[CreditEvent], Optional[str], bool]:
711
+ event_type: EventType | None = None,
712
+ ) -> tuple[list[CreditEvent], str | None, bool]:
714
713
  """
715
714
  List credit events for a user account with cursor pagination.
716
715
 
@@ -771,13 +770,13 @@ async def list_credit_events_by_user(
771
770
 
772
771
  async def list_credit_events(
773
772
  session: AsyncSession,
774
- direction: Optional[Direction] = Direction.EXPENSE,
775
- cursor: Optional[str] = None,
773
+ direction: Direction | None = Direction.EXPENSE,
774
+ cursor: str | None = None,
776
775
  limit: int = 20,
777
- event_type: Optional[EventType] = None,
778
- start_at: Optional[datetime] = None,
779
- end_at: Optional[datetime] = None,
780
- ) -> Tuple[List[CreditEvent], Optional[str], bool]:
776
+ event_type: EventType | None = None,
777
+ start_at: datetime | None = None,
778
+ end_at: datetime | None = None,
779
+ ) -> tuple[list[CreditEvent], str | None, bool]:
781
780
  """
782
781
  List all credit events with cursor pagination.
783
782
 
@@ -841,9 +840,9 @@ async def list_credit_events(
841
840
  async def list_fee_events_by_agent(
842
841
  session: AsyncSession,
843
842
  agent_id: str,
844
- cursor: Optional[str] = None,
843
+ cursor: str | None = None,
845
844
  limit: int = 20,
846
- ) -> Tuple[List[CreditEvent], Optional[str], bool]:
845
+ ) -> tuple[list[CreditEvent], str | None, bool]:
847
846
  """
848
847
  List fee events for an agent with cursor pagination.
849
848
  These events represent income for the agent from users' expenses.
intentkit/core/engine.py CHANGED
@@ -17,7 +17,6 @@ import textwrap
17
17
  import time
18
18
  import traceback
19
19
  from datetime import datetime
20
- from typing import Optional, Tuple
21
20
 
22
21
  import sqlalchemy
23
22
  from epyxid import XID
@@ -61,7 +60,6 @@ from intentkit.utils.error import IntentKitAPIError
61
60
 
62
61
  logger = logging.getLogger(__name__)
63
62
 
64
-
65
63
  # Global variable to cache all agent executors
66
64
  _agents: dict[str, CompiledStateGraph] = {}
67
65
 
@@ -229,7 +227,7 @@ async def initialize_agent(aid):
229
227
  HTTPException: If agent not found (404) or database error (500)
230
228
  """
231
229
  # get the agent from the database
232
- agent: Optional[Agent] = await Agent.get(aid)
230
+ agent: Agent | None = await Agent.get(aid)
233
231
  if not agent:
234
232
  raise IntentKitAPIError(
235
233
  status_code=404, key="AgentNotFound", message="Agent not found"
@@ -243,7 +241,7 @@ async def initialize_agent(aid):
243
241
  _agents_updated[aid] = agent.deployed_at if agent.deployed_at else agent.updated_at
244
242
 
245
243
 
246
- async def agent_executor(agent_id: str) -> Tuple[CompiledStateGraph, float]:
244
+ async def agent_executor(agent_id: str) -> tuple[CompiledStateGraph, float]:
247
245
  start = time.perf_counter()
248
246
  agent = await Agent.get(agent_id)
249
247
  if not agent:
intentkit/core/node.py CHANGED
@@ -1,5 +1,6 @@
1
1
  import logging
2
- from typing import Any, Sequence
2
+ from collections.abc import Sequence
3
+ from typing import Any
3
4
 
4
5
  from langchain_core.language_models import LanguageModelLike
5
6
  from langchain_core.messages import (
intentkit/core/prompt.py CHANGED
@@ -1,5 +1,5 @@
1
1
  import re
2
- from typing import Callable, Optional
2
+ from collections.abc import Callable
3
3
 
4
4
  from eth_utils import is_address
5
5
  from langchain_core.messages import BaseMessage
@@ -35,7 +35,6 @@ user confirmation before broadcasting any approval transactions for security rea
35
35
 
36
36
  """
37
37
 
38
-
39
38
  # ============================================================================
40
39
  # CORE PROMPT BUILDING FUNCTIONS
41
40
  # ============================================================================
@@ -328,7 +327,7 @@ def _build_autonomous_task_prompt(agent: Agent, context: AgentContext) -> str:
328
327
  return f"{task_info}. "
329
328
 
330
329
 
331
- async def build_entrypoint_prompt(agent: Agent, context: AgentContext) -> Optional[str]:
330
+ async def build_entrypoint_prompt(agent: Agent, context: AgentContext) -> str | None:
332
331
  """
333
332
  Build entrypoint-specific prompt based on context.
334
333
 
@@ -341,7 +340,7 @@ async def build_entrypoint_prompt(agent: Agent, context: AgentContext) -> Option
341
340
  context: The agent context containing entrypoint information
342
341
 
343
342
  Returns:
344
- Optional[str]: The entrypoint-specific prompt, or None if no entrypoint
343
+ str | None: The entrypoint-specific prompt, or None if no entrypoint
345
344
  """
346
345
  if not context.entrypoint:
347
346
  return None
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Mapping, MutableMapping
5
+ from collections.abc import Mapping, MutableMapping
6
6
 
7
7
  from apscheduler.jobstores.base import BaseJobStore
8
8
  from apscheduler.schedulers.asyncio import AsyncIOScheduler
@@ -2,9 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from datetime import datetime, timedelta, timezone
5
+ from datetime import UTC, datetime, timedelta
6
6
  from decimal import Decimal
7
- from typing import Optional
8
7
 
9
8
  from pydantic import BaseModel, Field
10
9
  from sqlalchemy import func, select
@@ -46,8 +45,8 @@ class AgentStatistics(BaseModel):
46
45
  async def get_agent_statistics(
47
46
  agent_id: str,
48
47
  *,
49
- end_time: Optional[datetime] = None,
50
- session: Optional[AsyncSession] = None,
48
+ end_time: datetime | None = None,
49
+ session: AsyncSession | None = None,
51
50
  ) -> AgentStatistics:
52
51
  """Calculate statistics for an agent credit account.
53
52
 
@@ -64,11 +63,11 @@ async def get_agent_statistics(
64
63
 
65
64
  managed_session = session is None
66
65
  if end_time is None:
67
- end_time = datetime.now(timezone.utc)
66
+ end_time = datetime.now(UTC)
68
67
  elif end_time.tzinfo is None:
69
- end_time = end_time.replace(tzinfo=timezone.utc)
68
+ end_time = end_time.replace(tzinfo=UTC)
70
69
  else:
71
- end_time = end_time.astimezone(timezone.utc)
70
+ end_time = end_time.astimezone(UTC)
72
71
 
73
72
  async def _compute(session: AsyncSession) -> AgentStatistics:
74
73
  account = await CreditAccount.get_or_create_in_session(