intentkit 1.2.10__tar.gz → 1.2.11__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.11}/PKG-INFO +2 -1
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/__init__.py +1 -1
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/engine.py +2 -1
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/llm.csv +4 -6
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/llm_picker.py +3 -3
- intentkit-1.2.11/intentkit/skills/cn_stock/README.md +34 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/__init__.py +69 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/base.py +107 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/get_announcement.py +47 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/get_board.py +63 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/get_capital_flow.py +69 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/get_financials.py +52 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/get_index.py +96 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/get_kline.py +72 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/get_news.py +62 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/get_quote.py +74 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/is_trading_day.py +60 -0
- intentkit-1.2.11/intentkit/skills/cn_stock/schema.json +102 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/__init__.py +1 -3
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/grok.py +1 -13
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/schema.json +1 -13
- {intentkit-1.2.10 → intentkit-1.2.11}/pyproject.toml +3 -1
- {intentkit-1.2.10 → intentkit-1.2.11}/.gitignore +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/LICENSE +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/app/team/intentkit/docker-compose.yml +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/.dockerignore +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/LICENSE +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/MANIFEST.in +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/abstracts/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/abstracts/agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/abstracts/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/abstracts/engine.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/abstracts/graph.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/abstracts/skill.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/abstracts/twitter.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/abstracts/wallet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/mcp/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/mcp/client.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/mcp/registry.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/mcp/tool.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/mcp/wrapper.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/moralis.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/s3.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/s3_setup.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/supabase.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/twitter.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/clients/web3_ens.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/config/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/config/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/config/config.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/config/db.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/config/db_mig.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/config/redis.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/account_checking.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/analytics.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/management.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/notifications.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/public_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/publish.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/queries.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent/wallet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent_activity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/agent_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/asset.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/autonomous.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/avatar.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/budget.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/chat.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/cleanup.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/client.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/adjustment.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/expense.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/list_events.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/plan_credit.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/recharge.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/refill.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/reward.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/credit/withdraw.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/draft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/draft_chat.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/engine.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/executor.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/cache.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/engine.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/service.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/add_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/call_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/create_team_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/delete_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/edit_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/get_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/get_self_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/get_team_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/get_team_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/list_autonomous_tasks.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/list_skills.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/list_team_agents.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/llm.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/recent_team_activities.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/recent_team_posts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/update_self.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/update_self_memory.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/update_team_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/skills/update_user_profile.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/sub_agents/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/sub_agents/agent_manager.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/sub_agents/content_manager.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/sub_agents/self_updater.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/lead/sub_agents/user_manager.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/service.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/add_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/delete_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/draft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/edit_autonomous_task.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/list_autonomous_tasks.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/llm.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/public_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/manager/skills/publish.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/memory.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/middleware.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/prompt.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/public_agents.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/public_api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/scheduler.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/share_link.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/statistics.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/call_agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/create_activity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/create_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/current_time.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/get_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/read_webpage.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/recent_activities.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/recent_posts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/search_web.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/system_skills/update_memory.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/task_registry.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/team/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/team/channel.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/team/feed.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/team/membership.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/team/push.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/team/subscription.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/team/wechat_session_notice.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/template.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/core/user.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/agent.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/autonomous.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/core.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/db.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/public.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/public_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/response.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/tags.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent/user_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent_activity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/agent_post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/app_setting.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/chat.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/credit/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/credit/account.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/credit/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/credit/event.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/credit/price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/credit/transaction.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/draft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/llm.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/share_link.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/skill.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/team.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/team_channel.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/team_feed.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/template.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/user.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/user_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/models/x402_order.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/aave_v3.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/borrow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/get_reserve_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/get_user_account_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/repay.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/set_collateral.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/supply.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aave_v3/withdraw.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/acp.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/cancel_checkout.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/complete_checkout.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/create_checkout.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/get_checkout.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/list_products.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/acp/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/add_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/aerodrome.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/get_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/quote.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/remove_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aerodrome/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aixbt/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aixbt/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aixbt/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aixbt/projects.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/aixbt/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/allora/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/allora/allora.jpeg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/allora/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/allora/price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/allora/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/availability.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/basename/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/basename/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/basename/basename.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/basename/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/basename/register.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/basename/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/carv/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/carv/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/carv/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/carv/carv.webp +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/carv/fetch_news.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/carv/onchain_query.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/carv/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/carv/token_info_and_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/casino.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/deck_draw.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/deck_shuffle.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/dice_roll.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/casino/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cdp/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cdp/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cdp/cdp.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cdp/get_balance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cdp/get_wallet_details.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cdp/native_transfer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cdp/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/chainlist/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/chainlist/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/chainlist/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/chainlist/chainlist.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/chainlist/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptocompare/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptopanic/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptopanic/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/cryptopanic/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dapplooker/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dapplooker/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dapplooker/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dapplooker/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/coins/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/config/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/config/chains.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/defillama.jpeg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/fees/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tests/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/yields/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/search_token.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dexscreener/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dune/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dune/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dune/dune.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dune/execute_query.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dune/get_query_results.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dune/run_sql.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/dune/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/elfa.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/mention.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/stats.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/tokens.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/elfa/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/abi/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/abi/approval.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/abi/erc20.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/abi/route.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/best_yield.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/enso.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/networks.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/prices.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/route.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/tokens.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/enso/wallet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/erc20.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/get_balance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/get_token_address.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/transfer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc20/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc721/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc721/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc721/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc721/erc721.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc721/get_balance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc721/mint.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc721/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/erc721/transfer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/clear.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/crawl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/query.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/scrape.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/firecrawl/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/github/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/github/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/github/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/github/github.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/github/github_search.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/github/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/heurist.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/heurist/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/http/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/http/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/http/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/http/get.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/http/http.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/http/post.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/http/put.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/http/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/gemini.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/gpt.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/image.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/minimax.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/image/openrouter.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/jupiter/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/jupiter/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/jupiter/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/jupiter/jupiter.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/jupiter/price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/jupiter/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/jupiter/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/lifi/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/lifi/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/lifi/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/lifi/lifi.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/lifi/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/lifi/token_execute.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/lifi/token_quote.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/lifi/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/mcp_coingecko/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/mcp_coingecko/coingecko.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/mcp_coingecko/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/moralis.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/moralis/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/borrow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/deposit.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/get_position.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/get_vault_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/morpho.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/repay.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/supply_collateral.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/withdraw.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/morpho/withdraw_collateral.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/onchain.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/buy_nft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/cancel_listing.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/create_listing.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/get_collection.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/get_collection_stats.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/get_events.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/get_listings.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/get_nft.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/get_nfts_by_account.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/get_offers.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/onchain_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/opensea.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/opensea/update_listing.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/add_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/get_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/pancakeswap.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/quote.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/remove_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pancakeswap/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/cancel_order.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/get_market.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/get_orderbook.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/get_orders.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/get_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/get_price_history.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/get_trades.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/place_order.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/polymarket.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/polymarket/search_markets.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/moralis.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/token_balances.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_history.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pyth/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pyth/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pyth/fetch_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pyth/fetch_price_feed.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pyth/pyth.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/pyth/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/slack/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/slack/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/slack/get_channel.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/slack/get_message.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/slack/schedule_message.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/slack/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/slack/send_message.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/slack/slack.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/delete_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/fetch_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/insert_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/invoke_function.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/supabase.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/update_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/supabase/upsert_data.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/superfluid/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/superfluid/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/superfluid/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/superfluid/create_flow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/superfluid/delete_flow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/superfluid/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/superfluid/superfluid.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/superfluid/update_flow.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/tavily/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/tavily/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/tavily/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/tavily/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/tavily/tavily.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/tavily/tavily_extract.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/tavily/tavily_search.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/erc20_transfers.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/moralis.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/token_analytics.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/token_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/token/token_search.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/follow_user.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/get_mentions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/get_timeline.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/like_tweet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/post_tweet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/reply_tweet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/retweet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/search_tweets.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/twitter/twitter.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/ui/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/ui/ask_user.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/ui/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/ui/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/ui/show_card.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/ui/ui.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/add_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/get_positions.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/quote.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/remove_liquidity.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/uniswap.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/uniswap/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/unrealspeech/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/unrealspeech/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/unrealspeech/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_audio/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_audio/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_audio/input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_audio/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/api.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/config.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/video/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/video/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/video/gemini.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/video/gpt.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/video/grok.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/video/minimax.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/video/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/video/video.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/langchain.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/weth/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/weth/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/weth/constants.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/weth/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/weth/unwrap_eth.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/weth/weth.svg +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/weth/wrap_eth.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/check_price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/get_orders.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/http_request.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/httpx_compat.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/pay.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/x402/x402.webp +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/xmtp/README.md +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/xmtp/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/xmtp/base.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/xmtp/price.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/xmtp/schema.json +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/xmtp/swap.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/xmtp/transfer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/skills/xmtp/xmtp.png +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/alert.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/alert_handler.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/chain.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/ens.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/error.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/logging.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/opengraph.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/pdf.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/random.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/s3_setup.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/schema.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/slack_alert.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/telegram_alert.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/templates/post_pdf.html +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/time.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/tx.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/utils/upload.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/__init__.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/cdp.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/evm_wallet.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/native.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/privy.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/privy_client.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/privy_nonce.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/privy_safe.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/privy_signer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/privy_types.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/privy_utils.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/intentkit/wallets/signer.py +0 -0
- {intentkit-1.2.10 → intentkit-1.2.11}/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.11
|
|
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
|
|
@@ -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 []
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""Fundamental / financial metrics for an A-share via akshare."""
|
|
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 CNStockBaseTool, normalize_a_share_symbol
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class GetFinancialsInput(BaseModel):
|
|
14
|
+
symbol: str = Field(..., description="6-digit A-share code, e.g. '600519'.")
|
|
15
|
+
indicator: Literal["按报告期", "按年度", "按单季度"] = Field(
|
|
16
|
+
default="按报告期",
|
|
17
|
+
description="Reporting cadence to fetch.",
|
|
18
|
+
)
|
|
19
|
+
limit: int = Field(
|
|
20
|
+
default=8,
|
|
21
|
+
description="Maximum number of recent reporting periods to return (1-40).",
|
|
22
|
+
ge=1,
|
|
23
|
+
le=40,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class GetFinancials(CNStockBaseTool):
|
|
28
|
+
name: str = "cn_stock_get_financials"
|
|
29
|
+
description: str = (
|
|
30
|
+
"Get key financial metrics (EPS, ROE, profit, revenue, margins, growth) for "
|
|
31
|
+
"an A-share by reporting period. Use for fundamental analysis and trend tracking."
|
|
32
|
+
)
|
|
33
|
+
args_schema: ArgsSchema | None = GetFinancialsInput
|
|
34
|
+
|
|
35
|
+
async def _arun(
|
|
36
|
+
self,
|
|
37
|
+
symbol: str,
|
|
38
|
+
indicator: Literal["按报告期", "按年度", "按单季度"] = "按报告期",
|
|
39
|
+
limit: int = 8,
|
|
40
|
+
**_: Any,
|
|
41
|
+
) -> list[dict[str, Any]]:
|
|
42
|
+
code = normalize_a_share_symbol(symbol)
|
|
43
|
+
rows: list[dict[str, Any]] = await self.run_blocking(
|
|
44
|
+
f"financials:{code}:{indicator}",
|
|
45
|
+
21600,
|
|
46
|
+
ak.stock_financial_abstract_ths,
|
|
47
|
+
symbol=code,
|
|
48
|
+
indicator=indicator,
|
|
49
|
+
)
|
|
50
|
+
if not rows:
|
|
51
|
+
raise ToolException(f"No financials returned for {code}")
|
|
52
|
+
return rows[:limit]
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""Major Chinese market index spot and history via akshare."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
from datetime import timedelta
|
|
5
|
+
from typing import Any, Literal
|
|
6
|
+
|
|
7
|
+
import akshare as ak
|
|
8
|
+
from langchain_core.tools import ArgsSchema
|
|
9
|
+
from langchain_core.tools.base import ToolException
|
|
10
|
+
from pydantic import BaseModel, Field
|
|
11
|
+
|
|
12
|
+
from intentkit.skills.cn_stock.base import CNStockBaseTool, today_cn
|
|
13
|
+
|
|
14
|
+
# Friendly names to akshare codes used by index_zh_a_hist.
|
|
15
|
+
INDEX_CODES: dict[str, str] = {
|
|
16
|
+
"上证指数": "000001",
|
|
17
|
+
"沪深300": "000300",
|
|
18
|
+
"中证500": "000905",
|
|
19
|
+
"中证1000": "000852",
|
|
20
|
+
"深证成指": "399001",
|
|
21
|
+
"创业板指": "399006",
|
|
22
|
+
"科创50": "000688",
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
DEFAULT_INDICES = ["上证指数", "深证成指", "创业板指", "沪深300"]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class GetIndexInput(BaseModel):
|
|
29
|
+
indices: list[str] = Field(
|
|
30
|
+
default_factory=lambda: list(DEFAULT_INDICES),
|
|
31
|
+
description=(
|
|
32
|
+
"Index names. Allowed: " + ", ".join(INDEX_CODES) + ". "
|
|
33
|
+
"Defaults to the four headline indices."
|
|
34
|
+
),
|
|
35
|
+
)
|
|
36
|
+
history: Literal["spot", "30d"] = Field(
|
|
37
|
+
default="spot",
|
|
38
|
+
description="'spot' returns latest snapshot only; '30d' adds 30 daily bars.",
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class GetIndex(CNStockBaseTool):
|
|
43
|
+
name: str = "cn_stock_get_index"
|
|
44
|
+
description: str = (
|
|
45
|
+
"Get spot value (and optional 30-day history) for major Chinese stock indices "
|
|
46
|
+
"such as 上证指数, 深证成指, 创业板指, 沪深300. Use to gauge overall market direction."
|
|
47
|
+
)
|
|
48
|
+
args_schema: ArgsSchema | None = GetIndexInput
|
|
49
|
+
|
|
50
|
+
async def _arun(
|
|
51
|
+
self,
|
|
52
|
+
indices: list[str] | None = None,
|
|
53
|
+
history: Literal["spot", "30d"] = "spot",
|
|
54
|
+
**_: Any,
|
|
55
|
+
) -> dict[str, Any]:
|
|
56
|
+
names = indices if indices is not None else list(DEFAULT_INDICES)
|
|
57
|
+
unknown = [n for n in names if n not in INDEX_CODES]
|
|
58
|
+
if unknown:
|
|
59
|
+
raise ToolException(
|
|
60
|
+
f"Unknown index names: {unknown}. Allowed: {list(INDEX_CODES)}"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
spot_rows: list[dict[str, Any]] = await self.run_blocking(
|
|
64
|
+
"index_spot_em",
|
|
65
|
+
30,
|
|
66
|
+
ak.stock_zh_index_spot_em,
|
|
67
|
+
symbol="沪深重要指数",
|
|
68
|
+
)
|
|
69
|
+
spot_by_name = {r.get("名称"): r for r in spot_rows}
|
|
70
|
+
result: dict[str, Any] = {
|
|
71
|
+
"spot": [spot_by_name[n] for n in names if n in spot_by_name],
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if history == "30d":
|
|
75
|
+
end = today_cn()
|
|
76
|
+
start = end - timedelta(days=45)
|
|
77
|
+
hist_results = await asyncio.gather(
|
|
78
|
+
*(
|
|
79
|
+
self.run_blocking(
|
|
80
|
+
f"index_hist:{INDEX_CODES[name]}:{start:%Y%m%d}:{end:%Y%m%d}",
|
|
81
|
+
1800,
|
|
82
|
+
ak.index_zh_a_hist,
|
|
83
|
+
symbol=INDEX_CODES[name],
|
|
84
|
+
period="daily",
|
|
85
|
+
start_date=start.strftime("%Y%m%d"),
|
|
86
|
+
end_date=end.strftime("%Y%m%d"),
|
|
87
|
+
)
|
|
88
|
+
for name in names
|
|
89
|
+
)
|
|
90
|
+
)
|
|
91
|
+
result["history"] = {
|
|
92
|
+
name: (hist[-30:] if isinstance(hist, list) else [])
|
|
93
|
+
for name, hist in zip(names, hist_results)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return result
|