intentkit 0.18.0__tar.gz → 1.1.0__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.
- {intentkit-0.18.0 → intentkit-1.1.0}/PKG-INFO +1 -1
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/__init__.py +1 -1
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/api.py +32 -2
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/engine.py +109 -1
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/engine.py +2 -1
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/__init__.py +6 -0
- intentkit-1.1.0/intentkit/core/lead/skills/update_user_profile.py +134 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/__init__.py +11 -0
- intentkit-1.1.0/intentkit/core/lead/sub_agents/user_manager.py +82 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/prompt.py +7 -0
- intentkit-1.1.0/intentkit/core/team/wechat_session_notice.py +88 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/llm.csv +8 -10
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/llm.py +1 -1
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/llm_picker.py +11 -12
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/user.py +24 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/pyproject.toml +1 -1
- {intentkit-0.18.0 → intentkit-1.1.0}/.gitignore +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/LICENSE +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/app/team/intentkit/docker-compose.yml +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/.dockerignore +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/LICENSE +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/MANIFEST.in +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/agent.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/api.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/engine.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/graph.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/skill.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/twitter.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/wallet.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/client.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/registry.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/tool.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/wrapper.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/moralis.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/s3.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/s3_setup.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/supabase.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/twitter.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/web3_ens.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/config.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/db.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/db_mig.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/redis.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/account_checking.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/analytics.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/management.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/notifications.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/public_info.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/queries.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/wallet.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent_activity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent_post.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/asset.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/autonomous.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/avatar.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/budget.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/chat.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/cleanup.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/client.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/adjustment.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/expense.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/list_events.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/plan_credit.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/recharge.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/refill.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/reward.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/withdraw.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/draft.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/draft_chat.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/executor.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/cache.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/service.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/add_autonomous_task.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/call_agent.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/create_team_agent.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/delete_autonomous_task.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/edit_autonomous_task.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/get_post.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/get_self_info.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/get_team_agent.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/get_team_info.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/list_autonomous_tasks.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/list_skills.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/list_team_agents.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/llm.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/recent_team_activities.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/recent_team_posts.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/update_self.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/update_self_memory.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/update_team_agent.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/agent_manager.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/content_manager.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/self_updater.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/task_manager.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/engine.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/service.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/add_autonomous_task.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/delete_autonomous_task.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/draft.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/edit_autonomous_task.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/list_autonomous_tasks.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/llm.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/public_info.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/memory.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/middleware.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/public_agents.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/public_api.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/scheduler.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/share_link.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/statistics.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/call_agent.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/create_activity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/create_post.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/current_time.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/get_post.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/read_webpage.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/recent_activities.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/recent_posts.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/search_web.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/update_memory.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/task_registry.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/channel.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/feed.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/membership.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/push.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/subscription.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/template.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/user.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/agent.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/autonomous.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/core.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/db.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/public.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/public_info.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/response.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/user_input.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent_activity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent_post.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/app_setting.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/chat.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/account.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/event.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/transaction.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/draft.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/share_link.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/skill.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/team.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/team_channel.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/team_feed.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/template.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/user_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/x402_order.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/aave_v3.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/borrow.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/get_reserve_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/get_user_account_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/repay.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/set_collateral.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/supply.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/withdraw.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/acp.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/cancel_checkout.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/complete_checkout.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/create_checkout.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/get_checkout.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/list_products.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/add_liquidity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/aerodrome.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/get_positions.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/quote.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/remove_liquidity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/swap.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/projects.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/allora.jpeg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/basename.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/register.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/carv.webp +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/fetch_news.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/onchain_query.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/casino.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/deck_draw.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/deck_shuffle.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/dice_roll.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/cdp.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/get_balance.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/get_wallet_details.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/native_transfer.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/api.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/api.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/config/chains.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/dune.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/execute_query.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/get_query_results.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/run_sql.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/mention.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/stats.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/tokens.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/abi/approval.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/abi/route.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/best_yield.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/enso.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/networks.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/prices.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/route.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/tokens.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/wallet.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/erc20.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/get_balance.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/get_token_address.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/transfer.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/erc721.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/get_balance.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/mint.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/transfer.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/clear.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/query.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/github.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/github_search.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/heurist.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/get.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/http.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/post.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/put.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/gemini.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/gpt.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/grok.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/image.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/minimax.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/openrouter.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/jupiter.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/swap.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/lifi.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/token_execute.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/token_quote.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/mcp_coingecko/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/mcp_coingecko/coingecko.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/mcp_coingecko/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/api.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/moralis.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/borrow.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/deposit.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/get_position.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/get_vault_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/morpho.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/repay.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/supply_collateral.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/withdraw.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/withdraw_collateral.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/onchain.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/buy_nft.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/cancel_listing.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/create_listing.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_collection.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_collection_stats.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_events.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_listings.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_nft.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_nfts_by_account.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_offers.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/onchain_base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/opensea.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/update_listing.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/add_liquidity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/get_positions.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/pancakeswap.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/quote.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/remove_liquidity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/swap.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/cancel_order.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_market.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_orderbook.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_orders.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_positions.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_price_history.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_trades.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/place_order.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/polymarket.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/search_markets.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/moralis.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/fetch_price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/fetch_price_feed.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/pyth.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/get_channel.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/get_message.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/schedule_message.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/send_message.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/slack.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/delete_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/insert_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/supabase.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/update_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/create_flow.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/delete_flow.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/superfluid.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/update_flow.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/moralis.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/token_analytics.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/token_price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/token_search.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/follow_user.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/retweet.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/twitter.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/ask_user.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/show_card.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/ui.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/add_liquidity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/get_positions.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/quote.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/remove_liquidity.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/swap.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/uniswap.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/input.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/api.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/config.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/gemini.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/gpt.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/grok.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/minimax.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/video.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/constants.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/unwrap_eth.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/weth.svg +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/wrap_eth.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/check_price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/get_orders.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/http_request.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/httpx_compat.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/pay.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/x402.webp +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/README.md +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/base.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/price.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/schema.json +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/swap.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/transfer.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/alert.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/alert_handler.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/chain.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/ens.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/error.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/logging.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/opengraph.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/pdf.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/random.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/s3_setup.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/schema.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/slack_alert.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/telegram_alert.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/templates/post_pdf.html +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/time.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/tx.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/upload.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/__init__.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/cdp.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/evm_wallet.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/native.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_client.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_nonce.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_safe.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_signer.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_types.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_utils.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/signer.py +0 -0
- {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/web3.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version:
|
|
3
|
+
Version: 1.1.0
|
|
4
4
|
Summary: Intent-based AI Agent Platform - Core Package
|
|
5
5
|
Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
|
|
6
6
|
Project-URL: Repository, https://github.com/crestalnetwork/intentkit
|
|
@@ -22,6 +22,10 @@ from intentkit.core.engine import execute_agent, stream_agent
|
|
|
22
22
|
from intentkit.core.lead.engine import stream_lead
|
|
23
23
|
from intentkit.core.lead.service import verify_team_membership
|
|
24
24
|
from intentkit.core.team.channel import set_push_channel, set_push_channel_if_empty
|
|
25
|
+
from intentkit.core.team.wechat_session_notice import (
|
|
26
|
+
WECHAT_SESSION_EXPIRING,
|
|
27
|
+
build_expiring_prompt,
|
|
28
|
+
)
|
|
25
29
|
from intentkit.models.chat import (
|
|
26
30
|
AuthorType,
|
|
27
31
|
ChatMessage,
|
|
@@ -31,6 +35,11 @@ from intentkit.models.chat import (
|
|
|
31
35
|
from intentkit.models.user import User, UserUpdate
|
|
32
36
|
from intentkit.utils.error import IntentKitAPIError
|
|
33
37
|
|
|
38
|
+
# Set of recognized system_trigger values. Each value supplies its own
|
|
39
|
+
# synthesized prompt and may override the author_type to TRIGGER so the
|
|
40
|
+
# event is recorded in chat history without looking like a real user message.
|
|
41
|
+
_SYSTEM_TRIGGERS: frozenset[str] = frozenset({WECHAT_SESSION_EXPIRING})
|
|
42
|
+
|
|
34
43
|
# ⚠️ INTERNAL API ONLY - DO NOT EXPOSE TO PUBLIC INTERNET ⚠️
|
|
35
44
|
core_router = APIRouter(
|
|
36
45
|
prefix="/core",
|
|
@@ -91,6 +100,11 @@ class LeadExecuteRequest(BaseModel):
|
|
|
91
100
|
chat_id: str
|
|
92
101
|
message: str
|
|
93
102
|
attachments: list[ChatMessageAttachment] | None = None
|
|
103
|
+
# When set, the integration is asking the lead agent to handle a
|
|
104
|
+
# system-driven event (e.g. wechat reply window about to close) rather
|
|
105
|
+
# than a real user message. The `message` field is replaced with a
|
|
106
|
+
# synthesized prompt and the saved record is tagged AuthorType.TRIGGER.
|
|
107
|
+
system_trigger: str | None = None
|
|
94
108
|
|
|
95
109
|
|
|
96
110
|
# Per-channel config: (user_lookup, bind_field, author_type, chat_id_prefix)
|
|
@@ -131,15 +145,31 @@ async def _resolve_lead(
|
|
|
131
145
|
else:
|
|
132
146
|
user_id = request.channel_user_id
|
|
133
147
|
|
|
148
|
+
# System-driven trigger: replace the (likely empty) caller message with
|
|
149
|
+
# a synthesized prompt and tag the saved record as TRIGGER so chat-UI
|
|
150
|
+
# consumers can hide it the same way they hide autonomous task triggers.
|
|
151
|
+
message_text = request.message
|
|
152
|
+
saved_author_type = author_type
|
|
153
|
+
if request.system_trigger:
|
|
154
|
+
if request.system_trigger not in _SYSTEM_TRIGGERS:
|
|
155
|
+
raise IntentKitAPIError(
|
|
156
|
+
400,
|
|
157
|
+
"Bad Request",
|
|
158
|
+
f"Unknown system_trigger: {request.system_trigger}",
|
|
159
|
+
)
|
|
160
|
+
if request.system_trigger == WECHAT_SESSION_EXPIRING:
|
|
161
|
+
message_text = await build_expiring_prompt(request.team_id)
|
|
162
|
+
saved_author_type = AuthorType.TRIGGER
|
|
163
|
+
|
|
134
164
|
chat_msg = ChatMessageCreate(
|
|
135
165
|
id=str(XID()),
|
|
136
166
|
agent_id=f"team-{request.team_id}",
|
|
137
167
|
chat_id=f"{chat_prefix}:{request.team_id}:{request.chat_id}",
|
|
138
168
|
user_id=user_id,
|
|
139
169
|
author_id=user_id,
|
|
140
|
-
author_type=
|
|
170
|
+
author_type=saved_author_type,
|
|
141
171
|
thread_type=author_type,
|
|
142
|
-
message=
|
|
172
|
+
message=message_text,
|
|
143
173
|
attachments=request.attachments,
|
|
144
174
|
)
|
|
145
175
|
return user_id, chat_msg
|
|
@@ -571,6 +571,102 @@ def _is_unrecoverable_checkpoint_error(exc: Exception) -> bool:
|
|
|
571
571
|
return False
|
|
572
572
|
|
|
573
573
|
|
|
574
|
+
def _summarize_history_messages(msgs: list[Any], max_messages: int = 10) -> list[dict]:
|
|
575
|
+
"""Build a compact summary of the last N thread messages.
|
|
576
|
+
|
|
577
|
+
Focuses on tool_calls carried on AIMessage — useful when the LLM returns
|
|
578
|
+
MALFORMED_FUNCTION_CALL and the offending call isn't present in the current
|
|
579
|
+
turn's chunks, so we have to look back in checkpoint history.
|
|
580
|
+
"""
|
|
581
|
+
summary: list[dict] = []
|
|
582
|
+
for msg in msgs[-max_messages:]:
|
|
583
|
+
entry: dict = {
|
|
584
|
+
"type": type(msg).__name__,
|
|
585
|
+
"id": getattr(msg, "id", None),
|
|
586
|
+
}
|
|
587
|
+
tool_calls = getattr(msg, "tool_calls", None)
|
|
588
|
+
if tool_calls:
|
|
589
|
+
entry["tool_calls"] = [
|
|
590
|
+
{"name": tc.get("name"), "args": tc.get("args")} for tc in tool_calls
|
|
591
|
+
]
|
|
592
|
+
invalid_tc = getattr(msg, "invalid_tool_calls", None)
|
|
593
|
+
if invalid_tc:
|
|
594
|
+
entry["invalid_tool_calls"] = invalid_tc
|
|
595
|
+
content = getattr(msg, "content", None)
|
|
596
|
+
if content:
|
|
597
|
+
preview = extract_text_content(content) or str(content)
|
|
598
|
+
entry["content_preview"] = preview[:200]
|
|
599
|
+
thinking = extract_thinking_content(msg)
|
|
600
|
+
if thinking:
|
|
601
|
+
entry["thinking_preview"] = thinking[:200]
|
|
602
|
+
response_meta = getattr(msg, "response_metadata", None)
|
|
603
|
+
if response_meta and "finish_reason" in response_meta:
|
|
604
|
+
entry["finish_reason"] = response_meta["finish_reason"]
|
|
605
|
+
summary.append(entry)
|
|
606
|
+
return summary
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
async def _cleanup_empty_model_output(
|
|
610
|
+
executor: Any,
|
|
611
|
+
stream_config: "RunnableConfig",
|
|
612
|
+
agent_id: str,
|
|
613
|
+
thread_id: str,
|
|
614
|
+
) -> list[Any]:
|
|
615
|
+
"""Handle checkpoint fallout from a zero-output model turn (e.g. Gemini
|
|
616
|
+
MALFORMED_FUNCTION_CALL).
|
|
617
|
+
|
|
618
|
+
Returns the full message list (for diagnostics) and, if the last message
|
|
619
|
+
is an empty AIMessage (no content, no tool_calls), removes it so the next
|
|
620
|
+
user turn doesn't inherit the junk state. Without this the thread keeps
|
|
621
|
+
the empty message and subsequent turns may misbehave.
|
|
622
|
+
"""
|
|
623
|
+
try:
|
|
624
|
+
snap = await executor.aget_state(stream_config)
|
|
625
|
+
msgs = snap.values.get("messages") if snap.values else None
|
|
626
|
+
except Exception:
|
|
627
|
+
logger.warning(
|
|
628
|
+
f"Failed to fetch thread state for {agent_id}",
|
|
629
|
+
extra={"thread_id": thread_id},
|
|
630
|
+
exc_info=True,
|
|
631
|
+
)
|
|
632
|
+
return []
|
|
633
|
+
|
|
634
|
+
if not msgs:
|
|
635
|
+
return []
|
|
636
|
+
|
|
637
|
+
last = msgs[-1]
|
|
638
|
+
# Treat list-content (e.g. thinking-only blocks) as empty when
|
|
639
|
+
# extract_text_content yields nothing — a non-empty list is still truthy
|
|
640
|
+
# so a direct `not last.content` check would miss these.
|
|
641
|
+
if (
|
|
642
|
+
isinstance(last, AIMessage)
|
|
643
|
+
and not extract_text_content(last.content)
|
|
644
|
+
and not last.tool_calls
|
|
645
|
+
):
|
|
646
|
+
if not last.id:
|
|
647
|
+
logger.warning(
|
|
648
|
+
f"Empty AIMessage has no id; skipping removal for {agent_id}",
|
|
649
|
+
extra={"thread_id": thread_id},
|
|
650
|
+
)
|
|
651
|
+
else:
|
|
652
|
+
try:
|
|
653
|
+
await executor.aupdate_state(
|
|
654
|
+
stream_config,
|
|
655
|
+
{"messages": [RemoveMessage(id=last.id)]},
|
|
656
|
+
)
|
|
657
|
+
logger.info(
|
|
658
|
+
f"Removed empty AIMessage for {agent_id}",
|
|
659
|
+
extra={"thread_id": thread_id},
|
|
660
|
+
)
|
|
661
|
+
except Exception:
|
|
662
|
+
logger.warning(
|
|
663
|
+
f"Failed to remove empty AIMessage for {agent_id}",
|
|
664
|
+
extra={"thread_id": thread_id},
|
|
665
|
+
exc_info=True,
|
|
666
|
+
)
|
|
667
|
+
return msgs
|
|
668
|
+
|
|
669
|
+
|
|
574
670
|
async def _cancel_cleanup(
|
|
575
671
|
executor: Any,
|
|
576
672
|
stream_config: "RunnableConfig",
|
|
@@ -950,11 +1046,23 @@ async def stream_agent_raw(
|
|
|
950
1046
|
|
|
951
1047
|
# If the stream completed normally but yielded zero messages,
|
|
952
1048
|
# the LLM likely returned an empty response (no content, no tool calls).
|
|
1049
|
+
# Typical cause: Gemini MALFORMED_FUNCTION_CALL — the malformed call isn't
|
|
1050
|
+
# in this turn's chunks, so dump recent history tool_calls for diagnosis
|
|
1051
|
+
# and prune the empty AIMessage so the thread isn't stuck on next turn.
|
|
953
1052
|
if not yielded_any:
|
|
1053
|
+
history_msgs = await _cleanup_empty_model_output(
|
|
1054
|
+
executor,
|
|
1055
|
+
stream_config,
|
|
1056
|
+
user_message.agent_id,
|
|
1057
|
+
thread_id,
|
|
1058
|
+
)
|
|
1059
|
+
history_summary = _summarize_history_messages(history_msgs)
|
|
954
1060
|
logger.error(
|
|
955
1061
|
f"Agent {user_message.agent_id} produced no output messages. "
|
|
956
1062
|
f"Total chunks received: {len(raw_chunks)}. "
|
|
957
|
-
f"Raw chunks: {raw_chunks}"
|
|
1063
|
+
f"Raw chunks: {raw_chunks}. "
|
|
1064
|
+
f"Recent history ({len(history_summary)} of {len(history_msgs)} msgs): "
|
|
1065
|
+
f"{history_summary}",
|
|
958
1066
|
extra={"thread_id": thread_id},
|
|
959
1067
|
)
|
|
960
1068
|
yield await _create_system_error_response(
|
|
@@ -73,7 +73,8 @@ async def _build_lead_agent(team_id: str) -> Agent:
|
|
|
73
73
|
"- `agent-manager`: Agent CRUD.\n"
|
|
74
74
|
"- `task-manager`: Autonomous task scheduling and management.\n"
|
|
75
75
|
"- `self-updater`: Update your own name, avatar, personality, or memory.\n"
|
|
76
|
-
"- `content-manager`: Read team activities and posts.\n
|
|
76
|
+
"- `content-manager`: Read team activities and posts.\n"
|
|
77
|
+
"- `user-manager`: Update the current user's profile (name, timezone, language).\n\n"
|
|
77
78
|
"You can also use `lead_call_agent` to delegate to any team agent "
|
|
78
79
|
"discovered via `lead_list_team_agents`.\n\n"
|
|
79
80
|
"### Workflow\n\n"
|
|
@@ -72,6 +72,10 @@ from intentkit.core.lead.skills.update_team_agent import (
|
|
|
72
72
|
UpdateTeamAgent,
|
|
73
73
|
update_team_agent_skill,
|
|
74
74
|
)
|
|
75
|
+
from intentkit.core.lead.skills.update_user_profile import (
|
|
76
|
+
LeadUpdateUserProfile,
|
|
77
|
+
lead_update_user_profile_skill,
|
|
78
|
+
)
|
|
75
79
|
|
|
76
80
|
__all__ = [
|
|
77
81
|
"CreateTeamAgent",
|
|
@@ -108,6 +112,8 @@ __all__ = [
|
|
|
108
112
|
"lead_update_self_memory_skill",
|
|
109
113
|
"ListTeamAgents",
|
|
110
114
|
"list_team_agents_skill",
|
|
115
|
+
"LeadUpdateUserProfile",
|
|
116
|
+
"lead_update_user_profile_skill",
|
|
111
117
|
"UpdateTeamAgent",
|
|
112
118
|
"update_team_agent_skill",
|
|
113
119
|
]
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"""Skill to update the current user's profile."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
from typing import Any, override
|
|
7
|
+
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
|
|
8
|
+
|
|
9
|
+
from langchain_core.tools import ArgsSchema
|
|
10
|
+
from langchain_core.tools.base import ToolException
|
|
11
|
+
from pydantic import BaseModel, Field
|
|
12
|
+
|
|
13
|
+
from intentkit.config.redis import get_redis
|
|
14
|
+
from intentkit.core.lead.skills.base import LeadSkill
|
|
15
|
+
from intentkit.models.user import UserUpdate
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
# Must stay in sync with USER_CACHE_PREFIX in app/team/user.py — we duplicate
|
|
20
|
+
# the constant because core/ cannot import from app/.
|
|
21
|
+
_USER_CACHE_PREFIX = "intentkit:user:"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class UpdateUserProfileInput(BaseModel):
|
|
25
|
+
"""Input model for lead_update_user_profile skill."""
|
|
26
|
+
|
|
27
|
+
name: str | None = Field(
|
|
28
|
+
default=None,
|
|
29
|
+
description="New display name (max 50 chars). Omit to keep unchanged.",
|
|
30
|
+
)
|
|
31
|
+
timezone: str | None = Field(
|
|
32
|
+
default=None,
|
|
33
|
+
description=(
|
|
34
|
+
"IANA timezone identifier (e.g. 'Asia/Shanghai', 'America/New_York'). "
|
|
35
|
+
"Convert offsets like 'GMT+8' to the corresponding IANA name first. "
|
|
36
|
+
"Omit to keep unchanged. Pass an empty string to clear."
|
|
37
|
+
),
|
|
38
|
+
)
|
|
39
|
+
language: str | None = Field(
|
|
40
|
+
default=None,
|
|
41
|
+
description=(
|
|
42
|
+
"Preferred language as a BCP 47 tag (e.g. 'zh-CN', 'en', 'ja'). "
|
|
43
|
+
"Omit to keep unchanged. Pass an empty string to clear."
|
|
44
|
+
),
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class UpdateUserProfileOutput(BaseModel):
|
|
49
|
+
"""Output model for lead_update_user_profile skill."""
|
|
50
|
+
|
|
51
|
+
message: str = Field(description="Success message")
|
|
52
|
+
updated_fields: list[str] = Field(description="List of fields that were updated")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class LeadUpdateUserProfile(LeadSkill):
|
|
56
|
+
"""Skill to update the current user's profile (name, timezone, language).
|
|
57
|
+
|
|
58
|
+
Writes go through `UserUpdate.patch`, so a row is created if the user does
|
|
59
|
+
not yet exist. The user's API-side Redis cache is invalidated so the next
|
|
60
|
+
GET reflects the change.
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
name: str = "lead_update_user_profile"
|
|
64
|
+
description: str = (
|
|
65
|
+
"Update the current user's profile. Supported fields: name, timezone, "
|
|
66
|
+
"language. Only provide the fields you want to change. The user is "
|
|
67
|
+
"always taken from the current conversation context — never accept a "
|
|
68
|
+
"user id as input."
|
|
69
|
+
)
|
|
70
|
+
args_schema: ArgsSchema | None = UpdateUserProfileInput
|
|
71
|
+
|
|
72
|
+
@override
|
|
73
|
+
async def _arun(
|
|
74
|
+
self,
|
|
75
|
+
name: str | None = None,
|
|
76
|
+
timezone: str | None = None,
|
|
77
|
+
language: str | None = None,
|
|
78
|
+
**kwargs: Any,
|
|
79
|
+
) -> UpdateUserProfileOutput:
|
|
80
|
+
context = self.get_context()
|
|
81
|
+
user_id = context.user_id
|
|
82
|
+
if not user_id:
|
|
83
|
+
raise ToolException("No user_id in context")
|
|
84
|
+
|
|
85
|
+
updates: dict[str, Any] = {}
|
|
86
|
+
updated_fields: list[str] = []
|
|
87
|
+
|
|
88
|
+
if name is not None:
|
|
89
|
+
trimmed = name.strip()
|
|
90
|
+
if trimmed:
|
|
91
|
+
updates["name"] = trimmed[:50]
|
|
92
|
+
updated_fields.append("name")
|
|
93
|
+
|
|
94
|
+
if timezone is not None:
|
|
95
|
+
tz = timezone.strip()
|
|
96
|
+
if tz:
|
|
97
|
+
try:
|
|
98
|
+
ZoneInfo(tz)
|
|
99
|
+
except (ZoneInfoNotFoundError, ValueError) as exc:
|
|
100
|
+
raise ToolException(
|
|
101
|
+
f"Invalid IANA timezone: {timezone!r}. "
|
|
102
|
+
"Use a name like 'Asia/Shanghai' or 'America/New_York'."
|
|
103
|
+
) from exc
|
|
104
|
+
updates["timezone"] = tz
|
|
105
|
+
else:
|
|
106
|
+
updates["timezone"] = None
|
|
107
|
+
updated_fields.append("timezone")
|
|
108
|
+
|
|
109
|
+
if language is not None:
|
|
110
|
+
lang = language.strip()
|
|
111
|
+
updates["language"] = lang[:32] if lang else None
|
|
112
|
+
updated_fields.append("language")
|
|
113
|
+
|
|
114
|
+
if not updates:
|
|
115
|
+
return UpdateUserProfileOutput(
|
|
116
|
+
message="No fields provided to update.",
|
|
117
|
+
updated_fields=[],
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
await UserUpdate.model_validate(updates).patch(user_id)
|
|
121
|
+
|
|
122
|
+
try:
|
|
123
|
+
redis = get_redis()
|
|
124
|
+
await redis.delete(f"{_USER_CACHE_PREFIX}{user_id}")
|
|
125
|
+
except Exception as exc:
|
|
126
|
+
logger.warning("Failed to invalidate user cache for %s: %s", user_id, exc)
|
|
127
|
+
|
|
128
|
+
return UpdateUserProfileOutput(
|
|
129
|
+
message=f"User profile updated: {', '.join(updated_fields)}.",
|
|
130
|
+
updated_fields=updated_fields,
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
lead_update_user_profile_skill = LeadUpdateUserProfile()
|
|
@@ -23,6 +23,7 @@ SLUG_AGENT_MANAGER = "agent-manager"
|
|
|
23
23
|
SLUG_TASK_MANAGER = "task-manager"
|
|
24
24
|
SLUG_SELF_UPDATER = "self-updater"
|
|
25
25
|
SLUG_CONTENT_MANAGER = "content-manager"
|
|
26
|
+
SLUG_USER_MANAGER = "user-manager"
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
@dataclass
|
|
@@ -112,6 +113,10 @@ from intentkit.core.lead.sub_agents.task_manager import ( # noqa: E402
|
|
|
112
113
|
build_task_manager,
|
|
113
114
|
get_task_manager_skills,
|
|
114
115
|
)
|
|
116
|
+
from intentkit.core.lead.sub_agents.user_manager import ( # noqa: E402
|
|
117
|
+
build_user_manager,
|
|
118
|
+
get_user_manager_skills,
|
|
119
|
+
)
|
|
115
120
|
|
|
116
121
|
SUB_AGENT_REGISTRY: dict[str, SubAgentDefinition] = {
|
|
117
122
|
SLUG_AGENT_MANAGER: SubAgentDefinition(
|
|
@@ -147,4 +152,10 @@ SUB_AGENT_REGISTRY: dict[str, SubAgentDefinition] = {
|
|
|
147
152
|
build_fn=build_content_manager,
|
|
148
153
|
skills_fn=get_content_manager_skills,
|
|
149
154
|
),
|
|
155
|
+
SLUG_USER_MANAGER: SubAgentDefinition(
|
|
156
|
+
slug=SLUG_USER_MANAGER,
|
|
157
|
+
description=("Manages the current user's profile: name, timezone, language."),
|
|
158
|
+
build_fn=build_user_manager,
|
|
159
|
+
skills_fn=get_user_manager_skills,
|
|
160
|
+
),
|
|
150
161
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""User Manager sub-agent definition."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Sequence
|
|
6
|
+
from datetime import datetime, timezone
|
|
7
|
+
|
|
8
|
+
from langchain_core.tools import BaseTool
|
|
9
|
+
|
|
10
|
+
from intentkit.core.lead.skills.update_user_profile import (
|
|
11
|
+
lead_update_user_profile_skill,
|
|
12
|
+
)
|
|
13
|
+
from intentkit.models.agent import Agent
|
|
14
|
+
from intentkit.models.llm_picker import pick_default_model
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def get_user_manager_skills() -> Sequence[BaseTool]:
|
|
18
|
+
"""Return skills for the user-manager sub-agent."""
|
|
19
|
+
return [
|
|
20
|
+
lead_update_user_profile_skill,
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def build_user_manager(team_id: str) -> Agent:
|
|
25
|
+
"""Build an in-memory User Manager sub-agent."""
|
|
26
|
+
now = datetime.now(timezone.utc)
|
|
27
|
+
|
|
28
|
+
prompt = (
|
|
29
|
+
"### Workflow\n\n"
|
|
30
|
+
"1. Confirm with the user which fields they want to change "
|
|
31
|
+
"(name, timezone, language).\n"
|
|
32
|
+
"2. Call `lead_update_user_profile` with only the fields being changed.\n"
|
|
33
|
+
"3. Report the result back to the user.\n\n"
|
|
34
|
+
"### Field Guidelines\n\n"
|
|
35
|
+
"- `name`: max 50 characters, the user's preferred display name.\n"
|
|
36
|
+
"- `timezone`: must be an IANA timezone (e.g. `Asia/Shanghai`, "
|
|
37
|
+
"`America/New_York`, `Europe/Berlin`). If the user gives an offset "
|
|
38
|
+
"like `GMT+8` or `UTC-5`, translate it to the matching IANA name "
|
|
39
|
+
"before calling the tool.\n"
|
|
40
|
+
"- `language`: BCP 47 tag (e.g. `zh-CN`, `en`, `ja`, `ko`). Use the "
|
|
41
|
+
"tag, not the language's English name.\n\n"
|
|
42
|
+
"### Boundaries\n\n"
|
|
43
|
+
"- Only ever update the current user. Never accept or use a user id "
|
|
44
|
+
"supplied by the user.\n"
|
|
45
|
+
"- Do not expose or modify any other user's profile.\n"
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
agent_data = {
|
|
49
|
+
"id": f"team-{team_id}-user-manager",
|
|
50
|
+
"owner": "system",
|
|
51
|
+
"team_id": team_id,
|
|
52
|
+
"name": "User Manager",
|
|
53
|
+
"purpose": "Manage the current user's profile (name, timezone, language).",
|
|
54
|
+
"principles": (
|
|
55
|
+
"1. Speak to users in their language.\n"
|
|
56
|
+
"2. Only operate on the current user — never on others.\n"
|
|
57
|
+
"3. Confirm what will be changed before updating."
|
|
58
|
+
),
|
|
59
|
+
"model": pick_default_model(),
|
|
60
|
+
"prompt": prompt,
|
|
61
|
+
"temperature": 0.2,
|
|
62
|
+
"search_internet": False,
|
|
63
|
+
"super_mode": False,
|
|
64
|
+
"enable_todo": False,
|
|
65
|
+
"enable_activity": False,
|
|
66
|
+
"enable_post": False,
|
|
67
|
+
"enable_long_term_memory": False,
|
|
68
|
+
"sub_agents": None,
|
|
69
|
+
"skills": {
|
|
70
|
+
"ui": {
|
|
71
|
+
"enabled": True,
|
|
72
|
+
"states": {
|
|
73
|
+
"ui_show_card": "private",
|
|
74
|
+
"ui_ask_user": "private",
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
"created_at": now,
|
|
79
|
+
"updated_at": now,
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return Agent.model_validate(agent_data)
|
|
@@ -224,6 +224,13 @@ async def _build_user_info_section(context: AgentContext) -> str:
|
|
|
224
224
|
prompt_array.append(f"User X Username: {user.x_username}\n")
|
|
225
225
|
if user.telegram_username:
|
|
226
226
|
prompt_array.append(f"User Telegram Username: {user.telegram_username}\n")
|
|
227
|
+
if user.timezone:
|
|
228
|
+
prompt_array.append(f"User Timezone: {user.timezone}\n")
|
|
229
|
+
if user.language:
|
|
230
|
+
prompt_array.append(
|
|
231
|
+
f"User Preferred Language: {user.language} "
|
|
232
|
+
"(reply in this language unless the user clearly switches)\n"
|
|
233
|
+
)
|
|
227
234
|
|
|
228
235
|
if prompt_array:
|
|
229
236
|
prompt_array.append("\n")
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"""Build the synthesized prompt sent to the lead agent when the wechat
|
|
2
|
+
24-hour reply window is about to close.
|
|
3
|
+
|
|
4
|
+
The Go integration's per-team timer fires this through the
|
|
5
|
+
``/core/lead/stream`` endpoint with ``system_trigger='wechat_session_expiring'``.
|
|
6
|
+
The lead agent receives the prompt as a TRIGGER-author message, generates a
|
|
7
|
+
heads-up message for the user, and the response is dispatched back over
|
|
8
|
+
wechat by the existing sender path while the window is still open.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import asyncio
|
|
14
|
+
import logging
|
|
15
|
+
|
|
16
|
+
from intentkit.core.autonomous import list_autonomous_tasks
|
|
17
|
+
from intentkit.core.lead.service import get_team_agents
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Trigger value shared with integrations/wechat/bot/session_timer.go
|
|
23
|
+
# (SessionTriggerExpiring). Keep aligned.
|
|
24
|
+
WECHAT_SESSION_EXPIRING = "wechat_session_expiring"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
async def _build_team_status_block(team_id: str) -> str:
|
|
28
|
+
"""Return a compact, human-readable summary of the team's agents and
|
|
29
|
+
their currently enabled autonomous tasks. Best-effort: failures are
|
|
30
|
+
swallowed and reflected as a placeholder line so the notice still goes
|
|
31
|
+
out even if status collection breaks."""
|
|
32
|
+
try:
|
|
33
|
+
agents = await get_team_agents(team_id)
|
|
34
|
+
except Exception:
|
|
35
|
+
logger.warning(
|
|
36
|
+
"wechat session notice: failed to list team agents", exc_info=True
|
|
37
|
+
)
|
|
38
|
+
return "(暂无法获取 agent 状态)"
|
|
39
|
+
|
|
40
|
+
if not agents:
|
|
41
|
+
return "团队当前没有部署任何 agent。"
|
|
42
|
+
|
|
43
|
+
# Fan out per-agent task lookups concurrently — sequential awaits would
|
|
44
|
+
# add one DB round-trip per agent on the user-facing latency path.
|
|
45
|
+
task_results = await asyncio.gather(
|
|
46
|
+
*(list_autonomous_tasks(a.id) for a in agents),
|
|
47
|
+
return_exceptions=True,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
lines: list[str] = []
|
|
51
|
+
for agent, tasks_or_err in zip(agents, task_results):
|
|
52
|
+
if isinstance(tasks_or_err, BaseException):
|
|
53
|
+
logger.warning(
|
|
54
|
+
"wechat session notice: failed to list autonomous tasks for %s",
|
|
55
|
+
agent.id,
|
|
56
|
+
exc_info=tasks_or_err,
|
|
57
|
+
)
|
|
58
|
+
tasks = []
|
|
59
|
+
else:
|
|
60
|
+
tasks = tasks_or_err
|
|
61
|
+
|
|
62
|
+
enabled_tasks = [t for t in tasks if t.enabled]
|
|
63
|
+
if enabled_tasks:
|
|
64
|
+
task_summaries = [f"{t.name}(cron={t.cron})" for t in enabled_tasks]
|
|
65
|
+
lines.append(
|
|
66
|
+
f"- {agent.name}: 进行中的自动任务 {len(enabled_tasks)} 个 — "
|
|
67
|
+
+ ";".join(task_summaries)
|
|
68
|
+
)
|
|
69
|
+
else:
|
|
70
|
+
lines.append(f"- {agent.name}: 暂无启用中的自动任务。")
|
|
71
|
+
|
|
72
|
+
return "\n".join(lines)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
async def build_expiring_prompt(team_id: str) -> str:
|
|
76
|
+
"""Build the synthesized user-facing prompt for the lead agent."""
|
|
77
|
+
status_block = await _build_team_status_block(team_id)
|
|
78
|
+
return (
|
|
79
|
+
"系统事件:用户在微信上即将达到 24 小时未与你互动的时间窗口,"
|
|
80
|
+
"再过 30 分钟左右我将无法主动给 ta 发消息。"
|
|
81
|
+
"请直接以你自己的口吻给用户写一条微信消息,做到:\n"
|
|
82
|
+
"1) 简明告知微信对主动消息有 1 天的时间限制,即将到期;\n"
|
|
83
|
+
"2) 提示如果想继续接收推送,回复任意消息或交付一个新任务即可;\n"
|
|
84
|
+
"3) 顺带把当前每个 agent 的状态和未完成任务概要带上。\n\n"
|
|
85
|
+
"回复直接就是发给用户的文本,不要再加引导语、问候或 markdown。\n\n"
|
|
86
|
+
"当前团队状态如下:\n"
|
|
87
|
+
f"{status_block}"
|
|
88
|
+
)
|
|
@@ -4,14 +4,14 @@ openrouter/free,OpenRouter Free,openrouter,TRUE,0,,0,1,200000,20000,2,2,FALSE,FA
|
|
|
4
4
|
qwen/qwen3.6-plus,Qwen3.6 Plus,openrouter,TRUE,0.325,,1.95,2,1000000,65536,4,4,TRUE,FALSE,TRUE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
5
5
|
minimax/minimax-m2.7,MiniMax M2.7,openrouter,TRUE,0.3,0.03,1.2,2,204800,131072,5,3,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
6
6
|
minimax/minimax-m2-her,Minimax M2 Her,openrouter,TRUE,0.3,0.03,1.2,2,65536,2048,3,3,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
|
|
7
|
-
xiaomi/mimo-v2-pro,MiMo V2 Pro,openrouter,TRUE,1
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
xiaomi/mimo-v2.5-pro,MiMo V2.5 Pro,openrouter,TRUE,1,0.2,3,3,1048576,131072,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
8
|
+
xiaomi/mimo-v2.5,MiMo V2.5,openrouter,TRUE,0.4,0.08,2,2,1048576,131072,4,3,TRUE,TRUE,TRUE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
9
|
+
moonshotai/kimi-k2.6,Moonshot Kimi K2.6,openrouter,TRUE,0.95,0.16,4,2,256000,65536,4,3,TRUE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
10
10
|
qwen/qwen3.5-flash-02-23,Qwen3.5 Flash,openrouter,TRUE,0.1,,0.4,1,1000000,65536,4,5,TRUE,FALSE,TRUE,FALSE,none,TRUE,TRUE,TRUE,300
|
|
11
11
|
z-ai/glm-4.7-flash,GLM 4.7 Flash,openrouter,TRUE,0.06,0.01,0.4,1,202752,131072,3,5,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
|
|
12
12
|
z-ai/glm-5.1,GLM 5.1,openrouter,TRUE,1.26,,3.96,3,202752,131072,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
13
13
|
anthropic/claude-sonnet-4.6,Claude Sonnet 4.6,openrouter,TRUE,3,0.3,15,4,200000,8192,5,3,TRUE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
14
|
-
anthropic/claude-opus-4.
|
|
14
|
+
anthropic/claude-opus-4.7,Claude Opus 4.7,openrouter,TRUE,5,0.5,25,5,1000000,8192,5,2,TRUE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
15
15
|
gemini-3-flash-preview,Gemini 3 Flash,google,TRUE,0.5,0.05,3,2,1048576,65536,4,5,TRUE,TRUE,TRUE,TRUE,none,TRUE,FALSE,FALSE,300
|
|
16
16
|
google/gemini-3-flash-preview,Gemini 3 Flash,openrouter,TRUE,0.5,0.05,3,2,1048576,65536,4,5,TRUE,TRUE,TRUE,TRUE,none,TRUE,TRUE,TRUE,300
|
|
17
17
|
gemini-3.1-pro-preview-customtools,Gemini 3.1 Pro,google,TRUE,2,0.2,12,4,1048576,65536,5,3,TRUE,TRUE,TRUE,TRUE,high,TRUE,FALSE,FALSE,300
|
|
@@ -20,16 +20,14 @@ gemini-3.1-flash-lite-preview,Gemini 3.1 Flash Lite,google,TRUE,0.25,0.025,1.5,2
|
|
|
20
20
|
google/gemini-3.1-flash-lite-preview,Gemini 3.1 Flash Lite,openrouter,TRUE,0.25,0.025,1.5,2,1048576,65536,3,5,TRUE,TRUE,TRUE,TRUE,high,TRUE,TRUE,TRUE,300
|
|
21
21
|
gpt-5.4,GPT-5.4,openai,TRUE,2.5,0.25,15,4,272000,128000,5,3,TRUE,FALSE,FALSE,TRUE,high,FALSE,FALSE,FALSE,180
|
|
22
22
|
openai/gpt-5.4,GPT-5.4,openrouter,TRUE,2.5,0.25,15,4,272000,128000,5,3,TRUE,FALSE,FALSE,TRUE,high,FALSE,TRUE,TRUE,180
|
|
23
|
-
gpt-5.3-codex,GPT-5.3 Codex,openai,TRUE,1.75,0.175,14,4,400000,128000,5,3,TRUE,FALSE,FALSE,TRUE,high,FALSE,FALSE,FALSE,180
|
|
24
|
-
openai/gpt-5.3-codex,GPT-5.3 Codex,openrouter,TRUE,1.75,0.175,14,4,400000,128000,5,3,TRUE,FALSE,FALSE,TRUE,high,FALSE,TRUE,TRUE,180
|
|
25
23
|
gpt-5.4-nano,GPT-5.4 Nano,openai,TRUE,0.1,0.01,0.625,1,400000,128000,3,5,TRUE,FALSE,FALSE,TRUE,minimal,FALSE,FALSE,FALSE,180
|
|
26
24
|
openai/gpt-5.4-nano,GPT-5.4 Nano,openrouter,TRUE,0.1,0.01,0.625,1,400000,128000,3,5,TRUE,FALSE,FALSE,TRUE,minimal,FALSE,TRUE,TRUE,180
|
|
27
25
|
gpt-5.4-mini,GPT-5.4 Mini,openai,TRUE,0.375,0.0375,2.25,2,400000,128000,4,4,TRUE,FALSE,FALSE,TRUE,minimal,FALSE,FALSE,FALSE,180
|
|
28
26
|
openai/gpt-5.4-mini,GPT-5.4 Mini,openrouter,TRUE,0.375,0.0375,2.25,2,400000,128000,4,4,TRUE,FALSE,FALSE,TRUE,minimal,FALSE,TRUE,TRUE,180
|
|
29
|
-
deepseek-
|
|
30
|
-
deepseek/deepseek-
|
|
31
|
-
deepseek-
|
|
32
|
-
deepseek/deepseek-
|
|
27
|
+
deepseek-v4-flash,Deepseek V4 Flash,deepseek,TRUE,0.14,0.028,0.28,1,1048576,32000,4,4,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
|
|
28
|
+
deepseek/deepseek-v4-flash,Deepseek V4 Flash,openrouter,TRUE,0.14,0.028,0.28,1,1048576,32000,4,4,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
|
|
29
|
+
deepseek-v4-pro,Deepseek V4 Pro,deepseek,TRUE,1.74,0.145,3.48,3,1048576,64000,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
30
|
+
deepseek/deepseek-v4-pro,Deepseek V4 Pro,openrouter,TRUE,1.74,0.145,3.48,3,1048576,64000,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
33
31
|
grok-4.20-0309-reasoning,Grok 4.20,xai,TRUE,2,0.2,6,3,2000000,4096,5,3,TRUE,FALSE,FALSE,TRUE,high,TRUE,FALSE,FALSE,180
|
|
34
32
|
x-ai/grok-4.20,Grok 4.20,openrouter,TRUE,2,0.2,6,3,2000000,4096,5,3,TRUE,FALSE,FALSE,TRUE,high,TRUE,TRUE,TRUE,180
|
|
35
33
|
grok-4-1-fast-non-reasoning,Grok 4.1 Fast,xai,TRUE,0.2,0.05,0.5,2,2000000,4096,3,4,TRUE,FALSE,FALSE,TRUE,none,TRUE,FALSE,FALSE,180
|
|
@@ -60,7 +60,7 @@ def load_default_llm_models() -> dict[str, "LLMModelInfo"]:
|
|
|
60
60
|
"""Load default LLM models from a CSV file.
|
|
61
61
|
|
|
62
62
|
Models are keyed by ``{provider}:{id}`` so that the same model ID from
|
|
63
|
-
different providers (e.g. ``deepseek-
|
|
63
|
+
different providers (e.g. ``deepseek-v4-flash`` via DeepSeek *and* OpenRouter)
|
|
64
64
|
is preserved as separate entries.
|
|
65
65
|
"""
|
|
66
66
|
|