intentkit 1.2.5__tar.gz → 1.2.7__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.5 → intentkit-1.2.7}/PKG-INFO +1 -1
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/__init__.py +1 -1
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/engine.py +30 -44
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/executor.py +2 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/middleware.py +120 -1
- {intentkit-1.2.5 → intentkit-1.2.7}/pyproject.toml +1 -1
- {intentkit-1.2.5 → intentkit-1.2.7}/.gitignore +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/LICENSE +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/app/team/intentkit/docker-compose.yml +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/.dockerignore +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/LICENSE +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/MANIFEST.in +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/abstracts/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/abstracts/agent.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/abstracts/api.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/abstracts/engine.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/abstracts/graph.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/abstracts/skill.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/abstracts/twitter.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/abstracts/wallet.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/mcp/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/mcp/client.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/mcp/registry.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/mcp/tool.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/mcp/wrapper.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/moralis.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/s3.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/s3_setup.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/supabase.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/twitter.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/clients/web3_ens.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/config/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/config/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/config/config.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/config/db.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/config/db_mig.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/config/redis.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/account_checking.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/analytics.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/management.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/notifications.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/public_info.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/publish.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/queries.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent/wallet.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent_activity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/agent_post.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/api.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/asset.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/autonomous.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/avatar.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/budget.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/chat.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/cleanup.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/client.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/adjustment.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/expense.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/list_events.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/plan_credit.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/recharge.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/refill.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/reward.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/credit/withdraw.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/draft.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/draft_chat.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/cache.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/engine.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/service.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/add_autonomous_task.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/call_agent.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/create_team_agent.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/delete_autonomous_task.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/edit_autonomous_task.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/get_post.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/get_self_info.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/get_team_agent.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/get_team_info.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/list_autonomous_tasks.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/list_skills.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/list_team_agents.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/llm.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/recent_team_activities.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/recent_team_posts.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/update_self.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/update_self_memory.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/update_team_agent.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/skills/update_user_profile.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/sub_agents/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/sub_agents/agent_manager.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/sub_agents/content_manager.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/sub_agents/self_updater.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/lead/sub_agents/user_manager.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/engine.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/service.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/add_autonomous_task.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/delete_autonomous_task.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/draft.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/edit_autonomous_task.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/list_autonomous_tasks.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/llm.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/manager/skills/public_info.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/memory.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/prompt.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/public_agents.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/public_api.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/scheduler.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/share_link.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/statistics.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/call_agent.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/create_activity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/create_post.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/current_time.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/get_post.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/read_webpage.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/recent_activities.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/recent_posts.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/search_web.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/system_skills/update_memory.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/task_registry.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/team/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/team/channel.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/team/feed.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/team/membership.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/team/push.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/team/subscription.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/team/wechat_session_notice.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/template.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/core/user.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/agent.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/autonomous.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/core.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/db.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/public.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/public_info.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/response.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent/user_input.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent_activity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/agent_post.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/app_setting.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/chat.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/credit/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/credit/account.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/credit/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/credit/event.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/credit/price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/credit/transaction.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/draft.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/llm.csv +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/llm.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/llm_picker.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/share_link.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/skill.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/team.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/team_channel.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/team_feed.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/template.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/user.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/user_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/models/x402_order.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/aave_v3.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/borrow.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/get_reserve_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/get_user_account_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/repay.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/set_collateral.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/supply.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aave_v3/withdraw.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/acp.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/cancel_checkout.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/complete_checkout.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/create_checkout.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/get_checkout.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/list_products.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/acp/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/add_liquidity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/aerodrome.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/get_positions.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/quote.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/remove_liquidity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/swap.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aerodrome/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aixbt/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aixbt/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aixbt/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aixbt/projects.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/aixbt/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/allora/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/allora/allora.jpeg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/allora/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/allora/price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/allora/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/availability.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/basename/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/basename/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/basename/basename.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/basename/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/basename/register.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/basename/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/carv/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/carv/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/carv/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/carv/carv.webp +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/carv/fetch_news.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/carv/onchain_query.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/carv/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/carv/token_info_and_price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/casino.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/deck_draw.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/deck_shuffle.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/dice_roll.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/casino/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cdp/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cdp/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cdp/cdp.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cdp/get_balance.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cdp/get_wallet_details.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cdp/native_transfer.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cdp/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/chainlist/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/chainlist/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/chainlist/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/chainlist/chainlist.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/chainlist/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/api.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptocompare/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptopanic/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptopanic/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/cryptopanic/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dapplooker/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dapplooker/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dapplooker/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dapplooker/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/api.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/coins/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/config/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/config/chains.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/defillama.jpeg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/fees/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tests/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/yields/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/search_token.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dexscreener/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dune/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dune/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dune/dune.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dune/execute_query.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dune/get_query_results.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dune/run_sql.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/dune/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/elfa.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/mention.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/stats.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/tokens.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/elfa/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/abi/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/abi/approval.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/abi/erc20.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/abi/route.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/best_yield.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/enso.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/networks.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/prices.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/route.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/tokens.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/enso/wallet.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/erc20.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/get_balance.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/get_token_address.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/transfer.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc20/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc721/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc721/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc721/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc721/erc721.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc721/get_balance.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc721/mint.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc721/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/erc721/transfer.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/clear.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/crawl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/query.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/scrape.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/firecrawl/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/github/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/github/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/github/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/github/github.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/github/github_search.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/github/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/heurist.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/heurist/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/http/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/http/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/http/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/http/get.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/http/http.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/http/post.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/http/put.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/http/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/gemini.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/gpt.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/grok.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/image.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/minimax.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/openrouter.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/image/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/jupiter/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/jupiter/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/jupiter/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/jupiter/jupiter.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/jupiter/price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/jupiter/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/jupiter/swap.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/lifi/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/lifi/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/lifi/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/lifi/lifi.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/lifi/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/lifi/token_execute.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/lifi/token_quote.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/lifi/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/mcp_coingecko/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/mcp_coingecko/coingecko.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/mcp_coingecko/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/api.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/moralis.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/moralis/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/borrow.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/deposit.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/get_position.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/get_vault_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/morpho.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/repay.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/supply_collateral.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/withdraw.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/morpho/withdraw_collateral.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/onchain.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/buy_nft.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/cancel_listing.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/create_listing.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/get_collection.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/get_collection_stats.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/get_events.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/get_listings.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/get_nft.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/get_nfts_by_account.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/get_offers.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/onchain_base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/opensea.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/opensea/update_listing.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/add_liquidity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/get_positions.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/pancakeswap.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/quote.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/remove_liquidity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/swap.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pancakeswap/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/cancel_order.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/get_market.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/get_orderbook.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/get_orders.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/get_positions.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/get_price_history.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/get_trades.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/place_order.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/polymarket.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/polymarket/search_markets.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/moralis.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/token_balances.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_history.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pyth/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pyth/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pyth/fetch_price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pyth/fetch_price_feed.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pyth/pyth.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/pyth/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/slack/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/slack/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/slack/get_channel.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/slack/get_message.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/slack/schedule_message.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/slack/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/slack/send_message.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/slack/slack.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/delete_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/fetch_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/insert_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/invoke_function.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/supabase.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/update_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/supabase/upsert_data.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/superfluid/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/superfluid/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/superfluid/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/superfluid/create_flow.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/superfluid/delete_flow.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/superfluid/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/superfluid/superfluid.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/superfluid/update_flow.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/tavily/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/tavily/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/tavily/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/tavily/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/tavily/tavily.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/tavily/tavily_extract.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/tavily/tavily_search.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/erc20_transfers.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/moralis.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/token_analytics.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/token_price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/token/token_search.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/follow_user.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/get_mentions.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/get_timeline.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/like_tweet.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/post_tweet.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/reply_tweet.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/retweet.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/search_tweets.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/twitter/twitter.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/ui/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/ui/ask_user.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/ui/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/ui/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/ui/show_card.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/ui/ui.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/add_liquidity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/get_positions.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/quote.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/remove_liquidity.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/swap.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/uniswap.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/uniswap/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/unrealspeech/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/unrealspeech/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/unrealspeech/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_audio/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_audio/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_audio/input.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_audio/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/api.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/config.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/video/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/video/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/video/gemini.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/video/gpt.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/video/grok.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/video/minimax.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/video/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/video/video.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/langchain.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/weth/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/weth/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/weth/constants.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/weth/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/weth/unwrap_eth.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/weth/weth.svg +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/weth/wrap_eth.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/check_price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/get_orders.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/http_request.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/httpx_compat.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/pay.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/x402/x402.webp +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/xmtp/README.md +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/xmtp/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/xmtp/base.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/xmtp/price.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/xmtp/schema.json +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/xmtp/swap.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/xmtp/transfer.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/skills/xmtp/xmtp.png +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/alert.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/alert_handler.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/chain.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/ens.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/error.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/logging.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/opengraph.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/pdf.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/random.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/s3_setup.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/schema.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/slack_alert.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/telegram_alert.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/templates/post_pdf.html +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/time.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/tx.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/utils/upload.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/__init__.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/cdp.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/evm_wallet.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/native.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/privy.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/privy_client.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/privy_nonce.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/privy_safe.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/privy_signer.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/privy_types.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/privy_utils.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/intentkit/wallets/signer.py +0 -0
- {intentkit-1.2.5 → intentkit-1.2.7}/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.7
|
|
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
|
|
@@ -13,6 +13,7 @@ The module uses a global cache to store initialized agents for better performanc
|
|
|
13
13
|
# pyright: reportImportCycles=false
|
|
14
14
|
|
|
15
15
|
import asyncio
|
|
16
|
+
import base64
|
|
16
17
|
import logging
|
|
17
18
|
import mimetypes
|
|
18
19
|
import re
|
|
@@ -73,11 +74,10 @@ _FORWARDABLE_TYPES = frozenset(
|
|
|
73
74
|
)
|
|
74
75
|
|
|
75
76
|
# Maps each forwardable attachment type to (model capability flag,
|
|
76
|
-
# unsupported-error system message).
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
80
|
-
# converts these to provider Parts. See _MEDIA_PROVIDER_SUPPORT.
|
|
77
|
+
# unsupported-error system message). The CSV's `supports_<type>_input`
|
|
78
|
+
# flags are the source of truth; if a model advertises a capability that
|
|
79
|
+
# its provider's LangChain adapter cannot actually deliver, the call
|
|
80
|
+
# surfaces an internal error and the operator should correct the CSV.
|
|
81
81
|
_MEDIA_INPUT_SPECS: list[tuple[ChatMessageAttachmentType, str, SystemMessageType]] = [
|
|
82
82
|
(
|
|
83
83
|
ChatMessageAttachmentType.IMAGE,
|
|
@@ -101,31 +101,9 @@ _MEDIA_INPUT_SPECS: list[tuple[ChatMessageAttachmentType, str, SystemMessageType
|
|
|
101
101
|
),
|
|
102
102
|
]
|
|
103
103
|
|
|
104
|
-
# Providers whose LangChain adapter accepts our content-block shape for each
|
|
105
|
-
# media type. Non-image types use the v0.3 standard block which currently
|
|
106
|
-
# only langchain-google-genai handles; OpenAI/Anthropic require base64 data
|
|
107
|
-
# blocks (`input_audio` / `document`) and are not yet implemented. A model
|
|
108
|
-
# advertising capability=true on an unsupported provider is gated the same
|
|
109
|
-
# way as one that doesn't advertise the capability — better than emitting
|
|
110
|
-
# blocks that crash mid-stream with AGENT_INTERNAL_ERROR.
|
|
111
|
-
_MEDIA_PROVIDER_SUPPORT: dict[ChatMessageAttachmentType, set[LLMProvider] | None] = {
|
|
112
|
-
ChatMessageAttachmentType.IMAGE: None, # all providers
|
|
113
|
-
ChatMessageAttachmentType.AUDIO: {LLMProvider.GOOGLE},
|
|
114
|
-
ChatMessageAttachmentType.VIDEO: {LLMProvider.GOOGLE},
|
|
115
|
-
ChatMessageAttachmentType.FILE: {LLMProvider.GOOGLE},
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
def _model_can_deliver_media(
|
|
120
|
-
atype: ChatMessageAttachmentType, provider: LLMProvider
|
|
121
|
-
) -> bool:
|
|
122
|
-
allowed = _MEDIA_PROVIDER_SUPPORT.get(atype)
|
|
123
|
-
return allowed is None or provider in allowed
|
|
124
|
-
|
|
125
|
-
|
|
126
104
|
# Per-type fallback when both the HTTP Content-Type and the URL extension
|
|
127
|
-
# fail to yield a usable mime
|
|
128
|
-
#
|
|
105
|
+
# fail to yield a usable mime. Gemini's inlineData and OpenAI's input_audio
|
|
106
|
+
# both reject empty mime/format values, so we always need a concrete value.
|
|
129
107
|
_MEDIA_DEFAULT_MIME: dict[ChatMessageAttachmentType, str] = {
|
|
130
108
|
ChatMessageAttachmentType.IMAGE: "image/jpeg",
|
|
131
109
|
ChatMessageAttachmentType.AUDIO: "audio/mpeg",
|
|
@@ -150,8 +128,7 @@ async def _fetch_media_bytes(
|
|
|
150
128
|
|
|
151
129
|
Order of preference for mime: HTTP Content-Type response header
|
|
152
130
|
(explicit, set by S3 at upload time) → URL path extension via
|
|
153
|
-
`mimetypes` → per-type default.
|
|
154
|
-
mimeType, so we always end up with a non-empty value.
|
|
131
|
+
`mimetypes` → per-type default.
|
|
155
132
|
"""
|
|
156
133
|
async with httpx.AsyncClient(
|
|
157
134
|
timeout=_MEDIA_FETCH_TIMEOUT, follow_redirects=True
|
|
@@ -172,20 +149,31 @@ async def _fetch_media_bytes(
|
|
|
172
149
|
|
|
173
150
|
|
|
174
151
|
def _build_image_url_block(url: str) -> dict[str, Any]:
|
|
152
|
+
"""OpenAI Chat Completions image block — accepted by every adapter."""
|
|
175
153
|
return {"type": "image_url", "image_url": {"url": url}}
|
|
176
154
|
|
|
177
155
|
|
|
178
|
-
def
|
|
179
|
-
|
|
156
|
+
def _build_v1_data_block(
|
|
157
|
+
atype: ChatMessageAttachmentType, fetched: _FetchedMedia
|
|
158
|
+
) -> dict[str, Any]:
|
|
159
|
+
"""LangChain v1 standard multimodal data block with embedded base64.
|
|
160
|
+
|
|
161
|
+
This shape is recognized by every provider adapter we use:
|
|
162
|
+
- langchain-google-genai decodes base64 and forwards as Gemini
|
|
163
|
+
``inlineData(data, mimeType)``
|
|
164
|
+
- langchain-openai converts to ``input_audio`` / ``file`` Chat
|
|
165
|
+
Completions blocks (audio + PDFs only)
|
|
166
|
+
- langchain-anthropic converts ``file`` to ``document`` blocks
|
|
167
|
+
(PDFs only — Anthropic has no audio/video input)
|
|
168
|
+
- langchain-openrouter / langchain-xai inherit OpenAI conversion
|
|
180
169
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
empty-mimeType errors against Gemini in the field.
|
|
170
|
+
Fetching ourselves and embedding the bytes avoids LangChain's URL fetch
|
|
171
|
+
+ mime guessing path, which has produced empty-mimeType errors against
|
|
172
|
+
Gemini in the field.
|
|
185
173
|
"""
|
|
186
174
|
return {
|
|
187
|
-
"type":
|
|
188
|
-
"
|
|
175
|
+
"type": atype.value,
|
|
176
|
+
"base64": base64.b64encode(fetched.data).decode("ascii"),
|
|
189
177
|
"mime_type": fetched.mime_type,
|
|
190
178
|
}
|
|
191
179
|
|
|
@@ -945,9 +933,7 @@ async def stream_agent_raw(
|
|
|
945
933
|
for atype, capability, error_type in _MEDIA_INPUT_SPECS:
|
|
946
934
|
if not media_urls_by_type[atype]:
|
|
947
935
|
continue
|
|
948
|
-
if not getattr(model, capability)
|
|
949
|
-
atype, model.provider
|
|
950
|
-
):
|
|
936
|
+
if not getattr(model, capability):
|
|
951
937
|
yield await _create_system_error_response(
|
|
952
938
|
error_type,
|
|
953
939
|
user_message,
|
|
@@ -1031,8 +1017,8 @@ async def stream_agent_raw(
|
|
|
1031
1017
|
)
|
|
1032
1018
|
return
|
|
1033
1019
|
messages.extend(
|
|
1034
|
-
HumanMessage(content=[
|
|
1035
|
-
for fetched in fetched_media
|
|
1020
|
+
HumanMessage(content=[_build_v1_data_block(atype, fetched)])
|
|
1021
|
+
for atype, fetched in zip(fetch_meta, fetched_media, strict=True)
|
|
1036
1022
|
)
|
|
1037
1023
|
|
|
1038
1024
|
# stream config
|
|
@@ -92,6 +92,7 @@ async def build_executor(
|
|
|
92
92
|
from intentkit.core.middleware import (
|
|
93
93
|
DynamicPromptMiddleware,
|
|
94
94
|
EmptyContentSafetyMiddleware,
|
|
95
|
+
MediaBlockSanitizerMiddleware,
|
|
95
96
|
SafeLLMToolSelectorMiddleware,
|
|
96
97
|
StepTrackingMiddleware,
|
|
97
98
|
SummarizationMiddleware,
|
|
@@ -250,6 +251,7 @@ async def build_executor(
|
|
|
250
251
|
ToolBindingMiddleware(llm_model, tools, private_tools, extra_llm_params),
|
|
251
252
|
DynamicPromptMiddleware(agent, agent_data),
|
|
252
253
|
EmptyContentSafetyMiddleware(),
|
|
254
|
+
MediaBlockSanitizerMiddleware(),
|
|
253
255
|
StepTrackingMiddleware(),
|
|
254
256
|
ToolRetryMiddleware(retry_on=_should_retry_tool_failure),
|
|
255
257
|
ModelRetryMiddleware(),
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
+
import mimetypes
|
|
4
5
|
from collections.abc import Awaitable, Callable
|
|
5
6
|
from typing import TYPE_CHECKING, Any, override
|
|
6
7
|
|
|
7
8
|
from langchain.agents.middleware import AgentMiddleware, LLMToolSelectorMiddleware
|
|
8
9
|
from langchain.agents.middleware.summarization import SummarizationMiddleware
|
|
9
|
-
from langchain_core.messages import AIMessage
|
|
10
|
+
from langchain_core.messages import AIMessage, HumanMessage
|
|
10
11
|
from langchain_core.tools import BaseTool
|
|
11
12
|
from langgraph.runtime import Runtime
|
|
12
13
|
|
|
@@ -141,6 +142,123 @@ class EmptyContentSafetyMiddleware(AgentMiddleware[AgentState, AgentContext]):
|
|
|
141
142
|
return await handler(request)
|
|
142
143
|
|
|
143
144
|
|
|
145
|
+
_MEDIA_BLOCK_TYPES = frozenset({"image", "audio", "video", "file"})
|
|
146
|
+
_MEDIA_DEFAULT_MIME: dict[str, str] = {
|
|
147
|
+
"image": "image/jpeg",
|
|
148
|
+
"audio": "audio/mpeg",
|
|
149
|
+
"video": "video/mp4",
|
|
150
|
+
"file": "application/octet-stream",
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def _as_media_block(block: Any) -> dict[str, Any] | None:
|
|
155
|
+
if not isinstance(block, dict):
|
|
156
|
+
return None
|
|
157
|
+
if block.get("type") not in _MEDIA_BLOCK_TYPES:
|
|
158
|
+
return None
|
|
159
|
+
if not (block.get("url") or block.get("base64") or block.get("data")):
|
|
160
|
+
return None
|
|
161
|
+
return block
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def _resolve_mime_type(block: dict[str, Any]) -> str | None:
|
|
165
|
+
btype = block.get("type")
|
|
166
|
+
url = block.get("url")
|
|
167
|
+
guessed: str | None = None
|
|
168
|
+
if isinstance(url, str) and url:
|
|
169
|
+
path_only = url.split("?", 1)[0].split("#", 1)[0]
|
|
170
|
+
guessed, _ = mimetypes.guess_type(path_only)
|
|
171
|
+
if btype == "file":
|
|
172
|
+
# Downstream model APIs (e.g. Gemini) reject application/octet-stream
|
|
173
|
+
# outright, so a `.bin` extension or a per-type default doesn't help.
|
|
174
|
+
# Only return a guess we'd actually consider sendable.
|
|
175
|
+
if guessed and guessed != "application/octet-stream":
|
|
176
|
+
return guessed
|
|
177
|
+
return None
|
|
178
|
+
if guessed:
|
|
179
|
+
return guessed
|
|
180
|
+
return _MEDIA_DEFAULT_MIME.get(btype) if isinstance(btype, str) else None
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
class MediaBlockSanitizerMiddleware(AgentMiddleware[AgentState, AgentContext]):
|
|
184
|
+
"""Repair or strip historical media content blocks lacking `mime_type`.
|
|
185
|
+
|
|
186
|
+
Background: an early version of the engine stored `HumanMessage`s with
|
|
187
|
+
blocks like ``{"type": "audio", "url": "..."}`` — no ``mime_type``. The
|
|
188
|
+
LangGraph checkpointer faithfully replays these on every turn, and
|
|
189
|
+
Gemini's adapter falls back to ``mimetypes.guess_type`` against the raw
|
|
190
|
+
URL (query string included), which silently fails on signed URLs or
|
|
191
|
+
extensions it doesn't know. The result is an ``inlineData`` payload
|
|
192
|
+
with empty ``mimeType`` and the request is rejected with INVALID_ARGUMENT.
|
|
193
|
+
|
|
194
|
+
For each historical block we either:
|
|
195
|
+
- attach a guessed (or per-type default) ``mime_type``, so the model
|
|
196
|
+
sees a complete payload, or
|
|
197
|
+
- drop the block entirely when no reasonable mime can be inferred,
|
|
198
|
+
which is safer than sending something the API will refuse.
|
|
199
|
+
|
|
200
|
+
The textual ``[Attachments]`` URL list embedded in the original message
|
|
201
|
+
body is preserved, so the model still has the URL reference for
|
|
202
|
+
delegation/recall even when a binary block is dropped.
|
|
203
|
+
"""
|
|
204
|
+
|
|
205
|
+
@override
|
|
206
|
+
async def awrap_model_call( # type: ignore[override]
|
|
207
|
+
self,
|
|
208
|
+
request: ModelRequest[AgentContext],
|
|
209
|
+
handler: Callable[[ModelRequest[AgentContext]], Awaitable[ModelResponse]],
|
|
210
|
+
) -> ModelResponse:
|
|
211
|
+
messages = request.messages
|
|
212
|
+
patched = False
|
|
213
|
+
for i, msg in enumerate(messages):
|
|
214
|
+
if not isinstance(msg, HumanMessage):
|
|
215
|
+
continue
|
|
216
|
+
if not isinstance(msg.content, list):
|
|
217
|
+
continue
|
|
218
|
+
cleaned: list[Any] = []
|
|
219
|
+
modified = False
|
|
220
|
+
for block in msg.content:
|
|
221
|
+
media_block = _as_media_block(block)
|
|
222
|
+
if media_block is None:
|
|
223
|
+
cleaned.append(block)
|
|
224
|
+
continue
|
|
225
|
+
if media_block.get("mime_type"):
|
|
226
|
+
cleaned.append(block)
|
|
227
|
+
continue
|
|
228
|
+
resolved = _resolve_mime_type(media_block)
|
|
229
|
+
btype = media_block.get("type")
|
|
230
|
+
if resolved is None:
|
|
231
|
+
modified = True
|
|
232
|
+
logger.warning(
|
|
233
|
+
"Dropping historical %s block at msg[%d] — no resolvable mime_type",
|
|
234
|
+
btype,
|
|
235
|
+
i,
|
|
236
|
+
)
|
|
237
|
+
continue
|
|
238
|
+
modified = True
|
|
239
|
+
cleaned.append({**media_block, "mime_type": resolved})
|
|
240
|
+
logger.info(
|
|
241
|
+
"Repaired historical %s block at msg[%d] with mime_type=%s",
|
|
242
|
+
btype,
|
|
243
|
+
i,
|
|
244
|
+
resolved,
|
|
245
|
+
)
|
|
246
|
+
if not modified:
|
|
247
|
+
continue
|
|
248
|
+
patched = True
|
|
249
|
+
new_content: Any
|
|
250
|
+
if cleaned:
|
|
251
|
+
new_content = cleaned
|
|
252
|
+
else:
|
|
253
|
+
# All blocks stripped — replace with empty text so the
|
|
254
|
+
# message stays valid for providers that reject empty content.
|
|
255
|
+
new_content = ""
|
|
256
|
+
messages[i] = msg.model_copy(update={"content": new_content})
|
|
257
|
+
if patched:
|
|
258
|
+
request = request.override(messages=messages)
|
|
259
|
+
return await handler(request)
|
|
260
|
+
|
|
261
|
+
|
|
144
262
|
class SafeLLMToolSelectorMiddleware(LLMToolSelectorMiddleware):
|
|
145
263
|
"""`LLMToolSelectorMiddleware` that silently drops `always_include` names
|
|
146
264
|
missing from the current request's tool list.
|
|
@@ -175,6 +293,7 @@ class SafeLLMToolSelectorMiddleware(LLMToolSelectorMiddleware):
|
|
|
175
293
|
__all__ = [
|
|
176
294
|
"DynamicPromptMiddleware",
|
|
177
295
|
"EmptyContentSafetyMiddleware",
|
|
296
|
+
"MediaBlockSanitizerMiddleware",
|
|
178
297
|
"SafeLLMToolSelectorMiddleware",
|
|
179
298
|
"StepTrackingMiddleware",
|
|
180
299
|
"SummarizationMiddleware",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|