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,10 +1,7 @@
|
|
|
1
|
-
from typing import Type
|
|
2
|
-
|
|
3
1
|
from langchain_core.tools import ToolException
|
|
4
2
|
from pydantic import BaseModel, Field
|
|
5
3
|
|
|
6
4
|
from intentkit.abstracts.graph import AgentContext
|
|
7
|
-
from intentkit.abstracts.skill import SkillStoreABC
|
|
8
5
|
from intentkit.skills.base import IntentKitSkill
|
|
9
6
|
|
|
10
7
|
|
|
@@ -13,10 +10,7 @@ class SupabaseBaseTool(IntentKitSkill):
|
|
|
13
10
|
|
|
14
11
|
name: str = Field(description="The name of the tool")
|
|
15
12
|
description: str = Field(description="A description of what the tool does")
|
|
16
|
-
args_schema:
|
|
17
|
-
skill_store: SkillStoreABC = Field(
|
|
18
|
-
description="The skill store for persisting data"
|
|
19
|
-
)
|
|
13
|
+
args_schema: type[BaseModel]
|
|
20
14
|
|
|
21
15
|
@property
|
|
22
16
|
def category(self) -> str:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from langchain_core.tools import ToolException
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
@@ -17,7 +17,7 @@ class SupabaseDeleteDataInput(BaseModel):
|
|
|
17
17
|
"""Input for SupabaseDeleteData tool."""
|
|
18
18
|
|
|
19
19
|
table: str = Field(description="The name of the table to delete data from")
|
|
20
|
-
filters:
|
|
20
|
+
filters: dict[str, Any] = Field(
|
|
21
21
|
description="Dictionary of filters to identify which records to delete (e.g., {'id': 123})"
|
|
22
22
|
)
|
|
23
23
|
returning: str = Field(
|
|
@@ -34,12 +34,12 @@ class SupabaseDeleteData(SupabaseBaseTool):
|
|
|
34
34
|
|
|
35
35
|
name: str = NAME
|
|
36
36
|
description: str = PROMPT
|
|
37
|
-
args_schema:
|
|
37
|
+
args_schema: type[BaseModel] = SupabaseDeleteDataInput
|
|
38
38
|
|
|
39
39
|
async def _arun(
|
|
40
40
|
self,
|
|
41
41
|
table: str,
|
|
42
|
-
filters:
|
|
42
|
+
filters: dict[str, Any],
|
|
43
43
|
returning: str = "*",
|
|
44
44
|
**kwargs,
|
|
45
45
|
):
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from langchain_core.tools import ToolException
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
@@ -17,22 +17,22 @@ class SupabaseFetchDataInput(BaseModel):
|
|
|
17
17
|
"""Input for SupabaseFetchData tool."""
|
|
18
18
|
|
|
19
19
|
table: str = Field(description="The name of the table to fetch data from")
|
|
20
|
-
columns:
|
|
20
|
+
columns: str | None = Field(
|
|
21
21
|
default="*",
|
|
22
22
|
description="Comma-separated list of columns to select (default: '*' for all)",
|
|
23
23
|
)
|
|
24
|
-
filters:
|
|
24
|
+
filters: dict[str, Any] | None = Field(
|
|
25
25
|
default=None,
|
|
26
26
|
description="Dictionary of filters to apply (e.g., {'column': 'value', 'age': {'gte': 18}})",
|
|
27
27
|
)
|
|
28
|
-
order_by:
|
|
28
|
+
order_by: str | None = Field(default=None, description="Column to order by")
|
|
29
29
|
ascending: bool = Field(
|
|
30
30
|
default=True, description="Whether to order in ascending order (default: True)"
|
|
31
31
|
)
|
|
32
|
-
limit:
|
|
32
|
+
limit: int | None = Field(
|
|
33
33
|
default=None, description="Maximum number of records to return"
|
|
34
34
|
)
|
|
35
|
-
offset:
|
|
35
|
+
offset: int | None = Field(
|
|
36
36
|
default=None, description="Number of records to skip for pagination"
|
|
37
37
|
)
|
|
38
38
|
|
|
@@ -45,17 +45,17 @@ class SupabaseFetchData(SupabaseBaseTool):
|
|
|
45
45
|
|
|
46
46
|
name: str = NAME
|
|
47
47
|
description: str = PROMPT
|
|
48
|
-
args_schema:
|
|
48
|
+
args_schema: type[BaseModel] = SupabaseFetchDataInput
|
|
49
49
|
|
|
50
50
|
async def _arun(
|
|
51
51
|
self,
|
|
52
52
|
table: str,
|
|
53
|
-
columns:
|
|
54
|
-
filters:
|
|
55
|
-
order_by:
|
|
53
|
+
columns: str | None = "*",
|
|
54
|
+
filters: dict[str, Any] | None = None,
|
|
55
|
+
order_by: str | None = None,
|
|
56
56
|
ascending: bool = True,
|
|
57
|
-
limit:
|
|
58
|
-
offset:
|
|
57
|
+
limit: int | None = None,
|
|
58
|
+
offset: int | None = None,
|
|
59
59
|
**kwargs,
|
|
60
60
|
):
|
|
61
61
|
try:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from langchain_core.tools import ToolException
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
@@ -17,7 +17,7 @@ class SupabaseInsertDataInput(BaseModel):
|
|
|
17
17
|
"""Input for SupabaseInsertData tool."""
|
|
18
18
|
|
|
19
19
|
table: str = Field(description="The name of the table to insert data into")
|
|
20
|
-
data:
|
|
20
|
+
data: dict[str, Any] | list[dict[str, Any]] = Field(
|
|
21
21
|
description="The data to insert. Can be a single object or a list of objects"
|
|
22
22
|
)
|
|
23
23
|
returning: str = Field(
|
|
@@ -34,12 +34,12 @@ class SupabaseInsertData(SupabaseBaseTool):
|
|
|
34
34
|
|
|
35
35
|
name: str = NAME
|
|
36
36
|
description: str = PROMPT
|
|
37
|
-
args_schema:
|
|
37
|
+
args_schema: type[BaseModel] = SupabaseInsertDataInput
|
|
38
38
|
|
|
39
39
|
async def _arun(
|
|
40
40
|
self,
|
|
41
41
|
table: str,
|
|
42
|
-
data:
|
|
42
|
+
data: dict[str, Any] | list[dict[str, Any]],
|
|
43
43
|
returning: str = "*",
|
|
44
44
|
**kwargs,
|
|
45
45
|
):
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from langchain_core.tools import ToolException
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
@@ -17,10 +17,10 @@ class SupabaseInvokeFunctionInput(BaseModel):
|
|
|
17
17
|
"""Input for SupabaseInvokeFunction tool."""
|
|
18
18
|
|
|
19
19
|
function_name: str = Field(description="The name of the Edge Function to invoke")
|
|
20
|
-
parameters:
|
|
20
|
+
parameters: dict[str, Any] | None = Field(
|
|
21
21
|
default=None, description="Optional parameters to pass to the function"
|
|
22
22
|
)
|
|
23
|
-
headers:
|
|
23
|
+
headers: dict[str, str] | None = Field(
|
|
24
24
|
default=None, description="Optional headers to include in the request"
|
|
25
25
|
)
|
|
26
26
|
|
|
@@ -33,13 +33,13 @@ class SupabaseInvokeFunction(SupabaseBaseTool):
|
|
|
33
33
|
|
|
34
34
|
name: str = NAME
|
|
35
35
|
description: str = PROMPT
|
|
36
|
-
args_schema:
|
|
36
|
+
args_schema: type[BaseModel] = SupabaseInvokeFunctionInput
|
|
37
37
|
|
|
38
38
|
async def _arun(
|
|
39
39
|
self,
|
|
40
40
|
function_name: str,
|
|
41
|
-
parameters:
|
|
42
|
-
headers:
|
|
41
|
+
parameters: dict[str, Any] | None = None,
|
|
42
|
+
headers: dict[str, str] | None = None,
|
|
43
43
|
**kwargs,
|
|
44
44
|
):
|
|
45
45
|
try:
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
"description": "Integration with Supabase backend-as-a-service platform enabling database operations and Edge Function invocations",
|
|
6
6
|
"x-icon": "https://ai.service.crestal.dev/skills/supabase/supabase.svg",
|
|
7
7
|
"x-tags": [
|
|
8
|
-
"
|
|
9
|
-
"Backend"
|
|
8
|
+
"Infrastructure"
|
|
10
9
|
],
|
|
11
10
|
"properties": {
|
|
12
11
|
"enabled": {
|
|
@@ -173,4 +172,4 @@
|
|
|
173
172
|
"supabase_key"
|
|
174
173
|
]
|
|
175
174
|
}
|
|
176
|
-
}
|
|
175
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from langchain_core.tools import ToolException
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
@@ -17,10 +17,10 @@ class SupabaseUpdateDataInput(BaseModel):
|
|
|
17
17
|
"""Input for SupabaseUpdateData tool."""
|
|
18
18
|
|
|
19
19
|
table: str = Field(description="The name of the table to update data in")
|
|
20
|
-
data:
|
|
20
|
+
data: dict[str, Any] = Field(
|
|
21
21
|
description="The data to update (key-value pairs of columns and new values)"
|
|
22
22
|
)
|
|
23
|
-
filters:
|
|
23
|
+
filters: dict[str, Any] = Field(
|
|
24
24
|
description="Dictionary of filters to identify which records to update (e.g., {'id': 123})"
|
|
25
25
|
)
|
|
26
26
|
returning: str = Field(
|
|
@@ -36,13 +36,13 @@ class SupabaseUpdateData(SupabaseBaseTool):
|
|
|
36
36
|
|
|
37
37
|
name: str = NAME
|
|
38
38
|
description: str = PROMPT
|
|
39
|
-
args_schema:
|
|
39
|
+
args_schema: type[BaseModel] = SupabaseUpdateDataInput
|
|
40
40
|
|
|
41
41
|
async def _arun(
|
|
42
42
|
self,
|
|
43
43
|
table: str,
|
|
44
|
-
data:
|
|
45
|
-
filters:
|
|
44
|
+
data: dict[str, Any],
|
|
45
|
+
filters: dict[str, Any],
|
|
46
46
|
returning: str = "*",
|
|
47
47
|
**kwargs,
|
|
48
48
|
):
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from langchain_core.tools import ToolException
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
@@ -19,7 +19,7 @@ class SupabaseUpsertDataInput(BaseModel):
|
|
|
19
19
|
"""Input for SupabaseUpsertData tool."""
|
|
20
20
|
|
|
21
21
|
table: str = Field(description="The name of the table to upsert data into")
|
|
22
|
-
data:
|
|
22
|
+
data: dict[str, Any] | list[dict[str, Any]] = Field(
|
|
23
23
|
description="The data to upsert. Can be a single object or a list of objects"
|
|
24
24
|
)
|
|
25
25
|
on_conflict: str = Field(
|
|
@@ -38,12 +38,12 @@ class SupabaseUpsertData(SupabaseBaseTool):
|
|
|
38
38
|
|
|
39
39
|
name: str = NAME
|
|
40
40
|
description: str = PROMPT
|
|
41
|
-
args_schema:
|
|
41
|
+
args_schema: type[BaseModel] = SupabaseUpsertDataInput
|
|
42
42
|
|
|
43
43
|
async def _arun(
|
|
44
44
|
self,
|
|
45
45
|
table: str,
|
|
46
|
-
data:
|
|
46
|
+
data: dict[str, Any] | list[dict[str, Any]],
|
|
47
47
|
on_conflict: str,
|
|
48
48
|
returning: str = "*",
|
|
49
49
|
**kwargs,
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""Superfluid AgentKit skills."""
|
|
2
|
+
|
|
3
|
+
from typing import TypedDict
|
|
4
|
+
|
|
5
|
+
from coinbase_agentkit import superfluid_action_provider
|
|
6
|
+
|
|
7
|
+
from intentkit.models.agent import Agent
|
|
8
|
+
from intentkit.skills.base import (
|
|
9
|
+
SkillConfig,
|
|
10
|
+
SkillState,
|
|
11
|
+
action_to_structured_tool,
|
|
12
|
+
get_agentkit_actions,
|
|
13
|
+
)
|
|
14
|
+
from intentkit.skills.superfluid.base import SuperfluidBaseTool
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class SkillStates(TypedDict):
|
|
18
|
+
SuperfluidActionProvider_create_flow: SkillState
|
|
19
|
+
SuperfluidActionProvider_delete_flow: SkillState
|
|
20
|
+
SuperfluidActionProvider_update_flow: SkillState
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Config(SkillConfig):
|
|
24
|
+
"""Configuration for Superfluid skills."""
|
|
25
|
+
|
|
26
|
+
states: SkillStates
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
async def get_skills(
|
|
30
|
+
config: Config,
|
|
31
|
+
is_private: bool,
|
|
32
|
+
agent_id: str,
|
|
33
|
+
agent: Agent | None = None,
|
|
34
|
+
**_,
|
|
35
|
+
) -> list[SuperfluidBaseTool]:
|
|
36
|
+
"""Get all Superfluid skills."""
|
|
37
|
+
|
|
38
|
+
available_skills: list[str] = []
|
|
39
|
+
for skill_name, state in config["states"].items():
|
|
40
|
+
if state == "disabled":
|
|
41
|
+
continue
|
|
42
|
+
if state == "public" or (state == "private" and is_private):
|
|
43
|
+
available_skills.append(skill_name)
|
|
44
|
+
|
|
45
|
+
actions = await get_agentkit_actions(
|
|
46
|
+
agent_id, [superfluid_action_provider], agent=agent
|
|
47
|
+
)
|
|
48
|
+
tools: list[SuperfluidBaseTool] = []
|
|
49
|
+
for skill in available_skills:
|
|
50
|
+
for action in actions:
|
|
51
|
+
if action.name.endswith(skill):
|
|
52
|
+
tools.append(action_to_structured_tool(action))
|
|
53
|
+
return tools
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"title": "Superfluid",
|
|
5
|
+
"description": "Superfluid streaming actions via Coinbase AgentKit",
|
|
6
|
+
"x-icon": "https://ai.service.crestal.dev/skills/superfluid/superfluid.svg",
|
|
7
|
+
"x-tags": [
|
|
8
|
+
"DeFi"
|
|
9
|
+
],
|
|
10
|
+
"properties": {
|
|
11
|
+
"enabled": {
|
|
12
|
+
"type": "boolean",
|
|
13
|
+
"title": "Enabled",
|
|
14
|
+
"description": "Whether this skill is enabled",
|
|
15
|
+
"default": false
|
|
16
|
+
},
|
|
17
|
+
"states": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"properties": {
|
|
20
|
+
"SuperfluidActionProvider_create_flow": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"title": "Create Flow",
|
|
23
|
+
"enum": [
|
|
24
|
+
"disabled",
|
|
25
|
+
"public",
|
|
26
|
+
"private"
|
|
27
|
+
],
|
|
28
|
+
"x-enum-title": [
|
|
29
|
+
"Disabled",
|
|
30
|
+
"Agent Owner + All Users",
|
|
31
|
+
"Agent Owner Only"
|
|
32
|
+
],
|
|
33
|
+
"description": "State for SuperfluidActionProvider_create_flow",
|
|
34
|
+
"default": "disabled"
|
|
35
|
+
},
|
|
36
|
+
"SuperfluidActionProvider_delete_flow": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"title": "Delete Flow",
|
|
39
|
+
"enum": [
|
|
40
|
+
"disabled",
|
|
41
|
+
"public",
|
|
42
|
+
"private"
|
|
43
|
+
],
|
|
44
|
+
"x-enum-title": [
|
|
45
|
+
"Disabled",
|
|
46
|
+
"Agent Owner + All Users",
|
|
47
|
+
"Agent Owner Only"
|
|
48
|
+
],
|
|
49
|
+
"description": "State for SuperfluidActionProvider_delete_flow",
|
|
50
|
+
"default": "disabled"
|
|
51
|
+
},
|
|
52
|
+
"SuperfluidActionProvider_update_flow": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"title": "Update Flow",
|
|
55
|
+
"enum": [
|
|
56
|
+
"disabled",
|
|
57
|
+
"public",
|
|
58
|
+
"private"
|
|
59
|
+
],
|
|
60
|
+
"x-enum-title": [
|
|
61
|
+
"Disabled",
|
|
62
|
+
"Agent Owner + All Users",
|
|
63
|
+
"Agent Owner Only"
|
|
64
|
+
],
|
|
65
|
+
"description": "State for SuperfluidActionProvider_update_flow",
|
|
66
|
+
"default": "disabled"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"description": "States for each Superfluid skill (disabled, public, or private)"
|
|
70
|
+
},
|
|
71
|
+
"api_key_provider": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"title": "API Key Provider",
|
|
74
|
+
"description": "Who provides the API key",
|
|
75
|
+
"enum": [
|
|
76
|
+
"platform"
|
|
77
|
+
],
|
|
78
|
+
"x-enum-title": [
|
|
79
|
+
"Nation Hosted"
|
|
80
|
+
],
|
|
81
|
+
"default": "platform"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"required": [
|
|
85
|
+
"states",
|
|
86
|
+
"enabled"
|
|
87
|
+
],
|
|
88
|
+
"additionalProperties": true
|
|
89
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
|
2
|
+
<rect width="128" height="128" fill="#0f172a" rx="16" />
|
|
3
|
+
<path d="M32 72c0-18 14-32 32-32s32 14 32 32" fill="none" stroke="#38bdf8" stroke-width="10" stroke-linecap="round" />
|
|
4
|
+
<path d="M32 72c0 18 14 32 32 32s32-14 32-32" fill="none" stroke="#22d3ee" stroke-width="10" stroke-linecap="round" />
|
|
5
|
+
<circle cx="64" cy="72" r="12" fill="#f8fafc" />
|
|
6
|
+
</svg>
|
|
@@ -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, SkillOwnerState
|
|
8
7
|
from intentkit.skills.system.add_autonomous_task import AddAutonomousTask
|
|
9
8
|
from intentkit.skills.system.base import SystemBaseTool
|
|
@@ -37,7 +36,6 @@ class Config(SkillConfig):
|
|
|
37
36
|
async def get_skills(
|
|
38
37
|
config: "Config",
|
|
39
38
|
is_private: bool,
|
|
40
|
-
store: SkillStoreABC,
|
|
41
39
|
**_,
|
|
42
40
|
) -> list[SystemBaseTool]:
|
|
43
41
|
"""Get all system skills.
|
|
@@ -45,7 +43,6 @@ async def get_skills(
|
|
|
45
43
|
Args:
|
|
46
44
|
config: The configuration for system skills.
|
|
47
45
|
is_private: Whether to include private skills.
|
|
48
|
-
store: The skill store for persisting data.
|
|
49
46
|
|
|
50
47
|
Returns:
|
|
51
48
|
A list of system skills.
|
|
@@ -62,7 +59,7 @@ async def get_skills(
|
|
|
62
59
|
# Get each skill using the cached getter
|
|
63
60
|
result = []
|
|
64
61
|
for name in available_skills:
|
|
65
|
-
skill = get_system_skill(name
|
|
62
|
+
skill = get_system_skill(name)
|
|
66
63
|
if skill:
|
|
67
64
|
result.append(skill)
|
|
68
65
|
return result
|
|
@@ -70,52 +67,38 @@ async def get_skills(
|
|
|
70
67
|
|
|
71
68
|
def get_system_skill(
|
|
72
69
|
name: str,
|
|
73
|
-
store: SkillStoreABC,
|
|
74
70
|
) -> SystemBaseTool:
|
|
75
71
|
"""Get a system skill by name.
|
|
76
72
|
|
|
77
73
|
Args:
|
|
78
74
|
name: The name of the skill to get
|
|
79
|
-
store: The skill store for persisting data
|
|
80
75
|
|
|
81
76
|
Returns:
|
|
82
77
|
The requested system skill
|
|
83
78
|
"""
|
|
84
79
|
if name == "read_agent_api_key":
|
|
85
80
|
if name not in _cache:
|
|
86
|
-
_cache[name] = ReadAgentApiKey(
|
|
87
|
-
skill_store=store,
|
|
88
|
-
)
|
|
81
|
+
_cache[name] = ReadAgentApiKey()
|
|
89
82
|
return _cache[name]
|
|
90
83
|
elif name == "regenerate_agent_api_key":
|
|
91
84
|
if name not in _cache:
|
|
92
|
-
_cache[name] = RegenerateAgentApiKey(
|
|
93
|
-
skill_store=store,
|
|
94
|
-
)
|
|
85
|
+
_cache[name] = RegenerateAgentApiKey()
|
|
95
86
|
return _cache[name]
|
|
96
87
|
elif name == "list_autonomous_tasks":
|
|
97
88
|
if name not in _cache:
|
|
98
|
-
_cache[name] = ListAutonomousTasks(
|
|
99
|
-
skill_store=store,
|
|
100
|
-
)
|
|
89
|
+
_cache[name] = ListAutonomousTasks()
|
|
101
90
|
return _cache[name]
|
|
102
91
|
elif name == "add_autonomous_task":
|
|
103
92
|
if name not in _cache:
|
|
104
|
-
_cache[name] = AddAutonomousTask(
|
|
105
|
-
skill_store=store,
|
|
106
|
-
)
|
|
93
|
+
_cache[name] = AddAutonomousTask()
|
|
107
94
|
return _cache[name]
|
|
108
95
|
elif name == "delete_autonomous_task":
|
|
109
96
|
if name not in _cache:
|
|
110
|
-
_cache[name] = DeleteAutonomousTask(
|
|
111
|
-
skill_store=store,
|
|
112
|
-
)
|
|
97
|
+
_cache[name] = DeleteAutonomousTask()
|
|
113
98
|
return _cache[name]
|
|
114
99
|
elif name == "edit_autonomous_task":
|
|
115
100
|
if name not in _cache:
|
|
116
|
-
_cache[name] = EditAutonomousTask(
|
|
117
|
-
skill_store=store,
|
|
118
|
-
)
|
|
101
|
+
_cache[name] = EditAutonomousTask()
|
|
119
102
|
return _cache[name]
|
|
120
103
|
else:
|
|
121
104
|
logger.warning(f"Unknown system skill: {name}")
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
from pydantic import BaseModel, Field
|
|
4
2
|
|
|
5
3
|
from intentkit.models.agent import AgentAutonomous
|
|
@@ -9,21 +7,21 @@ from intentkit.skills.system.base import SystemBaseTool
|
|
|
9
7
|
class AddAutonomousTaskInput(BaseModel):
|
|
10
8
|
"""Input model for add_autonomous_task skill."""
|
|
11
9
|
|
|
12
|
-
name:
|
|
10
|
+
name: str | None = Field(
|
|
13
11
|
default=None,
|
|
14
12
|
description="Display name of the autonomous task configuration",
|
|
15
13
|
max_length=50,
|
|
16
14
|
)
|
|
17
|
-
description:
|
|
15
|
+
description: str | None = Field(
|
|
18
16
|
default=None,
|
|
19
17
|
description="Description of the autonomous task configuration",
|
|
20
18
|
max_length=200,
|
|
21
19
|
)
|
|
22
|
-
minutes:
|
|
20
|
+
minutes: int | None = Field(
|
|
23
21
|
default=None,
|
|
24
22
|
description="Interval in minutes between operations, mutually exclusive with cron",
|
|
25
23
|
)
|
|
26
|
-
cron:
|
|
24
|
+
cron: str | None = Field(
|
|
27
25
|
default=None,
|
|
28
26
|
description="Cron expression for scheduling operations, mutually exclusive with minutes",
|
|
29
27
|
)
|
|
@@ -54,10 +52,10 @@ class AddAutonomousTask(SystemBaseTool):
|
|
|
54
52
|
|
|
55
53
|
async def _arun(
|
|
56
54
|
self,
|
|
57
|
-
name:
|
|
58
|
-
description:
|
|
59
|
-
minutes:
|
|
60
|
-
cron:
|
|
55
|
+
name: str | None = None,
|
|
56
|
+
description: str | None = None,
|
|
57
|
+
minutes: int | None = None,
|
|
58
|
+
cron: str | None = None,
|
|
61
59
|
prompt: str = "",
|
|
62
60
|
**kwargs,
|
|
63
61
|
) -> AddAutonomousTaskOutput:
|
|
@@ -75,7 +73,7 @@ class AddAutonomousTask(SystemBaseTool):
|
|
|
75
73
|
AddAutonomousTaskOutput: The created task
|
|
76
74
|
"""
|
|
77
75
|
context = self.get_context()
|
|
78
|
-
|
|
76
|
+
agent = context.agent
|
|
79
77
|
|
|
80
78
|
task = AgentAutonomous(
|
|
81
79
|
name=name,
|
|
@@ -86,6 +84,6 @@ class AddAutonomousTask(SystemBaseTool):
|
|
|
86
84
|
enabled=True,
|
|
87
85
|
)
|
|
88
86
|
|
|
89
|
-
created_task = await
|
|
87
|
+
created_task = await agent.add_autonomous_task(task)
|
|
90
88
|
|
|
91
89
|
return AddAutonomousTaskOutput(task=created_task)
|
|
@@ -45,9 +45,9 @@ class DeleteAutonomousTask(SystemBaseTool):
|
|
|
45
45
|
DeleteAutonomousTaskOutput: Confirmation of deletion
|
|
46
46
|
"""
|
|
47
47
|
context = self.get_context()
|
|
48
|
-
|
|
48
|
+
agent = context.agent
|
|
49
49
|
|
|
50
|
-
await
|
|
50
|
+
await agent.delete_autonomous_task(task_id)
|
|
51
51
|
|
|
52
52
|
return DeleteAutonomousTaskOutput(
|
|
53
53
|
success=True, message=f"Successfully deleted autonomous task {task_id}"
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
from pydantic import BaseModel, Field
|
|
4
2
|
|
|
5
3
|
from intentkit.models.agent import AgentAutonomous
|
|
@@ -12,28 +10,28 @@ class EditAutonomousTaskInput(BaseModel):
|
|
|
12
10
|
task_id: str = Field(
|
|
13
11
|
description="The unique identifier of the autonomous task to edit"
|
|
14
12
|
)
|
|
15
|
-
name:
|
|
13
|
+
name: str | None = Field(
|
|
16
14
|
default=None,
|
|
17
15
|
description="Display name of the autonomous task configuration",
|
|
18
16
|
max_length=50,
|
|
19
17
|
)
|
|
20
|
-
description:
|
|
18
|
+
description: str | None = Field(
|
|
21
19
|
default=None,
|
|
22
20
|
description="Description of the autonomous task configuration",
|
|
23
21
|
max_length=200,
|
|
24
22
|
)
|
|
25
|
-
minutes:
|
|
23
|
+
minutes: int | None = Field(
|
|
26
24
|
default=None,
|
|
27
25
|
description="Interval in minutes between operations, mutually exclusive with cron",
|
|
28
26
|
)
|
|
29
|
-
cron:
|
|
27
|
+
cron: str | None = Field(
|
|
30
28
|
default=None,
|
|
31
29
|
description="Cron expression for scheduling operations, mutually exclusive with minutes",
|
|
32
30
|
)
|
|
33
|
-
prompt:
|
|
31
|
+
prompt: str | None = Field(
|
|
34
32
|
default=None, description="Special prompt used during autonomous operation"
|
|
35
33
|
)
|
|
36
|
-
enabled:
|
|
34
|
+
enabled: bool | None = Field(
|
|
37
35
|
default=None, description="Whether the autonomous task is enabled"
|
|
38
36
|
)
|
|
39
37
|
|
|
@@ -61,12 +59,12 @@ class EditAutonomousTask(SystemBaseTool):
|
|
|
61
59
|
async def _arun(
|
|
62
60
|
self,
|
|
63
61
|
task_id: str,
|
|
64
|
-
name:
|
|
65
|
-
description:
|
|
66
|
-
minutes:
|
|
67
|
-
cron:
|
|
68
|
-
prompt:
|
|
69
|
-
enabled:
|
|
62
|
+
name: str | None = None,
|
|
63
|
+
description: str | None = None,
|
|
64
|
+
minutes: int | None = None,
|
|
65
|
+
cron: str | None = None,
|
|
66
|
+
prompt: str | None = None,
|
|
67
|
+
enabled: bool | None = None,
|
|
70
68
|
**kwargs,
|
|
71
69
|
) -> EditAutonomousTaskOutput:
|
|
72
70
|
"""Edit an autonomous task for the agent.
|
|
@@ -85,7 +83,7 @@ class EditAutonomousTask(SystemBaseTool):
|
|
|
85
83
|
EditAutonomousTaskOutput: The updated task
|
|
86
84
|
"""
|
|
87
85
|
context = self.get_context()
|
|
88
|
-
|
|
86
|
+
agent = context.agent
|
|
89
87
|
|
|
90
88
|
if minutes is not None and cron is not None:
|
|
91
89
|
raise ValueError("minutes and cron are mutually exclusive")
|
|
@@ -107,8 +105,6 @@ class EditAutonomousTask(SystemBaseTool):
|
|
|
107
105
|
if enabled is not None:
|
|
108
106
|
task_updates["enabled"] = enabled
|
|
109
107
|
|
|
110
|
-
updated_task = await
|
|
111
|
-
agent_id, task_id, task_updates
|
|
112
|
-
)
|
|
108
|
+
updated_task = await agent.update_autonomous_task(task_id, task_updates)
|
|
113
109
|
|
|
114
110
|
return EditAutonomousTaskOutput(task=updated_task)
|