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
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
category,config_name,name,enabled,price_level,price,price_self_key,rate_limit_count,rate_limit_minutes,author
|
|
2
|
+
acolyt,ask_gpt,acolyt_ask_gpt,FALSE,1,1,1,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
3
|
+
aixbt,aixbt_projects,aixbt_projects,TRUE,3,100,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
4
|
+
allora,get_price_prediction,allora_get_price_prediction,TRUE,4,230,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
5
|
+
basename,BasenameActionProvider_register_basename,BasenameActionProvider_register_basename,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
6
|
+
cdp,CdpApiActionProvider_request_faucet_funds,CdpApiActionProvider_request_faucet_funds,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
7
|
+
cdp,CdpEvmWalletActionProvider_get_swap_price,CdpEvmWalletActionProvider_get_swap_price,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
8
|
+
cdp,CdpEvmWalletActionProvider_swap,CdpEvmWalletActionProvider_swap,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
9
|
+
cdp,WalletActionProvider_get_balance,WalletActionProvider_get_balance,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
10
|
+
cdp,WalletActionProvider_get_wallet_details,WalletActionProvider_get_wallet_details,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
11
|
+
cdp,WalletActionProvider_native_transfer,WalletActionProvider_native_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
12
|
+
erc20,ERC20ActionProvider_get_balance,ERC20ActionProvider_get_balance,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
13
|
+
erc20,ERC20ActionProvider_transfer,ERC20ActionProvider_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
14
|
+
erc721,Erc721ActionProvider_get_balance,Erc721ActionProvider_get_balance,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
15
|
+
erc721,Erc721ActionProvider_mint,Erc721ActionProvider_mint,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
16
|
+
erc721,Erc721ActionProvider_transfer,Erc721ActionProvider_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
17
|
+
morpho,MorphoActionProvider_deposit,MorphoActionProvider_deposit,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
18
|
+
morpho,MorphoActionProvider_withdraw,MorphoActionProvider_withdraw,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
19
|
+
pyth,PythActionProvider_fetch_price,PythActionProvider_fetch_price,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
20
|
+
pyth,PythActionProvider_fetch_price_feed,PythActionProvider_fetch_price_feed,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
21
|
+
superfluid,SuperfluidActionProvider_create_flow,SuperfluidActionProvider_create_flow,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
22
|
+
superfluid,SuperfluidActionProvider_delete_flow,SuperfluidActionProvider_delete_flow,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
23
|
+
superfluid,SuperfluidActionProvider_update_flow,SuperfluidActionProvider_update_flow,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
24
|
+
weth,WethActionProvider_wrap_eth,WethActionProvider_wrap_eth,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
25
|
+
wow,WowActionProvider_buy_token,WowActionProvider_buy_token,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
26
|
+
wow,WowActionProvider_create_token,WowActionProvider_create_token,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
27
|
+
wow,WowActionProvider_sell_token,WowActionProvider_sell_token,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
28
|
+
chainlist,chain_lookup,chain-lookup,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
29
|
+
common,current_time,common_current_time,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
30
|
+
cookiefun,get_account_details,cookiefun_get_account_details,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
31
|
+
cookiefun,get_account_feed,cookiefun_get_account_feed,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
32
|
+
cookiefun,get_account_smart_followers,cookiefun_get_account_smart_followers,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
33
|
+
cookiefun,get_sectors,cookiefun_get_sectors,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
34
|
+
cookiefun,search_accounts,cookiefun_search_accounts,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
35
|
+
cryptocompare,fetch_news,cryptocompare_fetch_news,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
36
|
+
cryptocompare,fetch_price,cryptocompare_fetch_price,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
37
|
+
cryptocompare,fetch_top_exchanges,cryptocompare_fetch_top_exchanges,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
38
|
+
cryptocompare,fetch_top_market_cap,cryptocompare_fetch_top_market_cap,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
39
|
+
cryptocompare,fetch_top_volume,cryptocompare_fetch_top_volume,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
40
|
+
cryptocompare,fetch_trading_signals,cryptocompare_fetch_trading_signals,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
41
|
+
cryptopanic,fetch_crypto_news,fetch_crypto_news,TRUE,1,5,5,,,0x178741Fc5BA9B77147398853c28736eEFe5fCff1
|
|
42
|
+
cryptopanic,fetch_crypto_sentiment,fetch_crypto_sentiment,TRUE,1,5,5,,,0x178741Fc5BA9B77147398853c28736eEFe5fCff1
|
|
43
|
+
dapplooker,dapplooker_token_data,dapplooker_token_data,TRUE,1,10,10,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
44
|
+
defillama,fetch_batch_historical_prices,defillama_fetch_batch_historical_prices,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
45
|
+
defillama,fetch_block,defillama_fetch_block,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
46
|
+
defillama,fetch_current_prices,defillama_fetch_current_prices,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
47
|
+
defillama,fetch_first_price,defillama_fetch_first_price,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
48
|
+
defillama,fetch_historical_prices,defillama_fetch_historical_prices,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
49
|
+
defillama,fetch_price_chart,defillama_fetch_price_chart,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
50
|
+
defillama,fetch_price_percentage,defillama_fetch_price_percentage,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
51
|
+
defillama,fetch_fees_overview,defillama_fetch_fees_overview,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
52
|
+
defillama,fetch_stablecoin_chains,defillama_fetch_stablecoin_chains,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
53
|
+
defillama,fetch_stablecoin_charts,defillama_fetch_stablecoin_charts,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
54
|
+
defillama,fetch_stablecoin_prices,defillama_fetch_stablecoin_prices,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
55
|
+
defillama,fetch_stablecoins,defillama_fetch_stablecoins,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
56
|
+
defillama,fetch_chain_historical_tvl,defillama_fetch_chain_historical_tvl,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
57
|
+
defillama,fetch_chains,defillama_fetch_chains,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
58
|
+
defillama,fetch_total_historical_tvl,defillama_fetch_total_historical_tvl,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
59
|
+
defillama,fetch_protocol_tvl,defillama_fetch_protocol_tvl,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
60
|
+
defillama,fetch_protocol,defillama_fetch_protocol,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
61
|
+
defillama,fetch_protocols,defillama_fetch_protocols,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
62
|
+
defillama,fetch_dex_overview,defillama_fetch_dex_overview,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
63
|
+
defillama,fetch_dex_summary,defillama_fetch_dex_summary,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
64
|
+
defillama,fetch_options_overview,defillama_fetch_options_overview,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
65
|
+
defillama,fetch_pool_chart,defillama_fetch_pool_chart,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
66
|
+
defillama,fetch_pools,defillama_fetch_pools,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
|
|
67
|
+
dexscreener,search_token,dexscreener_search_token,TRUE,1,5,5,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
|
|
68
|
+
dexscreener,get_pair_info,dexscreener_get_pair_info,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
69
|
+
dexscreener,get_token_pairs,dexscreener_get_token_pairs,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
70
|
+
dexscreener,get_tokens_info,dexscreener_get_tokens_info,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
71
|
+
dune_analytics,fetch_kol_buys,dune_fetch_kol_buys,TRUE,1,5,5,,,0x178741Fc5BA9B77147398853c28736eEFe5fCff1
|
|
72
|
+
dune_analytics,fetch_nation_metrics,dune_fetch_nation_metrics,TRUE,1,5,5,,,0x178741Fc5BA9B77147398853c28736eEFe5fCff1
|
|
73
|
+
elfa,get_smart_stats,elfa_get_smart_stats,TRUE,1,15,15,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
74
|
+
elfa,get_top_mentions,elfa_get_top_mentions,TRUE,1,15,15,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
75
|
+
elfa,get_trending_tokens,elfa_get_trending_tokens,TRUE,1,15,15,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
76
|
+
elfa,search_mentions,elfa_search_mentions,TRUE,1,15,15,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
77
|
+
enso,get_best_yield,enso_get_best_yield,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
78
|
+
enso,get_networks,enso_get_networks,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
79
|
+
enso,get_prices,enso_get_prices,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
80
|
+
enso,get_tokens,enso_get_tokens,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
81
|
+
enso,get_wallet_approvals,enso_get_wallet_approvals,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
82
|
+
enso,get_wallet_balances,enso_get_wallet_balances,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
83
|
+
enso,route_shortcut,enso_route_shortcut,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
84
|
+
enso,wallet_approve,enso_wallet_approve,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
|
|
85
|
+
github,github_search,github_search,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
86
|
+
heurist,image_generation_animagine_xl,heurist_image_generation_animagine_xl,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
87
|
+
heurist,image_generation_arthemy_comics,heurist_image_generation_arthemy_comics,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
88
|
+
heurist,image_generation_arthemy_real,heurist_image_generation_arthemy_real,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
89
|
+
heurist,image_generation_braindance,heurist_image_generation_braindance,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
90
|
+
heurist,image_generation_cyber_realistic_xl,heurist_image_generation_cyber_realistic_xl,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
91
|
+
heurist,image_generation_flux_1_dev,heurist_image_generation_flux_1_dev,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
92
|
+
heurist,image_generation_sdxl,heurist_image_generation_sdxl,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
93
|
+
lifi,token_execute,lifi_token_execute,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
94
|
+
lifi,token_quote,lifi_token_quote,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
95
|
+
moralis,fetch_chain_portfolio,moralis_fetch_chain_portfolio,TRUE,1,5,5,,,0xd1a8Dd23e356B9fAE27dF5DeF9ea025A602EC81e
|
|
96
|
+
moralis,fetch_nft_portfolio,moralis_fetch_nft_portfolio,TRUE,1,5,5,,,0xd1a8Dd23e356B9fAE27dF5DeF9ea025A602EC81e
|
|
97
|
+
moralis,fetch_solana_portfolio,moralis_fetch_solana_portfolio,TRUE,1,5,5,,,0xd1a8Dd23e356B9fAE27dF5DeF9ea025A602EC81e
|
|
98
|
+
moralis,fetch_wallet_portfolio,moralis_fetch_wallet_portfolio,TRUE,1,5,5,,,0xd1a8Dd23e356B9fAE27dF5DeF9ea025A602EC81e
|
|
99
|
+
nation,nft_check,nft_check,FALSE,1,5,5,,,0x275960ad41DbE218bBf72cDF612F88b5C6f40648
|
|
100
|
+
openai,dalle_image_generation,dalle_image_generation,TRUE,4,200,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
101
|
+
openai,gpt_image_generation,gpt_image_generation,TRUE,5,400,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
102
|
+
openai,gpt_image_mini_generator,gpt_image_mini_generator,TRUE,3,100,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
103
|
+
openai,gpt_avatar_generator,gpt_avatar_generator,TRUE,2,50,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
104
|
+
openai,gpt_image_to_image,gpt_image_to_image,TRUE,5,400,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
105
|
+
openai,image_to_text,image_to_text,TRUE,4,200,15,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
106
|
+
portfolio,token_balances,portfolio_token_balances,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
107
|
+
portfolio,wallet_approvals,portfolio_wallet_approvals,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
108
|
+
portfolio,wallet_history,portfolio_wallet_history,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
109
|
+
portfolio,wallet_net_worth,portfolio_wallet_net_worth,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
110
|
+
portfolio,wallet_profitability_summary,portfolio_wallet_profitability_summary,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
111
|
+
portfolio,wallet_profitability,portfolio_wallet_profitability,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
112
|
+
portfolio,wallet_stats,portfolio_wallet_stats,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
113
|
+
portfolio,wallet_swaps,portfolio_wallet_swaps,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
114
|
+
portfolio,wallet_defi_positions,portfolio_wallet_defi_positions,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
115
|
+
portfolio,wallet_nfts,portfolio_wallet_nfts,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
116
|
+
slack,get_channel,slack_get_channel,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
117
|
+
slack,get_message,slack_get_message,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
118
|
+
slack,schedule_message,slack_schedule_message,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
119
|
+
slack,send_message,slack_send_message,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
120
|
+
supabase,fetch_data,supabase_fetch_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
121
|
+
supabase,insert_data,supabase_insert_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
122
|
+
supabase,update_data,supabase_update_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
123
|
+
supabase,upsert_data,supabase_upsert_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
124
|
+
supabase,delete_data,supabase_delete_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
125
|
+
supabase,invoke_function,supabase_invoke_function,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
126
|
+
system,read_agent_api_key,system_read_agent_api_key,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
127
|
+
system,regenerate_agent_api_key,system_regenerate_agent_api_key,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
128
|
+
system,list_autonomous_tasks,system_list_autonomous_tasks,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
129
|
+
system,add_autonomous_task,system_add_autonomous_task,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
130
|
+
system,edit_autonomous_task,system_edit_autonomous_task,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
131
|
+
system,delete_autonomous_task,system_delete_autonomous_task,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
132
|
+
http,http_get,http_get,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
133
|
+
http,http_put,http_put,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
134
|
+
http,http_post,http_post,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
135
|
+
tavily,tavily_search,tavily_search,TRUE,1,20,10,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
136
|
+
tavily,tavily_extract,tavily_extract,TRUE,1,20,10,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
137
|
+
token,token_erc20_transfers,token_erc20_transfers,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
138
|
+
token,token_analytics,token_analytics,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
139
|
+
token,token_price,token_price,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
140
|
+
token,token_search,token_search,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
141
|
+
twitter,follow_user,twitter_follow_user,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
142
|
+
twitter,get_mentions,twitter_get_mentions,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
143
|
+
twitter,get_timeline,twitter_get_timeline,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
144
|
+
twitter,get_user_tweets,twitter_get_user_tweets,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
145
|
+
twitter,like_tweet,twitter_like_tweet,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
146
|
+
twitter,post_tweet,twitter_post_tweet,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
147
|
+
twitter,reply_tweet,twitter_reply_tweet,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
148
|
+
twitter,retweet,twitter_retweet,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
149
|
+
twitter,search_tweets,twitter_search_tweets,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
150
|
+
twitter,get_user_by_username,twitter_get_user_by_username,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
151
|
+
unrealspeech,text_to_speech,text_to_speech,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
152
|
+
venice_image,image_generation_fluently_xl,venice_image_generation_fluently_xl,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
|
|
153
|
+
venice_image,image_generation_flux_dev,venice_image_generation_flux_dev,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
|
|
154
|
+
venice_image,image_generation_flux_dev_uncensored,venice_image_generation_flux_dev_uncensored,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
|
|
155
|
+
venice_image,image_generation_lustify_sdxl,venice_image_generation_lustify_sdxl,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
|
|
156
|
+
venice_image,image_generation_pony_realism,venice_image_generation_pony_realism,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
|
|
157
|
+
venice_image,image_generation_stable_diffusion_3_5,venice_image_generation_stable_diffusion_3_5,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
|
|
158
|
+
venice_image,image_generation_venice_sd35,venice_image_generation_venice_sd35,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
|
|
159
|
+
web_scraper,scrape_and_index,web_scraper_scrape_and_index,TRUE,3,100,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
160
|
+
web_scraper,query_indexed_content,web_scraper_query_indexed_content,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
161
|
+
web_scraper,website_indexer,web_scraper_website_indexer,TRUE,4,200,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
162
|
+
web_scraper,document_indexer,web_scraper_document_indexer,TRUE,4,200,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
163
|
+
firecrawl,firecrawl_scrape,firecrawl_scrape,TRUE,3,100,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
164
|
+
firecrawl,firecrawl_crawl,firecrawl_crawl,TRUE,3,100,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
165
|
+
firecrawl,firecrawl_query_indexed_content,firecrawl_query_indexed_content,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
166
|
+
firecrawl,firecrawl_clear_indexed_content,firecrawl_clear_indexed_content,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
|
|
167
|
+
xmtp,xmtp_transfer,xmtp_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
168
|
+
xmtp,xmtp_swap,xmtp_swap,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
169
|
+
xmtp,xmtp_get_swap_price,xmtp_get_swap_price,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
170
|
+
x402,x402_http_request,x402_http_request,TRUE,1,1,1,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
171
|
+
casino,deck_shuffle,casino_deck_shuffle,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
|
|
172
|
+
casino,deck_draw,casino_deck_draw,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
|
|
173
|
+
casino,dice_roll,casino_dice_roll,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
|
intentkit/models/team.py
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from datetime import UTC, datetime
|
|
4
|
+
from enum import Enum
|
|
5
|
+
from typing import Annotated
|
|
6
|
+
|
|
7
|
+
from epyxid import XID
|
|
8
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
9
|
+
from sqlalchemy import DateTime, ForeignKey, Index, String, func, select
|
|
10
|
+
from sqlalchemy.orm import Mapped, mapped_column
|
|
11
|
+
|
|
12
|
+
from intentkit.models.base import Base
|
|
13
|
+
from intentkit.models.db import get_session
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class TeamRole(str, Enum):
|
|
17
|
+
"""Role of a user in a team."""
|
|
18
|
+
|
|
19
|
+
OWNER = "owner"
|
|
20
|
+
ADMIN = "admin"
|
|
21
|
+
MEMBER = "member"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class TeamMemberTable(Base):
|
|
25
|
+
"""Team member database table model."""
|
|
26
|
+
|
|
27
|
+
__tablename__ = "team_members"
|
|
28
|
+
__table_args__ = (
|
|
29
|
+
Index("ix_team_members_team_user", "team_id", "user_id", unique=True),
|
|
30
|
+
Index("ix_team_members_user_team", "user_id", "team_id"),
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
team_id: Mapped[str] = mapped_column(
|
|
34
|
+
String,
|
|
35
|
+
ForeignKey("teams.id", ondelete="CASCADE"),
|
|
36
|
+
primary_key=True,
|
|
37
|
+
)
|
|
38
|
+
user_id: Mapped[str] = mapped_column(
|
|
39
|
+
String,
|
|
40
|
+
ForeignKey("users.id", ondelete="CASCADE"),
|
|
41
|
+
primary_key=True,
|
|
42
|
+
)
|
|
43
|
+
role: Mapped[TeamRole] = mapped_column(
|
|
44
|
+
String,
|
|
45
|
+
nullable=False,
|
|
46
|
+
default=TeamRole.MEMBER,
|
|
47
|
+
)
|
|
48
|
+
joined_at: Mapped[datetime] = mapped_column(
|
|
49
|
+
DateTime(timezone=True),
|
|
50
|
+
nullable=False,
|
|
51
|
+
server_default=func.now(),
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class TeamTable(Base):
|
|
56
|
+
"""Team database table model."""
|
|
57
|
+
|
|
58
|
+
__tablename__ = "teams"
|
|
59
|
+
|
|
60
|
+
id: Mapped[str] = mapped_column(
|
|
61
|
+
String,
|
|
62
|
+
primary_key=True,
|
|
63
|
+
)
|
|
64
|
+
name: Mapped[str] = mapped_column(
|
|
65
|
+
String,
|
|
66
|
+
nullable=False,
|
|
67
|
+
)
|
|
68
|
+
avatar: Mapped[str | None] = mapped_column(
|
|
69
|
+
String,
|
|
70
|
+
nullable=True,
|
|
71
|
+
)
|
|
72
|
+
created_at: Mapped[datetime] = mapped_column(
|
|
73
|
+
DateTime(timezone=True),
|
|
74
|
+
nullable=False,
|
|
75
|
+
server_default=func.now(),
|
|
76
|
+
)
|
|
77
|
+
updated_at: Mapped[datetime] = mapped_column(
|
|
78
|
+
DateTime(timezone=True),
|
|
79
|
+
nullable=False,
|
|
80
|
+
server_default=func.now(),
|
|
81
|
+
onupdate=lambda: datetime.now(UTC),
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class TeamCreate(BaseModel):
|
|
86
|
+
"""Team creation model."""
|
|
87
|
+
|
|
88
|
+
model_config = ConfigDict(from_attributes=True)
|
|
89
|
+
|
|
90
|
+
id: Annotated[
|
|
91
|
+
str,
|
|
92
|
+
Field(
|
|
93
|
+
default_factory=lambda: str(XID()),
|
|
94
|
+
description="Unique identifier for the team",
|
|
95
|
+
),
|
|
96
|
+
]
|
|
97
|
+
name: Annotated[
|
|
98
|
+
str,
|
|
99
|
+
Field(
|
|
100
|
+
description="Name of the team",
|
|
101
|
+
min_length=1,
|
|
102
|
+
max_length=100,
|
|
103
|
+
),
|
|
104
|
+
]
|
|
105
|
+
avatar: Annotated[
|
|
106
|
+
str | None,
|
|
107
|
+
Field(
|
|
108
|
+
default=None,
|
|
109
|
+
description="Avatar URL of the team",
|
|
110
|
+
),
|
|
111
|
+
]
|
|
112
|
+
|
|
113
|
+
async def save(self, creator_user_id: str) -> "Team":
|
|
114
|
+
"""Create a new team and add the creator as owner.
|
|
115
|
+
|
|
116
|
+
Args:
|
|
117
|
+
creator_user_id: ID of the user creating the team
|
|
118
|
+
|
|
119
|
+
Returns:
|
|
120
|
+
Team: The created team
|
|
121
|
+
"""
|
|
122
|
+
async with get_session() as db:
|
|
123
|
+
# Create team
|
|
124
|
+
team_record = TeamTable(**self.model_dump())
|
|
125
|
+
db.add(team_record)
|
|
126
|
+
|
|
127
|
+
# Add creator as owner
|
|
128
|
+
member_record = TeamMemberTable(
|
|
129
|
+
team_id=team_record.id,
|
|
130
|
+
user_id=creator_user_id,
|
|
131
|
+
role=TeamRole.OWNER,
|
|
132
|
+
)
|
|
133
|
+
db.add(member_record)
|
|
134
|
+
|
|
135
|
+
await db.commit()
|
|
136
|
+
await db.refresh(team_record)
|
|
137
|
+
return Team.model_validate(team_record)
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
class Team(TeamCreate):
|
|
141
|
+
"""Team model with all fields."""
|
|
142
|
+
|
|
143
|
+
model_config = ConfigDict(
|
|
144
|
+
from_attributes=True,
|
|
145
|
+
json_encoders={datetime: lambda v: v.isoformat(timespec="milliseconds")},
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
created_at: Annotated[
|
|
149
|
+
datetime, Field(description="Timestamp when this team was created")
|
|
150
|
+
]
|
|
151
|
+
updated_at: Annotated[
|
|
152
|
+
datetime, Field(description="Timestamp when this team was last updated")
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
@classmethod
|
|
156
|
+
async def get(cls, team_id: str) -> "Team | None":
|
|
157
|
+
"""Get a team by ID.
|
|
158
|
+
|
|
159
|
+
Args:
|
|
160
|
+
team_id: ID of the team to get
|
|
161
|
+
|
|
162
|
+
Returns:
|
|
163
|
+
Team or None if not found
|
|
164
|
+
"""
|
|
165
|
+
async with get_session() as db:
|
|
166
|
+
team = await db.get(TeamTable, team_id)
|
|
167
|
+
if team:
|
|
168
|
+
return cls.model_validate(team)
|
|
169
|
+
return None
|
|
170
|
+
|
|
171
|
+
@classmethod
|
|
172
|
+
async def get_by_user(cls, user_id: str) -> list["Team"]:
|
|
173
|
+
"""Get all teams a user belongs to.
|
|
174
|
+
|
|
175
|
+
Args:
|
|
176
|
+
user_id: ID of the user
|
|
177
|
+
|
|
178
|
+
Returns:
|
|
179
|
+
List of teams
|
|
180
|
+
"""
|
|
181
|
+
async with get_session() as db:
|
|
182
|
+
stmt = (
|
|
183
|
+
select(TeamTable)
|
|
184
|
+
.join(TeamMemberTable)
|
|
185
|
+
.where(TeamMemberTable.user_id == user_id)
|
|
186
|
+
.order_by(TeamTable.name)
|
|
187
|
+
)
|
|
188
|
+
result = await db.scalars(stmt)
|
|
189
|
+
return [cls.model_validate(team) for team in result]
|
intentkit/models/user.py
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from datetime import
|
|
2
|
+
from datetime import UTC, datetime
|
|
3
3
|
from decimal import ROUND_HALF_UP, Decimal
|
|
4
|
-
from typing import Annotated,
|
|
4
|
+
from typing import Annotated, TypeVar
|
|
5
5
|
|
|
6
|
-
from intentkit.models.base import Base
|
|
7
|
-
from intentkit.models.credit import CreditAccount
|
|
8
|
-
from intentkit.models.db import get_session
|
|
9
6
|
from pydantic import BaseModel, ConfigDict, Field
|
|
10
|
-
from sqlalchemy import
|
|
7
|
+
from sqlalchemy import DateTime, Index, Integer, String, func, select
|
|
11
8
|
from sqlalchemy.dialects.postgresql import JSON, JSONB
|
|
12
9
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
10
|
+
from sqlalchemy.orm import Mapped, mapped_column
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
from intentkit.models.base import Base
|
|
13
|
+
from intentkit.models.credit import CreditAccount
|
|
14
|
+
from intentkit.models.db import get_session
|
|
15
15
|
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
16
17
|
|
|
17
18
|
# TypeVar for User model constraint
|
|
18
19
|
UserModelType = TypeVar("UserModelType", bound="User")
|
|
@@ -23,10 +24,10 @@ class UserRegistry:
|
|
|
23
24
|
"""Registry for extended model classes."""
|
|
24
25
|
|
|
25
26
|
def __init__(self):
|
|
26
|
-
self._user_table_class:
|
|
27
|
-
self._user_model_class:
|
|
27
|
+
self._user_table_class: type[UserTableType] | None = None
|
|
28
|
+
self._user_model_class: type[UserModelType] | None = None
|
|
28
29
|
|
|
29
|
-
def register_user_table(self, user_table_class:
|
|
30
|
+
def register_user_table(self, user_table_class: type[UserTableType]) -> None:
|
|
30
31
|
"""Register extended UserTable class.
|
|
31
32
|
|
|
32
33
|
Args:
|
|
@@ -34,11 +35,11 @@ class UserRegistry:
|
|
|
34
35
|
"""
|
|
35
36
|
self._user_table_class = user_table_class
|
|
36
37
|
|
|
37
|
-
def get_user_table_class(self) ->
|
|
38
|
+
def get_user_table_class(self) -> type[UserTableType]:
|
|
38
39
|
"""Get registered UserTable class or default."""
|
|
39
40
|
return self._user_table_class or UserTable
|
|
40
41
|
|
|
41
|
-
def register_user_model(self, user_model_class:
|
|
42
|
+
def register_user_model(self, user_model_class: type[UserModelType]) -> None:
|
|
42
43
|
"""Register extended UserModel class.
|
|
43
44
|
|
|
44
45
|
Args:
|
|
@@ -46,7 +47,7 @@ class UserRegistry:
|
|
|
46
47
|
"""
|
|
47
48
|
self._user_model_class = user_model_class
|
|
48
49
|
|
|
49
|
-
def get_user_model_class(self) ->
|
|
50
|
+
def get_user_model_class(self) -> type[UserModelType]:
|
|
50
51
|
"""Get registered UserModel class or default."""
|
|
51
52
|
return self._user_model_class or User
|
|
52
53
|
|
|
@@ -64,45 +65,57 @@ class UserTable(Base):
|
|
|
64
65
|
Index("ix_users_telegram_username", "telegram_username"),
|
|
65
66
|
)
|
|
66
67
|
|
|
67
|
-
id =
|
|
68
|
+
id: Mapped[str] = mapped_column(
|
|
68
69
|
String,
|
|
69
70
|
primary_key=True,
|
|
70
71
|
)
|
|
71
|
-
nft_count =
|
|
72
|
+
nft_count: Mapped[int] = mapped_column(
|
|
72
73
|
Integer,
|
|
73
74
|
default=0,
|
|
74
75
|
nullable=False,
|
|
75
76
|
)
|
|
76
|
-
email =
|
|
77
|
+
email: Mapped[str | None] = mapped_column(
|
|
77
78
|
String,
|
|
78
79
|
nullable=True,
|
|
79
80
|
)
|
|
80
|
-
x_username =
|
|
81
|
+
x_username: Mapped[str | None] = mapped_column(
|
|
81
82
|
String,
|
|
82
83
|
nullable=True,
|
|
83
84
|
)
|
|
84
|
-
github_username =
|
|
85
|
+
github_username: Mapped[str | None] = mapped_column(
|
|
85
86
|
String,
|
|
86
87
|
nullable=True,
|
|
87
88
|
)
|
|
88
|
-
telegram_username =
|
|
89
|
+
telegram_username: Mapped[str | None] = mapped_column(
|
|
89
90
|
String,
|
|
90
91
|
nullable=True,
|
|
91
92
|
)
|
|
92
|
-
extra =
|
|
93
|
+
extra: Mapped[dict[str, object] | None] = mapped_column(
|
|
93
94
|
JSON().with_variant(JSONB(), "postgresql"),
|
|
94
95
|
nullable=True,
|
|
95
96
|
)
|
|
96
|
-
|
|
97
|
+
evm_wallet_address: Mapped[str | None] = mapped_column(
|
|
98
|
+
String,
|
|
99
|
+
nullable=True,
|
|
100
|
+
)
|
|
101
|
+
solana_wallet_address: Mapped[str | None] = mapped_column(
|
|
102
|
+
String,
|
|
103
|
+
nullable=True,
|
|
104
|
+
)
|
|
105
|
+
linked_accounts: Mapped[dict[str, object] | None] = mapped_column(
|
|
106
|
+
JSON().with_variant(JSONB(), "postgresql"),
|
|
107
|
+
nullable=True,
|
|
108
|
+
)
|
|
109
|
+
created_at: Mapped[datetime] = mapped_column(
|
|
97
110
|
DateTime(timezone=True),
|
|
98
111
|
nullable=False,
|
|
99
112
|
server_default=func.now(),
|
|
100
113
|
)
|
|
101
|
-
updated_at =
|
|
114
|
+
updated_at: Mapped[datetime] = mapped_column(
|
|
102
115
|
DateTime(timezone=True),
|
|
103
116
|
nullable=False,
|
|
104
117
|
server_default=func.now(),
|
|
105
|
-
onupdate=lambda: datetime.now(
|
|
118
|
+
onupdate=lambda: datetime.now(UTC),
|
|
106
119
|
)
|
|
107
120
|
|
|
108
121
|
|
|
@@ -119,18 +132,28 @@ class UserUpdate(BaseModel):
|
|
|
119
132
|
nft_count: Annotated[
|
|
120
133
|
int, Field(default=0, description="Number of NFTs owned by the user")
|
|
121
134
|
]
|
|
122
|
-
email: Annotated[
|
|
135
|
+
email: Annotated[str | None, Field(None, description="User's email address")]
|
|
123
136
|
x_username: Annotated[
|
|
124
|
-
|
|
137
|
+
str | None, Field(None, description="User's X (Twitter) username")
|
|
125
138
|
]
|
|
126
139
|
github_username: Annotated[
|
|
127
|
-
|
|
140
|
+
str | None, Field(None, description="User's GitHub username")
|
|
128
141
|
]
|
|
129
142
|
telegram_username: Annotated[
|
|
130
|
-
|
|
143
|
+
str | None, Field(None, description="User's Telegram username")
|
|
131
144
|
]
|
|
132
145
|
extra: Annotated[
|
|
133
|
-
|
|
146
|
+
dict[str, object] | None, Field(None, description="Additional user information")
|
|
147
|
+
]
|
|
148
|
+
evm_wallet_address: Annotated[
|
|
149
|
+
str | None, Field(None, description="User's EVM wallet address")
|
|
150
|
+
]
|
|
151
|
+
solana_wallet_address: Annotated[
|
|
152
|
+
str | None, Field(None, description="User's Solana wallet address")
|
|
153
|
+
]
|
|
154
|
+
linked_accounts: Annotated[
|
|
155
|
+
dict[str, object] | None,
|
|
156
|
+
Field(None, description="User's linked accounts information"),
|
|
134
157
|
]
|
|
135
158
|
|
|
136
159
|
async def _update_quota_for_nft_count(
|
|
@@ -144,7 +167,7 @@ class UserUpdate(BaseModel):
|
|
|
144
167
|
new_nft_count: Current NFT count
|
|
145
168
|
"""
|
|
146
169
|
# Generate upstream_tx_id
|
|
147
|
-
timestamp = datetime.now(
|
|
170
|
+
timestamp = datetime.now(UTC).strftime("%Y%m%d%H%M%S")
|
|
148
171
|
upstream_tx_id = f"nft_{id}_{timestamp}"
|
|
149
172
|
|
|
150
173
|
# Calculate new quota values based on nft_count
|
|
@@ -265,7 +288,7 @@ class User(UserUpdate):
|
|
|
265
288
|
]
|
|
266
289
|
|
|
267
290
|
@classmethod
|
|
268
|
-
async def get(cls, user_id: str) ->
|
|
291
|
+
async def get(cls, user_id: str) -> UserModelType | None:
|
|
269
292
|
"""Get a user by ID.
|
|
270
293
|
|
|
271
294
|
Args:
|
|
@@ -280,7 +303,7 @@ class User(UserUpdate):
|
|
|
280
303
|
@classmethod
|
|
281
304
|
async def get_in_session(
|
|
282
305
|
cls, session: AsyncSession, user_id: str
|
|
283
|
-
) ->
|
|
306
|
+
) -> UserModelType | None:
|
|
284
307
|
"""Get a user by ID using the provided session.
|
|
285
308
|
|
|
286
309
|
Args:
|
|
@@ -301,3 +324,52 @@ class User(UserUpdate):
|
|
|
301
324
|
if user is None:
|
|
302
325
|
return None
|
|
303
326
|
return user_model_class.model_validate(user)
|
|
327
|
+
|
|
328
|
+
@classmethod
|
|
329
|
+
async def get_by_tg(cls, telegram_username: str) -> UserModelType | None:
|
|
330
|
+
"""Get a user by telegram username.
|
|
331
|
+
|
|
332
|
+
Args:
|
|
333
|
+
telegram_username: Telegram username of the user to get
|
|
334
|
+
|
|
335
|
+
Returns:
|
|
336
|
+
User model or None if not found
|
|
337
|
+
"""
|
|
338
|
+
user_model_class = user_model_registry.get_user_model_class()
|
|
339
|
+
assert issubclass(user_model_class, User)
|
|
340
|
+
user_table_class = user_model_registry.get_user_table_class()
|
|
341
|
+
assert issubclass(user_table_class, UserTable)
|
|
342
|
+
|
|
343
|
+
async with get_session() as session:
|
|
344
|
+
result = await session.execute(
|
|
345
|
+
select(user_table_class).where(
|
|
346
|
+
user_table_class.telegram_username == telegram_username
|
|
347
|
+
)
|
|
348
|
+
)
|
|
349
|
+
user = result.scalars().first()
|
|
350
|
+
if user is None:
|
|
351
|
+
return None
|
|
352
|
+
return user_model_class.model_validate(user)
|
|
353
|
+
|
|
354
|
+
@classmethod
|
|
355
|
+
async def get_by_evm_wallet(cls, evm_wallet_address: str) -> UserModelType | None:
|
|
356
|
+
"""Get a user by EVM wallet address or matching ID."""
|
|
357
|
+
user_model_class = user_model_registry.get_user_model_class()
|
|
358
|
+
assert issubclass(user_model_class, User)
|
|
359
|
+
user_table_class = user_model_registry.get_user_table_class()
|
|
360
|
+
assert issubclass(user_table_class, UserTable)
|
|
361
|
+
|
|
362
|
+
async with get_session() as session:
|
|
363
|
+
result = await session.execute(
|
|
364
|
+
select(user_table_class).where(
|
|
365
|
+
user_table_class.evm_wallet_address == evm_wallet_address
|
|
366
|
+
)
|
|
367
|
+
)
|
|
368
|
+
user = result.scalars().first()
|
|
369
|
+
if user is not None:
|
|
370
|
+
return user_model_class.model_validate(user)
|
|
371
|
+
|
|
372
|
+
fallback_user = await session.get(user_table_class, evm_wallet_address)
|
|
373
|
+
if fallback_user is None:
|
|
374
|
+
return None
|
|
375
|
+
return user_model_class.model_validate(fallback_user)
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import logging
|
|
4
4
|
from typing import NotRequired, TypedDict
|
|
5
5
|
|
|
6
|
-
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
6
|
from intentkit.skills.acolyt.ask import AcolytAskGpt
|
|
8
7
|
from intentkit.skills.acolyt.base import AcolytBaseTool
|
|
9
8
|
from intentkit.skills.base import SkillConfig, SkillState
|
|
@@ -28,7 +27,6 @@ class Config(SkillConfig):
|
|
|
28
27
|
async def get_skills(
|
|
29
28
|
config: "Config",
|
|
30
29
|
is_private: bool,
|
|
31
|
-
store: SkillStoreABC,
|
|
32
30
|
**_,
|
|
33
31
|
) -> list[AcolytBaseTool]:
|
|
34
32
|
"""Get all Acolyt skills.
|
|
@@ -36,7 +34,6 @@ async def get_skills(
|
|
|
36
34
|
Args:
|
|
37
35
|
config: The configuration for Acolyt skills.
|
|
38
36
|
is_private: Whether to include private skills.
|
|
39
|
-
store: The skill store for persisting data.
|
|
40
37
|
|
|
41
38
|
Returns:
|
|
42
39
|
A list of Acolyt skills.
|
|
@@ -53,7 +50,7 @@ async def get_skills(
|
|
|
53
50
|
# Get each skill using the cached getter
|
|
54
51
|
result = []
|
|
55
52
|
for name in available_skills:
|
|
56
|
-
skill = get_acolyt_skill(name
|
|
53
|
+
skill = get_acolyt_skill(name)
|
|
57
54
|
if skill:
|
|
58
55
|
result.append(skill)
|
|
59
56
|
return result
|
|
@@ -61,22 +58,18 @@ async def get_skills(
|
|
|
61
58
|
|
|
62
59
|
def get_acolyt_skill(
|
|
63
60
|
name: str,
|
|
64
|
-
store: SkillStoreABC,
|
|
65
61
|
) -> AcolytBaseTool | None:
|
|
66
62
|
"""Get an Acolyt skill by name.
|
|
67
63
|
|
|
68
64
|
Args:
|
|
69
65
|
name: The name of the skill to get
|
|
70
|
-
store: The skill store for persisting data
|
|
71
66
|
|
|
72
67
|
Returns:
|
|
73
68
|
The requested Acolyt skill
|
|
74
69
|
"""
|
|
75
70
|
if name == "ask_gpt":
|
|
76
71
|
if name not in _cache:
|
|
77
|
-
_cache[name] = AcolytAskGpt(
|
|
78
|
-
skill_store=store,
|
|
79
|
-
)
|
|
72
|
+
_cache[name] = AcolytAskGpt()
|
|
80
73
|
return _cache[name]
|
|
81
74
|
else:
|
|
82
75
|
logger.warning(f"Unknown Acolyt skill: {name}")
|