intentkit 0.6.0.dev14__tar.gz → 0.6.0.dev16__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.0.dev14 → intentkit-0.6.0.dev16}/PKG-INFO +1 -1
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/__init__.py +1 -1
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/agent_schema.json +8 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/pyproject.toml +1 -1
- intentkit-0.6.0.dev16/skills/http/README.md +78 -0
- intentkit-0.6.0.dev16/skills/http/__init__.py +100 -0
- intentkit-0.6.0.dev16/skills/http/base.py +21 -0
- intentkit-0.6.0.dev16/skills/http/get.py +96 -0
- intentkit-0.6.0.dev16/skills/http/http.svg +15 -0
- intentkit-0.6.0.dev16/skills/http/post.py +113 -0
- intentkit-0.6.0.dev16/skills/http/put.py +113 -0
- intentkit-0.6.0.dev16/skills/http/schema.json +80 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/schema.json +7 -5
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/.gitignore +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/LICENSE +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/MANIFEST.in +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/abstracts/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/abstracts/agent.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/abstracts/api.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/abstracts/engine.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/abstracts/exception.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/abstracts/graph.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/abstracts/skill.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/abstracts/twitter.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/clients/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/clients/cdp.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/clients/twitter.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/config/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/config/config.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/agent.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/api.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/client.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/credit.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/engine.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/node.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/prompt.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/core/skill.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/agent.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/agent_data.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/app_setting.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/chat.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/conversation.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/credit.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/db.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/db_mig.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/generator.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/llm.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/redis.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/skill.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/models/user.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/acolyt/ask.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/acolyt/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/acolyt/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/aixbt/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/aixbt/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/aixbt/projects.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/aixbt/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/allora/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/allora/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/allora/price.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/allora/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/carv/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/carv/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/carv/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/carv/carv.webp +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/carv/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cdp/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cdp/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cdp/cdp.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cdp/get_balance.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cdp/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/chainlist/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/chainlist/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/chainlist/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/common/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/common/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/common/common.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/common/current_time.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/common/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dapplooker/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dapplooker/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/api.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dexscreener/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/elfa/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/elfa/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/elfa/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/elfa/mention.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/elfa/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/elfa/stats.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/elfa/tokens.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/abi/route.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/best_yield.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/enso.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/networks.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/prices.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/route.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/tokens.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/enso/wallet.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/clear.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/query.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/firecrawl/utils.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/github/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/github/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/github/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/github/github.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/github/github_search.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/github/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/heurist.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/heurist/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/lifi/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/lifi/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/lifi/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/lifi/lifi.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/lifi/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/lifi/token_execute.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/lifi/token_quote.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/lifi/utils.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/api.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/moralis.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/nation/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/nation/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/nation/nation.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/nation/nft_check.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/nation/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/openai/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/openai/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/openai/dalle_image_generation.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/openai/gpt_image_generation.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/openai/gpt_image_to_image.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/openai/openai.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/openai/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/constants.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/skills.toml +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/slack/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/slack/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/slack/get_channel.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/slack/get_message.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/slack/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/slack/send_message.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/slack/slack.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/delete_data.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/insert_data.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/supabase.svg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/update_data.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/system/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/system/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/system/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/system/system.svg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/tavily/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/tavily/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/tavily/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/tavily/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/constants.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/moralis.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/token_analytics.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/token_price.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/token/token_search.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/follow_user.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/retweet.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/twitter/twitter.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_audio/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_audio/input.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/api.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/config.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/utils.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/README.md +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/base.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/__init__.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/chain.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/error.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/logging.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/middleware.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/random.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/s3.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/slack_alert.py +0 -0
- {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev16}/utils/tx.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.6.0.
|
|
3
|
+
Version: 0.6.0.dev16
|
|
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
|
|
@@ -535,6 +535,10 @@
|
|
|
535
535
|
"title": "System",
|
|
536
536
|
"$ref": "../skills/system/schema.json"
|
|
537
537
|
},
|
|
538
|
+
"http": {
|
|
539
|
+
"title": "HTTP Client",
|
|
540
|
+
"$ref": "../skills/http/schema.json"
|
|
541
|
+
},
|
|
538
542
|
"web_scraper": {
|
|
539
543
|
"title": "Web Scraper & Content Indexing",
|
|
540
544
|
"$ref": "../skills/web_scraper/schema.json"
|
|
@@ -567,6 +571,10 @@
|
|
|
567
571
|
"title": "Slack",
|
|
568
572
|
"$ref": "../skills/slack/schema.json"
|
|
569
573
|
},
|
|
574
|
+
"supabase": {
|
|
575
|
+
"title": "Supabase",
|
|
576
|
+
"$ref": "../skills/supabase/schema.json"
|
|
577
|
+
},
|
|
570
578
|
"venice_audio": {
|
|
571
579
|
"title": "Venice Audio",
|
|
572
580
|
"$ref": "../skills/venice_audio/schema.json"
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# HTTP Client Skills
|
|
2
|
+
|
|
3
|
+
This skill category provides HTTP client functionality for making web requests using the httpx async client library.
|
|
4
|
+
|
|
5
|
+
## Available Skills
|
|
6
|
+
|
|
7
|
+
### http_get
|
|
8
|
+
Make HTTP GET requests to fetch data from web APIs and websites.
|
|
9
|
+
|
|
10
|
+
**Parameters:**
|
|
11
|
+
- `url` (string, required): The URL to send the GET request to
|
|
12
|
+
- `headers` (dict, optional): Custom headers to include in the request
|
|
13
|
+
- `params` (dict, optional): Query parameters to include in the request
|
|
14
|
+
- `timeout` (float, optional): Request timeout in seconds (default: 30)
|
|
15
|
+
|
|
16
|
+
**Example usage:**
|
|
17
|
+
```
|
|
18
|
+
Fetch data from https://api.example.com/users with timeout of 10 seconds
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### http_post
|
|
22
|
+
Make HTTP POST requests to send data to web APIs and submit forms.
|
|
23
|
+
|
|
24
|
+
**Parameters:**
|
|
25
|
+
- `url` (string, required): The URL to send the POST request to
|
|
26
|
+
- `data` (dict or string, optional): The data to send in the request body
|
|
27
|
+
- `headers` (dict, optional): Custom headers to include in the request
|
|
28
|
+
- `params` (dict, optional): Query parameters to include in the request
|
|
29
|
+
- `timeout` (float, optional): Request timeout in seconds (default: 30)
|
|
30
|
+
|
|
31
|
+
**Example usage:**
|
|
32
|
+
```
|
|
33
|
+
Send a POST request to https://api.example.com/users with JSON data {"name": "John", "email": "john@example.com"}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### http_put
|
|
37
|
+
Make HTTP PUT requests to update or replace data on web APIs.
|
|
38
|
+
|
|
39
|
+
**Parameters:**
|
|
40
|
+
- `url` (string, required): The URL to send the PUT request to
|
|
41
|
+
- `data` (dict or string, optional): The data to send in the request body
|
|
42
|
+
- `headers` (dict, optional): Custom headers to include in the request
|
|
43
|
+
- `params` (dict, optional): Query parameters to include in the request
|
|
44
|
+
- `timeout` (float, optional): Request timeout in seconds (default: 30)
|
|
45
|
+
|
|
46
|
+
**Example usage:**
|
|
47
|
+
```
|
|
48
|
+
Update user data at https://api.example.com/users/123 with {"name": "Jane Doe"}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Features
|
|
52
|
+
|
|
53
|
+
- **Async Support**: All HTTP operations are asynchronous using httpx
|
|
54
|
+
- **Automatic JSON Handling**: Dictionary data is automatically sent as JSON with proper Content-Type headers
|
|
55
|
+
- **Error Handling**: Comprehensive error handling for timeouts, HTTP errors, and connection issues
|
|
56
|
+
- **Flexible Data Types**: Support for both JSON (dict) and raw string data in POST/PUT requests
|
|
57
|
+
- **Custom Headers**: Support for custom headers in all request types
|
|
58
|
+
- **Query Parameters**: Support for URL query parameters
|
|
59
|
+
- **Configurable Timeouts**: Customizable request timeouts
|
|
60
|
+
|
|
61
|
+
## Configuration
|
|
62
|
+
|
|
63
|
+
Each skill can be configured with one of three states:
|
|
64
|
+
- `disabled`: Skill is not available
|
|
65
|
+
- `public`: Available to both agent owner and all users
|
|
66
|
+
- `private`: Available only to the agent owner
|
|
67
|
+
|
|
68
|
+
## Natural Language Usage
|
|
69
|
+
|
|
70
|
+
These skills are designed to work seamlessly with natural language instructions:
|
|
71
|
+
|
|
72
|
+
- "Get the weather data from the API"
|
|
73
|
+
- "Send a POST request to create a new user"
|
|
74
|
+
- "Update the user profile using PUT request"
|
|
75
|
+
- "Fetch the latest news from the RSS feed"
|
|
76
|
+
- "Submit the form data to the webhook"
|
|
77
|
+
|
|
78
|
+
The AI agent will automatically select the appropriate HTTP method and construct the proper request based on your natural language description.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"""HTTP client skills."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from typing import TypedDict
|
|
5
|
+
|
|
6
|
+
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
|
+
from intentkit.skills.base import SkillConfig, SkillState
|
|
8
|
+
from intentkit.skills.http.base import HttpBaseTool
|
|
9
|
+
from intentkit.skills.http.get import HttpGet
|
|
10
|
+
from intentkit.skills.http.post import HttpPost
|
|
11
|
+
from intentkit.skills.http.put import HttpPut
|
|
12
|
+
|
|
13
|
+
# Cache skills at the system level, because they are stateless
|
|
14
|
+
_cache: dict[str, HttpBaseTool] = {}
|
|
15
|
+
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class SkillStates(TypedDict):
|
|
20
|
+
"""Type definition for HTTP skill states."""
|
|
21
|
+
|
|
22
|
+
http_get: SkillState
|
|
23
|
+
http_post: SkillState
|
|
24
|
+
http_put: SkillState
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class Config(SkillConfig):
|
|
28
|
+
"""Configuration for HTTP client skills."""
|
|
29
|
+
|
|
30
|
+
states: SkillStates
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
async def get_skills(
|
|
34
|
+
config: "Config",
|
|
35
|
+
is_private: bool,
|
|
36
|
+
store: SkillStoreABC,
|
|
37
|
+
**_,
|
|
38
|
+
) -> list[HttpBaseTool]:
|
|
39
|
+
"""Get all HTTP client skills.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
config: The configuration for HTTP client skills.
|
|
43
|
+
is_private: Whether to include private skills.
|
|
44
|
+
store: The skill store for persisting data.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
A list of HTTP client skills.
|
|
48
|
+
"""
|
|
49
|
+
available_skills = []
|
|
50
|
+
|
|
51
|
+
# Include skills based on their state
|
|
52
|
+
for skill_name, state in config["states"].items():
|
|
53
|
+
if state == "disabled":
|
|
54
|
+
continue
|
|
55
|
+
elif state == "public" or (state == "private" and is_private):
|
|
56
|
+
available_skills.append(skill_name)
|
|
57
|
+
|
|
58
|
+
# Get each skill using the cached getter
|
|
59
|
+
result = []
|
|
60
|
+
for name in available_skills:
|
|
61
|
+
skill = get_http_skill(name, store)
|
|
62
|
+
if skill:
|
|
63
|
+
result.append(skill)
|
|
64
|
+
return result
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def get_http_skill(
|
|
68
|
+
name: str,
|
|
69
|
+
store: SkillStoreABC,
|
|
70
|
+
) -> HttpBaseTool:
|
|
71
|
+
"""Get an HTTP client skill by name.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
name: The name of the skill to get
|
|
75
|
+
store: The skill store for persisting data
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
The requested HTTP client skill
|
|
79
|
+
"""
|
|
80
|
+
if name == "http_get":
|
|
81
|
+
if name not in _cache:
|
|
82
|
+
_cache[name] = HttpGet(
|
|
83
|
+
skill_store=store,
|
|
84
|
+
)
|
|
85
|
+
return _cache[name]
|
|
86
|
+
elif name == "http_post":
|
|
87
|
+
if name not in _cache:
|
|
88
|
+
_cache[name] = HttpPost(
|
|
89
|
+
skill_store=store,
|
|
90
|
+
)
|
|
91
|
+
return _cache[name]
|
|
92
|
+
elif name == "http_put":
|
|
93
|
+
if name not in _cache:
|
|
94
|
+
_cache[name] = HttpPut(
|
|
95
|
+
skill_store=store,
|
|
96
|
+
)
|
|
97
|
+
return _cache[name]
|
|
98
|
+
else:
|
|
99
|
+
logger.warning(f"Unknown HTTP skill: {name}")
|
|
100
|
+
return None
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from typing import Type
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
from intentkit.abstracts.skill import SkillStoreABC
|
|
6
|
+
from intentkit.skills.base import IntentKitSkill
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class HttpBaseTool(IntentKitSkill):
|
|
10
|
+
"""Base class for HTTP client tools."""
|
|
11
|
+
|
|
12
|
+
name: str = Field(description="The name of the tool")
|
|
13
|
+
description: str = Field(description="A description of what the tool does")
|
|
14
|
+
args_schema: Type[BaseModel]
|
|
15
|
+
skill_store: SkillStoreABC = Field(
|
|
16
|
+
description="The skill store for persisting data"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def category(self) -> str:
|
|
21
|
+
return "http"
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any, Dict, Optional, Type
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
from langchain_core.runnables import RunnableConfig
|
|
6
|
+
from pydantic import BaseModel, Field
|
|
7
|
+
|
|
8
|
+
from intentkit.skills.http.base import HttpBaseTool
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class HttpGetInput(BaseModel):
|
|
14
|
+
"""Input for HTTP GET request."""
|
|
15
|
+
|
|
16
|
+
url: str = Field(description="The URL to send the GET request to")
|
|
17
|
+
headers: Optional[Dict[str, str]] = Field(
|
|
18
|
+
description="Optional headers to include in the request",
|
|
19
|
+
default=None,
|
|
20
|
+
)
|
|
21
|
+
params: Optional[Dict[str, Any]] = Field(
|
|
22
|
+
description="Optional query parameters to include in the request",
|
|
23
|
+
default=None,
|
|
24
|
+
)
|
|
25
|
+
timeout: Optional[float] = Field(
|
|
26
|
+
description="Request timeout in seconds (default: 30)",
|
|
27
|
+
default=30.0,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class HttpGet(HttpBaseTool):
|
|
32
|
+
"""Tool for making HTTP GET requests.
|
|
33
|
+
|
|
34
|
+
This tool allows you to make HTTP GET requests to any URL with optional
|
|
35
|
+
headers and query parameters. It returns the response content as a string.
|
|
36
|
+
|
|
37
|
+
Attributes:
|
|
38
|
+
name: The name of the tool.
|
|
39
|
+
description: A description of what the tool does.
|
|
40
|
+
args_schema: The schema for the tool's input arguments.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
name: str = "http_get"
|
|
44
|
+
description: str = (
|
|
45
|
+
"Make an HTTP GET request to a specified URL. "
|
|
46
|
+
"You can include custom headers and query parameters. "
|
|
47
|
+
"Returns the response content as text. "
|
|
48
|
+
"Use this when you need to fetch data from web APIs or websites."
|
|
49
|
+
)
|
|
50
|
+
args_schema: Type[BaseModel] = HttpGetInput
|
|
51
|
+
|
|
52
|
+
async def _arun(
|
|
53
|
+
self,
|
|
54
|
+
url: str,
|
|
55
|
+
headers: Optional[Dict[str, str]] = None,
|
|
56
|
+
params: Optional[Dict[str, Any]] = None,
|
|
57
|
+
timeout: float = 30.0,
|
|
58
|
+
config: RunnableConfig = None,
|
|
59
|
+
**kwargs,
|
|
60
|
+
) -> str:
|
|
61
|
+
"""Implementation of the HTTP GET request.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
url: The URL to send the GET request to.
|
|
65
|
+
headers: Optional headers to include in the request.
|
|
66
|
+
params: Optional query parameters to include in the request.
|
|
67
|
+
timeout: Request timeout in seconds.
|
|
68
|
+
config: The runnable config (unused but required by interface).
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
str: The response content as text, or error message if request fails.
|
|
72
|
+
"""
|
|
73
|
+
try:
|
|
74
|
+
async with httpx.AsyncClient() as client:
|
|
75
|
+
response = await client.get(
|
|
76
|
+
url=url,
|
|
77
|
+
headers=headers,
|
|
78
|
+
params=params,
|
|
79
|
+
timeout=timeout,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
# Raise an exception for bad status codes
|
|
83
|
+
response.raise_for_status()
|
|
84
|
+
|
|
85
|
+
# Return response content
|
|
86
|
+
return f"Status: {response.status_code}\nContent: {response.text}"
|
|
87
|
+
|
|
88
|
+
except httpx.TimeoutException:
|
|
89
|
+
return f"Error: Request to {url} timed out after {timeout} seconds"
|
|
90
|
+
except httpx.HTTPStatusError as e:
|
|
91
|
+
return f"Error: HTTP {e.response.status_code} - {e.response.text}"
|
|
92
|
+
except httpx.RequestError as e:
|
|
93
|
+
return f"Error: Failed to connect to {url} - {str(e)}"
|
|
94
|
+
except Exception as e:
|
|
95
|
+
logger.error(f"Unexpected error in HTTP GET request: {e}")
|
|
96
|
+
return f"Error: Unexpected error occurred - {str(e)}"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
|
|
2
|
+
<!-- Background -->
|
|
3
|
+
<rect width="100" height="100" fill="#2563eb" rx="15"/>
|
|
4
|
+
|
|
5
|
+
<!-- HTTP text -->
|
|
6
|
+
<text x="50" y="35" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="white" text-anchor="middle">HTTP</text>
|
|
7
|
+
|
|
8
|
+
<!-- Arrow indicating request/response -->
|
|
9
|
+
<path d="M20 50 L35 45 L35 48 L65 48 L65 45 L80 50 L65 55 L65 52 L35 52 L35 55 Z" fill="white"/>
|
|
10
|
+
|
|
11
|
+
<!-- Globe/network icon -->
|
|
12
|
+
<circle cx="50" cy="75" r="12" fill="none" stroke="white" stroke-width="2"/>
|
|
13
|
+
<path d="M38 75 Q50 65 62 75 M38 75 Q50 85 62 75" fill="none" stroke="white" stroke-width="1.5"/>
|
|
14
|
+
<line x1="50" y1="63" x2="50" y2="87" stroke="white" stroke-width="1.5"/>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any, Dict, Optional, Type, Union
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
from langchain_core.runnables import RunnableConfig
|
|
6
|
+
from pydantic import BaseModel, Field
|
|
7
|
+
|
|
8
|
+
from intentkit.skills.http.base import HttpBaseTool
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class HttpPostInput(BaseModel):
|
|
14
|
+
"""Input for HTTP POST request."""
|
|
15
|
+
|
|
16
|
+
url: str = Field(description="The URL to send the POST request to")
|
|
17
|
+
data: Optional[Union[Dict[str, Any], str]] = Field(
|
|
18
|
+
description="The data to send in the request body. Can be a dictionary (will be sent as JSON) or a string",
|
|
19
|
+
default=None,
|
|
20
|
+
)
|
|
21
|
+
headers: Optional[Dict[str, str]] = Field(
|
|
22
|
+
description="Optional headers to include in the request",
|
|
23
|
+
default=None,
|
|
24
|
+
)
|
|
25
|
+
params: Optional[Dict[str, Any]] = Field(
|
|
26
|
+
description="Optional query parameters to include in the request",
|
|
27
|
+
default=None,
|
|
28
|
+
)
|
|
29
|
+
timeout: Optional[float] = Field(
|
|
30
|
+
description="Request timeout in seconds (default: 30)",
|
|
31
|
+
default=30.0,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class HttpPost(HttpBaseTool):
|
|
36
|
+
"""Tool for making HTTP POST requests.
|
|
37
|
+
|
|
38
|
+
This tool allows you to make HTTP POST requests to any URL with optional
|
|
39
|
+
headers, query parameters, and request body data. It returns the response content as a string.
|
|
40
|
+
|
|
41
|
+
Attributes:
|
|
42
|
+
name: The name of the tool.
|
|
43
|
+
description: A description of what the tool does.
|
|
44
|
+
args_schema: The schema for the tool's input arguments.
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
name: str = "http_post"
|
|
48
|
+
description: str = (
|
|
49
|
+
"Make an HTTP POST request to a specified URL. "
|
|
50
|
+
"You can include custom headers, query parameters, and request body data. "
|
|
51
|
+
"Data can be provided as a dictionary (sent as JSON) or as a string. "
|
|
52
|
+
"Returns the response content as text. "
|
|
53
|
+
"Use this when you need to send data to web APIs or submit forms."
|
|
54
|
+
)
|
|
55
|
+
args_schema: Type[BaseModel] = HttpPostInput
|
|
56
|
+
|
|
57
|
+
async def _arun(
|
|
58
|
+
self,
|
|
59
|
+
url: str,
|
|
60
|
+
data: Optional[Union[Dict[str, Any], str]] = None,
|
|
61
|
+
headers: Optional[Dict[str, str]] = None,
|
|
62
|
+
params: Optional[Dict[str, Any]] = None,
|
|
63
|
+
timeout: float = 30.0,
|
|
64
|
+
config: RunnableConfig = None,
|
|
65
|
+
**kwargs,
|
|
66
|
+
) -> str:
|
|
67
|
+
"""Implementation of the HTTP POST request.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
url: The URL to send the POST request to.
|
|
71
|
+
data: The data to send in the request body.
|
|
72
|
+
headers: Optional headers to include in the request.
|
|
73
|
+
params: Optional query parameters to include in the request.
|
|
74
|
+
timeout: Request timeout in seconds.
|
|
75
|
+
config: The runnable config (unused but required by interface).
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
str: The response content as text, or error message if request fails.
|
|
79
|
+
"""
|
|
80
|
+
try:
|
|
81
|
+
# Prepare headers
|
|
82
|
+
request_headers = headers or {}
|
|
83
|
+
|
|
84
|
+
# If data is a dictionary, send as JSON
|
|
85
|
+
if isinstance(data, dict):
|
|
86
|
+
if "content-type" not in {k.lower() for k in request_headers.keys()}:
|
|
87
|
+
request_headers["Content-Type"] = "application/json"
|
|
88
|
+
|
|
89
|
+
async with httpx.AsyncClient() as client:
|
|
90
|
+
response = await client.post(
|
|
91
|
+
url=url,
|
|
92
|
+
json=data if isinstance(data, dict) else None,
|
|
93
|
+
content=data if isinstance(data, str) else None,
|
|
94
|
+
headers=request_headers,
|
|
95
|
+
params=params,
|
|
96
|
+
timeout=timeout,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
# Raise an exception for bad status codes
|
|
100
|
+
response.raise_for_status()
|
|
101
|
+
|
|
102
|
+
# Return response content
|
|
103
|
+
return f"Status: {response.status_code}\nContent: {response.text}"
|
|
104
|
+
|
|
105
|
+
except httpx.TimeoutException:
|
|
106
|
+
return f"Error: Request to {url} timed out after {timeout} seconds"
|
|
107
|
+
except httpx.HTTPStatusError as e:
|
|
108
|
+
return f"Error: HTTP {e.response.status_code} - {e.response.text}"
|
|
109
|
+
except httpx.RequestError as e:
|
|
110
|
+
return f"Error: Failed to connect to {url} - {str(e)}"
|
|
111
|
+
except Exception as e:
|
|
112
|
+
logger.error(f"Unexpected error in HTTP POST request: {e}")
|
|
113
|
+
return f"Error: Unexpected error occurred - {str(e)}"
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any, Dict, Optional, Type, Union
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
from langchain_core.runnables import RunnableConfig
|
|
6
|
+
from pydantic import BaseModel, Field
|
|
7
|
+
|
|
8
|
+
from intentkit.skills.http.base import HttpBaseTool
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class HttpPutInput(BaseModel):
|
|
14
|
+
"""Input for HTTP PUT request."""
|
|
15
|
+
|
|
16
|
+
url: str = Field(description="The URL to send the PUT request to")
|
|
17
|
+
data: Optional[Union[Dict[str, Any], str]] = Field(
|
|
18
|
+
description="The data to send in the request body. Can be a dictionary (will be sent as JSON) or a string",
|
|
19
|
+
default=None,
|
|
20
|
+
)
|
|
21
|
+
headers: Optional[Dict[str, str]] = Field(
|
|
22
|
+
description="Optional headers to include in the request",
|
|
23
|
+
default=None,
|
|
24
|
+
)
|
|
25
|
+
params: Optional[Dict[str, Any]] = Field(
|
|
26
|
+
description="Optional query parameters to include in the request",
|
|
27
|
+
default=None,
|
|
28
|
+
)
|
|
29
|
+
timeout: Optional[float] = Field(
|
|
30
|
+
description="Request timeout in seconds (default: 30)",
|
|
31
|
+
default=30.0,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class HttpPut(HttpBaseTool):
|
|
36
|
+
"""Tool for making HTTP PUT requests.
|
|
37
|
+
|
|
38
|
+
This tool allows you to make HTTP PUT requests to any URL with optional
|
|
39
|
+
headers, query parameters, and request body data. It returns the response content as a string.
|
|
40
|
+
|
|
41
|
+
Attributes:
|
|
42
|
+
name: The name of the tool.
|
|
43
|
+
description: A description of what the tool does.
|
|
44
|
+
args_schema: The schema for the tool's input arguments.
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
name: str = "http_put"
|
|
48
|
+
description: str = (
|
|
49
|
+
"Make an HTTP PUT request to a specified URL. "
|
|
50
|
+
"You can include custom headers, query parameters, and request body data. "
|
|
51
|
+
"Data can be provided as a dictionary (sent as JSON) or as a string. "
|
|
52
|
+
"Returns the response content as text. "
|
|
53
|
+
"Use this when you need to update or replace data on web APIs."
|
|
54
|
+
)
|
|
55
|
+
args_schema: Type[BaseModel] = HttpPutInput
|
|
56
|
+
|
|
57
|
+
async def _arun(
|
|
58
|
+
self,
|
|
59
|
+
url: str,
|
|
60
|
+
data: Optional[Union[Dict[str, Any], str]] = None,
|
|
61
|
+
headers: Optional[Dict[str, str]] = None,
|
|
62
|
+
params: Optional[Dict[str, Any]] = None,
|
|
63
|
+
timeout: float = 30.0,
|
|
64
|
+
config: RunnableConfig = None,
|
|
65
|
+
**kwargs,
|
|
66
|
+
) -> str:
|
|
67
|
+
"""Implementation of the HTTP PUT request.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
url: The URL to send the PUT request to.
|
|
71
|
+
data: The data to send in the request body.
|
|
72
|
+
headers: Optional headers to include in the request.
|
|
73
|
+
params: Optional query parameters to include in the request.
|
|
74
|
+
timeout: Request timeout in seconds.
|
|
75
|
+
config: The runnable config (unused but required by interface).
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
str: The response content as text, or error message if request fails.
|
|
79
|
+
"""
|
|
80
|
+
try:
|
|
81
|
+
# Prepare headers
|
|
82
|
+
request_headers = headers or {}
|
|
83
|
+
|
|
84
|
+
# If data is a dictionary, send as JSON
|
|
85
|
+
if isinstance(data, dict):
|
|
86
|
+
if "content-type" not in {k.lower() for k in request_headers.keys()}:
|
|
87
|
+
request_headers["Content-Type"] = "application/json"
|
|
88
|
+
|
|
89
|
+
async with httpx.AsyncClient() as client:
|
|
90
|
+
response = await client.put(
|
|
91
|
+
url=url,
|
|
92
|
+
json=data if isinstance(data, dict) else None,
|
|
93
|
+
content=data if isinstance(data, str) else None,
|
|
94
|
+
headers=request_headers,
|
|
95
|
+
params=params,
|
|
96
|
+
timeout=timeout,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
# Raise an exception for bad status codes
|
|
100
|
+
response.raise_for_status()
|
|
101
|
+
|
|
102
|
+
# Return response content
|
|
103
|
+
return f"Status: {response.status_code}\nContent: {response.text}"
|
|
104
|
+
|
|
105
|
+
except httpx.TimeoutException:
|
|
106
|
+
return f"Error: Request to {url} timed out after {timeout} seconds"
|
|
107
|
+
except httpx.HTTPStatusError as e:
|
|
108
|
+
return f"Error: HTTP {e.response.status_code} - {e.response.text}"
|
|
109
|
+
except httpx.RequestError as e:
|
|
110
|
+
return f"Error: Failed to connect to {url} - {str(e)}"
|
|
111
|
+
except Exception as e:
|
|
112
|
+
logger.error(f"Unexpected error in HTTP PUT request: {e}")
|
|
113
|
+
return f"Error: Unexpected error occurred - {str(e)}"
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"title": "HTTP Client",
|
|
5
|
+
"description": "HTTP client skills for making web requests",
|
|
6
|
+
"x-icon": "https://ai.service.crestal.dev/skills/http/http.svg",
|
|
7
|
+
"x-tags": [
|
|
8
|
+
"HTTP",
|
|
9
|
+
"Web",
|
|
10
|
+
"API",
|
|
11
|
+
"Client"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"enabled": {
|
|
15
|
+
"type": "boolean",
|
|
16
|
+
"title": "Enabled",
|
|
17
|
+
"description": "Whether this skill is enabled",
|
|
18
|
+
"default": false
|
|
19
|
+
},
|
|
20
|
+
"states": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"properties": {
|
|
23
|
+
"http_get": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"title": "HTTP GET",
|
|
26
|
+
"enum": [
|
|
27
|
+
"disabled",
|
|
28
|
+
"public",
|
|
29
|
+
"private"
|
|
30
|
+
],
|
|
31
|
+
"x-enum-title": [
|
|
32
|
+
"Disabled",
|
|
33
|
+
"Agent Owner + All Users",
|
|
34
|
+
"Agent Owner Only"
|
|
35
|
+
],
|
|
36
|
+
"description": "Make HTTP GET requests to fetch data from web APIs and websites",
|
|
37
|
+
"default": "private"
|
|
38
|
+
},
|
|
39
|
+
"http_post": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"title": "HTTP POST",
|
|
42
|
+
"enum": [
|
|
43
|
+
"disabled",
|
|
44
|
+
"public",
|
|
45
|
+
"private"
|
|
46
|
+
],
|
|
47
|
+
"x-enum-title": [
|
|
48
|
+
"Disabled",
|
|
49
|
+
"Agent Owner + All Users",
|
|
50
|
+
"Agent Owner Only"
|
|
51
|
+
],
|
|
52
|
+
"description": "Make HTTP POST requests to send data to web APIs and submit forms",
|
|
53
|
+
"default": "private"
|
|
54
|
+
},
|
|
55
|
+
"http_put": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"title": "HTTP PUT",
|
|
58
|
+
"enum": [
|
|
59
|
+
"disabled",
|
|
60
|
+
"public",
|
|
61
|
+
"private"
|
|
62
|
+
],
|
|
63
|
+
"x-enum-title": [
|
|
64
|
+
"Disabled",
|
|
65
|
+
"Agent Owner + All Users",
|
|
66
|
+
"Agent Owner Only"
|
|
67
|
+
],
|
|
68
|
+
"description": "Make HTTP PUT requests to update or replace data on web APIs",
|
|
69
|
+
"default": "private"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"description": "States for each HTTP client skill (disabled, public, or private)"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"required": [
|
|
76
|
+
"states",
|
|
77
|
+
"enabled"
|
|
78
|
+
],
|
|
79
|
+
"additionalProperties": true
|
|
80
|
+
}
|