intentkit 0.6.13.dev2__py3-none-any.whl → 0.8.17__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.
- intentkit/__init__.py +1 -1
- intentkit/abstracts/agent.py +4 -5
- intentkit/abstracts/engine.py +5 -5
- intentkit/abstracts/graph.py +14 -7
- intentkit/abstracts/skill.py +6 -144
- intentkit/abstracts/twitter.py +4 -5
- intentkit/clients/__init__.py +5 -2
- intentkit/clients/cdp.py +101 -141
- intentkit/clients/twitter.py +83 -62
- intentkit/clients/web3.py +29 -0
- intentkit/config/config.py +8 -5
- intentkit/core/agent.py +472 -195
- intentkit/core/asset.py +253 -0
- intentkit/core/chat.py +51 -0
- intentkit/core/client.py +1 -1
- intentkit/core/credit.py +460 -130
- intentkit/core/engine.py +262 -233
- intentkit/core/node.py +15 -16
- intentkit/core/prompt.py +62 -28
- intentkit/core/scheduler.py +92 -0
- intentkit/core/statistics.py +168 -0
- intentkit/models/agent.py +1096 -949
- intentkit/models/agent_data.py +68 -38
- intentkit/models/agent_public.json +98 -0
- intentkit/models/agent_schema.json +54 -439
- intentkit/models/app_setting.py +96 -33
- intentkit/models/chat.py +74 -27
- intentkit/models/conversation.py +8 -8
- intentkit/models/credit.py +362 -74
- intentkit/models/db.py +26 -8
- intentkit/models/db_mig.py +2 -2
- intentkit/models/llm.csv +28 -0
- intentkit/models/llm.py +185 -350
- intentkit/models/redis.py +6 -4
- intentkit/models/skill.py +186 -72
- intentkit/models/skills.csv +174 -0
- intentkit/models/user.py +82 -24
- 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 +248 -85
- 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 +5 -5
- intentkit/skills/casino/README.md +254 -0
- intentkit/skills/casino/__init__.py +86 -0
- intentkit/skills/casino/base.py +17 -0
- intentkit/skills/casino/casino.png +0 -0
- intentkit/skills/casino/deck_draw.py +127 -0
- intentkit/skills/casino/deck_shuffle.py +118 -0
- intentkit/skills/casino/dice_roll.py +100 -0
- intentkit/skills/casino/schema.json +77 -0
- intentkit/skills/casino/utils.py +107 -0
- 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 +11 -25
- 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 +11 -21
- 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/README.md +154 -0
- intentkit/skills/dexscreener/__init__.py +97 -93
- intentkit/skills/dexscreener/base.py +125 -133
- intentkit/skills/dexscreener/get_pair_info.py +158 -0
- intentkit/skills/dexscreener/get_token_pairs.py +165 -0
- intentkit/skills/dexscreener/get_tokens_info.py +212 -0
- intentkit/skills/dexscreener/model/search_token_response.py +80 -82
- intentkit/skills/dexscreener/schema.json +91 -48
- intentkit/skills/dexscreener/search_token.py +182 -321
- intentkit/skills/dexscreener/utils.py +420 -0
- 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 +50 -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/README.md +11 -5
- intentkit/skills/firecrawl/__init__.py +5 -18
- intentkit/skills/firecrawl/base.py +4 -11
- 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 +6 -8
- intentkit/skills/firecrawl/scrape.py +150 -40
- 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 +12 -13
- intentkit/skills/heurist/image_generation_arthemy_comics.py +12 -13
- intentkit/skills/heurist/image_generation_arthemy_real.py +12 -13
- intentkit/skills/heurist/image_generation_braindance.py +12 -13
- intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +12 -13
- intentkit/skills/heurist/image_generation_flux_1_dev.py +12 -13
- intentkit/skills/heurist/image_generation_sdxl.py +12 -13
- 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 +1 -7
- intentkit/skills/lifi/schema.json +17 -8
- intentkit/skills/lifi/token_execute.py +36 -30
- 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 +23 -0
- intentkit/skills/openai/__init__.py +17 -18
- intentkit/skills/openai/base.py +10 -14
- intentkit/skills/openai/dalle_image_generation.py +3 -8
- intentkit/skills/openai/gpt_avatar_generator.py +102 -0
- intentkit/skills/openai/gpt_image_generation.py +4 -8
- intentkit/skills/openai/gpt_image_mini_generator.py +91 -0
- intentkit/skills/openai/gpt_image_to_image.py +4 -8
- 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 +40 -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 +9 -13
- intentkit/skills/supabase/delete_data.py +5 -6
- intentkit/skills/supabase/fetch_data.py +13 -14
- intentkit/skills/supabase/insert_data.py +5 -6
- intentkit/skills/supabase/invoke_function.py +7 -8
- intentkit/skills/supabase/schema.json +2 -3
- intentkit/skills/supabase/update_data.py +7 -8
- intentkit/skills/supabase/upsert_data.py +5 -6
- 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 +23 -35
- intentkit/skills/twitter/follow_user.py +3 -7
- intentkit/skills/twitter/get_mentions.py +6 -13
- intentkit/skills/twitter/get_timeline.py +5 -13
- intentkit/skills/twitter/get_user_by_username.py +3 -7
- intentkit/skills/twitter/get_user_tweets.py +6 -14
- intentkit/skills/twitter/like_tweet.py +3 -7
- intentkit/skills/twitter/post_tweet.py +23 -12
- intentkit/skills/twitter/reply_tweet.py +21 -12
- intentkit/skills/twitter/retweet.py +3 -7
- intentkit/skills/twitter/schema.json +1 -0
- intentkit/skills/twitter/search_tweets.py +5 -13
- 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 +9 -9
- 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 +61 -0
- intentkit/skills/x402/ask_agent.py +98 -0
- intentkit/skills/x402/base.py +99 -0
- intentkit/skills/x402/http_request.py +117 -0
- intentkit/skills/x402/schema.json +45 -0
- intentkit/skills/x402/x402.webp +0 -0
- intentkit/skills/xmtp/__init__.py +4 -15
- intentkit/skills/xmtp/base.py +61 -2
- intentkit/skills/xmtp/price.py +18 -13
- intentkit/skills/xmtp/schema.json +69 -71
- intentkit/skills/xmtp/swap.py +22 -25
- intentkit/skills/xmtp/transfer.py +71 -32
- intentkit/utils/chain.py +3 -3
- intentkit/utils/error.py +14 -1
- intentkit/utils/logging.py +2 -4
- intentkit/utils/s3.py +59 -7
- intentkit/utils/schema.py +100 -0
- intentkit/utils/slack_alert.py +7 -8
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/METADATA +14 -16
- intentkit-0.8.17.dist-info/RECORD +466 -0
- intentkit/abstracts/exception.py +0 -9
- intentkit/core/skill.py +0 -200
- 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.6.13.dev2.dist-info/RECORD +0 -409
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/WHEEL +0 -0
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/licenses/LICENSE +0 -0
|
@@ -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.http.base import HttpBaseTool
|
|
9
8
|
from intentkit.skills.http.get import HttpGet
|
|
@@ -33,7 +32,6 @@ class Config(SkillConfig):
|
|
|
33
32
|
async def get_skills(
|
|
34
33
|
config: "Config",
|
|
35
34
|
is_private: bool,
|
|
36
|
-
store: SkillStoreABC,
|
|
37
35
|
**_,
|
|
38
36
|
) -> list[HttpBaseTool]:
|
|
39
37
|
"""Get all HTTP client skills.
|
|
@@ -41,7 +39,6 @@ async def get_skills(
|
|
|
41
39
|
Args:
|
|
42
40
|
config: The configuration for HTTP client skills.
|
|
43
41
|
is_private: Whether to include private skills.
|
|
44
|
-
store: The skill store for persisting data.
|
|
45
42
|
|
|
46
43
|
Returns:
|
|
47
44
|
A list of HTTP client skills.
|
|
@@ -58,7 +55,7 @@ async def get_skills(
|
|
|
58
55
|
# Get each skill using the cached getter
|
|
59
56
|
result = []
|
|
60
57
|
for name in available_skills:
|
|
61
|
-
skill = get_http_skill(name
|
|
58
|
+
skill = get_http_skill(name)
|
|
62
59
|
if skill:
|
|
63
60
|
result.append(skill)
|
|
64
61
|
return result
|
|
@@ -66,34 +63,26 @@ async def get_skills(
|
|
|
66
63
|
|
|
67
64
|
def get_http_skill(
|
|
68
65
|
name: str,
|
|
69
|
-
store: SkillStoreABC,
|
|
70
66
|
) -> HttpBaseTool:
|
|
71
67
|
"""Get an HTTP client skill by name.
|
|
72
68
|
|
|
73
69
|
Args:
|
|
74
70
|
name: The name of the skill to get
|
|
75
|
-
store: The skill store for persisting data
|
|
76
71
|
|
|
77
72
|
Returns:
|
|
78
73
|
The requested HTTP client skill
|
|
79
74
|
"""
|
|
80
75
|
if name == "http_get":
|
|
81
76
|
if name not in _cache:
|
|
82
|
-
_cache[name] = HttpGet(
|
|
83
|
-
skill_store=store,
|
|
84
|
-
)
|
|
77
|
+
_cache[name] = HttpGet()
|
|
85
78
|
return _cache[name]
|
|
86
79
|
elif name == "http_post":
|
|
87
80
|
if name not in _cache:
|
|
88
|
-
_cache[name] = HttpPost(
|
|
89
|
-
skill_store=store,
|
|
90
|
-
)
|
|
81
|
+
_cache[name] = HttpPost()
|
|
91
82
|
return _cache[name]
|
|
92
83
|
elif name == "http_put":
|
|
93
84
|
if name not in _cache:
|
|
94
|
-
_cache[name] = HttpPut(
|
|
95
|
-
skill_store=store,
|
|
96
|
-
)
|
|
85
|
+
_cache[name] = HttpPut()
|
|
97
86
|
return _cache[name]
|
|
98
87
|
else:
|
|
99
88
|
logger.warning(f"Unknown HTTP skill: {name}")
|
intentkit/skills/http/base.py
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
from typing import Type
|
|
2
|
-
|
|
3
1
|
from pydantic import BaseModel, Field
|
|
4
2
|
|
|
5
|
-
from intentkit.abstracts.skill import SkillStoreABC
|
|
6
3
|
from intentkit.skills.base import IntentKitSkill
|
|
7
4
|
|
|
8
5
|
|
|
@@ -11,10 +8,7 @@ class HttpBaseTool(IntentKitSkill):
|
|
|
11
8
|
|
|
12
9
|
name: str = Field(description="The name of the tool")
|
|
13
10
|
description: str = Field(description="A description of what the tool does")
|
|
14
|
-
args_schema:
|
|
15
|
-
skill_store: SkillStoreABC = Field(
|
|
16
|
-
description="The skill store for persisting data"
|
|
17
|
-
)
|
|
11
|
+
args_schema: type[BaseModel]
|
|
18
12
|
|
|
19
13
|
@property
|
|
20
14
|
def category(self) -> str:
|
intentkit/skills/http/get.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
import httpx
|
|
5
|
+
from langchain_core.tools import ToolException
|
|
5
6
|
from pydantic import BaseModel, Field
|
|
6
7
|
|
|
7
8
|
from intentkit.skills.http.base import HttpBaseTool
|
|
@@ -13,15 +14,15 @@ class HttpGetInput(BaseModel):
|
|
|
13
14
|
"""Input for HTTP GET request."""
|
|
14
15
|
|
|
15
16
|
url: str = Field(description="The URL to send the GET request to")
|
|
16
|
-
headers:
|
|
17
|
+
headers: dict[str, str] | None = Field(
|
|
17
18
|
description="Optional headers to include in the request",
|
|
18
19
|
default=None,
|
|
19
20
|
)
|
|
20
|
-
params:
|
|
21
|
+
params: dict[str, Any] | None = Field(
|
|
21
22
|
description="Optional query parameters to include in the request",
|
|
22
23
|
default=None,
|
|
23
24
|
)
|
|
24
|
-
timeout:
|
|
25
|
+
timeout: float | None = Field(
|
|
25
26
|
description="Request timeout in seconds (default: 30)",
|
|
26
27
|
default=30.0,
|
|
27
28
|
)
|
|
@@ -46,13 +47,13 @@ class HttpGet(HttpBaseTool):
|
|
|
46
47
|
"Returns the response content as text. "
|
|
47
48
|
"Use this when you need to fetch data from web APIs or websites."
|
|
48
49
|
)
|
|
49
|
-
args_schema:
|
|
50
|
+
args_schema: type[BaseModel] = HttpGetInput
|
|
50
51
|
|
|
51
52
|
async def _arun(
|
|
52
53
|
self,
|
|
53
54
|
url: str,
|
|
54
|
-
headers:
|
|
55
|
-
params:
|
|
55
|
+
headers: dict[str, str] | None = None,
|
|
56
|
+
params: dict[str, Any] | None = None,
|
|
56
57
|
timeout: float = 30.0,
|
|
57
58
|
**kwargs,
|
|
58
59
|
) -> str:
|
|
@@ -83,12 +84,16 @@ class HttpGet(HttpBaseTool):
|
|
|
83
84
|
# Return response content
|
|
84
85
|
return f"Status: {response.status_code}\nContent: {response.text}"
|
|
85
86
|
|
|
86
|
-
except httpx.TimeoutException:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
except httpx.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
except httpx.TimeoutException as exc:
|
|
88
|
+
raise ToolException(
|
|
89
|
+
f"Request to {url} timed out after {timeout} seconds"
|
|
90
|
+
) from exc
|
|
91
|
+
except httpx.HTTPStatusError as exc:
|
|
92
|
+
raise ToolException(
|
|
93
|
+
f"HTTP {exc.response.status_code} - {exc.response.text}"
|
|
94
|
+
) from exc
|
|
95
|
+
except httpx.RequestError as exc:
|
|
96
|
+
raise ToolException(f"Failed to connect to {url} - {str(exc)}") from exc
|
|
97
|
+
except Exception as exc: # noqa: BLE001
|
|
98
|
+
logger.error("Unexpected error in HTTP GET request", exc_info=exc)
|
|
99
|
+
raise ToolException(f"Unexpected error occurred - {str(exc)}") from exc
|
intentkit/skills/http/post.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
import httpx
|
|
5
|
+
from langchain_core.tools import ToolException
|
|
5
6
|
from pydantic import BaseModel, Field
|
|
6
7
|
|
|
7
8
|
from intentkit.skills.http.base import HttpBaseTool
|
|
@@ -13,19 +14,19 @@ class HttpPostInput(BaseModel):
|
|
|
13
14
|
"""Input for HTTP POST request."""
|
|
14
15
|
|
|
15
16
|
url: str = Field(description="The URL to send the POST request to")
|
|
16
|
-
data:
|
|
17
|
+
data: dict[str, Any] | str | None = Field(
|
|
17
18
|
description="The data to send in the request body. Can be a dictionary (will be sent as JSON) or a string",
|
|
18
19
|
default=None,
|
|
19
20
|
)
|
|
20
|
-
headers:
|
|
21
|
+
headers: dict[str, str] | None = Field(
|
|
21
22
|
description="Optional headers to include in the request",
|
|
22
23
|
default=None,
|
|
23
24
|
)
|
|
24
|
-
params:
|
|
25
|
+
params: dict[str, Any] | None = Field(
|
|
25
26
|
description="Optional query parameters to include in the request",
|
|
26
27
|
default=None,
|
|
27
28
|
)
|
|
28
|
-
timeout:
|
|
29
|
+
timeout: float | None = Field(
|
|
29
30
|
description="Request timeout in seconds (default: 30)",
|
|
30
31
|
default=30.0,
|
|
31
32
|
)
|
|
@@ -51,14 +52,14 @@ class HttpPost(HttpBaseTool):
|
|
|
51
52
|
"Returns the response content as text. "
|
|
52
53
|
"Use this when you need to send data to web APIs or submit forms."
|
|
53
54
|
)
|
|
54
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = HttpPostInput
|
|
55
56
|
|
|
56
57
|
async def _arun(
|
|
57
58
|
self,
|
|
58
59
|
url: str,
|
|
59
|
-
data:
|
|
60
|
-
headers:
|
|
61
|
-
params:
|
|
60
|
+
data: dict[str, Any] | str | None = None,
|
|
61
|
+
headers: dict[str, str] | None = None,
|
|
62
|
+
params: dict[str, Any] | None = None,
|
|
62
63
|
timeout: float = 30.0,
|
|
63
64
|
**kwargs,
|
|
64
65
|
) -> str:
|
|
@@ -100,12 +101,16 @@ class HttpPost(HttpBaseTool):
|
|
|
100
101
|
# Return response content
|
|
101
102
|
return f"Status: {response.status_code}\nContent: {response.text}"
|
|
102
103
|
|
|
103
|
-
except httpx.TimeoutException:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
except httpx.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
104
|
+
except httpx.TimeoutException as exc:
|
|
105
|
+
raise ToolException(
|
|
106
|
+
f"Request to {url} timed out after {timeout} seconds"
|
|
107
|
+
) from exc
|
|
108
|
+
except httpx.HTTPStatusError as exc:
|
|
109
|
+
raise ToolException(
|
|
110
|
+
f"HTTP {exc.response.status_code} - {exc.response.text}"
|
|
111
|
+
) from exc
|
|
112
|
+
except httpx.RequestError as exc:
|
|
113
|
+
raise ToolException(f"Failed to connect to {url} - {str(exc)}") from exc
|
|
114
|
+
except Exception as exc: # noqa: BLE001
|
|
115
|
+
logger.error("Unexpected error in HTTP POST request", exc_info=exc)
|
|
116
|
+
raise ToolException(f"Unexpected error occurred - {str(exc)}") from exc
|
intentkit/skills/http/put.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
import httpx
|
|
5
|
+
from langchain_core.tools import ToolException
|
|
5
6
|
from pydantic import BaseModel, Field
|
|
6
7
|
|
|
7
8
|
from intentkit.skills.http.base import HttpBaseTool
|
|
@@ -13,19 +14,19 @@ class HttpPutInput(BaseModel):
|
|
|
13
14
|
"""Input for HTTP PUT request."""
|
|
14
15
|
|
|
15
16
|
url: str = Field(description="The URL to send the PUT request to")
|
|
16
|
-
data:
|
|
17
|
+
data: dict[str, Any] | str | None = Field(
|
|
17
18
|
description="The data to send in the request body. Can be a dictionary (will be sent as JSON) or a string",
|
|
18
19
|
default=None,
|
|
19
20
|
)
|
|
20
|
-
headers:
|
|
21
|
+
headers: dict[str, str] | None = Field(
|
|
21
22
|
description="Optional headers to include in the request",
|
|
22
23
|
default=None,
|
|
23
24
|
)
|
|
24
|
-
params:
|
|
25
|
+
params: dict[str, Any] | None = Field(
|
|
25
26
|
description="Optional query parameters to include in the request",
|
|
26
27
|
default=None,
|
|
27
28
|
)
|
|
28
|
-
timeout:
|
|
29
|
+
timeout: float | None = Field(
|
|
29
30
|
description="Request timeout in seconds (default: 30)",
|
|
30
31
|
default=30.0,
|
|
31
32
|
)
|
|
@@ -51,14 +52,14 @@ class HttpPut(HttpBaseTool):
|
|
|
51
52
|
"Returns the response content as text. "
|
|
52
53
|
"Use this when you need to update or replace data on web APIs."
|
|
53
54
|
)
|
|
54
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = HttpPutInput
|
|
55
56
|
|
|
56
57
|
async def _arun(
|
|
57
58
|
self,
|
|
58
59
|
url: str,
|
|
59
|
-
data:
|
|
60
|
-
headers:
|
|
61
|
-
params:
|
|
60
|
+
data: dict[str, Any] | str | None = None,
|
|
61
|
+
headers: dict[str, str] | None = None,
|
|
62
|
+
params: dict[str, Any] | None = None,
|
|
62
63
|
timeout: float = 30.0,
|
|
63
64
|
**kwargs,
|
|
64
65
|
) -> str:
|
|
@@ -100,12 +101,16 @@ class HttpPut(HttpBaseTool):
|
|
|
100
101
|
# Return response content
|
|
101
102
|
return f"Status: {response.status_code}\nContent: {response.text}"
|
|
102
103
|
|
|
103
|
-
except httpx.TimeoutException:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
except httpx.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
104
|
+
except httpx.TimeoutException as exc:
|
|
105
|
+
raise ToolException(
|
|
106
|
+
f"Request to {url} timed out after {timeout} seconds"
|
|
107
|
+
) from exc
|
|
108
|
+
except httpx.HTTPStatusError as exc:
|
|
109
|
+
raise ToolException(
|
|
110
|
+
f"HTTP {exc.response.status_code} - {exc.response.text}"
|
|
111
|
+
) from exc
|
|
112
|
+
except httpx.RequestError as exc:
|
|
113
|
+
raise ToolException(f"Failed to connect to {url} - {str(exc)}") from exc
|
|
114
|
+
except Exception as exc: # noqa: BLE001
|
|
115
|
+
logger.error("Unexpected error in HTTP PUT request", exc_info=exc)
|
|
116
|
+
raise ToolException(f"Unexpected error occurred - {str(exc)}") from exc
|
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
"description": "HTTP client skills for making web requests",
|
|
6
6
|
"x-icon": "https://ai.service.crestal.dev/skills/http/http.svg",
|
|
7
7
|
"x-tags": [
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"Client"
|
|
8
|
+
"Developer Tools",
|
|
9
|
+
"Infrastructure",
|
|
10
|
+
"Knowledge Base"
|
|
12
11
|
],
|
|
13
12
|
"properties": {
|
|
14
13
|
"enabled": {
|
|
@@ -77,4 +76,4 @@
|
|
|
77
76
|
"enabled"
|
|
78
77
|
],
|
|
79
78
|
"additionalProperties": true
|
|
80
|
-
}
|
|
79
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import
|
|
2
|
+
from typing import Any, TypedDict
|
|
3
3
|
|
|
4
|
-
from intentkit.abstracts.skill import SkillStoreABC
|
|
5
4
|
from intentkit.skills.base import SkillConfig, SkillState
|
|
6
5
|
from intentkit.skills.lifi.base import LiFiBaseTool
|
|
7
6
|
from intentkit.skills.lifi.token_execute import TokenExecute
|
|
@@ -23,19 +22,18 @@ class Config(SkillConfig):
|
|
|
23
22
|
"""Configuration for LiFi skills."""
|
|
24
23
|
|
|
25
24
|
states: SkillStates
|
|
26
|
-
default_slippage:
|
|
27
|
-
allowed_chains:
|
|
28
|
-
max_execution_time:
|
|
25
|
+
default_slippage: float | None = 0.03
|
|
26
|
+
allowed_chains: list[str] | None = None
|
|
27
|
+
max_execution_time: int | None = 300
|
|
29
28
|
|
|
30
29
|
|
|
31
30
|
async def get_skills(
|
|
32
31
|
config: "Config",
|
|
33
32
|
is_private: bool,
|
|
34
|
-
|
|
35
|
-
**_,
|
|
33
|
+
**_: Any,
|
|
36
34
|
) -> list[LiFiBaseTool]:
|
|
37
35
|
"""Get all LiFi skills."""
|
|
38
|
-
available_skills = []
|
|
36
|
+
available_skills: list[str] = []
|
|
39
37
|
|
|
40
38
|
# Log configuration
|
|
41
39
|
logger.info(f"[LiFi_Skills] Initializing with config: {config}")
|
|
@@ -57,10 +55,10 @@ async def get_skills(
|
|
|
57
55
|
logger.info(f"[LiFi_Skills] Available skills: {available_skills}")
|
|
58
56
|
|
|
59
57
|
# Get each skill using the cached getter
|
|
60
|
-
skills = []
|
|
58
|
+
skills: list[LiFiBaseTool] = []
|
|
61
59
|
for name in available_skills:
|
|
62
60
|
try:
|
|
63
|
-
skill = get_lifi_skill(name,
|
|
61
|
+
skill = get_lifi_skill(name, config)
|
|
64
62
|
skills.append(skill)
|
|
65
63
|
logger.info(f"[LiFi_Skills] Successfully loaded skill: {name}")
|
|
66
64
|
except Exception as e:
|
|
@@ -73,7 +71,6 @@ async def get_skills(
|
|
|
73
71
|
|
|
74
72
|
def get_lifi_skill(
|
|
75
73
|
name: str,
|
|
76
|
-
store: SkillStoreABC,
|
|
77
74
|
config: Config,
|
|
78
75
|
) -> LiFiBaseTool:
|
|
79
76
|
"""Get a LiFi skill by name."""
|
|
@@ -108,7 +105,6 @@ def get_lifi_skill(
|
|
|
108
105
|
logger.info(f"[LiFi_Skills] Allowed chains: {allowed_chains}")
|
|
109
106
|
|
|
110
107
|
_cache[cache_key] = TokenQuote(
|
|
111
|
-
skill_store=store,
|
|
112
108
|
default_slippage=default_slippage,
|
|
113
109
|
allowed_chains=allowed_chains,
|
|
114
110
|
)
|
|
@@ -129,7 +125,6 @@ def get_lifi_skill(
|
|
|
129
125
|
)
|
|
130
126
|
|
|
131
127
|
_cache[cache_key] = TokenExecute(
|
|
132
|
-
skill_store=store,
|
|
133
128
|
default_slippage=default_slippage,
|
|
134
129
|
allowed_chains=allowed_chains,
|
|
135
130
|
max_execution_time=max_execution_time,
|
intentkit/skills/lifi/base.py
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
from typing import Type
|
|
2
|
-
|
|
3
1
|
from pydantic import BaseModel, Field
|
|
4
2
|
|
|
5
|
-
from intentkit.abstracts.skill import SkillStoreABC
|
|
6
3
|
from intentkit.skills.base import IntentKitSkill
|
|
7
4
|
|
|
8
5
|
|
|
@@ -11,10 +8,7 @@ class LiFiBaseTool(IntentKitSkill):
|
|
|
11
8
|
|
|
12
9
|
name: str = Field(description="The name of the tool")
|
|
13
10
|
description: str = Field(description="A description of what the tool does")
|
|
14
|
-
args_schema:
|
|
15
|
-
skill_store: SkillStoreABC = Field(
|
|
16
|
-
description="The skill store for persisting data"
|
|
17
|
-
)
|
|
11
|
+
args_schema: type[BaseModel]
|
|
18
12
|
|
|
19
13
|
@property
|
|
20
14
|
def category(self) -> str:
|
|
@@ -5,10 +5,7 @@
|
|
|
5
5
|
"description": "Cross-chain token transfer and swap capabilities using the LiFi protocol",
|
|
6
6
|
"x-icon": "https://ai.service.crestal.dev/skills/lifi/lifi.png",
|
|
7
7
|
"x-tags": [
|
|
8
|
-
"DeFi"
|
|
9
|
-
"Blockchain",
|
|
10
|
-
"Token Transfer",
|
|
11
|
-
"Cross-chain"
|
|
8
|
+
"DeFi"
|
|
12
9
|
],
|
|
13
10
|
"properties": {
|
|
14
11
|
"enabled": {
|
|
@@ -53,7 +50,10 @@
|
|
|
53
50
|
"description": "Execute token transfers (requires CDP wallet and cdp skills enabled)"
|
|
54
51
|
}
|
|
55
52
|
},
|
|
56
|
-
"required": [
|
|
53
|
+
"required": [
|
|
54
|
+
"token_quote",
|
|
55
|
+
"token_execute"
|
|
56
|
+
],
|
|
57
57
|
"description": "States for each LiFi skill"
|
|
58
58
|
},
|
|
59
59
|
"default_slippage": {
|
|
@@ -71,7 +71,13 @@
|
|
|
71
71
|
"description": "List of blockchain networks that can be used (if empty, all supported chains are allowed)",
|
|
72
72
|
"items": {
|
|
73
73
|
"type": "string",
|
|
74
|
-
"examples": [
|
|
74
|
+
"examples": [
|
|
75
|
+
"ETH",
|
|
76
|
+
"POL",
|
|
77
|
+
"ARB",
|
|
78
|
+
"OPT",
|
|
79
|
+
"DAI"
|
|
80
|
+
]
|
|
75
81
|
},
|
|
76
82
|
"uniqueItems": true
|
|
77
83
|
},
|
|
@@ -84,6 +90,9 @@
|
|
|
84
90
|
"maximum": 1800
|
|
85
91
|
}
|
|
86
92
|
},
|
|
87
|
-
"required": [
|
|
93
|
+
"required": [
|
|
94
|
+
"states",
|
|
95
|
+
"enabled"
|
|
96
|
+
],
|
|
88
97
|
"additionalProperties": true
|
|
89
|
-
}
|
|
98
|
+
}
|