intentkit 0.6.1.dev1__tar.gz → 0.6.2__tar.gz
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-0.6.1.dev1 → intentkit-0.6.2}/PKG-INFO +1 -1
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/__init__.py +1 -1
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/clients/twitter.py +58 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/credit.py +20 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/chat.py +2 -2
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/credit.py +9 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/pyproject.toml +1 -1
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/schema.json +2 -2
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/system/read_agent_api_key.py +1 -1
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/system/regenerate_agent_api_key.py +1 -1
- intentkit-0.6.1.dev1/utils/middleware.py +0 -61
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/.gitignore +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/LICENSE +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/MANIFEST.in +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/abstracts/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/abstracts/agent.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/abstracts/api.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/abstracts/engine.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/abstracts/exception.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/abstracts/graph.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/abstracts/skill.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/abstracts/twitter.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/clients/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/clients/cdp.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/config/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/config/config.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/agent.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/api.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/client.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/engine.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/node.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/prompt.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/core/skill.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/agent.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/agent_data.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/agent_schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/app_setting.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/conversation.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/db.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/db_mig.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/generator.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/llm.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/redis.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/skill.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/models/user.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/acolyt/ask.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/acolyt/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/acolyt/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/aixbt/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/aixbt/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/aixbt/projects.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/aixbt/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/allora/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/allora/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/allora/price.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/allora/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/carv/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/carv/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/carv/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/carv/carv.webp +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/carv/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cdp/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cdp/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cdp/cdp.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cdp/get_balance.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cdp/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/chainlist/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/chainlist/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/chainlist/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/common/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/common/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/common/common.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/common/current_time.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/common/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dapplooker/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dapplooker/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/api.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dexscreener/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/elfa/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/elfa/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/elfa/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/elfa/mention.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/elfa/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/elfa/stats.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/elfa/tokens.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/abi/route.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/best_yield.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/enso.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/networks.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/prices.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/route.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/tokens.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/enso/wallet.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/clear.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/query.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/firecrawl/utils.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/github/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/github/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/github/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/github/github.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/github/github_search.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/github/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/heurist.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/heurist/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/http/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/http/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/http/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/http/get.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/http/http.svg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/http/post.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/http/put.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/http/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/lifi/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/lifi/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/lifi/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/lifi/lifi.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/lifi/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/lifi/token_execute.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/lifi/token_quote.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/lifi/utils.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/api.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/moralis.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/nation/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/nation/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/nation/nation.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/nation/nft_check.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/nation/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/openai/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/openai/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/openai/dalle_image_generation.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/openai/gpt_image_generation.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/openai/gpt_image_to_image.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/openai/openai.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/openai/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/constants.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/skills.toml +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/slack/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/slack/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/slack/get_channel.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/slack/get_message.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/slack/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/slack/send_message.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/slack/slack.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/delete_data.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/insert_data.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/supabase.svg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/update_data.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/system/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/system/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/system/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/system/system.svg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/tavily/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/tavily/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/tavily/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/tavily/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/constants.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/moralis.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/token_analytics.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/token_price.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/token/token_search.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/follow_user.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/retweet.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/twitter/twitter.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_audio/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_audio/input.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/api.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/config.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/utils.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/README.md +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/base.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/utils/__init__.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/utils/chain.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/utils/error.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/utils/logging.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/utils/random.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/utils/s3.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/utils/slack_alert.py +0 -0
- {intentkit-0.6.1.dev1 → intentkit-0.6.2}/utils/tx.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
4
4
|
Summary: Intent-based AI Agent Platform - Core Package
|
|
5
5
|
Project-URL: Homepage, https://github.com/crestal-network/intentkit
|
|
6
6
|
Project-URL: Repository, https://github.com/crestal-network/intentkit
|
|
@@ -3,9 +3,12 @@ import os
|
|
|
3
3
|
import tempfile
|
|
4
4
|
from datetime import datetime, timedelta, timezone
|
|
5
5
|
from typing import Any, Dict, List, NotRequired, Optional, TypedDict
|
|
6
|
+
from urllib.parse import urlencode
|
|
6
7
|
|
|
7
8
|
import httpx
|
|
8
9
|
from pydantic import BaseModel, Field
|
|
10
|
+
from requests.auth import HTTPBasicAuth
|
|
11
|
+
from requests_oauthlib import OAuth2Session
|
|
9
12
|
from tweepy.asynchronous import AsyncClient
|
|
10
13
|
|
|
11
14
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
@@ -443,3 +446,58 @@ async def unlink_twitter(agent_id: str) -> AgentData:
|
|
|
443
446
|
"twitter_refresh_token": None,
|
|
444
447
|
},
|
|
445
448
|
)
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
# this class is forked from:
|
|
452
|
+
# https://github.com/tweepy/tweepy/blob/main/tweepy/auth.py
|
|
453
|
+
# it is not maintained by the original author, bug need to be fixed
|
|
454
|
+
class OAuth2UserHandler(OAuth2Session):
|
|
455
|
+
"""OAuth 2.0 Authorization Code Flow with PKCE (User Context)
|
|
456
|
+
authentication handler
|
|
457
|
+
"""
|
|
458
|
+
|
|
459
|
+
def __init__(self, *, client_id, redirect_uri, scope, client_secret=None):
|
|
460
|
+
super().__init__(client_id, redirect_uri=redirect_uri, scope=scope)
|
|
461
|
+
if client_secret is not None:
|
|
462
|
+
self.auth = HTTPBasicAuth(client_id, client_secret)
|
|
463
|
+
else:
|
|
464
|
+
self.auth = None
|
|
465
|
+
self.code_challenge = self._client.create_code_challenge(
|
|
466
|
+
self._client.create_code_verifier(128), "S256"
|
|
467
|
+
)
|
|
468
|
+
|
|
469
|
+
def get_authorization_url(self, agent_id: str, redirect_uri: str):
|
|
470
|
+
"""Get the authorization URL to redirect the user to
|
|
471
|
+
|
|
472
|
+
Args:
|
|
473
|
+
agent_id: ID of the agent to authenticate
|
|
474
|
+
redirect_uri: URI to redirect to after authorization
|
|
475
|
+
"""
|
|
476
|
+
state_params = {"agent_id": agent_id, "redirect_uri": redirect_uri}
|
|
477
|
+
authorization_url, _ = self.authorization_url(
|
|
478
|
+
"https://x.com/i/oauth2/authorize",
|
|
479
|
+
state=urlencode(state_params),
|
|
480
|
+
code_challenge=self.code_challenge,
|
|
481
|
+
code_challenge_method="S256",
|
|
482
|
+
)
|
|
483
|
+
return authorization_url
|
|
484
|
+
|
|
485
|
+
def get_token(self, authorization_response):
|
|
486
|
+
"""After user has authorized the app, fetch access token with
|
|
487
|
+
authorization response URL
|
|
488
|
+
"""
|
|
489
|
+
return super().fetch_token(
|
|
490
|
+
"https://api.x.com/2/oauth2/token",
|
|
491
|
+
authorization_response=authorization_response,
|
|
492
|
+
auth=self.auth,
|
|
493
|
+
include_client_id=True,
|
|
494
|
+
code_verifier=self._client.code_verifier,
|
|
495
|
+
)
|
|
496
|
+
|
|
497
|
+
def refresh(self, refresh_token: str):
|
|
498
|
+
"""Refresh token"""
|
|
499
|
+
return super().refresh_token(
|
|
500
|
+
"https://api.x.com/2/oauth2/token",
|
|
501
|
+
refresh_token=refresh_token,
|
|
502
|
+
include_client_id=True,
|
|
503
|
+
)
|
|
@@ -10,6 +10,7 @@ from sqlalchemy import desc, select
|
|
|
10
10
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
11
11
|
|
|
12
12
|
from intentkit.models.agent import Agent
|
|
13
|
+
from intentkit.models.agent_data import AgentData
|
|
13
14
|
from intentkit.models.app_setting import AppSetting
|
|
14
15
|
from intentkit.models.credit import (
|
|
15
16
|
DEFAULT_PLATFORM_ACCOUNT_ADJUSTMENT,
|
|
@@ -150,6 +151,7 @@ async def recharge(
|
|
|
150
151
|
permanent_amount=amount, # Set permanent_amount since this is a permanent credit
|
|
151
152
|
free_amount=Decimal("0"), # No free credits involved
|
|
152
153
|
reward_amount=Decimal("0"), # No reward credits involved
|
|
154
|
+
agent_wallet_address=None, # No agent involved in recharge
|
|
153
155
|
note=note,
|
|
154
156
|
)
|
|
155
157
|
session.add(event)
|
|
@@ -258,6 +260,7 @@ async def reward(
|
|
|
258
260
|
reward_amount=amount, # Set reward_amount since this is a reward credit
|
|
259
261
|
free_amount=Decimal("0"), # No free credits involved
|
|
260
262
|
permanent_amount=Decimal("0"), # No permanent credits involved
|
|
263
|
+
agent_wallet_address=None, # No agent involved in reward
|
|
261
264
|
note=note,
|
|
262
265
|
)
|
|
263
266
|
session.add(event)
|
|
@@ -412,6 +415,7 @@ async def adjustment(
|
|
|
412
415
|
free_amount=free_amount,
|
|
413
416
|
reward_amount=reward_amount,
|
|
414
417
|
permanent_amount=permanent_amount,
|
|
418
|
+
agent_wallet_address=None, # No agent involved in adjustment
|
|
415
419
|
note=note,
|
|
416
420
|
)
|
|
417
421
|
session.add(event)
|
|
@@ -892,6 +896,10 @@ async def expense_message(
|
|
|
892
896
|
fee_agent_amount - fee_agent_free_amount - fee_agent_reward_amount
|
|
893
897
|
).quantize(FOURPLACES, rounding=ROUND_HALF_UP)
|
|
894
898
|
|
|
899
|
+
# Get agent wallet address
|
|
900
|
+
agent_data = await AgentData.get(agent.id)
|
|
901
|
+
agent_wallet_address = agent_data.evm_wallet_address if agent_data else None
|
|
902
|
+
|
|
895
903
|
event = CreditEventTable(
|
|
896
904
|
id=event_id,
|
|
897
905
|
account_id=user_account.id,
|
|
@@ -925,6 +933,7 @@ async def expense_message(
|
|
|
925
933
|
free_amount=free_amount,
|
|
926
934
|
reward_amount=reward_amount,
|
|
927
935
|
permanent_amount=permanent_amount,
|
|
936
|
+
agent_wallet_address=agent_wallet_address,
|
|
928
937
|
)
|
|
929
938
|
session.add(event)
|
|
930
939
|
await session.flush()
|
|
@@ -1268,6 +1277,10 @@ async def expense_skill(
|
|
|
1268
1277
|
skill_cost_info.fee_dev_amount - fee_dev_free_amount - fee_dev_reward_amount
|
|
1269
1278
|
).quantize(FOURPLACES, rounding=ROUND_HALF_UP)
|
|
1270
1279
|
|
|
1280
|
+
# Get agent wallet address
|
|
1281
|
+
agent_data = await AgentData.get(agent.id)
|
|
1282
|
+
agent_wallet_address = agent_data.evm_wallet_address if agent_data else None
|
|
1283
|
+
|
|
1271
1284
|
event = CreditEventTable(
|
|
1272
1285
|
id=event_id,
|
|
1273
1286
|
account_id=user_account.id,
|
|
@@ -1309,6 +1322,7 @@ async def expense_skill(
|
|
|
1309
1322
|
free_amount=free_amount,
|
|
1310
1323
|
reward_amount=reward_amount,
|
|
1311
1324
|
permanent_amount=permanent_amount,
|
|
1325
|
+
agent_wallet_address=agent_wallet_address,
|
|
1312
1326
|
)
|
|
1313
1327
|
session.add(event)
|
|
1314
1328
|
await session.flush()
|
|
@@ -1452,6 +1466,7 @@ async def refill_free_credits_for_account(
|
|
|
1452
1466
|
free_amount=amount_to_add, # Set free_amount since this is a free credit refill
|
|
1453
1467
|
reward_amount=Decimal("0"), # No reward credits involved
|
|
1454
1468
|
permanent_amount=Decimal("0"), # No permanent credits involved
|
|
1469
|
+
agent_wallet_address=None, # No agent involved in refill
|
|
1455
1470
|
note=f"Hourly free credits refill of {amount_to_add}",
|
|
1456
1471
|
)
|
|
1457
1472
|
session.add(event)
|
|
@@ -1675,6 +1690,10 @@ async def expense_summarize(
|
|
|
1675
1690
|
fee_agent_amount - fee_agent_free_amount - fee_agent_reward_amount
|
|
1676
1691
|
).quantize(FOURPLACES, rounding=ROUND_HALF_UP)
|
|
1677
1692
|
|
|
1693
|
+
# Get agent wallet address
|
|
1694
|
+
agent_data = await AgentData.get(agent.id)
|
|
1695
|
+
agent_wallet_address = agent_data.evm_wallet_address if agent_data else None
|
|
1696
|
+
|
|
1678
1697
|
event = CreditEventTable(
|
|
1679
1698
|
id=event_id,
|
|
1680
1699
|
account_id=user_account.id,
|
|
@@ -1707,6 +1726,7 @@ async def expense_summarize(
|
|
|
1707
1726
|
free_amount=free_amount,
|
|
1708
1727
|
reward_amount=reward_amount,
|
|
1709
1728
|
permanent_amount=permanent_amount,
|
|
1729
|
+
agent_wallet_address=agent_wallet_address,
|
|
1710
1730
|
)
|
|
1711
1731
|
session.add(event)
|
|
1712
1732
|
|
|
@@ -448,9 +448,9 @@ class ChatMessage(ChatMessageCreate):
|
|
|
448
448
|
return resp
|
|
449
449
|
|
|
450
450
|
@classmethod
|
|
451
|
-
async def get(cls,
|
|
451
|
+
async def get(cls, message_id: str) -> Optional["ChatMessage"]:
|
|
452
452
|
async with get_session() as db:
|
|
453
|
-
raw = await db.get(ChatMessageTable,
|
|
453
|
+
raw = await db.get(ChatMessageTable, message_id)
|
|
454
454
|
if raw:
|
|
455
455
|
return ChatMessage.model_validate(raw)
|
|
456
456
|
return None
|
|
@@ -508,6 +508,7 @@ class CreditAccount(BaseModel):
|
|
|
508
508
|
free_amount=free_quota, # Set free_amount since this is a free credit refill
|
|
509
509
|
reward_amount=Decimal("0"), # No reward credits involved
|
|
510
510
|
permanent_amount=Decimal("0"), # No permanent credits involved
|
|
511
|
+
agent_wallet_address=None, # No agent involved in initial refill
|
|
511
512
|
note="Initial refill",
|
|
512
513
|
)
|
|
513
514
|
session.add(event)
|
|
@@ -712,6 +713,10 @@ class CreditEventTable(Base):
|
|
|
712
713
|
String,
|
|
713
714
|
nullable=True,
|
|
714
715
|
)
|
|
716
|
+
agent_wallet_address = Column(
|
|
717
|
+
String,
|
|
718
|
+
nullable=True,
|
|
719
|
+
)
|
|
715
720
|
start_message_id = Column(
|
|
716
721
|
String,
|
|
717
722
|
nullable=True,
|
|
@@ -896,6 +901,10 @@ class CreditEvent(BaseModel):
|
|
|
896
901
|
agent_id: Annotated[
|
|
897
902
|
Optional[str], Field(None, description="ID of the agent if applicable")
|
|
898
903
|
]
|
|
904
|
+
agent_wallet_address: Annotated[
|
|
905
|
+
Optional[str],
|
|
906
|
+
Field(None, description="Wallet address of the agent if applicable"),
|
|
907
|
+
]
|
|
899
908
|
start_message_id: Annotated[
|
|
900
909
|
Optional[str],
|
|
901
910
|
Field(None, description="ID of the starting message if applicable"),
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
"type": "string",
|
|
134
134
|
"title": "Supabase URL",
|
|
135
135
|
"description": "Your Supabase project URL (e.g., https://your-project.supabase.co). You can find it in Project Settings -> Data API",
|
|
136
|
-
"x-link": "https://supabase.com/",
|
|
136
|
+
"x-link": "[Create Your DB](https://supabase.com/)",
|
|
137
137
|
"format": "uri"
|
|
138
138
|
},
|
|
139
139
|
"supabase_key": {
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"public_write_tables": {
|
|
154
154
|
"type": "string",
|
|
155
155
|
"title": "Public Write Tables",
|
|
156
|
-
"description": "Add tables separated by commas. When insert, update, upsert, or delete operations are enabled for public use, only tables from this list can be used. This list does not restrict the skills executed by the owner or in autonomous chat."
|
|
156
|
+
"description": "Add tables separated by commas. When insert, update, upsert, or delete operations are enabled for public use, only tables from this list can be used. This list does not restrict the skills executed by the owner or in autonomous chat. You can use either this option or public_key to secure your public access."
|
|
157
157
|
}
|
|
158
158
|
},
|
|
159
159
|
"required": [
|
|
@@ -32,7 +32,7 @@ class ReadAgentApiKey(SystemBaseTool):
|
|
|
32
32
|
"Make sure to tell the user the base URL and endpoint. "
|
|
33
33
|
"Tell user in OpenAI sdk or Desktop client like Cherry Studio, input the base URL and API key. "
|
|
34
34
|
"Always use markdown code block to wrap the API keys, base URL, and endpoint. "
|
|
35
|
-
"Tell user to check more doc in https://github.com/crestalnetwork/intentkit/blob/main/docs/
|
|
35
|
+
"Tell user to check more doc in https://github.com/crestalnetwork/intentkit/blob/main/docs/agent_api.md "
|
|
36
36
|
)
|
|
37
37
|
args_schema = ReadAgentApiKeyInput
|
|
38
38
|
|
|
@@ -34,7 +34,7 @@ class RegenerateAgentApiKey(SystemBaseTool):
|
|
|
34
34
|
"Make sure to tell the user the base URL and endpoint. "
|
|
35
35
|
"Tell user in OpenAI sdk or Desktop client like Cherry Studio, input the base URL and API key. "
|
|
36
36
|
"Always use markdown code block to wrap the API keys, base URL, and endpoint. "
|
|
37
|
-
"Tell user to check more doc in https://github.com/crestalnetwork/intentkit/blob/main/docs/
|
|
37
|
+
"Tell user to check more doc in https://github.com/crestalnetwork/intentkit/blob/main/docs/agent_api.md "
|
|
38
38
|
)
|
|
39
39
|
args_schema = RegenerateAgentApiKeyInput
|
|
40
40
|
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from typing import Optional
|
|
3
|
-
|
|
4
|
-
import jwt
|
|
5
|
-
from fastapi import Depends, HTTPException, Request
|
|
6
|
-
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
|
|
7
|
-
|
|
8
|
-
logger = logging.getLogger(__name__)
|
|
9
|
-
|
|
10
|
-
security = HTTPBearer(auto_error=False)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def create_jwt_middleware(enable: bool, jwt_secret: str):
|
|
14
|
-
"""Create a JWT verification middleware with configurable enable flag and secret.
|
|
15
|
-
|
|
16
|
-
Args:
|
|
17
|
-
enable: Whether to enable JWT verification
|
|
18
|
-
jwt_secret: Secret key for JWT verification
|
|
19
|
-
|
|
20
|
-
Returns:
|
|
21
|
-
A middleware function that can be used with FastAPI dependencies
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
async def verify_jwt(
|
|
25
|
-
request: Request,
|
|
26
|
-
credentials: Optional[HTTPAuthorizationCredentials] = Depends(security),
|
|
27
|
-
) -> str:
|
|
28
|
-
"""Verify JWT token from Authorization header and return the subject claim.
|
|
29
|
-
|
|
30
|
-
Returns:
|
|
31
|
-
str: The subject claim from the JWT token
|
|
32
|
-
"""
|
|
33
|
-
host = request.headers.get("host", "").split(":")[0]
|
|
34
|
-
logger.debug(
|
|
35
|
-
f"verify_jwt: enable={enable}, credentials={credentials}, host={host}"
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
if (
|
|
39
|
-
not enable
|
|
40
|
-
or host == "localhost"
|
|
41
|
-
or host == "127.0.0.1"
|
|
42
|
-
or host == "intent-api"
|
|
43
|
-
or host == "intent-readonly"
|
|
44
|
-
or host == "intent-singleton"
|
|
45
|
-
):
|
|
46
|
-
return ""
|
|
47
|
-
|
|
48
|
-
if not credentials:
|
|
49
|
-
raise HTTPException(
|
|
50
|
-
status_code=401, detail="Missing authentication credentials"
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
try:
|
|
54
|
-
payload = jwt.decode(
|
|
55
|
-
credentials.credentials, jwt_secret, algorithms=["HS256"]
|
|
56
|
-
)
|
|
57
|
-
return payload.get("sub", "")
|
|
58
|
-
except jwt.InvalidTokenError:
|
|
59
|
-
raise HTTPException(status_code=401, detail="Invalid authentication token")
|
|
60
|
-
|
|
61
|
-
return verify_jwt
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|