intentkit 0.6.6__tar.gz → 0.6.7.dev2__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.6 → intentkit-0.6.7.dev2}/PKG-INFO +1 -1
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/__init__.py +1 -1
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/abstracts/skill.py +42 -2
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/agent.py +204 -3
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/engine.py +0 -12
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/skill.py +48 -2
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/agent_data.py +30 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/app_setting.py +25 -1
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/credit.py +15 -5
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/pyproject.toml +1 -1
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/system/__init__.py +24 -0
- intentkit-0.6.7.dev2/skills/system/add_autonomous_task.py +91 -0
- intentkit-0.6.7.dev2/skills/system/delete_autonomous_task.py +56 -0
- intentkit-0.6.7.dev2/skills/system/list_autonomous_tasks.py +52 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/system/schema.json +42 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/.gitignore +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/LICENSE +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/MANIFEST.in +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/abstracts/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/abstracts/agent.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/abstracts/api.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/abstracts/engine.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/abstracts/exception.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/abstracts/graph.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/abstracts/twitter.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/clients/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/clients/cdp.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/clients/twitter.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/config/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/config/config.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/api.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/client.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/credit.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/node.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/core/prompt.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/agent.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/agent_schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/chat.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/conversation.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/db.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/db_mig.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/generator.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/llm.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/redis.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/skill.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/models/user.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/acolyt/ask.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/acolyt/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/acolyt/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/aixbt/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/aixbt/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/aixbt/projects.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/aixbt/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/allora/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/allora/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/allora/price.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/allora/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/carv/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/carv/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/carv/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/carv/carv.webp +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/carv/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cdp/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cdp/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cdp/cdp.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cdp/get_balance.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cdp/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cdp/swap.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/chainlist/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/chainlist/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/chainlist/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/common/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/common/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/common/common.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/common/current_time.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/common/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dapplooker/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dapplooker/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/api.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dexscreener/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/elfa/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/elfa/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/elfa/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/elfa/mention.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/elfa/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/elfa/stats.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/elfa/tokens.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/abi/route.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/best_yield.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/enso.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/networks.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/prices.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/route.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/tokens.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/enso/wallet.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/clear.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/query.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/firecrawl/utils.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/github/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/github/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/github/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/github/github.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/github/github_search.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/github/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/heurist.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/heurist/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/http/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/http/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/http/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/http/get.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/http/http.svg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/http/post.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/http/put.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/http/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/lifi/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/lifi/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/lifi/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/lifi/lifi.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/lifi/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/lifi/token_execute.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/lifi/token_quote.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/lifi/utils.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/api.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/moralis.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/nation/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/nation/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/nation/nation.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/nation/nft_check.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/nation/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/openai/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/openai/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/openai/dalle_image_generation.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/openai/gpt_image_generation.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/openai/gpt_image_to_image.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/openai/openai.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/openai/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/constants.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/skills.toml +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/slack/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/slack/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/slack/get_channel.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/slack/get_message.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/slack/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/slack/send_message.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/slack/slack.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/delete_data.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/insert_data.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/supabase.svg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/update_data.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/system/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/system/system.svg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/tavily/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/tavily/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/tavily/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/tavily/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/constants.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/moralis.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/token_analytics.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/token_price.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/token/token_search.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/follow_user.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/retweet.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/twitter/twitter.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_audio/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_audio/input.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/api.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/config.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/utils.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/README.md +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/base.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/utils/__init__.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/utils/chain.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/utils/error.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/utils/logging.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/utils/random.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/utils/s3.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/utils/slack_alert.py +0 -0
- {intentkit-0.6.6 → intentkit-0.6.7.dev2}/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.7.dev2
|
|
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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
|
-
from typing import Any, Dict, Optional
|
|
2
|
+
from typing import Any, Dict, List, Optional
|
|
3
3
|
|
|
4
|
-
from intentkit.models.agent import Agent
|
|
4
|
+
from intentkit.models.agent import Agent, AgentAutonomous
|
|
5
5
|
from intentkit.models.agent_data import AgentData, AgentQuota
|
|
6
6
|
|
|
7
7
|
|
|
@@ -139,3 +139,43 @@ class SkillStoreABC(ABC):
|
|
|
139
139
|
data: JSON data to store
|
|
140
140
|
"""
|
|
141
141
|
pass
|
|
142
|
+
|
|
143
|
+
@staticmethod
|
|
144
|
+
@abstractmethod
|
|
145
|
+
async def list_autonomous_tasks(agent_id: str) -> List[AgentAutonomous]:
|
|
146
|
+
"""List all autonomous tasks for an agent.
|
|
147
|
+
|
|
148
|
+
Args:
|
|
149
|
+
agent_id: ID of the agent
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
List[AgentAutonomous]: List of autonomous task configurations
|
|
153
|
+
"""
|
|
154
|
+
pass
|
|
155
|
+
|
|
156
|
+
@staticmethod
|
|
157
|
+
@abstractmethod
|
|
158
|
+
async def add_autonomous_task(
|
|
159
|
+
agent_id: str, task: AgentAutonomous
|
|
160
|
+
) -> AgentAutonomous:
|
|
161
|
+
"""Add a new autonomous task to an agent.
|
|
162
|
+
|
|
163
|
+
Args:
|
|
164
|
+
agent_id: ID of the agent
|
|
165
|
+
task: Autonomous task configuration
|
|
166
|
+
|
|
167
|
+
Returns:
|
|
168
|
+
AgentAutonomous: The created task
|
|
169
|
+
"""
|
|
170
|
+
pass
|
|
171
|
+
|
|
172
|
+
@staticmethod
|
|
173
|
+
@abstractmethod
|
|
174
|
+
async def delete_autonomous_task(agent_id: str, task_id: str) -> None:
|
|
175
|
+
"""Delete an autonomous task from an agent.
|
|
176
|
+
|
|
177
|
+
Args:
|
|
178
|
+
agent_id: ID of the agent
|
|
179
|
+
task_id: ID of the task to delete
|
|
180
|
+
"""
|
|
181
|
+
pass
|
|
@@ -2,11 +2,12 @@ import logging
|
|
|
2
2
|
import time
|
|
3
3
|
from datetime import datetime, timedelta, timezone
|
|
4
4
|
from decimal import Decimal
|
|
5
|
-
from typing import Dict
|
|
5
|
+
from typing import Dict, List
|
|
6
6
|
|
|
7
|
-
from sqlalchemy import func, select, text
|
|
7
|
+
from sqlalchemy import func, select, text, update
|
|
8
8
|
|
|
9
|
-
from intentkit.models.agent import Agent
|
|
9
|
+
from intentkit.models.agent import Agent, AgentAutonomous, AgentTable
|
|
10
|
+
from intentkit.models.agent_data import AgentQuotaTable
|
|
10
11
|
from intentkit.models.credit import CreditEventTable, EventType, UpstreamType
|
|
11
12
|
from intentkit.models.db import get_session
|
|
12
13
|
from intentkit.utils.error import IntentKitAPIError
|
|
@@ -189,3 +190,203 @@ async def agent_action_cost(agent_id: str) -> Dict[str, Decimal]:
|
|
|
189
190
|
)
|
|
190
191
|
|
|
191
192
|
return result
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
async def update_agent_action_cost():
|
|
196
|
+
"""
|
|
197
|
+
Update action costs for all agents.
|
|
198
|
+
|
|
199
|
+
This function processes agents in batches of 100 to avoid memory issues.
|
|
200
|
+
For each agent, it calculates various action cost metrics:
|
|
201
|
+
- avg_action_cost: average cost per action
|
|
202
|
+
- min_action_cost: minimum cost per action
|
|
203
|
+
- max_action_cost: maximum cost per action
|
|
204
|
+
- low_action_cost: average cost of the lowest 20% of actions
|
|
205
|
+
- medium_action_cost: average cost of the middle 60% of actions
|
|
206
|
+
- high_action_cost: average cost of the highest 20% of actions
|
|
207
|
+
|
|
208
|
+
It then updates the corresponding record in the agent_quotas table.
|
|
209
|
+
"""
|
|
210
|
+
logger.info("Starting update of agent average action costs")
|
|
211
|
+
start_time = time.time()
|
|
212
|
+
batch_size = 100
|
|
213
|
+
last_id = None
|
|
214
|
+
total_updated = 0
|
|
215
|
+
|
|
216
|
+
while True:
|
|
217
|
+
# Get a batch of agent IDs ordered by ID
|
|
218
|
+
async with get_session() as session:
|
|
219
|
+
query = select(AgentTable.id).order_by(AgentTable.id)
|
|
220
|
+
|
|
221
|
+
# Apply pagination if we have a last_id from previous batch
|
|
222
|
+
if last_id:
|
|
223
|
+
query = query.where(AgentTable.id > last_id)
|
|
224
|
+
|
|
225
|
+
query = query.limit(batch_size)
|
|
226
|
+
result = await session.execute(query)
|
|
227
|
+
agent_ids = [row[0] for row in result]
|
|
228
|
+
|
|
229
|
+
# If no more agents, we're done
|
|
230
|
+
if not agent_ids:
|
|
231
|
+
break
|
|
232
|
+
|
|
233
|
+
# Update last_id for next batch
|
|
234
|
+
last_id = agent_ids[-1]
|
|
235
|
+
|
|
236
|
+
# Process this batch of agents
|
|
237
|
+
logger.info(
|
|
238
|
+
f"Processing batch of {len(agent_ids)} agents starting with ID {agent_ids[0]}"
|
|
239
|
+
)
|
|
240
|
+
batch_start_time = time.time()
|
|
241
|
+
|
|
242
|
+
for agent_id in agent_ids:
|
|
243
|
+
try:
|
|
244
|
+
# Calculate action costs for this agent
|
|
245
|
+
costs = await agent_action_cost(agent_id)
|
|
246
|
+
|
|
247
|
+
# Update the agent's quota record
|
|
248
|
+
async with get_session() as session:
|
|
249
|
+
update_stmt = (
|
|
250
|
+
update(AgentQuotaTable)
|
|
251
|
+
.where(AgentQuotaTable.id == agent_id)
|
|
252
|
+
.values(
|
|
253
|
+
avg_action_cost=costs["avg_action_cost"],
|
|
254
|
+
min_action_cost=costs["min_action_cost"],
|
|
255
|
+
max_action_cost=costs["max_action_cost"],
|
|
256
|
+
low_action_cost=costs["low_action_cost"],
|
|
257
|
+
medium_action_cost=costs["medium_action_cost"],
|
|
258
|
+
high_action_cost=costs["high_action_cost"],
|
|
259
|
+
)
|
|
260
|
+
)
|
|
261
|
+
await session.execute(update_stmt)
|
|
262
|
+
await session.commit()
|
|
263
|
+
|
|
264
|
+
total_updated += 1
|
|
265
|
+
except Exception as e:
|
|
266
|
+
logger.error(
|
|
267
|
+
f"Error updating action costs for agent {agent_id}: {str(e)}"
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
batch_time = time.time() - batch_start_time
|
|
271
|
+
logger.info(f"Completed batch in {batch_time:.3f}s")
|
|
272
|
+
|
|
273
|
+
total_time = time.time() - start_time
|
|
274
|
+
logger.info(
|
|
275
|
+
f"Finished updating action costs for {total_updated} agents in {total_time:.3f}s"
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
async def list_autonomous_tasks(agent_id: str) -> List[AgentAutonomous]:
|
|
280
|
+
"""
|
|
281
|
+
List all autonomous tasks for an agent.
|
|
282
|
+
|
|
283
|
+
Args:
|
|
284
|
+
agent_id: ID of the agent
|
|
285
|
+
|
|
286
|
+
Returns:
|
|
287
|
+
List[AgentAutonomous]: List of autonomous task configurations
|
|
288
|
+
|
|
289
|
+
Raises:
|
|
290
|
+
IntentKitAPIError: If agent is not found
|
|
291
|
+
"""
|
|
292
|
+
agent = await Agent.get(agent_id)
|
|
293
|
+
if not agent:
|
|
294
|
+
raise IntentKitAPIError(
|
|
295
|
+
400, "AgentNotFound", f"Agent with ID {agent_id} does not exist."
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
if not agent.autonomous:
|
|
299
|
+
return []
|
|
300
|
+
|
|
301
|
+
return agent.autonomous
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
async def add_autonomous_task(agent_id: str, task: AgentAutonomous) -> AgentAutonomous:
|
|
305
|
+
"""
|
|
306
|
+
Add a new autonomous task to an agent.
|
|
307
|
+
|
|
308
|
+
Args:
|
|
309
|
+
agent_id: ID of the agent
|
|
310
|
+
task: Autonomous task configuration (id will be generated if not provided)
|
|
311
|
+
|
|
312
|
+
Returns:
|
|
313
|
+
AgentAutonomous: The created task with generated ID
|
|
314
|
+
|
|
315
|
+
Raises:
|
|
316
|
+
IntentKitAPIError: If agent is not found
|
|
317
|
+
"""
|
|
318
|
+
agent = await Agent.get(agent_id)
|
|
319
|
+
if not agent:
|
|
320
|
+
raise IntentKitAPIError(
|
|
321
|
+
400, "AgentNotFound", f"Agent with ID {agent_id} does not exist."
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
# Get current autonomous tasks
|
|
325
|
+
current_tasks = agent.autonomous or []
|
|
326
|
+
if not isinstance(current_tasks, list):
|
|
327
|
+
current_tasks = []
|
|
328
|
+
|
|
329
|
+
# Add the new task
|
|
330
|
+
current_tasks.append(task)
|
|
331
|
+
|
|
332
|
+
# Update the agent in the database
|
|
333
|
+
async with get_session() as session:
|
|
334
|
+
update_stmt = (
|
|
335
|
+
update(AgentTable)
|
|
336
|
+
.where(AgentTable.id == agent_id)
|
|
337
|
+
.values(autonomous=current_tasks)
|
|
338
|
+
)
|
|
339
|
+
await session.execute(update_stmt)
|
|
340
|
+
await session.commit()
|
|
341
|
+
|
|
342
|
+
logger.info(f"Added autonomous task {task.id} to agent {agent_id}")
|
|
343
|
+
return task
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
async def delete_autonomous_task(agent_id: str, task_id: str) -> None:
|
|
347
|
+
"""
|
|
348
|
+
Delete an autonomous task from an agent.
|
|
349
|
+
|
|
350
|
+
Args:
|
|
351
|
+
agent_id: ID of the agent
|
|
352
|
+
task_id: ID of the task to delete
|
|
353
|
+
|
|
354
|
+
Raises:
|
|
355
|
+
IntentKitAPIError: If agent is not found or task is not found
|
|
356
|
+
"""
|
|
357
|
+
agent = await Agent.get(agent_id)
|
|
358
|
+
if not agent:
|
|
359
|
+
raise IntentKitAPIError(
|
|
360
|
+
400, "AgentNotFound", f"Agent with ID {agent_id} does not exist."
|
|
361
|
+
)
|
|
362
|
+
|
|
363
|
+
# Get current autonomous tasks
|
|
364
|
+
current_tasks = agent.autonomous or []
|
|
365
|
+
if not isinstance(current_tasks, list):
|
|
366
|
+
current_tasks = []
|
|
367
|
+
|
|
368
|
+
# Find and remove the task
|
|
369
|
+
task_found = False
|
|
370
|
+
updated_tasks = []
|
|
371
|
+
for task_data in current_tasks:
|
|
372
|
+
if isinstance(task_data, dict) and task_data.get("id") == task_id:
|
|
373
|
+
task_found = True
|
|
374
|
+
continue
|
|
375
|
+
updated_tasks.append(task_data)
|
|
376
|
+
|
|
377
|
+
if not task_found:
|
|
378
|
+
raise IntentKitAPIError(
|
|
379
|
+
404, "TaskNotFound", f"Autonomous task with ID {task_id} not found."
|
|
380
|
+
)
|
|
381
|
+
|
|
382
|
+
# Update the agent in the database
|
|
383
|
+
async with get_session() as session:
|
|
384
|
+
update_stmt = (
|
|
385
|
+
update(AgentTable)
|
|
386
|
+
.where(AgentTable.id == agent_id)
|
|
387
|
+
.values(autonomous=updated_tasks)
|
|
388
|
+
)
|
|
389
|
+
await session.execute(update_stmt)
|
|
390
|
+
await session.commit()
|
|
391
|
+
|
|
392
|
+
logger.info(f"Deleted autonomous task {task_id} from agent {agent_id}")
|
|
@@ -1012,15 +1012,3 @@ async def thread_stats(agent_id: str, chat_id: str) -> list[BaseMessage]:
|
|
|
1012
1012
|
return snap.values["messages"]
|
|
1013
1013
|
else:
|
|
1014
1014
|
return []
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
async def is_payment_required(input: ChatMessageCreate, agent: Agent) -> bool:
|
|
1018
|
-
if not config.payment_enabled:
|
|
1019
|
-
return False
|
|
1020
|
-
payment_settings = await AppSetting.payment()
|
|
1021
|
-
if payment_settings.agent_whitelist_enabled:
|
|
1022
|
-
if agent.id not in payment_settings.agent_whitelist:
|
|
1023
|
-
return False
|
|
1024
|
-
if input.user_id and agent.owner:
|
|
1025
|
-
return True
|
|
1026
|
-
return False
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
from typing import Any, Dict, Optional
|
|
1
|
+
from typing import Any, Dict, List, Optional
|
|
2
2
|
|
|
3
3
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
4
4
|
from intentkit.config.config import config
|
|
5
|
-
from intentkit.
|
|
5
|
+
from intentkit.core.agent import (
|
|
6
|
+
add_autonomous_task as _add_autonomous_task,
|
|
7
|
+
)
|
|
8
|
+
from intentkit.core.agent import (
|
|
9
|
+
delete_autonomous_task as _delete_autonomous_task,
|
|
10
|
+
)
|
|
11
|
+
from intentkit.core.agent import (
|
|
12
|
+
list_autonomous_tasks as _list_autonomous_tasks,
|
|
13
|
+
)
|
|
14
|
+
from intentkit.models.agent import Agent, AgentAutonomous
|
|
6
15
|
from intentkit.models.agent_data import AgentData, AgentQuota
|
|
7
16
|
from intentkit.models.skill import (
|
|
8
17
|
AgentSkillData,
|
|
@@ -131,5 +140,42 @@ class SkillStore(SkillStoreABC):
|
|
|
131
140
|
)
|
|
132
141
|
await skill_data.save()
|
|
133
142
|
|
|
143
|
+
@staticmethod
|
|
144
|
+
async def list_autonomous_tasks(agent_id: str) -> List[AgentAutonomous]:
|
|
145
|
+
"""List all autonomous tasks for an agent.
|
|
146
|
+
|
|
147
|
+
Args:
|
|
148
|
+
agent_id: ID of the agent
|
|
149
|
+
|
|
150
|
+
Returns:
|
|
151
|
+
List[AgentAutonomous]: List of autonomous task configurations
|
|
152
|
+
"""
|
|
153
|
+
return await _list_autonomous_tasks(agent_id)
|
|
154
|
+
|
|
155
|
+
@staticmethod
|
|
156
|
+
async def add_autonomous_task(
|
|
157
|
+
agent_id: str, task: AgentAutonomous
|
|
158
|
+
) -> AgentAutonomous:
|
|
159
|
+
"""Add a new autonomous task to an agent.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
agent_id: ID of the agent
|
|
163
|
+
task: Autonomous task configuration
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
AgentAutonomous: The created task
|
|
167
|
+
"""
|
|
168
|
+
return await _add_autonomous_task(agent_id, task)
|
|
169
|
+
|
|
170
|
+
@staticmethod
|
|
171
|
+
async def delete_autonomous_task(agent_id: str, task_id: str) -> None:
|
|
172
|
+
"""Delete an autonomous task from an agent.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
agent_id: ID of the agent
|
|
176
|
+
task_id: ID of the task to delete
|
|
177
|
+
"""
|
|
178
|
+
await _delete_autonomous_task(agent_id, task_id)
|
|
179
|
+
|
|
134
180
|
|
|
135
181
|
skill_store = SkillStore()
|
|
@@ -814,3 +814,33 @@ class AgentQuota(BaseModel):
|
|
|
814
814
|
# Update this instance
|
|
815
815
|
await db.refresh(quota_record)
|
|
816
816
|
self.model_validate(quota_record)
|
|
817
|
+
|
|
818
|
+
@staticmethod
|
|
819
|
+
async def reset_daily_quotas():
|
|
820
|
+
"""Reset daily quotas for all agents at UTC 00:00.
|
|
821
|
+
Resets message_count_daily and twitter_count_daily to 0.
|
|
822
|
+
"""
|
|
823
|
+
from sqlalchemy import update
|
|
824
|
+
|
|
825
|
+
async with get_session() as session:
|
|
826
|
+
stmt = update(AgentQuotaTable).values(
|
|
827
|
+
message_count_daily=0,
|
|
828
|
+
twitter_count_daily=0,
|
|
829
|
+
free_income_daily=0,
|
|
830
|
+
)
|
|
831
|
+
await session.execute(stmt)
|
|
832
|
+
await session.commit()
|
|
833
|
+
|
|
834
|
+
@staticmethod
|
|
835
|
+
async def reset_monthly_quotas():
|
|
836
|
+
"""Reset monthly quotas for all agents at the start of each month.
|
|
837
|
+
Resets message_count_monthly and autonomous_count_monthly to 0.
|
|
838
|
+
"""
|
|
839
|
+
from sqlalchemy import update
|
|
840
|
+
|
|
841
|
+
async with get_session() as session:
|
|
842
|
+
stmt = update(AgentQuotaTable).values(
|
|
843
|
+
message_count_monthly=0, autonomous_count_monthly=0
|
|
844
|
+
)
|
|
845
|
+
await session.execute(stmt)
|
|
846
|
+
await session.commit()
|
|
@@ -46,6 +46,8 @@ class PaymentSettings(BaseModel):
|
|
|
46
46
|
"credit_per_usdc": 1000,
|
|
47
47
|
"fee_platform_percentage": 100,
|
|
48
48
|
"fee_dev_percentage": 20,
|
|
49
|
+
"free_quota": 480,
|
|
50
|
+
"refill_amount": 20,
|
|
49
51
|
"agent_whitelist_enabled": False,
|
|
50
52
|
"agent_whitelist": [],
|
|
51
53
|
}
|
|
@@ -68,6 +70,22 @@ class PaymentSettings(BaseModel):
|
|
|
68
70
|
default=Decimal("20"), description="Developer fee percentage", ge=0, le=100
|
|
69
71
|
),
|
|
70
72
|
]
|
|
73
|
+
free_quota: Annotated[
|
|
74
|
+
Decimal,
|
|
75
|
+
Field(
|
|
76
|
+
default=Decimal("480"),
|
|
77
|
+
description="Daily free credit quota for new users",
|
|
78
|
+
ge=0,
|
|
79
|
+
),
|
|
80
|
+
]
|
|
81
|
+
refill_amount: Annotated[
|
|
82
|
+
Decimal,
|
|
83
|
+
Field(
|
|
84
|
+
default=Decimal("20"),
|
|
85
|
+
description="Hourly refill amount for free credits",
|
|
86
|
+
ge=0,
|
|
87
|
+
),
|
|
88
|
+
]
|
|
71
89
|
agent_whitelist_enabled: Annotated[
|
|
72
90
|
bool,
|
|
73
91
|
Field(default=False, description="Whether agent whitelist is enabled"),
|
|
@@ -77,7 +95,13 @@ class PaymentSettings(BaseModel):
|
|
|
77
95
|
Field(default_factory=list, description="List of whitelisted agent IDs"),
|
|
78
96
|
]
|
|
79
97
|
|
|
80
|
-
@field_validator(
|
|
98
|
+
@field_validator(
|
|
99
|
+
"credit_per_usdc",
|
|
100
|
+
"fee_platform_percentage",
|
|
101
|
+
"fee_dev_percentage",
|
|
102
|
+
"free_quota",
|
|
103
|
+
"refill_amount",
|
|
104
|
+
)
|
|
81
105
|
@classmethod
|
|
82
106
|
def round_decimal(cls, v: Any) -> Decimal:
|
|
83
107
|
"""Round decimal values to 4 decimal places."""
|
|
@@ -6,6 +6,7 @@ from typing import Annotated, Any, Dict, List, Optional, Tuple
|
|
|
6
6
|
|
|
7
7
|
from epyxid import XID
|
|
8
8
|
from fastapi import HTTPException
|
|
9
|
+
from intentkit.models.app_setting import AppSetting
|
|
9
10
|
from intentkit.models.base import Base
|
|
10
11
|
from intentkit.models.db import get_session
|
|
11
12
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
@@ -437,8 +438,8 @@ class CreditAccount(BaseModel):
|
|
|
437
438
|
session: AsyncSession,
|
|
438
439
|
owner_type: OwnerType,
|
|
439
440
|
owner_id: str,
|
|
440
|
-
free_quota: Decimal =
|
|
441
|
-
refill_amount: Decimal =
|
|
441
|
+
free_quota: Optional[Decimal] = None,
|
|
442
|
+
refill_amount: Optional[Decimal] = None,
|
|
442
443
|
) -> "CreditAccount":
|
|
443
444
|
"""Get an existing credit account or create a new one if it doesn't exist.
|
|
444
445
|
|
|
@@ -448,15 +449,24 @@ class CreditAccount(BaseModel):
|
|
|
448
449
|
session: Async session to use for database queries
|
|
449
450
|
owner_type: Type of the owner
|
|
450
451
|
owner_id: ID of the owner
|
|
451
|
-
free_quota: Daily quota for a new account if created
|
|
452
|
+
free_quota: Daily quota for a new account if created (if None, reads from payment settings)
|
|
453
|
+
refill_amount: Hourly refill amount (if None, reads from payment settings)
|
|
452
454
|
|
|
453
455
|
Returns:
|
|
454
456
|
CreditAccount: The existing or newly created credit account
|
|
455
457
|
"""
|
|
458
|
+
# Get payment settings if values not provided
|
|
459
|
+
if free_quota is None or refill_amount is None:
|
|
460
|
+
payment_settings = await AppSetting.payment()
|
|
461
|
+
if free_quota is None:
|
|
462
|
+
free_quota = payment_settings.free_quota
|
|
463
|
+
if refill_amount is None:
|
|
464
|
+
refill_amount = payment_settings.refill_amount
|
|
465
|
+
|
|
456
466
|
if owner_type != OwnerType.USER:
|
|
457
467
|
# only users have daily quota
|
|
458
|
-
free_quota = 0.0
|
|
459
|
-
refill_amount = 0.0
|
|
468
|
+
free_quota = Decimal("0.0")
|
|
469
|
+
refill_amount = Decimal("0.0")
|
|
460
470
|
# Create event_id at the beginning for consistency
|
|
461
471
|
event_id = str(XID())
|
|
462
472
|
|
|
@@ -5,7 +5,10 @@ from typing import TypedDict
|
|
|
5
5
|
|
|
6
6
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
7
|
from intentkit.skills.base import SkillConfig, SkillOwnerState
|
|
8
|
+
from intentkit.skills.system.add_autonomous_task import AddAutonomousTask
|
|
8
9
|
from intentkit.skills.system.base import SystemBaseTool
|
|
10
|
+
from intentkit.skills.system.delete_autonomous_task import DeleteAutonomousTask
|
|
11
|
+
from intentkit.skills.system.list_autonomous_tasks import ListAutonomousTasks
|
|
9
12
|
from intentkit.skills.system.read_agent_api_key import ReadAgentApiKey
|
|
10
13
|
from intentkit.skills.system.regenerate_agent_api_key import RegenerateAgentApiKey
|
|
11
14
|
|
|
@@ -18,6 +21,9 @@ logger = logging.getLogger(__name__)
|
|
|
18
21
|
class SkillStates(TypedDict):
|
|
19
22
|
read_agent_api_key: SkillOwnerState
|
|
20
23
|
regenerate_agent_api_key: SkillOwnerState
|
|
24
|
+
list_autonomous_tasks: SkillOwnerState
|
|
25
|
+
add_autonomous_task: SkillOwnerState
|
|
26
|
+
delete_autonomous_task: SkillOwnerState
|
|
21
27
|
|
|
22
28
|
|
|
23
29
|
class Config(SkillConfig):
|
|
@@ -85,6 +91,24 @@ def get_system_skill(
|
|
|
85
91
|
skill_store=store,
|
|
86
92
|
)
|
|
87
93
|
return _cache[name]
|
|
94
|
+
elif name == "list_autonomous_tasks":
|
|
95
|
+
if name not in _cache:
|
|
96
|
+
_cache[name] = ListAutonomousTasks(
|
|
97
|
+
skill_store=store,
|
|
98
|
+
)
|
|
99
|
+
return _cache[name]
|
|
100
|
+
elif name == "add_autonomous_task":
|
|
101
|
+
if name not in _cache:
|
|
102
|
+
_cache[name] = AddAutonomousTask(
|
|
103
|
+
skill_store=store,
|
|
104
|
+
)
|
|
105
|
+
return _cache[name]
|
|
106
|
+
elif name == "delete_autonomous_task":
|
|
107
|
+
if name not in _cache:
|
|
108
|
+
_cache[name] = DeleteAutonomousTask(
|
|
109
|
+
skill_store=store,
|
|
110
|
+
)
|
|
111
|
+
return _cache[name]
|
|
88
112
|
else:
|
|
89
113
|
logger.warning(f"Unknown system skill: {name}")
|
|
90
114
|
return None
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from langchain_core.runnables import RunnableConfig
|
|
4
|
+
from pydantic import BaseModel, Field
|
|
5
|
+
|
|
6
|
+
from intentkit.models.agent import AgentAutonomous
|
|
7
|
+
from intentkit.skills.system.base import SystemBaseTool
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AddAutonomousTaskInput(BaseModel):
|
|
11
|
+
"""Input model for add_autonomous_task skill."""
|
|
12
|
+
|
|
13
|
+
name: Optional[str] = Field(
|
|
14
|
+
default=None, description="Display name of the autonomous task configuration"
|
|
15
|
+
)
|
|
16
|
+
description: Optional[str] = Field(
|
|
17
|
+
default=None, description="Description of the autonomous task configuration"
|
|
18
|
+
)
|
|
19
|
+
minutes: Optional[int] = Field(
|
|
20
|
+
default=None,
|
|
21
|
+
description="Interval in minutes between operations, mutually exclusive with cron",
|
|
22
|
+
)
|
|
23
|
+
cron: Optional[str] = Field(
|
|
24
|
+
default=None,
|
|
25
|
+
description="Cron expression for scheduling operations, mutually exclusive with minutes",
|
|
26
|
+
)
|
|
27
|
+
prompt: str = Field(description="Special prompt used during autonomous operation")
|
|
28
|
+
enabled: Optional[bool] = Field(
|
|
29
|
+
default=False, description="Whether the autonomous configuration is enabled"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class AddAutonomousTaskOutput(BaseModel):
|
|
34
|
+
"""Output model for add_autonomous_task skill."""
|
|
35
|
+
|
|
36
|
+
task: AgentAutonomous = Field(
|
|
37
|
+
description="The created autonomous task configuration"
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class AddAutonomousTask(SystemBaseTool):
|
|
42
|
+
"""Skill to add a new autonomous task to an agent."""
|
|
43
|
+
|
|
44
|
+
name: str = "system_add_autonomous_task"
|
|
45
|
+
description: str = (
|
|
46
|
+
"Add a new autonomous task configuration to the agent. "
|
|
47
|
+
"Allows setting up scheduled operations with custom prompts and intervals. "
|
|
48
|
+
"The minutes and cron fields are mutually exclusive. But you must provide one of them."
|
|
49
|
+
)
|
|
50
|
+
args_schema = AddAutonomousTaskInput
|
|
51
|
+
|
|
52
|
+
async def _arun(
|
|
53
|
+
self,
|
|
54
|
+
name: Optional[str] = None,
|
|
55
|
+
description: Optional[str] = None,
|
|
56
|
+
minutes: Optional[int] = None,
|
|
57
|
+
cron: Optional[str] = None,
|
|
58
|
+
prompt: str = "",
|
|
59
|
+
enabled: Optional[bool] = False,
|
|
60
|
+
config: RunnableConfig = None,
|
|
61
|
+
**kwargs,
|
|
62
|
+
) -> AddAutonomousTaskOutput:
|
|
63
|
+
"""Add an autonomous task to the agent.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
name: Display name of the task
|
|
67
|
+
description: Description of the task
|
|
68
|
+
minutes: Interval in minutes (mutually exclusive with cron)
|
|
69
|
+
cron: Cron expression (mutually exclusive with minutes)
|
|
70
|
+
prompt: Special prompt for autonomous operation
|
|
71
|
+
enabled: Whether the task is enabled
|
|
72
|
+
config: Runtime configuration containing agent context
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
AddAutonomousTaskOutput: The created task
|
|
76
|
+
"""
|
|
77
|
+
context = self.context_from_config(config)
|
|
78
|
+
agent_id = context["agent_id"]
|
|
79
|
+
|
|
80
|
+
task = AgentAutonomous(
|
|
81
|
+
name=name,
|
|
82
|
+
description=description,
|
|
83
|
+
minutes=minutes,
|
|
84
|
+
cron=cron,
|
|
85
|
+
prompt=prompt,
|
|
86
|
+
enabled=enabled,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
created_task = await self.skill_store.add_autonomous_task(agent_id, task)
|
|
90
|
+
|
|
91
|
+
return AddAutonomousTaskOutput(task=created_task)
|