intentkit 0.6.13.dev2__py3-none-any.whl → 0.8.17__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of intentkit might be problematic. Click here for more details.
- intentkit/__init__.py +1 -1
- intentkit/abstracts/agent.py +4 -5
- intentkit/abstracts/engine.py +5 -5
- intentkit/abstracts/graph.py +14 -7
- intentkit/abstracts/skill.py +6 -144
- intentkit/abstracts/twitter.py +4 -5
- intentkit/clients/__init__.py +5 -2
- intentkit/clients/cdp.py +101 -141
- intentkit/clients/twitter.py +83 -62
- intentkit/clients/web3.py +29 -0
- intentkit/config/config.py +8 -5
- intentkit/core/agent.py +472 -195
- intentkit/core/asset.py +253 -0
- intentkit/core/chat.py +51 -0
- intentkit/core/client.py +1 -1
- intentkit/core/credit.py +460 -130
- intentkit/core/engine.py +262 -233
- intentkit/core/node.py +15 -16
- intentkit/core/prompt.py +62 -28
- intentkit/core/scheduler.py +92 -0
- intentkit/core/statistics.py +168 -0
- intentkit/models/agent.py +1096 -949
- intentkit/models/agent_data.py +68 -38
- intentkit/models/agent_public.json +98 -0
- intentkit/models/agent_schema.json +54 -439
- intentkit/models/app_setting.py +96 -33
- intentkit/models/chat.py +74 -27
- intentkit/models/conversation.py +8 -8
- intentkit/models/credit.py +362 -74
- intentkit/models/db.py +26 -8
- intentkit/models/db_mig.py +2 -2
- intentkit/models/llm.csv +28 -0
- intentkit/models/llm.py +185 -350
- intentkit/models/redis.py +6 -4
- intentkit/models/skill.py +186 -72
- intentkit/models/skills.csv +174 -0
- intentkit/models/user.py +82 -24
- intentkit/skills/acolyt/__init__.py +2 -9
- intentkit/skills/acolyt/ask.py +3 -4
- intentkit/skills/acolyt/base.py +4 -9
- intentkit/skills/acolyt/schema.json +4 -3
- intentkit/skills/aixbt/__init__.py +2 -13
- intentkit/skills/aixbt/base.py +1 -7
- intentkit/skills/aixbt/projects.py +14 -15
- intentkit/skills/aixbt/schema.json +4 -4
- intentkit/skills/allora/__init__.py +2 -9
- intentkit/skills/allora/base.py +4 -9
- intentkit/skills/allora/price.py +3 -4
- intentkit/skills/allora/schema.json +3 -2
- intentkit/skills/base.py +248 -85
- intentkit/skills/basename/__init__.py +51 -0
- intentkit/skills/basename/base.py +11 -0
- intentkit/skills/basename/basename.svg +11 -0
- intentkit/skills/basename/schema.json +58 -0
- intentkit/skills/carv/__init__.py +115 -121
- intentkit/skills/carv/base.py +184 -185
- intentkit/skills/carv/fetch_news.py +3 -3
- intentkit/skills/carv/onchain_query.py +4 -4
- intentkit/skills/carv/schema.json +134 -137
- intentkit/skills/carv/token_info_and_price.py +5 -5
- intentkit/skills/casino/README.md +254 -0
- intentkit/skills/casino/__init__.py +86 -0
- intentkit/skills/casino/base.py +17 -0
- intentkit/skills/casino/casino.png +0 -0
- intentkit/skills/casino/deck_draw.py +127 -0
- intentkit/skills/casino/deck_shuffle.py +118 -0
- intentkit/skills/casino/dice_roll.py +100 -0
- intentkit/skills/casino/schema.json +77 -0
- intentkit/skills/casino/utils.py +107 -0
- intentkit/skills/cdp/__init__.py +22 -84
- intentkit/skills/cdp/base.py +1 -7
- intentkit/skills/cdp/schema.json +11 -314
- intentkit/skills/chainlist/__init__.py +2 -7
- intentkit/skills/chainlist/base.py +1 -7
- intentkit/skills/chainlist/chain_lookup.py +18 -18
- intentkit/skills/chainlist/schema.json +3 -5
- intentkit/skills/common/__init__.py +2 -9
- intentkit/skills/common/base.py +1 -7
- intentkit/skills/common/current_time.py +1 -2
- intentkit/skills/common/schema.json +2 -2
- intentkit/skills/cookiefun/__init__.py +6 -9
- intentkit/skills/cookiefun/base.py +2 -7
- intentkit/skills/cookiefun/get_account_details.py +7 -7
- intentkit/skills/cookiefun/get_account_feed.py +19 -19
- intentkit/skills/cookiefun/get_account_smart_followers.py +7 -7
- intentkit/skills/cookiefun/get_sectors.py +3 -3
- intentkit/skills/cookiefun/schema.json +1 -3
- intentkit/skills/cookiefun/search_accounts.py +9 -9
- intentkit/skills/cryptocompare/__init__.py +7 -24
- intentkit/skills/cryptocompare/api.py +2 -3
- intentkit/skills/cryptocompare/base.py +11 -25
- intentkit/skills/cryptocompare/fetch_news.py +4 -5
- intentkit/skills/cryptocompare/fetch_price.py +6 -7
- intentkit/skills/cryptocompare/fetch_top_exchanges.py +4 -5
- intentkit/skills/cryptocompare/fetch_top_market_cap.py +4 -5
- intentkit/skills/cryptocompare/fetch_top_volume.py +4 -5
- intentkit/skills/cryptocompare/fetch_trading_signals.py +5 -6
- intentkit/skills/cryptocompare/schema.json +3 -3
- intentkit/skills/cryptopanic/__init__.py +7 -10
- intentkit/skills/cryptopanic/base.py +51 -55
- intentkit/skills/cryptopanic/fetch_crypto_news.py +4 -8
- intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +5 -7
- intentkit/skills/cryptopanic/schema.json +105 -103
- intentkit/skills/dapplooker/__init__.py +2 -9
- intentkit/skills/dapplooker/base.py +4 -9
- intentkit/skills/dapplooker/dapplooker_token_data.py +7 -7
- intentkit/skills/dapplooker/schema.json +3 -5
- intentkit/skills/defillama/__init__.py +24 -74
- intentkit/skills/defillama/api.py +6 -9
- intentkit/skills/defillama/base.py +11 -21
- intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +8 -10
- intentkit/skills/defillama/coins/fetch_block.py +6 -8
- intentkit/skills/defillama/coins/fetch_current_prices.py +8 -10
- intentkit/skills/defillama/coins/fetch_first_price.py +7 -9
- intentkit/skills/defillama/coins/fetch_historical_prices.py +9 -11
- intentkit/skills/defillama/coins/fetch_price_chart.py +9 -11
- intentkit/skills/defillama/coins/fetch_price_percentage.py +7 -9
- intentkit/skills/defillama/config/chains.py +1 -3
- intentkit/skills/defillama/fees/fetch_fees_overview.py +24 -26
- intentkit/skills/defillama/schema.json +5 -1
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +16 -18
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +8 -10
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +5 -7
- intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +7 -9
- intentkit/skills/defillama/tests/api_integration.test.py +1 -1
- intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +4 -6
- intentkit/skills/defillama/tvl/fetch_chains.py +9 -11
- intentkit/skills/defillama/tvl/fetch_historical_tvl.py +4 -6
- intentkit/skills/defillama/tvl/fetch_protocol.py +32 -38
- intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +3 -5
- intentkit/skills/defillama/tvl/fetch_protocols.py +37 -45
- intentkit/skills/defillama/volumes/fetch_dex_overview.py +42 -48
- intentkit/skills/defillama/volumes/fetch_dex_summary.py +35 -37
- intentkit/skills/defillama/volumes/fetch_options_overview.py +24 -28
- intentkit/skills/defillama/yields/fetch_pool_chart.py +10 -12
- intentkit/skills/defillama/yields/fetch_pools.py +26 -30
- intentkit/skills/dexscreener/README.md +154 -0
- intentkit/skills/dexscreener/__init__.py +97 -93
- intentkit/skills/dexscreener/base.py +125 -133
- intentkit/skills/dexscreener/get_pair_info.py +158 -0
- intentkit/skills/dexscreener/get_token_pairs.py +165 -0
- intentkit/skills/dexscreener/get_tokens_info.py +212 -0
- intentkit/skills/dexscreener/model/search_token_response.py +80 -82
- intentkit/skills/dexscreener/schema.json +91 -48
- intentkit/skills/dexscreener/search_token.py +182 -321
- intentkit/skills/dexscreener/utils.py +420 -0
- intentkit/skills/dune_analytics/__init__.py +7 -9
- intentkit/skills/dune_analytics/base.py +48 -52
- intentkit/skills/dune_analytics/fetch_kol_buys.py +5 -7
- intentkit/skills/dune_analytics/fetch_nation_metrics.py +6 -8
- intentkit/skills/dune_analytics/schema.json +104 -99
- intentkit/skills/elfa/__init__.py +5 -18
- intentkit/skills/elfa/base.py +10 -14
- intentkit/skills/elfa/mention.py +19 -21
- intentkit/skills/elfa/schema.json +3 -2
- intentkit/skills/elfa/stats.py +4 -4
- intentkit/skills/elfa/tokens.py +12 -12
- intentkit/skills/elfa/utils.py +26 -28
- intentkit/skills/enso/__init__.py +11 -31
- intentkit/skills/enso/base.py +50 -35
- intentkit/skills/enso/best_yield.py +16 -24
- intentkit/skills/enso/networks.py +6 -11
- intentkit/skills/enso/prices.py +11 -13
- intentkit/skills/enso/route.py +34 -38
- intentkit/skills/enso/schema.json +3 -2
- intentkit/skills/enso/tokens.py +29 -38
- intentkit/skills/enso/wallet.py +76 -191
- intentkit/skills/erc20/__init__.py +50 -0
- intentkit/skills/erc20/base.py +11 -0
- intentkit/skills/erc20/erc20.svg +5 -0
- intentkit/skills/erc20/schema.json +74 -0
- intentkit/skills/erc721/__init__.py +53 -0
- intentkit/skills/erc721/base.py +11 -0
- intentkit/skills/erc721/erc721.svg +5 -0
- intentkit/skills/erc721/schema.json +90 -0
- intentkit/skills/firecrawl/README.md +11 -5
- intentkit/skills/firecrawl/__init__.py +5 -18
- intentkit/skills/firecrawl/base.py +4 -11
- intentkit/skills/firecrawl/clear.py +4 -8
- intentkit/skills/firecrawl/crawl.py +19 -19
- intentkit/skills/firecrawl/query.py +4 -3
- intentkit/skills/firecrawl/schema.json +6 -8
- intentkit/skills/firecrawl/scrape.py +150 -40
- intentkit/skills/firecrawl/utils.py +50 -42
- intentkit/skills/github/__init__.py +2 -7
- intentkit/skills/github/base.py +1 -7
- intentkit/skills/github/github_search.py +1 -2
- intentkit/skills/github/schema.json +3 -4
- intentkit/skills/heurist/__init__.py +8 -27
- intentkit/skills/heurist/base.py +4 -9
- intentkit/skills/heurist/image_generation_animagine_xl.py +12 -13
- intentkit/skills/heurist/image_generation_arthemy_comics.py +12 -13
- intentkit/skills/heurist/image_generation_arthemy_real.py +12 -13
- intentkit/skills/heurist/image_generation_braindance.py +12 -13
- intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +12 -13
- intentkit/skills/heurist/image_generation_flux_1_dev.py +12 -13
- intentkit/skills/heurist/image_generation_sdxl.py +12 -13
- intentkit/skills/heurist/schema.json +2 -2
- intentkit/skills/http/__init__.py +4 -15
- intentkit/skills/http/base.py +1 -7
- intentkit/skills/http/get.py +21 -16
- intentkit/skills/http/post.py +23 -18
- intentkit/skills/http/put.py +23 -18
- intentkit/skills/http/schema.json +4 -5
- intentkit/skills/lifi/__init__.py +8 -13
- intentkit/skills/lifi/base.py +1 -7
- intentkit/skills/lifi/schema.json +17 -8
- intentkit/skills/lifi/token_execute.py +36 -30
- intentkit/skills/lifi/token_quote.py +8 -10
- intentkit/skills/lifi/utils.py +104 -51
- intentkit/skills/moralis/__init__.py +6 -10
- intentkit/skills/moralis/api.py +6 -7
- intentkit/skills/moralis/base.py +5 -10
- intentkit/skills/moralis/fetch_chain_portfolio.py +10 -11
- intentkit/skills/moralis/fetch_nft_portfolio.py +22 -22
- intentkit/skills/moralis/fetch_solana_portfolio.py +11 -12
- intentkit/skills/moralis/fetch_wallet_portfolio.py +8 -9
- intentkit/skills/moralis/schema.json +7 -2
- intentkit/skills/morpho/__init__.py +52 -0
- intentkit/skills/morpho/base.py +11 -0
- intentkit/skills/morpho/morpho.svg +12 -0
- intentkit/skills/morpho/schema.json +73 -0
- intentkit/skills/nation/__init__.py +4 -9
- intentkit/skills/nation/base.py +5 -10
- intentkit/skills/nation/nft_check.py +3 -4
- intentkit/skills/nation/schema.json +4 -3
- intentkit/skills/onchain.py +23 -0
- intentkit/skills/openai/__init__.py +17 -18
- intentkit/skills/openai/base.py +10 -14
- intentkit/skills/openai/dalle_image_generation.py +3 -8
- intentkit/skills/openai/gpt_avatar_generator.py +102 -0
- intentkit/skills/openai/gpt_image_generation.py +4 -8
- intentkit/skills/openai/gpt_image_mini_generator.py +91 -0
- intentkit/skills/openai/gpt_image_to_image.py +4 -8
- intentkit/skills/openai/image_to_text.py +3 -7
- intentkit/skills/openai/schema.json +34 -3
- intentkit/skills/portfolio/__init__.py +11 -35
- intentkit/skills/portfolio/base.py +33 -19
- intentkit/skills/portfolio/schema.json +3 -5
- intentkit/skills/portfolio/token_balances.py +21 -21
- intentkit/skills/portfolio/wallet_approvals.py +17 -18
- intentkit/skills/portfolio/wallet_defi_positions.py +3 -3
- intentkit/skills/portfolio/wallet_history.py +31 -31
- intentkit/skills/portfolio/wallet_net_worth.py +13 -13
- intentkit/skills/portfolio/wallet_nfts.py +19 -19
- intentkit/skills/portfolio/wallet_profitability.py +18 -18
- intentkit/skills/portfolio/wallet_profitability_summary.py +5 -5
- intentkit/skills/portfolio/wallet_stats.py +3 -3
- intentkit/skills/portfolio/wallet_swaps.py +19 -19
- intentkit/skills/pyth/__init__.py +50 -0
- intentkit/skills/pyth/base.py +11 -0
- intentkit/skills/pyth/pyth.svg +6 -0
- intentkit/skills/pyth/schema.json +75 -0
- intentkit/skills/skills.toml +40 -0
- intentkit/skills/slack/__init__.py +5 -17
- intentkit/skills/slack/base.py +3 -9
- intentkit/skills/slack/get_channel.py +8 -8
- intentkit/skills/slack/get_message.py +9 -9
- intentkit/skills/slack/schedule_message.py +5 -5
- intentkit/skills/slack/schema.json +2 -2
- intentkit/skills/slack/send_message.py +3 -5
- intentkit/skills/supabase/__init__.py +7 -23
- intentkit/skills/supabase/base.py +9 -13
- intentkit/skills/supabase/delete_data.py +5 -6
- intentkit/skills/supabase/fetch_data.py +13 -14
- intentkit/skills/supabase/insert_data.py +5 -6
- intentkit/skills/supabase/invoke_function.py +7 -8
- intentkit/skills/supabase/schema.json +2 -3
- intentkit/skills/supabase/update_data.py +7 -8
- intentkit/skills/supabase/upsert_data.py +5 -6
- intentkit/skills/superfluid/__init__.py +53 -0
- intentkit/skills/superfluid/base.py +11 -0
- intentkit/skills/superfluid/schema.json +89 -0
- intentkit/skills/superfluid/superfluid.svg +6 -0
- intentkit/skills/system/__init__.py +7 -24
- intentkit/skills/system/add_autonomous_task.py +10 -12
- intentkit/skills/system/delete_autonomous_task.py +2 -2
- intentkit/skills/system/edit_autonomous_task.py +14 -18
- intentkit/skills/system/list_autonomous_tasks.py +3 -5
- intentkit/skills/system/read_agent_api_key.py +6 -4
- intentkit/skills/system/regenerate_agent_api_key.py +6 -4
- intentkit/skills/system/schema.json +6 -8
- intentkit/skills/tavily/__init__.py +3 -12
- intentkit/skills/tavily/base.py +4 -9
- intentkit/skills/tavily/schema.json +3 -5
- intentkit/skills/tavily/tavily_extract.py +2 -4
- intentkit/skills/tavily/tavily_search.py +4 -6
- intentkit/skills/token/__init__.py +5 -10
- intentkit/skills/token/base.py +7 -11
- intentkit/skills/token/erc20_transfers.py +19 -19
- intentkit/skills/token/schema.json +3 -6
- intentkit/skills/token/token_analytics.py +3 -3
- intentkit/skills/token/token_price.py +13 -13
- intentkit/skills/token/token_search.py +9 -9
- intentkit/skills/twitter/__init__.py +11 -35
- intentkit/skills/twitter/base.py +23 -35
- intentkit/skills/twitter/follow_user.py +3 -7
- intentkit/skills/twitter/get_mentions.py +6 -13
- intentkit/skills/twitter/get_timeline.py +5 -13
- intentkit/skills/twitter/get_user_by_username.py +3 -7
- intentkit/skills/twitter/get_user_tweets.py +6 -14
- intentkit/skills/twitter/like_tweet.py +3 -7
- intentkit/skills/twitter/post_tweet.py +23 -12
- intentkit/skills/twitter/reply_tweet.py +21 -12
- intentkit/skills/twitter/retweet.py +3 -7
- intentkit/skills/twitter/schema.json +1 -0
- intentkit/skills/twitter/search_tweets.py +5 -13
- intentkit/skills/unrealspeech/__init__.py +2 -7
- intentkit/skills/unrealspeech/base.py +2 -8
- intentkit/skills/unrealspeech/schema.json +2 -5
- intentkit/skills/unrealspeech/text_to_speech.py +8 -8
- intentkit/skills/venice_audio/__init__.py +98 -106
- intentkit/skills/venice_audio/base.py +117 -121
- intentkit/skills/venice_audio/input.py +41 -41
- intentkit/skills/venice_audio/schema.json +151 -152
- intentkit/skills/venice_audio/venice_audio.py +38 -21
- intentkit/skills/venice_image/__init__.py +147 -154
- intentkit/skills/venice_image/api.py +138 -138
- intentkit/skills/venice_image/base.py +185 -192
- intentkit/skills/venice_image/config.py +33 -35
- intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -3
- intentkit/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
- intentkit/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
- intentkit/skills/venice_image/image_generation/image_generation_base.py +9 -9
- intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
- intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -158
- intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
- intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
- intentkit/skills/venice_image/image_upscale/image_upscale.py +3 -3
- intentkit/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
- intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
- intentkit/skills/venice_image/image_vision/image_vision.py +2 -2
- intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -17
- intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -9
- intentkit/skills/venice_image/schema.json +267 -267
- intentkit/skills/venice_image/utils.py +77 -78
- intentkit/skills/web_scraper/__init__.py +5 -18
- intentkit/skills/web_scraper/base.py +21 -7
- intentkit/skills/web_scraper/document_indexer.py +7 -6
- intentkit/skills/web_scraper/schema.json +2 -6
- intentkit/skills/web_scraper/scrape_and_index.py +15 -15
- intentkit/skills/web_scraper/utils.py +62 -63
- intentkit/skills/web_scraper/website_indexer.py +17 -19
- intentkit/skills/weth/__init__.py +49 -0
- intentkit/skills/weth/base.py +11 -0
- intentkit/skills/weth/schema.json +58 -0
- intentkit/skills/weth/weth.svg +6 -0
- intentkit/skills/wow/__init__.py +51 -0
- intentkit/skills/wow/base.py +11 -0
- intentkit/skills/wow/schema.json +89 -0
- intentkit/skills/wow/wow.svg +7 -0
- intentkit/skills/x402/__init__.py +61 -0
- intentkit/skills/x402/ask_agent.py +98 -0
- intentkit/skills/x402/base.py +99 -0
- intentkit/skills/x402/http_request.py +117 -0
- intentkit/skills/x402/schema.json +45 -0
- intentkit/skills/x402/x402.webp +0 -0
- intentkit/skills/xmtp/__init__.py +4 -15
- intentkit/skills/xmtp/base.py +61 -2
- intentkit/skills/xmtp/price.py +18 -13
- intentkit/skills/xmtp/schema.json +69 -71
- intentkit/skills/xmtp/swap.py +22 -25
- intentkit/skills/xmtp/transfer.py +71 -32
- intentkit/utils/chain.py +3 -3
- intentkit/utils/error.py +14 -1
- intentkit/utils/logging.py +2 -4
- intentkit/utils/s3.py +59 -7
- intentkit/utils/schema.py +100 -0
- intentkit/utils/slack_alert.py +7 -8
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/METADATA +14 -16
- intentkit-0.8.17.dist-info/RECORD +466 -0
- intentkit/abstracts/exception.py +0 -9
- intentkit/core/skill.py +0 -200
- intentkit/models/generator.py +0 -347
- intentkit/skills/cdp/get_balance.py +0 -110
- intentkit/skills/cdp/swap.py +0 -121
- intentkit/skills/moralis/tests/__init__.py +0 -0
- intentkit/skills/moralis/tests/test_wallet.py +0 -511
- intentkit-0.6.13.dev2.dist-info/RECORD +0 -409
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/WHEEL +0 -0
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/licenses/LICENSE +0 -0
intentkit/models/agent_data.py
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import logging
|
|
2
|
-
from datetime import
|
|
4
|
+
from datetime import UTC, datetime
|
|
3
5
|
from decimal import Decimal
|
|
4
|
-
from typing import Annotated, Any
|
|
6
|
+
from typing import Annotated, Any
|
|
5
7
|
|
|
6
|
-
from fastapi import HTTPException
|
|
7
8
|
from intentkit.models.base import Base
|
|
8
9
|
from intentkit.models.db import get_session
|
|
10
|
+
from intentkit.utils.error import IntentKitAPIError
|
|
9
11
|
from pydantic import BaseModel, ConfigDict
|
|
10
12
|
from pydantic import Field as PydanticField
|
|
11
13
|
from sqlalchemy import (
|
|
@@ -60,6 +62,9 @@ class AgentDataTable(Base):
|
|
|
60
62
|
telegram_id = Column(String, nullable=True, comment="Telegram user ID")
|
|
61
63
|
telegram_username = Column(String, nullable=True, comment="Telegram username")
|
|
62
64
|
telegram_name = Column(String, nullable=True, comment="Telegram display name")
|
|
65
|
+
discord_id = Column(String, nullable=True, comment="Discord user ID")
|
|
66
|
+
discord_username = Column(String, nullable=True, comment="Discord username")
|
|
67
|
+
discord_name = Column(String, nullable=True, comment="Discord display name")
|
|
63
68
|
error_message = Column(String, nullable=True, comment="Last error message")
|
|
64
69
|
api_key = Column(
|
|
65
70
|
String, nullable=True, unique=True, comment="API key for the agent"
|
|
@@ -77,7 +82,7 @@ class AgentDataTable(Base):
|
|
|
77
82
|
DateTime(timezone=True),
|
|
78
83
|
nullable=False,
|
|
79
84
|
server_default=func.now(),
|
|
80
|
-
onupdate=lambda: datetime.now(
|
|
85
|
+
onupdate=lambda: datetime.now(UTC),
|
|
81
86
|
comment="Timestamp when the agent data was last updated",
|
|
82
87
|
)
|
|
83
88
|
|
|
@@ -94,70 +99,70 @@ class AgentData(BaseModel):
|
|
|
94
99
|
),
|
|
95
100
|
]
|
|
96
101
|
evm_wallet_address: Annotated[
|
|
97
|
-
|
|
102
|
+
str | None,
|
|
98
103
|
PydanticField(
|
|
99
104
|
default=None,
|
|
100
105
|
description="EVM wallet address",
|
|
101
106
|
),
|
|
102
107
|
] = None
|
|
103
108
|
solana_wallet_address: Annotated[
|
|
104
|
-
|
|
109
|
+
str | None,
|
|
105
110
|
PydanticField(
|
|
106
111
|
default=None,
|
|
107
112
|
description="Solana wallet address",
|
|
108
113
|
),
|
|
109
114
|
] = None
|
|
110
115
|
cdp_wallet_data: Annotated[
|
|
111
|
-
|
|
116
|
+
str | None,
|
|
112
117
|
PydanticField(
|
|
113
118
|
default=None,
|
|
114
119
|
description="CDP wallet data",
|
|
115
120
|
),
|
|
116
121
|
] = None
|
|
117
122
|
twitter_id: Annotated[
|
|
118
|
-
|
|
123
|
+
str | None,
|
|
119
124
|
PydanticField(
|
|
120
125
|
default=None,
|
|
121
126
|
description="Twitter user ID",
|
|
122
127
|
),
|
|
123
128
|
] = None
|
|
124
129
|
twitter_username: Annotated[
|
|
125
|
-
|
|
130
|
+
str | None,
|
|
126
131
|
PydanticField(
|
|
127
132
|
default=None,
|
|
128
133
|
description="Twitter username",
|
|
129
134
|
),
|
|
130
135
|
] = None
|
|
131
136
|
twitter_name: Annotated[
|
|
132
|
-
|
|
137
|
+
str | None,
|
|
133
138
|
PydanticField(
|
|
134
139
|
default=None,
|
|
135
140
|
description="Twitter display name",
|
|
136
141
|
),
|
|
137
142
|
] = None
|
|
138
143
|
twitter_access_token: Annotated[
|
|
139
|
-
|
|
144
|
+
str | None,
|
|
140
145
|
PydanticField(
|
|
141
146
|
default=None,
|
|
142
147
|
description="Twitter access token",
|
|
143
148
|
),
|
|
144
149
|
] = None
|
|
145
150
|
twitter_access_token_expires_at: Annotated[
|
|
146
|
-
|
|
151
|
+
datetime | None,
|
|
147
152
|
PydanticField(
|
|
148
153
|
default=None,
|
|
149
154
|
description="Twitter access token expiration time",
|
|
150
155
|
),
|
|
151
156
|
] = None
|
|
152
157
|
twitter_refresh_token: Annotated[
|
|
153
|
-
|
|
158
|
+
str | None,
|
|
154
159
|
PydanticField(
|
|
155
160
|
default=None,
|
|
156
161
|
description="Twitter refresh token",
|
|
157
162
|
),
|
|
158
163
|
] = None
|
|
159
164
|
twitter_self_key_refreshed_at: Annotated[
|
|
160
|
-
|
|
165
|
+
datetime | None,
|
|
161
166
|
PydanticField(
|
|
162
167
|
default=None,
|
|
163
168
|
description="Twitter self-key userinfo last refresh time",
|
|
@@ -171,42 +176,63 @@ class AgentData(BaseModel):
|
|
|
171
176
|
),
|
|
172
177
|
] = None
|
|
173
178
|
telegram_id: Annotated[
|
|
174
|
-
|
|
179
|
+
str | None,
|
|
175
180
|
PydanticField(
|
|
176
181
|
default=None,
|
|
177
182
|
description="Telegram user ID",
|
|
178
183
|
),
|
|
179
184
|
] = None
|
|
180
185
|
telegram_username: Annotated[
|
|
181
|
-
|
|
186
|
+
str | None,
|
|
182
187
|
PydanticField(
|
|
183
188
|
default=None,
|
|
184
189
|
description="Telegram username",
|
|
185
190
|
),
|
|
186
191
|
] = None
|
|
187
192
|
telegram_name: Annotated[
|
|
188
|
-
|
|
193
|
+
str | None,
|
|
189
194
|
PydanticField(
|
|
190
195
|
default=None,
|
|
191
196
|
description="Telegram display name",
|
|
192
197
|
),
|
|
193
198
|
] = None
|
|
199
|
+
discord_id: Annotated[
|
|
200
|
+
str | None,
|
|
201
|
+
PydanticField(
|
|
202
|
+
default=None,
|
|
203
|
+
description="Discord user ID",
|
|
204
|
+
),
|
|
205
|
+
] = None
|
|
206
|
+
discord_username: Annotated[
|
|
207
|
+
str | None,
|
|
208
|
+
PydanticField(
|
|
209
|
+
default=None,
|
|
210
|
+
description="Discord username",
|
|
211
|
+
),
|
|
212
|
+
] = None
|
|
213
|
+
discord_name: Annotated[
|
|
214
|
+
str | None,
|
|
215
|
+
PydanticField(
|
|
216
|
+
default=None,
|
|
217
|
+
description="Discord display name",
|
|
218
|
+
),
|
|
219
|
+
] = None
|
|
194
220
|
error_message: Annotated[
|
|
195
|
-
|
|
221
|
+
str | None,
|
|
196
222
|
PydanticField(
|
|
197
223
|
default=None,
|
|
198
224
|
description="Last error message",
|
|
199
225
|
),
|
|
200
226
|
] = None
|
|
201
227
|
api_key: Annotated[
|
|
202
|
-
|
|
228
|
+
str | None,
|
|
203
229
|
PydanticField(
|
|
204
230
|
default=None,
|
|
205
231
|
description="API key for the agent",
|
|
206
232
|
),
|
|
207
233
|
] = None
|
|
208
234
|
api_key_public: Annotated[
|
|
209
|
-
|
|
235
|
+
str | None,
|
|
210
236
|
PydanticField(
|
|
211
237
|
default=None,
|
|
212
238
|
description="Public API key for the agent",
|
|
@@ -215,14 +241,14 @@ class AgentData(BaseModel):
|
|
|
215
241
|
created_at: Annotated[
|
|
216
242
|
datetime,
|
|
217
243
|
PydanticField(
|
|
218
|
-
default_factory=lambda: datetime.now(
|
|
244
|
+
default_factory=lambda: datetime.now(UTC),
|
|
219
245
|
description="Timestamp when the agent data was created",
|
|
220
246
|
),
|
|
221
247
|
]
|
|
222
248
|
updated_at: Annotated[
|
|
223
249
|
datetime,
|
|
224
250
|
PydanticField(
|
|
225
|
-
default_factory=lambda: datetime.now(
|
|
251
|
+
default_factory=lambda: datetime.now(UTC),
|
|
226
252
|
description="Timestamp when the agent data was last updated",
|
|
227
253
|
),
|
|
228
254
|
]
|
|
@@ -247,7 +273,7 @@ class AgentData(BaseModel):
|
|
|
247
273
|
return cls.model_construct(id=agent_id)
|
|
248
274
|
|
|
249
275
|
@classmethod
|
|
250
|
-
async def get_by_api_key(cls, api_key: str) ->
|
|
276
|
+
async def get_by_api_key(cls, api_key: str) -> AgentData | None:
|
|
251
277
|
"""Get agent data by API key.
|
|
252
278
|
|
|
253
279
|
Args:
|
|
@@ -356,7 +382,7 @@ class AgentPluginDataTable(Base):
|
|
|
356
382
|
DateTime(timezone=True),
|
|
357
383
|
nullable=False,
|
|
358
384
|
server_default=func.now(),
|
|
359
|
-
onupdate=lambda: datetime.now(
|
|
385
|
+
onupdate=lambda: datetime.now(UTC),
|
|
360
386
|
)
|
|
361
387
|
|
|
362
388
|
|
|
@@ -388,28 +414,28 @@ class AgentPluginData(BaseModel):
|
|
|
388
414
|
PydanticField(description="Key for this specific piece of data"),
|
|
389
415
|
]
|
|
390
416
|
data: Annotated[
|
|
391
|
-
|
|
417
|
+
dict[str, Any],
|
|
392
418
|
PydanticField(default=None, description="JSON data stored for this key"),
|
|
393
419
|
]
|
|
394
420
|
created_at: Annotated[
|
|
395
421
|
datetime,
|
|
396
422
|
PydanticField(
|
|
397
423
|
description="Timestamp when this data was created",
|
|
398
|
-
default_factory=lambda: datetime.now(
|
|
424
|
+
default_factory=lambda: datetime.now(UTC),
|
|
399
425
|
),
|
|
400
426
|
]
|
|
401
427
|
updated_at: Annotated[
|
|
402
428
|
datetime,
|
|
403
429
|
PydanticField(
|
|
404
430
|
description="Timestamp when this data was last updated",
|
|
405
|
-
default_factory=lambda: datetime.now(
|
|
431
|
+
default_factory=lambda: datetime.now(UTC),
|
|
406
432
|
),
|
|
407
433
|
]
|
|
408
434
|
|
|
409
435
|
@classmethod
|
|
410
436
|
async def get(
|
|
411
437
|
cls, agent_id: str, plugin: str, key: str
|
|
412
|
-
) ->
|
|
438
|
+
) -> "AgentPluginData" | None:
|
|
413
439
|
"""Get plugin data for an agent.
|
|
414
440
|
|
|
415
441
|
Args:
|
|
@@ -513,7 +539,7 @@ class AgentQuotaTable(Base):
|
|
|
513
539
|
DateTime(timezone=True),
|
|
514
540
|
nullable=False,
|
|
515
541
|
server_default=func.now(),
|
|
516
|
-
onupdate=lambda: datetime.now(
|
|
542
|
+
onupdate=lambda: datetime.now(UTC),
|
|
517
543
|
)
|
|
518
544
|
|
|
519
545
|
|
|
@@ -547,7 +573,7 @@ class AgentQuota(BaseModel):
|
|
|
547
573
|
int, PydanticField(default=99999999, description="Daily message limit")
|
|
548
574
|
]
|
|
549
575
|
last_message_time: Annotated[
|
|
550
|
-
|
|
576
|
+
datetime | None,
|
|
551
577
|
PydanticField(default=None, description="Last message timestamp"),
|
|
552
578
|
]
|
|
553
579
|
autonomous_count_total: Annotated[
|
|
@@ -578,7 +604,7 @@ class AgentQuota(BaseModel):
|
|
|
578
604
|
),
|
|
579
605
|
]
|
|
580
606
|
last_autonomous_time: Annotated[
|
|
581
|
-
|
|
607
|
+
datetime | None,
|
|
582
608
|
PydanticField(default=None, description="Last autonomous operation timestamp"),
|
|
583
609
|
]
|
|
584
610
|
twitter_count_total: Annotated[
|
|
@@ -603,7 +629,7 @@ class AgentQuota(BaseModel):
|
|
|
603
629
|
PydanticField(default=99999999, description="Daily Twitter operations limit"),
|
|
604
630
|
]
|
|
605
631
|
last_twitter_time: Annotated[
|
|
606
|
-
|
|
632
|
+
datetime | None,
|
|
607
633
|
PydanticField(default=None, description="Last Twitter operation timestamp"),
|
|
608
634
|
]
|
|
609
635
|
free_income_daily: Annotated[
|
|
@@ -638,14 +664,14 @@ class AgentQuota(BaseModel):
|
|
|
638
664
|
datetime,
|
|
639
665
|
PydanticField(
|
|
640
666
|
description="Timestamp when this quota was created",
|
|
641
|
-
default_factory=lambda: datetime.now(
|
|
667
|
+
default_factory=lambda: datetime.now(UTC),
|
|
642
668
|
),
|
|
643
669
|
]
|
|
644
670
|
updated_at: Annotated[
|
|
645
671
|
datetime,
|
|
646
672
|
PydanticField(
|
|
647
673
|
description="Timestamp when this quota was last updated",
|
|
648
|
-
default_factory=lambda: datetime.now(
|
|
674
|
+
default_factory=lambda: datetime.now(UTC),
|
|
649
675
|
),
|
|
650
676
|
]
|
|
651
677
|
|
|
@@ -754,7 +780,11 @@ class AgentQuota(BaseModel):
|
|
|
754
780
|
await session.execute(stmt)
|
|
755
781
|
except Exception as e:
|
|
756
782
|
logger.error(f"Error adding free income: {str(e)}")
|
|
757
|
-
raise
|
|
783
|
+
raise IntentKitAPIError(
|
|
784
|
+
status_code=500,
|
|
785
|
+
key="DatabaseError",
|
|
786
|
+
message=f"Database error: {str(e)}",
|
|
787
|
+
)
|
|
758
788
|
|
|
759
789
|
async def add_message(self) -> None:
|
|
760
790
|
"""Add a message to the agent's message count."""
|
|
@@ -766,7 +796,7 @@ class AgentQuota(BaseModel):
|
|
|
766
796
|
quota_record.message_count_total += 1
|
|
767
797
|
quota_record.message_count_monthly += 1
|
|
768
798
|
quota_record.message_count_daily += 1
|
|
769
|
-
quota_record.last_message_time = datetime.now(
|
|
799
|
+
quota_record.last_message_time = datetime.now(UTC)
|
|
770
800
|
db.add(quota_record)
|
|
771
801
|
await db.commit()
|
|
772
802
|
|
|
@@ -786,7 +816,7 @@ class AgentQuota(BaseModel):
|
|
|
786
816
|
# Update record
|
|
787
817
|
quota_record.autonomous_count_total += 1
|
|
788
818
|
quota_record.autonomous_count_monthly += 1
|
|
789
|
-
quota_record.last_autonomous_time = datetime.now(
|
|
819
|
+
quota_record.last_autonomous_time = datetime.now(UTC)
|
|
790
820
|
db.add(quota_record)
|
|
791
821
|
await db.commit()
|
|
792
822
|
|
|
@@ -807,7 +837,7 @@ class AgentQuota(BaseModel):
|
|
|
807
837
|
# Update record
|
|
808
838
|
quota_record.twitter_count_total += 1
|
|
809
839
|
quota_record.twitter_count_daily += 1
|
|
810
|
-
quota_record.last_twitter_time = datetime.now(
|
|
840
|
+
quota_record.last_twitter_time = datetime.now(UTC)
|
|
811
841
|
db.add(quota_record)
|
|
812
842
|
await db.commit()
|
|
813
843
|
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"title": "AgentPublicInfo",
|
|
5
|
+
"description": "Public information of the agent",
|
|
6
|
+
"properties": {
|
|
7
|
+
"description": {
|
|
8
|
+
"title": "Description",
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "Description of the agent, for public view, not contained in prompt",
|
|
11
|
+
"x-group": "basic",
|
|
12
|
+
"x-placeholder": "Introduce your agent"
|
|
13
|
+
},
|
|
14
|
+
"external_website": {
|
|
15
|
+
"title": "External Website",
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Link of external website of the agent, if you have one",
|
|
18
|
+
"format": "uri",
|
|
19
|
+
"x-group": "basic",
|
|
20
|
+
"x-placeholder": "Enter agent external website url"
|
|
21
|
+
},
|
|
22
|
+
"ticker": {
|
|
23
|
+
"title": "Ticker",
|
|
24
|
+
"type": "string",
|
|
25
|
+
"description": "Ticker symbol of the agent",
|
|
26
|
+
"maxLength": 10,
|
|
27
|
+
"minLength": 1,
|
|
28
|
+
"x-group": "basic",
|
|
29
|
+
"x-placeholder": "If one day, your agent has it's own token, what will it be?"
|
|
30
|
+
},
|
|
31
|
+
"token_address": {
|
|
32
|
+
"title": "Token Address",
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "Token address of the agent",
|
|
35
|
+
"maxLength": 42,
|
|
36
|
+
"x-group": "internal",
|
|
37
|
+
"readOnly": true
|
|
38
|
+
},
|
|
39
|
+
"token_pool": {
|
|
40
|
+
"title": "Token Pool",
|
|
41
|
+
"type": "string",
|
|
42
|
+
"description": "Pool of the agent token",
|
|
43
|
+
"maxLength": 42,
|
|
44
|
+
"x-group": "internal",
|
|
45
|
+
"readOnly": true
|
|
46
|
+
},
|
|
47
|
+
"fee_percentage": {
|
|
48
|
+
"title": "Fee Percentage",
|
|
49
|
+
"type": "number",
|
|
50
|
+
"description": "Fee percentage of the agent",
|
|
51
|
+
"minimum": 0,
|
|
52
|
+
"x-group": "basic"
|
|
53
|
+
},
|
|
54
|
+
"example_intro": {
|
|
55
|
+
"title": "Example Introduction",
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "Introduction of the example",
|
|
58
|
+
"maxLength": 2000,
|
|
59
|
+
"x-group": "examples"
|
|
60
|
+
},
|
|
61
|
+
"examples": {
|
|
62
|
+
"title": "Examples",
|
|
63
|
+
"type": "array",
|
|
64
|
+
"description": "List of example prompts for the agent",
|
|
65
|
+
"maxItems": 6,
|
|
66
|
+
"items": {
|
|
67
|
+
"type": "object",
|
|
68
|
+
"properties": {
|
|
69
|
+
"name": {
|
|
70
|
+
"title": "Name",
|
|
71
|
+
"type": "string",
|
|
72
|
+
"description": "Name of the example",
|
|
73
|
+
"maxLength": 50,
|
|
74
|
+
"x-group": "examples"
|
|
75
|
+
},
|
|
76
|
+
"description": {
|
|
77
|
+
"title": "Description",
|
|
78
|
+
"type": "string",
|
|
79
|
+
"description": "Description of the example",
|
|
80
|
+
"maxLength": 200,
|
|
81
|
+
"x-group": "examples"
|
|
82
|
+
},
|
|
83
|
+
"prompt": {
|
|
84
|
+
"title": "Prompt",
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "Example prompt",
|
|
87
|
+
"maxLength": 2000,
|
|
88
|
+
"x-group": "examples"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"required": ["name", "description", "prompt"]
|
|
92
|
+
},
|
|
93
|
+
"x-group": "examples",
|
|
94
|
+
"x-inline": true
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"additionalProperties": true
|
|
98
|
+
}
|