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,15 +1,14 @@
|
|
|
1
1
|
import hashlib
|
|
2
2
|
import json
|
|
3
3
|
import logging
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any
|
|
5
5
|
|
|
6
6
|
import httpx
|
|
7
|
-
from pydantic import BaseModel
|
|
7
|
+
from pydantic import BaseModel
|
|
8
8
|
|
|
9
|
-
from intentkit.
|
|
9
|
+
from intentkit.clients.s3 import store_file
|
|
10
10
|
from intentkit.skills.venice_audio.base import VeniceAudioBaseTool
|
|
11
11
|
from intentkit.skills.venice_audio.input import AllowedAudioFormat, VeniceAudioInput
|
|
12
|
-
from intentkit.utils.s3 import FileType, store_file_bytes
|
|
13
12
|
|
|
14
13
|
logger = logging.getLogger(__name__)
|
|
15
14
|
|
|
@@ -33,22 +32,19 @@ class VeniceAudioTool(VeniceAudioBaseTool):
|
|
|
33
32
|
"Requires input text. Optional parameters include speed (0.25-4.0, default 1.0) "
|
|
34
33
|
"and audio format (mp3, opus, aac, flac, wav, pcm, default mp3)."
|
|
35
34
|
)
|
|
36
|
-
args_schema:
|
|
37
|
-
skill_store: SkillStoreABC = Field(
|
|
38
|
-
description="The skill store instance for accessing system/agent configurations and persisting data."
|
|
39
|
-
)
|
|
35
|
+
args_schema: type[BaseModel] = VeniceAudioInput
|
|
40
36
|
|
|
41
37
|
async def _arun(
|
|
42
38
|
self,
|
|
43
|
-
|
|
39
|
+
voice_input: str,
|
|
44
40
|
voice_model: str,
|
|
45
|
-
speed:
|
|
46
|
-
response_format:
|
|
41
|
+
speed: float | None = 1.0,
|
|
42
|
+
response_format: AllowedAudioFormat | None = "mp3",
|
|
47
43
|
**kwargs, # type: ignore
|
|
48
|
-
) ->
|
|
44
|
+
) -> dict[str, Any]:
|
|
49
45
|
"""
|
|
50
46
|
Generates audio using the configured voice model via Venice AI TTS /audio/speech endpoint.
|
|
51
|
-
Stores the resulting audio using
|
|
47
|
+
Stores the resulting audio using the generic S3 helper.
|
|
52
48
|
Returns a dictionary containing audio details on success, or API error details on failure.
|
|
53
49
|
"""
|
|
54
50
|
context = self.get_context()
|
|
@@ -96,9 +92,9 @@ class VeniceAudioTool(VeniceAudioBaseTool):
|
|
|
96
92
|
await self.apply_rate_limit(context)
|
|
97
93
|
|
|
98
94
|
# --- Prepare API Call ---
|
|
99
|
-
payload:
|
|
95
|
+
payload: dict[str, Any] = {
|
|
100
96
|
"model": tts_model_id,
|
|
101
|
-
"input":
|
|
97
|
+
"input": voice_input,
|
|
102
98
|
"voice": voice_model,
|
|
103
99
|
"response_format": final_response_format,
|
|
104
100
|
"speed": speed if speed is not None else 1.0,
|
|
@@ -155,11 +151,32 @@ class VeniceAudioTool(VeniceAudioBaseTool):
|
|
|
155
151
|
key = f"{self.category}/{voice_model}/{audio_hash}.{file_extension}"
|
|
156
152
|
|
|
157
153
|
size_limit = 1024 * 20 # 20Mb Size limit
|
|
158
|
-
|
|
159
|
-
|
|
154
|
+
audio_size = len(audio_bytes)
|
|
155
|
+
if audio_size > size_limit:
|
|
156
|
+
message = f"Generated audio exceeds the allowed size of {size_limit} bytes."
|
|
157
|
+
logger.error(
|
|
158
|
+
"Failed to store audio (Voice: %s): %s",
|
|
159
|
+
voice_model,
|
|
160
|
+
message,
|
|
161
|
+
)
|
|
162
|
+
return {
|
|
163
|
+
"error": True,
|
|
164
|
+
"error_type": "FileSizeLimitExceeded",
|
|
165
|
+
"message": message,
|
|
166
|
+
"voice_model": voice_model,
|
|
167
|
+
"requested_format": final_response_format,
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
mime_type = (
|
|
171
|
+
content_type_header.split(";", 1)[0].strip()
|
|
172
|
+
if content_type_header
|
|
173
|
+
else None
|
|
174
|
+
)
|
|
175
|
+
stored_url = await store_file(
|
|
176
|
+
content=audio_bytes,
|
|
160
177
|
key=key,
|
|
161
|
-
|
|
162
|
-
|
|
178
|
+
content_type=mime_type,
|
|
179
|
+
size=audio_size,
|
|
163
180
|
)
|
|
164
181
|
|
|
165
182
|
if not stored_url:
|
|
@@ -182,12 +199,12 @@ class VeniceAudioTool(VeniceAudioBaseTool):
|
|
|
182
199
|
return {
|
|
183
200
|
"audio_url": stored_url,
|
|
184
201
|
"audio_bytes_sha256": audio_hash,
|
|
185
|
-
"content_type": content_type_header,
|
|
202
|
+
"content_type": mime_type or content_type_header,
|
|
186
203
|
"voice_model": voice_model,
|
|
187
204
|
"tts_engine": tts_model_id,
|
|
188
205
|
"speed": speed if speed is not None else 1.0,
|
|
189
206
|
"response_format": final_response_format,
|
|
190
|
-
"input_text_length": len(
|
|
207
|
+
"input_text_length": len(voice_input),
|
|
191
208
|
"error": False,
|
|
192
209
|
"status_code": response.status_code,
|
|
193
210
|
}
|
|
@@ -1,154 +1,147 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from typing import NotRequired,
|
|
3
|
-
|
|
4
|
-
from intentkit.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
from intentkit.skills.venice_image.
|
|
12
|
-
from intentkit.skills.venice_image.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
from intentkit.skills.venice_image.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return None
|
|
149
|
-
|
|
150
|
-
# Cache and return the newly created instance
|
|
151
|
-
_cache[name] = skill_class(
|
|
152
|
-
skill_store=store,
|
|
153
|
-
)
|
|
154
|
-
return _cache[name]
|
|
1
|
+
import logging
|
|
2
|
+
from typing import NotRequired, TypedDict
|
|
3
|
+
|
|
4
|
+
from intentkit.skills.base import (
|
|
5
|
+
SkillConfig,
|
|
6
|
+
SkillState,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
# Import the base tool and all specific model skill classes
|
|
10
|
+
from intentkit.skills.venice_image.base import VeniceImageBaseTool
|
|
11
|
+
from intentkit.skills.venice_image.image_enhance.image_enhance import ImageEnhance
|
|
12
|
+
from intentkit.skills.venice_image.image_generation.image_generation_fluently_xl import (
|
|
13
|
+
ImageGenerationFluentlyXL,
|
|
14
|
+
)
|
|
15
|
+
from intentkit.skills.venice_image.image_generation.image_generation_flux_dev import (
|
|
16
|
+
ImageGenerationFluxDev,
|
|
17
|
+
)
|
|
18
|
+
from intentkit.skills.venice_image.image_generation.image_generation_flux_dev_uncensored import (
|
|
19
|
+
ImageGenerationFluxDevUncensored,
|
|
20
|
+
)
|
|
21
|
+
from intentkit.skills.venice_image.image_generation.image_generation_lustify_sdxl import (
|
|
22
|
+
ImageGenerationLustifySDXL,
|
|
23
|
+
)
|
|
24
|
+
from intentkit.skills.venice_image.image_generation.image_generation_pony_realism import (
|
|
25
|
+
ImageGenerationPonyRealism,
|
|
26
|
+
)
|
|
27
|
+
from intentkit.skills.venice_image.image_generation.image_generation_stable_diffusion_3_5 import (
|
|
28
|
+
ImageGenerationStableDiffusion35,
|
|
29
|
+
)
|
|
30
|
+
from intentkit.skills.venice_image.image_generation.image_generation_venice_sd35 import (
|
|
31
|
+
ImageGenerationVeniceSD35,
|
|
32
|
+
)
|
|
33
|
+
from intentkit.skills.venice_image.image_upscale.image_upscale import ImageUpscale
|
|
34
|
+
from intentkit.skills.venice_image.image_vision.image_vision import ImageVision
|
|
35
|
+
|
|
36
|
+
# Cache skills at the system level, because they are stateless and only depend on the store
|
|
37
|
+
_cache: dict[str, VeniceImageBaseTool] = {}
|
|
38
|
+
|
|
39
|
+
logger = logging.getLogger(__name__)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# Define the expected structure for the 'states' dictionary in the config
|
|
43
|
+
class SkillStates(TypedDict):
|
|
44
|
+
image_upscale: SkillState
|
|
45
|
+
image_enhance: SkillState
|
|
46
|
+
image_vision: SkillState
|
|
47
|
+
image_generation_flux_dev: SkillState
|
|
48
|
+
image_generation_flux_dev_uncensored: SkillState
|
|
49
|
+
image_generation_venice_sd35: SkillState
|
|
50
|
+
image_generation_fluently_xl: SkillState
|
|
51
|
+
image_generation_lustify_sdxl: SkillState
|
|
52
|
+
image_generation_pony_realism: SkillState
|
|
53
|
+
image_generation_stable_diffusion_3_5: SkillState
|
|
54
|
+
# Add new skill names here if more models are added
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# Define the overall configuration structure for the venice_image category
|
|
58
|
+
class Config(SkillConfig):
|
|
59
|
+
"""Configuration for Venice Image skills."""
|
|
60
|
+
|
|
61
|
+
enabled: bool # Keep standard enabled flag
|
|
62
|
+
states: SkillStates
|
|
63
|
+
api_key_provider: str = "agent_owner"
|
|
64
|
+
api_key: NotRequired[str | None] # Explicitly Optional
|
|
65
|
+
safe_mode: NotRequired[bool] # Defaults handled in base or usage
|
|
66
|
+
hide_watermark: NotRequired[bool] # Defaults handled in base or usage
|
|
67
|
+
negative_prompt: NotRequired[str] # Defaults handled in base or usage
|
|
68
|
+
rate_limit_number: NotRequired[int | None] # Explicitly Optional
|
|
69
|
+
rate_limit_minutes: NotRequired[int | None] # Explicitly Optional
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
_SKILL_NAME_TO_CLASS_MAP: dict[str, type[VeniceImageBaseTool]] = {
|
|
73
|
+
"image_upscale": ImageUpscale,
|
|
74
|
+
"image_enhance": ImageEnhance,
|
|
75
|
+
"image_vision": ImageVision,
|
|
76
|
+
"image_generation_flux_dev": ImageGenerationFluxDev,
|
|
77
|
+
"image_generation_flux_dev_uncensored": ImageGenerationFluxDevUncensored,
|
|
78
|
+
"image_generation_venice_sd35": ImageGenerationVeniceSD35,
|
|
79
|
+
"image_generation_fluently_xl": ImageGenerationFluentlyXL,
|
|
80
|
+
"image_generation_lustify_sdxl": ImageGenerationLustifySDXL,
|
|
81
|
+
"image_generation_pony_realism": ImageGenerationPonyRealism,
|
|
82
|
+
"image_generation_stable_diffusion_3_5": ImageGenerationStableDiffusion35,
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
async def get_skills(
|
|
87
|
+
config: "Config",
|
|
88
|
+
is_private: bool,
|
|
89
|
+
**_, # Allow for extra arguments if the loader passes them
|
|
90
|
+
) -> list[VeniceImageBaseTool]:
|
|
91
|
+
"""Get all enabled Venice Image skills based on configuration and privacy level.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
config: The configuration for Venice Image skills.
|
|
95
|
+
is_private: Whether the context is private (e.g., agent owner).
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
A list of instantiated and enabled Venice Image skill objects.
|
|
99
|
+
"""
|
|
100
|
+
# Check if the entire category is disabled first
|
|
101
|
+
if not config.get("enabled", False):
|
|
102
|
+
return []
|
|
103
|
+
|
|
104
|
+
available_skills: list[VeniceImageBaseTool] = []
|
|
105
|
+
|
|
106
|
+
# Include skills based on their state
|
|
107
|
+
for skill_name, state in config["states"].items():
|
|
108
|
+
if state == "disabled":
|
|
109
|
+
continue
|
|
110
|
+
elif state == "public" or (state == "private" and is_private):
|
|
111
|
+
available_skills.append(skill_name)
|
|
112
|
+
|
|
113
|
+
# Get each skill using the cached getter
|
|
114
|
+
result = []
|
|
115
|
+
for name in available_skills:
|
|
116
|
+
skill = get_venice_image_skill(name, config)
|
|
117
|
+
if skill:
|
|
118
|
+
result.append(skill)
|
|
119
|
+
return result
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def get_venice_image_skill(
|
|
123
|
+
name: str,
|
|
124
|
+
config: "Config",
|
|
125
|
+
) -> VeniceImageBaseTool | None:
|
|
126
|
+
"""
|
|
127
|
+
Factory function to get a cached Venice Image skill instance by name.
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
name: The name of the skill to get (must match keys in _SKILL_NAME_TO_CLASS_MAP).
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
The requested Venice Image skill instance, or None if the name is unknown.
|
|
134
|
+
"""
|
|
135
|
+
|
|
136
|
+
# Return from cache immediately if already exists
|
|
137
|
+
if name in _cache:
|
|
138
|
+
return _cache[name]
|
|
139
|
+
|
|
140
|
+
skill_class = _SKILL_NAME_TO_CLASS_MAP.get(name)
|
|
141
|
+
if not skill_class:
|
|
142
|
+
logger.warning(f"Unknown Venice skill: {name}")
|
|
143
|
+
return None
|
|
144
|
+
|
|
145
|
+
# Cache and return the newly created instance
|
|
146
|
+
_cache[name] = skill_class()
|
|
147
|
+
return _cache[name]
|