intentkit 0.7.5.dev3__py3-none-any.whl → 0.8.34.dev7__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.
- intentkit/MANIFEST.in +14 -0
- intentkit/README.md +88 -0
- intentkit/__init__.py +6 -4
- intentkit/abstracts/agent.py +4 -5
- intentkit/abstracts/engine.py +5 -5
- intentkit/abstracts/graph.py +15 -8
- intentkit/abstracts/skill.py +6 -144
- intentkit/abstracts/twitter.py +4 -5
- intentkit/clients/__init__.py +9 -2
- intentkit/clients/cdp.py +129 -153
- intentkit/{utils → clients}/s3.py +109 -34
- intentkit/clients/twitter.py +83 -62
- intentkit/clients/web3.py +4 -7
- intentkit/config/config.py +123 -90
- intentkit/core/account_checking.py +802 -0
- intentkit/core/agent.py +313 -498
- intentkit/core/asset.py +267 -0
- intentkit/core/chat.py +5 -3
- intentkit/core/client.py +1 -1
- intentkit/core/credit.py +49 -41
- intentkit/core/draft.py +201 -0
- intentkit/core/draft_chat.py +118 -0
- intentkit/core/engine.py +378 -287
- intentkit/core/manager/__init__.py +25 -0
- intentkit/core/manager/engine.py +220 -0
- intentkit/core/manager/service.py +172 -0
- intentkit/core/manager/skills.py +178 -0
- intentkit/core/middleware.py +231 -0
- intentkit/core/prompt.py +74 -114
- intentkit/core/scheduler.py +143 -0
- intentkit/core/statistics.py +168 -0
- intentkit/models/agent.py +931 -518
- intentkit/models/agent_data.py +165 -106
- intentkit/models/agent_schema.json +38 -251
- intentkit/models/app_setting.py +15 -13
- intentkit/models/chat.py +86 -140
- intentkit/models/credit.py +182 -162
- intentkit/models/db.py +42 -23
- intentkit/models/db_mig.py +120 -3
- intentkit/models/draft.py +222 -0
- intentkit/models/llm.csv +31 -0
- intentkit/models/llm.py +262 -370
- intentkit/models/redis.py +6 -4
- intentkit/models/skill.py +222 -101
- intentkit/models/skills.csv +173 -0
- intentkit/models/team.py +189 -0
- intentkit/models/user.py +103 -31
- intentkit/skills/acolyt/__init__.py +2 -9
- intentkit/skills/acolyt/ask.py +3 -4
- intentkit/skills/acolyt/base.py +4 -9
- intentkit/skills/acolyt/schema.json +4 -3
- intentkit/skills/aixbt/__init__.py +2 -13
- intentkit/skills/aixbt/base.py +1 -7
- intentkit/skills/aixbt/projects.py +14 -15
- intentkit/skills/aixbt/schema.json +4 -4
- intentkit/skills/allora/__init__.py +2 -9
- intentkit/skills/allora/base.py +4 -9
- intentkit/skills/allora/price.py +3 -4
- intentkit/skills/allora/schema.json +3 -2
- intentkit/skills/base.py +241 -41
- intentkit/skills/basename/__init__.py +51 -0
- intentkit/skills/basename/base.py +11 -0
- intentkit/skills/basename/basename.svg +11 -0
- intentkit/skills/basename/schema.json +58 -0
- intentkit/skills/carv/__init__.py +115 -121
- intentkit/skills/carv/base.py +184 -185
- intentkit/skills/carv/fetch_news.py +3 -3
- intentkit/skills/carv/onchain_query.py +4 -4
- intentkit/skills/carv/schema.json +134 -137
- intentkit/skills/carv/token_info_and_price.py +6 -6
- intentkit/skills/casino/__init__.py +4 -15
- intentkit/skills/casino/base.py +1 -7
- intentkit/skills/casino/deck_draw.py +5 -8
- intentkit/skills/casino/deck_shuffle.py +6 -6
- intentkit/skills/casino/dice_roll.py +2 -4
- intentkit/skills/casino/schema.json +0 -1
- intentkit/skills/cdp/__init__.py +22 -84
- intentkit/skills/cdp/base.py +1 -7
- intentkit/skills/cdp/schema.json +11 -314
- intentkit/skills/chainlist/__init__.py +2 -7
- intentkit/skills/chainlist/base.py +1 -7
- intentkit/skills/chainlist/chain_lookup.py +18 -18
- intentkit/skills/chainlist/schema.json +3 -5
- intentkit/skills/common/__init__.py +2 -9
- intentkit/skills/common/base.py +1 -7
- intentkit/skills/common/current_time.py +1 -2
- intentkit/skills/common/schema.json +2 -2
- intentkit/skills/cookiefun/__init__.py +6 -9
- intentkit/skills/cookiefun/base.py +2 -7
- intentkit/skills/cookiefun/get_account_details.py +7 -7
- intentkit/skills/cookiefun/get_account_feed.py +19 -19
- intentkit/skills/cookiefun/get_account_smart_followers.py +7 -7
- intentkit/skills/cookiefun/get_sectors.py +3 -3
- intentkit/skills/cookiefun/schema.json +1 -3
- intentkit/skills/cookiefun/search_accounts.py +9 -9
- intentkit/skills/cryptocompare/__init__.py +7 -24
- intentkit/skills/cryptocompare/api.py +2 -3
- intentkit/skills/cryptocompare/base.py +10 -24
- intentkit/skills/cryptocompare/fetch_news.py +4 -5
- intentkit/skills/cryptocompare/fetch_price.py +6 -7
- intentkit/skills/cryptocompare/fetch_top_exchanges.py +4 -5
- intentkit/skills/cryptocompare/fetch_top_market_cap.py +4 -5
- intentkit/skills/cryptocompare/fetch_top_volume.py +4 -5
- intentkit/skills/cryptocompare/fetch_trading_signals.py +5 -6
- intentkit/skills/cryptocompare/schema.json +3 -3
- intentkit/skills/cryptopanic/__init__.py +7 -10
- intentkit/skills/cryptopanic/base.py +51 -55
- intentkit/skills/cryptopanic/fetch_crypto_news.py +4 -8
- intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +5 -7
- intentkit/skills/cryptopanic/schema.json +105 -103
- intentkit/skills/dapplooker/__init__.py +2 -9
- intentkit/skills/dapplooker/base.py +4 -9
- intentkit/skills/dapplooker/dapplooker_token_data.py +7 -7
- intentkit/skills/dapplooker/schema.json +3 -5
- intentkit/skills/defillama/__init__.py +24 -74
- intentkit/skills/defillama/api.py +6 -9
- intentkit/skills/defillama/base.py +8 -19
- intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +8 -10
- intentkit/skills/defillama/coins/fetch_block.py +6 -8
- intentkit/skills/defillama/coins/fetch_current_prices.py +8 -10
- intentkit/skills/defillama/coins/fetch_first_price.py +7 -9
- intentkit/skills/defillama/coins/fetch_historical_prices.py +9 -11
- intentkit/skills/defillama/coins/fetch_price_chart.py +9 -11
- intentkit/skills/defillama/coins/fetch_price_percentage.py +7 -9
- intentkit/skills/defillama/config/chains.py +1 -3
- intentkit/skills/defillama/fees/fetch_fees_overview.py +24 -26
- intentkit/skills/defillama/schema.json +5 -1
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +16 -18
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +8 -10
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +5 -7
- intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +7 -9
- intentkit/skills/defillama/tests/api_integration.test.py +1 -1
- intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +4 -6
- intentkit/skills/defillama/tvl/fetch_chains.py +9 -11
- intentkit/skills/defillama/tvl/fetch_historical_tvl.py +4 -6
- intentkit/skills/defillama/tvl/fetch_protocol.py +32 -38
- intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +3 -5
- intentkit/skills/defillama/tvl/fetch_protocols.py +37 -45
- intentkit/skills/defillama/volumes/fetch_dex_overview.py +42 -48
- intentkit/skills/defillama/volumes/fetch_dex_summary.py +35 -37
- intentkit/skills/defillama/volumes/fetch_options_overview.py +24 -28
- intentkit/skills/defillama/yields/fetch_pool_chart.py +10 -12
- intentkit/skills/defillama/yields/fetch_pools.py +26 -30
- intentkit/skills/dexscreener/__init__.py +97 -102
- intentkit/skills/dexscreener/base.py +125 -130
- intentkit/skills/dexscreener/get_pair_info.py +4 -5
- intentkit/skills/dexscreener/get_token_pairs.py +4 -5
- intentkit/skills/dexscreener/get_tokens_info.py +7 -8
- intentkit/skills/dexscreener/model/search_token_response.py +80 -82
- intentkit/skills/dexscreener/schema.json +91 -93
- intentkit/skills/dexscreener/search_token.py +182 -184
- intentkit/skills/dexscreener/utils.py +15 -14
- intentkit/skills/dune_analytics/__init__.py +7 -9
- intentkit/skills/dune_analytics/base.py +48 -52
- intentkit/skills/dune_analytics/fetch_kol_buys.py +5 -7
- intentkit/skills/dune_analytics/fetch_nation_metrics.py +6 -8
- intentkit/skills/dune_analytics/schema.json +104 -99
- intentkit/skills/elfa/__init__.py +5 -18
- intentkit/skills/elfa/base.py +10 -14
- intentkit/skills/elfa/mention.py +19 -21
- intentkit/skills/elfa/schema.json +3 -2
- intentkit/skills/elfa/stats.py +4 -4
- intentkit/skills/elfa/tokens.py +12 -12
- intentkit/skills/elfa/utils.py +26 -28
- intentkit/skills/enso/__init__.py +11 -31
- intentkit/skills/enso/base.py +54 -35
- intentkit/skills/enso/best_yield.py +16 -24
- intentkit/skills/enso/networks.py +6 -11
- intentkit/skills/enso/prices.py +11 -13
- intentkit/skills/enso/route.py +34 -38
- intentkit/skills/enso/schema.json +3 -2
- intentkit/skills/enso/tokens.py +29 -38
- intentkit/skills/enso/wallet.py +76 -191
- intentkit/skills/erc20/__init__.py +50 -0
- intentkit/skills/erc20/base.py +11 -0
- intentkit/skills/erc20/erc20.svg +5 -0
- intentkit/skills/erc20/schema.json +74 -0
- intentkit/skills/erc721/__init__.py +53 -0
- intentkit/skills/erc721/base.py +11 -0
- intentkit/skills/erc721/erc721.svg +5 -0
- intentkit/skills/erc721/schema.json +90 -0
- intentkit/skills/firecrawl/__init__.py +5 -18
- intentkit/skills/firecrawl/base.py +4 -9
- intentkit/skills/firecrawl/clear.py +4 -8
- intentkit/skills/firecrawl/crawl.py +19 -19
- intentkit/skills/firecrawl/query.py +4 -3
- intentkit/skills/firecrawl/schema.json +2 -6
- intentkit/skills/firecrawl/scrape.py +17 -22
- intentkit/skills/firecrawl/utils.py +50 -42
- intentkit/skills/github/__init__.py +2 -7
- intentkit/skills/github/base.py +1 -7
- intentkit/skills/github/github_search.py +1 -2
- intentkit/skills/github/schema.json +3 -4
- intentkit/skills/heurist/__init__.py +8 -27
- intentkit/skills/heurist/base.py +4 -9
- intentkit/skills/heurist/image_generation_animagine_xl.py +13 -15
- intentkit/skills/heurist/image_generation_arthemy_comics.py +13 -15
- intentkit/skills/heurist/image_generation_arthemy_real.py +13 -15
- intentkit/skills/heurist/image_generation_braindance.py +13 -15
- intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +13 -15
- intentkit/skills/heurist/image_generation_flux_1_dev.py +13 -15
- intentkit/skills/heurist/image_generation_sdxl.py +13 -15
- intentkit/skills/heurist/schema.json +2 -2
- intentkit/skills/http/__init__.py +4 -15
- intentkit/skills/http/base.py +1 -7
- intentkit/skills/http/get.py +21 -16
- intentkit/skills/http/post.py +23 -18
- intentkit/skills/http/put.py +23 -18
- intentkit/skills/http/schema.json +4 -5
- intentkit/skills/lifi/__init__.py +8 -13
- intentkit/skills/lifi/base.py +3 -9
- intentkit/skills/lifi/schema.json +17 -8
- intentkit/skills/lifi/token_execute.py +150 -60
- intentkit/skills/lifi/token_quote.py +8 -10
- intentkit/skills/lifi/utils.py +104 -51
- intentkit/skills/moralis/__init__.py +6 -10
- intentkit/skills/moralis/api.py +6 -7
- intentkit/skills/moralis/base.py +5 -10
- intentkit/skills/moralis/fetch_chain_portfolio.py +10 -11
- intentkit/skills/moralis/fetch_nft_portfolio.py +22 -22
- intentkit/skills/moralis/fetch_solana_portfolio.py +11 -12
- intentkit/skills/moralis/fetch_wallet_portfolio.py +8 -9
- intentkit/skills/moralis/schema.json +7 -2
- intentkit/skills/morpho/__init__.py +52 -0
- intentkit/skills/morpho/base.py +11 -0
- intentkit/skills/morpho/morpho.svg +12 -0
- intentkit/skills/morpho/schema.json +73 -0
- intentkit/skills/nation/__init__.py +4 -9
- intentkit/skills/nation/base.py +5 -10
- intentkit/skills/nation/nft_check.py +3 -4
- intentkit/skills/nation/schema.json +4 -3
- intentkit/skills/onchain.py +30 -0
- intentkit/skills/openai/__init__.py +17 -18
- intentkit/skills/openai/base.py +10 -14
- intentkit/skills/openai/dalle_image_generation.py +4 -9
- intentkit/skills/openai/gpt_avatar_generator.py +102 -0
- intentkit/skills/openai/gpt_image_generation.py +5 -9
- intentkit/skills/openai/gpt_image_mini_generator.py +92 -0
- intentkit/skills/openai/gpt_image_to_image.py +5 -9
- intentkit/skills/openai/image_to_text.py +3 -7
- intentkit/skills/openai/schema.json +34 -3
- intentkit/skills/portfolio/__init__.py +11 -35
- intentkit/skills/portfolio/base.py +33 -19
- intentkit/skills/portfolio/schema.json +3 -5
- intentkit/skills/portfolio/token_balances.py +21 -21
- intentkit/skills/portfolio/wallet_approvals.py +17 -18
- intentkit/skills/portfolio/wallet_defi_positions.py +3 -3
- intentkit/skills/portfolio/wallet_history.py +31 -31
- intentkit/skills/portfolio/wallet_net_worth.py +13 -13
- intentkit/skills/portfolio/wallet_nfts.py +19 -19
- intentkit/skills/portfolio/wallet_profitability.py +18 -18
- intentkit/skills/portfolio/wallet_profitability_summary.py +5 -5
- intentkit/skills/portfolio/wallet_stats.py +3 -3
- intentkit/skills/portfolio/wallet_swaps.py +19 -19
- intentkit/skills/pyth/__init__.py +50 -0
- intentkit/skills/pyth/base.py +11 -0
- intentkit/skills/pyth/pyth.svg +6 -0
- intentkit/skills/pyth/schema.json +75 -0
- intentkit/skills/skills.toml +36 -0
- intentkit/skills/slack/__init__.py +5 -17
- intentkit/skills/slack/base.py +3 -9
- intentkit/skills/slack/get_channel.py +8 -8
- intentkit/skills/slack/get_message.py +9 -9
- intentkit/skills/slack/schedule_message.py +5 -5
- intentkit/skills/slack/schema.json +2 -2
- intentkit/skills/slack/send_message.py +3 -5
- intentkit/skills/supabase/__init__.py +7 -23
- intentkit/skills/supabase/base.py +1 -7
- intentkit/skills/supabase/delete_data.py +4 -4
- intentkit/skills/supabase/fetch_data.py +12 -12
- intentkit/skills/supabase/insert_data.py +4 -4
- intentkit/skills/supabase/invoke_function.py +6 -6
- intentkit/skills/supabase/schema.json +2 -3
- intentkit/skills/supabase/update_data.py +6 -6
- intentkit/skills/supabase/upsert_data.py +4 -4
- intentkit/skills/superfluid/__init__.py +53 -0
- intentkit/skills/superfluid/base.py +11 -0
- intentkit/skills/superfluid/schema.json +89 -0
- intentkit/skills/superfluid/superfluid.svg +6 -0
- intentkit/skills/system/__init__.py +7 -24
- intentkit/skills/system/add_autonomous_task.py +10 -12
- intentkit/skills/system/delete_autonomous_task.py +2 -2
- intentkit/skills/system/edit_autonomous_task.py +14 -18
- intentkit/skills/system/list_autonomous_tasks.py +3 -5
- intentkit/skills/system/read_agent_api_key.py +6 -4
- intentkit/skills/system/regenerate_agent_api_key.py +6 -4
- intentkit/skills/system/schema.json +6 -8
- intentkit/skills/tavily/__init__.py +3 -12
- intentkit/skills/tavily/base.py +4 -9
- intentkit/skills/tavily/schema.json +3 -5
- intentkit/skills/tavily/tavily_extract.py +2 -4
- intentkit/skills/tavily/tavily_search.py +4 -6
- intentkit/skills/token/__init__.py +5 -10
- intentkit/skills/token/base.py +7 -11
- intentkit/skills/token/erc20_transfers.py +19 -19
- intentkit/skills/token/schema.json +3 -6
- intentkit/skills/token/token_analytics.py +3 -3
- intentkit/skills/token/token_price.py +13 -13
- intentkit/skills/token/token_search.py +9 -9
- intentkit/skills/twitter/__init__.py +11 -35
- intentkit/skills/twitter/base.py +22 -34
- intentkit/skills/twitter/follow_user.py +2 -6
- intentkit/skills/twitter/get_mentions.py +5 -12
- intentkit/skills/twitter/get_timeline.py +4 -12
- intentkit/skills/twitter/get_user_by_username.py +2 -6
- intentkit/skills/twitter/get_user_tweets.py +5 -13
- intentkit/skills/twitter/like_tweet.py +2 -6
- intentkit/skills/twitter/post_tweet.py +6 -9
- intentkit/skills/twitter/reply_tweet.py +6 -9
- intentkit/skills/twitter/retweet.py +2 -6
- intentkit/skills/twitter/schema.json +1 -0
- intentkit/skills/twitter/search_tweets.py +4 -12
- intentkit/skills/unrealspeech/__init__.py +2 -7
- intentkit/skills/unrealspeech/base.py +2 -8
- intentkit/skills/unrealspeech/schema.json +2 -5
- intentkit/skills/unrealspeech/text_to_speech.py +8 -8
- intentkit/skills/venice_audio/__init__.py +98 -106
- intentkit/skills/venice_audio/base.py +117 -121
- intentkit/skills/venice_audio/input.py +41 -41
- intentkit/skills/venice_audio/schema.json +151 -152
- intentkit/skills/venice_audio/venice_audio.py +38 -21
- intentkit/skills/venice_image/__init__.py +147 -154
- intentkit/skills/venice_image/api.py +138 -138
- intentkit/skills/venice_image/base.py +185 -192
- intentkit/skills/venice_image/config.py +33 -35
- intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -3
- intentkit/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
- intentkit/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
- intentkit/skills/venice_image/image_generation/image_generation_base.py +11 -10
- intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
- intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -158
- intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
- intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
- intentkit/skills/venice_image/image_upscale/image_upscale.py +3 -3
- intentkit/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
- intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
- intentkit/skills/venice_image/image_vision/image_vision.py +2 -2
- intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -17
- intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -9
- intentkit/skills/venice_image/schema.json +267 -267
- intentkit/skills/venice_image/utils.py +77 -78
- intentkit/skills/web_scraper/__init__.py +5 -18
- intentkit/skills/web_scraper/base.py +21 -7
- intentkit/skills/web_scraper/document_indexer.py +7 -6
- intentkit/skills/web_scraper/schema.json +2 -6
- intentkit/skills/web_scraper/scrape_and_index.py +15 -15
- intentkit/skills/web_scraper/utils.py +62 -63
- intentkit/skills/web_scraper/website_indexer.py +17 -19
- intentkit/skills/weth/__init__.py +49 -0
- intentkit/skills/weth/base.py +11 -0
- intentkit/skills/weth/schema.json +58 -0
- intentkit/skills/weth/weth.svg +6 -0
- intentkit/skills/wow/__init__.py +51 -0
- intentkit/skills/wow/base.py +11 -0
- intentkit/skills/wow/schema.json +89 -0
- intentkit/skills/wow/wow.svg +7 -0
- intentkit/skills/x402/__init__.py +58 -0
- intentkit/skills/x402/base.py +99 -0
- intentkit/skills/x402/http_request.py +117 -0
- intentkit/skills/x402/schema.json +40 -0
- intentkit/skills/x402/x402.webp +0 -0
- intentkit/skills/xmtp/__init__.py +4 -15
- intentkit/skills/xmtp/base.py +5 -5
- intentkit/skills/xmtp/price.py +7 -6
- intentkit/skills/xmtp/schema.json +69 -71
- intentkit/skills/xmtp/swap.py +6 -8
- intentkit/skills/xmtp/transfer.py +4 -6
- intentkit/utils/__init__.py +4 -0
- intentkit/utils/chain.py +198 -96
- intentkit/utils/ens.py +135 -0
- intentkit/utils/error.py +5 -2
- intentkit/utils/logging.py +9 -11
- intentkit/utils/schema.py +100 -0
- intentkit/utils/slack_alert.py +8 -8
- intentkit/utils/tx.py +16 -8
- intentkit/uv.lock +3377 -0
- {intentkit-0.7.5.dev3.dist-info → intentkit-0.8.34.dev7.dist-info}/METADATA +13 -15
- intentkit-0.8.34.dev7.dist-info/RECORD +478 -0
- intentkit-0.8.34.dev7.dist-info/licenses/LICENSE +21 -0
- intentkit/core/node.py +0 -215
- intentkit/models/conversation.py +0 -286
- intentkit/models/generator.py +0 -347
- intentkit/skills/cdp/get_balance.py +0 -110
- intentkit/skills/cdp/swap.py +0 -121
- intentkit/skills/moralis/tests/__init__.py +0 -0
- intentkit/skills/moralis/tests/test_wallet.py +0 -511
- intentkit-0.7.5.dev3.dist-info/RECORD +0 -424
- {intentkit-0.7.5.dev3.dist-info/licenses → intentkit}/LICENSE +0 -0
- {intentkit-0.7.5.dev3.dist-info → intentkit-0.8.34.dev7.dist-info}/WHEEL +0 -0
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import List
|
|
2
|
-
|
|
3
1
|
from pydantic import BaseModel, Field
|
|
4
2
|
|
|
5
3
|
from intentkit.models.agent import AgentAutonomous
|
|
@@ -15,7 +13,7 @@ class ListAutonomousTasksInput(BaseModel):
|
|
|
15
13
|
class ListAutonomousTasksOutput(BaseModel):
|
|
16
14
|
"""Output model for list_autonomous_tasks skill."""
|
|
17
15
|
|
|
18
|
-
tasks:
|
|
16
|
+
tasks: list[AgentAutonomous] = Field(
|
|
19
17
|
description="List of autonomous task configurations for the agent"
|
|
20
18
|
)
|
|
21
19
|
|
|
@@ -43,8 +41,8 @@ class ListAutonomousTasks(SystemBaseTool):
|
|
|
43
41
|
ListAutonomousTasksOutput: List of autonomous tasks
|
|
44
42
|
"""
|
|
45
43
|
context = self.get_context()
|
|
46
|
-
|
|
44
|
+
agent = context.agent
|
|
47
45
|
|
|
48
|
-
tasks = await
|
|
46
|
+
tasks = await agent.list_autonomous_tasks()
|
|
49
47
|
|
|
50
48
|
return ListAutonomousTasksOutput(tasks=tasks)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from pydantic import BaseModel, Field
|
|
2
2
|
|
|
3
|
+
from intentkit.config.config import config
|
|
4
|
+
from intentkit.models.agent_data import AgentData
|
|
3
5
|
from intentkit.skills.system.base import SystemBaseTool
|
|
4
6
|
|
|
5
7
|
|
|
@@ -41,11 +43,11 @@ class ReadAgentApiKey(SystemBaseTool):
|
|
|
41
43
|
context = self.get_context()
|
|
42
44
|
agent_id = context.agent_id
|
|
43
45
|
|
|
44
|
-
# Get agent data from
|
|
45
|
-
agent_data = await
|
|
46
|
+
# Get agent data from the database
|
|
47
|
+
agent_data = await AgentData.get(agent_id)
|
|
46
48
|
|
|
47
49
|
# Get API base URL from system config
|
|
48
|
-
open_api_base_url =
|
|
50
|
+
open_api_base_url = config.open_api_base_url
|
|
49
51
|
api_endpoint = f"{open_api_base_url}/v1/chat/completions"
|
|
50
52
|
|
|
51
53
|
# Check if API keys exist
|
|
@@ -72,7 +74,7 @@ class ReadAgentApiKey(SystemBaseTool):
|
|
|
72
74
|
update_data["api_key_public"] = new_public_api_key
|
|
73
75
|
|
|
74
76
|
if update_data:
|
|
75
|
-
await
|
|
77
|
+
await AgentData.patch(agent_id, update_data)
|
|
76
78
|
|
|
77
79
|
return ReadAgentApiKeyOutput(
|
|
78
80
|
api_key=new_api_key,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from pydantic import BaseModel, Field
|
|
2
2
|
|
|
3
|
+
from intentkit.config.config import config
|
|
4
|
+
from intentkit.models.agent_data import AgentData
|
|
3
5
|
from intentkit.skills.system.base import SystemBaseTool
|
|
4
6
|
|
|
5
7
|
|
|
@@ -43,11 +45,11 @@ class RegenerateAgentApiKey(SystemBaseTool):
|
|
|
43
45
|
context = self.get_context()
|
|
44
46
|
agent_id = context.agent_id
|
|
45
47
|
|
|
46
|
-
# Get agent data from
|
|
47
|
-
agent_data = await
|
|
48
|
+
# Get agent data directly from the model
|
|
49
|
+
agent_data = await AgentData.get(agent_id)
|
|
48
50
|
|
|
49
51
|
# Get API base URL from system config
|
|
50
|
-
open_api_base_url =
|
|
52
|
+
open_api_base_url = config.open_api_base_url
|
|
51
53
|
api_endpoint = f"{open_api_base_url}/v1/chat/completions"
|
|
52
54
|
|
|
53
55
|
# Check if previous API keys existed
|
|
@@ -58,7 +60,7 @@ class RegenerateAgentApiKey(SystemBaseTool):
|
|
|
58
60
|
new_public_api_key = self._generate_public_api_key()
|
|
59
61
|
|
|
60
62
|
# Save the new API keys to agent data (overwrites existing)
|
|
61
|
-
await
|
|
63
|
+
await AgentData.patch(
|
|
62
64
|
agent_id, {"api_key": new_api_key, "api_key_public": new_public_api_key}
|
|
63
65
|
)
|
|
64
66
|
|
|
@@ -5,16 +5,14 @@
|
|
|
5
5
|
"description": "System management and configuration skills for agent operations including API key management",
|
|
6
6
|
"x-icon": "https://ai.service.crestal.dev/skills/system/system.svg",
|
|
7
7
|
"x-tags": [
|
|
8
|
-
"
|
|
9
|
-
"Management",
|
|
10
|
-
"Configuration"
|
|
8
|
+
"Infrastructure"
|
|
11
9
|
],
|
|
12
10
|
"properties": {
|
|
13
11
|
"enabled": {
|
|
14
12
|
"type": "boolean",
|
|
15
13
|
"title": "Enabled",
|
|
16
14
|
"description": "Whether this skill is enabled",
|
|
17
|
-
"default":
|
|
15
|
+
"default": true
|
|
18
16
|
},
|
|
19
17
|
"states": {
|
|
20
18
|
"type": "object",
|
|
@@ -59,7 +57,7 @@
|
|
|
59
57
|
"Agent Owner Only"
|
|
60
58
|
],
|
|
61
59
|
"description": "List all autonomous task configurations for the agent.",
|
|
62
|
-
"default": "
|
|
60
|
+
"default": "private"
|
|
63
61
|
},
|
|
64
62
|
"add_autonomous_task": {
|
|
65
63
|
"type": "string",
|
|
@@ -73,7 +71,7 @@
|
|
|
73
71
|
"Agent Owner Only"
|
|
74
72
|
],
|
|
75
73
|
"description": "Add a new autonomous task configuration to the agent.",
|
|
76
|
-
"default": "
|
|
74
|
+
"default": "private"
|
|
77
75
|
},
|
|
78
76
|
"delete_autonomous_task": {
|
|
79
77
|
"type": "string",
|
|
@@ -87,7 +85,7 @@
|
|
|
87
85
|
"Agent Owner Only"
|
|
88
86
|
],
|
|
89
87
|
"description": "Delete an autonomous task configuration from the agent.",
|
|
90
|
-
"default": "
|
|
88
|
+
"default": "private"
|
|
91
89
|
},
|
|
92
90
|
"edit_autonomous_task": {
|
|
93
91
|
"type": "string",
|
|
@@ -101,7 +99,7 @@
|
|
|
101
99
|
"Agent Owner Only"
|
|
102
100
|
],
|
|
103
101
|
"description": "Edit an existing autonomous task configuration for the agent.",
|
|
104
|
-
"default": "
|
|
102
|
+
"default": "private"
|
|
105
103
|
}
|
|
106
104
|
}
|
|
107
105
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import logging
|
|
4
4
|
from typing import TypedDict
|
|
5
5
|
|
|
6
|
-
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
6
|
from intentkit.skills.base import SkillConfig, SkillState
|
|
8
7
|
from intentkit.skills.tavily.base import TavilyBaseTool
|
|
9
8
|
from intentkit.skills.tavily.tavily_extract import TavilyExtract
|
|
@@ -30,7 +29,6 @@ class Config(SkillConfig):
|
|
|
30
29
|
async def get_skills(
|
|
31
30
|
config: "Config",
|
|
32
31
|
is_private: bool,
|
|
33
|
-
store: SkillStoreABC,
|
|
34
32
|
**_,
|
|
35
33
|
) -> list[TavilyBaseTool]:
|
|
36
34
|
"""Get all Tavily search skills.
|
|
@@ -38,7 +36,6 @@ async def get_skills(
|
|
|
38
36
|
Args:
|
|
39
37
|
config: The configuration for Tavily search skills.
|
|
40
38
|
is_private: Whether to include private skills.
|
|
41
|
-
store: The skill store for persisting data.
|
|
42
39
|
|
|
43
40
|
Returns:
|
|
44
41
|
A list of Tavily search skills.
|
|
@@ -55,7 +52,7 @@ async def get_skills(
|
|
|
55
52
|
# Get each skill using the cached getter
|
|
56
53
|
result = []
|
|
57
54
|
for name in available_skills:
|
|
58
|
-
skill = get_tavily_skill(name
|
|
55
|
+
skill = get_tavily_skill(name)
|
|
59
56
|
if skill:
|
|
60
57
|
result.append(skill)
|
|
61
58
|
return result
|
|
@@ -63,28 +60,22 @@ async def get_skills(
|
|
|
63
60
|
|
|
64
61
|
def get_tavily_skill(
|
|
65
62
|
name: str,
|
|
66
|
-
store: SkillStoreABC,
|
|
67
63
|
) -> TavilyBaseTool:
|
|
68
64
|
"""Get a Tavily search skill by name.
|
|
69
65
|
|
|
70
66
|
Args:
|
|
71
67
|
name: The name of the skill to get
|
|
72
|
-
store: The skill store for persisting data
|
|
73
68
|
|
|
74
69
|
Returns:
|
|
75
70
|
The requested Tavily search skill
|
|
76
71
|
"""
|
|
77
72
|
if name == "tavily_search":
|
|
78
73
|
if name not in _cache:
|
|
79
|
-
_cache[name] = TavilySearch(
|
|
80
|
-
skill_store=store,
|
|
81
|
-
)
|
|
74
|
+
_cache[name] = TavilySearch()
|
|
82
75
|
return _cache[name]
|
|
83
76
|
elif name == "tavily_extract":
|
|
84
77
|
if name not in _cache:
|
|
85
|
-
_cache[name] = TavilyExtract(
|
|
86
|
-
skill_store=store,
|
|
87
|
-
)
|
|
78
|
+
_cache[name] = TavilyExtract()
|
|
88
79
|
return _cache[name]
|
|
89
80
|
else:
|
|
90
81
|
logger.warning(f"Unknown Tavily skill: {name}")
|
intentkit/skills/tavily/base.py
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
from
|
|
2
|
-
|
|
3
|
-
from langchain.tools.base import ToolException
|
|
1
|
+
from langchain_core.tools.base import ToolException
|
|
4
2
|
from pydantic import BaseModel, Field
|
|
5
3
|
|
|
6
|
-
from intentkit.
|
|
4
|
+
from intentkit.config.config import config
|
|
7
5
|
from intentkit.skills.base import IntentKitSkill
|
|
8
6
|
|
|
9
7
|
|
|
@@ -12,17 +10,14 @@ class TavilyBaseTool(IntentKitSkill):
|
|
|
12
10
|
|
|
13
11
|
name: str = Field(description="The name of the tool")
|
|
14
12
|
description: str = Field(description="A description of what the tool does")
|
|
15
|
-
args_schema:
|
|
16
|
-
skill_store: SkillStoreABC = Field(
|
|
17
|
-
description="The skill store for persisting data"
|
|
18
|
-
)
|
|
13
|
+
args_schema: type[BaseModel]
|
|
19
14
|
|
|
20
15
|
def get_api_key(self) -> str:
|
|
21
16
|
context = self.get_context()
|
|
22
17
|
skill_config = context.agent.skill_config(self.category)
|
|
23
18
|
api_key_provider = skill_config.get("api_key_provider")
|
|
24
19
|
if api_key_provider == "platform":
|
|
25
|
-
return
|
|
20
|
+
return config.tavily_api_key
|
|
26
21
|
# for backward compatibility, may only have api_key in skill_config
|
|
27
22
|
elif skill_config.get("api_key"):
|
|
28
23
|
return skill_config.get("api_key")
|
|
@@ -5,10 +5,8 @@
|
|
|
5
5
|
"description": "Web search and content extraction capabilities using Tavily",
|
|
6
6
|
"x-icon": "https://ai.service.crestal.dev/skills/tavily/tavily.jpg",
|
|
7
7
|
"x-tags": [
|
|
8
|
-
"
|
|
9
|
-
"Search"
|
|
10
|
-
"Information",
|
|
11
|
-
"Content Extraction"
|
|
8
|
+
"Knowledge Base",
|
|
9
|
+
"Search"
|
|
12
10
|
],
|
|
13
11
|
"x-nft-requirement": 1,
|
|
14
12
|
"properties": {
|
|
@@ -116,4 +114,4 @@
|
|
|
116
114
|
}
|
|
117
115
|
},
|
|
118
116
|
"additionalProperties": true
|
|
119
|
-
}
|
|
117
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from pydantic import BaseModel, Field
|
|
@@ -42,7 +41,7 @@ class TavilyExtract(TavilyBaseTool):
|
|
|
42
41
|
"This tool is useful when you need to get the full text content from a webpage. "
|
|
43
42
|
"You must call this tool whenever the user asks to extract or scrape content from a specific URL."
|
|
44
43
|
)
|
|
45
|
-
args_schema:
|
|
44
|
+
args_schema: type[BaseModel] = TavilyExtractInput
|
|
46
45
|
|
|
47
46
|
async def _arun(
|
|
48
47
|
self,
|
|
@@ -73,9 +72,8 @@ class TavilyExtract(TavilyBaseTool):
|
|
|
73
72
|
"rate_limit_minutes"
|
|
74
73
|
):
|
|
75
74
|
await self.user_rate_limit_by_category(
|
|
76
|
-
context.user_id,
|
|
77
75
|
skill_config["rate_limit_number"],
|
|
78
|
-
skill_config["rate_limit_minutes"],
|
|
76
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
79
77
|
)
|
|
80
78
|
|
|
81
79
|
# Get the API key from the agent's configuration
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from pydantic import BaseModel, Field
|
|
6
5
|
|
|
6
|
+
from intentkit.config.config import config
|
|
7
7
|
from intentkit.skills.tavily.base import TavilyBaseTool
|
|
8
8
|
|
|
9
9
|
logger = logging.getLogger(__name__)
|
|
@@ -49,7 +49,7 @@ class TavilySearch(TavilyBaseTool):
|
|
|
49
49
|
"You must call this tool whenever the user asks for information that may not be in your training data,"
|
|
50
50
|
" requires current data, or when you're unsure about facts."
|
|
51
51
|
)
|
|
52
|
-
args_schema:
|
|
52
|
+
args_schema: type[BaseModel] = TavilySearchInput
|
|
53
53
|
|
|
54
54
|
async def _arun(
|
|
55
55
|
self,
|
|
@@ -67,7 +67,6 @@ class TavilySearch(TavilyBaseTool):
|
|
|
67
67
|
include_images: Whether to include image URLs in the results.
|
|
68
68
|
include_raw_content: Whether to include raw HTML content in the results.
|
|
69
69
|
|
|
70
|
-
|
|
71
70
|
Returns:
|
|
72
71
|
str: Formatted search results with titles, snippets, and URLs.
|
|
73
72
|
"""
|
|
@@ -80,16 +79,15 @@ class TavilySearch(TavilyBaseTool):
|
|
|
80
79
|
"rate_limit_minutes"
|
|
81
80
|
):
|
|
82
81
|
await self.user_rate_limit_by_category(
|
|
83
|
-
context.user_id,
|
|
84
82
|
skill_config["rate_limit_number"],
|
|
85
|
-
skill_config["rate_limit_minutes"],
|
|
83
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
86
84
|
)
|
|
87
85
|
|
|
88
86
|
# Get the API key from the agent's configuration
|
|
89
87
|
if skill_config.get("api_key_provider") == "agent_owner":
|
|
90
88
|
api_key = skill_config.get("api_key")
|
|
91
89
|
else:
|
|
92
|
-
api_key =
|
|
90
|
+
api_key = config.tavily_api_key
|
|
93
91
|
if not api_key:
|
|
94
92
|
return "Error: No Tavily API key provided in the configuration."
|
|
95
93
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import logging
|
|
4
4
|
from typing import TypedDict
|
|
5
5
|
|
|
6
|
-
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
6
|
from intentkit.skills.base import SkillConfig, SkillState
|
|
8
7
|
from intentkit.skills.token.base import TokenBaseTool
|
|
9
8
|
from intentkit.skills.token.erc20_transfers import ERC20Transfers
|
|
@@ -36,7 +35,6 @@ class Config(SkillConfig):
|
|
|
36
35
|
async def get_skills(
|
|
37
36
|
config: "Config",
|
|
38
37
|
is_private: bool,
|
|
39
|
-
store: SkillStoreABC,
|
|
40
38
|
**_,
|
|
41
39
|
) -> list[TokenBaseTool]:
|
|
42
40
|
"""Get all Token blockchain analysis skills.
|
|
@@ -44,7 +42,6 @@ async def get_skills(
|
|
|
44
42
|
Args:
|
|
45
43
|
config: The configuration for Token skills.
|
|
46
44
|
is_private: Whether to include private skills.
|
|
47
|
-
store: The skill store for persisting data.
|
|
48
45
|
|
|
49
46
|
Returns:
|
|
50
47
|
A list of Token blockchain analysis skills.
|
|
@@ -65,7 +62,7 @@ async def get_skills(
|
|
|
65
62
|
# Get each skill using the cached getter
|
|
66
63
|
result = []
|
|
67
64
|
for name in available_skills:
|
|
68
|
-
skill = get_token_skill(name
|
|
65
|
+
skill = get_token_skill(name)
|
|
69
66
|
if skill:
|
|
70
67
|
result.append(skill)
|
|
71
68
|
|
|
@@ -74,13 +71,11 @@ async def get_skills(
|
|
|
74
71
|
|
|
75
72
|
def get_token_skill(
|
|
76
73
|
name: str,
|
|
77
|
-
store: SkillStoreABC,
|
|
78
74
|
) -> TokenBaseTool:
|
|
79
75
|
"""Get a Token blockchain analysis skill by name.
|
|
80
76
|
|
|
81
77
|
Args:
|
|
82
78
|
name: The name of the skill to get
|
|
83
|
-
store: The skill store for persisting data
|
|
84
79
|
|
|
85
80
|
Returns:
|
|
86
81
|
The requested Token blockchain analysis skill
|
|
@@ -90,13 +85,13 @@ def get_token_skill(
|
|
|
90
85
|
|
|
91
86
|
skill = None
|
|
92
87
|
if name == "token_price":
|
|
93
|
-
skill = TokenPrice(
|
|
88
|
+
skill = TokenPrice()
|
|
94
89
|
elif name == "token_erc20_transfers":
|
|
95
|
-
skill = ERC20Transfers(
|
|
90
|
+
skill = ERC20Transfers()
|
|
96
91
|
elif name == "token_search":
|
|
97
|
-
skill = TokenSearch(
|
|
92
|
+
skill = TokenSearch()
|
|
98
93
|
elif name == "token_analytics":
|
|
99
|
-
skill = TokenAnalytics(
|
|
94
|
+
skill = TokenAnalytics()
|
|
100
95
|
else:
|
|
101
96
|
logger.warning(f"Unknown Token skill: {name}")
|
|
102
97
|
return None
|
intentkit/skills/token/base.py
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"""Base class for token-related skills."""
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any
|
|
5
5
|
|
|
6
6
|
import aiohttp
|
|
7
7
|
|
|
8
|
-
from intentkit.
|
|
8
|
+
from intentkit.config.config import config
|
|
9
9
|
from intentkit.skills.base import IntentKitSkill
|
|
10
10
|
from intentkit.skills.token.constants import MORALIS_API_BASE_URL
|
|
11
11
|
|
|
@@ -19,10 +19,6 @@ class TokenBaseTool(IntentKitSkill):
|
|
|
19
19
|
including making HTTP requests to the Moralis API.
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
def __init__(self, skill_store: SkillStoreABC = None):
|
|
23
|
-
"""Initialize the token tool with a skill store."""
|
|
24
|
-
super().__init__(skill_store=skill_store)
|
|
25
|
-
|
|
26
22
|
@property
|
|
27
23
|
def category(self) -> str:
|
|
28
24
|
return "token"
|
|
@@ -37,9 +33,9 @@ class TokenBaseTool(IntentKitSkill):
|
|
|
37
33
|
skill_config = context.agent.skill_config(self.category)
|
|
38
34
|
if skill_config.get("api_key_provider") == "agent_owner":
|
|
39
35
|
return skill_config.get("api_key")
|
|
40
|
-
return
|
|
36
|
+
return config.moralis_api_key
|
|
41
37
|
|
|
42
|
-
def _prepare_params(self, params:
|
|
38
|
+
def _prepare_params(self, params: dict[str, Any]) -> dict[str, Any]:
|
|
43
39
|
"""Convert boolean values to lowercase strings for API compatibility.
|
|
44
40
|
|
|
45
41
|
Args:
|
|
@@ -64,9 +60,9 @@ class TokenBaseTool(IntentKitSkill):
|
|
|
64
60
|
method: str,
|
|
65
61
|
endpoint: str,
|
|
66
62
|
api_key: str,
|
|
67
|
-
params:
|
|
68
|
-
data:
|
|
69
|
-
) ->
|
|
63
|
+
params: dict[str, Any] = None,
|
|
64
|
+
data: dict[str, Any] = None,
|
|
65
|
+
) -> dict[str, Any]:
|
|
70
66
|
"""Make a request to the Moralis API.
|
|
71
67
|
|
|
72
68
|
Args:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, Field
|
|
5
5
|
|
|
@@ -19,35 +19,35 @@ class ERC20TransfersInput(BaseModel):
|
|
|
19
19
|
description="The chain to query (e.g., 'eth', 'bsc', 'polygon').",
|
|
20
20
|
default=DEFAULT_CHAIN,
|
|
21
21
|
)
|
|
22
|
-
contract_addresses:
|
|
22
|
+
contract_addresses: list[str] | None = Field(
|
|
23
23
|
description="List of contract addresses of transfers to filter by.",
|
|
24
24
|
default=None,
|
|
25
25
|
)
|
|
26
|
-
from_block:
|
|
26
|
+
from_block: int | None = Field(
|
|
27
27
|
description="The minimum block number from which to get the transactions.",
|
|
28
28
|
default=None,
|
|
29
29
|
)
|
|
30
|
-
to_block:
|
|
30
|
+
to_block: int | None = Field(
|
|
31
31
|
description="The maximum block number from which to get the transactions.",
|
|
32
32
|
default=None,
|
|
33
33
|
)
|
|
34
|
-
from_date:
|
|
34
|
+
from_date: str | None = Field(
|
|
35
35
|
description="The start date from which to get the transactions (any format accepted by momentjs).",
|
|
36
36
|
default=None,
|
|
37
37
|
)
|
|
38
|
-
to_date:
|
|
38
|
+
to_date: str | None = Field(
|
|
39
39
|
description="Get the transactions up to this date (any format accepted by momentjs).",
|
|
40
40
|
default=None,
|
|
41
41
|
)
|
|
42
|
-
limit:
|
|
42
|
+
limit: int | None = Field(
|
|
43
43
|
description="The desired page size of the result.",
|
|
44
44
|
default=DEFAULT_LIMIT,
|
|
45
45
|
)
|
|
46
|
-
order:
|
|
46
|
+
order: str | None = Field(
|
|
47
47
|
description="The order of the result, in ascending (ASC) or descending (DESC).",
|
|
48
48
|
default=DEFAULT_ORDER,
|
|
49
49
|
)
|
|
50
|
-
cursor:
|
|
50
|
+
cursor: str | None = Field(
|
|
51
51
|
description="The cursor returned in the previous response (for pagination).",
|
|
52
52
|
default=None,
|
|
53
53
|
)
|
|
@@ -65,22 +65,22 @@ class ERC20Transfers(TokenBaseTool):
|
|
|
65
65
|
"Get ERC20 token transactions for a wallet address, ordered by block number. "
|
|
66
66
|
"Returns transaction details, token information, and wallet interactions."
|
|
67
67
|
)
|
|
68
|
-
args_schema:
|
|
68
|
+
args_schema: type[BaseModel] = ERC20TransfersInput
|
|
69
69
|
|
|
70
70
|
async def _arun(
|
|
71
71
|
self,
|
|
72
72
|
address: str,
|
|
73
73
|
chain: str = DEFAULT_CHAIN,
|
|
74
|
-
contract_addresses:
|
|
75
|
-
from_block:
|
|
76
|
-
to_block:
|
|
77
|
-
from_date:
|
|
78
|
-
to_date:
|
|
79
|
-
limit:
|
|
80
|
-
order:
|
|
81
|
-
cursor:
|
|
74
|
+
contract_addresses: list[str] | None = None,
|
|
75
|
+
from_block: int | None = None,
|
|
76
|
+
to_block: int | None = None,
|
|
77
|
+
from_date: str | None = None,
|
|
78
|
+
to_date: str | None = None,
|
|
79
|
+
limit: int | None = DEFAULT_LIMIT,
|
|
80
|
+
order: str | None = DEFAULT_ORDER,
|
|
81
|
+
cursor: str | None = None,
|
|
82
82
|
**kwargs,
|
|
83
|
-
) ->
|
|
83
|
+
) -> dict[str, Any]:
|
|
84
84
|
"""Fetch ERC20 token transfers for a wallet from Moralis.
|
|
85
85
|
|
|
86
86
|
Args:
|
|
@@ -5,11 +5,8 @@
|
|
|
5
5
|
"type": "object",
|
|
6
6
|
"x-icon": "https://ai.service.crestal.dev/skills/portfolio/moralis.png",
|
|
7
7
|
"x-tags": [
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"Crypto",
|
|
11
|
-
"Token",
|
|
12
|
-
"DeFi"
|
|
8
|
+
"Analytics",
|
|
9
|
+
"Crypto"
|
|
13
10
|
],
|
|
14
11
|
"properties": {
|
|
15
12
|
"enabled": {
|
|
@@ -138,4 +135,4 @@
|
|
|
138
135
|
}
|
|
139
136
|
},
|
|
140
137
|
"additionalProperties": true
|
|
141
|
-
}
|
|
138
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, Field
|
|
5
5
|
|
|
@@ -31,14 +31,14 @@ class TokenAnalytics(TokenBaseTool):
|
|
|
31
31
|
"Get analytics for a token by token address. "
|
|
32
32
|
"Returns trading volumes, number of buyers/sellers, and liquidity information over various time periods."
|
|
33
33
|
)
|
|
34
|
-
args_schema:
|
|
34
|
+
args_schema: type[BaseModel] = TokenAnalyticsInput
|
|
35
35
|
|
|
36
36
|
async def _arun(
|
|
37
37
|
self,
|
|
38
38
|
address: str,
|
|
39
39
|
chain: str = DEFAULT_CHAIN,
|
|
40
40
|
**kwargs,
|
|
41
|
-
) ->
|
|
41
|
+
) -> dict[str, Any]:
|
|
42
42
|
"""Fetch token analytics from Moralis.
|
|
43
43
|
|
|
44
44
|
Args:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, Field
|
|
5
5
|
|
|
@@ -19,23 +19,23 @@ class TokenPriceInput(BaseModel):
|
|
|
19
19
|
description="The chain to query (e.g., 'eth', 'bsc', 'polygon').",
|
|
20
20
|
default=DEFAULT_CHAIN,
|
|
21
21
|
)
|
|
22
|
-
include:
|
|
22
|
+
include: str | None = Field(
|
|
23
23
|
description="If the result should contain the 24hr percent change (use 'percent_change').",
|
|
24
24
|
default=None,
|
|
25
25
|
)
|
|
26
|
-
exchange:
|
|
26
|
+
exchange: str | None = Field(
|
|
27
27
|
description="The factory name or address of the token exchange.",
|
|
28
28
|
default=None,
|
|
29
29
|
)
|
|
30
|
-
to_block:
|
|
30
|
+
to_block: int | None = Field(
|
|
31
31
|
description="The block number from which the token price should be checked.",
|
|
32
32
|
default=None,
|
|
33
33
|
)
|
|
34
|
-
max_token_inactivity:
|
|
34
|
+
max_token_inactivity: int | None = Field(
|
|
35
35
|
description="Exclude tokens inactive for more than the given amount of days.",
|
|
36
36
|
default=None,
|
|
37
37
|
)
|
|
38
|
-
min_pair_side_liquidity_usd:
|
|
38
|
+
min_pair_side_liquidity_usd: int | None = Field(
|
|
39
39
|
description="Exclude tokens with liquidity less than the specified amount in USD.",
|
|
40
40
|
default=None,
|
|
41
41
|
)
|
|
@@ -53,19 +53,19 @@ class TokenPrice(TokenBaseTool):
|
|
|
53
53
|
"Get the token price denominated in the blockchain's native token and USD for a given token contract address. "
|
|
54
54
|
"Returns price, token information and exchange data."
|
|
55
55
|
)
|
|
56
|
-
args_schema:
|
|
56
|
+
args_schema: type[BaseModel] = TokenPriceInput
|
|
57
57
|
|
|
58
58
|
async def _arun(
|
|
59
59
|
self,
|
|
60
60
|
address: str,
|
|
61
61
|
chain: str = DEFAULT_CHAIN,
|
|
62
|
-
include:
|
|
63
|
-
exchange:
|
|
64
|
-
to_block:
|
|
65
|
-
max_token_inactivity:
|
|
66
|
-
min_pair_side_liquidity_usd:
|
|
62
|
+
include: str | None = None,
|
|
63
|
+
exchange: str | None = None,
|
|
64
|
+
to_block: int | None = None,
|
|
65
|
+
max_token_inactivity: int | None = None,
|
|
66
|
+
min_pair_side_liquidity_usd: int | None = None,
|
|
67
67
|
**kwargs,
|
|
68
|
-
) ->
|
|
68
|
+
) -> dict[str, Any]:
|
|
69
69
|
"""Fetch token price from Moralis.
|
|
70
70
|
|
|
71
71
|
Args:
|