intentkit 1.2.10__tar.gz → 1.2.12__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-1.2.10 → intentkit-1.2.12}/PKG-INFO +16 -15
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/__init__.py +1 -1
- intentkit-1.2.12/intentkit/abstracts/graph.py +108 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/executor.py +6 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/engine.py +2 -1
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/llm.csv +4 -6
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/llm_picker.py +3 -3
- intentkit-1.2.12/intentkit/skills/cn_stock/README.md +34 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/__init__.py +69 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/base.py +107 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/get_announcement.py +47 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/get_board.py +63 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/get_capital_flow.py +69 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/get_financials.py +52 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/get_index.py +96 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/get_kline.py +72 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/get_news.py +62 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/get_quote.py +74 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/is_trading_day.py +60 -0
- intentkit-1.2.12/intentkit/skills/cn_stock/schema.json +102 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/__init__.py +1 -3
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/grok.py +1 -13
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/schema.json +1 -13
- {intentkit-1.2.10 → intentkit-1.2.12}/pyproject.toml +18 -16
- intentkit-1.2.10/intentkit/abstracts/graph.py +0 -52
- {intentkit-1.2.10 → intentkit-1.2.12}/.gitignore +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/LICENSE +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/app/team/intentkit/docker-compose.yml +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/.dockerignore +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/LICENSE +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/MANIFEST.in +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/engine.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/skill.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/twitter.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/wallet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/client.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/registry.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/tool.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/wrapper.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/moralis.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/s3.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/s3_setup.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/supabase.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/twitter.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/web3_ens.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/config.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/db.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/db_mig.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/redis.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/account_checking.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/analytics.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/management.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/notifications.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/public_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/publish.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/queries.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/wallet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent_activity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/asset.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/autonomous.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/avatar.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/budget.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/chat.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/cleanup.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/client.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/adjustment.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/expense.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/list_events.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/plan_credit.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/recharge.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/refill.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/reward.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/withdraw.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/draft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/draft_chat.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/engine.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/cache.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/engine.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/service.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/add_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/call_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/create_team_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/delete_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/edit_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/get_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/get_self_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/get_team_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/get_team_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/list_autonomous_tasks.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/list_skills.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/list_team_agents.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/llm.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/recent_team_activities.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/recent_team_posts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/update_self.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/update_self_memory.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/update_team_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/update_user_profile.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/agent_manager.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/content_manager.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/self_updater.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/user_manager.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/service.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/add_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/delete_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/draft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/edit_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/list_autonomous_tasks.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/llm.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/public_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/publish.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/memory.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/middleware.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/prompt.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/public_agents.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/public_api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/scheduler.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/share_link.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/statistics.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/call_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/create_activity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/create_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/current_time.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/get_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/read_webpage.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/recent_activities.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/recent_posts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/search_web.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/update_memory.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/task_registry.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/channel.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/feed.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/membership.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/push.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/subscription.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/wechat_session_notice.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/template.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/user.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/autonomous.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/core.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/db.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/public.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/public_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/response.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/tags.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/user_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent_activity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/app_setting.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/chat.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/account.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/event.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/transaction.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/draft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/llm.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/share_link.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/skill.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/team.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/team_channel.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/team_feed.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/template.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/user.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/user_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/x402_order.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/aave_v3.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/borrow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/get_reserve_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/get_user_account_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/repay.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/set_collateral.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/supply.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/withdraw.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/acp.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/cancel_checkout.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/complete_checkout.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/create_checkout.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/get_checkout.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/list_products.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/add_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/aerodrome.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/get_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/quote.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/remove_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/projects.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/allora.jpeg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/availability.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/basename.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/register.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/carv.webp +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/fetch_news.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/onchain_query.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/token_info_and_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/casino.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/deck_draw.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/deck_shuffle.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/dice_roll.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/cdp.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/get_balance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/get_wallet_details.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/native_transfer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/chainlist.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/config/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/config/chains.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/defillama.jpeg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/fees/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tests/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/yields/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/search_token.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/dune.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/execute_query.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/get_query_results.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/run_sql.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/elfa.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/mention.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/stats.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/tokens.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/abi/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/abi/approval.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/abi/erc20.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/abi/route.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/best_yield.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/enso.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/networks.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/route.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/tokens.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/wallet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/erc20.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/get_balance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/get_token_address.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/transfer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/erc721.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/get_balance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/mint.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/transfer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/clear.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/crawl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/query.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/scrape.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/github.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/github_search.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/heurist.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/get.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/http.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/put.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/gemini.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/gpt.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/image.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/minimax.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/openrouter.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/jupiter.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/lifi.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/token_execute.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/token_quote.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/mcp_coingecko/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/mcp_coingecko/coingecko.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/mcp_coingecko/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/moralis.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/borrow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/deposit.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/get_position.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/get_vault_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/morpho.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/repay.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/supply_collateral.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/withdraw.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/withdraw_collateral.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/onchain.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/buy_nft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/cancel_listing.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/create_listing.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_collection.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_collection_stats.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_events.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_listings.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_nft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_nfts_by_account.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_offers.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/onchain_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/opensea.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/update_listing.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/add_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/get_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/pancakeswap.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/quote.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/remove_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/cancel_order.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_market.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_orderbook.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_orders.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_price_history.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_trades.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/place_order.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/polymarket.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/search_markets.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/moralis.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/token_balances.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_history.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/fetch_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/fetch_price_feed.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/pyth.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/get_channel.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/get_message.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/schedule_message.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/send_message.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/slack.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/delete_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/fetch_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/insert_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/invoke_function.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/supabase.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/update_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/upsert_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/create_flow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/delete_flow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/superfluid.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/update_flow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/tavily.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/tavily_extract.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/tavily_search.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/erc20_transfers.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/moralis.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/token_analytics.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/token_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/token_search.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/follow_user.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/get_mentions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/get_timeline.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/like_tweet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/post_tweet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/reply_tweet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/retweet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/search_tweets.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/twitter.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/ask_user.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/show_card.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/ui.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/add_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/get_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/quote.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/remove_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/uniswap.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/config.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/gemini.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/gpt.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/grok.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/minimax.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/video.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/langchain.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/unwrap_eth.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/weth.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/wrap_eth.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/check_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/get_orders.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/http_request.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/httpx_compat.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/pay.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/x402.webp +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/transfer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/xmtp.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/alert.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/alert_handler.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/chain.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/ens.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/error.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/logging.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/opengraph.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/pdf.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/random.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/s3_setup.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/schema.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/slack_alert.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/telegram_alert.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/templates/post_pdf.html +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/time.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/tx.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/upload.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/cdp.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/evm_wallet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/native.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_client.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_nonce.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_safe.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_signer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_types.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/signer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/web3.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.12
|
|
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
|
|
@@ -40,6 +40,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
40
40
|
Requires-Python: ==3.13.*
|
|
41
41
|
Requires-Dist: aiohttp>=3.11.16
|
|
42
42
|
Requires-Dist: aiosqlite>=0.21.0
|
|
43
|
+
Requires-Dist: akshare>=1.16.0
|
|
43
44
|
Requires-Dist: asyncpg>=0.30.0
|
|
44
45
|
Requires-Dist: aws-secretsmanager-caching>=1.1.3
|
|
45
46
|
Requires-Dist: boto3<2.0.0,>=1.37.23
|
|
@@ -54,20 +55,20 @@ Requires-Dist: fastapi>=0.115.8
|
|
|
54
55
|
Requires-Dist: filetype<2.0.0,>=1.2.0
|
|
55
56
|
Requires-Dist: httpx>=0.28.1
|
|
56
57
|
Requires-Dist: jsonref>=1.1.0
|
|
57
|
-
Requires-Dist: langchain-anthropic
|
|
58
|
-
Requires-Dist: langchain-community
|
|
59
|
-
Requires-Dist: langchain-core
|
|
60
|
-
Requires-Dist: langchain-deepseek
|
|
61
|
-
Requires-Dist: langchain-google-genai
|
|
62
|
-
Requires-Dist: langchain-openai
|
|
63
|
-
Requires-Dist: langchain-openrouter
|
|
64
|
-
Requires-Dist: langchain-text-splitters
|
|
65
|
-
Requires-Dist: langchain-xai
|
|
66
|
-
Requires-Dist: langchain
|
|
67
|
-
Requires-Dist: langgraph-checkpoint-postgres
|
|
68
|
-
Requires-Dist: langgraph-checkpoint
|
|
69
|
-
Requires-Dist: langgraph-prebuilt
|
|
70
|
-
Requires-Dist: langgraph
|
|
58
|
+
Requires-Dist: langchain-anthropic<2,>=1.4
|
|
59
|
+
Requires-Dist: langchain-community<1,>=0.4
|
|
60
|
+
Requires-Dist: langchain-core<2,>=1.4
|
|
61
|
+
Requires-Dist: langchain-deepseek<2,>=1.0
|
|
62
|
+
Requires-Dist: langchain-google-genai<5,>=4.2
|
|
63
|
+
Requires-Dist: langchain-openai<2,>=1.2
|
|
64
|
+
Requires-Dist: langchain-openrouter<1,>=0.2.3
|
|
65
|
+
Requires-Dist: langchain-text-splitters<2,>=1.1
|
|
66
|
+
Requires-Dist: langchain-xai<2,>=1.2
|
|
67
|
+
Requires-Dist: langchain<2,>=1.3
|
|
68
|
+
Requires-Dist: langgraph-checkpoint-postgres<4,>=3.1
|
|
69
|
+
Requires-Dist: langgraph-checkpoint<5,>=4.1
|
|
70
|
+
Requires-Dist: langgraph-prebuilt<2,>=1.1
|
|
71
|
+
Requires-Dist: langgraph<2,>=1.2
|
|
71
72
|
Requires-Dist: mcp>=1.0.0
|
|
72
73
|
Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
|
|
73
74
|
Requires-Dist: openai>=1.59.6
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
from collections.abc import Callable, Sequence
|
|
2
|
+
from enum import Enum
|
|
3
|
+
from typing import Annotated, Any, NotRequired
|
|
4
|
+
|
|
5
|
+
from langchain.agents import AgentState as BaseAgentState
|
|
6
|
+
from langchain_core.messages import AnyMessage, RemoveMessage
|
|
7
|
+
from langgraph.channels.delta import DeltaChannel
|
|
8
|
+
|
|
9
|
+
# `_messages_delta_reducer` is upstream's batching-invariant counterpart of
|
|
10
|
+
# `add_messages` for use with `DeltaChannel`. It is private (leading underscore)
|
|
11
|
+
# but is documented in its own docstring with a `DeltaChannel` usage example —
|
|
12
|
+
# treat as semi-public within the `langgraph>=1.2,<2` pin.
|
|
13
|
+
from langgraph.graph.message import (
|
|
14
|
+
REMOVE_ALL_MESSAGES,
|
|
15
|
+
_messages_delta_reducer, # pyright: ignore[reportPrivateUsage]
|
|
16
|
+
)
|
|
17
|
+
from pydantic import BaseModel
|
|
18
|
+
|
|
19
|
+
from intentkit.models.agent import Agent
|
|
20
|
+
from intentkit.models.chat import AuthorType, ChatMessageAttachment
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class AgentError(str, Enum):
|
|
24
|
+
"""The error types that can be raised by the agent."""
|
|
25
|
+
|
|
26
|
+
INSUFFICIENT_CREDITS = "insufficient_credits"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _messages_reducer(
|
|
30
|
+
state: list[AnyMessage], writes: Sequence[Any]
|
|
31
|
+
) -> list[AnyMessage]:
|
|
32
|
+
"""Batching-invariant messages reducer for `DeltaChannel`.
|
|
33
|
+
|
|
34
|
+
Wraps `_messages_delta_reducer` to add `REMOVE_ALL_MESSAGES` handling,
|
|
35
|
+
which the upstream batched reducer documents as out-of-scope. Without
|
|
36
|
+
this wrapper, `SummarizationMiddleware` (which emits
|
|
37
|
+
`[RemoveMessage(REMOVE_ALL_MESSAGES), summary, ...preserved]`) silently
|
|
38
|
+
no-ops the reset and the message list grows unbounded.
|
|
39
|
+
|
|
40
|
+
Strategy: flatten writes once, find the *last* `REMOVE_ALL_MESSAGES`
|
|
41
|
+
sentinel. If present, reset state to empty and delegate to the upstream
|
|
42
|
+
reducer with only the post-sentinel writes — preserves batching
|
|
43
|
+
invariance (`reduce(reduce(s, A), B) == reduce(s, A+B)`) across all
|
|
44
|
+
combinations of resets and normal writes.
|
|
45
|
+
"""
|
|
46
|
+
flat: list[Any] = []
|
|
47
|
+
for w in writes:
|
|
48
|
+
if isinstance(w, list):
|
|
49
|
+
flat.extend(w)
|
|
50
|
+
else:
|
|
51
|
+
flat.append(w)
|
|
52
|
+
last_reset = -1
|
|
53
|
+
for i, m in enumerate(flat):
|
|
54
|
+
if isinstance(m, RemoveMessage) and m.id == REMOVE_ALL_MESSAGES:
|
|
55
|
+
last_reset = i
|
|
56
|
+
if last_reset >= 0:
|
|
57
|
+
return _messages_delta_reducer([], [flat[last_reset + 1 :]])
|
|
58
|
+
return _messages_delta_reducer(state, writes) # pyright: ignore[reportArgumentType]
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class AgentState(BaseAgentState[Any]):
|
|
62
|
+
"""The state of the agent.
|
|
63
|
+
|
|
64
|
+
`messages` is overridden to use `DeltaChannel` so checkpointing stores
|
|
65
|
+
incremental writes rather than a full snapshot per step — for long chat
|
|
66
|
+
threads this turns O(N^2) checkpoint growth into O(N). `_messages_reducer`
|
|
67
|
+
delegates to the upstream batching-invariant `_messages_delta_reducer`
|
|
68
|
+
but adds `REMOVE_ALL_MESSAGES` handling so the bundled
|
|
69
|
+
`SummarizationMiddleware` reset path still works.
|
|
70
|
+
|
|
71
|
+
`snapshot_frequency=50` is tuned for chat workloads (a few-to-dozens of
|
|
72
|
+
steps per thread) rather than the upstream default of 1000 which targets
|
|
73
|
+
long workflow graphs. 50 caps resume-replay cost at one short reducer
|
|
74
|
+
pass while keeping snapshot writes rare for typical conversations.
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
messages: Annotated[
|
|
78
|
+
list[AnyMessage],
|
|
79
|
+
DeltaChannel(_messages_reducer, snapshot_frequency=50),
|
|
80
|
+
]
|
|
81
|
+
context: dict[str, Any]
|
|
82
|
+
error: NotRequired[AgentError]
|
|
83
|
+
step_count: NotRequired[int]
|
|
84
|
+
__extra__: NotRequired[dict[str, Any]]
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class AgentContext(BaseModel):
|
|
88
|
+
agent_id: str
|
|
89
|
+
get_agent: Callable[[], Agent]
|
|
90
|
+
chat_id: str
|
|
91
|
+
user_id: str | None = None
|
|
92
|
+
team_id: str | None = None
|
|
93
|
+
app_id: str | None = None
|
|
94
|
+
entrypoint: AuthorType
|
|
95
|
+
is_private: bool
|
|
96
|
+
thinking: bool = False
|
|
97
|
+
payer: str | None = None
|
|
98
|
+
start_message_id: str = ""
|
|
99
|
+
start_message_attachments: list[ChatMessageAttachment] | None = None
|
|
100
|
+
call_depth: int = 0
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def agent(self) -> Agent:
|
|
104
|
+
return self.get_agent()
|
|
105
|
+
|
|
106
|
+
@property
|
|
107
|
+
def thread_id(self) -> str:
|
|
108
|
+
return f"{self.agent_id}-{self.chat_id}"
|
|
@@ -88,6 +88,7 @@ async def build_executor(
|
|
|
88
88
|
TodoListMiddleware,
|
|
89
89
|
ToolRetryMiddleware,
|
|
90
90
|
)
|
|
91
|
+
from langchain_anthropic.middleware import AnthropicPromptCachingMiddleware
|
|
91
92
|
|
|
92
93
|
from intentkit.core.middleware import (
|
|
93
94
|
DynamicPromptMiddleware,
|
|
@@ -257,6 +258,11 @@ async def build_executor(
|
|
|
257
258
|
ModelRetryMiddleware(),
|
|
258
259
|
]
|
|
259
260
|
|
|
261
|
+
# Anthropic prompt caching: 5m ephemeral cache slashes input-token cost on
|
|
262
|
+
# long system prompts + repeated history. No-op for non-Anthropic providers.
|
|
263
|
+
if model_provider == LLMProvider.ANTHROPIC_COMPATIBLE:
|
|
264
|
+
middleware.append(AnthropicPromptCachingMiddleware())
|
|
265
|
+
|
|
260
266
|
if agent.enable_todo:
|
|
261
267
|
middleware.append(TodoListMiddleware())
|
|
262
268
|
|
|
@@ -28,6 +28,7 @@ from intentkit.core.manager.skills import (
|
|
|
28
28
|
from intentkit.models.agent import Agent
|
|
29
29
|
from intentkit.models.agent_data import AgentData
|
|
30
30
|
from intentkit.models.chat import ChatMessage, ChatMessageCreate
|
|
31
|
+
from intentkit.models.llm_picker import pick_default_model
|
|
31
32
|
|
|
32
33
|
logger = logging.getLogger(__name__)
|
|
33
34
|
|
|
@@ -141,7 +142,7 @@ def _build_manager_agent(agent_id: str, user_id: str) -> Agent:
|
|
|
141
142
|
"5. When updating a draft, try to select the right skills. Don't pick too many, just enough to meet user needs.\n"
|
|
142
143
|
"6. Update skill is override update, you must put the whole fields to input data, not only changed fields."
|
|
143
144
|
),
|
|
144
|
-
"model":
|
|
145
|
+
"model": pick_default_model(),
|
|
145
146
|
"prompt": prompt,
|
|
146
147
|
"prompt_append": None,
|
|
147
148
|
"temperature": 0.2,
|
|
@@ -30,10 +30,8 @@ deepseek-v4-flash,Deepseek V4 Flash,deepseek,TRUE,0.14,0.028,0.28,1,1048576,3200
|
|
|
30
30
|
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
|
|
31
31
|
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
|
|
32
32
|
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
|
-
grok-4.
|
|
34
|
-
x-ai/grok-4.
|
|
35
|
-
grok-4-
|
|
36
|
-
x-ai/grok-4.
|
|
37
|
-
grok-4-1-fast-reasoning,Grok 4.1 Fast Reasoning,xai,TRUE,0.2,0.05,0.5,2,2000000,4096,3,4,TRUE,FALSE,FALSE,TRUE,high,TRUE,FALSE,FALSE,180
|
|
38
|
-
x-ai/grok-4.1-fast-reasoning,Grok 4.1 Fast Reasoning,openrouter,TRUE,0.2,0.05,0.5,2,2000000,4096,3,4,TRUE,FALSE,FALSE,TRUE,high,TRUE,TRUE,TRUE,180
|
|
33
|
+
grok-4.3,Grok 4.3,xai,TRUE,1.25,0.125,2.5,2,1000000,128000,5,4,TRUE,FALSE,FALSE,TRUE,high,TRUE,FALSE,FALSE,180
|
|
34
|
+
x-ai/grok-4.3,Grok 4.3,openrouter,TRUE,1.25,0.125,2.5,2,1000000,128000,5,4,TRUE,FALSE,FALSE,TRUE,high,TRUE,TRUE,TRUE,180
|
|
35
|
+
grok-4.20-non-reasoning,Grok 4.20,xai,TRUE,1.25,0.125,2.5,2,2000000,128000,4,4,TRUE,FALSE,FALSE,TRUE,none,TRUE,FALSE,FALSE,180
|
|
36
|
+
x-ai/grok-4.20,Grok 4.20,openrouter,TRUE,1.25,0.125,2.5,2,2000000,128000,4,4,TRUE,FALSE,FALSE,TRUE,none,TRUE,TRUE,TRUE,180
|
|
39
37
|
MiniMax-M2.7,MiniMax M2.7,minimax,TRUE,0.1,0.01,0.4,1,204800,131072,5,3,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
|
|
@@ -14,7 +14,7 @@ def pick_summarize_model() -> str:
|
|
|
14
14
|
("gemini-3.1-flash-lite-preview", LLMProvider.GOOGLE),
|
|
15
15
|
("deepseek/deepseek-v4-flash", LLMProvider.OPENROUTER),
|
|
16
16
|
("gpt-5.4-mini", LLMProvider.OPENAI),
|
|
17
|
-
("grok-4-
|
|
17
|
+
("grok-4.20-non-reasoning", LLMProvider.XAI),
|
|
18
18
|
("deepseek-v4-flash", LLMProvider.DEEPSEEK),
|
|
19
19
|
("MiniMax-M2.7", LLMProvider.MINIMAX),
|
|
20
20
|
("mimo-v2.5", LLMProvider.MIMO_PLAN),
|
|
@@ -51,7 +51,7 @@ def pick_default_model() -> str:
|
|
|
51
51
|
("MiniMax-M2.7", LLMProvider.MINIMAX),
|
|
52
52
|
("minimax/minimax-m2.7", LLMProvider.OPENROUTER),
|
|
53
53
|
("gpt-5.4-mini", LLMProvider.OPENAI),
|
|
54
|
-
("grok-4-
|
|
54
|
+
("grok-4.20-non-reasoning", LLMProvider.XAI),
|
|
55
55
|
("deepseek-v4-flash", LLMProvider.DEEPSEEK),
|
|
56
56
|
("mimo-v2.5", LLMProvider.MIMO_PLAN),
|
|
57
57
|
]
|
|
@@ -106,7 +106,7 @@ def pick_long_context_model() -> str:
|
|
|
106
106
|
# Priority order based on cost (cheapest first), one per provider:
|
|
107
107
|
order: list[tuple[str, LLMProvider]] = [
|
|
108
108
|
("gemini-3.1-flash-lite-preview", LLMProvider.GOOGLE),
|
|
109
|
-
("grok-4-
|
|
109
|
+
("grok-4.20-non-reasoning", LLMProvider.XAI),
|
|
110
110
|
("deepseek/deepseek-v4-flash", LLMProvider.OPENROUTER),
|
|
111
111
|
("gpt-5.4-nano", LLMProvider.OPENAI),
|
|
112
112
|
("deepseek-v4-flash", LLMProvider.DEEPSEEK),
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# cn_stock — China A-Share Market Data
|
|
2
|
+
|
|
3
|
+
Skill package providing real-time and historical market data for Chinese A-shares
|
|
4
|
+
(Shanghai / Shenzhen / Beijing exchanges), backed by [akshare](https://akshare.akfamily.xyz/).
|
|
5
|
+
|
|
6
|
+
## Tools
|
|
7
|
+
|
|
8
|
+
| Skill | Purpose |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `get_quote` | Real-time spot quote for one or more A-shares (price, change %, volume, P/E, P/B, market cap). |
|
|
11
|
+
| `get_kline` | Daily / weekly / monthly OHLCV bars for a single A-share, with forward/back adjustment. |
|
|
12
|
+
| `get_index` | Spot value (and optional 30-day history) for major Chinese stock indices (上证, 深证, 创业板, 沪深300, ...). |
|
|
13
|
+
| `get_board` | Industry / concept board snapshot ranked by intraday % change. |
|
|
14
|
+
| `get_capital_flow` | Net capital inflow/outflow for an individual stock or the whole market. |
|
|
15
|
+
| `get_news` | Recent news for a specific A-share, or top macro financial headlines. |
|
|
16
|
+
| `get_announcement` | Listed-company announcements (公告) for a given trading day. |
|
|
17
|
+
| `get_financials` | Key financial metrics (EPS, ROE, revenue, margins) by reporting period. |
|
|
18
|
+
| `is_trading_day` | Whether a given calendar date is an A-share trading day. Always call at the start of a scheduled task — cron triggers do not skip holidays. |
|
|
19
|
+
|
|
20
|
+
## Operational notes
|
|
21
|
+
|
|
22
|
+
- All akshare calls are blocking; the base class wraps them in `asyncio.to_thread`.
|
|
23
|
+
- Results are short-TTL cached in Redis (5–60s for live quotes, longer for kline/financials)
|
|
24
|
+
to absorb retry storms — akshare scrapes free public endpoints which rate-limit by IP.
|
|
25
|
+
- A category-level global rate limit of 60 calls/min protects shared infrastructure.
|
|
26
|
+
- Stock codes are normalized: accepts `600519`, `sh600519`, `SH600519`, `600519.SH`.
|
|
27
|
+
- Symbols not yet listed or recently delisted may return empty data; tools raise
|
|
28
|
+
`ToolException` with a clear message rather than silently returning empty results.
|
|
29
|
+
|
|
30
|
+
## Composition
|
|
31
|
+
|
|
32
|
+
These tools are designed to be used by **leaf** public agents (one per data domain),
|
|
33
|
+
which a team-built monitor agent can orchestrate via `lead_call_agent`. See the
|
|
34
|
+
public-agent YAMLs in `public_agents/base/cn-*.yaml` for working examples.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""Chinese A-share market data skills (akshare-backed)."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from typing import TypedDict
|
|
5
|
+
|
|
6
|
+
from intentkit.skills.base import SkillConfig, SkillState
|
|
7
|
+
from intentkit.skills.cn_stock.base import CNStockBaseTool
|
|
8
|
+
from intentkit.skills.cn_stock.get_announcement import GetAnnouncement
|
|
9
|
+
from intentkit.skills.cn_stock.get_board import GetBoard
|
|
10
|
+
from intentkit.skills.cn_stock.get_capital_flow import GetCapitalFlow
|
|
11
|
+
from intentkit.skills.cn_stock.get_financials import GetFinancials
|
|
12
|
+
from intentkit.skills.cn_stock.get_index import GetIndex
|
|
13
|
+
from intentkit.skills.cn_stock.get_kline import GetKLine
|
|
14
|
+
from intentkit.skills.cn_stock.get_news import GetNews
|
|
15
|
+
from intentkit.skills.cn_stock.get_quote import GetQuote
|
|
16
|
+
from intentkit.skills.cn_stock.is_trading_day import IsTradingDay
|
|
17
|
+
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class SkillStates(TypedDict, total=False):
|
|
22
|
+
get_quote: SkillState
|
|
23
|
+
get_kline: SkillState
|
|
24
|
+
get_index: SkillState
|
|
25
|
+
get_board: SkillState
|
|
26
|
+
get_capital_flow: SkillState
|
|
27
|
+
get_news: SkillState
|
|
28
|
+
get_announcement: SkillState
|
|
29
|
+
get_financials: SkillState
|
|
30
|
+
is_trading_day: SkillState
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Config(SkillConfig):
|
|
34
|
+
"""Configuration for cn_stock skills."""
|
|
35
|
+
|
|
36
|
+
states: SkillStates
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# Tool instances are stateless across calls; build once at import and reuse.
|
|
40
|
+
_TOOLS: dict[str, CNStockBaseTool] = {
|
|
41
|
+
"get_quote": GetQuote(),
|
|
42
|
+
"get_kline": GetKLine(),
|
|
43
|
+
"get_index": GetIndex(),
|
|
44
|
+
"get_board": GetBoard(),
|
|
45
|
+
"get_capital_flow": GetCapitalFlow(),
|
|
46
|
+
"get_news": GetNews(),
|
|
47
|
+
"get_announcement": GetAnnouncement(),
|
|
48
|
+
"get_financials": GetFinancials(),
|
|
49
|
+
"is_trading_day": IsTradingDay(),
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
async def get_skills(
|
|
54
|
+
config: "Config",
|
|
55
|
+
is_private: bool,
|
|
56
|
+
**_,
|
|
57
|
+
) -> list[CNStockBaseTool]:
|
|
58
|
+
available: list[CNStockBaseTool] = []
|
|
59
|
+
for name, state in config["states"].items():
|
|
60
|
+
if state == "disabled":
|
|
61
|
+
continue
|
|
62
|
+
if state == "private" and not is_private:
|
|
63
|
+
continue
|
|
64
|
+
tool = _TOOLS.get(name)
|
|
65
|
+
if tool is None:
|
|
66
|
+
logger.warning("Unknown cn_stock skill: %s", name)
|
|
67
|
+
continue
|
|
68
|
+
available.append(tool)
|
|
69
|
+
return available
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""Base class for cn_stock (Chinese A-share) tools backed by akshare."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import json
|
|
5
|
+
import logging
|
|
6
|
+
from datetime import date, datetime
|
|
7
|
+
from typing import Any, Callable
|
|
8
|
+
|
|
9
|
+
import pytz
|
|
10
|
+
from langchain_core.tools.base import ToolException
|
|
11
|
+
|
|
12
|
+
from intentkit.config.redis import get_redis
|
|
13
|
+
from intentkit.skills.base import IntentKitSkill
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
# A-share exchanges all run on Asia/Shanghai. Defaults must follow that wall clock,
|
|
18
|
+
# regardless of the server's local timezone (typically UTC in production).
|
|
19
|
+
_CN_TZ = pytz.timezone("Asia/Shanghai")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def today_cn() -> date:
|
|
23
|
+
"""Return today's date in the Asia/Shanghai timezone."""
|
|
24
|
+
return datetime.now(_CN_TZ).date()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def normalize_a_share_symbol(symbol: str) -> str:
|
|
28
|
+
"""Strip exchange prefix/suffix and return a bare 6-digit A-share code.
|
|
29
|
+
|
|
30
|
+
Accepts formats like "600519", "sh600519", "SH600519", "600519.SH", "600519.sh".
|
|
31
|
+
"""
|
|
32
|
+
s = symbol.strip().upper()
|
|
33
|
+
for prefix in ("SH", "SZ", "BJ"):
|
|
34
|
+
if s.startswith(prefix):
|
|
35
|
+
s = s[len(prefix) :]
|
|
36
|
+
break
|
|
37
|
+
if "." in s:
|
|
38
|
+
s = s.split(".", 1)[0]
|
|
39
|
+
if len(s) != 6 or not s.isdigit():
|
|
40
|
+
raise ToolException(f"Invalid A-share code: {symbol!r} (expect 6 digits)")
|
|
41
|
+
return s
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def market_of(symbol: str) -> str:
|
|
45
|
+
"""Return the exchange code ("sh"/"sz"/"bj") for a normalized 6-digit code."""
|
|
46
|
+
code = normalize_a_share_symbol(symbol)
|
|
47
|
+
# 920xxx is the BSE prefix introduced in 2025 for new listings; treat it as bj
|
|
48
|
+
# rather than letting all 9xxxxx through (900xxx are SSE B-shares, not A-shares).
|
|
49
|
+
if code.startswith("92"):
|
|
50
|
+
return "bj"
|
|
51
|
+
head = code[0]
|
|
52
|
+
if head == "6":
|
|
53
|
+
return "sh"
|
|
54
|
+
if head in ("0", "3"):
|
|
55
|
+
return "sz"
|
|
56
|
+
if head in ("4", "8"):
|
|
57
|
+
return "bj"
|
|
58
|
+
raise ToolException(f"Cannot infer market for code {code}")
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class CNStockBaseTool(IntentKitSkill):
|
|
62
|
+
category: str = "cn_stock"
|
|
63
|
+
|
|
64
|
+
async def run_blocking(
|
|
65
|
+
self,
|
|
66
|
+
cache_key: str | None,
|
|
67
|
+
cache_ttl: int,
|
|
68
|
+
func: Callable[..., Any],
|
|
69
|
+
*args: Any,
|
|
70
|
+
**kwargs: Any,
|
|
71
|
+
) -> Any:
|
|
72
|
+
"""Execute a blocking akshare call off the event loop with optional caching.
|
|
73
|
+
|
|
74
|
+
Pass cache_key=None to skip the cache for live data that must never be stale.
|
|
75
|
+
"""
|
|
76
|
+
redis = get_redis() if cache_key is not None else None
|
|
77
|
+
if redis is not None:
|
|
78
|
+
cached = await redis.get(f"cn_stock:{cache_key}")
|
|
79
|
+
if cached:
|
|
80
|
+
try:
|
|
81
|
+
return json.loads(cached)
|
|
82
|
+
except (TypeError, ValueError):
|
|
83
|
+
logger.warning("Bad cache payload for %s, refetching", cache_key)
|
|
84
|
+
|
|
85
|
+
# akshare scrapes free public endpoints which rate-limit by IP; cap shared use.
|
|
86
|
+
await self.global_rate_limit_by_category(limit=60, seconds=60)
|
|
87
|
+
|
|
88
|
+
try:
|
|
89
|
+
result = await asyncio.to_thread(func, *args, **kwargs)
|
|
90
|
+
except Exception as e:
|
|
91
|
+
raise ToolException(f"akshare call failed: {e}") from e
|
|
92
|
+
|
|
93
|
+
if hasattr(result, "to_json"):
|
|
94
|
+
payload_str = result.to_json(
|
|
95
|
+
orient="records", date_format="iso", force_ascii=False
|
|
96
|
+
)
|
|
97
|
+
payload: Any = json.loads(payload_str)
|
|
98
|
+
elif isinstance(result, (str, int, float, bool, list, dict)) or result is None:
|
|
99
|
+
payload = result
|
|
100
|
+
payload_str = json.dumps(payload, ensure_ascii=False, default=str)
|
|
101
|
+
else:
|
|
102
|
+
payload = str(result)
|
|
103
|
+
payload_str = json.dumps(payload, ensure_ascii=False)
|
|
104
|
+
|
|
105
|
+
if redis is not None:
|
|
106
|
+
await redis.set(f"cn_stock:{cache_key}", payload_str, ex=cache_ttl)
|
|
107
|
+
return payload
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Listed-company announcements (公告) via akshare."""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
import akshare as ak
|
|
6
|
+
from langchain_core.tools import ArgsSchema
|
|
7
|
+
from pydantic import BaseModel, Field
|
|
8
|
+
|
|
9
|
+
from intentkit.skills.cn_stock.base import CNStockBaseTool, today_cn
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class GetAnnouncementInput(BaseModel):
|
|
13
|
+
on_date: str | None = Field(
|
|
14
|
+
default=None,
|
|
15
|
+
description="Date in YYYYMMDD; defaults to today. Announcements are released after market close.",
|
|
16
|
+
)
|
|
17
|
+
limit: int = Field(
|
|
18
|
+
default=20,
|
|
19
|
+
description="Maximum number of items to return (1-100).",
|
|
20
|
+
ge=1,
|
|
21
|
+
le=100,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class GetAnnouncement(CNStockBaseTool):
|
|
26
|
+
name: str = "cn_stock_get_announcement"
|
|
27
|
+
description: str = (
|
|
28
|
+
"Get the day's listed-company announcements (财报、重大事项、增持减持、停复牌等). "
|
|
29
|
+
"Use to surface material disclosures that may move stock prices."
|
|
30
|
+
)
|
|
31
|
+
args_schema: ArgsSchema | None = GetAnnouncementInput
|
|
32
|
+
|
|
33
|
+
async def _arun(
|
|
34
|
+
self,
|
|
35
|
+
on_date: str | None = None,
|
|
36
|
+
limit: int = 20,
|
|
37
|
+
**_: Any,
|
|
38
|
+
) -> list[dict[str, Any]]:
|
|
39
|
+
d = on_date or today_cn().strftime("%Y%m%d")
|
|
40
|
+
rows: list[dict[str, Any]] = await self.run_blocking(
|
|
41
|
+
f"announce:{d}",
|
|
42
|
+
900,
|
|
43
|
+
ak.stock_notice_report,
|
|
44
|
+
symbol="全部",
|
|
45
|
+
date=d,
|
|
46
|
+
)
|
|
47
|
+
return rows[:limit] if rows else []
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""Industry/concept board snapshot via akshare."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal
|
|
4
|
+
|
|
5
|
+
import akshare as ak
|
|
6
|
+
from langchain_core.tools import ArgsSchema
|
|
7
|
+
from pydantic import BaseModel, Field
|
|
8
|
+
|
|
9
|
+
from intentkit.skills.cn_stock.base import CNStockBaseTool
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class GetBoardInput(BaseModel):
|
|
13
|
+
kind: Literal["industry", "concept"] = Field(
|
|
14
|
+
default="industry",
|
|
15
|
+
description="'industry' (行业板块) or 'concept' (概念板块).",
|
|
16
|
+
)
|
|
17
|
+
top: int = Field(
|
|
18
|
+
default=20,
|
|
19
|
+
description="Return top-N gainers and bottom-N losers by % change (1-50).",
|
|
20
|
+
ge=1,
|
|
21
|
+
le=50,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class GetBoard(CNStockBaseTool):
|
|
26
|
+
name: str = "cn_stock_get_board"
|
|
27
|
+
description: str = (
|
|
28
|
+
"Get a snapshot of industry or concept boards, sorted by intraday percentage "
|
|
29
|
+
"change. Use to identify hot sectors and rotation. Returns top gainers and "
|
|
30
|
+
"top losers."
|
|
31
|
+
)
|
|
32
|
+
args_schema: ArgsSchema | None = GetBoardInput
|
|
33
|
+
|
|
34
|
+
async def _arun(
|
|
35
|
+
self,
|
|
36
|
+
kind: Literal["industry", "concept"] = "industry",
|
|
37
|
+
top: int = 20,
|
|
38
|
+
**_: Any,
|
|
39
|
+
) -> dict[str, Any]:
|
|
40
|
+
fetcher = (
|
|
41
|
+
ak.stock_board_industry_name_em
|
|
42
|
+
if kind == "industry"
|
|
43
|
+
else ak.stock_board_concept_name_em
|
|
44
|
+
)
|
|
45
|
+
rows: list[dict[str, Any]] = await self.run_blocking(
|
|
46
|
+
f"board:{kind}",
|
|
47
|
+
60,
|
|
48
|
+
fetcher,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
def pct(r: dict[str, Any]) -> float:
|
|
52
|
+
v = r.get("涨跌幅")
|
|
53
|
+
try:
|
|
54
|
+
return float(v) if v is not None else 0.0
|
|
55
|
+
except (TypeError, ValueError):
|
|
56
|
+
return 0.0
|
|
57
|
+
|
|
58
|
+
ranked = sorted(rows, key=pct, reverse=True)
|
|
59
|
+
return {
|
|
60
|
+
"kind": kind,
|
|
61
|
+
"gainers": ranked[:top],
|
|
62
|
+
"losers": ranked[-top:][::-1],
|
|
63
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""Capital flow (资金流向) for an individual stock or the whole market."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal
|
|
4
|
+
|
|
5
|
+
import akshare as ak
|
|
6
|
+
from langchain_core.tools import ArgsSchema
|
|
7
|
+
from langchain_core.tools.base import ToolException
|
|
8
|
+
from pydantic import BaseModel, Field
|
|
9
|
+
|
|
10
|
+
from intentkit.skills.cn_stock.base import (
|
|
11
|
+
CNStockBaseTool,
|
|
12
|
+
market_of,
|
|
13
|
+
normalize_a_share_symbol,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class GetCapitalFlowInput(BaseModel):
|
|
18
|
+
scope: Literal["stock", "market"] = Field(
|
|
19
|
+
...,
|
|
20
|
+
description="'stock' for individual flow (requires symbol); 'market' for whole-market flow.",
|
|
21
|
+
)
|
|
22
|
+
symbol: str | None = Field(
|
|
23
|
+
default=None,
|
|
24
|
+
description="6-digit A-share code; required when scope='stock'.",
|
|
25
|
+
)
|
|
26
|
+
days: int = Field(
|
|
27
|
+
default=5,
|
|
28
|
+
description="Number of recent trading days to return (1-30).",
|
|
29
|
+
ge=1,
|
|
30
|
+
le=30,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class GetCapitalFlow(CNStockBaseTool):
|
|
35
|
+
name: str = "cn_stock_get_capital_flow"
|
|
36
|
+
description: str = (
|
|
37
|
+
"Get net capital inflow / outflow data. For an individual stock returns recent "
|
|
38
|
+
"main / retail / institutional flows; for the whole market returns aggregate "
|
|
39
|
+
"north-bound and main-fund flows. Use to gauge smart-money positioning."
|
|
40
|
+
)
|
|
41
|
+
args_schema: ArgsSchema | None = GetCapitalFlowInput
|
|
42
|
+
|
|
43
|
+
async def _arun(
|
|
44
|
+
self,
|
|
45
|
+
scope: Literal["stock", "market"],
|
|
46
|
+
symbol: str | None = None,
|
|
47
|
+
days: int = 5,
|
|
48
|
+
**_: Any,
|
|
49
|
+
) -> list[dict[str, Any]]:
|
|
50
|
+
if scope == "stock":
|
|
51
|
+
if not symbol:
|
|
52
|
+
raise ToolException("symbol is required when scope='stock'")
|
|
53
|
+
code = normalize_a_share_symbol(symbol)
|
|
54
|
+
mkt = market_of(symbol)
|
|
55
|
+
rows: list[dict[str, Any]] = await self.run_blocking(
|
|
56
|
+
f"flow:stock:{code}",
|
|
57
|
+
300,
|
|
58
|
+
ak.stock_individual_fund_flow,
|
|
59
|
+
stock=code,
|
|
60
|
+
market=mkt,
|
|
61
|
+
)
|
|
62
|
+
return rows[-days:] if rows else []
|
|
63
|
+
|
|
64
|
+
rows = await self.run_blocking(
|
|
65
|
+
"flow:market",
|
|
66
|
+
300,
|
|
67
|
+
ak.stock_market_fund_flow,
|
|
68
|
+
)
|
|
69
|
+
return rows[-days:] if rows else []
|